feat: секция «Обязательство и согласие» в командировке

Переименована по требованию кадров; так же подписана и в списке незаполненных полей.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Тимур Городецкий
2026-10-23 15:46:16 +05:00
parent 8d162db4ba
commit fa2e9593f1
3 changed files with 4 additions and 3 deletions
@@ -107,7 +107,8 @@
строку), итог числом — `TripEstimateTotal`. Просмотр/печать — таблица по статьям.
- **Комментарий** (с 10-23, `TripComment`, Note) — необязательное поле после итога сметы; в
просмотре пустой не показывается.
- **Обязательство** по авансовому отчёту (текст бланка) — флажок, без него не отправить.
- **Обязательство и согласие** (так названа секция с 10-23, по требованию кадров) — обязательство
по авансовому отчёту (текст бланка) и флажок согласия, без него не отправить.
- **Дата подачи** (`SubmitDate`, общий столбец сайта) — ставится сегодняшней, пока заявку
можно править (см. shared/submitDate.ts).
- **Подсветка незаполненных полей** — `FieldIssuesProvider` + правила в `validation.ts`.
@@ -5,7 +5,7 @@ import { ISectionProps, OBLIGATION_LABEL, OBLIGATION_TEXT } from '../model';
/** Обязательство по авансовому отчёту из бланка — без согласия заявку не отправить. */
export const ObligationSection: React.FC<ISectionProps> = ({ data, set }) => (
<CollapseSection title="Обязательство" icon="document">
<CollapseSection title="Обязательство и согласие" icon="document">
<p className={styles.text}>{OBLIGATION_TEXT}</p>
<FormField label="Подтверждение" htmlFor="TripObligationAccepted" required full>
<Checkbox
@@ -208,7 +208,7 @@ export function submitIssues(
}
issues.push(...estimateIssues(data.Estimate, data.Route));
if (!data.TripObligationAccepted) {
issues.push({ field: 'TripObligationAccepted', label: 'Обязательство', message: 'подтвердите согласие' });
issues.push({ field: 'TripObligationAccepted', label: 'Обязательство и согласие', message: 'подтвердите согласие' });
}
return issues;
}