discount admin and code to name update

This commit is contained in:
Parsa Nazer
2025-03-11 00:09:36 +03:30
parent 1e692ca571
commit 2589ac7321
5 changed files with 51 additions and 9 deletions
+5
View File
@@ -135,6 +135,11 @@ UNFOLD = {
"link": reverse_lazy("admin:product_dollormodel_changelist"),
"badge": "utils.admin.dollor_price",
},
{
"title": _("کد تخفیف"),
"icon": "payments",
"link": reverse_lazy("admin:order_discountcode_changelist"),
},
],
},
+6
View File
@@ -19,6 +19,12 @@ class OrderItemModelInline(StackedInline):
@admin.register(DiscountCode)
class DiscountCodeAdmin(ModelAdmin, ImportExportModelAdmin):
import_form_class = ImportForm
export_form_class = ExportForm
list_display = ['code', 'expiration_date', 'percent', 'quantity']
@admin.register(OrderModel)
class OrderAdmin(ModelAdmin, ImportExportModelAdmin):
@@ -0,0 +1,18 @@
# Generated by Django 5.1.2 on 2025-03-10 20:10
from django.db import migrations
class Migration(migrations.Migration):
dependencies = [
('order', '0011_orderitemmodel_price'),
]
operations = [
migrations.RenameField(
model_name='discountcode',
old_name='name',
new_name='code',
),
]
+14 -8
View File
@@ -6,20 +6,31 @@ from .execptions import DiscountNotAvailableError
from django_jalali.db import models as jmodels
class DiscountCode(models.Model):
name = models.CharField(max_length=50, verbose_name='کد تخفیف')
code = models.CharField(max_length=50, verbose_name='کد تخفیف')
percent = models.DecimalField(max_digits=4, decimal_places=2, verbose_name='درصد')
quantity = models.PositiveIntegerField(verbose_name='تعداد')
expiration_date = models.DateTimeField(verbose_name='تاریخ انقضا')
def __str__(self):
return self.name
return self.code
class Meta:
verbose_name = 'کد تخفیف'
verbose_name_plural = 'کد های تخفیف'
def is_valid(self):
return self.expiration_date > timezone.now() and self.quantity > 0
def not_valid_reason(self):
if self.expiration_date > timezone.now() and self.quantity > 0:
return 'این کد معتبر میباشد'
elif not self.expiration_date > timezone.now():
return 'تایم کد تخفیف تمام شده'
elif not self.quantity > 0:
return 'این کد تخفیف تمام شده است'
else:
print('log later bug')
class OrderModel(models.Model):
@@ -82,15 +93,10 @@ class OrderModel(models.Model):
pass
# return self.total_with_discount() + self.tax()
def remove_order_item(self, item_pk, quantity):
def final_price(self):
pass
def add_order_item(self, item_pk, quantity):
status = ''
return status
def clear_cart(self):
pass
+8 -1
View File
@@ -1,7 +1,14 @@
from rest_framework import serializers
from .models import OrderItemModel, OrderModel
from .models import OrderItemModel, OrderModel, DiscountCode
from product.serializers import ProductVariantSerialzier
class DiscountCodeSerializer(serializers.ModelSerializer):
class Meta:
model = DiscountCode
fields = ('code', 'percent')
read_only_fields = ('percent',)
class OrderItemSerailzier(serializers.ModelSerializer):
product = serializers.SerializerMethodField()
class Meta: