88: monthly periods the same as
89: shorter ones
90: 07-OCT-1999 PDAVIES 110.8 Replaced all occurrences of
91: DBMS_Output.Put_Line with
92: hr_utility.trace.
93: 16-FEB-2000 SMROBINS 115.1 1071880 Handle date parameters in
94: canonical format
95: 24-NOV-2000 AMILLS 115.2 1381231 Added territory_code to get_
96: banks cursor as unique key
155: --
156: FUNCTION get_formula_id(p_formula_name IN VARCHAR2) RETURN INTEGER IS
157: p_formula_id INTEGER;
158: BEGIN
159: hr_utility.set_location('bacsmgtp.get_formula_id',1);
160: SELECT DISTINCT formula_id
161: INTO p_formula_id
162: FROM ff_formulas_f
163: WHERE formula_name = p_formula_name;
160: SELECT DISTINCT formula_id
161: INTO p_formula_id
162: FROM ff_formulas_f
163: WHERE formula_name = p_formula_name;
164: hr_utility.set_location('bacsmgtp.formula_id',p_formula_id);
165: --
166: RETURN p_formula_id;
167: --
168: END get_formula_id;
169: --
170: FUNCTION get_todays_date RETURN VARCHAR2 IS
171: todays_date VARCHAR2(30);
172: BEGIN
173: hr_utility.set_location('bacsmgtp.get_todays_date',1);
174: todays_date := to_char(sysdate,'YYYY/MM/DD HH24:MI:SS');
175: RETURN todays_date;
176: END get_todays_date;
177: --
177: --
178: FUNCTION get_session_date RETURN VARCHAR2 IS
179: p_session_date VARCHAR2(30);
180: BEGIN
181: hr_utility.set_location('bacsmgtp.get_session_date',1);
182: SELECT to_char(effective_date,'YYYY/MM/DD HH24:MI:SS')
183: INTO p_session_date
184: from fnd_sessions
185: where session_id = userenv('sessionid');
191: FUNCTION get_expiration_date(p_payroll_action_id IN VARCHAR2)
192: RETURN VARCHAR2 is
193: p_expiration_date VARCHAR2(30);
194: BEGIN
195: hr_utility.set_location('bacsmgtp.get_expiration_date',1);
196: select nvl(substr(LEGISLATIVE_PARAMETERS,
197: decode(instr(LEGISLATIVE_PARAMETERS,'EXPIRATION_DATE='),
198: '0', null,
199: instr(LEGISLATIVE_PARAMETERS,'EXPIRATION_DATE='))+16,11),
209: FUNCTION get_submission_number(p_payroll_action_id IN VARCHAR2)
210: RETURN VARCHAR2 is
211: p_submission_number VARCHAR2(6);
212: BEGIN
213: hr_utility.set_location('bacsmgtp.get_submission_number',1);
214: select
215: nvl(substr(LEGISLATIVE_PARAMETERS,
216: decode(instr(LEGISLATIVE_PARAMETERS,'SUBMISSION_NUMBER='),
217: '0', null,
220: into p_submission_number
221: from pay_payroll_actions
222: where PAYROLL_ACTION_ID = p_payroll_action_id;
223: --
224: hr_utility.set_location('bacsmgtp.get_submission_number',2);
225: RETURN p_submission_number;
226: --
227: END get_submission_number;
228: --
230: FUNCTION get_process_date(p_payroll_action_id IN VARCHAR2)
231: RETURN VARCHAR2 is
232: p_process_date VARCHAR2(30);
233: BEGIN
234: hr_utility.set_location('bacsmgtp.get_process_date',1);
235: hr_utility.trace('payroll_action_id='||p_payroll_action_id);
236: BEGIN
237: select
238: to_char(OVERRIDING_DD_DATE ,'YYYY/MM/DD HH24:MI:SS') effdate
231: RETURN VARCHAR2 is
232: p_process_date VARCHAR2(30);
233: BEGIN
234: hr_utility.set_location('bacsmgtp.get_process_date',1);
235: hr_utility.trace('payroll_action_id='||p_payroll_action_id);
236: BEGIN
237: select
238: to_char(OVERRIDING_DD_DATE ,'YYYY/MM/DD HH24:MI:SS') effdate
239: into p_process_date
240: from pay_payroll_actions
241: where PAYROLL_ACTION_ID = p_payroll_action_id;
242: --
243: EXCEPTION when others then
244: hr_utility.set_message(801, 'Other error in get_process_date f');
245: hr_utility.raise_error;
246: END;
247: --
248: hr_utility.set_location('bacsmgtp.get_process_date'||p_process_date,2);
241: where PAYROLL_ACTION_ID = p_payroll_action_id;
242: --
243: EXCEPTION when others then
244: hr_utility.set_message(801, 'Other error in get_process_date f');
245: hr_utility.raise_error;
246: END;
247: --
248: hr_utility.set_location('bacsmgtp.get_process_date'||p_process_date,2);
249: RETURN p_process_date;
244: hr_utility.set_message(801, 'Other error in get_process_date f');
245: hr_utility.raise_error;
246: END;
247: --
248: hr_utility.set_location('bacsmgtp.get_process_date'||p_process_date,2);
249: RETURN p_process_date;
250: --
251: END get_process_date;
252: --
255: -- one row.
256: FUNCTION get_org_context(p_payroll_action_id IN NUMBER) RETURN INTEGER IS
257: p_org_payment_method_id INTEGER;
258: BEGIN
259: hr_utility.set_location('bacsmgtp.get_org_context',1);
260: SELECT ppp.org_payment_method_id
261: INTO p_org_payment_method_id
262: FROM pay_assignment_actions paa, pay_pre_payments ppp
263: WHERE paa.payroll_action_id = p_payroll_action_id
263: WHERE paa.payroll_action_id = p_payroll_action_id
264: AND ppp.pre_payment_id = paa.pre_payment_id
265: AND ROWNUM = 1
266: ORDER BY ppp.org_payment_method_id;
267: hr_utility.set_location('org_context',p_org_payment_method_id);
268: RETURN p_org_payment_method_id;
269: END get_org_context;
270: --
271: BEGIN
270: --
271: BEGIN
272: -- temporary trace AS set trace on and delay for a while to set up pipemon
273: --IF NOT bacs_assignments %ISOPEN THEN
274: --hr_utility.trace_on;
275: -- declare loop_counter number;
276: --begin
277: --loop_counter := 1;
278: --while loop_counter < 500000 LOOP
291: pay_mag_tape.internal_cxt_values(1) := 1;
292: --
293: --
294: IF NOT bacs_assignments %ISOPEN THEN -- New file
295: hr_utility.set_location('bacsmgtp.new_formula',1);
296: --
297: total_body_count := 0; -- Initial value
298: total_contra_count := 0;
299: count_for_block := 0;
312: if pay_mag_tape.internal_prm_names(3) = 'PAYROLL_ACTION_ID'
313: then p_payroll_action_id := to_number(
314: pay_mag_tape.internal_prm_values(3));
315: end if;
316: hr_utility.set_location('bacsmgtp.payroll_action_id',p_payroll_action_id);
317: --
318: expiration_date := get_expiration_date(p_payroll_action_id);
319: submission_number := get_submission_number(p_payroll_action_id);
320: process_date := get_process_date(p_payroll_action_id);
339: --
340: OPEN bacs_assignments ( p_payroll_action_id);
341: --
342: ELSE
343: hr_utility.set_location('bacsmgtp.new_formula',2);
344: --
345: IF fetch_required = TRUE then
346: FETCH bacs_assignments INTO
347: p_org_payment_method_id,
353: --
354: IF bacs_assignments %FOUND THEN
355: IF p_org_payment_method_id = p_previous_payment_id
356: THEN
357: hr_utility.set_location('bacsmgtp.new_formula',3);
358: pay_mag_tape.internal_prm_values(1) := 4;
359: pay_mag_tape.internal_prm_values(2) := get_formula_id('BACS_BODY');
360: pay_mag_tape.internal_prm_names(2) := 'NEW_FORMULA_ID';
361: pay_mag_tape.internal_prm_names(3) := 'TRANSFER_VALUE' ;
378: --
379: -- Check for the block size
380: --
381: IF count_for_block = 20 then
382: hr_utility.set_location('bacsmgtp.new_formula',4);
383: block_count := block_count + 1;
384: count_for_block := 1;
385: ELSE count_for_block := count_for_block + 1;
386: hr_utility.set_location('bacsmgtp.new_formula',5);
382: hr_utility.set_location('bacsmgtp.new_formula',4);
383: block_count := block_count + 1;
384: count_for_block := 1;
385: ELSE count_for_block := count_for_block + 1;
386: hr_utility.set_location('bacsmgtp.new_formula',5);
387: END IF;
388: --
389: ELSE
390: hr_utility.set_location('bacsmgtp.new_formula',6);
386: hr_utility.set_location('bacsmgtp.new_formula',5);
387: END IF;
388: --
389: ELSE
390: hr_utility.set_location('bacsmgtp.new_formula',6);
391: pay_mag_tape.internal_prm_values(1) := 5;
392: pay_mag_tape.internal_prm_values(2) := get_formula_id('BACS_CONTRA');
393: pay_mag_tape.internal_prm_names(2) := 'NEW_FORMULA_ID';
394: pay_mag_tape.internal_prm_names(3) := 'TRANSFER_TOTAL_PAYMENT';
432: total_contra_count := total_contra_count + 1;
433: count_for_block :=count_for_block + 1;
434: final_contra :=TRUE;
435: ELSE
436: hr_utility.set_location('bacsmgtp.new_formula',8);
437: IF count_for_block < 20 then
438: hr_utility.set_location('bacsmgtp.new_formula',9);
439: pay_mag_tape.internal_prm_values(1) :=2;
440: pay_mag_tape.internal_prm_names(2) := 'NEW_FORMULA_ID';
434: final_contra :=TRUE;
435: ELSE
436: hr_utility.set_location('bacsmgtp.new_formula',8);
437: IF count_for_block < 20 then
438: hr_utility.set_location('bacsmgtp.new_formula',9);
439: pay_mag_tape.internal_prm_values(1) :=2;
440: pay_mag_tape.internal_prm_names(2) := 'NEW_FORMULA_ID';
441: pay_mag_tape.internal_prm_values(2) :=
442: get_formula_id('BACS_PADDING');
443: count_for_block:= count_for_block + 1;
444: ELSE
445: -- Padding finished - Now write footer,
446: --
447: hr_utility.set_location('bacsmgtp.new_formula',10);
448: pay_mag_tape.internal_cxt_values(1) := 3;
449: pay_mag_tape.internal_cxt_names(2) := 'ORG_PAY_METHOD_ID';
450: pay_mag_tape.internal_cxt_values(2) := p_org_payment_method_id;
451: pay_mag_tape.internal_cxt_names(3) := 'DATE_EARNED';
487: date_in_char varchar2(12);
488: begin
489: --
490: date_in_char:=to_char(date_in,'DD-MON-YYYY');
491: hr_utility.trace('Check for Bank Holiday in '||sql_str||'. Date: '||date_in_char);
492: select 1 into hols_id
493: from pay_user_column_instances_f inst,
494: pay_user_rows_f row1,
495: pay_user_columns col1,
507: return false;
508: --
509: EXCEPTION
510: when no_data_found then
511: hr_utility.trace('no data returned');
512: return true;
513: when too_many_rows then
514: hr_utility.trace('Too many rows returned');
515: return false;
510: when no_data_found then
511: hr_utility.trace('no data returned');
512: return true;
513: when too_many_rows then
514: hr_utility.trace('Too many rows returned');
515: return false;
516: end check_hols;
517: ----
518: FUNCTION main_routine (date1 DATE, sql_str VARCHAR2) RETURN DATE IS
525: date_ok boolean;
526: BEGIN
527: --
528: date_ok := false;
529: hr_utility.trace('MAIN ROUTINE ENTERED');
530: while not date_ok
531: loop
532: valdate := to_char( return_date,'D');
533: added_value := 0;
539: end if;
540: --
541: return_date := return_date + added_value;
542: --
543: hr_utility.trace(valdate||' '||added_value);
544: hr_utility.trace( to_char( return_date, 'day-DD-MON-YYYY'));
545: --
546: date_returned := check_hols(return_date, sql_str);
547: --
540: --
541: return_date := return_date + added_value;
542: --
543: hr_utility.trace(valdate||' '||added_value);
544: hr_utility.trace( to_char( return_date, 'day-DD-MON-YYYY'));
545: --
546: date_returned := check_hols(return_date, sql_str);
547: --
548: if date_returned = false then
545: --
546: date_returned := check_hols(return_date, sql_str);
547: --
548: if date_returned = false then
549: hr_utility.trace('date is a holiday');
550: return_date := return_date - 1;
551: date_ok := false;
552: else
553: hr_utility.trace('date is not a holiday');
549: hr_utility.trace('date is a holiday');
550: return_date := return_date - 1;
551: date_ok := false;
552: else
553: hr_utility.trace('date is not a holiday');
554: hr_utility.trace( to_char(return_date, 'day-DD-MON-YYYY'));
555: date_ok := true;
556: end if;
557: --
550: return_date := return_date - 1;
551: date_ok := false;
552: else
553: hr_utility.trace('date is not a holiday');
554: hr_utility.trace( to_char(return_date, 'day-DD-MON-YYYY'));
555: date_ok := true;
556: end if;
557: --
558: if date_ok then
697: --
698: open csr_get_details;
699: fetch csr_get_details into assignmt_id, eff_date;
700: close csr_get_details;
701: hr_utility.trace('Display effective date');
702: hr_utility.trace(eff_date);
703: hr_utility.trace('Display assignment id');
704: hr_utility.trace(assignmt_id);
705: --
698: open csr_get_details;
699: fetch csr_get_details into assignmt_id, eff_date;
700: close csr_get_details;
701: hr_utility.trace('Display effective date');
702: hr_utility.trace(eff_date);
703: hr_utility.trace('Display assignment id');
704: hr_utility.trace(assignmt_id);
705: --
706: hr_utility.trace('Display company payment rule');
699: fetch csr_get_details into assignmt_id, eff_date;
700: close csr_get_details;
701: hr_utility.trace('Display effective date');
702: hr_utility.trace(eff_date);
703: hr_utility.trace('Display assignment id');
704: hr_utility.trace(assignmt_id);
705: --
706: hr_utility.trace('Display company payment rule');
707: --
700: close csr_get_details;
701: hr_utility.trace('Display effective date');
702: hr_utility.trace(eff_date);
703: hr_utility.trace('Display assignment id');
704: hr_utility.trace(assignmt_id);
705: --
706: hr_utility.trace('Display company payment rule');
707: --
708: open payment_rule(eff_date, assignmt_id);
702: hr_utility.trace(eff_date);
703: hr_utility.trace('Display assignment id');
704: hr_utility.trace(assignmt_id);
705: --
706: hr_utility.trace('Display company payment rule');
707: --
708: open payment_rule(eff_date, assignmt_id);
709: loop
710: fetch payment_rule into scl_pay_gb_bacs_pay_rule;
711: exit when payment_rule%NOTFOUND;
712: end loop;
713: close payment_rule;
714: --
715: hr_utility.trace(scl_pay_gb_bacs_pay_rule);
716: if scl_pay_gb_bacs_pay_rule = 'P' then
717: hr_utility.trace('GET DEPOSIT DATE');
718: hr_utility.trace( to_char(dd_date, 'day-DD-MON-YYYY'));
719: --
713: close payment_rule;
714: --
715: hr_utility.trace(scl_pay_gb_bacs_pay_rule);
716: if scl_pay_gb_bacs_pay_rule = 'P' then
717: hr_utility.trace('GET DEPOSIT DATE');
718: hr_utility.trace( to_char(dd_date, 'day-DD-MON-YYYY'));
719: --
720: sql_str := NULL;
721: open get_banks;
714: --
715: hr_utility.trace(scl_pay_gb_bacs_pay_rule);
716: if scl_pay_gb_bacs_pay_rule = 'P' then
717: hr_utility.trace('GET DEPOSIT DATE');
718: hr_utility.trace( to_char(dd_date, 'day-DD-MON-YYYY'));
719: --
720: sql_str := NULL;
721: open get_banks;
722: loop
738: end if;
739: dd_date := lowest_dd_date;
740: proc_date := dd_date - 1;
741: sql_str := 'England';
742: hr_utility.trace('GET PROCESS DATE');
743: hr_utility.trace( to_char(proc_date, 'day-DD-MON-YYYY'));
744: proc_date := main_routine (proc_date, sql_str);
745: hr_utility.trace( to_char(dd_date, 'day-DD-MON-YYYY'));
746: hr_utility.trace( to_char(proc_date, 'day-DD-MON-YYYY'));
739: dd_date := lowest_dd_date;
740: proc_date := dd_date - 1;
741: sql_str := 'England';
742: hr_utility.trace('GET PROCESS DATE');
743: hr_utility.trace( to_char(proc_date, 'day-DD-MON-YYYY'));
744: proc_date := main_routine (proc_date, sql_str);
745: hr_utility.trace( to_char(dd_date, 'day-DD-MON-YYYY'));
746: hr_utility.trace( to_char(proc_date, 'day-DD-MON-YYYY'));
747: hr_utility.trace(' Lowest DATE');
741: sql_str := 'England';
742: hr_utility.trace('GET PROCESS DATE');
743: hr_utility.trace( to_char(proc_date, 'day-DD-MON-YYYY'));
744: proc_date := main_routine (proc_date, sql_str);
745: hr_utility.trace( to_char(dd_date, 'day-DD-MON-YYYY'));
746: hr_utility.trace( to_char(proc_date, 'day-DD-MON-YYYY'));
747: hr_utility.trace(' Lowest DATE');
748: hr_utility.trace( to_char(lowest_dd_date, 'day-DD-MON-YYYY'));
749: RETURN proc_date;
742: hr_utility.trace('GET PROCESS DATE');
743: hr_utility.trace( to_char(proc_date, 'day-DD-MON-YYYY'));
744: proc_date := main_routine (proc_date, sql_str);
745: hr_utility.trace( to_char(dd_date, 'day-DD-MON-YYYY'));
746: hr_utility.trace( to_char(proc_date, 'day-DD-MON-YYYY'));
747: hr_utility.trace(' Lowest DATE');
748: hr_utility.trace( to_char(lowest_dd_date, 'day-DD-MON-YYYY'));
749: RETURN proc_date;
750: END validate_process_date;
743: hr_utility.trace( to_char(proc_date, 'day-DD-MON-YYYY'));
744: proc_date := main_routine (proc_date, sql_str);
745: hr_utility.trace( to_char(dd_date, 'day-DD-MON-YYYY'));
746: hr_utility.trace( to_char(proc_date, 'day-DD-MON-YYYY'));
747: hr_utility.trace(' Lowest DATE');
748: hr_utility.trace( to_char(lowest_dd_date, 'day-DD-MON-YYYY'));
749: RETURN proc_date;
750: END validate_process_date;
751: --
744: proc_date := main_routine (proc_date, sql_str);
745: hr_utility.trace( to_char(dd_date, 'day-DD-MON-YYYY'));
746: hr_utility.trace( to_char(proc_date, 'day-DD-MON-YYYY'));
747: hr_utility.trace(' Lowest DATE');
748: hr_utility.trace( to_char(lowest_dd_date, 'day-DD-MON-YYYY'));
749: RETURN proc_date;
750: END validate_process_date;
751: --
752: END pay_gb_bacs_tape;