May 2026 Updates

πŸ†• Gallery Photo Comments β€” Added the ability for users to post comments directly on gallery photos; the same comment thread now surfaces across gallery views, notes, and other modules.

πŸ†• Gallery Bulk Delete & Recover β€” Added bulk delete and recover endpoints for job attachments in Notes & Attachments, with soft-delete semantics and activity log entries that include each attachment's name for a complete audit trail.

πŸ†• Gallery Checklist & Inspection Image Copy β€” Added support for copying checklist and inspection form images to albums β€” a company_default_folder can now be configured per IMAGE/MULTI_IMAGE field; on submission, matching attachments are automatically associated with the configured job gallery album.

πŸ†• FE Access to All Customer Estimates & Invoices β€” Added support for Field Executives to access all customer estimates and invoices via two new flags (can_fe_access_all_customer_estimates, can_fe_access_all_customer_invoices); when enabled and a customer filter is applied, FE-level BU and created-by restrictions are bypassed for that customer's records.

πŸ†• Job Financial Summary β€” Added a Job Financial Summary API that aggregates approved estimate amounts, invoiced totals, and collected payment transactions for a job into a single set of financial KPI metrics.

πŸ†• Business Overhead: Added support for configurable business overhead calculations. A business_overhead setting (FIXED or PERCENTAGE) can now be defined and is applied to post-discount job revenue. The calculated overhead cost is automatically included in total job cost and commissionable cost calculations across materials, labor, and expenses.

πŸ†• Commission Payouts: Enhanced commission payout tracking with a new payout_status field (UNPAID, PARTIALLY_PAID, PAID, OVERPAID) stored on each commission. Unpay operations now soft-delete payout records instead of reverting commission status, preserving payout history. Bulk processing has also been extended to support targeted unpay actions using filter.commission_uid and unpay_payouts arrays.

πŸ†• Auto Geocoding: Customer, Job, Organization, and Property addresses are now automatically geocoded during create and update operations. Valid addresses are enriched with geo-coordinates using a parallel geocoding lookup, enabling more accurate map pinning and improving the overall user experience.

πŸ†• Job Custom Field Change Events: Added granular event support for job custom field updates. Notifications now include created_fields and updated_fields arrays, allowing subscribers to identify exactly which custom fields were added or modified.

⭐ Purchase & Service Order Delivery Method Sync: Delivery methods are now automatically synchronized between linked Service Orders (SO) and Purchase Orders (PO) when updated. Additionally, the PATCH endpoint now enforces status-based update restrictions and prevents vendor changes once the order has progressed beyond specified states.

⭐EV1 Subscription Product Codes β€” Minor fix to the addSubscription handler to correctly apply subscription product codes for new EV1 subscription tiers.

⭐ EagleView Products APIβ€” Updated to support additional EV1 subscription product codes; new product-type constants are mapped in the measurement helper so all available EagleView report products can be ordered and tracked correctly.

⭐Timesheet History for Team Leads β€” Team Leads can now view timesheet history for their entire team, not just their own records.

🐞 Time Off Availability β€” User availability balances are now recalculated when a request type's no_of_days_per_year allotment is updated by an admin; a validation guard was also added for users with no existing availability record.

🐞 Commission Profitability Calculationβ€” Non-billable line items now correctly contribute to commissionable_bundle_cost but are excluded from commissionable_bundle_price, ensuring profit-based commission amounts are not inflated by non-billable work.

🐞 Gallery Attachment Download β€” Improved error responses in downloadGalleryAttachment and cleaned up stale template references in the public gallery HTML.

🐞 Proposal PDF Rollup Bundle Quantities β€” Rollup bundle components are now pre-scaled by bundle quantity, so per-component prices and quantities in the PDF reflect the correct scaled values.

🐞 Sales Order PDF β€” Added a dedicated SO PDF template and generation handler, resolving blank/missing PDF output for Service Orders sent via email.

🐞 Customer Account Initialization β€” When the accounts field is included in an update payload, existing LTV, receivables, and credits values are now preserved if not explicitly changed, preventing those fields from being silently reset to zero.