This commit is contained in:
2026-08-07 18:44:58 +08:00
parent dd7aa0e4cf
commit aa6c349fce
9 changed files with 297 additions and 124 deletions
@@ -88,8 +88,6 @@ test('sends backend-required channel, pricing, customs, destination and cargo fi
assert.match(storeSource, /destinationWarehouseId: draft\.destinationType === 'PRIVATE' \? undefined : draft\.destinationWarehouseId/)
assert.match(storeSource, /draft\.pickupMethod === 'PICKUP'.*draft\.shipperPartySnapshot/s)
assert.match(storeSource, /draft\.destinationType === 'PRIVATE'.*draft\.consigneePartySnapshot/s)
for (const dimension of ['lengthCm', 'widthCm', 'heightCm']) assert.match(storeSource, new RegExp(`${dimension}: item\\.${dimension}`))
assert.match(storeSource, /inferCargoBoxSizeType\(item\.lengthCm, item\.widthCm, item\.heightCm\)/)
})
test('separates domestic receiving warehouses from public destinations', () => {
+27 -7
View File
@@ -27,7 +27,7 @@ import type { MerchantTenantStatus } from '@/modules/tenant-management/public'
import type { PlatformReceivingWarehouse, PlatformReceivingWarehouseSnapshot } from '@chongchong/shared'
import type { FirstLegPartySnapshot } from '@/modules/first-leg/data/firstLegParties'
import type { FirstLegOrder, FirstLegOrderDraft, FirstLegOrderTimelineItem } from '@/modules/first-leg/types/firstLegOrder'
import { canClientEditFirstLegOrder, getFirstLegStatusLabel, inferCargoBoxSizeType } from '@/modules/first-leg/utils/firstLegOrder'
import { canClientEditFirstLegOrder, getFirstLegStatusLabel } from '@/modules/first-leg/utils/firstLegOrder'
import { loadAllWarehouseRecords } from '@/modules/first-leg/utils/warehousePagination'
export type ClientWarehouseType = 'DOMESTIC' | 'FBA' | 'OVERSEAS'
@@ -107,6 +107,7 @@ function savePayload(draft: FirstLegOrderDraft, warehouse: ClientWarehouse, cust
cargoName: item.cargoNameCn,
cargoNameEn: item.cargoNameEn || undefined,
hsCode: item.hsCode || undefined,
customsHsCode: item.customsHsCode || undefined,
packageType: item.packageType,
packageCount: item.packageCount,
grossWeightKg: item.grossWeightKg,
@@ -121,6 +122,19 @@ function savePayload(draft: FirstLegOrderDraft, warehouse: ClientWarehouse, cust
skuNo: item.sku || undefined,
upcNo: item.upc || undefined,
totalQuantity: item.pieces,
unitsPerPackage: item.unitsPerPackage || undefined,
netWeightKg: item.netWeightKg || undefined,
unitDeclaredValue: item.unitDeclaredValue || undefined,
material: item.material || undefined,
usage: item.usage || undefined,
model: item.model || undefined,
brand: item.brand || undefined,
productLengthCm: item.productLengthCm || undefined,
productWidthCm: item.productWidthCm || undefined,
productHeightCm: item.productHeightCm || undefined,
shipmentId: item.shipmentId || undefined,
referenceId: item.referenceId || undefined,
productImageFileId: item.productImageFileId || undefined,
})),
pickupMethod: draft.pickupMethod,
receivingWarehouseId: warehouse.id,
@@ -133,8 +147,8 @@ function savePayload(draft: FirstLegOrderDraft, warehouse: ClientWarehouse, cust
customsInspection: draft.customsInspection,
destinationType: draft.destinationType,
amazonWarehouseCode: draft.destinationType === 'FBA' ? draft.amazonWarehouseCode || undefined : undefined,
shipmentId: draft.destinationType === 'FBA' ? draft.shipmentId || undefined : undefined,
referenceId: draft.referenceNo || undefined,
shipmentId: draft.destinationType === 'FBA' ? draft.items.find((item) => item.shipmentId)?.shipmentId || undefined : undefined,
referenceId: draft.items.find((item) => item.referenceId)?.referenceId || draft.referenceNo || undefined,
}
}
@@ -275,13 +289,19 @@ function mapOrder(order: MerchantFirstLegOrder, warehouses: PlatformReceivingWar
status: clientStatus(order.status), version: order.version ?? 0,
items: (detail?.cargoes ?? []).map((item) => ({
id: String(item.id), sku: item.skuNo ?? '', upc: item.upcNo ?? '', cargoNameCn: item.cargoName, cargoNameEn: item.cargoNameEn ?? '',
productImageFileId: item.productImageFileId == null ? '' : String(item.productImageFileId),
productImageName: '', productImagePreviewUrl: '', productImageUploading: false, productImageError: '',
customsHsCode: item.customsHsCode ?? '', lengthCm: item.lengthCm ?? 0, widthCm: item.widthCm ?? 0,
heightCm: item.heightCm ?? 0, unitsPerPackage: item.unitsPerPackage ?? 1,
pieces: item.totalQuantity ?? item.packageCount, packageCount: item.packageCount, grossWeightKg: item.grossWeightKg,
volumeCbm: item.volumeCbm,
boxSizeType: inferCargoBoxSizeType(item.lengthCm, item.widthCm, item.heightCm),
lengthCm: item.lengthCm ?? 0, widthCm: item.widthCm ?? 0, heightCm: item.heightCm ?? 0,
containerType: '', containerCount: 0, remark: item.cargoRemark ?? '',
volumeCbm: item.volumeCbm, containerType: '', containerCount: 0, remark: item.cargoRemark ?? '',
packageType: item.packageType, hsCode: item.hsCode ?? '', declaredValue: item.declaredValue ?? 0,
currency: item.currency ?? 'USD', dangerousGoods: item.dangerousGoods ?? false,
netWeightKg: item.netWeightKg ?? 0, unitDeclaredValue: item.unitDeclaredValue ?? 0,
material: item.material ?? '', usage: item.usage ?? '', model: item.model ?? '', brand: item.brand ?? '',
productLengthCm: item.productLengthCm ?? 0, productWidthCm: item.productWidthCm ?? 0,
productHeightCm: item.productHeightCm ?? 0, shipmentId: item.shipmentId ?? order.shipmentId ?? '',
referenceId: item.referenceId ?? order.referenceId ?? '',
})),
timeline: detail ? timeline(detail) : [], businessSummary: businessSummary(), createdAt: order.createdAt, updatedAt: order.updatedAt,
tradeTerm: order.tradeTerm ?? '', destinationCountryCode: order.destinationCountryCode,