Operations analysis · NetSuite TD3016323
Fill rates, on-time shipment, backorders, and fulfillment cost over twelve months, with the three-month decline traced to one location.
Scope: Standard Review. Sales orders dated October 2025 through August 2026, 360 orders, so that every order in scope had at least three weeks to ship before the test date. Fulfillment documents linked to those orders through September 2026. Open order lines across the whole account for the backorder assessment.
For the year as a whole the numbers are good: 91.9% of orders shipped complete, 94.3% of shipped orders went out by their promised date, and the median order ships the day it is entered. For the last three months they are not. Complete-order rate fell from 100% in every month through May to 82% in June, 78% in July, and 70% in August, and on-time shipment fell to 75%. The deterioration has one address. All 20 late shipments in the period came from the Los Angeles Distribution Center, 18 of them exactly a month late, and the center's complete-order rate is 74% against 98% to 99% at the three stores.
Behind the shipped orders sits an open-line population of 222 lines on 73 orders, at least $121,041 of value, and 19 of those orders are already billed without having shipped. Shipping charges billed to customers rose from about $300 a month to $6,200 in August, in step with the delays.
| Metric | Current (12 months) | Latest month | Target | Gap | Trend |
|---|---|---|---|---|---|
| Order fill rate (complete orders) | 91.9% | 69.8% (Aug 2026) | 95% | -3.1 pts | falling |
| Line fill rate | 90.7% | 95% | -4.3 pts | ||
| Unit fill rate | 94.9% | 98% | -3.1 pts | ||
| On-time shipment (of shipped orders) | 94.3% | 75.0% (Aug 2026) | 92% | +2.3 pts | falling |
| Perfect order rate (complete and on time) | 91.9% | 90% | +1.9 pts | ||
| Median days to ship | 0 | 2 | flat |
Calculated as: order fill rate = orders with every line shipped in full / orders; line fill = lines shipped in full / lines; unit fill = units shipped / units ordered; on-time = orders whose last fulfillment is dated on or before the order's promised ship date / orders with a fulfillment; perfect order = complete and on time / all orders (the prompt's definition also requires damage-free delivery and an accurate invoice, which the data cannot test). Targets are the prompt's "low materiality" boundaries.
| Month | Orders | Complete | Partial | No units shipped | On time, of shipped |
|---|---|---|---|---|---|
| 2025-10 | 29 | 100% | 0 | 0 | 100% |
| 2025-11 | 30 | 100% | 0 | 0 | 100% |
| 2025-12 | 29 | 100% | 0 | 0 | 100% |
| 2026-01 | 32 | 100% | 0 | 0 | 100% |
| 2026-02 | 31 | 100% | 0 | 0 | 100% |
| 2026-03 | 32 | 100% | 0 | 0 | 100% |
| 2026-04 | 31 | 100% | 0 | 0 | 100% |
| 2026-05 | 24 | 100% | 0 | 0 | 100% |
| 2026-06 | 34 | 82% | 5 | 1 | 85% |
| 2026-07 | 45 | 78% | 6 | 4 | 86% |
| 2026-08 | 43 | 70% | 7 | 6 | 75% |
Eight months of perfect fulfillment followed by three months of decline is not a capacity story, because order volume in June through August (34, 45, 43) is not far above the earlier months (24 to 32). It is a location story. The table below is the same population split by the fulfilling location.
| Location | Orders | Complete | On time | Median days to ship |
|---|---|---|---|---|
| 01: San Francisco Store | 128 | 97.7% | 100.0% | 0 |
| 02: New York Store | 98 | 99.0% | 100.0% | 0 |
| 03: Los Angeles Distribution Center | 89 | 74.2% | 76.7% | 0 |
| 05: Miami | 44 | 97.7% | 100.0% | 0 |
| Unassigned | 1 | 0.0% | 0.0% | n/a |
20 shipped orders missed their promised date, every one from the Los Angeles Distribution Center, and every one ordered in June, July, or August. 18 of them shipped 30 or 31 days late against a 15-day promise, which means a batch of orders promised in mid-August was fulfilled in mid-September in one pass. Two shipped a day late. The lateness is not scattered; it is a queue that was cleared once.
| Order | Customer | Ordered | Promised | Shipped | Days late | Value |
|---|---|---|---|---|---|---|
| SO4285 | Meetz Industries | 2026-08-08 | 2026-08-23 | 2026-09-23 | 31 | $1,653 |
| SO4274 | Meetz Industries | 2026-06-08 | 2026-06-23 | 2026-07-23 | 30 | $1,653 |
| SO4271 | Godric Motors | 2026-06-03 | 2026-06-18 | 2026-07-18 | 30 | $1,627 |
| SO4282 | Godric Motors | 2026-08-03 | 2026-08-18 | 2026-09-18 | 31 | $1,627 |
| SO4275 | Design Excellence Ltd. Desig | 2026-07-02 | 2026-07-17 | 2026-08-16 | 30 | $1,604 |
| SO4278 | Hugo Limited | 2026-07-07 | 2026-07-22 | 2026-08-21 | 30 | $1,604 |
| SO4284 | Hugo Limited | 2026-08-05 | 2026-08-20 | 2026-09-20 | 31 | $1,604 |
| SO4280 | Blockster Inc. Blockster Inc | 2026-07-12 | 2026-07-27 | 2026-08-26 | 30 | $1,601 |
Open lines: 222 sales order lines where ordered quantity exceeds shipped, on 73 orders, 1,134 units. Value is at least $121,041; 116 of the lines carry no rate, so the true figure is higher. By order status: Pending Fulfillment 40, Billed 19, Pending Approval 13, Pending Billing/Partially Fulfilled 1.
Two of those groups need attention ahead of the others. Nineteen orders are billed but not shipped, which means customers have been invoiced for goods still in the warehouse; those are a customer service problem today and a revenue-cutoff problem at period end. And 30 lines are more than 90 days old, which under the prompt's definition are candidates for cancellation and lost-sales analysis rather than fulfillment. 31 lines belong to orders dated after the test date and are excluded from the aging.
| Order | Customer | Ordered | Status | Open value |
|---|---|---|---|---|
| SO4322 | Magna Tech Limited Magna Tec | 9/11/2026 | Pending Approval | $13,682 |
| SO4150 | Davis Supplies Davis Supplie | 7/5/2026 | Pending Fulfillment | $11,480 |
| SO4312 | Blockster Inc. Blockster Inc | 9/11/2026 | Pending Fulfillment | $10,580 |
| SO4321 | Global Information | 9/10/2026 | Pending Approval | $8,235 |
| SO4308 | Bryan Scott | 9/23/2026 | Pending Fulfillment | $7,495 |
| SO4302 | 78 Josh Feil | 9/24/2026 | Pending Fulfillment | $5,433 |
| SO4175 | Jones Manufacturing | 9/22/2026 | Pending Approval | $5,104 |
| SO4309 | Design Excellence Ltd. Desig | 9/29/2026 | Pending Fulfillment | $4,755 |
Four items account for 64 of the open lines, 16 each: INV_BLD100, INV_ELC001, INV_FRM100, and INV_HDW001. Four items ordered together in the same quantities on sixteen orders is a kit or a bill of materials being sold as components, and it is the first place to look for a stock-out.
| Order | Customer | Ordered | Status | Value |
|---|---|---|---|---|
| SO4150 | Davis Supplies Davis Supplie | 2026-07-05 | Pending Fulfillment | $12,594 |
| SO4161 | Hugo Limited | 2026-08-09 | Pending Fulfillment | $4,314 |
| SO4143 | Realpoint inc. | 2026-06-15 | Pending Fulfillment | $3,952 |
| SO3129 | Susan Adams | 2026-08-31 | Pending Fulfillment | $1,085 |
| SO4297 | Design Excellence Ltd. Desig | 2026-08-01 | Billed | $356 |
| SO4235 | Xandra Underwood | 2026-08-17 | Pending Fulfillment | $350 |
| SO4196 | Dan Coleman | 2026-08-18 | Pending Fulfillment | $94 |
| SO4193 | Cynthia Rose | 2026-08-19 | Pending Fulfillment | $86 |
| SO4181 | Brenda Scott | 2026-08-07 | Pending Fulfillment | $59 |
The account does not expose a shipping cost on fulfillments to SuiteQL, so cost per order cannot be computed and is reported as a data gap. Shipping charged to customers on invoices is available and is shown below as a proxy for freight activity. It ran at $200 to $400 a month until May 2026 and then rose to $2,313 in June, $3,522 in July, and $6,167 in August, a twenty-fold increase over three months that coincides with the distribution center delays. Whether that is expedited freight to recover late orders or a change in what is billed for delivery is a question for operations.
| Failure category | Share of failures | Orders | Value | Root cause, subject to human review |
|---|---|---|---|---|
| Operational delay at one location | 69% | 20 | $21,919 | Los Angeles DC queue cleared a month late in September |
| Unshipped orders in scope | 31% | 9 | $22,890 | 8 pending fulfillment, median age 45 days; largest is $12,594 at LA DC since July 5 |
| Billed without shipment | n/a | 19 | see open lines | Process: invoicing ahead of fulfillment |
| Probable stock-out family | n/a | 16 orders | see open lines | Four components open on the same 16 orders |
| ID | Type | Name | Handle | Scope | Used for | Complete |
|---|---|---|---|---|---|---|
| DL-001 | SuiteQL | Sales order lines | transaction (SalesOrd) join transactionline | Oct 2025 to Sep 2026, 418 orders, 1,295 lines | Fill rates, promised dates, locations | Yes |
| DL-002 | SuiteQL | Fulfillment lines | transaction (ItemShip) join transactionline, createdfrom | 13 months, 429 fulfillments, 3,180 lines | Ship dates, on-time | Yes |
| DL-003 | SuiteQL | Open order lines | transactionline, quantity greater than shipped, not closed | All open, 222 lines | Backorders | Yes, 116 lines lack a rate |
| DL-004 | SuiteQL | Shipping charged | transactionline, itemtype = ShipItem | Trailing 12 months | Freight proxy | Yes, cost side unavailable |
Adaptations from the prompt's templates: fulfillments link to orders through transactionline.createdfrom on the fulfillment lines, not a header field; shipped quantity is transactionline.quantityshiprecv on the order line; transaction.shippingcost is not exposed, so the cost query was replaced by shipping-item lines on invoices; transaction.subsidiary is not exposed, so no subsidiary filter was applied; the on-time test compares the order's last fulfillment date with the order's shipdate, which is the promised ship date in this account.
SELECT so.id, so.tranid, so.trandate, so.shipdate, BUILTIN.DF(so.status), so.entity, BUILTIN.DF(so.entity), so.foreigntotal,
tl.id, tl.item, tl.itemtype, ABS(tl.quantity), NVL(tl.quantityshiprecv, 0), ABS(tl.rate), tl.isclosed, tl.location, BUILTIN.DF(tl.location), tl.expectedshipdate
FROM transaction so JOIN transactionline tl ON tl.transaction = so.id
WHERE so.type = 'SalesOrd' AND tl.mainline = 'F' AND tl.taxline = 'F' AND tl.itemtype IN ('InvtPart','NonInvtPart','Kit','Assembly')
AND so.trandate >= ADD_MONTHS(SYSDATE, -12) AND so.trandate <= SYSDATE
SELECT f.id, f.tranid, f.trandate, f.createddate, BUILTIN.DF(f.status), tl.createdfrom, tl.item, ABS(tl.quantity), BUILTIN.DF(tl.location)
FROM transaction f JOIN transactionline tl ON tl.transaction = f.id
WHERE f.type = 'ItemShip' AND tl.mainline = 'F' AND tl.taxline = 'F' AND tl.itemtype IN ('InvtPart','NonInvtPart','Kit','Assembly') AND f.trandate >= ADD_MONTHS(SYSDATE, -13)
SELECT so.id, so.tranid, so.trandate, BUILTIN.DF(so.status), BUILTIN.DF(so.entity), tl.item, BUILTIN.DF(tl.item), ABS(tl.quantity), NVL(tl.quantityshiprecv, 0), ABS(tl.rate), tl.isclosed, tl.location
FROM transaction so JOIN transactionline tl ON tl.transaction = so.id
WHERE so.type = 'SalesOrd' AND tl.mainline = 'F' AND tl.taxline = 'F' AND tl.itemtype IN ('InvtPart','NonInvtPart','Kit','Assembly') AND tl.isclosed = 'F' AND ABS(tl.quantity) > NVL(tl.quantityshiprecv, 0)
SELECT TO_CHAR(t.trandate, 'YYYY-MM'), t.type, COUNT(DISTINCT t.id), SUM(ABS(NVL(tl.netamount, 0)))
FROM transaction t JOIN transactionline tl ON tl.transaction = t.id
WHERE tl.itemtype = 'ShipItem' AND t.type IN ('SalesOrd','CustInvc','CashSale') AND t.trandate >= ADD_MONTHS(SYSDATE, -12) AND t.trandate <= SYSDATE
GROUP BY TO_CHAR(t.trandate, 'YYYY-MM'), t.type| Assumption | Category | Rationale | Sensitivity | Impact if wrong |
|---|---|---|---|---|
| On time = last fulfillment on or before the order's ship date | Business logic | Prompt definition; ship date is the promise in this account | Medium | On-time rate |
| Complete = every line shipped in full; partial counts as not complete | Business logic | Conservative | Low | Fill rate |
| Orders dated September 2026 excluded from fill and on-time rates | Method | Too recent to have failed | Medium | Scope of 360 orders |
| Lines with no rate valued at zero | Method | No price on 116 lines | Medium | Backorder value understated |
| Fulfilling location = location on most order lines | Method | Orders are single-location in practice | Low | Location split |
| Test | Objective | Result |
|---|---|---|
| G1-001 | Order count valid | Pass 418 orders in twelve months; 360 in scope; matches the transaction count by type |
| G1-002 | Ship date on or after order date | Pass no fulfillment predates its order |
| G1-003 | Fulfillment links valid | Pass every fulfillment line carries an order id |
| G2-001 | Fill rate arithmetic | Pass computed in code; spot-checked on 5 orders |
| G2-002 | On-time arithmetic | Pass 331 on time plus 20 late equals 351 shipped |
Confidence: 95% in the fill and on-time figures as measures of what the account recorded; 75% in the root-cause attribution to the Los Angeles DC as an operational delay rather than a data-entry pattern, since fulfillment dates in this account are set by convention; the stock-out family is a hypothesis for human review.