toga-ai 1.0.104 → 1.0.105
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.
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
| Doc | Summary | Files |
|
|
4
4
|
|-----|---------|-------|
|
|
5
5
|
| [_underscore Framework Architecture](architecture.md) | `_underscore` is the shared PHP backend framework for **all 2.0 applications**. | _underscore/_underscore.php, _underscore/Loader.php, _underscore/Framework.php, _underscore/Model.php, _underscore/Database.php, _underscore/Query.php, _underscore/Route.php, _underscore/Component.php |
|
|
6
|
-
| [Carrier Shipping Labels (UPS/FedEx) & NetSuite Item Fulfillment](features/carrier-shipping-labels.md) | Backend mechanics behind TOGa Supply's Fulfill & Ship: buying a carrier label (UPS/FedEx), persisting it, and creating the NetSuite Item Fulfillment with tracki | _underscore/Model/Client/ItemFulfillment.php, _underscore/Component/Library/Carriers/Ups/Ups.php, _underscore/Trait/Netsuite/ItemFulfillment.php, _underscore/Trait/Netsuite/SalesOrder.php, _underscore/Component/Library/NetSuite/NetSuite.php, _underscore/Model/Client/TrackingNumber.php, _underscore/Model/Client/ShippingMethod.php, _underscore/Model.php, _underscore/Cloud.php |
|
|
6
|
+
| [Carrier Shipping Labels (UPS/FedEx) & NetSuite Item Fulfillment](features/carrier-shipping-labels.md) | Backend mechanics behind TOGa Supply's Fulfill & Ship: buying a carrier label (UPS/FedEx), persisting it, and creating the NetSuite Item Fulfillment with tracki | _underscore/Model/Client/ItemFulfillment.php, _underscore/Model/Client/ItemFulfillments/TrackingNumber.php, _underscore/Component/Library/Carriers/Ups/Ups.php, _underscore/Trait/Netsuite/ItemFulfillment.php, _underscore/Trait/Netsuite/SalesOrder.php, _underscore/Component/Library/NetSuite/NetSuite.php, _underscore/Model/Client/TrackingNumber.php, _underscore/Model/Client/ShippingMethod.php, _underscore/Model.php, _underscore/Cloud.php |
|
|
7
7
|
| [Client Email Template Sending](features/email-template-sending.md) | `_Model_Client_EmailTemplate` sends a stored, client-defined email template by UUID. | _underscore/Model/Client/EmailTemplate.php, _underscore/Model/Client/EmailTemplateOutgoingEmailAddress.php, _underscore/Email.php |
|
|
8
8
|
| [Recursive Item Fulfillments (upstream mirroring)](features/recursive-item-fulfillments.md) | In a multi-tier supply chain a sales order (SO) spawns a purchase order (PO) that becomes another SO downstream, and so on. | _underscore/Model/Client/ItemFulfillment.php, _underscore/Model/Client/ItemFulfillmentItem.php, _underscore/Model/Client/ItemFulfillmentItemUnit.php, _underscore/Model/Client/ItemFulfillmentPackage.php, _underscore/Model/Compass/AdvanceShippingNotice.php, dbchanges2/Core/2026-02-13 - 75601 - RecursiveItemFulfillmentCreation.sql, dbchanges2/Core/2026-06-04 - RecursiveItemFulfillmentPut.sql |
|
|
9
9
|
| [Tracking-Number Bridge Migration (ASN / Item Fulfillment / Item Receipt)](features/tracking-number-bridges.md) | Shipment tracking numbers used to live as **scalar FK columns** (`trackingNumberId`, `returnTrackingNumberId`) directly on the lowest-level "unit"/"item" tables | api2/Component/Api/V2/V2.php, _underscore/Model/Client/AdvanceShippingNoticeItemUnit.php, _underscore/Model/Client/AdvanceShippingNoticeItemUnits/TrackingNumber.php, _underscore/Model/Client/ItemFulfillmentItemUnits/TrackingNumber.php, _underscore/Model/Client/ItemFulfillment.php, _underscore/Model/Prudential/AdvanceShippingNotice.php, _underscore/Model/Compass/AdvanceShippingNotice.php, _underscore/Trait/Netsuite/ItemFulfillment.php, api2/Component/Api/Cxml/Cxml.php, dbchanges2/Client/2026-06-10 - TrackingNumberBridges.sql, dbchanges2/Core/2026-06-10 - TrackingNumberBridges.sql |
|
|
@@ -6,10 +6,11 @@ project: _Underscore
|
|
|
6
6
|
client: shared
|
|
7
7
|
type: feature
|
|
8
8
|
status: active
|
|
9
|
-
updated: 2026-06-
|
|
9
|
+
updated: 2026-06-16
|
|
10
10
|
owners: [mhammontree]
|
|
11
11
|
files:
|
|
12
12
|
- _underscore/Model/Client/ItemFulfillment.php
|
|
13
|
+
- _underscore/Model/Client/ItemFulfillments/TrackingNumber.php
|
|
13
14
|
- _underscore/Component/Library/Carriers/Ups/Ups.php
|
|
14
15
|
- _underscore/Trait/Netsuite/ItemFulfillment.php
|
|
15
16
|
- _underscore/Trait/Netsuite/SalesOrder.php
|
|
@@ -39,7 +40,10 @@ decision** (dev lead Jeff, June 2026) that supersedes what the code currently do
|
|
|
39
40
|
the DB storage field, return `{ trackingNumber, pdfLabel, fileInternalId }` or
|
|
40
41
|
`{ error, trackingNumber }`. UPS path now checks `$shipmentResponse->success` and
|
|
41
42
|
fast-fails on an empty service code (it previously swallowed UPS errors and surfaced
|
|
42
|
-
a misleading "Failed to save PDF to NetSuite").
|
|
43
|
+
a misleading "Failed to save PDF to NetSuite"). These methods (plus `fulfill` and
|
|
44
|
+
`createNetsuiteItemFulfillment`'s package-detail query) resolve the tracking record by
|
|
45
|
+
joining **`ItemFulfillments_TrackingNumbers`** (the bridge); they previously joined the
|
|
46
|
+
dropped `ItemFulfillmentPackages` table — see Gotchas.
|
|
43
47
|
- `_Component_Library_Carriers_Ups::submitShipmentRequest`
|
|
44
48
|
(`Component/Library/Carriers/Ups/Ups.php`): returns `{ success, errorMessage,
|
|
45
49
|
trackingNumber, encodedLabel }`.
|
|
@@ -104,8 +108,20 @@ attempted.
|
|
|
104
108
|
recommended: always scope `getInventoryNumberFromSerialNumber` by location.
|
|
105
109
|
- `createNetsuiteItemFulfillment` doesn't set carrier/method on the NS IF — it defaults
|
|
106
110
|
(can show FedEx for a UPS shipment). Open item.
|
|
111
|
+
- **Carrier-label queries joined the *dropped* `ItemFulfillmentPackages` table** (a
|
|
112
|
+
tracking-number-bridge migration write-back gap). `upsShipmentApi`, `fedexShipmentApi`,
|
|
113
|
+
`fulfill`, and `createNetsuiteItemFulfillment`'s package-detail query resolved the tracking
|
|
114
|
+
number by joining `ItemFulfillmentPackages` — retired by the bridge migration. Post-migration
|
|
115
|
+
that matched the **wrong/null** `TrackingNumbers` record, so the label + `number` saved to the
|
|
116
|
+
wrong row (the bridge-linked record's `labelPdfFile`/`number` stayed null → **reprint had no
|
|
117
|
+
label**) and the NS IF was built **without its tracking number**. **Fixed 2026-06-16** by
|
|
118
|
+
repointing all four joins to `ItemFulfillments_TrackingNumbers`. Diagnostic tell: the
|
|
119
|
+
bridge-linked `TrackingNumbers` row shows `number = NULL` after a "successful" ship. Backend
|
|
120
|
+
change — only effective once deployed to beta. Worth grepping `ItemFulfillmentPackage::TABLE`
|
|
121
|
+
across `_underscore`/`api2`/`library` for the same staleness elsewhere.
|
|
107
122
|
|
|
108
123
|
## Change history
|
|
124
|
+
- 2026-06-16 — Repointed the carrier-label/NS-IF tracking-number queries (`upsShipmentApi`, `fedexShipmentApi`, `fulfill`, `createNetsuiteItemFulfillment`) from the dropped `ItemFulfillmentPackages` table to the `ItemFulfillments_TrackingNumbers` bridge — they had been saving the label/`number` to the wrong/null record (reprint `labelPdfFile` null; NS IF missing tracking). Confirmed working on beta. (mhammontree)
|
|
109
125
|
- 2026-06-10 — Documented carrier shipping label mechanics (UPS/FedEx) + the authoritative GIF label-storage decision and NetSuite IF attachment. (mhammontree)
|
|
110
126
|
|
|
111
127
|
## Related docs
|
|
@@ -135,6 +135,7 @@ returnTrackingNumber: {...} }]`, and an IFIU's as `itemFulfillmentItemUnitTracki
|
|
|
135
135
|
**not** join `Records`. This gap belongs back in the migration (Core §7 + Client §6b + blank-client template).
|
|
136
136
|
|
|
137
137
|
## Change history
|
|
138
|
+
- 2026-06-16 — Caught a migration code-update miss: four queries in `Model/Client/ItemFulfillment.php` (`upsShipmentApi`, `fedexShipmentApi`, `fulfill`, `createNetsuiteItemFulfillment`) still joined the dropped `ItemFulfillmentPackages` table to resolve tracking — repointed to `ItemFulfillments_TrackingNumbers`. See the carrier-shipping-labels doc. (mhammontree)
|
|
138
139
|
- 2026-06-16 — Found + documented the bridge ACL gap: the migration creates bridge `AclRecordPermissions` (317–322) but not their `AclLogicGroups`/`AclLogicGroupExpressions`/`AclRecordExpressions` chain → 403 "No ACL Logic Groups defined" for non-Super-User reads (confirmed prod + all clients). Recorded the `slug='all'`/`sqlExpression='1'` fix for Core + per-client, plus the Client-DB `Records`-table caveat. (mhammontree)
|
|
139
140
|
- 2026-06-10 — Documented the tracking-number bridge migration: scalar FK columns → `*_TrackingNumbers` bridge tables across ASN/IF/IR, ASN unit table rename, packages-table consolidation. (jcardinal)
|
|
140
141
|
|
package/package.json
CHANGED