fix(fleet): retain unavailable source cost shares for multi-stop trips
This commit is contained in:
@@ -10,11 +10,11 @@ function sample() {
|
||||
return { marker, runId: 'current-run', tripNo, warehouseId: '92', status: 'DEPART_AND_HANDOVER_VERIFIED', handoverNo: 'HO-CURRENT',
|
||||
departure: { tripNo, status: 'IN_TRANSIT', departedAt, shippedPackages: 14 },
|
||||
immutableDeparture: { action: 'DEPART', recordVersion: '5', snapshot: {
|
||||
trip: { tripNo, warehouseId: '92', departedAt, remark: marker }, confirmedLoad: { manifestHash: 'original-load',
|
||||
pallets: [{ warehousePalletId: '1', palletSpaces: 1 }, { warehousePalletId: '2', palletSpaces: 1 }],
|
||||
cargo: [{ dispatchNo: 'DP-OWN', dispatchItemId: '1', customerId: '9', warehousePalletId: '1', packages: 10 }, { dispatchNo: 'DP-EXT', dispatchItemId: '2', customerId: '9', warehousePalletId: '2', packages: 4 }] },
|
||||
trip: { tripNo, warehouseId: '92', departedAt, remark: marker, stops: [{ name: 'origin' }, { destinationKey: 'FBA:A' }, { destinationKey: 'FBA:B' }] }, confirmedLoad: { manifestHash: 'original-load',
|
||||
pallets: [{ warehousePalletId: '1', palletSpaces: 1, deliveryIndex: 1 }, { warehousePalletId: '2', palletSpaces: 1, deliveryIndex: 1 }],
|
||||
cargo: [{ dispatchNo: 'DP-OWN', dispatchItemId: '1', customerId: '9', warehousePalletId: '1', packages: 10, destinationKey: 'FBA:A' }, { dispatchNo: 'DP-EXT', dispatchItemId: '2', customerId: '9', warehousePalletId: '2', packages: 4, destinationKey: 'FBA:A' }] },
|
||||
externalBookings: [{ bookingNo: 'FB-EXT', status: 'BOUND', dispatchNo: 'DP-EXT', customerId: '9', agreedAmount: '30.00', cargo: { currency: 'CNY' }, receipt: { source: { receivedPackages: 4, pallets: [{ warehousePalletId: '2', packages: 4 }] } } }] } },
|
||||
costs: { marker, tripNo, status: 'VERIFIED', expected: { finalCny: '100.03', usd: '13.07', allocationMethod: 'SAME_ROUTE_PALLET_SPACES' }, shares: [
|
||||
costs: { marker, tripNo, status: 'VERIFIED', expected: { finalCny: '100.03', usd: '13.07', allocationMethod: 'SAME_ROUTE_PALLET_SPACES', allocationStatus: 'AVAILABLE' }, shares: [
|
||||
{ businessNo: 'DP-OWN', sourceType: 'OWN', dispatchNo: 'DP-OWN', palletSpaces: 1, warehousePalletIds: ['1'] },
|
||||
{ businessNo: 'FB-EXT', sourceType: 'EXTERNAL', dispatchNo: 'DP-EXT', palletSpaces: 1, warehousePalletIds: ['2'] }] } }
|
||||
}
|
||||
@@ -30,6 +30,14 @@ test('adapts actual C artifact with independent physical cargo and exact cent cu
|
||||
{ currency: 'USD', directCost: 13.07, ownCost: 6.54, externalCost: 6.53 }] })
|
||||
assert.equal(f.stage, 'CURRENT_RUN_DEPARTED'); assert.equal(f.departureVerified, true)
|
||||
})
|
||||
test('multi-stop costs retain full trip amounts and never infer source shares', () => {
|
||||
const f = sample(), load = f.immutableDeparture.snapshot.confirmedLoad
|
||||
load.pallets[1].deliveryIndex = 2; load.cargo[1].destinationKey = 'FBA:B'
|
||||
Object.assign(f.costs.expected, { allocationMethod: null, allocationStatus: 'UNAVAILABLE', allocationBlockReason: '各票卸货站不同,暂不可按同路线托位自动分摊' })
|
||||
assert.deepEqual(convert(f).expected.costs, [{ currency: 'CNY', directCost: 100.03, ownCost: null, externalCost: null }, { currency: 'USD', directCost: 13.07, ownCost: null, externalCost: null }])
|
||||
f.costs.expected.allocationMethod = 'SAME_ROUTE_PALLET_SPACES'
|
||||
assert.throws(() => convert(f))
|
||||
})
|
||||
for (const [name, mutate] of [
|
||||
['stale marker', f => { f.marker = 'OLD' }], ['stale run', f => { f.runId = 'old' }],
|
||||
['unverified costs', f => { f.costs.status = 'CHECKING' }], ['wrong currency amount', f => { f.costs.expected.usd = '0' }],
|
||||
|
||||
Reference in New Issue
Block a user