Costing Versions - Business Concepts
Overview
Costing Versions are containers that hold item prices (costs) for different purposes and time periods. They provide a structured way to manage, plan, and track product costs over time while maintaining complete historical accuracy.
Think of a Costing Version as a "snapshot" or "workspace" for item prices - you can have multiple versions active simultaneously for different purposes (standard costs vs. planned costs), and each version maintains its own complete price history.
Key Business Concepts
1. What is a Costing Version?
A Costing Version is a named collection of item prices that serves a specific business purpose. It acts as:
- A container for item prices with date-effective pricing
- A workspace for planning future costs
- A historical record of cost changes over time
- An approval boundary for price activation workflow
2. Costing Types
There are two main types of costing versions:
Standard Costing (CostingType.Standard)
- Purpose: Represents the "official" costs used for financial transactions
- Usage: Inventory valuation, cost of goods sold (COGS), variance analysis
- Lifecycle: Typically one active standard version at a time per company
- Example: "FY2024-STD" - Standard costs for fiscal year 2024
Planned Costing (CostingType.Planned)
- Purpose: Represents future or proposed costs for planning and simulation
- Usage: Budget planning, what-if scenarios, future price negotiations
- Lifecycle: Multiple planned versions can exist simultaneously
- Examples:
- "2024Q2-PLAN" - Planned costs for Q2 2024
- "SUPPLIER-ALT" - Alternative costs from different supplier
3. Version Status Lifecycle
Every costing version progresses through three states:
┌─────────┐ Activate ┌────────┐ Close ┌────────┐
│ Pending ├───────────────►│ Active ├────────────►│ Closed │
└─────────┘ └────────┘ └────────┘
Pending Status
- Definition: Version has been created but not yet activated
- Behavior:
- Prices can be freely added and modified
- Not available for financial transactions
- Used for setup and data entry
- Use Case: Setting up next year's standard costs
Active Status
- Definition: Version is live and available for use
- Behavior:
- Available for financial transactions
- Individual item prices can still be added (with date-effectiveness)
- Existing prices cannot be modified (only deactivated)
- Use Case: Current fiscal year standard costs
Closed Status
- Definition: Version is archived and read-only
- Behavior:
- No changes allowed whatsoever
- Remains available for historical reporting
- Cannot be reopened
- Use Case: Prior fiscal year costs (locked for audit)
4. Dual Activation Model
The system uses two levels of activation for maximum flexibility and control:
Level 1: Costing Version Activation
Controls whether the entire version is available for use:
Pending Version → Cannot use ANY prices
Active Version → Prices available based on individual activation
Closed Version → Read-only historical access
Level 2: Item Price Activation
Controls whether individual prices within an active version are effective:
Pending Price (IsActivated = false) → Not yet available
Activated Price (IsActivated = true) → Available for cost calculations
Why Both Levels?
This dual approach enables powerful workflows:
Scenario 1: Staged Price Entry
FY2024-STD (Status: Active)
├─ Item A0001: $10.00, FromDate: 2024-01-01 [✓ Activated] ← In use
├─ Item A0001: $12.50, FromDate: 2024-02-15 [✗ Pending] ← Future price, not yet effective
├─ Item B0002: $25.00, FromDate: 2024-01-01 [✓ Activated] ← In use
└─ Item B0002: $27.00, FromDate: 2024-03-01 [✗ Pending] ← Awaiting approval
You can:
- Keep the version ACTIVE for current operations
- Add 1000 new prices with future dates
- Review and approve each price individually
- Activate prices selectively when ready
Scenario 2: Approval Workflow
Step 1: Cost analyst enters 500 price updates → All pending
Step 2: Manager reviews first 100 prices → Activates approved ones
Step 3: Manufacturing continues using old prices for remaining items
Step 4: Manager completes review → Activates remaining prices
Scenario 3: Selective Correction
Problem: One price ($10.00) was entered incorrectly in an active version
Solution:
- Deactivate the incorrect price
- Add new correct price ($12.00)
- Activate the new price
- Version remains active for all other items
5. Date-Effective Pricing
Within a single costing version, you can have multiple prices for the same item with different FromDate values:
Item: A0001 in Version: FY2024-STD
├─ $10.00, FromDate: 2024-01-01 [Activated] ← Used Jan 1 - Feb 14
├─ $12.50, FromDate: 2024-02-15 [Activated] ← Used Feb 15 - Mar 31
└─ $14.00, FromDate: 2024-04-01 [Pending] ← Future price (not yet activated)
How it works:
- When you query for a cost on January 20, 2024 → Returns $10.00
- When you query for a cost on February 20, 2024 → Returns $12.50
- When you query for a cost on March 15, 2024 → Returns $12.50 (most recent activated price)
- The system selects the most recent activated price where
FromDate <= QueryDate
Business Value:
- Price Planning: Enter future prices weeks or months in advance
- Historical Accuracy: Know exactly what the cost was on any past date
- Regulatory Compliance: Maintain immutable audit trail of all price changes
- Approval Workflow: Prices can be reviewed before activation
6. Common Business Scenarios
Scenario A: Annual Cost Update
Situation: New fiscal year requires updated standard costs
Steps:
- Create new version: "FY2025-STD" (Status: Pending)
- Bulk import 5,000 item prices from supplier data
- Review prices with procurement team
- Activate the version (Status: Active)
- Activate all individual item prices
- Close previous year version: "FY2024-STD" (Status: Closed)
Scenario B: Mid-Year Price Increase
Situation: Supplier raises prices effective March 1st
Steps:
- Open active version: "FY2024-STD"
- Add new prices for affected items (FromDate: March 1, 2024)
- Prices remain pending while negotiating with supplier
- Once confirmed, activate the new prices
- System automatically uses new prices for March 1st onward
Scenario C: What-If Analysis
Situation: Evaluating cost impact of switching suppliers
Steps:
- Create planned version: "SUPPLIER-B-EVAL"
- Enter alternative supplier prices
- Activate the planned version
- Run cost roll-ups and BOM calculations using this version
- Compare total costs vs. current standard
- Decision made → Either adopt prices or close the version
Scenario D: Correcting an Error
Situation: Discovered wrong price entered last month
Steps:
- Cannot modify activated price (immutable for audit)
- Deactivate the incorrect price record
- Add new price record with correct value and appropriate FromDate
- Activate the new price
- Both records remain in history for audit trail
Price Activation Workflow
Why Activate Individual Prices?
Individual price activation enables:
- Incremental Updates: Add 1000 prices to an active version, activate them as reviewed
- Approval Gates: Manager reviews and activates prices individually
- Rollback: Deactivate incorrect prices without closing the version
- Future Planning: Enter future prices, activate them when the effective date arrives
Activation Rules
- ✅ Can activate prices in Pending or Active versions
- ❌ Cannot activate prices in Closed versions
- ✅ Can deactivate activated prices (e.g., to correct errors)
- ✅ Can have multiple activated prices for same item with different FromDates
- ✅ System uses most recent activated price where FromDate ≤= transaction date
Querying Prices
Active Prices Only (Default)
Query: GetItemPrice(ItemId: A0001, AsOfDate: 2024-02-20, IsActivated: true)
Returns: $12.50 (most recent activated price on that date)
Pending Prices (For Review)
Query: GetItemPricesForVersion(VersionId: FY2024, IsActivated: false)
Returns: All pending prices awaiting activation
All Prices (Historical Analysis)
Query: GetItemPriceHistory(ItemId: A0001)
Returns: Complete history of all activated prices
Integration with Other Modules
Inventory Module
- Uses active standard costing version for inventory valuation
- FIFO/LIFO methods reference historical prices from costing version
Production/Manufacturing
- BOM cost calculations use prices from specified costing version
- Can compare standard vs. planned versions for cost analysis
Accounts Receivable (AR)
- Invoice COGS calculation uses active standard costing version
- System queries price using invoice posting date
Financial Reporting
- Cost of Goods Sold (COGS) calculated using active standard costs
- Variance analysis compares actual costs vs. standard costing version
Best Practices
1. Version Naming Conventions
Standard Costs: FY[Year]-STD (e.g., "FY2024-STD")
Planned Costs: [Year]Q[Quarter]-PLAN (e.g., "2024Q2-PLAN")
Simulations: [Purpose]-EVAL (e.g., "SUPPLIER-B-EVAL")
2. Lifecycle Management
- ✅ Keep one active standard version per company/legal entity
- ✅ Close previous year versions after fiscal year-end audit
- ✅ Maintain planned versions for each upcoming quarter
- ❌ Avoid having multiple active standard versions (creates confusion)
3. Price Entry Workflow
- Create prices with future FromDates
- Leave as pending during review/negotiation
- Activate prices once confirmed
- System automatically applies on FromDate
4. Audit and Compliance
- Never delete price records (immutable history)
- Deactivate incorrect prices, add corrected versions
- Closed versions provide locked historical record
- ActivatedDate field tracks when prices became effective
Technical Notes for Non-Technical Users
Why Prices Are Immutable
Once a price is activated, it cannot be edited. This is because:
- Financial transactions may have already used that price
- Regulatory requirements demand unchangeable cost history
- Audit trails must be complete and tamper-proof
To "change" a price: Deactivate the old one, add a new one, activate the new one.
Why FromDate and ActivatedDate Are Different
- FromDate: When the price becomes effective for calculations
- ActivatedDate: When the price was approved and made available
Example: On January 15th, you activate a price with FromDate = February 1st.
- Activated on January 15th (ActivatedDate)
- Effective from February 1st onward (FromDate)
Summary
Costing Versions provide enterprise-grade cost management with:
- ✅ Dual activation (version-level and price-level) for workflow flexibility
- ✅ Date-effective pricing with complete historical trail
- ✅ Support for multiple costing scenarios (standard vs. planned)
- ✅ Immutable audit trail for regulatory compliance
- ✅ Flexible approval workflows with staged activation
- ✅ Time-travel queries for historical cost analysis