mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-09-07 22:25:42 +00:00
CAS total
This commit is contained in:
@@ -424,7 +424,10 @@ export class BookingsService {
|
|||||||
|
|
||||||
const departureStation = booking.originYard?.label ?? booking.originYard?.code ?? '-';
|
const departureStation = booking.originYard?.label ?? booking.originYard?.code ?? '-';
|
||||||
const arrivalStation = booking.destinationYard?.label ?? booking.destinationYard?.code ?? '-';
|
const arrivalStation = booking.destinationYard?.label ?? booking.destinationYard?.code ?? '-';
|
||||||
const cargoName = booking.cargoType?.cargoTypeName ?? booking.cargoFreeText ?? '-';
|
// Container bookings carry no cargo type or free text — name the freight type
|
||||||
|
// rather than printing a dash in the Cargo Name column.
|
||||||
|
const cargoName =
|
||||||
|
booking.cargoType?.cargoTypeName ?? booking.cargoFreeText ?? booking.freightType ?? '-';
|
||||||
const currency = booking.paymentCurrency ?? 'ETB';
|
const currency = booking.paymentCurrency ?? 'ETB';
|
||||||
const totalAmount = Number(booking.adjustedTotalAmount ?? booking.totalAmount) || 0;
|
const totalAmount = Number(booking.adjustedTotalAmount ?? booking.totalAmount) || 0;
|
||||||
const prices = this.splitAmountAcrossWagons(
|
const prices = this.splitAmountAcrossWagons(
|
||||||
@@ -467,6 +470,28 @@ export class BookingsService {
|
|||||||
)
|
)
|
||||||
.join('');
|
.join('');
|
||||||
|
|
||||||
|
// The totals belong in <tbody>, not <tfoot>: the Chromium-less fallback
|
||||||
|
// renderer only parses tbody rows, so a <tfoot> silently drops every footer
|
||||||
|
// figure from the printed sheet.
|
||||||
|
const totalsRow = `<tr class="totals">
|
||||||
|
<td>TOT</td>
|
||||||
|
<td>${wagons.length} ${pendingWagons ? 'received lines' : 'wagons'}</td>
|
||||||
|
<td>${
|
||||||
|
pendingWagons
|
||||||
|
? 'pending marshalling'
|
||||||
|
: `full ${fullWagons} / empty ${wagons.length - fullWagons}`
|
||||||
|
}</td>
|
||||||
|
<td class="num">${num(totals.tare, 2)}</td>
|
||||||
|
<td class="num">${num(totals.length)}</td>
|
||||||
|
<td class="num">${num(totals.capacity)}</td>
|
||||||
|
<td></td>
|
||||||
|
<td>Gross ${num(totals.tare + totals.load)} T</td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td></td>
|
||||||
|
<td class="num">${money(totalAmount)}</td>
|
||||||
|
</tr>`;
|
||||||
|
|
||||||
return `<!doctype html>
|
return `<!doctype html>
|
||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
@@ -490,7 +515,7 @@ export class BookingsService {
|
|||||||
th { background: #f8fafc; color: #475569; text-align: left; }
|
th { background: #f8fafc; color: #475569; text-align: left; }
|
||||||
th, td { border: 1px solid #cbd5e1; padding: 5px 6px; font-size: 9.5px; vertical-align: top; }
|
th, td { border: 1px solid #cbd5e1; padding: 5px 6px; font-size: 9.5px; vertical-align: top; }
|
||||||
.num { text-align: right; }
|
.num { text-align: right; }
|
||||||
tfoot td { background: #f8fafc; font-weight: 700; }
|
tr.totals td { background: #f8fafc; font-weight: 700; }
|
||||||
.notice { margin-top: 10px; border-left: 4px solid #0f766e; background: #f0fdfa; padding: 8px 10px; font-size: 10px; color: #134e4a; }
|
.notice { margin-top: 10px; border-left: 4px solid #0f766e; background: #f0fdfa; padding: 8px 10px; font-size: 10px; color: #134e4a; }
|
||||||
.signatures { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; margin-top: 34px; }
|
.signatures { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; margin-top: 34px; }
|
||||||
.line { border-top: 1px solid #334155; padding-top: 7px; font-size: 9px; color: #475569; min-height: 34px; }
|
.line { border-top: 1px solid #334155; padding-top: 7px; font-size: 9px; color: #475569; min-height: 34px; }
|
||||||
@@ -538,21 +563,8 @@ export class BookingsService {
|
|||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
${rows}
|
${rows}
|
||||||
|
${totalsRow}
|
||||||
</tbody>
|
</tbody>
|
||||||
<tfoot>
|
|
||||||
<tr>
|
|
||||||
<td colspan="3">${
|
|
||||||
pendingWagons
|
|
||||||
? `Received lines: ${wagons.length} — wagons pending marshalling`
|
|
||||||
: `Total wagons: ${wagons.length} (full ${fullWagons} / empty ${wagons.length - fullWagons})`
|
|
||||||
}</td>
|
|
||||||
<td class="num">${num(totals.tare, 2)}</td>
|
|
||||||
<td class="num">${num(totals.length)}</td>
|
|
||||||
<td class="num">${num(totals.capacity)}</td>
|
|
||||||
<td colspan="5">Gross weight (tare + load): ${num(totals.tare + totals.load)} T</td>
|
|
||||||
<td class="num">${money(totalAmount)}</td>
|
|
||||||
</tr>
|
|
||||||
</tfoot>
|
|
||||||
</table>
|
</table>
|
||||||
|
|
||||||
<div class="notice">
|
<div class="notice">
|
||||||
|
|||||||
Reference in New Issue
Block a user