fix rolback items

This commit is contained in:
Parsa Nazer
2026-05-22 19:16:03 +03:30
parent 6d63e353a3
commit df596a90d5
2 changed files with 35 additions and 0 deletions
+17
View File
@@ -18,6 +18,7 @@ from django.shortcuts import redirect
from .permissons import ShopOrderAdminPermission from .permissons import ShopOrderAdminPermission
from django.urls import reverse from django.urls import reverse
from django.utils.safestring import mark_safe from django.utils.safestring import mark_safe
from azbankgateways.models.enum import PaymentStatus
class OrderItemModelInline(StackedInline): class OrderItemModelInline(StackedInline):
model = OrderItemModel model = OrderItemModel
@@ -271,6 +272,22 @@ class OrderAdmin(ModelAdmin, ImportExportModelAdmin):
logging.debug("This record is verify now.", extra={"pk": bank_record.pk}) logging.debug("This record is verify now.", extra={"pk": bank_record.pk})
elif bank_record.order and not bank_record.order.is_paid: elif bank_record.order and not bank_record.order.is_paid:
bank_record.order.rollback_stock() bank_record.order.rollback_stock()
failed_statuses = [
PaymentStatus.CANCEL_BY_USER,
PaymentStatus.EXPIRE_GATEWAY_TOKEN,
PaymentStatus.EXPIRE_VERIFY_PAYMENT,
PaymentStatus.ERROR,
]
failed_records = bank_models.Bank.objects.filter(
status__in=failed_statuses,
order__isnull=False,
order__is_paid=False,
order__is_stock_rolled_back=False,
).select_related('order')
for bank_record in failed_records:
bank_record.order.rollback_stock()
messages.success(request, f"با موفقیت اپدیت شد") messages.success(request, f"با موفقیت اپدیت شد")
return redirect("admin:order_ordermodel_changelist") return redirect("admin:order_ordermodel_changelist")
+18
View File
@@ -4,6 +4,7 @@ from azbankgateways import (
models as bank_models, models as bank_models,
default_settings as settings, default_settings as settings,
) )
from azbankgateways.models.enum import PaymentStatus
from .models import OrderModel from .models import OrderModel
from account.models import PushSubscription from account.models import PushSubscription
import ghasedak_sms import ghasedak_sms
@@ -30,6 +31,23 @@ def udpate_bank_status():
elif bank_record.order: elif bank_record.order:
order = bank_record.order order = bank_record.order
order.rollback_stock() order.rollback_stock()
failed_statuses = [
PaymentStatus.CANCEL_BY_USER,
PaymentStatus.EXPIRE_GATEWAY_TOKEN,
PaymentStatus.EXPIRE_VERIFY_PAYMENT,
PaymentStatus.ERROR,
]
failed_records = bank_models.Bank.objects.filter(
status__in=failed_statuses,
order__isnull=False,
order__is_paid=False,
order__is_stock_rolled_back=False,
).select_related('order')
for bank_record in failed_records:
bank_record.order.rollback_stock()
return 'update bank record is done' return 'update bank record is done'