You are on page 1of 1392

APAC CIS GCA EM

LAM WE NAM

Stock Sharing
DTC OTA
TA
PO MRP

Retail Ecom Ecom / Retail

Pacific Pacific Pacific Ukrain


Russia HK TW
AU AU NZ e

South South Leban Leban


Israel Egypt GCC South
Korea Korea on on

Jorda
Pacific Turke Moroc
n India
NZ y co
(FZE)

PO
ARUN DPA

Retail / Ecom Ecom / Retail

SEA SEA SEA SEA


TW MLC JP SEA ID
MY PH SG TH

SEA Mexic Pana Argent


outh Brazil Peru
VN o ma ina

Colom Canad
Chile US EU
bia a

Moroc
co
ASIS
Dataset Columns
MRP MAIN_CHANNEL
MRP CHANNEL_LEVEL
MRP MARKET
MRP COUNTRY_REPORTING_UNIT
MRP RDD_MONTH
MRP RID_MONTH
MRP DERIVED_RDD_MONTH
MRP GROUP_ARTICLE
MRP RANGE_SEASON_CARRY_OVER
MRP REQUIREMENT_CATEGORY
MRP SEASON DTC OTA KPI
MRP AREA_RANGE
MERGING THE DATABASES AGGREGATION AND CALCULATION MRP
MRP
VALID_FROM_DATE
VALID_TO_DATE
Dataset
MRP
Columns
MAIN_CHANNEL
MRP CHANNEL_LEVEL
MRP ARUN_QTY_UOM MRP MARKET
MRP ON_HAND_STOCK_QTY MRP COUNTRY_REPORTING_UNIT
MRP RDD_MONTH
MRP DEMAND_QTY MRP RID_MONTH
MRP SUPPLY_SHORTAGE_QTY MRP DERIVED_RDD_MONTH
MRP GROUP_ARTICLE
MRP SUPPLY_QTY MRP RANGE_SEASON_CARRY_OVER
MRP UNREALISTIC_RDD_QTY
 ER_OTIF_POOL.MRP_APAC_SNAPSHOT  ER_OTIF_POOL.MRP_AFS   ER_OTIF_POOL.AGG_MRP_AFS
MRP REQUIREMENT_CATEGORY
MRP BUY_READY_QTY MRP SEASON

 ER_OTIF_POOL.MRP_CIS_SNAPSHOT
MRP AREA_RANGE
MRP PO_CREATION_DAYS_LATE MRP VALID_FROM_DATE
MRP FACTORY_DAYS_LATE
 ER_OTIF_POOL.MRP_EMEA_SNAPSHOT
MRP VALID_TO_DATE
MRP ARUN_QTY_UOM
MRP INBOUND_DAYS_LATE
MRP ON_HAND_STOCK_QTY

 ER_OTIF_POOL.MRP_NAM_SNAPSHOT MRP
MRP
ON_TIME_AVAILABLE_QTY
ON_TIME_PO_QTY
MRP
MRP
DEMAND_QTY
SUPPLY_SHORTAGE_QTY
MRP SUPPLY_QTY
MRP ARUN_DEMAND_FC_QTY MRP UNREALISTIC_RDD_QTY
MRP ARUN_DEMAND_SO_QTY  MRP BUY_READY_QTY
MRP ARUN_OTA_FC_QTY MRP PO_CREATION_DAYS_LATE
MRP FACTORY_DAYS_LATE
MRP ARUN_OTA_SO_QTY MRP INBOUND_DAYS_LATE
MRP ON_TIME_AVAILABLE_QTY
MRP ON_TIME_PO_QTY
MRP ARUN_DEMAND_FC_QTY
MRP ARUN_DEMAND_SO_QTY 
MRP ARUN_OTA_FC_QTY

UNION ALL MRP
ARUN
ARUN_OTA_SO_QTY
MAIN_CHANNEL
ARUN CHANNEL_LEVEL
ARUN MARKET
ARUN COUNTRY_REPORTING_UNIT
ARUN RDD_MONTH
ARUN RID_MONTH

Dataset Columns  ER_OTIF_POOL.DTC_OTA_KPIS ARUN


ARUN
DERIVED_RDD_MONTH
GROUP_ARTICLE
ARUN MAIN_CHANNEL ARUN RANGE_SEASON_CARRY_OVER
ARUN CHANNEL_LEVEL ARUN REQUIREMENT_CATEGORY
ARUN SEASON
ARUN MARKET ARUN AREA_RANGE
ARUN COUNTRY_REPORTING_UNIT ARUN VALID_FROM_DATE
ARUN VALID_TO_DATE
ARUN RDD_MONTH
ARUN ARUN_QTY_UOM
ARUN RID_MONTH ARUN ON_HAND_STOCK_QTY
ARUN DERIVED_RDD_MONTH ARUN DEMAND_QTY
ARUN SUPPLY_SHORTAGE_QTY
ARUN GROUP_ARTICLE ARUN SUPPLY_QTY
ARUN RANGE_SEASON_CARRY_OVER ARUN UNREALISTIC_RDD_QTY
ARUN REQUIREMENT_CATEGORY ARUN BUY_READY_QTY
ARUN PO_CREATION_DAYS_LATE
ARUN SEASON ARUN FACTORY_DAYS_LATE
ARUN AREA_RANGE ARUN INBOUND_DAYS_LATE
ARUN ON_TIME_AVAILABLE_QTY
MERGING THE DATABASES AGGREGATION ARUN
ARUN
VALID_FROM_DATE
VALID_TO_DATE
ARUN
ARUN
ON_TIME_PO_QTY
ARUN_DEMAND_FC_QTY
ARUN ARUN_QTY_UOM ARUN ARUN_DEMAND_SO_QTY 
ARUN ARUN_OTA_FC_QTY
ARUN ON_HAND_STOCK_QTY ARUN ARUN_OTA_SO_QTY
ARUN DEMAND_QTY
ARUN SUPPLY_SHORTAGE_QTY
ARUN SUPPLY_QTY
ARUN UNREALISTIC_RDD_QTY
 ER_OTIF_POOL.ARUN_PREVIEW_APAC_SNAPSHOT  ER_OTIF_POOL.ARUN_PREVIEW_AFS  ER_OTIF_POOL.AGG_ARUN_PREVIEW_AFS ARUN BUY_READY_QTY

 ER_OTIF_POOL.ARUN_PREVIEW_EMEA_SNAPSHOT ARUN
ARUN
PO_CREATION_DAYS_LATE
FACTORY_DAYS_LATE
 ER_OTIF_POOL.ARUN_PREVIEW_US_SNAPSHOT ARUN INBOUND_DAYS_LATE
ARUN ON_TIME_AVAILABLE_QTY
ARUN ON_TIME_PO_QTY
ARUN ARUN_DEMAND_FC_QTY
ARUN ARUN_DEMAND_SO_QTY 
ARUN ARUN_OTA_FC_QTY
ARUN ARUN_OTA_SO_QTY

TO BE
Dataset Columns
MRP MAIN_CHANNEL
MRP CHANNEL_LEVEL
MRP MARKET
MRP COUNTRY_REPORTING_UNIT
MRP RDD_MONTH
MRP RID_MONTH
MERGING THE DATABASES AGGREGATION AND CALCULATION MRP DERIVED_RDD_MONTH
MRP GROUP_ARTICLE
MRP RANGE_SEASON_CARRY_OVER
MRP REQUIREMENT_CATEGORY
MRP SEASON
MRP AREA_RANGE
 ER_OTIF_POOL.MRP_APAC_SNAPSHOT  ER_OTIF_POOL.MRP_AFS   ER_OTIF_POOL.AGG_MRP_AFS MRP VALID_FROM_DATE

 ER_OTIF_POOL.MRP_CIS_SNAPSHOT
MRP VALID_TO_DATE
MRP ARUN_QTY_UOM
 ER_OTIF_POOL.MRP_EMEA_SNAPSHOT MRP ON_HAND_STOCK_QTY
 ER_OTIF_POOL.MRP_NAM_SNAPSHOT

