DBA Data[Home] [Help]

PACKAGE BODY: APPS.SO_PRICING_RULES_PKG

Source


1 package body SO_PRICING_RULES_PKG as
2 /* $Header: OEXPCRLB.pls 115.2 99/07/16 08:14:09 porting shi $ */
3 procedure INSERT_ROW (
4   X_ROWID in out VARCHAR2,
5   X_PRICING_RULE_ID in NUMBER,
6   X_FORMULA in VARCHAR2,
7   X_START_DATE_ACTIVE in DATE,
8   X_END_DATE_ACTIVE 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_ATTRIBUTE10 in VARCHAR2,
20   X_ATTRIBUTE11 in VARCHAR2,
21   X_ATTRIBUTE12 in VARCHAR2,
22   X_ATTRIBUTE13 in VARCHAR2,
23   X_ATTRIBUTE14 in VARCHAR2,
24   X_ATTRIBUTE15 in VARCHAR2,
25   X_NAME in VARCHAR2,
26   X_DESCRIPTION in VARCHAR2,
27   X_CREATION_DATE in DATE,
28   X_CREATED_BY in NUMBER,
29   X_LAST_UPDATE_DATE in DATE,
30   X_LAST_UPDATED_BY in NUMBER,
31   X_LAST_UPDATE_LOGIN in NUMBER
32 ) is
33   cursor C is select ROWID from SO_PRICING_RULES_B
34     where PRICING_RULE_ID = X_PRICING_RULE_ID
35     ;
36 begin
37   insert into SO_PRICING_RULES_B (
38     PRICING_RULE_ID,
39     FORMULA,
40     START_DATE_ACTIVE,
41     END_DATE_ACTIVE,
42     CONTEXT,
43     ATTRIBUTE1,
44     ATTRIBUTE2,
45     ATTRIBUTE3,
46     ATTRIBUTE4,
47     ATTRIBUTE5,
48     ATTRIBUTE6,
49     ATTRIBUTE7,
50     ATTRIBUTE8,
51     ATTRIBUTE9,
52     ATTRIBUTE10,
53     ATTRIBUTE11,
54     ATTRIBUTE12,
55     ATTRIBUTE13,
56     ATTRIBUTE14,
57     ATTRIBUTE15,
58     CREATION_DATE,
59     CREATED_BY,
60     LAST_UPDATE_DATE,
61     LAST_UPDATED_BY,
62     LAST_UPDATE_LOGIN
63   ) values (
64     X_PRICING_RULE_ID,
65     X_FORMULA,
66     X_START_DATE_ACTIVE,
67     X_END_DATE_ACTIVE,
68     X_CONTEXT,
69     X_ATTRIBUTE1,
70     X_ATTRIBUTE2,
71     X_ATTRIBUTE3,
72     X_ATTRIBUTE4,
73     X_ATTRIBUTE5,
74     X_ATTRIBUTE6,
75     X_ATTRIBUTE7,
76     X_ATTRIBUTE8,
77     X_ATTRIBUTE9,
78     X_ATTRIBUTE10,
79     X_ATTRIBUTE11,
80     X_ATTRIBUTE12,
81     X_ATTRIBUTE13,
82     X_ATTRIBUTE14,
83     X_ATTRIBUTE15,
84     X_CREATION_DATE,
85     X_CREATED_BY,
86     X_LAST_UPDATE_DATE,
87     X_LAST_UPDATED_BY,
88     X_LAST_UPDATE_LOGIN
89   );
90 
91   insert into SO_PRICING_RULES_TL (
92     PRICING_RULE_ID,
93     DESCRIPTION,
94     NAME,
95     LAST_UPDATE_DATE,
96     LAST_UPDATED_BY,
97     CREATION_DATE,
98     CREATED_BY,
99     LAST_UPDATE_LOGIN,
100     LANGUAGE,
101     SOURCE_LANG
102   ) select
103     X_PRICING_RULE_ID,
104     X_DESCRIPTION,
105     X_NAME,
106     X_LAST_UPDATE_DATE,
107     X_LAST_UPDATED_BY,
108     X_CREATION_DATE,
109     X_CREATED_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 SO_PRICING_RULES_TL T
118     where T.PRICING_RULE_ID = X_PRICING_RULE_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_PRICING_RULE_ID in NUMBER,
133   X_FORMULA in VARCHAR2,
134   X_START_DATE_ACTIVE in DATE,
135   X_END_DATE_ACTIVE 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_ATTRIBUTE10 in VARCHAR2,
147   X_ATTRIBUTE11 in VARCHAR2,
148   X_ATTRIBUTE12 in VARCHAR2,
149   X_ATTRIBUTE13 in VARCHAR2,
150   X_ATTRIBUTE14 in VARCHAR2,
151   X_ATTRIBUTE15 in VARCHAR2,
152   X_NAME in VARCHAR2,
153   X_DESCRIPTION in VARCHAR2
154 ) is
155   cursor c is select
156       FORMULA,
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       ATTRIBUTE10,
170       ATTRIBUTE11,
171       ATTRIBUTE12,
172       ATTRIBUTE13,
173       ATTRIBUTE14,
174       ATTRIBUTE15
175     from SO_PRICING_RULES_B
176     where PRICING_RULE_ID = X_PRICING_RULE_ID
177     for update of PRICING_RULE_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 SO_PRICING_RULES_TL
185     where PRICING_RULE_ID = X_PRICING_RULE_ID
186     and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
187     for update of PRICING_RULE_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.FORMULA = X_FORMULA)
198       AND ((recinfo.START_DATE_ACTIVE = X_START_DATE_ACTIVE)
199            OR ((recinfo.START_DATE_ACTIVE is null) AND (X_START_DATE_ACTIVE is null)))
200       AND ((recinfo.END_DATE_ACTIVE = X_END_DATE_ACTIVE)
201            OR ((recinfo.END_DATE_ACTIVE is null) AND (X_END_DATE_ACTIVE is null)))
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.ATTRIBUTE10 = X_ATTRIBUTE10)
223            OR ((recinfo.ATTRIBUTE10 is null) AND (X_ATTRIBUTE10 is null)))
224       AND ((recinfo.ATTRIBUTE11 = X_ATTRIBUTE11)
225            OR ((recinfo.ATTRIBUTE11 is null) AND (X_ATTRIBUTE11 is null)))
226       AND ((recinfo.ATTRIBUTE12 = X_ATTRIBUTE12)
227            OR ((recinfo.ATTRIBUTE12 is null) AND (X_ATTRIBUTE12 is null)))
228       AND ((recinfo.ATTRIBUTE13 = X_ATTRIBUTE13)
229            OR ((recinfo.ATTRIBUTE13 is null) AND (X_ATTRIBUTE13 is null)))
230       AND ((recinfo.ATTRIBUTE14 = X_ATTRIBUTE14)
231            OR ((recinfo.ATTRIBUTE14 is null) AND (X_ATTRIBUTE14 is null)))
232       AND ((recinfo.ATTRIBUTE15 = X_ATTRIBUTE15)
233            OR ((recinfo.ATTRIBUTE15 is null) AND (X_ATTRIBUTE15 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_PRICING_RULE_ID in NUMBER,
259   X_FORMULA in VARCHAR2,
260   X_START_DATE_ACTIVE in DATE,
261   X_END_DATE_ACTIVE 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_ATTRIBUTE10 in VARCHAR2,
273   X_ATTRIBUTE11 in VARCHAR2,
274   X_ATTRIBUTE12 in VARCHAR2,
275   X_ATTRIBUTE13 in VARCHAR2,
276   X_ATTRIBUTE14 in VARCHAR2,
277   X_ATTRIBUTE15 in VARCHAR2,
278   X_NAME in VARCHAR2,
279   X_DESCRIPTION in VARCHAR2,
280   X_LAST_UPDATE_DATE in DATE,
281   X_LAST_UPDATED_BY in NUMBER,
282   X_LAST_UPDATE_LOGIN in NUMBER
283 ) is
284 begin
285   update SO_PRICING_RULES_B set
286     FORMULA = X_FORMULA,
287     START_DATE_ACTIVE = X_START_DATE_ACTIVE,
288     END_DATE_ACTIVE = X_END_DATE_ACTIVE,
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     ATTRIBUTE10 = X_ATTRIBUTE10,
300     ATTRIBUTE11 = X_ATTRIBUTE11,
301     ATTRIBUTE12 = X_ATTRIBUTE12,
302     ATTRIBUTE13 = X_ATTRIBUTE13,
303     ATTRIBUTE14 = X_ATTRIBUTE14,
304     ATTRIBUTE15 = X_ATTRIBUTE15,
305     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
306     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
307     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
308   where PRICING_RULE_ID = X_PRICING_RULE_ID;
309 
310   if (sql%notfound) then
311     raise no_data_found;
312   end if;
313 
314   update SO_PRICING_RULES_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 PRICING_RULE_ID = X_PRICING_RULE_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_PRICING_RULE_ID in NUMBER
331 ) is
332 begin
333   delete from SO_PRICING_RULES_TL
334   where PRICING_RULE_ID = X_PRICING_RULE_ID;
335 
336   if (sql%notfound) then
337     raise no_data_found;
338   end if;
339 
340   delete from SO_PRICING_RULES_B
341   where PRICING_RULE_ID = X_PRICING_RULE_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 SO_PRICING_RULES_TL T
352   where not exists
353     (select NULL
354     from SO_PRICING_RULES_B B
355     where B.PRICING_RULE_ID = T.PRICING_RULE_ID
356     );
357 
358   update SO_PRICING_RULES_TL T set (
359       NAME,
360       DESCRIPTION
361     ) = (select
362       B.NAME,
363       B.DESCRIPTION
364     from SO_PRICING_RULES_TL B
365     where B.PRICING_RULE_ID = T.PRICING_RULE_ID
366     and B.LANGUAGE = T.SOURCE_LANG)
367   where (
368       T.PRICING_RULE_ID,
369       T.LANGUAGE
370   ) in (select
371       SUBT.PRICING_RULE_ID,
372       SUBT.LANGUAGE
373     from SO_PRICING_RULES_TL SUBB, SO_PRICING_RULES_TL SUBT
374     where SUBB.PRICING_RULE_ID = SUBT.PRICING_RULE_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 SO_PRICING_RULES_TL (
383     PRICING_RULE_ID,
384     DESCRIPTION,
385     NAME,
386     LAST_UPDATE_DATE,
387     LAST_UPDATED_BY,
388     CREATION_DATE,
389     CREATED_BY,
390     LAST_UPDATE_LOGIN,
391     LANGUAGE,
392     SOURCE_LANG
393   ) select
394     B.PRICING_RULE_ID,
395     B.DESCRIPTION,
396     B.NAME,
397     B.LAST_UPDATE_DATE,
398     B.LAST_UPDATED_BY,
399     B.CREATION_DATE,
400     B.CREATED_BY,
401     B.LAST_UPDATE_LOGIN,
402     L.LANGUAGE_CODE,
403     B.SOURCE_LANG
404   from SO_PRICING_RULES_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 SO_PRICING_RULES_TL T
410     where T.PRICING_RULE_ID = B.PRICING_RULE_ID
411     and T.LANGUAGE = L.LANGUAGE_CODE);
412 end ADD_LANGUAGE;
413 
414 end SO_PRICING_RULES_PKG;