DBA Data[Home] [Help]

PACKAGE BODY: APPS.SO_PRICE_LISTS_PKG

Source


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