2026-09-01
-
Monthly Executive Analytics & Financial Digest (
MonthlyDigestScheduler.java):- Automated Scheduling: Scheduled to run on the final calendar day of each month at 20:00 (8:00 PM) Sri Lanka Standard Time (
Asia/Colombo). - Financial Breakdown & Profitability: Computes Total Invoiced Sales, Cost of Sales, Gross Profit & Gross Margin %, Actual Cash Receipts Collected, Operating Expenses from the Accounting module, Net Operating Profit, and Outstanding Receivables.
- Granular Service Revenue Breakdown: Details revenue contributions across Flight Tickets, Visa Applications, and Tour Packages.
- Operational Pipeline Status Metrics: Aggregates real-time counts across the full lifecycle for Flight bookings (Inquiries, Docs Collected, Hold, Payment Pending, Ticketed, Cancelled) and Visa applications (Inquiries, Docs Pending, Appointments, Submitted, Processing, Approved, Passports Collected / Finalized, Rejected, and Sticker vs. eVisa split).
- Completed Task Tickets (Full Drawer Fidelity): Tabular summary for 100% of completed Visa and Flight tasks containing all drawer fields (Client details, Traveler info, Passport numbers/expiry, Routes/Countries, Airlines, PNRs, E-Ticket/Visa numbers, Pricing, Notes, Handling Staff, Attached Files count, and Linked Invoice payment status).
- Client Analytics & VIP Spenders: Analyzes the month’s Top 5 VIP Spenders, Top 5 Most Frequent Clients, and New Customer Acquisition growth.
- Downloadable Multi-Section CSV Attachment: Delivers
Monthly_Executive_Digest_<YYYY_MM>.csvformatted with native Excel / Google Sheets compatibility. - Deduplication Protection: Deduplication recorded via
ReminderSendLogRepositorywith keyMONTHLY_DIGEST.
- Automated Scheduling: Scheduled to run on the final calendar day of each month at 20:00 (8:00 PM) Sri Lanka Standard Time (
-
Frontend Dynamic Chunk Loading Auto-Recovery:
lazyWithRetry.ts: Wrapped all React lazy routes with chunk-loading error interception, catching stale hash mismatches during new production deployments and triggering a single graceful session reload.vite:preloadErrorHandler: Added global event listener inmain.tsxfor immediate auto-recovery on network asset 404s.
-
Seamless Visa Issuance on Finalize:
- Inline Passport Finalization (
VisaDetailPanel.tsx&TaskDetailDrawer.tsx): When finalizing passport collection on an unissued visa, the drawer directly renders the issue form and attached documents dropzone with action “Issue Visa & Finalize (Passport Collected)”, executing validation, document uploads, and finalization in one click. - Context-Aware Button States: Removed redundant Cancel button during mandatory first-time finalization while preserving standard Cancel behavior when editing existing issued visas.
- Inline Passport Finalization (
-
Finalized Status Visual Indicators:
- Action-Verified Green Checkmark Badges (
CheckCircle2): Added distinctive green checkmark circle indicators andFINALIZEDbadges that appear only when final issuance is complete:- Visas: Only when the visa has been issued (
visaNumberis present) and finalized (completed_attimestamp or statuspassport_collected). If a visa is moved topassport_collectedwithout an issued visa, the indicator stays hidden until “Issue Visa & Finalize” is executed. - Flights: Only when the ticket has actually been issued (
ticketNumberis present and non-empty) and booking is not cancelled. - Rendered across Task List View (
TaskListView.tsx), Admin Task Table (AdminTaskTable.tsx), Client Dossier Services Panel (ServicesPanel.tsx), and Task Detail Drawer (TaskDetailDrawer.tsx).
- Visas: Only when the visa has been issued (
- Action-Verified Green Checkmark Badges (
-
Task Tracker Archive Retention Verification:
- 7-Day Archive Window: Verified backend rule in
FlightService.javaandVisaService.javathat automatically hides finalized tickets (TICKETED/CANCELLED) and finalized visas (passport_collected) from the active tracker board after 7 days (when invoices are settled), keeping them permanently accessible in the Customer Dossier Bookings tab.
- 7-Day Archive Window: Verified backend rule in
-
File Storage Security & Verification:
- Storage Octal Regex Fix: Fixed escape sequence in
R2FileStorageServiceImpl.javaregex by replacing\0with\u0000. - JPEG Magic-Byte Sniffing: Updated SOI marker check to standard 2-byte sequence
0xFF 0xD8, with WebP and PDF image cross-validation support.
- Storage Octal Regex Fix: Fixed escape sequence in
Last updated on