DBA Data[Home] [Help]

PACKAGE BODY: APPS.PER_RI_CRP_DEFAULT_SETTINGS

Source


1 PACKAGE BODY PER_RI_CRP_DEFAULT_SETTINGS AS
2 /* $Header: perricrpd.pkb 120.9 2008/05/12 14:08:26 viviswan noship $ */
3 
4 Procedure create_hook;
5 
6 PROCEDURE write_log(p_retcode			 IN NUMBER,
7 		    p_message_token1		 IN VARCHAR2,
8 		    p_message_token2		 IN VARCHAR2)
9 IS
10 
11 BEGIN
12 	   FND_MESSAGE.SET_NAME('PER','PER_RI_WB_CRP_DEFAULTS');
13 	   FND_MESSAGE.SET_TOKEN('OBJECT',p_message_token1);
14 	   FND_MESSAGE.SET_TOKEN('BG',p_message_token2);
15 	   FND_FILE.PUT_LINE(FND_FILE.LOG,FND_MESSAGE.GET);
16 END write_log;
17 
18 function get_dflt_first_end_date (p_basic_period_type  in varchar2,
19 				  p_periods_per_period in number,
20 				  p_session_date       in date ) return date is
21  l_day_of_month   number(2) := to_number(to_char(p_session_date,'DD')) ;
22  l_return_value   date      := null ;
23  begin
24 
25 
26    if ( p_basic_period_type = 'W' ) then
27       -- First period end date should be start_date + 6
28       -- If FPED is start_date + 7, the start_date is not included
29       -- in the payroll process.
30       -- In forms, this value for Weekly payroll is entered by user.
31       l_return_value := p_session_date + 6 ;
32 
33    elsif ( p_basic_period_type = 'SM' ) then
34 
35       if ( l_day_of_month = 1 ) then
36 
37 	l_return_value :=  trunc(p_session_date,'month') + 14 ;
38 
39       elsif ( l_day_of_month between 2 and 15 ) then
40 
41 	l_return_value := last_day(p_session_date) ;
42 
43       else
44 
45         l_return_value := trunc(add_months(p_session_date,1),'month') + 14  ;
46 
47       end if;
48 
49    elsif ( p_basic_period_type = 'CM' ) then
50 
51       if ( l_day_of_month = 1 ) then
52 
53          l_return_value := last_day(add_months(p_session_date,p_periods_per_period - 1 )) ;
54 
55       else
56 
57          l_return_value := last_day(add_months(p_session_date,p_periods_per_period)) ;
58      end if;
59 
60   end if;
61 
62   return ( l_return_value ) ;
63 
64  end get_dflt_first_end_date ;
65 
66 
67 PROCEDURE create_el_api		  (p_element_name 	   	 IN VARCHAR2,
68 		  	      	   p_bg_id		 	 IN NUMBER,
69 		  	           p_std_link_flag		 IN VARCHAR2,
70 		  	           p_legislation_code       	 IN VARCHAR2,
71 			           p_retcode 		 	 OUT nocopy NUMBER,
72 			           p_errbuff	 	 	 OUT nocopy VARCHAR2)
73 
74 IS
75 
76   	 -- IN variables
77    	 l_element_type_id    		  PAY_ELEMENT_TYPES_F.ELEMENT_TYPE_ID%TYPE;
78 	 l_effective_date     		  DATE;
79 	 l_costable_type              	  PAY_ELEMENT_LINKS_F.COSTABLE_TYPE%TYPE := 'N';
80 	 l_verify_element_link	 	  NUMBER;
81 
82 	 -- OUT variables
83 	 l_element_link_id   		  PAY_ELEMENT_LINKS_F.ELEMENT_LINK_ID%TYPE;
84 	 l_comment_id 			  PAY_ELEMENT_LINKS_F.COMMENT_ID%TYPE;
85 	 l_object_version_number 	  PAY_ELEMENT_LINKS_F.OBJECT_VERSION_NUMBER%TYPE;
86 	 l_effective_start_date		  DATE;
87 	 l_effective_end_date   	  DATE;
88 
89 
90 	 -- Declare  a cursor to capture the element type and effective start date
91 	 CURSOR csr_element IS
92 		SELECT element_type_id,effective_start_date
93 		FROM   PAY_ELEMENT_TYPES_F
94 		WHERE  ELEMENT_NAME     = p_element_name
95 		AND    LEGISLATION_CODE = p_legislation_code;
96 
97 BEGIN
98 
99 	 p_retcode :=0;/* Setting initial value*/
100 
101      	 OPEN  csr_element;
102   	 FETCH csr_element INTO l_element_type_id,l_effective_date;
103 	 CLOSE csr_element;
104 
105 	 SELECT COUNT(*) INTO l_verify_element_link
106 	 FROM   PAY_ELEMENT_LINKS_F
107 	 WHERE  element_type_id     = l_element_type_id
108 	 AND    business_group_id   = p_bg_id
109 	 AND    organization_id     is null
110 	 AND    people_group_id     is null
111 	 AND    job_id              is null
112 	 AND    position_id         is null
113 	 AND    grade_id            is null
114 	 AND    location_id         is null
115 	 AND    employment_category is null
116 	 AND    payroll_id	    is null
117  	 AND    pay_basis_id        is null;  /* CHECKS MADE TO ENSURE THAT IT IS AN OPEN ELEMENT LINK*/
118 
119 
120 	 IF (l_verify_element_link <>0) THEN
121 	 	 	p_retcode  := 1;
122 	 	 	p_errbuff  := 'Warning : CRP Default Program may not function properly as Element Links under the name ' || p_element_name || ' already exists(continuing creation of other data) for business group ID = ';
123 	 	 	write_log(1,p_errbuff,p_bg_id);
124 
125 	 ELSE
126 
127 	 PAY_ELEMENT_LINK_API.CREATE_ELEMENT_LINK(P_VALIDATE            	  => false,
128 	 					  P_EFFECTIVE_DATE 		  => l_effective_date,
129 						  P_ELEMENT_TYPE_ID 		  => l_element_type_id,
130 						  P_BUSINESS_GROUP_ID 		  => p_bg_id,
131 						  P_COSTABLE_TYPE		  => l_costable_type,
132 						  P_PAYROLL_ID 			  => null,
133 						  P_JOB_ID 			  => null,
134 						  P_POSITION_ID 		  => null,
135 						  P_PEOPLE_GROUP_ID		  => null,
136 						  P_COST_ALLOCATION_KEYFLEX_ID    => null,
137 						  P_ORGANIZATION_ID 		  => null,
138 						  P_LOCATION_ID 		  => null,
139 						  P_GRADE_ID 			  => null,
140 						  P_BALANCING_KEYFLEX_ID 	  => null,
141 						  P_ELEMENT_SET_ID 		  => null,
142 						  P_PAY_BASIS_ID 		  => null,
143 						  P_LINK_TO_ALL_PAYROLLS_FLAG 	  => 'N',
144 						  P_STANDARD_LINK_FLAG 		  => p_std_link_flag,
145 						  P_TRANSFER_TO_GL_FLAG 	  => 'N',
146 						  P_COMMENTS 			  => null,
147 						  P_EMPLOYMENT_CATEGORY 	  => null,
148 						  P_QUALIFYING_AGE 		  => null,
149 						  P_QUALIFYING_LENGTH_OF_SERVICE  => null,
150 						  P_QUALIFYING_UNITS 		  => null,
151 						  P_ATTRIBUTE_CATEGORY 		  => null,
152 						  P_ATTRIBUTE1 			  => null,
153 						  P_ATTRIBUTE2 			  => null,
154 						  P_ATTRIBUTE3 			  => null,
155 						  P_ATTRIBUTE4 			  => null,
156 						  P_ATTRIBUTE5 			  => null,
157 						  P_ATTRIBUTE6 			  => null,
158 						  P_ATTRIBUTE7 			  => null,
159 						  P_ATTRIBUTE8 			  => null,
160 						  P_ATTRIBUTE9 			  => null,
161 						  P_ATTRIBUTE10 		  => null,
162 						  P_ATTRIBUTE11 		  => null,
163 						  P_ATTRIBUTE12 		  => null,
164 						  P_ATTRIBUTE13 		  => null,
165 						  P_ATTRIBUTE14 		  => null,
166 						  P_ATTRIBUTE15 		  => null,
167 						  P_ATTRIBUTE16 		  => null,
168 						  P_ATTRIBUTE17 		  => null,
169 						  P_ATTRIBUTE18 		  => null,
170 						  P_ATTRIBUTE19 		  => null,
171 						  P_ATTRIBUTE20 		  => null,
172 						  P_COST_SEGMENT1 		  => null,
173 						  P_COST_SEGMENT2 		  => null,
174 						  P_COST_SEGMENT3 		  => null,
175 						  P_COST_SEGMENT4 		  => null,
176 						  P_COST_SEGMENT5 		  => null,
177 						  P_COST_SEGMENT6 		  => null,
178 						  P_COST_SEGMENT7 		  => null,
179 						  P_COST_SEGMENT8 		  => null,
180 						  P_COST_SEGMENT9 		  => null,
181 						  P_COST_SEGMENT10 		  => null,
182 						  P_COST_SEGMENT11 		  => null,
183 						  P_COST_SEGMENT12 		  => null,
184 						  P_COST_SEGMENT13 		  => null,
185 						  P_COST_SEGMENT14 		  => null,
186 						  P_COST_SEGMENT15 		  => null,
187 						  P_COST_SEGMENT16 		  => null,
188 						  P_COST_SEGMENT17 		  => null,
189 						  P_COST_SEGMENT18 		  => null,
190 						  P_COST_SEGMENT19 		  => null,
191 						  P_COST_SEGMENT20 		  => null,
192 						  P_COST_SEGMENT21 		  => null,
193 						  P_COST_SEGMENT22 		  => null,
194 						  P_COST_SEGMENT23 		  => null,
195 						  P_COST_SEGMENT24 		  => null,
196 						  P_COST_SEGMENT25 		  => null,
197 						  P_COST_SEGMENT26 		  => null,
198 						  P_COST_SEGMENT27 		  => null,
199 						  P_COST_SEGMENT28 		  => null,
200 						  P_COST_SEGMENT29 		  => null,
201 						  P_COST_SEGMENT30 		  => null,
202 						  P_BALANCE_SEGMENT1 		  => null,
203 						  P_BALANCE_SEGMENT2 		  => null,
204 						  P_BALANCE_SEGMENT3 		  => null,
205 						  P_BALANCE_SEGMENT4 		  => null,
206 						  P_BALANCE_SEGMENT5 		  => null,
207 						  P_BALANCE_SEGMENT6 		  => null,
208 						  P_BALANCE_SEGMENT7 		  => null,
209 						  P_BALANCE_SEGMENT8 		  => null,
210 						  P_BALANCE_SEGMENT9 		  => null,
211 						  P_BALANCE_SEGMENT10 		  => null,
212 						  P_BALANCE_SEGMENT11 		  => null,
213 						  P_BALANCE_SEGMENT12 		  => null,
214 						  P_BALANCE_SEGMENT13 		  => null,
215 						  P_BALANCE_SEGMENT14 		  => null,
216 						  P_BALANCE_SEGMENT15 		  => null,
217 						  P_BALANCE_SEGMENT16 		  => null,
218 						  P_BALANCE_SEGMENT17 		  => null,
219 						  P_BALANCE_SEGMENT18 		  => null,
220 						  P_BALANCE_SEGMENT19 		  => null,
221 						  P_BALANCE_SEGMENT20 		  => null,
222 						  P_BALANCE_SEGMENT21 		  => null,
223 						  P_BALANCE_SEGMENT22 		  => null,
224 						  P_BALANCE_SEGMENT23 		  => null,
225 						  P_BALANCE_SEGMENT24 		  => null,
226 						  P_BALANCE_SEGMENT25 		  => null,
227 						  P_BALANCE_SEGMENT26 		  => null,
228 						  P_BALANCE_SEGMENT27 		  => null,
229 						  P_BALANCE_SEGMENT28 		  => null,
230 						  P_BALANCE_SEGMENT29 		  => null,
231 						  P_BALANCE_SEGMENT30 		  => null,
232 						  P_COST_CONCAT_SEGMENTS 	  => null,
233 						  P_BALANCE_CONCAT_SEGMENTS	  => null,
234 						  P_ELEMENT_LINK_ID 		  => l_element_link_id,
235 						  P_COMMENT_ID 			  => l_comment_id,
236 						  P_OBJECT_VERSION_NUMBER 	  => l_object_version_number,
237 						  P_EFFECTIVE_START_DATE 	  => l_effective_start_date,
238 						  P_EFFECTIVE_END_DATE	 	  => l_effective_end_date );
239 
240 	p_errbuff  := 'Element Links ' || p_element_name || ' has been created successfully for business group ID = ';
241 	write_log(0,p_errbuff,p_bg_id);
242 
243 	END IF;
244 
245 
246 
247 	EXCEPTION
248 	WHEN OTHERS THEN
249  	p_retcode := 2;
250  	p_errbuff := 'CRP Default data has not been created and all data has been rolled back because and error occurred while trying to create Element Link for ' || p_element_name || SQLERRM || SQLCODE;
251  	write_log(2,p_errbuff,p_bg_id);
252 
253 
254 END create_el_api;
255 
256 
257 PROCEDURE create_salary_basis_api(p_name 			 IN VARCHAR2,
258 		  	      	  p_pay_basis_name 		 IN VARCHAR2,
259                              	  p_bg_id	 	 	 IN NUMBER,
260 		  	     	  p_input_value_name 		 IN VARCHAR2,
261 			     	  p_element_name 		 IN VARCHAR2,
262 			     	  p_rate_name			 IN VARCHAR2,
263 			     	  p_pay_annualization_factor  	 IN NUMBER,
264 			     	  p_grade_annualization_factor   IN NUMBER,
265 			     	  p_legislation_code		 IN VARCHAR2,
266 			     	  p_retcode 			 OUT nocopy VARCHAR2,
267 			     	  p_errbuff	 		 OUT nocopy VARCHAR2)
268 
269 IS
270   	-- IN variables
271   	l_input_value_id	       PAY_INPUT_VALUES_F.INPUT_VALUE_ID%TYPE;
272         l_name			       PER_PAY_BASES.NAME%TYPE		 	   := p_name;
273         l_pay_basis_name	       PER_PAY_BASES.PAY_BASIS%TYPE  		   := p_pay_basis_name;
274         l_rate_id		       PAY_RATES.RATE_ID%TYPE;
275 	l_pay_annualization_factor     PER_PAY_BASES.PAY_ANNUALIZATION_FACTOR%TYPE := p_pay_annualization_factor;
276 	l_grade_annualization_factor   PER_PAY_BASES.GRADE_ANNUALIZATION_FACTOR%TYPE := p_grade_annualization_factor;
277 	l_verify_salary_basis 	       NUMBER;
278 
279 	-- OUT Variables
280 	l_pay_basis_id  	       PER_PAY_BASES.PAY_BASIS_ID%TYPE			:= null;
281 	l_object_version_number        PAY_ELEMENT_LINKS_F.OBJECT_VERSION_NUMBER%TYPE	:= null;
282 
283 
284 	 -- Declare a cursor to capture input value id
285 	CURSOR csr_input_value_id IS
286   	 SELECT i.input_value_id
287 	 FROM   PAY_INPUT_VALUES_F i,PAY_ELEMENT_TYPES_F e
288 	 WHERE  i.element_type_id  = e.element_type_id
289 	 AND    i.name             = p_input_value_name
290 	 AND    e.element_name     = p_element_name
291 	 AND    e.legislation_code = p_legislation_code; -- CHANGE THE LEGISLATION CODE ACCORDING TO REQUIREMENT
292 
293 	-- Declare a cursor to capture rate basis id
294 	CURSOR csr_rate_id IS
295    	 SELECT rate_id
296 	 FROM   PAY_RATES
297 	 WHERE  name = p_rate_name
298 	 and business_group_id = p_bg_id;
299 
300 BEGIN
301 	p_retcode :=0;/* Setting initial value*/
302     	OPEN  csr_input_value_id;
303  	FETCH csr_input_value_id INTO l_input_value_id;
304  	CLOSE csr_input_value_id;
305 
306  	OPEN  csr_rate_id;
307 	FETCH csr_rate_id INTO l_rate_id;
308 	CLOSE csr_rate_id;
309 
310 
311 	SELECT COUNT(*) INTO l_verify_salary_basis
312 	FROM   PER_PAY_BASES
313 	WHERE  name = p_name
314         AND    business_group_id      = p_bg_id;
315 
316 	IF (l_verify_salary_basis <>0) THEN
317 	 	p_retcode  := 1;
318 	 	p_errbuff  := 'Warning : CRP Default Program may not function properly as  Salary Basis under the name ' || p_name || ' already exists(continuing creation of other data) for business group ID = ';
319 	 	write_log(1,p_errbuff,p_bg_id);
320 
321 	ELSE
322 
323 	 -- Call the API to insert the Salary Basis
324 
325 	HR_SALARY_BASIS_API.CREATE_SALARY_BASIS(P_VALIDATE	  	   	  => false,
326 						P_BUSINESS_GROUP_ID		  => p_bg_id,
327 					 	P_INPUT_VALUE_ID		  => l_input_value_id,
328 						P_RATE_ID			  => l_rate_id,
329 						P_NAME				  => l_name,
330 						P_PAY_BASIS			  => l_pay_basis_name,
331 						P_RATE_BASIS			  => null,
332 						P_PAY_ANNUALIZATION_FACTOR	  => l_pay_annualization_factor,
333 						P_GRADE_ANNUALIZATION_FACTOR  	  => l_grade_annualization_factor,
334 						P_ATTRIBUTE_CATEGORY		  => null,
335 						P_ATTRIBUTE1			  => null,
336 						P_ATTRIBUTE2			  => null,
337 						P_ATTRIBUTE3			  => null,
338 						P_ATTRIBUTE4			  => null,
339 						P_ATTRIBUTE5			  => null,
340 						P_ATTRIBUTE6			  => null,
341 						P_ATTRIBUTE7			  => null,
342 						P_ATTRIBUTE8			  => null,
343 						P_ATTRIBUTE9			  => null,
344 						P_ATTRIBUTE10			  => null,
345 						P_ATTRIBUTE11			  => null,
346 						P_ATTRIBUTE12			  => null,
347 						P_ATTRIBUTE13			  => null,
348 						P_ATTRIBUTE14			  => null,
349 						P_ATTRIBUTE15			  => null,
350 						P_ATTRIBUTE16			  => null,
351 						P_ATTRIBUTE17			  => null,
352 						P_ATTRIBUTE18			  => null,
353 						P_ATTRIBUTE19			  => null,
354 						P_ATTRIBUTE20			  => null,
355 						P_LAST_UPDATE_DATE		  => null,
356 						P_LAST_UPDATED_BY		  => null,
357 						P_LAST_UPDATE_LOGIN		  => null,
358 						P_CREATED_BY			  => null,
359 						P_CREATION_DATE			  => null,
360 						P_INFORMATION_CATEGORY		  => null,
361 						P_INFORMATION1			  => null,
362 						P_INFORMATION2			  => null,
363 						P_INFORMATION3			  => null,
364 						P_INFORMATION4			  => null,
365 						P_INFORMATION5			  => null,
366 						P_INFORMATION6			  => null,
367 						P_INFORMATION7			  => null,
368 						P_INFORMATION8			  => null,
369 						P_INFORMATION9			  => null,
370 						P_INFORMATION10			  => null,
371 						P_INFORMATION11			  => null,
372 						P_INFORMATION12			  => null,
373 						P_INFORMATION13			  => null,
374 						P_INFORMATION14		  	  => null,
375 						P_INFORMATION15		 	  => null,
376 						P_INFORMATION16		  	  => null,
377 						P_INFORMATION17		   	  => null,
378 						P_INFORMATION18		  	  => null,
379 						P_INFORMATION19		   	  => null,
380 						P_INFORMATION20		  	  => null,
381 						P_PAY_BASIS_ID			  => l_pay_basis_id,
382 						P_OBJECT_VERSION_NUMBER 	  => l_object_version_number);
383 
384 	p_errbuff  := 'Salary Basis ' || p_name || ' has been created successfully for business group ID = ';
385 	write_log(0,p_errbuff,p_bg_id);
386 
387 
388 	END IF;
389 
390 	EXCEPTION
391 	WHEN OTHERS THEN
392  	p_retcode  := 2;
393  	p_errbuff  := 'CRP Default data has not been created and all data has been rolled back because an error occurred while trying to create Salary Basis under the name ' || p_name;
394  	write_log(2,p_errbuff,p_bg_id);
395 
396 
397 END create_salary_basis_api;
398 
399 
400 
401 PROCEDURE create_payroll_api    (p_payroll_name			 IN VARCHAR2,
402 				 p_bg_id			 IN NUMBER,
403 			  	 p_effective_date		 IN DATE,
404 			  	 p_period_type			 IN VARCHAR2,
405 			  	 p_first_period_end_date	 IN DATE,
406 			  	 p_number_of_years		 IN NUMBER,
407 			  	 p_consolidation_set_name	 IN VARCHAR2,
408                                  p_default_payment_method_id     IN NUMBER,
409                                  p_payroll_id                    OUT nocopy NUMBER,
410                    				 p_leg_code                      IN VARCHAR2,
411 			  	 p_retcode			 OUT nocopy NUMBER,
412 			  	 p_errbuff	 	 	 OUT nocopy VARCHAR2)
413 
414 IS
415 
416 	-- IN Variables
417 	l_leg_code              VARCHAR2(2) := p_leg_code;
418 	l_payroll_name 			PAY_PAYROLLS_F.PAYROLL_NAME%TYPE 	  := p_payroll_name;
419 	l_effective_date		DATE 				     	  := p_effective_date;
420 	l_period_type			PAY_PAYROLLS_F.PAYROLL_TYPE%TYPE 	  := p_period_type;
421 	l_first_period_end_date		PAY_PAYROLLS_F.FIRST_PERIOD_END_DATE%TYPE := p_first_period_end_date;
422 	l_number_of_years		PAY_PAYROLLS_F.NUMBER_OF_YEARS%TYPE	  := p_number_of_years;
423 	l_consolidation_set_id          PAY_CONSOLIDATION_SETS.CONSOLIDATION_SET_ID%TYPE;
424         l_def_payment_method_id         PAY_PAYROLLS_F.DEFAULT_PAYMENT_METHOD_ID%type;
425 	l_verify_payroll  	        NUMBER;
426 
427 
428 	-- OUT Variables
429         l_org_pay_method_usage_id	NUMBER;
430         l_prl_object_version_number	PAY_ELEMENT_LINKS_F.OBJECT_VERSION_NUMBER%TYPE;
431         l_opm_object_version_number	PAY_ELEMENT_LINKS_F.OBJECT_VERSION_NUMBER%TYPE;
432         l_prl_effective_start_date	DATE;
433         l_prl_effective_end_date	DATE;
434         l_opm_effective_start_date	DATE;
435         l_opm_effective_end_date	DATE;
436         l_comment_id			NUMBER;
437 
438 
439 	-- Declare a Cursor to capture the consolidation set
440 	CURSOR csr_consolidation_set_id IS
441 		SELECT c.consolidation_set_id
442 		FROM   PAY_CONSOLIDATION_SETS c,PER_BUSINESS_GROUPS b
443 		WHERE  b.business_group_id      = p_bg_id
444 		AND    b.business_group_id      = c.business_group_id
445 		AND    c.consolidation_set_name = p_consolidation_set_name;
446 
447 BEGIN
448 
449 	p_retcode :=0;/* Setting initial value*/
450 	--hr_utility.trace_on(null,'TTT');
451 
452 	OPEN  csr_consolidation_set_id;
453 	FETCH csr_consolidation_set_id INTO l_consolidation_set_id;
454 	CLOSE csr_consolidation_set_id;
455 
456 	SELECT COUNT(*) INTO l_verify_payroll
457 	FROM   PAY_PAYROLLS_F
458 	WHERE  payroll_name           = p_payroll_name
459 	AND    business_group_id      = p_bg_id;
460 
461 	--hr_utility.trace(' BG ID .....'        || p_bg_id);
462 	--hr_utility.trace(' Payroll Name '      || p_payroll_name);
463 	--hr_utility.trace(' l_verify Payroll ..'|| l_verify_payroll);
464 
465 	IF (l_verify_payroll <>0 ) THEN
466 	 	p_retcode  := 1;
467 	 	p_errbuff  := 'Warning : CRP Default Program may not function properly as Payroll under the name ' || p_payroll_name || ' already exists(continuing creation of other data) for business group ID = ';
468         	write_log(1,p_errbuff,p_bg_id);
469 
470                 -- Get the id of the existing payroll with the same name
471                 SELECT distinct payroll_id into p_payroll_id
472                 FROM   PAY_PAYROLLS_F
473                 WHERE  payroll_name      = p_payroll_name
474                 AND    business_group_id = p_bg_id;
475 	ELSE
476 
477 --       hr_utility.trace_on(null,'PRAM');
478 --       hr_utility.trace('l_payroll_name='||l_payroll_name);
479 
480        IF l_leg_code = 'US' Then
481         PAY_PAYROLL_API.CREATE_PAYROLL(P_VALIDATE			=> null,
482 				       P_EFFECTIVE_DATE			=> l_effective_date,
483 				       P_PAYROLL_NAME			=> l_payroll_name,
484 				       P_PAYROLL_TYPE			=> null,
485 				       P_PERIOD_TYPE			=> l_period_type,
486 				       P_FIRST_PERIOD_END_DATE		=> l_first_period_end_date,
487 				       P_NUMBER_OF_YEARS		=> l_number_of_years,
488 				       P_PAY_DATE_OFFSET		=> 0,
489 				       P_DIRECT_DEPOSIT_DATE_OFFSET	=> 0,
490 				       P_PAY_ADVICE_DATE_OFFSET		=> 0,
491 				       P_CUT_OFF_DATE_OFFSET		=> 0,
492 				       P_MIDPOINT_OFFSET		=> null,
493 				       P_DEFAULT_PAYMENT_METHOD_ID	=> p_default_payment_method_id,
494 				       P_CONSOLIDATION_SET_ID		=> l_consolidation_set_id,
495 				       P_COST_ALLOCATION_KEYFLEX_ID	=> null,
496 				       P_SUSPENSE_ACCOUNT_KEYFLEX_ID	=> null,
497 				       P_NEGATIVE_PAY_ALLOWED_FLAG	=> 'N',
498 				       P_GL_SET_OF_BOOKS_ID		=> null,
499 				       P_SOFT_CODING_KEYFLEX_ID		=> null,
500 				       P_COMMENTS			=> null,
501 				       P_ATTRIBUTE_CATEGORY		=> null,
502 				       P_ATTRIBUTE1			=> null,
503 				       P_ATTRIBUTE2			=> null,
504 				       P_ATTRIBUTE3			=> null,
505 				       P_ATTRIBUTE4			=> null,
506 				       P_ATTRIBUTE5			=> null,
507 				       P_ATTRIBUTE6			=> null,
508 				       P_ATTRIBUTE7			=> null,
509 				       P_ATTRIBUTE8			=> null,
510 				       P_ATTRIBUTE9			=> null,
511 				       P_ATTRIBUTE10			=> null,
512 				       P_ATTRIBUTE11			=> null,
513 				       P_ATTRIBUTE12			=> null,
514 				       P_ATTRIBUTE13			=> null,
515 				       P_ATTRIBUTE14			=> null,
516 				       P_ATTRIBUTE15			=> null,
517 				       P_ATTRIBUTE16			=> null,
518 				       P_ATTRIBUTE17			=> null,
519 				       P_ATTRIBUTE18			=> null,
520 				       P_ATTRIBUTE19			=> null,
521 				       P_ATTRIBUTE20			=> null,
522 				       p_prl_information3       => 'N',  -- 'N','NO','No'
523 				       p_prl_information6       => 'L', --'Pre notification All',
524 				       P_ARREARS_FLAG			=> null,
525 				       P_PAYROLL_ID			=> p_payroll_id,
526 				       P_ORG_PAY_METHOD_USAGE_ID	=> l_org_pay_method_usage_id,
527 				       P_PRL_OBJECT_VERSION_NUMBER	=> l_prl_object_version_number,
528 				       P_OPM_OBJECT_VERSION_NUMBER	=> l_opm_object_version_number,
529 				       P_PRL_EFFECTIVE_START_DATE	=> l_prl_effective_start_date,
530 				       P_PRL_EFFECTIVE_END_DATE		=> l_prl_effective_end_date,
531 				       P_OPM_EFFECTIVE_START_DATE	=> l_opm_effective_start_date,
532 				       P_OPM_EFFECTIVE_END_DATE		=> l_opm_effective_end_date,
533 				       P_COMMENT_ID 			=> l_comment_id);
534 
535        ELSIF l_leg_code = 'GB' Then
536 
537                PAY_PAYROLL_API.CREATE_PAYROLL(P_VALIDATE			=> null,
538 				       P_EFFECTIVE_DATE			=> l_effective_date,
539 				       P_PAYROLL_NAME			=> l_payroll_name,
540 				       P_PAYROLL_TYPE			=> null,
541 				       P_PERIOD_TYPE			=> l_period_type,
542 				       P_FIRST_PERIOD_END_DATE		=> l_first_period_end_date,
543 				       P_NUMBER_OF_YEARS		=> l_number_of_years,
544 				       P_PAY_DATE_OFFSET		=> 0,
545 				       P_DIRECT_DEPOSIT_DATE_OFFSET	=> 0,
546 				       P_PAY_ADVICE_DATE_OFFSET		=> 0,
547 				       P_CUT_OFF_DATE_OFFSET		=> 0,
548 				       P_MIDPOINT_OFFSET		=> null,
549 				       P_DEFAULT_PAYMENT_METHOD_ID	=> p_default_payment_method_id,
550 				       P_CONSOLIDATION_SET_ID		=> l_consolidation_set_id,
551 				       P_COST_ALLOCATION_KEYFLEX_ID	=> null,
552 				       P_SUSPENSE_ACCOUNT_KEYFLEX_ID	=> null,
553 				       P_NEGATIVE_PAY_ALLOWED_FLAG	=> 'N',
554 				       P_GL_SET_OF_BOOKS_ID		=> null,
555 				       P_SOFT_CODING_KEYFLEX_ID		=> null,
556 				       P_COMMENTS			=> null,
557 				       P_ATTRIBUTE_CATEGORY		=> null,
558 				       P_ATTRIBUTE1			=> null,
559 				       P_ATTRIBUTE2			=> null,
560 				       P_ATTRIBUTE3			=> null,
561 				       P_ATTRIBUTE4			=> null,
562 				       P_ATTRIBUTE5			=> null,
563 				       P_ATTRIBUTE6			=> null,
564 				       P_ATTRIBUTE7			=> null,
565 				       P_ATTRIBUTE8			=> null,
566 				       P_ATTRIBUTE9			=> null,
567 				       P_ATTRIBUTE10			=> null,
568 				       P_ATTRIBUTE11			=> null,
569 				       P_ATTRIBUTE12			=> null,
570 				       P_ATTRIBUTE13			=> null,
571 				       P_ATTRIBUTE14			=> null,
572 				       P_ATTRIBUTE15			=> null,
573 				       P_ATTRIBUTE16			=> null,
574 				       P_ATTRIBUTE17			=> null,
575 				       P_ATTRIBUTE18			=> null,
576 				       P_ATTRIBUTE19			=> null,
577 				       P_ATTRIBUTE20			=> null,
578 				       P_ARREARS_FLAG			=> null,
579 				       P_PAYROLL_ID			=> p_payroll_id,
580 				       P_ORG_PAY_METHOD_USAGE_ID	=> l_org_pay_method_usage_id,
581 				       P_PRL_OBJECT_VERSION_NUMBER	=> l_prl_object_version_number,
582 				       P_OPM_OBJECT_VERSION_NUMBER	=> l_opm_object_version_number,
583 				       P_PRL_EFFECTIVE_START_DATE	=> l_prl_effective_start_date,
584 				       P_PRL_EFFECTIVE_END_DATE		=> l_prl_effective_end_date,
585 				       P_OPM_EFFECTIVE_START_DATE	=> l_opm_effective_start_date,
586 				       P_OPM_EFFECTIVE_END_DATE		=> l_opm_effective_end_date,
587 				       P_COMMENT_ID 			=> l_comment_id);
588        END IF;
589 
590 	p_errbuff  := 'Payroll ' || p_payroll_name || ' has been created successfully for business group ID = ';
591 	write_log(0,p_errbuff,p_bg_id);
592 
593   END IF;
594 
595 	EXCEPTION
596 	WHEN OTHERS THEN
597 	p_retcode  := 2;
598 	p_errbuff  := 'CRP Default data has not been created and all data has been rolled back because an error occurred while trying to create Payroll under the name ' || p_payroll_name || SQLERRM || SQLCODE;
599  	write_log(2,p_errbuff,p_bg_id);
600 
601 
602 END create_payroll_api;
603 
604 
605 
606 PROCEDURE create_payment_methods_api	(p_payment_method_name		 IN VARCHAR2,
607 					 p_bg_id			 IN NUMBER,
608 		 	 		 p_effective_date		 IN DATE,
609 				  	 p_payment_type_name		 IN VARCHAR2,
610 				  	 p_territory_code		 IN VARCHAR2,
611 				  	 p_seg1				 IN VARCHAR2,
612 				  	 p_seg2 			 IN VARCHAR2,
613 			  	 	 p_seg3				 IN NUMBER,
614 			  		 p_seg4				 IN NUMBER,
615 			  		 p_seg5				 IN VARCHAR2,
616 			 	 	 p_seg6 			 IN VARCHAR2,
617 				  	 p_pmeth_info1			 IN VARCHAR2,
618 				  	 p_pmeth_info2			 IN VARCHAR2,
619                                          --bugfix 4219436. payment method id is needed to create an opmu
620                                          p_org_payment_method_id         OUT nocopy NUMBER,
621 			  	 	 p_retcode			 OUT nocopy NUMBER,
622 			  	 	 p_errbuff	 	         OUT nocopy VARCHAR2)
623 
624 IS
625 
626 	-- In Variables
627 	l_effective_date		DATE 				     	  		:= p_effective_date;
628 	l_payment_method_name	 	PAY_ORG_PAYMENT_METHODS_F.ORG_PAYMENT_METHOD_NAME%TYPE	:= p_payment_method_name;
629 	l_payment_type_id	 	PAY_ORG_PAYMENT_METHODS_F.PAYMENT_TYPE_ID%TYPE;
630 	l_currency_code 	 	FND_CURRENCIES.CURRENCY_CODE%TYPE;
631 	l_verify_payment_method         NUMBER;
632 
633 
634 	-- OUT Variables
635 	l_effective_start_date		DATE;
636  	l_effective_end_date		DATE;
637 	l_object_version_number  	PAY_ELEMENT_LINKS_F.OBJECT_VERSION_NUMBER%TYPE;
638 	l_asset_code_combination_id	NUMBER;
639 	l_comment_id			NUMBER;
640 	l_external_account_id		NUMBER := null;
641 
642 
643 	-- Declare a cursor to capture the payment type id
644 	CURSOR csr_payment_type_id IS
645 		SELECT payment_type_id
646 		FROM   PAY_PAYMENT_TYPES
647 		WHERE  payment_type_name = p_payment_type_name
648 		AND    territory_code    = p_territory_code;
649 
650 	-- Declare a cursor to capture the currency code
651 	CURSOR csr_currency_code IS
652 		SELECT currency_code
653 		FROM   FND_CURRENCIES
654 		WHERE  issuing_territory_code = p_territory_code;
655 
656 
657 
658 BEGIN
659 	p_retcode :=0;/* Setting initial value*/
660 
661 	OPEN  csr_payment_type_id;
662 	FETCH csr_payment_type_id INTO l_payment_type_id;
663 	CLOSE csr_payment_type_id;
664 
665 	OPEN  csr_currency_code;
666 	FETCH csr_currency_code INTO l_currency_code;
667 	CLOSE csr_currency_code;
668 
669 
670 	SELECT COUNT(*) INTO l_verify_payment_method
671 	FROM   PAY_ORG_PAYMENT_METHODS_F
672 	WHERE  org_payment_method_name = p_payment_method_name
673 	AND    business_group_id       = p_bg_id;
674 
675 	IF (l_verify_payment_method <> 0) THEN
676 	 	p_retcode  := 1;
677 	 	p_errbuff  := 'Warning : CRP Default Program may not function properly as Payment Method under the name ' || p_payment_method_name || ' already exists(continuing creation of other data) for business group ID = ';
678 	 	write_log(1,p_errbuff,p_bg_id);
679 
680                 SELECT distinct org_payment_method_id into p_org_payment_method_id
681 	        FROM   PAY_ORG_PAYMENT_METHODS_F
682                 WHERE  org_payment_method_name = p_payment_method_name
683 	        AND    business_group_id       = p_bg_id;
684 
685 	ELSE
686 
687 	PAY_ORG_PAYMENT_METHOD_API.CREATE_ORG_PAYMENT_METHOD(P_VALIDATE				=> false,
688 							     P_EFFECTIVE_DATE			=> l_effective_date,
689 							     P_LANGUAGE_CODE			=> HR_API.USERENV_LANG,
690 							     P_BUSINESS_GROUP_ID		=> p_bg_id,
691 							     P_ORG_PAYMENT_METHOD_NAME		=> l_payment_method_name,
692 							     P_PAYMENT_TYPE_ID			=> l_payment_type_id,
693 							     P_CURRENCY_CODE			=> l_currency_code,
694 							     P_ATTRIBUTE_CATEGORY		=> null,
695 							     P_ATTRIBUTE1			=> null,
696 							     P_ATTRIBUTE2			=> null,
697 							     P_ATTRIBUTE3			=> null,
698 							     P_ATTRIBUTE4			=> null,
699 							     P_ATTRIBUTE5			=> null,
700 							     P_ATTRIBUTE6			=> null,
701 							     P_ATTRIBUTE7			=> null,
702 							     P_ATTRIBUTE8			=> null,
703 							     P_ATTRIBUTE9			=> null,
704 							     P_ATTRIBUTE10			=> null,
705 							     P_ATTRIBUTE11			=> null,
706 							     P_ATTRIBUTE12			=> null,
707 							     P_ATTRIBUTE13			=> null,
708 							     P_ATTRIBUTE14			=> null,
709 							     P_ATTRIBUTE15			=> null,
710 							     P_ATTRIBUTE16			=> null,
711 							     P_ATTRIBUTE17			=> null,
712 							     P_ATTRIBUTE18			=> null,
713 							     P_ATTRIBUTE19			=> null,
714 							     P_ATTRIBUTE20			=> null,
715 							     P_PMETH_INFORMATION1		=> p_pmeth_info1,
716 							     P_PMETH_INFORMATION2		=> p_pmeth_info2,
717 							     P_PMETH_INFORMATION3		=> null,
718 							     P_PMETH_INFORMATION4		=> null,
719 							     P_PMETH_INFORMATION5		=> null,
720 							     P_PMETH_INFORMATION6		=> null,
721 							     P_PMETH_INFORMATION7		=> null,
722 							     P_PMETH_INFORMATION8		=> null,
723 							     P_PMETH_INFORMATION9		=> null,
724 							     P_PMETH_INFORMATION10		=> null,
725 							     P_PMETH_INFORMATION11		=> null,
726 							     P_PMETH_INFORMATION12		=> null,
727 							     P_PMETH_INFORMATION13		=> null,
728 							     P_PMETH_INFORMATION14		=> null,
729 							     P_PMETH_INFORMATION15		=> null,
730 							     P_PMETH_INFORMATION16		=> null,
731 							     P_PMETH_INFORMATION17		=> null,
732 							     P_PMETH_INFORMATION18		=> null,
733 							     P_PMETH_INFORMATION19		=> null,
734 							     P_PMETH_INFORMATION20		=> null,
735 							     P_COMMENTS				=> null,
736 							     P_SEGMENT1				=> p_seg1,
737 							     P_SEGMENT2				=> p_seg2,
738 							     P_SEGMENT3				=> p_seg3,
739 							     P_SEGMENT4				=> p_seg4,
740 							     P_SEGMENT5				=> p_seg5,
741 							     P_SEGMENT6				=> p_seg6,
742 							     P_SEGMENT7				=> null,
743 							     P_SEGMENT8				=> null,
744 							     P_SEGMENT9				=> null,
745 							     P_SEGMENT10			=> null,
746 							     P_SEGMENT11			=> null,
747 							     P_SEGMENT12			=> null,
748 							     P_SEGMENT13			=> null,
749 							     P_SEGMENT14			=> null,
750 							     P_SEGMENT15			=> null,
751 							     P_SEGMENT16			=> null,
752 							     P_SEGMENT17			=> null,
753 							     P_SEGMENT18			=> null,
754 							     P_SEGMENT19			=> null,
755 							     P_SEGMENT20			=> null,
756 							     P_SEGMENT21			=> null,
757 							     P_SEGMENT22			=> null,
758 							     P_SEGMENT23			=> null,
759 							     P_SEGMENT24			=> null,
760 							     P_SEGMENT25			=> null,
761 							     P_SEGMENT26			=> null,
762 							     P_SEGMENT27			=> null,
763 							     P_SEGMENT28			=> null,
764 							     P_SEGMENT29			=> null,
765 							     P_SEGMENT30			=> null,
766 							     P_CONCAT_SEGMENTS			=> null,
767 							     P_GL_SEGMENT1			=> null,
768 							     P_GL_SEGMENT2			=> null,
769 							     P_GL_SEGMENT3			=> null,
770 							     P_GL_SEGMENT4			=> null,
771 							     P_GL_SEGMENT5			=> null,
772 							     P_GL_SEGMENT6			=> null,
773 							     P_GL_SEGMENT7			=> null,
774 							     P_GL_SEGMENT8			=> null,
775 							     P_GL_SEGMENT9			=> null,
776 							     P_GL_SEGMENT10			=> null,
777 							     P_GL_SEGMENT11			=> null,
778 							     P_GL_SEGMENT12			=> null,
779 							     P_GL_SEGMENT13			=> null,
780 							     P_GL_SEGMENT14			=> null,
781 							     P_GL_SEGMENT15			=> null,
782 							     P_GL_SEGMENT16			=> null,
783 							     P_GL_SEGMENT17			=> null,
784 							     P_GL_SEGMENT18			=> null,
785 							     P_GL_SEGMENT19			=> null,
786 							     P_GL_SEGMENT20			=> null,
787 							     P_GL_SEGMENT21			=> null,
788 							     P_GL_SEGMENT22			=> null,
789 							     P_GL_SEGMENT23			=> null,
790 							     P_GL_SEGMENT24			=> null,
791 							     P_GL_SEGMENT25			=> null,
792 							     P_GL_SEGMENT26			=> null,
793 							     P_GL_SEGMENT27			=> null,
794 							     P_GL_SEGMENT28			=> null,
795 							     P_GL_SEGMENT29			=> null,
796 							     P_GL_SEGMENT30			=> null,
797 							     P_GL_CONCAT_SEGMENTS		=> null,
798 							     P_SETS_OF_BOOK_ID			=> null,
799 							     P_THIRD_PARTY_PAYMENT		=> 'N',
800 							     P_ORG_PAYMENT_METHOD_ID		=> p_org_payment_method_id,
801 							     P_EFFECTIVE_START_DATE		=> l_effective_start_date,
802 							     P_EFFECTIVE_END_DATE		=> l_effective_end_date,
803 							     P_OBJECT_VERSION_NUMBER		=> l_object_version_number,
804 							     P_ASSET_CODE_COMBINATION_ID	=> l_asset_code_combination_id,
805 							     P_COMMENT_ID			=> l_comment_id,
806 							     P_EXTERNAL_ACCOUNT_ID 		=> l_external_account_id);
807 
808 	p_errbuff  := 'Payment Method ' || p_payment_method_name || ' has been created successfully for business group ID = ';
809 	write_log(0,p_errbuff,p_bg_id);
810 
811 
812 	END IF;
813 
814 
815 	EXCEPTION
816 	WHEN OTHERS THEN
817  	p_retcode  := 2;
818  	p_errbuff  := 'CRP Default data has not been created and all data has been rolled back because an error occurred while trying to create Payment Method '|| p_payment_method_name || SQLERRM || SQLCODE;
819  	write_log(2,p_errbuff,p_bg_id);
820 
821 
822 
823 
824 END create_payment_methods_api;
825 
826 -- @desc   : Procedure to attach a valid payment method to a payroll
827 -- @action : creates an org pay method usage [OPMU]
828 -- @misc   : part of bugfix 4219436
829 PROCEDURE attach_valid_pay_method_api (p_payroll_id                IN NUMBER
830                                       ,p_org_payment_method_id     IN NUMBER
831                                       ,p_bg_id	 	  	   IN NUMBER --needed only for write_log
832                                       ,p_effective_start_date      IN DATE
833                                       ,p_retcode                   OUT nocopy NUMBER
834                                       ,p_errbuff                   OUT nocopy VARCHAR2)
835 IS
836      --variables
837      l_org_pay_method_usage_id    NUMBER;
838      l_effective_end_date         DATE;
839      l_rowid                      VARCHAR2(20);
840      l_reccount                   NUMBER;
841 BEGIN
842      p_retcode := 0;
843 
844      SELECT count(*) into l_reccount
845      FROM   PAY_ORG_PAY_METHOD_USAGES_F
846      WHERE  payroll_id            = p_payroll_id
847      AND    org_payment_method_id = p_org_payment_method_id;
848 
849      IF (l_reccount <> 0) THEN
850 	 	p_retcode  := 1;
851 	 	p_errbuff  := 'Warning : CRP Default Program may not function properly as payment method usage was not created since it already exists';
852 	 	write_log(1,p_errbuff,p_bg_id);
853      ELSE
854           IF (p_payroll_id is null or p_org_payment_method_id is null or p_effective_start_date is null) THEN
855 	 	p_retcode  := 1;
856 	 	p_errbuff  := 'Warning : CRP Default Program may not function properly as payment method was not attached to the payroll';
857 	 	write_log(1,p_errbuff,p_bg_id);
858           ELSE
859                 -- This procedure has been used in the 'Define Payroll' form(PAYWSDPG.fmb) to
860                 -- attach a 'valid payment method' to a payroll.
861                 -- From pyopu01t.pkb v115.4
862                 PAY_ORG_PAY_METH_USAGES_F_PKG.Insert_Row(X_Rowid                   => l_rowid
863                                              ,X_Org_Pay_Method_Usage_Id => l_org_pay_method_usage_id
864                                              ,X_Effective_Start_Date    => p_effective_start_date
865                                              ,X_Effective_End_Date      => l_effective_end_date
866                                              ,X_Payroll_Id              => p_payroll_id
867                                              ,X_Org_Payment_Method_Id   => p_org_payment_method_id);
868 
869                  p_errbuff := 'Payment Method with Id ' || to_char(p_org_payment_method_id) || ' has been attached to the Payroll = ' || to_char(p_payroll_id);
870                  write_log(0, p_errbuff,p_bg_id);
871            END IF;
872       END IF;
873 
874       EXCEPTION
875       WHEN OTHERS THEN
876       p_retcode  := 2;
877       p_errbuff  := 'CRP Default data has not been created and all data has been rolled back.An error occured while creating a OPMU' || SQLERRM || SQLCODE;
878       write_log(2,p_errbuff,p_bg_id);
879 
880 END attach_valid_pay_method_api;
881 
882 
883 PROCEDURE create_org_info_api	 (p_effec_date                 	   IN DATE,
884 				  p_bg_id			   IN NUMBER,
885  				  p_org_id		           IN NUMBER,
886  				  p_org_info_type	           IN VARCHAR2,
887   				  p_org_info1			   IN VARCHAR2,
888  	 			  p_org_info2			   IN VARCHAR2,
889 	  			  p_org_info3		           IN VARCHAR2,
890   			  	  p_org_info4			   IN VARCHAR2,
891 			 	  p_org_info10			   IN VARCHAR2,
892  				  p_retcode			   OUT nocopy NUMBER,
893  				  p_errbuff	 	 	   OUT nocopy VARCHAR2)
894 
895  IS
896 
897  	-- variables
898 
899  	l_verify_org_info		NUMBER;
900 
901  	-- OUT Variables
902  	l_org_information_id		HR_ORGANIZATION_INFORMATION.ORG_INFORMATION_ID%TYPE;
903  	l_object_version_number  	PAY_ELEMENT_LINKS_F.OBJECT_VERSION_NUMBER%TYPE;
904 
905 
906 
907 
908  BEGIN
909  	p_retcode :=0;/* Setting initial value*/
910 
911  	SELECT COUNT(*) INTO l_verify_org_info
912  	FROM   HR_ORGANIZATION_INFORMATION
913  	WHERE  organization_id       = p_org_id
914 	AND    org_information_context = p_org_info_type;
915 
916 
917 	IF (l_verify_org_info <> 0) THEN
918 		 	p_retcode  := 1;
919 		 	p_errbuff  := 'Warning : CRP Default Program may not function properly as ' || p_org_info_type || ' already exists(continuing creation of other data) for business group ID = ';
920 		 	write_log(1,p_errbuff,p_bg_id);
921 
922 	ELSE
923 
924  	HR_ORGANIZATION_API.CREATE_ORG_INFORMATION(P_VALIDATE			=> false,
925  						   P_EFFECTIVE_DATE		=> p_effec_date,
926  						   P_ORGANIZATION_ID		=> p_org_id,
927  						   P_ORG_INFO_TYPE_CODE		=> p_org_info_type,
928  						   P_ORG_INFORMATION1		=> p_org_info1,
929  						   P_ORG_INFORMATION2		=> p_org_info2,
930  						   P_ORG_INFORMATION3		=> p_org_info3,
931  						   P_ORG_INFORMATION4		=> p_org_info4,
932  						   P_ORG_INFORMATION5		=> null,
933  						   P_ORG_INFORMATION6		=> null,
934  						   P_ORG_INFORMATION7		=> null,
935  						   P_ORG_INFORMATION8		=> null,
936  						   P_ORG_INFORMATION9		=> null,
937  						   P_ORG_INFORMATION10		=> p_org_info10,
938  						   P_ORG_INFORMATION11		=> null,
939  						   P_ORG_INFORMATION12		=> null,
940  						   P_ORG_INFORMATION13		=> null,
941  						   P_ORG_INFORMATION14		=> null,
942  						   P_ORG_INFORMATION15		=> null,
943  						   P_ORG_INFORMATION16		=> null,
944  						   P_ORG_INFORMATION17		=> null,
945  						   P_ORG_INFORMATION18		=> null,
946  						   P_ORG_INFORMATION19		=> null,
947  						   P_ORG_INFORMATION20		=> null,
948  						   P_ATTRIBUTE_CATEGORY		=> null,
949  						   P_ATTRIBUTE1			=> null,
950  						   P_ATTRIBUTE2			=> null,
951  						   P_ATTRIBUTE3			=> null,
952  						   P_ATTRIBUTE4			=> null,
953  						   P_ATTRIBUTE5			=> null,
954  						   P_ATTRIBUTE6			=> null,
955  						   P_ATTRIBUTE7			=> null,
956  						   P_ATTRIBUTE8			=> null,
957  						   P_ATTRIBUTE9			=> null,
958  						   P_ATTRIBUTE10		=> null,
959  						   P_ATTRIBUTE11		=> null,
960  						   P_ATTRIBUTE12		=> null,
961  						   P_ATTRIBUTE13		=> null,
962  						   P_ATTRIBUTE14		=> null,
963  						   P_ATTRIBUTE15		=> null,
964  						   P_ATTRIBUTE16		=> null,
965  						   P_ATTRIBUTE17		=> null,
966  						   P_ATTRIBUTE18		=> null,
967  						   P_ATTRIBUTE19		=> null,
968  						   P_ATTRIBUTE20		=> null,
969  						   P_ORG_INFORMATION_ID		=> l_org_information_id,
970  						   P_OBJECT_VERSION_NUMBER 	=> l_object_version_number);
971 
972   	p_errbuff  := 'Organization Information ' || p_org_info_type || ' has been created successfully for business group ID = ';
973 	write_log(0,p_errbuff,p_bg_id);
974 
975  	END IF;
976 
977 	EXCEPTION
978 	WHEN OTHERS THEN
979  	p_retcode  := 1;
980  	p_errbuff  := 'CRP Default data has not been created and all data has been rolled back because an error occurred while trying to create for ' || p_org_info_type || SQLERRM || SQLCODE;
981  	write_log(2,p_errbuff,p_bg_id);
982 
983 
984 END create_org_info_api;
985 
986 
987 PROCEDURE populate(p_errbuf		OUT NOCOPY VARCHAR2,
988           	   p_retcode		OUT NOCOPY NUMBER,
989           	   p_business_group_id  IN NUMBER,
990                    p_short_code		IN VARCHAR2)
991 
992 IS
993   	 -- variables
994  	 l_bg_info			VARCHAR2(200)				   := null;
995 	 l_retcode 			NUMBER					   := null;
996 	 l_errbuff			VARCHAR2(200)				   := null;
997 	 l_bg_id			NUMBER					   := null;
998 	 l_bg_start_date 	 	DATE					   := null;
999 	 l_bg_name			PER_BUSINESS_GROUPS.NAME%TYPE		   := null;
1000 	 l_org_id			NUMBER					   := null;
1001 	 l_element_name			PAY_ELEMENT_TYPES_F.ELEMENT_NAME%TYPE      := null;
1002 	 l_leg_code			VARCHAR2(2)				   := null;
1003 	 l_short_code       VARCHAR2(9)  					   := null;
1004 	 --bugfix 4219436 vars
1005 	 l_crp_check_payment_method_id  NUMBER				:= null;
1006 	 l_crp_nacha_payment_method_id  NUMBER				:= null;
1007 	 l_crp_sm_payroll_id            NUMBER              		:= null;
1008 	 l_crp_w_payroll_id             NUMBER              		:= null;
1009 	 l_crp_m_payroll_id             NUMBER              		:= null;
1010 	 l_crp_bacs_payment_method_id   NUMBER          		:= null;
1011 	 l_crp_cheque_payment_method_id NUMBER             		:= null;
1012          l_crp_run                      NUMBER                          :=0;
1013 
1014 	-- Declare a cursor to get a list of US Business groups remove
1015 	-- the last AND clause to apply to all US  and UK BG's, during
1016 	-- actual implementation
1017 	CURSOR csr_business_group_info(p_bg_id NUMBER) IS
1018 	 	SELECT business_group_id,date_from,name,legislation_code
1019 	 	FROM   PER_BUSINESS_GROUPS
1020 	 	WHERE  business_group_id is not null
1021 		and    business_group_id = p_bg_id;
1022 
1023 	-- Declare cursor to capture the Organization ID from Business Group ID and Name
1024 	CURSOR csr_bg_org_id(p_bg_id NUMBER, p_bg_name VARCHAR2) IS
1025 	 	SELECT organization_id
1026 	 	FROM   HR_ORGANIZATION_UNITS
1027 	 	WHERE  business_group_id = p_bg_id
1028 	 	AND    name              = p_bg_name;
1029 
1030 	-- Decalare a cursor to fetch the element name
1031 	CURSOR csr_element_name(p_bg_id NUMBER) IS
1032 		SELECT element_name
1033 		FROM   PAY_ELEMENT_TYPES_F
1034 		WHERE  business_group_id  = p_bg_id
1035 		AND    indirect_only_flag = 'N'
1036 		AND    legislation_code is not null;
1037 
1038       -- Declare a cursor to detect if the CRP default is already run
1039       -- for the current BG
1040       CURSOR csr_business_group(p_bg_id NUMBER) IS
1041             SELECT count(*) as crp_run
1042             FROM   per_ri_requests prr,
1043                    fnd_concurrent_requests fcr
1044             WHERE  business_group_id = p_bg_id
1045             AND    SETUP_TASK_CODE = 'GENERATE_DEFAULT_SETTINGS'
1046             AND    prr.request_id = fcr.request_id
1047             and    status_code = 'C';
1048 
1049 BEGIN
1050 
1051 	OPEN csr_business_group(p_business_group_id);
1052 		FETCH csr_business_group INTO l_crp_run;
1053 	CLOSE csr_business_group;
1054 
1055           -- If the program has been run for this business group donot run again.
1056          IF l_crp_run > 0 THEN
1057 
1058       	  l_bg_info  := 'Business Group id: ' || p_business_group_id;
1059     	  write_log(0,l_bg_info,' ');
1060 
1061 	    write_log(0,' ',' ');
1062 	    write_log(0,'The Default Settings for this business group has already been run. You cannot do so again.',' ');
1063             write_log(0,' ',' ');
1064           return;
1065          END IF;
1066 
1067 	IF (p_short_code = '' OR p_short_code is null)  THEN
1068 		l_short_code := 'CRP ';
1069 	ELSE
1070 		l_short_code := p_short_code || ' ';
1071 	END IF;
1072 
1073 	p_retcode := 0;
1074 	write_log(0,' ',' ');
1075 	write_log(0,'NOTE : In case the program returns with an ERROR status,the following data that get created will be rolled back completely',' ');
1076 	write_log(0,' ',' ');
1077 
1078 	OPEN csr_business_group_info(p_business_group_id);
1079 		FETCH csr_business_group_info INTO l_bg_id,l_bg_start_date,l_bg_name,l_leg_code;
1080 	CLOSE csr_business_group_info;
1081 
1082 	OPEN csr_bg_org_id(l_bg_id,l_bg_name);
1083 		FETCH csr_bg_org_id into l_org_id;
1084 	CLOSE csr_bg_org_id;
1085 
1086 	l_bg_info  := 'Business Group id: ' || l_bg_id || '      Business Group name: ' || l_bg_name || '      Short Code: '|| l_short_code ;
1087 	write_log(0,l_bg_info,' ');
1088 
1089 	---
1090 	-- HARDCODING VALUES FOR US BUSINESS GROUP STARTS HERE
1091 	---
1092 	if l_leg_code = 'US' THEN
1093 
1094 	  -- Call The procedure to create element links
1095 	  create_el_api (p_element_name 	   => 'Regular Salary',
1096 	 	    	 p_bg_id	 	   => l_bg_id,
1097 	 	    	 p_std_link_flag	   => null,
1098 	 	   	 p_legislation_code 	   => 'US',
1099 	 	   	 p_retcode 		   => l_retcode,
1100 		   	 p_errbuff		   => l_errbuff);
1101 
1102 	  IF l_retcode = 2 OR l_retcode = 1 THEN
1103 	  	p_retcode := l_retcode;
1104 	  	IF l_retcode = 2 THEN
1105 	  		rollback;
1106 	  		return;
1107 	  	END IF;
1108 	  END IF;
1109 
1110 
1111 	  -- Call The procedure to create element links
1112 	  create_el_api (p_element_name 	   => 'Regular Wages',
1113 	 	 	 p_bg_id	 	   => l_bg_id,
1114 	 	   	 p_std_link_flag	   => null,
1115 	 	  	 p_legislation_code 	   => 'US',
1116 	 	   	 p_retcode 		   => l_retcode,
1117 		   	 p_errbuff		   => l_errbuff);
1118 
1119 	  IF l_retcode = 2 OR l_retcode = 1 THEN
1120 	  	  	p_retcode := l_retcode;
1121 	  	  	IF l_retcode = 2 THEN
1122 	  	      		rollback;
1123 	  	  		return;
1124 	  	  	END IF;
1125 	  END IF;
1126 
1127 	  -- Call The procedure to create element links
1128 	  create_el_api (p_element_name 	   => 'Workers Compensation',
1129 	   	 	 p_bg_id	 	   => l_bg_id,
1130 	   	   	 p_std_link_flag	   => null,
1131 	   	  	 p_legislation_code 	   => 'US',
1132 	   	   	 p_retcode 		   => l_retcode,
1133 		   	 p_errbuff		   => l_errbuff);
1134 
1135 	  IF l_retcode = 2 OR l_retcode = 1 THEN
1136 	  	  	p_retcode := l_retcode;
1137 	  	  	IF l_retcode = 2 THEN
1138 	  	      		rollback;
1139 	  	  		return;
1140 	  	  	END IF;
1141 	  END IF;
1142 
1143 	  -- Call The procedure to create element links
1144 	  create_el_api (p_element_name 	   => 'VERTEX',
1145 	   	 	 p_bg_id	 	   => l_bg_id,
1146 	   	   	 p_std_link_flag	   => null,
1147 	   	  	 p_legislation_code 	   => 'US',
1148 	   	   	 p_retcode 		   => l_retcode,
1149 		   	 p_errbuff		   => l_errbuff);
1150 
1151 	  IF l_retcode = 2 OR l_retcode = 1 THEN
1152 	  	  	p_retcode := l_retcode;
1153 	  	  	IF l_retcode = 2 THEN
1154 	  	      		rollback;
1155 	  	  		return;
1156 	  	  	END IF;
1157 	  END IF;
1158 
1159 
1160 	  -- Open the cursor for all elements with indirect only flag set to N and create element links for the same
1161 	  OPEN csr_element_name(l_bg_id);
1162 
1163 	  LOOP -- For every element with indirect only flag = 'N'
1164 	 	 FETCH csr_element_name INTO l_element_name;
1165 	 	 EXIT WHEN csr_element_name%NOTFOUND;
1166 
1167 	 	  -- Call The procedure to create element links
1168 		  create_el_api (p_element_name 	   => l_element_name,
1169 		 	   	p_bg_id	 	   	   => l_bg_id,
1170 		 	   	p_std_link_flag	   	   => null,
1171 		 	   	p_legislation_code 	   => 'US',
1172 		 	   	p_retcode 		   => l_retcode,
1173 		   	 	p_errbuff		   => l_errbuff);
1174 
1175 		 IF l_retcode = 2 OR l_retcode = 1 THEN
1176 		 	  	p_retcode := l_retcode;
1177 		 	  	IF l_retcode = 2 THEN
1178 		 	      		rollback;
1179 		 	  		return;
1180 		 	  	END IF;
1181 	  	 END IF;
1182 
1183 	  END LOOP;
1184 	  CLOSE csr_element_name;
1185 
1186           -- bugfix 4219436.
1187 	  -- order of creation: payment_method -> payroll -> opmu[attaching payment method to payroll]
1188 
1189           -- Calls to procedure to create payment methods
1190 	  -- Payment methods are to be created before payrolls as the default payment methods are attached
1191 	  -- to a payroll during the payroll creation.
1192 	  create_payment_methods_api (p_payment_method_name		 => l_short_code || 'Check',
1193 	  	  	  	      p_bg_id	 	  	 	 => l_bg_id,
1194 	  	  		      p_effective_date 	                 => l_bg_start_date,
1195 	  	  		      p_payment_type_name		 => 'Check',
1196 	  	  		      p_territory_code			 => 'US',
1197 	  	  	              p_seg1	  	                 => l_short_code || 'Test Account',
1198 	  	  		      p_seg2	 			 => 'S',
1199 	  	  		      p_seg3				 => '123',
1200 	  	  		      p_seg4				 => '000000123',
1201 	  	  		      p_seg5				 => 'Citibank',
1202 	  	  		      p_seg6	 			 => 'New York',
1203 	  	  		      p_pmeth_info1			 => null,
1204 	  	  		      p_pmeth_info2			 => null,
1205 				      p_org_payment_method_id            => l_crp_check_payment_method_id,
1206 	  	  		      p_retcode				 => l_retcode,
1207 	  			      p_errbuff				 => l_errbuff);
1208 
1209 	  IF l_retcode = 2 OR l_retcode = 1 THEN
1210 	  	  	p_retcode := l_retcode;
1211 	  	  	IF l_retcode = 2 THEN
1212 	  	      		rollback;
1213 	  	  		return;
1214 	  	  	END IF;
1215 	  END IF;
1216 
1217 	  create_payment_methods_api   (p_payment_method_name		 => l_short_code || 'NACHA',
1218 	   				p_bg_id	 	  		 => l_bg_id,
1219 	   		 	 	p_effective_date		 => l_bg_start_date,
1220 	   			  	p_payment_type_name		 => 'NACHA',
1221 	   			  	p_territory_code		 => 'US',
1222 	  			  	p_seg1				 => l_short_code || 'Test Account', -- Account name
1223 					p_seg2 			 	 => 'S',		-- Account Type (savings/current etc)
1224 					p_seg3				 => '123',		-- Number
1225 					p_seg4				 => '000000123',
1226 					p_seg5				 => 'Citibank',		-- Bank name
1227 			  	 	p_seg6 				 => 'New York',		-- City
1228 			  	 	p_pmeth_info1			 => null,
1229 			  	 	p_pmeth_info2			 => null,
1230 				        p_org_payment_method_id          => l_crp_nacha_payment_method_id,
1231 	  	  	 	 	p_retcode			 => l_retcode,
1232 					p_errbuff			 => l_errbuff);
1233 
1234 	  IF l_retcode = 2 OR l_retcode = 1 THEN
1235 	  	  	p_retcode := l_retcode;
1236 	  	  	IF l_retcode = 2 THEN
1237 	  	      		rollback;
1238 	  	  		return;
1239 	  	  	END IF;
1240 	  END IF;
1241 
1242 	  create_payroll_api 	(p_payroll_name		 	 => l_short_code || 'Semi-monthly Payroll',
1243 	  	   		 p_bg_id	 	  	 => l_bg_id,
1244 	  	  		 p_effective_date		 => l_bg_start_date,
1245 	  	  		 p_period_type			 => 'Semi-Month',
1246 	  	  		 p_first_period_end_date	 => get_dflt_first_end_date('SM',1,l_bg_start_date),
1247 	  	  		 p_number_of_years		 => 10,
1248 	  	  		 p_consolidation_set_name	 => l_bg_name,
1249 				 p_default_payment_method_id     => l_crp_check_payment_method_id,
1250 				 p_payroll_id                    => l_crp_sm_payroll_id,
1251 				 p_leg_code          => l_leg_code,
1252 	  	 	 	 p_retcode			 => l_retcode,
1253 			 	 p_errbuff			 => l_errbuff);
1254 
1255           IF l_retcode = 2 OR l_retcode = 1 THEN
1256 	  	  	p_retcode := l_retcode;
1257 	  	  	IF l_retcode = 2 THEN
1258 	  	      		rollback;
1259 	  	  		return;
1260 	  	  	END IF;
1261 	  END IF;
1262 
1263 
1264 	 create_payroll_api 	(p_payroll_name		 	 => l_short_code || 'Weekly Payroll',
1265 	 	 	  	 p_bg_id	 	  	 => l_bg_id,
1266 	  	  		 p_effective_date		 => l_bg_start_date,
1267 	 	 	  	 p_period_type			 => 'Week',
1268 	  	  		 p_first_period_end_date	 => get_dflt_first_end_date('W',1,l_bg_start_date),
1269 	 	 	  	 p_number_of_years		 => 10,
1270 	 	 	  	 p_consolidation_set_name	 => l_bg_name,
1271 				 p_default_payment_method_id     => l_crp_check_payment_method_id,
1272 				 p_payroll_id                    => l_crp_w_payroll_id,
1273 				 p_leg_code          => l_leg_code,
1274 	 	 	 	 p_retcode			 => l_retcode,
1275 				 p_errbuff			 => l_errbuff);
1276 
1277 	  IF l_retcode = 2 OR l_retcode = 1 THEN
1278 	  	  	p_retcode := l_retcode;
1279 	  	  	IF l_retcode = 2 THEN
1280 	  	      		rollback;
1281 	  	  		return;
1282 	  	  	END IF;
1283 	  END IF;
1284 
1285 	 --@@ bugfix 4219436
1286 	 --attach valid payment methods to the payrolls
1287 	 attach_valid_pay_method_api(p_payroll_id                => l_crp_w_payroll_id
1288 	                             ,p_org_payment_method_id    => l_crp_nacha_payment_method_id
1289                                      ,p_bg_id	 	  	 => l_bg_id
1290                                      ,p_effective_start_date     => l_bg_start_date
1291                                      ,p_retcode                  => l_retcode
1292 				     ,p_errbuff                  => l_errbuff);
1293 
1294 	 IF l_retcode = 2 OR l_retcode = 1 THEN
1295 	                p_retcode := l_retcode;
1296 			IF l_retcode = 2 THEN
1297 			          rollback;
1298 				  return;
1299 			END IF;
1300 	 END IF;
1301 
1302          attach_valid_pay_method_api(p_payroll_id                => l_crp_sm_payroll_id
1303 	                             ,p_org_payment_method_id    => l_crp_nacha_payment_method_id
1304                                      ,p_bg_id	 	  	 => l_bg_id
1305                                      ,p_effective_start_date     => l_bg_start_date
1306                                      ,p_retcode                  => l_retcode
1307 				     ,p_errbuff                  => l_errbuff);
1308 
1309 	 IF l_retcode = 2 OR l_retcode = 1 THEN
1310 	                p_retcode := l_retcode;
1311 			IF l_retcode = 2 THEN
1312 			          rollback;
1313 				  return;
1314 			END IF;
1315 	 END IF;
1316 	 -- bugfix 4219436 @@
1317 
1318 	 create_salary_basis_api(p_name				=> l_short_code || 'Monthly Salary',
1319 	 	  		 p_pay_basis_name 		=> 'MONTHLY',
1320 	 	  		 p_bg_id			=> l_bg_id,
1321 	 	  		 p_input_value_name   		=> 'Monthly Salary',
1322 	 	  		 p_element_name 		=> 'Regular Salary',
1323 	 	  		 p_rate_name			=> null,
1324 	 	  		 p_pay_annualization_factor     => 12,
1325 	 	  		 p_grade_annualization_factor   => null,
1326 	 	  		 p_legislation_code		=> 'US',
1327 	 	  		 p_retcode			=> l_retcode,
1328 	 	  		 p_errbuff			=> l_errbuff);
1329 
1330 
1331 	  IF l_retcode = 2 OR l_retcode = 1 THEN
1332 	  	  p_retcode := l_retcode;
1333 	  	  IF l_retcode = 2 THEN
1334 	  	  	rollback;
1335 	  	  	return;
1336 	   	  END IF;
1337 	  END IF;
1338 
1339 	  create_salary_basis_api(p_name			=> l_short_code || 'Hourly Salary',
1340 	 	  	  	 p_pay_basis_name 		=> 'HOURLY',
1341 	 	  	  	 p_bg_id			=> l_bg_id,
1342 	 	  	  	 p_input_value_name   		=> 'Rate',
1343 	 	  	  	 p_element_name 		=> 'Regular Wages',
1344 	 	  	  	 p_rate_name			=> null,
1345 	 	  	  	 p_pay_annualization_factor     => 2000,
1346 	 	  	  	 p_grade_annualization_factor   => null,
1347 	 	  	  	 p_legislation_code		=> 'US',
1348 	 	  	  	 p_retcode			=> l_retcode,
1349 	 		  	 p_errbuff			=> l_errbuff);
1350 
1351 
1352 	  IF l_retcode = 2 OR l_retcode = 1 THEN
1353 	  	 p_retcode := l_retcode;
1354 	  	 IF l_retcode = 2 THEN
1355 	   	 	rollback;
1356 	   	 	return;
1357 	   	 END IF;
1358 	  END IF;
1359 
1360 	  create_org_info_api    (p_effec_date                 	  => l_bg_start_date,
1361 	  			 p_bg_id			  => l_bg_id,
1362 	  			 p_org_id		          => l_org_id,
1363 	  			 p_org_info_type	          => 'Work Day Information',
1364 	   			 p_org_info1			  => '9:00',  --start-time/
1365 	   			 p_org_info2			  => '17:00', --end time/
1366 	   			 p_org_info3		          => '40',    --working hours
1367 	   			 p_org_info4			  => 'W',     --frequency
1368 	 			 p_org_info10			  => null,
1369  			 	 p_retcode			  => l_retcode,
1370 				 p_errbuff			  => l_errbuff);
1371 
1372 	 IF l_retcode = 2 OR l_retcode = 1 THEN
1373 	 	  	p_retcode := l_retcode;
1374 	 	  	IF l_retcode = 2 THEN
1375 	 	      		rollback;
1376 	 	  		return;
1377 	 	  	END IF;
1378 	  END IF;
1379 
1380 	 END IF;
1381 
1382 	---
1383 	-- HARDCODING VALUES FOR UK BUSINESS GROUP STARTS HERE
1384 	---
1385 	IF l_leg_code = 'GB' THEN
1386 
1387 	 create_el_api  (p_element_name 	  	 => 'PAYE',
1388 	 	 	 p_bg_id	 	  	 => l_bg_id,
1389 	 		 p_std_link_flag		 => null,
1390 		 	 p_legislation_code 		 => 'GB',
1391 			 p_retcode 			 => l_retcode,
1392 			 p_errbuff			 => l_errbuff);
1393 
1394 	  IF l_retcode = 2 OR l_retcode = 1 THEN
1395 	 	  	p_retcode := l_retcode;
1396 	 	  	IF l_retcode = 2 THEN
1397 	 	      		rollback;
1398 	 	  		return;
1399 	 	  	END IF;
1400 	  END IF;
1401 
1402 	  create_el_api  (p_element_name 	  	 => 'NI',
1403 	 	 	 p_bg_id	 	  	 => l_bg_id,
1404 	 	 	 p_std_link_flag		 => null,
1405 	 		 p_legislation_code 		 => 'GB',
1406 	 		 p_retcode 			 => l_retcode,
1407 			 p_errbuff			 => l_errbuff);
1408 
1409 	  IF l_retcode = 2 OR l_retcode = 1 THEN
1410 	 	  	p_retcode := l_retcode;
1411 	 	  	IF l_retcode = 2 THEN
1412 	 	      		rollback;
1413 	 	  		return;
1414 	 	  	END IF;
1415 	  END IF;
1416 
1417 
1418       OPEN csr_element_name(l_bg_id);
1419 
1420 	   LOOP -- For every element with indirect only flag = 'N'
1421 	 	 FETCH csr_element_name INTO l_element_name;
1422 	  	 EXIT WHEN csr_element_name%NOTFOUND;
1423 
1424 	 	 -- Call The procedure to create element links
1425 	 	 create_el_api(p_element_name 	  	 => l_element_name,
1426 	  	  	       p_bg_id	 	  	 => l_bg_id,
1427 	  	  	       p_std_link_flag		 => null,
1428 	  	  	       p_legislation_code 	 => 'GB',
1429 	  	  	       p_retcode 		 => l_retcode,
1430 			       p_errbuff		 => l_errbuff);
1431 
1432 	   	 IF l_retcode = 2 OR l_retcode = 1 THEN
1433 		 	  	p_retcode := l_retcode;
1434 		 	  	IF l_retcode = 2 THEN
1435 		 	      		rollback;
1436 		 	  		return;
1437 		 	  	END IF;
1438 	  	 END IF;
1439 	  	 END LOOP;
1440 	  CLOSE csr_element_name;
1441 
1442 	  create_payment_methods_api   (p_payment_method_name	 => l_short_code || 'Cheque',
1443 	  				p_bg_id	 	  	 => l_bg_id,
1444 	  		 	 	p_effective_date	 => l_bg_start_date,
1445 	  			  	p_payment_type_name	 => 'Cheque',
1446 	  			  	p_territory_code	 => 'GB',
1447 	  			  	p_seg1			 => '80', -- Bank name --> In this case Bank of Scotland
1448 					p_seg2 			 => null,  --- Not applicable
1449 					p_seg3			 => '000001',   --- Sort Code
1450 					p_seg4			 => '000000100', --- A/c number
1451 					p_seg5			 => 'Test Account',  --- A/c Name
1452 			  	 	p_seg6 			 => '0', -- Account type 0 stands for standard account
1453 			  	 	p_pmeth_info1		 => null,  -- BACS User Number
1454 					p_pmeth_info2            => null, -- BACS Limit
1455 					p_org_payment_method_id  => l_crp_cheque_payment_method_id,
1456 	 	  	 	 	p_retcode		 => l_retcode,
1457 					p_errbuff		 => l_errbuff);
1458 
1459 
1460 	  IF l_retcode = 2 OR l_retcode = 1 THEN
1461 	  	  	p_retcode := l_retcode;
1462 	  	  	IF l_retcode = 2 THEN
1463 	  	      		rollback;
1464 	  	  		return;
1465 	  	  	END IF;
1466 	  END IF;
1467 
1468 	  create_payment_methods_api   (p_payment_method_name	 => l_short_code || 'BACS',
1469 	   				p_bg_id	 	  	 => l_bg_id,
1470 	   		 	 	p_effective_date	 => l_bg_start_date,
1471 	   			  	p_payment_type_name	 => 'BACS Tape',
1472 	   			  	p_territory_code 	 => 'GB',
1473 					p_seg1			 => '80', -- Bank name --> In this case Bank of Scotland
1474 					p_seg2 			 => null,  --- Not applicable
1475 					p_seg3			 => '000123',   --- Sort Code
1476 					p_seg4			 => '000000100', --- A/c number
1477 					p_seg5			 => 'Test Account',  --- A/c Name
1478 			  	 	p_seg6 			 => '0', -- Account type 0 stands for standard account
1479 			  	 	p_pmeth_info1		 => '10',  -- BACS User Number
1480 					p_pmeth_info2            => '1000', -- BACS Limit
1481 					p_org_payment_method_id  => l_crp_bacs_payment_method_id,
1482 					p_retcode		 => l_retcode,
1483 					p_errbuff		 => l_errbuff);
1484 
1485 	  IF l_retcode = 2 OR l_retcode = 1 THEN
1486 	 	  	p_retcode := l_retcode;
1487 	 	  	IF l_retcode = 2 THEN
1488 	 	      		rollback;
1489 	 	  		return;
1490 	 	  	END IF;
1491 	  END IF;
1492 
1493 	  -- Call the procedure to create Payroll
1494 	  create_payroll_api(p_payroll_name		 => l_short_code || 'Monthly Payroll',
1495 		  	     p_bg_id	 	  	 => l_bg_id,
1496 	  		     p_effective_date		 => l_bg_start_date,
1497 	  		     p_period_type		 => 'Calendar Month',
1498 	  		     p_first_period_end_date	 => get_dflt_first_end_date('CM',1,l_bg_start_date),
1499 	  		     p_number_of_years		 => 10,
1500 	  		     p_consolidation_set_name	 => l_bg_name,
1501        	             p_default_payment_method_id => l_crp_cheque_payment_method_id, --null,
1502 			     p_payroll_id                => l_crp_m_payroll_id,
1503    				 p_leg_code          => l_leg_code,
1504 	 	  	     p_retcode			 => l_retcode,
1505 			     p_errbuff			 => l_errbuff);
1506 
1507 	  IF l_retcode = 2 OR l_retcode = 1 THEN
1508 	  	  	p_retcode := l_retcode;
1509 	  	  	IF l_retcode = 2 THEN
1510 	  	      		rollback;
1511 	  	  		return;
1512 	  	  	END IF;
1513 	  END IF;
1514 
1515 
1516 	  -- Call the procedure to create Payroll
1517 	  create_payroll_api    (p_payroll_name		 	 => l_short_code || 'Weekly Payroll',
1518 	 	  		 p_bg_id	 	  	 => l_bg_id,
1519 	 	  		 p_effective_date		 => l_bg_start_date,
1520 	 	  		 p_period_type			 => 'Week',
1521 	 	  		 p_first_period_end_date	 => get_dflt_first_end_date('W',1,l_bg_start_date),
1522 	 	  		 p_number_of_years		 => 10,
1523 	 	  		 p_consolidation_set_name	 => l_bg_name,
1524 				 p_default_payment_method_id     =>l_crp_cheque_payment_method_id,--null,
1525 				 p_payroll_id                    => l_crp_w_payroll_id,
1526 				 p_leg_code          => l_leg_code,
1527 	 	 	  	 p_retcode			 => l_retcode,
1528 				 p_errbuff			 => l_errbuff);
1529 
1530 	  IF l_retcode = 2 OR l_retcode = 1 THEN
1531 	  	  	p_retcode := l_retcode;
1532 	  	  	IF l_retcode = 2 THEN
1533 	  	      		rollback;
1534 	  	  		return;
1535 	  	  	END IF;
1536 	  END IF;
1537 
1538 
1539 	 --@@ bugfix 4219436
1540 	 --attach valid payment methods to the payrolls
1541 	 attach_valid_pay_method_api(p_payroll_id                => l_crp_w_payroll_id
1542 	                             ,p_org_payment_method_id    => l_crp_bacs_payment_method_id
1543                                      ,p_bg_id	 	  	 => l_bg_id
1544                                      ,p_effective_start_date     => l_bg_start_date
1545                                      ,p_retcode                  => l_retcode
1546 				     ,p_errbuff                  => l_errbuff);
1547 
1548 	 IF l_retcode = 2 OR l_retcode = 1 THEN
1549 	                p_retcode := l_retcode;
1550 			IF l_retcode = 2 THEN
1551 			          rollback;
1552 				  return;
1553 			END IF;
1554 	 END IF;
1555 
1556          attach_valid_pay_method_api(p_payroll_id                => l_crp_m_payroll_id
1557 	                             ,p_org_payment_method_id    => l_crp_bacs_payment_method_id
1558                                      ,p_bg_id	 	  	 => l_bg_id
1559                                      ,p_effective_start_date     => l_bg_start_date
1560                                      ,p_retcode                  => l_retcode
1561 				     ,p_errbuff                  => l_errbuff);
1562 
1563 	 IF l_retcode = 2 OR l_retcode = 1 THEN
1564 	                p_retcode := l_retcode;
1565 			IF l_retcode = 2 THEN
1566 			          rollback;
1567 				  return;
1568 			END IF;
1569 	 END IF;
1570 	 -- bugfix 4219436 @@
1571 
1572 	  -- Creating org info
1573 	  create_org_info_api(p_effec_date          	  => l_bg_start_date,
1574 	  		      p_bg_id			  => l_bg_id,
1575 	  		      p_org_id		      	  => l_org_id,
1576 	   		      p_org_info_type	  	  => 'Tax Details References',
1577 	   		      p_org_info1		  => '123/London',  --start-time/tax district
1578 	   		      p_org_info2		  => 'London',  --end time/
1579 	   		      p_org_info3		  => 'London',  --working hours
1580 	   		      p_org_info4		  => 'London',  --frequency
1581 	 		      p_org_info10		  => 'UK',      --reporting country
1582  			      p_retcode			  => l_retcode,
1583 			      p_errbuff			  => l_errbuff);
1584 
1585  	  IF l_retcode = 2 OR l_retcode = 1 THEN
1586 	  	  	p_retcode := l_retcode;
1587 	  	  	IF l_retcode = 2 THEN
1588 	  	      		rollback;
1589 	  	  		return;
1590 	  	  	END IF;
1591 	  END IF;
1592 
1593 	END IF;
1594 
1595 
1596 	commit;
1597 
1598 	create_hook();
1599 
1600 END populate;
1601 
1602 Procedure create_hook As
1603 
1604 Cursor csr_api_hook (c_module_name      varchar2
1605                     ,c_api_module_type  varchar2
1606                     ,c_api_hook_type    varchar2 ) Is
1607    Select ahm.api_module_id
1608         , ahk.api_hook_id
1609    From hr_api_hooks ahk
1610        ,hr_api_modules ahm
1611    Where ahm.module_name     = c_module_name
1612      and ahm.api_module_type = c_api_module_type
1613      and ahk.api_hook_type   = c_api_hook_type
1614      and ahk.api_module_id   = ahm.api_module_id;
1615 
1616 
1617 Cursor csr_api_hook_call(c_hook_id Number) Is
1618     Select hc.api_hook_call_id
1619     From  hr_api_hook_calls hc
1620     Where hc.api_hook_id   = c_hook_id
1621       and hc.legislation_code Is Null
1622       and hc.call_package   = 'PER_RI_CREATE_CRP_EMPLOYEE'
1623       and hc.call_procedure = 'SET_USER_ACCT_DETAILS'
1624       and application_id = 800;
1625 
1626 
1627 Cursor csr_hook_report  Is
1628    Select text
1629      From hr_api_user_hook_reports
1630    Where session_id = userenv('SESSIONID')
1631    Order By line;
1632 
1633 l_api_hook_id           Number;
1634 l_api_module_id         Number;
1635 l_api_hook_call_id      Number;
1636 l_object_version_number Number;
1637 l_hook_report           csr_api_hook_call%RowType;
1638 
1639 
1640  Begin
1641 
1642    Open csr_api_hook('CREATE_USER_ACCT','BP','BP');
1643    Fetch csr_api_hook Into l_api_module_id,l_api_hook_id;
1644    Close csr_api_hook;
1645 
1646    Open csr_api_hook_call(l_api_hook_id);
1647    Fetch csr_api_hook_call Into l_api_hook_call_id;
1648 
1649    If csr_api_hook_call%NotFound Then
1650 
1651    /*  hr_api_hook_call_api.create_api_hook_call
1652                                   (p_validate                   => false
1653                                   ,p_effective_date             => Sysdate
1654                                   ,p_api_hook_id                => l_api_hook_id
1655                                   ,p_api_hook_call_type         => 'PP'
1656                                   ,p_sequence                   => 2000
1657                                   ,p_enabled_flag               => 'Y'
1658                                   ,p_call_package               => 'PER_RI_CREATE_CRP_EMPLOYEE'
1659                                   ,p_call_procedure             => 'SET_USER_ACCT_DETAILS'
1660                                   ,p_api_hook_call_id           => l_api_hook_call_id
1661                                   ,p_object_version_number      => l_object_version_number
1662                                   );*/
1663        hr_app_api_hook_call_internal.CREATE_APP_API_HOOK_CALL
1664 			       (
1665 				 P_VALIDATE                     => false
1666 				,P_EFFECTIVE_DATE               => Sysdate
1667 				,P_API_HOOK_ID                  => l_api_hook_id
1668 				,P_API_HOOK_CALL_TYPE           => 'PP'
1669 				,P_SEQUENCE                     => 1499
1670 				,P_APPLICATION_ID               => 800
1671 				,P_APP_INSTALL_STATUS           => 'I_OR_S'
1672 				,P_ENABLED_FLAG                 => 'Y'
1673 				,P_CALL_PACKAGE                 =>  'PER_RI_CREATE_CRP_EMPLOYEE'
1674 				,P_CALL_PROCEDURE               => 'SET_USER_ACCT_DETAILS'
1675 				,P_API_HOOK_CALL_ID             =>  l_api_hook_call_id
1676 				,P_OBJECT_VERSION_NUMBER        =>  l_object_version_number
1677 			       );
1678 
1679    End If;
1680 
1681    Close csr_api_hook_call;
1682 
1683    hr_api_user_hooks_utility.create_hooks_add_report(l_api_module_id);
1684 
1685    For l_hook_report In csr_hook_report Loop
1686 
1687    fnd_file.put_line(fnd_file.log,l_hook_report.text);
1688 
1689    End Loop;
1690 
1691    hr_api_user_hooks_utility.clear_hook_report;
1692 
1693  End create_hook ;
1694 
1695 
1696 End per_ri_crp_default_settings;