diff --git a/openspec/changes/intercompany-matrix-preset-header/design.md b/openspec/changes/archive/2026-11-12-intercompany-matrix-preset-header/design.md similarity index 100% rename from openspec/changes/intercompany-matrix-preset-header/design.md rename to openspec/changes/archive/2026-11-12-intercompany-matrix-preset-header/design.md diff --git a/openspec/changes/intercompany-matrix-preset-header/proposal.md b/openspec/changes/archive/2026-11-12-intercompany-matrix-preset-header/proposal.md similarity index 100% rename from openspec/changes/intercompany-matrix-preset-header/proposal.md rename to openspec/changes/archive/2026-11-12-intercompany-matrix-preset-header/proposal.md diff --git a/openspec/changes/intercompany-matrix-preset-header/specs/consolidated-osv/spec.md b/openspec/changes/archive/2026-11-12-intercompany-matrix-preset-header/specs/consolidated-osv/spec.md similarity index 100% rename from openspec/changes/intercompany-matrix-preset-header/specs/consolidated-osv/spec.md rename to openspec/changes/archive/2026-11-12-intercompany-matrix-preset-header/specs/consolidated-osv/spec.md diff --git a/openspec/changes/intercompany-matrix-preset-header/tasks.md b/openspec/changes/archive/2026-11-12-intercompany-matrix-preset-header/tasks.md similarity index 100% rename from openspec/changes/intercompany-matrix-preset-header/tasks.md rename to openspec/changes/archive/2026-11-12-intercompany-matrix-preset-header/tasks.md diff --git a/openspec/specs/consolidated-osv/spec.md b/openspec/specs/consolidated-osv/spec.md index b5bce9d..46257a3 100644 --- a/openspec/specs/consolidated-osv/spec.md +++ b/openspec/specs/consolidated-osv/spec.md @@ -307,10 +307,23 @@ SHALL считать исходные строки ОСВ пары с `account_i ### Requirement: XLSX шахматки пресета `GET …/intercompany-matrix/preset/{rule_id}/export` SHALL возвращать XLSX с теми же строками, что JSON-расчёт пресета. Имя файла SHALL иметь вид `intercompany-matrix_<ГК>_<год>-<квартал>_v_rule-balance-.xlsx`. Шапка SHALL -содержать режим «Пресет», коды счетов дебета и кредита (раскрытые по иерархии, с учётом исключений правила), номер -правила, статьи А и Б (`article_1_line` / `article_2_line`), фактическую версию правил и строку «Показатель» со значением «Сальдо» для `closing` или «Оборот» для `turnover`. Строка «Показатель» SHALL присутствовать и в выгрузках ALL и MANUAL (значение +содержать режим «Пресет», коды счетов дебета и кредита так, как они заданы в правиле (без раскрытия по иерархии), под +каждой стороной — строку «кроме» с исключёнными кодами этой стороны, если исключения есть, номер правила, статьи А и Б, +фактическую версию правил и строку «Показатель» со значением «Сальдо» для `closing` или «Оборот» для `turnover`. +Статья А SHALL относиться к дебетовой стороне, статья Б — к кредитовой: `article_1_line` / `article_2_line` при +`side_1 = D`, наоборот при `side_1 = K`. Строка «Показатель» SHALL присутствовать и в выгрузках ALL и MANUAL (значение «Сальдо»). +#### Scenario: Правило с исключениями на обеих сторонах +- **WHEN** пользователь выгружает пресет правила № 6 из seed-набора Прил. 3 (маска «76» на обеих сторонах с + исключениями субсчетов 76) +- **THEN** «Счета дебета» и «Счета кредита» содержат только коды сторон правила, включая «76», без раскрытых субсчетов; + под каждой стороной строка «кроме» перечисляет исключённые коды этой стороны + +#### Scenario: Кредитная первая сторона правила +- **WHEN** пользователь выгружает пресет с `side_1 = K` +- **THEN** «Статья А» содержит `article_2_line`, «Статья Б» — `article_1_line` + #### Scenario: Выгрузка по оборотам - **WHEN** пользователь выгружает пресет с `measure = turnover` - **THEN** шапка содержит «Режим — Пресет», «Показатель — Оборот», номер, статьи и версию правила; имя файла заканчивается на `_rule-balance-.xlsx`