Net forecast should be calculated on Stock or Customer level.
The calculations are all done at the Stock or Customer level, so in order to see the numbers line up correctly, you'll need to view these at the Stock or Customer level. Aggregating the data to the item level, or some other aggregation will not give you the correct view.
Stock Level means Item-Location and Customer level means Item-location-Customer combination.
Integrating Demand Statement with Supply
Problem
Creating a demand statement is a process that involves statistical forecasting, user inputs, review, and reconciling. However, in order to look at the projected inventories and diagnose supply/demand imbalances, we need to have a single consolidated statement of demand.
The default demand reconciliation process is:
- Generate pyramid
- Generate Stat Forecast
- Calculate impact of Life cycle events
- Apply the life cycle events
- Apply sales and marketing inputs
- Publish the demand plan.
The outputs of this process are:
Step -> Output
- Generate -> None
- Generate Stat Forecast -> Demand Type - Statistical Forecast
- Calculate impact of Life Cycle Events -> Demand Types: Launch Volume, Supercession Volume, Promotion Volume
- Apply the Life Cycle Events -> Demand Types - DemandPlan
- Apply Sales and Marketing input -> Demand Type - DemandPlan
- Publish the Demand Plan -> DemandPlan from sandbox to official ; Recalculate Net Forecast for supply
- Which demand type(s) reflect the agreed to demand?
- Given that we have some shipments and open orders in the system (read from the ERP), how do we adjust the forecast to reflect this new information.
Example:
Today is 21st. (20 days are in the past)
Forecast was 300 for this month (10/day).
So far we have shipped 100 (or 200 or 400). We should have shipped 200 by now given we are 20 days in, but that never happens.
We have open orders in the books of say 50.
How much net remaining forecast do we still need to plan for?
Calculation of the NetForecast
The calculation of the NetForecast records starts from the demand type “DemandPlan”. This is a system defined demand type. The “DemandPlan” may be the result of business rules, user edits, or other mechanisms.
Definitions:
Month to Date Shipments: | The orders in this month that have been marked as shipped. |
Open Orders: | Orders that have a shipdate in this month and are not marked as shipped. |
Total Month Forecast: | The number for the demand type "DemandPlan" for this month. |
Days remaining in period | Number of days from today to the end of the month. |
Daily rate of forecast | Total Month Outstanding Forecast / Number of days in the current month |
For current period it is
If (Month to Date Shipments + Orders) > Total Month Forecast then the Net Forecast = 0;
Else
Updated formula
Forecast amount=Days remaining in Period from start of planning period* daily rate of forecast
outstanding forecast = demand plan - (shipments + orders)
for current period net forecast = days remaining * daily rate.
for all remaining periods net forecast = outstanding forecast
For Future Period it is
If (Month to Date Shipments + Orders) > Total Month Forecast then the Net Forecast = 0;
Else
Forecast amount = {[Total Month Forecast - (Month to Date Shipments + Orders)]
For each Stock (Item/Location combination) we will make one record of demand type “NetForecast” with a quantity = forecast amount, startTime = today, and interval = Days remaining in this period.
Implementation
I suggest that we keep the date that the NetForecast was last calculated in the scenario object and rerun the calculation as part of the “model Updated event”. We just recalculate the “NetForecast: if today is different from the stored date in the scenario.