import type { ExpenseType } from "src/modules/timesheets/models/expense.models"; export const getExpenseIcon = (type: ExpenseType) => { switch (type) { case 'MILEAGE': return 'time_to_leave'; case 'EXPENSES': return 'receipt_long'; case 'PER_DIEM': return 'hotel'; case 'ON_CALL': return 'phone_android'; default: return 'help_outline'; } }; export const useExpenseRules = (t: (_key: string) => string) => { const isPresent = (val: unknown) => val !== undefined && val !== null && val !== ''; const typeRequired = (val: unknown) => (!!val) || t('timesheet.expense.errors.type_required'); const amountRequired = (val: unknown) => (isPresent(val)) || t('timesheet.expense.errors.amount_required_for_type'); const mileageRequired = (val: unknown) => (isPresent(val)) || t('timesheet.expense.errors.mileage_required_for_type'); const commentRequired = (val: unknown) => (typeof val === 'string' ? val.trim().length > 0 : false) || t('timesheet.expense.errors.comment_required'); return { typeRequired, amountRequired, mileageRequired, commentRequired, }; }; export const convertToMonetaryAmount = (amount: number | string): number => { if (typeof amount === 'number') return Number(amount.toFixed(2)); if (typeof amount === 'string') { try { const single_decimal_amount = amount.replace(/\.(?=.*\.)/g, ''); const numbers_only_decimal = single_decimal_amount.replace(/[^0-9.]/g, ''); return Number(numbers_only_decimal); } catch(error) { console.error(error); } } return 0; };