12:
13: IF P_JOB_INTERFACE_GROUP_ID IS NULL THEN
14:
15: IF P_SCHEDULING_LEVEL = 1 THEN
16: INSERT INTO WIP_SCHEDULING_INTERFACE
17: (
18: interface_id,
19: group_id,
20: wip_entity_id,
64: WHERE WIP_ENTITY_ID = P_WIP_ENTITY_ID
65: AND ORGANIZATION_ID = P_ORGANIZATION_ID);
66:
67: ELSIF P_SCHEDULING_LEVEL = 2 THEN
68: INSERT INTO WIP_SCHEDULING_INTERFACE
69: (
70: interface_id,
71: group_id,
72: wip_entity_id,
121:
122: ELSE
123:
124: IF P_SCHEDULING_LEVEL = 1 THEN
125: INSERT INTO WIP_SCHEDULING_INTERFACE
126: (
127: interface_id,
128: group_id,
129: wip_entity_id,
178: AND WJSI.PROCESS_PHASE = WIP_CONSTANTS.ML_COMPLETE
179: AND WJSI.PROCESS_STATUS = WIP_CONSTANTS.ML_COMPLETE));
180:
181: ELSIF P_SCHEDULING_LEVEL = 2 THEN
182: INSERT INTO WIP_SCHEDULING_INTERFACE
183: (
184: interface_id,
185: group_id,
186: wip_entity_id,
247: x_max_date DATE;
248:
249: CURSOR CJOB IS
250: SELECT DISTINCT WIP_ENTITY_ID, ORGANIZATION_ID, SCHEDULING_LEVEL
251: FROM WIP_SCHEDULING_INTERFACE
252: WHERE GROUP_ID = P_GROUP_ID
253: AND PROCESS_PHASE = WIP_CONSTANTS.ML_VALIDATION
254: AND PROCESS_STATUS = WIP_CONSTANTS.RUNNING;
255:
260: AND ORGANIZATION_ID = org_id;
261:
262: BEGIN
263:
264: UPDATE WIP_SCHEDULING_INTERFACE
265: SET PROCESS_STATUS = WIP_CONSTANTS.RUNNING
266: WHERE GROUP_ID = P_GROUP_ID
267: AND PROCESS_PHASE = WIP_CONSTANTS.ML_VALIDATION
268: AND PROCESS_STATUS = WIP_CONSTANTS.PENDING;
290: OPERATION_COMPLETION_DATE,
291: OPERATION_START_DATE,
292: OPERATION_COMPLETION_DATE,
293: LAST_UPDATED_BY
294: FROM WIP_SCHEDULING_INTERFACE WSI
295: WHERE WSI.WIP_ENTITY_ID = C.WIP_ENTITY_ID
296: AND WSI.OPERATION_SEQ_NUM = WO.OPERATION_SEQ_NUM
297: AND WSI.GROUP_ID = P_GROUP_ID),
298: LAST_UPDATE_DATE = SYSDATE
325: (SELECT RESOURCE_START_DATE,
326: RESOURCE_COMPLETION_DATE,
327: USAGE_RATE_OR_AMOUNT,
328: LAST_UPDATED_BY
329: FROM WIP_SCHEDULING_INTERFACE WSI
330: WHERE WSI.WIP_ENTITY_ID = C.WIP_ENTITY_ID
331: AND WSI.OPERATION_SEQ_NUM = WOR.OPERATION_SEQ_NUM
332: AND WSI.RESOURCE_SEQ_NUM = WOR.RESOURCE_SEQ_NUM
333: AND WSI.GROUP_ID = P_GROUP_ID),
366: C.ORGANIZATION_ID);
367:
368: END LOOP;
369:
370: UPDATE WIP_SCHEDULING_INTERFACE
371: SET PROCESS_STATUS = WIP_CONSTANTS.ML_COMPLETE,
372: PROCESS_PHASE = WIP_CONSTANTS.ML_COMPLETE
373: WHERE GROUP_ID = P_GROUP_ID
374: AND PROCESS_PHASE = WIP_CONSTANTS.ML_VALIDATION
373: WHERE GROUP_ID = P_GROUP_ID
374: AND PROCESS_PHASE = WIP_CONSTANTS.ML_VALIDATION
375: AND PROCESS_STATUS = WIP_CONSTANTS.RUNNING;
376:
377: DELETE FROM WIP_SCHEDULING_INTERFACE
378: WHERE GROUP_ID = P_GROUP_ID
379: AND PROCESS_STATUS = WIP_CONSTANTS.ML_COMPLETE
380: AND PROCESS_PHASE = WIP_CONSTANTS.ML_COMPLETE;
381:
391: BEGIN
392: -- checks if records are available in the interface table
393: SELECT count(*)
394: INTO recCount
395: FROM wip_scheduling_interface
396: WHERE group_id = p_group_id
397: and process_phase = WIP_CONSTANTS.ML_VALIDATION
398: and process_status = WIP_CONSTANTS.PENDING;
399:
400: if (recCount = 0) then
401: retcode := 1;
402: errbuf := 'LOAD_WIP: No schedules available in group '
403: || p_group_id || '.
404: Please make sure data are available in WIP_SCHEDULING_INTERFACE with PROCESS_PHASE = 2 and PROCESS_STATUS = 1';
405:
406: RETURN;
407: end if;
408:
413:
414: -- checks if there are errors
415: SELECT count(*)
416: INTO recCount
417: FROM wip_scheduling_interface
418: WHERE group_id = p_group_id
419: and process_status = WIP_CONSTANTS.ERROR;
420:
421: if (recCount > 0) then
457: -- Jobs must exist and be status 1,3,4,6
458:
459: WIP_MASS_LOAD_UTILITIES.Error
460: (P_Group_Id,
461: 'WIP_SCHEDULING_INTERFACE WSI',
462: WIP_CONSTANTS.ERROR,
463: ' NOT EXISTS
464: (SELECT 1
465: FROM WIP_DISCRETE_JOBS WDJ
477: -- Scheduling level must be 1 (operation) or 2 (resource)
478:
479: WIP_MASS_LOAD_UTILITIES.Error
480: (P_Group_Id,
481: 'WIP_SCHEDULING_INTERFACE WSI',
482: WIP_CONSTANTS.ERROR,
483: ' SCHEDULING_LEVEL NOT IN (1,2) ',
484: WIP_MASS_LOAD_UTILITIES.MSG_ERROR,
485: 'WIP_SI_INVALID_SCHED_LEVEL');
492: -- Give Error if dates are null or if start date > comp date
493:
494: WIP_MASS_LOAD_UTILITIES.Error
495: (P_Group_Id,
496: 'WIP_SCHEDULING_INTERFACE WSI',
497: WIP_CONSTANTS.ERROR,
498: ' ((WSI.SCHEDULING_LEVEL = 2
499: AND WSI.USAGE_RATE_OR_AMOUNT < 0)) ',
500: WIP_MASS_LOAD_UTILITIES.MSG_ERROR,
508: -- Give Error if dates are null or if start date > comp date
509:
510: WIP_MASS_LOAD_UTILITIES.Error
511: (P_Group_Id,
512: 'WIP_SCHEDULING_INTERFACE WSI',
513: WIP_CONSTANTS.ERROR,
514: ' ((WSI.SCHEDULING_LEVEL = 1
515: AND( (WSI.OPERATION_COMPLETION_DATE IS NULL
516: OR WSI.OPERATION_START_DATE IS NULL)
531: BEGIN
532: -- Need to worry about erroring out 1 ==> erroring out all
533: WIP_MASS_LOAD_UTILITIES.Error
534: (P_Group_Id,
535: 'WIP_SCHEDULING_INTERFACE WSI',
536: WIP_CONSTANTS.ERROR,
537: ' WSI.SCHEDULING_LEVEL = 1
538: AND EXISTS (
539: SELECT OPERATION_SEQ_NUM
536: WIP_CONSTANTS.ERROR,
537: ' WSI.SCHEDULING_LEVEL = 1
538: AND EXISTS (
539: SELECT OPERATION_SEQ_NUM
540: FROM WIP_SCHEDULING_INTERFACE SI2
541: WHERE SI2.GROUP_ID = WSI.GROUP_ID
542: AND SI2.WIP_ENTITY_ID = WSI.WIP_ENTITY_ID
543: AND SI2.ORGANIZATION_ID = WSI.ORGANIZATION_ID
544: AND SI2.PROCESS_PHASE = 2
552: 'WIP_SI_INVALID_OPS');
553:
554: WIP_MASS_LOAD_UTILITIES.Error
555: (P_Group_Id,
556: 'WIP_SCHEDULING_INTERFACE WSI',
557: WIP_CONSTANTS.ERROR,
558: ' WSI.SCHEDULING_LEVEL = 1
559: AND EXISTS (
560: SELECT OPERATION_SEQ_NUM
562: WHERE WO.WIP_ENTITY_ID = WSI.WIP_ENTITY_ID
563: AND WO.ORGANIZATION_ID = WSI.ORGANIZATION_ID
564: MINUS
565: SELECT OPERATION_SEQ_NUM
566: FROM WIP_SCHEDULING_INTERFACE SI2
567: WHERE GROUP_ID = WSI.GROUP_ID
568: AND SI2.WIP_ENTITY_ID = WSI.WIP_ENTITY_ID
569: AND SI2.ORGANIZATION_ID = WSI.ORGANIZATION_ID
570: AND SI2.PROCESS_PHASE = 2
573: 'WIP_SI_INVALID_OPS');
574:
575: WIP_MASS_LOAD_UTILITIES.Error
576: (P_Group_Id,
577: 'WIP_SCHEDULING_INTERFACE WSI',
578: WIP_CONSTANTS.ERROR,
579: ' WSI.SCHEDULING_LEVEL = 2
580: AND EXISTS (
581: SELECT OPERATION_SEQ_NUM, RESOURCE_SEQ_NUM
578: WIP_CONSTANTS.ERROR,
579: ' WSI.SCHEDULING_LEVEL = 2
580: AND EXISTS (
581: SELECT OPERATION_SEQ_NUM, RESOURCE_SEQ_NUM
582: FROM WIP_SCHEDULING_INTERFACE SI2
583: WHERE GROUP_ID = WSI.GROUP_ID
584: AND SI2.WIP_ENTITY_ID = WSI.WIP_ENTITY_ID
585: AND SI2.ORGANIZATION_ID = WSI.ORGANIZATION_ID
586: AND SI2.PROCESS_PHASE = 2
595: 'WIP_SI_INVALID_RES');
596:
597: WIP_MASS_LOAD_UTILITIES.Error
598: (P_Group_Id,
599: 'WIP_SCHEDULING_INTERFACE WSI',
600: WIP_CONSTANTS.ERROR,
601: ' WSI.SCHEDULING_LEVEL = 2
602: AND EXISTS (
603: SELECT OPERATION_SEQ_NUM, RESOURCE_SEQ_NUM
605: WHERE WOR.WIP_ENTITY_ID = WSI.WIP_ENTITY_ID
606: AND WOR.ORGANIZATION_ID = WSI.ORGANIZATION_ID
607: MINUS
608: SELECT OPERATION_SEQ_NUM, RESOURCE_SEQ_NUM
609: FROM WIP_SCHEDULING_INTERFACE SI2
610: WHERE GROUP_ID = WSI.GROUP_ID
611: AND SI2.WIP_ENTITY_ID = WSI.WIP_ENTITY_ID
612: AND SI2.ORGANIZATION_ID = WSI.ORGANIZATION_ID
613: AND SI2.PROCESS_PHASE = 2
623: (P_GROUP_ID NUMBER) IS
624: BEGIN
625: WIP_MASS_LOAD_UTILITIES.Error
626: (P_Group_Id,
627: 'WIP_SCHEDULING_INTERFACE WSI',
628: WIP_CONSTANTS.ERROR,
629: ' EXISTS (SELECT 1
630: FROM WIP_SCHEDULING_INTERFACE WSI2
631: WHERE WSI2.GROUP_ID = WSI.GROUP_ID
626: (P_Group_Id,
627: 'WIP_SCHEDULING_INTERFACE WSI',
628: WIP_CONSTANTS.ERROR,
629: ' EXISTS (SELECT 1
630: FROM WIP_SCHEDULING_INTERFACE WSI2
631: WHERE WSI2.GROUP_ID = WSI.GROUP_ID
632: AND WSI2.WIP_ENTITY_ID = WSI.WIP_ENTITY_ID
633: AND WSI2.PROCESS_STATUS = 3) ',
634: WIP_MASS_LOAD_UTILITIES.MSG_ERROR,