diff --git a/web/src/components/RealtimeTable/constants/FORM_2/SMETA.js b/web/src/components/RealtimeTable/constants/FORM_2/SMETA.js index 50befa9..356ccc3 100644 --- a/web/src/components/RealtimeTable/constants/FORM_2/SMETA.js +++ b/web/src/components/RealtimeTable/constants/FORM_2/SMETA.js @@ -141,6 +141,26 @@ export const config = { }, }, }, + { + header: "Итого: Поддержка", + accessorKey: + "field_raskhody_planiruemye_rf_na_2026_god_itogopodderzhka", + columns: [ + { + header: "", + accessorKey: "data.plan.support.year", + columnLetter: "H", + size: 150, + filterFn: "contains", + }, + ], + muiTableHeadCellProps: { + sx: { + backgroundColor: "#FFFFFF", + color: "#000000", + }, + }, + }, ], muiTableHeadCellProps: { sx: { @@ -233,6 +253,26 @@ export const config = { }, }, }, + { + header: "Итого: Поддержка", + accessorKey: + "field_utverzhdennye_bazovye_raskhody_na_2026_god_itogopodderzhka", + columns: [ + { + header: "", + accessorKey: "data.approved.support.year", + columnLetter: "N", + size: 150, + filterFn: "contains", + }, + ], + muiTableHeadCellProps: { + sx: { + backgroundColor: "#FFFFFF", + color: "#000000", + }, + }, + }, ], muiTableHeadCellProps: { sx: { @@ -325,6 +365,26 @@ export const config = { }, }, }, + { + header: "Итого: Поддержка", + accessorKey: + "field_fakticheskie_raskhody_za_2026_god_itogopodderzhka", + columns: [ + { + header: "", + accessorKey: "data.fact.support.year", + columnLetter: "T", + size: 150, + filterFn: "contains", + }, + ], + muiTableHeadCellProps: { + sx: { + backgroundColor: "#FFFFFF", + color: "#000000", + }, + }, + }, ], muiTableHeadCellProps: { sx: { @@ -377,114 +437,10 @@ export const config = { }, }, }, - ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - { - header: "В тыс. рублей", - accessorKey: "v_tys_rubley", - columns: [ - { - header: "Расходы, планируемые РФ на {year} год", - accessorKey: "v_tys_rubley_raskhody_planiruemye_rf_na_2026_god", - columns: [ - { - header: "Итого: Поддержка", - accessorKey: - "v_tys_rubley_raskhody_planiruemye_rf_na_2026_god_itogopodderzhka", - columns: [ - { - header: "", - accessorKey: "data.plan.support.year", - columnLetter: "H", - size: 150, - filterFn: "contains", - }, - ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - ], - }, - { - header: "Утверждённые базовые расходы на {year} год", - accessorKey: - "v_tys_rubley_utverzhdennye_bazovye_raskhody_na_2026_god", - columns: [ - { - header: "Итого: Поддержка", - accessorKey: - "v_tys_rubley_utverzhdennye_bazovye_raskhody_na_2026_god_itogopodderzhka", - columns: [ - { - header: "", - accessorKey: "data.approved.support.year", - columnLetter: "N", - size: 150, - filterFn: "contains", - }, - ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - ], - }, - { - header: "Фактические расходы за {year} год", - accessorKey: "v_tys_rubley_fakticheskie_raskhody_za_2026_god", - columns: [ - { - header: "Итого: Поддержка", - accessorKey: - "v_tys_rubley_fakticheskie_raskhody_za_2026_god_itogopodderzhka", - columns: [ - { - header: "", - accessorKey: "data.fact.support.year", - columnLetter: "T", - size: 150, - filterFn: "contains", - }, - ], - muiTableHeadCellProps: { - sx: { - backgroundColor: "#FFFFFF", - color: "#000000", - }, - }, - }, - ], - }, - { - header: "Скорректированная смета расходов на {year} год", - accessorKey: - "v_tys_rubley_skorrektirovannaya_smeta_raskhodov_na_2026_god", - columns: [ { header: "IV квартал", accessorKey: - "v_tys_rubley_skorrektirovannaya_smeta_raskhodov_na_2026_god_iv_kvartal", + "field_skorrektirovannaya_smeta_raskhodov_na_2026_god_iv_kvartal", columns: [ { header: "", @@ -502,6 +458,12 @@ export const config = { }, }, ], + muiTableHeadCellProps: { + sx: { + backgroundColor: "#FFFFFF", + color: "#000000", + }, + }, }, ], muiTableHeadCellProps: { diff --git a/web/src/components/RealtimeTable/utils/form2SmetaConfig.test.js b/web/src/components/RealtimeTable/utils/form2SmetaConfig.test.js new file mode 100644 index 0000000..d0639be --- /dev/null +++ b/web/src/components/RealtimeTable/utils/form2SmetaConfig.test.js @@ -0,0 +1,45 @@ +import assert from 'node:assert/strict'; +import { readFileSync } from 'node:fs'; +import test from 'node:test'; +import { fileURLToPath } from 'node:url'; + +// FORM_2/SMETA.js импортирует '../columnColors' без расширения, поэтому node +// не может загрузить модуль напрямую — читаем файл как текст. +const configPath = fileURLToPath(new URL('../constants/FORM_2/SMETA.js', import.meta.url)); +const configSource = readFileSync(configPath, 'utf8'); + +const EXPECTED_LEAF_ORDER = [ + 'data.section_code', + 'data.name', + 'data.plan.support.q1', + 'data.plan.support.q2', + 'data.plan.support.q3', + 'data.plan.support.q4', + 'data.plan.support.year', + 'data.approved.support.q1', + 'data.approved.support.q2', + 'data.approved.support.q3', + 'data.approved.support.q4', + 'data.approved.support.year', + 'data.fact.support.q1', + 'data.fact.support.q2', + 'data.fact.support.q3', + 'data.fact.support.q4', + 'data.fact.support.year', + 'data.corrected.support.q2', + 'data.corrected.support.q3', + 'data.corrected.support.q4', +]; + +function extractLeafAccessorKeys(source) { + const matches = source.matchAll(/accessorKey:\s*"(data\.[^"]+)"/g); + return [...matches].map((m) => m[1]); +} + +test('Смета РФ: итоги групп и IV квартал скорректированной сметы идут в конце своих групп', () => { + assert.deepEqual(extractLeafAccessorKeys(configSource), EXPECTED_LEAF_ORDER); +}); + +test('Смета РФ: группы "В тыс. рублей" больше нет', () => { + assert.ok(!configSource.includes('В тыс. рублей'), 'заголовок "В тыс. рублей" не должен встречаться в конфиге'); +});