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