fix: дата подачи — день отправки, а не сохранения черновика
В подборе и реферале черновик хранил дату первого сохранения, и через несколько дней заявка уходила на согласование со старой датой подачи. Теперь при отправке дата подачи всегда сегодняшняя, а открытый черновик сразу показывает сегодня (как уже было в объяснительной по СКУД). В реферале дату больше нельзя поправить руками. Общая логика — shared/submitDate. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
import { REQUEST_STATUS } from './approval/models/statuses';
|
||||
import { submitDateOnOpen, submitDateOnSave, todaySubmitDate } from './submitDate';
|
||||
|
||||
const OLD_DATE = '2026-09-01';
|
||||
|
||||
describe('submitDate', () => {
|
||||
it('отправка на согласование — сегодня, даже если черновик сохранён раньше', () => {
|
||||
expect(submitDateOnSave(REQUEST_STATUS.onApproval, OLD_DATE)).toBe(todaySubmitDate());
|
||||
expect(submitDateOnSave(REQUEST_STATUS.queued, OLD_DATE)).toBe(todaySubmitDate());
|
||||
});
|
||||
|
||||
it('черновик хранит дату с экрана', () => {
|
||||
expect(submitDateOnSave(REQUEST_STATUS.draft, OLD_DATE)).toBe(OLD_DATE);
|
||||
});
|
||||
|
||||
it('открыли черновик или доработку — сегодня, отправленную — как подали', () => {
|
||||
expect(submitDateOnOpen(REQUEST_STATUS.draft, OLD_DATE)).toBe(todaySubmitDate());
|
||||
expect(submitDateOnOpen(REQUEST_STATUS.returned, OLD_DATE)).toBe(todaySubmitDate());
|
||||
expect(submitDateOnOpen(REQUEST_STATUS.onApproval, OLD_DATE)).toBe(OLD_DATE);
|
||||
});
|
||||
});
|
||||
@@ -0,0 +1,30 @@
|
||||
import { REQUEST_STATUS, isEditableStatus } from './approval/models/statuses';
|
||||
|
||||
function pad2(n: number): string {
|
||||
return n < 10 ? `0${n}` : `${n}`;
|
||||
}
|
||||
|
||||
/** Сегодняшняя дата по местному времени, YYYY-MM-DD (формат input type=date). */
|
||||
export function todaySubmitDate(): string {
|
||||
const now = new Date();
|
||||
return `${now.getFullYear()}-${pad2(now.getMonth() + 1)}-${pad2(now.getDate())}`;
|
||||
}
|
||||
|
||||
/**
|
||||
* «Дата подачи» для формы, открытой на редактирование. Черновик и доработку
|
||||
* подают заново — на экране сегодняшняя дата, а не дата первого сохранения;
|
||||
* у уже отправленной заявки остаётся та, с которой её подали.
|
||||
*/
|
||||
export function submitDateOnOpen(status: string, savedDate: string): string {
|
||||
return isEditableStatus(status) ? todaySubmitDate() : savedDate;
|
||||
}
|
||||
|
||||
/**
|
||||
* «Дата подачи» для записи в SharePoint из формы подачи. Любое сохранение кроме
|
||||
* черновика — это отправка («На согласовании» или «Ждёт очереди», см.
|
||||
* initialSubmitStatus): дата всегда сегодняшняя — форму могли открыть вчера, а
|
||||
* черновик сохранить неделю назад. Черновик хранит то, что на экране.
|
||||
*/
|
||||
export function submitDateOnSave(status: string, currentDate: string): string {
|
||||
return status === REQUEST_STATUS.draft ? currentDate : todaySubmitDate();
|
||||
}
|
||||
Reference in New Issue
Block a user