[Home] [Help]
81: --If it is the first period, then if dat(i+1) is a Begin Date in schedule lines, period prompt would be
82: --from dat(i) to (dat(i+1)-1), else dat(i) to dat(i+1).
83: --
84: if ((start_period+n)=1) then
85: select count(*) into v_count1 from psp_schedule_lines
86: where schedule_begin_date = dat(start_period+n+1)
87: and schedule_hierarchy_id = s_id;
88: if v_count1 = 0 then
89: prompt1 := to_char(dat(start_period+n));
109: --if dat(i) = dat(i+1) or dat(i+1) = dat(i)+1, period prompt would be from dat(i) to dat(i+1).
110: --
111:
112: else
113: select count(*) into v_count1 from psp_schedule_lines
114: where schedule_begin_date = dat(start_period+n)
115: and schedule_hierarchy_id = s_id;
116:
117: select count(*) into v_count2 from psp_schedule_lines
113: select count(*) into v_count1 from psp_schedule_lines
114: where schedule_begin_date = dat(start_period+n)
115: and schedule_hierarchy_id = s_id;
116:
117: select count(*) into v_count2 from psp_schedule_lines
118: where schedule_begin_date = dat(start_period+n+1)
119: and schedule_hierarchy_id = s_id;
120:
121: select count(*) into v_count3 from psp_schedule_lines
117: select count(*) into v_count2 from psp_schedule_lines
118: where schedule_begin_date = dat(start_period+n+1)
119: and schedule_hierarchy_id = s_id;
120:
121: select count(*) into v_count3 from psp_schedule_lines
122: where schedule_end_date = dat(start_period+n)
123: and schedule_hierarchy_id = s_id;
124:
125: select count(*) into v_count4 from psp_schedule_lines
121: select count(*) into v_count3 from psp_schedule_lines
122: where schedule_end_date = dat(start_period+n)
123: and schedule_hierarchy_id = s_id;
124:
125: select count(*) into v_count4 from psp_schedule_lines
126: where schedule_end_date = dat(start_period+n+1)
127: and schedule_hierarchy_id = s_id;
128:
129: if v_count1 = 0 then
243: SELECT schedule_line_id l_id,
244: schedule_begin_date sbd,
245: schedule_end_date sed,
246: schedule_percent sp
247: FROM psp_schedule_lines
248: WHERE schedule_hierarchy_id = s_id;
249:
250: --Get the dates (schedule begin dates and end dates) in ascending order of dates. If a date is present in
251: --begin as well as the end date, bring the End Date first.
250: --Get the dates (schedule begin dates and end dates) in ascending order of dates. If a date is present in
251: --begin as well as the end date, bring the End Date first.
252: CURSOR dates(s_id NUMBER) IS
253: SELECT schedule_begin_date dat , 'B'
254: FROM psp_schedule_lines
255: WHERE schedule_hierarchy_id = s_id
256: UNION
257: SELECT schedule_end_date dat , 'E'
258: FROM psp_schedule_lines
254: FROM psp_schedule_lines
255: WHERE schedule_hierarchy_id = s_id
256: UNION
257: SELECT schedule_end_date dat , 'E'
258: FROM psp_schedule_lines
259: WHERE schedule_hierarchy_id = s_id
260: ORDER BY 1, 2 ;
261:
262: i BINARY_INTEGER :=0;
318:
319: --
320: --Insert records in temporary table PSP_MATRIX_DRIVER. There may be some dates in 'dat1' which were not
321: --included in 'dat' because Begin Date was exactly 1 day greater than the End Date. In such a case,
322: --instead of comparing dates of 'dat' with those of psp_schedule_lines, compare (Begin Date+1) and End
323: --Date of 'dat' with those of psp_schedule_lines.
324: --
325: OPEN sched_lines(sch_id);
326: LOOP
319: --
320: --Insert records in temporary table PSP_MATRIX_DRIVER. There may be some dates in 'dat1' which were not
321: --included in 'dat' because Begin Date was exactly 1 day greater than the End Date. In such a case,
322: --instead of comparing dates of 'dat' with those of psp_schedule_lines, compare (Begin Date+1) and End
323: --Date of 'dat' with those of psp_schedule_lines.
324: --
325: OPEN sched_lines(sch_id);
326: LOOP
327: FETCH sched_lines INTO sch_rec;
413: SELECT global_run_id, schedule_line_id,
414: schedule_chunk.schedule_begin_date(rowno),
415: schedule_chunk.schedule_end_date(rowno),
416: schedule_percent
417: FROM psp_schedule_lines psl
418: WHERE schedule_hierarchy_id = sch_id
419: AND psl.schedule_begin_date <= schedule_chunk.schedule_end_date(rowno)
420: AND psl.schedule_end_date >= schedule_chunk.schedule_begin_date(rowno);
421:
428: SELECT global_run_id, schedule_line_id,
429: schedule_chunk.schedule_begin_date(rowno),
430: schedule_chunk.schedule_end_date(rowno),
431: 0
432: FROM psp_schedule_lines psl
433: WHERE schedule_hierarchy_id = sch_id
434: AND (psl.schedule_begin_date > schedule_chunk.schedule_end_date(rowno)
435: OR psl.schedule_end_date < schedule_chunk.schedule_begin_date(rowno));
436:
543:
544: CURSOR sch_hier_cur(v_organization_id NUMBER) IS
545: SELECT distinct psh.schedule_hierarchy_id
546: FROM psp_schedule_hierarchy psh,
547: psp_schedule_lines psl,
548: per_assignments_f paf
549: WHERE psh.schedule_hierarchy_id = psl.schedule_hierarchy_id
550: AND paf.assignment_id = psh.assignment_id
551: AND paf.organization_id = v_organization_id
573: SELECT schedule_line_id l_id,
574: schedule_begin_date sbd,
575: schedule_end_date sed,
576: schedule_percent sp
577: FROM psp_schedule_lines
578: WHERE schedule_hierarchy_id = schedule_hierarchy_id
579: AND schedule_end_date >= p_period_from
580: AND schedule_begin_date <= p_period_to;
581:
580: AND schedule_begin_date <= p_period_to;
581:
582: CURSOR dates(p_schedule_hierarchy_id NUMBER) IS
583: SELECT schedule_begin_date dat , 'B'
584: FROM psp_schedule_lines
585: WHERE schedule_hierarchy_id = p_schedule_hierarchy_id
586: AND schedule_end_date >= p_period_from
587: AND schedule_begin_date <= p_period_to
588: UNION
586: AND schedule_end_date >= p_period_from
587: AND schedule_begin_date <= p_period_to
588: UNION
589: SELECT schedule_end_date dat , 'E'
590: FROM psp_schedule_lines
591: WHERE schedule_hierarchy_id = p_schedule_hierarchy_id
592: AND schedule_end_date >= p_period_from
593: AND schedule_begin_date <= p_period_to
594: ORDER BY 1, 2 ;
600:
601: Cursor c_all_org is
602: SELECT distinct paf.organization_id
603: FROM psp_schedule_hierarchy psh,
604: psp_schedule_lines psl,
605: per_assignments_f paf
606: WHERE psh.schedule_hierarchy_id = psl.schedule_hierarchy_id
607: AND paf.assignment_id = psh.assignment_id
608: AND psl.schedule_begin_date <= p_period_to
669: SELECT global_run_id, schedule_line_id,
670: GREATEST(p_period_from, schedule_chunk.schedule_begin_date(rowno)),
671: LEAST(p_period_to, schedule_chunk.schedule_end_date(rowno)),
672: schedule_percent
673: FROM psp_schedule_lines psl
674: WHERE schedule_hierarchy_id = sch_hier_rec.schedule_hierarchy_id
675: AND psl.schedule_begin_date <= p_period_to
676: AND psl.schedule_end_date >= p_period_from
677: AND psl.schedule_begin_date <= schedule_chunk.schedule_end_date(rowno)
754: SELECT global_run_id, schedule_line_id,
755: GREATEST(p_period_from, schedule_chunk.schedule_begin_date(rowno)),
756: LEAST(p_period_to, schedule_chunk.schedule_end_date(rowno)),
757: schedule_percent
758: FROM psp_schedule_lines psl
759: WHERE schedule_hierarchy_id = sch_hier_rec.schedule_hierarchy_id
760: AND psl.schedule_begin_date <= p_period_to
761: AND psl.schedule_end_date >= p_period_from
762: AND psl.schedule_begin_date <= schedule_chunk.schedule_end_date(rowno)
791: UPDATE psp_matrix_driver pmd
792: SET period_start_date = period_start_date + 1
793: WHERE run_id = global_run_id
794: AND EXISTS (SELECT 1
795: FROM psp_schedule_lines psl,
796: psp_schedule_lines psl2
797: WHERE psl.schedule_line_id = pmd.schedule_line_id
798: AND psl2.schedule_hierarchy_id = psl.schedule_hierarchy_id
799: AND psl2.schedule_end_date = pmd.period_start_date
792: SET period_start_date = period_start_date + 1
793: WHERE run_id = global_run_id
794: AND EXISTS (SELECT 1
795: FROM psp_schedule_lines psl,
796: psp_schedule_lines psl2
797: WHERE psl.schedule_line_id = pmd.schedule_line_id
798: AND psl2.schedule_hierarchy_id = psl.schedule_hierarchy_id
799: AND psl2.schedule_end_date = pmd.period_start_date
800: AND psl2.schedule_line_id <> psl.schedule_line_id);
802: UPDATE psp_matrix_driver pmd
803: SET period_end_date = period_end_date - 1
804: WHERE run_id = global_run_id
805: AND EXISTS (SELECT 1
806: FROM psp_schedule_lines psl,
807: psp_schedule_lines psl2
808: WHERE psl.schedule_line_id = pmd.schedule_line_id
809: AND psl2.schedule_hierarchy_id = psl.schedule_hierarchy_id
810: AND psl2.schedule_begin_date = pmd.period_end_date
803: SET period_end_date = period_end_date - 1
804: WHERE run_id = global_run_id
805: AND EXISTS (SELECT 1
806: FROM psp_schedule_lines psl,
807: psp_schedule_lines psl2
808: WHERE psl.schedule_line_id = pmd.schedule_line_id
809: AND psl2.schedule_hierarchy_id = psl.schedule_hierarchy_id
810: AND psl2.schedule_begin_date = pmd.period_end_date
811: AND psl2.schedule_line_id <> psl.schedule_line_id);
818: SET period_end_date = period_end_date - 1
819: WHERE run_id = global_run_id
820: AND period_start_date < period_end_date
821: AND period_start_date = (SELECT MIN(psl1.schedule_begin_date)
822: FROM psp_schedule_lines psl1
823: WHERE psl1.schedule_hierarchy_id = (SELECT psl2.schedule_hierarchy_id
824: FROM psp_schedule_lines psl2
825: WHERE psl2.schedule_line_id = pmd.schedule_line_id))
826: AND EXISTS (SELECT 1
820: AND period_start_date < period_end_date
821: AND period_start_date = (SELECT MIN(psl1.schedule_begin_date)
822: FROM psp_schedule_lines psl1
823: WHERE psl1.schedule_hierarchy_id = (SELECT psl2.schedule_hierarchy_id
824: FROM psp_schedule_lines psl2
825: WHERE psl2.schedule_line_id = pmd.schedule_line_id))
826: AND EXISTS (SELECT 1
827: FROM psp_schedule_lines psl1
828: WHERE psl1.schedule_line_id <> pmd.schedule_line_id
823: WHERE psl1.schedule_hierarchy_id = (SELECT psl2.schedule_hierarchy_id
824: FROM psp_schedule_lines psl2
825: WHERE psl2.schedule_line_id = pmd.schedule_line_id))
826: AND EXISTS (SELECT 1
827: FROM psp_schedule_lines psl1
828: WHERE psl1.schedule_line_id <> pmd.schedule_line_id
829: AND psl1.schedule_begin_date = pmd.period_end_date
830: AND psl1.schedule_hierarchy_id = (SELECT psl2.schedule_hierarchy_id
831: FROM psp_schedule_lines psl2
827: FROM psp_schedule_lines psl1
828: WHERE psl1.schedule_line_id <> pmd.schedule_line_id
829: AND psl1.schedule_begin_date = pmd.period_end_date
830: AND psl1.schedule_hierarchy_id = (SELECT psl2.schedule_hierarchy_id
831: FROM psp_schedule_lines psl2
832: WHERE psl2.schedule_line_id = pmd.schedule_line_id));
833:
834: UPDATE psp_matrix_driver pmd
835: SET period_end_date = period_end_date - 1
835: SET period_end_date = period_end_date - 1
836: WHERE run_id = global_run_id
837: AND period_start_date < period_end_date
838: AND NOT (NOT EXISTS (SELECT 1
839: FROM psp_schedule_lines psl1
840: WHERE psl1.schedule_line_id <> pmd.schedule_line_id
841: AND psl1.schedule_begin_date = pmd.period_end_date
842: AND psl1.schedule_hierarchy_id = (SELECT psl2.schedule_hierarchy_id
843: FROM psp_schedule_lines psl2
839: FROM psp_schedule_lines psl1
840: WHERE psl1.schedule_line_id <> pmd.schedule_line_id
841: AND psl1.schedule_begin_date = pmd.period_end_date
842: AND psl1.schedule_hierarchy_id = (SELECT psl2.schedule_hierarchy_id
843: FROM psp_schedule_lines psl2
844: where psl2.schedule_line_id = pmd.schedule_line_id))
845: AND EXISTS (SELECT 1
846: FROM psp_schedule_lines psl1
847: WHERE psl1.schedule_end_date = pmd.period_end_date
842: AND psl1.schedule_hierarchy_id = (SELECT psl2.schedule_hierarchy_id
843: FROM psp_schedule_lines psl2
844: where psl2.schedule_line_id = pmd.schedule_line_id))
845: AND EXISTS (SELECT 1
846: FROM psp_schedule_lines psl1
847: WHERE psl1.schedule_end_date = pmd.period_end_date
848: AND psl1.schedule_hierarchy_id = (SELECT psl2.schedule_hierarchy_id
849: FROM psp_schedule_lines psl2
850: WHERE psl2.schedule_line_id = pmd.schedule_line_id)))
845: AND EXISTS (SELECT 1
846: FROM psp_schedule_lines psl1
847: WHERE psl1.schedule_end_date = pmd.period_end_date
848: AND psl1.schedule_hierarchy_id = (SELECT psl2.schedule_hierarchy_id
849: FROM psp_schedule_lines psl2
850: WHERE psl2.schedule_line_id = pmd.schedule_line_id)))
851: AND period_start_date <> (SELECT MIN(psl1.schedule_begin_date)
852: FROM psp_schedule_lines psl1
853: WHERE psl1.schedule_hierarchy_id = (SELECT psl2.schedule_hierarchy_id
848: AND psl1.schedule_hierarchy_id = (SELECT psl2.schedule_hierarchy_id
849: FROM psp_schedule_lines psl2
850: WHERE psl2.schedule_line_id = pmd.schedule_line_id)))
851: AND period_start_date <> (SELECT MIN(psl1.schedule_begin_date)
852: FROM psp_schedule_lines psl1
853: WHERE psl1.schedule_hierarchy_id = (SELECT psl2.schedule_hierarchy_id
854: FROM psp_schedule_lines psl2
855: WHERE psl2.schedule_line_id = pmd.schedule_line_id));
856:
850: WHERE psl2.schedule_line_id = pmd.schedule_line_id)))
851: AND period_start_date <> (SELECT MIN(psl1.schedule_begin_date)
852: FROM psp_schedule_lines psl1
853: WHERE psl1.schedule_hierarchy_id = (SELECT psl2.schedule_hierarchy_id
854: FROM psp_schedule_lines psl2
855: WHERE psl2.schedule_line_id = pmd.schedule_line_id));
856:
857: -- Updating the period_start_date for periods in between schedule begin and end dates
858: -- errbuf := 'Period Start Date Update of Matrix Driver failed';
860: SET period_start_date = period_start_date + 1
861: WHERE run_id = global_run_id
862: AND period_start_date < period_end_date
863: AND NOT EXISTS (SELECT 1
864: FROM psp_schedule_lines psl1
865: WHERE psl1.schedule_begin_date = pmd.period_start_date
866: AND psl1.schedule_hierarchy_id = (SELECT psl2.schedule_hierarchy_id
867: FROM psp_schedule_lines psl2
868: WHERE psl2.schedule_line_id = pmd.schedule_line_id))
863: AND NOT EXISTS (SELECT 1
864: FROM psp_schedule_lines psl1
865: WHERE psl1.schedule_begin_date = pmd.period_start_date
866: AND psl1.schedule_hierarchy_id = (SELECT psl2.schedule_hierarchy_id
867: FROM psp_schedule_lines psl2
868: WHERE psl2.schedule_line_id = pmd.schedule_line_id))
869: AND period_start_date <> (SELECT MIN(psl1.schedule_begin_date)
870: FROM psp_schedule_lines psl1
871: WHERE psl1.schedule_hierarchy_id = (SELECT psl2.schedule_hierarchy_id
866: AND psl1.schedule_hierarchy_id = (SELECT psl2.schedule_hierarchy_id
867: FROM psp_schedule_lines psl2
868: WHERE psl2.schedule_line_id = pmd.schedule_line_id))
869: AND period_start_date <> (SELECT MIN(psl1.schedule_begin_date)
870: FROM psp_schedule_lines psl1
871: WHERE psl1.schedule_hierarchy_id = (SELECT psl2.schedule_hierarchy_id
872: FROM psp_schedule_lines psl2
873: WHERE psl2.schedule_line_id = pmd.schedule_line_id));
874:
868: WHERE psl2.schedule_line_id = pmd.schedule_line_id))
869: AND period_start_date <> (SELECT MIN(psl1.schedule_begin_date)
870: FROM psp_schedule_lines psl1
871: WHERE psl1.schedule_hierarchy_id = (SELECT psl2.schedule_hierarchy_id
872: FROM psp_schedule_lines psl2
873: WHERE psl2.schedule_line_id = pmd.schedule_line_id));
874:
875: UPDATE psp_matrix_driver pmd
876: SET period_start_date = period_start_date + 1
876: SET period_start_date = period_start_date + 1
877: WHERE run_id = global_run_id
878: AND period_start_date < period_end_date
879: AND EXISTS (SELECT 1
880: FROM psp_schedule_lines psl1
881: WHERE psl1.schedule_begin_date = pmd.period_start_date
882: AND psl1.schedule_hierarchy_id = (SELECT psl2.schedule_hierarchy_id
883: FROM psp_schedule_lines psl2
884: WHERE psl2.schedule_line_id = pmd.schedule_line_id))
879: AND EXISTS (SELECT 1
880: FROM psp_schedule_lines psl1
881: WHERE psl1.schedule_begin_date = pmd.period_start_date
882: AND psl1.schedule_hierarchy_id = (SELECT psl2.schedule_hierarchy_id
883: FROM psp_schedule_lines psl2
884: WHERE psl2.schedule_line_id = pmd.schedule_line_id))
885: AND EXISTS (SELECT 1
886: FROM psp_schedule_lines psl1
887: WHERE psl1.schedule_line_id <> pmd.schedule_line_id
882: AND psl1.schedule_hierarchy_id = (SELECT psl2.schedule_hierarchy_id
883: FROM psp_schedule_lines psl2
884: WHERE psl2.schedule_line_id = pmd.schedule_line_id))
885: AND EXISTS (SELECT 1
886: FROM psp_schedule_lines psl1
887: WHERE psl1.schedule_line_id <> pmd.schedule_line_id
888: AND psl1.schedule_end_date = pmd.period_start_date
889: AND psl1.schedule_hierarchy_id = (SELECT psl2.schedule_hierarchy_id
890: FROM psp_schedule_lines psl2
886: FROM psp_schedule_lines psl1
887: WHERE psl1.schedule_line_id <> pmd.schedule_line_id
888: AND psl1.schedule_end_date = pmd.period_start_date
889: AND psl1.schedule_hierarchy_id = (SELECT psl2.schedule_hierarchy_id
890: FROM psp_schedule_lines psl2
891: WHERE psl2.schedule_line_id = pmd.schedule_line_id))
892: AND period_start_date <> (SELECT MIN(psl1.schedule_begin_date)
893: FROM psp_schedule_lines psl1
894: WHERE psl1.schedule_hierarchy_id = (SELECT psl2.schedule_hierarchy_id
889: AND psl1.schedule_hierarchy_id = (SELECT psl2.schedule_hierarchy_id
890: FROM psp_schedule_lines psl2
891: WHERE psl2.schedule_line_id = pmd.schedule_line_id))
892: AND period_start_date <> (SELECT MIN(psl1.schedule_begin_date)
893: FROM psp_schedule_lines psl1
894: WHERE psl1.schedule_hierarchy_id = (SELECT psl2.schedule_hierarchy_id
895: FROM psp_schedule_lines psl2
896: WHERE psl2.schedule_line_id = pmd.schedule_line_id));
897: -- End of Bug fix 2368498
891: WHERE psl2.schedule_line_id = pmd.schedule_line_id))
892: AND period_start_date <> (SELECT MIN(psl1.schedule_begin_date)
893: FROM psp_schedule_lines psl1
894: WHERE psl1.schedule_hierarchy_id = (SELECT psl2.schedule_hierarchy_id
895: FROM psp_schedule_lines psl2
896: WHERE psl2.schedule_line_id = pmd.schedule_line_id));
897: -- End of Bug fix 2368498
898: End of changes for bug fix 3697471 *****/
899:
903: l_report_type := 'Exception';
904: DELETE psp_matrix_driver pmd
905: WHERE run_id = global_run_id
906: AND EXISTS (SELECT 1
907: FROM psp_schedule_lines psl,
908: psp_schedule_lines psl2
909: WHERE psl2.schedule_hierarchy_id = psl.schedule_hierarchy_id
910: AND psl.schedule_line_id = pmd.schedule_line_id
911: AND psl2.schedule_begin_date <= pmd.period_end_date
904: DELETE psp_matrix_driver pmd
905: WHERE run_id = global_run_id
906: AND EXISTS (SELECT 1
907: FROM psp_schedule_lines psl,
908: psp_schedule_lines psl2
909: WHERE psl2.schedule_hierarchy_id = psl.schedule_hierarchy_id
910: AND psl.schedule_line_id = pmd.schedule_line_id
911: AND psl2.schedule_begin_date <= pmd.period_end_date
912: AND psl2.schedule_end_date >= pmd.period_start_date
1272:
1273: --
1274: --Insert records in temporary table PSP_MATRIX_DRIVER. There may be some dates in 'dat1' which were not
1275: --included in 'dat' because Begin Date was exactly 1 day greater than the End Date. In such a case,
1276: --instead of comparing dates of 'dat' with those of psp_schedule_lines, compare (Begin Date+1) and End
1277: --Date of 'dat' with those of psp_schedule_lines.
1278: --
1279: OPEN sched_lines(sch_id);
1280: LOOP
1273: --
1274: --Insert records in temporary table PSP_MATRIX_DRIVER. There may be some dates in 'dat1' which were not
1275: --included in 'dat' because Begin Date was exactly 1 day greater than the End Date. In such a case,
1276: --instead of comparing dates of 'dat' with those of psp_schedule_lines, compare (Begin Date+1) and End
1277: --Date of 'dat' with those of psp_schedule_lines.
1278: --
1279: OPEN sched_lines(sch_id);
1280: LOOP
1281: FETCH sched_lines INTO sch_rec;