add special_discount_code to order model

This commit is contained in:
Parsa Nazer
2026-01-04 10:21:53 +03:30
parent 6142590868
commit 9e0cba4c2b
5 changed files with 32 additions and 1 deletions
+1 -1
View File
@@ -137,7 +137,7 @@ class OrderAdmin(ModelAdmin, ImportExportModelAdmin):
list_filter = ['is_paid', 'status'] list_filter = ['is_paid', 'status']
actions_list = ['redirect_to_learn', 'udpate_bank_status'] actions_list = ['redirect_to_learn', 'udpate_bank_status']
list_display = ['order_id', 'user', 'is_paid', 'status', 'discount_code', 'address', 'download_invoice_button'] 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 compressed_fields = True
warn_unsaved_form = True warn_unsaved_form = True
# exclude = ('bank_records',) # exclude = ('bank_records',)
@@ -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='کدتخفیف خاص'),
),
]
+4
View File
@@ -173,6 +173,8 @@ class OrderModel(models.Model):
is_paid = models.BooleanField(default=False, verbose_name="وضعیت پرداخت") is_paid = models.BooleanField(default=False, verbose_name="وضعیت پرداخت")
discount_code = models.ForeignKey( discount_code = models.ForeignKey(
DiscountCode, on_delete=models.PROTECT, null=True, blank=True, verbose_name="کدتخفیف") 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, status = models.CharField(max_length=20, choices=STATUS_CHOICES,
default='ADMIN_PENDING', verbose_name="وضعیت سفارش") default='ADMIN_PENDING', verbose_name="وضعیت سفارش")
discount_amount = models.BigIntegerField( discount_amount = models.BigIntegerField(
@@ -290,6 +292,8 @@ class ShopOrderModel(models.Model):
subtotal = models.BigIntegerField(verbose_name='جمع جزئیات', default=0) subtotal = models.BigIntegerField(verbose_name='جمع جزئیات', default=0)
items_count = models.PositiveIntegerField(default=0) items_count = models.PositiveIntegerField(default=0)
discount_amount = models.BigIntegerField(default=0, verbose_name='تخفیف اختصاصی فروشگاه') 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='تخفیف ویژه اختصاصی') special_discount_amount = models.BigIntegerField(default=0, verbose_name='تخفیف ویژه اختصاصی')
commission_percent = models.DecimalField(max_digits=5, decimal_places=2, verbose_name='درصد کمیسیون') commission_percent = models.DecimalField(max_digits=5, decimal_places=2, verbose_name='درصد کمیسیون')
commission_amount = models.BigIntegerField(default=0, verbose_name='مبلغ کمیسیون') commission_amount = models.BigIntegerField(default=0, verbose_name='مبلغ کمیسیون')
+1
View File
@@ -174,6 +174,7 @@ def create_shop_orders_on_payment(sender, instance: OrderModel, created, **kwarg
subtotal=shop_subtotal, subtotal=shop_subtotal,
items_count=sum(int(it.quantity) for it in items_list), items_count=sum(int(it.quantity) for it in items_list),
discount_amount=allocated_discount, discount_amount=allocated_discount,
special_discount_code=instance.special_discount_code,
special_discount_amount=allocated_special_discount, special_discount_amount=allocated_special_discount,
commission_percent=commission_percent_value, commission_percent=commission_percent_value,
commission_amount=commission_amount, commission_amount=commission_amount,
+1
View File
@@ -338,6 +338,7 @@ class PaymentView(APIView):
address=cart.address, address=cart.address,
created_at=timezone.now().date(), created_at=timezone.now().date(),
discount_code=cart.discount_code, discount_code=cart.discount_code,
special_discount_code=cart.special_discount_code,
discount_amount=cart.discount_code_amount, discount_amount=cart.discount_code_amount,
special_discount_total=special_total, special_discount_total=special_total,
tax=cart.tax_amount, tax=cart.tax_amount,