diff --git a/api/src/api/endpoints/consolidations/elimination_rule.py b/api/src/api/endpoints/consolidations/elimination_rule.py index 4ab60dd..60f93b1 100644 --- a/api/src/api/endpoints/consolidations/elimination_rule.py +++ b/api/src/api/endpoints/consolidations/elimination_rule.py @@ -29,5 +29,5 @@ async def list_rules( version_id: uuid.UUID, service: EliminationRuleServiceDep, ) -> EliminationRulesOut: - """Правила зафиксированной версии либо актуальные сегодня, с основанием выбора.""" + """Правила §4 зафиксированной либо последней открытой версии с основанием выбора.""" return await service.list_rules(version_id) diff --git a/api/src/api/endpoints/consolidations/intercompany_matrix.py b/api/src/api/endpoints/consolidations/intercompany_matrix.py index d4645ca..60dd321 100644 --- a/api/src/api/endpoints/consolidations/intercompany_matrix.py +++ b/api/src/api/endpoints/consolidations/intercompany_matrix.py @@ -173,7 +173,7 @@ async def build_intercompany_matrix_preset( rule_id: uuid.UUID, service: IntercompanyMatrixServiceDep, ) -> IntercompanyMatrixOut: - """Cчета пресета с подходящим видом дебета или кредита.""" + """Шахматка §6 по счетам сторон правила §4.""" return await service.build_accounts(version_id, mode="PRESET", rule_id=rule_id) @@ -189,7 +189,7 @@ async def get_unpaired_osv( rule_id: uuid.UUID, service: IntercompanyMatrixServiceDep, ) -> UnpairedOsvOut: - """Все строки односторонних ячеек шахматки и их число.""" + """Строки свода односторонних ячеек шахматки §6 и их число.""" return await service.get_unpaired_osv(version_id, rule_id) @@ -206,6 +206,7 @@ async def export_intercompany_matrix_preset( service: IntercompanyMatrixServiceDep, audit: Annotated[RequestAudit, Depends(get_request_audit)], ) -> Response: + """XLSX шахматки §6 по правилу §4 с аудитом выгрузки.""" matrix, info = await service.build_export(version_id, mode="PRESET", rule_id=rule_id) return await _export_response(version_id, matrix, info, audit) diff --git a/api/src/repositories/elimination_rules.py b/api/src/repositories/elimination_rules.py index bcd12ba..d059395 100644 --- a/api/src/repositories/elimination_rules.py +++ b/api/src/repositories/elimination_rules.py @@ -12,7 +12,7 @@ from src.models.accounting import ChartOfAccount, EliminationRule, EliminationRu async def list_rules_with_accounts( session: AsyncSession, version_no: int | None ) -> list[tuple[EliminationRule, EliminationRuleAccount | None]]: - """Правила заданной версии либо открытые правила последней версии.""" + """Правила §4 заданной либо последней открытой версии.""" condition = ( EliminationRule.version_no == version_no if version_no is not None @@ -35,16 +35,17 @@ async def list_rules_with_accounts( def _current_open_version_stmt(): + """Запрос номера последней открытой версии правил §4.""" return select(func.max(EliminationRule.version_no)).where(EliminationRule.valid_to.is_(None)) async def current_open_version_no(session: AsyncSession) -> int | None: - """Номер последней версии, в которой есть открытые правила.""" + """Номер последней версии с открытыми правилами §4.""" return await session.scalar(_current_open_version_stmt()) def is_valid_for_version(rule: EliminationRule | None, version_no: int | None) -> bool: - """Проверить номер версии либо отсутствие `valid_to`.""" + """Проверить версию правила §4 либо отсутствие `valid_to`.""" return rule is not None and (rule.version_no == version_no if version_no is not None else rule.valid_to is None) @@ -76,7 +77,7 @@ async def list_rule_accounts( async def rule_with_account( session: AsyncSession, rule_id: uuid.UUID ) -> tuple[EliminationRule | None, list[EliminationRuleAccount]]: - """Правило и его счета; `company_no` задаёт сторону, `is_excluded` — исключение.""" + """Правило §4 и его счета; `company_no` задаёт сторону, `is_excluded` — исключение.""" rule = await session.get(EliminationRule, rule_id) if rule is None: return None, [] diff --git a/api/src/services/elimination_rules.py b/api/src/services/elimination_rules.py index bf15ca1..a67171e 100644 --- a/api/src/services/elimination_rules.py +++ b/api/src/services/elimination_rules.py @@ -21,6 +21,7 @@ class EliminationRuleService: self._scope = scope async def list_rules(self, consolidation_version_id: uuid.UUID) -> EliminationRulesOut: + """Правила §4 версии консолидации с проверкой видимости и основанием выбора.""" found = await consolidations_repo.get_version(self._session, self._scope, consolidation_version_id) if found is None: raise NotFoundError(VERSION_NOT_FOUND) diff --git a/api/src/services/intercompany_matrix.py b/api/src/services/intercompany_matrix.py index 52f2742..2e99a99 100644 --- a/api/src/services/intercompany_matrix.py +++ b/api/src/services/intercompany_matrix.py @@ -109,6 +109,7 @@ class MatrixExportInfo: @property def preset_details(self) -> tuple[StatementType, int, int, str, str]: + """Реквизиты правила §4 для имени и шапки XLSX шахматки §6.""" details = ( self.rule_statement_type, self.rule_no, @@ -215,7 +216,7 @@ def calculate_matrix( def get_unpaired_rows(rows: Iterable[ConsolidatedRow], matrix: IntercompanyMatrixOut) -> list[ConsolidatedRow]: - """Строки свода, попавшие только на одну сторону пары компаний в шахматке.""" + """Строки свода, попавшие только на одну сторону пары шахматки §6.""" entry_ids = { entry_id for cell in matrix.cells @@ -429,7 +430,7 @@ class IntercompanyMatrixService: return result.matrix, info async def get_unpaired_osv(self, version_id: uuid.UUID, rule_id: uuid.UUID) -> UnpairedOsvOut: - """Все строки свода без встречной стороны в шахматке заданного пресета.""" + """Строки свода без встречной стороны в шахматке §6 заданного пресета.""" result = await self._build_accounts( version_id, mode="PRESET", debit_account_ids=(), credit_account_ids=(), rule_id=rule_id ) @@ -443,7 +444,7 @@ class IntercompanyMatrixService: by_id: dict[uuid.UUID, ChartOfAccount], children: dict[uuid.UUID, list[uuid.UUID]], ) -> tuple[MatrixSelection, EliminationRule]: - """Выбрать счета и показатель пресета для версии консолидации.""" + """Выбрать стороны счетов и показатель правила §4 для шахматки §6.""" if rule_id is None: raise DomainValidationError("RULE_REQUIRED", "Выберите правило-пресет") rule, rule_accounts = await elimination_rules_repo.rule_with_account(self._session, rule_id)