Перенесён диапазон arm-web 8345f5e..a3c0010 (3 коммитов, 22 файлов набора синхронизации) скриптом docs/scripts/sync-web.sh. После переноса web/ и arm-web@test идентичны по набору. Коммиты arm-web: - ff1e45c file id as option value for react rendering - 0242486 fix(#49): зелёный make check и исправления после ревью (AURORA-144) - 0fdbd80 feat: add comments frontend, checklist modal, files delete, select options in document review Co-Authored-By: sync-web.sh <noreply@aepif.ru>
32 lines
1.5 KiB
TypeScript
32 lines
1.5 KiB
TypeScript
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 };
|
||
}
|