Add taxableFlag to product updates, QUO-Narrative quote fallback, and orphan reconciliation

- Add taxableFlag boolean field to product update schema and forecast patch
- Fall back to QUO-Narrative product customerDescription for quote narrative
- Reconcile orphaned local opportunity records not found in CW during refresh
- Invalidate caches for removed orphaned opportunities
- Add reconciled event and orphanedCount to refresh events
- Update API_ROUTES.md with taxableFlag field documentation
This commit is contained in:
2026-03-09 17:48:47 -05:00
parent ee3e0a7377
commit 5afda8cb34
5 changed files with 67 additions and 13 deletions
+12 -10
View File
@@ -3875,19 +3875,21 @@ At least one field is required.
"unitCost": 62.5,
"customerDescription": "Onsite labor for rack install",
"productNarrative": "Install, cable, and validate cutover",
"procurementNotes": "Coordinate site contact before arrival"
"procurementNotes": "Coordinate site contact before arrival",
"taxableFlag": true
}
```
| Field | Type | Description |
| --------------------- | ------ | ---------------------------------------------------------- |
| `productDescription` | string | Product description |
| `quantity` | number | Quantity |
| `unitPrice` | number | Unit price (maps to procurement `price`, forecast revenue) |
| `unitCost` | number | Unit cost (maps to procurement `cost`, forecast cost) |
| `customerDescription` | string | Customer-facing description |
| `productNarrative` | string | Custom field `Product Narrative` (`id: 46`) |
| `procurementNotes` | string | Custom field `Procurement Notes` (`id: 29`) |
| Field | Type | Description |
| --------------------- | ------- | ---------------------------------------------------------- |
| `productDescription` | string | Product description |
| `quantity` | number | Quantity |
| `unitPrice` | number | Unit price (maps to procurement `price`, forecast revenue) |
| `unitCost` | number | Unit cost (maps to procurement `cost`, forecast cost) |
| `customerDescription` | string | Customer-facing description |
| `productNarrative` | string | Custom field `Product Narrative` (`id: 46`) |
| `procurementNotes` | string | Custom field `Procurement Notes` (`id: 29`) |
| `taxableFlag` | boolean | Whether this item is taxable (forecast field) |
**Response:**