Skip to Content
Ranlanka CRM documentation — pre-release, subject to change.
Changelog2026-09-02

2026-09-02

  • Rejected Visa Operational Lifecycle & Passport Return:

    • Rejection Notification Emails (POST /api/v1/visas/{id}/notify-rejection): Staff can dispatch branded, professional notification emails directly to clients when an embassy refuses a visa application. Emails include custom embassy decision remarks, assigned consultant contact info, and office passport collection instructions.
    • Bypassed Visa Issuance on Rejection Finalization: Finalizing passport collection on a rejected visa (bookingApi.finalizeVisa) no longer demands visa numbers or issue dates; it immediately completes the operational lifecycle and marks completed_at.
    • Preserved Rejection State in Active Services: Finalizing passport return retains VisaStatus.rejected in PostgreSQL rather than overwriting it with passport_collected. Suppressed congratulatory “Visa Complete” approval emails.
    • Dossier & Services Panel Visibility (ServicesPanel.tsx): The customer active services panel highlights rejected applications with a prominent red REJECTED badge and PASSPORT RETURNED badge upon completion, and strictly excludes rejected applications from the active held visas list in PassportVault.
  • Rejected Visa Invoicing & Balance Waiver Settlement (POST /api/v1/invoices/{id}/settle-rejection):

    • Uncollectible Debt Waiver: Settling a rejected visa invoice automatically attaches a “Visa Rejection Balance Waiver” discount line for the unpaid remainder, adjusting the net total amount to match collected revenue (amountPaid), clearing outstanding debt (balanceDue = 0.00), and marking invoice status as PAID.
    • Preserved Invoice Audit Trail: Settled invoices remain fully visible and downloadable in the customer dossier with itemized waiver discount lines.
  • Admin Invoice Cancellation Hard Delete (cancelInvoice):

    • P&L and Revenue Integrity: Cancelling an invoice via POST /api/v1/invoices/{id}/cancel permanently removes the invoice, all line items, tax lines, discount lines, request links, and all associated receipts/payments from the database to ensure zero distortion in financial reports and monthly executive digests.
  • Customer Dossier Direct Profile Navigation:

    • Standardized Profile User Icon (User from lucide-react): Replaced textual redirect links across Task Tracker drawers (TaskDetailDrawer.tsx), List views (TaskListView.tsx), Admin tables (AdminTaskTable.tsx), and Group drawers (LinkedGroupDrawer.tsx) with standard clickable profile icons linking directly to /client-dossier/:customerId.
  • Structured Customer Document Upload System:

    • Default Document Line Items: Customer dossier Documents tab provides direct upload rows for standard travel documents (Passport, NIC, Photo, Bank Statements, Utility Bills, Tickets, Other).
    • Standardized Naming Convention (name_type): Files uploaded are automatically prefixed as <CustomerName>_<DocumentType> before persisting to Cloudflare R2 object storage.
Last updated on