From f466714641eb846c0598cb342a15dbbce0c206e9 Mon Sep 17 00:00:00 2001 From: lizerk Date: Fri, 11 Sep 2026 00:24:06 +0300 Subject: [PATCH] Keep payroll carryovers internal --- backend/api/v1/finance/serializers.py | 10 ---------- .../tests/finance/test_payroll_services.py | 6 +++++- .../finance/PayrollStatementDetailModal.tsx | 20 ++----------------- frontend/src/lib/api/finance.ts | 3 --- 4 files changed, 7 insertions(+), 32 deletions(-) diff --git a/backend/api/v1/finance/serializers.py b/backend/api/v1/finance/serializers.py index 462f46ca..0e9d6b31 100644 --- a/backend/api/v1/finance/serializers.py +++ b/backend/api/v1/finance/serializers.py @@ -14,8 +14,6 @@ from finance.models import ( class PayrollStatementLineSerializer(serializers.ModelSerializer): - is_automatic_carryover = serializers.SerializerMethodField() - class Meta: model = PayrollStatementLine fields = [ @@ -26,15 +24,9 @@ class PayrollStatementLineSerializer(serializers.ModelSerializer): "source_period_from", "source_period_to", "is_retro", - "is_automatic_carryover", "calculated", ] - def get_is_automatic_carryover(self, obj) -> bool: - return obj.source_ref.startswith( - "api:payroll-carryover:" - ) or obj.source_ref.startswith("payroll-carryover:") - class PayrollStatementAcknowledgementSerializer(serializers.ModelSerializer): class Meta: @@ -174,8 +166,6 @@ class OwnPayrollStatementSerializer(serializers.ModelSerializer): "deduction_total", "net_pay", "payment_total", - "opening_balance", - "closing_balance", "payable", "lines", "acknowledgement", diff --git a/backend/tests/finance/test_payroll_services.py b/backend/tests/finance/test_payroll_services.py index 81069634..abe5a701 100644 --- a/backend/tests/finance/test_payroll_services.py +++ b/backend/tests/finance/test_payroll_services.py @@ -967,7 +967,11 @@ def test_employee_api_only_returns_own_published_statement_and_no_stores_it( assert stranger_client.get(detail_url).status_code == 404 detail_response = employee_client.get(detail_url) assert detail_response.status_code == 200 - assert len(detail_response.json()["lines"]) == 4 + detail = detail_response.json() + assert len(detail["lines"]) == 4 + assert "opening_balance" not in detail + assert "closing_balance" not in detail + assert all("is_automatic_carryover" not in line for line in detail["lines"]) assert PayrollAuditEvent.objects.filter( action="payroll.statement_viewed", actor=payroll_users["employee"], diff --git a/frontend/src/components/finance/PayrollStatementDetailModal.tsx b/frontend/src/components/finance/PayrollStatementDetailModal.tsx index 5ff1a46f..d1c602af 100644 --- a/frontend/src/components/finance/PayrollStatementDetailModal.tsx +++ b/frontend/src/components/finance/PayrollStatementDetailModal.tsx @@ -338,14 +338,7 @@ export function PayrollStatementDetailModal({ Итоги расчёта -
- +
-
@@ -425,9 +411,7 @@ export function PayrollStatementDetailModal({

{line.is_retro ? ( - {line.is_automatic_carryover - ? "Автоперенос" - : "Перерасчёт"} + Перерасчёт ) : null}
diff --git a/frontend/src/lib/api/finance.ts b/frontend/src/lib/api/finance.ts index 022cb434..c7ab7b10 100644 --- a/frontend/src/lib/api/finance.ts +++ b/frontend/src/lib/api/finance.ts @@ -54,7 +54,6 @@ export type PayrollStatementLine = { source_period_from: string | null; source_period_to: string | null; is_retro: boolean; - is_automatic_carryover: boolean; calculated: boolean; }; @@ -66,8 +65,6 @@ export type PayrollStatement = PayrollStatementSummary & { deduction_total: string; net_pay: string; payment_total: string; - opening_balance: string; - closing_balance: string; lines: PayrollStatementLine[]; };