toga-ai 1.0.890 → 1.0.892

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.
@@ -6,7 +6,7 @@ project: Worker
6
6
  client: shared
7
7
  type: feature
8
8
  status: active
9
- updated: 2026-09-24
9
+ updated: 2026-09-25
10
10
  owners: ["bala", "jcardinal"]
11
11
  files:
12
12
  - worker2/Worker/Netsuite/SalesOrder.php
@@ -79,6 +79,7 @@ Nothing beyond this list. A transfer order has no shipping cost, ship method, te
79
79
  | `otherRefNum` | the PO number (developer's explicit requirement) |
80
80
  | `memo` | `TransferOrders.description` — the NYCHH custom form renders it as **"ORDER DESCRIPTION"** |
81
81
  | `shippingAddress` | the **destination** Location's `primaryLocationAddress.address` (added 2026-09-09, live 2026-09-14). Key **omitted** when the destination has no address — and **omitting it is a bug, not a safe default**: NetSuite then ships to the customer's default site. |
82
+ | `shippingAddress.attention` | the TOGA delivery contact (`transferOrder.contact`): `firstName + ' ' + lastName` (empty parts dropped), fallback `contact._name`. Set only when both an address and a name exist; no contact → attention untouched. Name only, no phone (developer decision). `resolveTransferOrderContactName()`; the address is **cloned** first so the Location's address object is not mutated. Live in prod 2026-09-25. |
82
83
  | `externalId` | `toga-to-<transfer order uuid>` |
83
84
  | line `item` / `quantity` | each transfer-order item |
84
85
  | line `rate` | **0** — the zero-value part |
@@ -193,7 +194,7 @@ Stub detail: `_Model_True` is stubbed with **only** the `FIELD_*` / `FIELDOPT_*`
193
194
  - **The Create Transfer Order modal must (a) drop `"number"` from the POST and (b) send `transferOrderItems` NESTED in the same POST.** If it posts lines in separate calls afterwards, `postPost` reads **zero lines** and the push aborts — the trigger would then have to move. See [Transfer Orders page](../../toga25-supply/features/transfer-orders-page.md).
194
195
  - **dev-sandbox metadata is incomplete** (record 325 + its RecordFields + both inherent-child rows).
195
196
  - **The -8 tax-group list is a snapshot (2026-09-14).** Re-run the check before onboarding any new client; **34283 Yale New Haven Health** and **2661 Endeavor Health** will fail on their first order.
196
- - **Undecided: should the delivery contact go into the NetSuite `attention` field?** NetSuite ship-to addresses carry a person on the first line (order **289193** shows *Frederick Roberts*, the Bellevue delivery contact). `TransferOrders.contactId` exists as an FK on `_Model_Client_TransferOrder` but **nothing in worker2 or toga2-supply reads it**.
197
+ - **Delivery contact → `attention`: shipped 2026-09-25** (row above). In `Core.WorkerJobs.parameters` the FK arrives expanded as `transferOrder.contact` {firstName, lastName} — **no `contactId` key, `contact._name` never present**; no ACL/depth change was needed. toga25-supply's Create Transfer Order modal sets `TransferOrders.contactId` on every order it places. No length cap on attention (NetSuite ~99 chars) — same as other fields.
197
198
  - **Undecided: disable the customer name-search fallback for transfer orders?** `resolveNetSuiteCustomerId()` falls back to a SuiteQL search by company **name** when the destination has no customer id, and NYCHH's `Health & Hospitals` vs `NYC Health + Hospitals` are close enough to attach an order to the wrong NetSuite account.
198
199
  - **Decided and shipped 2026-09-08:** `description` goes out as `memo`, renders as "ORDER DESCRIPTION" on the NYCHH form. Still undecided: the TA number / `customerIdentificationNumber` into custom fields. **`contact` and `createdByUser` cannot be sent** — they need a NetSuite employee/contact id, which NYCHH `Contacts` do not carry.
199
200
 
@@ -260,6 +261,7 @@ When the payload omits the ship-to address the create **succeeds**, so it looks
260
261
 
261
262
  ## Change history
262
263
  - 2026-09-24 — `resolvePurchaseOrderNumber()` bridge-only (column 2143 dropped); multiple POs joined with `' + '`. (jcardinal)
264
+ - 2026-09-25 — delivery contact name sent as `shippingAddress.attention`. (jcardinal)
263
265
 
264
266
  ## Related
265
267
 
@@ -6,7 +6,7 @@ project: Database Changes
6
6
  client: nychh
7
7
  type: client-feature
8
8
  status: active
9
- updated: 2026-09-24
9
+ updated: 2026-09-25
10
10
  owners: [bala, jcardinal]
11
11
  files:
12
12
  - dbchanges2/Client_Nychh/2026-09-09c - UpdateLocationShippingAddresses.sql
@@ -58,7 +58,7 @@ The Create Transfer Order screen picks a **Target Contact** from `Contacts` thro
58
58
  ## Gotchas
59
59
 
60
60
  - **🚩 OPEN — two contacts have no location link.** **Erald Velmishi** (Central Office) and **Harry Ho** (Community Care) got no `Contacts_Locations` row because **neither facility exists in `Locations`**. They will not appear in the Target Contact dropdown anywhere until the locations are created.
61
- - **🚩 OPEN — nothing reads the chosen contact.** `TransferOrders.contactId` is a real FK on `_Model_Client_TransferOrder`, but **no code in worker2 or toga25-supply reads it**. NetSuite ship-to addresses do carry a person on the first line (order **289193** shows *Frederick Roberts*, the Bellevue delivery contact), so wiring the contact into the NetSuite `attention` field is the obvious next step — **undecided, not implemented**. See [transfer-order → NetSuite push](../../../2.0/apps/worker2/features/netsuite-transferorder-outbound-push.md).
61
+ - **Chosen contact → NetSuite `attention` (2026-09-25).** The Create Transfer Order modal sets `TransferOrders.contactId`; the worker2 push sends the contact's name as ship-to `attention` (as order **289193** shows *Frederick Roberts*). This is a *person* on the ship-to, not the AP bill-to tell below. See [transfer-order → NetSuite push](../../../2.0/apps/worker2/features/netsuite-transferorder-outbound-push.md).
62
62
  - **Location 2 "NYC Health + Hospitals" = client-level catch-all; address now 55 Water Street, 10041** (was Jacobi's 1400 Pelham). Its 1,832-of-1,939 TO count is largely an import bug (overwrote user destinations) + NetSuite-entered orders under 28908; fix + ship-to matching in [the NetSuite transfer-order import](./netsuite-transfer-order-import.md).
63
63
  - **⚠ Two locations carry NetSuite customer ids that no longer exist.** **Bellevue Hospital Center → 29275** and **Jacobi Medical Center → 31917**; neither id is in the NetSuite `customer` table, so their addresses came from other sources rather than a `defaultshipping` row. The ids need correcting; until then any NetSuite lookup keyed on them returns nothing.
64
64
  - **⚠ A location's address surfaces ONLY on transfer orders for this client.** Sales orders carry their own `shipToAddressId`, so "the address is fine on the order screens" says nothing about the location record.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "toga-ai",
3
- "version": "1.0.890",
3
+ "version": "1.0.892",
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",
@@ -65,6 +65,25 @@ it: a rewrite silently discards whatever the developer (or a teammate) changed i
65
65
 
66
66
  Only rewrite when explicitly told to.
67
67
 
68
+ ## Check git before stating commit state
69
+
70
+ Developers commit, push, and switch branches on their own between turns. Claude's memory of
71
+ "I edited this, so it is not committed" goes stale fast, and a wrong "not committed" reminder
72
+ confuses people.
73
+
74
+ Claude **must never** say a change is committed, not committed, pushed, or not pushed based on
75
+ memory. Before any such statement, run a fresh check **in the same turn**:
76
+
77
+ ```
78
+ git -C <repo> status --short <file>
79
+ git -C <repo> log -1 --format="%h %ad %s" --date=short -- <file>
80
+ ```
81
+
82
+ - Report what git shows: e.g. "committed in `23a3e11`" or "uncommitted changes in `<file>`".
83
+ - For push state, check `git -C <repo> status -sb` (ahead/behind) — do not assume.
84
+ - If Claude did not check, it says **nothing** about commit or push state. No habit reminders
85
+ like "still not committed" at the end of a summary.
86
+
68
87
  ## Branch protection
69
88
 
70
89
  Never commit directly to `_main`. All changes go through feature branches and pull requests.