mirror of
https://github.com/Sea-Haven-Industries/shoc-frontend-new.git
synced 2026-10-06 21:42:06 +00:00
35 lines
1.2 KiB
TypeScript
35 lines
1.2 KiB
TypeScript
import type { WorkOrderBoardCreatePayload } from "@/domain/work-orders/types/work-order-board";
|
|
import type { WorkOrderWizardDraft } from "@/domain/work-orders/types/work-order-wizard";
|
|
import { formatApptTimeValue } from "@/domain/work-orders/utils/wizard-date-utils";
|
|
|
|
/**
|
|
* Mutates `payload` with `vendorId` and, when applicable, single-day appt date/time.
|
|
* Board create rejects appointment fields without vendorId (`DispatchRequired`).
|
|
*/
|
|
export function assignWizardVendorApptFields(
|
|
payload: WorkOrderBoardCreatePayload,
|
|
draft: WorkOrderWizardDraft,
|
|
): void {
|
|
const vendorId = draft.vendorId.trim() ? Number(draft.vendorId) : NaN;
|
|
const hasVendor = Number.isFinite(vendorId) && vendorId > 0;
|
|
|
|
if (hasVendor) {
|
|
payload.vendorId = vendorId;
|
|
if (draft.technicianAssigned != null) {
|
|
payload.technicianAssigned = draft.technicianAssigned;
|
|
}
|
|
}
|
|
|
|
const apptTime = formatApptTimeValue(draft.apptStart, draft.apptEnd);
|
|
const isRange = draft.schedMode === "range";
|
|
|
|
if (hasVendor && (draft.scheduledOn || apptTime) && !draft.scheduleWeekOnly && !isRange) {
|
|
if (draft.scheduledOn) {
|
|
payload.apptDate = draft.scheduledOn;
|
|
}
|
|
|
|
if (apptTime) {
|
|
payload.apptTime = apptTime;
|
|
}
|
|
}
|
|
}
|