diff --git a/api/src/repositories/elimination_rules.py b/api/src/repositories/elimination_rules.py index 476d132..a7008e8 100644 --- a/api/src/repositories/elimination_rules.py +++ b/api/src/repositories/elimination_rules.py @@ -14,9 +14,7 @@ async def list_rules_with_accounts( ) -> list[tuple[EliminationRule, EliminationRuleAccount | None]]: """Правила заданной версии либо все правила без `valid_to`.""" condition = ( - EliminationRule.version_no == version_no - if version_no is not None - else EliminationRule.valid_to.is_(None) + EliminationRule.version_no == version_no if version_no is not None else EliminationRule.valid_to.is_(None) ) stmt = ( select(EliminationRule, EliminationRuleAccount) diff --git a/api/src/schemas/consolidations.py b/api/src/schemas/consolidations.py index 8f79240..809ba09 100644 --- a/api/src/schemas/consolidations.py +++ b/api/src/schemas/consolidations.py @@ -340,7 +340,6 @@ class EliminationRulesOut(BaseModel): version_no: int | None is_version_fixed: bool - as_of: datetime.date | None rules: list[EliminationRuleOut] diff --git a/api/src/services/consolidated_osv.py b/api/src/services/consolidated_osv.py index a9281ce..d58860b 100644 --- a/api/src/services/consolidated_osv.py +++ b/api/src/services/consolidated_osv.py @@ -151,9 +151,7 @@ class ConsolidatedOsvService: """Свод версии и данные его расчёта; версия вне видимости — 404.""" return await self.build_with_members(version_id) - async def build_with_members( - self, version_id: uuid.UUID - ) -> ConsolidatedOsvBuildResult: + async def build_with_members(self, version_id: uuid.UUID) -> ConsolidatedOsvBuildResult: """Свод и участники периметра, загруженные при его расчёте.""" found = await repo.get_version(self._session, self._scope, version_id) if found is None: @@ -224,9 +222,8 @@ class ConsolidatedOsvService: "rows": len(rows), }, ) - filename = ( - f"svod-osv_{group_name}_{result.consolidation.year}-{result.consolidation.quarter.value}_v{result.version.version_no}.xlsx" - ) + period = f"{result.consolidation.year}-{result.consolidation.quarter.value}" + filename = f"svod-osv_{group_name}_{period}_v{result.version.version_no}.xlsx" return content, filename async def summary(self, version_id: uuid.UUID) -> OsvSummaryOut: diff --git a/api/src/services/elimination_rules.py b/api/src/services/elimination_rules.py index be5608b..d61b574 100644 --- a/api/src/services/elimination_rules.py +++ b/api/src/services/elimination_rules.py @@ -54,6 +54,5 @@ class EliminationRuleService: return EliminationRulesOut( version_no=version_no, is_version_fixed=is_version_fixed, - as_of=None, rules=list(by_id.values()), ) diff --git a/api/src/services/intercompany_matrix.py b/api/src/services/intercompany_matrix.py index b21789d..9ea6d82 100644 --- a/api/src/services/intercompany_matrix.py +++ b/api/src/services/intercompany_matrix.py @@ -497,7 +497,7 @@ class IntercompanyMatrixService: raise DomainValidationError("ACCOUNTS_REQUIRED", "В правиле-пресете нужны счета обеих сторон") debit = _select_accounts(debit_ids, debit_excluded, "D", by_id, children) credit = _select_accounts(credit_ids, credit_excluded, "K", by_id, children) - measure = "closing" if rule.measure == "closing" else "turnover" + measure: Measure = "closing" if rule.measure == "closing" else "turnover" return MatrixSelection(debit, credit, measure), rule diff --git a/api/tests/test_api_intercompany_matrix.py b/api/tests/test_api_intercompany_matrix.py index 1c679d3..abecf82 100644 --- a/api/tests/test_api_intercompany_matrix.py +++ b/api/tests/test_api_intercompany_matrix.py @@ -221,8 +221,8 @@ async def test_preset_uses_current_rules_when_version_unfixed( listed = await client.get(f"/consolidations/versions/{world.version.id}/elimination-rules") assert listed.status_code == OK, listed.text assert listed.json()["is_version_fixed"] is False - assert listed.json()["version_no"] == rule.version_no - assert listed.json()["as_of"] is not None + assert listed.json()["version_no"] is None + assert "as_of" not in listed.json() assert str(rule.id) in {item["id"] for item in listed.json()["rules"]} response = await client.get(url) assert response.status_code == OK, response.text @@ -238,7 +238,6 @@ async def test_preset_uses_current_rules_when_version_unfixed( assert fixed.status_code == OK, fixed.text assert fixed.json()["is_version_fixed"] is True assert fixed.json()["version_no"] == rule.version_no - assert fixed.json()["as_of"] is None missing_url = f"/consolidations/versions/{world.version.id}/intercompany-matrix/preset/{uuid.uuid4()}" missing = await client.get(missing_url) assert missing.status_code == NOT_FOUND diff --git a/api/tests/test_elimination_rules.py b/api/tests/test_elimination_rules.py index 77504be..87ab323 100644 --- a/api/tests/test_elimination_rules.py +++ b/api/tests/test_elimination_rules.py @@ -33,9 +33,7 @@ def _rule() -> SimpleNamespace: (SimpleNamespace(version_no=3, valid_to="2026-12-31"), 3, True), ], ) -def test_rule_is_valid_for_version( - rule: SimpleNamespace | None, version_no: int | None, expected: bool -) -> None: +def test_rule_is_valid_for_version(rule: SimpleNamespace | None, version_no: int | None, expected: bool) -> None: assert rules_repo.is_valid_for_version(rule, version_no) is expected @@ -69,7 +67,6 @@ async def test_fixed_rules_use_version_number(monkeypatch: pytest.MonkeyPatch) - assert result.is_version_fixed is True assert result.version_no == rule.version_no - assert result.as_of is None assert [item.id for item in result.rules] == [rule.id] assert result.rules[0].company_1.accounts == [account_id] listed.assert_awaited_once_with(session, rule.version_no) @@ -91,7 +88,6 @@ async def test_unfixed_rules_use_open_valid_to(monkeypatch: pytest.MonkeyPatch) assert result.is_version_fixed is False assert result.version_no is None - assert result.as_of is None assert [item.id for item in result.rules] == [rule.id] listed.assert_awaited_once_with(session, None) @@ -110,6 +106,5 @@ async def test_no_current_rules_returns_empty_with_unfixed_flag(monkeypatch: pyt assert result.is_version_fixed is False assert result.version_no is None - assert result.as_of is None assert result.rules == [] listed.assert_awaited_once_with(session, None)