2026-07-30
- Accounting: tour invoices in profit reporting — tour invoices were silently excluded from Gross Profit, the per-staff breakdown, and the fee-breakdown pie chart everywhere in the app (found while answering a question about whether profit is invoiced- or collected-basis). Every invoice now carries a persisted service type (Visa/Flight/Tour) recorded at issue time, and tour profit follows the same revenue-minus-cost rule flight invoices already used. A new Tour Revenue figure appears alongside Visa Fees/Consulting Fees/Flight Revenue in the Fee Breakdown and on the Company Statistics pie chart.
- Finance: Cost Amount collected for every tour invoice — previously, a tour invoice issued against a priced itinerary template never asked for a Cost Amount, so its true profit was unrecoverable. The field is now collected for every service type except visa, regardless of whether the tour used a template or was manually itemized. Staff can see an invoice’s Cost of Sale and Profit in a new internal-only box on its detail view (never shown to the customer or printed on the PDF).
- Reminders: Tour Departure email — tours previously had no automated customer-facing email reminder at all, unlike Visa/Flight. A new admin-configurable reminder fires 1 day before a confirmed tour’s arrival by default, and appears automatically in the Reminder Settings admin page alongside the existing two.
- Finance: itemized flight/ticket invoices — flight invoices could previously only ever be a single freehand subtotal; there was no way to break a ticket charge into multiple line items (fare, baggage, seat selection, etc.) the way visa invoices already could. Issue Invoice now seeds a single editable “Ticket Price” row for flights and lets staff add further custom charges, all itemized individually on the invoice PDF and in the staff-facing invoice detail view.
- Quotations: consistent email-gating — a customer-backed quote’s “Confirm & Send” and “Resend” actions previously had no check for whether the customer had an email on file at all (unlike walk-in quotes, which already handled this correctly), letting staff hit a dead-end error with no useful explanation. Both now disable/hide exactly like the walk-in flow already does — download the PDF instead when there’s no email to send to.
- Visa requests, quotes, and pricing templates now offer 1 Month and 2 Months as validity period options, alongside the existing 3/6 months, 1 year, and Custom.
Last updated on