v1.15.0
What's New in v1.15.0
Added
-
Customer Credit Balance as Payment Method — Customers can now pay using credit from returns and advance payments. New "Add to Customer Credit Balance" option in return dialog lets cashiers choose between cash refund or credit. Race condition protection with row-level locking ensures safe concurrent credit redemption.
-
Shift Duration Improvements — Timezone-safe shift timer eliminates negative duration bugs. Multi-day shifts now display properly (e.g., "2 Days 3 Hours 15 Minutes"). Timer pauses automatically when closing dialog is open, with idle warning after 1 minute.
-
Enhanced Mobile Payment UI — Physical keyboard support for payment numpad, consistent layout across payment types, and context-aware quick amounts (rounded denominations for cash, exact amounts for non-cash).
Changed
- Settings button moved to bottom of sidebar for better visual hierarchy
- Removed empty Dashboard and Reports placeholder components
- Centralized currency and locale constants across the codebase
Fixed
- Returns & Refunds — Use
net_ratefor accurate refund calculations, properly accounting for coupon and invoice-level discounts. Customers are now refunded exactly what they paid. - Monetary Calculations — Consistent
roundCurrencyusage across all dialogs. Fixed floating-point precision issues causing incorrect payment statuses. - Write-Off Feature — New write-off toggle for small remaining payment amounts
- Invoice History — Fixed pagination, integrated return dialog directly (no nested modals), added fully-returned invoice detection
- Barcode — Handle absent barcode UOM prices with proper conversion factor calculation
- ERPNext v15/v16 Compatibility — Support both GL entry methods, Query Builder for stock availability
- Shift Timer — Fixed negative duration caused by server/browser timezone mismatch
- Translations — Added Arabic, Indonesian, and Portuguese translations for all new features
Full Changelog: v1.14.0...v1.15.0