Dashboard
Total Orders
{{ stats.total_orders || 0 }}
Total Clients
{{ stats.total_clients || 0 }}
Revenue
{{ formatCurrency(stats.total_revenue) }}
Outstanding
{{ formatCurrency(stats.outstanding) }}
Orders Today
{{ stats.orders_today || 0 }}
Pending Shipments
{{ stats.shipment_status?.Scheduled || 0 }}
Avg. Order Value
{{ formatCurrency(stats.avg_order_value) }}
Recent Activity
Logins Today
{{ stats.logins_today || 0 }}
Active Users
{{ stats.active_users || 0 }} / {{ stats.total_users || 0 }}
Order Status Distribution
Vessel Status Distribution
Avg. Order Processing Time
{{ stats.avg_order_processing_time || 0 }} hours
Avg. Vessel Transit Time
{{ stats.avg_vessel_transit_time || 0 }} days
Orders Trend
Shipments
User Logins (30 days)
Top Clients
By Order Count
Top Clients
By Order Count
By Order Value
Top Active Users (This Month)
No login data yet
Recent Logins
No login data yet
Orders Management
| Order # | Item | Client | Date | Order Status | Vessel | Vessel Status | Total | Paid | Amount Left | Collected Date | Action |
|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ o.order_number }} |
|
{{ o.client_name }} | {{ formatDate(o.order_date) }} | {{ o.order_status }} |
{{ getVesselName(o) }}
Container: {{ getContainerNumber(o) }}
|
{{ getVesselStatus(o) }} - | {{ formatCurrency(o.amount_due) }} | {{ formatCurrency(o.amount_paid) }} | {{ formatCurrency(o.amount_due - o.amount_paid) }} | {{ formatDate(o.collected_date) || '-' }} |
Create Order
Order #{{ viewOrderData.order.order_number }}
{{ formatDate(viewOrderData.order.order_date) }}
Client
{{ viewOrderData.order.client_name }}
Vessel
Status
Due / Paid / Left
| Item | Qty | Outside Accra | Total |
|---|---|---|---|
| {{ item.item_name }} | {{ item.quantity }} | {{ formatCurrency(item.item_sum) }} |
Completed Orders
| Order # | Item | Client | Date | Collected Date | Vessel | Status | Action |
|---|---|---|---|---|---|---|---|
| {{ o.order_number }} |
|
{{ o.client_name }} | {{ formatDate(o.order_date) }} | {{ formatDate(o.collected_date) || '-' }} |
{{ getVesselName(o) }}
Container: {{ getContainerNumber(o) }}
|
{{ o.order_status }} |
Order #{{ viewCompletedOrderData.order.order_number }}
{{ formatDate(viewCompletedOrderData.order.order_date) }}
Client
{{ viewCompletedOrderData.order.client_name }}
Vessel
Status
Collected: {{ formatDate(viewCompletedOrderData.order.collected_date) }}
Items
| Item | Qty | Outside Accra |
|---|---|---|
| {{ item.item_name }} | {{ item.quantity }} |
Remarks
Warehouse Management
Filters
Orders
| Order # | Item | Client | Order Date | Status | Vessel | Amount Left | Collected Date | Actions |
|---|---|---|---|---|---|---|---|---|
| {{ order.order_number }} |
|
{{ order.client_name }} | {{ formatDate(order.order_date) }} | {{ order.order_status }} |
{{ getVesselName(order) }}
Container: {{ getContainerNumber(order) }}
{{ getVesselStatus(order) }}
|
{{ formatCurrency(order.amount_due - order.amount_paid) }} | {{ formatDate(order.collected_date) || '-' }} |
Clients Management
| ID | Name | Phone 1 | Phone 2 | Digital Address | Location | Type | Actions | |
|---|---|---|---|---|---|---|---|---|
| {{ row.display_id }} | {{ row.firstName }} {{ row.surname }} | {{ row.phone1 }} | {{ row.phone2 || '-' }} | {{ row.digital_address || '-' }} | {{ row.email }} | {{ row.location }} | {{ row.client_type }} |
Items
Items List
| Name | Cost | Outside Accra Cost | Category | CBM Size | Actions |
|---|---|---|---|---|---|
| {{row.name}} | {{ formatCurrency(row.unit_cost) }} | {{ formatCurrency(row.outside_accra_cost) }} | {{row.category}} | {{ row.cbm_size || '-' }} |
Vessels
Vessels List
| Name | Container # | Departure Date | Arrival Date | Status | Max CBM Capacity | Actions |
|---|---|---|---|---|---|---|
| {{row.name}} | {{ row.container_number || '-' }} | {{ formatDate(row.departure_date) }} | {{ formatDate(row.arrival_date) }} | {{row.status || 'Scheduled'}} | {{ row.max_cbm_capacity || '-' }} |
Communication
Send Bulk Message
Message Delivery Status (Last 100 Entries)
| Timestamp | User | Recipient | Status | Message |
|---|---|---|---|---|
| {{ formatDate(status.timestamp) }} | {{ status.user_identity }} | {{ status.resource_id }} | {{ status.after && status.after.includes('success') ? 'Success' : 'Queued' }} | {{ JSON.parse(status.before || '{}').message || '-' }} |
No SMS status records available.
Click "Refresh Status" to load the latest SMS delivery status.
Sent Messages (Last 100)
| Timestamp | Channel | Recipient | Status | Message |
|---|---|---|---|---|
| {{ formatDate(msg.timestamp) }} | SMS Email | {{ msg.recipient }} | Success Queued | {{ msg.message }} |
No sent messages available.
Click "Refresh" to load the latest sent messages.
CBM Calculator
Calculate cubic meters and shipping costs
Measurement Unit
Dimensions
Package Details
Expense Management
Filters
Total Expenses
{{ formatCurrency(totalExpenses) }}
This Month
{{ formatCurrency(monthExpenses) }}
This Week
{{ formatCurrency(weekExpenses) }}
Today
{{ formatCurrency(todayExpenses) }}
Expenses
| Expense # | Date | Category | Description | Payment Method | Reference | Amount | Actions |
|---|---|---|---|---|---|---|---|
| {{ expense.expense_number }} | {{ formatDate(expense.expense_date) }} | {{ getCategoryName(expense.category_id) }} | {{ expense.description || '-' }}
|
{{ expense.payment_method }} | {{ expense.reference || '-' }} | {{ formatCurrency(expense.amount) }} |
{{ expenseForm.id ? 'Edit Expense' : 'Add Expense' }}
Expense Details
Expense #
{{ expenseViewData.expense_number }}
Amount
{{ formatCurrency(expenseViewData.amount) }}
Category
{{ getCategoryName(expenseViewData.category_id) }}
Date
{{ formatDate(expenseViewData.expense_date) }}
Payment Method
{{ expenseViewData.payment_method }}
Reference
{{ expenseViewData.reference || '-' }}
Description
{{ expenseViewData.description }}
{{ categoryForm.id ? 'Edit Category' : 'Add Category' }}
Expense Categories
| ID | Name | Description | Actions |
|---|---|---|---|
| {{ category.id }} | {{ category.name }} | {{ category.description || '-' }} | |
| No expense categories found. Click "Add Category" to create one. | |||
Reports
Orders
{{ reportResults.total_orders }}
Revenue
{{ formatCurrency(reportResults.total_revenue) }}
Outstanding
{{ formatCurrency(reportResults.outstanding) }}
Completed
{{ reportResults.completed }}
Total Clients
{{ reportResults.total_clients }}
Total Orders
{{ (reportResults.clients || []).reduce(function(sum, c) { return sum + (c.total_orders || 0); }, 0) }}
Total Value
{{ formatCurrency((reportResults.clients || []).reduce(function(sum, c) { return sum + (c.total_value || 0); }, 0)) }}
Corporate
{{ reportResults.clients.filter(function(c) { return c.client_type === 'Corporate'; }).length }}
Total Items
{{ reportResults.total_items }}
Categories
{{ getUniqueCategoriesCount(reportResults.items || []) }}
Avg Cost
{{ formatCurrency((reportResults.items || []).reduce(function(sum, i) { return sum + (i.unit_cost || 0); }, 0) / (reportResults.items || []).length) }}
Total CBM
{{ (reportResults.items || []).reduce(function(sum, i) { return sum + (i.cbm_size || 0); }, 0).toFixed(2) }}
Total Vessels
{{ reportResults.total_vessels }}
Scheduled
{{ (reportResults.vessels || []).filter(function(v) { return v.status === 'Scheduled'; }).length }}
Departed
{{ (reportResults.vessels || []).filter(function(v) { return v.status === 'Departed'; }).length }}
Arrived
{{ (reportResults.vessels || []).filter(function(v) { return v.status === 'Arrived'; }).length }}
| Order # | Client | Date | Total | Paid | Status |
|---|---|---|---|---|---|
| {{ o.order_number }} | {{ o.client_name }} | {{ formatDate(o.order_date) }} | {{ formatCurrency(o.amount_due) }} | {{ formatCurrency(o.amount_paid) }} | {{ o.order_status }} |
| No orders found | |||||
| ID | Name | Phone | Location | Type | Orders | Value | |
|---|---|---|---|---|---|---|---|
| {{ c.display_id }} | {{ c.name }} | {{ c.email }} | {{ c.phone1 }} | {{ c.location }} | {{ c.client_type }} | {{ c.total_orders || 0 }} | {{ formatCurrency(c.total_value || 0) }} |
| No clients found | |||||||
| Name | Category | Cost | Outside Accra Cost | CBM Size |
|---|---|---|---|---|
| {{ i.name }} | {{ i.category }} | {{ formatCurrency(i.unit_cost) }} | {{ formatCurrency(i.outside_accra_cost) }} | {{ i.cbm_size || '-' }} |
| No items found | ||||
| Name | Departure Date | Arrival Date | Status | Max CBM Capacity |
|---|---|---|---|---|
| {{ v.name }} | {{ formatDate(v.departure_date) }} | {{ formatDate(v.arrival_date) }} | {{ v.status || 'Scheduled' }} | {{ v.max_cbm_capacity || '-' }} |
| No vessels found | ||||
Total Expenses
{{ formatCurrency(reportResults.total_expenses || 0) }}
This Month
{{ formatCurrency(reportResults.month_expenses || 0) }}
This Week
{{ formatCurrency(reportResults.week_expenses || 0) }}
Today
{{ formatCurrency(reportResults.today_expenses || 0) }}
| Expense # | Date | Category | Description | Payment Method | Reference | Amount |
|---|---|---|---|---|---|---|
| {{ e.expense_number }} | {{ formatDate(e.expense_date) }} | {{ getCategoryName(e.category_id) }} | {{ e.description || '-' }} | {{ e.payment_method }} | {{ e.reference || '-' }} | {{ formatCurrency(e.amount) }} |
| No expenses found | ||||||
Order Items Detail
{{ orderItemsDetailResults.rows.length }} item(s) found
| Date | Client ID | Client Name | Order ID | Item | Vessel | Container # |
|---|---|---|---|---|---|---|
| {{ row.date }} | {{ row.client_id }} | {{ row.client_name }} | {{ row.order_id }} | {{ row.item }} | {{ row.vessel_name }} | {{ row.container_number }} |
| No items found for the selected filters. | ||||||
Admin
Users
| Username | Role | Status | Actions |
|---|---|---|---|
| {{ u.username }} | {{ u.role }} | {{ u.active ? 'Active' : 'Disabled' }} |
System Configuration
Mass Upload
Upload Clients
Upload Items
Upload Vessels
Company Information
API Request Logs (Last 100)
| Timestamp | User | Method | Path | Action | Resource | Resource ID |
|---|---|---|---|---|---|---|
| {{ formatDate(log.timestamp) }} | {{ log.user_identity }} | {{ log.method }} | {{ log.path }} | {{ log.action_type || '-' }} | {{ log.resource || '-' }} | {{ log.resource_id || '-' }} |
No API logs available.
Click "Refresh Logs" to load the latest API requests.
CBM Configuration
Payment Instructions
Terms & Conditions
Backup Management
Backup
Create manual backup of database
Backups are retained weekly for up to 6 months
Leave empty to save to server backup folder
Restore
Restore database from a backup file
Choose restore method
Restore from server backup folder
Restore from your local file
Server Backups
Loading backups...
No backups found in server folder
{{ formatDate(backup.modified_date) }}
{{ formatFileSize(backup.size) }}
Select Backup Folder
Enter the full path where you want to save the backup file: