[Home] [Help]
PACKAGE BODY: APPS.BOM_BOMRWUIT_XMLP_PKG
Source
1 PACKAGE BODY BOM_BOMRWUIT_XMLP_PKG AS
2 /* $Header: BOMRWUITB.pls 120.1 2008/01/07 07:12:06 nchinnam noship $ */
3 FUNCTION BEFOREREPORT RETURN BOOLEAN IS
4 BEGIN
5 DECLARE
6 T_ORG_CODE_LIST INV_ORGHIERARCHY_PVT.ORGID_TBL_TYPE;
7 L_ORG_NAME VARCHAR2(60);
8 N NUMBER := 0;
9 L_ERR_MSG VARCHAR(80);
10 L_ERR_CODE NUMBER;
11 L_STR VARCHAR(2000);
12 L_SORT_CODE VARCHAR(10) := '0001';
13 L_SEQUENCE_ID NUMBER;
14 L_BOM_OR_ENG NUMBER;
15 L_ITEM_NUMBER VARCHAR(245);
16 ITEM_ID_NULL EXCEPTION;
17 TEMP_PROC_ERR EXCEPTION;
18 IMPLOSION_ERR EXCEPTION;
19 TABLE_NAME VARCHAR(20);
20 temp_count number(3):= 0;
21 temp_exp EXCEPTION;
22
23 BEGIN
24 P_CONC_REQUEST_ID := FND_GLOBAL.CONC_REQUEST_ID;
25 LP_ORG_ID := P_ORG_ID;
26 /*SRW.USER_EXIT('FND SRWINIT')*/NULL;
27 IF P_REPORT_OPTION = 1 AND P_ITEM_ID IS NULL THEN
28 FND_MESSAGE.SET_NAME('null'
29 ,'MFG_REQUIRED_VALUE');
30 FND_MESSAGE.SET_TOKEN('ENTITY'
31 ,'specific item');
32 P_MSG_BUF := FND_MESSAGE.GET;
33 /*SRW.MESSAGE('999'
34 ,P_MSG_BUF)*/NULL;
35 RAISE ITEM_ID_NULL;
36 END IF;
37 P_QTY_PRECISION := FND_PROFILE.VALUE('REPORT_QUANTITY_PRECISION');
38 TABLE_NAME := 'IMPLOSION_TEMP_S:';
39 SELECT
40 BOM_IMPLOSION_TEMP_S.NEXTVAL
41 INTO L_SEQUENCE_ID
42 FROM
43 DUAL;
44 P_SEQUENCE_ID := L_SEQUENCE_ID;
45 IF P_ENG_BILL_FLAG = 'BOM' THEN
46 L_BOM_OR_ENG := 1;
47 ELSE
48 L_BOM_OR_ENG := 2;
49 END IF;
50 TABLE_NAME := 'ITEM_FLEXFIELDS:';
51 IF P_REPORT_OPTION = 1 THEN
52 SELECT
53 ITEM_NUMBER
54 INTO L_ITEM_NUMBER
55 FROM
56 MTL_ITEM_FLEXFIELDS
57 WHERE ITEM_ID = P_ITEM_ID
58 AND ORGANIZATION_ID = LP_ORG_ID;
59 P_SPECIFIC_ITEM := L_ITEM_NUMBER;
60 END IF;
61 TABLE_NAME := 'USER_EXIT_ITEM:';
62 IF P_REPORT_OPTION = 2 THEN
63 IF (P_ITEM_FROM IS NOT NULL) THEN
64 IF (P_ITEM_TO IS NOT NULL) THEN
65 NULL;
66 ELSE
67 NULL;
68 END IF;
69 ELSE
70 IF (P_ITEM_TO IS NOT NULL) THEN
71 NULL;
72 END IF;
73 END IF;
74 TABLE_NAME := 'USER_EXIT_CAT:';
75 IF (P_CAT_FROM IS NOT NULL) THEN
76 IF (P_CAT_TO IS NOT NULL) THEN
77 NULL;
78 ELSE
79 NULL;
80 END IF;
81 ELSE
82 IF (P_CAT_TO IS NOT NULL) THEN
83 NULL;
84 END IF;
85 END IF;
86 END IF;
87 IF P_DATE IS NULL THEN
88 P_DATE := TO_CHAR(SYSDATE
89 ,'YYYY/MM/DD HH24:MI:SS');
90 END IF;
91 TABLE_NAME := 'IMPLOSION_TEMP:';
92 IF P_ALL_ORGS = 1 THEN
93 FOR C1 IN (SELECT
94 ORGANIZATION_ID
95 FROM
96 MTL_PARAMETERS MP
97 WHERE MASTER_ORGANIZATION_ID = (
98 SELECT
99 MASTER_ORGANIZATION_ID
100 FROM
101 MTL_PARAMETERS
102 WHERE ORGANIZATION_ID = LP_ORG_ID )
103 AND MP.ORGANIZATION_ID IN (
104 SELECT
105 ORGANIZATION_ID
106 FROM
107 ORG_ACCESS_VIEW
108 WHERE RESPONSIBILITY_ID = FND_PROFILE.VALUE('RESP_ID')
109 AND RESP_APPLICATION_ID = FND_PROFILE.VALUE('RESP_APPL_ID') )) LOOP
110 N := N + 1;
111 T_ORG_CODE_LIST(N) := C1.ORGANIZATION_ID;
112 END LOOP;
113 ELSIF P_ALL_ORGS = 2 THEN
114 IF P_ORG_HIERARCHY IS NOT NULL THEN
115 INV_ORGHIERARCHY_PVT.ORG_HIERARCHY_LIST(P_ORG_HIERARCHY
116 ,LP_ORG_ID
117 ,T_ORG_CODE_LIST);
118 ELSIF P_ORG_HIERARCHY IS NULL THEN
119 T_ORG_CODE_LIST(1) := LP_ORG_ID;
120 END IF;
121 END IF;
122 FOR I IN T_ORG_CODE_LIST.FIRST .. T_ORG_CODE_LIST.LAST LOOP
123 LP_ORG_ID := T_ORG_CODE_LIST(I);
124 L_STR := 'INSERT INTO BOM_IMPLOSION_TEMP (
125 SEQUENCE_ID,LOWEST_ITEM_ID,CURRENT_ITEM_ID,PARENT_ITEM_ID,
126 CURRENT_LEVEL,SORT_CODE,CURRENT_ASSEMBLY_TYPE,
127 LAST_UPDATE_DATE,LAST_UPDATED_BY,CREATION_DATE,CREATED_BY,
128 REQUEST_ID,ORGANIZATION_ID) ';
129 IF P_REPORT_OPTION = 1 THEN
130 INSERT INTO BOM_IMPLOSION_TEMP
131 (SEQUENCE_ID
132 ,LOWEST_ITEM_ID
133 ,CURRENT_ITEM_ID
134 ,PARENT_ITEM_ID
135 ,CURRENT_LEVEL
136 ,SORT_CODE
137 ,CURRENT_ASSEMBLY_TYPE
138 ,LAST_UPDATE_DATE
139 ,LAST_UPDATED_BY
140 ,CREATION_DATE
141 ,CREATED_BY
142 ,REQUEST_ID
143 ,ORGANIZATION_ID)
144 VALUES (L_SEQUENCE_ID
145 ,P_ITEM_ID
146 ,P_ITEM_ID
147 ,P_ITEM_ID
148 ,0
149 ,L_SORT_CODE
150 ,NULL
151 ,SYSDATE
152 ,1
153 ,SYSDATE
154 ,1
155 ,P_CONC_REQUEST_ID
156 ,LP_ORG_ID);
157 ELSE
158 L_STR := L_STR || 'SELECT /*+ ORDERED */ DISTINCT ' || TO_CHAR(L_SEQUENCE_ID) || ', MSI.INVENTORY_ITEM_ID,MSI.INVENTORY_ITEM_ID,MSI.INVENTORY_ITEM_ID
159 ,0, ' || L_SORT_CODE || ', ' || 'NULL' || ', SYSDATE, 1, SYSDATE, 1,' || TO_CHAR(P_CONC_REQUEST_ID) || ', ' || TO_CHAR(LP_ORG_ID) || ' FROM MTL_SYSTEM_ITEMS MSI,
160 MTL_ITEM_CATEGORIES MIC,
161 MTL_CATEGORIES MC
162 WHERE ' || P_ASS_BETWEEN || '
163 AND MSI.BOM_ENABLED_FLAG = ''Y''
164 AND MSI.INVENTORY_ITEM_ID = MIC.INVENTORY_ITEM_ID
165 AND MSI.ORGANIZATION_ID = ' || TO_CHAR(LP_ORG_ID) || '
166 AND MIC.ORGANIZATION_ID = ' || TO_CHAR(LP_ORG_ID) || '
167 AND MIC.CATEGORY_SET_ID = ' || TO_CHAR(P_SET_ID) || '
168 AND MIC.CATEGORY_ID = MC.CATEGORY_ID
169 AND MC.STRUCTURE_ID =
170 ' || TO_CHAR(P_CATEGORY_STRUCTURE_ID) || '
171 AND ' || P_CAT_BETWEEN;
172 EXECUTE IMMEDIATE
173 L_STR;
174 END IF;
175 IMPLOSION(L_SEQUENCE_ID
176 ,L_BOM_OR_ENG
177 ,LP_ORG_ID
178 ,P_IMPLEMENTED
179 ,P_DATE_OPTION
180 ,P_LEVEL
181 ,P_DATE
182 ,L_ERR_MSG
183 ,L_ERR_CODE);
184 IF L_ERR_CODE <> 0 THEN
185 RAISE IMPLOSION_ERR;
186 END IF;
187 END LOOP;
188 LP_QTY_PRECISION:=get_precision(P_QTY_PRECISION);
189 P_DATE_1:=P_DATE;
190 RETURN (TRUE);
191 EXCEPTION
192 WHEN temp_exp THEN
193 --RAISE_APPLICATION_ERROR(-20101,TABLE_NAME ||temp_count);
194 null;
195 WHEN ITEM_ID_NULL THEN
196 /*SRW.MESSAGE('6','aborting...')*/NULL;
197 /*RAISE SRW.PROGRAM_ABORT*/RAISE_APPLICATION_ERROR(-20101,TABLE_NAME || SQLERRM);
198 WHEN IMPLOSION_ERR THEN
199 /*SRW.MESSAGE('4000'
200 ,L_ERR_MSG)*/NULL;RAISE_APPLICATION_ERROR(-20102,TABLE_NAME || SQLERRM);
201 RETURN (FALSE);
202 WHEN /*SRW.DO_SQL_FAILURE*/OTHERS THEN
203 /*SRW.MESSAGE('1000'
204 ,TABLE_NAME || SQLERRM)*/NULL;RAISE_APPLICATION_ERROR(-20103,TABLE_NAME || SQLERRM);
205 RETURN (FALSE);
206
207 END;
208 RETURN (TRUE);
209 END BEFOREREPORT;
210
211 FUNCTION AFTERREPORT RETURN BOOLEAN IS
212 BEGIN
213 BEGIN
214 /*SRW.USER_EXIT('FND SRWEXIT')*/NULL;
215 ROLLBACK;
216 END;
217 RETURN (TRUE);
218 END AFTERREPORT;
219
220 FUNCTION GET_STATUS(REVISED_ITEM_SEQUENCE_ID IN NUMBER
221 ,IMPLEMENTED_FLAG IN NUMBER
222 ,NOTICE IN VARCHAR2) RETURN VARCHAR2 IS
223 STATUS_NAME VARCHAR2(80);
224 BEGIN
225 IF REVISED_ITEM_SEQUENCE_ID IS NULL THEN
226 IF (IMPLEMENTED_FLAG = 1 AND NOTICE IS NOT NULL) THEN
227 SELECT
228 ML.MEANING
229 INTO STATUS_NAME
230 FROM
231 MFG_LOOKUPS ML
232 WHERE ML.LOOKUP_CODE = 6
233 AND ML.LOOKUP_TYPE = 'ECG_ECN_STATUS';
234 END IF;
235 ELSE
236 SELECT
237 ML.MEANING
238 INTO STATUS_NAME
239 FROM
240 ENG_REVISED_ITEMS ERI,
241 MFG_LOOKUPS ML
242 WHERE ERI.REVISED_ITEM_SEQUENCE_ID = REVISED_ITEM_SEQUENCE_ID
243 AND ML.LOOKUP_CODE = ERI.STATUS_TYPE
244 AND ML.LOOKUP_TYPE = 'ECG_ECN_STATUS';
245 END IF;
246 RETURN (STATUS_NAME);
247 EXCEPTION
248 WHEN OTHERS THEN
249 RETURN ('');
250 END GET_STATUS;
251
252 FUNCTION GET_ORGCODE(ORGANIZATION_ID IN NUMBER) RETURN VARCHAR2 IS
253 ORG_CODE VARCHAR2(3);
254 BEGIN
255 IF ORGANIZATION_ID IS NOT NULL THEN
256 SELECT
257 ORG.ORGANIZATION_CODE
258 INTO ORG_CODE
259 FROM
260 ORG_ORGANIZATION_DEFINITIONS ORG
261 WHERE ORG.ORGANIZATION_ID = GET_ORGCODE.ORGANIZATION_ID;
262 ELSE
263 RETURN ('');
264 END IF;
265 RETURN (ORG_CODE);
266 END GET_ORGCODE;
267
268 FUNCTION CF_ALL_ORGSFORMULA RETURN CHAR IS
269 BEGIN
270 IF P_ALL_ORGS = 1 THEN
271 RETURN ('Yes');
272 ELSE
273 RETURN ('No');
274 END IF;
275 END CF_ALL_ORGSFORMULA;
276
277 PROCEDURE IMPLODER_USEREXIT(SEQUENCE_ID IN NUMBER
278 ,ENG_MFG_FLAG IN NUMBER
279 ,ORG_ID IN NUMBER
280 ,IMPL_FLAG IN NUMBER
281 ,DISPLAY_OPTION IN NUMBER
282 ,LEVELS_TO_IMPLODE IN NUMBER
283 ,ITEM_ID IN NUMBER
284 ,IMPL_DATE IN VARCHAR2
285 ,ERR_MSG OUT NOCOPY VARCHAR2
286 ,ERR_CODE OUT NOCOPY NUMBER) IS
287 BEGIN
288 /*STPROC.INIT('begin BOMPIMPL.IMPLODER_USEREXIT(:SEQUENCE_ID, :ENG_MFG_FLAG, :ORG_ID, :IMPL_FLAG, :DISPLAY_OPTION, :LEVELS_TO_IMPLODE, :ITEM_ID, :IMPL_DATE, :ERR_MSG, :ERR_CODE); end;');
289 STPROC.BIND_I(SEQUENCE_ID);
290 STPROC.BIND_I(ENG_MFG_FLAG);
291 STPROC.BIND_I(ORG_ID);
292 STPROC.BIND_I(IMPL_FLAG);
293 STPROC.BIND_I(DISPLAY_OPTION);
294 STPROC.BIND_I(LEVELS_TO_IMPLODE);
295 STPROC.BIND_I(ITEM_ID);
296 STPROC.BIND_I(IMPL_DATE);
297 STPROC.BIND_O(ERR_MSG);
298 STPROC.BIND_O(ERR_CODE);
299 STPROC.EXECUTE;
300 STPROC.RETRIEVE(9
301 ,ERR_MSG);
302 STPROC.RETRIEVE(10
303 ,ERR_CODE);*/
304 BOMPIMPL.IMPLODER_USEREXIT(SEQUENCE_ID, ENG_MFG_FLAG, ORG_ID, IMPL_FLAG, DISPLAY_OPTION, LEVELS_TO_IMPLODE, ITEM_ID, IMPL_DATE, ERR_MSG, ERR_CODE);
305 END IMPLODER_USEREXIT;
306
307 PROCEDURE IMPLOSION(SEQUENCE_ID IN NUMBER
308 ,ENG_MFG_FLAG IN NUMBER
309 ,ORG_ID IN NUMBER
310 ,IMPL_FLAG IN NUMBER
311 ,DISPLAY_OPTION IN NUMBER
312 ,LEVELS_TO_IMPLODE IN NUMBER
313 ,IMPL_DATE IN VARCHAR2
314 ,ERR_MSG OUT NOCOPY VARCHAR2
315 ,ERR_CODE OUT NOCOPY NUMBER) IS
316 BEGIN
317 /*STPROC.INIT('begin BOMPIMPL.IMPLOSION(:SEQUENCE_ID, :ENG_MFG_FLAG, :ORG_ID, :IMPL_FLAG, :DISPLAY_OPTION, :LEVELS_TO_IMPLODE, :IMPL_DATE, :ERR_MSG, :ERR_CODE); end;');
318 STPROC.BIND_I(SEQUENCE_ID);
319 STPROC.BIND_I(ENG_MFG_FLAG);
320 STPROC.BIND_I(ORG_ID);
321 STPROC.BIND_I(IMPL_FLAG);
322 STPROC.BIND_I(DISPLAY_OPTION);
323 STPROC.BIND_I(LEVELS_TO_IMPLODE);
324 STPROC.BIND_I(IMPL_DATE);
325 STPROC.BIND_O(ERR_MSG);
326 STPROC.BIND_O(ERR_CODE);
327 STPROC.EXECUTE;
328 STPROC.RETRIEVE(8
329 ,ERR_MSG);
330 STPROC.RETRIEVE(9
331 ,ERR_CODE);*/
332
333
334 BOMPIMPL.IMPLOSION(SEQUENCE_ID, ENG_MFG_FLAG, ORG_ID, IMPL_FLAG, DISPLAY_OPTION, LEVELS_TO_IMPLODE, IMPL_DATE, ERR_MSG, ERR_CODE);
335 END IMPLOSION;
336
337 PROCEDURE SL_IMPLODER(SEQUENCE_ID IN NUMBER
338 ,ENG_MFG_FLAG IN NUMBER
339 ,ORG_ID IN NUMBER
340 ,IMPL_FLAG IN NUMBER
341 ,DISPLAY_OPTION IN NUMBER
342 ,IMPL_DATE IN VARCHAR2
343 ,ERR_MSG OUT NOCOPY VARCHAR2
344 ,ERROR_CODE OUT NOCOPY NUMBER) IS
345 BEGIN
346 /*STPROC.INIT('begin BOMPIMPL.SL_IMPLODER(:SEQUENCE_ID, :ENG_MFG_FLAG, :ORG_ID, :IMPL_FLAG, :DISPLAY_OPTION, :IMPL_DATE, :ERR_MSG, :ERROR_CODE); end;');
347 STPROC.BIND_I(SEQUENCE_ID);
348 STPROC.BIND_I(ENG_MFG_FLAG);
349 STPROC.BIND_I(ORG_ID);
350 STPROC.BIND_I(IMPL_FLAG);
351 STPROC.BIND_I(DISPLAY_OPTION);
352 STPROC.BIND_I(IMPL_DATE);
353 STPROC.BIND_O(ERR_MSG);
354 STPROC.BIND_O(ERROR_CODE);
355 STPROC.EXECUTE;
356 STPROC.RETRIEVE(7
357 ,ERR_MSG);
358 STPROC.RETRIEVE(8
359 ,ERROR_CODE);*/
360
361 BOMPIMPL.SL_IMPLODER(SEQUENCE_ID, ENG_MFG_FLAG, ORG_ID, IMPL_FLAG, DISPLAY_OPTION, IMPL_DATE, ERR_MSG, ERROR_CODE);
362 END SL_IMPLODER;
363
364 PROCEDURE ML_IMPLODER(SEQUENCE_ID IN NUMBER
365 ,ENG_MFG_FLAG IN NUMBER
366 ,ORG_ID IN NUMBER
367 ,IMPL_FLAG IN NUMBER
368 ,A_LEVELS_TO_IMPLODE IN NUMBER
369 ,IMPL_DATE IN VARCHAR2
370 ,ERR_MSG OUT NOCOPY VARCHAR2
371 ,ERROR_CODE OUT NOCOPY NUMBER) IS
372 BEGIN
373 /*STPROC.INIT('begin BOMPIMPL.ML_IMPLODER(:SEQUENCE_ID, :ENG_MFG_FLAG, :ORG_ID, :IMPL_FLAG, :A_LEVELS_TO_IMPLODE, :IMPL_DATE, :ERR_MSG, :ERROR_CODE); end;');
374 STPROC.BIND_I(SEQUENCE_ID);
375 STPROC.BIND_I(ENG_MFG_FLAG);
376 STPROC.BIND_I(ORG_ID);
377 STPROC.BIND_I(IMPL_FLAG);
378 STPROC.BIND_I(A_LEVELS_TO_IMPLODE);
379 STPROC.BIND_I(IMPL_DATE);
380 STPROC.BIND_O(ERR_MSG);
381 STPROC.BIND_O(ERROR_CODE);
382 STPROC.EXECUTE;
383 STPROC.RETRIEVE(7
384 ,ERR_MSG);
385 STPROC.RETRIEVE(8
386 ,ERROR_CODE);*/
387 BOMPIMPL.ML_IMPLODER(SEQUENCE_ID, ENG_MFG_FLAG, ORG_ID, IMPL_FLAG, A_LEVELS_TO_IMPLODE, IMPL_DATE, ERR_MSG, ERROR_CODE);
388 END ML_IMPLODER;
389
390 function get_precision(qty_precision in number) return VARCHAR2 is
391 begin
392
393 if qty_precision = 0 then return('999G999G999G990');
394
395 elsif qty_precision = 1 then return('999G999G999G990D0');
396
397 elsif qty_precision = 3 then return('999G999G999G990D000');
398
399 elsif qty_precision = 4 then return('999G999G999G990D0000');
400
401 elsif qty_precision = 5 then return('999G999G999G990D00000');
402
403 elsif qty_precision = 6 then return('999G999G999G990D000000');
404
405 else return('999G999G999G990D00');
406
407 end if;
408
409 end;
410
411 END BOM_BOMRWUIT_XMLP_PKG;
412