AURORA-1756: подписи итогов в xlsx — «Итого Дт» / «Итого Кт», как на экране и в DOC-221277
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
6faa4fb325
commit
df4e171cc5
@ -938,7 +938,7 @@ API: список счетов `GET /directories/accounts`, правила ве
|
||||
`GET …/intercompany-matrix/result-table` и её XLSX `GET …/intercompany-matrix/result-table/export`
|
||||
(аудит `EXPORT`, `report = "intercompany_result_table"`). Режим PRESET (счета и показатель из правила элиминации):
|
||||
`GET …/intercompany-matrix/preset/{rule_id}` и его выгрузка `…/preset/{rule_id}/export`.
|
||||
Пустой список стороны выбирает все подходящие балансовые счета (без 001–012); непустой список может включать и забалансовые; `legal_entity_ids` сужает обе оси и итоги до выбранных ЮЛ. Итоги `total_debit` («Итого Дт», строка) и `total_credit` («Итого Кт», столбец) — по ID ЮЛ, в xlsx — колонка «Дебет» и строка «Кредит»; у результирующей таблицы итога по статьям нет. `one_sided` — ровно одна сумма
|
||||
Пустой список стороны выбирает все подходящие балансовые счета (без 001–012); непустой список может включать и забалансовые; `legal_entity_ids` сужает обе оси и итоги до выбранных ЮЛ. Итоги `total_debit` («Итого Дт», строка) и `total_credit` («Итого Кт», столбец) — по ID ЮЛ, в xlsx — те же колонка и строка; у результирующей таблицы итога по статьям нет. `one_sided` — ровно одна сумма
|
||||
пары нулевая; пара подсвечивается (и в xlsx) при `exceeds_threshold` или `one_sided` (AURORA-1651).
|
||||
`GET …/elimination-rules` отдаёт объект `{version_no, is_version_fixed, rules}` (у правила есть `id`): правила версии
|
||||
`consolidation_version.elimination_rules_version` — она фиксируется при создании версии консолидации (действующая на дату
|
||||
|
||||
@ -105,7 +105,7 @@ def _write_matrix_totals(
|
||||
debit_total.alignment = Alignment(horizontal="right", vertical="center")
|
||||
|
||||
credit_total_row = data_start_row + len(matrix.companies) * len(METRICS)
|
||||
_text(sheet, credit_total_row, 1, "Кредит")
|
||||
_text(sheet, credit_total_row, 1, "Итого Кт")
|
||||
sheet.cell(credit_total_row, 1).font = Font(bold=True)
|
||||
for column, company in enumerate(matrix.companies, start=3):
|
||||
credit_total = sheet.cell(credit_total_row, column, matrix.total_credit[company.id])
|
||||
@ -129,7 +129,7 @@ def build_matrix_workbook(matrix: IntercompanyMatrixOut, info: MatrixExportInfo)
|
||||
for column, company in enumerate(matrix.companies, start=3):
|
||||
_text(sheet, table_header_row, column, company.name)
|
||||
sheet.column_dimensions[get_column_letter(column)].width = 26
|
||||
_text(sheet, table_header_row, debit_total_column, "Дебет")
|
||||
_text(sheet, table_header_row, debit_total_column, "Итого Дт")
|
||||
sheet.column_dimensions[get_column_letter(debit_total_column)].width = 26
|
||||
sheet.row_dimensions[table_header_row].height = 36
|
||||
for header in sheet[table_header_row]:
|
||||
|
||||
@ -167,7 +167,7 @@ async def test_company_filter_applies_to_matrix_and_export(
|
||||
assert [sheet.cell(10, column).value for column in range(3, 6)] == [
|
||||
world.members[0].name,
|
||||
world.members[1].name,
|
||||
"Дебет",
|
||||
"Итого Дт",
|
||||
]
|
||||
audit = (await seeded.scalars(select(AuditEvent).where(AuditEvent.action == AuditAction.EXPORT))).one()
|
||||
assert audit.after_value["legal_entity_ids"] == selected
|
||||
|
||||
@ -108,7 +108,7 @@ def test_matrix_export_has_three_rows_per_debit_company_and_highlights_threshold
|
||||
"Показатель",
|
||||
"=Компания А",
|
||||
"Компания Б",
|
||||
"Дебет",
|
||||
"Итого Дт",
|
||||
]
|
||||
assert all(cell.alignment.horizontal == "center" and cell.alignment.vertical == "center" for cell in sheet[10])
|
||||
assert sheet["C10"].data_type == "s"
|
||||
@ -147,7 +147,7 @@ def test_matrix_export_has_three_rows_per_debit_company_and_highlights_threshold
|
||||
assert [sheet.cell(row, 3).value for row in range(15, 19)] == [0, 20, 20, 0]
|
||||
assert Decimal(str(sheet["E11"].value)) == Decimal("100.25")
|
||||
assert Decimal(str(sheet["E15"].value)) == Decimal("20")
|
||||
assert [sheet.cell(19, column).value for column in range(1, 6)] == ["Кредит", None, 20, 90, None]
|
||||
assert [sheet.cell(19, column).value for column in range(1, 6)] == ["Итого Кт", None, 20, 90, None]
|
||||
assert all(sheet[cell].number_format == MONEY_FORMAT for cell in ("E11", "E15", "C19", "D19"))
|
||||
assert all(sheet.cell(row, 3).fill.fgColor.rgb != THRESHOLD_FILL.fgColor.rgb for row in range(15, 19))
|
||||
assert sheet.freeze_panes == "C11"
|
||||
|
||||
@ -13,7 +13,7 @@
|
||||
счета; пустой `legal_entity_ids` — весь периметр. **BREAKING** для клиента фронта (переводится в AURORA-1757,
|
||||
сливается одновременно).
|
||||
- В ответе матрицы `total_debit` и `total_credit` — итог по каждому ЮЛ, строки с двумя знаками.
|
||||
- В XLSX шахматки — колонка «Дебет» справа и строка «Кредит» снизу.
|
||||
- В XLSX шахматки — колонка «Итого Дт» справа и строка «Итого Кт» снизу.
|
||||
- Аудит выгрузки сохраняет `legal_entity_ids`.
|
||||
- Результирующая таблица: итога по всем статьям нет (аналитик, 03.11.2026).
|
||||
|
||||
|
||||
@ -86,8 +86,8 @@ SHALL считать исходные строки ОСВ пары с `account_i
|
||||
`intercompany-matrix_<ГК>_<год>-<квартал>_v<n>.xlsx`, шапкой (ГК, период, версия, единицы, режим,
|
||||
выбранные счета; для ALL — «Все балансовые счета») и строками разницы, дебета, кредита и процента расхождения для
|
||||
каждой пары. Пара SHALL заливаться цветом порога, если `exceeds_threshold` или `one_sided` — так же, как в API.
|
||||
Справа от колонок компаний SHALL быть колонка «Дебет» с `total_debit` по каждому ЮЛ строки (ячейка объединена
|
||||
на строки пары); под матрицей SHALL быть строка «Кредит» с `total_credit` по каждому ЮЛ колонки; ячейка на
|
||||
Справа от колонок компаний SHALL быть колонка «Итого Дт» с `total_debit` по каждому ЮЛ строки (ячейка объединена
|
||||
на строки пары); под матрицей SHALL быть строка «Итого Кт» с `total_credit` по каждому ЮЛ колонки; ячейка на
|
||||
пересечении пустая. Значения — те же, что в JSON.
|
||||
|
||||
#### Scenario: Экспорт выбранных счетов
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user