Dashboard

Monthly Revenue

Transactions

Active Carriers

Active Cards

Daily Revenue (Last 30 Days)

Top Drivers This Month

Carriers

CompanyMC#Status $/GallonCardsActions

Cards

Card NumberCompanyDriver Unit#StatusActions

Transactions

DateDriverUnit LocationProduct QtyAmount

Expenses

New Expense

DateVendorCategory DescriptionAmount

Profit & Loss

REVENUE
Fuel Card Revenue
Other Revenue
Total Revenue
EXPENSES
Total Expenses
NET PROFIT
}catch(e){ console.error(e); alert("Error: "+e.message); } }, const c = this.editCarrier; if(c.id) await this.api(`/api/carriers/${c.id}`,{method:'PUT',headers:{'Content-Type':'application/json'},body:JSON.stringify(c)}); else await this.api('/api/carriers',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(c)}); this.editCarrier=null; this.loadCarriers(); }, async saveCard(){ const c = this.editCard; if(c.id) await this.api(`/api/cards/${c.id}`,{method:'PUT',headers:{'Content-Type':'application/json'},body:JSON.stringify(c)}); else await this.api('/api/cards',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(c)}); this.editCard=null; this.loadCards(); }, async saveExpense(){ await this.api('/api/expenses',{method:'POST',headers:{'Content-Type':'application/json'},body:JSON.stringify(this.editExpense)}); this.editExpense=null; this.loadExpenses(); }, async importCSV(ev){ const file = ev.target.files[0]; if(!file) return; const fd = new FormData(); fd.append('file', file); const r = await this.api('/api/transactions/import-csv',{method:'POST',body:fd}); alert('Imported: '+r.imported+' transactions'); this.loadTransactions(); } } }