chore(api): format, mypy и тест версии правил; убрать мёртвое as_of (ревью #141)
Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
a8e510e402
commit
367a11ed38
@ -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)
|
||||
|
||||
@ -340,7 +340,6 @@ class EliminationRulesOut(BaseModel):
|
||||
|
||||
version_no: int | None
|
||||
is_version_fixed: bool
|
||||
as_of: datetime.date | None
|
||||
rules: list[EliminationRuleOut]
|
||||
|
||||
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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()),
|
||||
)
|
||||
|
||||
@ -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
|
||||
|
||||
|
||||
@ -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
|
||||
|
||||
@ -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)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user