DBA Data[Home] [Help]

PACKAGE BODY: APPS.BOM_CSTRINVR_XMLP_PKG

Source


1 PACKAGE BODY BOM_CSTRINVR_XMLP_PKG AS
2 /* $Header: CSTRINVRB.pls 120.1.12020000.2 2012/07/11 13:16:28 vkatakam ship $ */
3   FUNCTION AFTERREPORT RETURN BOOLEAN IS
4   BEGIN
5     /*SRW.USER_EXIT('FND SRWEXIT')*/NULL;
6     EXECUTE IMMEDIATE
7       'ROLLBACK';
8     /*SRW.MESSAGE(0
9                ,'BOM_CSTRINVR_XMLP_PKG >>     ' || TO_CHAR(SYSDATE
10                       ,'Dy Mon DD HH24:MI:SS YYYY'))*/NULL;
11     RETURN (TRUE);
12   END AFTERREPORT;
13   FUNCTION BEFOREREPORT RETURN BOOLEAN IS
14   BEGIN
15     DECLARE
16       L_FCN_CURRENCY VARCHAR2(15);
17       L_REPORT_NAME VARCHAR2(80);
18       SQL_STMT_NUM VARCHAR2(5);
19       L_EXP_SUB NUMBER := P_EXP_SUB;
20       L_MSG_COUNT NUMBER;
21       L_MSG_DATA VARCHAR2(8000);
22       L_RETURN_STATUS VARCHAR2(1);
23       L_AS_OF_DATE VARCHAR2(30);
24       L_COST NUMBER;
25       WMS_ORG_COUNT NUMBER;
26       PJM_ORG_COUNT NUMBER;
27       L_CALCULATE_INTRANSIT NUMBER;
28       L_CST_INV_VAL EXCEPTION;
29     BEGIN
30       EXECUTE IMMEDIATE 'ALTER SESSION SET NLS_NUMERIC_CHARACTERS=''.,''';
31       SQL_STMT_NUM := '0: ';
32       P_EXCHANGE_RATE := FND_NUMBER.CANONICAL_TO_NUMBER(P_EXCHANGE_RATE_CHAR);
33       SQL_STMT_NUM := '1: ';
34       IF P_VIEW_COST <> 1 THEN
35         FND_MESSAGE.SET_NAME('null'
36                             ,'null');
37         /*SRW.USER_EXIT('FND MESSAGE_DISPLAY')*/NULL;
38         /*RAISE SRW.PROGRAM_ABORT*/RAISE_APPLICATION_ERROR(-20101,null);
39       END IF;
40       SQL_STMT_NUM := '3: ';
41       SELECT
42         O.ORGANIZATION_NAME,
43         MP.COST_ORGANIZATION_ID,
44         SOB.CURRENCY_CODE,
45         NVL(EXTENDED_PRECISION
46            ,PRECISION),
47         NVL(FC.PRECISION
48            ,0),
49         NVL(MINIMUM_ACCOUNTABLE_UNIT
50            ,POWER(10
51                 ,NVL(-PRECISION
52                    ,0))),
53         MCS.CATEGORY_SET_NAME,
54         DEFAULT_COST_TYPE_ID,
55         COST_TYPE,
56         LU2.MEANING,
57         USERENV('SESSIONID')
58       INTO P_ORGANIZATION,P_COST_ORG_ID,L_FCN_CURRENCY,P_EXT_PREC,P_PRECISION,ROUND_UNIT,P_CAT_SET_NAME,P_DEF_COST_TYPE,P_COST_TYPE,P_DETAIL_LEVEL,P_SESSIONID
59       FROM
60         ORG_ORGANIZATION_DEFINITIONS O,
61         MTL_PARAMETERS MP,
62         GL_SETS_OF_BOOKS SOB,
63         FND_CURRENCIES FC,
64         MTL_CATEGORY_SETS MCS,
65         CST_COST_TYPES,
66         MFG_LOOKUPS LU2
67       WHERE FC.CURRENCY_CODE = P_CURRENCY_CODE
68         AND O.ORGANIZATION_ID = P_ORG_ID
69         AND MP.ORGANIZATION_ID = P_ORG_ID
70         AND SOB.SET_OF_BOOKS_ID = O.SET_OF_BOOKS_ID
71         AND MCS.CATEGORY_SET_ID = P_CATEGORY_SET
72         AND COST_TYPE_ID = P_COST_TYPE_ID
73         AND LU2.LOOKUP_TYPE = 'CST_BICR_DETAIL_OPTION'
74         AND LU2.LOOKUP_CODE = P_RPT_OPTION;
75       BEGIN
76         SELECT
77           MEANING
78         INTO P_SORT_BY
79         FROM
80           MFG_LOOKUPS
81         WHERE LOOKUP_TYPE = 'CST_ITEM_REPORT_SORT'
82           AND LOOKUP_CODE = P_SORT_OPTION;
83 	  P_CONC_REQUEST_ID := FND_GLOBAL.CONC_REQUEST_ID;
84         IF P_CONC_REQUEST_ID > 0 THEN
85           SELECT
86             USER_CONCURRENT_PROGRAM_NAME
87           INTO P_REPORT_NAME
88           FROM
89             FND_CONCURRENT_PROGRAMS_VL P,
90             FND_CONCURRENT_REQUESTS R
91           WHERE R.REQUEST_ID = P_CONC_REQUEST_ID
92             AND P.APPLICATION_ID = R.PROGRAM_APPLICATION_ID
93             AND P.CONCURRENT_PROGRAM_ID = R.CONCURRENT_PROGRAM_ID;
94         ELSE
95           SELECT
96             USER_CONCURRENT_PROGRAM_NAME
97           INTO P_REPORT_NAME
98           FROM
99             FND_CONCURRENT_PROGRAMS_VL P
100           WHERE P.APPLICATION_ID = 702
101             AND P.CONCURRENT_PROGRAM_NAME = DECODE(P_SORT_OPTION
102                 ,4
103                 ,'CSTRSAVR'
104                 ,'BOM_CSTRINVR_XMLP_PKG');
105         END IF;
106       EXCEPTION
107         WHEN NO_DATA_FOUND THEN
108           NULL;
109         WHEN OTHERS THEN
110           RAISE;
111       END;
112       SQL_STMT_NUM := '4: ';
113       IF L_FCN_CURRENCY = P_CURRENCY_CODE THEN
114         P_CURRENCY_DSP := P_CURRENCY_CODE;
115       ELSE
116         P_CURRENCY_DSP := P_CURRENCY_CODE || ' @ ' || TO_CHAR(ROUND(1 / P_EXCHANGE_RATE
117                                        ,5)) || L_FCN_CURRENCY;
118       END IF;
119       SQL_STMT_NUM := '5: ';
120       IF P_SORT_OPTION = 3 THEN
121         /*SRW.SET_MAXROW('Q_IC_MAIN'
122                       ,0)*/NULL;
123       ELSE
124         /*SRW.SET_MAXROW('Q_SI_SUBINV'
125                       ,0)*/NULL;
126         /*SRW.SET_MAXROW('Q_SI_MAIN'
127                       ,0)*/NULL;
128       END IF;
129       BEGIN
130 
131         /*SRW.USER_EXIT('FND SRWINIT')*/NULL;
132       EXCEPTION
133         WHEN OTHERS THEN
134           /*SRW.MESSAGE(999
135                      ,'FND SRWINIT >X')*/NULL;
136           RAISE;
137       END;
138       BEGIN
139         NULL;
140       EXCEPTION
141         WHEN OTHERS THEN
142           /*SRW.MESSAGE(999
143                      ,'FND FLEXSQL(MCAT) >X')*/NULL;
144           RAISE;
145       END;
146       BEGIN
147         NULL;
148       EXCEPTION
149         WHEN OTHERS THEN
150           /*SRW.MESSAGE(999
151                      ,'FND FLEXSQL(MSTK) >X')*/NULL;
152           RAISE;
153       END;
154       SQL_STMT_NUM := '6: ';
155       CST_INVENTORY_PUB.CALCULATE_INVENTORYVALUE(P_API_VERSION => 1.0
156                                                 ,P_INIT_MSG_LIST => CST_UTILITY_PUB.GET_TRUE
157                                                 ,P_ORGANIZATION_ID => P_ORG_ID
158                                                 ,P_ONHAND_VALUE => 1
159                                                 ,P_INTRANSIT_VALUE => 1
160                                                 ,P_RECEIVING_VALUE => 0
161                                                 ,P_VALUATION_DATE => TO_DATE(P_AS_OF_DATE
162                                                        ,'YYYY/MM/DD HH24:MI:SS')
163                                                 ,P_COST_TYPE_ID => P_COST_TYPE_ID
164                                                 ,P_ITEM_FROM => P_ITEM_FROM
165                                                 ,P_ITEM_TO => P_ITEM_TO
166                                                 ,P_CATEGORY_SET_ID => P_CATEGORY_SET
167                                                 ,P_CATEGORY_FROM => P_CAT_FROM
168                                                 ,P_CATEGORY_TO => P_CAT_TO
169                                                 ,P_COST_GROUP_FROM => NULL
170                                                 ,P_COST_GROUP_TO => NULL
171                                                 ,P_SUBINVENTORY_FROM => P_SUBINV_FROM
172                                                 ,P_SUBINVENTORY_TO => P_SUBINV_TO
173                                                 ,P_QTY_BY_REVISION => P_ITEM_REVISION
174                                                 ,P_ZERO_COST_ONLY => P_ZERO_COST
175                                                 ,P_ZERO_QTY => P_ZERO_QTY
176                                                 ,P_EXPENSE_ITEM => P_EXP_ITEM
177                                                 ,P_EXPENSE_SUB => L_EXP_SUB
178                                                 ,P_UNVALUED_TXNS => P_UNCOSTED_TXN
179                                                 ,P_RECEIPT => 1
180                                                 ,P_SHIPMENT => 1
181                                                 ,X_RETURN_STATUS => L_RETURN_STATUS
182                                                 ,X_MSG_COUNT => L_MSG_COUNT
183                                                 ,X_MSG_DATA => L_MSG_DATA);
184       IF L_RETURN_STATUS <> CST_UTILITY_PUB.GET_RET_STS_SUCCESS THEN
185         RAISE L_CST_INV_VAL;
186       END IF;
187       FND_MSG_PUB.COUNT_AND_GET(P_ENCODED => CST_UTILITY_PUB.GET_FALSE
188                                ,P_COUNT => L_MSG_COUNT
189                                ,P_DATA => L_MSG_DATA);
190       IF (L_MSG_COUNT > 0) THEN
191         FOR i IN 1 .. L_MSG_COUNT LOOP
192           L_MSG_DATA := FND_MSG_PUB.GET(I
193                                        ,CST_UTILITY_PUB.GET_FALSE);
194           FND_FILE.PUT_LINE(CST_UTILITY_PUB.GET_LOG
195                            ,I || '-' || L_MSG_DATA);
196         END LOOP;
197       END IF;
198       SELECT
199         TO_CHAR(TO_DATE(P_AS_OF_DATE
200                        ,'YYYY/MM/DD HH24:MI:SS')
201                ,'DD-MON-YYYY HH24:MI:SS')
202       INTO L_AS_OF_DATE
203       FROM
204         DUAL;
205       P_AS_OF_DATE1 := L_AS_OF_DATE;
206       /*SRW.MESSAGE(0
207                  ,'BOM_CSTRINVR_XMLP_PKG <<     ' || TO_CHAR(SYSDATE
208                         ,'Dy Mon FmDD HH24:MI:SS YYYY'))*/NULL;
209     EXCEPTION
210       WHEN OTHERS THEN
211         /*SRW.MESSAGE(999
212                    ,SQL_STMT_NUM || SQLERRM)*/NULL;
213         /*SRW.MESSAGE(999
214                    ,'BOM_CSTRINVR_XMLP_PKG >X     ' || TO_CHAR(SYSDATE
215                           ,'Dy Mon FmDD HH24:MI:SS YYYY'))*/NULL;
216         FND_MSG_PUB.COUNT_AND_GET(P_ENCODED => CST_UTILITY_PUB.GET_FALSE
217                                  ,P_COUNT => L_MSG_COUNT
218                                  ,P_DATA => L_MSG_DATA);
219         IF (L_MSG_COUNT > 0) THEN
220           FOR i IN 1 .. L_MSG_COUNT LOOP
221             L_MSG_DATA := FND_MSG_PUB.GET(I
222                                          ,CST_UTILITY_PUB.GET_FALSE);
223             /*SRW.MESSAGE(999
224                        ,I || ': ' || L_MSG_DATA)*/NULL;
225           END LOOP;
226         END IF;
227         /*RAISE SRW.PROGRAM_ABORT*/RAISE_APPLICATION_ERROR(-20101,null);
228     END;
229     RETURN (TRUE);
230   END BEFOREREPORT;
231   FUNCTION IC_ROWCOUNTFORMULA(IC_QUANTITY IN NUMBER) RETURN NUMBER IS
232   BEGIN
233     IF P_ZERO_QTY = 1 AND P_NEG_QTY = 1 AND IC_QUANTITY <= 0 THEN
234       RETURN (1);
235     ELSIF P_ZERO_QTY = 2 AND P_NEG_QTY = 1 AND IC_QUANTITY < 0 THEN
236       RETURN (1);
237     ELSIF P_ZERO_QTY = 2 AND P_NEG_QTY = 2 AND IC_QUANTITY <> 0 THEN
238       RETURN (1);
239     ELSIF P_ZERO_QTY = 1 AND P_NEG_QTY = 2 THEN
240       RETURN (1);
241     ELSE
242       RETURN (0);
243     END IF;
244     RETURN NULL;
245   END IC_ROWCOUNTFORMULA;
246   FUNCTION IC_TOTAL1FORMULA(IC_QUANTITY IN NUMBER
247                            ,IC_TOTAL IN NUMBER) RETURN NUMBER IS
248   BEGIN
249     IF P_NEG_QTY = 1 AND IC_QUANTITY > 0 THEN
250       RETURN (0);
251     ELSE
252       RETURN (IC_TOTAL);
253     END IF;
254     RETURN NULL;
255   END IC_TOTAL1FORMULA;
256   FUNCTION SI_TOTAL1FORMULA(SI_QUANTITY IN NUMBER
257                            ,SI_TOTAL IN NUMBER) RETURN NUMBER IS
258   BEGIN
259     IF P_NEG_QTY = 1 AND SI_QUANTITY > 0 THEN
260       RETURN (0);
261     ELSE
262       RETURN (SI_TOTAL);
263     END IF;
264     RETURN NULL;
265   END SI_TOTAL1FORMULA;
266   FUNCTION SI_ROWCOUNTFORMULA(SI_QUANTITY IN NUMBER) RETURN NUMBER IS
267   BEGIN
268     IF P_ZERO_QTY = 1 AND P_NEG_QTY = 1 AND SI_QUANTITY <= 0 THEN
269       RETURN (1);
270     ELSIF P_ZERO_QTY = 1 AND P_NEG_QTY = 2 THEN
271       RETURN (1);
272     ELSIF P_ZERO_QTY = 2 AND P_NEG_QTY = 1 AND SI_QUANTITY < 0 THEN
273       RETURN (1);
274     ELSIF P_ZERO_QTY = 2 AND P_NEG_QTY = 2 AND SI_QUANTITY <> 0 THEN
275       RETURN (1);
276     ELSE
277       RETURN (0);
278     END IF;
279     RETURN NULL;
280   END SI_ROWCOUNTFORMULA;
281   FUNCTION SI_MATL1FORMULA(SI_QUANTITY IN NUMBER
282                           ,SI_MATL IN NUMBER) RETURN NUMBER IS
283   BEGIN
284     IF P_NEG_QTY = 1 AND SI_QUANTITY > 0 THEN
285       RETURN (0);
286     ELSE
287       RETURN (SI_MATL);
288     END IF;
289     RETURN NULL;
290   END SI_MATL1FORMULA;
291   FUNCTION SI_MOVH1FORMULA(SI_QUANTITY IN NUMBER
292                           ,SI_MOVH IN NUMBER) RETURN NUMBER IS
293   BEGIN
294     IF P_NEG_QTY = 1 AND SI_QUANTITY > 0 THEN
295       RETURN (0);
296     ELSE
297       RETURN (SI_MOVH);
298     END IF;
299     RETURN NULL;
300   END SI_MOVH1FORMULA;
301   FUNCTION SI_RES1FORMULA(SI_QUANTITY IN NUMBER
302                          ,SI_RES IN NUMBER) RETURN NUMBER IS
303   BEGIN
304     IF P_NEG_QTY = 1 AND SI_QUANTITY > 0 THEN
305       RETURN (0);
306     ELSE
307       RETURN (SI_RES);
308     END IF;
309     RETURN NULL;
310   END SI_RES1FORMULA;
311   FUNCTION SI_OSP1FORMULA(SI_QUANTITY IN NUMBER
312                          ,SI_OSP IN NUMBER) RETURN NUMBER IS
313   BEGIN
314     IF P_NEG_QTY = 1 AND SI_QUANTITY > 0 THEN
315       RETURN (0);
316     ELSE
317       RETURN (SI_OSP);
318     END IF;
319     RETURN NULL;
320   END SI_OSP1FORMULA;
321   FUNCTION SI_OVHD1FORMULA(SI_QUANTITY IN NUMBER
322                           ,SI_OVHD IN NUMBER) RETURN NUMBER IS
323   BEGIN
324     IF P_NEG_QTY = 1 AND SI_QUANTITY > 0 THEN
325       RETURN (0);
326     ELSE
327       RETURN (SI_OVHD);
328     END IF;
329     RETURN NULL;
330   END SI_OVHD1FORMULA;
331   FUNCTION IC_ORDERFORMULA(IC_CATEGORY IN VARCHAR2
332                           ,IC_CATEGORY_SEGMENT IN VARCHAR2
333                           ,IC_CAT_PSEG IN VARCHAR2) RETURN VARCHAR2 IS
334   BEGIN
335     /*SRW.REFERENCE(IC_CATEGORY)*/NULL;
336     /*SRW.REFERENCE(IC_CATEGORY_SEGMENT)*/NULL;
337     /*SRW.REFERENCE(IC_CAT_PSEG)*/NULL;
338     IF P_SORT_OPTION = 2 THEN
339       RETURN (IC_CAT_PSEG);
340     ELSE
341       RETURN ('Item Sort');
342     END IF;
343     RETURN NULL;
344   END IC_ORDERFORMULA;
345   FUNCTION IC_ITEM_PSEGFORMULA(IC_ITEM_NUMBER IN VARCHAR2
346                               ,IC_ITEM_SEGMENT IN VARCHAR2
347                               ,IC_ITEM_PSEG IN VARCHAR2) RETURN VARCHAR2 IS
348   BEGIN
349     /*SRW.REFERENCE(IC_ITEM_NUMBER)*/NULL;
350     /*SRW.REFERENCE(IC_ITEM_SEGMENT)*/NULL;
351     RETURN (IC_ITEM_PSEG);
352   END IC_ITEM_PSEGFORMULA;
353   FUNCTION IC_CAT_PSEGFORMULA(IC_CATEGORY IN VARCHAR2
354                              ,IC_CATEGORY_SEGMENT IN VARCHAR2
355                              ,IC_CAT_PSEG IN VARCHAR2) RETURN VARCHAR2 IS
356   BEGIN
357     /*SRW.REFERENCE(IC_CATEGORY)*/NULL;
358     /*SRW.REFERENCE(IC_CATEGORY_SEGMENT)*/NULL;
359     RETURN (IC_CAT_PSEG);
360   END IC_CAT_PSEGFORMULA;
361   FUNCTION SI_ITEM_PSEGFORMULA(SI_ITEM_NUMBER IN VARCHAR2
362                               ,SI_ITEM_SEGMENT IN VARCHAR2
363                               ,SI_ITEM_PSEG IN VARCHAR2) RETURN VARCHAR2 IS
364   BEGIN
365     /*SRW.REFERENCE(SI_ITEM_NUMBER)*/NULL;
366     /*SRW.REFERENCE(SI_ITEM_SEGMENT)*/NULL;
367     RETURN (SI_ITEM_PSEG);
368   END SI_ITEM_PSEGFORMULA;
369   FUNCTION BEFOREPFORM RETURN BOOLEAN IS
370   BEGIN
371     RETURN (TRUE);
372   END BEFOREPFORM;
373   FUNCTION IC_QUANTITY1FORMULA(IC_QUANTITY IN NUMBER) RETURN NUMBER IS
374   BEGIN
375     IF P_NEG_QTY = 1 AND IC_QUANTITY > 0 THEN
376       RETURN (0);
377     ELSE
378       RETURN (IC_QUANTITY);
379     END IF;
380     RETURN NULL;
381   END IC_QUANTITY1FORMULA;
382   FUNCTION SI_SI_TOTALFORMULA(SI_SI_MATL IN NUMBER
383                              ,SI_SI_MOVH IN NUMBER
384                              ,SI_SI_RES IN NUMBER
385                              ,SI_SI_OSP IN NUMBER
386                              ,SI_SI_OVHD IN NUMBER) RETURN NUMBER IS
387     SI_SI_TOTAL NUMBER;
388   BEGIN
389     SI_SI_TOTAL := (SI_SI_MATL + SI_SI_MOVH + SI_SI_RES + SI_SI_OSP + SI_SI_OVHD);
390     SI_SI_TOTAL := STANDARD.ROUND(SI_SI_TOTAL / ROUND_UNIT) * ROUND_UNIT;
391     RETURN SI_SI_TOTAL;
392   END SI_SI_TOTALFORMULA;
393   FUNCTION SI_REP_TOTALFORMULA(SI_REP_MATL IN NUMBER
394                               ,SI_REP_MOVH IN NUMBER
395                               ,SI_REP_RES IN NUMBER
396                               ,SI_REP_OSP IN NUMBER
397                               ,SI_REP_OVHD IN NUMBER) RETURN NUMBER IS
398     SI_REP_TOTAL NUMBER;
399   BEGIN
400     SI_REP_TOTAL := (SI_REP_MATL + SI_REP_MOVH + SI_REP_RES + SI_REP_OSP + SI_REP_OVHD);
401     SI_REP_TOTAL := ROUND(SI_REP_TOTAL / ROUND_UNIT) * ROUND_UNIT;
402     RETURN SI_REP_TOTAL;
403   END SI_REP_TOTALFORMULA;
404   FUNCTION IC_ITEM_TOTAL_RFORMULA(IC_ITEM_TOTAL IN NUMBER) RETURN NUMBER IS
405     IC_ITEM_TOTAL_R NUMBER;
406   BEGIN
407     IC_ITEM_TOTAL_R := STANDARD.ROUND(IC_ITEM_TOTAL / ROUND_UNIT
408                                      ,0) * ROUND_UNIT;
409     RETURN IC_ITEM_TOTAL_R;
410   END IC_ITEM_TOTAL_RFORMULA;
411   FUNCTION IC_TOTAL_RFORMULA(IC_TOTAL IN NUMBER) RETURN NUMBER IS
412     IC_TOTAL_R NUMBER;
413   BEGIN
414     IC_TOTAL_R := STANDARD.ROUND(IC_TOTAL / ROUND_UNIT ,0) * ROUND_UNIT;
415     RETURN IC_TOTAL_R;
416   END IC_TOTAL_RFORMULA;
417   FUNCTION IC_REP_TOTAL_RFORMULA(IC_REP_TOTAL IN NUMBER) RETURN NUMBER IS
418     IC_REP_TOTAL_R NUMBER;
419   BEGIN
420     IC_REP_TOTAL_R := ROUND(IC_REP_TOTAL / ROUND_UNIT) * ROUND_UNIT;
421     RETURN IC_REP_TOTAL_R;
422   END IC_REP_TOTAL_RFORMULA;
423   FUNCTION IC_CAT_TOTAL_RFORMULA(IC_CAT_TOTAL IN NUMBER) RETURN NUMBER IS
424     IC_CAT_TOTAL_R NUMBER;
425   BEGIN
426     IC_CAT_TOTAL_R := ROUND(IC_CAT_TOTAL / ROUND_UNIT) * ROUND_UNIT;
427     RETURN IC_CAT_TOTAL_R;
428   END IC_CAT_TOTAL_RFORMULA;
429   FUNCTION SI_TOTAL_RFORMULA(SI_TOTAL IN NUMBER) RETURN NUMBER IS
430     SI_TOTAL_R NUMBER;
431   BEGIN
432     SI_TOTAL_R := ROUND(SI_TOTAL / ROUND_UNIT) * ROUND_UNIT;
433     RETURN SI_TOTAL_R;
434   END SI_TOTAL_RFORMULA;
435   FUNCTION SI_SI_MATL_RFORMULA(SI_SI_MATL IN NUMBER) RETURN NUMBER IS
436     SI_SI_MATL_R NUMBER;
437   BEGIN
438     SI_SI_MATL_R := STANDARD.ROUND(SI_SI_MATL / ROUND_UNIT) * ROUND_UNIT;
439     RETURN SI_SI_MATL_R;
440   END SI_SI_MATL_RFORMULA;
441   FUNCTION SI_SI_MOVH_RFORMULA(SI_SI_MOVH IN NUMBER) RETURN NUMBER IS
442     SI_SI_MOVH_R NUMBER;
443   BEGIN
444     SI_SI_MOVH_R := ROUND(SI_SI_MOVH / ROUND_UNIT) * ROUND_UNIT;
445     RETURN SI_SI_MOVH_R;
446   END SI_SI_MOVH_RFORMULA;
447   FUNCTION SI_SI_OVHD_RFORMULA(SI_SI_OVHD IN NUMBER) RETURN NUMBER IS
448     SI_SI_OVHD_R NUMBER;
449   BEGIN
450     SI_SI_OVHD_R := ROUND(SI_SI_OVHD / ROUND_UNIT) * ROUND_UNIT;
451     RETURN SI_SI_OVHD_R;
452   END SI_SI_OVHD_RFORMULA;
453   FUNCTION SI_SI_RES_RFORMULA(SI_SI_RES IN NUMBER) RETURN NUMBER IS
454     SI_SI_RES_R NUMBER;
455   BEGIN
456     SI_SI_RES_R := ROUND(SI_SI_RES / ROUND_UNIT) * ROUND_UNIT;
457     RETURN SI_SI_RES_R;
458   END SI_SI_RES_RFORMULA;
459   FUNCTION SI_SI_OSP_RFORMULA(SI_SI_OSP IN NUMBER) RETURN NUMBER IS
460     SI_SI_OSP_R NUMBER;
461   BEGIN
462     SI_SI_OSP_R := ROUND(SI_SI_OSP / ROUND_UNIT) * ROUND_UNIT;
463     RETURN SI_SI_OSP_R;
464   END SI_SI_OSP_RFORMULA;
465   FUNCTION P_REPORT_NAMEVALIDTRIGGER RETURN BOOLEAN IS
466   BEGIN
467     RETURN (TRUE);
468   END P_REPORT_NAMEVALIDTRIGGER;
469   FUNCTION AFTERPFORM RETURN BOOLEAN IS
470   BEGIN
471     IF (P_SUBINV_FROM IS NULL AND P_SUBINV_TO IS NULL) THEN
472       P_SUB_INV_SEC := '(1=1)';
473     ELSIF (P_SUBINV_FROM IS NOT NULL AND P_SUBINV_TO IS NULL) THEN
474       P_SUB_INV_SEC := 'SEC.SECONDARY_INVENTORY_NAME >= :P_SUBINV_FROM';
475     ELSIF (P_SUBINV_FROM IS NULL AND P_SUBINV_TO IS NOT NULL) THEN
476       P_SUB_INV_SEC := 'SEC.SECONDARY_INVENTORY_NAME <= :P_SUBINV_TO';
477     ELSE
478       P_SUB_INV_SEC := 'SEC.SECONDARY_INVENTORY_NAME BETWEEN
479                                                :P_SUBINV_FROM AND :P_SUBINV_TO';
480     END IF;
481     IF (P_ZERO_QTY = 1 AND P_SUBINV_FROM IS NULL AND P_SUBINV_TO IS NULL) THEN
482       P_SUBINV_WHERE := 'SEC.ORGANIZATION_ID (+)  = CIQT.ORGANIZATION_ID
483                                   AND     SEC.SECONDARY_INVENTORY_NAME(+)  = CIQT.SUBINVENTORY_CODE';
484     ELSE
485       P_SUBINV_WHERE := 'SEC.ORGANIZATION_ID(+) = CIQT.ORGANIZATION_ID
486                                   AND     SEC.SECONDARY_INVENTORY_NAME(+) = CIQT.SUBINVENTORY_CODE';
487     END IF;
488     RETURN (TRUE);
489   END AFTERPFORM;
490   FUNCTION IC_UNIT_COST1FORMULA(IC_ITEM_QTY IN NUMBER
491                                ,IC_ITEM_TOTAL IN NUMBER
492                                ,IC_UNIT_COST IN NUMBER) RETURN NUMBER IS
493   BEGIN
494     IF (IC_ITEM_QTY <> 0) THEN
495       RETURN ROUND((IC_ITEM_TOTAL / IC_ITEM_QTY)
496                   ,P_EXT_PREC);
497     ELSE
498       RETURN (IC_UNIT_COST);
499     END IF;
500   END IC_UNIT_COST1FORMULA;
501 END BOM_CSTRINVR_XMLP_PKG;
502