Task #19804
closedEDL/WSC : User Story: Generate Sales & Profit Report (PDF / Excel)
Description
I want to generate a report in PDF or Excel format
So that I can analyze shipment performance, sales, and profitability based on multiple business filters.
Description¶
The user should be able to generate a shipment sales report that can be exported as PDF or Excel.
The report must support multiple filter combinations and dynamically adapt displayed data based on Cargo Type (EXPORT / IMPORT).
Available Filters¶
The user can filter the report using one or more of the following criteria:
- Date From
- Date To
-
Cargo Type
- Export (EXP)
- Import (IMP)
-
Shipper / Consignee
- Shipper is used when Cargo Type = EXPORT
- Consignee is used when Cargo Type = IMPORT
- File Reference
- Salesperson
Report Output Formats¶
- Excel (XLSX)
Report Columns (Table Fields)¶
| # | Column Name | Description |
|---|---|---|
| 1 | File Reference | Primary shipment or job reference |
| 2 | Sub File Reference | Child or split file reference |
| 3 | HBL Reference | House Bill of Lading reference |
| 4 | Shipper / Consignee | Displayed based on cargo type (EXP → Shipper, IMP → Consignee) |
| 5 | Origin / Destination | Displayed based on cargo type (EXP → Origin, IMP → Destination) |
| 6 | Salesperson | Assigned salesperson for the file |
| 7 | Gross Weight (KG) | Total shipment gross weight |
| 8 | Volume (M3) | Shipment volume in cubic meters |
| 9 | Sales | Total sales amount |
| 10 | Invoiced Value | Total invoiced amount |
| 11 | Profit | Sales − Cost |
| 12 | % Profit | (Profit ÷ Sales) × 100 |
Business Rules¶
-
Cargo Type Logic
-
EXPORT (EXP)
- Display Shipper
- Display Origin
-
IMPORT (IMP)
- Display Consignee
- Display Destination
-
EXPORT (EXP)
-
Profit Calculation
Profit = Sales − Invoiced Value (or Cost, if defined separately)% Profit = (Profit / Sales) × 100
-
Filtering Behavior
- Filters can be applied individually or in combination.
- If no filters are selected, the system should prompt the user to select at least one filter (minimum Date range recommended).
-
Export Behavior
- Exported PDF and Excel must reflect the same filtered data.
- Excel format should allow further data analysis (sortable, filterable columns).
Acceptance Criteria¶
✅ User can select Date From and Date To
✅ User can filter by Cargo Type (EXP / IMP)
✅ System dynamically switches between Shipper / Consignee and Origin / Destination based on cargo type
✅ User can filter by File Reference
✅ User can filter by Salesperson
✅ Report displays all required columns
✅ Profit and % Profit are calculated correctly
✅ User can export the report as PDF or Excel
✅ Exported file contains only filtered results
✅ Report generation completes successfully without errors
GitLab Sync Log
[{"id": "43155", "author": "Avisham", "hours": 4.0, "created": "2026-04-27T07:46:27.337Z", "log_date": "2026-04-26", "comment": "Imported from GitLab by @Avisham on 2026-04-27T07:46:27.337Z: 4h-(4.0)h spend at: 2026-04-26", "status": "active", "deleted_by": "", "redmine_entry_id": 13315}, {"id": "43234", "author": "Avisham", "hours": 3.0, "created": "2026-04-27T11:39:24.444Z", "log_date": "2026-04-23", "comment": "Imported from GitLab by @Avisham on 2026-04-27T11:39:24.444Z: 3h-(3.0)h spend at: 2026-04-23", "status": "active", "deleted_by": "", "redmine_entry_id": 13326}, {"id": "43231", "author": "Avisham", "hours": 6.0, "created": "2026-04-27T11:36:55.756Z", "log_date": "2026-04-23", "comment": "Imported from GitLab by @Avisham on 2026-04-27T11:36:55.756Z: 6h-(6.0)h spend at: 2026-04-23", "status": "deleted", "deleted_by": "43233", "redmine_entry_id": 13327}, {"id": "43177", "author": "Avisham", "hours": 2.0, "created": "2026-04-27T10:18:43.246Z", "log_date": "2026-04-26", "comment": "Imported from GitLab by @Avisham on 2026-04-27T10:18:43.246Z: 2h-(2.0)h spend at: 2026-04-26", "status": "active", "deleted_by": "", "redmine_entry_id": 13328}]