Add sales types, party adjustments, FunZone party fields, and treasury fee support
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -8,8 +8,10 @@ from .models import (
|
||||
Invoice,
|
||||
InvoiceLine,
|
||||
Party,
|
||||
PartyAdjustment,
|
||||
Payslip,
|
||||
Product,
|
||||
SalesType,
|
||||
TreasuryTxn,
|
||||
Voucher,
|
||||
VoucherLine,
|
||||
@@ -31,10 +33,22 @@ class AccountSerializer(serializers.ModelSerializer):
|
||||
class PartySerializer(serializers.ModelSerializer):
|
||||
economicCode = serializers.CharField(source='economic_code', required=False, allow_blank=True)
|
||||
openingBalance = serializers.FloatField(source='opening_balance', required=False)
|
||||
externalId = serializers.UUIDField(source='external_id', required=False, allow_null=True)
|
||||
externalSource = serializers.CharField(source='external_source', required=False, allow_blank=True)
|
||||
firstName = serializers.CharField(source='first_name', required=False, allow_blank=True)
|
||||
lastName = serializers.CharField(source='last_name', required=False, allow_blank=True)
|
||||
nationalCode = serializers.CharField(source='national_code', required=False, allow_blank=True)
|
||||
walletBalance = serializers.FloatField(source='wallet_balance', required=False)
|
||||
isActive = serializers.BooleanField(source='is_active', required=False)
|
||||
isVerified = serializers.BooleanField(source='is_verified', required=False)
|
||||
|
||||
class Meta:
|
||||
model = Party
|
||||
fields = ['id', 'kind', 'name', 'phone', 'economicCode', 'address', 'openingBalance']
|
||||
fields = [
|
||||
'id', 'kind', 'name', 'phone', 'economicCode', 'address', 'openingBalance',
|
||||
'externalId', 'externalSource', 'firstName', 'lastName', 'username', 'email',
|
||||
'nationalCode', 'iban', 'walletBalance', 'isActive', 'isVerified', 'birthday', 'venues',
|
||||
]
|
||||
|
||||
|
||||
class ProductSerializer(serializers.ModelSerializer):
|
||||
@@ -87,6 +101,20 @@ class VoucherSerializer(serializers.ModelSerializer):
|
||||
return instance
|
||||
|
||||
|
||||
class SalesTypeSerializer(serializers.ModelSerializer):
|
||||
class Meta:
|
||||
model = SalesType
|
||||
fields = ['id', 'code', 'name', 'description', 'active']
|
||||
|
||||
|
||||
class PartyAdjustmentSerializer(serializers.ModelSerializer):
|
||||
partyId = serializers.PrimaryKeyRelatedField(source='party', queryset=Party.objects.all())
|
||||
|
||||
class Meta:
|
||||
model = PartyAdjustment
|
||||
fields = ['id', 'number', 'partyId', 'kind', 'date', 'amount', 'description']
|
||||
|
||||
|
||||
class InvoiceLineSerializer(serializers.ModelSerializer):
|
||||
# Lenient: accepts client-generated ids (ignored on write, recreated server-side).
|
||||
id = serializers.CharField(required=False)
|
||||
@@ -105,11 +133,21 @@ class InvoiceSerializer(serializers.ModelSerializer):
|
||||
partyId = serializers.PrimaryKeyRelatedField(
|
||||
source='party', queryset=Party.objects.all(), allow_null=True, required=False
|
||||
)
|
||||
documentType = serializers.CharField(source='document_type', required=False)
|
||||
salesTypeId = serializers.PrimaryKeyRelatedField(
|
||||
source='sales_type', queryset=SalesType.objects.all(), allow_null=True, required=False
|
||||
)
|
||||
relatedInvoiceId = serializers.PrimaryKeyRelatedField(
|
||||
source='related_invoice', queryset=Invoice.objects.all(), allow_null=True, required=False
|
||||
)
|
||||
lines = InvoiceLineSerializer(many=True)
|
||||
|
||||
class Meta:
|
||||
model = Invoice
|
||||
fields = ['id', 'kind', 'number', 'partyId', 'date', 'status', 'note', 'lines']
|
||||
fields = [
|
||||
'id', 'kind', 'documentType', 'number', 'partyId', 'salesTypeId',
|
||||
'relatedInvoiceId', 'date', 'status', 'note', 'lines',
|
||||
]
|
||||
|
||||
@transaction.atomic
|
||||
def create(self, validated_data):
|
||||
@@ -139,9 +177,18 @@ class TreasuryTxnSerializer(serializers.ModelSerializer):
|
||||
source='party', queryset=Party.objects.all(), allow_null=True, required=False
|
||||
)
|
||||
|
||||
amount = serializers.FloatField(required=False)
|
||||
taxAmount = serializers.FloatField(source='tax_amount', required=False)
|
||||
platformProfitAmount = serializers.FloatField(source='platform_profit_amount', required=False)
|
||||
ownerNetAmount = serializers.FloatField(source='owner_net_amount', required=False)
|
||||
|
||||
class Meta:
|
||||
model = TreasuryTxn
|
||||
fields = ['id', 'number', 'kind', 'method', 'date', 'partyId', 'amount', 'reference', 'description']
|
||||
fields = [
|
||||
'id', 'number', 'kind', 'method', 'date', 'partyId', 'amount',
|
||||
'taxAmount', 'platformProfitAmount', 'ownerNetAmount',
|
||||
'reference', 'description', 'source',
|
||||
]
|
||||
|
||||
|
||||
class EmployeeSerializer(serializers.ModelSerializer):
|
||||
|
||||
Reference in New Issue
Block a user