DBA Data[Home] [Help]

PACKAGE BODY: APPS.DDR_REF_UTIL_PKG

Source


1 PACKAGE BODY ddr_ref_util_pkg AS
2 /* $Header: ddrurefb.pls 120.2 2008/02/19 04:23:25 vbhave noship $ */
3 
4 FUNCTION GET_ERR_MSG (p_err_no VARCHAR2 DEFAULT NULL)
5 RETURN varchar2 as
6  l_err_msg VARCHAR2(40);
7 begin
8   if p_err_no is not null then
9     select err_name into l_err_msg from ddr_l_err where err_cd = p_err_no;
10     return (l_err_msg);
11   else
12     return(null);
13   end if;
14 end GET_ERR_MSG;
15 
16 PROCEDURE TRUNC_INTERFACE (p_table_parameters IN VARCHAR2 DEFAULT NULL)
17 IS
18 
19  n                number;
20  text             varchar2(500);
21  cut_text         varchar2(100);
22  p_loading_mode   varchar2(40);
23 Begin
24  select param_val into p_loading_mode from ddr_l_sys_param where param_cd = 'RUN_TYP_REF';
25  text:=p_table_parameters;
26  If
27     text is not null
28  Then
29     Loop
30     n:=0;
31     n:= Instr(text,',');
32     If
33              n<>0
34       Then
35                    cut_text:= Substr(text,1,n-1);
36               Else
37                    cut_text:= text;
38       End If;
39 
40    If p_loading_mode = 'P' THEN
41     EXECUTE IMMEDIATE 'TRUNCATE TABLE '|| 'DDR.' || CUT_TEXT;
42    END IF;
43     Exit when n=0;
44     text:= Substr(text,n+1);
45    End Loop;
46  End If;
47 End TRUNC_INTERFACE;
48 
49 FUNCTION CHECK_MFG_ITEM_HCHY (p_hchy_cd VARCHAR2, p_hchy_level VARCHAR2)
50 RETURN VARCHAR2
51 as
52 	l_mfg_item_lvl NUMBER;
53         l_return       VARCHAR2(30);
54 
55 	CURSOR cur_cmpny IS
56 	SELECT 1
57 	FROM   DDR_R_MFG_ITEM_CMPNY
58 	WHERE  MFG_CMPNY_CD = p_hchy_cd;
59 
60 	CURSOR cur_div IS
61 	SELECT 1
62 	FROM   DDR_R_MFG_ITEM_DIV
63 	WHERE  MFG_DIV_CD = p_hchy_cd
64 	AND    EFF_TO_DT IS NULL;
65 
66 	CURSOR cur_grp IS
67 	SELECT 1
68 	FROM   DDR_R_MFG_ITEM_GRP
69 	WHERE  MFG_GRP_CD = p_hchy_cd
70 	AND    EFF_TO_DT IS NULL;
71 
72 	CURSOR cur_class IS
73 	SELECT 1
74 	FROM   DDR_R_MFG_ITEM_CLASS
75 	WHERE  MFG_CLASS_CD = p_hchy_cd
76 	AND    EFF_TO_DT IS NULL;
77 
78 	CURSOR cur_sbc IS
79 	SELECT 1
80 	FROM   DDR_R_MFG_ITEM_SBC
81 	WHERE  MFG_SBC_CD = p_hchy_cd
82 	AND    EFF_TO_DT IS NULL;
83 
84 	CURSOR cur_item IS
85 	SELECT 1
86 	FROM   DDR_R_MFG_ITEM
87 	WHERE  MFG_ITEM_NBR = p_hchy_cd
88 	AND    EFF_TO_DT IS NULL;
89 
90 	CURSOR cur_sku IS
91 	SELECT 1
92 	FROM  DDR_R_MFG_SKU_ITEM
93 	WHERE MFG_SKU_ITEM_NBR = p_hchy_cd
94 	AND   EFF_TO_DT IS NULL;
95 
96 Begin
97 	IF p_hchy_level IS NULL OR p_hchy_cd IS NULL
98 	THEN
99 		l_return := 'DSR-1001';
100 		RETURN (l_return);
101 	END IF;
102 
103 	l_mfg_item_lvl := -1;
104 	IF UPPER(p_hchy_level) IN ('COMPANY','DIVISION','GROUP','CLASS','SUBCLASS','ITEM','SKU','NA') THEN
105 
106 		IF p_hchy_level='COMPANY'
107 		THEN
108 		    	OPEN cur_cmpny;
109 		    	FETCH cur_cmpny INTO l_mfg_item_lvl;
110 		    	CLOSE cur_cmpny;
111 		ELSIF p_hchy_level='DIVISION'
112 		THEN
113 			OPEN cur_div;
114 			FETCH cur_div INTO l_mfg_item_lvl;
115 			CLOSE cur_div;
116 		ELSIF p_hchy_level='GROUP'
117 		THEN
118 			OPEN cur_grp;
119 			FETCH cur_grp INTO l_mfg_item_lvl;
120 			CLOSE cur_grp;
121 		ELSIF p_hchy_level='CLASS'
122 		THEN
123 			OPEN cur_class;
124 			FETCH cur_class INTO l_mfg_item_lvl;
125 			CLOSE cur_class;
126 		ELSIF p_hchy_level='SUBCLASS'
127 		THEN
128 			OPEN cur_sbc;
129 			FETCH cur_sbc INTO l_mfg_item_lvl;
130 			CLOSE cur_sbc;
131 		ELSIF p_hchy_level='ITEM'
132 		THEN
133 			OPEN cur_item;
134 			FETCH cur_item INTO l_mfg_item_lvl;
135 			CLOSE cur_item;
136 		ELSIF p_hchy_level='SKU'
137 		THEN
138 			OPEN cur_sku;
139 			FETCH cur_sku INTO l_mfg_item_lvl;
140 			CLOSE cur_sku;
141 		ELSIF p_hchy_level='NA'
142                 THEN
143 			IF p_hchy_cd ='-1'
144 			THEN
145 				l_mfg_item_lvl := 1;
146 			ELSE
147 				l_mfg_item_lvl := -1;
148 			END IF;
149 		END IF;
150 
151 		IF l_mfg_item_lvl='-1'
152 		THEN
153 			l_return := 'DSR-1002';
154 		END IF;
155 
156 	ELSE l_return := 'DSR-1002';
157 	END IF;
158 
159         RETURN(l_return);
160 End CHECK_MFG_ITEM_HCHY;
161 
162 FUNCTION CHECK_ORG_HCHY (p_hchy_cd VARCHAR2, p_hchy_level VARCHAR2)
163 RETURN VARCHAR2
164 as
165 	l_org_lvl  NUMBER;
166         l_return VARCHAR2(30);
167 
168         CURSOR cur_chain IS
169         SELECT 1
170         FROM   DDR_R_ORG_CHAIN
171         WHERE  CHAIN_CD = p_hchy_cd
172         AND    EFF_TO_DT IS NULL;
173 
174         CURSOR cur_org IS
175         SELECT 1
176         FROM  DDR_R_ORG
177         WHERE ORG_CD = p_hchy_cd;
178 
179         CURSOR cur_area IS
180         SELECT 1
181         FROM   DDR_R_ORG_AREA
182         WHERE  AREA_CD = p_hchy_cd
183         AND    EFF_TO_DT IS NULL;
184 
185         CURSOR cur_rgn IS
186         SELECT 1
187         FROM   DDR_R_ORG_RGN
188         WHERE  RGN_CD = p_hchy_cd
189         AND    EFF_TO_DT IS NULL;
190 
191         CURSOR cur_dstrct IS
192         SELECT 1
193         FROM   DDR_R_ORG_DSTRCT
194         WHERE  DSTRCT_CD = p_hchy_cd
195         AND    EFF_TO_DT IS NULL;
196 
197         CURSOR cur_bsns_unit IS
198         SELECT 1
199         FROM   DDR_R_ORG_BSNS_UNIT
200         WHERE  BSNS_UNIT_CD = p_hchy_cd
201         AND    EFF_TO_DT IS NULL;
202 Begin
203 	IF p_hchy_level IS NULL OR p_hchy_cd IS NULL
204         THEN
205 		l_return := 'DSR-1001';
206                 RETURN l_return;
207         END IF;
208 
209         l_org_lvl := -1;
210 	IF UPPER(p_hchy_level) IN ('ORGANIZATION','CHAIN','AREA','REGION','DISTRICT','BU','NA')
211         THEN
212 		IF p_hchy_level='ORGANIZATION'
213 		THEN
214 		   OPEN  cur_org;
215                    FETCH cur_org INTO l_org_lvl;
216                    CLOSE cur_org;
217 		ELSIF p_hchy_level='CHAIN'
218 		THEN
219                     OPEN  cur_chain;
220                     FETCH cur_chain INTO l_org_lvl;
221                     CLOSE cur_chain;
222 		ELSIF p_hchy_level='AREA'
223 		THEN
224                     OPEN  cur_area;
225                     FETCH cur_area INTO l_org_lvl;
226                     CLOSE cur_area;
227 		ELSIF p_hchy_level='REGION'
228 		THEN
229                     OPEN  cur_rgn;
230                     FETCH cur_rgn INTO l_org_lvl;
231                     CLOSE cur_rgn;
232 		ELSIF p_hchy_level='DISTRICT'
233 		THEN
234                     OPEN  cur_dstrct;
235                     FETCH cur_dstrct INTO l_org_lvl;
236                     CLOSE cur_dstrct;
237 		ELSIF p_hchy_level='BU'
238 		THEN
239                     OPEN  cur_bsns_unit;
240                     FETCH cur_bsns_unit INTO l_org_lvl;
241                     CLOSE cur_bsns_unit;
242 		ELSIF p_hchy_level='NA'
243                 THEN
244 			IF p_hchy_cd ='-1'
245 			THEN
246 				l_org_lvl := 1;
247 			ELSE
248 				l_org_lvl := -1;
249 			END IF;
250 		END IF;
251 
252 		IF l_org_lvl ='-1'
253 		THEN
254 			l_return := 'DSR-1002';
255 		END IF;
256 	ELSE l_return := 'DSR-1002';
257 	END IF;
258 
259         RETURN(l_return);
260 End CHECK_ORG_HCHY;
261 
262 FUNCTION CHECK_RTL_ITEM_HCHY (p_hchy_cd VARCHAR2, p_hchy_level VARCHAR2)
263 RETURN VARCHAR2
264 as
265 	l_rtl_item_lvl NUMBER;
266         l_return       VARCHAR2(30);
267 
268 	CURSOR cur_cmpny IS
269 	SELECT 1
270 	FROM   DDR_R_RTL_ITEM_CMPNY
271 	WHERE  RTL_CMPNY_CD = p_hchy_cd;
272 
273 	CURSOR cur_div IS
274 	SELECT 1
275 	FROM   DDR_R_RTL_ITEM_DIV
276 	WHERE  RTL_DIV_CD = p_hchy_cd
277 	AND    EFF_TO_DT IS NULL;
278 
279 	CURSOR cur_grp IS
280 	SELECT 1
281 	FROM   DDR_R_RTL_ITEM_GRP
282 	WHERE  RTL_GRP_CD = p_hchy_cd
283 	AND    EFF_TO_DT IS NULL;
284 
285 	CURSOR cur_dept IS
286  	SELECT 1
287 	FROM   DDR_R_RTL_ITEM_DEPT
288 	WHERE  RTL_DEPT_CD = p_hchy_cd
289 	AND    EFF_TO_DT IS NULL;
290 
291 	CURSOR cur_class IS
292 	SELECT 1
293 	FROM   DDR_R_RTL_ITEM_CLASS
294 	WHERE  RTL_CLASS_CD = p_hchy_cd
295 	AND    EFF_TO_DT IS NULL;
296 
297 	CURSOR cur_sbc IS
298 	SELECT 1
299 	FROM   DDR_R_RTL_ITEM_SBC
300 	WHERE  RTL_SBC_CD = p_hchy_cd
301 	AND    EFF_TO_DT IS NULL;
302 
303 	CURSOR cur_item IS
304 	SELECT 1
305 	FROM   DDR_R_RTL_ITEM
306 	WHERE  RTL_ITEM_NBR = p_hchy_cd
307 	AND    EFF_TO_DT IS NULL;
308 
309 	CURSOR cur_sku IS
310 	SELECT 1
311 	FROM  DDR_R_RTL_SKU_ITEM
312 	WHERE RTL_SKU_ITEM_NBR = p_hchy_cd
313 	AND   EFF_TO_DT IS NULL;
314 
315 Begin
316 	IF p_hchy_level IS NULL OR p_hchy_cd IS NULL
317 	THEN
318 		l_return := 'DSR-1001';
319 		RETURN (l_return);
320 	END IF;
321 
322 	l_rtl_item_lvl := -1;
323 	IF UPPER(p_hchy_level) IN ('COMPANY','DIVISION','GROUP','DEPARTMENT','CLASS','SUBCLASS','ITEM','SKU','NA') THEN
324 
325 		IF p_hchy_level='COMPANY'
326 		THEN
327 		    	OPEN cur_cmpny;
328 		    	FETCH cur_cmpny INTO l_rtl_item_lvl;
329 		    	CLOSE cur_cmpny;
330 		ELSIF p_hchy_level='DIVISION'
331 		THEN
332 			OPEN cur_div;
333 			FETCH cur_div INTO l_rtl_item_lvl;
334 			CLOSE cur_div;
335 		ELSIF p_hchy_level='GROUP'
336 		THEN
337 			OPEN cur_grp;
338 			FETCH cur_grp INTO l_rtl_item_lvl;
339 			CLOSE cur_grp;
340 		ELSIF p_hchy_level='DEPARTMENT'
341 		THEN
342 			OPEN cur_dept;
343 			FETCH cur_dept INTO l_rtl_item_lvl;
344 			CLOSE cur_dept;
345 		ELSIF p_hchy_level='CLASS'
346 		THEN
347 			OPEN cur_class;
348 			FETCH cur_class INTO l_rtl_item_lvl;
349 			CLOSE cur_class;
350 		ELSIF p_hchy_level='SUBCLASS'
351 		THEN
352 			OPEN cur_sbc;
353 			FETCH cur_sbc INTO l_rtl_item_lvl;
354 			CLOSE cur_sbc;
355 		ELSIF p_hchy_level='ITEM'
356 		THEN
357 			OPEN cur_item;
358 			FETCH cur_item INTO l_rtl_item_lvl;
359 			CLOSE cur_item;
360 		ELSIF p_hchy_level='SKU'
361 		THEN
362 			OPEN cur_sku;
363 			FETCH cur_sku INTO l_rtl_item_lvl;
364 			CLOSE cur_sku;
365 		ELSIF p_hchy_level='NA'
366                 THEN
367 			IF p_hchy_cd ='-1'
368 			THEN
369 				l_rtl_item_lvl := 1;
370 			ELSE
371 				l_rtl_item_lvl := -1;
372 			END IF;
373 		END IF;
374 
375 		IF l_rtl_item_lvl='-1'
376 		THEN
377 			l_return := 'DSR-1002';
378 		END IF;
379 
380 	ELSE l_return := 'DSR-1002';
381 	END IF;
382 
383         RETURN(l_return);
384 End CHECK_RTL_ITEM_HCHY;
385 
386 FUNCTION CHECK_TIME_HCHY (p_hchy_cd VARCHAR2, p_hchy_level VARCHAR2)
387 RETURN VARCHAR2
388 as
389 	l_time_lvl NUMBER;
390         l_return       VARCHAR2(30);
391 
392 	CURSOR cur_yr IS
393 	SELECT 1
394 	FROM   DDR_R_BSNS_YR
395 	WHERE  YR_CD = p_hchy_cd;
396 
397 	CURSOR cur_qtr IS
398 	SELECT 1
399 	FROM   DDR_R_BSNS_QTR
400 	WHERE  QTR_CD = p_hchy_cd;
401 
402 	CURSOR cur_mnth IS
403 	SELECT 1
404 	FROM   DDR_R_BSNS_MNTH
405 	WHERE  MNTH_CD = p_hchy_cd;
406 
407 	CURSOR cur_wk IS
408  	SELECT 1
409 	FROM   DDR_R_BSNS_WK
410 	WHERE  WK_CD = p_hchy_cd;
411 
412 	CURSOR cur_day IS
413 	SELECT 1
414 	FROM   DDR_R_DAY
415 	WHERE  DAY_CD = p_hchy_cd;
416 
417 Begin
418 	IF p_hchy_level IS NULL OR p_hchy_cd IS NULL
419 	THEN
420 		l_return := 'DSR-1001';
421 		RETURN (l_return);
422 	END IF;
423 
424 	l_time_lvl := -1;
425 	IF UPPER(p_hchy_level) IN ('YEAR','QUARTER','MONTH','WEEK','DAY','NA') THEN
426 
427 		IF p_hchy_level='YEAR'
428 		THEN
429 		    	OPEN cur_yr;
430 		    	FETCH cur_yr INTO l_time_lvl;
431 		    	CLOSE cur_yr;
432 		ELSIF p_hchy_level='QUARTER'
433 		THEN
434 			OPEN cur_qtr;
435 			FETCH cur_qtr INTO l_time_lvl;
436 			CLOSE cur_qtr;
437 		ELSIF p_hchy_level='MONTH'
438 		THEN
439 			OPEN cur_mnth;
440 			FETCH cur_mnth INTO l_time_lvl;
441 			CLOSE cur_mnth;
442 		ELSIF p_hchy_level='WEEK'
443 		THEN
444 			OPEN cur_wk;
445 			FETCH cur_wk INTO l_time_lvl;
446 			CLOSE cur_wk;
447 		ELSIF p_hchy_level='DAY'
448 		THEN
449 			OPEN cur_day;
450 			FETCH cur_day INTO l_time_lvl;
451 			CLOSE cur_day;
452 		ELSIF p_hchy_level='NA'
453                 THEN
454 			IF p_hchy_cd ='-1'
455 			THEN
456 				l_time_lvl := 1;
457 			ELSE
458 				l_time_lvl := -1;
459 			END IF;
460 		END IF;
461 
462 		IF l_time_lvl ='-1'
463 		THEN
464 			l_return := 'DSR-1002';
465 		END IF;
466 
467 	ELSE l_return := 'DSR-1002';
468 	END IF;
469 
470         RETURN(l_return);
471 End CHECK_TIME_HCHY;
472 
473 END ddr_ref_util_pkg;