Generate one database 
UNION ALL with all record 
Dataset Columns
MRP MAIN_CHANNEL
MRP CHANNEL_LEVEL
MRP MARKET
MRP COUNTRY_REPORTING_UNIT
MRP
MRP
RDD_MONTH
RID_MONTH
DTC OTA KPI
MRP DERIVED_RDD_MONTH
MRP GROUP_ARTICLE
MRP RANGE_SEASON_CARRY_OVER
MRP REQUIREMENT_CATEGORY Dataset Columns
MRP SEASON MAIN_CHANNEL
MRP AREA_RANGE CHANNEL_LEVEL
Dataset Columns MRP VALID_FROM_DATE MARKET
ARUN MAIN_CHANNEL MRP VALID_TO_DATE COUNTRY_REPORTING_UNIT
MRP ARUN_QTY_UOM RDD_MONTH
ARUN CHANNEL_LEVEL MRP ON_HAND_STOCK_QTY RID_MONTH
DERIVED_RDD_MONTH
ARUN MARKET ARUN MAIN_CHANNEL
GROUP_ARTICLE
ARUN CHANNEL_LEVEL
ARUN COUNTRY_REPORTING_UNIT ARUN MARKET PERFORM THE CALCULATION DEFINING THE DEMAND AS: RANGE_SEASON_CARRY_OVER
REQUIREMENT_CATEGORY
ARUN RDD_MONTH ARUN COUNTRY_REPORTING_UNIT SEASON
ARUN RID_MONTH ARUN RDD_MONTH LEASTEST (ARUN_DEMAND, DPA_DEMAND, MRP_DEMAND) DEMAND
ARUN DERIVED_RDD_MONTH
MERGE ALL DATABASE ARUN RID_MONTH
AREA_RANGE
VALID_FROM_DATE
MERGING THE DATABASES AGGREGATION ARUN GROUP_ARTICLE
ARUN
ARUN
DERIVED_RDD_MONTH
GROUP_ARTICLE
VALID_TO_DATE
ARUN_QTY_UOM
ARUN RANGE_SEASON_CARRY_OVER ON_HAND_STOCK_QTY
ARUN RANGE_SEASON_CARRY_OVER DEMAND_QTY
ARUN REQUIREMENT_CATEGORY
ARUN REQUIREMENT_CATEGORY ARUN SEASON SUPPLY_SHORTAGE_QTY
SUPPLY_QTY
ARUN SEASON ARUN AREA_RANGE
UNREALISTIC_RDD_QTY
ARUN AREA_RANGE
ARUN VALID_FROM_DATE NEW DEMAND BUY_READY_QTY
ARUN VALID_TO_DATE PO_CREATION_DAYS_LATE
ARUN VALID_FROM_DATE ARUN ARUN_QTY_UOM FACTORY_DAYS_LATE
ARUN ON_HAND_STOCK_QTY
ARUN VALID_TO_DATE INBOUND_DAYS_LATE

 ER_OTIF_POOL.ARUN_PREVIEW_APAC_SNAPSHOT  ER_OTIF_POOL.ARUN_PREVIEW_AFS  ER_OTIF_POOL.AGG_ARUN_PREVIEW_AFS


DPA MAIN_CHANNEL ON_TIME_AVAILABLE_QTY
ARUN ARUN_QTY_UOM DPA CHANNEL_LEVEL ON_TIME_PO_QTY
ARUN ON_HAND_STOCK_QTY DPA MARKET ARUN_DEMAND_FC_QTY

 ER_OTIF_POOL.ARUN_PREVIEW_EMEA_SNAPSHOT DPA
DPA
COUNTRY_REPORTING_UNIT
RDD_MONTH
ARUN_DEMAND_SO_QTY 
ARUN_OTA_FC_QTY

 ER_OTIF_POOL.ARUN_PREVIEW_US_SNAPSHOT
ARUN_OTA_SO_QTY
DPA RID_MONTH
DPA DERIVED_RDD_MONTH
DPA GROUP_ARTICLE
DPA RANGE_SEASON_CARRY_OVER
DPA REQUIREMENT_CATEGORY
DPA SEASON
DPA AREA_RANGE
DPA VALID_FROM_DATE
DPA VALID_TO_DATE
DPA ARUN_QTY_UOM
DPA ON_HAND_STOCK_QTY

UNION ALL

Dataset Columns
DPA MAIN_CHANNEL
DPA CHANNEL_LEVEL
DPA MARKET
DPA COUNTRY_REPORTING_UNIT
DPA RDD_MONTH
DPA RID_MONTH
DPA DERIVED_RDD_MONTH
DPA GROUP_ARTICLE
DPA RANGE_SEASON_CARRY_OVER
DPA REQUIREMENT_CATEGORY
DPA SEASON
DPA AREA_RANGE
 ER_OTIF_POOL.DTC_OTA_AGG_DPA DPA
DPA
VALID_FROM_DATE
VALID_TO_DATE
DPA ARUN_QTY_UOM
DPA ON_HAND_STOCK_QTY
DTC OTA

PO MRP

Retail Ecom Ecom / Retail

Pacific Pacific Pacific Ukrain


Russia HK TW
AU AU NZ e
APAC CIS GCA EM LAM WE NAM

TA Stock Sharing

ARUN DPA

Retail / Ecom Ecom / Retail

SEA SEA SEA SEA


TW MLC JP SEA ID
MY PH SG TH
Retail Ecom Ecom / Retail

Pacific Pacific Pacific Ukrain


Russia HK TW
AU AU NZ e

South South Leban Leban


Israel Egypt GCC South
Korea Korea on on

Pacific Jorda Turke Moroc


India
NZ n y co

Supply / Demand

Total PLRD Total MAD


Retail / Ecom Ecom / Retail

SEA SEA SEA SEA


TW MLC JP SEA ID
MY PH SG TH

SEA Mexic Pana Argent


South Brazil Peru
VN o ma ina

Colom Canad
Chile US EU
bia a

mand

Total MAD
PO MRP ARU

Retai
Retail Ecom Ecom / Retail
Ecom
Pacifi Pacifi Pacifi Ukrai Russi
HK TW MLC
c AU c AU c NZ ne a

South South Leban Leban


Israel Egypt GCC South
Korea Korea on on

Pacifi Jorda Turke Moroc


India
c NZ n y co

APAC CIS GCA EM LAM WE NAM Stock Sharing


ARUN DPA

Retail / 
Ecom / Retail
Ecom
SEA SEA SEA SEA SEA
MLC JP
ID MY PH SG TH

SEA Mexic Pana Argen


Brazil Peru
VN o ma tina

Colo Canad
Chile US EU
mbia a

ring
BASE_QTY_UOM
DEMAND_QTY_UOM

‐‐DEMAND_QTY_UOM ‐‐OTA_QTY_UOM/COTA_QTY_UOM
CASE WHEN REQUIREMENT_CATEGORY != ' ' THEN  (LOCAL.STOCK_QTY_UOM + LOCAL.ONTIME_PO_QTY_RDD_UOM + (CASE WHEN IDENTIFIE
BASE_QTY_UOM END AS DEMAND_QTY_UOM,    WHEN IDENTIFIER = 'ARUN' AND MRP_TYPE <> 'Z2' THEN LOCAL.NOT_ALLOC_WIT

STOCK_QTY_UOM (INV. OH)

‐‐BASE_QTY_UOM ‐‐ONTIME_PO_QTY_RDD_UO
CASE WHEN STOCK_TYPE ='C' THEN BASE_QTY_UOM  CASE WHEN IDENTIFIER =
ELSE 0 END AS STOCK_QTY_UOM, POR_AVAILABILITY_DATE 
   WHEN IDENTIFIER = '
REQUESTED_DELIVERY_DAT
   ELSE 0 END AS ONTIM

SUPPLY SHORTAGE
(DEMAND – OTA)
‐‐SUPPLY SHORTAGE
LOCAL.DEMAND_QTY_UOM ‐ LOCAL.OTA_QTY_UOM AS 
PROJECTED_LATE_QTY_OTA,
PLRD <= RDD

OTA

WHEN IDENTIFIER = 'MRP' THEN LOCAL.NOT_ALLOC_WITHIN_RLT_QTY_RDD_UOM
NOT_ALLOC_WITHIN_RLT_QTY_RDD_UOM ELSE 0 END)) AS OTA_QTY_UOM,
LATE

