Add reporting features with new report engine and bookmark management
- Introduced a comprehensive report engine for generating and managing reports, including sales and logistics reports. - Added new API endpoints for retrieving report configurations, data, and metadata, ensuring secure access with privilege checks. - Implemented a report bookmarks system to allow users to save and manage report filters and configurations. - Created database migrations for the `report_bookmarks` table and updated the schema to support new report functionalities. - Developed services and controllers for handling report queries and bookmarks, including CRUD operations for bookmarks. - Enhanced API documentation to reflect the new reporting features and endpoints. - Added unit and integration tests to validate the new functionalities and ensure data integrity across report operations.
This commit is contained in:
@@ -0,0 +1,104 @@
|
||||
# TrackGo Reports
|
||||
|
||||
Reports implemented in the report engine. Columns reflect **available data** only — fields from the legacy PMPS UI without backing tables are omitted.
|
||||
|
||||
## Sales reports (`sales_report`)
|
||||
|
||||
### Report Sales Order
|
||||
|
||||
| Column | Source |
|
||||
| --- | --- |
|
||||
| Date | `sales_orders.date` |
|
||||
| Branch | `branches.name` |
|
||||
| Division | `divisions.name` |
|
||||
| No. Sales Order | `sales_orders.code` |
|
||||
| Customer | `customers.name` |
|
||||
| Invoice Amount | `SUM(sales_order_products.quantity * price)` |
|
||||
| Sales Rep. | `employees.name` |
|
||||
| Last Status Order | `sales_orders.status` |
|
||||
|
||||
### Report Request Order
|
||||
|
||||
| Column | Source |
|
||||
| --- | --- |
|
||||
| Date | `sales_requests.date` |
|
||||
| Branch | `branches.name` |
|
||||
| Division | `divisions.name` |
|
||||
| No. Request Order | `sales_requests.code` |
|
||||
| Customer | `customers.name` |
|
||||
| Sales Rep. | `employees.name` |
|
||||
| Status | `sales_requests.status` |
|
||||
|
||||
### Report Invoice
|
||||
|
||||
| Column | Source |
|
||||
| --- | --- |
|
||||
| Date | `sales_invoices.date` |
|
||||
| Branch | `branches.name` |
|
||||
| Division | `divisions.name` |
|
||||
| Customer | `customers.name` |
|
||||
| Customer code | `customers.code` |
|
||||
| Sales Order No. | `sales_invoices.sales_order_code` |
|
||||
| Invoice No. | `sales_invoices.code` |
|
||||
| Status | `sales_invoices.status` |
|
||||
| Sales Rep. | `employees.name` |
|
||||
| Balance | `sales_invoices.balance` |
|
||||
|
||||
### Report Payment
|
||||
|
||||
| Column | Source |
|
||||
| --- | --- |
|
||||
| Date | `sales_payments.date` |
|
||||
| Payment No. | `sales_payments.code` |
|
||||
| Customer code | via `sales_invoices` → `customers.code` |
|
||||
| Branch | via invoice → `branches.name` |
|
||||
| Division | via invoice → `divisions.name` |
|
||||
| Sales Rep | via invoice → `employees.name` |
|
||||
| Invoice ID | `sales_invoices.code` |
|
||||
| Invoice Amount | `sales_invoices.balance` |
|
||||
| Payment Amount | `sales_payment_invoices.amount` |
|
||||
| Status | `sales_payments.status` |
|
||||
|
||||
### Report Visit Plan
|
||||
|
||||
| Column | Source |
|
||||
| --- | --- |
|
||||
| Date | `plans.date` (`purpose = sales`) |
|
||||
| Sales Rep | `employees.name` |
|
||||
| Branch | start branch name |
|
||||
| Plan | count of `plan_destinations` |
|
||||
| Invoice | count of `plan_invoices` |
|
||||
| Status | `plans.status` |
|
||||
|
||||
## Logistics reports (`logistics_report`)
|
||||
|
||||
### Report Packing Slip
|
||||
|
||||
| Column | Source |
|
||||
| --- | --- |
|
||||
| Date | `packing_slips.date` |
|
||||
| Sales Order No. | `packing_slips.sales_order_number` |
|
||||
| Packing Slip No. | `packing_slips.code` |
|
||||
| Customer | `customers.name` |
|
||||
| Status | `packing_slips.status` |
|
||||
|
||||
### Report Delivery Plan
|
||||
|
||||
| Column | Source |
|
||||
| --- | --- |
|
||||
| Date | `plans.date` (`purpose = logistics`) |
|
||||
| Sales Rep | `employees.name` (driver) |
|
||||
| Branch | start branch name |
|
||||
| Plan | count of `plan_destinations` |
|
||||
| Packing Slip | count of `plan_packing_slips` |
|
||||
| Status | `plans.status` |
|
||||
|
||||
## Not built (no backing data)
|
||||
|
||||
These reports from the legacy PMPS list require visit tracking, permissions, or alerts tables that do not exist in TrackGo:
|
||||
|
||||
- Report Performance (sales and logistic)
|
||||
- Report Sales Permission / Report Logistic Permission
|
||||
- Report Alert (sales and logistic)
|
||||
|
||||
Also omitted as columns everywhere: Visited, Break Time, Driving, Stop Time, Cancel, Alert counts, and live visit actuals.
|
||||
Reference in New Issue
Block a user