Transdirect Multi-Courier Shipping Module for Zen Cart 1.5.8
=============================================================
Version 1.0.0 - PHP 7.4 compatible - AU domestic only

WHAT IT DOES
Shows live shipping quotes from multiple Australian couriers
(Couriers Please, Allied Express, Aramex, TNT/FedEx etc.) at
checkout and in the shopping cart estimator, using the
Transdirect API v4 and your member account API key.
Quotes are sorted cheapest first. Orders are NOT auto-booked;
you book jobs in your Transdirect members area as usual.

FILES (upload preserving folder structure - no core files touched)
  includes/modules/shipping/transdirect.php
  includes/languages/english/modules/shipping/transdirect.php

INSTALL
1. Upload the includes folder to your store root.
2. Admin > Modules > Shipping Modules > Transdirect > Install.
3. Enter your API key (Members area > Api Modules).
4. Set Sender Suburb + Sender Postcode to your pickup address.
   The suburb MUST be a real suburb matching that postcode or
   the API rejects the request.
5. Set Product Weight Format (gms if your products are entered
   in grams - same setting as your AusPost module).
6. Tax Class: GST (quotes come back GST-inclusive; the module
   strips GST so Zen Cart can re-add it, same as AusPost module).
7. Save, then test on the cart page / checkout with a real
   AU suburb + postcode.

NOTES
- Requires the customer's suburb (city field) and a valid 4-digit
  postcode before quotes appear - same behaviour as their site.
- Product dimensions are read from products_length/width/height
  in cm (the columns the AusPost module added). Products without
  dimensions use the Default Product Dimensions setting.
- Cost on Error: 0 hides Transdirect quotes if the API is down;
  a value shows that flat rate instead.
- Enable Debug Logging to write requests/responses to the PHP
  error log while testing, then turn it off.
- In your Transdirect members area module settings you can
  disable/rename individual couriers and add surcharges - those
  rules apply to API quotes automatically.

v1.1.0 ADDITIONS
- Hide Couriers: tick any courier to remove it from checkout.
- Courier Display Names: rename couriers (code=Name; code=Name).
  Give two couriers the SAME name to group them - only the
  cheapest of the group is shown (e.g. name all the TNT Express
  services "Express Courier" to collapse them to one option).
- Require Product Dimensions (Yes/No): if Yes, Courier Delivery
  is hidden entirely when any cart item has no dimensions set,
  instead of quoting with the default dimensions.
- Existing installs upgrade automatically: just upload the new
  file and open Admin > Modules > Shipping Modules once - the
  new settings appear without removing/reinstalling (your API
  key and settings are kept).

v1.2.0 ADDITION
- Show Delivery Time (Yes/No): set to No to hide the estimated
  delivery time, e.g. "(1 Business Day)", after courier names.

v1.3.0 ADDITION
- Hide when Australia Post can handle it (Yes/No): if Yes,
  Courier Delivery is hidden when the whole order fits within
  Australia Post parcel limits (22kg total, 105cm length,
  0.25 cubic metres, using the same stacking logic as the
  AusPost module), so couriers only appear for orders that
  AusPost cannot carry. Safety: only applies while the
  Australia Post module is installed and enabled, so it can
  never leave checkout with no shipping options.
