21:
22:
23: BEGIN
24:
25: g_debug := hr_utility.debug_enabled;
26:
27: IF g_debug THEN
28: hr_utility.set_location('Start of range_code',1);
29: END IF;
24:
25: g_debug := hr_utility.debug_enabled;
26:
27: IF g_debug THEN
28: hr_utility.set_location('Start of range_code',1);
29: END IF;
30:
31:
32: --------------------------------------------------------------------------------+
40: pay_core_payslip_utils.range_cursor( p_payroll_action_id,
41: p_sql
42: );
43: IF g_debug THEN
44: hr_utility.set_location('End of range_code',2);
45: END IF;
46:
47: EXCEPTION
48: WHEN OTHERS THEN
46:
47: EXCEPTION
48: WHEN OTHERS THEN
49: IF g_debug THEN
50: hr_utility.set_location('Error in initialization_code',2);
51: END IF;
52: RAISE;
53:
54: END range_code;
67:
68:
69: BEGIN
70: IF g_debug THEN
71: hr_utility.set_location('Start of initialization_code',1);
72: END IF;
73:
74: g_archive_pact := p_payroll_action_id;
75:
81:
82: pay_apac_payslip_archive.initialization_code(p_payroll_action_id => p_payroll_action_id);
83:
84: IF g_debug THEN
85: hr_utility.set_location('End of initialization_code',2);
86: END IF;
87:
88: EXCEPTION
89: WHEN OTHERS THEN
87:
88: EXCEPTION
89: WHEN OTHERS THEN
90: IF g_debug THEN
91: hr_utility.set_location('Error in initialization_code',2);
92: END IF;
93: RAISE;
94:
95: END initialization_code;
116: p_chunk IN NUMBER) IS
117:
118: BEGIN
119: IF g_debug THEN
120: hr_utility.trace('Start of assignment action code');
121: END IF;
122:
123: -- Bug#3580617 Logic of generating Assignment actions has been replaced with the following
124: -- Function Call.
129: p_chunk,
130: 'HK_PAYSLIP_ARCHIVE',
131: 'HK');
132: IF g_debug THEN
133: hr_utility.trace('End of Assignment action code');
134: END IF;
135:
136: EXCEPTION
137: WHEN OTHERS THEN
135:
136: EXCEPTION
137: WHEN OTHERS THEN
138: IF g_debug THEN
139: hr_utility.trace('Error occured in Assignment action code');
140: END IF;
141: RAISE;
142:
143: END assignment_action_code;
188: BEGIN
189: l_result_value := null; -- Bug: 3604131
190: --
191: IF g_debug THEN
192: hr_utility.trace('Run Result ID: ' || p_run_result_id);
193: hr_utility.trace('Assignment action ID: '||p_assignment_action_id);
194: hr_utility.trace('Business_group_id: '||p_business_group_id);
195: END IF;
196: --
189: l_result_value := null; -- Bug: 3604131
190: --
191: IF g_debug THEN
192: hr_utility.trace('Run Result ID: ' || p_run_result_id);
193: hr_utility.trace('Assignment action ID: '||p_assignment_action_id);
194: hr_utility.trace('Business_group_id: '||p_business_group_id);
195: END IF;
196: --
197: -- If the pl/sql table is not populated previously. Populate
190: --
191: IF g_debug THEN
192: hr_utility.trace('Run Result ID: ' || p_run_result_id);
193: hr_utility.trace('Assignment action ID: '||p_assignment_action_id);
194: hr_utility.trace('Business_group_id: '||p_business_group_id);
195: END IF;
196: --
197: -- If the pl/sql table is not populated previously. Populate
198: -- the table with all the scheme names available in this business
201: IF g_sn_populated = FALSE THEN
202: FOR csr_sn_rec IN csr_scheme_names(p_business_group_id) LOOP
203: g_scheme_name_table(csr_sn_rec.scheme_id).scheme_name := csr_sn_rec.scheme_name;
204: IF g_debug THEN
205: hr_utility.trace('Scheme Name: ' || csr_sn_rec.scheme_name);
206: hr_utility.trace('Scheme ID: ' ||csr_sn_rec.scheme_id);
207: END IF;
208: END LOOP;
209: g_sn_populated := TRUE;
202: FOR csr_sn_rec IN csr_scheme_names(p_business_group_id) LOOP
203: g_scheme_name_table(csr_sn_rec.scheme_id).scheme_name := csr_sn_rec.scheme_name;
204: IF g_debug THEN
205: hr_utility.trace('Scheme Name: ' || csr_sn_rec.scheme_name);
206: hr_utility.trace('Scheme ID: ' ||csr_sn_rec.scheme_id);
207: END IF;
208: END LOOP;
209: g_sn_populated := TRUE;
210: END IF;
223: FETCH csr_result_value INTO l_result_value;
224: CLOSE csr_result_value;
225:
226: IF g_debug THEN
227: hr_utility.trace('Result Value: '||nvl(l_result_value, '
229:
230: -- 2. If result value is not null
231: -- Check if the scheme name exists.
231: -- Check if the scheme name exists.
232: -------------------------------------------------
233: IF l_result_value is not null AND g_scheme_name_table.exists(l_result_value) THEN
234: IF g_debug THEN
235: hr_utility.trace('Success : '||g_scheme_name_table(l_result_value).scheme_name);
236: END IF;
237: -- 3. Return the scheme name
238: ----------------------------
239: return g_scheme_name_table(l_result_value).scheme_name;
241:
242: END IF;
243: --
244: IF g_debug THEN
245: hr_utility.trace('Scheme name does not exists');
246: END IF;
247:
248: -- Scheme Name doesn't exists
249: -----------------------------
283: BEGIN
284: l_procedure_name := 'archive_stat_elements'; -- Bug: 3604131
285:
286: IF g_debug THEN
287: hr_utility.set_location('Entering Procedure pay_hk_payslip_archive.' || l_procedure_name,10);
288:
289: hr_utility.trace('Opening Cursor csr_std_elements');
290: END IF;
291:
285:
286: IF g_debug THEN
287: hr_utility.set_location('Entering Procedure pay_hk_payslip_archive.' || l_procedure_name,10);
288:
289: hr_utility.trace('Opening Cursor csr_std_elements');
290: END IF;
291:
292: FOR csr_rec IN csr_std_elements(p_assignment_action_id,p_assignment_id)
293:
293:
294: LOOP
295:
296: IF g_debug THEN
297: hr_utility.set_location('Archiving Standard Element Details',20);
298: END IF;
299:
300:
301: if csr_rec.classification_name<>'Employer Liabilities' then
341:
342:
343: END LOOP;
344: IF g_debug THEN
345: hr_utility.trace('Closing Cursor csr_std_elements');
346: hr_utility.set_location('End of archive Standard Element',4);
347: hr_utility.set_location('Leaving Procedure pay_hk_payslip_archive.' || l_procedure_name,10);
348: END IF;
349:
342:
343: END LOOP;
344: IF g_debug THEN
345: hr_utility.trace('Closing Cursor csr_std_elements');
346: hr_utility.set_location('End of archive Standard Element',4);
347: hr_utility.set_location('Leaving Procedure pay_hk_payslip_archive.' || l_procedure_name,10);
348: END IF;
349:
350: EXCEPTION
343: END LOOP;
344: IF g_debug THEN
345: hr_utility.trace('Closing Cursor csr_std_elements');
346: hr_utility.set_location('End of archive Standard Element',4);
347: hr_utility.set_location('Leaving Procedure pay_hk_payslip_archive.' || l_procedure_name,10);
348: END IF;
349:
350: EXCEPTION
351: WHEN OTHERS THEN
349:
350: EXCEPTION
351: WHEN OTHERS THEN
352: IF g_debug THEN
353: hr_utility.set_location('Error in archiving Standard Elements ',5);
354: END IF;
355: RAISE;
356:
357: END archive_stat_elements;
376:
377: l_procedure_name := 'archive_balances'; -- Bug: 3604131
378:
379: IF g_debug THEN
380: hr_utility.set_location('Entering procedure ' || l_procedure_name,10);
381: hr_utility.set_location('archiving balances :',10);
382: END IF;
383:
384: -- Archive Statutory balances
377: l_procedure_name := 'archive_balances'; -- Bug: 3604131
378:
379: IF g_debug THEN
380: hr_utility.set_location('Entering procedure ' || l_procedure_name,10);
381: hr_utility.set_location('archiving balances :',10);
382: END IF;
383:
384: -- Archive Statutory balances
385:
402:
403: EXCEPTION
404: WHEN OTHERS THEN
405: IF g_debug THEN
406: hr_utility.set_location('Error in archiving balance :',11);
407: END IF;
408: RAISE;
409:
410: END archive_balances;
449:
450: l_procedure_name := 'Archive_Stat_Balances'; -- Bug: 3604131
451:
452: IF g_debug THEN
453: hr_utility.set_location('Entering Procedure pay_hk_payslip_archive.' || l_procedure_name,10);
454: hr_utility.set_location('Calling balance_total from pay_hk_soe_pkg',20);
455: END IF;
456:
457: -- Get the totals of all the balances
450: l_procedure_name := 'Archive_Stat_Balances'; -- Bug: 3604131
451:
452: IF g_debug THEN
453: hr_utility.set_location('Entering Procedure pay_hk_payslip_archive.' || l_procedure_name,10);
454: hr_utility.set_location('Calling balance_total from pay_hk_soe_pkg',20);
455: END IF;
456:
457: -- Get the totals of all the balances
458:
476:
477: l_narrative := 'Total Earnings';
478:
479: IF g_debug THEN
480: hr_utility.set_location('Archiving value for ' || l_narrative,30);
481: END IF;
482:
483: /* Archive This Pay values and YTD Values accordingly*/
484:
492:
493: l_narrative := 'Total Deductions';
494:
495: IF g_debug THEN
496: hr_utility.set_location('Archiving value for ' || l_narrative,40);
497: END IF;
498:
499: archive_balances(p_effective_date => p_effective_date
500: ,p_assact_id => p_assact_id
506:
507: l_narrative := 'Net Pay';
508:
509: IF g_debug THEN
510: hr_utility.set_location('Archiving value for ' || l_narrative,50);
511: END IF;
512:
513: archive_balances(p_effective_date => p_effective_date
514: ,p_assact_id => p_assact_id
520:
521: l_narrative := 'Direct Payments';
522:
523: IF g_debug THEN
524: hr_utility.set_location('Archiving value for ' || l_narrative,60);
525: END IF;
526:
527: archive_balances(p_effective_date => p_effective_date
528: ,p_assact_id => p_assact_id
533:
534: l_narrative := 'Total Payment';
535:
536: IF g_debug THEN
537: hr_utility.set_location('Archiving value for ' || l_narrative,70);
538: END IF;
539:
540: archive_balances(p_effective_date => p_effective_date
541: ,p_assact_id => p_assact_id
545:
546:
547:
548: IF g_debug THEN
549: hr_utility.set_location('End of Archiving Stat Balances ',80);
550:
551: hr_utility.set_location('Leaving Procedure pay_hk_payslip_archive.' || l_procedure_name,90);
552: END IF;
553:
547:
548: IF g_debug THEN
549: hr_utility.set_location('End of Archiving Stat Balances ',80);
550:
551: hr_utility.set_location('Leaving Procedure pay_hk_payslip_archive.' || l_procedure_name,90);
552: END IF;
553:
554:
555: EXCEPTION
554:
555: EXCEPTION
556: WHEN OTHERS THEN
557: IF g_debug THEN
558: hr_utility.set_location('Error in calling archive balance code :',11);
559: END IF;
560: RAISE;
561:
562: END archive_stat_balances;
669:
670: l_procedure_name := 'archive_employee_details'; -- Bug: 3604131
671:
672: IF g_debug THEN
673: hr_utility.set_location('Entering Procedure pay_hk_payslip_archive.'|| l_procedure_name,10);
674:
675:
676: -- call generic procedure to retrieve and archive all data for
677: -- EMPLOYEE DETAILS, ADDRESS DETAILS and EMPLOYEE NET PAY DISTRIBUTION
675:
676: -- call generic procedure to retrieve and archive all data for
677: -- EMPLOYEE DETAILS, ADDRESS DETAILS and EMPLOYEE NET PAY DISTRIBUTION
678:
679: hr_utility.trace('Opening Cursor csr_payment_runs');
680: END IF;
681:
682: OPEN csr_payment_runs(p_curr_pymt_ass_act_id);
683: FETCH csr_payment_runs INTO l_tax_unit_id,l_mail_stop;
683: FETCH csr_payment_runs INTO l_tax_unit_id,l_mail_stop;
684: CLOSE csr_payment_runs;
685:
686: IF g_debug THEN
687: hr_utility.trace('Closing Cursor csr_payment_runs');
688:
689: hr_utility.trace('Opening Cursor csr_get mpf date');
690: END IF;
691:
685:
686: IF g_debug THEN
687: hr_utility.trace('Closing Cursor csr_payment_runs');
688:
689: hr_utility.trace('Opening Cursor csr_get mpf date');
690: END IF;
691:
692: OPEN csr_get_mpf_date(p_payroll_action_id);
693: FETCH csr_get_mpf_date into l_mpf_due_date;
692: OPEN csr_get_mpf_date(p_payroll_action_id);
693: FETCH csr_get_mpf_date into l_mpf_due_date;
694: CLOSE csr_get_mpf_date;
695: IF g_debug THEN
696: hr_utility.trace('Closing Cursor csr get mpf date');
697: END IF;
698:
699: l_mpf_due_date:=to_char(to_date(l_mpf_due_date,'YYYY/MM/DD'),'DD-Mon-YYYY');
700:
698:
699: l_mpf_due_date:=to_char(to_date(l_mpf_due_date,'YYYY/MM/DD'),'DD-Mon-YYYY');
700:
701: IF g_debug THEN
702: hr_utility.set_location('Calling pay_emp_action_arch.get_personal_information ',20);
703: END IF;
704:
705: pay_emp_action_arch.get_personal_information
706: (p_payroll_action_id => p_payroll_action_id -- archive payroll_action_id
716: , p_run_action_id => p_pay_assignment_action_id
717: );
718:
719: IF g_debug THEN
720: hr_utility.set_location('Returned from pay_emp_action_arch.csr_personal_information ',30);
721:
722: -- Retrieve and Archive the HK specific employee details (mailstop)
723:
724: hr_utility.set_location('Archiving HK EMPLOYEE DETAILS',60);
720: hr_utility.set_location('Returned from pay_emp_action_arch.csr_personal_information ',30);
721:
722: -- Retrieve and Archive the HK specific employee details (mailstop)
723:
724: hr_utility.set_location('Archiving HK EMPLOYEE DETAILS',60);
725: END IF;
726:
727: pay_action_information_api.create_action_information
728: ( p_action_information_id => l_action_info_id
741: );
742:
743:
744: IF g_debug THEN
745: hr_utility.trace('Opening Cursor csr_action_information_id');
746: END IF;
747:
748: FOR net_pay_rec in csr_action_information_id(p_assactid)
749:
748: FOR net_pay_rec in csr_action_information_id(p_assactid)
749:
750: LOOP
751: IF g_debug THEN
752: hr_utility.trace('Opening Cursor csr_bank_details');
753: END IF;
754: OPEN csr_bank_details(p_curr_pymt_ass_act_id,net_pay_rec.action_information2,net_pay_rec.action_information1); /* Bug No : 2672510 */
755: FETCH csr_bank_details INTO l_branch_code
756: ,l_bank_account
758:
759:
760: CLOSE csr_bank_details;
761: IF g_debug THEN
762: hr_utility.trace('Closing Cursor csr_bank_details');
763: END IF;
764:
765: l_ovn := 1;
766: l_account:=null;
769: l_account:=l_branch_code||'-'||l_bank_account;
770: end if;
771:
772: IF g_debug THEN
773: hr_utility.trace('branch code:'||l_branch_code);
774: hr_utility.trace('account number: '||l_bank_account);
775: hr_utility.trace('action information 2:'||net_pay_rec.action_information2);
776: hr_utility.trace('assignment_action_id:'||p_curr_pymt_ass_act_id);
777: hr_utility.trace('Account:'||l_account);
770: end if;
771:
772: IF g_debug THEN
773: hr_utility.trace('branch code:'||l_branch_code);
774: hr_utility.trace('account number: '||l_bank_account);
775: hr_utility.trace('action information 2:'||net_pay_rec.action_information2);
776: hr_utility.trace('assignment_action_id:'||p_curr_pymt_ass_act_id);
777: hr_utility.trace('Account:'||l_account);
778: END IF;
771:
772: IF g_debug THEN
773: hr_utility.trace('branch code:'||l_branch_code);
774: hr_utility.trace('account number: '||l_bank_account);
775: hr_utility.trace('action information 2:'||net_pay_rec.action_information2);
776: hr_utility.trace('assignment_action_id:'||p_curr_pymt_ass_act_id);
777: hr_utility.trace('Account:'||l_account);
778: END IF;
779:
772: IF g_debug THEN
773: hr_utility.trace('branch code:'||l_branch_code);
774: hr_utility.trace('account number: '||l_bank_account);
775: hr_utility.trace('action information 2:'||net_pay_rec.action_information2);
776: hr_utility.trace('assignment_action_id:'||p_curr_pymt_ass_act_id);
777: hr_utility.trace('Account:'||l_account);
778: END IF;
779:
780:
773: hr_utility.trace('branch code:'||l_branch_code);
774: hr_utility.trace('account number: '||l_bank_account);
775: hr_utility.trace('action information 2:'||net_pay_rec.action_information2);
776: hr_utility.trace('assignment_action_id:'||p_curr_pymt_ass_act_id);
777: hr_utility.trace('Account:'||l_account);
778: END IF;
779:
780:
781: pay_action_information_api.update_action_information
788: END LOOP;
789:
790: IF g_debug THEN
791:
792: hr_utility.trace('Closing Cursor csr_action_information_id');
793:
794: hr_utility.set_location('Leaving Procedure pay_hk_payslip_archive.' || l_procedure_name,10);
795: END IF;
796:
790: IF g_debug THEN
791:
792: hr_utility.trace('Closing Cursor csr_action_information_id');
793:
794: hr_utility.set_location('Leaving Procedure pay_hk_payslip_archive.' || l_procedure_name,10);
795: END IF;
796:
797: EXCEPTION
798: WHEN OTHERS THEN
796:
797: EXCEPTION
798: WHEN OTHERS THEN
799: IF g_debug THEN
800: hr_utility.set_location('Error in archiving Employee details ',5);
801: END IF;
802: RAISE;
803:
804: END archive_employee_details;
884:
885: l_procedure_name := 'archive_employee_details'; -- Bug: 3604131
886:
887: IF g_debug THEN
888: hr_utility.set_location('Start of accrual archival code',1);
889:
890: hr_utility.set_location('Entering Procedure pay_sg_payslip_archive.' || l_procedure_name,10);
891:
892: hr_utility.trace('Opening Cursor csr_leave_balance');
886:
887: IF g_debug THEN
888: hr_utility.set_location('Start of accrual archival code',1);
889:
890: hr_utility.set_location('Entering Procedure pay_sg_payslip_archive.' || l_procedure_name,10);
891:
892: hr_utility.trace('Opening Cursor csr_leave_balance');
893: END IF;
894:
888: hr_utility.set_location('Start of accrual archival code',1);
889:
890: hr_utility.set_location('Entering Procedure pay_sg_payslip_archive.' || l_procedure_name,10);
891:
892: hr_utility.trace('Opening Cursor csr_leave_balance');
893: END IF;
894:
895: OPEN csr_leave_balance(p_assignment_action_id,p_assignment_id);
896: FETCH csr_leave_balance INTO
903:
904: CLOSE csr_leave_balance;
905:
906: IF g_debug THEN
907: hr_utility.trace('Closing Cursor csr_leave_balance');
908:
909: -- Call to get annual leave balance
910:
911: hr_utility.set_location('Archiving Annual leave Balance information',2);
907: hr_utility.trace('Closing Cursor csr_leave_balance');
908:
909: -- Call to get annual leave balance
910:
911: hr_utility.set_location('Archiving Annual leave Balance information',2);
912: END IF;
913:
914: per_accrual_calc_functions.get_net_accrual( p_assignment_id => p_assignment_id,
915: p_plan_id => l_accrual_plan_id,
922: p_accrual => l_accrual,
923: p_net_entitlement => l_net_entitlement);
924:
925: IF g_debug THEN
926: hr_utility.set_location('Archiving Leave Taken information',2);
927: END IF;
928:
929:
930: IF l_accrual_plan_name IS NOT NULL THEN
946:
947: END IF;
948:
949: IF g_debug THEN
950: hr_utility.set_location('Leaving Procedure pay_hk_payslip_archive.' || l_procedure_name,10);
951: END IF;
952:
953:
954: EXCEPTION
953:
954: EXCEPTION
955: WHEN OTHERS THEN
956: IF g_debug THEN
957: hr_utility.set_location('Error raised in archiving Accruals and Leave Taken ',5);
958: END IF;
959: RAISE;
960:
961: END archive_accrual_details;
1056:
1057: l_pre_pay_assact_id := 0; -- Bug: 3604131
1058:
1059: IF g_debug THEN
1060: hr_utility.set_location('Start of archive code',20);
1061: hr_utility.trace('Opening Cursor get_payslip_aa');
1062: END IF;
1063:
1064: -- Bug# 3580617 Included the following function call pay_core_payslip_utils.generate_child_actions.
1057: l_pre_pay_assact_id := 0; -- Bug: 3604131
1058:
1059: IF g_debug THEN
1060: hr_utility.set_location('Start of archive code',20);
1061: hr_utility.trace('Opening Cursor get_payslip_aa');
1062: END IF;
1063:
1064: -- Bug# 3580617 Included the following function call pay_core_payslip_utils.generate_child_actions.
1065:
1077: end if;
1078: close csr_payment_date;
1079:
1080: IF g_debug THEN
1081: hr_utility.set_location('csr_rec.run_assignment_action_id = ' || csr_rec.run_assignment_action_id,20);
1082: hr_utility.set_location('csr_rec.pre_assignment_action_id = ' || csr_rec.pre_assignment_action_id,30);
1083: END IF;
1084:
1085:
1078: close csr_payment_date;
1079:
1080: IF g_debug THEN
1081: hr_utility.set_location('csr_rec.run_assignment_action_id = ' || csr_rec.run_assignment_action_id,20);
1082: hr_utility.set_location('csr_rec.pre_assignment_action_id = ' || csr_rec.pre_assignment_action_id,30);
1083: END IF;
1084:
1085:
1086: -- Loop to be executed only once for a prepayment with latest payroll run details
1167:
1168: END LOOP;
1169:
1170: IF g_debug THEN
1171: hr_utility.trace('Opening Cursor csr_assignment_actions');
1172:
1173: hr_utility.set_location('End of archive code',37);
1174: END IF;
1175:
1169:
1170: IF g_debug THEN
1171: hr_utility.trace('Opening Cursor csr_assignment_actions');
1172:
1173: hr_utility.set_location('End of archive code',37);
1174: END IF;
1175:
1176: EXCEPTION
1177: WHEN OTHERS THEN
1175:
1176: EXCEPTION
1177: WHEN OTHERS THEN
1178: IF g_debug THEN
1179: hr_utility.set_location('Error in archive code :',11);
1180: END IF;
1181: RAISE;
1182:
1183: END archive_code;