The following lines contain the word 'select', 'insert', 'update' or 'delete':
* Inserts debug msg into log file. *
* *
************************************************************************/
PROCEDURE print_log (buf VARCHAR2) IS
BEGIN
FND_FILE.PUT_LINE(FND_FILE.LOG, buf);
SELECT DISTINCT inventory_item_id item_id
FROM mrp_forecast_dates
WHERE organization_id = i_organization_id
AND forecast_designator = i_demand_code
AND ((rate_end_date IS NULL
AND
forecast_date BETWEEN get_offset_date(i_organization_id,
i_start_date,
bucket_type )
AND i_end_date
) OR
(rate_end_date is NOT NULL
AND
NOT (rate_end_date < get_offset_date(i_organization_id,
i_start_date,
bucket_type )
OR
forecast_date > i_end_date
)
)
);
SELECT DISTINCT
inventory_item_id item_id,
line_id
FROM mrp_schedule_dates
WHERE organization_id = i_organization_id
AND schedule_designator = i_demand_code
AND schedule_level = 2
AND trunc(schedule_date) BETWEEN i_start_date AND i_end_date;
/* SELECT DISTINCT
primary_item_id item_id,
line_id
FROM mrp_line_sch_avail_v
WHERE organization_id = i_organization_id
AND trunc(scheduled_completion_date) between i_start_date AND i_end_date;
SELECT distinct PRIMARY_ITEM_ID ITEM_ID, LINE_ID
FROM
(
SELECT
REPITEM.PRIMARY_ITEM_ID,
REP.LINE_ID
FROM BOM_CALENDAR_DATES BOM,
WIP_REPETITIVE_ITEMS REPITEM,
WIP_REPETITIVE_SCHEDULES REP,
MTL_PARAMETERS MP
WHERE BOM.CALENDAR_DATE BETWEEN TRUNC(REP.FIRST_UNIT_COMPLETION_DATE) AND
TRUNC(REP.LAST_UNIT_COMPLETION_DATE)
AND BOM.SEQ_NUM IS NOT NULL
AND MP.CALENDAR_CODE = BOM.CALENDAR_CODE
AND MP.CALENDAR_EXCEPTION_SET_ID = BOM.EXCEPTION_SET_ID
AND MP.ORGANIZATION_ID = REP.ORGANIZATION_ID
AND REPITEM.LINE_ID = REP.LINE_ID
AND REPITEM.WIP_ENTITY_ID = REP.WIP_ENTITY_ID
AND REPITEM.ORGANIZATION_ID = REP.ORGANIZATION_ID
AND REPITEM.LINE_ID IS NOT NULL
AND REP.organization_id = i_organization_id
and trunc(BOM.CALENDAR_DATE) between i_start_date AND i_end_date
UNION ALL
SELECT
JOB.PRIMARY_ITEM_ID,
JOB.LINE_ID
FROM WIP_DISCRETE_JOBS JOB
WHERE JOB.LINE_ID IS NOT NULL
AND JOB.organization_id = i_organization_id
and trunc(JOB.scheduled_completion_date) between i_start_date AND i_end_date
UNION ALL
SELECT
FLOW.PRIMARY_ITEM_ID,
FLOW.LINE_ID
FROM WIP_FLOW_SCHEDULES FLOW
WHERE FLOW.LINE_ID IS NOT NULL
AND FLOW.organization_id = i_organization_id
and trunc(FLOW.scheduled_completion_date) between i_start_date AND i_end_date
);
SELECT DISTINCT
inventory_item_id item_id,
line_id
FROM mrp_unscheduled_orders_v
WHERE organization_id = i_organization_id
AND trunc(order_date) BETWEEN i_start_date AND i_end_date
AND unscheduled_order_option = i_option;
SELECT null item_id, null line_id from dual;
SELECT distinct
sl1.inventory_item_id item_id,
wl.line_id
FROM
OE_ORDER_LINES_ALL SL1,
MTL_SYSTEM_ITEMS_KFV MSI1,
WIP_LINES WL,
(select sl2.line_id,
decode((select 1
from oe_order_holds_all oh
where oh.header_id = sl2.header_id
and rownum = 1
and oh.released_flag = 'N'),
null,
0,
decode(sl2.ato_line_id,
null,
mrp_flow_schedule_util.check_holds(sl2.header_id,
sl2.line_id,
'OEOL',
'LINE_SCHEDULING'),
mrp_flow_schedule_util.check_holds(sl2.header_id,
sl2.line_id,
null,
null))) hold
from oe_order_lines_all sl2) line_holds,
(select sl2.line_id,
CTO_WIP_WORKFLOW_API_PK.workflow_build_status(sl2.LINE_ID) status
from oe_order_lines_all sl2) line_build
WHERE
line_build.line_id = sl1.line_id
AND 1 = decode(MSI1.REPLENISH_TO_ORDER_FLAG, 'N', 1, line_build.status)
AND MSI1.BUILD_IN_WIP_FLAG = 'Y'
AND MSI1.PICK_COMPONENTS_FLAG = 'N'
AND MSI1.BOM_ITEM_TYPE = 4
AND MSI1.ORGANIZATION_ID = SL1.SHIP_FROM_ORG_ID
AND MSI1.INVENTORY_ITEM_ID = SL1.INVENTORY_ITEM_ID
AND SL1.ORDERED_QUANTITY > 0
AND SL1.VISIBLE_DEMAND_FLAG = 'Y'
AND SL1.OPEN_FLAG = 'Y'
AND SL1.ITEM_TYPE_CODE in ('STANDARD', 'CONFIG', 'INCLUDED', 'OPTION')
AND OE_INSTALL.GET_ACTIVE_PRODUCT = 'ONT'
AND wl.organization_id = sl1.ship_from_org_id
AND wl.line_id in (select line_id
from bom_operational_routings bor2
where bor2.assembly_item_id = sl1.inventory_item_id
and bor2.organization_id = sl1.ship_from_org_id
and bor2.cfm_routing_flag = 1)
AND SL1.SHIPPED_QUANTITY is NULL
and sl1.line_id = line_holds.line_id
and line_holds.hold = 0
AND NVL(SL1.FULFILLED_FLAG, 'N') <> 'Y'
/* cursor specific criteria */
AND msi1.organization_id = i_organization_id
AND trunc(sl1.schedule_ship_date) BETWEEN i_start_date AND i_end_date;
SELECT distinct
MR1.INVENTORY_ITEM_ID item_id,
WL.LINE_ID
FROM MTL_SYSTEM_ITEMS_B KFV,
MRP_SYSTEM_ITEMS RSI1,
MRP_PLANS MP1,
MRP_RECOMMENDATIONS MR1,
WIP_LINES WL
WHERE MP1.PLAN_COMPLETION_DATE IS NOT NULL
AND MP1.DATA_COMPLETION_DATE IS NOT NULL
AND MP1.COMPILE_DESIGNATOR = MR1.COMPILE_DESIGNATOR
AND (MP1.ORGANIZATION_ID = MR1.ORGANIZATION_ID OR
(MP1.ORGANIZATION_ID IN
(SELECT ORGANIZATION_ID
FROM MRP_PLAN_ORGANIZATIONS
WHERE COMPILE_DESIGNATOR = MR1.COMPILE_DESIGNATOR
AND PLANNED_ORGANIZATION = MR1.ORGANIZATION_ID)))
AND MR1.ORGANIZATION_ID = MR1.SOURCE_ORGANIZATION_ID
AND KFV.INVENTORY_ITEM_ID = RSI1.INVENTORY_ITEM_ID
AND KFV.ORGANIZATION_ID = RSI1.ORGANIZATION_ID
AND NVL(KFV.RELEASE_TIME_FENCE_CODE, -1) <> 6 /* KANBAN ITEM */
AND MR1.ORDER_TYPE = 5 /* PLANNED ORDER */
AND MR1.ORGANIZATION_ID = RSI1.ORGANIZATION_ID
AND MR1.COMPILE_DESIGNATOR = RSI1.COMPILE_DESIGNATOR
AND MR1.INVENTORY_ITEM_ID = RSI1.INVENTORY_ITEM_ID
AND MR1.COMPILE_DESIGNATOR =
/* (SELECT DESIGNATOR
FROM MRP_DESIGNATORS_VIEW
WHERE PRODUCTION = 1
AND ORGANIZATION_ID = MP1.ORGANIZATION_ID
AND DESIGNATOR = MR1.COMPILE_DESIGNATOR) */ /* bug 4911869 - flatten view mrp_designators_view */
( SELECT S.SCHEDULE_DESIGNATOR FROM MRP_SCHEDULE_DESIGNATORS S
WHERE s.production = 1 and s.organization_id = mp1.organization_id
and s.schedule_designator = mr1.compile_designator
UNION ALL
SELECT D.COMPILE_DESIGNATOR
FROM MRP_DESIGNATORS D
WHERE d.production = 1 and d.organization_id = mp1.organization_id
and d.COMPILE_DESIGNATOR = mr1.compile_designator)
AND RSI1.BUILD_IN_WIP_FLAG = 1 /* YES */
AND RSI1.BOM_ITEM_TYPE = 4
AND (RSI1.IN_SOURCE_PLAN = 2 OR RSI1.IN_SOURCE_PLAN IS NULL)
AND wl.organization_id = MR1.ORGANIZATION_ID
AND wl.line_id in (select line_id
from bom_operational_routings bor2
where bor2.assembly_item_id = MR1.INVENTORY_ITEM_ID
and bor2.organization_id = MR1.ORGANIZATION_ID
and bor2.cfm_routing_flag = 1)
/* cursor specific criteria */
AND MR1.organization_id = i_organization_id
AND trunc(NVL(MR1.FIRM_DATE, MR1.NEW_SCHEDULE_DATE))
BETWEEN i_start_date AND i_end_date;
SELECT distinct line_id
FROM bom_operational_routings
WHERE organization_id = i_organization_id
AND assembly_item_id = i_assembly_item_id
AND cfm_routing_flag = 1
AND mixed_model_map_flag = 1;
SELECT count(distinct(to_char(scheduled_completion_date))) num_days
FROM mrp_line_schedules_v
WHERE organization_id = i_organization_id
AND line_id = i_line_id
AND trunc(scheduled_completion_date) BETWEEN i_start_date AND i_end_date;
SELECT max(num_days)
FROM (
SELECT count(distinct(to_char(BOM.calendar_Date))) num_days
FROM BOM_CALENDAR_DATES BOM,
WIP_REPETITIVE_SCHEDULES REP,
MTL_PARAMETERS MP
WHERE REP.line_id =i_line_id
AND BOM.CALENDAR_DATE BETWEEN TRUNC(REP.FIRST_UNIT_COMPLETION_DATE)
AND TRUNC(REP.LAST_UNIT_COMPLETION_DATE)
AND BOM.SEQ_NUM IS NOT NULL
AND REP.organization_id = i_organization_id
AND BOM.calendar_date BETWEEN i_start_date
AND i_end_date+1-(1/86400)
AND MP.CALENDAR_CODE = BOM.CALENDAR_CODE
AND MP.CALENDAR_EXCEPTION_SET_ID = BOM.EXCEPTION_SET_ID
AND MP.ORGANIZATION_ID = REP.ORGANIZATION_ID
UNION ALL
SELECT count(distinct(to_char(JOB.scheduled_completion_date))) num_days
FROM WIP_DISCRETE_JOBS JOB
WHERE JOB.organization_id = i_organization_id
AND JOB.line_id = i_line_id
AND JOB.scheduled_completion_date BETWEEN i_start_date
AND i_end_date+1-(1/86400)
UNION ALL
SELECT count(distinct(to_char(flow.scheduled_completion_date))) num_days
FROM WIP_FLOW_SCHEDULES FLOW,
WIP_LINES LINE
WHERE FLOW.LINE_ID = LINE.LINE_ID
AND FLOW.ORGANIZATION_ID = LINE.ORGANIZATION_ID
AND FLOW.organization_id = i_organization_id
AND FLOW.line_id = i_line_id
AND FLOW.scheduled_completion_date BETWEEN i_start_date
AND i_end_date+1-(1/86400)
);
SELECT count(distinct(to_char(order_date))) num_days
FROM mrp_unscheduled_orders_v
WHERE organization_id = i_organization_id
AND line_id = i_line_id
AND trunc(order_date) BETWEEN i_start_date AND i_end_date
AND unscheduled_order_option = i_option;
SELECT product_family_item_id
FROM mtl_system_items_b
WHERE organization_id = i_organization_id
AND inventory_item_id = i_inventory_item_id;
o_demand.DELETE;
SELECT line_id,
hours_per_day
FROM flm_mmm_lines
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND calculation_operation_type = i_calculation_operation_type;
l_old_lines.DELETE;
DELETE FROM flm_mmm_lines
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND calculation_operation_type = i_calculation_operation_type;
l_lines.DELETE;
SELECT start_time, stop_time
INTO l_start_time, l_stop_time
FROM wip_lines
WHERE line_id = i_line_id
AND organization_id = i_organization_id;
SELECT start_time, stop_time
INTO l_start_time, l_stop_time
FROM wip_lines
WHERE line_id = i_demand(l_index).line_id
AND organization_id = i_organization_id;
INSERT INTO flm_mmm_lines (
plan_id,
organization_id,
line_id,
calculation_operation_type,
created_by,
creation_date,
last_updated_by,
last_update_date,
line_takt,
hours_per_day
) VALUES (
i_plan_id,
i_organization_id,
l_lines(l_index).line_id,
i_calculation_operation_type,
fnd_global.user_id,
sysdate,
fnd_global.user_id,
sysdate,
l_lines(l_index).line_takt,
l_lines(l_index).hours_per_day
);
SELECT bos.standard_operation_id standard_operation_id,
nvl(bos.net_planning_percent, 100) net_planning_percent,
nvl(bos.reverse_cumulative_yield, 1) reverse_cumulative_yield,
bos.operation_type operation_type,
bos.machine_time_calc machine_time,
bos.labor_time_calc labor_time,
bos.total_time_calc elapsed_time,
bor.line_id line_id
FROM bom_operational_routings bor,
bom_operation_sequences bos
WHERE bor.assembly_item_id = i_assembly_item_id
AND bor.organization_id = i_organization_id
AND bor.cfm_routing_flag = 1
AND bor.mixed_model_map_flag = 1
AND bor.common_routing_sequence_id = bos.routing_sequence_id
AND bos.operation_type = i_calc_op_type
ORDER BY bos.standard_operation_id;
INSERT INTO flm_mmm_op_items (
plan_id,
organization_id,
assembly_item_id,
line_id,
operation_type,
standard_operation_id,
created_by,
creation_date,
last_updated_by,
last_update_date,
process_volume,
machine_time,
labor_time,
elapsed_time
) VALUES (
i_plan_id,
i_organization_id,
i_demand(l_index).assembly_item_id,
op_seq_rec.line_id,
op_seq_rec.operation_type,
op_seq_rec.standard_operation_id,
fnd_global.user_id,
sysdate,
fnd_global.user_id,
sysdate,
i_demand(l_index).average_daily_demand
* l_npp / 100
/ l_rcy,
op_seq_rec.machine_time,
op_seq_rec.labor_time,
op_seq_rec.elapsed_time
);
SELECT it.standard_operation_id,
it.line_id,
it.operation_type,
nvl(line.hours_per_day,1)/
nvl(sum(it.process_volume), 1) operation_takt
FROM flm_mmm_lines line,
flm_mmm_op_items it
WHERE line.plan_id = i_plan_id
AND line.organization_id = i_organization_id
AND line.calculation_operation_type = it.operation_type --bug 5725595
AND it.plan_id = i_plan_id
AND it.organization_id = i_organization_id
AND it.line_id = line.line_id
AND it.operation_type = i_calc_op_type
GROUP BY it.standard_operation_id, it.line_id,
it.operation_type, line.hours_per_day;
SELECT standard_operation_id op_id,
ipk_assigned
FROM flm_mmm_operations
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND operation_type = i_calc_op_type;
l_ipks.DELETE;
DELETE FROM flm_mmm_operations
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND operation_type = i_calc_op_type;
SELECT ipk_assigned
INTO l_ipk_assigned
FROM flm_mmm_operations
WHERE plan_id = -1
AND organization_id = i_organization_id
AND standard_operation_id = op_takt_rec.standard_operation_id;
INSERT INTO flm_mmm_operations (
plan_id,
organization_id,
standard_operation_id,
created_by,
creation_date,
last_updated_by,
last_update_date,
line_id,
operation_type,
operation_takt,
ipk_assigned
) VALUES (
i_plan_id,
i_organization_id,
op_takt_rec.standard_operation_id,
fnd_global.user_id,
sysdate,
fnd_global.user_id,
sysdate,
op_takt_rec.line_id,
op_takt_rec.operation_type,
op_takt_rec.operation_takt,
nvl(l_ipk_assigned, 0) -- set to 0 if not defined
);
SELECT standard_operation_id
FROM flm_mmm_operations
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND operation_type = i_calc_op_type;
SELECT sum(machine_time*process_volume) / sum(process_volume)
machine_weighted_time,
sum(labor_time*process_volume) / sum(process_volume)
labor_weighted_time,
sum(elapsed_time*process_volume) / sum(process_volume)
elapsed_weighted_time
INTO l_machine_wt,
l_labor_wt,
l_elapsed_wt
FROM flm_mmm_op_items
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND standard_operation_id = op_rec.standard_operation_id
GROUP BY standard_operation_id;
UPDATE flm_mmm_operations
SET machine_weighted_time = l_machine_wt,
labor_weighted_time = l_labor_wt,
elapsed_weighted_time = l_elapsed_wt
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND standard_operation_id = op_rec.standard_operation_id;
SELECT fmo.standard_operation_id,
fmo.operation_type,
fmo.line_id,
fmo.operation_takt,
fml.hours_per_day
FROM flm_mmm_operations fmo,
flm_mmm_lines fml
WHERE fmo.plan_id = i_plan_id
AND fmo.organization_id = i_organization_id
AND fmo.operation_type = i_calc_op_type
AND fml.plan_id = i_plan_id
AND fml.organization_id = i_organization_id
AND fml.calculation_operation_type = i_calc_op_type
AND fml.line_id = fmo.line_id;
SELECT bor.resource_id,
it.assembly_item_id,
it.process_volume,
sum(bor.usage_rate_or_amount * nvl(muc.conversion_rate, 0) /
nvl(l_hour_conv, 1)) resource_usage
FROM flm_mmm_operations op,
flm_mmm_op_items it,
bom_operational_routings brtg,
bom_operation_sequences bos1,
bom_operation_sequences bos2,
bom_operation_resources bor,
bom_resources br,
mtl_uom_conversions muc
WHERE op.plan_id = i_plan_id
AND op.organization_id = i_organization_id
AND op.standard_operation_id = i_standard_operation_id
AND it.plan_id = i_plan_id
AND it.organization_id = i_organization_id
AND it.standard_operation_id = op.standard_operation_id
AND brtg.organization_id = i_organization_id
AND brtg.assembly_item_id = it.assembly_item_id
AND brtg.mixed_model_map_flag = 1
AND brtg.common_routing_sequence_id = bos1.routing_sequence_id
AND brtg.common_routing_sequence_id = bos2.routing_sequence_id
AND bos1.standard_operation_id = it.standard_operation_id
AND (( bos1.operation_type = 3
AND bos2.line_op_seq_id = bos1.operation_sequence_id) or
( bos1.operation_type = 2
AND bos2.process_op_seq_id = bos1.operation_sequence_id))
AND bos2.operation_sequence_id = bor.operation_sequence_id
AND br.resource_id = bor.resource_id
AND muc.uom_code(+) = br.unit_of_measure
AND muc.inventory_item_id(+) = 0
GROUP BY bor.resource_id, it.assembly_item_id, it.process_volume
ORDER BY bor.resource_id;
SELECT resource_id,
standard_operation_id op_id,
resource_assigned
FROM flm_mmm_op_resources
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND operation_type = i_calc_op_type;
l_resources.DELETE;
DELETE FROM flm_mmm_op_resources
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND operation_type = i_calc_op_type;
SELECT nvl(conversion_rate, 0)
INTO l_hour_conv
FROM mtl_uom_conversions
WHERE uom_code = l_hour_uom
AND inventory_item_id = 0;
SELECT resource_assigned
INTO l_resource_assigned
FROM flm_mmm_op_resources
WHERE plan_id = -1
AND organization_id = i_organization_id
AND standard_operation_id = op_rec.standard_operation_id
AND resource_id = l_res_id;
INSERT INTO flm_mmm_op_resources (
plan_id,
organization_id,
resource_id,
standard_operation_id,
created_by,
creation_date,
last_updated_by,
last_update_date,
line_id,
operation_type,
weighted_resource_usage,
resource_assigned
) VALUES (
i_plan_id,
i_organization_id,
l_res_id,
op_rec.standard_operation_id,
fnd_global.user_id,
sysdate,
fnd_global.user_id,
sysdate,
op_rec.line_id,
op_rec.operation_type,
l_total_rs / l_total_pv,
nvl(l_resource_assigned, 0)
);
SELECT resource_assigned
INTO l_resource_assigned
FROM flm_mmm_op_resources
WHERE plan_id = -1
AND organization_id = i_organization_id
AND standard_operation_id = op_rec.standard_operation_id
AND resource_id = l_res_id;
INSERT INTO flm_mmm_op_resources (
plan_id,
organization_id,
resource_id,
standard_operation_id,
created_by,
creation_date,
last_updated_by,
last_update_date,
line_id,
operation_type,
weighted_resource_usage,
resource_assigned
) VALUES (
i_plan_id,
i_organization_id,
l_res_id,
op_rec.standard_operation_id,
fnd_global.user_id,
sysdate,
fnd_global.user_id,
sysdate,
op_rec.line_id,
op_rec.operation_type,
l_total_rs / l_total_pv,
nvl(l_resource_assigned, 0)
);
UPDATE flm_mmm_op_resources
SET resource_assigned = l_resources(i).resource_assigned
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND resource_id = l_resources(i).resource_id
AND standard_operation_id = l_resources(i).standard_operation_id;
SELECT resource_id,
standard_operation_id,
weighted_resource_usage,
resource_assigned
FROM flm_mmm_op_resources fmor
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND operation_type = i_calc_op_type;
SELECT fmo.standard_operation_id,
fmo.operation_takt,
fmo.ipk_assigned,
fml.hours_per_day
FROM flm_mmm_operations fmo,
flm_mmm_lines fml
WHERE fmo.plan_id = i_plan_id
AND fmo.organization_id = i_organization_id
AND fml.plan_id = i_plan_id
AND fml.organization_id = i_organization_id
AND fmo.line_id = fml.line_id
AND fmo.operation_type = i_calc_op_type
AND fml.calculation_operation_type = fmo.operation_type;
UPDATE flm_mmm_op_resources
SET resource_needed = weighted_resource_usage / op_rec.operation_takt
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND standard_operation_id = op_rec.standard_operation_id;
UPDATE flm_mmm_operations
SET ipk_needed = 0
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND operation_type = i_calc_op_type;
UPDATE flm_mmm_op_resources fmor
SET resource_needed = 1
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND operation_type = i_calc_op_type;
SELECT max(nvl(weighted_resource_usage,0))
INTO l_max_rs_usage
FROM flm_mmm_op_resources
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND standard_operation_id = op_rec.standard_operation_id;
UPDATE flm_mmm_operations
SET ipk_needed =
ceil((l_max_rs_usage - op_rec.operation_takt)/l_max_rs_usage *
op_rec.hours_per_day / op_rec.operation_takt)
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND standard_operation_id = op_rec.standard_operation_id;
UPDATE flm_mmm_operations
SET ipk_needed = 0
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND standard_operation_id = op_rec.standard_operation_id;
UPDATE flm_mmm_operations
SET ipk_needed = 0
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND ipk_needed < 0;
SELECT count(*)
INTO l_count
FROM flm_mmm_op_resources
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND standard_operation_id = op_rec.standard_operation_id
AND (resource_assigned IS NULL OR
resource_assigned = 0);
SELECT max(weighted_resource_usage / nvl(resource_assigned, 0)) -- ???
INTO l_max_rs_usage
FROM flm_mmm_op_resources
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND standard_operation_id = op_rec.standard_operation_id;
UPDATE flm_mmm_operations
SET ipk_needed = l_ipk_needed
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND standard_operation_id = op_rec.standard_operation_id;
UPDATE flm_mmm_op_resources
SET resource_needed =
(op_rec.hours_per_day/op_rec.operation_takt - l_ipk_needed) *
weighted_resource_usage / op_rec.hours_per_day
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND standard_operation_id = op_rec.standard_operation_id;
UPDATE flm_mmm_op_resources
SET resource_needed =
(op_rec.hours_per_day/op_rec.operation_takt - nvl(op_rec.ipk_assigned, 0)) *
weighted_resource_usage / op_rec.hours_per_day
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND standard_operation_id = op_rec.standard_operation_id;
UPDATE flm_mmm_op_resources
SET resource_needed = 0
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND standard_operation_id = op_rec.standard_operation_id
AND resource_needed < 0;
UPDATE flm_mmm_operations
SET ipk_needed = ipk_assigned
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND operation_type = i_calc_op_type;
SELECT resource_id,
standard_operation_id,
weighted_resource_usage,
resource_assigned
FROM flm_mmm_op_resources fmor
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND standard_operation_id = i_standard_operation_id;
SELECT fmo.operation_takt,
fmo.ipk_assigned,
fml.hours_per_day
FROM flm_mmm_operations fmo,
flm_mmm_lines fml
WHERE fmo.plan_id = i_plan_id
AND fmo.organization_id = i_organization_id
AND fmo.standard_operation_id = i_standard_operation_id
AND fml.plan_id = i_plan_id
AND fml.organization_id = i_organization_id
AND fml.calculation_operation_type = fmo.operation_type
AND fml.line_id = fmo.line_id;
SELECT count(*)
INTO l_count
FROM flm_mmm_op_resources
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND standard_operation_id = i_standard_operation_id
AND (resource_assigned IS NULL OR
resource_assigned = 0);
SELECT max(weighted_resource_usage / resource_assigned)
INTO l_max_rs_usage
FROM flm_mmm_op_resources
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND standard_operation_id = i_standard_operation_id;
UPDATE flm_mmm_operations
SET ipk_needed = l_ipk_needed
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND standard_operation_id = i_standard_operation_id;
UPDATE flm_mmm_op_resources
SET resource_needed =
(l_hours_per_day/l_operation_takt - l_ipk_needed) *
weighted_resource_usage / l_hours_per_day
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND standard_operation_id = i_standard_operation_id;
UPDATE flm_mmm_op_resources
SET resource_needed = 0
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND standard_operation_id = i_standard_operation_id
AND resource_needed < 0;
UPDATE flm_mmm_op_resources
SET resource_needed =
(l_hours_per_day/l_operation_takt - nvl(l_ipk_assigned, 0)) *
weighted_resource_usage / l_hours_per_day
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND standard_operation_id = i_standard_operation_id;
UPDATE flm_mmm_op_resources
SET resource_needed = 0
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND standard_operation_id = i_standard_operation_id
AND resource_needed < 0;
UPDATE flm_mmm_operations
SET ipk_needed = ipk_assigned
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND standard_operation_id = i_standard_operation_id;
SELECT line_id
FROM flm_mmm_lines
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND calculation_operation_type = i_calc_op_type;
SELECT standard_operation_id
FROM flm_mmm_operations
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND operation_type = i_calc_op_type;
SELECT max(weighted_resource_usage/resource_assigned) takt_assigned
FROM flm_mmm_op_resources
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND standard_operation_id = i_operation_id
AND resource_assigned > 0;
SELECT max(op_takt_as_assigned/operation_takt) max_ratio
FROM flm_mmm_operations
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND line_id = i_line_id
AND operation_type = i_calc_op_type
AND operation_takt > 0;
SELECT count(*)
INTO l_count
FROM flm_mmm_op_resources
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND standard_operation_id = op_rec.standard_operation_id
AND weighted_resource_usage > 0
AND (resource_assigned = 0 or resource_assigned IS NULL);
UPDATE flm_mmm_operations
SET op_takt_as_assigned = l_takt_assigned,
last_updated_by = fnd_global.user_id,
last_update_date = sysdate,
last_update_login = fnd_global.user_id
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND standard_operation_id = op_rec.standard_operation_id;
UPDATE flm_mmm_operations
SET op_takt_as_assigned = NULL,
last_updated_by = fnd_global.user_id,
last_update_date = sysdate,
last_update_login = fnd_global.user_id
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND standard_operation_id = op_rec.standard_operation_id;
SELECT count(*)
INTO l_count
FROM flm_mmm_operations
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND operation_type = i_calc_op_type
AND line_id = line_rec.line_id
AND op_takt_as_assigned IS NULL;
UPDATE flm_mmm_lines
SET line_takt_as_assigned = l_takt_assigned * line_takt,
last_updated_by = fnd_global.user_id,
last_update_date = sysdate,
last_update_login = fnd_global.user_id
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND line_id = line_rec.line_id
AND calculation_operation_type = i_calc_op_type;
UPDATE flm_mmm_lines
SET line_takt_as_assigned = NULL,
last_updated_by = fnd_global.user_id,
last_update_date = sysdate,
last_update_login = fnd_global.user_id
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND line_id = line_rec.line_id
AND calculation_operation_type = i_calc_op_type;
SELECT line_id
FROM flm_mmm_lines
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND calculation_operation_type = i_calc_op_type;
SELECT standard_operation_id
FROM flm_mmm_operations
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND operation_type = i_calc_op_type;
SELECT
max(100*(resource_needed-resource_assigned)/resource_assigned) over_pct
FROM flm_mmm_op_resources
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND standard_operation_id = i_operation_id
AND resource_assigned > 0;
SELECT max(bottleneck_resource_percent) over_pct
FROM flm_mmm_operations
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND line_id = i_line_id
AND operation_type = i_calc_op_type;
SELECT max(100*(ipk_needed-ipk_assigned)/ipk_assigned) over_pct
FROM flm_mmm_operations
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND line_id = i_line_id
AND operation_type = i_calc_op_type
AND ipk_assigned > 0;
SELECT count(*)
INTO l_count
FROM flm_mmm_op_resources
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND standard_operation_id = op_rec.standard_operation_id
AND (resource_needed > 0 or resource_needed is null)
AND resource_assigned = 0;
UPDATE flm_mmm_operations
SET bottleneck_resource_percent = l_res_over_pct,
last_updated_by = fnd_global.user_id,
last_update_date = sysdate,
last_update_login = fnd_global.user_id
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND standard_operation_id = op_rec.standard_operation_id;
UPDATE flm_mmm_operations
SET bottleneck_resource_percent = NULL,
last_updated_by = fnd_global.user_id,
last_update_date = sysdate,
last_update_login = fnd_global.user_id
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND standard_operation_id = op_rec.standard_operation_id;
SELECT count(*)
INTO l_count
FROM flm_mmm_operations
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND line_id = line_rec.line_id
AND operation_type = i_calc_op_type
AND bottleneck_resource_percent IS NULL;
SELECT count(*)
INTO l_count
FROM flm_mmm_operations
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND line_id = line_rec.line_id
AND operation_type = i_calc_op_type
AND (ipk_needed > 0 or ipk_needed IS NULL)
AND ipk_assigned = 0;
UPDATE flm_mmm_lines
SET bottleneck_resource_percent = l_res_over_pct,
bottleneck_ipk_percent = l_ipk_over_pct,
last_updated_by = fnd_global.user_id,
last_update_date = sysdate,
last_update_login = fnd_global.user_id
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND line_id = line_rec.line_id
AND calculation_operation_type = i_calc_op_type;
UPDATE flm_mmm_lines
SET bottleneck_resource_percent = l_res_over_pct,
bottleneck_ipk_percent = NULL,
last_updated_by = fnd_global.user_id,
last_update_date = sysdate,
last_update_login = fnd_global.user_id
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND line_id = line_rec.line_id
AND calculation_operation_type = i_calc_op_type;
SELECT line_id
FROM flm_mmm_lines
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND calculation_operation_type = i_calc_op_type;
SELECT standard_operation_id
FROM flm_mmm_operations
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND operation_type = i_calc_op_type;
SELECT resource_assigned,resource_needed
FROM flm_mmm_op_resources
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND standard_operation_id = i_operation_id;
SELECT max(resource_undercapacity) under_pct
FROM flm_mmm_operations
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND line_id = i_line_id
AND operation_type = i_calc_op_type;
SELECT ipk_assigned, ipk_needed
FROM flm_mmm_operations
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND line_id = i_line_id
AND operation_type = i_calc_op_type;
UPDATE flm_mmm_operations
SET resource_undercapacity = l_res_under_pct,
last_updated_by = fnd_global.user_id,
last_update_date = sysdate,
last_update_login = fnd_global.user_id
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND standard_operation_id = op_rec.standard_operation_id;
UPDATE flm_mmm_lines
SET resource_undercapacity = l_res_under_pct,
ipk_undercapacity = l_ipk_under_pct,
last_updated_by = fnd_global.user_id,
last_update_date = sysdate,
last_update_login = fnd_global.user_id
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND line_id = line_rec.line_id
AND calculation_operation_type = i_calc_op_type;
SELECT line_id,
standard_operation_id
FROM flm_mmm_operations
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND operation_type = i_calc_op_type;
SELECT sum(nvl(bos.total_process_efficiency, 0) * nvl(it.process_volume, 0) ),
sum(nvl(it.process_volume, 0))
INTO l_weighted_process_efficiency,
l_operation_process_volume
FROM flm_mmm_op_items it,
bom_operational_routings bor,
bom_operation_sequences bos
WHERE it.plan_id = i_plan_id
AND it.organization_id = i_organization_id
AND it.operation_type = i_calc_op_type
AND it.line_id = operation_rec.line_id
AND it.standard_operation_id = operation_rec.standard_operation_id
AND bor.organization_id = i_organization_id
AND bor.line_id = operation_rec.line_id
AND bor.assembly_item_id = it.assembly_item_id
AND bor.cfm_routing_flag = 1
AND bor.mixed_model_map_flag =1
AND bor.alternate_routing_designator IS NULL
AND bor.common_routing_sequence_id = bos.routing_sequence_id
AND bos.operation_type = i_calc_op_type
AND bos.standard_operation_id = operation_rec.standard_operation_id;
UPDATE flm_mmm_operations
SET process_efficiency = l_weighted_process_efficiency / l_operation_process_volume
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND standard_operation_id = operation_rec.standard_operation_id;
* PROCEDURE delete_old_records *
* *
************************************************************************/
PROCEDURE delete_old_records(
i_plan_id IN NUMBER,
i_organization_id IN NUMBER,
i_calc_op_type IN NUMBER,
i_replan_flag IN VARCHAR2) IS
BEGIN
-- FLM_MMM_LINES delete if not re-plan
-- if re-plan, the records will be changed(delete, then insert)
-- later (when calculating line takt).
-- this is because we might need to use its line hours
IF NOT (i_replan_flag = C_REPLAN_FLAG_YES) THEN
DELETE FROM flm_mmm_lines
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND calculation_operation_type = i_calc_op_type;
DELETE FROM flm_mmm_operations
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND operation_type = i_calc_op_type;
DELETE FROM flm_mmm_op_items
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND operation_type = i_calc_op_type;
DELETE FROM flm_mmm_op_resources
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND operation_type = i_calc_op_type;
END delete_old_records;
SELECT bw.week_start_date
INTO l_offset_date
FROM bom_cal_week_start_dates bw,
mtl_parameters mp
WHERE mp.organization_id = i_organization_id
AND bw.calendar_code = mp.calendar_code
AND bw.exception_set_id = mp.calendar_exception_set_id
AND bw.week_start_date <= i_start_date
AND bw.next_date >= i_start_date;
SELECT bp.period_start_date
INTO l_offset_date
FROM bom_period_start_dates bp,
mtl_parameters mp
WHERE mp.organization_id = i_organization_id
AND bp.calendar_code = mp.calendar_code
AND bp.exception_set_id = mp.calendar_exception_set_id
AND bp.period_start_date <= i_start_date
AND bp.next_date >= i_start_date;
l_error_msg := 'delete old records. ';
delete_old_records(
i_plan_id,
i_organization_id,
i_calculation_operation_type,
i_replan_flag);
l_demands.DELETE;
* PROCEDURE update_assigned_with_needed *
* *
************************************************************************/
PROCEDURE update_assigned_with_needed(
i_plan_id IN NUMBER,
i_organization_id IN NUMBER,
i_line_id IN NUMBER,
i_standard_operation_id IN NUMBER,
i_resource_id IN NUMBER,
i_calc_op_type IN NUMBER,
o_error_code OUT NOCOPY NUMBER) IS
l_dummy NUMBER;
SELECT resource_id
FROM flm_mmm_op_resources
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND operation_type = i_calc_op_type
FOR UPDATE NOWAIT;
SELECT standard_operation_id
FROM flm_mmm_operations
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND operation_type = i_calc_op_type
FOR UPDATE NOWAIT;
SELECT resource_id
FROM flm_mmm_op_resources
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND operation_type = i_calc_op_type
AND resource_id = i_resource_id
FOR UPDATE NOWAIT;
SELECT resource_id
FROM flm_mmm_op_resources
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND operation_type = i_calc_op_type
AND line_id = i_line_id
FOR UPDATE NOWAIT;
SELECT standard_operation_id
FROM flm_mmm_operations
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND operation_type = i_calc_op_type
AND line_id = i_line_id
FOR UPDATE NOWAIT;
SELECT resource_id
FROM flm_mmm_op_resources
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND operation_type = i_calc_op_type
AND standard_operation_id = i_standard_operation_id
FOR UPDATE NOWAIT;
SELECT standard_operation_id
FROM flm_mmm_operations
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND operation_type = i_calc_op_type
AND standard_operation_id = i_standard_operation_id
FOR UPDATE NOWAIT;
UPDATE flm_mmm_op_resources
SET resource_assigned = resource_needed,
last_updated_by = fnd_global.user_id,
last_update_date = sysdate,
last_update_login = fnd_global.user_id
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND operation_type = i_calc_op_type;
UPDATE flm_mmm_operations
SET ipk_assigned = ipk_needed,
last_updated_by = fnd_global.user_id,
last_update_date = sysdate,
last_update_login = fnd_global.user_id
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND operation_type = i_calc_op_type;
UPDATE flm_mmm_op_resources
SET resource_assigned = resource_needed,
last_updated_by = fnd_global.user_id,
last_update_date = sysdate,
last_update_login = fnd_global.user_id
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND operation_type = i_calc_op_type
AND resource_id = i_resource_id;
UPDATE flm_mmm_op_resources
SET resource_assigned = resource_needed,
last_updated_by = fnd_global.user_id,
last_update_date = sysdate,
last_update_login = fnd_global.user_id
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND operation_type = i_calc_op_type
AND line_id = i_line_id;
UPDATE flm_mmm_operations
SET ipk_assigned = ipk_needed,
last_updated_by = fnd_global.user_id,
last_update_date = sysdate,
last_update_login = fnd_global.user_id
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND operation_type = i_calc_op_type
AND line_id = i_line_id;
UPDATE flm_mmm_op_resources
SET resource_assigned = resource_needed,
last_updated_by = fnd_global.user_id,
last_update_date = sysdate,
last_update_login = fnd_global.user_id
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND operation_type = i_calc_op_type
AND standard_operation_id = i_standard_operation_id;
UPDATE flm_mmm_operations
SET ipk_assigned = ipk_needed,
last_updated_by = fnd_global.user_id,
last_update_date = sysdate,
last_update_login = fnd_global.user_id
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND operation_type = i_calc_op_type
AND standard_operation_id = i_standard_operation_id;
END update_assigned_with_needed;
SELECT standard_operation_id operation_id,
ipk_assigned,
line_id
FROM flm_mmm_operations
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND operation_type = i_operation_type;
SELECT resource_id,
standard_operation_id operation_id,
resource_assigned,
line_id
FROM flm_mmm_op_resources
WHERE plan_id = i_plan_id
AND organization_id = i_organization_id
AND operation_type = i_operation_type;
SELECT count(*)
INTO l_count
FROM flm_mmm_operations
WHERE organization_id = i_organization_id
AND plan_id = -1
AND standard_operation_id = op_rec.operation_id;
UPDATE flm_mmm_operations
SET ipk_assigned = op_rec.ipk_assigned,
last_updated_by = fnd_global.user_id,
last_update_date = sysdate,
last_update_login = fnd_global.user_id
WHERE organization_id = i_organization_id
AND plan_id = -1
AND standard_operation_id = op_rec.operation_id;
INSERT INTO FLM_MMM_OPERATIONS (
PLAN_ID,
ORGANIZATION_ID,
STANDARD_OPERATION_ID,
LAST_UPDATE_DATE,
LAST_UPDATED_BY,
CREATION_DATE,
CREATED_BY,
LAST_UPDATE_LOGIN,
OPERATION_TYPE,
LINE_ID,
IPK_ASSIGNED
) VALUES (
-1,
i_organization_id,
op_rec.operation_id,
sysdate,
fnd_global.user_id,
sysdate,
fnd_global.user_id,
fnd_global.user_id,
i_operation_type,
op_rec.LINE_ID,
op_rec.ipk_assigned
);
SELECT count(*)
INTO l_count
FROM flm_mmm_op_resources
WHERE organization_id = i_organization_id
AND plan_id = -1
AND resource_id = res_rec.resource_id
AND standard_operation_id = res_rec.operation_id;
UPDATE flm_mmm_op_resources
SET resource_assigned = res_rec.resource_assigned,
last_updated_by = fnd_global.user_id,
last_update_date = sysdate,
last_update_login = fnd_global.user_id
WHERE organization_id = i_organization_id
AND plan_id = -1
AND resource_id = res_rec.resource_id
AND standard_operation_id = res_rec.operation_id;
INSERT INTO FLM_MMM_OP_RESOURCES (
PLAN_ID,
ORGANIZATION_ID,
RESOURCE_ID,
STANDARD_OPERATION_ID,
LAST_UPDATE_DATE,
LAST_UPDATED_BY,
CREATION_DATE,
CREATED_BY,
LAST_UPDATE_LOGIN,
OPERATION_TYPE,
LINE_ID,
RESOURCE_ASSIGNED
) VALUES (
-1,
i_organization_id,
res_rec.resource_id,
res_rec.operation_id,
sysdate,
fnd_global.user_id,
sysdate,
fnd_global.user_id,
fnd_global.user_id,
i_operation_type,
res_rec.line_id,
res_rec.resource_assigned
);