change price type int -> decimal field
This commit is contained in:
@@ -0,0 +1,83 @@
|
||||
# Generated by Django 5.2.4 on 2025-11-07 12:17
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('orders', '0033_partyamount_overdue_amount'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='offer',
|
||||
name='price',
|
||||
field=models.DecimalField(decimal_places=2, default=0.0, max_digits=15),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='order',
|
||||
name='amount',
|
||||
field=models.DecimalField(decimal_places=2, default=0.0, max_digits=15),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='order',
|
||||
name='qqs_price',
|
||||
field=models.DecimalField(decimal_places=2, default=0.0, max_digits=15),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='order',
|
||||
name='total_price',
|
||||
field=models.DecimalField(decimal_places=2, default=0.0, max_digits=15),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='order',
|
||||
name='unit_amount',
|
||||
field=models.DecimalField(decimal_places=2, default=0.0, max_digits=15),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='party',
|
||||
name='discount',
|
||||
field=models.DecimalField(decimal_places=2, default=0.0, max_digits=15),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='partyamount',
|
||||
name='calculated_amount',
|
||||
field=models.DecimalField(decimal_places=2, default=0.0, max_digits=15),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='partyamount',
|
||||
name='cost_amount',
|
||||
field=models.DecimalField(decimal_places=2, default=0.0, max_digits=15),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='partyamount',
|
||||
name='debt_amount',
|
||||
field=models.DecimalField(decimal_places=2, default=0.0, max_digits=15),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='partyamount',
|
||||
name='overdue_amount',
|
||||
field=models.DecimalField(decimal_places=2, default=0.0, max_digits=15),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='partyamount',
|
||||
name='paid_amount',
|
||||
field=models.DecimalField(decimal_places=2, default=0.0, max_digits=15),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='partyamount',
|
||||
name='payment_amount',
|
||||
field=models.DecimalField(decimal_places=2, default=0.0, max_digits=15),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='partyamount',
|
||||
name='total_expense_amount',
|
||||
field=models.DecimalField(decimal_places=2, default=0.0, max_digits=15),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='partyamount',
|
||||
name='total_price',
|
||||
field=models.DecimalField(decimal_places=2, default=0.0, max_digits=15),
|
||||
),
|
||||
]
|
||||
@@ -40,13 +40,13 @@ class Order(BaseModel):
|
||||
date = models.DateField(null=True, blank=True)
|
||||
quantity = models.FloatField(default=1)
|
||||
status = models.CharField(max_length=20, choices=STATUS, default="NEW")
|
||||
unit_amount = models.PositiveBigIntegerField(default=0, null=True, blank=True)
|
||||
unit_amount = models.DecimalField(max_digits=15, decimal_places=2, default=0.00)
|
||||
currency = models.CharField(
|
||||
choices=[('uzs', 'uzs'), ('usd', 'usd')], default='uzs', null=True, blank=True, max_length=3
|
||||
)
|
||||
total_price = models.PositiveBigIntegerField(default=0, null=True, blank=True)
|
||||
qqs_price = models.PositiveBigIntegerField(null=True, blank=True)
|
||||
amount = models.PositiveBigIntegerField(default=0, null=True, blank=True)
|
||||
total_price = models.DecimalField(max_digits=15, decimal_places=2, default=0.00)
|
||||
qqs_price = models.DecimalField(max_digits=15, decimal_places=2, default=0.00)
|
||||
amount = models.DecimalField(max_digits=15, decimal_places=2, default=0.00)
|
||||
qqs = models.PositiveBigIntegerField(null=True, blank=True)
|
||||
|
||||
def __str__(self):
|
||||
|
||||
@@ -20,7 +20,7 @@ class Offer(BaseModel):
|
||||
counterparty = models.ForeignKey(
|
||||
Counterparty, on_delete=models.CASCADE, related_name='offers', null=True
|
||||
)
|
||||
price = models.PositiveBigIntegerField()
|
||||
price = models.DecimalField(max_digits=15, decimal_places=2, default=0.00)
|
||||
price_type = models.CharField(choices=PRICE_TYPE, default='uzs')
|
||||
phone = models.CharField(max_length=15, null=True, blank=True)
|
||||
comment = models.TextField(null=True, blank=True)
|
||||
|
||||
@@ -51,7 +51,7 @@ class Party(BaseModel):
|
||||
null=True, blank=True
|
||||
)
|
||||
audit_comment = models.TextField(null=True, blank=True)
|
||||
discount = models.PositiveBigIntegerField(null=True, blank=True)
|
||||
discount = models.DecimalField(max_digits=15, decimal_places=2, default=0.00)
|
||||
discount_currency = models.CharField(
|
||||
max_length=3, choices=[('uzs', 'uzs'), ('usd', 'usd')], default='uzs', null=True, blank=True
|
||||
)
|
||||
@@ -87,14 +87,14 @@ class Party(BaseModel):
|
||||
|
||||
class PartyAmount(BaseModel):
|
||||
party = models.OneToOneField(Party, on_delete=models.CASCADE, related_name='party_amount')
|
||||
total_price = models.PositiveBigIntegerField()
|
||||
cost_amount = models.BigIntegerField(default=0)
|
||||
calculated_amount = models.BigIntegerField(default=0)
|
||||
paid_amount = models.BigIntegerField(default=0)
|
||||
payment_amount = models.BigIntegerField(default=0)
|
||||
debt_amount = models.BigIntegerField(default=0)
|
||||
total_expense_amount = models.BigIntegerField(default=0)
|
||||
overdue_amount = models.BigIntegerField(default=0)
|
||||
total_price = models.DecimalField(max_digits=15, decimal_places=2, default=0.00)
|
||||
cost_amount = models.DecimalField(max_digits=15, decimal_places=2, default=0.00)
|
||||
calculated_amount = models.DecimalField(max_digits=15, decimal_places=2, default=0.00)
|
||||
paid_amount = models.DecimalField(max_digits=15, decimal_places=2, default=0.00)
|
||||
payment_amount = models.DecimalField(max_digits=15, decimal_places=2, default=0.00)
|
||||
debt_amount = models.DecimalField(max_digits=15, decimal_places=2, default=0.00)
|
||||
total_expense_amount = models.DecimalField(max_digits=15, decimal_places=2, default=0.00)
|
||||
overdue_amount = models.DecimalField(max_digits=15, decimal_places=2, default=0.00)
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
if self.calculated_amount < self.paid_amount:
|
||||
|
||||
@@ -9,7 +9,7 @@ from core.apps.orders.serializers.order import OrderListSerializer
|
||||
|
||||
class OfferCreateSerializer(serializers.Serializer):
|
||||
counterparty_id = serializers.UUIDField()
|
||||
price = serializers.IntegerField()
|
||||
price = serializers.DecimalField(max_digits=15, decimal_places=2, default=0.00)
|
||||
phone = serializers.CharField(required=False)
|
||||
comment = serializers.CharField(required=False)
|
||||
qqs = serializers.BooleanField(required=False)
|
||||
@@ -53,6 +53,7 @@ class MultipleOfferCreateSerializer(serializers.Serializer):
|
||||
created_offers = Offer.objects.bulk_create(offers)
|
||||
return created_offers
|
||||
|
||||
|
||||
class OfferListSerializer(serializers.ModelSerializer):
|
||||
counterparty = serializers.SerializerMethodField(method_name='get_counterparty')
|
||||
order = OrderListSerializer()
|
||||
|
||||
@@ -146,11 +146,11 @@ class MultipleOrderAddSerializer(serializers.Serializer):
|
||||
wherehouse_id = serializers.UUIDField()
|
||||
|
||||
quantity = serializers.IntegerField()
|
||||
unit_amount = serializers.IntegerField()
|
||||
unit_amount = serializers.DecimalField(max_digits=15, decimal_places=2, default=0.00)
|
||||
currency = serializers.ChoiceField(choices=[('uzs', 'uzs'), ('usd', 'usd')])
|
||||
amount = serializers.IntegerField()
|
||||
total_price = serializers.IntegerField(required=False)
|
||||
qqs_price = serializers.IntegerField(required=False)
|
||||
amount = serializers.DecimalField(max_digits=15, decimal_places=2, default=0.00)
|
||||
total_price = serializers.DecimalField(max_digits=15, decimal_places=2, default=0.00, required=False)
|
||||
qqs_price = serializers.DecimalField(max_digits=15, decimal_places=2, default=0.00, required=False)
|
||||
qqs = serializers.IntegerField(required=False)
|
||||
|
||||
def validate(self, data):
|
||||
|
||||
@@ -23,7 +23,7 @@ class PartyCreateSerializer(serializers.Serializer):
|
||||
delivery_date = serializers.DateField()
|
||||
payment_date = serializers.DateField()
|
||||
comment = serializers.CharField(required=False)
|
||||
discount = serializers.IntegerField(required=False)
|
||||
discount = serializers.DecimalField(max_digits=15, decimal_places=2, default=0.00, required=False)
|
||||
discount_currency = serializers.ChoiceField(
|
||||
choices=[("uzs", "uzs"), ("usd", "usd")], required=False
|
||||
)
|
||||
@@ -238,9 +238,9 @@ class PartyOrderUpdateSerializer(serializers.Serializer):
|
||||
wherehouse_id = serializers.UUIDField()
|
||||
counterparty_id = serializers.UUIDField()
|
||||
quantity = serializers.IntegerField()
|
||||
unit_amount = serializers.IntegerField()
|
||||
unit_amount = serializers.DecimalField(max_digits=15, decimal_places=2, default=0.00)
|
||||
currency = serializers.ChoiceField(choices=[("uzs", "uzs"), ("usd", "usd")])
|
||||
total_price = serializers.IntegerField()
|
||||
total_price = serializers.DecimalField(max_digits=15, decimal_places=2, default=0.00)
|
||||
|
||||
def validate(self, data):
|
||||
order = Order.objects.filter(id=data["order_id"]).first()
|
||||
@@ -358,10 +358,10 @@ class PartyUpdateSerializer(serializers.ModelSerializer):
|
||||
party_amount = PartyAmount.objects.get(party=instance)
|
||||
party_amount.total_price = total_price
|
||||
party_amount.cost_amount = (
|
||||
total_price - instance.discount if instance.discount else 0
|
||||
total_price - instance.discount if instance.discount else 0.00
|
||||
)
|
||||
party_amount.payment_amount = (
|
||||
total_price - instance.discount if instance.discount else 0
|
||||
total_price - instance.discount if instance.discount else 0.00
|
||||
)
|
||||
party_amount.save()
|
||||
return instance
|
||||
|
||||
Reference in New Issue
Block a user