toga-ai 1.0.76 → 1.0.77
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|-----|---------|-------|
|
|
5
5
|
| [TOGa Desk Architecture](architecture.md) | TOGa Desk is the staff-facing support desk **and field-service platform** (analysts work at `/desk/`). | desk/index.php, desk/includes/loader.php, desk/config.php, desk/includes/controllers/actions.php, desk/includes/controllers/data.php, desk/includes/controllers/modals.php, desk/includes/classes/class.app.php, desk/includes/classes/class.ticket.php, desk/api/index.php, desk/api/resources/tickets.php, crons/tickets.php |
|
|
6
6
|
| [Email-to-Ticket Intake (crons/tickets.php)](features/email-to-ticket-intake.md) | TOGa Desk ingests support email into tickets through a cron-driven IMAP poller (`crons/tickets.php`) plus a postfix pipe variant (`crons/pipe.php`). | crons/tickets.php, crons/tickets_prod.php, crons/pipe.php, desk/includes/classes/class.ticket.php |
|
|
7
|
-
| [Field-Service Dispatch (central / repair orders)](features/field-service-dispatch.md) | The **central** subsystem is TOGa Desk's field-service dispatch domain: repair-order lifecycle, technician scheduling, onsite vs depot service, parts, and shipm | desk/includes/controllers/actions/central/, desk/includes/classes/class.repair.php, desk/includes/classes/class.repairhistory.php, desk/_/browser/datatable/central.php, desk/template/pages/central.php, desk/template/pages/central/view.php |
|
|
7
|
+
| [Field-Service Dispatch (central / repair orders)](features/field-service-dispatch.md) | The **central** subsystem is TOGa Desk's field-service dispatch domain: repair-order lifecycle, technician scheduling, onsite vs depot service, parts, and shipm | desk/includes/controllers/actions/central/, desk/includes/classes/class.repair.php, desk/includes/classes/class.repairhistory.php, desk/_/browser/datatable/central.php, desk/template/pages/central.php, desk/template/pages/central/view.php, desk/template/modals/central/addTracking.php, library/app/model/togadesk/repairordertracking.php, library/app/api/carrier/ups.php |
|
|
8
8
|
| [REST API (RPC-over-POST) & API-Key Auth](features/rest-api.md) | TOGa Desk exposes a programmatic API at `desk/api/`. | desk/api/index.php, desk/api/resources/tickets.php, desk/api/resources/assets.php, desk/api/resources/authenticate.php, desk/includes/classes/class.apikey.php, desk/includes/functions.php |
|
|
9
9
|
| [SMB Contract Editing & the clientMspId Corruption Trap](features/smb-contract-editing.md) | The SMB contracts page (`/desk/?route=toga/smbcontracts&togaClientId=<id>`) edits `TOGA_*.SMBContracts` rows via a modal. | desk/template/modals/toga/smbcontracts/smbContract.php, desk/includes/controllers/modals/toga/smbcontracts/smbContract.php, desk/includes/controllers/actions/toga/smbcontracts/smbContract.php, desk/includes/controllers/actions/toga/smbcontracts/edit.php |
|
|
10
10
|
| [Ticket Lifecycle (class.ticket.php)](features/ticket-lifecycle.md) | All TOGa Desk ticket creation and reply handling funnels through `Ticket` in `desk/includes/classes/class.ticket.php`. | desk/includes/classes/class.ticket.php, desk/includes/controllers/actions.php, desk/api/resources/tickets.php, crons/tickets.php, desk/includes/controllers/actions/tickets/merge.php |
|
|
@@ -7,7 +7,7 @@ client: shared
|
|
|
7
7
|
type: feature
|
|
8
8
|
status: active
|
|
9
9
|
updated: 2026-06-15
|
|
10
|
-
owners: ["jcardinal"]
|
|
10
|
+
owners: ["jcardinal", "mhammontree"]
|
|
11
11
|
files:
|
|
12
12
|
- desk/includes/controllers/actions/central/
|
|
13
13
|
- desk/includes/classes/class.repair.php
|
|
@@ -15,6 +15,9 @@ files:
|
|
|
15
15
|
- desk/_/browser/datatable/central.php
|
|
16
16
|
- desk/template/pages/central.php
|
|
17
17
|
- desk/template/pages/central/view.php
|
|
18
|
+
- desk/template/modals/central/addTracking.php
|
|
19
|
+
- library/app/model/togadesk/repairordertracking.php
|
|
20
|
+
- library/app/api/carrier/ups.php
|
|
18
21
|
related:
|
|
19
22
|
- 1.0/apps/togadesk/architecture.md
|
|
20
23
|
- 1.0/apps/togadesk/features/ticket-lifecycle.md
|
|
@@ -53,6 +56,25 @@ the originating page. Status changes are audited through `RepairHistory` (`repai
|
|
|
53
56
|
onsite/install started → review → closed; depot repairs add parts/tracking steps. Bulk actions
|
|
54
57
|
exist for closing installs and editing onsite tickets.
|
|
55
58
|
|
|
59
|
+
## UPS shipment / carrier-account billing (Prepare Shipment flow)
|
|
60
|
+
The "PREPARE SHIPMENT" button opens modal `desk/template/modals/central/addTracking.php`,
|
|
61
|
+
whose carrier/account dropdown is built from the constant
|
|
62
|
+
`App_Model_TogaDesk_RepairOrderTracking::CARRIER_ACCOUNTS`
|
|
63
|
+
(`library/app/model/togadesk/repairordertracking.php`) — a display⇒value list of multiple
|
|
64
|
+
carrier accounts (Agilant `8696XA`, ODP Veyer `H4Y167`, Compass `33951W`, Advance Auto
|
|
65
|
+
`2V1Y10`, Vision Precision `87161X`, plus FedEx accounts). Submit calls
|
|
66
|
+
`Repair::addTracking($_POST)` (~L600 in `class.repair.php`), which builds an
|
|
67
|
+
`App_Api_Carrier_ShipmentRequest` and calls `App_Api_Carrier_UPS::submitShipmentRequest()`.
|
|
68
|
+
|
|
69
|
+
**The displayed account and the billed account come from different places.** The dropdown is
|
|
70
|
+
just `CARRIER_ACCOUNTS`; the account that actually ships/bills is the hardcoded
|
|
71
|
+
`const SHIPPER_NUMBER` in `library/app/api/carrier/ups.php`, injected into the UPS payload as
|
|
72
|
+
*both* `Shipment.Shipper.ShipperNumber` and `BillShipper.AccountNumber`. `SHIPPER_NUMBER` is
|
|
73
|
+
shared **library core** consumed by every 1.0 app (togadesk, togaview, worker); a separate
|
|
74
|
+
synced copy lives in `_underscore` for 2.0 apps, plus a hardcoded `<ShipAccount>` in
|
|
75
|
+
`library/app/api/essls.php`. Full account-location map:
|
|
76
|
+
`C:\WWW\shipping_carrier_ups_account_location.md`.
|
|
77
|
+
|
|
56
78
|
## Data model
|
|
57
79
|
`repair_orders`, `repair_order_customers`, `repair_order_addresses`, `repair_order_technicians`,
|
|
58
80
|
`repair_history` (in `db_togadesk`), joined to TOGA `ServiceRequests` for managed-service-order
|
|
@@ -70,7 +92,21 @@ always confirm the client arm before changing shared central logic.
|
|
|
70
92
|
an order in an inconsistent state.
|
|
71
93
|
- Cross-database context: some central data controllers switch the DB link to a client database
|
|
72
94
|
(`App_Model_Client::changeDbLinkToClientDatabase()`).
|
|
95
|
+
- **UPS carrier-account dropdown is NOT honored by the shipment API call.** In
|
|
96
|
+
`Repair::addTracking()` the selected `carrierAccount` is only saved onto the tracking record
|
|
97
|
+
(`$track->carrierAccount = $data['carrierAccount']`, ~L932/949/966); it is never passed into
|
|
98
|
+
the `ShipmentRequest`. `submitShipmentRequest()` therefore always bills the hardcoded
|
|
99
|
+
`SHIPPER_NUMBER` (Agilant), so picking ODP Veyer / Compass / etc. has no billing effect. True
|
|
100
|
+
third-party billing would require passing the chosen account into the request via a UPS
|
|
101
|
+
`BillThirdParty` / `BillReceiver` payment block instead of `BillShipper`.
|
|
102
|
+
- The Agilant UPS account is **hardcoded in core, not config/DB** — changing it means editing
|
|
103
|
+
`SHIPPER_NUMBER` in both framework cores (`library` and `_underscore`), the ESSLS
|
|
104
|
+
`<ShipAccount>` XML, the `CARRIER_ACCOUNTS` Agilant entry, and test fallbacks. See the
|
|
105
|
+
account-location map noted under *UPS shipment / carrier-account billing*.
|
|
73
106
|
|
|
74
107
|
## Change history
|
|
108
|
+
- 2026-06-15 — documented UPS Prepare Shipment flow: CARRIER_ACCOUNTS dropdown vs hardcoded
|
|
109
|
+
SHIPPER_NUMBER, and the gotcha that the dropdown selection is never forwarded to the UPS API
|
|
110
|
+
(always bills Agilant). Agilant account migrated 135FV5 → 8696XA. (mhammontree)
|
|
75
111
|
- 2026-06-15 — documented from a source read of `controllers/actions/central/` and
|
|
76
112
|
`class.repair.php` (jcardinal)
|
package/package.json
CHANGED