ONTIME_PO_QTY_RDD_UOM NOT_ALLOC_WITHIN_RLT (PLRD <= RDD) NOT_ALLOC_WITHIN_RLT (PLR

_PO_QTY_RDD_UOM/ONTIME_PO_QTY_MAD_UOM ‐‐NOT_ALLOC_WITHIN_RLT_QTY_RDD_UOM/NOT_ALLOC_WITHIN_RLT_QTY_MAD_UOM ‐‐LATE_UNCOVERED_DEMAND_QTY_RDD_UOM/


N IDENTIFIER = 'ARUN' AND STOCK_TYPE in ('B', 'L', 'A') AND  CASE WHEN IDENTIFIER = 'MRP' THEN (CASE WHEN STOCK_TYPE IN (' ', 'A') AND  LATE_UNCOVEED_DEMAND_QTY_MAD_UOM
LABILITY_DATE <= REQUESTED_DELIVERY_DATE+OTA_TOLEARANCE THEN BASE_QTY_UOM (VALID_FROM_DATE ‐ REQUESTED_DELIVERY_DATE + PLANNED_DEL_DAYS) <= 0 THEN  CASE WHEN LOCAL.DEMAND_QTY_UOM ‐ LOCAL.OT
IDENTIFIER = 'MRP' AND STOCK_TYPE in ('B', 'L') AND POR_AVAILABILITY_DATE <=  BASE_QTY_UOM ELSE 0 END)     THEN ((CASE WHEN IDENTIFIER = 'ARUN' 
D_DELIVERY_DATE+OTA_TOLEARANCE THEN BASE_QTY_UOM     WHEN IDENTIFIER = 'ARUN' THEN (CASE WHEN STOCK_TYPE = ' ' AND (VALID_FROM_DATE  LOCAL.NOT_ALLOC_WITHIN_RLT_QTY_RDD_UOM EL
0 END AS ONTIME_PO_QTY_RDD_UOM, ‐ REQUESTED_DELIVERY_DATE + PLANNED_DEL_DAYS) <= 0 THEN BASE_QTY_UOM ELSE 0 END)  LOCAL.NOT_ALLOC_OUTSIDE_RLT_QTY_RDD_UOM) 
END AS NOT_ALLOC_WITHIN_RLT_QTY_RDD_UOM, LATE_UNCOVEED_DEMAND_QTY_RDD_UOM,
PLRD > RDD

LATE_UNCOVERED_DEMAND_QTY_RDD_UOM

N_RLT (PLRD > RDD) AND Z2 NOT_ALLOC_OUTSIDE_RLT UNREALISTIC_DEMAND_QTY


_RDD_UOM/ ‐‐NOT_ALLOC_OUTSIDE_RLT_QTY_RDD_UOM/NOT_ALLOC_OUTSIDE_RLT_QTY_MAD_UOM ‐‐UNREALISTIC_DEMAND_QTY_RDD_UOM/UNREALISTIC_DEMAND_QTY_MAD_UOM
D_UOM CASE WHEN IDENTIFIER = 'MRP' THEN (CASE WHEN STOCK_TYPE IN (' ', 'A')  CASE WHEN (LOCAL.DEMAND_QTY_UOM ‐LOCAL.OTA_QTY_UOM ‐ 
UOM ‐ LOCAL.OTA_QTY_UOM >= 0 AND (VALID_FROM_DATE ‐ REQUESTED_DELIVERY_DATE + PLANNED_DEL_DAYS) > 0  LOCAL.LATE_UNCOVEED_DEMAND_QTY_RDD_UOM) > 0 AND CONFIRMED_DELIVERY_DATE > 
FIER = 'ARUN' AND MRP_TYPE = 'Z2' THEN  THEN BASE_QTY_UOM ELSE 0 END) REQUESTED_DELIVERY_DATE AND REQUIREMENT_TYPE <> 'PB'
QTY_RDD_UOM ELSE 0 END) +      WHEN IDENTIFIER = 'ARUN' THEN (CASE WHEN STOCK_TYPE = ' ' AND      THEN (LOCAL.DEMAND_QTY_UOM ‐LOCAL.OTA_QTY_UOM ‐ 
_QTY_RDD_UOM) ELSE 0 END AS  (VALID_FROM_DATE ‐ REQUESTED_DELIVERY_DATE + PLANNED_DEL_DAYS) > 0  LOCAL.LATE_UNCOVEED_DEMAND_QTY_RDD_UOM) ELSE 0 END AS 
D_UOM, THEN BASE_QTY_UOM ELSE 0 END) END AS  UNREALISTIC_DEMAND_QTY_RDD_UOM,
NOT_ALLOC_OUTSIDE_RLT_QTY_RDD_UOM,
DATE > 
‐‐LATE_UNCOVERED_DEMAND_QTY_RDD_UOM/LATE_UNCOVEED_DEMAND_QT
CASE WHEN LOCAL.DEMAND_QTY_UOM ‐ LOCAL.OTA_QTY_UOM >= 0
    THEN ((CASE WHEN IDENTIFIER = 'ARUN' AND MRP_TYPE = 'Z

‐‐UNREALISTIC_DEMAND_QTY_RDD_UOM/UNREALISTIC_DEMAND_QTY_MAD
CASE WHEN (LOCAL.DEMAND_QTY_UOM ‐LOCAL.OTA_QTY_UOM ‐ LOCAL
    THEN (LOCAL.DEMAND_QTY_UOM ‐LOCAL.OTA_QTY_UOM ‐ LOCAL.

CASE WHEN (LOCAL.DEMAND_QTY_UOM ‐LOCAL.COTA_QTY_UOM ‐ LOCA
   THEN (LOCAL.DEMAND_QTY_UOM ‐LOCAL.COTA_QTY_UOM ‐ LOCAL.
EMAND_QTY_MAD_UOM
>= 0
PE = 'Z2' THEN LOCAL.NOT_ALLOC_WITHIN_RLT_QTY_RDD_UOM ELSE 0 END) + LOCAL.NOT_ALLOC_OUTSIDE_RLT_QTY_RDD_UOM) 

_QTY_MAD_UOM
‐ LOCAL.LATE_UNCOVEED_DEMAND_QTY_RDD_UOM) > 0 AND CONFIRMED_DELIVERY_DATE > REQUESTED_DELIVERY_DATE AND REQUI
LOCAL.LATE_UNCOVEED_DEMAND_QTY_RDD_UOM) ELSE 0 END AS UNREALISTIC_DEMAND_QTY_RDD_UOM,

‐ LOCAL.LATE_UNCOVEED_DEMAND_QTY_MAD_UOM) > 0 AND (COTA_REPORTING_DATE + URD_TOLERANCE) < RETAIL_INTRO_DATE_
LOCAL.LATE_UNCOVEED_DEMAND_QTY_MAD_UOM) ELSE 0 END AS UNREALISTIC_DEMAND_QTY_MAD_UOM,
D_UOM) ELSE 0 END AS LATE_UNCOVEED_DEMAND_QTY_RDD_UOM,

D REQUIREMENT_TYPE <> 'PB'

O_DATE_GLOBAL
‐‐PURCHASE_LATE_QTY_RDD_UOM/PURCHASE_LATE_QTY_MAD_UOM
(LOCAL.DEMAND_QTY_UOM ‐ LOCAL.OTA_QTY_UOM ‐ LOCAL.LATE_UNCO
(LOCAL.DEMAND_QTY_UOM ‐ LOCAL.COTA_QTY_UOM ‐ LOCAL.LATE_UNC
CASE WHEN LOCAL.PURCAHSE_LATE_DAYS > 0 AND LOCAL.PO_LATE_QT
THEN (LOCAL.PURCAHSE_LATE_DAYS / LOCAL.TOTAL_LATE_DAYS) * 
ELSE 0 END AS PURCHASE_LATE_QTY_RDD_UOM,

‐‐FACTORY_LATE_QTY_RDD_UOM/FACTORY_LATE_QTY_MAD_UOM
CASE WHEN LOCAL.FACTORY_LATE_DAYS > 0 AND LOCAL.PO_LATE_QTY
THEN (LOCAL.FACTORY_LATE_DAYS / LOCAL.TOTAL_LATE_DAYS) * (
ELSE 0 END AS FACTORY_LATE_QTY_RDD_UOM,

‐‐INBOUND_LATE_QTY_RDD_UOM/INBOUND_LATE_QTY_MAD_UOM
CASE WHEN LOCAL.INBOUND_LATE_DAYS > 0 AND LOCAL.PO_LATE_QTY
THEN (LOCAL.INBOUND_LATE_DAYS / LOCAL.TOTAL_LATE_DAYS) * (
ELSE 0 END AS INBOUND_LATE_QTY_RDD_UOM,
OM
ATE_UNCOVEED_DEMAND_QTY_RDD_UOM ‐ LOCAL.UNREALISTIC_DEMAND_QTY_RDD_UOM) AS PO_LATE_QTY_RDD_UOM,
LATE_UNCOVEED_DEMAND_QTY_MAD_UOM ‐ LOCAL.UNREALISTIC_DEMAND_QTY_MAD_UOM) AS PO_LATE_QTY_MAD_UOM,
_LATE_QTY_RDD_UOM > 0
AYS) * (LOCAL.DEMAND_QTY_UOM ‐ LOCAL.OTA_QTY_UOM ‐ LOCAL.LATE_UNCOVEED_DEMAND_QTY_RDD_UOM ‐ LOCAL.UNREALISTIC

LATE_QTY_RDD_UOM > 0
YS) * (LOCAL.DEMAND_QTY_UOM ‐ LOCAL.OTA_QTY_UOM ‐ LOCAL.LATE_UNCOVEED_DEMAND_QTY_RDD_UOM ‐ LOCAL.UNREALISTIC_

LATE_QTY_RDD_UOM > 0
YS) * (LOCAL.DEMAND_QTY_UOM ‐ LOCAL.OTA_QTY_UOM ‐ LOCAL.LATE_UNCOVEED_DEMAND_QTY_RDD_UOM ‐ LOCAL.UNREALISTIC_
ALISTIC_DEMAND_QTY_RDD_UOM)

LISTIC_DEMAND_QTY_RDD_UOM)

