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