DBA Data[Home] [Help]

PACKAGE BODY: APPS.GME_GMEBCHYV_XMLP_PKG

Source


1 PACKAGE BODY GME_GMEBCHYV_XMLP_PKG AS
2 /* $Header: GMEBCHYVB.pls 120.0 2007/12/24 12:44:26 nchinnam noship $ */
3   FUNCTION CF_ACCTG_COST2FORMULA(CF_UOM IN VARCHAR2
4                                 ,ITEMUM IN VARCHAR2
5                                 ,DITEMID IN NUMBER
6                                 ,CF_ACTUAL_QTY_UM IN NUMBER) RETURN NUMBER IS
7     COST NUMBER;
8     V_QTY NUMBER;
9     MESSAGE_IND NUMBER;
10     MESSAGE_TEXT VARCHAR2(2000);
11   BEGIN
12     IF CF_UOM <> ITEMUM THEN
13       V_QTY := INV_CONVERT.INV_UM_CONVERT(ITEM_ID => DITEMID
14                                          ,PRECISION => 5
15                                          ,FROM_QUANTITY => NVL(CF_ACTUAL_QTY_UM
16                                             ,0)
17                                          ,FROM_UNIT => CF_UOM
18                                          ,TO_UNIT => ITEMUM
19                                          ,FROM_NAME => NULL
20                                          ,TO_NAME => NULL);
21     ELSE
22       V_QTY := NVL(CF_ACTUAL_QTY_UM
23                   ,0);
24     END IF;
25     COST := V_QTY * CP_ITEM_COST;
26     RETURN (COST);
27   EXCEPTION
28     WHEN OTHERS THEN
29       GME_COMMON_PVT.COUNT_AND_GET(P_ENCODED => 'F'
30                                   ,X_DATA => MESSAGE_TEXT
31                                   ,X_COUNT => MESSAGE_IND);
32       /*SRW.MESSAGE(100
33                  ,'Error in UOM Conversion ' || MESSAGE_TEXT)*/NULL;
34       /*RAISE SRW.PROGRAM_ABORT*/RAISE_APPLICATION_ERROR(-20101,null);
35   END CF_ACCTG_COST2FORMULA;
36 
37   FUNCTION CF_QUANTITY_VARIANCE(CF_ACTUAL_QTY_UM IN NUMBER
38                                ,CF_PLAN_QTY_ITEMUM IN NUMBER) RETURN NUMBER IS
39     V_RET_VAL NUMBER;
40   BEGIN
41     V_RET_VAL := (NVL(CF_ACTUAL_QTY_UM
42                     ,0) - NVL(CF_PLAN_QTY_ITEMUM
43                     ,0));
44     RETURN V_RET_VAL;
45   END CF_QUANTITY_VARIANCE;
46 
47   FUNCTION CF_VALUE_VARIANCE(CF_ACCTG_COST2 IN NUMBER
48                             ,CF_ACCTNG_COST1 IN NUMBER) RETURN NUMBER IS
49   BEGIN
50     RETURN (NVL(CF_ACCTG_COST2
51               ,0) - NVL(CF_ACCTNG_COST1
52               ,0));
53   END CF_VALUE_VARIANCE;
54 
55   FUNCTION CF_VARIANCE_PCT(CF_PLAN_QTY_ITEMUM IN NUMBER
56                           ,CF_QUANTITY_VARIANCE IN NUMBER) RETURN NUMBER IS
57     TEMPFIELD NUMBER;
58   BEGIN
59     IF ((CF_PLAN_QTY_ITEMUM = 0) OR CF_PLAN_QTY_ITEMUM IS NULL) THEN
60       IF CF_QUANTITY_VARIANCE = 0 THEN
61         TEMPFIELD := 0;
62       ELSE
63         TEMPFIELD := 100;
64       END IF;
65     ELSE
66       TEMPFIELD := (CF_QUANTITY_VARIANCE / CF_PLAN_QTY_ITEMUM) * 100;
67     END IF;
68     RETURN (TEMPFIELD);
69   END CF_VARIANCE_PCT;
70 
71   FUNCTION CF_FORMULA_QTY(RECIPE_VALIDITY_RULE_ID IN NUMBER
72                          ,BATCH_ID IN NUMBER) RETURN NUMBER IS
73     PLANQTY NUMBER;
74     ITEMUM VARCHAR2(4);
75     ORGID NUMBER;
76   BEGIN
77     IF RECIPE_VALIDITY_RULE_ID IS NOT NULL THEN
78       SELECT
79         PLAN_QTY,
80         DTL_UM
81       INTO PLANQTY,ITEMUM
82       FROM
83         GME_MATERIAL_DETAILS PMD
84       WHERE PMD.LINE_TYPE = 1
85         AND PMD.BATCH_ID = cf_formula_qty.BATCH_ID
86         AND INVENTORY_ITEM_ID = (
87         SELECT
88           INVENTORY_ITEM_ID
89         FROM
90           GMD_RECIPE_VALIDITY_RULES
91         WHERE RECIPE_VALIDITY_RULE_ID = cf_formula_qty.RECIPE_VALIDITY_RULE_ID )
92         AND ORGANIZATION_ID = P_ORG_ID;
93     ELSE
94       SELECT
95         PLAN_QTY,
96         DTL_UM
97       INTO PLANQTY,ITEMUM
98       FROM
99         GME_MATERIAL_DETAILS PMD
100       WHERE PMD.LINE_TYPE = 1
101         AND PMD.LINE_NO = 1
102         AND PMD.BATCH_ID = cf_formula_qty.BATCH_ID
103         AND ORGANIZATION_ID = P_ORG_ID;
104     END IF;
105     BATCHUM := ITEMUM;
106     RETURN (PLANQTY);
107     RETURN NULL;
108   EXCEPTION
109     WHEN OTHERS THEN
110       BATCHUM := NULL;
111       RETURN (NULL);
112   END CF_FORMULA_QTY;
113 
114   FUNCTION CF_BATCHRANGEFORMULA RETURN VARCHAR2 IS
115   BEGIN
116     /*SRW.REFERENCE(CP_BATCHRANGE)*/NULL;
117     IF FROMBATCH IS NOT NULL AND TOBATCH IS NOT NULL AND LPAD(FROMBATCH
118         ,32
119         ,'0') = LPAD(TOBATCH
120         ,32
121         ,'0') THEN
122       CP_BATCHRANGE := ' and Lpad(h.batch_no,32,''0'') = ' || '''' || LPAD(FROMBATCH
123                            ,32
124                            ,'0') || '''';
125     ELSIF FROMBATCH IS NOT NULL AND TOBATCH IS NOT NULL THEN
126       CP_BATCHRANGE := ' and Lpad(h.batch_no,32,''0'') between ' || '''' || LPAD(FROMBATCH
127                            ,32
128                            ,'0') || '''' || ' and ' || '''' || LPAD(TOBATCH
129                            ,32
130                            ,'0') || '''';
131     ELSIF FROMBATCH IS NULL AND TOBATCH IS NULL THEN
132       CP_BATCHRANGE := ' ';
133     ELSIF FROMBATCH IS NOT NULL AND TOBATCH IS NULL THEN
134       CP_BATCHRANGE := 'and Lpad(h.batch_no,32,''0'') >= ' || '''' || LPAD(FROMBATCH
135                            ,32
136                            ,'0') || '''';
137     ELSIF FROMBATCH IS NULL AND TOBATCH IS NOT NULL THEN
138       CP_BATCHRANGE := 'and Lpad(h.batch_no,32,''0'') <= ' || '''' || LPAD(TOBATCH
139                            ,32
140                            ,'0') || '''';
141     END IF;
142     RETURN NULL;
143   END CF_BATCHRANGEFORMULA;
144 
145   FUNCTION CF_DATERANGEFORMULA RETURN VARCHAR2 IS
146   BEGIN
147     /*SRW.REFERENCE(CP_DATERANGE)*/NULL;
148     RETURN NULL;
149   END CF_DATERANGEFORMULA;
150 
151   FUNCTION CF_ITEM_RANGE RETURN VARCHAR2 IS
152   BEGIN
153     /*SRW.REFERENCE(CP_ITEMRANGE)*/NULL;
154     IF FROMITEM IS NOT NULL AND TOITEM IS NOT NULL AND FROMITEM = TOITEM THEN
155       CP_ITEMRANGE := ' and im.concatenated_segments = ' || '''' || FROMITEM || '''';
156     ELSIF FROMITEM IS NOT NULL AND TOITEM IS NOT NULL THEN
157       CP_ITEMRANGE := ' and im.concatenated_segments between ' || '''' || FROMITEM || ''' and ' || '''' || TOITEM || '''';
158     ELSIF FROMITEM IS NULL AND TOITEM IS NULL THEN
159       CP_ITEMRANGE := ' ';
160     ELSIF FROMITEM IS NOT NULL AND TOITEM IS NULL THEN
161       CP_ITEMRANGE := 'and im.concatenated_segments >= ' || '''' || FROMITEM || '''';
162     ELSIF FROMITEM IS NULL AND TOITEM IS NOT NULL THEN
163       CP_ITEMRANGE := 'and im.concatenated_segments <= ' || '''' || TOITEM || '''';
164     END IF;
165     RETURN NULL;
166   END CF_ITEM_RANGE;
167 
168   FUNCTION CF_PLAN_QTY_ITEMUMFORMULA(FORMULALINE_ID IN NUMBER
169                                     ,RECIPE_VALIDITY_RULE_ID IN NUMBER
170                                     ,FORMULA_ID IN NUMBER
171                                     ,BATCH_ID IN NUMBER) RETURN NUMBER IS
172     X_ITEM_ID NUMBER(10);
173     P_SCALE_TAB GMD_COMMON_SCALE.SCALE_TAB;
174     X_SCALE_TAB GMD_COMMON_SCALE.SCALE_TAB;
175     X_RETURN_STATUS VARCHAR2(1);
176     MESSAGE_IND NUMBER;
177     MESSAGE_TEXT VARCHAR2(2000);
178     CURSOR CUR_FORMULA_EXISTS IS
179       SELECT
180         COUNT(1)
181       FROM
182         FND_DUAL
183       WHERE EXISTS (
184         SELECT
185           FORMULALINE_ID
186         FROM
187           GME_SCALE_DETAIL
188         WHERE FORMULALINE_ID = cf_plan_qty_itemumformula.FORMULALINE_ID );
189     CURSOR CUR_MATL_QTY IS
190       SELECT
191         QTY
192       FROM
193         GME_SCALE_DETAIL
194       WHERE FORMULALINE_ID = cf_plan_qty_itemumformula.FORMULALINE_ID;
195     CURSOR CUR_PRIMARY_PROD IS
196       SELECT
197         INVENTORY_ITEM_ID
198       FROM
199         GMD_RECIPE_VALIDITY_RULES
200       WHERE RECIPE_VALIDITY_RULE_ID = cf_plan_qty_itemumformula.RECIPE_VALIDITY_RULE_ID;
201     CURSOR CUR_ITEM_UM(V_ITEM_ID IN NUMBER) IS
202       SELECT
203         PRIMARY_UOM_CODE
204       FROM
205         MTL_SYSTEM_ITEMS_B
206       WHERE ORGANIZATION_ID = P_ORG_ID
207         AND INVENTORY_ITEM_ID = V_ITEM_ID;
208     CURSOR CUR_FORM_DTL IS
209       SELECT
210         QTY,
211         DETAIL_UOM
212       FROM
213         FM_MATL_DTL
214       WHERE FORMULA_ID = cf_plan_qty_itemumformula.FORMULA_ID
215         AND ORGANIZATION_ID = P_ORG_ID
216         AND INVENTORY_ITEM_ID = X_ITEM_ID
217         AND LINE_TYPE = 1;
218     CURSOR CUR_BATCH_DTL IS
219       SELECT
220         PLAN_QTY,
221         DTL_UM
222       FROM
223         GME_MATERIAL_DETAILS
224       WHERE BATCH_ID = cf_plan_qty_itemumformula.BATCH_ID
225         AND INVENTORY_ITEM_ID = X_ITEM_ID
226         AND LINE_TYPE = 1;
227     CURSOR CUR_PLAN_QTY IS
228       SELECT
229         QTY
230       FROM
231         GME_SCALE_DETAIL
232       WHERE FORMULALINE_ID = cf_plan_qty_itemumformula.FORMULALINE_ID;
233     CURSOR CUR_SCRAP_FACTOR IS
234       SELECT
235         SCRAP_FACTOR
236       FROM
237         FM_MATL_DTL
238       WHERE FORMULALINE_ID = cf_plan_qty_itemumformula.FORMULALINE_ID
239         AND FORMULA_ID = cf_plan_qty_itemumformula.FORMULA_ID
240         AND LINE_TYPE = - 1;
241     CURSOR CUR_GET_FORMULA_DETAILS IS
242       SELECT
243         FORMULALINE_ID,
244         QTY,
245         DETAIL_UOM,
246         SCALE_TYPE,
247         LINE_TYPE,
248         INVENTORY_ITEM_ID,
249         SCALE_MULTIPLE,
250         SCALE_ROUNDING_VARIANCE,
251         ROUNDING_DIRECTION,
252         CONTRIBUTE_YIELD_IND
253       FROM
254         FM_MATL_DTL
255       WHERE FORMULA_ID = cf_plan_qty_itemumformula.FORMULA_ID;
256     X_TRANS_QTY NUMBER := 0;
257     X_COUNT NUMBER(5);
258     X_ITEM_UM VARCHAR2(4);
259     X_QTY NUMBER;
260     X_DTL_UM VARCHAR2(4);
261     X_CONV_QTY_FORM NUMBER;
262     X_CONV_QTY_BATCH NUMBER;
263     X_SCALE_FACTOR NUMBER;
264     X_SCRAP_FACTOR NUMBER;
265     X_RVAR NUMBER(5);
266     I NUMBER;
267     pragma autonomous_transaction;
268   BEGIN
269     IF FORMULALINE_ID > 0 THEN
270       OPEN CUR_FORMULA_EXISTS;
271       FETCH CUR_FORMULA_EXISTS
272        INTO X_COUNT;
273       CLOSE CUR_FORMULA_EXISTS;
274       IF X_COUNT = 0 THEN
275         OPEN CUR_PRIMARY_PROD;
276         FETCH CUR_PRIMARY_PROD
277          INTO X_ITEM_ID;
278         CLOSE CUR_PRIMARY_PROD;
279         OPEN CUR_ITEM_UM(X_ITEM_ID);
280         FETCH CUR_ITEM_UM
281          INTO X_ITEM_UM;
282         CLOSE CUR_ITEM_UM;
283         OPEN CUR_FORM_DTL;
284         FETCH CUR_FORM_DTL
285          INTO X_QTY,X_DTL_UM;
286         CLOSE CUR_FORM_DTL;
287         IF X_DTL_UM <> X_ITEM_UM THEN
288           BEGIN
289             X_CONV_QTY_FORM := INV_CONVERT.INV_UM_CONVERT(ITEM_ID => X_ITEM_ID
290                                                          ,PRECISION => 5
291                                                          ,FROM_QUANTITY => X_QTY
292                                                          ,FROM_UNIT => X_DTL_UM
293                                                          ,TO_UNIT => X_ITEM_UM
294                                                          ,FROM_NAME => NULL
295                                                          ,TO_NAME => NULL);
296           EXCEPTION
297             WHEN OTHERS THEN
298               GME_COMMON_PVT.COUNT_AND_GET(P_ENCODED => 'F'
299                                           ,X_DATA => MESSAGE_TEXT
300                                           ,X_COUNT => MESSAGE_IND);
301               /*SRW.MESSAGE(100
302                          ,'Error in UOM Conversion ' || MESSAGE_TEXT)*/NULL;
303               /*RAISE SRW.PROGRAM_ABORT*/RAISE_APPLICATION_ERROR(-20101,null);
304           END;
305         ELSE
306           X_CONV_QTY_FORM := X_QTY;
307         END IF;
308         OPEN CUR_BATCH_DTL;
309         FETCH CUR_BATCH_DTL
310          INTO X_QTY,X_DTL_UM;
311         CLOSE CUR_BATCH_DTL;
312         IF X_DTL_UM <> X_ITEM_UM THEN
313           BEGIN
314             X_CONV_QTY_BATCH := INV_CONVERT.INV_UM_CONVERT(ITEM_ID => X_ITEM_ID
315                                                           ,PRECISION => 5
316                                                           ,FROM_QUANTITY => X_QTY
317                                                           ,FROM_UNIT => X_DTL_UM
318                                                           ,TO_UNIT => X_ITEM_UM
319                                                           ,FROM_NAME => NULL
320                                                           ,TO_NAME => NULL);
321           EXCEPTION
322             WHEN OTHERS THEN
323               GME_COMMON_PVT.COUNT_AND_GET(P_ENCODED => 'F'
324                                           ,X_DATA => MESSAGE_TEXT
325                                           ,X_COUNT => MESSAGE_IND);
326               /*SRW.MESSAGE(100
327                          ,'Error in UOM Conversion ' || MESSAGE_TEXT)*/NULL;
328               /*RAISE SRW.PROGRAM_ABORT*/RAISE_APPLICATION_ERROR(-20101,null);
329           END;
330         ELSE
331           X_CONV_QTY_BATCH := X_QTY;
332         END IF;
333         IF X_CONV_QTY_FORM > 0 THEN
334           X_SCALE_FACTOR := X_CONV_QTY_BATCH / X_CONV_QTY_FORM;
335         ELSE
336           X_SCALE_FACTOR := 0;
337         END IF;
338         I := 1;
339         FOR fm_rec IN CUR_GET_FORMULA_DETAILS LOOP
340           P_SCALE_TAB(I).LINE_NO := FM_REC.FORMULALINE_ID;
341           P_SCALE_TAB(I).LINE_TYPE := FM_REC.LINE_TYPE;
342           P_SCALE_TAB(I).INVENTORY_ITEM_ID := FM_REC.INVENTORY_ITEM_ID;
343           P_SCALE_TAB(I).QTY := FM_REC.QTY;
344           P_SCALE_TAB(I).DETAIL_UOM := FM_REC.DETAIL_UOM;
345           P_SCALE_TAB(I).SCALE_TYPE := FM_REC.SCALE_TYPE;
346           P_SCALE_TAB(I).SCALE_MULTIPLE := FM_REC.SCALE_MULTIPLE;
347           P_SCALE_TAB(I).SCALE_ROUNDING_VARIANCE := FM_REC.SCALE_ROUNDING_VARIANCE;
348           P_SCALE_TAB(I).ROUNDING_DIRECTION := FM_REC.ROUNDING_DIRECTION;
349           P_SCALE_TAB(I).CONTRIBUTE_YIELD_IND := FM_REC.CONTRIBUTE_YIELD_IND;
350           I := I + 1;
351         END LOOP;
352         GMD_COMMON_SCALE.SCALE(P_SCALE_TAB
353                               ,P_ORG_ID
354                               ,X_SCALE_FACTOR
355                               ,'OUTPUTS'
356                               ,X_SCALE_TAB
357                               ,X_RETURN_STATUS);
358         IF X_RETURN_STATUS = 'S' THEN
359           FOR i IN 1 .. X_SCALE_TAB.COUNT LOOP
360             INSERT INTO GME_SCALE_DETAIL(FORMULALINE_ID,LINE_TYPE,ITEM_ID,QTY,ITEM_UM,SCALE_TYPE,CONV_QTY)
361             VALUES   (X_SCALE_TAB(I).LINE_NO
362               , X_SCALE_TAB(I).LINE_TYPE
363               ,X_SCALE_TAB(I).INVENTORY_ITEM_ID
364               , X_SCALE_TAB(I).QTY
365               , X_SCALE_TAB(I).DETAIL_UOM
366               , X_SCALE_TAB(I).SCALE_TYPE
367               , X_SCALE_TAB(I).QTY);
368           END LOOP;
369           commit;
370         END IF;
371       END IF;
372       OPEN CUR_PLAN_QTY;
373       FETCH CUR_PLAN_QTY
374        INTO X_TRANS_QTY;
375       CLOSE CUR_PLAN_QTY;
376       OPEN CUR_SCRAP_FACTOR;
377       FETCH CUR_SCRAP_FACTOR
378        INTO X_SCRAP_FACTOR;
379       CLOSE CUR_SCRAP_FACTOR;
380       IF X_SCRAP_FACTOR > 0 THEN
381         X_TRANS_QTY := X_TRANS_QTY * (1 + X_SCRAP_FACTOR);
382       END IF;
383     ELSE
384       RETURN (0);
385     END IF;
386     RETURN (X_TRANS_QTY);
387     RETURN NULL;
388   EXCEPTION
389     WHEN OTHERS THEN
390       RETURN (0);
391   END CF_PLAN_QTY_ITEMUMFORMULA;
392 
393   FUNCTION CF_ACTUAL_QTY_UMFORMULA(MD_BATCHUM IN VARCHAR2
394                                   ,MD_FORMUM IN VARCHAR2
395                                   ,AQTY IN NUMBER
396                                   ,ITEM_ID IN NUMBER) RETURN NUMBER IS
397     V_ACTUAL_QTY_ITEMUM NUMBER;
398     V_RETVAL NUMBER;
399   BEGIN
400     IF (MD_BATCHUM <> MD_FORMUM OR NVL(AQTY
401        ,0) <> 0) THEN
402       V_ACTUAL_QTY_ITEMUM := 0;
403       V_ACTUAL_QTY_ITEMUM := INV_CONVERT.INV_UM_CONVERT(ITEM_ID => cf_actual_qty_umformula.ITEM_ID
404                                                        ,PRECISION => 5
405                                                        ,FROM_QUANTITY => NVL(AQTY
406                                                           ,0)
407                                                        ,FROM_UNIT => MD_BATCHUM
408                                                        ,TO_UNIT => MD_FORMUM
409                                                        ,FROM_NAME => NULL
410                                                        ,TO_NAME => NULL);
411       RETURN V_ACTUAL_QTY_ITEMUM;
412     ELSE
413       RETURN NVL(AQTY
414                 ,0);
415     END IF;
416     RETURN NULL;
417   END CF_ACTUAL_QTY_UMFORMULA;
418 
419   FUNCTION BEFOREREPORT RETURN BOOLEAN IS
420     CO_CODE VARCHAR2(4);
421   BEGIN
422     P_CONC_REQUEST_ID := FND_GLOBAL.CONC_REQUEST_ID;
423     /*SRW.USER_EXIT('FND SRWINIT')*/NULL;
424     DELETE FROM GME_SCALE_DETAIL;
425     RETURN (TRUE);
426     RETURN NULL;
427   EXCEPTION
428     WHEN OTHERS THEN
429       RETURN (TRUE);
430   END BEFOREREPORT;
431 
432   FUNCTION CF_ACCTNG_COST1FORMULA(DITEMID IN NUMBER
433                                  ,ACTUAL_CMPLT_DATE IN DATE
434                                  ,CF_UOM IN VARCHAR2
435                                  ,ITEMUM IN VARCHAR2
436                                  ,CF_PLAN_QTY_ITEMUM IN NUMBER) RETURN NUMBER IS
437   BEGIN
438     DECLARE
439       V_COST_BASIS NUMBER(1);
440       V_COST NUMBER;
441       V_GL_COST_MTHD VARCHAR2(4);
442       V_CO_CODE VARCHAR2(4);
443       V_RET_VAL NUMBER;
444       V_COST_MTHD VARCHAR2(1) := NULL;
445       V_CMPNTCLS_ID NUMBER := NULL;
446       V_ANALYSIS_CODE VARCHAR2(1) := NULL;
447       V_RETREIVE_IND NUMBER := NULL;
448       V_COST_CMPNTCLS_ID NUMBER;
449       V_COST_ANALYSIS_CODE VARCHAR2(1) := NULL;
450       V_ACCTG_COST NUMBER;
451       V_STND VARCHAR2(4) := 'STND';
452       COST NUMBER;
453       X_NUM_ROWS NUMBER;
454       V_QTY NUMBER;
455       MESSAGE_IND NUMBER;
456       MESSAGE_TEXT VARCHAR2(2000);
457       L_RETURN_STATUS VARCHAR2(4);
458       L_MSG_COUNT NUMBER;
459       L_MSG_DATA VARCHAR2(2000);
460     BEGIN
461       V_RET_VAL := GMF_CMCOMMON.GET_PROCESS_ITEM_COST(P_API_VERSION => 1.0
462                                                      ,P_INIT_MSG_LIST => 'T'
463                                                      ,P_ORGANIZATION_ID => P_ORG_ID
464                                                      ,P_INVENTORY_ITEM_ID => DITEMID
465                                                      ,P_TRANSACTION_DATE => TRUNC(ACTUAL_CMPLT_DATE)
466                                                      ,P_DETAIL_FLAG => 1
467                                                      ,P_COST_METHOD => V_GL_COST_MTHD
468                                                      ,P_COST_COMPONENT_CLASS_ID => V_CMPNTCLS_ID
469                                                      ,P_COST_ANALYSIS_CODE => V_ANALYSIS_CODE
470                                                      ,X_TOTAL_COST => V_ACCTG_COST
471                                                      ,X_NO_OF_ROWS => X_NUM_ROWS
472                                                      ,X_RETURN_STATUS => L_RETURN_STATUS
473                                                      ,X_MSG_COUNT => L_MSG_COUNT
474                                                      ,X_MSG_DATA => L_MSG_DATA);
475       IF V_RET_VAL = 1 THEN
476         V_COST := V_ACCTG_COST;
477       ELSE
478         V_COST := 0;
479       END IF;
480       BEGIN
481         IF CF_UOM <> ITEMUM THEN
482           V_QTY := INV_CONVERT.INV_UM_CONVERT(ITEM_ID => DITEMID
483                                              ,PRECISION => 5
484                                              ,FROM_QUANTITY => NVL(CF_PLAN_QTY_ITEMUM
485                                                 ,0)
486                                              ,FROM_UNIT => CF_UOM
487                                              ,TO_UNIT => ITEMUM
488                                              ,FROM_NAME => NULL
489                                              ,TO_NAME => NULL);
490         ELSE
491           V_QTY := NVL(CF_PLAN_QTY_ITEMUM
492                       ,0);
493         END IF;
494       EXCEPTION
495         WHEN OTHERS THEN
496           GME_COMMON_PVT.COUNT_AND_GET(P_ENCODED => 'F'
497                                       ,X_DATA => MESSAGE_TEXT
498                                       ,X_COUNT => MESSAGE_IND);
499           /*SRW.MESSAGE(100
500                      ,'Error in UOM Conversion ' || MESSAGE_TEXT)*/NULL;
501           /*RAISE SRW.PROGRAM_ABORT*/RAISE_APPLICATION_ERROR(-20101,null);
502       END;
503       COST := V_QTY * V_COST;
504       CP_ITEM_COST := V_COST;
505       RETURN (COST);
506     EXCEPTION
507       WHEN OTHERS THEN
508         RETURN NULL;
509     END;
510     RETURN NULL;
511   END CF_ACCTNG_COST1FORMULA;
512 
513   FUNCTION CF_DELETE_TRANSFORMULA RETURN NUMBER IS
514    pragma autonomous_transaction;
515   BEGIN
516     DELETE FROM GME_SCALE_DETAIL;
517     commit;
518     RETURN (1);
519   END CF_DELETE_TRANSFORMULA;
520 
521   FUNCTION AFTERREPORT RETURN BOOLEAN IS
522   BEGIN
523     DELETE FROM GME_SCALE_DETAIL;
524     /*SRW.USER_EXIT('FND SRWEXIT')*/NULL;
525     RETURN (TRUE);
526   END AFTERREPORT;
527 
528   PROCEDURE HEADER IS
529   BEGIN
530     NULL;
531   END HEADER;
532 
533   FUNCTION CF_UOMFORMULA(MD_FORMUM IN VARCHAR2
534                         ,MD_BATCHUM IN VARCHAR2) RETURN CHAR IS
535   BEGIN
536     IF MD_FORMUM = ' ' THEN
537       RETURN MD_BATCHUM;
538     ELSE
539       RETURN MD_FORMUM;
540     END IF;
541   END CF_UOMFORMULA;
542 
543   FUNCTION CF_CONTEXT_ORGFORMULA RETURN VARCHAR2 IS
544     CURSOR C_GET_ORG IS
545       SELECT
546         ORGANIZATION_CODE
547       FROM
548         MTL_PARAMETERS
549       WHERE ORGANIZATION_ID = P_ORG_ID;
550     L_ORG VARCHAR2(6);
551   BEGIN
552     OPEN C_GET_ORG;
553     FETCH C_GET_ORG
554      INTO L_ORG;
555     CLOSE C_GET_ORG;
556     L_ORG := '(' || L_ORG || ')';
557     RETURN L_ORG;
558   END CF_CONTEXT_ORGFORMULA;
559 
560   FUNCTION BATCHUM_P RETURN VARCHAR2 IS
561   BEGIN
562     RETURN BATCHUM;
563   END BATCHUM_P;
564 
565   FUNCTION CP_ITEM_COST_P RETURN NUMBER IS
566   BEGIN
567     RETURN CP_ITEM_COST;
568   END CP_ITEM_COST_P;
569 
570   FUNCTION CP_BATCHRANGE_P RETURN VARCHAR2 IS
571   BEGIN
572     RETURN CP_BATCHRANGE;
573   END CP_BATCHRANGE_P;
574 
575   FUNCTION CP_DATERANGE_P RETURN VARCHAR2 IS
576   BEGIN
577     RETURN CP_DATERANGE;
578   END CP_DATERANGE_P;
579 
580   FUNCTION CP_ITEMRANGE_P RETURN VARCHAR2 IS
581   BEGIN
582     RETURN CP_ITEMRANGE;
583   END CP_ITEMRANGE_P;
584 
585 END GME_GMEBCHYV_XMLP_PKG;
586 
587