Reported gross margin is 39.1%, up two points on last year. Beneath the reported figure, the business holds 600 days of inventory — two-thirds of it in excess of any plausible demand — concentrated in the lowest-margin category. Working capital, not unit cost, is the primary cost problem.
Three findings, in order of financial weight.
1. Inventory is the cost problem. $1,116,806 is on hand against $679,211 of trailing-twelve-month cost of sales — 0.61 turns, roughly 600 days of supply, against a retail norm of 45–90 days. $739,751 sits above a 180-day supply threshold. Only one of 185 stocked SKUs has less than six months of supply.
2. Apparel is where the capital is trapped. Apparel holds 56% of inventory dollars ($627,511), generates 35% of cost of sales, turns 0.38× and carries the thinnest margin of any category (40.9%). Eight leather-goods and bag SKUs alone account for $457K of stock, $409K of it excess, with 3–8 years of supply each.
3. Purchasing is un-governed. Reorder points exist on four items. Open purchase orders are still landing units into SKUs that already have multi-year supply or have not sold in twelve months — including PO395 ($5,620) entirely into dead stock.
On the P&L itself, the reported gross margin improvement (37.1% → 39.1%) is driven wholly by the account 5310 Purchases ratio, which is 100% synthetic in this ledger (see §11). Real transactional margin is 63.6% blended, ~44% on physical product, and improved materially year on year.
Releasing the excess inventory to a 180-day supply level would free approximately $740K of working capital. At a conservative 20% annual carrying cost, the excess is costing $148K per year to hold — equivalent to 16% of real gross profit.
The general ledger contains monthly "Beg Balance Entries" journals (JE102–JE149) that post synthetic revenue and cost in both subsidiaries. They constitute ~86% of GL revenue. Both views are presented; the transactional view is the one that reflects operational decisions.
| Line | FY26 YTD | % Rev | FY25 YTD | % Rev | Change |
|---|---|---|---|---|---|
| Revenue (4210, 4310, 4320, 4450) | $9,299,857 | 100.0% | $7,892,757 | 100.0% | +17.8% |
| 5310 COGS : Purchases | $4,633,330 | 49.8% | $4,098,814 | 51.9% | +13.0% |
| 5340 COGS : Cost of Sales | $524,933 | 5.6% | $414,253 | 5.2% | +26.7% |
| 5360 COGS : 3rd Party Contracting | $515,075 | 5.5% | $454,794 | 5.8% | +13.3% |
| 5205 Purchase Price Variance | $3,160 | 0.0% | — | — | new |
| 5370 Stock Adjustment (credit) | ($9,049) | (0.1%) | — | — | new |
| Total cost of goods sold | $5,667,449 | 60.9% | $4,967,861 | 62.9% | +14.1% |
| Gross margin | $3,632,408 | 39.1% | $2,924,896 | 37.1% | +2.0 pts |
Subsidiaries 1–3; elimination subsidiary excluded. Ties to the Income Statement by posting period.
| Line | FY26 YTD | FY25 YTD | Change |
|---|---|---|---|
| Product revenue (4210) | $1,411,306 | $834,446 | +69.1% |
| Freight revenue (4450) | $15,936 | $4,561 | +249% |
| Returns & allowances (4320) | $282 | — | |
| Revenue | $1,427,524 | $839,007 | +70.1% |
| 5340 Cost of Sales | $524,933 | $414,253 | +26.7% |
| 5205 PPV + 5310 Purchases | $3,223 | — | |
| 5370 Stock Adjustment | ($9,049) | — | |
| Cost of goods sold | $519,106 | $414,253 | +25.3% |
| Gross margin | $908,418 · 63.6% | $424,754 · 50.6% | +13.0 pts |
Blended margin is flattered by ~$546K of service/uncategorized revenue carrying almost no item cost; product-only margin is approximately 44%.
Real cost of sales, FY2026 YTD, attributed via item class with the Merchandise Hierarchy level-1 segment as fallback. Apparel is the category with the highest cost ratio; Home Goods carries the largest absolute cost.
| Category | FY26 revenue | FY26 COGS | COGS % | GM % | FY25 GM % | Share of COGS |
|---|---|---|---|---|---|---|
| Home Goods | $479,025 | $266,816 | 55.7% | 44.3% | 44.0% | 51% |
| Apparel | $307,929 | $179,985 | 58.4% | 41.6% | 38.5% | 35% |
| Beauty | $73,800 | $39,672 | 53.8% | 46.2% | 46.1% | 8% |
| Miscellaneous | $20,925 | $8,300 | 39.7% | 60.3% | — | 2% |
| Electronics | $0 | $3,223 | n/a | cost, no revenue | — | 1% |
| Uncategorized (services, misc.) | $545,844 | $21,111 | 3.9% | 96.1% | 83.1% | 4% |
All figures from inventoryitemlocations at extract time (item-location rows with non-zero on-hand or on-order; 568 rows, 185 SKUs, 5 stocking locations). Velocity is trailing-twelve-month units invoiced or cash-sold.
| Measure | Value | Reference |
|---|---|---|
| Inventory value on hand | $1,116,806 | Sum of onhandvaluemli |
| Real cost of sales, trailing 12 months | $679,211 | COGS accounts, synthetic journals excluded |
| Inventory turns | 0.61× | Retail / wholesale norm 4–8× |
| Days inventory on hand | ~600 | Norm 45–90 |
| Value above 180 days of supply | $739,751 | 66% of on-hand |
| SKUs with reorder point set | 4 of 185 | inventoryitemlocations.reorderpoint |
| Category | On hand | SKUs | 12-mo COGS | Turns | Excess >180d | Dead | GM % (12-mo) |
|---|---|---|---|---|---|---|---|
| Apparel | $627,511 | 52 | $238,737 | 0.38× | $485,829 | — | 40.9% |
| Home Goods | $303,439 | 27 | $333,071 | 1.10× | $121,748 | — | 44.2% |
| Beauty | $99,791 | 31 | $56,403 | 0.57× | $68,696 | — | 45.9% |
| Uncategorized | $49,626 | 53 | $39,478 | 0.80× | $29,048 | $11,823 | 44.6% |
| Miscellaneous | $23,674 | 13 | $0 | 0 | $21,665 | $15,336 | — |
| Electronics | $12,765 | 9 | $3,223 | 0.25× | $12,765 | $12,765 | — |
| Total | $1,116,806 | 185 | $679,211 | 0.61× | $739,751 | $39,924 |
| Location | Value | Units | SKUs | Dead stock value |
|---|---|---|---|---|
| 03: Los Angeles Distribution Center (5) | $352,495 | 7,870 | 141 | $23,798 |
| 01: San Francisco Store (1) | $308,752 | 4,294 | 168 | $9,126 |
| 05: Miami (12) | $212,069 | 3,696 | 119 | — |
| 02: New York Store (3) | $200,969 | 2,042 | 118 | — |
| 04: Chicago Distribution Center (8) | $42,520 | 580 | 22 | $7,000 |
The San Francisco store carries more SKUs (168) than either distribution center — a store operating as a de facto warehouse.
Excess is the on-hand value above a 180-day supply at trailing-twelve-month velocity. These twelve items hold $551K of stock, $450K of it excess.
| Item | Category | On hand | Value | Sold 12 mo | Days supply | GM % | Excess |
|---|---|---|---|---|---|---|---|
| Black Leather Jacket | Apparel | 552 | $110,400 | 90 | 2,239 | 28.7 | $101,525 |
| Black Leather Valise | Apparel | 584 | $75,336 | 88 | 2,422 | 62.9 | $69,737 |
| Brown Leather Satchel | Apparel | 209 | $62,698 | 71 | 1,074 | 22.3 | $52,190 |
| Gold Watch with Leather Strap | Apparel | 270 | $59,400 | 73 | 1,350 | 37.4 | $51,480 |
| Brown Leather Valise | Apparel | 283 | $45,280 | 87 | 1,187 | 36.2 | $38,414 |
| Canvas Backpack | Apparel | 328 | $40,016 | 52 | 2,302 | 50.0 | $36,887 |
| Indigo Relaxed Fit | Beauty* | 525 | $36,750 | 67 | 2,860 | 48.5 | $34,437 |
| Olive Utility Pack | Apparel | 276 | $27,600 | 68 | 1,481 | 48.1 | $24,246 |
| Estes Park Chair | Home Goods | 54 | $16,605 | 35 | 563 | 2.6 | $11,296 |
| The Bindel Jacket | Apparel | 71 | $19,880 | 67 | 387 | 10.0 | $10,633 |
| Black Leather Belt | Apparel | 300 | $11,100 | 70 | 1,564 | 18.4 | $9,823 |
| Patriarch Luxury Firm T M | Home Goods | 36 | $14,400 | 25 | 526 | 54.8 | $9,472 |
* "Indigo Relaxed Fit" is classed as Beauty in the item master; it is almost certainly apparel. See §11, data hygiene.
| Item | Category | Qty | Value | Location (qty) | On order |
|---|---|---|---|---|---|
| ASUS PG348Q 34" Curved Monitor | Uncategorized | 11 | $9,081 | LA DC 11 | +1 |
| INV_2-Layer Copper | Electronics | 461 | $7,816 | SF Store 211 · LA DC 250 | — |
| INV_BLT001 | Miscellaneous | 154 | $6,622 | LA DC 54 · Chicago DC 100 | — |
| INV_Solder Mask – Blue | Electronics | 773 | $3,865 | SF Store 250 · LA DC 523 | — |
| INV_CAP001 | Miscellaneous | 154 | $3,850 | LA DC 54 · Chicago DC 100 | — |
| INV_RIM001 | Miscellaneous | 22 | $2,200 | LA DC 22 | +10 |
| INV_PCB005 | Uncategorized | 10 | $1,270 | SF Store 10 | — |
| INV_NUT001 | Miscellaneous | 54 | $1,080 | LA DC 54 | +110 |
| INV_SPK001 | Miscellaneous | 472 | $944 | LA DC 472 | +50 |
| INV_KBA001 | Uncategorized | 35 | $893 | SF Store 35 | — |
$159,929 across 97 item-location pairs sits at a location where that item has recorded no sales in twelve months, while the same item sells elsewhere. This is inventory that is neither dead nor excess in aggregate — it is simply in the wrong place.
Items with gross margin below 25% and more than $3,000 on hand. Holding cost on these likely exceeds their contribution.
| Item | On hand | Value | Days supply | GM % | On order |
|---|---|---|---|---|---|
| Brown Leather Satchel | 209 | $62,698 | 1,074 | 22.3 | +1 |
| The Bindel Jacket | 71 | $19,880 | 387 | 10.0 | — |
| Estes Park Chair | 54 | $16,605 | 563 | 2.6 | — |
| Black Leather Belt | 300 | $11,100 | 1,564 | 18.4 | +6 |
| Salida Backpack GR | 65 | $5,200 | 516 | 17.6 | — |
| Salida Backpack BU | 63 | $5,040 | 523 | 17.5 | — |
Open PO lines for items already dead or above 365 days of supply. Total open exposure is modest ($8,084) but the pattern matters more than the amount: purchasing is replenishing SKUs that will not sell for years.
| PO | Date | Vendor | Item | Open qty | Open value | Destination | Stock status |
|---|---|---|---|---|---|---|---|
| PO395 | 2026-06-01 | Johnson Supply | INV_NUT001 | 100 | $2,000 | Chicago DC | Dead |
| PO395 | 2026-06-01 | Johnson Supply | INV_FRM001 | 10 | $1,850 | Chicago DC | 1,004 d supply |
| PO395 | 2026-06-01 | Johnson Supply | INV_RIM001 | 10 | $1,000 | Chicago DC | Dead |
| PO1171 | 2026-08-25 | China Manufacturer | ASUS PG348Q Monitor | 1 | $750 | SF Store | Dead · pending approval |
| PO395 | 2026-06-01 | Johnson Supply | INV_HDW002 | 10 | $670 | Chicago DC | 1,004 d supply |
| PO394 / 1183 / 1178 / 1157 / 364 / 314 / 375 / 374 | Sep 2026 | Generation N, Interco | INV_Grey Cotton Hoodie | 37 | $1,140 | SF, LA, NY, Miami | 521 d supply |
| PO1177 | 2026-07-01 | Generation N | Brown Leather Satchel | 1 | $300 | SF Store | 1,074 d · 22% GM |
| PO1186 | 2026-09-15 | Johnson Supply | INV_NUT001 | 10 | $200 | SF Store | Dead |
| PO395 | 2026-06-01 | Johnson Supply | INV_SPK001 | 50 | $100 | Chicago DC | Dead |
| PO1175 / 1176 | Jun–Sep 2026 | Generation N | Black Leather Belt | 2 | $74 | SF Store | 1,564 d · 18% GM |
| Total — 18 open lines | 231 | $8,084 | |||||
PO395 alone: $5,620 to Chicago DC, every line into dead or multi-year stock. Eight separate small POs for Grey Cotton Hoodie in one month indicate no consolidated replenishment logic.
Real (transactional) operating expense is small relative to cost of goods and is concentrated in Sales. Administration, Product Development and Merchandising expense in the GL is entirely synthetic.
| Department | FY26 real | FY25 real | FY26 synthetic |
|---|---|---|---|
| Sales | $361,408 | $332,850 | — |
| (no department) | $62,680 | $0 | — |
| Store Operations | $650 | — | — |
| Administration | $392 | — | $1,647,597 |
| Warehouse Operations | $74 | — | — |
| Merchandising | — | — | $164,039 |
| Product Development | — | — | $149,393 |
| Account | FY26 YTD | FY25 YTD | Change |
|---|---|---|---|
| 6060 Advertising | $188,936 | $169,290 | +11.6% |
| 6655 Computer – Office Expense | $73,817 | $70,003 | +5.4% |
| 6671 Telephone – Regular Service | $61,514 | $58,335 | +5.4% |
| 6260 Training Expense | $53,550 | $0 | new |
| 6240 Supplies Expense | $24,488 | $23,223 | +5.4% |
| 6640 Other Utilities | $7,381 | $7,000 | +5.4% |
| 6630 Repairs & Maintenance | $5,272 | $5,000 | +5.4% |
| 6250 Automobile Expense | $3,000 | $0 | new |
| 6610 Rent Expense | $2,880 | $0 | new |
A uniform +5.4% across five unrelated accounts suggests a contractual or indexed uplift rather than activity-driven cost growth.
Ranked by financial weight. Impact figures are indicative and depend on the assumptions in §10.
Eight SKUs (Black Leather Jacket, both Valises, Brown Satchel, Gold Watch, Canvas Backpack, Olive Utility Pack, Indigo Relaxed Fit) hold $457K, of which $409K is excess at 3–8 years of supply. Run a structured markdown, outlet or wholesale clearance to a 180-day target. Even at 30% below cost, units that would otherwise take years to sell are converted to cash.
Twelve SKUs have open PO quantity landing into dead or multi-year stock. Cancel PO395 (Johnson Supply, $5,620, Chicago DC — every line dead or 1,000+ days), reject PO1171 (monitor, pending approval), and defer the 37 Grey Cotton Hoodie units across eight POs. Institute a rule: no PO line where projected days of supply after receipt exceeds 365.
Only 4 of 185 SKUs have a reorder point. Derive ROP and PSL per item-location from trailing velocity (target 60–90 days of supply, safety stock at lead time) and load them to inventoryitemlocations. This converts purchasing from judgement to policy and is the single change that keeps the problem from rebuilding.
$160K across 97 item-location pairs sits where the item has not sold in a year. Transfer to the location that does sell it (or to the LA DC as the primary node). Reduces store carrying cost, improves availability, and removes the need to buy more of items that are already owned.
48 SKUs, $39,924, zero sales in twelve months. Confirm the Electronics/Miscellaneous components are not committed to open work orders; then scrap, return to vendor, or sell as surplus. Take the write-down in one period rather than carrying it.
Estes Park Chair (2.6% GM), Bindel Jacket (10%), Salida Backpacks (~18%), Black Leather Belt (18%), Brown Leather Satchel (22%). Each is also over-stocked. Raise price where the market allows, renegotiate cost with Generation N, or discontinue after clearance. Do not reorder.
$62,680 of FY26 expense has no department (none in FY25). Training ($53,550), Automobile ($3,000) and Rent ($2,880) are new lines with no prior-year equivalent. Assign owners and confirm these are budgeted.
Advertising is up $19.6K (+11.6%) while Apparel stock ages. Direct incremental marketing at the clearance program in Recommendation 1; measure cost per unit of excess cleared rather than cost per revenue dollar.
| Scenario | Excess addressed | Recovery rate | Cash released | Annual carrying cost avoided* |
|---|---|---|---|---|
| Top 8 Apparel SKUs, aggressive clearance | $409,000 | 70% | $286,300 | $81,800 |
| Top 8 Apparel SKUs, at cost | $409,000 | 100% | $409,000 | $81,800 |
| All excess to 180 days, blended | $739,751 | 80% | $591,800 | $148,000 |
| Dead stock disposal | $39,924 | 10% | $4,000 | $8,000 |
* At a 20% annual carrying-cost rate (capital, storage, shrink, obsolescence). Recovery rates are planning assumptions, not forecasts.
| Assumption | Basis |
|---|---|
| Comparison span | FY26 YTD = posting periods Jan–Sep 2026; FY25 comparator = Jan–Sep 2025 (same nine months). Fiscal year is calendar year. |
| Synthetic-journal exclusion | Transactions with memo LIKE 'Beg Balance%' are treated as synthetic (journals JE102–JE149, one per subsidiary per month). Excluded from all "real"/"transactional" figures; included in "reported" figures. |
| Subsidiary scope | Subsidiaries 1, 2, 3 via transactionline.subsidiary. Elimination subsidiary 4 excluded (zero P&L activity). |
| Revenue sign | GL stores revenue as credits (negative). Reported as -SUM(tal.amount). COGS/expense reported as SUM(tal.amount). |
| Category attribution | item.class where set (30 items); otherwise Merchandise Hierarchy level-1 segment (csegmh_cseg_1) on the item or its matrix parent; otherwise "Uncategorized". Category names Home Goods / Apparel / Beauty / Electronics / Miscellaneous come from the account. |
| Velocity window | Trailing 12 months from 2025-09-18, units on CustInvc and CashSale lines (mainline='F', taxline='F'). Daily rate = units ÷ 365. |
| Days of supply | On-hand quantity ÷ daily rate, per item across all locations. Items with zero 12-month sales are "dead" (undefined DOS). |
| Excess | On-hand value × (1 − 180 ÷ DOS) for items above 180 DOS; full on-hand value for dead items. 180 days chosen as a lenient threshold; a 90-day target would classify more as excess. |
| Stranded | Item-location rows with on-hand > 0 and zero 12-month sales at that location, regardless of the item's sales elsewhere. Computed per transactionline.location. |
| Inventory value | inventoryitemlocations.onhandvaluemli (multi-location average cost). Rows with null value treated as zero. |
| Turns | Trailing 12-month real COGS ÷ current on-hand value (point-in-time, not average inventory). Average-inventory turns would be similar given the slow movement. |
| Carrying cost | 20% of inventory value per year — a conventional planning figure covering capital, storage, insurance, shrink and obsolescence. Not derived from this account. |
| Open PO exposure | PurchOrd with status A/B/E (pending receipt, partially received, pending approval); open qty = ordered − quantityshiprecv; value pro-rated from line netamount. |
| Benchmarks | Retail/wholesale inventory turns of 4–8× and 45–90 days on hand are general industry ranges, quoted for orientation only. |
item.class is populated on ~30 items; "Indigo Relaxed Fit" is classed Beauty; $50K sits in Uncategorized. Category figures shift as classification improves.All queries are SuiteQL, run live against this account on 2026-09-18 with the current user's Administrator role. Reproducible via the SuiteQL Query Tool.
SELECT a.acctnumber, a.fullname,
CASE WHEN ap.startdate >= TO_DATE('2026-01-01','YYYY-MM-DD') THEN 'FY26' ELSE 'FY25' END AS fy,
CASE WHEN t.memo LIKE 'Beg Balance%' THEN 'synthetic' ELSE 'real' END AS src,
ROUND(SUM(-tal.amount),2) AS amount
FROM transactionaccountingline tal
JOIN transaction t ON tal.transaction = t.id
JOIN transactionline tl ON tl.transaction = tal.transaction AND tl.id = tal.transactionline
JOIN account a ON tal.account = a.id
JOIN accountingperiod ap ON t.postingperiod = ap.id
WHERE t.posting = 'T' AND tal.posting = 'T'
AND tl.subsidiary IN (1,2,3)
AND a.accttype IN ('Income','COGS')
AND ((ap.startdate >= TO_DATE('2025-01-01','YYYY-MM-DD') AND ap.startdate < TO_DATE('2025-10-01','YYYY-MM-DD'))
OR ap.startdate >= TO_DATE('2026-01-01','YYYY-MM-DD'))
GROUP BY a.acctnumber, a.fullname,
CASE WHEN ap.startdate >= TO_DATE('2026-01-01','YYYY-MM-DD') THEN 'FY26' ELSE 'FY25' END,
CASE WHEN t.memo LIKE 'Beg Balance%' THEN 'synthetic' ELSE 'real' END
ORDER BY a.acctnumber, fy, srcSELECT
COALESCE(c.name, BUILTIN.DF(i.csegmh_cseg_1), BUILTIN.DF(p.csegmh_cseg_1), 'Uncategorized') AS category,
CASE WHEN ap.startdate >= TO_DATE('2026-01-01','YYYY-MM-DD') THEN 'FY26' ELSE 'FY25' END AS fy,
ROUND(SUM(CASE WHEN a.accttype = 'Income' THEN -tal.amount ELSE 0 END),2) AS revenue,
ROUND(SUM(CASE WHEN a.accttype = 'COGS' THEN tal.amount ELSE 0 END),2) AS cogs
FROM transactionaccountingline tal
JOIN transaction t ON tal.transaction = t.id
JOIN transactionline tl ON tl.transaction = tal.transaction AND tl.id = tal.transactionline
JOIN account a ON tal.account = a.id
JOIN accountingperiod ap ON t.postingperiod = ap.id
LEFT JOIN item i ON tl.item = i.id
LEFT JOIN item p ON i.parent = p.id
LEFT JOIN classification c ON i.class = c.id
WHERE t.posting = 'T' AND tal.posting = 'T'
AND tl.subsidiary IN (1,2,3)
AND a.accttype IN ('Income','COGS')
AND (t.memo IS NULL OR t.memo NOT LIKE 'Beg Balance%')
AND ((ap.startdate >= TO_DATE('2025-01-01','YYYY-MM-DD') AND ap.startdate < TO_DATE('2025-10-01','YYYY-MM-DD'))
OR ap.startdate >= TO_DATE('2026-01-01','YYYY-MM-DD'))
GROUP BY COALESCE(c.name, BUILTIN.DF(i.csegmh_cseg_1), BUILTIN.DF(p.csegmh_cseg_1), 'Uncategorized'),
CASE WHEN ap.startdate >= TO_DATE('2026-01-01','YYYY-MM-DD') THEN 'FY26' ELSE 'FY25' END
ORDER BY category, fySELECT iil.item, i.itemid, COALESCE(c.name, BUILTIN.DF(i.csegmh_cseg_1), BUILTIN.DF(p.csegmh_cseg_1), 'Uncategorized') AS category, iil.location, l.name AS locname, iil.quantityonhand AS qoh, iil.onhandvaluemli AS val, iil.quantityonorder AS qoo FROM inventoryitemlocations iil JOIN item i ON iil.item = i.id LEFT JOIN item p ON i.parent = p.id LEFT JOIN classification c ON i.class = c.id JOIN location l ON iil.location = l.id WHERE iil.quantityonhand <> 0 OR iil.quantityonorder <> 0
SELECT tl.item, tl.location,
SUM(ABS(tl.quantity)) AS units, SUM(ABS(tl.netamount)) AS rev
FROM transactionline tl
JOIN transaction t ON tl.transaction = t.id
WHERE t.type IN ('CustInvc','CashSale')
AND tl.mainline = 'F' AND tl.taxline = 'F'
AND tl.item IS NOT NULL AND tl.subsidiary IN (1,2,3)
AND t.trandate >= TO_DATE('2025-09-18','YYYY-MM-DD')
GROUP BY tl.item, tl.locationSELECT tl.item, SUM(tal.amount) AS cogs
FROM transactionaccountingline tal
JOIN transaction t ON tal.transaction = t.id
JOIN transactionline tl ON tl.transaction = tal.transaction AND tl.id = tal.transactionline
JOIN account a ON tal.account = a.id
WHERE t.posting = 'T' AND tal.posting = 'T'
AND a.accttype = 'COGS' AND tl.subsidiary IN (1,2,3)
AND (t.memo IS NULL OR t.memo NOT LIKE 'Beg Balance%')
AND t.trandate >= TO_DATE('2025-09-18','YYYY-MM-DD')
AND tl.item IS NOT NULL
GROUP BY tl.item// per item: qoh, val, qoo summed across locations // velocity u = 12-mo units; dos = qoh / (u / 365) // band: u == 0 → dead; dos > 720 → >2 yrs; > 365 → 1–2 yrs; > 180 → 6–12 mo; else < 6 mo // excess = u == 0 ? val : (dos > 180 ? val * (1 - 180/dos) : 0) // gm% = (rev - cogs) / rev; turns = cogs / val // stranded = item-location rows with qoh > 0 and zero sales at that location // aggregates: totals, bands, byCategory, byLocation, topN excess / dead / low-margin / on-order-into-excess
SELECT t.tranid, TO_CHAR(t.trandate,'YYYY-MM-DD') AS podate, BUILTIN.DF(t.status) AS status,
v.entityid AS vendor, i.itemid,
ABS(tl.quantity) AS qty, COALESCE(tl.quantityshiprecv,0) AS received,
ABS(tl.quantity) - COALESCE(tl.quantityshiprecv,0) AS open_qty,
ROUND(ABS(tl.netamount) * (ABS(tl.quantity) - COALESCE(tl.quantityshiprecv,0)) / NULLIF(ABS(tl.quantity),0),2) AS open_value,
l.name AS locname
FROM transactionline tl
JOIN transaction t ON tl.transaction = t.id
JOIN item i ON tl.item = i.id
LEFT JOIN vendor v ON t.entity = v.id
LEFT JOIN location l ON tl.location = l.id
WHERE t.type = 'PurchOrd' AND tl.mainline = 'F' AND tl.taxline = 'F'
AND t.status IN ('A','B','E')
AND ABS(tl.quantity) - COALESCE(tl.quantityshiprecv,0) > 0
AND i.itemid IN (/* excess / dead item list from A6 */)
ORDER BY open_value DESCSELECT COALESCE(d.name,'(none)') AS department,
ROUND(SUM(CASE WHEN ap.startdate >= TO_DATE('2026-01-01','YYYY-MM-DD')
AND (t.memo IS NULL OR t.memo NOT LIKE 'Beg Balance%') THEN tal.amount ELSE 0 END),0) AS fy26_real,
ROUND(SUM(CASE WHEN ap.startdate >= TO_DATE('2026-01-01','YYYY-MM-DD')
AND t.memo LIKE 'Beg Balance%' THEN tal.amount ELSE 0 END),0) AS fy26_synth,
ROUND(SUM(CASE WHEN ap.startdate < TO_DATE('2025-10-01','YYYY-MM-DD')
AND (t.memo IS NULL OR t.memo NOT LIKE 'Beg Balance%') THEN tal.amount ELSE 0 END),0) AS fy25_real
FROM transactionaccountingline tal
JOIN transaction t ON tal.transaction = t.id
JOIN transactionline tl ON tl.transaction = tal.transaction AND tl.id = tal.transactionline
JOIN account a ON tal.account = a.id
JOIN accountingperiod ap ON t.postingperiod = ap.id
LEFT JOIN department d ON tl.department = d.id
WHERE t.posting = 'T' AND tal.posting = 'T' AND tl.subsidiary IN (1,2,3)
AND a.accttype IN ('Expense','OthExpense')
AND ((ap.startdate >= TO_DATE('2025-01-01','YYYY-MM-DD') AND ap.startdate < TO_DATE('2025-10-01','YYYY-MM-DD'))
OR ap.startdate >= TO_DATE('2026-01-01','YYYY-MM-DD'))
GROUP BY COALESCE(d.name,'(none)')
ORDER BY 2 DESC
-- account-level variant: GROUP BY a.acctnumber, a.fullname; real only; FETCH FIRST 12 ROWS ONLY| Source | Use in this report |
|---|---|
NetSuite transactionaccountingline, transaction, transactionline, account, accountingperiod | All P&L, COGS and opex figures (§2, §3, §7). Posting flag on both transaction and accounting line; subsidiary from the transaction line. |
inventoryitemlocations, item, classification, location | Inventory quantity, value, on-order, reorder-point coverage (§4, §5). |
transactionline on PurchOrd, vendor | Open purchase-order exposure (§6). |
Custom segment csegmh_cseg_1 (Merchandise Hierarchy level 1) | Category fallback where item.class is unset. |
| Sonar field notes for account TD3016323 | Known ledger characteristics: synthetic Beg Balance journals; subsidiary and location ids; inventory schema (only 5 of 15 locations hold stock; onhandvaluemli as value column; 4 items with reorder points). |
| "Boardroom Red" branding & formatting guidelines (attached, 1.5 KB) | Typography (Helvetica Neue / Roboto), palette (#1A1A1A, #3C3C3C, #C74634, #1B2838, #EAEAEA), single-column layout, monochrome charts with single red highlight, muted risk boxes, 9-pt disclaimers, subtle top-corner branding. Applied throughout. |
Available on request from the same data: (a) full 185-SKU item-location detail as CSV — on-hand, velocity, days of supply, margin, excess, on-order; (b) suggested reorder point and preferred stock level per item-location from the velocity model; (c) monthly turns and days-of-supply series by category to separate seasonal build from structural excess; (d) vendor-level cost trend for Generation N and Johnson Supply; (e) a standing monthly version of this review.