mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-08-27 21:20:57 +00:00
Export Load on train
This commit is contained in:
@@ -387,7 +387,9 @@ export class WarehouseFeeService {
|
||||
// PER_TON (tonnes) and PER_ITEM (piece count) both read the cargo total,
|
||||
// which is stored in the cargo's own unit of measure.
|
||||
const cargoQuantity = Math.max(0, Number(item.cargoQuantity) || 0);
|
||||
const quantity = basis === 'PER_CONTAINER' ? containerCount : cargoQuantity;
|
||||
// Double handling applies to IMPORT only — no charge for export/domestic.
|
||||
const isImport = (item.tradeDirection ?? '').toUpperCase() === 'IMPORT';
|
||||
const quantity = !isImport ? 0 : basis === 'PER_CONTAINER' ? containerCount : cargoQuantity;
|
||||
const sourceAmount = Math.round(rate * quantity * 100) / 100;
|
||||
const amount = ruleCurrency ? await this.convertAmount(sourceAmount, ruleCurrency, targetCurrency) : 0;
|
||||
const convertedRate = ruleCurrency ? await this.convertAmount(rate, ruleCurrency, targetCurrency) : 0;
|
||||
@@ -455,6 +457,32 @@ export class WarehouseFeeService {
|
||||
);
|
||||
if (!leg) throw new NotFoundException(`Last-mile record ${lastMileId} not found`);
|
||||
|
||||
// Truck detention applies to IMPORT only — no charge for export/domestic.
|
||||
if ((leg.tradeDirection ?? '').toUpperCase() !== 'IMPORT') {
|
||||
const cur = this.normalizeCurrency(billingCurrency);
|
||||
return {
|
||||
ruleType: 'TRUCK_DETENTION_FEE',
|
||||
basis: null,
|
||||
ruleId: null,
|
||||
ruleName: null,
|
||||
freeDays: 0,
|
||||
ratePerDay: 0,
|
||||
currency: cur,
|
||||
ruleCurrency: null,
|
||||
billingCurrency: cur,
|
||||
startDate: leg.arrivedAt ? new Date(leg.arrivedAt).toISOString() : null,
|
||||
endDate: (leg.deliveredAt ? new Date(leg.deliveredAt) : new Date()).toISOString(),
|
||||
endIsOpen: !leg.deliveredAt,
|
||||
elapsedDays: 0,
|
||||
chargeableDays: 0,
|
||||
containerCount: 0,
|
||||
billableUnits: 0,
|
||||
amount: 0,
|
||||
tiers: [],
|
||||
groups: [],
|
||||
};
|
||||
}
|
||||
|
||||
// Group the leg's vehicles by type so each truck type is billed by its own
|
||||
// matching rule (rates differ by truck type). Falls back to one untyped group.
|
||||
const groupRows: Array<{ vehicleType: string | null; truckCount: number | string }> =
|
||||
|
||||
Reference in New Issue
Block a user