Recalculation Triggers
Understanding what actions cause NetSuite to recalculate inventory costs.
Overview: Cost-Setting vs Cost-Consuming
TRANSACTION TYPES BY COST IMPACT
═══════════════════════════════════════════════════════════════════════════════
┌─────────────────────────────────────────────────────────────────────────────┐
│ COST-SETTING TRANSACTIONS │
│ (These ESTABLISH or CHANGE item cost) │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Item Receipt │ │ Vendor Bill │ │ Inventory │ │
│ │ │ │ (Direct) │ │ Adjustment │ │
│ │ Sets cost at │ │ │ │ (QTY PLUS +) │ │
│ │ receipt rate │ │ Sets cost at │ │ │ │
│ │ │ │ bill rate │ │ Sets cost for │ │
│ └─────────────────┘ └─────────────────┘ │ new units │ │
│ └─────────────────┘ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Work Order │ │ Assembly │ │ Customer │ │
│ │ Completion │ │ Build │ │ Return │ │
│ │ │ │ │ │ │ │
│ │ Sets cost from │ │ Sets cost from │ │ Returns at │ │
│ │ components+WIP │ │ components │ │ original cost │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────────────────────────┐
│ COST-CONSUMING TRANSACTIONS │
│ (These USE the calculated item cost) │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Item │ │ Invoice │ │ Cash Sale │ │
│ │ Fulfillment │ │ (Direct) │ │ │ │
│ │ │ │ │ │ │ │
│ │ COGS at │ │ COGS at │ │ COGS at │ │
│ │ current cost │ │ current cost │ │ current cost │ │
│ └─────────────────┘ └─────────────────┘ └─────────────────┘ │
│ │
│ ┌─────────────────┐ ┌─────────────────┐ ┌─────────────────┐ │
│ │ Work Order │ │ Vendor │ │ Inventory │ │
│ │ Issue │ │ Return │ │ Adjustment │ │
│ │ │ │ │ │ (QTY MINUS -) │ │
│ │ WIP at │ │ Returns at │ │ │ │
│ │ current cost │ │ current cost │ │ Uses current │ │
│ └─────────────────┘ └─────────────────┘ │ cost to remove │ │
│ └─────────────────┘ │
│ ┌─────────────────┐ │
│ │ Transfer │ │
│ │ Order │ │
│ │ │ │
│ │ Moves at │ │
│ │ current cost │ │
│ └─────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
Inventory Adjustment - Special Case
Inventory Adjustment can be either cost-setting OR cost-consuming depending on quantity direction:
| Adjustment Type | Direction | Cost Behavior | Triggers Recalc? |
|---|---|---|---|
| Positive (+) | Adding units | Cost-Setting - You specify the cost for new units | Yes - affects average cost |
| Negative (-) | Removing units | Cost-Consuming - Uses existing calculated cost | No - just uses current cost |
INVENTORY ADJUSTMENT EXAMPLES
═══════════════════════════════════════════════════════════════════════════════
POSITIVE ADJUSTMENT (+50 units @ $12.00):
─────────────────────────────────────────────────────────────────────────────
Before: 100 units @ $10.00 avg = $1,000
Adjustment: +50 units @ $12.00 = $600
After: 150 units @ $10.67 avg = $1,600
→ COST-SETTING: You specified $12.00 for new units
→ Recalculates average cost
→ Triggers recalculation of subsequent transactions
NEGATIVE ADJUSTMENT (-50 units):
─────────────────────────────────────────────────────────────────────────────
Before: 100 units @ $10.00 avg = $1,000
Adjustment: -50 units @ $10.00 (uses current avg)
After: 50 units @ $10.00 avg = $500
→ COST-CONSUMING: Uses existing $10.00 average cost
→ Does NOT change the average cost rate
→ Just removes value from inventory
Transactions That Trigger Recalculation
Primary Triggers (Cost-Setting)
| Transaction | Trigger Condition | What Gets Recalculated |
|---|---|---|
| Item Receipt | Any save/edit | Item cost, all subsequent transactions |
| Vendor Bill (Direct) | Any save/edit | Item cost, all subsequent transactions |
| Vendor Bill (from IR) | Rate differs from IR | Cost variance, subsequent transactions |
| Inventory Adjustment | With cost specified | Item cost layer, subsequent transactions |
| Work Order Completion | Any completion | Finished goods cost |
| Assembly Build | Any build | Assembly item cost |
| Customer Return | Return accepted | Adds back to inventory at cost |
Secondary Triggers (Date/Quantity Changes)
| Action | Effect | Recalculation Scope |
|---|---|---|
| Backdating a receipt | Changes cost timeline | All transactions after backdated date |
| Changing quantity | Affects average calculation | Recalculates average cost |
| Changing rate | Direct cost change | All consuming transactions |
| Deleting transaction | Removes from cost flow | Recalculates all subsequent |
Flow: What Triggers What
TRIGGER FLOW DIAGRAM
═══════════════════════════════════════════════════════════════════════════════
TRIGGER EVENT RECALCULATION SCOPE
│
┌──────────────┴──────────────┐
│ │
▼ ▼
┌──────────┐ ┌──────────────┐
│ CREATE │ │ EDIT │
│ NEW │ │ EXISTING │
└────┬─────┘ └──────┬───────┘
│ │
▼ ▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ │
│ Is this a COST-SETTING transaction? │
│ (Receipt, Bill Direct, Adjustment with cost, WO Completion, Build) │
│ │
└────────────────────────────────┬────────────────────────────────────────────┘
│
┌────────────┴────────────┐
│ │
YES NO
│ │
▼ ▼
┌───────────────────────────┐ ┌───────────────────────────┐
│ ITEM FLAGGED "IN QUEUE" │ │ No cost recalculation │
│ │ │ (but may update GL) │
│ Affected item(s) will │ │ │
│ be recalculated │ │ │
└─────────────┬─────────────┘ └───────────────────────────┘
│
▼
┌───────────────────────────────────────────────────────────────┐
│ RECALCULATION IDENTIFIES ALL AFFECTED TRANSACTIONS │
│ │
│ From: Transaction date │
│ To: Current date │
│ │
│ All transactions with this item in this date range │
│ will have their COGS/WIP/Inventory values recalculated │
└───────────────────────────────────────────────────────────────┘
Detailed Trigger Matrix
When Item Receipt is Saved
ITEM RECEIPT TRIGGER CHAIN
═══════════════════════════════════════════════════════════════════════════════
Item Receipt Saved (100 units @ $10)
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ STEP 1: Item X flagged "In Queue" │
└─────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ STEP 2: Cost Engine collects all Item X transactions after receipt date │
│ │
│ Date Range: Receipt Date ──────────────────────────────────► Today │
│ │
│ Found: │
│ • Invoice #1001 (Date: Day 2) - Sold 30 units │
│ • Cash Sale #2001 (Date: Day 3) - Sold 20 units │
│ • Fulfillment #3001 (Date: Day 5) - Shipped 10 units │
│ • WO Issue #4001 (Date: Day 7) - Used 15 units │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ STEP 3: Recalculate each transaction with new cost │
│ │
│ Invoice #1001: COGS = 30 × $10 = $300 (updated) │
│ Cash Sale #2001: COGS = 20 × $10 = $200 (updated) │
│ Fulfillment #3001: COGS = 10 × $10 = $100 (updated) │
│ WO Issue #4001: WIP = 15 × $10 = $150 (updated) │
│ │
└─────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ STEP 4: GL entries adjusted via System COGS Adjustment │
│ │
│ Creates adjustment entries to correct GL to match new COGS values │
└─────────────────────────────────────────────────────────────────────────────┘
When Vendor Bill Rate Differs
VENDOR BILL VARIANCE TRIGGER
═══════════════════════════════════════════════════════════════════════════════
Item Receipt: 100 units @ $10.00 (estimated)
│
▼
Vendor Bill Received: 100 units @ $12.00 (actual)
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ VARIANCE DETECTED: $2.00 per unit │
│ │
│ Total Variance: 100 × $2.00 = $200.00 │
│ │
│ This triggers recalculation of all transactions that used this item │
│ between Receipt date and Bill date │
└─────────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────────┐
│ RECALCULATION OPTIONS (based on costing method): │
│ │
│ AVERAGE COSTING: │
│ New average = Previous avg adjusted by variance │
│ All subsequent COGS recalculated │
│ │
│ STANDARD COSTING: │
│ Variance posted to Purchase Price Variance account │
│ Standard cost unchanged │
│ │
│ FIFO/LIFO: │
│ Cost layer updated to $12.00 │
│ Transactions using that layer recalculated │
└─────────────────────────────────────────────────────────────────────────────┘
Non-Triggers (No Recalculation)
These actions do NOT trigger cost recalculation:
| Action | Why No Trigger |
|---|---|
| Creating Sales Order | No inventory movement |
| Creating Purchase Order | No inventory movement |
| Creating Invoice (from Fulfillment) | Cost already set at fulfillment |
| Customer Payment | No inventory impact |
| Vendor Payment | No inventory impact |
| Editing memo/description fields | No cost-related data changed |
| Changing ship date (no inventory) | No inventory movement |
Trigger Timing by Preference
WHEN TRIGGERS ARE PROCESSED
═══════════════════════════════════════════════════════════════════════════════
PREFERENCE: "After Transaction Entry"
─────────────────────────────────────────────────────────────────────────────
9:00 AM ──▶ Receipt saved
9:00 AM ──▶ IMMEDIATE recalculation starts
9:02 AM ──▶ Recalculation complete, GL updated
PREFERENCE: "Every Hour"
─────────────────────────────────────────────────────────────────────────────
9:00 AM ──▶ Receipt saved (Item flagged "In Queue")
9:15 AM ──▶ Another receipt saved (Item flagged "In Queue")
9:30 AM ──▶ Invoice edited (Item flagged "In Queue")
10:00 AM ──▶ BATCH recalculation starts
│
├── All queued items processed together
├── Chronological order maintained
└── GL updated after completion
10:05 AM ──▶ Recalculation complete
Best Practices for Triggers
Do's
| Practice | Benefit |
|---|---|
| Enter receipts with accurate rates | Minimizes variance recalculations |
| Process bills promptly | Reduces variance window |
| Avoid backdating when possible | Prevents cascading recalculations |
| Batch similar transactions | More efficient processing |
Don'ts
| Avoid | Consequence |
|---|---|
| Frequent rate changes | Repeated recalculations |
| Backdating across periods | Cross-period GL adjustments |
| Editing old transactions | Large recalculation scope |
| Deleting receipts with consumption | Negative inventory issues |
Next Steps
- GL Impact Changes - Which GL entries change after recalculation
- Backdated Transactions - Impact of backdating on costs