Document off-cycle payment response schema

This commit is contained in:
lizerk 2026-10-25 17:13:05 +03:00
parent 18d170ffd2
commit b248c94e2d

View File

@ -3,6 +3,7 @@ from decimal import Decimal
from django.db.models import Q, Sum
from django.shortcuts import get_object_or_404
from django.utils import timezone
from drf_spectacular.utils import extend_schema_field
from rest_framework import serializers
from rest_framework.response import Response
@ -70,6 +71,13 @@ class PaymentWriteSerializer(serializers.Serializer):
return attrs
class PaymentSettlementSerializer(serializers.Serializer):
original_payable = serializers.CharField()
paid_outside_period = serializers.CharField()
remaining = serializers.CharField()
confirmed = serializers.BooleanField()
class PaymentSerializer(serializers.ModelSerializer):
settlement = serializers.SerializerMethodField()
employee_id = serializers.IntegerField(read_only=True, allow_null=True)
@ -78,14 +86,16 @@ class PaymentSerializer(serializers.ModelSerializer):
created_by = PayrollUserRefSerializer(read_only=True)
voided_by = PayrollUserRefSerializer(read_only=True, allow_null=True)
def get_source_period_name(self, obj):
@extend_schema_field(serializers.CharField(allow_null=True))
def get_source_period_name(self, obj) -> str | None:
return (
(obj.source_period.name or obj.source_period.code)
if obj.source_period
else None
)
def get_settlement(self, obj):
@extend_schema_field(PaymentSettlementSerializer(allow_null=True))
def get_settlement(self, obj) -> dict | None:
if not obj.source_statement_id:
return None
cache = self.context.setdefault("settlements", {})