LISTIC_DEMAND_QTY_RDD_UOM)
BASE_QTY_UOM
(LOCAL.STOCK_QTY_UOM + LOCAL.ONTIME_PO_QTY_RDD_UOM + (CASE WHEN IDENTIFIE
0 END)) AS OTA_QTY_UOM,

STOCK_QTY_UOM (INV. OH)

STOCK_TYPE ='C' STOCK_TYPE 

‐‐BASE_QTY_UOM ‐‐ONTIME_PO_QTY_RDD_UO
CASE WHEN STOCK_TYPE ='C' THEN BASE_QTY_UOM  CASE WHEN IDENTIFIER =
ELSE 0 END AS STOCK_QTY_UOM, POR_AVAILABILITY_DATE 
‐‐DEMAND_QTY_UOM
   WHEN IDENTIFIER = '
CASE WHEN REQUIREMENT_CATEGORY != ' ' THEN 
REQUESTED_DELIVERY_DAT
BASE_QTY_UOM END AS DEMAND_QTY_UOM,
   ELSE 0 END AS ONTIM

SUPPLY SHORTAGE
(DEMAND – OTA)
‐‐SUPPLY SHORTAGE
LOCAL.DEMAND_QTY_UOM ‐ LOCAL.OTA_QTY_UOM AS 
PROJECTED_LATE_QTY_OTA,
PLRD <= RDD + OTA_TOLEARANCE

OTA
WHEN IDENTIFIER = 'MRP' THEN LOCAL.NOT_ALLOC_WITHIN_RLT_QTY_RDD_UOM    WHEN IDENTIFIER = 'ARUN' AND MRP_TYPE <> 'Z2' THEN LOCAL.NOT_ALLOC_WITHIN_RLT_QTY_RDD_UOM ELSE 
LATE_UN

ONTIME_PO_QTY_RDD_UOM NOT_ALLOC_WITHIN_RLT (PLRD <= RDD) NOT_ALLOC_WITHIN_RLT (PLRD >

STOCK_TYPE in ('B', 'L', 'A') AND PLRD <= RSS + OTA_TOLEARANCE  STOCK_TYPE IN (' ', 'A') MRP_TYPE = 'Z2'

_PO_QTY_RDD_UOM/ONTIME_PO_QTY_MAD_UOM ‐‐NOT_ALLOC_WITHIN_RLT_QTY_RDD_UOM/NOT_ALLOC_WITHIN_RLT_QTY_MAD_UOM ‐‐LATE_UNCOVERED_DEMAND_QTY_RDD_UOM


N IDENTIFIER = 'ARUN' AND STOCK_TYPE in ('B', 'L', 'A') AND  CASE WHEN IDENTIFIER = 'MRP' THEN (CASE WHEN STOCK_TYPE IN (' ', 'A') AND  CASE WHEN LOCAL.DEMAND_QTY_UOM ‐ LOCAL.OTA_QTY_
LABILITY_DATE <= REQUESTED_DELIVERY_DATE+OTA_TOLEARANCE THEN BASE_QTY_UOM (VALID_FROM_DATE ‐ REQUESTED_DELIVERY_DATE + PLANNED_DEL_DAYS) <= 0 THEN      THEN ((CASE WHEN IDENTIFIER = 'ARUN' AND MR
IDENTIFIER = 'MRP' AND STOCK_TYPE in ('B', 'L') AND POR_AVAILABILITY_DATE <=  BASE_QTY_UOM ELSE 0 END) LOCAL.NOT_ALLOC_WITHIN_RLT_QTY_RDD_UOM ELSE 0 E
D_DELIVERY_DATE+OTA_TOLEARANCE THEN BASE_QTY_UOM     WHEN IDENTIFIER = 'ARUN' THEN (CASE WHEN STOCK_TYPE = ' ' AND (VALID_FROM_DATE  LOCAL.NOT_ALLOC_OUTSIDE_RLT_QTY_RDD_UOM) ELSE 0
0 END AS ONTIME_PO_QTY_RDD_UOM, ‐ REQUESTED_DELIVERY_DATE + PLANNED_DEL_DAYS) <= 0 THEN BASE_QTY_UOM ELSE 0 END)  LATE_UNCOVEED_DEMAND_QTY_RDD_UOM,
END AS NOT_ALLOC_WITHIN_RLT_QTY_RDD_UOM,

Should we include the condition CASE WH


2
', 'A')? Because the NOT_ALLOC_WITHIN_RLT h

Should we include the OTA_TOLEARANCE in the condition?


1
Because the Stock_Type = ‘A’ has a PLRD.
PLRD > RDD + OTA_TOLEARANCE

DEMAND_QTY_UOM

NOT OTA (ROOT CAUSE)

LATE_UNCOVERED_DEMAND_QTY_RDD_UOM

LT (PLRD > RDD) AND Z2 NOT_ALLOC_OUTSIDE_RLT UNREALISTIC_DEMAND_QTY PURCHASE_


= 'Z2' STOCK_TYPE IN (' ', 'A') CDD > RDD AND REQUIREMENT_TYPE <> 'PB' CDD > RDD 

OM ‐‐NOT_ALLOC_OUTSIDE_RLT_QTY_RDD_UOM ‐‐UNREALISTIC_DEMAND_QTY_RDD_UOM/UNREALISTIC_DEMAND_QTY_MAD_UOM ‐‐PURCHASE_LATE_QTY_RDD_UO


OCAL.OTA_QTY_UOM >= 0 CASE WHEN IDENTIFIER = 'MRP' THEN (CASE WHEN STOCK_TYPE IN (' ', 'A')  CASE WHEN (LOCAL.DEMAND_QTY_UOM ‐LOCAL.OTA_QTY_UOM ‐  (LOCAL.DEMAND_QTY_UOM ‐ LO
'ARUN' AND MRP_TYPE = 'Z2' THEN  AND (VALID_FROM_DATE ‐ REQUESTED_DELIVERY_DATE + PLANNED_DEL_DAYS) > 0  LOCAL.LATE_UNCOVEED_DEMAND_QTY_RDD_UOM) > 0 AND  LOCAL.LATE_UNCOVEED_DEMAND
_UOM ELSE 0 END) +  THEN BASE_QTY_UOM ELSE 0 END) CONFIRMED_DELIVERY_DATE > REQUESTED_DELIVERY_DATE AND REQUIREMENT_TYPE  LOCAL.UNREALISTIC_DEMAND_Q
D_UOM) ELSE 0 END AS      WHEN IDENTIFIER = 'ARUN' THEN (CASE WHEN STOCK_TYPE = ' ' AND  <> 'PB'
(VALID_FROM_DATE ‐ REQUESTED_DELIVERY_DATE + PLANNED_DEL_DAYS) > 0      THEN (LOCAL.DEMAND_QTY_UOM ‐LOCAL.OTA_QTY_UOM ‐ 
THEN BASE_QTY_UOM ELSE 0 END) END AS  LOCAL.LATE_UNCOVEED_DEMAND_QTY_RDD_UOM) ELSE 0 END AS 
NOT_ALLOC_OUTSIDE_RLT_QTY_RDD_UOM, UNREALISTIC_DEMAND_QTY_RDD_UOM,

ndition CASE WHEN STOCK_TYPE IN ('


C_WITHIN_RLT has this condition?

Should we include the OTA_TOLEARANCE in the condition? Should we include the OTA_TOLEARANCE in the condition?
3 3
Because the Stock_Type = ‘A’ has a PLRD. Because the Stock_Type = ‘A’ has a PLRD.
USE)

CHASE_LATE_QTY_RDD_UOM FACTORY_LATE_QTY_RDD_UOM INBOUND_LATE_QTY_RDD_UOM


CDD > RDD AND REQUIREMENT_TYPE <> 'PB' CDD > RDD AND REQUIREMENT_TYPE <> 'PB' CDD > RDD AND REQUIREMENT_TYPE <> 'PB'

ATE_QTY_RDD_UOM/PURCHASE_LATE_QTY_MAD_UOM ‐‐FACTORY_LATE_QTY_RDD_UOM/FACTORY_LATE_QTY_MAD_UOM ‐‐INBOUND_LATE_QTY_RDD_UOM/INBOUND_LATE_QTY_MAD_UOM


_QTY_UOM ‐ LOCAL.OTA_QTY_UOM ‐  CASE WHEN LOCAL.FACTORY_LATE_DAYS > 0 AND LOCAL.PO_LATE_QTY_RDD_UOM >  CASE WHEN LOCAL.INBOUND_LATE_DAYS > 0 AND LOCAL.PO_LATE_QTY_RDD_UOM > 
COVEED_DEMAND_QTY_RDD_UOM ‐  0 0
STIC_DEMAND_QTY_RDD_UOM) AS PO_LATE_QTY_RDD_UOM, THEN (LOCAL.FACTORY_LATE_DAYS / LOCAL.TOTAL_LATE_DAYS) *  THEN (LOCAL.INBOUND_LATE_DAYS / LOCAL.TOTAL_LATE_DAYS) * 
(LOCAL.DEMAND_QTY_UOM ‐ LOCAL.OTA_QTY_UOM ‐  (LOCAL.DEMAND_QTY_UOM ‐ LOCAL.OTA_QTY_UOM ‐ 
LOCAL.LATE_UNCOVEED_DEMAND_QTY_RDD_UOM ‐  LOCAL.LATE_UNCOVEED_DEMAND_QTY_RDD_UOM ‐ 
LOCAL.UNREALISTIC_DEMAND_QTY_RDD_UOM) LOCAL.UNREALISTIC_DEMAND_QTY_RDD_UOM)
ELSE 0 END AS FACTORY_LATE_QTY_RDD_UOM, ELSE 0 END AS INBOUND_LATE_QTY_RDD_UOM,
M > 
‐‐LATE_UNCOVERED_DEMAND_QTY_RDD_UOM/LATE_UNCOVEED_DEMAND_QT
CASE WHEN LOCAL.DEMAND_QTY_UOM ‐ LOCAL.OTA_QTY_UOM >= 0
    THEN ((CASE WHEN IDENTIFIER = 'ARUN' AND MRP_TYPE = 'Z

‐‐UNREALISTIC_DEMAND_QTY_RDD_UOM/UNREALISTIC_DEMAND_QTY_MAD
CASE WHEN (LOCAL.DEMAND_QTY_UOM ‐LOCAL.OTA_QTY_UOM ‐ LOCAL
    THEN (LOCAL.DEMAND_QTY_UOM ‐LOCAL.OTA_QTY_UOM ‐ LOCAL.
EMAND_QTY_MAD_UOM
>= 0
PE = 'Z2' THEN LOCAL.NOT_ALLOC_WITHIN_RLT_QTY_RDD_UOM ELSE 0 END) + LOCAL.NOT_ALLOC_OUTSIDE_RLT_QTY_RDD_UOM) 

_QTY_MAD_UOM
‐ LOCAL.LATE_UNCOVEED_DEMAND_QTY_RDD_UOM) > 0 AND CONFIRMED_DELIVERY_DATE > REQUESTED_DELIVERY_DATE AND REQUI
LOCAL.LATE_UNCOVEED_DEMAND_QTY_RDD_UOM) ELSE 0 END AS UNREALISTIC_DEMAND_QTY_RDD_UOM,
D_UOM) ELSE 0 END AS LATE_UNCOVEED_DEMAND_QTY_RDD_UOM,

