1 package body PAY_ELEMENT_CLASS_PKG as
2 /* $Header: pydec.pkb 120.0 2005/05/29 01:49:24 appldev noship $ */
3 --------------------------------------------------------------------------------
4 g_dummy number(1); -- Dummy for cursor returns which are not needed
5 g_business_group_id number(15); -- For validating translation;
6 g_legislation_code varchar2(150); -- For validating translation;
7 --------------------------------------------------------------------------------
8 function NAME_NOT_UNIQUE (
9 --
10 --******************************************************************************
11 --* Returns TRUE if the classification name is not unique within the legislation
12 --******************************************************************************
13 --
14 -- Parameters are:
15 --
16 p_classification_name varchar2,
17 p_legislation_code varchar2,
18 p_business_group_id number,
19 p_rowid varchar2)
20 --
21 return boolean is
22 --
23 v_match_found boolean;
24 --
25 cursor csr_matching_name is
26 select 1
27 from pay_element_classifications
28 where upper(classification_name) = upper(p_classification_name)
29 and nvl(legislation_code,nvl(p_legislation_code, ' '))
30 = nvl(p_legislation_code, ' ')
31 and (p_rowid is null
32 or (p_rowid is not null and p_rowid <> rowid))
33 and business_group_id = p_business_group_id;
34 --
35 begin
36 --
37 hr_utility.set_location ('PAY_ELEMENT_CLASSIFICATIONS_PKG',1);
38 --
39 open csr_matching_name;
40 fetch csr_matching_name into g_dummy;
41 v_match_found := csr_matching_name%found;
42 close csr_matching_name;
43 --
44 if v_match_found then
45 hr_utility.set_message (801,'HR_6310_ELE_CLASS_NAME');
46 hr_utility.raise_error;
47 end if;
48 --
49 return v_match_found;
50 --
51 end name_not_unique;
52 --------------------------------------------------------------------------------
53 PROCEDURE set_translation_globals(p_business_group_id IN NUMBER,
54 p_legislation_code IN VARCHAR2) IS
55 BEGIN
56 g_business_group_id := p_business_group_id;
57 g_legislation_code := p_legislation_code;
58 END;
59 --------------------------------------------------------------------------------
60 procedure validate_translation(classification_id IN NUMBER,
61 language IN VARCHAR2,
62 classification_name IN VARCHAR2,
63 description IN VARCHAR2,
64 p_business_group_id IN NUMBER DEFAULT NULL,
65 p_legislation_code IN VARCHAR2 DEFAULT null) IS
66 /*
67
68 This procedure fails if a classification translation is already present in
69 the table for a given language. Otherwise, no action is performed. It is
70 used to ensure uniqueness of translated classification names.
71
72 */
73
74 --
75 -- This cursor implements the validation we require,
76 -- and expects that the various package globals are set before
77 -- the call to this procedure is made. This is done from the
78 -- user-named trigger 'TRANSLATIONS' in the form
79 --
80 cursor c_translation(p_language IN VARCHAR2,
81 p_class_name IN VARCHAR2,
82 p_class_id IN NUMBER,
83 p_bus_grp_id IN NUMBER,
84 p_leg_code IN varchar2) IS
85 SELECT 1
86 FROM pay_element_classifications_tl ect,
87 pay_element_classifications ecl
88 WHERE upper(ect.classification_name)=upper(p_class_name)
89 AND ect.classification_id = ecl.classification_id
90 AND ect.language = p_language
91 AND (ecl.classification_id <> p_class_id OR p_class_id IS NULL)
92 AND (ecl.business_group_id = p_bus_grp_id OR p_bus_grp_id IS NULL)
93 AND (ecl.legislation_code = p_leg_code OR p_leg_code IS NULL);
94
95 l_package_name VARCHAR2(80);
96 l_business_group_id NUMBER;
97 l_legislation_code VARCHAR2(150);
98
99 BEGIN
100 l_package_name := 'PAY_ELEMENT_CLASS_PKG.VALIDATE_TRANSLATION';
101 l_business_group_id := nvl(p_business_group_id, g_business_group_id);
102 l_legislation_code := nvl(p_legislation_code, g_legislation_code);
103 hr_utility.set_location (l_package_name,10);
104 OPEN c_translation(language, classification_name,classification_id,
105 l_business_group_id,l_legislation_code);
106 hr_utility.set_location (l_package_name,50);
107 FETCH c_translation INTO g_dummy;
108
109 IF c_translation%NOTFOUND THEN
110 hr_utility.set_location (l_package_name,60);
111 CLOSE c_translation;
112 ELSE
113 hr_utility.set_location (l_package_name,70);
114 CLOSE c_translation;
115 fnd_message.set_name('PAY','HR_TRANSLATION_EXISTS');
116 fnd_message.raise_error;
117 END IF;
118 hr_utility.set_location ('Leaving:'||l_package_name,80);
119 END validate_translation;
120 --------------------------------------------------------------------------------
121 function DELETION_ALLOWED (
122 --
123 --******************************************************************************
124 --* Returns TRUE if all deletion checks are passed. *
125 --******************************************************************************
126 --
127 -- Parameters are:
128 --
129 p_classification_id varchar2)
130 --
131 return boolean is
132 --
133 classification_type varchar2(10);
134 children_found boolean;
135 primary_classification boolean;
136 secondary_classification boolean;
137 --
138 cursor csr_class_type is
139 select decode (parent_classification_id,
140 null,'PRIMARY',
141 'SECONDARY')
142 from pay_element_classifications
143 where classification_id = p_classification_id;
144 --
145 function CHILD_CLASSIFICATIONS return boolean is
146 -- Check for child secondary classifications
147 cursor csr_2ndary_classifications is
148 select 1
149 from pay_element_classifications
150 where parent_classification_id = p_classification_id;
151 --
152 begin
153 hr_utility.set_location ('PAY_ELEMENT_CLASSIFICATIONS_PKG',3);
154 open csr_2ndary_classifications;
155 fetch csr_2ndary_classifications into g_dummy;
156 children_found := csr_2ndary_classifications%found;
157 close csr_2ndary_classifications;
158 if children_found then
159 hr_utility.set_message (801,'HR_6313_ELE_CLASS_DEL_EC');
160 end if;
161 return children_found;
162 end child_classifications;
163 --
164 function CHILD_ELEMENTS return boolean is
165 -- Check for child element types
166 cursor csr_element_types is
167 select 1
168 from pay_element_types_f
169 where classification_id = p_classification_id;
170 --
171 begin
172 hr_utility.set_location ('PAY_ELEMENT_CLASSIFICATIONS_PKG',4);
173 open csr_element_types;
174 fetch csr_element_types into g_dummy;
175 children_found := csr_element_types%found;
176 close csr_element_types;
177 if children_found then
178 hr_utility.set_message (801,'HR_6314_ELE_CLASS_DEL_ET');
179 end if;
180 return children_found;
181 end child_elements;
182 --
183 function CHILD_CLASS_RULES return boolean is
184 -- Check for child classification rules
185 cursor csr_class_rules is
186 select 1
187 from pay_ele_classification_rules
188 where classification_id = p_classification_id;
189 --
190 begin
191 hr_utility.set_location ('PAY_ELEMENT_CLASSIFICATIONS_PKG',5);
192 open csr_class_rules;
193 fetch csr_class_rules into g_dummy;
194 children_found := csr_class_rules%found;
195 close csr_class_rules;
196 if children_found then
197 hr_utility.set_message (801,'HR_6315_ELE_CLASS_DEL_ECR');
198 end if;
199 return children_found;
200 end child_class_rules;
201 --
202 function CHILD_BALANCE_CLASSES return boolean is
203 -- Check for child balance classifications
204 cursor csr_balance_classes is
205 select 1
206 from pay_balance_classifications
207 where classification_id = p_classification_id;
208 --
209 begin
210 hr_utility.set_location ('PAY_ELEMENT_CLASSIFICATIONS_PKG',6);
211 open csr_balance_classes;
212 fetch csr_balance_classes into g_dummy;
213 children_found := csr_balance_classes%found;
214 close csr_balance_classes;
215 if children_found then
216 hr_utility.set_message (801,'HR_6316_ELE_CLASS_DEL_BC');
217 end if;
218 return children_found;
219 end child_balance_classes;
220 --
221 function CHILD_SUB_CLASS_RULES return boolean is
222 -- Check for child sub-classification rules
223 cursor csr_sub_class_rules is
224 select 1
225 from pay_sub_classification_rules_f
226 where classification_id = p_classification_id;
227 --
228 begin
229 hr_utility.set_location ('PAY_ELEMENT_CLASSIFICATIONS_PKG',7);
230 open csr_sub_class_rules;
231 fetch csr_sub_class_rules into g_dummy;
232 children_found := csr_sub_class_rules%found;
233 close csr_sub_class_rules;
234 if children_found then
235 hr_utility.set_message (801,'HR_6317_ELE_CLASS_DEL_SCR');
236 end if;
237 return children_found;
238 end child_sub_class_rules;
239 --
240 begin
241 --
242 hr_utility.set_location ('PAY_ELEMENT_CLASSIFICATIONS_PKG',1);
243 --
244 -- Find out whether this is a primary or secondary classification
245 --
246 open csr_class_type;
247 fetch csr_class_type into classification_type;
248 primary_classification := (classification_type = 'PRIMARY');
249 secondary_classification := (classification_type = 'SECONDARY');
250 close csr_class_type;
251 --
252 hr_utility.set_location ('PAY_ELEMENT_CLASSIFICATIONS_PKG',2);
253 --
254 -- Checks for deletion permission
255 --
256 if child_balance_classes
257 --
258 or (( primary_classification
259 and ( child_classifications
260 or child_elements
261 or child_class_rules ))
262 --
263 or ( secondary_classification
264 and child_sub_class_rules)) then
265 --
266 hr_utility.trace ('Deletion not allowed');
267 hr_utility.raise_error;
268 return FALSE;
269 --
270 else
271 hr_utility.trace ('Deletion allowed');
272 return TRUE;
273 end if;
274 --
275 end deletion_allowed;
276 --------------------------------------------------------------------------------
277 function USER_CAN_MODIFY_PRIMARY (p_legislation_code varchar2) return boolean is
278 --
279 --******************************************************************************
280 --* Returns TRUE if there are no seeded primary classifications for the user's *
281 --* legislation *
282 --******************************************************************************
283 --
284 cursor csr_personnel is
285 select 1
286 from fnd_product_installations
287 where application_id = 800
288 and status = 'I';
289 --
290 cursor csr_seeded_data is
291 select 1
292 from pay_element_classifications
293 where legislation_code = p_legislation_code
294 and business_group_id is null;
295 --
296 cursor csr_localised is
297 select 'x'
298 from hr_legislation_installations li
299 where li.legislation_code = p_legislation_code;
300
301 v_modifiable boolean := TRUE;
302 v_local varchar2(1);
303 --
304 begin
305 --
306 hr_utility.set_location ('PAY_ELEMENT_CLASS_PKG',1);
307 --
308 open csr_personnel;
309 open csr_seeded_data;
310 --
311 fetch csr_seeded_data into g_dummy;
312 fetch csr_personnel into g_dummy;
313 --
314 if (csr_personnel%notfound
315 or csr_seeded_data%found) then
316 v_modifiable := FALSE;
317 end if;
318 --
319 close csr_seeded_data;
320 close csr_personnel;
321 --
322 open csr_localised;
323 --
324 fetch csr_localised into v_local;
325 --
326 if csr_localised%notfound then
327 null;
328 else
329 v_modifiable := FALSE;
330 end if;
331 --
332 hr_utility.set_location ('PAY_ELEMENT_CLASS_PKG',10);
333 return v_modifiable;
334 --
335 end user_can_modify_primary;
336 --------------------------------------------------------------------------------
337 procedure INSERT_ROW (
338 X_ROWID in out nocopy VARCHAR2,
339 X_CLASSIFICATION_ID in NUMBER,
340 X_BUSINESS_GROUP_ID in NUMBER,
341 X_LEGISLATION_CODE in VARCHAR2,
342 X_LEGISLATION_SUBGROUP in VARCHAR2,
343 X_COSTABLE_FLAG in VARCHAR2,
344 X_DEFAULT_HIGH_PRIORITY in NUMBER,
345 X_DEFAULT_LOW_PRIORITY in NUMBER,
346 X_DEFAULT_PRIORITY in NUMBER,
347 X_DISTRIBUTABLE_OVER_FLAG in VARCHAR2,
348 X_NON_PAYMENTS_FLAG in VARCHAR2,
349 X_COSTING_DEBIT_OR_CREDIT in VARCHAR2,
350 X_PARENT_CLASSIFICATION_ID in NUMBER,
351 X_CREATE_BY_DEFAULT_FLAG in VARCHAR2,
352 X_BALANCE_INITIALIZATION_FLAG in VARCHAR2,
353 X_OBJECT_VERSION_NUMBER in NUMBER,
354 X_CLASSIFICATION_NAME in VARCHAR2,
355 X_DESCRIPTION in VARCHAR2,
356 X_CREATION_DATE in DATE,
357 X_CREATED_BY in NUMBER,
358 X_LAST_UPDATE_DATE in DATE,
359 X_LAST_UPDATED_BY in NUMBER,
360 X_LAST_UPDATE_LOGIN in NUMBER,
361 X_FREQ_RULE_ENABLED in VARCHAR2 default null
362 ) is
363 cursor C is select ROWID from PAY_ELEMENT_CLASSIFICATIONS
364 where CLASSIFICATION_ID = X_CLASSIFICATION_ID
365 ;
366 begin
367 insert into PAY_ELEMENT_CLASSIFICATIONS (
368 CLASSIFICATION_ID,
369 CLASSIFICATION_NAME,
370 BUSINESS_GROUP_ID,
371 LEGISLATION_CODE,
372 LEGISLATION_SUBGROUP,
373 COSTABLE_FLAG,
374 DEFAULT_HIGH_PRIORITY,
375 DEFAULT_LOW_PRIORITY,
376 DEFAULT_PRIORITY,
377 DISTRIBUTABLE_OVER_FLAG,
378 NON_PAYMENTS_FLAG,
379 COSTING_DEBIT_OR_CREDIT,
380 PARENT_CLASSIFICATION_ID,
381 CREATE_BY_DEFAULT_FLAG,
382 BALANCE_INITIALIZATION_FLAG,
383 OBJECT_VERSION_NUMBER,
384 CREATION_DATE,
388 LAST_UPDATE_LOGIN,
385 CREATED_BY,
386 LAST_UPDATE_DATE,
387 LAST_UPDATED_BY,
389 FREQ_RULE_ENABLED
390 ) values (
391 X_CLASSIFICATION_ID,
392 X_CLASSIFICATION_NAME,
393 X_BUSINESS_GROUP_ID,
394 X_LEGISLATION_CODE,
395 X_LEGISLATION_SUBGROUP,
396 X_COSTABLE_FLAG,
397 X_DEFAULT_HIGH_PRIORITY,
398 X_DEFAULT_LOW_PRIORITY,
399 X_DEFAULT_PRIORITY,
400 X_DISTRIBUTABLE_OVER_FLAG,
401 X_NON_PAYMENTS_FLAG,
402 X_COSTING_DEBIT_OR_CREDIT,
403 X_PARENT_CLASSIFICATION_ID,
404 X_CREATE_BY_DEFAULT_FLAG,
405 X_BALANCE_INITIALIZATION_FLAG,
406 X_OBJECT_VERSION_NUMBER,
407 X_CREATION_DATE,
408 X_CREATED_BY,
409 X_LAST_UPDATE_DATE,
410 X_LAST_UPDATED_BY,
411 X_LAST_UPDATE_LOGIN,
412 X_FREQ_RULE_ENABLED
413 );
414
415 insert into PAY_ELEMENT_CLASSIFICATIONS_TL (
416 CLASSIFICATION_ID,
417 CLASSIFICATION_NAME,
418 DESCRIPTION,
419 LAST_UPDATE_DATE,
420 LAST_UPDATED_BY,
421 LAST_UPDATE_LOGIN,
422 CREATED_BY,
423 CREATION_DATE,
424 LANGUAGE,
425 SOURCE_LANG
426 ) select
427 X_CLASSIFICATION_ID,
428 X_CLASSIFICATION_NAME,
429 X_DESCRIPTION,
430 X_LAST_UPDATE_DATE,
431 X_LAST_UPDATED_BY,
432 X_LAST_UPDATE_LOGIN,
433 X_CREATED_BY,
434 X_CREATION_DATE,
435 L.LANGUAGE_CODE,
436 userenv('LANG')
437 from FND_LANGUAGES L
438 where L.INSTALLED_FLAG in ('I', 'B')
439 and not exists
440 (select NULL
441 from PAY_ELEMENT_CLASSIFICATIONS_TL T
442 where T.CLASSIFICATION_ID = X_CLASSIFICATION_ID
443 and T.LANGUAGE = L.LANGUAGE_CODE);
444
445 open c;
446 fetch c into X_ROWID;
447 if (c%notfound) then
448 close c;
449 raise no_data_found;
450 end if;
451 close c;
452
453 end INSERT_ROW;
454 --------------------------------------------------------------------------------
455 procedure LOCK_ROW (
456 X_CLASSIFICATION_ID in NUMBER,
457 X_BUSINESS_GROUP_ID in NUMBER,
458 X_LEGISLATION_CODE in VARCHAR2,
459 X_LEGISLATION_SUBGROUP in VARCHAR2,
460 X_COSTABLE_FLAG in VARCHAR2,
461 X_DEFAULT_HIGH_PRIORITY in NUMBER,
462 X_DEFAULT_LOW_PRIORITY in NUMBER,
463 X_DEFAULT_PRIORITY in NUMBER,
464 X_DISTRIBUTABLE_OVER_FLAG in VARCHAR2,
465 X_NON_PAYMENTS_FLAG in VARCHAR2,
466 X_COSTING_DEBIT_OR_CREDIT in VARCHAR2,
467 X_PARENT_CLASSIFICATION_ID in NUMBER,
468 X_CREATE_BY_DEFAULT_FLAG in VARCHAR2,
469 X_BALANCE_INITIALIZATION_FLAG in VARCHAR2,
470 X_OBJECT_VERSION_NUMBER in NUMBER,
471 X_CLASSIFICATION_NAME in VARCHAR2,
472 X_DESCRIPTION in VARCHAR2,
473 X_FREQ_RULE_ENABLED in VARCHAR2 default null
474 ) is
475 cursor c is select
476 BUSINESS_GROUP_ID,
477 LEGISLATION_CODE,
478 LEGISLATION_SUBGROUP,
479 COSTABLE_FLAG,
480 DEFAULT_HIGH_PRIORITY,
481 DEFAULT_LOW_PRIORITY,
482 DEFAULT_PRIORITY,
483 DISTRIBUTABLE_OVER_FLAG,
484 NON_PAYMENTS_FLAG,
485 COSTING_DEBIT_OR_CREDIT,
486 PARENT_CLASSIFICATION_ID,
487 CREATE_BY_DEFAULT_FLAG,
488 BALANCE_INITIALIZATION_FLAG,
489 OBJECT_VERSION_NUMBER,
490 FREQ_RULE_ENABLED
491 from PAY_ELEMENT_CLASSIFICATIONS
492 where CLASSIFICATION_ID = X_CLASSIFICATION_ID
493 for update of CLASSIFICATION_ID nowait;
494 recinfo c%rowtype;
495
496 cursor c1 is select
497 CLASSIFICATION_NAME,
498 DESCRIPTION,
499 decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
500 from PAY_ELEMENT_CLASSIFICATIONS_TL
501 where CLASSIFICATION_ID = X_CLASSIFICATION_ID
502 and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
503 for update of CLASSIFICATION_ID nowait;
504 begin
505 open c;
506 fetch c into recinfo;
507 if (c%notfound) then
508 close c;
509 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
510 app_exception.raise_exception;
511 end if;
512 close c;
513 if ( ((recinfo.BUSINESS_GROUP_ID = X_BUSINESS_GROUP_ID)
514 OR ((recinfo.BUSINESS_GROUP_ID is null) AND (X_BUSINESS_GROUP_ID is null)))
515 AND ((recinfo.LEGISLATION_CODE = X_LEGISLATION_CODE)
516 OR ((recinfo.LEGISLATION_CODE is null) AND (X_LEGISLATION_CODE is null)))
517 AND ((recinfo.LEGISLATION_SUBGROUP = X_LEGISLATION_SUBGROUP)
518 OR ((recinfo.LEGISLATION_SUBGROUP is null) AND (X_LEGISLATION_SUBGROUP is null)))
519 AND ((recinfo.COSTABLE_FLAG = X_COSTABLE_FLAG)
520 OR ((recinfo.COSTABLE_FLAG is null) AND (X_COSTABLE_FLAG is null)))
521 AND ((recinfo.DEFAULT_HIGH_PRIORITY = X_DEFAULT_HIGH_PRIORITY)
522 OR ((recinfo.DEFAULT_HIGH_PRIORITY is null) AND (X_DEFAULT_HIGH_PRIORITY is null)))
523 AND ((recinfo.DEFAULT_LOW_PRIORITY = X_DEFAULT_LOW_PRIORITY)
524 OR ((recinfo.DEFAULT_LOW_PRIORITY is null) AND (X_DEFAULT_LOW_PRIORITY is null)))
525 AND ((recinfo.DEFAULT_PRIORITY = X_DEFAULT_PRIORITY)
529 AND ((recinfo.NON_PAYMENTS_FLAG = X_NON_PAYMENTS_FLAG)
526 OR ((recinfo.DEFAULT_PRIORITY is null) AND (X_DEFAULT_PRIORITY is null)))
527 AND ((recinfo.DISTRIBUTABLE_OVER_FLAG = X_DISTRIBUTABLE_OVER_FLAG)
528 OR ((recinfo.DISTRIBUTABLE_OVER_FLAG is null) AND (X_DISTRIBUTABLE_OVER_FLAG is null)))
530 OR ((recinfo.NON_PAYMENTS_FLAG is null) AND (X_NON_PAYMENTS_FLAG is null)))
531 AND ((recinfo.COSTING_DEBIT_OR_CREDIT = X_COSTING_DEBIT_OR_CREDIT)
532 OR ((recinfo.COSTING_DEBIT_OR_CREDIT is null) AND (X_COSTING_DEBIT_OR_CREDIT is null)))
533 AND ((recinfo.PARENT_CLASSIFICATION_ID = X_PARENT_CLASSIFICATION_ID)
534 OR ((recinfo.PARENT_CLASSIFICATION_ID is null) AND (X_PARENT_CLASSIFICATION_ID is null)))
535 AND ((recinfo.CREATE_BY_DEFAULT_FLAG = X_CREATE_BY_DEFAULT_FLAG)
536 OR ((recinfo.CREATE_BY_DEFAULT_FLAG is null) AND (X_CREATE_BY_DEFAULT_FLAG is null)))
537 AND ((recinfo.BALANCE_INITIALIZATION_FLAG = X_BALANCE_INITIALIZATION_FLAG)
538 OR ((recinfo.BALANCE_INITIALIZATION_FLAG is null) AND (X_BALANCE_INITIALIZATION_FLAG is null)))
539 AND ((recinfo.OBJECT_VERSION_NUMBER = X_OBJECT_VERSION_NUMBER)
540 OR ((recinfo.OBJECT_VERSION_NUMBER is null) AND (X_OBJECT_VERSION_NUMBER is null)))
541 AND ((recinfo.FREQ_RULE_ENABLED = X_FREQ_RULE_ENABLED)
542 OR ((recinfo.FREQ_RULE_ENABLED is null) AND (X_FREQ_RULE_ENABLED is null)))
543 ) then
544 null;
545 else
546 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
547 app_exception.raise_exception;
548 end if;
549
550 for tlinfo in c1 loop
551 if (tlinfo.BASELANG = 'Y') then
552 if ( (tlinfo.CLASSIFICATION_NAME = X_CLASSIFICATION_NAME)
553 AND ((tlinfo.DESCRIPTION = X_DESCRIPTION)
554 OR ((tlinfo.DESCRIPTION is null) AND (X_DESCRIPTION is null)))
555 ) then
556 null;
557 else
558 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
559 app_exception.raise_exception;
560 end if;
561 end if;
562 end loop;
563 return;
564 end LOCK_ROW;
565 --------------------------------------------------------------------------------
566 procedure UPDATE_ROW (
567 X_CLASSIFICATION_ID in NUMBER,
568 X_BUSINESS_GROUP_ID in NUMBER,
569 X_LEGISLATION_CODE in VARCHAR2,
570 X_LEGISLATION_SUBGROUP in VARCHAR2,
571 X_COSTABLE_FLAG in VARCHAR2,
572 X_DEFAULT_HIGH_PRIORITY in NUMBER,
573 X_DEFAULT_LOW_PRIORITY in NUMBER,
574 X_DEFAULT_PRIORITY in NUMBER,
575 X_DISTRIBUTABLE_OVER_FLAG in VARCHAR2,
576 X_NON_PAYMENTS_FLAG in VARCHAR2,
577 X_COSTING_DEBIT_OR_CREDIT in VARCHAR2,
578 X_PARENT_CLASSIFICATION_ID in NUMBER,
579 X_CREATE_BY_DEFAULT_FLAG in VARCHAR2,
580 X_BALANCE_INITIALIZATION_FLAG in VARCHAR2,
581 X_OBJECT_VERSION_NUMBER in NUMBER,
582 X_CLASSIFICATION_NAME in VARCHAR2,
583 X_DESCRIPTION in VARCHAR2,
584 X_LAST_UPDATE_DATE in DATE,
585 X_LAST_UPDATED_BY in NUMBER,
586 X_LAST_UPDATE_LOGIN in NUMBER,
587 X_MESG_FLG out nocopy Boolean,
588 X_FREQ_RULE_ENABLED in VARCHAR2 default null
589 ) is
590
591 P_SOURCE_LANG PAY_ELEMENT_CLASSIFICATIONS_TL.SOURCE_LANG%type;
592 begin
593 begin
594 select source_lang
595 into P_SOURCE_LANG
596 from PAY_ELEMENT_CLASSIFICATIONS_TL
597 where
598 CLASSIFICATION_ID = X_CLASSIFICATION_ID
599 and userenv('LANG') = LANGUAGE;
600 Exception
601 when no_data_found then
602 raise no_data_found;
603 end;
604
605 if P_SOURCE_LANG = userenv('LANG') then
606 X_MESG_FLG :=false;
607 else
608 X_MESG_FLG :=true;
609 end if;
610
611 update PAY_ELEMENT_CLASSIFICATIONS set
612 CLASSIFICATION_NAME= decode(P_SOURCE_LANG,userenv('LANG'),X_CLASSIFICATION_NAME,CLASSIFICATION_NAME),
613 BUSINESS_GROUP_ID = X_BUSINESS_GROUP_ID,
614 LEGISLATION_CODE = X_LEGISLATION_CODE,
615 LEGISLATION_SUBGROUP = X_LEGISLATION_SUBGROUP,
616 COSTABLE_FLAG = X_COSTABLE_FLAG,
617 DEFAULT_HIGH_PRIORITY = X_DEFAULT_HIGH_PRIORITY,
618 DEFAULT_LOW_PRIORITY = X_DEFAULT_LOW_PRIORITY,
619 DEFAULT_PRIORITY = X_DEFAULT_PRIORITY,
620 DISTRIBUTABLE_OVER_FLAG = X_DISTRIBUTABLE_OVER_FLAG,
621 NON_PAYMENTS_FLAG = X_NON_PAYMENTS_FLAG,
622 COSTING_DEBIT_OR_CREDIT = X_COSTING_DEBIT_OR_CREDIT,
623 PARENT_CLASSIFICATION_ID = X_PARENT_CLASSIFICATION_ID,
624 CREATE_BY_DEFAULT_FLAG = X_CREATE_BY_DEFAULT_FLAG,
625 BALANCE_INITIALIZATION_FLAG = X_BALANCE_INITIALIZATION_FLAG,
626 OBJECT_VERSION_NUMBER = X_OBJECT_VERSION_NUMBER,
627 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
628 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
629 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
630 FREQ_RULE_ENABLED = X_FREQ_RULE_ENABLED
631 where CLASSIFICATION_ID = X_CLASSIFICATION_ID;
632
633 if (sql%notfound) then
634 raise no_data_found;
635 end if;
636
637 update PAY_ELEMENT_CLASSIFICATIONS_TL set
638 CLASSIFICATION_NAME = X_CLASSIFICATION_NAME,
639 DESCRIPTION = X_DESCRIPTION,
640 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
641 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
642 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
643 SOURCE_LANG = userenv('LANG')
647 if (sql%notfound) then
644 where CLASSIFICATION_ID = X_CLASSIFICATION_ID
645 and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
646
648 raise no_data_found;
649 end if;
650 end UPDATE_ROW;
651 --------------------------------------------------------------------------------
652 procedure DELETE_ROW (
653 X_CLASSIFICATION_ID in NUMBER
654 ) is
655 begin
656 delete from PAY_ELEMENT_CLASSIFICATIONS_TL
657 where CLASSIFICATION_ID = X_CLASSIFICATION_ID;
658
659 if (sql%notfound) then
660 raise no_data_found;
661 end if;
662
663 delete from PAY_ELEMENT_CLASSIFICATIONS
664 where CLASSIFICATION_ID = X_CLASSIFICATION_ID;
665
666 if (sql%notfound) then
667 raise no_data_found;
668 end if;
669 end DELETE_ROW;
670 --------------------------------------------------------------------------------
671 procedure ADD_LANGUAGE
672 is
673 begin
674 delete from PAY_ELEMENT_CLASSIFICATIONS_TL T
675 where not exists
676 (select NULL
677 from PAY_ELEMENT_CLASSIFICATIONS B
678 where B.CLASSIFICATION_ID = T.CLASSIFICATION_ID
679 );
680
681 update PAY_ELEMENT_CLASSIFICATIONS_TL T set (
682 CLASSIFICATION_NAME,
683 DESCRIPTION
684 ) = (select
685 B.CLASSIFICATION_NAME,
686 B.DESCRIPTION
687 from PAY_ELEMENT_CLASSIFICATIONS_TL B
688 where B.CLASSIFICATION_ID = T.CLASSIFICATION_ID
689 and B.LANGUAGE = T.SOURCE_LANG)
690 where (
691 T.CLASSIFICATION_ID,
692 T.LANGUAGE
693 ) in (select
694 SUBT.CLASSIFICATION_ID,
695 SUBT.LANGUAGE
696 from PAY_ELEMENT_CLASSIFICATIONS_TL SUBB, PAY_ELEMENT_CLASSIFICATIONS_TL SUBT
697 where SUBB.CLASSIFICATION_ID = SUBT.CLASSIFICATION_ID
698 and SUBB.LANGUAGE = SUBT.SOURCE_LANG
699 and (SUBB.CLASSIFICATION_NAME <> SUBT.CLASSIFICATION_NAME
700 or SUBB.DESCRIPTION <> SUBT.DESCRIPTION
701 or (SUBB.DESCRIPTION is null and SUBT.DESCRIPTION is not null)
702 or (SUBB.DESCRIPTION is not null and SUBT.DESCRIPTION is null)
703 ));
704
705 insert into PAY_ELEMENT_CLASSIFICATIONS_TL (
706 CLASSIFICATION_ID,
707 CLASSIFICATION_NAME,
708 DESCRIPTION,
709 LAST_UPDATE_DATE,
710 LAST_UPDATED_BY,
711 LAST_UPDATE_LOGIN,
712 CREATED_BY,
713 CREATION_DATE,
714 LANGUAGE,
715 SOURCE_LANG
716 ) select
717 B.CLASSIFICATION_ID,
718 B.CLASSIFICATION_NAME,
719 B.DESCRIPTION,
720 B.LAST_UPDATE_DATE,
721 B.LAST_UPDATED_BY,
722 B.LAST_UPDATE_LOGIN,
723 B.CREATED_BY,
724 B.CREATION_DATE,
725 L.LANGUAGE_CODE,
726 B.SOURCE_LANG
727 from PAY_ELEMENT_CLASSIFICATIONS_TL B, FND_LANGUAGES L
728 where L.INSTALLED_FLAG in ('I', 'B')
729 and B.LANGUAGE = userenv('LANG')
730 and not exists
731 (select NULL
732 from PAY_ELEMENT_CLASSIFICATIONS_TL T
733 where T.CLASSIFICATION_ID = B.CLASSIFICATION_ID
734 and T.LANGUAGE = L.LANGUAGE_CODE);
735 end ADD_LANGUAGE;
736 --------------------------------------------------------------------------------
737 procedure unique_chk(E_CLASSIFICATION_NAME in VARCHAR2, E_LEGISLATION_CODE in VARCHAR2)
738 is
739 result varchar2(255);
740 Begin
741 SELECT count(*) INTO result
742 FROM PAY_ELEMENT_CLASSIFICATIONS
743 WHERE nvl(CLASSIFICATION_NAME,'~null~') = nvl(E_CLASSIFICATION_NAME,'~null~')
744 and nvl(LEGISLATION_CODE,'~null~') = nvl(E_LEGISLATION_CODE,'~null~')
745 and BUSINESS_GROUP_ID is NULL;
746 --
747 IF (result>1) THEN
748 hr_utility.set_message(801,'HR_6153_ALL_PROCEDURE_FAIL');
749 hr_utility.set_message_token('PROCEDURE','PAY_ELEMENT_CLASS_PKB.UNIQUE_CHK');
750 hr_utility.set_message_token('STEP','1');
751 hr_utility.raise_error;
752 END IF;
753 EXCEPTION
754 when NO_DATA_FOUND then
755 hr_utility.set_message(801,'HR_6153_ALL_PROCEDURE_FAIL');
756 hr_utility.set_message_token('PROCEDURE','PAY_ELEMENT_CLASS_PKB.UNIQUE_CHK');
757 hr_utility.set_message_token('STEP','1');
758 hr_utility.raise_error;
759 end unique_chk;
760 --------------------------------------------------------------------------------
761 procedure TRANSLATE_ROW (
762 X_E_CLASSIFICATION_NAME in VARCHAR2,
763 X_E_LEGISLATION_CODE in VARCHAR2,
764 X_CLASSIFICATION_NAME in VARCHAR2,
765 X_DESCRIPTION in VARCHAR2,
766 X_OWNER in VARCHAR2) is
767 begin
768 -- unique_chk(X_E_CLASSIFICATION_NAME,X_E_LEGISLATION_CODE);
769 --
770 UPDATE pay_element_classifications_tl
771 SET CLASSIFICATION_NAME = nvl(X_CLASSIFICATION_NAME,CLASSIFICATION_NAME),
772 description = nvl(x_description,description),
773 last_update_date = SYSDATE,
774 last_updated_by = decode(x_owner,'SEED',1,0),
775 last_update_login = 0,
776 source_lang = userenv('LANG')
777 WHERE userenv('LANG') IN (language,source_lang)
778 AND CLASSIFICATION_ID in
779 (select CLASSIFICATION_ID
780 from pay_element_classifications
781 where nvl(CLASSIFICATION_NAME,'~null~')=nvl(X_E_CLASSIFICATION_NAME,'~null~')
782 and nvl(LEGISLATION_CODE,'~null~') = nvl(X_E_LEGISLATION_CODE,'~null~')
783 and BUSINESS_GROUP_ID is NULL);
784 --
785 if (sql%notfound) then -- trap system errors during update
786 -- hr_utility.set_message (801,'HR_6153_ALL_PROCEDURE_FAIL');
787 -- hr_utility.set_message_token ('PROCEDURE','PAY_ELEMENT_CLASS_PKB.TRANSLATE_ROW');
788 -- hr_utility.set_message_token('STEP','1');
789 -- hr_utility.raise_error;
790 null;
791 end if;
792 end TRANSLATE_ROW;
793 --------------------------------------------------------------------------------
794 end PAY_ELEMENT_CLASS_PKG;