DBA Data[Home] [Help]

PACKAGE BODY: APPS.SO_AGREEMENTS_PKG

Source


1 package body SO_AGREEMENTS_PKG as
2 /* $Header: OEXAGGRB.pls 115.2 99/07/16 08:11:13 porting shi $ */
3 procedure INSERT_ROW (
4   X_ROWID in out VARCHAR2,
5   X_AGREEMENT_ID in NUMBER,
6   X_END_DATE_ACTIVE in DATE,
7   X_CONTEXT in VARCHAR2,
8   X_ATTRIBUTE1 in VARCHAR2,
9   X_ATTRIBUTE2 in VARCHAR2,
10   X_ATTRIBUTE3 in VARCHAR2,
11   X_ATTRIBUTE4 in VARCHAR2,
12   X_ATTRIBUTE5 in VARCHAR2,
13   X_ATTRIBUTE6 in VARCHAR2,
14   X_ATTRIBUTE7 in VARCHAR2,
15   X_ATTRIBUTE8 in VARCHAR2,
16   X_ATTRIBUTE9 in VARCHAR2,
17   X_ATTRIBUTE10 in VARCHAR2,
18   X_ATTRIBUTE11 in VARCHAR2,
19   X_ATTRIBUTE12 in VARCHAR2,
20   X_ATTRIBUTE13 in VARCHAR2,
21   X_ATTRIBUTE14 in VARCHAR2,
22   X_ATTRIBUTE15 in VARCHAR2,
23   X_AGREEMENT_TYPE_CODE in VARCHAR2,
24   X_PRICE_LIST_ID in NUMBER,
25   X_TERM_ID in NUMBER,
26   X_OVERRIDE_IRULE_FLAG in VARCHAR2,
27   X_OVERRIDE_ARULE_FLAG in VARCHAR2,
28   X_SIGNATURE_DATE in DATE,
29   X_AGREEMENT_NUM in VARCHAR2,
30   X_INVOICING_RULE_ID in NUMBER,
31   X_ACCOUNTING_RULE_ID in NUMBER,
32   X_CUSTOMER_ID in NUMBER,
33   X_PURCHASE_ORDER_NUM in VARCHAR2,
34   X_INVOICE_CONTACT_ID in NUMBER,
35   X_AGREEMENT_CONTACT_ID in NUMBER,
36   X_INVOICE_TO_SITE_USE_ID in NUMBER,
37   X_SALESREP_ID in NUMBER,
38   X_START_DATE_ACTIVE in DATE,
39   X_NAME in VARCHAR2,
40   X_CREATION_DATE in DATE,
41   X_CREATED_BY in NUMBER,
42   X_LAST_UPDATE_DATE in DATE,
43   X_LAST_UPDATED_BY in NUMBER,
44   X_LAST_UPDATE_LOGIN in NUMBER
45 ) is
46   cursor C is select ROWID from SO_AGREEMENTS_B
47     where AGREEMENT_ID = X_AGREEMENT_ID
48     ;
49 begin
50   insert into SO_AGREEMENTS_B (
51     END_DATE_ACTIVE,
52     CONTEXT,
53     ATTRIBUTE1,
54     ATTRIBUTE2,
55     ATTRIBUTE3,
56     ATTRIBUTE4,
57     ATTRIBUTE5,
58     ATTRIBUTE6,
59     ATTRIBUTE7,
60     ATTRIBUTE8,
61     ATTRIBUTE9,
62     ATTRIBUTE10,
63     ATTRIBUTE11,
64     ATTRIBUTE12,
65     ATTRIBUTE13,
66     ATTRIBUTE14,
67     ATTRIBUTE15,
68     AGREEMENT_ID,
69     AGREEMENT_TYPE_CODE,
70     PRICE_LIST_ID,
71     TERM_ID,
72     OVERRIDE_IRULE_FLAG,
73     OVERRIDE_ARULE_FLAG,
74     SIGNATURE_DATE,
75     AGREEMENT_NUM,
76     INVOICING_RULE_ID,
77     ACCOUNTING_RULE_ID,
78     CUSTOMER_ID,
79     PURCHASE_ORDER_NUM,
80     INVOICE_CONTACT_ID,
81     AGREEMENT_CONTACT_ID,
82     INVOICE_TO_SITE_USE_ID,
83     SALESREP_ID,
84     START_DATE_ACTIVE,
85     CREATION_DATE,
86     CREATED_BY,
87     LAST_UPDATE_DATE,
88     LAST_UPDATED_BY,
89     LAST_UPDATE_LOGIN
90   ) values (
91     X_END_DATE_ACTIVE,
92     X_CONTEXT,
93     X_ATTRIBUTE1,
94     X_ATTRIBUTE2,
95     X_ATTRIBUTE3,
96     X_ATTRIBUTE4,
97     X_ATTRIBUTE5,
98     X_ATTRIBUTE6,
99     X_ATTRIBUTE7,
100     X_ATTRIBUTE8,
101     X_ATTRIBUTE9,
102     X_ATTRIBUTE10,
103     X_ATTRIBUTE11,
104     X_ATTRIBUTE12,
105     X_ATTRIBUTE13,
106     X_ATTRIBUTE14,
107     X_ATTRIBUTE15,
108     X_AGREEMENT_ID,
109     X_AGREEMENT_TYPE_CODE,
110     X_PRICE_LIST_ID,
111     X_TERM_ID,
112     X_OVERRIDE_IRULE_FLAG,
113     X_OVERRIDE_ARULE_FLAG,
114     X_SIGNATURE_DATE,
115     X_AGREEMENT_NUM,
116     X_INVOICING_RULE_ID,
117     X_ACCOUNTING_RULE_ID,
118     X_CUSTOMER_ID,
119     X_PURCHASE_ORDER_NUM,
120     X_INVOICE_CONTACT_ID,
121     X_AGREEMENT_CONTACT_ID,
122     X_INVOICE_TO_SITE_USE_ID,
123     X_SALESREP_ID,
124     X_START_DATE_ACTIVE,
125     X_CREATION_DATE,
126     X_CREATED_BY,
127     X_LAST_UPDATE_DATE,
128     X_LAST_UPDATED_BY,
129     X_LAST_UPDATE_LOGIN
130   );
131 
132   insert into SO_AGREEMENTS_TL (
133     AGREEMENT_ID,
134     NAME,
135     LAST_UPDATE_DATE,
136     LAST_UPDATED_BY,
137     CREATION_DATE,
138     CREATED_BY,
139     LAST_UPDATE_LOGIN,
140     LANGUAGE,
141     SOURCE_LANG
142   ) select
143     X_AGREEMENT_ID,
144     X_NAME,
145     X_LAST_UPDATE_DATE,
146     X_LAST_UPDATED_BY,
147     X_CREATION_DATE,
148     X_CREATED_BY,
149     X_LAST_UPDATE_LOGIN,
150     L.LANGUAGE_CODE,
151     userenv('LANG')
152   from FND_LANGUAGES L
153   where L.INSTALLED_FLAG in ('I', 'B')
154   and not exists
155     (select NULL
156     from SO_AGREEMENTS_TL T
157     where T.AGREEMENT_ID = X_AGREEMENT_ID
158     and T.LANGUAGE = L.LANGUAGE_CODE);
159 
160   open c;
161   fetch c into X_ROWID;
162   if (c%notfound) then
163     close c;
164     raise no_data_found;
165   end if;
166   close c;
167 
168 end INSERT_ROW;
169 
170 procedure LOCK_ROW (
171   X_AGREEMENT_ID in NUMBER,
172   X_END_DATE_ACTIVE in DATE,
173   X_CONTEXT in VARCHAR2,
174   X_ATTRIBUTE1 in VARCHAR2,
175   X_ATTRIBUTE2 in VARCHAR2,
176   X_ATTRIBUTE3 in VARCHAR2,
177   X_ATTRIBUTE4 in VARCHAR2,
178   X_ATTRIBUTE5 in VARCHAR2,
179   X_ATTRIBUTE6 in VARCHAR2,
180   X_ATTRIBUTE7 in VARCHAR2,
181   X_ATTRIBUTE8 in VARCHAR2,
182   X_ATTRIBUTE9 in VARCHAR2,
183   X_ATTRIBUTE10 in VARCHAR2,
184   X_ATTRIBUTE11 in VARCHAR2,
185   X_ATTRIBUTE12 in VARCHAR2,
186   X_ATTRIBUTE13 in VARCHAR2,
187   X_ATTRIBUTE14 in VARCHAR2,
188   X_ATTRIBUTE15 in VARCHAR2,
189   X_AGREEMENT_TYPE_CODE in VARCHAR2,
190   X_PRICE_LIST_ID in NUMBER,
191   X_TERM_ID in NUMBER,
192   X_OVERRIDE_IRULE_FLAG in VARCHAR2,
193   X_OVERRIDE_ARULE_FLAG in VARCHAR2,
194   X_SIGNATURE_DATE in DATE,
195   X_AGREEMENT_NUM in VARCHAR2,
196   X_INVOICING_RULE_ID in NUMBER,
197   X_ACCOUNTING_RULE_ID in NUMBER,
198   X_CUSTOMER_ID in NUMBER,
199   X_PURCHASE_ORDER_NUM in VARCHAR2,
200   X_INVOICE_CONTACT_ID in NUMBER,
201   X_AGREEMENT_CONTACT_ID in NUMBER,
202   X_INVOICE_TO_SITE_USE_ID in NUMBER,
203   X_SALESREP_ID in NUMBER,
204   X_START_DATE_ACTIVE in DATE,
205   X_NAME in VARCHAR2
206 ) is
207   cursor c is select
208       END_DATE_ACTIVE,
209       CONTEXT,
210       ATTRIBUTE1,
211       ATTRIBUTE2,
212       ATTRIBUTE3,
213       ATTRIBUTE4,
214       ATTRIBUTE5,
215       ATTRIBUTE6,
216       ATTRIBUTE7,
217       ATTRIBUTE8,
218       ATTRIBUTE9,
219       ATTRIBUTE10,
220       ATTRIBUTE11,
221       ATTRIBUTE12,
222       ATTRIBUTE13,
223       ATTRIBUTE14,
224       ATTRIBUTE15,
225       AGREEMENT_TYPE_CODE,
226       PRICE_LIST_ID,
227       TERM_ID,
228       OVERRIDE_IRULE_FLAG,
229       OVERRIDE_ARULE_FLAG,
230       SIGNATURE_DATE,
231       AGREEMENT_NUM,
232       INVOICING_RULE_ID,
233       ACCOUNTING_RULE_ID,
234       CUSTOMER_ID,
235       PURCHASE_ORDER_NUM,
236       INVOICE_CONTACT_ID,
237       AGREEMENT_CONTACT_ID,
238       INVOICE_TO_SITE_USE_ID,
239       SALESREP_ID,
240       START_DATE_ACTIVE
241     from SO_AGREEMENTS_B
242     where AGREEMENT_ID = X_AGREEMENT_ID
243     for update of AGREEMENT_ID nowait;
244   recinfo c%rowtype;
245 
246   cursor c1 is select
247       NAME,
248       decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
249     from SO_AGREEMENTS_TL
250     where AGREEMENT_ID = X_AGREEMENT_ID
251     and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
252     for update of AGREEMENT_ID nowait;
253 begin
254   open c;
255   fetch c into recinfo;
256   if (c%notfound) then
257     close c;
258     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
259     app_exception.raise_exception;
260   end if;
261   close c;
262   if (    ((recinfo.END_DATE_ACTIVE = X_END_DATE_ACTIVE)
263            OR ((recinfo.END_DATE_ACTIVE is null) AND (X_END_DATE_ACTIVE is null)))
264       AND ((recinfo.CONTEXT = X_CONTEXT)
265            OR ((recinfo.CONTEXT is null) AND (X_CONTEXT is null)))
266       AND ((recinfo.ATTRIBUTE1 = X_ATTRIBUTE1)
267            OR ((recinfo.ATTRIBUTE1 is null) AND (X_ATTRIBUTE1 is null)))
268       AND ((recinfo.ATTRIBUTE2 = X_ATTRIBUTE2)
269            OR ((recinfo.ATTRIBUTE2 is null) AND (X_ATTRIBUTE2 is null)))
270       AND ((recinfo.ATTRIBUTE3 = X_ATTRIBUTE3)
271            OR ((recinfo.ATTRIBUTE3 is null) AND (X_ATTRIBUTE3 is null)))
272       AND ((recinfo.ATTRIBUTE4 = X_ATTRIBUTE4)
273            OR ((recinfo.ATTRIBUTE4 is null) AND (X_ATTRIBUTE4 is null)))
274       AND ((recinfo.ATTRIBUTE5 = X_ATTRIBUTE5)
275            OR ((recinfo.ATTRIBUTE5 is null) AND (X_ATTRIBUTE5 is null)))
276       AND ((recinfo.ATTRIBUTE6 = X_ATTRIBUTE6)
277            OR ((recinfo.ATTRIBUTE6 is null) AND (X_ATTRIBUTE6 is null)))
278       AND ((recinfo.ATTRIBUTE7 = X_ATTRIBUTE7)
279            OR ((recinfo.ATTRIBUTE7 is null) AND (X_ATTRIBUTE7 is null)))
280       AND ((recinfo.ATTRIBUTE8 = X_ATTRIBUTE8)
281            OR ((recinfo.ATTRIBUTE8 is null) AND (X_ATTRIBUTE8 is null)))
282       AND ((recinfo.ATTRIBUTE9 = X_ATTRIBUTE9)
283            OR ((recinfo.ATTRIBUTE9 is null) AND (X_ATTRIBUTE9 is null)))
284       AND ((recinfo.ATTRIBUTE10 = X_ATTRIBUTE10)
285            OR ((recinfo.ATTRIBUTE10 is null) AND (X_ATTRIBUTE10 is null)))
286       AND ((recinfo.ATTRIBUTE11 = X_ATTRIBUTE11)
287            OR ((recinfo.ATTRIBUTE11 is null) AND (X_ATTRIBUTE11 is null)))
288       AND ((recinfo.ATTRIBUTE12 = X_ATTRIBUTE12)
289            OR ((recinfo.ATTRIBUTE12 is null) AND (X_ATTRIBUTE12 is null)))
290       AND ((recinfo.ATTRIBUTE13 = X_ATTRIBUTE13)
291            OR ((recinfo.ATTRIBUTE13 is null) AND (X_ATTRIBUTE13 is null)))
292       AND ((recinfo.ATTRIBUTE14 = X_ATTRIBUTE14)
293            OR ((recinfo.ATTRIBUTE14 is null) AND (X_ATTRIBUTE14 is null)))
294       AND ((recinfo.ATTRIBUTE15 = X_ATTRIBUTE15)
295            OR ((recinfo.ATTRIBUTE15 is null) AND (X_ATTRIBUTE15 is null)))
296       AND (recinfo.AGREEMENT_TYPE_CODE = X_AGREEMENT_TYPE_CODE)
297       AND (recinfo.PRICE_LIST_ID = X_PRICE_LIST_ID)
298       AND (recinfo.TERM_ID = X_TERM_ID)
299       AND (recinfo.OVERRIDE_IRULE_FLAG = X_OVERRIDE_IRULE_FLAG)
300       AND (recinfo.OVERRIDE_ARULE_FLAG = X_OVERRIDE_ARULE_FLAG)
301       AND ((recinfo.SIGNATURE_DATE = X_SIGNATURE_DATE)
302            OR ((recinfo.SIGNATURE_DATE is null) AND (X_SIGNATURE_DATE is null)))
303       AND ((recinfo.AGREEMENT_NUM = X_AGREEMENT_NUM)
304            OR ((recinfo.AGREEMENT_NUM is null) AND (X_AGREEMENT_NUM is null)))
305       AND ((recinfo.INVOICING_RULE_ID = X_INVOICING_RULE_ID)
306            OR ((recinfo.INVOICING_RULE_ID is null) AND (X_INVOICING_RULE_ID is null)))
307       AND ((recinfo.ACCOUNTING_RULE_ID = X_ACCOUNTING_RULE_ID)
308            OR ((recinfo.ACCOUNTING_RULE_ID is null) AND (X_ACCOUNTING_RULE_ID is null)))
309       AND ((recinfo.CUSTOMER_ID = X_CUSTOMER_ID)
310            OR ((recinfo.CUSTOMER_ID is null) AND (X_CUSTOMER_ID is null)))
311       AND ((recinfo.PURCHASE_ORDER_NUM = X_PURCHASE_ORDER_NUM)
312            OR ((recinfo.PURCHASE_ORDER_NUM is null) AND (X_PURCHASE_ORDER_NUM is null)))
313       AND ((recinfo.INVOICE_CONTACT_ID = X_INVOICE_CONTACT_ID)
314            OR ((recinfo.INVOICE_CONTACT_ID is null) AND (X_INVOICE_CONTACT_ID is null)))
315       AND ((recinfo.AGREEMENT_CONTACT_ID = X_AGREEMENT_CONTACT_ID)
316            OR ((recinfo.AGREEMENT_CONTACT_ID is null) AND (X_AGREEMENT_CONTACT_ID is null)))
317       AND ((recinfo.INVOICE_TO_SITE_USE_ID = X_INVOICE_TO_SITE_USE_ID)
318            OR ((recinfo.INVOICE_TO_SITE_USE_ID is null) AND (X_INVOICE_TO_SITE_USE_ID is null)))
319       AND ((recinfo.SALESREP_ID = X_SALESREP_ID)
320            OR ((recinfo.SALESREP_ID is null) AND (X_SALESREP_ID is null)))
321       AND ((recinfo.START_DATE_ACTIVE = X_START_DATE_ACTIVE)
322            OR ((recinfo.START_DATE_ACTIVE is null) AND (X_START_DATE_ACTIVE is null)))
323   ) then
324     null;
325   else
326     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
327     app_exception.raise_exception;
328   end if;
329 
330   for tlinfo in c1 loop
331     if (tlinfo.BASELANG = 'Y') then
332       if (    (tlinfo.NAME = X_NAME)
333       ) then
334         null;
335       else
336         fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
337         app_exception.raise_exception;
338       end if;
339     end if;
340   end loop;
341   return;
342 end LOCK_ROW;
343 
344 procedure UPDATE_ROW (
345   X_AGREEMENT_ID in NUMBER,
346   X_END_DATE_ACTIVE in DATE,
347   X_CONTEXT in VARCHAR2,
348   X_ATTRIBUTE1 in VARCHAR2,
349   X_ATTRIBUTE2 in VARCHAR2,
350   X_ATTRIBUTE3 in VARCHAR2,
351   X_ATTRIBUTE4 in VARCHAR2,
352   X_ATTRIBUTE5 in VARCHAR2,
353   X_ATTRIBUTE6 in VARCHAR2,
354   X_ATTRIBUTE7 in VARCHAR2,
355   X_ATTRIBUTE8 in VARCHAR2,
356   X_ATTRIBUTE9 in VARCHAR2,
357   X_ATTRIBUTE10 in VARCHAR2,
358   X_ATTRIBUTE11 in VARCHAR2,
359   X_ATTRIBUTE12 in VARCHAR2,
360   X_ATTRIBUTE13 in VARCHAR2,
361   X_ATTRIBUTE14 in VARCHAR2,
362   X_ATTRIBUTE15 in VARCHAR2,
363   X_AGREEMENT_TYPE_CODE in VARCHAR2,
364   X_PRICE_LIST_ID in NUMBER,
365   X_TERM_ID in NUMBER,
366   X_OVERRIDE_IRULE_FLAG in VARCHAR2,
367   X_OVERRIDE_ARULE_FLAG in VARCHAR2,
368   X_SIGNATURE_DATE in DATE,
369   X_AGREEMENT_NUM in VARCHAR2,
370   X_INVOICING_RULE_ID in NUMBER,
371   X_ACCOUNTING_RULE_ID in NUMBER,
372   X_CUSTOMER_ID in NUMBER,
373   X_PURCHASE_ORDER_NUM in VARCHAR2,
374   X_INVOICE_CONTACT_ID in NUMBER,
375   X_AGREEMENT_CONTACT_ID in NUMBER,
376   X_INVOICE_TO_SITE_USE_ID in NUMBER,
377   X_SALESREP_ID in NUMBER,
378   X_START_DATE_ACTIVE in DATE,
379   X_NAME in VARCHAR2,
380   X_LAST_UPDATE_DATE in DATE,
381   X_LAST_UPDATED_BY in NUMBER,
382   X_LAST_UPDATE_LOGIN in NUMBER
383 ) is
384 begin
385   update SO_AGREEMENTS_B set
386     END_DATE_ACTIVE = X_END_DATE_ACTIVE,
387     CONTEXT = X_CONTEXT,
388     ATTRIBUTE1 = X_ATTRIBUTE1,
389     ATTRIBUTE2 = X_ATTRIBUTE2,
390     ATTRIBUTE3 = X_ATTRIBUTE3,
391     ATTRIBUTE4 = X_ATTRIBUTE4,
392     ATTRIBUTE5 = X_ATTRIBUTE5,
393     ATTRIBUTE6 = X_ATTRIBUTE6,
394     ATTRIBUTE7 = X_ATTRIBUTE7,
395     ATTRIBUTE8 = X_ATTRIBUTE8,
396     ATTRIBUTE9 = X_ATTRIBUTE9,
397     ATTRIBUTE10 = X_ATTRIBUTE10,
398     ATTRIBUTE11 = X_ATTRIBUTE11,
399     ATTRIBUTE12 = X_ATTRIBUTE12,
400     ATTRIBUTE13 = X_ATTRIBUTE13,
401     ATTRIBUTE14 = X_ATTRIBUTE14,
402     ATTRIBUTE15 = X_ATTRIBUTE15,
403     AGREEMENT_TYPE_CODE = X_AGREEMENT_TYPE_CODE,
404     PRICE_LIST_ID = X_PRICE_LIST_ID,
405     TERM_ID = X_TERM_ID,
406     OVERRIDE_IRULE_FLAG = X_OVERRIDE_IRULE_FLAG,
407     OVERRIDE_ARULE_FLAG = X_OVERRIDE_ARULE_FLAG,
408     SIGNATURE_DATE = X_SIGNATURE_DATE,
409     AGREEMENT_NUM = X_AGREEMENT_NUM,
410     INVOICING_RULE_ID = X_INVOICING_RULE_ID,
411     ACCOUNTING_RULE_ID = X_ACCOUNTING_RULE_ID,
412     CUSTOMER_ID = X_CUSTOMER_ID,
413     PURCHASE_ORDER_NUM = X_PURCHASE_ORDER_NUM,
414     INVOICE_CONTACT_ID = X_INVOICE_CONTACT_ID,
415     AGREEMENT_CONTACT_ID = X_AGREEMENT_CONTACT_ID,
416     INVOICE_TO_SITE_USE_ID = X_INVOICE_TO_SITE_USE_ID,
417     SALESREP_ID = X_SALESREP_ID,
418     START_DATE_ACTIVE = X_START_DATE_ACTIVE,
419     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
420     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
421     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
422   where AGREEMENT_ID = X_AGREEMENT_ID;
423 
424   if (sql%notfound) then
425     raise no_data_found;
426   end if;
427 
428   update SO_AGREEMENTS_TL set
429     NAME = X_NAME,
430     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
431     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
432     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
436 
433     SOURCE_LANG = userenv('LANG')
434   where AGREEMENT_ID = X_AGREEMENT_ID
435   and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
437   if (sql%notfound) then
438     raise no_data_found;
439   end if;
440 end UPDATE_ROW;
441 
442 procedure DELETE_ROW (
443   X_AGREEMENT_ID in NUMBER
444 ) is
445 begin
446   delete from SO_AGREEMENTS_TL
447   where AGREEMENT_ID = X_AGREEMENT_ID;
448 
449   if (sql%notfound) then
450     raise no_data_found;
451   end if;
452 
453   delete from SO_AGREEMENTS_B
454   where AGREEMENT_ID = X_AGREEMENT_ID;
455 
456   if (sql%notfound) then
457     raise no_data_found;
458   end if;
459 end DELETE_ROW;
460 
461 procedure ADD_LANGUAGE
462 is
463 begin
464   delete from SO_AGREEMENTS_TL T
465   where not exists
466     (select NULL
467     from SO_AGREEMENTS_B B
468     where B.AGREEMENT_ID = T.AGREEMENT_ID
469     );
470 
471   update SO_AGREEMENTS_TL T set (
472       NAME
473     ) = (select
474       B.NAME
475     from SO_AGREEMENTS_TL B
476     where B.AGREEMENT_ID = T.AGREEMENT_ID
477     and B.LANGUAGE = T.SOURCE_LANG)
478   where (
479       T.AGREEMENT_ID,
480       T.LANGUAGE
481   ) in (select
482       SUBT.AGREEMENT_ID,
483       SUBT.LANGUAGE
484     from SO_AGREEMENTS_TL SUBB, SO_AGREEMENTS_TL SUBT
485     where SUBB.AGREEMENT_ID = SUBT.AGREEMENT_ID
486     and SUBB.LANGUAGE = SUBT.SOURCE_LANG
487     and (SUBB.NAME <> SUBT.NAME
488   ));
489 
490   insert into SO_AGREEMENTS_TL (
491     AGREEMENT_ID,
492     NAME,
493     LAST_UPDATE_DATE,
494     LAST_UPDATED_BY,
495     CREATION_DATE,
496     CREATED_BY,
497     LAST_UPDATE_LOGIN,
498     LANGUAGE,
499     SOURCE_LANG
500   ) select
501     B.AGREEMENT_ID,
502     B.NAME,
503     B.LAST_UPDATE_DATE,
504     B.LAST_UPDATED_BY,
505     B.CREATION_DATE,
506     B.CREATED_BY,
507     B.LAST_UPDATE_LOGIN,
508     L.LANGUAGE_CODE,
509     B.SOURCE_LANG
510   from SO_AGREEMENTS_TL B, FND_LANGUAGES L
511   where L.INSTALLED_FLAG in ('I', 'B')
512   and B.LANGUAGE = userenv('LANG')
513   and not exists
514     (select NULL
515     from SO_AGREEMENTS_TL T
516     where T.AGREEMENT_ID = B.AGREEMENT_ID
517     and T.LANGUAGE = L.LANGUAGE_CODE);
518 end ADD_LANGUAGE;
519 
520 end SO_AGREEMENTS_PKG;