import type { HeaderFieldOut, StatementOut } from '../../types/api'; const HEADER_FIELDS = ['inn', 'report_date', 'units'] as const; /** * Счётчики над таблицей формы: «изменённых» — правки аналитика (ячейки, поля шапки, наименование организации); * «требующих проверки» — то же, что подсвечено на экране: ячейка с `needs_review` и поле из `needs_review_fields` * (решает ядро), ещё не подтверждённые и не исправленные. Достроенные сервером пустые ячейки не считаются. */ export function countReviewValues(statement: StatementOut): { changed: number; needsReview: number } { let changed = 0; let needsReview = 0; for (const line of statement.lines) { for (const c of line.values) { if (c.is_modified) changed++; else if (c.needs_review && !c.is_confirmed) needsReview++; } } const header = statement.header; for (const key of HEADER_FIELDS) { if (header[key].modified) changed++; } if (header.organization_name_modified) changed++; for (const name of header.needs_review_fields ?? []) { const field: HeaderFieldOut | undefined = (HEADER_FIELDS as readonly string[]).includes(name) ? header[name as (typeof HEADER_FIELDS)[number]] : undefined; if (!field?.modified && !field?.verified) needsReview++; } return { changed, needsReview }; }