48 lines
1.2 KiB
TypeScript
48 lines
1.2 KiB
TypeScript
import { ViewData } from "../contracts/view-data/ViewData";
|
|
|
|
|
|
export interface BillingViewData extends ViewData {
|
|
paymentMethods: Array<{
|
|
id: string;
|
|
type: 'card' | 'bank' | 'sepa';
|
|
last4: string;
|
|
brand?: string;
|
|
isDefault: boolean;
|
|
expiryMonth?: number;
|
|
expiryYear?: number;
|
|
bankName?: string;
|
|
displayLabel: string;
|
|
expiryDisplay: string | null;
|
|
}>;
|
|
invoices: Array<{
|
|
id: string;
|
|
invoiceNumber: string;
|
|
date: string;
|
|
dueDate: string;
|
|
amount: number;
|
|
vatAmount: number;
|
|
totalAmount: number;
|
|
status: 'paid' | 'pending' | 'overdue' | 'failed';
|
|
description: string;
|
|
sponsorshipType: 'league' | 'team' | 'driver' | 'race' | 'platform';
|
|
pdfUrl: string;
|
|
formattedTotalAmount: string;
|
|
formattedVatAmount: string;
|
|
formattedDate: string;
|
|
isOverdue: boolean;
|
|
}>;
|
|
stats: {
|
|
totalSpent: number;
|
|
pendingAmount: number;
|
|
nextPaymentDate: string;
|
|
nextPaymentAmount: number;
|
|
activeSponsorships: number;
|
|
averageMonthlySpend: number;
|
|
formattedTotalSpent: string;
|
|
formattedPendingAmount: string;
|
|
formattedNextPaymentAmount: string;
|
|
formattedAverageMonthlySpend: string;
|
|
formattedNextPaymentDate: string;
|
|
};
|
|
}
|