DBA Data[Home] [Help]

PACKAGE BODY: APPS.WMS_CROSSDOCK_CRITERIA_PKG

Source


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