TransitQuote Pro v6.1.3 – v6.2.0

The v6.2.0 update brings map-based service-area zones, conditional and percentage surcharges, an independent out-of-hours window, and a broad round of PHP 8 reliability fixes.

May–June 2026

New Features

  • Conditional surcharges — Surcharges can now be set to apply only under specific conditions instead of always. From the surcharge editor you can trigger a charge on out-of-hours bookings, holidays, weekends, return journeys, or for a specific vehicle type. Named surcharge line items are shown individually on the quote result across every booking theme, and each surcharge can be given its own display label and sort order.
  • Flat or percentage surcharge types — A type selector lets you choose whether each surcharge is a fixed amount or a percentage of the job total.
  • Maximum distance per service — Each service can now have a maximum quotable distance. Beyond that distance the service is treated as out of range, and the booking form stops offering additional stops once the limit is reached.
  • Independent out-of-hours window — New “out-of-hours start” and “out-of-hours end” settings let the out-of-hours surcharge boundary be set separately from the booking hours that control the time-picker. Out-of-hours and holiday surcharge triggers are now evaluated in their own right rather than being tied to whether a matching out-of-hours rate band exists.
  • Circle map zones — In addition to polygon zones, you can now draw circular zones directly on the map. The Zones tab gains a shape selector (Polygon or Circle), and the customer booking map renders circles as well as polygons.
  • Per-zone behaviour rules — Each zone can be set to add a surcharge when a stop falls inside it, add a surcharge when a stop falls outside it, or block the booking entirely when a stop is outside — letting you define hard service-area boundaries. All zone rules are enforced on the server, so they can’t be bypassed from the browser.
  • “Collect locally, deliver anywhere” boundary — A new zone behaviour blocks a booking only when the collection address is outside the zone, while leaving delivery destinations unrestricted — ideal for “we collect within 20 miles of the depot but deliver nationwide” setups.
  • Allow out-of-hours bookings — A new toggle (with its own out-of-hours start/end times) opens the booking time picker to a full 24 hours and prices overnight bookings (e.g. 19:00–07:30) with an out-of-hours surcharge, instead of requiring separate out-of-hours rate columns.

Improvements

  • Per-address “Collection At” times are now included when working out the available dates and times, and are used when evaluating out-of-hours and holiday surcharges on the per-address (Light 3) theme.
  • Rate validator no longer raises false-positive warnings for partially-zero or catch-all rate bands, and now reports a clear error when a service has an uncapped rate gap.
  • The surcharge pipeline has been unified internally for more consistent and predictable pricing.

Bug Fixes

  • Fixed several time-format parsing problems under PHP 8 — including the time picker showing empty when a booking end time was stored as “19:00 PM”, and stray AM/PM suffixes on 24-hour times.
  • Fixed the contact name and phone fields not always starting a new row in the per-address theme.
  • Enforced a non-null default on the rate journey-length field and corrected the surcharge type column default in the database schema.
  • Fixed the quote using the wrong base rate when the out-of-hours window was set differently from the booking hours (the out-of-hours surcharge was being applied on top of a standard-rate base, producing an incorrect total).
  • Fixed quotes silently returning zero on older sites whose default distance (“catch-all”) rate row had been deleted — quoting now degrades gracefully instead of erroring.
  • Fixed the admin map not moving to show a zone’s shape when editing a zone that sat outside the current map view, and tidied the Zones admin tab layout for the new circle controls.
  • Existing installations now have the service-surcharge uniqueness constraint applied automatically on update, preventing duplicate service/surcharge links.

Reliability & PHP 8 Hardening

  • Prevented fatal errors when opening admin job details for incomplete or partially-saved job records.
  • Hardened the save-job path to guard against a missing journey before any database writes, and removed obsolete dead code.
  • Protected the default journey-length record from deletion and marked the legacy Journey Lengths tab obsolete.
  • Added null/empty guards across the public booking handlers (component initialisation, job-detail lookups during checkout and status updates) to prevent crashes on edge-case data.
  • Fixed a PHP 8.1 wp_mail() type error by passing an empty attachments array instead of null.
  • Store a zero-date sentinel when no delivery date is supplied, avoiding invalid-date errors.
  • Added explicit property declarations to suppress PHP 8.2+ dynamic property deprecation notices.