diff --git a/backend/order/admin.py b/backend/order/admin.py index 0726c7d..dbb0f86 100644 --- a/backend/order/admin.py +++ b/backend/order/admin.py @@ -137,7 +137,7 @@ class OrderAdmin(ModelAdmin, ImportExportModelAdmin): list_filter = ['is_paid', 'status'] actions_list = ['redirect_to_learn', 'udpate_bank_status'] list_display = ['order_id', 'user', 'is_paid', 'status', 'discount_code', 'address', 'download_invoice_button'] - readonly_fields = ('created_at', 'tax', 'final_price', 'cart_total', 'discount_amount', 'discount_code', 'user', 'address', 'is_paid', 'download_invoice_link') + readonly_fields = ('created_at', 'tax', 'final_price', 'cart_total', 'discount_amount', 'discount_code', 'user', 'address', 'is_paid', 'special_discount_code','download_invoice_link') compressed_fields = True warn_unsaved_form = True # exclude = ('bank_records',) diff --git a/backend/order/migrations/0042_ordermodel_special_discount_code_and_more.py b/backend/order/migrations/0042_ordermodel_special_discount_code_and_more.py new file mode 100644 index 0000000..5f9db1b --- /dev/null +++ b/backend/order/migrations/0042_ordermodel_special_discount_code_and_more.py @@ -0,0 +1,25 @@ +# Generated by Django 5.1.2 on 2026-01-04 06:13 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('account', '0034_add_telegram_chat_id_to_shop'), + ('order', '0041_shopordermodel_address_shopordermodel_address_city_and_more'), + ] + + operations = [ + migrations.AddField( + model_name='ordermodel', + name='special_discount_code', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='account.specialdiscountcode', verbose_name='کدتخفیف خاص'), + ), + migrations.AddField( + model_name='shopordermodel', + name='special_discount_code', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.PROTECT, to='account.specialdiscountcode', verbose_name='کدتخفیف خاص'), + ), + ] diff --git a/backend/order/models.py b/backend/order/models.py index 45219b0..0e32a98 100644 --- a/backend/order/models.py +++ b/backend/order/models.py @@ -173,6 +173,8 @@ class OrderModel(models.Model): is_paid = models.BooleanField(default=False, verbose_name="وضعیت پرداخت") discount_code = models.ForeignKey( DiscountCode, on_delete=models.PROTECT, null=True, blank=True, verbose_name="کدتخفیف") + special_discount_code = models.ForeignKey( + SpecialDiscountCode, on_delete=models.PROTECT, null=True, blank=True, verbose_name="کدتخفیف خاص") status = models.CharField(max_length=20, choices=STATUS_CHOICES, default='ADMIN_PENDING', verbose_name="وضعیت سفارش") discount_amount = models.BigIntegerField( @@ -290,6 +292,8 @@ class ShopOrderModel(models.Model): subtotal = models.BigIntegerField(verbose_name='جمع جزئیات', default=0) items_count = models.PositiveIntegerField(default=0) discount_amount = models.BigIntegerField(default=0, verbose_name='تخفیف اختصاصی فروشگاه') + special_discount_code = models.ForeignKey( + 'account.SpecialDiscountCode', on_delete=models.PROTECT, null=True, blank=True, verbose_name='کدتخفیف خاص') special_discount_amount = models.BigIntegerField(default=0, verbose_name='تخفیف ویژه اختصاصی') commission_percent = models.DecimalField(max_digits=5, decimal_places=2, verbose_name='درصد کمیسیون') commission_amount = models.BigIntegerField(default=0, verbose_name='مبلغ کمیسیون') diff --git a/backend/order/signals.py b/backend/order/signals.py index 61e5a9f..db3e3bc 100644 --- a/backend/order/signals.py +++ b/backend/order/signals.py @@ -174,6 +174,7 @@ def create_shop_orders_on_payment(sender, instance: OrderModel, created, **kwarg subtotal=shop_subtotal, items_count=sum(int(it.quantity) for it in items_list), discount_amount=allocated_discount, + special_discount_code=instance.special_discount_code, special_discount_amount=allocated_special_discount, commission_percent=commission_percent_value, commission_amount=commission_amount, diff --git a/backend/order/views.py b/backend/order/views.py index fffdaa1..53d9281 100644 --- a/backend/order/views.py +++ b/backend/order/views.py @@ -338,6 +338,7 @@ class PaymentView(APIView): address=cart.address, created_at=timezone.now().date(), discount_code=cart.discount_code, + special_discount_code=cart.special_discount_code, discount_amount=cart.discount_code_amount, special_discount_total=special_total, tax=cart.tax_amount,