Daily Changelog - May 23, 2026
Today's development focused on resolving address duplication bugs, enhancing form validations, integrating day-off checking with override options, improving search and layout in invoices and quotes, and adding dynamic filtering to bin weight logging.
🛠️ Changes Summary
| Category | Description | Key Files |
|---|---|---|
| Bug Fixes | Prevent duplicate customer address creation by shifting lookup attributes; allow customer lookup by email/phone dynamically. | OrderSkipBinController.php |
| Features | Non-Delivery/Off-day validation and override prompt. Added check-day-off API endpoint, Vuex state management, and front-end spinner loading controls. | CheckDayOffController.php, Contract.js, ExtraEmpty.vue (Front Bins), ExtraEmpty.vue (Rental Bins) |
| Improvements | Dynamic category-based filtering for Bin Weight filters; validation UI asterisks on Order creation form; unit lot field for site addresses. | index.blade.php, AdminNewSkipBinOrder.vue, AddressModalCreate.vue |
| Formatting & UI | Invoice line item 'KG' badging fixes; precise decimal formatting for quote pricing display. | first-invoice.blade.php, skipbin_quote.blade.php |
🔍 Detailed Change Walkthrough
1. Order Creation & Address Handling
- Duplicate Address Mitigation: Updated the customer address mapping logic inside OrderSkipBinController.php's
updateOrCreatestructure. The customer'sname,email, andphoneare now passed to the second parameter (value array) rather than the search attributes. This prevents duplicate address entries when the customer’s contact details change for the same physical address. - Flexible Customer Match: Modified existing customer searches during order creation in OrderSkipBinController.php to lookup by either email or phone depending on which parameter is supplied.
- Form Validation Visuals: Updated AdminNewSkipBinOrder.vue to render red asterisks (
*) alongside all required inputs. - Dynamic Phone Validation: Phone and Contact Phone validation requirements are now conditional based on the partner configuration setting
is_required_phone_number_front_end.
2. Supplier Day-Off Verification & Overrides
- API Validation: Registered a new route
GET /api/check-day-offmatching the newly introduced invokable CheckDayOffController.php to check whether a selected date matches a supplier's non-delivery configuration orNonDeliveryoff-days list. - Vuex Actions: Added a Vuex action
checkOffDayand state variableisOverideDatein Contract.js. This displays a SweetAlert2 confirmation dialog prompting the user if they wish to bypass/override the warning if a day off is selected. - Front-end Loading Controls: Updated the
ExtraEmpty.vuecomponents for both Front Bins and Rental Bins to run this validation prior to submitting extra empty orders, showing an active loading spinner on the submit buttons.
3. Bin Weight Dropdowns & Filtering
- Dynamic Dropdowns: Updated index.blade.php using jQuery to dynamically filter the waste container sizes and waste types options depending on the chosen Category.
- N+1 Query Fix: Eager loaded the
categoriesrelation inside BinWeightController.php when retrieving activeWasteTypestructures. - Exceptions Propagation: Commented out the
try-catchwrapper insidetask()method in TaskRunsheetController.php to allow server exceptions to bubble up.
4. Layout & UI Refinements
- Unit Lot Fields: Integrated the
unit_lotaddress field into CustomerController.php, customer address listings, and modals: - Invoice Units: Conditionally added the
KGunit suffix on invoice templates for docket/weight charges: - Precision Formatting: Formatted coupon and best-price displays on skipbin_quote.blade.php and skipbin_quote_detail.blade.php to show two decimal places via
number_format(). - New Liquid Category: Added details for the new
Liquidcategory to default categories in AutoHelper.php.
Report generated on May 23, 2026.