export type ExpenseType = 'PER_DIEM' | 'MILEAGE' | 'EXPENSES' | 'ON_CALL'; export const EXPENSE_TYPE: ExpenseType[] = ['PER_DIEM', 'MILEAGE', 'EXPENSES', 'ON_CALL',]; export const TYPES_WITH_MILEAGE_ONLY: Readonly = ['MILEAGE']; export const TYPES_WITH_AMOUNT_ONLY: Readonly = ['PER_DIEM', 'EXPENSES', 'ON_CALL',]; export interface Expense { date: string; type: ExpenseType; amount: number; mileage?: number; comment: string; supervisor_comment?: string; is_approved: boolean; } export type ExpenseTotals = { amount: number; mileage: number; reimburseable_total?: number; }; export interface PayPeriodExpenses { expenses: Expense[]; total_expense: number; total_mileage: number; } export interface UpsertExpense { old_expense: Expense; new_expense: Expense; } export const default_expense: Expense = { date: '', type: 'EXPENSES', amount: 0, comment: '', is_approved: false, }; export const default_pay_period_expenses: PayPeriodExpenses = { expenses: [], total_expense: -1, total_mileage: -1, }