242: proc_name CONSTANT varchar2(40) := 'hr_element_links.get_greatest_end_date';
243: --
244: begin
245: --
246: hr_utility.set_location( proc_name, 1);
247: --
248: -- This procedure is obsolete. The call should be redirected to
249: -- pay_element_links_pkg.max_end_date. Left error message in case there are any outstanding
250: -- calls that I missed.
248: -- This procedure is obsolete. The call should be redirected to
249: -- pay_element_links_pkg.max_end_date. Left error message in case there are any outstanding
250: -- calls that I missed.
251: --
252: hr_utility.set_message (801,'HR_6153_ALL_PROCEDURE_FAIL');
253: hr_utility.set_message_token ('PROCEDURE',proc_name);
254: hr_utility.set_message_token ('STEP','1');
255: hr_utility.raise_error;
256: --
249: -- pay_element_links_pkg.max_end_date. Left error message in case there are any outstanding
250: -- calls that I missed.
251: --
252: hr_utility.set_message (801,'HR_6153_ALL_PROCEDURE_FAIL');
253: hr_utility.set_message_token ('PROCEDURE',proc_name);
254: hr_utility.set_message_token ('STEP','1');
255: hr_utility.raise_error;
256: --
257: end get_greatest_end_date;
250: -- calls that I missed.
251: --
252: hr_utility.set_message (801,'HR_6153_ALL_PROCEDURE_FAIL');
253: hr_utility.set_message_token ('PROCEDURE',proc_name);
254: hr_utility.set_message_token ('STEP','1');
255: hr_utility.raise_error;
256: --
257: end get_greatest_end_date;
258: --
251: --
252: hr_utility.set_message (801,'HR_6153_ALL_PROCEDURE_FAIL');
253: hr_utility.set_message_token ('PROCEDURE',proc_name);
254: hr_utility.set_message_token ('STEP','1');
255: hr_utility.raise_error;
256: --
257: end get_greatest_end_date;
258: --
259: /*
289: l_max_element_date date;
290: l_max_payroll_date date;
291: begin
292: --
293: Hr_utility.set_location('hr_element_links.chk_element_links', 1);
294: --
295: -- Element links cannot be distributed if the element is part of a
296: -- distribution set.
297: if p_costable_type = 'D' then
295: -- Element links cannot be distributed if the element is part of a
296: -- distribution set.
297: if p_costable_type = 'D' then
298: --
299: hr_utility.set_location('hr_element_links.chk_element_links', 2);
300: --
301: if p_element_set_id is null then
302: --
303: hr_utility.set_message(801,'PAY_6699_LINK_NO_DIST_SET');
299: hr_utility.set_location('hr_element_links.chk_element_links', 2);
300: --
301: if p_element_set_id is null then
302: --
303: hr_utility.set_message(801,'PAY_6699_LINK_NO_DIST_SET');
304: hr_utility.raise_error;
305: --
306: end if;
307: --
300: --
301: if p_element_set_id is null then
302: --
303: hr_utility.set_message(801,'PAY_6699_LINK_NO_DIST_SET');
304: hr_utility.raise_error;
305: --
306: end if;
307: --
308: begin
322: when NO_DATA_FOUND then NULL;
323: end;
324: --
325: if l_validation_ok = 'N' then
326: hr_utility.set_message(801,'PAY_6462_LINK_DIST_IN_DIST');
327: hr_utility.raise_error;
328: end if;
329: --
330: -- The distribution set must be credit or debit according to what the
323: end;
324: --
325: if l_validation_ok = 'N' then
326: hr_utility.set_message(801,'PAY_6462_LINK_DIST_IN_DIST');
327: hr_utility.raise_error;
328: end if;
329: --
330: -- The distribution set must be credit or debit according to what the
331: -- primary classification is of the element.
349: when NO_DATA_FOUND then null;
350: end;
351: --
352: if l_validation_ok = 'N' then
353: hr_utility.set_message(801,'PAY_6700_LINK_CRE_OR_DEB');
354: hr_utility.raise_error;
355: end if;
356: --
357: -- If the link is distributed then the distribution set must have some
350: end;
351: --
352: if l_validation_ok = 'N' then
353: hr_utility.set_message(801,'PAY_6700_LINK_CRE_OR_DEB');
354: hr_utility.raise_error;
355: end if;
356: --
357: -- If the link is distributed then the distribution set must have some
358: -- Elements in it.
373: et.effective_start_date and et.effective_end_date);
374: --
375: exception
376: when NO_DATA_FOUND then
377: hr_utility.set_message(801,'PAY_6916_LINK_EMPTY_DIST_SET');
378: hr_utility.raise_error;
379: end;
380: end if;
381: --
374: --
375: exception
376: when NO_DATA_FOUND then
377: hr_utility.set_message(801,'PAY_6916_LINK_EMPTY_DIST_SET');
378: hr_utility.raise_error;
379: end;
380: end if;
381: --
382: -- If the link is costed, Fixed costed or Distributed then the balancing
384: --
385: if (p_costable_type <> 'N') and
386: (p_balancing_keyflex_id is null) then
387: --
388: hr_utility.set_message(801,'PAY_6698_LINK_BAL_KEYFLEX_MAN');
389: hr_utility.raise_error;
390: --
391: end if;
392: --
385: if (p_costable_type <> 'N') and
386: (p_balancing_keyflex_id is null) then
387: --
388: hr_utility.set_message(801,'PAY_6698_LINK_BAL_KEYFLEX_MAN');
389: hr_utility.raise_error;
390: --
391: end if;
392: --
393: -- Determine the greatest end date of the element link
435: -- This cannot happen if there are any entries in existence for this link
436: -- and must happen over all time for the link.
437: --
438: --
439: hr_utility.set_location('hr_element_links.chk_upd_element_links', 1);
440: --
441: If p_old_costable_type <> p_costable_type then
442: if p_update_mode <> 'CORRECTION' then
443: hr_utility.set_message(801,'PAY_6466_LINK_NO_COST_UPD2');
439: hr_utility.set_location('hr_element_links.chk_upd_element_links', 1);
440: --
441: If p_old_costable_type <> p_costable_type then
442: if p_update_mode <> 'CORRECTION' then
443: hr_utility.set_message(801,'PAY_6466_LINK_NO_COST_UPD2');
444: hr_utility.raise_error;
445: end if;
446: --
447: begin
440: --
441: If p_old_costable_type <> p_costable_type then
442: if p_update_mode <> 'CORRECTION' then
443: hr_utility.set_message(801,'PAY_6466_LINK_NO_COST_UPD2');
444: hr_utility.raise_error;
445: end if;
446: --
447: begin
448: --
458: when NO_DATA_FOUND then NULL;
459: end;
460: --
461: if l_validation_ok = 'N' then
462: hr_utility.set_message(801,'PAY_6465_LINK_NO_COST_UPD1');
463: hr_utility.raise_error;
464: end if;
465: --
466: --
459: end;
460: --
461: if l_validation_ok = 'N' then
462: hr_utility.set_message(801,'PAY_6465_LINK_NO_COST_UPD1');
463: hr_utility.raise_error;
464: end if;
465: --
466: --
467: hr_utility.set_location('hr_element_links.chk_upd_element_links', 2);
463: hr_utility.raise_error;
464: end if;
465: --
466: --
467: hr_utility.set_location('hr_element_links.chk_upd_element_links', 2);
468: --
469: begin
470: --
471: select 'Y'
484: when NO_DATA_FOUND then NULL;
485: end;
486: --
487: if l_validation_not_ok = 'N' then
488: hr_utility.set_message(801,'PAY_6466_LINK_NO_COST_UPD2');
489: hr_utility.raise_error;
490: end if;
491: end if;
492: --
485: end;
486: --
487: if l_validation_not_ok = 'N' then
488: hr_utility.set_message(801,'PAY_6466_LINK_NO_COST_UPD2');
489: hr_utility.raise_error;
490: end if;
491: end if;
492: --
493: end chk_upd_element_links;
512: l_delete_ok varchar2(1) := 'Y';
513: --
514: begin
515: --
516: hr_utility.set_location('hr_element_links.chk_del_element_link', 1);
517: --
518: --
519: -- No delete is allowed if there are non-recurring entries in the validation
520: -- period.
539: when NO_DATA_FOUND then NULL;
540: end;
541: --
542: if l_delete_ok = 'N' then
543: hr_utility.set_message(801,'PAY_6467_LINK_NO_DEL_LINKS');
544: hr_utility.raise_error;
545: end if;
546: --
547: -- Even if the element type is recurring there may have been additional
540: end;
541: --
542: if l_delete_ok = 'N' then
543: hr_utility.set_message(801,'PAY_6467_LINK_NO_DEL_LINKS');
544: hr_utility.raise_error;
545: end if;
546: --
547: -- Even if the element type is recurring there may have been additional
548: -- entries created. These will prevent delete.
564: when NO_DATA_FOUND then NULL;
565: end;
566: --
567: if l_delete_ok = 'N' then
568: hr_utility.set_message(801,'PAY_6639_LINK_NO_DEL_ADD_ENTRY');
569: hr_utility.raise_error;
570: end if;
571: --
572: end chk_del_element_link;
565: end;
566: --
567: if l_delete_ok = 'N' then
568: hr_utility.set_message(801,'PAY_6639_LINK_NO_DEL_ADD_ENTRY');
569: hr_utility.raise_error;
570: end if;
571: --
572: end chk_del_element_link;
573: --
686: v_dummy number;
687: --
688: begin
689: --
690: hr_utility.set_location('hr_element_links.ins_3p_element_link', 1);
691: --
692: -- Call create link input value
693: hr_input_values.create_link_input_value(
694: 'INSERT_LINK',
707: p_pay_value_name,
708: p_element_type_id);
709: --
710: --
711: hr_utility.set_location('hr_element_links.ins_3p_element_link', 2);
712: --
713: pay_asg_link_usages_pkg.insert_ALU (
714: --
715: p_business_group_id,
718: p_val_start_date,
719: p_val_end_date);
720: --
721: --
722: hr_utility.set_location('hr_element_links.ins_3p_element_link', 3);
723: --
724: -- Error if standard link has a mandatory input value with no default.
725: --
726: open csr_link_defaults;
725: --
726: open csr_link_defaults;
727: fetch csr_link_defaults into v_dummy;
728: if csr_link_defaults%found then
729: hr_utility.set_message (801,'HR_7095_INPVAL_NO_STD_DEFLT');
730: hr_utility.raise_error;
731: end if;
732: close csr_link_defaults;
733: --
726: open csr_link_defaults;
727: fetch csr_link_defaults into v_dummy;
728: if csr_link_defaults%found then
729: hr_utility.set_message (801,'HR_7095_INPVAL_NO_STD_DEFLT');
730: hr_utility.raise_error;
731: end if;
732: close csr_link_defaults;
733: --
734: hr_utility.set_location('hr_element_links.ins_3p_element_link', 4);
730: hr_utility.raise_error;
731: end if;
732: close csr_link_defaults;
733: --
734: hr_utility.set_location('hr_element_links.ins_3p_element_link', 4);
735: --
736: -- Create standard entries
737: --
738: if p_standard_link_flag = 'Y' then
789: begin
790: -- If the costable type is updated from costed or Fixed to Distributed or
791: -- not costed then we need to make all the link input values not costed.
792: --
793: hr_utility.set_location('hr_element_links.upd_3p_element_link', 1);
794: --
795: if (p_old_costable_type = 'C' or p_old_costable_type = 'F')
796: and (p_costable_type = 'D' or p_costable_type = 'N') then
797: --
820: iv.effective_start_date and iv.effective_end_date);
821: --
822: end if;
823: --
824: hr_utility.set_location('hr_element_links.upd_3p_element_link', 2);
825: --
826: -- Create standard entries if standard link flag is updated to 'Y'
827: --
828: if p_old_link_flag = 'N' and p_link_flag = 'Y' then
863: --
864: elsif p_delete_mode = 'DELETE' then
865: --
866: --
867: hr_utility.set_location('hr_element_links.entry_values', 1);
868: --
869: -- delete all future records
870: delete from pay_element_entry_values_f
871: where element_entry_id = p_element_entry_id
925: for update;
926: --
927: begin
928: --
929: hr_utility.set_location('hr_element_links.del_3p_element_link', 1);
930: --
931: for entry_rec in get_element_entries(
932: p_element_link_id,
933: p_val_start_date,
955: --
956: elsif p_delete_mode = 'DELETE' then
957: --
958: --
959: hr_utility.set_location('hr_element_links.del_3p_element_link', 2);
960: --
961: -- delete all future records
962: delete from pay_link_input_values_f
963: where element_link_id = p_element_link_id
970: and p_val_session_date between
971: effective_start_date and effective_end_date;
972: --
973: --
974: hr_utility.set_location('hr_element_links.del_3p_element_link', 3);
975: --
976: --
977: -- delete all future records
978: delete from pay_element_entries_f
985: where element_link_id = p_element_link_id
986: and p_val_session_date between
987: effective_start_date and effective_end_date;
988: --
989: hr_utility.set_location('hr_element_links.del_3p_element_link', 4);
990: --
991: -- delete all future records
992: delete from pay_assignment_link_usages_f
993: where element_link_id = p_element_link_id
1007: --
1008: elsif p_delete_mode = 'DELETE_NEXT_CHANGE' then
1009: --
1010: --
1011: hr_utility.set_location('hr_element_links.del_3p_element_link', 5);
1012: --
1013: begin
1014: --
1015: select 'Y'
1029: --
1030: if l_on_final_record = 'Y' then
1031: --
1032: --
1033: hr_utility.set_location('hr_element_links.del_3p_element_link', 5);
1034: --
1035: update pay_link_input_values_f iv1
1036: set iv1.effective_end_date = p_val_end_date
1037: where p_element_link_id = iv1.element_link_id
1110: and iv.effective_start_date <= p_validation_end_date
1111: and iv.effective_end_date >= p_validation_start_date;
1112: begiN
1113: --
1114: hr_utility.set_location(proc_name, 1);
1115: hr_utility.trace(to_char(p_validation_start_date));
1116: hr_utility.trace(to_char(p_validation_end_date));
1117: --
1118: -- First we need to get some details about the input value.
1111: and iv.effective_end_date >= p_validation_start_date;
1112: begiN
1113: --
1114: hr_utility.set_location(proc_name, 1);
1115: hr_utility.trace(to_char(p_validation_start_date));
1116: hr_utility.trace(to_char(p_validation_end_date));
1117: --
1118: -- First we need to get some details about the input value.
1119: --
1112: begiN
1113: --
1114: hr_utility.set_location(proc_name, 1);
1115: hr_utility.trace(to_char(p_validation_start_date));
1116: hr_utility.trace(to_char(p_validation_end_date));
1117: --
1118: -- First we need to get some details about the input value.
1119: --
1120: FOR iv_rec in get_input_value(p_input_value_id,
1128: (iv_rec.lookup_typE Is not null)) and
1129: ((P_max_value is not NULL) or
1130: (p_min_value is not NULL)) THEN
1131: --
1132: HR_utility.sET_message(801, 'PAY_6170_INPVAL_VAL_COMB');
1133: hr_utility.raise_error;
1134: --
1135: end if;
1136: --
1129: ((P_max_value is not NULL) or
1130: (p_min_value is not NULL)) THEN
1131: --
1132: HR_utility.sET_message(801, 'PAY_6170_INPVAL_VAL_COMB');
1133: hr_utility.raise_error;
1134: --
1135: end if;
1136: --
1137: hr_utility.set_location(proc_name, 2);
1133: hr_utility.raise_error;
1134: --
1135: end if;
1136: --
1137: hr_utility.set_location(proc_name, 2);
1138: -- if there is a default specified for a lookup validated input value
1139: -- then we must check to see if it is valid.
1140: if (iv_rec.lookup_type is not null) and
1141: (p_default_value is not null) then
1156: end;
1157: --
1158: if L_Validation_check = 'N' then
1159: --
1160: HR_utility.set_message(801, 'PAY_6171_INPVAL_NO_LOOKUP');
1161: hr_utility.raise_error;
1162: --
1163: end if;
1164: --
1157: --
1158: if L_Validation_check = 'N' then
1159: --
1160: HR_utility.set_message(801, 'PAY_6171_INPVAL_NO_LOOKUP');
1161: hr_utility.raise_error;
1162: --
1163: end if;
1164: --
1165: end if;
1163: end if;
1164: --
1165: end if;
1166: --
1167: hr_utility.set_location(proc_name, 3);
1168: -- If the hot default flag is yes we need to check for the max, min and
1169: -- default values being less than 59 characters. This is to allow for
1170: -- quotes being put round them at the lower level
1171: if (iv_rec.hot_default_flag = 'Y') and
1172: ((length(p_default_value) > 58) or
1173: (length(p_min_value) > 58) or
1174: (length(p_max_value) > 58)) then
1175: --
1176: hr_utility.set_message(801,'PAY_6616_INPVAL_HOT_LESS_58');
1177: hr_utility.raise_error;
1178: --
1179: end if;
1180: --
1173: (length(p_min_value) > 58) or
1174: (length(p_max_value) > 58)) then
1175: --
1176: hr_utility.set_message(801,'PAY_6616_INPVAL_HOT_LESS_58');
1177: hr_utility.raise_error;
1178: --
1179: end if;
1180: --
1181: -- If the costable type is 'D' then only the pay value can be
1184: iv_rec.name <> hr_input_values.get_pay_value_name
1185: (p_legislation_code) and
1186: p_costed_flag = 'Y' then
1187: --
1188: HR_utility.set_message(801, 'PAY_6404_INPVAL_NO_COST_LINK');
1189: hr_utility.raise_error;
1190: --
1191: end if;
1192: --
1185: (p_legislation_code) and
1186: p_costed_flag = 'Y' then
1187: --
1188: HR_utility.set_message(801, 'PAY_6404_INPVAL_NO_COST_LINK');
1189: hr_utility.raise_error;
1190: --
1191: end if;
1192: --
1193: end loop;
1197: if ((p_min_value is not null) or
1198: (p_max_value is not null)) and
1199: (p_warning_or_error is null) then
1200: --
1201: HR_utility.set_message(801, 'PAY_6170_INPVAL_VAL_COMB');
1202: hr_utility.raise_error;
1203: --
1204: end if;
1205: --
1198: (p_max_value is not null)) and
1199: (p_warning_or_error is null) then
1200: --
1201: HR_utility.set_message(801, 'PAY_6170_INPVAL_VAL_COMB');
1202: hr_utility.raise_error;
1203: --
1204: end if;
1205: --
1206: end chk_link_input_values;
1219: open csr_element_entries;
1220: fetch csr_element_entries into v_dummy;
1221: if csr_element_entries%found then
1222: close csr_element_entries;
1223: hr_utility.set_message (801,'HR_7089_ELEMENTS_ENTRIES_EXIST');
1224: hr_utility.raise_error;
1225: end if;
1226: close csr_element_entries;
1227: --
1220: fetch csr_element_entries into v_dummy;
1221: if csr_element_entries%found then
1222: close csr_element_entries;
1223: hr_utility.set_message (801,'HR_7089_ELEMENTS_ENTRIES_EXIST');
1224: hr_utility.raise_error;
1225: end if;
1226: close csr_element_entries;
1227: --
1228: end link_flag_updated;