1
0
forked from erp-dev/erp
Files
erpnew/api_v1/views/business/statements/serializers.py

42 lines
1.5 KiB
Python

from rest_framework import serializers
class StatementRecordSerializer(serializers.Serializer):
source_type = serializers.CharField()
source_label = serializers.CharField()
source_id = serializers.IntegerField()
occurred_at = serializers.DateField()
recorded_at = serializers.DateTimeField()
status = serializers.IntegerField()
status_label = serializers.CharField()
counterparty = serializers.IntegerField()
counterparty_name = serializers.CharField()
positive_amount = serializers.DecimalField(max_digits=15, decimal_places=2)
negative_amount = serializers.DecimalField(max_digits=15, decimal_places=2)
cumulative_amount = serializers.CharField()
current_balance = serializers.CharField()
arrears_amount = serializers.CharField()
items = serializers.ListField(child=serializers.DictField())
extra = serializers.DictField(required=False)
class StatementResponseSerializer(serializers.Serializer):
counterparty = serializers.IntegerField()
counterparty_name = serializers.CharField()
records = StatementRecordSerializer(many=True)
summary = serializers.SerializerMethodField()
def get_summary(self, obj):
summary_builder = self.context.get('summary_builder')
if callable(summary_builder):
return summary_builder(obj)
return self.context.get('summary')
def to_representation(self, instance):
data = super().to_representation(instance)
if data.get('summary') is None:
data.pop('summary', None)
return data