toga-ai 1.0.703 → 1.0.704

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.
@@ -663,6 +663,22 @@ Parameters are stored **per client DB** but accessed **through the TOGa2 API**,
663
663
  `/locations` for the unit's own location before the write**, mirroring the existing item-line location
664
664
  create one level up. Shared/general fix (any client running serialized item receipts), surfaced by
665
665
  **GroWrk** location **1569**. Deployed.
666
+ - **The inventory-ADJUSTMENT unit path now has the SAME auto-create (fixed 2026-08-30) — it did not
667
+ before, which froze GroWrk.** `syncInventoryAdjustmentFromNetsuite`'s serialized-unit processing took
668
+ the unit's location from the inventory number's `custitemnumber_location` (the unit's own current
669
+ location, falling back to the adjustment line location), but — unlike `syncItemReceiptFromNetsuite` —
670
+ **never auto-created a missing warehouse**, so `POST /units` failed **EV-12** "unable to find a unique
671
+ match" on `location` (`searchCriteria c_netsuiteInternalLocationId=1596`; **0 rows** in
672
+ `Client_Growrk.Locations` for 1596), leaving `NETSUITE_EXECUTION_MODE_INVENTORY_ADJUSTMENTS` stuck at
673
+ `1-RUNNING`. **Fix:** capture the unit location's NAME (`$unitNetsuiteLocationName` from the
674
+ `custitemnumber_location` ref, carried in `$unitsToGet` as `netsuiteLocationName`) and, before **both**
675
+ unit-location reference points (the per-unit PUT-create path and the batch `POST /units` path),
676
+ `POST /locations` when the id is not already in `$lookupWarehouseByNetsuiteLocationInternalId` and a
677
+ name is present — same payload as the receipt sync (`name`, `c_netsuiteInternalLocationId`,
678
+ `locationType = WAREHOUSE_LOCATION_TYPE_UUID`, `isActive=true`, `allowReceiving`/`allowSending=false`),
679
+ then register it in the warehouse lookup. Guarded by `!isset(lookup[id]) && !empty(name)` so it fires
680
+ only for genuinely-missing locations and never duplicates. Shared 1.0 path — benefits all
681
+ serialized-adjustment clients.
666
682
 
667
683
  - **⚠ The exact api2 rejection detail lives in `Logs_<Client>.Api`, not `Logs.Event` (which TRUNCATES
668
684
  it).** When a section throws on an api2 non-success, `Logs.Event` records the error envelope but
@@ -742,6 +758,14 @@ Parameters are stored **per client DB** but accessed **through the TOGa2 API**,
742
758
 
743
759
  ## Change history
744
760
 
761
+ - 2026-08-30 — **Inventory-adjustment serialized-unit path now auto-creates a missing unit warehouse
762
+ (`library`).** `syncInventoryAdjustmentFromNetsuite` took the unit's location from the inventory
763
+ number's `custitemnumber_location` but never created a missing warehouse (unlike
764
+ `syncItemReceiptFromNetsuite`), so `POST /units` failed EV-12 on `location` for GroWrk location **1596**
765
+ (0 rows in `Client_Growrk.Locations`), stuck `INVENTORY_ADJUSTMENTS` at `1-RUNNING`. Fix captures the
766
+ location NAME (`netsuiteLocationName`) and `POST /locations` before both the PUT-create and batch
767
+ `POST /units` paths — guarded `!isset(lookup[id]) && !empty(name)`, same payload as the receipt sync —
768
+ then registers it in the warehouse lookup. Shared path (all serialized-adjustment clients). (jcardinal)
745
769
  - 2026-08-30 — **Rebuilt GroWrk transfer-order integration + shared IF/inventory-adjustment fixes (all in
746
770
  `library/app/api/toga2.php`).** Root-caused the shared `syncTransferOrderFromNetsuite` **non-idempotency**
747
771
  to api2 never inlining `transferOrderItems` (`transfer-orders` has no `InherentRecordChildren` row) — the
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "toga-ai",
3
- "version": "1.0.703",
3
+ "version": "1.0.704",
4
4
  "description": "TOGA Technology Team Claude Knowledge System — shared AI coding harness with skills, knowledge base CLI, and project installer for Claude Code.",
5
5
  "keywords": [
6
6
  "claude",