v2026.6.14
Release date: June 30, 2026
✨ New Features
Overdue Customers List — Billing Module
The Billing module now has a dedicated screen for tracking delinquency. The Overdue tab displays all customers with overdue and unpaid installments, grouped by customer, with financial totals and direct collection actions.
What is it for?
- Quickly identify which customers have overdue payments
- View the total financial impact of delinquency in real time
- Register payments and access contracts directly from the list
- Streamline collection operations without opening each contract individually
How to access?
- Go to the Billing module in the sidebar
- Click the Overdue tab (between Contracts and Payees)
What does the screen show?
Summary cards:
- Total customers with overdue payments
- Total overdue amount (sum of all overdue installments)
Customer table:
| Column | Description |
|---|---|
| Customer | Name, photo and email |
| Contact | Primary WhatsApp (when available) or email |
| Installments | Number of overdue installments |
| Overdue amount | Total sum of overdue installments |
| Oldest due date | Date of the oldest overdue installment (+ days overdue) |
| Contracts | Contracts linked to the overdue installments |
Filters and sorting
- Search by name, email or WhatsApp — with automatic debounce
- Clickable column sorting: customer name (A–Z), overdue amount or oldest due date
- Pagination with 20 customers per page
Actions per customer
- View installments — expands the row and lists all overdue installments for that customer, with installment number, amount, due date, days overdue and a "Register payment" button to record payment directly
- View contracts — navigates to the Contracts tab pre-filtered for that customer
Technical details
The query uses a database RPC function (get_overdue_customers) that performs grouping, filtering, sorting and pagination entirely in PostgreSQL — the WhatsApp contact is fetched directly from the customer_contacts table (type whatsapp, flagged as primary for type).
Delinquency is detected by date (due_date < today) without relying on a cron job to update statuses — the list always reflects the real state at query time.
🎯 Benefits
- ✅ Consolidated view of overdue customers without opening contract by contract
- ✅ Total overdue amount visible immediately at the top of the screen
- ✅ Payment registration directly in the list — without leaving the overdue screen
- ✅ WhatsApp contact shown to facilitate collection outreach
- ✅ Always up-to-date list — no cron lag