DBA Data[Home] [Help]

PACKAGE BODY: APPS.QPR_PR_SEGMENTS_PKG

Source


1 package body QPR_PR_SEGMENTS_PKG as
2 /* $Header: QPRUPRSB.pls 120.0 2007/12/24 20:05:17 vinnaray noship $ */
3 procedure INSERT_ROW (
4   X_ROWID in out nocopy VARCHAR2,
5   X_PR_SEGMENT_ID in NUMBER,
6   X_INSTANCE_ID in NUMBER,
7   X_DEFAULT_POLICY_ID in NUMBER,
8   X_POLICY_IMPORTANCE_CODE in VARCHAR2,
9   X_POLICY_PRECEDENCE in NUMBER,
10   X_PROGRAM_LOGIN_ID in NUMBER,
11   X_REQUEST_ID in NUMBER,
12   X_NAME in VARCHAR2,
13   X_DESCRIPTION in VARCHAR2,
14   X_CREATION_DATE in DATE,
15   X_CREATED_BY in NUMBER,
16   X_LAST_UPDATE_DATE in DATE,
17   X_LAST_UPDATED_BY in NUMBER,
18   X_LAST_UPDATE_LOGIN in NUMBER
19 ) is
20   cursor C is select ROWID from QPR_PR_SEGMENTS_B
21     where PR_SEGMENT_ID = X_PR_SEGMENT_ID
22     ;
23 begin
24   insert into QPR_PR_SEGMENTS_B (
25     PR_SEGMENT_ID,
26     INSTANCE_ID,
27     DEFAULT_POLICY_ID,
28     POLICY_IMPORTANCE_CODE,
29     POLICY_PRECEDENCE,
30     PROGRAM_LOGIN_ID,
31     REQUEST_ID,
32     CREATION_DATE,
33     CREATED_BY,
34     LAST_UPDATE_DATE,
35     LAST_UPDATED_BY,
36     LAST_UPDATE_LOGIN
37   ) values (
38     X_PR_SEGMENT_ID,
39     X_INSTANCE_ID,
40     X_DEFAULT_POLICY_ID,
41     X_POLICY_IMPORTANCE_CODE,
42     X_POLICY_PRECEDENCE,
43     X_PROGRAM_LOGIN_ID,
44     X_REQUEST_ID,
45     X_CREATION_DATE,
46     X_CREATED_BY,
47     X_LAST_UPDATE_DATE,
48     X_LAST_UPDATED_BY,
49     X_LAST_UPDATE_LOGIN
50   );
51 
52   insert into QPR_PR_SEGMENTS_TL (
53     PR_SEGMENT_ID,
54     NAME,
55     DESCRIPTION,
56     CREATION_DATE,
57     CREATED_BY,
58     LAST_UPDATE_DATE,
59     LAST_UPDATED_BY,
60     LAST_UPDATE_LOGIN,
61     --PROGRAM_ID,
62     PROGRAM_LOGIN_ID,
63     --PROGRAM_APPLICATION_ID,
64     REQUEST_ID,
65     LANGUAGE,
66     SOURCE_LANG
67   ) select
68     X_PR_SEGMENT_ID,
69     X_NAME,
70     X_DESCRIPTION,
71     X_CREATION_DATE,
72     X_CREATED_BY,
73     X_LAST_UPDATE_DATE,
74     X_LAST_UPDATED_BY,
75     X_LAST_UPDATE_LOGIN,
76     --X_PROGRAM_ID,
77     X_PROGRAM_LOGIN_ID,
78     --X_PROGRAM_APPLICATION_ID,
79     X_REQUEST_ID,
80     L.LANGUAGE_CODE,
81     userenv('LANG')
82   from FND_LANGUAGES L
83   where L.INSTALLED_FLAG in ('I', 'B')
84   and not exists
85     (select NULL
86     from QPR_PR_SEGMENTS_TL T
87     where T.PR_SEGMENT_ID = X_PR_SEGMENT_ID
88     and T.LANGUAGE = L.LANGUAGE_CODE);
89 
90   open c;
91   fetch c into X_ROWID;
92   if (c%notfound) then
93     close c;
94     raise no_data_found;
95   end if;
96   close c;
97 
98 end INSERT_ROW;
99 
100 procedure LOCK_ROW (
101   X_PR_SEGMENT_ID in NUMBER,
102   X_INSTANCE_ID in NUMBER,
103   X_DEFAULT_POLICY_ID in NUMBER,
104   X_POLICY_IMPORTANCE_CODE in VARCHAR2,
105   X_POLICY_PRECEDENCE in NUMBER,
106   X_PROGRAM_LOGIN_ID in NUMBER,
107   X_REQUEST_ID in NUMBER,
108   X_NAME in VARCHAR2,
109   X_DESCRIPTION in VARCHAR2
110 ) is
111   cursor c is select
112       INSTANCE_ID,
113       DEFAULT_POLICY_ID,
114       POLICY_IMPORTANCE_CODE,
115       POLICY_PRECEDENCE,
116       PROGRAM_LOGIN_ID,
117       REQUEST_ID
118     from QPR_PR_SEGMENTS_B
119     where PR_SEGMENT_ID = X_PR_SEGMENT_ID
120     for update of PR_SEGMENT_ID nowait;
121   recinfo c%rowtype;
122 
123   cursor c1 is select
124       NAME,
125       DESCRIPTION,
126       decode(LANGUAGE, userenv('LANG'), 'Y', 'N') BASELANG
127     from QPR_PR_SEGMENTS_TL
128     where PR_SEGMENT_ID = X_PR_SEGMENT_ID
129     and userenv('LANG') in (LANGUAGE, SOURCE_LANG)
130     for update of PR_SEGMENT_ID nowait;
131 begin
132   open c;
133   fetch c into recinfo;
134   if (c%notfound) then
135     close c;
136     fnd_message.set_name('FND', 'FORM_RECORD_DELETED');
137     app_exception.raise_exception;
138   end if;
139   close c;
140   if (    (recinfo.INSTANCE_ID = X_INSTANCE_ID)
141       AND ((recinfo.DEFAULT_POLICY_ID = X_DEFAULT_POLICY_ID)
142            OR ((recinfo.DEFAULT_POLICY_ID is null) AND (X_DEFAULT_POLICY_ID is null)))
143       AND ((recinfo.POLICY_IMPORTANCE_CODE = X_POLICY_IMPORTANCE_CODE)
144            OR ((recinfo.POLICY_IMPORTANCE_CODE is null) AND (X_POLICY_IMPORTANCE_CODE is null)))
145       AND ((recinfo.POLICY_PRECEDENCE = X_POLICY_PRECEDENCE)
146            OR ((recinfo.POLICY_PRECEDENCE is null) AND (X_POLICY_PRECEDENCE is null)))
147       AND ((recinfo.PROGRAM_LOGIN_ID = X_PROGRAM_LOGIN_ID)
148            OR ((recinfo.PROGRAM_LOGIN_ID is null) AND (X_PROGRAM_LOGIN_ID is null)))
149       AND ((recinfo.REQUEST_ID = X_REQUEST_ID)
150            OR ((recinfo.REQUEST_ID is null) AND (X_REQUEST_ID is null)))
151   ) then
152     null;
153   else
154     fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
155     app_exception.raise_exception;
156   end if;
157 
158   for tlinfo in c1 loop
159     if (tlinfo.BASELANG = 'Y') then
160       if (    (tlinfo.NAME = X_NAME)
161           AND ((tlinfo.DESCRIPTION = X_DESCRIPTION)
162                OR ((tlinfo.DESCRIPTION is null) AND (X_DESCRIPTION is null)))
163       ) then
164         null;
165       else
166         fnd_message.set_name('FND', 'FORM_RECORD_CHANGED');
167         app_exception.raise_exception;
168       end if;
169     end if;
170   end loop;
171   return;
172 end LOCK_ROW;
173 
174 procedure UPDATE_ROW (
175   X_PR_SEGMENT_ID in NUMBER,
176   X_INSTANCE_ID in NUMBER,
177   X_DEFAULT_POLICY_ID in NUMBER,
178   X_POLICY_IMPORTANCE_CODE in VARCHAR2,
179   X_POLICY_PRECEDENCE in NUMBER,
180   X_PROGRAM_LOGIN_ID in NUMBER,
181   X_REQUEST_ID in NUMBER,
182   X_NAME in VARCHAR2,
183   X_DESCRIPTION in VARCHAR2,
184   X_LAST_UPDATE_DATE in DATE,
185   X_LAST_UPDATED_BY in NUMBER,
186   X_LAST_UPDATE_LOGIN in NUMBER
187 ) is
188 begin
189   update QPR_PR_SEGMENTS_B set
190     INSTANCE_ID = X_INSTANCE_ID,
191     DEFAULT_POLICY_ID = X_DEFAULT_POLICY_ID,
192     POLICY_IMPORTANCE_CODE = X_POLICY_IMPORTANCE_CODE,
193     POLICY_PRECEDENCE = X_POLICY_PRECEDENCE,
194     PROGRAM_LOGIN_ID = X_PROGRAM_LOGIN_ID,
195     REQUEST_ID = X_REQUEST_ID,
196     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
197     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
198     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN
199   where PR_SEGMENT_ID = X_PR_SEGMENT_ID;
200 
201   if (sql%notfound) then
202     raise no_data_found;
203   end if;
204 
205   update QPR_PR_SEGMENTS_TL set
206     NAME = X_NAME,
207     DESCRIPTION = X_DESCRIPTION,
208     LAST_UPDATE_DATE = X_LAST_UPDATE_DATE,
209     LAST_UPDATED_BY = X_LAST_UPDATED_BY,
210     LAST_UPDATE_LOGIN = X_LAST_UPDATE_LOGIN,
211     SOURCE_LANG = userenv('LANG')
212   where PR_SEGMENT_ID = X_PR_SEGMENT_ID
213   and userenv('LANG') in (LANGUAGE, SOURCE_LANG);
214 
215   if (sql%notfound) then
216     raise no_data_found;
217   end if;
218 end UPDATE_ROW;
219 
220 procedure DELETE_ROW (
221   X_PR_SEGMENT_ID in NUMBER
222 ) is
223 begin
224   delete from QPR_PR_SEGMENTS_TL
225   where PR_SEGMENT_ID = X_PR_SEGMENT_ID;
226 
227   if (sql%notfound) then
228     raise no_data_found;
229   end if;
230 
231   delete from QPR_PR_SEGMENTS_B
232   where PR_SEGMENT_ID = X_PR_SEGMENT_ID;
233 
234   if (sql%notfound) then
235     raise no_data_found;
236   end if;
237 end DELETE_ROW;
238 
239 procedure ADD_LANGUAGE
240 is
241 begin
242   delete from QPR_PR_SEGMENTS_TL T
243   where not exists
244     (select NULL
245     from QPR_PR_SEGMENTS_B B
246     where B.PR_SEGMENT_ID = T.PR_SEGMENT_ID
247     );
248 
249   update QPR_PR_SEGMENTS_TL T set (
250       NAME,
251       DESCRIPTION
252     ) = (select
253       B.NAME,
254       B.DESCRIPTION
255     from QPR_PR_SEGMENTS_TL B
256     where B.PR_SEGMENT_ID = T.PR_SEGMENT_ID
257     and B.LANGUAGE = T.SOURCE_LANG)
258   where (
259       T.PR_SEGMENT_ID,
260       T.LANGUAGE
261   ) in (select
262       SUBT.PR_SEGMENT_ID,
263       SUBT.LANGUAGE
264     from QPR_PR_SEGMENTS_TL SUBB, QPR_PR_SEGMENTS_TL SUBT
265     where SUBB.PR_SEGMENT_ID = SUBT.PR_SEGMENT_ID
266     and SUBB.LANGUAGE = SUBT.SOURCE_LANG
267     and (SUBB.NAME <> SUBT.NAME
268       or SUBB.DESCRIPTION <> SUBT.DESCRIPTION
269       or (SUBB.DESCRIPTION is null and SUBT.DESCRIPTION is not null)
270       or (SUBB.DESCRIPTION is not null and SUBT.DESCRIPTION is null)
271   ));
272 
273   insert into QPR_PR_SEGMENTS_TL (
274     PR_SEGMENT_ID,
275     NAME,
276     DESCRIPTION,
277     CREATION_DATE,
278     CREATED_BY,
279     LAST_UPDATE_DATE,
280     LAST_UPDATED_BY,
281     LAST_UPDATE_LOGIN,
282     PROGRAM_ID,
283     PROGRAM_LOGIN_ID,
284     PROGRAM_APPLICATION_ID,
285     REQUEST_ID,
286     LANGUAGE,
287     SOURCE_LANG
288   ) select /*+ ORDERED */
289     B.PR_SEGMENT_ID,
290     B.NAME,
291     B.DESCRIPTION,
292     B.CREATION_DATE,
293     B.CREATED_BY,
294     B.LAST_UPDATE_DATE,
295     B.LAST_UPDATED_BY,
296     B.LAST_UPDATE_LOGIN,
297     B.PROGRAM_ID,
298     B.PROGRAM_LOGIN_ID,
299     B.PROGRAM_APPLICATION_ID,
300     B.REQUEST_ID,
301     L.LANGUAGE_CODE,
302     B.SOURCE_LANG
303   from QPR_PR_SEGMENTS_TL B, FND_LANGUAGES L
304   where L.INSTALLED_FLAG in ('I', 'B')
305   and B.LANGUAGE = userenv('LANG')
306   and not exists
307     (select NULL
308     from QPR_PR_SEGMENTS_TL T
309     where T.PR_SEGMENT_ID = B.PR_SEGMENT_ID
310     and T.LANGUAGE = L.LANGUAGE_CODE);
311 end ADD_LANGUAGE;
312 
313 end QPR_PR_SEGMENTS_PKG;