D REQUIREMENT_TYPE <> 'PB'
‐‐DEMAND_QTY_UOM
CASE WHEN REQUIREMENT_CATEGORY != ' ' THEN 
BASE_QTY_UOM END AS DEMAND_QTY_UOM,

SUPPLY SHORTAGE
(DEMAND – OTA)
‐‐SUPPLY SHORTAGE
LOCAL.DEMAND_QTY_UOM ‐ LOCAL.OTA_QTY_UOM AS 
PROJECTED_LATE_QTY_OTA,
OTA
(LOCAL.STOCK_QTY_UOM + LOCAL.ONTIME_PO_QTY_RDD_UOM + (CASE WHEN IDENTIFIER = 'MRP' THEN LOCAL.NOT_ALLOC_WITHIN_RLT_QTY_RDD_UOM    WHE
AND MRP_TYPE <> 'Z2' THEN LOCAL.NOT_ALLOC_WITHIN_RLT_QTY_RDD_UOM ELSE 0 END)) AS OTA_QTY_UOM,

STOCK_QTY_UO
ONTIME_PO_QTY_RDD_UOM NOT_ALLOC_WITH
M (INV. OH)
STOCK_TYPE in ('B', 'L', 'A') AND PLRD <= 
STOCK_TYPE ='C' STOCK_TYPE IN (
RSS + OTA_TOLEARA 

‐‐BASE_QTY_UOM ‐‐ONTIME_PO_QTY_RDD_UOM/ONTIME_PO_QTY_MAD_UOM ‐‐NOT_ALLOC_WITHIN_RLT_QTY_RDD_U


CASE WHEN STOCK_TYPE ='C'  CASE WHEN IDENTIFIER = 'ARUN' AND STOCK_TYPE in ('B',  CASE WHEN IDENTIFIER = 'MRP' THE
THEN BASE_QTY_UOM ELSE 0 END  'L', 'A') AND POR_AVAILABILITY_DATE <=  IN (' ', 'A') AND (VALID_FROM_DA
AS STOCK_QTY_UOM, REQUESTED_DELIVERY_DATE+OTA_TOLEARANCE THEN BASE_QTY_UOM REQUESTED_DELIVERY_DATE + PLANNE
   WHEN IDENTIFIER = 'MRP' AND STOCK_TYPE in ('B', 'L')  BASE_QTY_UOM ELSE 0 END)
AND POR_AVAILABILITY_DATE <=      WHEN IDENTIFIER = 'ARUN' THE
REQUESTED_DELIVERY_DATE+OTA_TOLEARANCE THEN BASE_QTY_UOM = ' ' AND (VALID_FROM_DATE ‐ REQ
   ELSE 0 END AS ONTIME_PO_QTY_RDD_UOM, PLANNED_DEL_DAYS) <= 0 THEN BASE
END AS NOT_ALLOC_WITHIN_RLT_QTY_

Should we include the OTA_TOLEARANCE


in the condition? Because the Stock_Type
= ‘A’ has a PLRD.
DEMAND_QTY_UOM
4
NOT OTA (ROOT CAUSE)
RLT_QTY_RDD_UOM    WHEN IDENTIFIER = 'ARUN'  ‐‐PURCHASE_LATE_QTY_RDD_UOM/PURCHASE_LATE_Q
LATE_UNCOVERED_DEMAND_QTY_RDD_UOM PURCHASE_LATE (LOCAL.DEMAND_QTY_UOM ‐ LOCAL.OTA_QTY_UOM ‐
LOCAL.LATE_UNCOVEED_DEMAND_QTY_RDD_UOM ‐ LO
AS PO_LATE_QTY_RDD_UOM,
UNREALISTIC_DEMAND
_ALLOC_WITHIN_RLT NOT_ALLOC_WITHIN_RLT NOT_ALLOC_OUTSIDE_RLT FACTORY_LATE INBOUND_LATE 5

STOCK_TYPE IN (' ', 'A') MRP_TYPE = 'Z2' STOCK_TYPE IN (' ', 'A') CDD > RDD AND REQUIR_TYPE <> 'PB' FACTORY_LATE_DAYS > 0 AND LOCAL.PO_LATE_QTY > 0 INBOUND_LATE_DAYS > 0 AND PO_LATE_QTY_RDD > 0

C_WITHIN_RLT_QTY_RDD_UOM ‐‐LATE_UNCOVERED_DEMAND_QTY_RDD_UOM ‐‐NOT_ALLOC_OUTSIDE_RLT_QTY_RDD_UOM ‐‐UNREALISTIC_DEMAND_QTY_RDD_UOM/ ‐‐FACTORY_LATE_QTY_RDD_UOM/ ‐‐INBOUND_LATE_QTY_RDD_UOM/


IDENTIFIER = 'MRP' THEN (CASE WHEN STOCK_TYPE  CASE WHEN LOCAL.DEMAND_QTY_UOM ‐  CASE WHEN IDENTIFIER = 'MRP' THEN (CASE WHEN  UNREALISTIC_DEMAND_QTY_MAD_UOM FACTORY_LATE_QTY_MAD_UOM INBOUND_LATE_QTY_MAD_UOM
A') AND (VALID_FROM_DATE ‐  LOCAL.OTA_QTY_UOM >= 0 STOCK_TYPE IN (' ', 'A') AND (VALID_FROM_DATE ‐  CASE WHEN (LOCAL.DEMAND_QTY_UOM ‐ CASE WHEN LOCAL.FACTORY_LATE_DAYS > 0 AND  CASE WHEN LOCAL.INBOUND_LATE_DAYS > 0 AND 
DELIVERY_DATE + PLANNED_DEL_DAYS) <= 0 THEN      THEN ((CASE WHEN IDENTIFIER = 'ARUN' AND  REQUESTED_DELIVERY_DATE + PLANNED_DEL_DAYS) > 0  LOCAL.OTA_QTY_UOM ‐  LOCAL.PO_LATE_QTY_RDD_UOM > 0 LOCAL.PO_LATE_QTY_RDD_UOM > 0
OM ELSE 0 END) MRP_TYPE = 'Z2' THEN  THEN BASE_QTY_UOM ELSE 0 END) LOCAL.LATE_UNCOVEED_DEMAND_QTY_RDD_UOM) > 0 AND  THEN (LOCAL.FACTORY_LATE_DAYS /  THEN (LOCAL.INBOUND_LATE_DAYS / 
DENTIFIER = 'ARUN' THEN (CASE WHEN STOCK_TYPE  LOCAL.NOT_ALLOC_WITHIN_RLT_QTY_RDD_UOM ELSE      WHEN IDENTIFIER = 'ARUN' THEN (CASE WHEN  CONFIRMED_DELIVERY_DATE >  LOCAL.TOTAL_LATE_DAYS) * (LOCAL.DEMAND_QTY_UOM  LOCAL.TOTAL_LATE_DAYS) * (LOCAL.DEMAND_QTY_UOM 
(VALID_FROM_DATE ‐ REQUESTED_DELIVERY_DATE +  0 END) +  STOCK_TYPE = ' ' AND (VALID_FROM_DATE ‐  REQUESTED_DELIVERY_DATE AND REQUIREMENT_TYPE <>  ‐ LOCAL.OTA_QTY_UOM ‐  ‐ LOCAL.OTA_QTY_UOM ‐ 
L_DAYS) <= 0 THEN BASE_QTY_UOM ELSE 0 END)  LOCAL.NOT_ALLOC_OUTSIDE_RLT_QTY_RDD_UOM)  REQUESTED_DELIVERY_DATE + PLANNED_DEL_DAYS) > 0  'PB' LOCAL.LATE_UNCOVEED_DEMAND_QTY_RDD_UOM ‐  LOCAL.LATE_UNCOVEED_DEMAND_QTY_RDD_UOM ‐ 
_ALLOC_WITHIN_RLT_QTY_RDD_UOM, ELSE 0 END AS  THEN BASE_QTY_UOM ELSE 0 END) END AS      THEN (LOCAL.DEMAND_QTY_UOM ‐ LOCAL.UNREALISTIC_DEMAND_QTY_RDD_UOM) LOCAL.UNREALISTIC_DEMAND_QTY_RDD_UOM)
LATE_UNCOVEED_DEMAND_QTY_RDD_UOM, NOT_ALLOC_OUTSIDE_RLT_QTY_RDD_UOM, LOCAL.OTA_QTY_UOM ‐  ELSE 0 END AS FACTORY_LATE_QTY_RDD_UOM, ELSE 0 END AS INBOUND_LATE_QTY_RDD_UOM,
LOCAL.LATE_UNCOVEED_DEMAND_QTY_RDD_UOM) ELSE 0 
END AS UNREALISTIC_DEMAND_QTY_RDD_UOM,

