92 lines
No EOL
2.2 KiB
TypeScript
92 lines
No EOL
2.2 KiB
TypeScript
export interface Transaction {
|
|
id?: string;
|
|
date: Date;
|
|
description: string;
|
|
amount: number; // Personal portion (after business split) in CAD
|
|
totalAmount?: number; // Total original amount in CAD
|
|
businessAmount?: number; // Business portion in CAD
|
|
businessPercentage?: number; // Percentage attributed to business (0-100)
|
|
originalAmount?: number; // Original amount before conversion
|
|
originalCurrency?: string; // Original currency (CAD, EUR, etc.)
|
|
currency?: string; // Current/display currency (for backward compatibility)
|
|
category: string;
|
|
type: "recurring" | "one-time";
|
|
program?: string;
|
|
status?: "actual" | "committed" | "projected";
|
|
fundType?: "restricted" | "unrestricted";
|
|
frequency?: "weekly" | "biweekly" | "monthly" | "quarterly" | "custom";
|
|
customMonths?: number;
|
|
endDate?: Date;
|
|
probability: number;
|
|
isConfirmed: boolean;
|
|
isTest?: boolean;
|
|
notes?: string;
|
|
projectedDate?: Date;
|
|
runningBalance?: number;
|
|
}
|
|
|
|
export interface RevenueOpportunity {
|
|
_id?: string;
|
|
id?: string;
|
|
source: string;
|
|
amount: number;
|
|
probability: number;
|
|
targetDate: Date;
|
|
stage: string;
|
|
notes?: string;
|
|
createdAt?: Date;
|
|
updatedAt?: Date;
|
|
}
|
|
|
|
export interface CashFlowProjection {
|
|
date: Date;
|
|
balance: number;
|
|
inflow: number;
|
|
outflow: number;
|
|
netFlow: number;
|
|
projectedBalance: number;
|
|
}
|
|
|
|
export interface RunwayScenarios {
|
|
conservative: number;
|
|
realistic: number;
|
|
optimistic: number;
|
|
cashOnly: number;
|
|
}
|
|
|
|
export interface CashPosition {
|
|
balance: number;
|
|
totalInflow: number;
|
|
totalOutflow: number;
|
|
netFlow: number;
|
|
}
|
|
|
|
export interface TransactionForecast {
|
|
month: Date;
|
|
recurring: Transaction[];
|
|
oneTime: Transaction[];
|
|
pipeline: Transaction[];
|
|
totalInflow: number;
|
|
totalOutflow: number;
|
|
runningBalance: number;
|
|
}
|
|
|
|
export interface CombinedCashFlow {
|
|
historical: CashFlowProjection[];
|
|
projected: CashFlowProjection[];
|
|
combined: CashFlowProjection[];
|
|
currentBalanceIndex: number;
|
|
}
|
|
|
|
export interface AffordabilityCheck {
|
|
canAfford: boolean;
|
|
currentAvailable?: number;
|
|
newBalance?: number;
|
|
currentRunwayWeeks?: number;
|
|
newRunwayWeeks?: number;
|
|
riskLevel?: string;
|
|
recommendation?: string;
|
|
reason?: string;
|
|
availableAmount?: number;
|
|
shortfall?: number;
|
|
} |