DBA Data[Home] [Help]

PACKAGE BODY: APPS.QPR_PRICE_PLANS_PKG

Source


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