From 5cc4522e4af791b49db3a7a0b75f7b7d0ff2a43d Mon Sep 17 00:00:00 2001 From: Andrey Epifancev Date: Sun, 18 Oct 2026 14:28:38 +0400 Subject: [PATCH] =?UTF-8?q?status=5Finput:=20=D0=BF=D1=83=D1=81=D1=82?= =?UTF-8?q?=D0=B0=D1=8F=20=D1=81=D1=82=D1=80=D0=BE=D0=BA=D0=B0=20=D0=BE?= =?UTF-8?q?=D1=80=D0=B3=D0=B0=D0=BD=D0=B8=D0=B7=D0=B0=D1=86=D0=B8=D0=B8/?= =?UTF-8?q?=D0=98=D0=9D=D0=9D=20=E2=80=94=20=C2=AB=D0=BD=D0=B5=D1=82=C2=BB?= =?UTF-8?q?=20(M-1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 5.5 Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W --- arm_statements/status.py | 2 +- arm_statements/tests/test_status.py | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/arm_statements/status.py b/arm_statements/status.py index 02be8f8..25a2ccf 100644 --- a/arm_statements/status.py +++ b/arm_statements/status.py @@ -86,7 +86,7 @@ def status_input(document: StatementDocument) -> StatusInput: return StatusInput( document_type=document.document_type, layout_found=document.lines != (), - has_organization_or_inn=header.organization_name.value is not None or header.inn.value is not None, + has_organization_or_inn=bool(header.organization_name.value or header.inn.value), period_known=period_known, needs_review_fields=header.needs_review_fields, lines=tuple(StatusLine(line.line_status, line.needs_review) for line in document.lines), diff --git a/arm_statements/tests/test_status.py b/arm_statements/tests/test_status.py index ec5c9b2..0952f37 100644 --- a/arm_statements/tests/test_status.py +++ b/arm_statements/tests/test_status.py @@ -2,6 +2,7 @@ from dataclasses import replace from datetime import date from decimal import Decimal as D +from arm_statements import status_input_from_contract, to_contract from arm_statements.header import parse_header from arm_statements.issues import make_warning from arm_statements.loader import Rules @@ -10,6 +11,7 @@ from arm_statements.model import ( DocumentType, EnvelopeStatus, FormVariant, + HeaderField, LineStatus, PeriodKind, Severity, @@ -115,3 +117,12 @@ def test_status_input_from_document(rules: Rules) -> None: assert document_status(data) is DONE empty = replace(doc, columns=(), lines=(), checks=None) assert (status_input(empty).layout_found, status_input(empty).period_known) == (False, False) + + +def test_empty_string_organization_and_inn_mean_absent(rules: Rules) -> None: + """M-1: пустая строка в шапке — «нет»; совпадает с расчётом по контракту.""" + empty = HeaderField("", 100.0, "") + head = replace(parse_header(hdr(), rules), organization_name=empty, inn=empty) + doc = StatementDocument(DocumentType.BALANCE, None, "l", head, (), (), None, DONE, ()) + assert status_input(doc).has_organization_or_inn is False + assert status_input_from_contract(to_contract(doc)).has_organization_or_inn is False