Files
admin-web/src/modules/unified-orders/measurementReviewTasks.ts
T
2026-10-20 17:24:50 +08:00

67 lines
3.1 KiB
TypeScript

import type { InboundOrderSummary } from '@/modules/inbounds'
import type { UnifiedOrderResource } from './api/unifiedOrders'
/** 将统一订单查询的审核待办映射到现有测量审核操作,保留原始客户、入库单与版本。 */
export function toMeasurementReviewTask(row: UnifiedOrderResource): InboundOrderSummary {
if (row.inboundId == null) throw new Error('测量审核订单缺少入库单标识,请刷新后重试')
return {
id: String(row.inboundId),
tenantId: String(row.tenantId),
orderId: String(row.orderId),
orderNo: row.orderNo,
inboundCode: row.inboundCode,
processStatus: 'MEASURE_PENDING',
orderStatusSnapshot: row.internalOrderStatus,
measureReviewStatus: row.measurement?.reviewStatus ?? null,
feeStatus: null,
feeReviewStatus: row.feeReviewStatus,
notificationStatus: null,
version: row.inboundVersion,
expectedArrivalAt: row.expectedArrivalAt,
customerId: row.customerId == null ? null : String(row.customerId),
customerName: row.customerName,
companyId: null,
companyName: row.companyName ?? null,
warehouseId: row.receivingWarehouseId == null ? null : String(row.receivingWarehouseId),
warehouseName: row.receivingWarehouseName,
deliveryWarehouseId: row.destinationWarehouseId == null ? null : String(row.destinationWarehouseId),
deliveryWarehouseName: row.destinationWarehouseName,
businessType: row.businessType ?? null,
fulfillmentType: row.fulfillmentType ?? null,
channelCode: row.channelCode,
channelName: row.channelName,
taxMode: row.taxMode ?? null,
containerMode: null,
customsInspection: row.customsInspection ?? null,
destinationType: row.destinationType ?? null,
destinationWarehouseId: row.destinationWarehouseId == null ? null : String(row.destinationWarehouseId),
destinationCode: null,
destinationName: row.destinationWarehouseName,
holdFlag: row.holdFlag,
currentHoldReason: row.currentHoldReason,
totalPackageCount: row.totalPackageCount,
actualGrossWeightKg: row.measurement?.actualGrossWeightKg ?? row.actualGrossWeightKg,
actualNetWeightKg: row.totalNetWeightKg,
actualVolumeCbm: row.measurement?.actualVolumeCbm ?? row.actualVolumeCbm,
volumeWeightKg: row.volumetricWeightKg,
chargeableWeightKg: row.measurement?.chargeableWeightKg ?? null,
chargeableVolumeCbm: row.chargeableVolumeCbm,
palletCount: row.totalPalletCount,
locationCodes: row.locationCodes,
measureCompletedAt: row.measurement?.completedAt ?? row.measurementCompletedAt,
inboundedAt: row.inboundCompletedAt,
expressCompanyCode: null,
expressCompanyName: row.expressCompany,
expressTrackingNo: row.expressTrackingNo,
loadingStatus: row.transport?.loadingStatus ?? null,
containerNo: row.transport?.containerNo ?? null,
cabinetNo: row.transport?.cabinetNo ?? null,
vesselName: row.transport?.vesselName ?? null,
voyageNo: row.transport?.voyageNo ?? null,
sailingAt: row.transport?.effectiveSailingAt ?? null,
portArrivalAt: row.transport?.effectivePortArrivalAt ?? null,
createdAt: row.createdAt,
updatedAt: row.updatedAt,
}
}