[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;