add-preset-shahmatka #141

Merged
aep merged 24 commits from add-preset-shahmatka into main 2026-10-22 17:57:14 +03:00
7 changed files with 8 additions and 21 deletions
Showing only changes of commit 367a11ed38 - Show all commits

View File

@ -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)

View File

@ -340,7 +340,6 @@ class EliminationRulesOut(BaseModel):
version_no: int | None
is_version_fixed: bool
as_of: datetime.date | None
rules: list[EliminationRuleOut]

View File

@ -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:

View File

@ -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()),
)

View File

@ -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

View File

@ -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

View File

@ -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)