mirror of
https://github.com/Tria-plc/edr-platform.git
synced 2026-09-07 08:25:43 +00:00
Payment discrepancy fixes
This commit is contained in:
@@ -960,7 +960,9 @@ export class ReportsService {
|
|||||||
|
|
||||||
const isPackage = !!(b as any).package;
|
const isPackage = !!(b as any).package;
|
||||||
const effectiveActualMinor = isPackage ? actualMinor * 2 : actualMinor;
|
const effectiveActualMinor = isPackage ? actualMinor * 2 : actualMinor;
|
||||||
const effectiveVarianceMinor = effectiveActualMinor - paidMinor;
|
// actualMinor is in cents; paidMinor (PaymentIntent.amountMinor) is a Float in full units — convert to cents before comparing
|
||||||
|
const paidMinorCents = Math.round(paidMinor * 100);
|
||||||
|
const effectiveVarianceMinor = effectiveActualMinor - paidMinorCents;
|
||||||
|
|
||||||
const breakdown = b.seats.map(s => ({
|
const breakdown = b.seats.map(s => ({
|
||||||
passengerName: s.passengerName ?? '—',
|
passengerName: s.passengerName ?? '—',
|
||||||
@@ -985,7 +987,7 @@ export class ReportsService {
|
|||||||
varianceMinor: effectiveVarianceMinor,
|
varianceMinor: effectiveVarianceMinor,
|
||||||
breakdown,
|
breakdown,
|
||||||
};
|
};
|
||||||
}).filter(r => r.varianceMinor > 0 && r.paidMinor > 0);
|
}).filter(r => r.varianceMinor > 0);
|
||||||
|
|
||||||
if (params.search?.trim()) {
|
if (params.search?.trim()) {
|
||||||
const q = params.search.trim().toUpperCase();
|
const q = params.search.trim().toUpperCase();
|
||||||
|
|||||||
@@ -86,9 +86,9 @@ function fmtMinor(minor: number) {
|
|||||||
return `ETB ${(minor / 100).toLocaleString('en-US', { minimumFractionDigits: 2 })}`;
|
return `ETB ${(minor / 100).toLocaleString('en-US', { minimumFractionDigits: 2 })}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
// paidMinor from PaymentIntent.amountMinor is a Float stored as full units (not cents)
|
// paidMinor from PaymentIntent.amountMinor is converted to cents server-side before being returned
|
||||||
function fmtPaid(amount: number) {
|
function fmtPaid(amount: number) {
|
||||||
return `ETB ${amount.toLocaleString('en-US', { minimumFractionDigits: 2 })}`;
|
return `ETB ${(amount / 100).toLocaleString('en-US', { minimumFractionDigits: 2 })}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
function downloadCsv(csv: string, filename: string) {
|
function downloadCsv(csv: string, filename: string) {
|
||||||
|
|||||||
@@ -66,7 +66,7 @@ const navigationSections: { title: string; items: NavItem[] }[] = [
|
|||||||
{ name: 'Tickets', href: '/tickets', icon: FileText, permission: PERMS.tickets.view },
|
{ name: 'Tickets', href: '/tickets', icon: FileText, permission: PERMS.tickets.view },
|
||||||
{ name: 'Boarding', href: '/boarding', icon: LogIn, permission: PERMS.tickets.view },
|
{ name: 'Boarding', href: '/boarding', icon: LogIn, permission: PERMS.tickets.view },
|
||||||
{ name: 'Luggage', href: '/excess-baggage', icon: Banknote, permission: PERMS.bookings.view },
|
{ name: 'Luggage', href: '/excess-baggage', icon: Banknote, permission: PERMS.bookings.view },
|
||||||
{ name: 'Discrepancy', href: '/discrepancy', icon: Layers, permission: PERMS.seats.manage },
|
// { name: 'Discrepancy', href: '/discrepancy', icon: Layers, permission: PERMS.seats.manage },
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user