change price type int -> decimal field
This commit is contained in:
@@ -2,19 +2,25 @@ from django.db import transaction
|
||||
|
||||
from rest_framework import serializers
|
||||
|
||||
from core.apps.counterparty.models import Counterparty, CounterpartyFolder
|
||||
from core.apps.counterparty.models import Counterparty, CounterpartyFolder, CounterpartyBalance
|
||||
from core.apps.shared.models import Region, District
|
||||
from core.apps.counterparty.serializers.counterparty_balance import (
|
||||
CounterpartyBalanceSerializer,
|
||||
CounterpartyBalanceCreateSerializer,
|
||||
CounterpartyBalanceUpdateSerializer
|
||||
)
|
||||
|
||||
|
||||
class CounterpartyListSerializer(serializers.ModelSerializer):
|
||||
balance = CounterpartyBalanceSerializer()
|
||||
|
||||
class Meta:
|
||||
model = Counterparty
|
||||
fields = [
|
||||
'id', 'inn', 'name', 'phone', 'type', 'folder', 'type', 'region', 'district',
|
||||
'balance', 'balance_currency', 'balance_date', 'comment', 'is_archived',
|
||||
'kredit_usd', 'kredit_uzs', 'total_kredit', 'debit_usd', 'debit_uzs', 'total_debit',
|
||||
'comment', 'is_archived', 'balance',
|
||||
]
|
||||
|
||||
|
||||
|
||||
class CounterpartySerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
@@ -32,9 +38,8 @@ class CounterpartyCreateSerializer(serializers.Serializer):
|
||||
folder_id = serializers.UUIDField(required=False)
|
||||
region_id = serializers.UUIDField(required=False)
|
||||
district_id = serializers.UUIDField(required=False)
|
||||
balance = serializers.IntegerField(required=False)
|
||||
balance_date = serializers.DateField(required=False)
|
||||
comment = serializers.CharField(required=False)
|
||||
balance = CounterpartyBalanceCreateSerializer(required=False)
|
||||
|
||||
def validate(self, data):
|
||||
if data.get('folder_id'):
|
||||
@@ -55,7 +60,7 @@ class CounterpartyCreateSerializer(serializers.Serializer):
|
||||
|
||||
def create(self, validated_data):
|
||||
with transaction.atomic():
|
||||
return Counterparty.objects.create(
|
||||
counterparty = Counterparty.objects.create(
|
||||
inn=validated_data.get('inn'),
|
||||
name=validated_data.get('name'),
|
||||
phone=validated_data.get('phone'),
|
||||
@@ -63,18 +68,25 @@ class CounterpartyCreateSerializer(serializers.Serializer):
|
||||
folder=validated_data.get('folder'),
|
||||
region=validated_data.get('region'),
|
||||
district=validated_data.get('district'),
|
||||
balance=validated_data.get('balance'),
|
||||
balance_date=validated_data.get('balance_date'),
|
||||
comment=validated_data.get('comment'),
|
||||
)
|
||||
CounterpartyBalance.objects.create(
|
||||
counterparty=counterparty,
|
||||
balance_uzs=validated_data.get('balance').get('balance_uzs'),
|
||||
balance_usd=validated_data.get('balance').get('balance_usd'),
|
||||
balance_date=validated_data.get('balance').get('balance_date'),
|
||||
)
|
||||
return counterparty
|
||||
|
||||
|
||||
class CounterpartyUpdateSerializer(serializers.ModelSerializer):
|
||||
balance = CounterpartyBalanceUpdateSerializer(required=False)
|
||||
|
||||
class Meta:
|
||||
model = Counterparty
|
||||
fields = [
|
||||
'inn', 'name', 'phone', 'type', 'folder', 'region', 'district', 'balance',
|
||||
'balance_currency', 'balance_date', 'comment'
|
||||
'inn', 'name', 'phone', 'type', 'folder', 'region', 'district',
|
||||
'balance', 'comment'
|
||||
]
|
||||
extra_kwargs = {
|
||||
'name': {'required': False},
|
||||
@@ -82,8 +94,24 @@ class CounterpartyUpdateSerializer(serializers.ModelSerializer):
|
||||
'folder': {'required': False},
|
||||
'region': {'required': False},
|
||||
'district': {'required': False},
|
||||
'balance': {'required': False},
|
||||
'balance_currency': {'required': False},
|
||||
'balance_date': {'required': False},
|
||||
'comment': {'required': False}
|
||||
}
|
||||
}
|
||||
|
||||
def update(self, instance, validated_data):
|
||||
instance.inn = validated_data.get('inn', instance.inn)
|
||||
instance.name = validated_data.get('name', instance.name)
|
||||
instance.phone = validated_data.get('phone', instance.phone)
|
||||
instance.type = validated_data.get('type', instance.type)
|
||||
instance.folder = validated_data.get('folder', instance.folder)
|
||||
instance.region = validated_data.get('region', instance.region)
|
||||
instance.district = validated_data.get('district', instance.district)
|
||||
instance.comment = validated_data.get('district', instance.comment)
|
||||
# balance
|
||||
balance_data = validated_data.get('balance')
|
||||
instance.balance.balance_uzs = balance_data.get('balance_uzs', instance.balance.balance_uzs)
|
||||
instance.balance.balance_usd = balance_data.get('balance_usd', instance.balance.balance_usd)
|
||||
instance.balance.balance_date = balance_data.get('balance_date', instance.balance.balance_date)
|
||||
instance.balance.save()
|
||||
instance.save()
|
||||
return instance
|
||||
|
||||
|
||||
28
core/apps/counterparty/serializers/counterparty_balance.py
Normal file
28
core/apps/counterparty/serializers/counterparty_balance.py
Normal file
@@ -0,0 +1,28 @@
|
||||
from rest_framework import serializers
|
||||
|
||||
from core.apps.counterparty.models import CounterpartyBalance
|
||||
|
||||
|
||||
class CounterpartyBalanceSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = CounterpartyBalance
|
||||
fields = [
|
||||
'id', 'balance_uzs', 'balance_usd', 'balance_date', 'kredit_usd', 'kredit_uzs',
|
||||
'debit_usd', 'debit_uzs', 'total_balance_usd', 'total_balance_uzs',
|
||||
]
|
||||
|
||||
|
||||
class CounterpartyBalanceCreateSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = CounterpartyBalance
|
||||
fields = [
|
||||
'balance_uzs', 'balance_usd', 'balance_date'
|
||||
]
|
||||
|
||||
|
||||
class CounterpartyBalanceUpdateSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = CounterpartyBalance
|
||||
fields = [
|
||||
'balance_uzs', 'balance_usd', 'balance_date'
|
||||
]
|
||||
Reference in New Issue
Block a user