fix(dispatch): preserve return sources when restoring prearrangement drafts

This commit is contained in:
2026-10-03 15:57:53 +08:00
parent 6a135c3982
commit 9fa73f50d6
7 changed files with 107 additions and 9 deletions
@@ -12,6 +12,9 @@ export interface DispatchQuery {
}
export interface DispatchPalletCandidateDto {
sourceType?: 'INBOUND_PLAN' | 'RETURN_RECEIPT'
returnReceiptId?: string | null
returnReceiptNo?: string | null
planId?: string | null
planPalletId?: string | null
warehousePalletId?: string | null
@@ -60,6 +63,7 @@ export interface DispatchDraftDto { draftToken: string; containers?: DispatchDra
export interface PreArrangeDispatchPayload {
planPalletIds: string[]
returnReceiptIds?: string[]
fbaAppointmentNo?: string
fbaAppointmentStatus?: string
vehicleAppointmentStatus?: string
@@ -198,9 +202,14 @@ export async function preArrangeDispatch(payload: PreArrangeDispatchPayload) {
return unwrapApiResponse(response)
}
export async function lockDispatchDraftPallet(planPalletId: string, draftToken: string, draftContainerId?: string) {
function draftSource(selection: string) {
return selection.startsWith('RETURN:')
? { sourceType: 'RETURN_RECEIPT', returnReceiptId: selection.slice(7) }
: { planPalletId: selection }
}
export async function lockDispatchDraftPallet(selection: string, draftToken: string, draftContainerId?: string) {
const response = await http.post<ApiEnvelope<null>, ApiEnvelope<null>>(
'/platform/v1/last-leg/dispatches/draft-locks/lock', { planPalletId, draftToken, ...(draftContainerId ? { draftContainerId } : {}) },
'/platform/v1/last-leg/dispatches/draft-locks/lock', { ...draftSource(selection), draftToken, ...(draftContainerId ? { draftContainerId } : {}) },
)
return unwrapApiResponse(response)
}
@@ -218,9 +227,9 @@ export async function deleteDispatchDraftContainer(draftToken: string, container
return unwrapApiResponse(response)
}
export async function unlockDispatchDraftPallet(planPalletId: string, draftToken: string) {
export async function unlockDispatchDraftPallet(selection: string, draftToken: string) {
const response = await http.post<ApiEnvelope<null>, ApiEnvelope<null>>(
'/platform/v1/last-leg/dispatches/draft-locks/unlock', { planPalletId, draftToken },
'/platform/v1/last-leg/dispatches/draft-locks/unlock', { ...draftSource(selection), draftToken },
)
return unwrapApiResponse(response)
}