DBA Data[Home] [Help]

PACKAGE BODY: APPS.GMO_INSTR_DEFN_PKG

Source


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