2 3
Should we include the condition CASE Should we include the
ARANCE OTA_TOLEARANCE in the condition?
WHEN STOCK_TYPE IN (' ', 'A')? Because
ck_Type Because the Stock_Type = ‘A’ has a
the NOT_ALLOC_WITHIN_RLT has this
condition? PLRD.
There is no condition on purchase_late. We are
assuming that the rest of the demand (Demand
4 – OTA – Late_Uncoverage – Ur=nrealistic) has
the purchae late

RDD_UOM/PURCHASE_LATE_QTY_MAD_UOM
M ‐ LOCAL.OTA_QTY_UOM ‐ 
DEMAND_QTY_RDD_UOM ‐ LOCAL.UNREALISTIC_DEMAND_QTY_RDD_UOM) 
OM,

The sum of the factory and inbound late must


5 be equal to the purchase late. Therefore, in the
waterfall, they must not be side by side.

PURCHA
SE LATE
FACTORY
FACTOR LATE
Y LATE PURCHASE
LATE
INBOUND INBOUND
LATE LATE

WRONG RIGHT
‐‐LATE_UNCOVERED_DEMAND_QTY_RDD_UOM/LATE_UNCOVEED_DEMAND_QT
CASE WHEN LOCAL.DEMAND_QTY_UOM ‐ LOCAL.OTA_QTY_UOM >= 0
    THEN ((CASE WHEN IDENTIFIER = 'ARUN' AND MRP_TYPE = 'Z

‐‐UNREALISTIC_DEMAND_QTY_RDD_UOM/UNREALISTIC_DEMAND_QTY_MAD
CASE WHEN (LOCAL.DEMAND_QTY_UOM ‐LOCAL.OTA_QTY_UOM ‐ LOCAL
    THEN (LOCAL.DEMAND_QTY_UOM ‐LOCAL.OTA_QTY_UOM ‐ LOCAL.
EMAND_QTY_MAD_UOM
>= 0
PE = 'Z2' THEN LOCAL.NOT_ALLOC_WITHIN_RLT_QTY_RDD_UOM ELSE 0 END) + LOCAL.NOT_ALLOC_OUTSIDE_RLT_QTY_RDD_UOM) 

_QTY_MAD_UOM
‐ LOCAL.LATE_UNCOVEED_DEMAND_QTY_RDD_UOM) > 0 AND CONFIRMED_DELIVERY_DATE > REQUESTED_DELIVERY_DATE AND REQUI
LOCAL.LATE_UNCOVEED_DEMAND_QTY_RDD_UOM) ELSE 0 END AS UNREALISTIC_DEMAND_QTY_RDD_UOM,
D_UOM) ELSE 0 END AS LATE_UNCOVEED_DEMAND_QTY_RDD_UOM,

D REQUIREMENT_TYPE <> 'PB'
ASIS TO 

Supply shortage should be the


7 sum of all bucket and not a bar

Purchase Late should be the sum


8 of factory and inbound late

ASIS AS

DEMAND_QTY_UOM

OTA SUPPLY SHORTAGE (DEMAND – OTA)

(LOCAL.STOCK_QTY_UOM + LOCAL.ONTIME_PO_QTY_RDD_UOM + (CASE WHEN IDENTIFIER = 'MRP' THEN LOCAL.NOT_ALLOC_WITHIN_RLT_QTY_RDD_UOM    WHEN IDENTIFIER = 'ARUN' 
AND MRP_TYPE <> 'Z2' THEN LOCAL.NOT_ALLOC_WITHIN_RLT_QTY_RDD_UOM ELSE 0 END)) AS OTA_QTY_UOM, LATE_UNCOVERED_DEMAND_QTY_RDD_UOM
UNREALISTIC_DEMAND
STOCK_QTY_UO
ONTIME_PO_QTY_RDD_UOM NOT_ALLOC_WITHIN_RLT NOT_ALLOC_WITHIN_RLT NOT_ALLOC_OUTSIDE_RLT FA
M (INV. OH)
STOCK_TYPE in ('B', 'L', 'A') AND PLRD <= 
STOCK_TYPE ='C' STOCK_TYPE IN (' ', 'A') MRP_TYPE = 'Z2' STOCK_TYPE IN (' ', 'A') CDD > RDD AND REQUIR_TYPE <> 'PB' FACTORY_LATE_
RSS + OTA_TOLEARA 

‐‐BASE_QTY_UOM ‐‐ONTIME_PO_QTY_RDD_UOM/ONTIME_PO_QTY_MAD_UOM ‐‐NOT_ALLOC_WITHIN_RLT_QTY_RDD_UOM ‐‐LATE_UNCOVERED_DEMAND_QTY_RDD_UOM ‐‐NOT_ALLOC_OUTSIDE_RLT_QTY_RDD_UOM ‐‐UNREALISTIC_DEMAND_QTY_RDD_UOM/ ‐‐FACTORY_LAT


