The following lines contain the word 'select', 'insert', 'update' or 'delete':
PROCEDURE Insert_Bucketed_Demand(
p_atp_rec IN MRP_ATP_PVT.AtpRec,
p_plan_id IN NUMBER,
p_bucketed_demand_date IN DATE,
p_bucketed_demand_qty IN NUMBER,
p_display_flag IN NUMBER,
p_parent_demand_id IN NUMBER,
p_level IN NUMBER,
p_refresh_number IN NUMBER,
x_return_status OUT NOCOPY VARCHAR2
);
/* Private procedures removed for forecast at PF **Will be deleted after code review
PROCEDURE Prepare_Demands_Stmt1(
p_share_partition IN VARCHAR2,
p_demand_priority IN VARCHAR2,
p_excess_supply_by_dc IN VARCHAR2,
p_temp_table IN VARCHAR2,
p_parallel_degree IN NUMBER,
x_sql_stmt OUT NOCOPY VARCHAR2,
x_return_status OUT NOCOPY VARCHAR2
);
PROCEDURE Update_Pf_Display_Flag(
p_plan_id IN NUMBER,
x_return_status OUT NOCOPY VARCHAR2
);
| o This procedure calls private procedure Insert_Bucketed_Demand to
| add the bucketed demands
+-------------------------------------------------------------------------*/
PROCEDURE Add_PF_Bucketed_Demands(
p_atp_rec IN MRP_ATP_PVT.AtpRec,
p_plan_id IN NUMBER,
p_parent_demand_id IN NUMBER,
p_refresh_number IN NUMBER,
x_return_status OUT NOCOPY VARCHAR2
) IS
-- local variables
l_bucketed_demands_rec Bucketed_Demands_Rec;
IF l_bucketed_demands_rec.insert_mem_bd = 'Y' and l_bucketed_demands_rec.mem_bd_qty > 0 THEN
Insert_Bucketed_Demand(
p_atp_rec,
p_plan_id,
l_bucketed_demands_rec.mem_bd_date,
l_bucketed_demands_rec.mem_bd_qty,
l_bucketed_demands_rec.mem_display_flag,
p_parent_demand_id,
member, -- member item bd
p_refresh_number,
l_return_status
);
msc_sch_wb.atp_debug('Add_PF_Bucketed_Demands: ' || 'Error occured in procedure Insert_Bucketed_Demand');
IF l_bucketed_demands_rec.insert_pf_bd = 'Y' and l_bucketed_demands_rec.pf_bd_qty > 0 THEN
Insert_Bucketed_Demand(
p_atp_rec,
p_plan_id,
l_bucketed_demands_rec.pf_bd_date,
l_bucketed_demands_rec.pf_bd_qty,
l_bucketed_demands_rec.pf_display_flag,
p_parent_demand_id,
family, -- family item bd
p_refresh_number,
l_return_status
);
msc_sch_wb.atp_debug('Add_PF_Bucketed_Demands: ' || 'Error occured in procedure Insert_Bucketed_Demand');
One bucketed demand would be inserted in this case*/
x_bucketed_demands_rec.insert_mem_bd := 'Y';
x_bucketed_demands_rec.insert_pf_bd := 'N';
Two bucketed demands would be inserted in this case*/
x_bucketed_demands_rec.insert_mem_bd := 'Y';
x_bucketed_demands_rec.insert_pf_bd := 'Y';
One bucketed demand would be inserted in this case*/
x_bucketed_demands_rec.insert_pf_bd := 'Y';
x_bucketed_demands_rec.insert_mem_bd := 'N';
Two bucketed demands would be inserted in this case*/
x_bucketed_demands_rec.insert_mem_bd := 'Y';
x_bucketed_demands_rec.insert_pf_bd := 'Y';
Two bucketed demands would be inserted in this case*/
x_bucketed_demands_rec.insert_mem_bd := 'Y';
x_bucketed_demands_rec.insert_pf_bd := 'Y';
msc_sch_wb.atp_debug('* Add member item bucketed demand = ' ||x_bucketed_demands_rec.insert_mem_bd);
msc_sch_wb.atp_debug('* Add family item bucketed demand = ' ||x_bucketed_demands_rec.insert_pf_bd);
/*--Update_PF_Bucketed_Demands----------------------------------------------
| o This procedure updates bucketed demands
+-------------------------------------------------------------------------*/
PROCEDURE Update_PF_Bucketed_Demands(
p_plan_id IN NUMBER,
p_parent_demand_id IN NUMBER,
p_demand_date IN DATE,
p_atf_date IN DATE,
p_old_demand_date_qty IN NUMBER,
p_new_demand_date_qty IN NUMBER,
x_return_status OUT NOCOPY VARCHAR2
) IS
-- local variables
l_mem_bd_qty NUMBER;
l_update_mem_bd VARCHAR2(1) := 'N';
l_update_pf_bd VARCHAR2(1) := 'N';
msc_sch_wb.atp_debug('*********Begin procedure Update_PF_Bucketed_Demands ********');
msc_sch_wb.atp_debug('Update_PF_Bucketed_Demands: ' || 'p_plan_id = ' ||to_char(p_plan_id));
msc_sch_wb.atp_debug('Update_PF_Bucketed_Demands: ' || 'p_parent_demand_id = ' ||to_char(p_parent_demand_id));
msc_sch_wb.atp_debug('Update_PF_Bucketed_Demands: ' || 'p_demand_date = ' ||to_char(p_demand_date));
msc_sch_wb.atp_debug('Update_PF_Bucketed_Demands: ' || 'p_atf_date = ' ||to_char(p_atf_date));
msc_sch_wb.atp_debug('Update_PF_Bucketed_Demands: ' || 'p_old_demand_date_qty = ' ||to_char(p_old_demand_date_qty));
msc_sch_wb.atp_debug('Update_PF_Bucketed_Demands: ' || 'p_new_demand_date_qty = ' ||to_char(p_new_demand_date_qty));
l_update_mem_bd := 'Y';
l_update_pf_bd := 'D';
l_update_mem_bd := 'Y';
l_update_pf_bd := 'Y';
IF l_update_mem_bd = 'Y' THEN
update msc_alloc_demands
set allocated_quantity = nvl(l_mem_bd_qty, allocated_quantity),
demand_quantity = nvl(p_new_demand_date_qty, demand_quantity)
where parent_demand_id = p_parent_demand_id
--bug3693892 added trunc
and trunc(demand_date) <= p_atf_date
and plan_id = p_plan_id;
IF l_update_pf_bd = 'Y' THEN
update msc_alloc_demands
set allocated_quantity = allocated_quantity - l_pf_bd_decrement_qty,
demand_quantity = nvl(p_new_demand_date_qty, demand_quantity)
where parent_demand_id = p_parent_demand_id
--bug3693892 added trunc
and trunc(demand_date) > p_atf_date
and plan_id = p_plan_id;
ELSIF l_update_pf_bd = 'D' THEN
delete msc_alloc_demands
where parent_demand_id = p_parent_demand_id
--bug3693892 added trunc
and trunc(demand_date) > p_atf_date
and plan_id = p_plan_id;
msc_sch_wb.atp_debug('*********End of procedure Update_PF_Bucketed_Demands ********');
msc_sch_wb.atp_debug('Update_PF_Bucketed_Demands: ' || 'Error occurred: ' || to_char(sqlcode) || ':' || SQLERRM);
END Update_PF_Bucketed_Demands;
| o This procedure calls private procedure Insert_Bucketed_Demand if
| there is no existing bucketed demand.
+-------------------------------------------------------------------------*/
PROCEDURE Increment_Bucketed_Demands_Qty(
p_atp_rec IN OUT NOCOPY MRP_ATP_PVT.AtpRec,
p_plan_id IN NUMBER,
p_parent_demand_id IN NUMBER,
-- p_mem_bd_increment_qty IN NUMBER,
-- p_pf_bd_increment_qty IN NUMBER,
x_return_status OUT NOCOPY VARCHAR2
) IS
-- local variables
l_bucketed_demands_rec Bucketed_Demands_Rec;
delete msc_alloc_demands
where parent_demand_id = p_parent_demand_id
and inventory_item_id = p_atp_rec.request_item_id
and plan_id = p_plan_id;
update msc_alloc_demands
set allocated_quantity = l_bucketed_demands_rec.mem_bd_qty,
demand_quantity = l_req_qty,
--bug3697365 added timestamp also
demand_date = trunc(l_bucketed_demands_rec.mem_bd_date) + MSC_ATP_PVT.G_END_OF_DAY,
original_demand_date = trunc(l_req_date) + MSC_ATP_PVT.G_END_OF_DAY,
Pf_Display_Flag = l_bucketed_demands_rec.mem_display_flag
where parent_demand_id = p_parent_demand_id
and inventory_item_id = p_atp_rec.request_item_id
and plan_id = p_plan_id;
msc_sch_wb.atp_debug('Increment_Bucketed_Demands_Qty: Member item bucketed demand not found. Inserting now...');
Insert_Bucketed_Demand(
p_atp_rec,
p_plan_id,
l_bucketed_demands_rec.mem_bd_date,
l_bucketed_demands_rec.mem_bd_qty,
l_bucketed_demands_rec.mem_display_flag,
p_parent_demand_id,
member, -- member item bd
p_atp_rec.refresh_number,
l_return_status
);
msc_sch_wb.atp_debug('Increment_Bucketed_Demands_Qty: ' || 'Error occured in procedure Insert_Bucketed_Demand');
delete msc_alloc_demands
where parent_demand_id = p_parent_demand_id
and inventory_item_id = p_atp_rec.inventory_item_id
and plan_id = p_plan_id;
update msc_alloc_demands
set allocated_quantity = l_bucketed_demands_rec.pf_bd_qty,
demand_quantity = l_req_qty,
--bug3697365 added timestamp also
demand_date = trunc(l_bucketed_demands_rec.pf_bd_date) + MSC_ATP_PVT.G_END_OF_DAY,
original_demand_date = trunc(l_req_date) + MSC_ATP_PVT.G_END_OF_DAY,
Pf_Display_Flag = l_bucketed_demands_rec.pf_display_flag
where parent_demand_id = p_parent_demand_id
and inventory_item_id = p_atp_rec.inventory_item_id
and plan_id = p_plan_id;
msc_sch_wb.atp_debug('Increment_Bucketed_Demands_Qty: Family item bucketed demand not found. Inserting now...');
Insert_Bucketed_Demand(
p_atp_rec,
p_plan_id,
l_bucketed_demands_rec.pf_bd_date,
l_bucketed_demands_rec.pf_bd_qty,
l_bucketed_demands_rec.pf_display_flag,
p_parent_demand_id,
family, -- family item bd
p_atp_rec.refresh_number,
l_return_status
);
msc_sch_wb.atp_debug('Increment_Bucketed_Demands_Qty: ' || 'Error occured in procedure Insert_Bucketed_Demand');
l_update_mem_bd VARCHAR(1) :='N';
l_update_pf_bd VARCHAR(1) :='N';
msc_sch_wb.atp_debug('Move_PF_Bucketed_Demands: No need to move bucketed demand dates. Update qtys');
msc_sch_wb.atp_debug('Move_PF_Bucketed_Demands: No need to update qtys');
update msc_alloc_demands
set allocated_quantity = p_demand_qty,
demand_quantity = p_demand_qty
where parent_demand_id = p_parent_demand_id
and demand_date <= p_atf_date
and plan_id = p_plan_id;
update msc_alloc_demands
set allocated_quantity = nvl(p_atf_date_qty, 0),
demand_quantity = p_demand_qty
where parent_demand_id = p_parent_demand_id
and demand_date <= p_atf_date
and plan_id = p_plan_id;
update msc_alloc_demands
set allocated_quantity = p_demand_qty - nvl(p_atf_date_qty, 0),
demand_quantity = p_demand_qty
where parent_demand_id = p_parent_demand_id
and demand_date > p_atf_date
and plan_id = p_plan_id;
l_update_mem_bd := 'Y';
l_update_mem_bd := 'Y';
l_update_pf_bd := 'Y';
l_update_pf_bd := 'Y';
l_update_pf_bd := 'Y';
l_update_mem_bd := 'Y';
l_update_pf_bd := 'Y';
msc_sch_wb.atp_debug('* Update member item bucketed demand = ' ||l_update_mem_bd);
msc_sch_wb.atp_debug('* Update family item bucketed demand = ' ||l_update_pf_bd);
IF l_update_mem_bd = 'Y' THEN
update msc_alloc_demands
--bug3697365 added timestamp also
set demand_date = trunc(l_mem_bd_date) + MSC_ATP_PVT.G_END_OF_DAY,
allocated_quantity = l_mem_bd_qty,
demand_quantity = p_demand_qty,
pf_display_flag = l_mem_display_flag,
--bug3697365 added timestamp also
original_demand_date = trunc(p_new_demand_date) + MSC_ATP_PVT.G_END_OF_DAY
where parent_demand_id = p_parent_demand_id
--bug3693892 added trunc
and trunc(demand_date) <= p_atf_date
and plan_id = p_plan_id;
msc_sch_wb.atp_debug('Move_PF_Bucketed_Demands: Member item bucketed demand not found. Inserting now...');
Insert_Bucketed_Demand(
l_atp_rec,
p_plan_id,
l_mem_bd_date,
l_mem_bd_qty,
l_mem_display_flag,
p_parent_demand_id,
member, -- member item bd
l_atp_rec.refresh_number,
l_return_status
);
msc_sch_wb.atp_debug('Move_PF_Bucketed_Demands: ' || 'Error occured in procedure Insert_Bucketed_Demand');
IF l_update_pf_bd = 'Y' THEN
update msc_alloc_demands
--bug3697365 added timestamp also
set demand_date = trunc(l_pf_bd_date) + MSC_ATP_PVT.G_END_OF_DAY,
allocated_quantity = l_pf_bd_qty,
demand_quantity = p_demand_qty,
pf_display_flag = l_pf_display_flag,
--bug3697365 added timestamp also
original_demand_date = trunc(p_new_demand_date) + MSC_ATP_PVT.G_END_OF_DAY
where parent_demand_id = p_parent_demand_id
--bug3693892 added trunc
and trunc(demand_date) > p_atf_date
and plan_id = p_plan_id;
msc_sch_wb.atp_debug('Move_PF_Bucketed_Demands: Family item bucketed demand not found. Inserting now...');
Insert_Bucketed_Demand(
l_atp_rec,
p_plan_id,
l_pf_bd_date,
l_pf_bd_qty,
l_pf_display_flag,
p_parent_demand_id,
family, -- family item bd
l_atp_rec.refresh_number,
l_return_status
);
msc_sch_wb.atp_debug('Move_PF_Bucketed_Demands: ' || 'Error occured in procedure Insert_Bucketed_Demand');
l_update_mem_bd := 'Y';
/* Delete member item's bucketed demand*/
IF p_bkwd_pass_atf_date_qty <> 0 THEN --bug3397904 start
l_update_mem_bd := 'Y';
l_update_mem_bd := 'D';
l_update_pf_bd := 'Y';
l_update_mem_bd := 'Y';
l_update_pf_bd := 'Y';
msc_sch_wb.atp_debug('* Update member item bucketed demand = ' ||l_update_mem_bd);
msc_sch_wb.atp_debug('* Update family item bucketed demand = ' ||l_update_pf_bd);
IF l_update_mem_bd = 'Y' THEN
update msc_alloc_demands
--bug3697365 added timestamp also
set demand_date = trunc(l_mem_bd_date) + MSC_ATP_PVT.G_END_OF_DAY,
allocated_quantity = l_mem_bd_qty,
demand_quantity = p_demand_qty,
pf_display_flag = l_mem_display_flag,
--bug3697365 added timestamp also
original_demand_date = trunc(p_new_demand_date) + MSC_ATP_PVT.G_END_OF_DAY
where parent_demand_id = p_parent_demand_id
--bug3693892 added trunc
and trunc(demand_date) <= p_atf_date
and plan_id = p_plan_id;
msc_sch_wb.atp_debug('Move_PF_Bucketed_Demands: Member item bucketed demand not found. Inserting now...');
Insert_Bucketed_Demand(
l_atp_rec,
p_plan_id,
l_mem_bd_date,
l_mem_bd_qty,
--l_pf_display_flag,
l_mem_display_flag, -- Bug 3483954
p_parent_demand_id,
member, -- member item bd
l_atp_rec.refresh_number,
l_return_status
);
msc_sch_wb.atp_debug('Move_PF_Bucketed_Demands: ' || 'Error occured in procedure Insert_Bucketed_Demand');
ELSIF l_update_mem_bd = 'D' THEN
delete msc_alloc_demands
where parent_demand_id = p_parent_demand_id
--bug3693892 added trunc
and trunc(demand_date) <= p_atf_date
and plan_id = p_plan_id;
IF l_update_pf_bd = 'Y' THEN
update msc_alloc_demands
--bug3697365 added timestamp also
set demand_date = trunc(l_pf_bd_date) + MSC_ATP_PVT.G_END_OF_DAY,
allocated_quantity = l_pf_bd_qty,
demand_quantity = p_demand_qty,
pf_display_flag = l_pf_display_flag,
--bug3697365 added timestamp also
original_demand_date = trunc(p_new_demand_date) + MSC_ATP_PVT.G_END_OF_DAY
where parent_demand_id = p_parent_demand_id
--bug3693892 added trunc
and trunc(demand_date) > p_atf_date
and plan_id = p_plan_id;
msc_sch_wb.atp_debug('Move_PF_Bucketed_Demands: Family item bucketed demand not found. Inserting now...');
Insert_Bucketed_Demand(
l_atp_rec,
p_plan_id,
l_pf_bd_date,
l_pf_bd_qty,
l_pf_display_flag,
p_parent_demand_id,
family, -- family item bd
l_atp_rec.refresh_number,
l_return_status
);
msc_sch_wb.atp_debug('Move_PF_Bucketed_Demands: ' || 'Error occured in procedure Insert_Bucketed_Demand');
update msc_alloc_demands
--bug3697365 added timestamp also
set demand_date = trunc(p_new_demand_date) + MSC_ATP_PVT.G_END_OF_DAY,
original_demand_date = trunc(p_new_demand_date) + MSC_ATP_PVT.G_END_OF_DAY
where parent_demand_id = p_parent_demand_id
--bug3693892 added trunc
and trunc(demand_date) <= p_atf_date
and plan_id = p_plan_id;
update msc_alloc_demands
--bug3693892 added trunc
set demand_date = trunc(p_atf_date) + MSC_ATP_PVT.G_END_OF_DAY,
original_demand_date = trunc(p_new_demand_date) + MSC_ATP_PVT.G_END_OF_DAY,
Pf_Display_Flag = null
where parent_demand_id = p_parent_demand_id
--bug3693892 added trunc
and trunc(demand_date) <= p_atf_date
and plan_id = p_plan_id;
update msc_alloc_demands
--bug3693892 added trunc
set demand_date = trunc(p_new_demand_date) + MSC_ATP_PVT.G_END_OF_DAY,
original_demand_date = trunc(p_new_demand_date) + MSC_ATP_PVT.G_END_OF_DAY,
Pf_Display_Flag = 1
where parent_demand_id = p_parent_demand_id
--bug3693892 added trunc
and trunc(demand_date) > p_atf_date
and plan_id = p_plan_id;
update msc_alloc_demands
--bug3693892 added trunc
set demand_date = trunc(p_new_demand_date) + MSC_ATP_PVT.G_END_OF_DAY,
original_demand_date = trunc(p_new_demand_date) + MSC_ATP_PVT.G_END_OF_DAY
where parent_demand_id = p_parent_demand_id
--bug3693892 added trunc
and trunc(demand_date) > p_atf_date
and plan_id = p_plan_id;
/*--Insert_Bucketed_Demand--------------------------------------------------
| o This procedure inserts bucketed demand in msc_alloc_demands table
| with origination type 51 (ATP Bucketed Demand).
+-------------------------------------------------------------------------*/
PROCEDURE Insert_Bucketed_Demand(
p_atp_rec IN MRP_ATP_PVT.AtpRec,
p_plan_id IN NUMBER,
p_bucketed_demand_date IN DATE,
p_bucketed_demand_qty IN NUMBER,
p_display_flag IN NUMBER,
p_parent_demand_id IN NUMBER,
p_level IN NUMBER,
p_refresh_number IN NUMBER,
x_return_status OUT NOCOPY VARCHAR2
) IS
-- local variables
l_sysdate date := sysdate;
msc_sch_wb.atp_debug('*********Begin procedure Insert_Bucketed_Demand ********');
INSERT INTO MSC_ALLOC_DEMANDS(
PLAN_ID,
INVENTORY_ITEM_ID,
ORIGINAL_ITEM_ID,
USING_ASSEMBLY_ITEM_ID,
ORGANIZATION_ID,
SR_INSTANCE_ID,
DEMAND_CLASS,
DEMAND_DATE,
ORIGINAL_DEMAND_DATE,
PARENT_DEMAND_ID,
ALLOCATED_QUANTITY,
DEMAND_QUANTITY,
ORIGINATION_TYPE,
ORIGINAL_ORIGINATION_TYPE,
ORDER_NUMBER,
SALES_ORDER_LINE_ID,
DEMAND_SOURCE_TYPE,--cmro
PF_DISPLAY_FLAG,
CUSTOMER_ID,
SHIP_TO_SITE_ID,
REFRESH_NUMBER,
CREATED_BY,
CREATION_DATE,
LAST_UPDATED_BY,
LAST_UPDATE_DATE
)
VALUES (
p_plan_id,
decode(p_level, member, p_atp_rec.request_item_id,
p_atp_rec.inventory_item_id),
p_atp_rec.request_item_id,
p_atp_rec.request_item_id,
p_atp_rec.organization_id,
p_atp_rec.instance_id,
nvl(p_atp_rec.demand_class, -1),
--bug3697365 added timestamp also
TRUNC(p_bucketed_demand_date) + MSC_ATP_PVT.G_END_OF_DAY,
TRUNC(p_atp_rec.requested_ship_date) + MSC_ATP_PVT.G_END_OF_DAY,
p_parent_demand_id,
p_bucketed_demand_qty,
p_atp_rec.quantity_ordered,
51, -- ATP Bucketed Demand
p_atp_rec.origination_type,
decode(p_atp_rec.origination_type, 1, p_parent_demand_id,
p_atp_rec.order_number),
p_atp_rec.demand_source_line,
p_atp_rec.demand_source_type,--cmro
p_display_flag,
decode(p_atp_rec.origination_type, 6, MSC_ATP_PVT.G_PARTNER_ID,
30, MSC_ATP_PVT.G_PARTNER_ID,
null),
decode(p_atp_rec.origination_type, 6, MSC_ATP_PVT.G_PARTNER_SITE_ID,
30, MSC_ATP_PVT.G_PARTNER_SITE_ID,
null),
p_refresh_number,
G_USER_ID,
l_sysdate,
G_USER_ID,
l_sysdate
);
msc_sch_wb.atp_debug('Insert_Bucketed_Demand: ' || 'Error occurred: ' || to_char(sqlcode) || ':' || SQLERRM);
END Insert_Bucketed_Demand;
SELECT allocated_quantity,
demand_date
INTO p_bucketed_demands_rec.mem_bd_qty,
p_bucketed_demands_rec.mem_bd_date
FROM msc_alloc_demands
WHERE plan_id = p_plan_id
AND parent_demand_id = p_parent_demand_id
AND inventory_item_id = p_bucketed_demands_rec.mem_item_id
;
SELECT allocated_quantity,
demand_date
INTO p_bucketed_demands_rec.pf_bd_qty,
p_bucketed_demands_rec.pf_bd_date
FROM msc_alloc_demands
WHERE plan_id = p_plan_id
AND parent_demand_id = p_parent_demand_id
AND inventory_item_id = p_bucketed_demands_rec.pf_item_id
;
INSERT INTO MSC_ALLOC_SUPPLIES(
PLAN_ID,
INVENTORY_ITEM_ID,
ORGANIZATION_ID,
SR_INSTANCE_ID,
DEMAND_CLASS,
SUPPLY_DATE,
PARENT_TRANSACTION_ID,
ALLOCATED_QUANTITY,
SUPPLY_QUANTITY,
ORDER_TYPE,
ORIGINAL_ORDER_TYPE,
ORIGINAL_ITEM_ID,
REFRESH_NUMBER,
CREATED_BY,
CREATION_DATE,
LAST_UPDATED_BY,
LAST_UPDATE_DATE,
CUSTOMER_ID, -- Bug 3558125
SHIP_TO_SITE_ID -- Bug 3558125
)
VALUES (
p_plan_id,
p_member_item_id,
p_organization_id,
p_instance_id,
nvl(p_demand_class, -1),
p_schedule_date,
p_parent_transaction_id,
p_order_quantity,
p_order_quantity,
50,
p_orig_order_type,
p_member_item_id,
p_refresh_number,
G_USER_ID,
l_sysdate,
G_USER_ID,
l_sysdate,
NVL(MSC_ATP_PVT.G_PARTNER_ID,-1), -- Bug 3558125
NVL(MSC_ATP_PVT.G_PARTNER_SITE_ID,-1) -- Bug 3558125
);
INSERT INTO MSC_ALLOC_SUPPLIES(
PLAN_ID,
INVENTORY_ITEM_ID,
ORGANIZATION_ID,
SR_INSTANCE_ID,
DEMAND_CLASS,
SUPPLY_DATE,
PARENT_TRANSACTION_ID,
ALLOCATED_QUANTITY,
SUPPLY_QUANTITY,
ORDER_TYPE,
ORIGINAL_ORDER_TYPE,
ORIGINAL_ITEM_ID,
REFRESH_NUMBER,
CREATED_BY,
CREATION_DATE,
LAST_UPDATED_BY,
LAST_UPDATE_DATE,
CUSTOMER_ID, -- Bug 3558125
SHIP_TO_SITE_ID -- Bug 3558125
)
VALUES (
p_plan_id,
p_family_item_id,
p_organization_id,
p_instance_id,
nvl(p_demand_class, -1),
p_schedule_date,
p_parent_transaction_id,
p_order_quantity,
p_order_quantity,
50,
p_orig_order_type,
p_member_item_id,
p_refresh_number,
G_USER_ID,
l_sysdate,
G_USER_ID,
l_sysdate,
NVL(MSC_ATP_PVT.G_PARTNER_ID,-1), -- Bug 3558125
NVL(MSC_ATP_PVT.G_PARTNER_SITE_ID,-1) -- Bug 3558125
);
/*--Update_PF_Rollup_Supplies----------------------------------------------
| o This procedure is called from update_planned_order procedure to
| update PF rollup supplies.
| o Updates rollup supplies to passed date and quantity values.
+-------------------------------------------------------------------------*/
PROCEDURE Update_PF_Rollup_Supplies(
p_plan_id IN NUMBER,
p_parent_transaction_id IN NUMBER,
p_mem_item_id IN NUMBER,
p_pf_item_id IN NUMBER,
p_date IN DATE,
p_quantity IN NUMBER,
p_atf_date IN DATE,
x_return_status OUT NOCOPY VARCHAR2
) IS
-- local variables
l_sysdate date := sysdate;
msc_sch_wb.atp_debug('*********Begin procedure Update_PF_Rollup_Supplies ********');
msc_sch_wb.atp_debug('Update_PF_Rollup_Supplies: ' || 'p_plan_id ='||to_char(p_plan_id));
msc_sch_wb.atp_debug('Update_PF_Rollup_Supplies: ' || 'p_parent_transaction_id ='||to_char(p_parent_transaction_id));
msc_sch_wb.atp_debug('Update_PF_Rollup_Supplies: ' || 'p_mem_item_id ='||to_char(p_mem_item_id));
msc_sch_wb.atp_debug('Update_PF_Rollup_Supplies: ' || 'p_pf_item_id ='||to_char(p_pf_item_id));
msc_sch_wb.atp_debug('Update_PF_Rollup_Supplies: ' || 'p_date ='||to_char(p_date));
msc_sch_wb.atp_debug('Update_PF_Rollup_Supplies: ' || 'p_quantity ='||to_char(p_quantity));
msc_sch_wb.atp_debug('Update_PF_Rollup_Supplies: ' || 'p_atf_date ='||to_char(p_atf_date));
UPDATE msc_alloc_supplies
SET old_supply_date = supply_date, -- why do we populate old_supply_date and qty??
old_allocated_quantity = allocated_quantity, --??
allocated_quantity = NVL(p_quantity, allocated_quantity),
supply_quantity = NVL(p_quantity, supply_quantity), -- Bug 3779200
LAST_UPDATED_BY = G_USER_ID,
LAST_UPDATE_DATE = l_sysdate
WHERE plan_id = p_plan_id
AND parent_transaction_id = p_parent_transaction_id;
UPDATE msc_alloc_supplies
SET old_supply_date = supply_date, -- why do we populate old_supply_date and qty??
old_allocated_quantity = allocated_quantity, --??
supply_date = NVL(p_date, supply_date),
allocated_quantity = NVL(p_quantity, allocated_quantity),
supply_quantity = NVL(p_quantity, supply_quantity), -- Bug 3779200
inventory_item_id = p_mem_item_id,
LAST_UPDATED_BY = G_USER_ID,
LAST_UPDATE_DATE = l_sysdate
WHERE plan_id = p_plan_id
AND parent_transaction_id = p_parent_transaction_id;
UPDATE msc_alloc_supplies
SET old_supply_date = supply_date, -- why do we populate old_supply_date and qty??
old_allocated_quantity = allocated_quantity, --??
supply_date = NVL(p_date, supply_date),
allocated_quantity = NVL(p_quantity, allocated_quantity),
supply_quantity = NVL(p_quantity, supply_quantity), -- Bug 3779200
inventory_item_id = p_pf_item_id,
LAST_UPDATED_BY = G_USER_ID,
LAST_UPDATE_DATE = l_sysdate
WHERE plan_id = p_plan_id
AND parent_transaction_id = p_parent_transaction_id;
msc_sch_wb.atp_debug('*********End of procedure Update_PF_Rollup_Supplies ********');
msc_sch_wb.atp_debug('Update_PF_Rollup_Supplies: ' || 'Error occurred: ' || to_char(sqlcode) || ':' || SQLERRM);
END Update_PF_Rollup_Supplies;
msc_sch_wb.atp_debug('Add_PF_Stealing_Supply_Details: ' || 'before insert into msc_alloc_supplies-Stealing Info');
INSERT INTO MSC_ALLOC_SUPPLIES
(plan_id, inventory_item_id, organization_id, sr_instance_id,
demand_class, supply_date, parent_transaction_id,
allocated_quantity, order_type, sales_order_line_id,demand_source_type,stealing_flag,--cmro
supply_quantity, original_item_id, original_order_type,
created_by, creation_date, last_updated_by, last_update_date, from_demand_class, ato_model_line_id, refresh_number, -- For summary enhancement
--bug3684383
order_number,customer_id,ship_to_site_id
)
VALUES
(p_plan_id, p_mem_item_id, p_organization_id,
p_sr_instance_id, p_stealing_demand_class, l_mem_stealing_rec_date,
--bug3555084 using msc_supplies_s.nextval in place of p_transaction_id
msc_supplies_s.nextval, p_mem_stealing_quantity, 50, p_identifier,p_demand_source_type, 1,--cmro
p_mem_stealing_quantity, p_mem_item_id, 46,
G_USER_ID, l_sysdate, G_USER_ID, l_sysdate, p_stolen_demand_class, p_ato_model_line_id, p_refresh_number,
--bug3684383
p_order_number,MSC_ATP_PVT.G_PARTNER_ID,MSC_ATP_PVT.G_PARTNER_SITE_ID) -- For summary enhancement
RETURNING parent_transaction_id INTO p_transaction_id; --bug3555084
msc_sch_wb.atp_debug('Add_PF_Stealing_Supply_Details: ' || 'before insert into msc_alloc_supplies-Stolen Info');
INSERT INTO MSC_ALLOC_SUPPLIES
(plan_id, inventory_item_id, organization_id, sr_instance_id,
demand_class, supply_date, parent_transaction_id,
allocated_quantity, order_type, sales_order_line_id,demand_source_type, stealing_flag,--cmro
supply_quantity, original_item_id, original_order_type,
created_by, creation_date, last_updated_by, last_update_date, from_demand_class, ato_model_line_id, refresh_number, -- For summary enhancement
--bug3684383
order_number,customer_id,ship_to_site_id)
VALUES
(p_plan_id, p_mem_item_id, p_organization_id,
p_sr_instance_id, p_stolen_demand_class, l_mem_stealing_rec_date,
p_transaction_id, -1 * p_mem_stealing_quantity, 50, p_identifier,p_demand_source_type, 1,---cmro
-1 * p_mem_stealing_quantity, p_mem_item_id, 47,
G_USER_ID, l_sysdate, G_USER_ID, l_sysdate, p_stealing_demand_class, p_ato_model_line_id, p_refresh_number,
--bug3684383
p_order_number,MSC_ATP_PVT.G_PARTNER_ID,MSC_ATP_PVT.G_PARTNER_SITE_ID); -- For summary enhancement
msc_sch_wb.atp_debug('Add_PF_Stealing_Supply_Details: ' || 'before insert into msc_alloc_supplies-Stealing Info');
INSERT INTO MSC_ALLOC_SUPPLIES
(plan_id, inventory_item_id, organization_id, sr_instance_id,
demand_class, supply_date, parent_transaction_id,
allocated_quantity, order_type, sales_order_line_id,demand_source_type, stealing_flag,--cmro
supply_quantity, original_item_id, original_order_type,
created_by, creation_date, last_updated_by, last_update_date, from_demand_class, refresh_number, -- For summary enhancement
--bug3684383
order_number,customer_id,ship_to_site_id)
VALUES
(p_plan_id, p_pf_item_id, p_organization_id,
p_sr_instance_id, p_stealing_demand_class, l_pf_stealing_rec_date,
p_transaction_id, p_pf_stealing_quantity, 50, p_identifier,p_demand_source_type, 1,--cmro
p_pf_stealing_quantity, p_mem_item_id, 46,
G_USER_ID, l_sysdate, G_USER_ID, l_sysdate, p_stolen_demand_class, p_refresh_number, -- For summary enhancement
--bug3684383
p_order_number,MSC_ATP_PVT.G_PARTNER_ID,MSC_ATP_PVT.G_PARTNER_SITE_ID);
INSERT INTO MSC_ALLOC_SUPPLIES
(plan_id, inventory_item_id, organization_id, sr_instance_id,
demand_class, supply_date, parent_transaction_id,
allocated_quantity, order_type, sales_order_line_id,demand_source_type, stealing_flag,--cmro
supply_quantity, original_item_id, original_order_type,
created_by, creation_date, last_updated_by, last_update_date, from_demand_class, refresh_number, -- For summary enhancement
--bug3684383
order_number,customer_id,ship_to_site_id)
VALUES
(p_plan_id, p_pf_item_id, p_organization_id,
p_sr_instance_id, p_stealing_demand_class, l_pf_stealing_rec_date,
msc_supplies_s.nextval, p_pf_stealing_quantity, 50, p_identifier,p_demand_source_type, 1,--cmro
p_pf_stealing_quantity, p_mem_item_id, 46,
G_USER_ID, l_sysdate, G_USER_ID, l_sysdate, p_stolen_demand_class, p_refresh_number, -- For summary enhancement
--bug3684383
p_order_number,MSC_ATP_PVT.G_PARTNER_ID,MSC_ATP_PVT.G_PARTNER_SITE_ID)
RETURNING parent_transaction_id INTO p_transaction_id;
msc_sch_wb.atp_debug('Add_PF_Stealing_Supply_Details: ' || 'before insert into msc_alloc_supplies-Stolen Info');
INSERT INTO MSC_ALLOC_SUPPLIES
(plan_id, inventory_item_id, organization_id, sr_instance_id,
demand_class, supply_date, parent_transaction_id,
allocated_quantity, order_type, sales_order_line_id,demand_source_type, stealing_flag,--cmro
supply_quantity, original_item_id, original_order_type,
created_by, creation_date, last_updated_by, last_update_date, from_demand_class, refresh_number, -- For summary enhancement
--bug3684383
order_number,customer_id,ship_to_site_id)
VALUES
(p_plan_id, p_pf_item_id, p_organization_id,
p_sr_instance_id, p_stolen_demand_class, l_pf_stealing_rec_date,
p_transaction_id, -1 * p_pf_stealing_quantity, 50, p_identifier,p_demand_source_type, 1,--cmro
-1 * p_pf_stealing_quantity, p_mem_item_id, 47,
G_USER_ID, l_sysdate, G_USER_ID, l_sysdate, p_stealing_demand_class, p_refresh_number, -- For summary enhancement
--bug3684383
p_order_number,MSC_ATP_PVT.G_PARTNER_ID,MSC_ATP_PVT.G_PARTNER_SITE_ID);
msc_sch_wb.atp_debug('Add_PF_Stealing_Supply_Details: ' || 'Total Rows inserted ' || l_rows_proc);
| o Called from Insert_Details procedure.
| o Calls these private procedures:
| - Get_Mat_Avail_Pf_Ods_Dtls - For PF ODS ATP
| - Get_Mat_Avail_Pf_Pds_Dtls - For Unallocated Time Phased PF ATP
+-------------------------------------------------------------------------*/
PROCEDURE Get_Mat_Avail_Pf_Dtls (
p_item_id IN NUMBER,
p_request_item_id IN NUMBER,
p_org_id IN NUMBER,
p_instance_id IN NUMBER,
p_plan_id IN NUMBER,
p_cal_code IN VARCHAR2,
p_sysdate_seq_num IN NUMBER,
p_sys_next_date IN DATE,
p_demand_class IN VARCHAR2,
p_default_atp_rule_id IN NUMBER,
p_default_dmd_class IN VARCHAR2,
p_itf IN DATE,
p_level IN NUMBER,
p_scenario_id IN NUMBER,
p_identifier IN NUMBER,
x_return_status OUT NOCOPY VARCHAR2
) IS
l_return_status VARCHAR2(1);
SELECT SD_DATE, sum(SD_QTY)
BULK COLLECT INTO x_atp_dates, x_atp_qtys
FROM
(SELECT /*+ INDEX(D MSC_ATP_SUMMARY_SO_U1) */
D.SD_DATE SD_DATE,
-1* D.SD_QTY SD_QTY
FROM MSC_ATP_SUMMARY_SO D,
MSC_ATP_RULES R,
MSC_SYSTEM_ITEMS I,
MSC_SYSTEM_ITEMS I0
WHERE I0.SR_INVENTORY_ITEM_ID = p_item_id
AND I0.ORGANIZATION_ID = p_org_id
AND I0.SR_INSTANCE_ID = p_instance_id
AND I0.PLAN_ID = p_plan_id
AND I.PRODUCT_FAMILY_ID = I0.INVENTORY_ITEM_ID
AND I.ORGANIZATION_ID = I0.ORGANIZATION_ID
AND I.SR_INSTANCE_ID = I0.SR_INSTANCE_ID
AND I.PLAN_ID = I0.PLAN_ID
AND R.RULE_ID (+) = NVL(I.ATP_RULE_ID, p_default_atp_rule_id)
AND R.SR_INSTANCE_ID (+)= I.SR_INSTANCE_ID
AND D.PLAN_ID = I.PLAN_ID
AND D.SR_INSTANCE_ID = I.SR_INSTANCE_ID
AND D.INVENTORY_ITEM_ID = I.INVENTORY_ITEM_ID
AND D.ORGANIZATION_ID = I.ORGANIZATION_ID
AND D.SD_DATE < NVL(p_itf,
D.SD_DATE + 1)
AND NVL(D.DEMAND_CLASS, NVL(p_default_dmd_class,'@@@')) =
DECODE(R.DEMAND_CLASS_ATP_FLAG,
1, NVL(P_DEMAND_CLASS, NVL(p_default_dmd_class,'@@@')),
NVL(D.DEMAND_CLASS, NVL(p_default_dmd_class,'@@@')))
AND D.sd_qty <> 0
UNION ALL
SELECT /*+ INDEX(S MSC_ATP_SUMMARY_SD_U1) */
S.SD_DATE SD_DATE,
S.SD_QTY SD_QTY
FROM MSC_ATP_SUMMARY_SD S,
MSC_ATP_RULES R,
MSC_SYSTEM_ITEMS I
WHERE I.SR_INVENTORY_ITEM_ID = p_item_id
AND I.ORGANIZATION_ID = p_org_id
AND I.SR_INSTANCE_ID = p_instance_id
AND I.PLAN_ID = p_plan_id
AND R.RULE_ID (+) = NVL(I.ATP_RULE_ID, p_default_atp_rule_id)
AND R.SR_INSTANCE_ID (+)= I.SR_INSTANCE_ID
AND S.PLAN_ID = I.PLAN_ID
AND S.SR_INSTANCE_ID = I.SR_INSTANCE_ID
AND S.INVENTORY_ITEM_ID = I.INVENTORY_ITEM_ID
AND S.ORGANIZATION_ID = I.ORGANIZATION_ID
AND S.SD_DATE < NVL(p_itf, S.SD_DATE + 1)
AND NVL(S.DEMAND_CLASS, NVL(p_default_dmd_class,'@@@')) =
DECODE(R.DEMAND_CLASS_ATP_FLAG,
1, NVL(P_DEMAND_CLASS, NVL(p_default_dmd_class,'@@@')),
NVL(S.DEMAND_CLASS, NVL(p_default_dmd_class,'@@@')))
AND S.SD_QTY <> 0
)
group by SD_DATE
order by SD_DATE; --4698199
SELECT SD_DATE, SUM(SD_QTY)
BULK COLLECT INTO x_atp_dates, x_atp_qtys
FROM (
SELECT C.PRIOR_DATE SD_DATE,
-1* D.USING_REQUIREMENT_QUANTITY SD_QTY
FROM MSC_CALENDAR_DATES C,
MSC_DEMANDS D,
MSC_ATP_RULES R,
MSC_SYSTEM_ITEMS I,
MSC_SYSTEM_ITEMS I0
WHERE I0.SR_INVENTORY_ITEM_ID = p_item_id
AND I0.ORGANIZATION_ID = p_org_id
AND I0.SR_INSTANCE_ID = p_instance_id
AND I0.PLAN_ID = p_plan_id
AND I.PRODUCT_FAMILY_ID = I0.INVENTORY_ITEM_ID
AND I.ORGANIZATION_ID = I0.ORGANIZATION_ID
AND I.SR_INSTANCE_ID = I0.SR_INSTANCE_ID
AND I.PLAN_ID = I0.PLAN_ID
AND R.RULE_ID (+) = NVL(I.ATP_RULE_ID, p_default_atp_rule_id)
AND R.SR_INSTANCE_ID (+)= I.SR_INSTANCE_ID
AND D.PLAN_ID = I.PLAN_ID
AND D.SR_INSTANCE_ID = I.SR_INSTANCE_ID
AND D.INVENTORY_ITEM_ID = I.INVENTORY_ITEM_ID
AND D.ORGANIZATION_ID = I.ORGANIZATION_ID
AND USING_REQUIREMENT_QUANTITY <> 0
AND D.ORIGINATION_TYPE in (
DECODE(R.INCLUDE_DISCRETE_WIP_DEMAND, 1, 3, -1),
DECODE(R.INCLUDE_FLOW_SCHEDULE_DEMAND, 1, 25, -1),
DECODE(R.INCLUDE_USER_DEFINED_DEMAND, 1, 42, -1),
DECODE(R.INCLUDE_NONSTD_WIP_RECEIPTS, 1, 2, -1),
DECODE(R.INCLUDE_REP_WIP_DEMAND, 1, 4, -1))
AND C.CALENDAR_CODE = p_cal_code
AND C.EXCEPTION_SET_ID = G_CAL_EXC_SET_ID
AND C.SR_INSTANCE_ID = I0.SR_INSTANCE_ID
-- since we store repetitive schedule demand in different ways for
-- ods (total quantity on start date) and pds (daily quantity from
-- start date to end date), we need to make sure we only select work day
-- for pds's repetitive schedule demand.
AND C.CALENDAR_DATE BETWEEN TRUNC(D.USING_ASSEMBLY_DEMAND_DATE) AND
TRUNC(NVL(D.ASSEMBLY_DEMAND_COMP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE))
-- new clause 2640489, DECODE is also OR, Explicit OR gives CBO choices
AND (R.PAST_DUE_DEMAND_CUTOFF_FENCE is NULL OR
C.PRIOR_SEQ_NUM >= p_sysdate_seq_num - R.PAST_DUE_DEMAND_CUTOFF_FENCE)
AND C.PRIOR_DATE < NVL(p_itf, C.PRIOR_DATE + 1)
-- new clause 2640489, DECODE is also OR, Explicit OR gives CBO choices
AND (R.DEMAND_CLASS_ATP_FLAG <> 1 OR
NVL(D.DEMAND_CLASS, NVL(p_default_dmd_class,'@@@')) =
NVL(P_DEMAND_CLASS, NVL(p_default_dmd_class,'@@@')) )
UNION ALL
-- bug 2461071 to_date and trunc
SELECT DECODE(D.RESERVATION_TYPE, 2, p_sys_next_date, TRUNC(D.REQUIREMENT_DATE)) SD_DATE, --bug 2287148
-1*(D.PRIMARY_UOM_QUANTITY-GREATEST(NVL(D.RESERVATION_QUANTITY,0),
D.COMPLETED_QUANTITY)) SD_QTY
FROM
-- Bug 1756263, performance fix, use EXISTS subquery instead.
--MSC_CALENDAR_DATES C,
MSC_SALES_ORDERS D,
MSC_ATP_RULES R,
MSC_SYSTEM_ITEMS I,
MSC_SYSTEM_ITEMS I0,
MSC_CALENDAR_DATES C
WHERE I0.SR_INVENTORY_ITEM_ID = p_item_id
AND I0.ORGANIZATION_ID = p_org_id
AND I0.SR_INSTANCE_ID = p_instance_id
AND I0.PLAN_ID = p_plan_id
AND I.PRODUCT_FAMILY_ID = I0.INVENTORY_ITEM_ID
AND I.ORGANIZATION_ID = I0.ORGANIZATION_ID
AND I.SR_INSTANCE_ID = I0.SR_INSTANCE_ID
AND I.PLAN_ID = I0.PLAN_ID
AND R.RULE_ID (+) = NVL(I.ATP_RULE_ID, p_default_atp_rule_id)
AND R.SR_INSTANCE_ID (+)= I.SR_INSTANCE_ID
AND D.SR_INSTANCE_ID = I.SR_INSTANCE_ID
AND D.INVENTORY_ITEM_ID = I.INVENTORY_ITEM_ID
AND D.ORGANIZATION_ID = I.ORGANIZATION_ID
AND D.DEMAND_SOURCE_TYPE <> DECODE(R.INCLUDE_SALES_ORDERS,2,2,-1)
AND D.DEMAND_SOURCE_TYPE <> DECODE(R.INCLUDE_INTERNAL_ORDERS,2,8,-1)
AND D.PRIMARY_UOM_QUANTITY > GREATEST(NVL(D.RESERVATION_QUANTITY,0),
D.COMPLETED_QUANTITY)
AND DECODE(MSC_ATP_PVT.G_APPS_VER,3,D.COMPLETED_QUANTITY,0) = 0 -- 2300767
AND (D.SUBINVENTORY IS NULL OR D.SUBINVENTORY IN
(SELECT S.SUB_INVENTORY_CODE
FROM MSC_SUB_INVENTORIES S
WHERE S.ORGANIZATION_ID=D.ORGANIZATION_ID
AND S.PLAN_ID = I.PLAN_ID
AND S.SR_INSTANCE_ID = D.SR_INSTANCE_ID
AND S.INVENTORY_ATP_CODE =DECODE(R.DEFAULT_ATP_SOURCES,
1, 1, NULL, 1, S.INVENTORY_ATP_CODE)
AND S.NETTING_TYPE =DECODE(R.DEFAULT_ATP_SOURCES,
2, 1, S.NETTING_TYPE)))
AND (D.RESERVATION_TYPE = 2
OR D.PARENT_DEMAND_ID IS NULL
OR (D.RESERVATION_TYPE = 3 AND
((R.INCLUDE_DISCRETE_WIP_RECEIPTS = 1) or
(R.INCLUDE_NONSTD_WIP_RECEIPTS = 1))))
-- new clause, remove existing Exists Query 2640489
AND (R.PAST_DUE_DEMAND_CUTOFF_FENCE is NULL OR
C.PRIOR_SEQ_NUM >= p_sysdate_seq_num - R.PAST_DUE_DEMAND_CUTOFF_FENCE)
AND C.CALENDAR_CODE = p_cal_code
AND C.SR_INSTANCE_ID = I.SR_INSTANCE_ID
AND C.EXCEPTION_SET_ID = -1
AND C.CALENDAR_DATE = TRUNC(D.REQUIREMENT_DATE)
AND C.PRIOR_DATE < NVL(p_itf, C.PRIOR_DATE + 1)
-- new clause 2640489, DECODE is also OR, Explicit OR gives CBO choices
AND (R.DEMAND_CLASS_ATP_FLAG <> 1
OR NVL(D.DEMAND_CLASS, NVL(p_default_dmd_class,'@@@'))
= NVL(P_DEMAND_CLASS, NVL(p_default_dmd_class,'@@@')) )
UNION ALL
SELECT -- C.NEXT_DATE SD_DATE, -- 2859130
C.CALENDAR_DATE SD_DATE,
--- bug 1843471, 2563139
Decode(order_type,
30, Decode(Sign(S.Daily_rate * (TRUNC(C.Calendar_date) - TRUNC(S.FIRST_UNIT_START_DATE))- S.qty_completed),
-1,S.Daily_rate* (TRUNC(C.Calendar_date) - TRUNC(S.First_Unit_Start_date) +1)- S.qty_completed,
S.Daily_rate),
-- Bug 2132288, 2442009
5, NVL(S.DAILY_RATE, NVL(S.FIRM_QUANTITY,S.NEW_ORDER_QUANTITY)),
-- End Bug 2132288, 2442009
-- Bug 2439264, for OPM, lots with order_processing = "N" will be populated with
-- non_nettable_qty and need to be excluded from ATP calculations.
(NVL(S.FIRM_QUANTITY,S.NEW_ORDER_QUANTITY) - NVL(S.NON_NETTABLE_QTY, 0)) )SD_QTY
-- NVL(S.FIRM_QUANTITY,S.NEW_ORDER_QUANTITY) )SD_QTY
FROM MSC_CALENDAR_DATES C,
MSC_SUPPLIES S,
MSC_ATP_RULES R,
MSC_SYSTEM_ITEMS I,
MSC_SYSTEM_ITEMS I0, --Bug 13072988
MSC_SUB_INVENTORIES MSI
WHERE I0.SR_INVENTORY_ITEM_ID = p_item_id -- Bug 13072988, aggregate the supply of member-items
AND I0.ORGANIZATION_ID = p_org_id -- as we are aggregating the demands also.
AND I0.SR_INSTANCE_ID = p_instance_id
AND I0.PLAN_ID = p_plan_id
AND I.PRODUCT_FAMILY_ID = I0.INVENTORY_ITEM_ID
AND I.ORGANIZATION_ID = I0.ORGANIZATION_ID
AND I.SR_INSTANCE_ID = I0.SR_INSTANCE_ID
AND I.PLAN_ID = I0.PLAN_ID
AND R.RULE_ID (+) = NVL(I.ATP_RULE_ID, p_default_atp_rule_id)
AND R.SR_INSTANCE_ID (+)= I.SR_INSTANCE_ID
AND S.PLAN_ID = I.PLAN_ID
AND S.SR_INSTANCE_ID = I.SR_INSTANCE_ID
AND S.INVENTORY_ITEM_ID = I.INVENTORY_ITEM_ID
AND S.ORGANIZATION_ID = I.ORGANIZATION_ID
---bug 1843471
--AND NVL(S.FIRM_QUANTITY,S.NEW_ORDER_QUANTITY) <> 0 -- 1243985
-- Bug 2132288, 2442009, 2453938
-- Do not include supplies equal to 0 as per 1243985
-- However at the same time, support negative supplies as per Bug 2362079 use ABS.
-- Support Repetitive schedules as per 1843471
-- Support Repetitive MPS as per 2132288, 2442009
AND Decode(S.order_type, 30, S.Daily_rate* (TRUNC(C.Calendar_date) - TRUNC(S.First_Unit_Start_date) + 1),
5, NVL(S.Daily_rate, ABS(NVL(S.FIRM_QUANTITY,S.NEW_ORDER_QUANTITY)) ),
ABS(NVL(S.FIRM_QUANTITY,S.NEW_ORDER_QUANTITY)) ) >
Decode(S.order_type, 30, S.qty_completed,0)
-- End Bug 2132288, 2442009, 2453938
AND (S.ORDER_TYPE IN (
DECODE(R.INCLUDE_PURCHASE_ORDERS, 1, 1, -1),
DECODE(R.INCLUDE_PURCHASE_ORDERS, 1, 8, -1), -- 1882898
DECODE(R.INCLUDE_DISCRETE_WIP_RECEIPTS, 1, 3, -1),
DECODE(R.INCLUDE_REP_WIP_RECEIPTS, 1, 30, -1),
DECODE(R.INCLUDE_NONSTD_WIP_RECEIPTS, 1, 7, -1),
DECODE(R.INCLUDE_NONSTD_WIP_RECEIPTS, 1, 15, -1),
DECODE(R.INCLUDE_INTERORG_TRANSFERS, 1, 11, -1),
DECODE(R.INCLUDE_INTERORG_TRANSFERS, 1, 12, -1),
DECODE(R.INCLUDE_ONHAND_AVAILABLE, 1, 18, -1),
DECODE(R.INCLUDE_INTERNAL_REQS, 1, 2, -1),
DECODE(R.INCLUDE_SUPPLIER_REQS, 1, 2, -1),
DECODE(R.INCLUDE_USER_DEFINED_SUPPLY, 1, 41, -1),
DECODE(R.INCLUDE_FLOW_SCHEDULE_RECEIPTS, 1, 27, -1),
DECODE(R.INCLUDE_FLOW_SCHEDULE_RECEIPTS, 1, 28, -1))
OR
((R.INCLUDE_REP_MPS = 1 OR R.INCLUDE_DISCRETE_MPS = 1) AND
S.ORDER_TYPE = 5
-- bug 2461071
AND exists (SELECT '1'
FROM MSC_DESIGNATORS
WHERE INVENTORY_ATP_FLAG = 1
AND DESIGNATOR_TYPE = 2
AND DESIGNATOR_ID = S.SCHEDULE_DESIGNATOR_ID
AND DECODE(R.demand_class_atp_flag,1,
nvl(demand_class,
nvl(p_default_dmd_class,'@@@')),'@@@') =
DECODE(R.demand_class_atp_flag,1,
nvl(p_demand_class,
nvl(p_default_dmd_class,'@@@')),'@@@')
)))
--AND MSC_ATP_FUNC.MPS_ATP(S.SCHEDULE_DESIGNATOR_ID) = 1))
AND C.CALENDAR_CODE = p_cal_code
AND C.EXCEPTION_SET_ID = G_CAL_EXC_SET_ID
AND C.SR_INSTANCE_ID = I.SR_INSTANCE_ID
-- Bug 2132288, 2442009
AND C.CALENDAR_DATE BETWEEN TRUNC(NVL(S.FIRM_DATE,S.NEW_SCHEDULE_DATE))
AND TRUNC(NVL(DECODE(S.ORDER_TYPE, 5, S.LAST_UNIT_START_DATE,
S.LAST_UNIT_COMPLETION_DATE), NVL(S.FIRM_DATE,S.NEW_SCHEDULE_DATE)))
AND DECODE(DECODE(S.ORDER_TYPE, 5, S.LAST_UNIT_START_DATE,
S.LAST_UNIT_COMPLETION_DATE),
NULL, C.NEXT_SEQ_NUM, C.SEQ_NUM) IS NOT NULL
-- End Bug 2132288, 2442009
-- new clause 2640489, SIMPLIFY FOR CBO
AND (S.ORDER_TYPE = 18
OR R.PAST_DUE_SUPPLY_CUTOFF_FENCE is NULL
OR C.NEXT_SEQ_NUM >= p_sysdate_seq_num - R.PAST_DUE_SUPPLY_CUTOFF_FENCE)
AND C.NEXT_DATE >= DECODE(S.ORDER_TYPE, 27, TRUNC(l_sysdate),
28, TRUNC(l_sysdate),
C.NEXT_DATE)
AND C.NEXT_DATE < NVL(p_itf, C.NEXT_DATE + 1)
AND (R.DEMAND_CLASS_ATP_FLAG <> 1
OR S.ORDER_TYPE = 5
OR NVL(S.DEMAND_CLASS, NVL(p_default_dmd_class,'@@@')) =
NVL(P_DEMAND_CLASS, NVL(p_default_dmd_class,'@@@')) )
---bug 1735580
--- filter out non-atpable sub-inventories
AND MSI.plan_id (+) = p_plan_id
AND MSI.organization_id (+) = p_org_id
AND MSI.sr_instance_id (+) = p_instance_id
--aND S.subinventory_code = (+) MSI.sub_inventory_code
AND MSI.sub_inventory_code (+) = S.subinventory_code
AND NVL(MSI.inventory_atp_code,1) <> 2 -- filter out non-atpable subinventories
-- SQL Query changes End 2640489
)
GROUP BY SD_DATE
order by SD_DATE; --4698199
SELECT SD_DATE, SUM(SD_QTY)
BULK COLLECT INTO x_atp_dates, x_atp_qtys
FROM (
SELECT /*+ INDEX(S MSC_ATP_SUMMARY_SD_U1) */
SD_DATE, SD_QTY
FROM MSC_ATP_SUMMARY_SD S,
MSC_SYSTEM_ITEMS I
WHERE I.SR_INVENTORY_ITEM_ID in (p_sr_member_id, p_sr_family_id)
AND I.ORGANIZATION_ID = p_org_id
AND I.SR_INSTANCE_ID = p_instance_id
AND I.PLAN_ID = p_plan_id
AND S.PLAN_ID = I.PLAN_ID
AND S.SR_INSTANCE_ID = I.SR_INSTANCE_ID
AND S.INVENTORY_ITEM_ID = I.INVENTORY_ITEM_ID
AND S.ORGANIZATION_ID = I.ORGANIZATION_ID
AND S.SD_DATE < NVL(p_itf, S.SD_DATE + 1)
UNION ALL
--bug3700564 added trunc
SELECT TRUNC(AD.DEMAND_DATE) SD_DATE,
decode(AD.ALLOCATED_QUANTITY, -- Consider unscheduled orders as dummy supplies
0, OLD_ALLOCATED_QUANTITY, -- For summary enhancement
-1 * AD.ALLOCATED_QUANTITY) SD_QTY
FROM MSC_ALLOC_DEMANDS AD,
MSC_SYSTEM_ITEMS I,
MSC_PLANS P -- For summary enhancement
WHERE I.SR_INVENTORY_ITEM_ID in (p_sr_member_id, p_sr_family_id)
AND I.ORGANIZATION_ID = p_org_id
AND I.SR_INSTANCE_ID = p_instance_id
AND I.PLAN_ID = p_plan_id
AND AD.PLAN_ID = I.PLAN_ID
AND AD.SR_INSTANCE_ID = I.SR_INSTANCE_ID
AND AD.INVENTORY_ITEM_ID = I.INVENTORY_ITEM_ID
AND AD.ORGANIZATION_ID = I.ORGANIZATION_ID
--bug3700564 added trunc
AND TRUNC(AD.DEMAND_DATE) < NVL(p_itf, TRUNC(AD.DEMAND_DATE) + 1)
AND P.PLAN_ID = AD.PLAN_ID
AND (AD.REFRESH_NUMBER > P.LATEST_REFRESH_NUMBER
OR AD.REFRESH_NUMBER = p_refresh_number)
UNION ALL
--bug3700564 added trunc
SELECT TRUNC(SA.SUPPLY_DATE) SD_DATE,
SA.ALLOCATED_QUANTITY SD_QTY
FROM MSC_ALLOC_SUPPLIES SA,
MSC_SYSTEM_ITEMS I,
MSC_PLANS P -- For summary enhancement
WHERE I.SR_INVENTORY_ITEM_ID in (p_sr_member_id, p_sr_family_id)
AND I.ORGANIZATION_ID = p_org_id
AND I.SR_INSTANCE_ID = p_instance_id
AND I.PLAN_ID = p_plan_id
AND SA.PLAN_ID = I.PLAN_ID
AND SA.SR_INSTANCE_ID = I.SR_INSTANCE_ID
AND SA.INVENTORY_ITEM_ID = I.INVENTORY_ITEM_ID
AND SA.ORGANIZATION_ID = I.ORGANIZATION_ID
AND SA.ALLOCATED_QUANTITY <> 0
--bug3700564 added trunc
AND TRUNC(SA.SUPPLY_DATE) < NVL(p_itf, TRUNC(SA.SUPPLY_DATE) + 1)
AND P.PLAN_ID = SA.PLAN_ID
AND (SA.REFRESH_NUMBER > P.LATEST_REFRESH_NUMBER
OR SA.REFRESH_NUMBER = p_refresh_number)
)
GROUP BY SD_DATE
order by SD_DATE; --4698199
SELECT SD_DATE, SUM(SD_QTY)
BULK COLLECT INTO x_atp_dates, x_atp_qtys
FROM (
--bug3700564 added trunc
SELECT TRUNC(AD.DEMAND_DATE) SD_DATE,
-1 * AD.ALLOCATED_QUANTITY SD_QTY
FROM MSC_ALLOC_DEMANDS AD,
MSC_SYSTEM_ITEMS I
WHERE I.SR_INVENTORY_ITEM_ID in (p_sr_member_id, p_sr_family_id)
AND I.ORGANIZATION_ID = p_org_id
AND I.SR_INSTANCE_ID = p_instance_id
AND I.PLAN_ID = p_plan_id
AND AD.PLAN_ID = I.PLAN_ID
AND AD.SR_INSTANCE_ID = I.SR_INSTANCE_ID
AND AD.INVENTORY_ITEM_ID = I.INVENTORY_ITEM_ID
AND AD.ORGANIZATION_ID = I.ORGANIZATION_ID
AND AD.ORIGINATION_TYPE <> 52
AND AD.ALLOCATED_QUANTITY <> 0
--bug3700564 added trunc
AND TRUNC(AD.DEMAND_DATE) < NVL(p_itf, TRUNC(AD.DEMAND_DATE) + 1)
UNION ALL
--bug3700564 added trunc
SELECT TRUNC(SA.SUPPLY_DATE) SD_DATE,
SA.ALLOCATED_QUANTITY SD_QTY
FROM MSC_ALLOC_SUPPLIES SA,
MSC_SYSTEM_ITEMS I
WHERE I.SR_INVENTORY_ITEM_ID in (p_sr_member_id, p_sr_family_id)
AND I.ORGANIZATION_ID = p_org_id
AND I.SR_INSTANCE_ID = p_instance_id
AND I.PLAN_ID = p_plan_id
AND SA.PLAN_ID = I.PLAN_ID
AND SA.SR_INSTANCE_ID = I.SR_INSTANCE_ID
AND SA.INVENTORY_ITEM_ID = I.INVENTORY_ITEM_ID
AND SA.ORGANIZATION_ID = I.ORGANIZATION_ID
AND SA.ALLOCATED_QUANTITY <> 0
--bug3700564 added trunc
AND TRUNC(SA.SUPPLY_DATE) >= DECODE(SA.ORIGINAL_ORDER_TYPE,
27, TRUNC(SYSDATE),
28, TRUNC(SYSDATE),
TRUNC(SA.SUPPLY_DATE))
AND TRUNC(SA.SUPPLY_DATE) < NVL(p_itf, TRUNC(SA.SUPPLY_DATE) + 1)
)
GROUP BY SD_DATE
order by SD_DATE; --4698199
INSERT INTO msc_atp_sd_details_temp (
ATP_Level,
Order_line_id,
Scenario_Id,
Inventory_Item_Id,
Request_Item_Id,
Organization_Id,
Department_Id,
Resource_Id,
Supplier_Id,
Supplier_Site_Id,
From_Organization_Id,
From_Location_Id,
To_Organization_Id,
To_Location_Id,
Ship_Method,
UOM_code,
Supply_Demand_Type,
Supply_Demand_Source_Type,
Supply_Demand_Source_Type_Name,
Identifier1,
Identifier2,
Identifier3,
Identifier4,
Supply_Demand_Quantity,
Supply_Demand_Date,
Disposition_Type,
Disposition_Name,
Pegging_Id,
End_Pegging_Id,
creation_date,
created_by,
last_update_date,
last_updated_by,
last_update_login,
ORIG_CUSTOMER_SITE_NAME,--bug3263368
ORIG_CUSTOMER_NAME, --bug3263368
ORIG_DEMAND_CLASS, --bug3263368
ORIG_REQUEST_DATE --bug3263368
)
( -- SQL Query changes Begin 2640489
SELECT p_level col1,
p_identifier col2,
p_scenario_id col3,
p_item_id col4 ,
p_request_item_id col5,
p_org_id col6,
l_null_num col7,
l_null_num col8,
l_null_num col9,
l_null_num col10,
l_null_num col11,
l_null_num col12,
l_null_num col13,
l_null_num col14,
l_null_char col15,
I.UOM_CODE col16,
1 col17, -- demand
D.ORIGINATION_TYPE col18,
l_null_char col19,
D.SR_INSTANCE_ID col20,
l_null_num col21,
D.DEMAND_ID col22,
l_null_num col23,
-1* D.USING_REQUIREMENT_QUANTITY col24,
C.PRIOR_DATE col25,
l_null_num col26,
DECODE(D.ORIGINATION_TYPE, 1, to_char(D.DISPOSITION_ID), D.ORDER_NUMBER) col27,
-- rajjain 04/25/2003 Bug 2771075
-- For Planned Order Demands We will populate disposition_id
-- in disposition_name column
l_null_num col28,
l_null_num col29,
l_sysdate,
G_USER_ID,
l_sysdate,
G_USER_ID,
G_USER_ID,
MTPS.LOCATION, --bug3263368
MTP.PARTNER_NAME, --bug3263368
D.DEMAND_CLASS, --bug3263368
DECODE(D.ORDER_DATE_TYPE_CODE,2,D.REQUEST_DATE,
D.REQUEST_SHIP_DATE) --bug3263368
FROM MSC_CALENDAR_DATES C,
MSC_DEMANDS D,
MSC_ATP_RULES R,
MSC_SYSTEM_ITEMS I,
MSC_SYSTEM_ITEMS I0,
MSC_TRADING_PARTNERS MTP,--bug3263368
MSC_TRADING_PARTNER_SITES MTPS --bug3263368
WHERE I0.SR_INVENTORY_ITEM_ID = p_item_id
AND I0.ORGANIZATION_ID = p_org_id
AND I0.SR_INSTANCE_ID = p_instance_id
AND I0.PLAN_ID = p_plan_id
AND I.PRODUCT_FAMILY_ID = I0.INVENTORY_ITEM_ID
AND I.ORGANIZATION_ID = I0.ORGANIZATION_ID
AND I.SR_INSTANCE_ID = I0.SR_INSTANCE_ID
AND I.PLAN_ID = I0.PLAN_ID
AND R.RULE_ID (+) = NVL(I.ATP_RULE_ID, p_default_atp_rule_id)
AND R.SR_INSTANCE_ID (+) = I.SR_INSTANCE_ID
AND D.PLAN_ID = I.PLAN_ID
AND D.SR_INSTANCE_ID = I.SR_INSTANCE_ID
AND D.INVENTORY_ITEM_ID = I.INVENTORY_ITEM_ID
AND D.ORGANIZATION_ID = I.ORGANIZATION_ID
AND USING_REQUIREMENT_QUANTITY <> 0
AND D.ORIGINATION_TYPE in (
DECODE(R.INCLUDE_DISCRETE_WIP_DEMAND, 1, 3, -1),
DECODE(R.INCLUDE_FLOW_SCHEDULE_DEMAND, 1, 25, -1),
DECODE(R.INCLUDE_USER_DEFINED_DEMAND, 1, 42, -1),
DECODE(R.INCLUDE_NONSTD_WIP_RECEIPTS, 1, 2, -1),
DECODE(R.INCLUDE_REP_WIP_DEMAND, 1, 4, -1))
AND D.SHIP_TO_SITE_ID = MTPS.PARTNER_SITE_ID(+) --bug3263368
AND D.CUSTOMER_ID = MTP.PARTNER_ID(+)--bug3263368
AND C.CALENDAR_CODE=p_cal_code
AND C.EXCEPTION_SET_ID=G_CAL_EXC_SET_ID
AND C.SR_INSTANCE_ID = p_instance_id
-- since we store repetitive schedule demand in different ways for
-- ods (total quantity on start date) and pds (daily quantity from
-- start date to end date), we need to make sure we only select work day
-- for pds's repetitive schedule demand.
AND C.CALENDAR_DATE BETWEEN TRUNC(D.USING_ASSEMBLY_DEMAND_DATE) AND
TRUNC(NVL(D.ASSEMBLY_DEMAND_COMP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE))
AND (R.PAST_DUE_DEMAND_CUTOFF_FENCE is NULL OR
C.PRIOR_SEQ_NUM >= p_sysdate_seq_num - R.PAST_DUE_DEMAND_CUTOFF_FENCE)
AND C.PRIOR_DATE < NVL(p_itf, C.PRIOR_DATE + 1)
AND (R.DEMAND_CLASS_ATP_FLAG <> 1 OR
NVL(D.DEMAND_CLASS, NVL(p_default_dmd_class,'@@@')) =
NVL(P_DEMAND_CLASS, NVL(p_default_dmd_class,'@@@')) )
UNION ALL
SELECT p_level col1,
p_identifier col2,
p_scenario_id col3,
p_item_id col4,
p_request_item_id col5,
p_org_id col6,
l_null_num col7,
l_null_num col8,
l_null_num col9,
l_null_num col10,
l_null_num col11,
l_null_num col12,
l_null_num col13,
l_null_num col14,
l_null_char col15,
I.UOM_CODE col16,
1 col17, -- demand
DECODE(D.RESERVATION_TYPE, 1, 6, 10) col18,
l_null_char col19,
D.SR_INSTANCE_ID col20,
l_null_num col21,
to_number(D.DEMAND_SOURCE_LINE) col22,
l_null_num col23,
-1*(D.PRIMARY_UOM_QUANTITY-
GREATEST(NVL(D.RESERVATION_QUANTITY,0), D.COMPLETED_QUANTITY))
col24,
--C.PRIOR_DATE
-- bug 2461071 to_date
DECODE(D.RESERVATION_TYPE,2,p_sys_next_date, TRUNC(D.REQUIREMENT_DATE)) col25 ,
l_null_num col26,
D.SALES_ORDER_NUMBER col27,
l_null_num col28,
l_null_num col29,
l_sysdate,
G_USER_ID,
l_sysdate,
G_USER_ID,
G_USER_ID,
MTPS.LOCATION, --bug3263368
MTP.PARTNER_NAME, --bug3263368
D.DEMAND_CLASS, --bug3263368
DECODE(D.ORDER_DATE_TYPE_CODE,2,D.REQUEST_DATE,
D.REQUEST_SHIP_DATE) --bug3263368
FROM
MSC_SALES_ORDERS D,
MSC_ATP_RULES R,
MSC_SYSTEM_ITEMS I,
MSC_SYSTEM_ITEMS I0,
MSC_CALENDAR_DATES C,
MSC_TRADING_PARTNERS MTP,--bug3263368
MSC_TRADING_PARTNER_SITES MTPS --bug3263368
WHERE I0.SR_INVENTORY_ITEM_ID = p_item_id
AND I0.ORGANIZATION_ID = p_org_id
AND I0.SR_INSTANCE_ID = p_instance_id
AND I0.PLAN_ID = p_plan_id
AND I.PRODUCT_FAMILY_ID = I0.INVENTORY_ITEM_ID
AND I.ORGANIZATION_ID = I0.ORGANIZATION_ID
AND I.SR_INSTANCE_ID = I0.SR_INSTANCE_ID
AND I.PLAN_ID = I0.PLAN_ID
AND R.RULE_ID (+) = NVL(I.ATP_RULE_ID, p_default_atp_rule_id)
AND R.SR_INSTANCE_ID (+) = I.SR_INSTANCE_ID
AND D.SR_INSTANCE_ID = I.SR_INSTANCE_ID
AND D.INVENTORY_ITEM_ID = I.INVENTORY_ITEM_ID
AND D.ORGANIZATION_ID = I.ORGANIZATION_ID
AND D.DEMAND_SOURCE_TYPE <> DECODE(R.INCLUDE_SALES_ORDERS,2,2,-1)
AND D.DEMAND_SOURCE_TYPE <> DECODE(R.INCLUDE_INTERNAL_ORDERS,2,8,-1)
AND D.PRIMARY_UOM_QUANTITY > GREATEST(NVL(D.RESERVATION_QUANTITY,0),
D.COMPLETED_QUANTITY)
AND DECODE(MSC_ATP_PVT.G_APPS_VER,3,D.COMPLETED_QUANTITY,0) = 0 -- 2300767
AND (D.SUBINVENTORY IS NULL OR D.SUBINVENTORY IN
(SELECT S.SUB_INVENTORY_CODE
FROM MSC_SUB_INVENTORIES S
WHERE S.ORGANIZATION_ID=D.ORGANIZATION_ID
AND S.PLAN_ID = I.PLAN_ID
AND S.SR_INSTANCE_ID = D.SR_INSTANCE_ID
AND S.INVENTORY_ATP_CODE =DECODE(R.DEFAULT_ATP_SOURCES,
1, 1, NULL, 1, S.INVENTORY_ATP_CODE)
AND S.NETTING_TYPE =DECODE(R.DEFAULT_ATP_SOURCES,
2, 1, S.NETTING_TYPE)))
AND (D.RESERVATION_TYPE = 2
OR D.PARENT_DEMAND_ID IS NULL
OR (D.RESERVATION_TYPE = 3 AND
((R.INCLUDE_DISCRETE_WIP_RECEIPTS = 1) or
(R.INCLUDE_NONSTD_WIP_RECEIPTS = 1))))
-- new clause, remove existing Exists Query 2640489
AND D.SHIP_TO_SITE_USE_ID = MTPS.PARTNER_SITE_ID(+) --bug3263368
AND D.CUSTOMER_ID = MTP.PARTNER_ID(+) --bug3263368
AND (R.PAST_DUE_DEMAND_CUTOFF_FENCE is NULL OR
C.PRIOR_SEQ_NUM >= p_sysdate_seq_num - R.PAST_DUE_DEMAND_CUTOFF_FENCE)
AND C.CALENDAR_CODE = p_cal_code
AND C.SR_INSTANCE_ID = I.SR_INSTANCE_ID
AND C.EXCEPTION_SET_ID = -1
AND C.CALENDAR_DATE = TRUNC(D.REQUIREMENT_DATE)
AND C.PRIOR_DATE < NVL(p_itf, C.PRIOR_DATE + 1)
AND (R.DEMAND_CLASS_ATP_FLAG <> 1
OR NVL(D.DEMAND_CLASS, NVL(p_default_dmd_class,'@@@'))
= NVL(P_DEMAND_CLASS, NVL(p_default_dmd_class,'@@@')) )
UNION ALL
SELECT p_level col1,
p_identifier col2,
p_scenario_id col3,
p_item_id col4 ,
p_request_item_id col5,
p_org_id col6,
l_null_num col7,
l_null_num col8,
l_null_num col9,
l_null_num col10,
l_null_num col11,
l_null_num col12,
l_null_num col13,
l_null_num col14,
l_null_char col15,
I.UOM_CODE col16,
2 col17, -- supply
S.ORDER_TYPE col18,
l_null_char col19,
S.SR_INSTANCE_ID col20,
l_null_num col21,
S.TRANSACTION_ID col22,
l_null_num col23,
---bug 1843471
--NVL(S.FIRM_QUANTITY,S.NEW_ORDER_QUANTITY) col24,
Decode(order_type,
30, Decode(Sign(S.Daily_rate * (TRUNC(C.Calendar_date) -
TRUNC(S.FIRST_UNIT_START_DATE) )- S.qty_completed),
-1,S.Daily_rate* (TRUNC(C.Calendar_date) - TRUNC(S.First_Unit_Start_date) +1)- S.qty_completed,
S.Daily_rate),
-- Bug 2132288, 2442009, 2563139
5, NVL(S.DAILY_RATE, NVL(S.FIRM_QUANTITY,S.NEW_ORDER_QUANTITY)),
-- End Bug 2132288, 2442009
-- Bug 2439264, for OPM, lots with order_processing = "N" will be populated with
-- non_nettable_qty and need to be excluded from ATP calculations.
(NVL(S.FIRM_QUANTITY,S.NEW_ORDER_QUANTITY) - NVL(S.NON_NETTABLE_QTY, 0)) ) col24,
-- NVL(S.FIRM_QUANTITY,S.NEW_ORDER_QUANTITY) ) col24,
C.NEXT_DATE col25,
l_null_num col26,
DECODE(S.ORDER_TYPE,
1, S.ORDER_NUMBER,
2, S.ORDER_NUMBER,
3, S.ORDER_NUMBER,
7, S.ORDER_NUMBER,
8, S.ORDER_NUMBER,
5, MSC_ATP_FUNC.Get_Designator(S.SCHEDULE_DESIGNATOR_ID),
11, S.ORDER_NUMBER,
12, S.ORDER_NUMBER,
14, S.ORDER_NUMBER,
15, S.ORDER_NUMBER,
27, S.ORDER_NUMBER,
28, S.ORDER_NUMBER,
41, S.ORDER_NUMBER, -- bug 4085497 'User Defined Supply'
--NULL) col27,
l_null_char) col27, -- bug 4365873 fixed as a part of this bug
l_null_num col28,
l_null_num col29,
l_sysdate,
G_USER_ID,
l_sysdate,
G_USER_ID,
G_USER_ID,
--null,--bug3263368 ORIG_CUSTOMER_SITE_NAME
--null, --bug3263368 ORIG_CUSTOMER_NAME
--null, --bug3263368 ORIG_DEMAND_CLASS
--null --bug3263368 ORIG_REQUEST_DATE
l_null_char, --bug3814584
l_null_char, --bug3814584
l_null_char, --bug3814584
l_null_date --bug3814584
FROM MSC_CALENDAR_DATES C,
MSC_SUPPLIES S,
MSC_ATP_RULES R,
MSC_SYSTEM_ITEMS I,
MSC_SYSTEM_ITEMS I0, --Bug 13072988
MSC_SUB_INVENTORIES MSI
WHERE I0.SR_INVENTORY_ITEM_ID = p_item_id -- Bug 13072988, aggregate the supply of member-items
AND I0.ORGANIZATION_ID = p_org_id -- as we are aggregating the demands also.
AND I0.SR_INSTANCE_ID = p_instance_id
AND I0.PLAN_ID = p_plan_id
AND I.PRODUCT_FAMILY_ID = I0.INVENTORY_ITEM_ID
AND I.ORGANIZATION_ID = I0.ORGANIZATION_ID
AND I.SR_INSTANCE_ID = I0.SR_INSTANCE_ID
AND I.PLAN_ID = I0.PLAN_ID
AND R.RULE_ID (+) = NVL(I.ATP_RULE_ID, p_default_atp_rule_id)
AND R.SR_INSTANCE_ID (+) = I.SR_INSTANCE_ID
AND S.PLAN_ID = I.PLAN_ID
AND S.SR_INSTANCE_ID = I.SR_INSTANCE_ID
AND S.INVENTORY_ITEM_ID = I.INVENTORY_ITEM_ID
AND S.ORGANIZATION_ID = I.ORGANIZATION_ID
--- bug 1843471
--AND NVL(S.FIRM_QUANTITY,S.NEW_ORDER_QUANTITY) <> 0 -- 1243985
-- Bug 2132288, 2442009, 2453938
-- Do not include supplies equal to 0 as per 1243985
-- However at the same time, support negative supplies as per Bug 2362079 use ABS.
-- Support Repetitive schedules as per 1843471
-- Support Repetitive MPS as per 2132288, 2442009
-- TRUNC dates 2563139
AND Decode(S.order_type, 30, S.Daily_rate* (TRUNC(C.Calendar_date)
- TRUNC(S.First_Unit_Start_date) + 1),
5, NVL(S.Daily_rate, ABS(NVL(S.FIRM_QUANTITY,S.NEW_ORDER_QUANTITY)) ),
ABS(NVL(S.FIRM_QUANTITY,S.NEW_ORDER_QUANTITY)) ) >
Decode(S.order_type, 30, S.qty_completed,0)
-- End Bug 2132288, 2442009, 2453938
AND (S.ORDER_TYPE IN (
DECODE(R.INCLUDE_PURCHASE_ORDERS, 1, 1, -1),
DECODE(R.INCLUDE_PURCHASE_ORDERS, 1, 8, -1), -- 1882898
DECODE(R.INCLUDE_DISCRETE_WIP_RECEIPTS, 1, 3, -1),
DECODE(R.INCLUDE_REP_WIP_RECEIPTS, 1, 30, -1),
DECODE(R.INCLUDE_NONSTD_WIP_RECEIPTS, 1, 7, -1),
DECODE(R.INCLUDE_NONSTD_WIP_RECEIPTS, 1, 15, -1),
DECODE(R.INCLUDE_INTERORG_TRANSFERS, 1, 11, -1),
DECODE(R.INCLUDE_INTERORG_TRANSFERS, 1, 12, -1),
DECODE(R.INCLUDE_ONHAND_AVAILABLE, 1, 18, -1),
DECODE(R.INCLUDE_INTERNAL_REQS, 1, 2, -1),
DECODE(R.INCLUDE_SUPPLIER_REQS, 1, 2, -1),
DECODE(R.INCLUDE_USER_DEFINED_SUPPLY, 1, 41, -1),
DECODE(R.INCLUDE_FLOW_SCHEDULE_RECEIPTS, 1, 27, -1),
DECODE(R.INCLUDE_FLOW_SCHEDULE_RECEIPTS, 1, 28, -1))
OR
((R.INCLUDE_REP_MPS = 1 OR R.INCLUDE_DISCRETE_MPS = 1) AND
S.ORDER_TYPE = 5
-- bug 2461071
AND exists (SELECT '1'
FROM MSC_DESIGNATORS
WHERE INVENTORY_ATP_FLAG = 1
AND DESIGNATOR_TYPE = 2
AND DESIGNATOR_ID = S.SCHEDULE_DESIGNATOR_ID
AND DECODE(R.demand_class_atp_flag,1,
nvl(demand_class,
nvl(p_default_dmd_class,'@@@')),'@@@') =
DECODE(R.demand_class_atp_flag,1,
nvl(p_demand_class,
nvl(p_default_dmd_class,'@@@')),'@@@')
)))
--AND MSC_ATP_FUNC.MPS_ATP(S.SCHEDULE_DESIGNATOR_ID) = 1))
AND C.CALENDAR_CODE = p_cal_code
AND C.EXCEPTION_SET_ID = G_CAL_EXC_SET_ID
AND C.SR_INSTANCE_ID = p_instance_id
-- Bug 2132288, 2442009
AND C.CALENDAR_DATE BETWEEN TRUNC(NVL(S.FIRM_DATE,S.NEW_SCHEDULE_DATE))
AND TRUNC(NVL(DECODE(S.ORDER_TYPE, 5, S.LAST_UNIT_START_DATE,
S.LAST_UNIT_COMPLETION_DATE), NVL(S.FIRM_DATE,S.NEW_SCHEDULE_DATE)))
AND DECODE(DECODE(S.ORDER_TYPE, 5, S.LAST_UNIT_START_DATE,
S.LAST_UNIT_COMPLETION_DATE),
NULL, C.NEXT_SEQ_NUM, C.SEQ_NUM) IS NOT NULL
-- End Bug 2132288, 2442009
-- new clause 2640489, SIMPLIFY FOR CBO
AND (S.ORDER_TYPE = 18
OR R.PAST_DUE_SUPPLY_CUTOFF_FENCE is NULL
OR C.NEXT_SEQ_NUM >= p_sysdate_seq_num - R.PAST_DUE_SUPPLY_CUTOFF_FENCE)
AND C.NEXT_DATE >= DECODE(S.ORDER_TYPE, 27, TRUNC(l_sysdate),
28, TRUNC(l_sysdate),
C.NEXT_DATE)
AND C.NEXT_DATE < NVL(p_itf, C.NEXT_DATE + 1)
AND (R.DEMAND_CLASS_ATP_FLAG <> 1
OR S.ORDER_TYPE = 5
OR NVL(S.DEMAND_CLASS, NVL(p_default_dmd_class,'@@@')) =
NVL(P_DEMAND_CLASS, NVL(p_default_dmd_class,'@@@')) )
--- filter out non-atpable sub-inventories
AND MSI.plan_id (+) = p_plan_id
AND MSI.organization_id (+) = p_org_id
AND MSI.sr_instance_id (+) = p_instance_id
-- AND S.subinventory_code = MSI.sub_inventory_code
AND MSI.sub_inventory_code (+) = S.subinventory_code
AND NVL(MSI.inventory_atp_code,1) <> 2 -- filter out non-atpable subinventories
-- SQL Query changes End 2640489
)
;
| o The supply demand SQL inserts following in msc_atp_sd_details_temp table:
| - Bucketed demands (origination type 51) for member item upto ATF from
| msc_alloc_demands table.
| - Bucketed demands for family after ATF from msc_alloc_demands table.
| - Rollup supplies (order type 50) for member item upto ATF from
| msc_alloc_supplies table.
| - Rollup supplies for family after ATF from msc_alloc_supplies table.
| o Other important differences from non PF SQLs are:
| - Columns Pf_Display_Flag, Original_Demand_Quantity and Original_Demand_Date
| in msc_atp_sd_details_temp table are populated for demands.
| - Column Original_Supply_Demand_Type is populated for demands and supplies
| and stores the supply demand type of parent supplies and demands.
+-------------------------------------------------------------------------------------*/
PROCEDURE Get_Mat_Avail_Pf_Pds_Dtls (
p_sr_member_id IN NUMBER,
p_sr_family_id IN NUMBER,
p_org_id IN NUMBER,
p_instance_id IN NUMBER,
p_plan_id IN NUMBER,
p_itf IN DATE,
p_level IN NUMBER,
p_scenario_id IN NUMBER,
p_identifier IN NUMBER,
x_return_status OUT NOCOPY VARCHAR2
) IS
l_null_num NUMBER;
INSERT INTO msc_atp_sd_details_temp (
ATP_Level,
Order_line_id,
Scenario_Id,
Inventory_Item_Id,
Request_Item_Id,
Organization_Id,
Department_Id,
Resource_Id,
Supplier_Id,
Supplier_Site_Id,
From_Organization_Id,
From_Location_Id,
To_Organization_Id,
To_Location_Id,
Ship_Method,
UOM_code,
Supply_Demand_Type,
Supply_Demand_Source_Type,
Supply_Demand_Source_Type_Name,
Identifier1,
Identifier2,
Identifier3,
Identifier4,
Allocated_Quantity,
Supply_Demand_Date,
Disposition_Type,
Disposition_Name,
Pegging_Id,
End_Pegging_Id,
Pf_Display_Flag,
Supply_Demand_Quantity,
Original_Demand_Quantity,
Original_Demand_Date,
Original_Item_Id,
Original_Supply_Demand_Type,
creation_date,
created_by,
last_update_date,
last_updated_by,
last_update_login,
ORIG_CUSTOMER_SITE_NAME,--bug3263368
ORIG_CUSTOMER_NAME, --bug3263368
ORIG_DEMAND_CLASS, --bug3263368
ORIG_REQUEST_DATE, --bug3263368
Inventory_Item_Name --bug3579625
)
(
SELECT p_level col1,
p_identifier col2,
p_scenario_id col3,
p_sr_family_id col4,
p_sr_member_id col5,
p_org_id col6,
l_null_num col7,
l_null_num col8,
l_null_num col9,
l_null_num col10,
l_null_num col11,
l_null_num col12,
l_null_num col13,
l_null_num col14,
l_null_char col15,
I.UOM_CODE col16,
1 col17, -- demand
AD.ORIGINATION_TYPE col18,
l_null_char col19,
AD.SR_INSTANCE_ID col20,
l_null_num col21,
AD.PARENT_DEMAND_ID col22,
l_null_num col23,
-1 * AD.ALLOCATED_QUANTITY col24,
TRUNC(AD.DEMAND_DATE) col25, --bug3693892 added trunc
l_null_num col26,
AD.ORDER_NUMBER col27,
l_null_num col28,
l_null_num col29,
AD.Pf_Display_Flag,
-1* NVL(AD.Demand_Quantity, AD.ALLOCATED_QUANTITY),
-1* NVL(AD.Demand_Quantity, AD.ALLOCATED_QUANTITY),
trunc(AD.Original_Demand_Date), --Bug_3693892 added trunc
AD.Original_Item_Id,
AD.Original_Origination_Type,
l_sysdate,
G_USER_ID,
l_sysdate,
G_USER_ID,
G_USER_ID,
MTPS.LOCATION, --bug3263368
MTP.PARTNER_NAME, --bug3263368
AD.DEMAND_CLASS, --bug3263368
AD.REQUEST_DATE, --bug3263368
I2.Item_Name --bug3579625
FROM MSC_SYSTEM_ITEMS I,
MSC_SYSTEM_ITEMS I2, --bug3579625
MSC_ALLOC_DEMANDS AD,
MSC_TRADING_PARTNERS MTP,--bug3263368
MSC_TRADING_PARTNER_SITES MTPS --bug3263368
WHERE I.SR_INVENTORY_ITEM_ID in (p_sr_member_id, p_sr_family_id)
AND I.ORGANIZATION_ID = p_org_id
AND I.SR_INSTANCE_ID = p_instance_id
AND I.PLAN_ID = p_plan_id
AND AD.PLAN_ID = I.PLAN_ID
AND AD.SR_INSTANCE_ID = I.SR_INSTANCE_ID
AND AD.INVENTORY_ITEM_ID = I.INVENTORY_ITEM_ID
AND AD.ORGANIZATION_ID = I.ORGANIZATION_ID
-- bug3579625 Addition join with MSC_SYSTEM_ITEMS (I2)
AND AD.PLAN_ID = I2.PLAN_ID
AND AD.SR_INSTANCE_ID = I2.SR_INSTANCE_ID
AND AD.ORIGINAL_ITEM_ID = I2.INVENTORY_ITEM_ID
AND AD.ORGANIZATION_ID = I2.ORGANIZATION_ID
AND AD.ORIGINATION_TYPE <> 52
AND AD.ALLOCATED_QUANTITY <> 0
--bug3700564 added trunc
AND TRUNC(AD.DEMAND_DATE) < NVL(p_itf, TRUNC(AD.DEMAND_DATE) + 1)
AND AD.SHIP_TO_SITE_ID = MTPS.PARTNER_SITE_ID(+) --bug3263368
AND AD.CUSTOMER_ID = MTP.PARTNER_ID(+)--bug3263368
UNION ALL
SELECT p_level col1,
p_identifier col2,
p_scenario_id col3,
p_sr_family_id col4 ,
p_sr_member_id col5,
p_org_id col6,
l_null_num col7,
l_null_num col8,
l_null_num col9,
l_null_num col10,
l_null_num col11,
l_null_num col12,
l_null_num col13,
l_null_num col14,
l_null_char col15,
I.UOM_CODE col16,
2 col17,
SA.ORDER_TYPE col18,
l_null_char col19,
SA.SR_INSTANCE_ID col20,
l_null_num col21,
SA.PARENT_TRANSACTION_ID col22,
l_null_num col23,
SA.ALLOCATED_QUANTITY col24,
trunc(SA.SUPPLY_DATE) col25, --bug3693892 added trunc
l_null_num col26,
DECODE(SA.ORDER_TYPE, 5, to_char(SA.PARENT_TRANSACTION_ID), SA.ORDER_NUMBER) col27,
l_null_num col28,
l_null_num col29,
l_null_num,
NVL(SA.Supply_Quantity, SA.ALLOCATED_QUANTITY),
l_null_num,
to_date(null),
SA.Original_Item_Id,
SA.Original_Order_Type,
l_sysdate,
G_USER_ID,
l_sysdate,
G_USER_ID,
G_USER_ID,
--null, --bug3263368 ORIG_CUSTOMER_SITE_NAME
--null, --bug3263368 ORIG_CUSTOMER_NAME
--null, --bug3263368 ORIG_DEMAND_CLASS
--null, --bug3263368 ORIG_REQUEST_DATE
l_null_char, --bug3814584
l_null_char, --bug3814584
l_null_char, --bug3814584
l_null_date, --bug3814584
I2.Item_Name --bug3579625
FROM MSC_ALLOC_SUPPLIES SA,
MSC_SYSTEM_ITEMS I,
MSC_SYSTEM_ITEMS I2 --bug3579625
WHERE I.SR_INVENTORY_ITEM_ID in (p_sr_member_id, p_sr_family_id)
AND I.ORGANIZATION_ID = p_org_id
AND I.SR_INSTANCE_ID = p_instance_id
AND I.PLAN_ID = p_plan_id
AND SA.PLAN_ID = I.PLAN_ID
AND SA.SR_INSTANCE_ID = I.SR_INSTANCE_ID
AND SA.INVENTORY_ITEM_ID = I.INVENTORY_ITEM_ID
AND SA.ORGANIZATION_ID = I.ORGANIZATION_ID
-- bug3579625 Addition join with MSC_SYSTEM_ITEMS (I2)
AND SA.PLAN_ID = I2.PLAN_ID
AND SA.SR_INSTANCE_ID = I2.SR_INSTANCE_ID
AND SA.ORIGINAL_ITEM_ID = I2.INVENTORY_ITEM_ID
AND SA.ORGANIZATION_ID = I2.ORGANIZATION_ID
--bug3700564 added trunc
AND TRUNC(SA.SUPPLY_DATE) >= DECODE(SA.ORIGINAL_ORDER_TYPE,
27, TRUNC(SYSDATE),
28, TRUNC(SYSDATE),
TRUNC(SA.SUPPLY_DATE))
AND SA.ALLOCATED_QUANTITY <> 0
AND TRUNC(SA.SUPPLY_DATE) < NVL(p_itf, TRUNC(SA.SUPPLY_DATE) + 1)
);
SELECT allocation_percent
INTO l_alloc_percent
FROM msc_item_hierarchy_mv
WHERE inventory_item_id = p_member_id
AND organization_id = p_org_id
AND sr_instance_id = p_instance_id
AND p_atf_date BETWEEN effective_date AND disable_date
AND level_id = -1
AND rownum = 1;
SELECT allocation_percent
INTO l_alloc_percent
FROM msc_item_hierarchy_mv
WHERE inventory_item_id = p_member_id
AND organization_id = p_org_id
AND sr_instance_id = p_instance_id
AND p_atf_date BETWEEN effective_date AND disable_date
AND level_id <> -1
AND rownum = 1;
SELECT SD_DATE,
SUM(SD_QTY)
BULK COLLECT INTO
x_atp_dates,
x_atp_qtys
FROM (
SELECT --TRUNC(AD.DEMAND_DATE) SD_DATE, --bug3099066
GREATEST(TRUNC(AD.DEMAND_DATE),p_sys_next_date) SD_DATE,--3099066
--bug3333114 removed trunc from p_sys_next_date as it is already trucate
-1* AD.ALLOCATED_QUANTITY*
DECODE(DECODE(MSC_AATP_PVT.G_HIERARCHY_PROFILE,
1, decode(AD.Original_Origination_Type,
6, decode(AD.SOURCE_ORGANIZATION_ID,
NULL, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
-23453, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
AD.ORGANIZATION_ID, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)), TO_CHAR(NULL)),
30, decode(AD.SOURCE_ORGANIZATION_ID,
NULL, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
-23453, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
AD.ORGANIZATION_ID, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)), TO_CHAR(NULL)),
DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS))),
2, DECODE(AD.CUSTOMER_ID, NULL, TO_CHAR(NULL),
0, TO_CHAR(NULL),
decode(AD.Original_Origination_Type,
6, decode(AD.SOURCE_ORGANIZATION_ID,
NULL, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
-23453, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
AD.ORGANIZATION_ID, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
TO_CHAR(NULL)),
30, decode(AD.SOURCE_ORGANIZATION_ID,
NULL, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
-23453, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
AD.ORGANIZATION_ID, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
TO_CHAR(NULL)),
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id, p_instance_id,
trunc(AD.Demand_Date),p_level_id, NULL)))),
p_demand_class, 1,
Decode(AD.Demand_Class, NULL, --4365873 If l_demand_class is not null and demand class is populated
-- on supplies record then 0 should be allocated.
MSC_AATP_FUNC.Get_Item_Demand_Alloc_Percent(p_plan_id,
AD.PARENT_DEMAND_ID,
trunc(AD.Demand_Date),
AD.USING_ASSEMBLY_ITEM_ID,
DECODE(AD.SOURCE_ORGANIZATION_ID,
-23453, null,
AD.SOURCE_ORGANIZATION_ID),
Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id,
AD.Original_Origination_Type,
DECODE(MSC_AATP_PVT.G_HIERARCHY_PROFILE,
1, decode(AD.Original_Origination_Type,
6, decode(AD.SOURCE_ORGANIZATION_ID,
NULL, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
-23453, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
AD.ORGANIZATION_ID, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
p_demand_class),
30, decode(AD.SOURCE_ORGANIZATION_ID,
NULL, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
-23453, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
AD.ORGANIZATION_ID, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
p_demand_class),
DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS))),
2, DECODE(AD.CUSTOMER_ID, NULL, p_demand_class,
0, p_demand_class,
decode(AD.Original_Origination_Type,
6, decode(AD.SOURCE_ORGANIZATION_ID,
NULL, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
-23453, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
AD.ORGANIZATION_ID, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
p_demand_class),
30, decode(AD.SOURCE_ORGANIZATION_ID,
NULL, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
-23453, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
AD.ORGANIZATION_ID, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
p_demand_class),
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id, p_instance_id,
trunc(AD.Demand_Date),p_level_id, NULL)))),
p_demand_class,
p_level_id),0)) SD_QTY --4365873
FROM MSC_ALLOC_DEMANDS AD
WHERE AD.PLAN_ID = p_plan_id
AND AD.SR_INSTANCE_ID = p_instance_id
AND AD.INVENTORY_ITEM_ID in (p_member_id,p_family_id)
AND AD.ORGANIZATION_ID = p_org_id
AND AD.ORIGINATION_TYPE <> 52
AND AD.ALLOCATED_QUANTITY <> 0
--bug3700564 added trunc
AND TRUNC(AD.DEMAND_DATE) < NVL(p_itf, TRUNC(AD.DEMAND_DATE) + 1)
UNION ALL
SELECT --TRUNC(SA.SUPPLY_DATE) SD_DATE, --bug3099066
GREATEST(TRUNC(SA.SUPPLY_DATE),p_sys_next_date) SD_DATE,--3099066
SA.ALLOCATED_QUANTITY*
DECODE(DECODE(MSC_AATP_PVT.G_HIERARCHY_PROFILE,
1, DECODE(SA.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null,
null,
Decode(sign(trunc(SA.Supply_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', SA.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id,
TRUNC(SA.SUPPLY_DATE),
p_level_id,
SA.DEMAND_CLASS),
SA.DEMAND_CLASS)),
2, DECODE(SA.CUSTOMER_ID, NULL, TO_CHAR(NULL),
0, TO_CHAR(NULL),
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
SA.CUSTOMER_ID,
SA.SHIP_TO_SITE_ID,
Decode(sign(trunc(SA.Supply_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', SA.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id,
TRUNC(SA.SUPPLY_DATE),
p_level_id,
NULL))),
p_demand_class, 1,
NULL, nvl(MIHM.allocation_percent/100,1), --4365873
/*NVL(MSC_AATP_FUNC.Get_DC_Alloc_Percent(
p_instance_id,
Decode(sign(trunc(SA.Supply_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', SA.Original_Item_Id,
p_family_id)),
p_org_id,
null,
null,
p_demand_class,
TRUNC(SA.SUPPLY_DATE)),
1),*/
DECODE(
MIHM.allocation_percent/100, --4365873
/*DECODE(MSC_AATP_FUNC.Get_DC_Alloc_Percent(
p_instance_id,
Decode(sign(trunc(SA.Supply_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', SA.Original_Item_Id,
p_family_id)),
p_org_id,
null,
null,
p_demand_class,
TRUNC(SA.SUPPLY_DATE)),*/
NULL, 1,
0)) SD_QTY
FROM MSC_ALLOC_SUPPLIES SA, MSC_ITEM_HIERARCHY_MV MIHM --4365873
WHERE SA.PLAN_ID = p_plan_id
AND SA.SR_INSTANCE_ID = p_instance_id
AND SA.INVENTORY_ITEM_ID in (p_member_id, p_family_id)
AND SA.ORGANIZATION_ID = p_org_id
AND SA.ALLOCATED_QUANTITY <> 0
--bug3700564 added trunc
AND TRUNC(SA.SUPPLY_DATE) >= DECODE(SA.ORIGINAL_ORDER_TYPE,
27, TRUNC(SYSDATE),
28, TRUNC(SYSDATE),
TRUNC(SA.SUPPLY_DATE))
AND TRUNC(SA.SUPPLY_DATE) < NVL(p_itf, TRUNC(SA.SUPPLY_DATE) + 1)
--4365874
--5220274 if the rule is assigned to family only then use family id.
AND Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'N', p_family_id,
SA.INVENTORY_ITEM_ID) = MIHM.INVENTORY_ITEM_ID(+)
AND SA.SR_INSTANCE_ID = MIHM.SR_INSTANCE_ID (+)
AND SA.ORGANIZATION_ID = MIHM.ORGANIZATION_ID (+)
AND decode(MIHM.level_id (+),-1,1,2) = decode(MSC_AATP_PVT.G_HIERARCHY_PROFILE,1,1,2)
AND TRUNC(SA.SUPPLY_DATE) >= MIHM.effective_date (+)
AND TRUNC(SA.SUPPLY_DATE) <= MIHM.disable_date (+)
AND MIHM.demand_class (+) = p_demand_class
)
GROUP BY SD_DATE
order by SD_DATE; --4698199
SELECT SD_DATE,
SUM(UNALLOC_SD_QTY),
SUM(SD_QTY)
BULK COLLECT INTO
x_atp_dates,
x_atp_unalloc_qtys,
x_atp_qtys
FROM (
SELECT --TRUNC(AD.DEMAND_DATE) SD_DATE,
GREATEST(TRUNC(AD.DEMAND_DATE),p_sys_next_date) SD_DATE,--3099066
-1* AD.ALLOCATED_QUANTITY UNALLOC_SD_QTY,
-1* AD.ALLOCATED_QUANTITY*
DECODE(DECODE(MSC_AATP_PVT.G_HIERARCHY_PROFILE,
1, decode(AD.Original_Origination_Type,
6, decode(AD.SOURCE_ORGANIZATION_ID,
NULL, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
-23453, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
AD.ORGANIZATION_ID, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)), TO_CHAR(NULL)),
30, decode(AD.SOURCE_ORGANIZATION_ID,
NULL, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
-23453, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
AD.ORGANIZATION_ID, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)), TO_CHAR(NULL)),
DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS))),
2, DECODE(AD.CUSTOMER_ID, NULL, TO_CHAR(NULL),
0, TO_CHAR(NULL),
decode(AD.Original_Origination_Type,
6, decode(AD.SOURCE_ORGANIZATION_ID,
NULL, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
-23453, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
AD.ORGANIZATION_ID, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
TO_CHAR(NULL)),
30, decode(AD.SOURCE_ORGANIZATION_ID,
NULL, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
-23453, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
AD.ORGANIZATION_ID, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
TO_CHAR(NULL)),
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id, p_instance_id,
trunc(AD.Demand_Date),p_level_id, NULL)))),
p_demand_class, 1,
Decode(AD.Demand_Class, NULL, --4365873
MSC_AATP_FUNC.Get_Item_Demand_Alloc_Percent(p_plan_id,
AD.PARENT_DEMAND_ID,
trunc(AD.Demand_Date),
AD.USING_ASSEMBLY_ITEM_ID,
DECODE(AD.SOURCE_ORGANIZATION_ID,
-23453, null,
AD.SOURCE_ORGANIZATION_ID),
Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id,
AD.Original_Origination_Type,
DECODE(MSC_AATP_PVT.G_HIERARCHY_PROFILE,
1, decode(AD.Original_Origination_Type,
6, decode(AD.SOURCE_ORGANIZATION_ID,
NULL, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
-23453, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
AD.ORGANIZATION_ID, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
p_demand_class),
30, decode(AD.SOURCE_ORGANIZATION_ID,
NULL, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
-23453, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
AD.ORGANIZATION_ID, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
p_demand_class),
DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS))),
2, DECODE(AD.CUSTOMER_ID, NULL, p_demand_class,
0, p_demand_class,
decode(AD.Original_Origination_Type,
6, decode(AD.SOURCE_ORGANIZATION_ID,
NULL, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
-23453, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
AD.ORGANIZATION_ID, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
p_demand_class),
30, decode(AD.SOURCE_ORGANIZATION_ID,
NULL, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
-23453, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
AD.ORGANIZATION_ID, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
p_demand_class),
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id, p_instance_id,
trunc(AD.Demand_Date),p_level_id, NULL)))),
p_demand_class,
p_level_id),0)) SD_QTY --4365873
FROM MSC_ALLOC_DEMANDS AD
WHERE AD.PLAN_ID = p_plan_id
AND AD.SR_INSTANCE_ID = p_instance_id
AND AD.INVENTORY_ITEM_ID in (p_member_id,p_family_id)
AND AD.ORGANIZATION_ID = p_org_id
AND AD.ORIGINATION_TYPE <> 52
AND AD.ALLOCATED_QUANTITY <> 0
--bug3700564 added trunc
AND TRUNC(AD.DEMAND_DATE) < NVL(p_itf, TRUNC(AD.DEMAND_DATE) + 1)
UNION ALL
SELECT --TRUNC(SA.SUPPLY_DATE) SD_DATE,
GREATEST(TRUNC(SA.SUPPLY_DATE),p_sys_next_date) SD_DATE,--3099066
SA.ALLOCATED_QUANTITY UNALLOC_SD_QTY,
SA.ALLOCATED_QUANTITY*
DECODE(DECODE(MSC_AATP_PVT.G_HIERARCHY_PROFILE,
1, DECODE(SA.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null,
null,
Decode(sign(trunc(SA.Supply_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', SA.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id,
TRUNC(sa.SUPPLY_DATE),
p_level_id,
sa.DEMAND_CLASS),
sa.DEMAND_CLASS)),
2, DECODE(sa.CUSTOMER_ID, NULL, TO_CHAR(NULL),
0, TO_CHAR(NULL),
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
sa.CUSTOMER_ID,
sa.SHIP_TO_SITE_ID,
Decode(sign(trunc(sa.Supply_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', sa.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id,
TRUNC(sa.SUPPLY_DATE),
p_level_id,
NULL))),
p_demand_class, 1,
NULL, nvl(MIHM.allocation_percent/100,1), --4365873
/*NVL(MSC_AATP_FUNC.Get_DC_Alloc_Percent(
p_instance_id,
Decode(sign(trunc(sa.Supply_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', sa.Original_Item_Id,
p_family_id)),
p_org_id,
null,
null,
p_demand_class,
TRUNC(sa.SUPPLY_DATE)),
1),*/
DECODE(
MIHM.allocation_percent/100, --4365873
/*DECODE(MSC_AATP_FUNC.Get_DC_Alloc_Percent(
p_instance_id,
Decode(sign(trunc(sa.Supply_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', sa.Original_Item_Id,
p_family_id)),
p_org_id,
null,
null,
p_demand_class,
TRUNC(sa.SUPPLY_DATE)),*/
NULL, 1,
0)) SD_QTY
FROM MSC_ALLOC_SUPPLIES SA,MSC_ITEM_HIERARCHY_MV MIHM
WHERE SA.PLAN_ID = p_plan_id
AND SA.SR_INSTANCE_ID = p_instance_id
AND SA.INVENTORY_ITEM_ID in (p_member_id, p_family_id)
AND SA.ORGANIZATION_ID = p_org_id
AND SA.ALLOCATED_QUANTITY <> 0
--bug3700564 added trunc
AND TRUNC(SA.SUPPLY_DATE) >= DECODE(SA.ORIGINAL_ORDER_TYPE,
27, TRUNC(SYSDATE),
28, TRUNC(SYSDATE),
TRUNC(SA.SUPPLY_DATE))
AND TRUNC(SA.SUPPLY_DATE) < NVL(p_itf, TRUNC(SA.SUPPLY_DATE) + 1)
--4365874
--5220274 if the rule is assigned to family only then use family id.
AND Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'N', p_family_id,
sa.INVENTORY_ITEM_ID) = MIHM.INVENTORY_ITEM_ID(+)
AND sa.SR_INSTANCE_ID = MIHM.SR_INSTANCE_ID (+)
AND sa.ORGANIZATION_ID = MIHM.ORGANIZATION_ID (+)
AND decode(MIHM.level_id (+),-1,1,2) = decode(MSC_AATP_PVT.G_HIERARCHY_PROFILE,1,1,2)
AND TRUNC(sa.SUPPLY_DATE) >= MIHM.effective_date (+)
AND TRUNC(sa.SUPPLY_DATE) <= MIHM.disable_date (+)
AND MIHM.demand_class (+) = p_demand_class
)
GROUP BY SD_DATE
order by SD_DATE; --4698199
| o The supply demand SQL inserts following in msc_atp_sd_details_temp table:
| - Allocated Bucketed demands (origination type 51) for member item upto ATF
| from msc_alloc_demands table.
| - Allocated Bucketed demands for family after ATF from msc_alloc_demands table.
| - Allocated Rollup supplies (order type 50) for member item upto ATF from
| msc_alloc_supplies table.
| - Allocated Rollup supplies for family after ATF from msc_alloc_supplies table.
| o Other important differences from non PF SQLs are:
| - Columns Pf_Display_Flag, Original_Demand_Quantity and Original_Demand_Date
| in msc_atp_sd_details_temp table are populated for demands.
| - Column Original_Supply_Demand_Type is populated for demands and supplies
| and stores the supply demand type of parent supplies and demands.
+--------------------------------------------------------------------------------------*/
PROCEDURE Item_Alloc_Avail_Pf_Dtls (
p_member_id IN NUMBER,
p_family_id IN NUMBER,
p_sr_member_id IN NUMBER,
p_sr_family_id IN NUMBER,
p_org_id IN NUMBER,
p_instance_id IN NUMBER,
p_plan_id IN NUMBER,
p_demand_class IN VARCHAR2,
p_level_id IN NUMBER,
p_itf IN DATE,
p_level IN NUMBER,
p_identifier IN NUMBER,
p_scenario_id IN NUMBER,
p_uom_code IN VARCHAR2,
p_sys_next_date IN DATE, --bug3099066
p_atf_date IN DATE,
x_return_status OUT NOCOPY VARCHAR2
) IS
l_null_num NUMBER;
INSERT INTO msc_atp_sd_details_temp (
ATP_Level,
Order_line_id,
Scenario_Id,
Inventory_Item_Id,
Request_Item_Id,
Organization_Id,
Department_Id,
Resource_Id,
Supplier_Id,
Supplier_Site_Id,
From_Organization_Id,
From_Location_Id,
To_Organization_Id,
To_Location_Id,
Ship_Method,
UOM_code,
Supply_Demand_Type,
Supply_Demand_Source_Type,
Supply_Demand_Source_Type_Name,
Identifier1,
Identifier2,
Identifier3,
Identifier4,
Allocated_Quantity,
Supply_Demand_Date,
Disposition_Type,
Disposition_Name,
Pegging_Id,
End_Pegging_Id,
Pf_Display_Flag,
Supply_Demand_Quantity,
Original_Demand_Quantity,
Original_Demand_Date,
Original_Item_Id,
Original_Supply_Demand_Type,
creation_date,
created_by,
last_update_date,
last_updated_by,
last_update_login,
Unallocated_Quantity,
ORIG_CUSTOMER_SITE_NAME,--bug3263368
ORIG_CUSTOMER_NAME, --bug3263368
ORIG_DEMAND_CLASS, --bug3263368
ORIG_REQUEST_DATE, --bug3263368
Inventory_Item_Name --bug3579625
)
(
SELECT p_level col1,
p_identifier col2,
p_scenario_id col3,
p_sr_family_id col4,
p_sr_member_id col5,
p_org_id col6,
l_null_num col7,
l_null_num col8,
l_null_num col9,
l_null_num col10,
l_null_num col11,
l_null_num col12,
l_null_num col13,
l_null_num col14,
l_null_char col15,
p_uom_code col16,
1 col17,
AD.ORIGINATION_TYPE col18,
l_null_char col19,
AD.SR_INSTANCE_ID col20,
l_null_num col21,
AD.PARENT_DEMAND_ID col22,
l_null_num col23,
-1* AD.ALLOCATED_QUANTITY *
DECODE(DECODE(MSC_AATP_PVT.G_HIERARCHY_PROFILE,
1, decode(AD.Original_Origination_Type,
6, decode(AD.SOURCE_ORGANIZATION_ID,
NULL, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
-23453, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
AD.ORGANIZATION_ID, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)), TO_CHAR(NULL)),
30, decode(AD.SOURCE_ORGANIZATION_ID,
NULL, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
-23453, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
AD.ORGANIZATION_ID, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)), TO_CHAR(NULL)),
DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS))),
2, DECODE(AD.CUSTOMER_ID, NULL, TO_CHAR(NULL),
0, TO_CHAR(NULL),
decode(AD.Original_Origination_Type,
6, decode(AD.SOURCE_ORGANIZATION_ID,
NULL, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
-23453, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
AD.ORGANIZATION_ID, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
TO_CHAR(NULL)),
30, decode(AD.SOURCE_ORGANIZATION_ID,
NULL, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
-23453, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
AD.ORGANIZATION_ID, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
TO_CHAR(NULL)),
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id, p_instance_id,
trunc(AD.Demand_Date),p_level_id, NULL)))),
p_demand_class, 1,
Decode(AD.Demand_Class, NULL, --4365873 If l_demand_class is not null and demand class is populated
-- on supplies record then 0 should be allocated.
MSC_AATP_FUNC.Get_Item_Demand_Alloc_Percent(p_plan_id,
AD.PARENT_DEMAND_ID,
trunc(AD.Demand_Date),
AD.USING_ASSEMBLY_ITEM_ID,
DECODE(AD.SOURCE_ORGANIZATION_ID,
-23453, null,
AD.SOURCE_ORGANIZATION_ID),
Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id,
AD.Original_Origination_Type,
DECODE(MSC_AATP_PVT.G_HIERARCHY_PROFILE,
1, decode(AD.Original_Origination_Type,
6, decode(AD.SOURCE_ORGANIZATION_ID,
NULL, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
-23453, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
AD.ORGANIZATION_ID, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
p_demand_class),
30, decode(AD.SOURCE_ORGANIZATION_ID,
NULL, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
-23453, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
AD.ORGANIZATION_ID, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
p_demand_class),
DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS))),
2, DECODE(AD.CUSTOMER_ID, NULL, p_demand_class,
0, p_demand_class,
decode(AD.Original_Origination_Type,
6, decode(AD.SOURCE_ORGANIZATION_ID,
NULL, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
-23453, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
AD.ORGANIZATION_ID, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
p_demand_class),
30, decode(AD.SOURCE_ORGANIZATION_ID,
NULL, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
-23453, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
AD.ORGANIZATION_ID, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
p_demand_class),
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id, p_instance_id,
trunc(AD.Demand_Date),p_level_id, NULL)))),
p_demand_class,
p_level_id),0)) col24, --4365873
--TRUNC(AD.DEMAND_DATE) col25,
GREATEST(TRUNC(AD.DEMAND_DATE),p_sys_next_date) col25, --3099066
l_null_num col26,
AD.ORDER_NUMBER col27,
l_null_num col28,
l_null_num col29,
Decode(AD.inventory_item_id, p_family_id,
Decode(AD.original_item_id, p_member_id,
AD.Pf_Display_Flag,
Decode(sign(trunc(AD.Original_Demand_Date) - p_atf_date),
1, AD.Pf_Display_Flag,
1)),
AD.Pf_Display_Flag),
-1* NVL(AD.Demand_Quantity, AD.ALLOCATED_QUANTITY),
-1* NVL(AD.Demand_Quantity, AD.ALLOCATED_QUANTITY) *
DECODE(DECODE(MSC_AATP_PVT.G_HIERARCHY_PROFILE,
1, decode(AD.Original_Origination_Type,
6, decode(AD.SOURCE_ORGANIZATION_ID,
NULL, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
-23453, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
AD.ORGANIZATION_ID, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)), TO_CHAR(NULL)),
30, decode(AD.SOURCE_ORGANIZATION_ID,
NULL, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
-23453, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
AD.ORGANIZATION_ID, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)), TO_CHAR(NULL)),
DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS))),
2, DECODE(AD.CUSTOMER_ID, NULL, TO_CHAR(NULL),
0, TO_CHAR(NULL),
decode(AD.Original_Origination_Type,
6, decode(AD.SOURCE_ORGANIZATION_ID,
NULL, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
-23453, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
AD.ORGANIZATION_ID, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
TO_CHAR(NULL)),
30, decode(AD.SOURCE_ORGANIZATION_ID,
NULL, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
-23453, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
AD.ORGANIZATION_ID, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
TO_CHAR(NULL)),
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id, p_instance_id,
trunc(AD.Demand_Date),p_level_id, NULL)))),
p_demand_class, 1,
MSC_AATP_FUNC.Get_Item_Demand_Alloc_Percent(p_plan_id,
AD.PARENT_DEMAND_ID,
trunc(AD.Demand_Date),
AD.USING_ASSEMBLY_ITEM_ID,
DECODE(AD.SOURCE_ORGANIZATION_ID,
-23453, null,
AD.SOURCE_ORGANIZATION_ID),
Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id,
AD.Original_Origination_Type,
DECODE(MSC_AATP_PVT.G_HIERARCHY_PROFILE,
1, decode(AD.Original_Origination_Type,
6, decode(AD.SOURCE_ORGANIZATION_ID,
NULL, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
-23453, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
AD.ORGANIZATION_ID, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
p_demand_class),
30, decode(AD.SOURCE_ORGANIZATION_ID,
NULL, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
-23453, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
AD.ORGANIZATION_ID, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
p_demand_class),
DECODE(AD.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id,
p_instance_id, trunc(AD.Demand_Date),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS))),
2, DECODE(AD.CUSTOMER_ID, NULL, p_demand_class,
0, p_demand_class,
decode(AD.Original_Origination_Type,
6, decode(AD.SOURCE_ORGANIZATION_ID,
NULL, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
-23453, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
AD.ORGANIZATION_ID, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
p_demand_class),
30, decode(AD.SOURCE_ORGANIZATION_ID,
NULL, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
-23453, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
AD.ORGANIZATION_ID, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID, Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, trunc(AD.Demand_Date),
p_level_id, NULL),
p_demand_class),
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)), p_org_id, p_instance_id,
trunc(AD.Demand_Date),p_level_id, NULL)))),
p_demand_class,
p_level_id)),
trunc(AD.Original_Demand_Date),
AD.Original_Item_Id,
AD.Original_Origination_Type,
l_sysdate,
G_USER_ID,
l_sysdate,
G_USER_ID,
G_USER_ID,
-1* AD.ALLOCATED_QUANTITY, -- bug 3282426
MTPS.LOCATION, --bug3263368
MTP.PARTNER_NAME, --bug3263368
AD.DEMAND_CLASS, --bug3263368
AD.REQUEST_DATE, --bug3263368
I.Item_Name -- bug3579625
FROM MSC_ALLOC_DEMANDS AD,
MSC_TRADING_PARTNERS MTP,--bug3263368
MSC_TRADING_PARTNER_SITES MTPS, --bug3263368
MSC_SYSTEM_ITEMS I --bug3579625
WHERE AD.PLAN_ID = p_plan_id
AND AD.SR_INSTANCE_ID = p_instance_id
AND AD.INVENTORY_ITEM_ID in (p_member_id,p_family_id)
AND AD.ORGANIZATION_ID = p_org_id
AND AD.ORIGINATION_TYPE <> 52
AND AD.ALLOCATED_QUANTITY <> 0
--bug3700564 added trunc
AND TRUNC(AD.DEMAND_DATE) < NVL(p_itf, TRUNC(AD.DEMAND_DATE) + 1)
AND AD.SHIP_TO_SITE_ID = MTPS.PARTNER_SITE_ID(+) --bug3263368
AND AD.CUSTOMER_ID = MTP.PARTNER_ID(+)--bug3263368
-- bug3579625 Addition join with MSC_SYSTEM_ITEMS (I)
AND AD.PLAN_ID = I.PLAN_ID
AND AD.SR_INSTANCE_ID = I.SR_INSTANCE_ID
AND AD.ORIGINAL_ITEM_ID = I.INVENTORY_ITEM_ID
AND AD.ORGANIZATION_ID = I.ORGANIZATION_ID
UNION ALL
SELECT p_level col1,
p_identifier col2,
p_scenario_id col3,
p_sr_family_id col4 ,
p_sr_member_id col5,
p_org_id col6,
l_null_num col7,
l_null_num col8,
l_null_num col9,
l_null_num col10,
l_null_num col11,
l_null_num col12,
l_null_num col13,
l_null_num col14,
l_null_char col15,
p_uom_code col16,
2 col17,
CSA.ORDER_TYPE col18,
l_null_char col19,
CSA.SR_INSTANCE_ID col20,
l_null_num col21,
CSA.PARENT_TRANSACTION_ID col22,
l_null_num col23,
CSA.ALLOCATED_QUANTITY*
DECODE(DECODE(MSC_AATP_PVT.G_HIERARCHY_PROFILE,
1, DECODE(CSA.DEMAND_CLASS, null, null,
DECODE(p_demand_class, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null,
null,
Decode(sign(trunc(CSA.Supply_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', CSA.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id,
TRUNC(CSA.SUPPLY_DATE),
p_level_id,
CSA.DEMAND_CLASS),
CSA.DEMAND_CLASS)),
2, DECODE(CSA.CUSTOMER_ID, NULL, TO_CHAR(NULL),
0, TO_CHAR(NULL),
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
CSA.CUSTOMER_ID,
CSA.SHIP_TO_SITE_ID,
Decode(sign(trunc(CSA.Supply_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', CSA.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id,
TRUNC(CSA.SUPPLY_DATE),
p_level_id,
NULL))),
p_demand_class, 1,
NULL, nvl(MIHM.allocation_percent/100,1), --4365873
/*NVL(MSC_AATP_FUNC.Get_DC_Alloc_Percent(
p_instance_id,
Decode(sign(trunc(CSA.Supply_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', CSA.Original_Item_Id,
p_family_id)),
p_org_id,
null,
null,
p_demand_class,
TRUNC(CSA.SUPPLY_DATE)),
1),*/
DECODE(
MIHM.allocation_percent/100, --4365873
/*DECODE(MSC_AATP_FUNC.Get_DC_Alloc_Percent(
p_instance_id,
Decode(sign(trunc(CSA.Supply_Date) - p_atf_date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', CSA.Original_Item_Id,
p_family_id)),
p_org_id,
null,
null,
p_demand_class,
TRUNC(CSA.SUPPLY_DATE)),*/
NULL, 1,
0)) col24,
--TRUNC(SA.SUPPLY_DATE) col25,
GREATEST(TRUNC(CSA.SUPPLY_DATE),p_sys_next_date) col25, --3099066
l_null_num col26,
CSA.ORDER_NUMBER col27,
l_null_num col28,
l_null_num col29,
l_null_num,
NVL(CSA.Supply_Quantity, CSA.ALLOCATED_QUANTITY),
l_null_num,
to_date(null),
CSA.Original_Item_Id,
CSA.Original_Order_Type,
l_sysdate,
G_USER_ID,
l_sysdate,
G_USER_ID,
G_USER_ID,
CSA.ALLOCATED_QUANTITY, -- bug 3282426
--null,
--null,
--null,
--null,
l_null_char, --bug3814584
l_null_char, --bug3814584
l_null_char, --bug3814584
l_null_date, --bug3814584
CSA.Item_Name -- bug3579625
FROM
(
select
SA.SUPPLY_DATE,
SA.DEMAND_CLASS,
SA.Original_Item_Id,
SA.CUSTOMER_ID,
SA.SHIP_TO_SITE_ID,
SA.ORGANIZATION_ID,
SA.SR_INSTANCE_ID,
SA.INVENTORY_ITEM_ID,
SA.ORIGINAL_ORDER_TYPE,
SA.ORDER_NUMBER,
I.Item_Name,
SA.Supply_Quantity,
SA.ALLOCATED_QUANTITY,
SA.PARENT_TRANSACTION_ID,
SA.ORDER_TYPE
FROM MSC_ALLOC_SUPPLIES SA,
MSC_SYSTEM_ITEMS I
WHERE SA.PLAN_ID = p_plan_id
AND SA.SR_INSTANCE_ID = p_instance_id
AND SA.INVENTORY_ITEM_ID in (p_member_id, p_family_id)
AND SA.ORGANIZATION_ID = p_org_id
AND SA.ALLOCATED_QUANTITY <> 0
AND TRUNC(SA.SUPPLY_DATE) >= DECODE(SA.ORIGINAL_ORDER_TYPE,
27, TRUNC(SYSDATE),
28, TRUNC(SYSDATE),
TRUNC(SA.SUPPLY_DATE))
--bug3700564 added trunc
AND TRUNC(SA.SUPPLY_DATE) < NVL(p_itf, TRUNC(SA.SUPPLY_DATE) + 1)
-- bug3579625 Addition join with MSC_SYSTEM_ITEMS (I)
AND SA.PLAN_ID = I.PLAN_ID
AND SA.SR_INSTANCE_ID = I.SR_INSTANCE_ID
AND SA.ORIGINAL_ITEM_ID = I.INVENTORY_ITEM_ID
AND SA.ORGANIZATION_ID = I.ORGANIZATION_ID) CSA,
MSC_ITEM_HIERARCHY_MV MIHM
WHERE
--4365873
--5220274 if the rule is assigned to family only then use family id.
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'N', p_family_id,
CSA.INVENTORY_ITEM_ID) = MIHM.INVENTORY_ITEM_ID(+)
AND CSA.SR_INSTANCE_ID = MIHM.SR_INSTANCE_ID (+)
AND CSA.ORGANIZATION_ID = MIHM.ORGANIZATION_ID (+)
AND decode(MIHM.level_id (+),-1,1,2) = decode(MSC_AATP_PVT.G_HIERARCHY_PROFILE,1,1,2)
AND TRUNC(CSA.SUPPLY_DATE) >= MIHM.effective_date (+)
AND TRUNC(CSA.SUPPLY_DATE) <= MIHM.disable_date (+)
AND MIHM.demand_class (+) = p_demand_class
)
;
SELECT SD_DATE,
SUM(SD_QTY)
BULK COLLECT INTO
x_atp_dates,
x_atp_qtys
FROM (
SELECT TRUNC(AD.DEMAND_DATE) SD_DATE,
-1 * AD.ALLOCATED_QUANTITY SD_QTY
FROM MSC_ALLOC_DEMANDS AD
WHERE AD.PLAN_ID = p_plan_id
AND AD.SR_INSTANCE_ID = p_instance_id
AND AD.INVENTORY_ITEM_ID in (p_member_id, p_family_id)
AND AD.ORIGINATION_TYPE <> 52 -- ATP Bucketed Demand
AND AD.ORGANIZATION_ID = p_org_id
AND AD.DEMAND_CLASS = NVL(p_demand_class, AD.DEMAND_CLASS)
AND AD.ALLOCATED_QUANTITY <> 0 --4501434
AND TRUNC(AD.DEMAND_DATE) < p_itf
UNION ALL
SELECT TRUNC(SA.SUPPLY_DATE) SD_DATE,
SA.ALLOCATED_QUANTITY SD_QTY
FROM MSC_ALLOC_SUPPLIES SA
WHERE SA.PLAN_ID = p_plan_id
AND SA.SR_INSTANCE_ID = p_instance_id
AND SA.INVENTORY_ITEM_ID in (p_member_id, p_family_id)
AND TRUNC(SA.SUPPLY_DATE) >= DECODE(SA.ORIGINAL_ORDER_TYPE,
27, TRUNC(SYSDATE),
28, TRUNC(SYSDATE),
TRUNC(SA.SUPPLY_DATE))
AND SA.ORGANIZATION_ID = p_org_id
AND SA.ALLOCATED_QUANTITY <> 0
AND SA.DEMAND_CLASS = NVL(p_demand_class, SA.DEMAND_CLASS)
AND TRUNC(SA.SUPPLY_DATE) < p_itf
)
GROUP BY SD_DATE
order by SD_DATE; --4698199
SELECT SD_DATE,
SUM(SD_QTY)
BULK COLLECT INTO
x_atp_dates,
x_atp_qtys
FROM
(
SELECT /*+ INDEX(S MSC_ATP_SUMMARY_SD_U1) */
SD_DATE, SD_QTY
FROM MSC_ATP_SUMMARY_SD S
WHERE S.PLAN_ID = p_plan_id
AND S.SR_INSTANCE_ID = p_instance_id
AND S.INVENTORY_ITEM_ID in (p_member_id, p_family_id)
AND S.ORGANIZATION_ID = p_org_id
AND S.DEMAND_CLASS = NVL(p_demand_class, S.DEMAND_CLASS)
AND S.SD_DATE < p_itf
UNION ALL
SELECT TRUNC(AD.DEMAND_DATE) SD_DATE,
decode(AD.ALLOCATED_QUANTITY, -- Consider unscheduled orders as dummy supplies
0, OLD_ALLOCATED_QUANTITY,-- For summary enhancement
-1 * AD.ALLOCATED_QUANTITY) SD_QTY
FROM MSC_ALLOC_DEMANDS AD,
MSC_PLANS P -- For summary enhancement
WHERE AD.PLAN_ID = p_plan_id
AND AD.SR_INSTANCE_ID = p_instance_id
AND AD.INVENTORY_ITEM_ID in (p_member_id, p_family_id)
AND AD.ORGANIZATION_ID = p_org_id
AND AD.DEMAND_CLASS = NVL(p_demand_class, AD.DEMAND_CLASS)
AND TRUNC(AD.DEMAND_DATE) < p_itf
AND P.PLAN_ID = AD.PLAN_ID
AND (AD.REFRESH_NUMBER > P.LATEST_REFRESH_NUMBER
OR AD.REFRESH_NUMBER = p_refresh_number)
-- since repetitive schedule demand is not supported in this case
-- join to msc_calendar_dates is not needed.
UNION ALL
SELECT TRUNC(SA.SUPPLY_DATE) SD_DATE,
decode(SA.ALLOCATED_QUANTITY, -- Consider deleted stealing records as dummy demands
0, -1 * OLD_ALLOCATED_QUANTITY, -- For summary enhancement
SA.ALLOCATED_QUANTITY) SD_QTY
FROM MSC_ALLOC_SUPPLIES SA,
MSC_PLANS P -- For summary enhancement
WHERE SA.PLAN_ID = p_plan_id
AND SA.SR_INSTANCE_ID = p_instance_id
AND SA.INVENTORY_ITEM_ID in (p_member_id, p_family_id)
AND SA.ORGANIZATION_ID = p_org_id
AND SA.DEMAND_CLASS = NVL(p_demand_class, SA.DEMAND_CLASS)
AND TRUNC(SA.SUPPLY_DATE) < p_itf
AND P.PLAN_ID = SA.PLAN_ID
AND TRUNC(SA.SUPPLY_DATE) >= DECODE(SA.ORIGINAL_ORDER_TYPE,
27, TRUNC(SYSDATE),
28, TRUNC(SYSDATE),
TRUNC(SA.SUPPLY_DATE))
AND (SA.REFRESH_NUMBER > P.LATEST_REFRESH_NUMBER
OR SA.REFRESH_NUMBER = p_refresh_number)
)
GROUP BY SD_DATE
order by SD_DATE; --4698199
INSERT INTO msc_atp_sd_details_temp (
ATP_Level,
Order_line_id,
Scenario_Id,
Inventory_Item_Id,
Request_Item_Id,
Organization_Id,
Department_Id,
Resource_Id,
Supplier_Id,
Supplier_Site_Id,
From_Organization_Id,
From_Location_Id,
To_Organization_Id,
To_Location_Id,
Ship_Method,
UOM_code,
Supply_Demand_Type,
Supply_Demand_Source_Type,
Supply_Demand_Source_Type_Name,
Identifier1,
Identifier2,
Identifier3,
Identifier4,
Allocated_Quantity,
Supply_Demand_Date,
Disposition_Type,
Disposition_Name,
Pegging_Id,
End_Pegging_Id,
Pf_Display_Flag,
Supply_Demand_Quantity,
Original_Demand_Quantity,
Original_Demand_Date,
Original_Item_Id,
Original_Supply_Demand_Type,
creation_date,
created_by,
last_update_date,
last_updated_by,
last_update_login,
ORIG_CUSTOMER_SITE_NAME,--bug3263368
ORIG_CUSTOMER_NAME, --bug3263368
ORIG_DEMAND_CLASS, --bug3263368
ORIG_REQUEST_DATE, --bug3263368
Inventory_Item_Name --bug3579625
)
(
SELECT p_level col1,
p_identifier col2,
p_scenario_id col3,
p_sr_family_id col4 ,
p_sr_member_id col5,
p_org_id col6,
l_null_num col7,
l_null_num col8,
l_null_num col9,
l_null_num col10,
l_null_num col11,
l_null_num col12,
l_null_num col13,
l_null_num col14,
l_null_char col15,
p_uom_code col16,
1 col17, -- demand
AD.ORIGINATION_TYPE col18,
l_null_char col19,
AD.SR_INSTANCE_ID col20,
l_null_num col21,
AD.PARENT_DEMAND_ID col22,
l_null_num col23,
-1 * AD.ALLOCATED_QUANTITY col24,
TRUNC(AD.DEMAND_DATE) col25,
l_null_num col26,
AD.ORDER_NUMBER col27,
l_null_num col28,
l_null_num col29,
Decode(AD.inventory_item_id, p_family_id,
Decode(AD.original_item_id, p_member_id,
AD.Pf_Display_Flag,
Decode(sign(trunc(AD.Original_Demand_Date) - p_atf_date),
1, AD.Pf_Display_Flag,
1)),
AD.Pf_Display_Flag),
-1* NVL(AD.Demand_Quantity, AD.ALLOCATED_QUANTITY),
-1* NVL(AD.Demand_Quantity, AD.ALLOCATED_QUANTITY),
TRUNC(AD.Original_Demand_Date),
AD.Original_Item_Id,
AD.Original_Origination_Type,
l_sysdate,
G_USER_ID,
l_sysdate,
G_USER_ID,
G_USER_ID,
MTPS.LOCATION, --bug3263368
MTP.PARTNER_NAME, --bug3263368
AD.DEMAND_CLASS, --bug3263368
AD.REQUEST_DATE, --bug3263368
I.Item_Name --bug3579625
FROM MSC_ALLOC_DEMANDS AD,
MSC_TRADING_PARTNERS MTP,--bug3263368
MSC_TRADING_PARTNER_SITES MTPS, --bug3263368
MSC_SYSTEM_ITEMS I --bug3579625
WHERE AD.PLAN_ID = p_plan_id
AND AD.SR_INSTANCE_ID = p_instance_id
AND AD.INVENTORY_ITEM_ID in (p_member_id, p_family_id)
AND AD.ORIGINATION_TYPE <> 52
AND AD.ORGANIZATION_ID = p_org_id
AND AD.ALLOCATED_QUANTITY <> 0 --4501434
AND AD.DEMAND_CLASS = NVL(p_demand_class, AD.DEMAND_CLASS)
AND TRUNC(AD.DEMAND_DATE) < p_itf
AND AD.SHIP_TO_SITE_ID = MTPS.PARTNER_SITE_ID(+) --bug3263368
AND AD.CUSTOMER_ID = MTP.PARTNER_ID(+)--bug3263368
-- bug3579625 Addition join with MSC_SYSTEM_ITEMS (I)
AND AD.PLAN_ID = I.PLAN_ID
AND AD.SR_INSTANCE_ID = I.SR_INSTANCE_ID
AND AD.ORIGINAL_ITEM_ID = I.INVENTORY_ITEM_ID
AND AD.ORGANIZATION_ID = I.ORGANIZATION_ID
UNION ALL
SELECT p_level col1,
p_identifier col2,
p_scenario_id col3,
p_sr_family_id col4 ,
p_sr_member_id col5,
p_org_id col6,
l_null_num col7,
l_null_num col8,
l_null_num col9,
l_null_num col10,
l_null_num col11,
l_null_num col12,
l_null_num col13,
l_null_num col14,
l_null_char col15,
p_uom_code col16,
2 col17, -- supply
SA.ORDER_TYPE col18,
l_null_char col19,
SA.SR_INSTANCE_ID col20,
l_null_num col21,
SA.PARENT_TRANSACTION_ID col22,
l_null_num col23,
SA.ALLOCATED_QUANTITY col24,
TRUNC(SA.SUPPLY_DATE) col25,
l_null_num col26,
DECODE(SA.ORDER_TYPE, 5, to_char(SA.PARENT_TRANSACTION_ID), SA.ORDER_NUMBER) col27,
l_null_num col28,
l_null_num col29,
l_null_num,
NVL(SA.Supply_Quantity, SA.ALLOCATED_QUANTITY),
l_null_num,
to_date(null),
SA.Original_Item_Id,
DECODE(SA.ORIGINAL_ORDER_TYPE,
46, 48, -- Change Supply due to Stealing to Supply Adjustment
47, 48, -- Change Demand due to Stealing to Supply Adjustment
SA.ORIGINAL_ORDER_TYPE),
l_sysdate,
G_USER_ID,
l_sysdate,
G_USER_ID,
G_USER_ID,
MTPS.LOCATION, --bug3684383
MTP.PARTNER_NAME, --bug3684383
SA.DEMAND_CLASS, --bug3684383
--null, --bug3684383
l_null_date, --bug3814584
I.Item_Name --bug3579625
FROM MSC_ALLOC_SUPPLIES SA,
MSC_SYSTEM_ITEMS I, --bug3579625
MSC_TRADING_PARTNERS MTP,--bug3684383
MSC_TRADING_PARTNER_SITES MTPS --bug3684383
WHERE SA.PLAN_ID = p_plan_id
AND SA.SR_INSTANCE_ID = p_instance_id
AND SA.INVENTORY_ITEM_ID in (p_member_id, p_family_id)
AND TRUNC(SA.SUPPLY_DATE) >= DECODE(SA.ORIGINAL_ORDER_TYPE,
27, TRUNC(SYSDATE),
28, TRUNC(SYSDATE),
TRUNC(SA.SUPPLY_DATE))
AND SA.ORGANIZATION_ID = p_org_id
AND SA.ALLOCATED_QUANTITY <> 0
AND SA.DEMAND_CLASS = NVL(p_demand_class, SA.DEMAND_CLASS )
AND TRUNC(SA.SUPPLY_DATE) < p_itf
-- bug3579625 Addition join with MSC_SYSTEM_ITEMS (I)
AND SA.PLAN_ID = I.PLAN_ID
AND SA.SR_INSTANCE_ID = I.SR_INSTANCE_ID
AND SA.ORIGINAL_ITEM_ID = I.INVENTORY_ITEM_ID
AND SA.ORGANIZATION_ID = I.ORGANIZATION_ID
AND SA.SHIP_TO_SITE_ID = MTPS.PARTNER_SITE_ID(+) --bug3684383
AND SA.CUSTOMER_ID = MTP.PARTNER_ID(+)--bug3684383
);
SELECT SD_DATE,
SUM(SD_QTY),
DEMAND_CLASS
BULK COLLECT INTO
x_atp_dates,
x_atp_qtys,
x_atp_dcs
FROM
(
SELECT TRUNC(AD.DEMAND_DATE) SD_DATE,
-1 * AD.ALLOCATED_QUANTITY SD_QTY,
AD.DEMAND_CLASS
FROM MSC_ALLOC_DEMANDS AD
WHERE AD.PLAN_ID = p_plan_id
AND AD.SR_INSTANCE_ID = p_instance_id
AND AD.INVENTORY_ITEM_ID in (p_member_id, p_family_id)
AND AD.ORGANIZATION_ID = p_org_id
AND AD.ALLOCATED_QUANTITY <> 0 --4501434
AND AD.ORIGINATION_TYPE <> 52 -- Ignore copy SO and copy stealing records for summary enhancement
AND AD.DEMAND_CLASS IN (
SELECT demand_class
FROM msc_alloc_temp
WHERE demand_class IS NOT NULL)
--bug3700564 added trunc
AND TRUNC(AD.DEMAND_DATE) < p_itf
UNION ALL
SELECT TRUNC(SA.SUPPLY_DATE) SD_DATE,
SA.ALLOCATED_QUANTITY SD_QTY,
SA.DEMAND_CLASS
FROM MSC_ALLOC_SUPPLIES SA
WHERE SA.PLAN_ID = p_plan_id
AND SA.SR_INSTANCE_ID = p_instance_id
AND SA.INVENTORY_ITEM_ID in (p_member_id, p_family_id)
AND SA.ORGANIZATION_ID = p_org_id
AND SA.ALLOCATED_QUANTITY <> 0
-- fixed as part of time_phased_atp chagnes
AND TRUNC(SA.SUPPLY_DATE) >= DECODE(SA.ORIGINAL_ORDER_TYPE,
27, TRUNC(SYSDATE),
28, TRUNC(SYSDATE),
TRUNC(SA.SUPPLY_DATE))
AND SA.DEMAND_CLASS IN (
SELECT demand_class
FROM msc_alloc_temp
WHERE demand_class IS NOT NULL)
--bug3700564 added trunc
AND TRUNC(SA.SUPPLY_DATE) < p_itf
)
GROUP BY DEMAND_CLASS, SD_DATE
order by DEMAND_CLASS, SD_DATE; --4698199 --5353882
SELECT SD_DATE,
SUM(SD_QTY),
DEMAND_CLASS
BULK COLLECT INTO
x_atp_dates,
x_atp_qtys,
x_atp_dcs
FROM
(
SELECT /*+ INDEX(S MSC_ATP_SUMMARY_SD_U1) */
SD_DATE, SD_QTY, DEMAND_CLASS
FROM MSC_ATP_SUMMARY_SD S
WHERE S.PLAN_ID = p_plan_id
AND S.SR_INSTANCE_ID = p_instance_id
AND S.INVENTORY_ITEM_ID in (p_member_id, p_family_id)
AND S.ORGANIZATION_ID = p_org_id
AND S.DEMAND_CLASS IN (
SELECT demand_class
FROM msc_alloc_temp
WHERE demand_class IS NOT NULL)
AND S.SD_DATE < p_itf
UNION ALL
SELECT TRUNC(AD.DEMAND_DATE) SD_DATE,
decode(AD.ALLOCATED_QUANTITY, -- Consider unscheduled orders as dummy supplies
0, nvl(OLD_ALLOCATED_QUANTITY,0), --4658238 -- For summary enhancement
-1 * AD.ALLOCATED_QUANTITY) SD_QTY,
AD.DEMAND_CLASS
FROM MSC_ALLOC_DEMANDS AD,
MSC_PLANS P -- For summary enhancement
WHERE AD.PLAN_ID = p_plan_id
AND AD.SR_INSTANCE_ID = p_instance_id
AND AD.INVENTORY_ITEM_ID in (p_member_id, p_family_id)
AND AD.ORGANIZATION_ID = p_org_id
AND AD.DEMAND_CLASS IN (
SELECT demand_class
FROM msc_alloc_temp
WHERE demand_class IS NOT NULL)
--bug3700564 added trunc
AND TRUNC(AD.DEMAND_DATE) < p_itf
AND P.PLAN_ID = AD.PLAN_ID
AND (AD.REFRESH_NUMBER > P.LATEST_REFRESH_NUMBER
OR AD.REFRESH_NUMBER = p_refresh_number)
UNION ALL
SELECT TRUNC(SA.SUPPLY_DATE) SD_DATE,
decode(SA.ALLOCATED_QUANTITY, -- Consider deleted stealing records as dummy demands
0, -1 * OLD_ALLOCATED_QUANTITY, -- For summary enhancement
SA.ALLOCATED_QUANTITY) SD_QTY ,
SA.DEMAND_CLASS
FROM MSC_ALLOC_SUPPLIES SA,
MSC_PLANS P -- For summary enhancement
WHERE SA.PLAN_ID = p_plan_id
AND SA.SR_INSTANCE_ID = p_instance_id
AND SA.INVENTORY_ITEM_ID in (p_member_id, p_family_id)
AND SA.ORGANIZATION_ID = p_org_id
AND SA.DEMAND_CLASS IN (
SELECT demand_class
FROM msc_alloc_temp
WHERE demand_class IS NOT NULL)
--bug3700564 added trunc
AND TRUNC(SA.SUPPLY_DATE) < p_itf
AND P.PLAN_ID = SA.PLAN_ID
AND (SA.REFRESH_NUMBER > P.LATEST_REFRESH_NUMBER
OR SA.REFRESH_NUMBER = p_refresh_number)
)
GROUP BY DEMAND_CLASS, SD_DATE
order by DEMAND_CLASS, SD_DATE; --4698199;
/*--Insert_SD_Into_Details_Temp-----------------------------------------------
| o Called from Item_Alloc_Cum_Atp procedure for Rule based Allocated Time
| o This is similar to previous procedure only difference being that we
+---------------------------------------------------------------------------*/
PROCEDURE Insert_SD_Into_Details_Temp(
p_type IN INTEGER,
p_member_id IN NUMBER,
p_family_id IN NUMBER,
p_sr_member_id IN NUMBER,
p_sr_family_id IN NUMBER,
p_org_id IN NUMBER,
--bug3671294 now we donot need this as we will join with msc_system_items
--p_inv_item_name IN VARCHAR2,
p_org_code IN VARCHAR2,
p_instance_id IN NUMBER,
p_plan_id IN NUMBER,
p_itf IN DATE,
p_level_id IN PLS_INTEGER,
p_session_id IN NUMBER,
p_record_type IN PLS_INTEGER,
p_scenario_id IN NUMBER,
p_uom_code IN VARCHAR2,
x_insert_count OUT NOCOPY NUMBER,
x_return_status OUT NOCOPY VARCHAR2
) IS
l_null_num NUMBER;
msc_sch_wb.atp_debug('******* Begin Insert_SD_Into_Details_Temp **********');
msc_sch_wb.atp_debug('Insert_SD_Into_Details_Temp: p_type: ' || p_type);
msc_sch_wb.atp_debug('Insert_SD_Into_Details_Temp: p_member_id: ' || p_member_id);
msc_sch_wb.atp_debug('Insert_SD_Into_Details_Temp: p_family_id: ' || p_family_id);
msc_sch_wb.atp_debug('Insert_SD_Into_Details_Temp: p_sr_member_id: ' || p_sr_member_id);
msc_sch_wb.atp_debug('Insert_SD_Into_Details_Temp: p_sr_family_id: ' || p_sr_family_id);
msc_sch_wb.atp_debug('Insert_SD_Into_Details_Temp: p_org_id: ' || p_org_id);
msc_sch_wb.atp_debug('Insert_SD_Into_Details_Temp: p_org_code: ' || p_org_code);
msc_sch_wb.atp_debug('Insert_SD_Into_Details_Temp: p_instance_id: ' || p_instance_id);
msc_sch_wb.atp_debug('Insert_SD_Into_Details_Temp: p_plan_id: ' || p_plan_id);
msc_sch_wb.atp_debug('Insert_SD_Into_Details_Temp: p_itf: ' || p_itf);
msc_sch_wb.atp_debug('Insert_SD_Into_Details_Temp: p_level_id: ' || p_level_id);
msc_sch_wb.atp_debug('Insert_SD_Into_Details_Temp: p_session_id: ' || p_session_id);
msc_sch_wb.atp_debug('Insert_SD_Into_Details_Temp: p_record_type: ' || p_record_type);
msc_sch_wb.atp_debug('Insert_SD_Into_Details_Temp: p_scenario_id: ' || p_scenario_id);
msc_sch_wb.atp_debug('Insert_SD_Into_Details_Temp: p_uom_code: ' || p_uom_code);
INSERT INTO MRP_ATP_DETAILS_TEMP
(session_id, atp_level, inventory_item_id, organization_id, identifier1, identifier3,
supply_demand_type, supply_demand_date, supply_demand_quantity, supply_demand_source_type,
allocated_quantity, record_type, scenario_id, disposition_name, demand_class, char1,
uom_code, plan_id, inventory_item_name, organization_code,
pf_display_flag, original_demand_quantity, original_demand_date,
original_item_id, original_supply_demand_type, request_item_id,
ORIG_CUSTOMER_SITE_NAME,ORIG_CUSTOMER_NAME,ORIG_DEMAND_CLASS,ORIG_REQUEST_DATE )--bug3263368
SELECT col1, col2, col3, col4, col5, col6, col7, col8, col9, col10,
col11, col12, col13, col14, col15, col16, col17, col18, col19, col20,
col21, col22, col23, col24, col25, col26,col27,col28,col29,col30
FROM
(SELECT p_session_id col1, -- session_id
p_level_id col2, -- level_id
p_sr_family_id col3, -- inventory_item_id
p_org_id col4, -- organization_id
p_instance_id col5, -- Identifier1
AD.PARENT_DEMAND_ID col6, -- Identifier3
1 col7, -- supply_demand_type
TRUNC(AD.DEMAND_DATE) col8, -- supply_demand_date
-1 * NVL(AD.DEMAND_QUANTITY,
AD.ALLOCATED_QUANTITY) col9, -- supply_demand_quantity
AD.ORIGINATION_TYPE col10, -- supply_demand_source_type
-1 * AD.ALLOCATED_QUANTITY col11, -- allocated_quantity
p_record_type col12, -- record_type
p_scenario_id col13, -- scenario_id
AD.ORDER_NUMBER col14, -- disposition_name
AD.DEMAND_CLASS col15, -- demand_class
l_null_char col16, -- from_demand_class --Bug 3875786
p_uom_code col17, -- UOM Code
p_plan_id col18, -- Plan id
--bug3671294
msi.item_name col19, -- Item name
--p_inv_item_name col19, -- Item name
p_org_code col20, -- Organization code
Decode(AD.inventory_item_id, p_family_id,
Decode(AD.original_item_id, p_member_id,
AD.Pf_Display_Flag,
Decode(sign(trunc(AD.Original_Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, AD.Pf_Display_Flag,
1)),
AD.Pf_Display_Flag) col21,
-1 * NVL(AD.DEMAND_QUANTITY,
AD.ALLOCATED_QUANTITY) col22,
trunc(AD.original_demand_date) col23, --Bug_3693892 added trunc
AD.original_item_id col24,
AD.original_origination_type col25,
p_sr_member_id col26,
MTPS.LOCATION col27, --bug3263368
MTP.PARTNER_NAME col28, --bug3263368
AD.DEMAND_CLASS col29, --bug3263368
AD.REQUEST_DATE col30 --bug3263368
FROM
MSC_ALLOC_DEMANDS AD,
MSC_ALLOC_TEMP TEMP,
MSC_TRADING_PARTNERS MTP,--bug3263368
MSC_TRADING_PARTNER_SITES MTPS, --bug3263368
MSC_SYSTEM_ITEMS msi --bug3671294
WHERE
AD.PLAN_ID = p_plan_id
AND AD.SR_INSTANCE_ID = p_instance_id
AND AD.INVENTORY_ITEM_ID in (p_member_id, p_family_id)
AND AD.ORGANIZATION_ID = p_org_id
AND AD.ALLOCATED_QUANTITY <> 0
AND AD.DEMAND_CLASS = TEMP.DEMAND_CLASS
--bug3671294 start
AND msi.PLAN_ID = AD.PLAN_ID
AND msi.SR_INSTANCE_ID = AD.SR_INSTANCE_ID
AND msi.ORGANIZATION_ID = AD.ORGANIZATION_ID
AND msi.INVENTORY_ITEM_ID = AD.ORIGINAL_ITEM_ID
--bug3671294 end
--bug3700564 added trunc
AND TRUNC(AD.DEMAND_DATE) < NVL(p_itf, TRUNC(AD.DEMAND_DATE) + 1)
AND AD.ORIGINATION_TYPE <> 52 -- Ignore copy SO and copy stealing records for allocation WB - summary enhancement
AND AD.SHIP_TO_SITE_ID = MTPS.PARTNER_SITE_ID(+) --bug3263368
AND AD.CUSTOMER_ID = MTP.PARTNER_ID(+) --bug3263368
UNION ALL
SELECT p_session_id col1,
p_level_id col2,
p_sr_family_id col3 ,
p_org_id col4,
p_instance_id col5,
SA.PARENT_TRANSACTION_ID col6,
2 col7, -- supply
TRUNC(SA.SUPPLY_DATE) col8,
NVL(SA.SUPPLY_QUANTITY,
SA.ALLOCATED_QUANTITY) col9,
SA.ORDER_TYPE col10,
SA.ALLOCATED_QUANTITY col11,
p_record_type col12, -- record_type
p_scenario_id col13, -- scenario_id
DECODE(SA.ORIGINAL_ORDER_TYPE, -- SA.ORDER_TYPE, /*bug 3229032*/
5, to_char(SA.PARENT_TRANSACTION_ID),
SA.ORDER_NUMBER) col14,
SA.DEMAND_CLASS col15,
SA.FROM_DEMAND_CLASS col16,
p_uom_code col17,
p_plan_id col18,
--bug3671294
msi.item_name col19, -- Item name
--p_inv_item_name col19, -- Item name
p_org_code col20, -- Organization code
l_null_num col21, -- Bug 3875786 - local variable used for NULL
l_null_num col22, -- Bug 3875786 - local variable used for NULL
l_null_date col23, -- Bug 3875786 - local variable used for NULL
SA.original_item_id col24,
/*bug 3229032*/
DECODE(SA.ORIGINAL_ORDER_TYPE,
46, 48, -- Change Supply due to Stealing to Supply Adjustment
47, 48, -- Change Demand due to Stealing to Supply Adjustment
SA.ORIGINAL_ORDER_TYPE
) col25,
p_sr_member_id col26,
MTPS.LOCATION col27, --bug3684383
MTP.PARTNER_NAME col28, --bug3684383
SA.DEMAND_CLASS col29, --bug3684383
l_null_date col30 --bug3684383 -- Bug 3875786 - local variable used for NULL
FROM
MSC_ALLOC_SUPPLIES SA,
MSC_ALLOC_TEMP TEMP,
MSC_SYSTEM_ITEMS msi, --bug3671294
MSC_TRADING_PARTNER_SITES MTPS, --bug3684383
MSC_TRADING_PARTNERS MTP --bug3684383
WHERE
SA.PLAN_ID = p_plan_id
AND SA.SR_INSTANCE_ID = p_instance_id
AND SA.INVENTORY_ITEM_ID in (p_member_id, p_family_id)
AND SA.ORGANIZATION_ID = p_org_id
AND SA.ALLOCATED_QUANTITY <> 0
--bug3671294 start
AND msi.PLAN_ID = SA.PLAN_ID
AND msi.SR_INSTANCE_ID = SA.SR_INSTANCE_ID
AND msi.ORGANIZATION_ID = SA.ORGANIZATION_ID
AND msi.INVENTORY_ITEM_ID = SA.ORIGINAL_ITEM_ID
--bug3671294 end
AND TRUNC(SA.SUPPLY_DATE) >= DECODE(SA.ORIGINAL_ORDER_TYPE,
27, TRUNC(SYSDATE),
28, TRUNC(SYSDATE),
TRUNC(SA.SUPPLY_DATE))
AND SA.DEMAND_CLASS = TEMP.DEMAND_CLASS
AND TRUNC(SA.SUPPLY_DATE) < NVL(p_itf, TRUNC(SA.SUPPLY_DATE) + 1)
AND SA.SHIP_TO_SITE_ID = MTPS.PARTNER_SITE_ID(+) --bug3684383
AND SA.CUSTOMER_ID = MTP.PARTNER_ID(+) --bug3684383
);
INSERT INTO MRP_ATP_DETAILS_TEMP
(session_id, atp_level, inventory_item_id, organization_id, identifier1, identifier3,
supply_demand_type, supply_demand_date, supply_demand_quantity, supply_demand_source_type,
allocated_quantity, record_type, scenario_id, disposition_name, demand_class, uom_code,
inventory_item_name, organization_code, identifier2, identifier4, request_item_id,
pf_display_flag, original_demand_quantity, original_demand_date, original_item_id,
original_supply_demand_type, unallocated_quantity,
ORIG_CUSTOMER_SITE_NAME,ORIG_CUSTOMER_NAME,ORIG_DEMAND_CLASS,ORIG_REQUEST_DATE )--bug3263368
SELECT col1, col2, col3, col4, col5, col6, col7, col8, col9, col10,
col11, col12, col13, col14, col15, col16, col17, col18, col19, col20,
col21, col22, col23, col24, col25, col26, col27,col28,col29,col30,col31
FROM
(SELECT p_session_id col1, -- session_id
p_level_id col2, -- level_id
p_sr_family_id col3, -- inventory_item_id
p_org_id col4, -- organization_id
p_instance_id col5, -- Identifier1
AD.PARENT_DEMAND_ID col6, -- Identifier3
1 col7, -- supply_demand_type
TRUNC(AD.DEMAND_DATE) col8, -- supply_demand_date
-1 * NVL(AD.DEMAND_QUANTITY,
AD.ALLOCATED_QUANTITY) col9, -- supply_demand_quantity
AD.ORIGINAL_ORIGINATION_TYPE col10,-- supply_demand_source_type
-1 * AD.ALLOCATED_QUANTITY*
DECODE(decode(AD.ORIGINAL_ORIGINATION_TYPE,
6, decode(AD.source_organization_id,
NULL, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(TEMP.DEMAND_CLASS, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id, trunc(AD.DEMAND_DATE),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
-23453, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(TEMP.DEMAND_CLASS, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id, trunc(AD.DEMAND_DATE),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
AD.organization_id, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(TEMP.DEMAND_CLASS, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id, trunc(AD.DEMAND_DATE),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)), NULL),
30, decode(AD.source_organization_id,
NULL, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(TEMP.DEMAND_CLASS, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id, trunc(AD.DEMAND_DATE),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
-23453, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(TEMP.DEMAND_CLASS, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id, trunc(AD.DEMAND_DATE),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
AD.organization_id, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(TEMP.DEMAND_CLASS, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id, trunc(AD.DEMAND_DATE),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)), NULL),
DECODE(AD.DEMAND_CLASS, null, null,
DECODE(TEMP.DEMAND_CLASS, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id, trunc(AD.DEMAND_DATE),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS))),
TEMP.DEMAND_CLASS, 1,
MSC_AATP_FUNC.Get_Item_Demand_Alloc_Percent(p_plan_id,
AD.PARENT_DEMAND_ID,
trunc(AD.DEMAND_DATE),
AD.USING_ASSEMBLY_ITEM_ID,
DECODE(AD.SOURCE_ORGANIZATION_ID,
-23453, null,
AD.SOURCE_ORGANIZATION_ID),
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id,
AD.ORIGINAL_ORIGINATION_TYPE,
decode(AD.ORIGINAL_ORIGINATION_TYPE,
6, decode(AD.source_organization_id,
NULL, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(TEMP.DEMAND_CLASS, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id, trunc(AD.DEMAND_DATE),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
-23453, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(TEMP.DEMAND_CLASS, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id, trunc(AD.DEMAND_DATE),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
AD.organization_id, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(TEMP.DEMAND_CLASS, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id, trunc(AD.DEMAND_DATE),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)), TEMP.DEMAND_CLASS),
30, decode(AD.source_organization_id,
NULL, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(TEMP.DEMAND_CLASS, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id, trunc(AD.DEMAND_DATE),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
-23453, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(TEMP.DEMAND_CLASS, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id, trunc(AD.DEMAND_DATE),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
AD.organization_id, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(TEMP.DEMAND_CLASS, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id, trunc(AD.DEMAND_DATE),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)), TEMP.DEMAND_CLASS),
DECODE(AD.DEMAND_CLASS, null, null,
DECODE(TEMP.DEMAND_CLASS, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id, trunc(AD.DEMAND_DATE),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS))),
TEMP.DEMAND_CLASS,
p_level_id)) col11, -- allocated_quantity
p_record_type col12, -- record_type
p_scenario_id col13, -- scenario_id
AD.ORDER_NUMBER col14, -- disposition_name
TEMP.DEMAND_CLASS col15, -- demand_class
p_uom_code col16, -- UOM Code
--bug3671294
msi.item_name col17, -- Item name
--p_inv_item_name col17, -- Item name
p_org_code col18, -- Organization code
TEMP.PRIORITY col19, -- sysdate priroty
TEMP.ALLOCATION_PERCENT col20, -- sysdate allocation percent
-- time_phased_atp
p_sr_member_id col21, -- request_item_id
Decode(AD.inventory_item_id, p_family_id,
Decode(AD.original_item_id, p_member_id,
AD.Pf_Display_Flag,
Decode(sign(trunc(AD.Original_Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, AD.Pf_Display_Flag,
1)),
AD.Pf_Display_Flag) col22,
-1 * NVL(AD.DEMAND_QUANTITY,
AD.ALLOCATED_QUANTITY)*
DECODE(decode(AD.ORIGINAL_ORIGINATION_TYPE,
6, decode(AD.source_organization_id,
NULL, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(TEMP.DEMAND_CLASS, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id, trunc(AD.DEMAND_DATE),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
-23453, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(TEMP.DEMAND_CLASS, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id, trunc(AD.DEMAND_DATE),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
AD.organization_id, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(TEMP.DEMAND_CLASS, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id, trunc(AD.DEMAND_DATE),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)), NULL),
30, decode(AD.source_organization_id,
NULL, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(TEMP.DEMAND_CLASS, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id, trunc(AD.DEMAND_DATE),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
-23453, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(TEMP.DEMAND_CLASS, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id, trunc(AD.DEMAND_DATE),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
AD.organization_id, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(TEMP.DEMAND_CLASS, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id, trunc(AD.DEMAND_DATE),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)), NULL),
DECODE(AD.DEMAND_CLASS, null, null,
DECODE(TEMP.DEMAND_CLASS, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id, trunc(AD.DEMAND_DATE),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS))),
TEMP.DEMAND_CLASS, 1,
MSC_AATP_FUNC.Get_Item_Demand_Alloc_Percent(p_plan_id,
AD.PARENT_DEMAND_ID,
trunc(AD.DEMAND_DATE),
AD.USING_ASSEMBLY_ITEM_ID,
DECODE(AD.SOURCE_ORGANIZATION_ID,
-23453, null,
AD.SOURCE_ORGANIZATION_ID),
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id,
AD.ORIGINAL_ORIGINATION_TYPE,
decode(AD.ORIGINAL_ORIGINATION_TYPE,
6, decode(AD.source_organization_id,
NULL, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(TEMP.DEMAND_CLASS, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id, trunc(AD.DEMAND_DATE),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
-23453, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(TEMP.DEMAND_CLASS, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id, trunc(AD.DEMAND_DATE),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
AD.organization_id, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(TEMP.DEMAND_CLASS, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id, trunc(AD.DEMAND_DATE),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)), TEMP.DEMAND_CLASS),
30, decode(AD.source_organization_id,
NULL, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(TEMP.DEMAND_CLASS, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id, trunc(AD.DEMAND_DATE),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
-23453, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(TEMP.DEMAND_CLASS, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id, trunc(AD.DEMAND_DATE),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)),
AD.organization_id, DECODE(AD.DEMAND_CLASS, null, null,
DECODE(TEMP.DEMAND_CLASS, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id, trunc(AD.DEMAND_DATE),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS)), TEMP.DEMAND_CLASS),
DECODE(AD.DEMAND_CLASS, null, null,
DECODE(TEMP.DEMAND_CLASS, '-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null, null,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id, trunc(AD.DEMAND_DATE),
p_level_id, AD.DEMAND_CLASS),
AD.DEMAND_CLASS))),
TEMP.DEMAND_CLASS,
p_level_id)) col23, -- original demand quantity
trunc(AD.original_demand_date) col24, --Bug_3693892 added trunc
AD.original_item_id col25,
AD.original_origination_type col26,
-1 * AD.ALLOCATED_QUANTITY col27, -- unallocated quantity
MTPS.LOCATION col28, --bug3263368
MTP.PARTNER_NAME col29, --bug3263368
AD.DEMAND_CLASS col30, --bug3263368
AD.REQUEST_DATE col31 --bug3263368
FROM
MSC_ALLOC_DEMANDS AD,
MSC_ALLOC_TEMP TEMP,
MSC_TRADING_PARTNERS MTP,--bug3263368
MSC_TRADING_PARTNER_SITES MTPS, --bug3263368
MSC_SYSTEM_ITEMS msi --bug3671294
WHERE
AD.PLAN_ID = p_plan_id
AND AD.SR_INSTANCE_ID = p_instance_id
AND AD.INVENTORY_ITEM_ID in (p_member_id, p_family_id)
AND AD.ORGANIZATION_ID = p_org_id
AND AD.ALLOCATED_QUANTITY <> 0
--bug3671294 start
AND msi.PLAN_ID = AD.PLAN_ID
AND msi.SR_INSTANCE_ID = AD.SR_INSTANCE_ID
AND msi.ORGANIZATION_ID = AD.ORGANIZATION_ID
AND msi.INVENTORY_ITEM_ID = AD.ORIGINAL_ITEM_ID
--bug3671294 end
AND TRUNC(AD.DEMAND_DATE) < NVL(p_itf, TRUNC(AD.DEMAND_DATE) + 1)
AND AD.ORIGINATION_TYPE <> 52 -- Ignore copy SO and copy stealing records for allocation WB
AND AD.SHIP_TO_SITE_ID = MTPS.PARTNER_SITE_ID(+) --bug3263368
AND AD.CUSTOMER_ID = MTP.PARTNER_ID(+) --bug3263368
UNION ALL
SELECT p_session_id col1,
p_level_id col2,
p_sr_member_id col3 ,
p_org_id col4,
p_instance_id col5,
SA.PARENT_TRANSACTION_ID col6,
2 col7, -- supply
TRUNC(SA.SUPPLY_DATE) col8,
NVL(SA.SUPPLY_QUANTITY,
SA.ALLOCATED_QUANTITY) col9,
SA.ORDER_TYPE col10,
SA.ALLOCATED_QUANTITY
* DECODE(DECODE(SA.DEMAND_CLASS, null, null,
DECODE(TEMP.DEMAND_CLASS,'-1',
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
null,
null,
Decode(sign(trunc(SA.Supply_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', SA.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id,
TRUNC(SA.SUPPLY_DATE),
p_level_id,
SA.DEMAND_CLASS),
SA.DEMAND_CLASS)),
TEMP.DEMAND_CLASS,
1,
NULL,
NVL(MSC_AATP_FUNC.Get_DC_Alloc_Percent(
p_instance_id,
Decode(sign(trunc(SA.Supply_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', SA.Original_Item_Id,
p_family_id)),
p_org_id,
null,
null,
TEMP.DEMAND_CLASS,
TRUNC(SA.SUPPLY_DATE)),
1),
DECODE(MSC_AATP_FUNC.Get_DC_Alloc_Percent(
p_instance_id,
Decode(sign(trunc(SA.Supply_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', SA.Original_Item_Id,
p_family_id)),
p_org_id,
null,
null,
TEMP.DEMAND_CLASS,
TRUNC(SA.SUPPLY_DATE)),
NULL,
1,
0)
) col11, -- allocated_quantity
p_record_type col12, -- record_type
p_scenario_id col13, -- scenario_id
DECODE(SA.ORIGINAL_ORDER_TYPE,
5, to_char(SA.PARENT_TRANSACTION_ID),
SA.ORDER_NUMBER) col14, -- disposition_name
TEMP.DEMAND_CLASS col15, -- demand_class
p_uom_code col16, -- UOM Code
--bug3671294
msi.item_name col17, -- Item name
--p_inv_item_name col17, -- Item name
p_org_code col18, -- Org code
TEMP.PRIORITY col19, -- sysdate priroty
TEMP.ALLOCATION_PERCENT col20, -- sysdate allocation percent
p_sr_family_id col21,
l_null_num col22, -- Bug 3875786 - local variable used for NULL
l_null_num col23, -- Bug 3875786 - local variable used for NULL
l_null_date col24, -- Bug 3875786 - local variable used for NULL
SA.original_item_id col25,
SA.ORIGINAL_ORDER_TYPE col26,
SA.ALLOCATED_QUANTITY col27, -- unallocated quantity
l_null_char col28, --bug3263368 ORIG_CUSTOMER_SITE_NAME --Bug 3875786
l_null_char col29, --bug3263368 ORIG_CUSTOMER_NAME --Bug 3875786
l_null_char col30, --bug3263368 ORIG_DEMAND_CLASS --Bug 3875786
l_null_date col31 --bug3263368 ORIG_REQUEST_DATE -- Bug 3875786 - local variable used for NULL
FROM
MSC_ALLOC_SUPPLIES SA,
MSC_ALLOC_TEMP TEMP,
MSC_SYSTEM_ITEMS msi --bug3671294
WHERE
SA.PLAN_ID = p_plan_id
AND SA.SR_INSTANCE_ID = p_instance_id
AND SA.INVENTORY_ITEM_ID in (p_member_id, p_family_id)
AND SA.ORGANIZATION_ID = p_org_id
AND SA.ALLOCATED_QUANTITY <> 0
--bug3671294 start
AND msi.PLAN_ID = SA.PLAN_ID
AND msi.SR_INSTANCE_ID = SA.SR_INSTANCE_ID
AND msi.ORGANIZATION_ID = SA.ORGANIZATION_ID
AND msi.INVENTORY_ITEM_ID = SA.ORIGINAL_ITEM_ID
--bug3671294 end
AND TRUNC(SA.SUPPLY_DATE) >= DECODE(SA.ORIGINAL_ORDER_TYPE,
27, TRUNC(SYSDATE),
28, TRUNC(SYSDATE),
TRUNC(SA.SUPPLY_DATE))
AND TRUNC(SA.SUPPLY_DATE) < NVL(p_itf, TRUNC(SA.SUPPLY_DATE) + 1)
);
INSERT INTO MRP_ATP_DETAILS_TEMP
(session_id, atp_level, inventory_item_id, organization_id, identifier1, identifier3,
supply_demand_type, supply_demand_date, supply_demand_quantity, supply_demand_source_type,
allocated_quantity, record_type, scenario_id, disposition_name, demand_class, class, customer_id,
customer_site_id, uom_code, inventory_item_name, organization_code, identifier2, identifier4,
Customer_Name, Customer_Site_Name, request_item_id, pf_display_flag, original_demand_quantity,
original_demand_date, original_item_id, original_supply_demand_type, unallocated_quantity,
ORIG_CUSTOMER_SITE_NAME,ORIG_CUSTOMER_NAME,ORIG_DEMAND_CLASS,ORIG_REQUEST_DATE ) --bug3263368
SELECT col1, col2, col3, col4, col5, col6, col7, col8, col9, col10,
col11, col12, col13, col14, col15, col16, col17, col18, col19, col20, col21, col22, col23, col24, col25,
col26, col27, col28, col29, col30, col31, col32,col33,col34,col35,col36
FROM
(SELECT p_session_id col1, -- session_id
p_level_id col2, -- level_id
p_sr_member_id col3, -- inventory_item_id
p_org_id col4, -- organization_id
p_instance_id col5, -- Identifier1
AD.PARENT_DEMAND_ID col6, -- Identifier3
1 col7, -- supply_demand_type
TRUNC(AD.DEMAND_DATE) col8, -- supply_demand_date
-1 * NVL(AD.DEMAND_QUANTITY,
AD.ALLOCATED_QUANTITY) col9, -- supply_demand_quantity
AD.ORIGINATION_TYPE col10,-- supply_demand_source_type
-1 * AD.ALLOCATED_QUANTITY *
DECODE(DECODE(AD.CUSTOMER_ID, NULL, NULL,
0, NULL,
decode(AD.origination_type,
6, decode(AD.source_organization_id,
NULL, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, TRUNC(AD.ORIGINAL_DEMAND_DATE),
p_level_id, NULL),
-23453, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, TRUNC(AD.ORIGINAL_DEMAND_DATE),
p_level_id, NULL),
AD.organization_id, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, TRUNC(AD.ORIGINAL_DEMAND_DATE),
p_level_id, NULL),
NULL),
30, decode(AD.source_organization_id,
NULL, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, TRUNC(AD.ORIGINAL_DEMAND_DATE),
p_level_id, NULL),
-23453, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, TRUNC(AD.ORIGINAL_DEMAND_DATE),
p_level_id, NULL),
AD.organization_id, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, TRUNC(AD.ORIGINAL_DEMAND_DATE),
p_level_id, NULL),
NULL),
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id,
TRUNC(AD.ORIGINAL_DEMAND_DATE),
p_level_id, NULL))),
TEMP.LEVEL_3_DEMAND_CLASS, 1,
MSC_AATP_FUNC.Get_Item_Demand_Alloc_Percent(p_plan_id,
AD.PARENT_DEMAND_ID,
TRUNC(AD.ORIGINAL_DEMAND_DATE),
AD.USING_ASSEMBLY_ITEM_ID,
DECODE(AD.SOURCE_ORGANIZATION_ID,
-23453, null,
AD.SOURCE_ORGANIZATION_ID),
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id,
AD.ORIGINATION_TYPE,
DECODE(AD.CUSTOMER_ID, NULL, TEMP.LEVEL_3_DEMAND_CLASS,
0, TEMP.LEVEL_3_DEMAND_CLASS,
decode(AD.origination_type,
6, decode(AD.source_organization_id,
NULL, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, TRUNC(AD.ORIGINAL_DEMAND_DATE),
p_level_id, NULL),
-23453, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, TRUNC(AD.ORIGINAL_DEMAND_DATE),
p_level_id, NULL),
AD.organization_id, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, TRUNC(AD.ORIGINAL_DEMAND_DATE),
p_level_id, NULL),
TEMP.LEVEL_3_DEMAND_CLASS),
30, decode(AD.source_organization_id,
NULL, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, TRUNC(AD.ORIGINAL_DEMAND_DATE),
p_level_id, NULL),
-23453, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, TRUNC(AD.ORIGINAL_DEMAND_DATE),
p_level_id, NULL),
AD.organization_id, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, TRUNC(AD.ORIGINAL_DEMAND_DATE),
p_level_id, NULL),
TEMP.LEVEL_3_DEMAND_CLASS),
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id,
TRUNC(AD.ORIGINAL_DEMAND_DATE),
p_level_id, NULL))),
TEMP.LEVEL_3_DEMAND_CLASS,
p_level_id)) col11, -- allocated_quantity
p_record_type col12, -- record_type
p_scenario_id col13, -- scenario_id
AD.ORDER_NUMBER col14, -- disposition_name
TEMP.LEVEL_3_DEMAND_CLASS col15, -- demand_class
TEMP.LEVEL_1_DEMAND_CLASS col16, -- class
TEMP.PARTNER_ID col17, -- partner_id
TEMP.PARTNER_SITE_ID col18, -- partner_site_id
p_uom_code col19, -- UOM Code
--bug3671294
msi.item_name col20, -- Item name
--p_inv_item_name col20, -- Item name
p_org_code col21, -- Org code
TEMP.LEVEL_3_DEMAND_CLASS_PRIORITY col22, -- Level 3 priority
TEMP.ALLOCATION_PERCENT col23, -- Sysdate allocation percent
TEMP.customer_name col24, -- Customer Name
TEMP.customer_site_name col25, -- Customer Site Name
p_sr_member_id col26, -- request_item_id
Decode(AD.inventory_item_id, p_family_id,
Decode(AD.original_item_id, p_member_id,
AD.Pf_Display_Flag,
Decode(sign(trunc(AD.Original_Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, AD.Pf_Display_Flag,
1)),
AD.Pf_Display_Flag) col27,
-1 * NVL(AD.DEMAND_QUANTITY,
AD.ALLOCATED_QUANTITY)*
DECODE(DECODE(AD.CUSTOMER_ID, NULL, NULL,
0, NULL,
decode(AD.origination_type,
6, decode(AD.source_organization_id,
NULL, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, TRUNC(AD.ORIGINAL_DEMAND_DATE),
p_level_id, NULL),
-23453, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, TRUNC(AD.ORIGINAL_DEMAND_DATE),
p_level_id, NULL),
AD.organization_id, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, TRUNC(AD.ORIGINAL_DEMAND_DATE),
p_level_id, NULL),
NULL),
30, decode(AD.source_organization_id,
NULL, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, TRUNC(AD.ORIGINAL_DEMAND_DATE),
p_level_id, NULL),
-23453, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, TRUNC(AD.ORIGINAL_DEMAND_DATE),
p_level_id, NULL),
AD.organization_id, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, TRUNC(AD.ORIGINAL_DEMAND_DATE),
p_level_id, NULL),
NULL),
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id,
TRUNC(AD.ORIGINAL_DEMAND_DATE),
p_level_id, NULL))),
TEMP.LEVEL_3_DEMAND_CLASS, 1,
MSC_AATP_FUNC.Get_Item_Demand_Alloc_Percent(p_plan_id,
AD.PARENT_DEMAND_ID,
TRUNC(AD.ORIGINAL_DEMAND_DATE),
AD.USING_ASSEMBLY_ITEM_ID,
DECODE(AD.SOURCE_ORGANIZATION_ID,
-23453, null,
AD.SOURCE_ORGANIZATION_ID),
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id,
AD.ORIGINATION_TYPE,
DECODE(AD.CUSTOMER_ID, NULL, TEMP.LEVEL_3_DEMAND_CLASS,
0, TEMP.LEVEL_3_DEMAND_CLASS,
decode(AD.origination_type,
6, decode(AD.source_organization_id,
NULL, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, TRUNC(AD.ORIGINAL_DEMAND_DATE),
p_level_id, NULL),
-23453, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, TRUNC(AD.ORIGINAL_DEMAND_DATE),
p_level_id, NULL),
AD.organization_id, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, TRUNC(AD.ORIGINAL_DEMAND_DATE),
p_level_id, NULL),
TEMP.LEVEL_3_DEMAND_CLASS),
30, decode(AD.source_organization_id,
NULL, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, TRUNC(AD.ORIGINAL_DEMAND_DATE),
p_level_id, NULL),
-23453, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, TRUNC(AD.ORIGINAL_DEMAND_DATE),
p_level_id, NULL),
AD.organization_id, MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id, TRUNC(AD.ORIGINAL_DEMAND_DATE),
p_level_id, NULL),
TEMP.LEVEL_3_DEMAND_CLASS),
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
AD.CUSTOMER_ID, AD.SHIP_TO_SITE_ID,
Decode(sign(trunc(AD.Demand_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', AD.Original_Item_Id,
p_family_id)),
p_org_id, p_instance_id,
TRUNC(AD.ORIGINAL_DEMAND_DATE),
p_level_id, NULL))),
TEMP.LEVEL_3_DEMAND_CLASS,
p_level_id)) col28, -- original demand quantity
trunc(AD.original_demand_date) col29, --Bug_3693892 added trunc
AD.original_item_id col30,
AD.original_origination_type col31,
-1 * AD.ALLOCATED_QUANTITY col32, -- unallocated quantity
MTPS.LOCATION col33, --bug3263368
MTP.PARTNER_NAME col34, --bug3263368
AD.DEMAND_CLASS col35, --bug3263368
AD.REQUEST_DATE col36 --bug3263368
FROM
MSC_ALLOC_DEMANDS AD,
MSC_ALLOC_HIERARCHY_TEMP TEMP,
MSC_TRADING_PARTNERS MTP,--bug3263368
MSC_TRADING_PARTNER_SITES MTPS, --bug3263368
MSC_SYSTEM_ITEMS msi --bug3671294
WHERE
AD.PLAN_ID = p_plan_id
AND AD.SR_INSTANCE_ID = p_instance_id
AND AD.INVENTORY_ITEM_ID in (p_member_id, p_family_id)
AND AD.ORGANIZATION_ID = p_org_id
AND AD.ORIGINATION_TYPE <> 52 -- For summary enhancement
AND TRUNC(AD.DEMAND_DATE) < NVL(p_itf, TRUNC(AD.DEMAND_DATE) + 1)
AND AD.ALLOCATED_QUANTITY <> 0
--bug3671294 start
AND msi.PLAN_ID = AD.PLAN_ID
AND msi.SR_INSTANCE_ID = AD.SR_INSTANCE_ID
AND msi.ORGANIZATION_ID = AD.ORGANIZATION_ID
AND msi.INVENTORY_ITEM_ID = AD.ORIGINAL_ITEM_ID
--bug3671294 end
AND AD.SHIP_TO_SITE_ID = MTPS.PARTNER_SITE_ID(+) --bug3263368
AND AD.CUSTOMER_ID = MTP.PARTNER_ID(+)--bug3263368
UNION ALL
SELECT p_session_id col1, -- session_id
p_level_id col2, -- level_id
p_sr_member_id col3, -- inventory_item_id
p_org_id col4, -- organization_id
p_instance_id col5, -- Identifier1
SA.PARENT_TRANSACTION_ID col6, -- Identifier3
2 col7, -- supply_demand_type
TRUNC(SA.SUPPLY_DATE) col8, -- supply_demand_date
NVL(SA.SUPPLY_QUANTITY,
SA.ALLOCATED_QUANTITY) col9, -- supply_demand_source_quantity
SA.ORDER_TYPE col10, -- supply_demand_source_type
SA.ALLOCATED_QUANTITY
* DECODE(DECODE(SA.CUSTOMER_ID, NULL, NULL,
MSC_AATP_FUNC.Get_Hierarchy_Demand_Class(
SA.CUSTOMER_ID,
SA.SHIP_TO_SITE_ID,
Decode(sign(trunc(SA.Supply_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', SA.Original_Item_Id,
p_family_id)),
p_org_id,
p_instance_id,
TRUNC(SA.SUPPLY_DATE),
p_level_id,
NULL)),
TEMP.LEVEL_3_DEMAND_CLASS,
1,
NULL,
NVL(MSC_AATP_FUNC.Get_DC_Alloc_Percent(
p_instance_id,
Decode(sign(trunc(SA.Supply_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', SA.Original_Item_Id,
p_family_id)),
p_org_id,
null,
null,
TEMP.LEVEL_3_DEMAND_CLASS,
TRUNC(SA.SUPPLY_DATE)), 1),
DECODE(MSC_AATP_FUNC.Get_DC_Alloc_Percent(
p_instance_id,
Decode(sign(trunc(SA.Supply_Date) - MSC_ATP_ALLOC.G_Atf_Date),
1, p_family_id,
Decode(MSC_ATP_PVT.G_MEM_RULE_WITHIN_ATF,
'Y', SA.Original_Item_Id,
p_family_id)),
p_org_id,
null,
null,
TEMP.LEVEL_3_DEMAND_CLASS,
TRUNC(SA.SUPPLY_DATE)),
NULL, 1, 0)
) col11, -- allocated_quantity
p_record_type col12, -- record_type
p_scenario_id col13, -- scenario_id
DECODE(SA.ORIGINAL_ORDER_TYPE,
5, to_char(SA.PARENT_TRANSACTION_ID),
SA.ORDER_NUMBER) col14, -- disposition_name
TEMP.LEVEL_3_DEMAND_CLASS col15, -- demand_class
TEMP.LEVEL_1_DEMAND_CLASS col16, -- class
TEMP.PARTNER_ID col17, -- partner_id
TEMP.PARTNER_SITE_ID col18, -- partner_site_id
p_uom_code col19, -- UOM Code
--bug3671294
msi.item_name col20, -- Item name
--p_inv_item_name col20, -- Item name
p_org_code col21, -- Org code
TEMP.LEVEL_3_DEMAND_CLASS_PRIORITY col22, -- Level 3 priority
TEMP.ALLOCATION_PERCENT col23, -- Sysdate allocation percent
TEMP.customer_name col24, -- Customer Name
TEMP.customer_site_name col25, -- Customer Site Name
p_sr_member_id col26, -- request_item_id
l_null_num col27,
l_null_num col28,
l_null_date col29, -- Bug 3875786 - local variable used for NULL
SA.Original_Item_Id col30,
SA.ORIGINAL_ORDER_TYPE col31,
SA.ALLOCATED_QUANTITY col32, -- unallocated quantity
l_null_char col33, --bug3263368 ORIG_CUSTOMER_SITE_NAME --Bug 3875786
l_null_char col34, --bug3263368 ORIG_CUSTOMER_NAME --Bug 3875786
l_null_char col35, --bug3263368 ORIG_DEMAND_CLASS --Bug 3875786
l_null_date col36 --bug3263368 ORIG_REQUEST_DATE -- Bug 3875786 - local variable used for NULL
FROM
MSC_ALLOC_SUPPLIES SA,
MSC_ALLOC_HIERARCHY_TEMP TEMP,
MSC_SYSTEM_ITEMS msi --bug3671294
WHERE
SA.PLAN_ID = p_plan_id
AND SA.SR_INSTANCE_ID = p_instance_id
AND SA.INVENTORY_ITEM_ID in (p_member_id, p_family_id)
AND SA.ORGANIZATION_ID = p_org_id
AND SA.ALLOCATED_QUANTITY <> 0
--bug3671294 start
AND msi.PLAN_ID = SA.PLAN_ID
AND msi.SR_INSTANCE_ID = SA.SR_INSTANCE_ID
AND msi.ORGANIZATION_ID = SA.ORGANIZATION_ID
AND msi.INVENTORY_ITEM_ID = SA.ORIGINAL_ITEM_ID
--bug3671294 end
AND TRUNC(SA.SUPPLY_DATE) >= DECODE(SA.ORIGINAL_ORDER_TYPE,
27, TRUNC(SYSDATE),
28, TRUNC(SYSDATE),
TRUNC(SA.SUPPLY_DATE))
AND TRUNC(SA.SUPPLY_DATE) < NVL(p_itf, TRUNC(SA.SUPPLY_DATE) + 1)
);
x_insert_count := SQL%ROWCOUNT;
msc_sch_wb.atp_debug('Insert_SD_Into_Details_Temp: ' || 'Error code:' || to_char(sqlcode));
END Insert_SD_Into_Details_Temp;
DELETE msc_alloc_temp;
/* Do netting in SQL and insert original demand qtys in alloc temp table*/
INSERT INTO MSC_ALLOC_TEMP(
demand_class,
demand_id,
supply_demand_quantity
)
(SELECT demand_class,
parent_demand_id,
sum(allocated_quantity)
FROM msc_alloc_demands
WHERE (demand_class, parent_demand_id) in
(SELECT demand_class,
identifier3
FROM mrp_atp_details_temp
WHERE session_id = p_session_id
AND supply_demand_type = 1
AND record_type = 2)
AND plan_id = p_plan_id
GROUP BY
demand_class,
parent_demand_id
);
/* Now update original demand qtys in mrp_atp_details_temp table*/
UPDATE mrp_atp_details_temp madt
SET madt.original_demand_quantity =
(select -1*mat.supply_demand_quantity
from msc_alloc_temp mat
where mat.demand_class = madt.demand_class
and mat.demand_id = madt.identifier3)
WHERE madt.session_id = p_session_id
AND madt.supply_demand_type = 1
AND madt.record_type = 2;
/* Do netting in SQL and insert original demand qtys in alloc temp table*/
INSERT INTO MSC_ALLOC_TEMP(
demand_id,
supply_demand_quantity
)
SELECT parent_demand_id,
sum(allocated_quantity)
FROM msc_alloc_demands
WHERE parent_demand_id in
(SELECT identifier3
FROM msc_atp_sd_details_temp
WHERE supply_demand_type = 1)
AND plan_id = p_plan_id
AND demand_class = nvl(p_demand_class, demand_class)
GROUP BY
parent_demand_id;
/* Now update original demand qtys in msc_atp_sd_details_temp table*/
UPDATE msc_atp_sd_details_temp masddt
SET masddt.original_demand_quantity =
(select -1*mat.supply_demand_quantity
from msc_alloc_temp mat
where mat.demand_id = masddt.identifier3)
WHERE masddt.supply_demand_type = 1;
SELECT SD_View.ATP_level
,SD_View.scenario_id
,SD_View.inventory_item_id
,SD_View.request_item_id
,SD_View.organization_id
,SD_View.supplier_id
,SD_View.supplier_site_id
,SD_View.department_id
,SD_View.resource_id
,SD_View.supply_demand_date
,SD_View.identifier1
,SD_View.identifier2
,SUM(SD_View.demand_quantity)
,SUM(SD_View.bucketed_demand_quantity)
,SUM(SD_View.supply_quantity)
,SUM(SD_View.period_quantity)
BULK COLLECT INTO
x_atp_period.Level,
x_atp_period.Scenario_Id,
x_atp_period.Inventory_Item_Id,
x_atp_period.Request_Item_Id,
x_atp_period.Organization_id,
x_atp_period.Supplier_ID,
x_atp_period.Supplier_Site_ID,
x_atp_period.Department_id,
x_atp_period.Resource_id,
x_atp_period.Period_Start_Date,
x_atp_period.Identifier1,
x_atp_period.Identifier2,
x_atp_period.Total_Demand_Quantity,
x_atp_period.Total_Bucketed_Demand_Quantity,
x_atp_period.Total_Supply_Quantity,
x_atp_period.Period_Quantity
FROM (
SELECT ATP_level
,scenario_id
,inventory_item_id
,request_item_id
,organization_id
,supplier_id
,supplier_site_id
,department_id
,resource_id
,trunc(supply_demand_date) supply_demand_date --Bug_3693892 added trunc
,identifier1
,identifier2
,(DECODE(supply_demand_type, 1,
DECODE(pf_display_flag, 1,
--Bug_3693892 added trunc
DECODE(trunc(original_demand_date), trunc(supply_demand_date),
original_demand_quantity, 0),
0),
0)) demand_quantity
,(DECODE(supply_demand_type, 1,
allocated_quantity,
0)) bucketed_demand_quantity
,(DECODE(supply_demand_type, 2,
allocated_quantity,
0)) supply_quantity
,allocated_quantity period_quantity
FROM msc_atp_sd_details_temp
UNION ALL
SELECT
ATP_level
,scenario_id
,inventory_item_id
,request_item_id
,organization_id
,supplier_id
,supplier_site_id
,department_id
,resource_id
,trunc(original_demand_date) supply_demand_date --Bug_3693892 added trunc
,identifier1
,identifier2
,original_demand_quantity demand_quantity
,0 bucketed_demand_quantity
,0 supply_quantity
,0 period_quantity
FROM msc_atp_sd_details_temp
WHERE supply_demand_type = 1
AND pf_display_flag = 1
AND trunc(supply_demand_date) <> trunc(original_demand_date) --Bug_3693892 added trunc
) SD_View
GROUP BY
SD_View.supply_demand_date
,SD_View.ATP_level
,SD_View.scenario_id
,SD_View.inventory_item_id
,SD_View.request_item_id
,SD_View.organization_id
,SD_View.supplier_id
,SD_View.supplier_site_id
,SD_View.department_id
,SD_View.resource_id
,SD_View.identifier1
,SD_View.identifier2
ORDER BY
SD_View.supply_demand_date;
SELECT SD_View.ATP_level
,SD_View.scenario_id
,SD_View.inventory_item_id
,SD_View.request_item_id
,SD_View.organization_id
,SD_View.supplier_id
,SD_View.supplier_site_id
,SD_View.department_id
,SD_View.resource_id
,SD_View.supply_demand_date
,SD_View.identifier1
,SD_View.identifier2
,SUM(SD_View.demand_quantity)
,SUM(SD_View.bucketed_demand_quantity)
,SUM(SD_View.supply_quantity)
,SUM(SD_View.period_quantity)
,SUM(SD_View.unallocated_quantity)
BULK COLLECT INTO
x_atp_period.Level,
x_atp_period.Scenario_Id,
x_atp_period.Inventory_Item_Id,
x_atp_period.Request_Item_Id,
x_atp_period.Organization_id,
x_atp_period.Supplier_ID,
x_atp_period.Supplier_Site_ID,
x_atp_period.Department_id,
x_atp_period.Resource_id,
x_atp_period.Period_Start_Date,
x_atp_period.Identifier1,
x_atp_period.Identifier2,
x_atp_period.Total_Demand_Quantity,
x_atp_period.Total_Bucketed_Demand_Quantity,
x_atp_period.Total_Supply_Quantity,
x_atp_period.Period_Quantity,
p_unallocated_atp.atp_qty
FROM (
SELECT ATP_level
,scenario_id
,inventory_item_id
,request_item_id
,organization_id
,supplier_id
,supplier_site_id
,department_id
,resource_id
,trunc(supply_demand_date) supply_demand_date --Bug_3693892 added trunc
,identifier1
,identifier2
,DECODE(supply_demand_type, 1,
DECODE(pf_display_flag, 1,
--Bug_3693892 added trunc
DECODE(trunc(original_demand_date), trunc(supply_demand_date),
original_demand_quantity, 0),
0),
0) demand_quantity
,DECODE(supply_demand_type, 1,
allocated_quantity,
0) bucketed_demand_quantity
,DECODE(supply_demand_type, 2,
allocated_quantity,
0) supply_quantity
,allocated_quantity period_quantity
,unallocated_quantity
FROM msc_atp_sd_details_temp
UNION ALL
SELECT
ATP_level
,scenario_id
,inventory_item_id
,request_item_id
,organization_id
,supplier_id
,supplier_site_id
,department_id
,resource_id
,trunc(original_demand_date) supply_demand_date --Bug_3693892 added trunc
,identifier1
,identifier2
,original_demand_quantity demand_quantity
,0 bucketed_demand_quantity
,0 supply_quantity
,0 period_quantity
,0 unallocated_quantity
FROM msc_atp_sd_details_temp
WHERE supply_demand_type = 1
AND pf_display_flag = 1
AND trunc(supply_demand_date) <> trunc(original_demand_date) --Bug_3693892 added trunc
) SD_View
GROUP BY
SD_View.supply_demand_date
,SD_View.ATP_level
,SD_View.scenario_id
,SD_View.inventory_item_id
,SD_View.request_item_id
,SD_View.organization_id
,SD_View.supplier_id
,SD_View.supplier_site_id
,SD_View.department_id
,SD_View.resource_id
,SD_View.identifier1
,SD_View.identifier2
ORDER BY
SD_View.supply_demand_date;
SELECT
final.col1,
final.col2,
SUM(final.col3),
SUM(final.col4),
SUM(final.col5),
SUM(final.col6),
SUM(final.col7),
SUM(final.col8),
p_inv_item_id,
p_org_id,
p_instance_id,
p_scenario_id,
p_level_id,
null, -- Initialize period end date with null
0, -- Initialize backward_forward_quantity with 0
0 -- Initialize cumulative quantity with 0
BULK COLLECT INTO
x_atp_period.Demand_Class,
x_atp_period.Period_Start_Date,
x_atp_period.Allocated_Supply_Quantity,
x_atp_period.Supply_Adjustment_Quantity,
x_atp_period.Total_Supply_Quantity,
x_atp_period.Total_Demand_Quantity,
x_atp_period.Total_Bucketed_Demand_Quantity,
x_atp_period.Period_Quantity,
x_atp_period.Inventory_Item_Id,
x_atp_period.Organization_Id,
x_atp_period.Identifier1,
x_atp_period.Scenario_Id,
x_atp_period.Level,
x_atp_period.Period_End_Date,
x_atp_period.Backward_Forward_Quantity,
x_atp_period.Cumulative_Quantity
FROM
(
SELECT DEMAND_CLASS col1, --Bug_3693892 added trunc
trunc(SUPPLY_DEMAND_DATE) col2,
DECODE(SUPPLY_DEMAND_TYPE, 2,
DECODE(ORIGINAL_SUPPLY_DEMAND_TYPE,
48, 0,
ALLOCATED_QUANTITY),
0) col3, -- Allocated Supply Quantity
DECODE(SUPPLY_DEMAND_TYPE, 2,
DECODE(ORIGINAL_SUPPLY_DEMAND_TYPE,
48, ALLOCATED_QUANTITY,
0),
0) col4, -- Supply Adjustment Quantity
DECODE(SUPPLY_DEMAND_TYPE, 2, ALLOCATED_QUANTITY, 0) col5, -- Total Supply
DECODE(SUPPLY_DEMAND_TYPE, 1,
DECODE(PF_DISPLAY_FLAG, 1,
--Bug_3693892 added trunc
DECODE(trunc(ORIGINAL_DEMAND_DATE), trunc(SUPPLY_DEMAND_DATE),
ORIGINAL_DEMAND_QUANTITY, 0),
0),
0) col6, -- Total Demand
DECODE(SUPPLY_DEMAND_TYPE, 1, ALLOCATED_QUANTITY, 0) col7, -- Total Bucketed Demand
ALLOCATED_QUANTITY col8 -- Period Quantity
FROM
MRP_ATP_DETAILS_TEMP
WHERE
SESSION_ID = p_session_id
AND RECORD_TYPE = p_record_type
UNION ALL
SELECT DEMAND_CLASS col1,
trunc(ORIGINAL_DEMAND_DATE) col2, --Bug_3693892 added trunc
0 col3, -- Allocated Supply Quantity
0 col4, -- Supply Adjustment Quantity
0 col5, -- Total Supply
ORIGINAL_DEMAND_QUANTITY col6, -- Total Demand
0 col7, -- Total Bucketed Demand
0 col8 -- Period Quantity
FROM
MRP_ATP_DETAILS_TEMP
WHERE
SESSION_ID = p_session_id
AND RECORD_TYPE = p_record_type
AND SUPPLY_DEMAND_TYPE = 1
AND PF_DISPLAY_FLAG = 1
AND trunc(SUPPLY_DEMAND_DATE) <> trunc(ORIGINAL_DEMAND_DATE) --Bug_3693892 added trunc
) final
GROUP BY
final.col1,
final.col2,
p_inv_item_id,
p_org_id,
p_instance_id,
p_scenario_id,
p_level_id
ORDER BY
final.col1,
final.col2
;
SELECT
final.col1,
final.col2,
SUM(final.col3),
SUM(final.col4),
SUM(final.col5),
SUM(final.col6),
p_inv_item_id,
p_org_id,
p_instance_id,
p_scenario_id,
p_level_id,
null,
0,
0,
final.col7,
SUM(final.col8),
SUM(final.col9),
SUM(final.col10),
SUM(final.col11),
final.col12
BULK COLLECT INTO
x_atp_period.Demand_Class,
x_atp_period.Period_Start_Date,
x_atp_period.Total_Supply_Quantity,
x_atp_period.Total_Demand_Quantity,
x_atp_period.Total_Bucketed_Demand_Quantity,
x_atp_period.Period_Quantity,
x_atp_period.Inventory_Item_Id,
x_atp_period.Organization_Id,
x_atp_period.Identifier1,
x_atp_period.Scenario_Id,
x_atp_period.Level,
x_atp_period.Period_End_Date,
x_atp_period.Cumulative_Quantity,
x_atp_period.Demand_Adjustment_Quantity,
x_atp_period.Identifier2,
x_atp_period.Unallocated_Supply_Quantity,
x_atp_period.Unallocated_Demand_Quantity,
x_atp_period.Unalloc_Bucketed_Demand_Qty,
x_atp_period.Unallocated_Net_Quantity,
x_atp_period.Identifier4
FROM
(
SELECT DEMAND_CLASS col1,
trunc(SUPPLY_DEMAND_DATE) col2, --Bug_3693892 added trunc
DECODE(SUPPLY_DEMAND_TYPE, 2, ALLOCATED_QUANTITY, 0) col3,
DECODE(SUPPLY_DEMAND_TYPE, 1,
DECODE(PF_DISPLAY_FLAG, 1,
--Bug_3693892 added trunc
DECODE(trunc(ORIGINAL_DEMAND_DATE), trunc(SUPPLY_DEMAND_DATE),
ORIGINAL_DEMAND_QUANTITY, 0),
0),
0) col4, -- Total Demand
DECODE(SUPPLY_DEMAND_TYPE, 1, ALLOCATED_QUANTITY, 0) col5, -- Total Bucketed Demand
ALLOCATED_QUANTITY col6,
IDENTIFIER2 col7,
DECODE(SUPPLY_DEMAND_TYPE, 2, UNALLOCATED_QUANTITY, 0) col8,
DECODE(SUPPLY_DEMAND_TYPE, 1,
DECODE(PF_DISPLAY_FLAG, 1,
--Bug_3693892 added trunc
DECODE(trunc(ORIGINAL_DEMAND_DATE), trunc(SUPPLY_DEMAND_DATE),
SUPPLY_DEMAND_QUANTITY, 0),
0),
0) col9, -- Unallocated Demand
DECODE(SUPPLY_DEMAND_TYPE, 1, UNALLOCATED_QUANTITY, 0) col10, -- Unallocated Bucketed Demand
UNALLOCATED_QUANTITY col11, -- Unallocated Net
IDENTIFIER4 col12
FROM MRP_ATP_DETAILS_TEMP
WHERE SESSION_ID = p_session_id
AND RECORD_TYPE = p_record_type
UNION ALL
SELECT DEMAND_CLASS col1,
trunc(ORIGINAL_DEMAND_DATE) col2, --Bug_3693892 added trunc
0 col3,
ORIGINAL_DEMAND_QUANTITY col4, -- Total Demand
0 col5,
0 col6,
IDENTIFIER2 col7,
0 col8, -- Period Quantity
SUPPLY_DEMAND_QUANTITY col9,
0 col10,
0 col11,
IDENTIFIER4 col12
FROM
MRP_ATP_DETAILS_TEMP
WHERE
SESSION_ID = p_session_id
AND RECORD_TYPE = p_record_type
AND SUPPLY_DEMAND_TYPE = 1
AND PF_DISPLAY_FLAG = 1
AND trunc(SUPPLY_DEMAND_DATE) <> trunc(ORIGINAL_DEMAND_DATE) --Bug_3693892 added trunc
) final
GROUP BY
final.col1,
final.col2,
p_inv_item_id,
p_org_id,
p_instance_id,
p_scenario_id,
p_level_id,
final.col7,
final.col12
ORDER BY
final.col7 asc,
final.col12 desc,
final.col1 asc,
final.col2
;
SELECT
final.col1,
final.col2,
SUM(final.col3),
SUM(final.col4),
SUM(final.col5),
SUM(final.col6),
p_inv_item_id,
p_org_id,
p_instance_id,
p_scenario_id,
p_level_id,
null,
0,
0,
final.col7,
final.col8,
final.col9,
final.col10,
SUM(final.col11),
SUM(final.col12),
SUM(final.col13),
SUM(final.col14),
final.col15
BULK COLLECT INTO
x_atp_period.Demand_Class,
x_atp_period.Period_Start_Date,
x_atp_period.Total_Supply_Quantity,
x_atp_period.Total_Demand_Quantity,
x_atp_period.Total_Bucketed_Demand_Quantity,
x_atp_period.Period_Quantity,
x_atp_period.Inventory_Item_Id,
x_atp_period.Organization_Id,
x_atp_period.Identifier1,
x_atp_period.Scenario_Id,
x_atp_period.Level,
x_atp_period.Period_End_Date,
x_atp_period.Cumulative_Quantity,
x_atp_period.Demand_Adjustment_Quantity,
x_atp_period.Identifier2,
x_atp_period.Identifier4,
x_atp_period.Class,
x_atp_period.Customer_Id,
x_atp_period.Unallocated_Supply_Quantity,
x_atp_period.Unallocated_Demand_Quantity,
x_atp_period.Unalloc_Bucketed_Demand_Qty,
x_atp_period.Unallocated_Net_Quantity,
x_atp_period.Customer_Site_Id
FROM
(
SELECT DEMAND_CLASS col1, --Bug_3693892 added trunc
trunc(SUPPLY_DEMAND_DATE) col2,
DECODE(SUPPLY_DEMAND_TYPE, 2, ALLOCATED_QUANTITY, 0) col3,
DECODE(SUPPLY_DEMAND_TYPE, 1,
DECODE(PF_DISPLAY_FLAG, 1,
--Bug_3693892 added trunc
DECODE(trunc(ORIGINAL_DEMAND_DATE), trunc(SUPPLY_DEMAND_DATE),
ORIGINAL_DEMAND_QUANTITY, 0),
0),
0) col4, -- Total Demand
DECODE(SUPPLY_DEMAND_TYPE, 1, ALLOCATED_QUANTITY, 0) col5, -- Total Bucketed Demand
ALLOCATED_QUANTITY col6,
IDENTIFIER2 col7,
IDENTIFIER4 col8,
CLASS col9,
CUSTOMER_ID col10,
DECODE(SUPPLY_DEMAND_TYPE, 2, UNALLOCATED_QUANTITY, 0) col11,
DECODE(SUPPLY_DEMAND_TYPE, 1,
DECODE(PF_DISPLAY_FLAG, 1,
--Bug_3693892 added trunc
DECODE(trunc(ORIGINAL_DEMAND_DATE), trunc(SUPPLY_DEMAND_DATE),
SUPPLY_DEMAND_QUANTITY, 0),
0),
0) col12, -- Unallocated Demand
DECODE(SUPPLY_DEMAND_TYPE, 1, UNALLOCATED_QUANTITY, 0) col13, -- Unallocated Bucketed Demand
UNALLOCATED_QUANTITY col14, -- Unallocated Net
CUSTOMER_SITE_ID col15
FROM MRP_ATP_DETAILS_TEMP
WHERE SESSION_ID = p_session_id
AND RECORD_TYPE = p_record_type
UNION ALL
SELECT DEMAND_CLASS col1,
trunc(ORIGINAL_DEMAND_DATE) col2, --Bug_3693892 added trunc
0 col3,
ORIGINAL_DEMAND_QUANTITY col4, -- Total Demand
0 col5,
0 col6,
IDENTIFIER2 col7,
IDENTIFIER4 col8,
CLASS col9,
CUSTOMER_ID col10,
0 col11,
SUPPLY_DEMAND_QUANTITY col12,
0 col13,
0 col14,
CUSTOMER_SITE_ID col15
FROM
MRP_ATP_DETAILS_TEMP
WHERE
SESSION_ID = p_session_id
AND RECORD_TYPE = p_record_type
AND SUPPLY_DEMAND_TYPE = 1
AND PF_DISPLAY_FLAG = 1
AND trunc(SUPPLY_DEMAND_DATE) <> trunc(ORIGINAL_DEMAND_DATE) --Bug_3693892 added trunc
) final
GROUP BY
final.col1,
final.col2,
p_inv_item_id,
p_org_id,
p_instance_id,
p_scenario_id,
p_level_id,
final.col7,
final.col8,
final.col9,
final.col10,
final.col15
ORDER BY
trunc(final.col7,-3), -- Customer class priority
final.col9, -- Customer class
trunc(final.col7,-2), -- Customer priority
final.col10, -- Customer
final.col7, -- Customer site priority
final.col15,
final.col2
;
SELECT DECODE(i2.bom_item_type,
5, DECODE(i2.atp_flag,
'N', i1.sr_inventory_item_id,
i2.sr_inventory_item_id),
i1.sr_inventory_item_id
)
INTO l_pf_atp_item_id
FROM msc_system_items i2,
msc_system_items i1
WHERE i1.sr_inventory_item_id = p_inventory_item_id
AND i1.organization_id = p_organization_id
AND i1.plan_id = p_plan_id
AND i1.sr_instance_id = p_instance_id
AND i2.inventory_item_id = DECODE(i1.product_family_id,
NULL, i1.inventory_item_id,
-23453, i1.inventory_item_id,
i1.product_family_id)
AND i2.organization_id = i1.organization_id
AND i2.sr_instance_id = i1.sr_instance_id
AND i2.plan_id = i1.plan_id;
SELECT i.aggregate_time_fence_date
INTO l_atf_date
FROM msc_system_items i
WHERE i.plan_id = p_plan_id
AND i.sr_instance_id = p_instance_id
AND i.organization_id = p_organization_id
AND i.sr_inventory_item_id = p_inventory_item_id;
SELECT DECODE(r.aggregate_time_fence_code,
1, NULL,
2, i2.demand_time_fence_days,
3, i2.planning_time_fence_days,
4, r.aggregate_time_fence
)
INTO l_atf_days
FROM msc_system_items i2,
msc_system_items i1,
msc_atp_rules r,
msc_trading_partners tp
WHERE i1.inventory_item_id = p_inventory_item_id
AND i1.organization_id = p_organization_id
AND i1.plan_id = -1
AND i1.sr_instance_id = p_instance_id
AND i2.inventory_item_id = NVL(i1.product_family_id,
i1.inventory_item_id)
AND i2.organization_id = i1.organization_id
AND i2.sr_instance_id = i1.sr_instance_id
AND i2.plan_id = i1.plan_id
AND i2.bom_item_type = 5
AND i2.atp_flag = 'Y'
AND tp.sr_tp_id = i2.organization_id
AND tp.sr_instance_id = i2.sr_instance_id
AND tp.partner_type = 3
AND r.sr_instance_id = tp.sr_instance_id
AND r.rule_id = NVL(i2.atp_rule_id, tp.default_atp_rule_id);
SELECT DECODE(i2.bom_item_type,
5, DECODE(i2.atp_flag,
'N', i1.inventory_item_id,
i2.inventory_item_id),
i1.inventory_item_id
),
DECODE(i2.bom_item_type,
5, DECODE(i2.atp_flag,
'N', i1.sr_inventory_item_id,
i2.sr_inventory_item_id),
i1.sr_inventory_item_id
),
i1.aggregate_time_fence_date,
i2.item_name --bug3700564
INTO p_family_id,
p_sr_family_id,
p_atf_date,
p_family_name --bug3700564
FROM msc_system_items i2,
msc_system_items i1
WHERE i1.inventory_item_id = p_inventory_item_id
AND i1.organization_id = p_organization_id
AND i1.plan_id = p_plan_id
AND i1.sr_instance_id = p_instance_id
AND i2.inventory_item_id = DECODE(i1.product_family_id,
NULL, i1.inventory_item_id,
-23453, i1.inventory_item_id,
i1.product_family_id)
AND i2.organization_id = i1.organization_id
AND i2.sr_instance_id = i1.sr_instance_id
AND i2.plan_id = i1.plan_id;
SELECT i1.inventory_item_id,
i1.sr_inventory_item_id,
i1.aggregate_time_fence_date,
i1.item_name
INTO p_family_id,
p_sr_family_id,
p_atf_date,
p_family_name
FROM msc_system_items i1
WHERE i1.inventory_item_id = p_inventory_item_id
AND i1.organization_id = p_organization_id
AND i1.plan_id = p_plan_id
AND i1.sr_instance_id = p_instance_id;
| o Logic to select plan is as follows:
| -
+---------------------------------------------------------------------------*/
PROCEDURE Get_PF_Plan_Info(
p_instance_id IN NUMBER,
p_member_item_id IN NUMBER,
p_family_item_id IN NUMBER,
p_org_id IN NUMBER,
p_demand_class IN VARCHAR2,
p_atf_date OUT NOCOPY DATE,
p_error_code OUT NOCOPY NUMBER,
x_return_status OUT NOCOPY VARCHAR2,
p_parent_plan_id IN NUMBER DEFAULT NULL --bug3510475
) IS
-- local variables
BEGIN
IF PG_DEBUG in ('Y', 'C') THEN
msc_sch_wb.atp_debug('*********Begin procedure Get_PF_Plan_Info ********');
SELECT c2.calendar_date,i2.organization_id,i2.sr_instance_id,i2.inventory_item_id
BULK COLLECT INTO l_atf_date,l_organization_id,l_sr_instance_id,l_inventory_item_id
FROM msc_plans mp,
msc_plan_organizations po,
msc_system_items i2,
msc_trading_partners tp,
msc_atp_rules r,
msc_calendar_dates c1,
msc_calendar_dates c2
WHERE mp.plan_id = p_plan_id
AND po.plan_id = mp.plan_id
AND i2.organization_id = po.organization_id
AND i2.sr_instance_id = po.sr_instance_id
AND i2.plan_id = po.plan_id
AND i2.bom_item_type = 5
AND i2.atp_flag = 'Y'
AND tp.sr_tp_id = i2.organization_id
AND tp.sr_instance_id = i2.sr_instance_id
AND tp.partner_type = 3
AND r.sr_instance_id = tp.sr_instance_id
AND r.rule_id = NVL(i2.atp_rule_id, tp.default_atp_rule_id)
AND c1.sr_instance_id = r.sr_instance_id
AND c1.calendar_date = trunc(mp.plan_start_date)
AND c1.calendar_code = tp.calendar_code
AND c1.exception_set_id = -1
AND c2.sr_instance_id = c1.sr_instance_id
AND c2.seq_num = c1.next_seq_num +
DECODE(r.aggregate_time_fence_code,
1, NULL,
2, i2.demand_time_fence_days,
3, i2.planning_time_fence_days,
4, r.aggregate_time_fence
)
AND c2.calendar_code = c1.calendar_code
AND c2.exception_set_id = -1;
UPDATE msc_system_items i
SET aggregate_time_fence_date = l_atf_date(j)
WHERE i.plan_id = p_plan_id
AND i.ORGANIZATION_ID = l_organization_id(j)
AND i.SR_INSTANCE_ID = l_sr_instance_id(j)
AND i.inventory_item_id = l_inventory_item_id(j);
UPDATE msc_system_items i
SET aggregate_time_fence_date = l_atf_date(k)
WHERE i.plan_id = p_plan_id
AND i.ORGANIZATION_ID = l_organization_id(k)
AND i.SR_INSTANCE_ID = l_sr_instance_id(k)
AND i.product_family_id = l_inventory_item_id(k);
UPDATE msc_system_items i
SET aggregate_time_fence_date =
(SELECT c2.calendar_date
FROM msc_calendar_dates c2,
msc_calendar_dates c1,
msc_atp_rules r,
msc_trading_partners tp,
msc_plans mp,
msc_system_items i2
WHERE i2.inventory_item_id = i.inventory_item_id
AND i2.organization_id = i.organization_id
AND i2.sr_instance_id = i.sr_instance_id
AND i2.plan_id = -1
AND tp.sr_tp_id = i2.organization_id
AND tp.sr_instance_id = i2.sr_instance_id
AND tp.partner_type = 3
AND mp.plan_id = p_plan_id
AND r.sr_instance_id = tp.sr_instance_id
AND r.rule_id = NVL(i2.atp_rule_id, tp.default_atp_rule_id)
AND c1.sr_instance_id = r.sr_instance_id
AND c1.calendar_date = mp.plan_start_date
AND c1.calendar_code = tp.calendar_code
AND c1.exception_set_id = -1
AND c2.sr_instance_id = c1.sr_instance_id
AND c2.seq_num = c1.next_seq_num +
DECODE(r.aggregate_time_fence_code,
1, NULL,
2, i2.demand_time_fence_days,
3, i2.planning_time_fence_days,
4, r.aggregate_time_fence
)
AND c2.calendar_code = c1.calendar_code
AND c2.exception_set_id = -1
)
WHERE i.plan_id = p_plan_id
AND i.bom_item_type = 5
AND i.atp_flag = 'Y';
UPDATE msc_system_items i
SET aggregate_time_fence_date =
(SELECT i2.aggregate_time_fence_date
FROM msc_system_items i2
WHERE i2.inventory_item_id = i.product_family_id
AND i2.sr_instance_id = i.sr_instance_id
AND i2.organization_id = i.organization_id
AND i2.plan_id = i.plan_id
AND i2.aggregate_time_fence_date is not null
)
WHERE i.plan_id = p_plan_id
AND i.inventory_item_id <> DECODE(i.product_family_id,
NULL, i.inventory_item_id,
-23453, i.inventory_item_id,
i.product_family_id)
AND i.bom_item_type <> 5
AND i.atp_flag = 'Y'
AND EXISTS (SELECT 1
FROM msc_system_items i2
WHERE i2.inventory_item_id = i.product_family_id
AND i2.sr_instance_id = i.sr_instance_id
AND i2.organization_id = i.organization_id
AND i2.plan_id = i.plan_id
AND i2.aggregate_time_fence_date is not null
);
l_insert_stmt VARCHAR2(8000);
insert into msc_alloc_temp(
transaction_id,
demand_class,
supply_demand_quantity
)
(select sup.transaction_id,
decode(d1.inventory_item_id, NULL, '-2', d1.demand_class),
sum(peg1.allocated_quantity)
from
(select /*+ NO_MERGE */ distinct d.disposition_id transaction_id --13021736 perf issue
from msc_demands d,
msc_system_items msi
where msi.plan_id = p_plan_id
and msi.bom_item_type <> 5
and NVL(msi.product_family_id, -23453) <> -23453 -- Bug 3629191
--and msi.product_family_id is not null
and msi.atp_flag = 'Y'
and d.inventory_item_id = msi.inventory_item_id
and d.organization_id = msi.organization_id
and d.sr_instance_id = msi.sr_instance_id
and d.plan_id = msi.plan_id
and d.origination_type = 22
) sup,
msc_full_pegging peg1,
msc_demands d1
where peg1.plan_id = p_plan_id
and peg1.pegging_id = peg1.end_pegging_id
and peg1.transaction_id = sup.transaction_id
and d1.plan_id (+) = peg1.plan_id
and d1.inventory_item_id (+) = peg1.inventory_item_id
and d1.organization_id (+) = peg1.organization_id
and d1.sr_instance_id (+) = peg1.sr_instance_id
and d1.demand_id (+) = peg1.demand_id
and d1.origination_type (+) not in (6, 10, 30)
group by
sup.transaction_id,
decode(d1.inventory_item_id, NULL, '-2', d1.demand_class)
);
/* update msc_alloc_temp mat1
set mat1.allocation_percent =
mat1.supply_demand_quantity/(select sum(mat2.supply_demand_quantity)
from msc_alloc_temp mat2
where mat2.transaction_id = mat1.transaction_id
); */
update msc_alloc_temp mat1
set mat1.allocation_percent =
(select mat1.supply_demand_quantity/sum(mat2.supply_demand_quantity)
from msc_alloc_temp mat2
where mat2.transaction_id = mat1.transaction_id
);
| o Calls private procedure Update_Pf_Display_Flag procedure to update
| Pf_Display_Flag to handle scenario when a demand on one side of ATF is
| satisfied totally from supplies on the other side of ATF.
+-----------------------------------------------------------------------------------*/
PROCEDURE Pf_Post_Plan_Proc(
ERRBUF OUT NOCOPY VARCHAR2,
RETCODE OUT NOCOPY NUMBER,
p_plan_id IN NUMBER,
p_demand_priority IN VARCHAR2
)
IS
-- local variables
G_ERROR NUMBER := 1;
l_insert_stmt VARCHAR2(8000);
SELECT NVL(summary_flag,1), compile_designator
INTO l_summary_flag, l_plan_name
FROM msc_plans
WHERE plan_id = p_plan_id;
SELECT a.oracle_username,
sysdate,
FND_GLOBAL.USER_ID
INTO l_msc_schema,
l_sysdate,
l_user_id
FROM fnd_oracle_userid a,
fnd_product_installations b
WHERE a.oracle_id = b.oracle_id
AND b.application_id = 724;
SELECT count(*)
INTO l_count
FROM all_tab_partitions
WHERE table_name = l_table_name
AND partition_name = l_partition_name
AND table_owner = l_msc_schema;
update msc_plans
set summary_flag = 2
where plan_id = p_plan_id;
SELECT NVL(pre_alloc_hash_size, -1),
NVL(pre_alloc_sort_size, -1),
NVL(pre_alloc_parallel_degree, 1)
INTO l_hash_size,
l_sort_size,
l_parallel_degree
FROM msc_atp_parameters
WHERE rownum = 1;
SELECT t.tablespace_name, NVL(i.def_tablespace_name, t.tablespace_name)
INTO l_tbspace, l_ind_tbspace
FROM all_tab_partitions t,
all_part_indexes i
WHERE t.table_owner = l_msc_schema
AND t.table_name = 'MSC_ALLOC_DEMANDS'
AND t.partition_name = 'ALLOC_DEMANDS_' || to_char(l_plan_id)
AND i.owner (+) = t.table_owner
AND i.table_name (+) = t.table_name
AND rownum = 1;
l_insert_stmt := 'CREATE TABLE ' || l_alloc_temp_table || '(
PEGGING_ID NUMBER,
DEMAND_CLASS VARCHAR2(30),
ALLOCATION_PERCENT NUMBER)
TABLESPACE ' || l_tbspace || '
PCTFREE 0 STORAGE(INITIAL 40K NEXT 5M PCTINCREASE 0)';
STATEMENT => l_insert_stmt,
OBJECT_NAME => l_alloc_temp_table);
STATEMENT => l_insert_stmt,
OBJECT_NAME => l_alloc_temp_table);
l_insert_stmt := 'insert into '|| l_alloc_temp_table ||'(
pegging_id,
demand_class,
allocation_percent
)
(select peg1.pegging_id,
:l_excess_dc,
1
from msc_full_pegging peg1
where peg1.plan_id = :p_plan_id
and peg1.pegging_id = peg1.end_pegging_id
and peg1.demand_id in (-1, -2)
UNION ALL
select peg1.pegging_id,
decode(mat.transaction_id, NULL, d.demand_class,
mat.demand_class),
decode(mat.transaction_id, NULL, 1,
mat.allocation_percent)
from msc_full_pegging peg1,
msc_demands d,
msc_alloc_temp mat
where peg1.plan_id = :p_plan_id
and peg1.pegging_id = peg1.end_pegging_id
and peg1.demand_id = d.demand_id
and peg1.plan_id = d.plan_id
and d.disposition_id = mat.transaction_id (+)
)';
msc_util.msc_log(l_insert_stmt);
DBMS_SQL.PARSE(cur_handler, l_insert_stmt, DBMS_SQL.NATIVE);
msc_util.msc_log('before deleteing data from the table');
DELETE MSC_ALLOC_DEMANDS where plan_id = p_plan_id;
DELETE MSC_ALLOC_SUPPLIES where plan_id = p_plan_id;
msc_util.msc_log('after inserting item data into MSC_ALLOC_DEMANDS tables');
msc_util.msc_log('after inserting item data into MSC_ALLOC_SUPPLIES tables');
msc_util.msc_log('not a shared plan partition, insert data into temp tables');
SELECT t.tablespace_name, NVL(i.def_tablespace_name, t.tablespace_name)
INTO l_tbspace, l_ind_tbspace
FROM all_tab_partitions t,
all_part_indexes i
WHERE t.table_owner = l_msc_schema
AND t.table_name = 'MSC_ALLOC_DEMANDS'
AND t.partition_name = 'ALLOC_DEMANDS_' || to_char(l_plan_id)
AND i.owner (+) = t.table_owner
AND i.table_name (+) = t.table_name
AND rownum = 1;
l_insert_stmt := 'CREATE TABLE ' || l_temp_table
|| ' TABLESPACE ' || l_tbspace
|| ' PCTFREE 0 STORAGE(INITIAL 40K NEXT 5M PCTINCREASE 0)'
|| ' as select * from MSC_ALLOC_DEMANDS where 1=2 ';
l_insert_stmt := 'CREATE TABLE ' || l_temp_table || '(
PLAN_ID NUMBER NOT NULL,
INVENTORY_ITEM_ID NUMBER NOT NULL,
ORGANIZATION_ID NUMBER NOT NULL,
SR_INSTANCE_ID NUMBER NOT NULL,
DEMAND_CLASS VARCHAR2(30), --bug3272444
DEMAND_DATE DATE NOT NULL,
PARENT_DEMAND_ID NUMBER NOT NULL,
ALLOCATED_QUANTITY NUMBER NOT NULL,
ORIGINATION_TYPE NUMBER NOT NULL,
ORDER_NUMBER VARCHAR2(62),
SALES_ORDER_LINE_ID NUMBER,
OLD_DEMAND_DATE DATE,
OLD_ALLOCATED_QUANTITY NUMBER,
CREATED_BY NUMBER NOT NULL,
CREATION_DATE DATE NOT NULL,
LAST_UPDATED_BY NUMBER NOT NULL,
LAST_UPDATE_DATE DATE NOT NULL,
DEMAND_QUANTITY NUMBER,
PF_DISPLAY_FLAG NUMBER,
ORIGINAL_ITEM_ID NUMBER,
ORIGINAL_ORIGINATION_TYPE NUMBER,
ORIGINAL_DEMAND_DATE DATE,
SOURCE_ORGANIZATION_ID NUMBER, --bug3272444
USING_ASSEMBLY_ITEM_ID NUMBER, --bug3272444
CUSTOMER_ID NUMBER,
SHIP_TO_SITE_ID NUMBER,
REFRESH_NUMBER NUMBER, --bug3272444
OLD_REFRESH_NUMBER NUMBER, --bug3272444
DEMAND_SOURCE_TYPE NUMBER, --cmro
REQUEST_DATE DATE) --bug3263368
TABLESPACE ' || l_tbspace || '
PCTFREE 0 STORAGE(INITIAL 40K NEXT 5M PCTINCREASE 0)';
STATEMENT => l_insert_stmt,
OBJECT_NAME => l_temp_table);
STATEMENT => l_insert_stmt,
OBJECT_NAME => l_temp_table);
msc_util.msc_log('after inserting item data into MSC_TEMP_ALLOC_DEMANDS table');
SELECT t.tablespace_name, NVL(i.def_tablespace_name, t.tablespace_name)
INTO l_tbspace, l_ind_tbspace
FROM all_tab_partitions t,
all_part_indexes i
WHERE t.table_owner = l_msc_schema
AND t.table_name = 'MSC_ALLOC_SUPPLIES'
AND t.partition_name = 'ALLOC_SUPPLIES_' || to_char(l_plan_id)
AND i.owner (+) = t.table_owner
AND i.table_name (+) = t.table_name
AND rownum = 1;
l_insert_stmt := 'CREATE TABLE ' || l_temp_table
|| ' TABLESPACE ' || l_tbspace
|| ' PCTFREE 0 STORAGE(INITIAL 40K NEXT 5M PCTINCREASE 0)'
|| ' as select * from msc_alloc_supplies where 1=2 ';
l_insert_stmt := 'CREATE TABLE ' || l_temp_table || '(
PLAN_ID NUMBER NOT NULL,
INVENTORY_ITEM_ID NUMBER NOT NULL,
ORGANIZATION_ID NUMBER NOT NULL,
SR_INSTANCE_ID NUMBER NOT NULL,
DEMAND_CLASS VARCHAR2(30) , --bug3272444
SUPPLY_DATE DATE NOT NULL,
PARENT_TRANSACTION_ID NUMBER NOT NULL,
ALLOCATED_QUANTITY NUMBER NOT NULL,
ORDER_TYPE NUMBER NOT NULL,
ORDER_NUMBER VARCHAR2(240),
SCHEDULE_DESIGNATOR_ID NUMBER,
SALES_ORDER_LINE_ID NUMBER,
OLD_SUPPLY_DATE DATE,
OLD_ALLOCATED_QUANTITY NUMBER,
STEALING_FLAG NUMBER,
CREATED_BY NUMBER NOT NULL,
CREATION_DATE DATE NOT NULL,
LAST_UPDATED_BY NUMBER NOT NULL,
LAST_UPDATE_DATE DATE NOT NULL,
FROM_DEMAND_CLASS VARCHAR2(80),
SUPPLY_QUANTITY NUMBER,
ORIGINAL_ORDER_TYPE NUMBER, --bug3272444
ORIGINAL_ITEM_ID NUMBER, --bug3272444
CUSTOMER_ID NUMBER,
SHIP_TO_SITE_ID NUMBER,
REFRESH_NUMBER NUMBER, --bug3272444
OLD_REFRESH_NUMBER NUMBER, --bug3272444
ATO_MODEL_LINE_ID NUMBER,
--ATO_MODEL_LINE_ID NUMBER) --
DEMAND_SOURCE_TYPE NUMBER) --cmro
TABLESPACE ' || l_tbspace || '
PCTFREE 0 STORAGE(INITIAL 40K NEXT 5M PCTINCREASE 0)';
STATEMENT => l_insert_stmt,
OBJECT_NAME => l_temp_table);
STATEMENT => l_insert_stmt,
OBJECT_NAME => l_temp_table);
msc_util.msc_log('after inserting item data into MSC_TEMP_ALLOC_SUPPLIES table');
/* Call Update_Pf_Display_Flags to update Pf_Display_Flag in msc_alloc_demands*/
Update_Pf_Display_Flag(p_plan_id, l_return_status);
msc_util.msc_log('Pf_Post_Plan_Proc: ' || 'Error occured in procedure Update_Pf_Display_Flag');
update msc_plans
set summary_flag = 3
where plan_id = p_plan_id;
update msc_plans
set summary_flag = 1
where plan_id = p_plan_id;
INSERT INTO MSC_ALLOC_DEMANDS(';
INSERT INTO ' || p_temp_table || '(';
last_updated_by,
last_update_date,
request_date)--bug3263368
(
SELECT /*+ use_hash(pegging_v mv) parallel(mv,' || to_char(p_parallel_degree) || ') */
pegging_v.plan_id plan_id,
pegging_v.inventory_item_id,
pegging_v.original_item_id,
pegging_v.organization_id,
pegging_v.sr_instance_id,
NVL(mv.demand_class, :def_num) demand_class,
pegging_v.demand_date,
pegging_v.original_demand_date,
MIN(pegging_v.demand_quantity),
SUM(pegging_v.allocated_quantity),
pegging_v.demand_id,
pegging_v.origination_type,
pegging_v.original_origination_type,
pegging_v.pf_display_flag,
pegging_v.order_number,
pegging_v.sales_order_line_id,
pegging_v.demand_source_type,--cmro
pegging_v.source_organization_id,
pegging_v.using_assembly_item_id,
pegging_v.customer_id,
pegging_v.ship_to_site_id,
:l_user_id,
:l_sysdate,
:l_user_id,
:l_sysdate,
pegging_v.request_date --bug3263368
FROM
(SELECT peg.plan_id plan_id,
decode(msi.aggregate_time_fence_date,
NULL, msi.inventory_item_id,
decode(sign(trunc(s.new_schedule_date) - msi.aggregate_time_fence_date), -- Bug 3450234 use trunc on s.new_schedule_date
1, msi.product_family_id, -- to avoid wrong bucketed demands creation
msi.inventory_item_id)) inventory_item_id,
msi.inventory_item_id original_item_id,
peg.organization_id,
peg.sr_instance_id,
decode(mat.demand_class, :l_excess_dc, decode(:p_excess_supply_by_dc, :l_yes, nvl(s.demand_class, :def_num),
:def_num),
NULL, :def_num,
mat.demand_class) demand_class,
decode(msi.aggregate_time_fence_date,
-- Bug 3574164. DMD_SATISFIED_TIME changed to PLANNED_SHIP_DATE.
NULL, trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE))),
decode(sign(trunc(s.new_schedule_date) - msi.aggregate_time_fence_date),
1, decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))
- msi.aggregate_time_fence_date),
1, trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE))),
msi.aggregate_time_fence_date+1),
decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))
- msi.aggregate_time_fence_date),
1, msi.aggregate_time_fence_date,
trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))))) demand_date,
trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE))) original_demand_date,
decode(d.origination_type, 4, d.daily_demand_rate,
d.using_requirement_quantity) demand_quantity,
decode(msi.aggregate_time_fence_date,
NULL, peg.allocated_quantity,
decode(msi.bom_item_type,
5, 0,
peg.allocated_quantity))* mat.allocation_percent allocated_quantity,
d.demand_id,
decode(msi.aggregate_time_fence_date,
NULL, d.origination_type, 51) origination_type,
d.origination_type original_origination_type,
decode(msi.aggregate_time_fence_date,
NULL, NULL,
decode(sign(trunc(s.new_schedule_date) - msi.aggregate_time_fence_date),
1, decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))
- msi.aggregate_time_fence_date),
1, 1,
NULL),
decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))
- msi.aggregate_time_fence_date),
1, NULL, -- Moved paranthesis from here to end of decode. Identified as part of 3450234 testing.
1))) pf_display_flag,
decode(d.origination_type, 1, to_char(d.disposition_id), d.order_number) order_number,
d.sales_order_line_id,
d.demand_source_type,--cmro
d.source_organization_id,
d.using_assembly_item_id,
d.customer_id,
d.ship_to_site_id,
/* New Allocation logic for time phased ATP */
decode(msi.aggregate_time_fence_date,
NULL, msi.inventory_item_id,
msi.product_family_id) product_family_id ,
decode(d.order_date_type_code,2,d.request_date,
d.request_ship_date)request_date --bug3263368
FROM msc_system_items msi,
msc_demands d,
msc_full_pegging peg,
' || p_alloc_temp_table || ' mat,
msc_supplies s
WHERE msi.plan_id = :p_plan_id
AND msi.atp_flag = :l_yes
AND msi.plan_id = d.plan_id --bug3453289
AND d.inventory_item_id = msi.inventory_item_id
AND d.sr_instance_id = msi.sr_instance_id
AND d.organization_id = msi.organization_id
AND d.origination_type NOT IN (5,7,8,9,11,15,22,28,29,31,70)
AND peg.plan_id = d.plan_id
AND peg.demand_id = d.demand_id
AND peg.sr_instance_id = d.sr_instance_id --bug3453289 MSC_FULL_PEGGING_N2
AND peg.organization_id= d.organization_id --bug3453289 MSC_FULL_PEGGING_N2
AND mat.pegging_id = peg.end_pegging_id
AND s.sr_instance_id = peg.sr_instance_id
AND s.plan_id = peg.plan_id
AND s.transaction_id = peg.transaction_id) pegging_v,
msc_item_hierarchy_mv mv
WHERE pegging_v.product_family_id = mv.inventory_item_id(+)
AND pegging_v.organization_id = mv.organization_id (+)
AND pegging_v.sr_instance_id = mv.sr_instance_id (+)
AND pegging_v.demand_date >= mv.effective_date (+)
AND pegging_v.demand_date <= mv.disable_date (+)
AND pegging_v.demand_class = mv.demand_class (+)
AND mv.level_id (+) = -1
AND pegging_v.allocated_quantity <> 0
GROUP BY
pegging_v.plan_id,
pegging_v.inventory_item_id,
pegging_v.original_item_id,
pegging_v.organization_id,
pegging_v.sr_instance_id,
NVL(mv.demand_class, :def_num),
pegging_v.demand_date,
pegging_v.original_demand_date,
pegging_v.demand_id,
pegging_v.origination_type,
pegging_v.original_origination_type,
pegging_v.pf_display_flag,
pegging_v.order_number,
pegging_v.sales_order_line_id,
pegging_v.demand_source_type,--cmro
pegging_v.source_organization_id,
pegging_v.using_assembly_item_id,
pegging_v.customer_id,
pegging_v.ship_to_site_id,
:l_user_id,
:l_sysdate,
:l_user_id,
:l_sysdate,
pegging_v.request_date)';
last_updated_by,
last_update_date,
request_date)--bug3263368
(SELECT
peg1.plan_id plan_id,
decode(sign(trunc(s.new_schedule_date) - msi.aggregate_time_fence_date), -- Bug 3450234 use trunc on s.new_schedule_date
-- to avoid wrong bucketed demands creation
1, msi.product_family_id,
msi.inventory_item_id) inventory_item_id,
msi.inventory_item_id original_item_id,
peg1.organization_id,
peg1.sr_instance_id,
d.demand_class demand_class,
decode(sign(trunc(s.new_schedule_date) - msi.aggregate_time_fence_date),
1, decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
-- Bug 3574164. DMD_SATISFIED_TIME changed to PLANNED_SHIP_DATE.
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))
- msi.aggregate_time_fence_date),
1, trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE))),
msi.aggregate_time_fence_date+1),
decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))
- msi.aggregate_time_fence_date),
1, msi.aggregate_time_fence_date,
trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE))))) demand_date,
trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE))) original_demand_date,
MIN(decode(d.origination_type, 4, d.daily_demand_rate,
d.using_requirement_quantity)) demand_quantity,
SUM(peg1.allocated_quantity),
d.demand_id,
51 origination_type, -- ATP Bucketed Demand
d.origination_type original_origination_type,
decode(sign(trunc(s.new_schedule_date) - msi.aggregate_time_fence_date),
1, decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
-- Bug 3574164. DMD_SATISFIED_TIME changed to PLANNED_SHIP_DATE.
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))
- msi.aggregate_time_fence_date),
1, 1,
NULL),
decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))
- msi.aggregate_time_fence_date),
1, NULL, -- Moved paranthesis from here to end of decode. Identified as part of 3450234 testing.
1)) pf_display_flag,
decode(d.origination_type, 1, to_char(d.disposition_id), d.order_number) order_number,
d.sales_order_line_id,
d.demand_source_type,--cmro
d.source_organization_id,
d.using_assembly_item_id,
d.customer_id,
d.ship_to_site_id,
:l_user_id,
:l_sysdate,
:l_user_id,
:l_sysdate,
decode(d.order_date_type_code,2,d.request_date,
d.request_ship_date)request_date --bug3263368
FROM msc_full_pegging peg1,
msc_demands d,
msc_supplies s,
msc_system_items msi
WHERE d.demand_id = peg1.demand_id
AND d.plan_id = peg1.plan_id
AND d.sr_instance_id = peg1.sr_instance_id
AND d.organization_id= peg1.organization_id --bug3453289
AND d.origination_type NOT IN (5,7,8,9,11,15,22,28,29,31,70)
AND s.transaction_id = peg1.transaction_id
AND s.plan_id = peg1.plan_id
AND s.sr_instance_id = peg1.sr_instance_id --bug3453289
AND msi.plan_id = d.plan_id
AND msi.inventory_item_id = d.inventory_item_id
AND msi.sr_instance_id = d.sr_instance_id
AND msi.organization_id = d.organization_id
AND msi.aggregate_time_fence_date is not null
AND msi.bom_item_type <> 5
AND msi.plan_id = :p_plan_id
AND msi.atp_flag = :l_yes
GROUP BY
peg1.plan_id,
decode(sign(trunc(s.new_schedule_date) - msi.aggregate_time_fence_date), -- Bug 3450234 use trunc on s.new_schedule_date
-- to avoid wrong bucketed demands creation
1, msi.product_family_id,
msi.inventory_item_id),
msi.inventory_item_id,
peg1.organization_id,
peg1.sr_instance_id,
d.demand_class,
decode(sign(trunc(s.new_schedule_date) - msi.aggregate_time_fence_date),
1, decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
-- Bug 3574164. DMD_SATISFIED_TIME changed to PLANNED_SHIP_DATE.
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))
- msi.aggregate_time_fence_date),
1, trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE))),
msi.aggregate_time_fence_date+1),
decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE))) - msi.aggregate_time_fence_date),
1, msi.aggregate_time_fence_date,
trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE))))),
trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE))),
d.demand_id,
51,
d.origination_type,
decode(sign(trunc(s.new_schedule_date) - msi.aggregate_time_fence_date),
1, decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))
- msi.aggregate_time_fence_date),
1, 1,
NULL),
decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))
- msi.aggregate_time_fence_date),
1, NULL, -- Moved paranthesis from here to end of decode. Identified as part of 3450234 testing.
1)),
decode(d.origination_type, 1, to_char(d.disposition_id), d.order_number),
d.sales_order_line_id,
d.demand_source_type,--cmro
d.source_organization_id,
d.using_assembly_item_id,
d.customer_id,
d.ship_to_site_id,
:l_user_id,
:l_sysdate,
:l_user_id,
:l_sysdate,
decode(d.order_date_type_code,2,d.request_date,
d.request_ship_date))'; --bug3263368
INSERT INTO MSC_ALLOC_SUPPLIES(';
INSERT INTO ' || p_temp_table || '(';
last_updated_by,
last_update_date)
(
SELECT /*+ use_hash(pegging_v mv) parallel(mv,' || to_char(p_parallel_degree) || ') */
pegging_v.plan_id plan_id,
pegging_v.inventory_item_id,
pegging_v.original_item_id,
pegging_v.organization_id,
pegging_v.sr_instance_id,
NVL(mv.demand_class, :def_num) demand_class,
pegging_v.supply_date,
pegging_v.transaction_id,
SUM(pegging_v.allocated_quantity),
MIN(pegging_v.supply_quantity),
pegging_v.order_type,
pegging_v.original_order_type,
pegging_v.order_number,
pegging_v.schedule_designator_id,
pegging_v.customer_id,
pegging_v.ship_to_site_id,
:l_user_id,
:l_sysdate,
:l_user_id,
:l_sysdate
FROM
(SELECT peg.plan_id plan_id,
decode(msi.aggregate_time_fence_date,
NULL, msi.inventory_item_id,
decode(sign(TRUNC(s.new_schedule_date) - msi.aggregate_time_fence_date),
1, msi.product_family_id,
msi.inventory_item_id)) inventory_item_id,
msi.inventory_item_id original_item_id,
peg.organization_id,
peg.sr_instance_id,
decode(mat.demand_class, :l_excess_dc, decode(:p_excess_supply_by_dc, :l_yes, nvl(s.demand_class, :def_num),
:def_num),
NULL, :def_num,
mat.demand_class) demand_class,
TRUNC(s.new_schedule_date) supply_date,
decode(msi.aggregate_time_fence_date,
NULL, peg.allocated_quantity,
decode(msi.bom_item_type,
5, 0,
peg.allocated_quantity))* mat.allocation_percent allocated_quantity,
s.new_order_quantity supply_quantity,
peg.transaction_id,
decode(msi.aggregate_time_fence_date,
NULL, s.order_type, 50) order_type,
s.order_type original_order_type,
s.order_number,
s.schedule_designator_id,
s.customer_id,
s.ship_to_site_id,
decode(msi.aggregate_time_fence_date,
NULL, msi.inventory_item_id,
msi.product_family_id) product_family_id
FROM msc_system_items msi,
msc_supplies s,
msc_full_pegging peg,
' || p_alloc_temp_table || ' mat
WHERE msi.plan_id = :p_plan_id
AND msi.atp_flag = :l_yes
AND s.plan_id = msi.plan_id --bug3453289
AND s.inventory_item_id = msi.inventory_item_id
AND s.sr_instance_id = msi.sr_instance_id
AND s.organization_id = msi.organization_id
AND peg.plan_id = s.plan_id
AND peg.transaction_id = s.transaction_id
AND peg.sr_instance_id = s.sr_instance_id
AND mat.pegging_id = peg.end_pegging_id) pegging_v,
msc_item_hierarchy_mv mv
WHERE pegging_v.product_family_id = mv.inventory_item_id(+)
AND pegging_v.organization_id = mv.organization_id (+)
AND pegging_v.sr_instance_id = mv.sr_instance_id (+)
AND pegging_v.supply_date >= mv.effective_date (+)
AND pegging_v.supply_date <= mv.disable_date (+)
AND pegging_v.demand_class = mv.demand_class (+)
AND mv.level_id (+) = -1
AND pegging_v.allocated_quantity <> 0
GROUP BY
pegging_v.plan_id,
pegging_v.inventory_item_id,
pegging_v.original_item_id,
pegging_v.organization_id,
pegging_v.sr_instance_id,
NVL(mv.demand_class, :def_num),
pegging_v.supply_date,
pegging_v.transaction_id,
pegging_v.order_type,
pegging_v.original_order_type,
pegging_v.order_number,
pegging_v.schedule_designator_id,
pegging_v.customer_id,
pegging_v.ship_to_site_id,
:l_user_id,
:l_sysdate,
:l_user_id,
:l_sysdate)';
last_updated_by,
last_update_date)
(
select :p_plan_id,
decode(sign(TRUNC(s.new_schedule_date) - i.aggregate_time_fence_date),
1, i.product_family_id, s.inventory_item_id),
s.inventory_item_id,
s.organization_id,
s.sr_instance_id,
s.demand_class,
TRUNC(s.new_schedule_date),
s.transaction_id,
s.new_order_quantity,
s.new_order_quantity,
50,
s.order_type,
s.order_number,
s.schedule_designator_id,
s.customer_id,
s.ship_to_site_id,
:l_user_id,
:l_sysdate,
:l_user_id,
:l_sysdate
from msc_supplies s,
msc_system_items i
where i.aggregate_time_fence_date is not null
and i.bom_item_type <> 5
and i.plan_id = :p_plan_id
and i.atp_flag = :l_yes
and s.plan_id = i.plan_id --bug3453289
and s.inventory_item_id = i.inventory_item_id
and s.organization_id = i.organization_id
and s.sr_instance_id = i.sr_instance_id
and s.plan_id = i.plan_id
)';
/*Private procedures removed for forecast at PF **Will be deleted after code review
/*--Prepare_Demands_Stmt1---------------------------------------------------
| o Called from Pf_Post_Plan_Proc procedure to:
| - Prepare demands stmt for preallocation + bucketting for demands
| pegged to excess/safety stock. (Demand priority AATP)
| : Excess supply by demand class = No
| : Excess supply by demand class = Yes (for project atp)
| - Prepare demands stmt for bucketting. (All PDS ATP scenarios except
| demand priority AATP)
| o Prepares demand stmt for both share plan partition "yes" and "no".
+-------------------------------------------------------------------------*/
/*PROCEDURE Prepare_Demands_Stmt1(
p_share_partition IN VARCHAR2,
p_demand_priority IN VARCHAR2,
p_excess_supply_by_dc IN VARCHAR2,
p_temp_table IN VARCHAR2,
p_parallel_degree IN NUMBER,
x_sql_stmt OUT NOCOPY VARCHAR2,
x_return_status OUT NOCOPY VARCHAR2
)
IS
BEGIN
IF PG_DEBUG in ('Y', 'C') THEN
msc_util.msc_log('Prepare_Demands_Stmt1: ' || 'p_share_partition : ' || p_share_partition);
INSERT INTO MSC_ALLOC_DEMANDS(';
INSERT INTO ' || p_temp_table || '(';
last_updated_by,
last_update_date)
(
SELECT /*+ use_hash(pegging_v mv) parallel(mv,' || to_char(p_parallel_degree) || ') */
/* pegging_v.plan_id plan_id,
pegging_v.inventory_item_id,
pegging_v.original_item_id,
pegging_v.organization_id,
pegging_v.sr_instance_id,
NVL(mv.demand_class, :def_num) demand_class,
pegging_v.demand_date,
pegging_v.original_demand_date,
MIN(pegging_v.demand_quantity),
SUM(pegging_v.allocated_quantity),
pegging_v.demand_id,
pegging_v.origination_type,
pegging_v.original_origination_type,
pegging_v.pf_display_flag,
pegging_v.order_number,
pegging_v.sales_order_line_id,
pegging_v.source_organization_id,
pegging_v.using_assembly_item_id,
pegging_v.customer_id,
pegging_v.ship_to_site_id,
:l_user_id,
:l_sysdate,
:l_user_id,
:l_sysdate
FROM
(SELECT /*+ ordered use_hash(peg2 peg1 d s msi)
parallel(peg2,' || to_char(p_parallel_degree) || ')
parallel(peg1,' || to_char(p_parallel_degree) || ')
parallel(d,' || to_char(p_parallel_degree) || ')
parallel(s,' || to_char(p_parallel_degree) || ')
parallel(msi,' || to_char(p_parallel_degree) || ')
full(peg2) full(peg1) full(d) full(s) full(msi) */
/* peg1.plan_id plan_id,
decode(msi.aggregate_time_fence_date,
NULL, msi.inventory_item_id,
decode(sign(s.new_schedule_date - msi.aggregate_time_fence_date),
1, msi.product_family_id,
msi.inventory_item_id)) inventory_item_id,
msi.inventory_item_id original_item_id,
peg1.organization_id,
peg1.sr_instance_id,
NVL(s.demand_class, :def_num) demand_class,
decode(msi.aggregate_time_fence_date,
NULL, trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE))),
decode(sign(trunc(s.new_schedule_date) - msi.aggregate_time_fence_date),
1, decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))
- msi.aggregate_time_fence_date),
1, trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE))),
msi.aggregate_time_fence_date+1),
decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))
- msi.aggregate_time_fence_date),
1, msi.aggregate_time_fence_date,
trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))))) demand_date,
trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE))) original_demand_date,
decode(d.origination_type, 4, d.daily_demand_rate,
d.using_requirement_quantity) demand_quantity,
decode(msi.aggregate_time_fence_date,
NULL, peg1.allocated_quantity,
decode(msi.bom_item_type,
5, 0,
peg1.allocated_quantity)) allocated_quantity,
d.demand_id,
decode(msi.aggregate_time_fence_date,
NULL, d.origination_type, 51) origination_type,
d.origination_type original_origination_type,
decode(msi.aggregate_time_fence_date,
NULL, NULL,
decode(sign(trunc(s.new_schedule_date) - msi.aggregate_time_fence_date),
1, decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))
- msi.aggregate_time_fence_date),
1, 1,
NULL),
decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))
- msi.aggregate_time_fence_date),
1, NULL),
1)) pf_display_flag,
decode(d.origination_type, 1, to_char(d.disposition_id), d.order_number) order_number,
d.sales_order_line_id,
d.source_organization_id,
d.using_assembly_item_id,
d.customer_id,
d.ship_to_site_id,
/* New Allocation logic for time phased ATP */
/* decode(msi.aggregate_time_fence_date,
NULL, msi.inventory_item_id,
msi.product_family_id) product_family_id
FROM msc_full_pegging peg2,
msc_full_pegging peg1,
msc_demands d,
msc_supplies s,
msc_system_items msi
WHERE peg1.plan_id = :p_plan_id
AND peg2.plan_id = peg1.plan_id
AND peg2.pegging_id = peg1.end_pegging_id
AND peg2.demand_id IN (-1, -2)
AND d.demand_id = peg1.demand_id
AND peg1.plan_id = d.plan_id
AND d.sr_instance_id = peg1.sr_instance_id
AND peg1.sr_instance_id=s.sr_instance_id
AND peg1.plan_id = s.plan_id
AND peg1.transaction_id = s.transaction_id
AND d.origination_type NOT IN (5,7,8,9,11,15,22,28,29,31)
AND msi.plan_id = s.plan_id
AND msi.inventory_item_id = s.inventory_item_id
AND msi.sr_instance_id = s.sr_instance_id
AND msi.organization_id = s.organization_id) pegging_v,
msc_item_hierarchy_mv mv
WHERE pegging_v.product_family_id = mv.inventory_item_id(+)
AND pegging_v.organization_id = mv.organization_id (+)
AND pegging_v.sr_instance_id = mv.sr_instance_id (+)
AND pegging_v.demand_date >= mv.effective_date (+)
AND pegging_v.demand_date <= mv.disable_date (+)
AND pegging_v.demand_class = mv.demand_class (+)
AND mv.level_id (+) = -1
AND pegging_v.allocated_quantity <> 0
GROUP BY
pegging_v.plan_id plan_id,
pegging_v.inventory_item_id,
pegging_v.original_item_id,
pegging_v.organization_id,
pegging_v.sr_instance_id,
NVL(mv.demand_class, :def_num),
pegging_v.demand_date,
pegging_v.original_demand_date,
pegging_v.demand_id,
pegging_v.origination_type,
pegging_v.original_origination_type,
pegging_v.pf_display_flag,
pegging_v.order_number,
pegging_v.sales_order_line_id,
pegging_v.demand_source_type,--cmro
pegging_v.source_organization_id,
pegging_v.using_assembly_item_id,
pegging_v.customer_id,
pegging_v.ship_to_site_id,
:l_user_id,
:l_sysdate,
:l_user_id,
:l_sysdate)';
last_updated_by,
last_update_date)
(
SELECT /*+ ordered use_hash(peg2 peg1 d s msi)
parallel(peg2,' || to_char(p_parallel_degree) || ')
parallel(peg1,' || to_char(p_parallel_degree) || ')
parallel(d,' || to_char(p_parallel_degree) || ')
parallel(s,' || to_char(p_parallel_degree) || ')
parallel(msi,' || to_char(p_parallel_degree) || ')
full(peg2) full(peg1) full(d) full(s) full(msi) */
/* peg1.plan_id plan_id,
decode(msi.aggregate_time_fence_date,
NULL, msi.inventory_item_id,
decode(sign(s.new_schedule_date - msi.aggregate_time_fence_date),
1, msi.product_family_id,
msi.inventory_item_id)) inventory_item_id,
msi.inventory_item_id original_item_id,
peg1.organization_id,
peg1.sr_instance_id,
:def_num demand_class,
decode(msi.aggregate_time_fence_date,
NULL,trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE))),
decode(sign(trunc(s.new_schedule_date) - msi.aggregate_time_fence_date),
1, decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))
- msi.aggregate_time_fence_date),
1,trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE))),
msi.aggregate_time_fence_date+1),
decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))
- msi.aggregate_time_fence_date),
1, msi.aggregate_time_fence_date,
trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))))) demand_date,
trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE))) original_demand_date,
MIN(decode(d.origination_type, 4, d.daily_demand_rate,
d.using_requirement_quantity)) demand_quantity,
SUM(decode(msi.aggregate_time_fence_date,
NULL, peg1.allocated_quantity,
decode(msi.bom_item_type,
5, 0,
peg1.allocated_quantity))) allocated_quantity,
d.demand_id,
decode(msi.aggregate_time_fence_date,
NULL, d.origination_type, 51) origination_type,
d.origination_type original_origination_type,
decode(msi.aggregate_time_fence_date,
NULL, NULL,
decode(sign(trunc(s.new_schedule_date) - msi.aggregate_time_fence_date),
1, decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))
- msi.aggregate_time_fence_date),
1, 1,
NULL),
decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))
- msi.aggregate_time_fence_date),
1, NULL),
1)) pf_display_flag,
decode(d.origination_type, 1, to_char(d.disposition_id), d.order_number) order_number,
d.sales_order_line_id,
d.demand_source_type,--cmro
d.source_organization_id,
d.using_assembly_item_id,
d.customer_id,
d.ship_to_site_id,
:l_user_id,
:l_sysdate,
:l_user_id,
:l_sysdate
FROM msc_full_pegging peg2,
msc_full_pegging peg1,
msc_demands d,
msc_supplies s,
msc_system_items msi
WHERE peg1.plan_id = :p_plan_id
AND peg2.plan_id = peg1.plan_id
AND peg2.pegging_id = peg1.end_pegging_id
AND peg2.demand_id IN (-1, -2)
AND d.demand_id = peg1.demand_id
AND peg1.plan_id = d.plan_id
AND d.sr_instance_id = peg1.sr_instance_id
AND peg1.sr_instance_id=s.sr_instance_id
AND peg1.plan_id = s.plan_id
AND peg1.transaction_id = s.transaction_id
AND d.origination_type NOT IN (5,7,8,9,11,15,22,28,29,31,70)
AND msi.plan_id = s.plan_id
AND msi.inventory_item_id = s.inventory_item_id
AND msi.sr_instance_id = s.sr_instance_id
AND msi.organization_id = s.organization_id
GROUP BY
peg1.plan_id,
decode(msi.aggregate_time_fence_date,
NULL, msi.inventory_item_id,
decode(sign(s.new_schedule_date - msi.aggregate_time_fence_date),
1, msi.product_family_id,
msi.inventory_item_id)),
msi.inventory_item_id,
peg1.organization_id,
peg1.sr_instance_id,
:def_num,
decode(msi.aggregate_time_fence_date,
NULL, trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE))),
decode(sign(trunc(s.new_schedule_date) - msi.aggregate_time_fence_date),
1, decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))
- msi.aggregate_time_fence_date),
1, trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE))),
msi.aggregate_time_fence_date+1),
decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))
- msi.aggregate_time_fence_date),
1, msi.aggregate_time_fence_date,
trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))))),
trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE))),
d.demand_id,
decode(msi.aggregate_time_fence_date,
NULL, d.origination_type, 51),
d.origination_type,
decode(msi.aggregate_time_fence_date,
NULL, NULL,
decode(sign(trunc(s.new_schedule_date) - msi.aggregate_time_fence_date),
1, decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))
- msi.aggregate_time_fence_date),
1, 1,
NULL),
decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))
- msi.aggregate_time_fence_date),
1, NULL),
1)),
decode(d.origination_type, 1, to_char(d.disposition_id), d.order_number),
d.sales_order_line_id,
d.demand_source_type,--cmro
d.source_organization_id,
d.using_assembly_item_id,
d.customer_id,
d.ship_to_site_id,
:l_user_id,
:l_sysdate,
:l_user_id,
:l_sysdate)';
last_updated_by,
last_update_date)
(SELECT
peg1.plan_id plan_id,
decode(sign(s.new_schedule_date - msi.aggregate_time_fence_date),
1, msi.product_family_id,
msi.inventory_item_id) inventory_item_id,
msi.inventory_item_id original_item_id,
peg1.organization_id,
peg1.sr_instance_id,
d.demand_class demand_class,
decode(sign(trunc(s.new_schedule_date) - msi.aggregate_time_fence_date),
1, decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))
- msi.aggregate_time_fence_date),
1, trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE))),
msi.aggregate_time_fence_date+1),
decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))
- msi.aggregate_time_fence_date),
1, msi.aggregate_time_fence_date,
trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE))))) demand_date,
trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE))) original_demand_date,
MIN(decode(d.origination_type, 4, d.daily_demand_rate,
d.using_requirement_quantity)) demand_quantity,
SUM(peg1.allocated_quantity),
d.demand_id,
51 origination_type, -- ATP Bucketed Demand
d.origination_type original_origination_type,
decode(sign(trunc(s.new_schedule_date) - msi.aggregate_time_fence_date),
1, decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))
- msi.aggregate_time_fence_date),
1, 1,
NULL),
decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))
- msi.aggregate_time_fence_date),
1, NULL),
1) pf_display_flag,
decode(d.origination_type, 1, to_char(d.disposition_id), d.order_number) order_number,
d.sales_order_line_id,
d.demand_source_type,--cmro
d.source_organization_id,
d.using_assembly_item_id,
d.customer_id,
d.ship_to_site_id,
:l_user_id,
:l_sysdate,
:l_user_id,
:l_sysdate
FROM msc_full_pegging peg1,
msc_demands d,
msc_supplies s,
msc_system_items msi
WHERE d.demand_id = peg1.demand_id
AND d.plan_id = peg1.plan_id
AND d.sr_instance_id = peg1.sr_instance_id
AND d.origination_type NOT IN (5,7,8,9,11,15,22,28,29,31,70)
AND s.transaction_id = peg1.transaction_id
AND s.plan_id = peg1.plan_id
AND msi.plan_id = d.plan_id
AND msi.inventory_item_id = d.inventory_item_id
AND msi.sr_instance_id = d.sr_instance_id
AND msi.organization_id = d.organization_id
--AND nvl(msi.product_family_id, msi.inventory_item_id)<>msi.inventory_item_id
AND msi.aggregate_time_fence_date is not null
AND msi.bom_item_type <> 5
AND msi.plan_id = :p_plan_id
GROUP BY
peg1.plan_id,
decode(sign(s.new_schedule_date - msi.aggregate_time_fence_date),
1, msi.product_family_id,
msi.inventory_item_id),
msi.inventory_item_id,
peg1.organization_id,
peg1.sr_instance_id,
d.demand_class,
decode(sign(trunc(s.new_schedule_date) - msi.aggregate_time_fence_date),
1, decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))
- msi.aggregate_time_fence_date),
1, trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE))),
msi.aggregate_time_fence_date+1),
decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE))) - msi.aggregate_time_fence_date),
1, msi.aggregate_time_fence_date,
trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE))))),
trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE))),
d.demand_id,
51,
d.origination_type,
decode(sign(trunc(s.new_schedule_date) - msi.aggregate_time_fence_date),
1, decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))
- msi.aggregate_time_fence_date),
1, 1,
NULL),
decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(D.PLANNED_SHIP_DATE,D.USING_ASSEMBLY_DEMAND_DATE),
NVL(D.SCHEDULE_SHIP_DATE,
D.USING_ASSEMBLY_DEMAND_DATE)))
- msi.aggregate_time_fence_date),
1, NULL),
1),
decode(d.origination_type, 1, to_char(d.disposition_id), d.order_number),
d.sales_order_line_id,
d.demand_source_type,--cmro
d.source_organization_id,
d.using_assembly_item_id,
d.customer_id,
d.ship_to_site_id,
:l_user_id,
:l_sysdate,
:l_user_id,
:l_sysdate
)';
INSERT INTO MSC_ALLOC_DEMANDS(';
INSERT INTO ' || p_temp_table || '(';
last_updated_by,
last_update_date)
(
SELECT /*+ use_hash(mv) parallel(mv,' || to_char(p_parallel_degree) || ')
full(peg1.d1) full(peg1.d2) full(peg1.peg1) full(peg1.peg2) full(mv) full(peg1.tp) */
/* pegging_v.plan_id,
pegging_v.inventory_item_id,
pegging_v.original_item_id,
pegging_v.organization_id,
pegging_v.sr_instance_id,
NVL(mv.demand_class, :def_num) demand_class,
pegging_v.demand_date,
pegging_v.original_demand_date,
MIN(pegging_v.demand_quantity),
SUM(pegging_v.allocated_quantity),
pegging_v.parent_demand_id,
pegging_v.origination_type,
pegging_v.original_origination_type,
pegging_v.pf_display_flag,
pegging_v.order_number,
pegging_v.sales_order_line_id,
pegging_v.demand_source_type,--cmro
pegging_v.source_organization_id,
pegging_v.using_assembly_item_id,
pegging_v.customer_id,
pegging_v.ship_to_site_id,
:l_user_id,
:l_sysdate,
:l_user_id,
:l_sysdate
FROM
(SELECT /*+ ordered use_hash(d2 peg2 peg1 tp)
parallel(d2,' || to_char(p_parallel_degree) || ')
parallel(d1,' || to_char(p_parallel_degree) || ')
parallel(peg2,' || to_char(p_parallel_degree) || ')
parallel(peg1,' || to_char(p_parallel_degree) || ')
parallel(tp,' || to_char(p_parallel_degree) || ') */
/* peg2.plan_id plan_id,
decode(sign(s.new_schedule_date - msi.aggregate_time_fence_date),
1, msi.product_family_id,
msi.inventory_item_id) inventory_item_id,
msi.inventory_item_id original_item_id,
peg2.organization_id,
peg2.sr_instance_id,
NVL(d1.demand_class, :def_num) demand_class,
decode(msi.aggregate_time_fence_date,
NULL, trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(d2.PLANNED_SHIP_DATE,d2.USING_ASSEMBLY_DEMAND_DATE),
NVL(d2.SCHEDULE_SHIP_DATE,
d2.USING_ASSEMBLY_DEMAND_DATE))),
decode(sign(trunc(s.new_schedule_date) - msi.aggregate_time_fence_date),
1, decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(d2.PLANNED_SHIP_DATE,d2.USING_ASSEMBLY_DEMAND_DATE),
NVL(d2.SCHEDULE_SHIP_DATE,
d2.USING_ASSEMBLY_DEMAND_DATE))) - msi.aggregate_time_fence_date),
1, trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(d2.PLANNED_SHIP_DATE,d2.USING_ASSEMBLY_DEMAND_DATE),
NVL(d2.SCHEDULE_SHIP_DATE,
d2.USING_ASSEMBLY_DEMAND_DATE))),
msi.aggregate_time_fence_date+1),
decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(d2.PLANNED_SHIP_DATE,d2.USING_ASSEMBLY_DEMAND_DATE),
NVL(d2.SCHEDULE_SHIP_DATE,
d2.USING_ASSEMBLY_DEMAND_DATE)))
- msi.aggregate_time_fence_date),
1, msi.aggregate_time_fence_date,
trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(d2.PLANNED_SHIP_DATE,d2.USING_ASSEMBLY_DEMAND_DATE),
NVL(d2.SCHEDULE_SHIP_DATE,
d2.USING_ASSEMBLY_DEMAND_DATE)))))) demand_date,
trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(d2.PLANNED_SHIP_DATE,d2.USING_ASSEMBLY_DEMAND_DATE),
NVL(d2.SCHEDULE_SHIP_DATE,
d2.USING_ASSEMBLY_DEMAND_DATE))) original_demand_date,
decode(d2.origination_type, 4, d2.daily_demand_rate,
d2.using_requirement_quantity) demand_quantity,
decode(msi.aggregate_time_fence_date,
NULL, peg2.allocated_quantity,
decode(msi.bom_item_type,
5, 0,
peg2.allocated_quantity)) allocated_quantity,
d2.demand_id parent_demand_id,
51 origination_type, -- ATP Bucketed Demand
d2.origination_type original_origination_type,
decode(sign(trunc(s.new_schedule_date) - msi.aggregate_time_fence_date),
1, decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(d2.PLANNED_SHIP_DATE,d2.USING_ASSEMBLY_DEMAND_DATE),
NVL(d2.SCHEDULE_SHIP_DATE,
d2.USING_ASSEMBLY_DEMAND_DATE)))
- msi.aggregate_time_fence_date),
1, 1,
NULL),
decode(sign(trunc(DECODE('||MSC_ATP_PVT.G_HP_DEMAND_BUCKETING_PREF||',
2, NVL(d2.PLANNED_SHIP_DATE,d2.USING_ASSEMBLY_DEMAND_DATE),
NVL(d2.SCHEDULE_SHIP_DATE,
d2.USING_ASSEMBLY_DEMAND_DATE)))
- msi.aggregate_time_fence_date),
1, NULL),
1) pf_display_flag,
decode(d2.origination_type, 1, to_char(d2.disposition_id), d2.order_number) order_number,
d2.sales_order_line_id,
d2.demand_source_type,--cmro
d2.source_organization_id,
d2.using_assembly_item_id,
d2.customer_id,
d2.ship_to_site_id,
decode(msi.aggregate_time_fence_date,
NULL, msi.inventory_item_id,
msi.product_family_id) product_family_id
FROM msc_demands d2,
msc_full_pegging peg2,
msc_full_pegging peg1 ,
msc_demands d1,
msc_supplies s,
msc_system_items msi
WHERE peg2.plan_id = :p_plan_id
AND peg2.plan_id = peg1.plan_id
AND peg2.end_pegging_id = peg1.pegging_id
AND peg2.sr_instance_id = peg1.sr_instance_id
AND d1.plan_id = peg1.plan_id
AND d1.demand_id = peg1.demand_id
AND d1.sr_instance_id = peg1.sr_instance_id
AND d2.plan_id = peg2.plan_id
AND d2.demand_id = peg2.demand_id
AND d2.sr_instance_id = peg2.sr_instance_id
AND d2.origination_type NOT IN (5,7,8,9,11,15,22,28,29,31,70)
AND peg2.sr_instance_id=s.sr_instance_id
AND peg2.plan_id = s.plan_id
AND peg2.transaction_id = s.transaction_id
AND msi.plan_id = s.plan_id
AND msi.inventory_item_id = s.inventory_item_id
AND msi.sr_instance_id = s.sr_instance_id
AND msi.organization_id = s.organization_id
) pegging_v,
msc_item_hierarchy_mv mv
WHERE pegging_v.product_family_id = mv.inventory_item_id(+)
AND pegging_v.organization_id = mv.organization_id (+)
AND pegging_v.sr_instance_id = mv.sr_instance_id (+)
AND pegging_v.demand_date >= mv.effective_date (+)
AND pegging_v.demand_date <= mv.disable_date (+)
AND pegging_v.demand_class = mv.demand_class (+)
AND mv.level_id (+) = -1
AND pegging_v.allocated_quantity <> 0
GROUP BY
pegging_v.plan_id,
pegging_v.inventory_item_id,
pegging_v.original_item_id,
pegging_v.organization_id,
pegging_v.sr_instance_id,
NVL(mv.demand_class, :def_num),
pegging_v.demand_date,
pegging_v.original_demand_date,
pegging_v.parent_demand_id,
pegging_v.origination_type,
pegging_v.original_origination_type,
pegging_v.pf_display_flag,
pegging_v.order_number,
pegging_v.sales_order_line_id,
pegging_v.demand_source_type,--cmro
pegging_v.source_organization_id,
pegging_v.using_assembly_item_id,
pegging_v.customer_id,
pegging_v.ship_to_site_id,
:l_user_id,
:l_sysdate,
:l_user_id,
:l_sysdate)';
INSERT INTO MSC_ALLOC_SUPPLIES(';
INSERT INTO ' || p_temp_table || '(';
last_updated_by,
last_update_date)
(
SELECT /*+ use_hash(pegging_v mv) parallel(mv,' || to_char(p_parallel_degree) || ') */
/* pegging_v.plan_id plan_id,
pegging_v.inventory_item_id,
pegging_v.original_item_id,
pegging_v.organization_id,
pegging_v.sr_instance_id,
NVL(mv.demand_class, :def_num) demand_class,
pegging_v.supply_date,
pegging_v.transaction_id,
SUM(pegging_v.allocated_quantity),
MIN(pegging_v.supply_quantity),
pegging_v.order_type,
pegging_v.original_order_type,
pegging_v.order_number,
pegging_v.schedule_designator_id,
pegging_v.customer_id,
pegging_v.ship_to_site_id,
:l_user_id,
:l_sysdate,
:l_user_id,
:l_sysdate
FROM
(SELECT /*+ ordered use_hash(peg2 peg1) use_hash(peg1 s msi)
parallel(peg2,' || to_char(p_parallel_degree) || ')
parallel(peg1,' || to_char(p_parallel_degree) || ')
parallel(s,' || to_char(p_parallel_degree) || ')
parallel(msi,' || to_char(p_parallel_degree) || ') */
/* peg1.plan_id plan_id,
decode(msi.aggregate_time_fence_date,
NULL, msi.inventory_item_id,
decode(sign(TRUNC(s.new_schedule_date) - msi.aggregate_time_fence_date),
1, msi.product_family_id,
msi.inventory_item_id)) inventory_item_id,
msi.inventory_item_id original_item_id,
peg1.organization_id,
peg1.sr_instance_id,
NVL(s.demand_class, :def_num) demand_class,
TRUNC(s.new_schedule_date) supply_date,
decode(msi.aggregate_time_fence_date,
NULL, peg1.allocated_quantity,
decode(msi.bom_item_type,
5, 0,
peg1.allocated_quantity)) allocated_quantity,
s.new_order_quantity supply_quantity,
peg1.transaction_id,
decode(msi.aggregate_time_fence_date,
NULL, s.order_type, 50) order_type
s.order_type original_order_type,
s.order_number,
s.schedule_designator_id,
s.customer_id,
s.ship_to_site_id,
decode(msi.aggregate_time_fence_date,
NULL, msi.inventory_item_id,
msi.product_family_id) product_family_id
FROM msc_full_pegging peg2,
msc_full_pegging peg1,
msc_supplies s,
msc_system_items msi
WHERE peg1.plan_id = :p_plan_id
AND peg2.plan_id = peg1.plan_id
AND peg2.pegging_id = peg1.end_pegging_id
AND peg2.demand_id IN (-1, -2)
AND s.plan_id = peg1.plan_id
AND s.transaction_id = peg1.transaction_id
AND s.sr_instance_id = peg1.sr_instance_id
AND msi.sr_instance_id = s.sr_instance_id
AND msi.plan_id = s.plan_id
AND msi.organization_id = s.organization_id
AND msi.inventory_item_id = s.inventory_item_id) pegging_v,
msc_item_hierarchy_mv mv
WHERE pegging_v.product_family_id = mv.inventory_item_id(+)
AND pegging_v.organization_id = mv.organization_id (+)
AND pegging_v.sr_instance_id = mv.sr_instance_id (+)
AND pegging_v.supply_date >= mv.effective_date (+)
AND pegging_v.supply_date <= mv.disable_date (+)
AND pegging_v.demand_class = mv.demand_class (+)
AND mv.level_id (+) = -1
AND pegging_v.allocated_quantity <> 0
GROUP BY
pegging_v.plan_id plan_id,
pegging_v.inventory_item_id,
pegging_v.original_item_id,
pegging_v.organization_id,
pegging_v.sr_instance_id,
NVL(mv.demand_class, :def_num),
pegging_v.supply_date,
pegging_v.transaction_id,
pegging_v.order_type,
pegging_v.original_order_type,
pegging_v.order_number,
pegging_v.schedule_designator_id,
pegging_v.customer_id,
pegging_v.ship_to_site_id,
:l_user_id,
:l_sysdate,
:l_user_id,
:l_sysdate)';
last_updated_by,
last_update_date)
(
SELECT /*+ ordered use_hash(peg2 peg1) use_hash(peg1 s tp cal)
parallel(peg2,' || to_char(p_parallel_degree) || ')
parallel(peg1,' || to_char(p_parallel_degree) || ')
parallel(s,' || to_char(p_parallel_degree) || ')
parallel(tp,' || to_char(p_parallel_degree) || ') */
/* peg1.plan_id plan_id,
decode(msi.aggregate_time_fence_date,
NULL, msi.inventory_item_id,
decode(sign(TRUNC(s.new_schedule_date) - msi.aggregate_time_fence_date),
1, msi.product_family_id,
msi.inventory_item_id)) inventory_item_id,
msi.inventory_item_id original_item_id,
peg1.organization_id,
peg1.sr_instance_id,
:def_num demand_class,
TRUNC(s.new_schedule_date) supply_date,
SUM(decode(msi.aggregate_time_fence_date,
NULL, peg1.allocated_quantity,
decode(msi.bom_item_type,
5, 0,
peg1.allocated_quantity))) allocated_quantity,
MIN(s.new_order_quantity) supply_quantity,
peg1.transaction_id,
decode(msi.aggregate_time_fence_date,
NULL, s.order_type, 50) order_type,
s.order_type original_order_type,
s.order_number,
s.schedule_designator_id,
s.customer_id,
s.ship_to_site_id,
:l_user_id created_by,
:l_sysdate creation_date,
:l_user_id last_updated_by,
:l_sysdate last_update_date
FROM msc_full_pegging peg2,
msc_full_pegging peg1,
msc_supplies s,
msc_system_items msi
WHERE peg1.plan_id = :p_plan_id
AND peg2.plan_id = peg1.plan_id
AND peg2.pegging_id = peg1.end_pegging_id
AND peg2.demand_id IN (-1, -2)
AND s.plan_id = peg1.plan_id
AND s.transaction_id = peg1.transaction_id
AND s.sr_instance_id = peg1.sr_instance_id
AND msi.sr_instance_id = s.sr_instance_id
AND msi.plan_id = s.plan_id
AND msi.organization_id = s.organization_id
AND msi.inventory_item_id = s.inventory_item_id
GROUP BY
peg1.plan_id,
decode(msi.aggregate_time_fence_date,
NULL, msi.inventory_item_id,
decode(sign(TRUNC(s.new_schedule_date) - msi.aggregate_time_fence_date),
1, msi.product_family_id,
msi.inventory_item_id)),
msi.inventory_item_id,
peg1.organization_id,
peg1.sr_instance_id,
:def_num,
TRUNC(s.new_schedule_date),
peg1.transaction_id,
decode(msi.aggregate_time_fence_date,
NULL, s.order_type, 50),
s.order_type,
s.order_number,
s.schedule_designator_id,
s.customer_id,
s.ship_to_site_id,
:l_user_id,
:l_sysdate,
:l_user_id,
:l_sysdate)';
last_updated_by,
last_update_date)
(
select :p_plan_id,
decode(sign(TRUNC(s.new_schedule_date) - i.aggregate_time_fence_date),
1, i.product_family_id, s.inventory_item_id),
s.inventory_item_id,
s.organization_id,
s.sr_instance_id,
s.demand_class,
TRUNC(s.new_schedule_date),
s.transaction_id,
s.new_order_quantity,
s.new_order_quantity,
50,
s.order_type,
s.order_number,
s.schedule_designator_id,
s.customer_id,
s.ship_to_site_id,
:l_user_id,
:l_sysdate,
:l_user_id,
:l_sysdate
from msc_supplies s,
msc_system_items i
where i.aggregate_time_fence_date is not null
and i.bom_item_type <> 5
and i.plan_id = :p_plan_id
and s.inventory_item_id = i.inventory_item_id
and s.organization_id = i.organization_id
and s.sr_instance_id = i.sr_instance_id
and s.plan_id = i.plan_id
)';
INSERT INTO MSC_ALLOC_SUPPLIES(';
INSERT INTO ' || p_temp_table || '(';
last_updated_by,
last_update_date)
(
SELECT /*+ use_hash(peg1 mv) parallel(mv,' || to_char(p_parallel_degree) || ') */
/* pegging_v.plan_id,
pegging_v.inventory_item_id,
pegging_v.original_item_id,
pegging_v.organization_id,
pegging_v.sr_instance_id,
NVL(mv.demand_class, :def_num) demand_class,
pegging_v.supply_date,
pegging_v.transaction_id,
SUM(pegging_v.allocated_quantity),
MIN(pegging_v.supply_quantity),
pegging_v.order_type,
pegging_v.original_order_type,
pegging_v.order_number,
pegging_v.schedule_designator_id,
pegging_v.customer_id,
pegging_v.ship_to_site_id,
:l_user_id,
:l_sysdate,
:l_user_id,
:l_sysdate
FROM
(SELECT /*+ ordered use_hash(s peg2 peg1 d tp cal)
parallel(peg2,' || to_char(p_parallel_degree) || ')
parallel(peg1,' || to_char(p_parallel_degree) || ')
parallel(s,' || to_char(p_parallel_degree) || ')
parallel(d,' || to_char(p_parallel_degree) || ')
parallel(tp,' || to_char(p_parallel_degree) || ') */
/* peg2.plan_id plan_id,
decode(msi.aggregate_time_fence_date,
NULL, msi.inventory_item_id,
decode(sign(TRUNC(s.new_schedule_date) - msi.aggregate_time_fence_date),
1, msi.product_family_id,
msi.inventory_item_id)) inventory_item_id,
msi.inventory_item_id original_item_id,
peg2.organization_id,
peg2.sr_instance_id,
NVL(d.demand_class, :def_num) demand_class,
TRUNC(s.new_schedule_date) supply_date,
decode(msi.aggregate_time_fence_date,
NULL, peg2.allocated_quantity,
decode(msi.bom_item_type,
5, 0,
peg2.allocated_quantity)) allocated_quantity,
s.new_order_quantity supply_quantity,
peg2.transaction_id,
decode(msi.aggregate_time_fence_date,
NULL, s.order_type, 50) order_type,
s.order_type original_order_type,
s.order_number,
s.schedule_designator_id,
s.customer_id,
s.ship_to_site_id,
decode(msi.aggregate_time_fence_date,
NULL, msi.inventory_item_id,
msi.product_family_id) product_family_id
FROM msc_supplies s,
msc_full_pegging peg2,
msc_full_pegging peg1,
msc_demands d,
msc_system_items msi
WHERE peg2.plan_id = :p_plan_id
AND peg2.plan_id = peg1.plan_id
AND peg2.end_pegging_id = peg1.pegging_id
AND d.plan_id = peg1.plan_id
AND d.demand_id = peg1.demand_id
AND d.sr_instance_id = peg1.sr_instance_id
AND d.inventory_item_id = peg1.inventory_item_id
AND s.plan_id = peg2.plan_id
AND s.transaction_id = peg2.transaction_id
AND s.sr_instance_id = peg2.sr_instance_id
AND msi.sr_instance_id = s.sr_instance_id
AND msi.plan_id = s.plan_id
AND msi.organization_id = s.organization_id
AND msi.inventory_item_id = s.inventory_item_id
) pegging_v,
msc_item_hierarchy_mv mv
WHERE pegging_v.product_family_id = mv.inventory_item_id(+)
AND pegging_v.organization_id = mv.organization_id (+)
AND pegging_v.sr_instance_id = mv.sr_instance_id (+)
AND pegging_v.supply_date >= mv.effective_date (+)
AND pegging_v.supply_date <= mv.disable_date (+)
AND pegging_v.demand_class = mv.demand_class (+)
AND mv.level_id (+) = -1
AND pegging_v.allocated_quantity <> 0
GROUP BY
pegging_v.plan_id,
pegging_v.inventory_item_id,
pegging_v.original_item_id,
pegging_v.organization_id,
pegging_v.sr_instance_id,
NVL(mv.demand_class, :def_num),
pegging_v.supply_date,
pegging_v.transaction_id,
pegging_v.order_type,
pegging_v.original_order_type,
pegging_v.order_number,
pegging_v.schedule_designator_id,
pegging_v.customer_id,
pegging_v.ship_to_site_id,
:l_user_id,
:l_sysdate,
:l_user_id,
:l_sysdate)';
/*--Update_Pf_Display_Flag-----------------------------------------------------
| o Called from Pf_Post_Plan_Proc procedure to update Pf_Display_Flag to
| handle scenario when a demand on one side of ATF is satisfied fully
| from supplies on the other side of ATF.
+----------------------------------------------------------------------------*/
PROCEDURE Update_Pf_Display_Flag(
p_plan_id IN NUMBER,
x_return_status OUT NOCOPY VARCHAR2
)
IS
l_return_status VARCHAR2(1);
msc_util.msc_log('Update_Pf_Display_Flag: ' || 'p_plan_id: ' || p_plan_id);
UPDATE MSC_ALLOC_DEMANDS AD
SET Pf_Display_Flag = 1
WHERE AD.plan_id = p_plan_id
--AND AD.allocated_quantity = Demand_Quantity
AND AD.pf_display_flag is NULL
AND (AD.parent_demand_id, AD.demand_class, 1) in
(SELECT AD2.parent_demand_id, AD2.demand_class, count(*)
FROM MSC_ALLOC_DEMANDS AD2
WHERE AD2.plan_id = p_plan_id
GROUP BY AD2.parent_demand_id, AD2.demand_class
)
AND EXISTS (SELECT 1
FROM MSC_SYSTEM_ITEMS I
WHERE I.inventory_item_id = AD.inventory_item_id
AND I.organization_id = AD.organization_id
AND I.sr_instance_id = AD.sr_instance_id
AND I.plan_id = AD.plan_id
AND I.aggregate_time_fence_date is not null);
UPDATE MSC_ALLOC_DEMANDS AD
SET Pf_Display_Flag = 1
WHERE AD.plan_id = p_plan_id
AND AD.pf_display_flag is NULL
AND EXISTS (SELECT 1
FROM MSC_ALLOC_DEMANDS AD2
WHERE AD2.plan_id = p_plan_id
AND AD.parent_demand_id = AD2.parent_demand_id
AND AD.demand_class = AD2.demand_class
GROUP BY AD2.parent_demand_id, AD2.demand_class
HAVING count(*) = 1)
AND EXISTS (SELECT 1
FROM MSC_SYSTEM_ITEMS I
WHERE I.inventory_item_id = AD.inventory_item_id
AND I.organization_id = AD.organization_id
AND I.sr_instance_id = AD.sr_instance_id
AND I.plan_id = AD.plan_id
AND I.aggregate_time_fence_date is not null);
msc_util.msc_log('Update_Pf_Display_Flag: ' || 'Error occurred: ' || to_char(sqlcode) || ':' || SQLERRM);
END Update_Pf_Display_Flag;
| o Called from Gen_Atp_Pegging procedure to insert bucketed demands and
| rollup supplies in MSC_ATP_PEGGING in demand priority cases
+----------------------------------------------------------------------------*/
PROCEDURE Create_PF_DP_Alloc_Reliefs (p_plan_id IN NUMBER,
p_insert_table IN VARCHAR2,
p_user_id IN NUMBER,
p_sysdate IN DATE,
x_return_status OUT NOCOPY VARCHAR2
)
IS
l_sql_stmt VARCHAR2(800);
msc_sch_wb.atp_debug(' Insert Table parameter : ' || p_insert_table );
msc_sch_wb.atp_debug(' Inserting Demands');
l_sql_stmt_1 := 'INSERT INTO ' || p_insert_table ||
'(reference_item_id,
inventory_item_id,
original_item_id,
original_date,
plan_id,
sr_instance_id,
organization_id,
sales_order_line_id,
demand_source_type,
end_demand_id,
bom_item_type,
sales_order_qty,
transaction_date,
demand_id,
demand_quantity,
disposition_id,
demand_class,
consumed_qty,
overconsumption_qty,
supply_id,
supply_quantity,
allocated_quantity,
relief_type,
relief_quantity,
pegging_id,
prev_pegging_id,
end_pegging_id,
created_by,
creation_date,
last_updated_by,
last_update_date,
customer_id,
customer_site_id,
offset_type)
SELECT
peg_v.reference_item_id,
peg_v.inventory_item_id,
peg_v.original_item_id,
peg_v.original_date,
peg_v.plan_id,
peg_v.sr_instance_id,
peg_v.organization_id,
peg_v.sales_order_line_id,
peg_v.demand_source_type,
peg_v.end_demand_id,
peg_v.bom_item_type,
peg_v.sales_order_qty,
peg_v.transaction_date,
peg_v.demand_id ,
peg_v.demand_quantity,
peg_v.disposition_id,
NVL(mv.demand_class, :l_def_dmd_class) demand_class ,
peg_v.consumed_qty,
peg_v.overconsumption_qty,
peg_v.supply_id,
peg_v.supply_quantity,
peg_v.allocated_quantity,
peg_v.relief_type,
peg_v.relief_quantity,
peg_v.pegging_id,
peg_v.prev_pegging_id,
peg_v.end_pegging_id,
:p_user_id,
:p_sysdate,
:p_user_id,
:p_sysdate,
mv.partner_id,
mv.partner_site_id,
peg_v.offset_type
FROM
(SELECT mapt.reference_item_id reference_item_id,
decode(mapt.atf_date,
NULL, mapt.inventory_item_id,
decode(sign(trunc(s.new_schedule_date) - mapt.atf_date),
1, mapt.product_family_id,
mapt.inventory_item_id
)
) inventory_item_id,
mapt.inventory_item_id original_item_id,
mapt.transaction_date original_date,
mapt.plan_id plan_id,
mapt.sr_instance_id sr_instance_id,
mapt.organization_id organization_id,
mapt.sales_order_line_id sales_order_line_id,
mapt.demand_source_type demand_source_type,
mapt.end_demand_id end_demand_id,
mapt.bom_item_type bom_item_type,
mapt.sales_order_qty sales_order_qty,
decode(mapt.atf_date,
NULL, trunc(mapt.transaction_date),
decode(sign(trunc(s.new_schedule_date) - mapt.atf_date),
1, decode(sign(trunc(mapt.transaction_date)- mapt.atf_date),
1, trunc(mapt.transaction_date),
mapt.atf_date+1
),
decode(sign(trunc(mapt.transaction_date)- mapt.atf_date),
1, mapt.atf_date,
trunc(mapt.transaction_date)
)
)
)transaction_date,
mapt.demand_id demand_id,
mapt.demand_quantity demand_quantity,
mapt.disposition_id disposition_id,
NVL(mapt.demand_class, :l_def_dmd_class) demand_class ,
mapt.consumed_qty consumed_qty,
mapt.overconsumption_qty overconsumption_qty,
mapt.supply_id supply_id,
mapt.supply_quantity supply_quantity,
mapt.allocated_quantity allocated_quantity,
decode(mapt.atf_date,
NULL,5,7) relief_type,
mapt.relief_quantity relief_quantity,
mapt.pegging_id pegging_id,
mapt.prev_pegging_id prev_pegging_id,
mapt.end_pegging_id end_pegging_id,
mapt.atf_date atf_date,
mapt.product_family_id product_family_id,
mapt.offset_type
FROM msc_atp_peg_temp mapt,
msc_supplies s
WHERE mapt.plan_id = :p_plan_id
AND mapt.relief_type = 3
AND s.sr_instance_id = mapt.sr_instance_id
AND s.plan_id = mapt.plan_id
AND s.transaction_id = mapt.supply_id) peg_v,
msc_item_hierarchy_mv mv
WHERE
decode(peg_v.atf_date,
NULL,peg_v.inventory_item_id,
peg_v.product_family_id) = mv.inventory_item_id(+)
AND peg_v.organization_id = mv.organization_id (+)
AND peg_v.sr_instance_id = mv.sr_instance_id (+)
AND peg_v.transaction_date >= mv.effective_date (+)
AND peg_v.transaction_date <= mv.disable_date (+)
AND peg_v.demand_class = mv.demand_class (+)
AND mv.level_id (+) = -1';
msc_sch_wb.atp_debug('Create_PF_DP_Alloc_Reliefs: Number of Demand rows inserted '||
SQL%ROWCOUNT);
msc_sch_wb.atp_debug(' Inserting Supplies');
l_sql_stmt_1 := 'INSERT INTO ' || p_insert_table ||
'(reference_item_id,
inventory_item_id,
plan_id,
sr_instance_id,
organization_id,
sales_order_line_id,
demand_source_type,
end_demand_id,
bom_item_type,
sales_order_qty,
transaction_date,
demand_id,
demand_quantity,
disposition_id,
demand_class,
consumed_qty,
overconsumption_qty,
supply_id,
supply_quantity,
allocated_quantity,
relief_type,
relief_quantity,
pegging_id,
prev_pegging_id,
end_pegging_id,
created_by,
creation_date,
last_updated_by,
last_update_date,
customer_id,
customer_site_id,
offset_type)
SELECT mapt.reference_item_id,
mapt.inventory_item_id,
mapt.plan_id,
mapt.sr_instance_id,
mapt.organization_id,
mapt.sales_order_line_id,
mapt.demand_source_type,
mapt.end_demand_id,
mapt.bom_item_type,
mapt.sales_order_qty,
mapt.transaction_date,
mapt.demand_id ,
mapt.demand_quantity,
mapt.disposition_id,
NVL(mv.demand_class, :l_def_dmd_class) demand_class ,
mapt.consumed_qty,
mapt.overconsumption_qty,
mapt.supply_id,
mapt.supply_quantity,
mapt.allocated_quantity ,
6,
mapt.relief_quantity ,
mapt.pegging_id,
mapt.prev_pegging_id,
mapt.end_pegging_id,
:p_user_id,
:p_sysdate,
:p_user_id,
:p_sysdate,
mv.partner_id,
mv.partner_site_id customer_site_id,
mapt.offset_type
FROM msc_atp_peg_temp mapt, msc_item_hierarchy_mv mv
WHERE mapt.plan_id = :p_plan_id
AND mapt.relief_type = 2
AND mapt.inventory_item_id = mv.inventory_item_id(+)
AND mapt.organization_id = mv.organization_id (+)
AND mapt.sr_instance_id = mv.sr_instance_id (+)
AND mapt.transaction_date >= mv.effective_date (+)
AND mapt.transaction_date <= mv.disable_date (+)
AND mapt.demand_class = mv.demand_class (+)
AND mv.level_id (+) = -1 '
;
msc_sch_wb.atp_debug('Create_PF_DP_Alloc_Reliefs: Number of Supply rows inserted '||
SQL%ROWCOUNT);
| o Called from Gen_Atp_Pegging procedure to insert bucketed demands and
| rollup supplies in MSC_ATP_PEGGING in non demand priority cases
+----------------------------------------------------------------------------*/
PROCEDURE Create_PF_Allocation_Reliefs (p_plan_id IN NUMBER,
p_insert_table IN VARCHAR2,
p_user_id IN NUMBER,
p_sysdate IN DATE,
x_return_status OUT NOCOPY VARCHAR2
)
IS
l_sql_stmt VARCHAR2(800);
msc_sch_wb.atp_debug(' Insert Table parameter : ' || p_insert_table );
msc_sch_wb.atp_debug(' Inserting Demands');
l_sql_stmt_1 := 'INSERT INTO ' || p_insert_table || -- actually the insert table parameter.
'(reference_item_id,
inventory_item_id,
original_item_id,
original_date,
plan_id,
sr_instance_id,
organization_id,
sales_order_line_id,
demand_source_type,
end_demand_id,
bom_item_type,
sales_order_qty,
transaction_date,
demand_id,
demand_quantity,
disposition_id,
consumed_qty,
overconsumption_qty,
supply_id,
supply_quantity,
allocated_quantity,
relief_type,
relief_quantity,
pegging_id,
prev_pegging_id,
end_pegging_id,
created_by,
creation_date,
last_updated_by,
last_update_date,
customer_id,
customer_site_id)
SELECT mapt.reference_item_id reference_item_id,
decode(sign(trunc(s.new_schedule_date) - mapt.atf_date),
1, mapt.product_family_id,
mapt.inventory_item_id) inventory_item_id,
mapt.inventory_item_id,
mapt.transaction_date,
mapt.plan_id plan_id,
mapt.sr_instance_id sr_instance_id,
mapt.organization_id organization_id,
mapt.sales_order_line_id sales_order_line_id,
mapt.demand_source_type demand_source_type,
mapt.end_demand_id end_demand_id,
mapt.bom_item_type bom_item_type,
mapt.sales_order_qty sales_order_qty,
decode(sign(trunc(s.new_schedule_date) - mapt.atf_date),
1, decode(sign(trunc(mapt.transaction_date)- mapt.atf_date),
1, trunc(mapt.transaction_date),
mapt.atf_date+1),
decode(sign(trunc(mapt.transaction_date)- mapt.atf_date),
1, mapt.atf_date,
trunc(mapt.transaction_date)
)
) transaction_date,
mapt.demand_id demand_id,
mapt.demand_quantity demand_quantity,
mapt.disposition_id disposition_id,
mapt.consumed_qty consumed_qty,
mapt.overconsumption_qty overconsumption_qty,
mapt.supply_id supply_id,
mapt.supply_quantity supply_quantity,
mapt.allocated_quantity allocated_quantity,
7 relief_type, --PF ATP
mapt.relief_quantity relief_quantity,
mapt.pegging_id pegging_id,
mapt.prev_pegging_id prev_pegging_id,
mapt.end_pegging_id end_pegging_id,
:p_user_id,
:p_sysdate,
:p_user_id,
:p_sysdate,
mapt.customer_id,
mapt.customer_site_id
FROM msc_atp_peg_temp mapt,
msc_supplies s
WHERE mapt.plan_id = :p_plan_id
AND mapt.relief_type = 3
AND s.sr_instance_id = mapt.sr_instance_id
AND s.plan_id = mapt.plan_id
AND s.transaction_id = mapt.supply_id';
msc_sch_wb.atp_debug('Create_PF_Allocation_Reliefs: Number of Demand rows inserted '||
SQL%ROWCOUNT);