[Home] [Help]
PACKAGE BODY: APPS.PAY_MONETARY_UNITS_PKG
Source
1 package body PAY_MONETARY_UNITS_PKG as
2 /* $Header: pymon01t.pkb 115.3 2003/08/05 07:01:07 scchakra ship $ */
3 --
4 -- define globals for validating translation.
5 --
6 g_business_group_id number(15);
7 g_legislation_code varchar2(150);
8 g_currency_code varchar2(15);
9 --
10 procedure pop_flds(p_terr_code IN VARCHAR2,
11 p_country IN OUT NOCOPY VARCHAR2) is
12
13 cursor c2 is
14 select territory_short_name
15 from fnd_territories_vl
16 where territory_code = p_terr_code;
17 --
18 begin
19 --
20 hr_utility.set_location('pay_monetary_units_pkg.pop_flds',1);
21 --
22 open c2;
23 --
24 fetch c2 into p_country;
25 --
26 close c2;
27 --
28 end pop_flds;
29
30
31 procedure chk_unq_row(p_cur_code IN VARCHAR2,
32 p_unit_name IN VARCHAR2,
33 p_bgroup_id IN NUMBER,
34 p_rowid IN VARCHAR2,
35 p_leg_code IN VARCHAR2 default null,
36 p_rel_value IN NUMBER default null) is
37 l_exists varchar2(1);
38
39 cursor c3(p_mode in varchar2) is
40 select 'x'
41 from pay_monetary_units pmu
42 ,pay_monetary_units_tl pmut
43 where pmu.currency_code = p_cur_code
44 and ( (p_mode = 'MONETARY_UNIT_NAME'
45 and upper(translate(pmut.monetary_unit_name,'x_','x '))
46 = upper(translate(p_unit_name,'x_','x '))
47 )
48 or (p_mode = 'RELATIVE_VALUE'
49 and pmu.relative_value = p_rel_value))
50 and pmut.monetary_unit_id = pmu.monetary_unit_id
51 and pmut.language = userenv('LANG')
52 and ( (pmu.legislation_code is null
53 and pmu.business_group_id + 0 = p_bgroup_id)
54 or (pmu.business_group_id is null
55 and pmu.legislation_code = p_leg_code)
56 or (pmu.business_group_id is null
57 and pmu.legislation_code is null))
58 and (p_rowid is null
59 or (p_rowid is not null and chartorowid(p_rowid) <> pmu.rowid));
60 --
61 begin
62 --
63 hr_utility.set_location('pay_monetary_units_pkg.chk_unq_row',1);
64 --
65 if p_unit_name is not null then
66 open c3('MONETARY_UNIT_NAME');
67 --
68 fetch c3 into l_exists;
69 IF c3%found THEN
70 hr_utility.set_message(801, 'PAY_6777_DEF_CURR_UNIT_EXISTS');
71 hr_utility.set_message_token('1','name');
72 close c3;
73 hr_utility.raise_error;
74 END IF;
75 --
76 close c3;
77 end if;
78 --
79 if p_rel_value is not null then
80 open c3('RELATIVE_VALUE');
81 --
82 fetch c3 into l_exists;
83 IF c3%found THEN
84 hr_utility.set_message(801, 'PAY_6777_DEF_CURR_UNIT_EXISTS');
85 hr_utility.set_message_token('1','value');
86 close c3;
87 hr_utility.raise_error;
88 END IF;
89 --
90 close c3;
91 end if;
92 --
93 end chk_unq_row;
94
95
96 procedure get_id(p_munit_id IN OUT NOCOPY NUMBER) is
97
98 cursor c4 is
99 select pay_monetary_units_s.nextval
100 from sys.dual;
101 --
102 begin
103 --
104 hr_utility.set_location('pay_monetary_units_pkg.get_id',1);
105 --
106 open c4;
107 --
108 fetch c4 into p_munit_id;
109 --
110 close c4;
111 --
112 end get_id;
113
114
115 procedure stb_del_valid(p_munit_id IN NUMBER) is
116 l_exists varchar2(1);
117
118 cursor c5 is
119 select 'x'
120 from pay_coin_anal_elements
121 where monetary_unit_id = p_munit_id;
122 --
123 begin
124 --
125 hr_utility.set_location('pay_monetary_units_pkg.stb_del_valid',1);
126 --
127 open c5;
128 --
129 fetch c5 into l_exists;
130 IF c5%found THEN
131 hr_utility.set_message(801, 'PAY_6780_DEF_CURR_UNIT_RULES');
132 close c5;
133 hr_utility.raise_error;
134 END IF;
135 --
136 close c5;
137 --
138 end stb_del_valid;
139 --
140 -- Start of Table Handlers for PAY_MONETARY_UNITS and PAY_MONETARY_UNITS_TL.
141 --
142 procedure INSERT_ROW (
143 X_ROWID in out nocopy VARCHAR2,
144 X_MONETARY_UNIT_ID in out nocopy NUMBER,
145 X_CURRENCY_CODE in VARCHAR2,
146 X_BUSINESS_GROUP_ID in NUMBER,
147 X_LEGISLATION_CODE in VARCHAR2,
148 X_RELATIVE_VALUE in NUMBER,
149 X_COMMENTS in LONG,
150 X_MONETARY_UNIT_NAME in VARCHAR2,
151 X_CREATION_DATE in DATE,
152 X_CREATED_BY in NUMBER,
153 X_LAST_UPDATE_DATE in DATE,
154 X_LAST_UPDATED_BY in NUMBER,
155 X_LAST_UPDATE_LOGIN in NUMBER
156 ) is
157 --
158 cursor C is select ROWID from PAY_MONETARY_UNITS
159 where MONETARY_UNIT_ID = X_MONETARY_UNIT_ID;
160 begin
161 --
162 chk_unq_row(p_cur_code => X_CURRENCY_CODE
163 ,p_unit_name => X_MONETARY_UNIT_NAME
164 ,p_rel_value => X_RELATIVE_VALUE
165 ,p_bgroup_id => X_BUSINESS_GROUP_ID
166 ,p_leg_code => X_LEGISLATION_CODE
167 ,p_rowid => X_ROWID
168 );
169 --
170 get_id(x_monetary_unit_id);
171 --
172 insert into PAY_MONETARY_UNITS (
173 MONETARY_UNIT_ID,
174 CURRENCY_CODE,
175 BUSINESS_GROUP_ID,
176 LEGISLATION_CODE,
177 RELATIVE_VALUE,
178 COMMENTS,
179 MONETARY_UNIT_NAME,
180 CREATION_DATE,
181 CREATED_BY,
182 LAST_UPDATE_DATE,
183 LAST_UPDATED_BY,
184 LAST_UPDATE_LOGIN
185 ) values (
186 X_MONETARY_UNIT_ID,
187 X_CURRENCY_CODE,
188 X_BUSINESS_GROUP_ID,
189 X_LEGISLATION_CODE,
190 X_RELATIVE_VALUE,
191 X_COMMENTS,
192 X_MONETARY_UNIT_NAME,
193 X_CREATION_DATE,
194 X_CREATED_BY,
195 X_LAST_UPDATE_DATE,
196 X_LAST_UPDATED_BY,
197 X_LAST_UPDATE_LOGIN
198 );
199
200 insert into PAY_MONETARY_UNITS_TL (
201 MONETARY_UNIT_ID,
202 MONETARY_UNIT_NAME,
203 LAST_UPDATE_DATE,
204 LAST_UPDATED_BY,
205 LAST_UPDATE_LOGIN,
206 CREATED_BY,
207 CREATION_DATE,
208 LANGUAGE,
209 SOURCE_LANG
210 ) select
211 X_MONETARY_UNIT_ID,
212 X_MONETARY_UNIT_NAME,
213 X_LAST_UPDATE_DATE,
214 X_LAST_UPDATED_BY,
215 X_LAST_UPDATE_LOGIN,
216 X_CREATED_BY,
217 X_CREATION_DATE,
218 L.LANGUAGE_CODE,
219 userenv('LANG')
220 from FND_LANGUAGES L
221 where L.INSTALLED_FLAG in ('I', 'B')
222 and not exists
223 (select NULL
224 from PAY_MONETARY_UNITS_TL T
225 where T.MONETARY_UNIT_ID = X_MONETARY_UNIT_ID
226 and T.LANGUAGE = L.LANGUAGE_CODE);
227
228 open c;
229 fetch c into X_ROWID;
230 if (c%notfound) then
231 close c;
232 raise no_data_found;
233 end if;
234 close c;
235
236 end INSERT_ROW;
237 --
238 procedure LOCK_ROW (
239 X_MONETARY_UNIT_ID in NUMBER,
240 X_CURRENCY_CODE in VARCHAR2,
241 X_BUSINESS_GROUP_ID in NUMBER,
242 X_LEGISLATION_CODE in VARCHAR2,
243 X_RELATIVE_VALUE in NUMBER,
244 X_COMMENTS in LONG,
245 X_MONETARY_UNIT_NAME in VARCHAR2
246 ) is
247 cursor c is select
248 CURRENCY_CODE,
249 BUSINESS_GROUP_ID,
250 LEGISLATION_CODE,
251 RELATIVE_VALUE,
252 COMMENTS
253 from PAY_MONETARY_UNITS
254 where MONETARY_UNIT_ID = X_MONETARY_UNIT_ID
255 for update of MONETARY_UNIT_ID nowait;
256 recinfo c%rowtype;
257
258 cursor c1 is select
259 MONETARY_UNIT_NAME,
260 decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
261 from PAY_MONETARY_UNITS_TL
262 where MONETARY_UNIT_ID = X_MONETARY_UNIT_ID
263 and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
264 for update of MONETARY_UNIT_ID nowait;
265 begin
266 open c;
267 fetch c into recinfo;
268 if (c%notfound) then
269 close c;
270 fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
271 app_exception.raise_exception;
272 end if;
273 close c;
274 if ( (recinfo.CURRENCY_CODE = X_CURRENCY_CODE)
275 AND ((recinfo.BUSINESS_GROUP_ID = X_BUSINESS_GROUP_ID)
276 OR ((recinfo.BUSINESS_GROUP_ID is null) AND (X_BUSINESS_GROUP_ID is null)))
277 AND ((recinfo.LEGISLATION_CODE = X_LEGISLATION_CODE)
278 OR ((recinfo.LEGISLATION_CODE is null) AND (X_LEGISLATION_CODE is null)))
279 AND (recinfo.RELATIVE_VALUE = X_RELATIVE_VALUE)
280 AND ((recinfo.COMMENTS = X_COMMENTS)
281 OR ((recinfo.COMMENTS is null) AND (X_COMMENTS is null)))
282 ) then
283 null;
284 else
285 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
286 app_exception.raise_exception;
287 end if;
288
289 for tlinfo in c1 loop
290 if (tlinfo.BASELANG = 'Y') then
291 if ( (tlinfo.MONETARY_UNIT_NAME = X_MONETARY_UNIT_NAME)
292 ) then
293 null;
294 else
295 fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
296 app_exception.raise_exception;
297 end if;
298 end if;
299 end loop;
300 return;
301 end LOCK_ROW;
302 --
303 procedure UPDATE_ROW (
304 X_ROWID in VARCHAR2,
305 X_MONETARY_UNIT_ID in NUMBER,
306 X_CURRENCY_CODE in VARCHAR2,
307 X_BUSINESS_GROUP_ID in NUMBER,
308 X_LEGISLATION_CODE in VARCHAR2,
309 X_RELATIVE_VALUE in NUMBER,
310 X_COMMENTS in LONG,
311 X_MONETARY_UNIT_NAME in VARCHAR2,
312 X_LAST_UPDATE_DATE in DATE,
313 X_LAST_UPDATED_BY in NUMBER,
314 X_LAST_UPDATE_LOGIN in NUMBER
315 ) is
316 begin
317 hr_utility.set_location('Entering Update_row',30);
318 --
319 chk_unq_row(p_cur_code => X_CURRENCY_CODE
320 ,p_unit_name => X_MONETARY_UNIT_NAME
321 ,p_rel_value => X_RELATIVE_VALUE
322 ,p_bgroup_id => X_BUSINESS_GROUP_ID
323 ,p_leg_code => X_LEGISLATION_CODE
324 ,p_rowid => X_ROWID
325 );
326 --
327 update PAY_MONETARY_UNITS set
328 CURRENCY_CODE = X_CURRENCY_CODE,
329 BUSINESS_GROUP_ID = X_BUSINESS_GROUP_ID,
330 LEGISLATION_CODE = X_LEGISLATION_CODE,
331 RELATIVE_VALUE = X_RELATIVE_VALUE,
332 COMMENTS = X_COMMENTS,
333 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
334 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
335 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
336 where MONETARY_UNIT_ID = X_MONETARY_UNIT_ID;
337
338 if (sql%notfound) then
339 raise no_data_found;
340 end if;
341
342 update PAY_MONETARY_UNITS_TL set
343 MONETARY_UNIT_NAME = X_MONETARY_UNIT_NAME,
344 LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
345 LAST_UPDATED_BY = X_LAST_UPDATED_BY,
346 LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
347 SOURCE_LANG = userenv('LANG')
348 where MONETARY_UNIT_ID = X_MONETARY_UNIT_ID
349 and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
350 --
351 if (sql%notfound) then
352 insert into PAY_MONETARY_UNITS_TL
353 (MONETARY_UNIT_ID,
354 MONETARY_UNIT_NAME,
355 LANGUAGE,
356 SOURCE_LANG
357 )
358 select
359 X_MONETARY_UNIT_ID,
360 X_MONETARY_UNIT_NAME,
361 L.LANGUAGE_CODE,
362 userenv('LANG')
363 from FND_LANGUAGES L
364 where L.INSTALLED_FLAG in ('I', 'B')
365 and not exists
366 (select NULL
367 from PAY_MONETARY_UNITS_TL T
368 where T.MONETARY_UNIT_ID = X_MONETARY_UNIT_ID
369 and T.LANGUAGE = L.LANGUAGE_CODE);
370 end if;
371 --
372 end UPDATE_ROW;
373 --
374 procedure DELETE_ROW (
375 X_MONETARY_UNIT_ID in NUMBER
376 ) is
377 begin
378 delete from PAY_MONETARY_UNITS_TL
379 where MONETARY_UNIT_ID = X_MONETARY_UNIT_ID;
380
381 if (sql%notfound) then
382 raise no_data_found;
383 end if;
384
385 delete from PAY_MONETARY_UNITS
386 where MONETARY_UNIT_ID = X_MONETARY_UNIT_ID;
387
388 if (sql%notfound) then
389 raise no_data_found;
390 end if;
391 end DELETE_ROW;
392 --
393 procedure ADD_LANGUAGE
394 is
395 begin
396 delete from PAY_MONETARY_UNITS_TL T
397 where not exists
398 (select NULL
399 from PAY_MONETARY_UNITS B
400 where B.MONETARY_UNIT_ID = T.MONETARY_UNIT_ID
401 );
402
403 update PAY_MONETARY_UNITS_TL T set (
404 MONETARY_UNIT_NAME
405 ) = (select
406 B.MONETARY_UNIT_NAME
407 from PAY_MONETARY_UNITS_TL B
408 where B.MONETARY_UNIT_ID = T.MONETARY_UNIT_ID
409 and B.LANGUAGE = T.SOURCE_LANG)
410 where (
411 T.MONETARY_UNIT_ID,
412 T.MONETARY_UNIT_ID,
413 T.LANGUAGE
414 ) in (select
415 SUBT.MONETARY_UNIT_ID,
416 SUBT.MONETARY_UNIT_ID,
417 SUBT.LANGUAGE
418 from PAY_MONETARY_UNITS_TL SUBB, PAY_MONETARY_UNITS_TL SUBT
419 where SUBB.MONETARY_UNIT_ID = SUBT.MONETARY_UNIT_ID
420 and SUBB.LANGUAGE = SUBT.SOURCE_LANG
421 and (SUBB.MONETARY_UNIT_NAME <> SUBT.MONETARY_UNIT_NAME
422 ));
423
424 insert into PAY_MONETARY_UNITS_TL (
425 MONETARY_UNIT_ID,
426 MONETARY_UNIT_NAME,
427 LAST_UPDATE_DATE,
428 LAST_UPDATED_BY,
429 LAST_UPDATE_LOGIN,
430 CREATED_BY,
431 CREATION_DATE,
432 LANGUAGE,
433 SOURCE_LANG
434 ) select
435 B.MONETARY_UNIT_ID,
436 B.MONETARY_UNIT_NAME,
437 B.LAST_UPDATE_DATE,
438 B.LAST_UPDATED_BY,
439 B.LAST_UPDATE_LOGIN,
440 B.CREATED_BY,
441 B.CREATION_DATE,
442 L.LANGUAGE_CODE,
443 B.SOURCE_LANG
444 from PAY_MONETARY_UNITS_TL B, FND_LANGUAGES L
445 where L.INSTALLED_FLAG in ('I', 'B')
446 and B.LANGUAGE = userenv('LANG')
447 and not exists
448 (select NULL
449 from PAY_MONETARY_UNITS_TL T
450 where T.MONETARY_UNIT_ID = B.MONETARY_UNIT_ID
451 and T.LANGUAGE = L.LANGUAGE_CODE);
452 end ADD_LANGUAGE;
453 --
454 procedure TRANSLATE_ROW
455 (X_RELATIVE_VALUE in NUMBER
456 ,X_MONETARY_UNIT_NAME in VARCHAR2
457 ,X_CURRENCY_CODE in VARCHAR2
458 ,X_LEGISLATION_CODE in VARCHAR2
459 ,X_BUSINESS_GROUP_NAME in VARCHAR2
460 ,X_OWNER in VARCHAR2
461 ) is
462 --
463 l_last_updated_by number;
464 l_last_update_login number;
465 l_last_update_date date;
466 --
467 begin
468 --
469 if X_OWNER = 'SEED' then
470 hr_general2.init_fndload
471 (p_resp_appl_id => 801
472 ,p_user_id => 1
473 );
474 else
475 hr_general2.init_fndload
476 (p_resp_appl_id => 801
477 ,p_user_id => -1
478 );
479 end if;
480 --
481 l_last_updated_by := fnd_global.user_id;
482 l_last_update_login := fnd_global.login_id;
483 l_last_update_date := sysdate;
484 --
485 update PAY_MONETARY_UNITS_TL pmut
486 set pmut.MONETARY_UNIT_NAME = nvl(X_MONETARY_UNIT_NAME,MONETARY_UNIT_NAME)
487 ,pmut.SOURCE_LANG = USERENV('LANG')
488 ,pmut.LAST_UPDATE_DATE = l_last_update_date
489 ,pmut.LAST_UPDATED_BY = l_last_updated_by
490 ,pmut.LAST_UPDATE_LOGIN = l_last_update_login
491 where USERENV('LANG') in (pmut.LANGUAGE,pmut.SOURCE_LANG)
492 and exists
493 ( select null
494 from pay_monetary_units pmu
495 where pmu.relative_value = x_relative_value
496 and pmu.currency_code = x_currency_code
497 and pmu.monetary_unit_id = pmut.monetary_unit_id
498 and (x_legislation_code is null
499 or pmu.legislation_code = x_legislation_code)
500 and (x_business_group_name is null
501 or pmu.business_group_id =
502 hr_api.return_business_group_id(x_business_group_name))
503 );
504 --
505 end TRANSLATE_ROW;
506 --
507 procedure LOAD_ROW (
508 X_CURRENCY_CODE in VARCHAR2,
509 X_BUSINESS_GROUP_NAME in VARCHAR2,
510 X_LEGISLATION_CODE in VARCHAR2,
511 X_RELATIVE_VALUE in NUMBER,
512 X_COMMENTS in LONG,
513 X_MONETARY_UNIT_NAME in VARCHAR2,
514 X_OWNER in VARCHAR2
515 ) is
516 --
517 l_rowid rowid;
518 l_monetary_unit_id number;
519 l_business_group_id number;
520 --
521 l_sysdate date := sysdate;
522 l_created_by number;
523 l_creation_date date;
524 l_last_updated_by number;
525 l_last_update_login number;
526 l_last_update_date date;
527 --
528 cursor c_get_mon_unit(p_bg_id in number) is
529 select pmu.monetary_unit_id, pmu.rowid
530 from pay_monetary_units pmu
531 where pmu.relative_value = x_relative_value
532 and pmu.currency_code = x_currency_code
533 and (x_legislation_code is null
534 or pmu.legislation_code = x_legislation_code)
535 and (p_bg_id is null
536 or pmu.business_group_id = p_bg_id);
537 --
538 begin
539 -- Translate developer keys to internal parameters
540 if X_OWNER = 'SEED' then
541 hr_general2.init_fndload
542 (p_resp_appl_id => 801
543 ,p_user_id => 1
544 );
545 else
546 hr_general2.init_fndload
547 (p_resp_appl_id => 801
548 ,p_user_id => -1
549 );
550 end if;
551 -- Set the WHO Columns
552 l_created_by := fnd_global.user_id;
553 l_creation_date := l_sysdate;
554 l_last_update_date := l_sysdate;
555 l_last_updated_by := fnd_global.user_id;
556 l_last_update_login := fnd_global.login_id;
557 --
558 if x_business_group_name is not null then
559 l_business_group_id := hr_api.return_business_group_id(x_business_group_name);
560 end if;
561 --
562 open c_get_mon_unit(l_business_group_id);
563 fetch c_get_mon_unit into l_monetary_unit_id, l_rowid;
564 close c_get_mon_unit;
565 --
566 -- Update or insert row as appropriate
567 begin
568 UPDATE_ROW
569 ( X_ROWID => L_ROWID
570 ,X_MONETARY_UNIT_ID => L_MONETARY_UNIT_ID
571 ,X_CURRENCY_CODE => X_CURRENCY_CODE
572 ,X_BUSINESS_GROUP_ID => L_BUSINESS_GROUP_ID
573 ,X_LEGISLATION_CODE => X_LEGISLATION_CODE
574 ,X_RELATIVE_VALUE => X_RELATIVE_VALUE
575 ,X_COMMENTS => X_COMMENTS
576 ,X_MONETARY_UNIT_NAME => X_MONETARY_UNIT_NAME
577 ,X_LAST_UPDATE_DATE => L_LAST_UPDATE_DATE
578 ,X_LAST_UPDATED_BY => L_LAST_UPDATED_BY
579 ,X_LAST_UPDATE_LOGIN => L_LAST_UPDATE_LOGIN
580 );
581 exception
582 when no_data_found then
583 INSERT_ROW
584 ( X_ROWID => L_ROWID
585 ,X_MONETARY_UNIT_ID => L_MONETARY_UNIT_ID
586 ,X_CURRENCY_CODE => X_CURRENCY_CODE
587 ,X_BUSINESS_GROUP_ID => L_BUSINESS_GROUP_ID
588 ,X_LEGISLATION_CODE => X_LEGISLATION_CODE
589 ,X_RELATIVE_VALUE => X_RELATIVE_VALUE
590 ,X_COMMENTS => X_COMMENTS
591 ,X_MONETARY_UNIT_NAME => X_MONETARY_UNIT_NAME
592 ,X_CREATION_DATE => L_CREATION_DATE
593 ,X_CREATED_BY => L_CREATED_BY
594 ,X_LAST_UPDATE_DATE => L_LAST_UPDATE_DATE
595 ,X_LAST_UPDATED_BY => L_LAST_UPDATED_BY
596 ,X_LAST_UPDATE_LOGIN => L_LAST_UPDATE_LOGIN
597 );
598 end;
599 end LOAD_ROW;
600 --
601 procedure SET_TRANSLATION_GLOBALS
602 (P_BUSINESS_GROUP_ID in NUMBER
603 ,P_LEGISLATION_CODE in VARCHAR2
604 ,P_CURRENCY_CODE in VARCHAR2
605 ) is
606 --
607 begin
608 --
609 g_business_group_id := p_business_group_id;
610 g_legislation_code := p_legislation_code;
611 g_currency_code := p_currency_code;
612 --
613 end SET_TRANSLATION_GLOBALS;
614 --
615 -- This procedure fails if a monetary unit name translation is already present
616 -- in the table for a given language. Otherwise, no action is performed.
617 -- It is used to ensure uniqueness of translated monetary unit names.
618 --
619 procedure VALIDATE_TRANSLATION
620 (P_MONETARY_UNIT_ID in NUMBER
621 ,P_LANGUAGE in VARCHAR2
622 ,P_MONETARY_UNIT_NAME in VARCHAR2
623 ,P_BUSINESS_GROUP_ID in NUMBER default null
624 ,P_LEGISLATION_CODE in VARCHAR2 default null
625 ) is
626 --
627 -- This cursor implements the validation we require,
628 -- and expects that the various package globals are set before
629 -- the call to this procedure is made. This is done from the
630 -- user-named trigger 'TRANSLATIONS' in the form
631 --
632 cursor c_translation(p_language in varchar2
633 ,p_monetary_unit_name in varchar2
634 ,p_monetary_unit_id in number
635 ,p_business_group_id in number
636 ,p_legislation_code in varchar2) is
637 select 1
638 from pay_monetary_units pmu,
639 pay_monetary_units_tl pmut
640 where upper(pmut.monetary_unit_name) = upper(p_monetary_unit_name)
641 and pmu.currency_code = g_currency_code
642 and pmut.language = p_language
643 and pmu.monetary_unit_id = pmut.monetary_unit_id
644 and (pmu.monetary_unit_id <> p_monetary_unit_id
645 or p_monetary_unit_id is null)
646 and (pmu.business_group_id = p_business_group_id
647 or p_business_group_id is null)
648 and (pmu.legislation_code = p_legislation_code
649 or p_legislation_code is null);
650 --
651 l_proc_name VARCHAR2(80) := 'PAY_MONETARY_UNITS_PKG.VALIDATE_TRANSLATION';
652 l_bus_grp_id NUMBER := nvl(p_business_group_id, g_business_group_id);
653 l_leg_code VARCHAR2(150) := nvl(p_legislation_code, g_legislation_code);
654 l_exists number(1);
655 --
656 begin
657 hr_utility.set_location(l_proc_name, 5);
658 --
659 open c_translation(p_language
660 ,p_monetary_unit_name
661 ,p_monetary_unit_id
662 ,l_bus_grp_id
663 ,l_leg_code);
664 fetch c_translation into l_exists;
665 --
666 if c_translation%found then
667 close c_translation;
668 fnd_message.set_name('PAY','HR_TRANSLATION_EXISTS');
669 fnd_message.raise_error;
670 else
671 close c_translation;
672 end if;
673 --
674 hr_utility.set_location(l_proc_name, 10);
675 end VALIDATE_TRANSLATION;
676 --
677 end PAY_MONETARY_UNITS_PKG;