CASE WHEN STOCK_TYPE ='C'  CASE WHEN IDENTIFIER = 'ARUN' AND STOCK_TYPE in ('B',  CASE WHEN IDENTIFIER = 'MRP' THEN (CASE WHEN STOCK_TYPE  CASE WHEN LOCAL.DEMAND_QTY_UOM ‐  CASE WHEN IDENTIFIER = 'MRP' THEN (CASE WHEN  UNREALISTIC_DEMAND_QTY_MAD_UOM FACTORY_LATE_
THEN BASE_QTY_UOM ELSE 0 END  'L', 'A') AND POR_AVAILABILITY_DATE <=  IN (' ', 'A') AND (VALID_FROM_DATE ‐  LOCAL.OTA_QTY_UOM >= 0 STOCK_TYPE IN (' ', 'A') AND (VALID_FROM_DATE ‐  CASE WHEN (LOCAL.DEMAND_QTY_UOM ‐ CASE WHEN LOC
AS STOCK_QTY_UOM, REQUESTED_DELIVERY_DATE+OTA_TOLEARANCE THEN BASE_QTY_UOM REQUESTED_DELIVERY_DATE + PLANNED_DEL_DAYS) <= 0 THEN      THEN ((CASE WHEN IDENTIFIER = 'ARUN' AND  REQUESTED_DELIVERY_DATE + PLANNED_DEL_DAYS) > 0  LOCAL.OTA_QTY_UOM ‐  LOCAL.PO_LATE
   WHEN IDENTIFIER = 'MRP' AND STOCK_TYPE in ('B', 'L')  BASE_QTY_UOM ELSE 0 END) MRP_TYPE = 'Z2' THEN  THEN BASE_QTY_UOM ELSE 0 END) LOCAL.LATE_UNCOVEED_DEMAND_QTY_RDD_UOM) > 0 AND  THEN (LOCAL.F
AND POR_AVAILABILITY_DATE <=      WHEN IDENTIFIER = 'ARUN' THEN (CASE WHEN STOCK_TYPE  LOCAL.NOT_ALLOC_WITHIN_RLT_QTY_RDD_UOM ELSE      WHEN IDENTIFIER = 'ARUN' THEN (CASE WHEN  CONFIRMED_DELIVERY_DATE >  LOCAL.TOTAL_L
REQUESTED_DELIVERY_DATE+OTA_TOLEARANCE THEN BASE_QTY_UOM = ' ' AND (VALID_FROM_DATE ‐ REQUESTED_DELIVERY_DATE +  0 END) +  STOCK_TYPE = ' ' AND (VALID_FROM_DATE ‐  REQUESTED_DELIVERY_DATE AND REQUIREMENT_TYPE <>  ‐ LOCAL.OTA_Q
   ELSE 0 END AS ONTIME_PO_QTY_RDD_UOM, PLANNED_DEL_DAYS) <= 0 THEN BASE_QTY_UOM ELSE 0 END)  LOCAL.NOT_ALLOC_OUTSIDE_RLT_QTY_RDD_UOM)  REQUESTED_DELIVERY_DATE + PLANNED_DEL_DAYS) > 0  'PB' LOCAL.LATE_UN
END AS NOT_ALLOC_WITHIN_RLT_QTY_RDD_UOM, ELSE 0 END AS  THEN BASE_QTY_UOM ELSE 0 END) END AS      THEN (LOCAL.DEMAND_QTY_UOM ‐ LOCAL.UNREALI
LATE_UNCOVEED_DEMAND_QTY_RDD_UOM, NOT_ALLOC_OUTSIDE_RLT_QTY_RDD_UOM, LOCAL.OTA_QTY_UOM ‐  ELSE 0 END AS
LOCAL.LATE_UNCOVEED_DEMAND_QTY_RDD_UOM) ELSE 0 
END AS UNREALISTIC_DEMAND_QTY_RDD_UOM,

1 2 3
Should we include the condition CASE Should we include the
Should we include the OTA_TOLEARANCE OTA_TOLEARANCE in the condition?
WHEN STOCK_TYPE IN (' ', 'A')? Because
in the condition? Because the Stock_Type Because the Stock_Type = ‘A’ has a
the NOT_ALLOC_WITHIN_RLT has this
= ‘A’ has a PLRD. PLRD.
condition?
TO BE

ASIS

Supply Shortage is not a


6 single bar, but everything
that will not be available

‐‐SUPPLY SHORTAGE
MAND – OTA) LOCAL.DEMAND_QTY_UOM ‐ LOCAL.OTA_QTY_UOM AS 
PROJECTED_LATE_QTY_OTA,

‐‐PURCHASE_LATE_QTY_RDD_UOM/PURCHASE_LATE_QTY_MAD_UOM
PURCHASE_LATE (LOCAL.DEMAND_QTY_UOM ‐ LOCAL.OTA_QTY_UOM ‐ 
LOCAL.LATE_UNCOVEED_DEMAND_QTY_RDD_UOM ‐ 
LOCAL.UNREALISTIC_DEMAND_QTY_RDD_UOM) AS PO_LATE_QTY_RDD_UOM,
OTHER
FACTORY_LATE INBOUND_LATE 4
There is no condition on purchase_late. We are
' FACTORY_LATE_DAYS > 0 AND LOCAL.PO_LATE_QTY > 0 INBOUND_LATE_DAYS > 0 AND PO_LATE_QTY_RDD > 0 assuming that the rest of the demand (Demand
– OTA – Late_Uncoverage – Ur=nrealistic) has
the purchae late. We should include the
‐‐FACTORY_LATE_QTY_RDD_UOM/ ‐‐INBOUND_LATE_QTY_RDD_UOM/
FACTORY_LATE_QTY_MAD_UOM INBOUND_LATE_QTY_MAD_UOM
condition PO_LATE_QTY_RDD  >  0.The way we are
CASE WHEN LOCAL.FACTORY_LATE_DAYS > 0 AND  CASE WHEN LOCAL.INBOUND_LATE_DAYS > 0 AND  modeling, everything will go to purchase late.
LOCAL.PO_LATE_QTY_RDD_UOM > 0 LOCAL.PO_LATE_QTY_RDD_UOM > 0 There will not have any “other”
AND  THEN (LOCAL.FACTORY_LATE_DAYS /  THEN (LOCAL.INBOUND_LATE_DAYS / 
LOCAL.TOTAL_LATE_DAYS) * (LOCAL.DEMAND_QTY_UOM  LOCAL.TOTAL_LATE_DAYS) * (LOCAL.DEMAND_QTY_UOM 
<>  ‐ LOCAL.OTA_QTY_UOM ‐  ‐ LOCAL.OTA_QTY_UOM ‐ 
LOCAL.LATE_UNCOVEED_DEMAND_QTY_RDD_UOM ‐  LOCAL.LATE_UNCOVEED_DEMAND_QTY_RDD_UOM ‐ 
LOCAL.UNREALISTIC_DEMAND_QTY_RDD_UOM) LOCAL.UNREALISTIC_DEMAND_QTY_RDD_UOM)
ELSE 0 END AS FACTORY_LATE_QTY_RDD_UOM, ELSE 0 END AS INBOUND_LATE_QTY_RDD_UOM,

5
The sum of the factory and inbound late must
be equal to the purchase late. Therefore, in the
waterfall, they must not be side by side.

PURCHA
SE LATE
FACTORY
FACTOR LATE
Y LATE PURCHASE
LATE
INBOUND INBOUND
LATE LATE

WRONG RIGHT
ASIS

Supply shortage should be the


7 sum of all bucket and not a bar

Purchase Late should be the sum


8 of factory and inbound late

ASIS

(LOCAL.STOCK_QTY_UOM + LOCAL.ONTIME_PO_QTY_RDD_UOM + (CASE WHEN IDENTIFIER = 'MRP' THEN LOCAL.NOT_ALLOC_WITHIN_RLT_QTY_RDD_UOM    WHEN IDENTIFIER = 'ARUN' 
OTA ONTIME
AND MRP_TYPE <> 'Z2' THEN LOCAL.NOT_ALLOC_WITHIN_RLT_QTY_RDD_UOM ELSE 0 END)) AS OTA_QTY_UOM, SUPPLY SH

