status_input: пустая строка организации/ИНН — «нет» (M-1)
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BJKMLHdxMwSUeYcdkwqX4W
This commit is contained in:
parent
598ac83855
commit
5cc4522e4a
@ -86,7 +86,7 @@ def status_input(document: StatementDocument) -> StatusInput:
|
|||||||
return StatusInput(
|
return StatusInput(
|
||||||
document_type=document.document_type,
|
document_type=document.document_type,
|
||||||
layout_found=document.lines != (),
|
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,
|
period_known=period_known,
|
||||||
needs_review_fields=header.needs_review_fields,
|
needs_review_fields=header.needs_review_fields,
|
||||||
lines=tuple(StatusLine(line.line_status, line.needs_review) for line in document.lines),
|
lines=tuple(StatusLine(line.line_status, line.needs_review) for line in document.lines),
|
||||||
|
|||||||
@ -2,6 +2,7 @@ from dataclasses import replace
|
|||||||
from datetime import date
|
from datetime import date
|
||||||
from decimal import Decimal as D
|
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.header import parse_header
|
||||||
from arm_statements.issues import make_warning
|
from arm_statements.issues import make_warning
|
||||||
from arm_statements.loader import Rules
|
from arm_statements.loader import Rules
|
||||||
@ -10,6 +11,7 @@ from arm_statements.model import (
|
|||||||
DocumentType,
|
DocumentType,
|
||||||
EnvelopeStatus,
|
EnvelopeStatus,
|
||||||
FormVariant,
|
FormVariant,
|
||||||
|
HeaderField,
|
||||||
LineStatus,
|
LineStatus,
|
||||||
PeriodKind,
|
PeriodKind,
|
||||||
Severity,
|
Severity,
|
||||||
@ -115,3 +117,12 @@ def test_status_input_from_document(rules: Rules) -> None:
|
|||||||
assert document_status(data) is DONE
|
assert document_status(data) is DONE
|
||||||
empty = replace(doc, columns=(), lines=(), checks=None)
|
empty = replace(doc, columns=(), lines=(), checks=None)
|
||||||
assert (status_input(empty).layout_found, status_input(empty).period_known) == (False, False)
|
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
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user