Financial Exception Dashboard

Open Exceptions

0

Value at Risk

$0

Avg. Exception Age

0d

Overdue (>7d)

0

Open Exceptions by Type

Priority Queue (Oldest First)

No open exceptions.

'; return; } container.innerHTML = sortedByAge.map(ex => `
  • ${ex.Description}

    ${ex.Type} • ${Math.floor(ex.age)}d ago • Assigned to ${ex.Assignee}
    ${formatCurrency(ex.Amount)}
  • `).join(''); } function renderExceptionTable() { const table = document.getElementById('exceptions-table'); const headers = ['ID', 'Date', 'Type', 'Amount ($)', 'Status', 'Assigned To', 'Description']; table.innerHTML = ` ${headers.map(h => `${h}`).join('')}Actions ${exceptionsData.sort((a,b) => new Date(b.Date) - new Date(a.Date)).map(ex => ` ${ex.ID} `).join('')} `; } window.fed_updateException = (id, key, value) => { const exception = exceptionsData.find(e => e.id === id); if(exception) exception[key] = (key === 'Amount') ? parseFloat(value) || 0 : value; renderAll(); }; window.fed_addException = () => { const newId = `EXC-${Math.floor(1000 + Math.random() * 9000)}`; exceptionsData.unshift({ id: Date.now(), ID: newId, Date: new Date().toISOString().split('T')[0], Type: EXCEPTION_TYPES[0], Amount: 0, Status: 'New', Assignee: ASSIGNEES[0], Description: 'New exception details' }); renderAll(); }; window.fed_removeException = (id) => { exceptionsData = exceptionsData.filter(e => e.id !== id); renderAll(); }; function initialize() { const today = new Date("2025-06-29"); const createDate = (daysAgo) => { const date = new Date(today); date.setDate(today.getDate() - daysAgo); return date.toISOString().split('T')[0]; }; exceptionsData = [ { id: 1, ID: 'EXC-1023', Date: createDate(2), Type: 'Duplicate Invoice', Amount: 1500.75, Status: 'New', Assignee: 'Anna', Description: 'Invoice #INV-5822 from Acme Corp.' }, { id: 2, ID: 'EXC-1024', Date: createDate(8), Type: 'Over-Budget Expense', Amount: 550.00, Status: 'In Review', Assignee: 'Ben', Description: 'Team travel expenses for Q2 conference' }, { id: 3, ID: 'EXC-1025', Date: createDate(1), Type: 'High-Value Payment', Amount: 25000.00, Status: 'New', Assignee: 'Carla', Description: 'Payment to new vendor "Innovate LLC"' }, { id: 4, ID: 'EXC-1026', Date: createDate(25), Type: 'Missing PO', Amount: 890.50, Status: 'Resolved', Assignee: 'David', Description: 'Hardware purchase from Comp. Solutions' }, { id: 5, ID: 'EXC-1027', Date: createDate(12), Type: 'Duplicate Invoice', Amount: 120.00, Status: 'In Review', Assignee: 'Anna', Description: 'Invoice #D-9910 from SaaS Co.' }, { id: 6, ID: 'EXC-1028', Date: createDate(4), Type: 'Vendor Mismatch', Amount: 3250.00, Status: 'New', Assignee: 'Carla', Description: 'Payment for "ACME" but vendor is "Acme Inc."' }, ]; renderAll(); } initialize(); });
    Scroll to Top