STOCK_QTY_UO
ONTIME_PO_QTY_RDD_UOM NOT_ALLOC_WITHIN_RLT NOT_ALLOC_WITHIN_
M (INV. OH)
STOCK_TYPE in ('B', 'L', 'A') AND PLRD <= 
STOCK_TYPE ='C' STOCK_TYPE IN (' ', 'A') MRP_TYPE = 'Z2'
RSS + OTA_TOLEARA 

‐‐BASE_QTY_UOM ‐‐ONTIME_PO_QTY_RDD_UOM/ONTIME_PO_QTY_MAD_UOM ‐‐NOT_ALLOC_WITHIN_RLT_QTY_RDD_UOM ‐‐LATE_UNCOVERED_DEMAND_QTY_RDD_UOM


CASE WHEN STOCK_TYPE ='C'  CASE WHEN IDENTIFIER = 'ARUN' AND STOCK_TYPE in ('B',  CASE WHEN IDENTIFIER = 'MRP' THEN (CASE WHEN STOCK_TYPE  CASE WHEN LOCAL.DEMAND_QTY_UOM ‐ 
THEN BASE_QTY_UOM ELSE 0 END  'L', 'A') AND POR_AVAILABILITY_DATE <=  IN (' ', 'A') AND (VALID_FROM_DATE ‐  LOCAL.OTA_QTY_UOM >= 0
AS STOCK_QTY_UOM, REQUESTED_DELIVERY_DATE+OTA_TOLEARANCE THEN BASE_QTY_UOM REQUESTED_DELIVERY_DATE + PLANNED_DEL_DAYS) <= 0 THEN      THEN ((CASE WHEN IDENTIFIER = 'A
   WHEN IDENTIFIER = 'MRP' AND STOCK_TYPE in ('B', 'L')  BASE_QTY_UOM ELSE 0 END) MRP_TYPE = 'Z2' THEN 
AND POR_AVAILABILITY_DATE <=      WHEN IDENTIFIER = 'ARUN' THEN (CASE WHEN STOCK_TYPE  LOCAL.NOT_ALLOC_WITHIN_RLT_QTY_RDD_U
REQUESTED_DELIVERY_DATE+OTA_TOLEARANCE THEN BASE_QTY_UOM = ' ' AND (VALID_FROM_DATE ‐ REQUESTED_DELIVERY_DATE +  0 END) + 
   ELSE 0 END AS ONTIME_PO_QTY_RDD_UOM, PLANNED_DEL_DAYS) <= 0 THEN BASE_QTY_UOM ELSE 0 END)  LOCAL.NOT_ALLOC_OUTSIDE_RLT_QTY_RDD_
END AS NOT_ALLOC_WITHIN_RLT_QTY_RDD_UOM, ELSE 0 END AS 
LATE_UNCOVEED_DEMAND_QTY_RDD_UOM,

2
Should we include the condition CASE
WHEN STOCK_TYPE IN (' ', 'A')? Because OTA_T
the NOT_ALLOC_WITHIN_RLT has this Becau
condition?
TO BE

ASIS

Supply Shortage is not a


6 single bar, but everything
that will not be available

‐‐SUPPLY SHORTAGE
DEMAND_QTY_UOM LOCAL.DEMAND_QTY_UOM ‐ LOCAL.OTA_QTY_UOM AS 
PROJECTED_LATE_QTY_OTA,

‐‐PURCHASE_LATE_QTY_RDD_UOM/PURCHASE_LATE_QTY_MAD_UOM
SUPPLY SHORTAGE (DEMAND – OTA) PURCHASE_LATE (LOCAL.DEMAND_QTY_UOM ‐ LOCAL.OTA_QTY_UOM ‐ 
LOCAL.LATE_UNCOVEED_DEMAND_QTY_RDD_UOM ‐ 
LOCAL.UNREALISTIC_DEMAND_QTY_RDD_UOM) AS PO_LATE_QTY_RDD_UOM,
UNREALISTIC_DEMAND OTHER
LOC_WITHIN_RLT NOT_ALLOC_OUTSIDE_RLT FACTORY_LATE INBOUND_LATE 4
There is no condition on purchase_late. We are
RP_TYPE = 'Z2' STOCK_TYPE IN (' ', 'A') CDD > RDD AND REQUIR_TYPE <> 'PB' FACTORY_LATE_DAYS > 0 AND LOCAL.PO_LATE_QTY > 0 INBOUND_LATE_DAYS > 0 AND PO_LATE_QTY_RDD > 0 assuming that the rest of the demand (Demand
– OTA – Late_Uncoverage – Ur=nrealistic) has
the purchae late. We should include the
ED_DEMAND_QTY_RDD_UOM ‐‐NOT_ALLOC_OUTSIDE_RLT_QTY_RDD_UOM ‐‐UNREALISTIC_DEMAND_QTY_RDD_UOM/ ‐‐FACTORY_LATE_QTY_RDD_UOM/ ‐‐INBOUND_LATE_QTY_RDD_UOM/
L.DEMAND_QTY_UOM ‐  CASE WHEN IDENTIFIER = 'MRP' THEN (CASE WHEN  UNREALISTIC_DEMAND_QTY_MAD_UOM FACTORY_LATE_QTY_MAD_UOM INBOUND_LATE_QTY_MAD_UOM
condition PO_LATE_QTY_RDD  >  0.The way we are
UOM >= 0 STOCK_TYPE IN (' ', 'A') AND (VALID_FROM_DATE ‐  CASE WHEN (LOCAL.DEMAND_QTY_UOM ‐ CASE WHEN LOCAL.FACTORY_LATE_DAYS > 0 AND  CASE WHEN LOCAL.INBOUND_LATE_DAYS > 0 AND  modeling, everything will go to purchase late.
E WHEN IDENTIFIER = 'ARUN' AND  REQUESTED_DELIVERY_DATE + PLANNED_DEL_DAYS) > 0  LOCAL.OTA_QTY_UOM ‐  LOCAL.PO_LATE_QTY_RDD_UOM > 0 LOCAL.PO_LATE_QTY_RDD_UOM > 0 There will not have any “other”
' THEN  THEN BASE_QTY_UOM ELSE 0 END) LOCAL.LATE_UNCOVEED_DEMAND_QTY_RDD_UOM) > 0 AND  THEN (LOCAL.FACTORY_LATE_DAYS /  THEN (LOCAL.INBOUND_LATE_DAYS / 
C_WITHIN_RLT_QTY_RDD_UOM ELSE      WHEN IDENTIFIER = 'ARUN' THEN (CASE WHEN  CONFIRMED_DELIVERY_DATE >  LOCAL.TOTAL_LATE_DAYS) * (LOCAL.DEMAND_QTY_UOM  LOCAL.TOTAL_LATE_DAYS) * (LOCAL.DEMAND_QTY_UOM 
STOCK_TYPE = ' ' AND (VALID_FROM_DATE ‐  REQUESTED_DELIVERY_DATE AND REQUIREMENT_TYPE <>  ‐ LOCAL.OTA_QTY_UOM ‐  ‐ LOCAL.OTA_QTY_UOM ‐ 
C_OUTSIDE_RLT_QTY_RDD_UOM)  REQUESTED_DELIVERY_DATE + PLANNED_DEL_DAYS) > 0  'PB' LOCAL.LATE_UNCOVEED_DEMAND_QTY_RDD_UOM ‐  LOCAL.LATE_UNCOVEED_DEMAND_QTY_RDD_UOM ‐ 
THEN BASE_QTY_UOM ELSE 0 END) END AS      THEN (LOCAL.DEMAND_QTY_UOM ‐ LOCAL.UNREALISTIC_DEMAND_QTY_RDD_UOM) LOCAL.UNREALISTIC_DEMAND_QTY_RDD_UOM)
DEMAND_QTY_RDD_UOM, NOT_ALLOC_OUTSIDE_RLT_QTY_RDD_UOM, LOCAL.OTA_QTY_UOM ‐  ELSE 0 END AS FACTORY_LATE_QTY_RDD_UOM, ELSE 0 END AS INBOUND_LATE_QTY_RDD_UOM,
LOCAL.LATE_UNCOVEED_DEMAND_QTY_RDD_UOM) ELSE 0 
END AS UNREALISTIC_DEMAND_QTY_RDD_UOM,
5
The sum of the factory and inbound late must
be equal to the purchase late. Therefore, in the
waterfall, they must not be side by side.
PURCHA
SE LATE
FACTORY
FACTOR LATE
Y LATE PURCHASE
LATE
INBOUND INBOUND
LATE LATE

WRONG RIGHT

ASE Should we include the


cause OTA_TOLEARANCE in the condition?
s this Because the Stock_Type = ‘A’ has a
PLRD.
a
ng
e

You might also like