DBA Data[Home] [Help]

PACKAGE BODY: APPS.QP_PRICE_FORMULAS_PKG

Source


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