DBA Data[Home] [Help]

PACKAGE BODY: APPS.BOM_CSTROMMA_XMLP_PKG

Source


1 PACKAGE BODY BOM_CSTROMMA_XMLP_PKG AS
2 /* $Header: CSTROMMAB.pls 120.1 2008/01/02 16:31:33 dwkrishn noship $ */
3   FUNCTION BEFOREREPORT RETURN BOOLEAN IS
4   ecode number;
5   emesg varchar2(100);
6   BEGIN
7     DECLARE
8       L_FCN_CURRENCY VARCHAR2(50);
9       L_LOCATION VARCHAR2(50);
10       L_CONTEXT VARCHAR2(240);
11       L_IF_OU_NOT_INVORG NUMBER;
12     BEGIN
13 	    P_CONC_REQUEST_ID := FND_GLOBAL.CONC_REQUEST_ID;
14 	    P_PCT_FROM_V:=P_PCT_FROM;
15 	    P_PCT_TO_V :=P_PCT_TO;
16 
17 	    if P_DATE_FROM is not null then
18 		LP_DATE_FROM := to_char(P_DATE_FROM, 'DD-MON-YYYY');
19 	    end if;
20 
21 	    if P_DATE_TO is not null then
22 		LP_DATE_TO := to_char(P_DATE_TO, 'DD-MON-YYYY');
23 	    end if;
24 
25 	    if P_CURRENCY_CODE is null then
26 	    	LP_CURRENCY_CODE := 'USD';
27 	    ELSE
28 	    	LP_CURRENCY_CODE := P_CURRENCY_CODE;
29 	    end if;
30 
31 
32 
33       SELECT
34         NVL(MULTI_ORG_FLAG
35            ,'N')
36       INTO P_MULTI_ORG_FLAG
37       FROM
38         FND_PRODUCT_GROUPS;
39 
40 
41       L_IF_OU_NOT_INVORG := 0;
42 
43       IF P_VIEW_COST <> 1 THEN
44         FND_MESSAGE.SET_NAME('null'
45                             ,'null');
46         /*SRW.USER_EXIT('FND MESSAGE_DISPLAY')*/NULL;
47         /*RAISE SRW.PROGRAM_ABORT*/RAISE_APPLICATION_ERROR(-20101,null);
48       END IF;
49 
50       L_LOCATION := 'ORGANIZATION_ID';
51 
52       SELECT
53         MIN(OOD.ORGANIZATION_ID)
54       INTO L_IF_OU_NOT_INVORG
55       FROM
56         ORG_ORGANIZATION_DEFINITIONS OOD
57       WHERE DECODE(P_MULTI_ORG_FLAG
58             ,'Y'
59             ,OOD.OPERATING_UNIT
60             ,OOD.ORGANIZATION_ID) = P_OPERATING_UNIT;
61 
62 
63       SELECT
64         O.ORGANIZATION_NAME,
65         MP.MASTER_ORGANIZATION_ID,
66         MP.COST_ORGANIZATION_ID,
67         NVL(MINIMUM_ACCOUNTABLE_UNIT
68            ,POWER(10
69                 ,NVL(-PRECISION
70                    ,0))),
71         NVL(FC.EXTENDED_PRECISION
72            ,NVL(FC.PRECISION
73               ,0)),
74         MCS.CATEGORY_SET_NAME,
75         LU1.MEANING,
76         LU2.MEANING,
77         LU3.MEANING
78       INTO P_ORGANIZATION,P_MASTER_ORG_ID,P_COST_ORG_ID,P_ROUND_UNIT,P_EXT_PREC,P_CAT_SET_NAME,P_SORT_BY,P_CUST_OPT_DSP,P_RPT_OPT_DSP
79       FROM
80         ORG_ORGANIZATION_DEFINITIONS O,
81         FND_CURRENCIES FC,
82         MTL_CATEGORY_SETS MCS,
83         MTL_PARAMETERS MP,
84         MFG_LOOKUPS LU1,
85         MFG_LOOKUPS LU2,
86         MFG_LOOKUPS LU3
87       WHERE FC.CURRENCY_CODE = LP_CURRENCY_CODE
88         AND MP.ORGANIZATION_ID = L_IF_OU_NOT_INVORG
89         AND MCS.CATEGORY_SET_ID = P_CATEGORY_SET
90         AND O.ORGANIZATION_ID = MP.MASTER_ORGANIZATION_ID
91         AND LU1.LOOKUP_TYPE = 'CST_ITEM_REPORT_SORT'
92         AND LU1.LOOKUP_CODE = P_SORT_OPTION
93         AND LU2.LOOKUP_TYPE = 'CST_RA_CUSTOMER_TYPE'
94         AND LU2.LOOKUP_CODE = NVL(P_CUST_OPT
95          ,2)
96         AND LU3.LOOKUP_TYPE = 'CST_BICR_DETAIL_OPTION'
97         AND LU3.LOOKUP_CODE = NVL(P_RPT_OPTION
98          ,1);
99 
100 
101 QTY:= GET_PRECISION(P_EXT_PREC);
102 QTY_V:= GET_PRECISION(P_QTY_PRECISION);
103 
104       IF P_COST_TYPE_ID IS NULL THEN
105         L_LOCATION := 'P_COST_TYPE_ID is NULL';
106         P_SQL_SELECT_COST_TYPE := ' NVL( temp.cogs_amount, 0 ) ';
107         P_SQL_FROM_COST_TYPE := ' ';
108         P_SQL_WHERE_COST_TYPE := ' 0=0 ';
109       ELSE
110         L_LOCATION := 'P_COST_TYPE_ID is not NULL';
111         SELECT
112           COST_TYPE,
113           DEFAULT_COST_TYPE_ID
114         INTO P_COST_TYPE,P_DEF_COST_TYPE
115         FROM
116           CST_COST_TYPES
117         WHERE COST_TYPE_ID = P_COST_TYPE_ID;
118         P_SQL_SELECT_COST_TYPE := ' NVL( temp.ship_quantity, 0 ) * ' || ' NVL( decode( cic1.cost_type_id, null, cic2.item_cost, cic1.item_cost ), 0 ) ';
119         P_SQL_FROM_COST_TYPE := ', cst_item_costs cic1, cst_item_costs cic2';
120         P_SQL_WHERE_COST_TYPE := ' cic1.cost_type_id(+) = ' || P_COST_TYPE_ID || ' and ' || ' cic1.inventory_item_id(+) = temp.inventory_item_id and '
121 	|| ' cic1.organization_id(+)   = temp.organization_id   and ' || ' cic2.cost_type_id(+)      = ' || P_DEF_COST_TYPE || ' and ' || ' cic2.inventory_item_id(+) = temp.inventory_item_id and ' || ' cic2.organization_id(+)   = temp.organization_id ';
122       END IF;
123 
124       L_LOCATION := 'P_OPERATING_UNIT';
125 
126       SELECT
127         NAME
128       INTO P_OPERATING_UNIT_NAME
129       FROM
130         HR_OPERATING_UNITS
131       WHERE ORGANIZATION_ID = P_OPERATING_UNIT;
132 
133       L_LOCATION := 'CONFIG_ITEM_DETAILS';
134 
135       SELECT
136         MEANING
137       INTO P_CONFIG_ITEM_DTLS_OPTS
138       FROM
139         MFG_LOOKUPS
140       WHERE LOOKUP_TYPE = 'SYS_YES_NO'
141         AND LOOKUP_CODE = NVL(P_CONFIG_ITEM_DETAILS
142          ,2);
143 
144       L_LOCATION := 'ORDER_NUMBER';
145 
146       SELECT
147         MIN(ORDER_NUMBER)
148       INTO P_ORDER_NUMBER
149       FROM
150         OE_ORDER_HEADERS_ALL
151       WHERE HEADER_ID = P_HEADER_ID;
152 
153       L_LOCATION := 'P_RANGE';
154 
155       IF (P_RPT_OPTION = 2 AND P_SORT_OPTION = 4 AND P_PCT_FROM IS NOT NULL AND P_PCT_TO IS NOT NULL) THEN
156         P_RANGE_WHERE := 'SUM(NVL(TEMP.INVOICED_AMOUNT,0)) <>0';
157       ELSE
158         P_RANGE_WHERE := '1 = 1';
159       END IF;
160 
161       IF P_CUSTOMER IS NOT NULL THEN
162         L_LOCATION := 'P_CUSTOMER';
163         SELECT
164           HP.PARTY_NAME
165         INTO P_CUSTOMER_NAME
166         FROM
167           HZ_CUST_ACCOUNTS HCA,
168           HZ_PARTIES HP
169         WHERE HCA.CUST_ACCOUNT_ID = P_CUSTOMER
170           AND HP.PARTY_ID = HCA.PARTY_ID;
171       END IF;
172 
173       IF P_SALESREP IS NOT NULL THEN
174         L_LOCATION := 'P_SALESREP';
175 
176         SELECT
177           NAME
178         INTO P_SALESREP_NAME
179         FROM
180           RA_SALESREPS_ALL
181         WHERE SALESREP_ID = P_SALESREP
182           AND DECODE(P_MULTI_ORG_FLAG
183               ,'Y'
184               ,NVL(ORG_ID
185                  ,-999)
186               ,999) = DECODE(P_MULTI_ORG_FLAG
187               ,'Y'
188               ,NVL(P_OPERATING_UNIT
189                  ,NVL(ORG_ID
190                     ,-999))
191               ,999);
192       END IF;
193 
194       IF P_SALES_CHANNEL_CODE IS NOT NULL THEN
195         L_LOCATION := 'P_SALESCHANNEL';
196         SELECT
197           MEANING
198         INTO P_SALES_CHANNEL
199         FROM
200           SO_LOOKUPS
201         WHERE LOOKUP_TYPE = 'SALES_CHANNEL'
202           AND LOOKUP_CODE = P_SALES_CHANNEL_CODE;
203       END IF;
204 
205       IF P_CLASS_CODE IS NOT NULL THEN
206         L_LOCATION := 'P_CLASS';
207         SELECT
208           MEANING
209         INTO P_CLASS
210         FROM
211           AR_LOOKUPS
212         WHERE LOOKUP_TYPE = 'CUSTOMER CLASS'
213           AND LOOKUP_CODE = P_CLASS_CODE;
214       END IF;
215 
216       IF P_TERRITORY_ID IS NOT NULL THEN
217         L_LOCATION := 'P_TERRITORY';
218         SELECT
219           NAME
220         INTO P_TERRITORY
221         FROM
222           RA_TERRITORIES
223         WHERE TERRITORY_ID = P_TERRITORY_ID;
224       END IF;
225 
226       L_LOCATION := 'P_CURRENCY_CODE';
227       SELECT
228         SOB.CURRENCY_CODE
229       INTO L_FCN_CURRENCY
230       FROM
231         GL_SETS_OF_BOOKS SOB,
232         ORG_ORGANIZATION_DEFINITIONS OOD
233       WHERE OOD.ORGANIZATION_ID = L_IF_OU_NOT_INVORG
234         AND SOB.SET_OF_BOOKS_ID = OOD.SET_OF_BOOKS_ID;
235 
236       IF L_FCN_CURRENCY = LP_CURRENCY_CODE THEN
237         P_CURRENCY_DSP := LP_CURRENCY_CODE;
238       ELSE
239         P_CURRENCY_DSP := LP_CURRENCY_CODE || ' @ ' || TO_CHAR(ROUND(1 / P_EXCHANGE_RATE
240                                        ,5)) || L_FCN_CURRENCY;
241       END IF;
242 
243       L_LOCATION := 'FLEXSQL';
244 
245       /*SRW.MESSAGE(0
246                  ,'CSTRMRGA <<      ' || TO_CHAR(SYSDATE
247                         ,'Dy Mon FmDD HH24:MI:SS YYYY'))*/NULL;
248     EXCEPTION
249       WHEN OTHERS THEN
250         /*SRW.MESSAGE(999
251                    ,SQLERRM || ' @ ' || L_LOCATION)*/NULL;
252         /*SRW.MESSAGE(999
253                    ,'CSTRMRGA >X     ' || TO_CHAR(SYSDATE
254                           ,'Dy Mon FmDD HH24:MI:SS YYYY'))*/NULL;
255         /*RAISE SRW.PROGRAM_ABORT*/
256         ecode := SQLCODE;
257         emesg := SQLERRM;
258 
259         --RAISE_APPLICATION_ERROR(-20101,null);
260     END;
261     RETURN (TRUE);
262   END BEFOREREPORT;
263 
264   FUNCTION ITEM_MARGIN_PCTFORMULA(ITEM_SALES IN NUMBER
265                                  ,ITEM_MARGIN IN NUMBER) RETURN NUMBER IS
266   BEGIN
267     IF (ITEM_SALES = 0) THEN
268       RETURN (NULL);
269     ELSE
270       RETURN ((ITEM_MARGIN / ITEM_SALES) * 100);
271     END IF;
272     RETURN NULL;
273   END ITEM_MARGIN_PCTFORMULA;
274 
275   FUNCTION REP_MARGIN_PCTFORMULA(REP_O_SALES IN NUMBER
276                                 ,REP_O_MARGIN IN NUMBER
277                                 ,REP_IC_SALES IN NUMBER
278                                 ,REP_IC_MARGIN IN NUMBER) RETURN NUMBER IS
279   BEGIN
280     IF (P_SORT_OPTION = 3) THEN
281       IF (REP_O_SALES = 0) THEN
282         RETURN (NULL);
283       ELSE
284         RETURN ((REP_O_MARGIN / REP_O_SALES) * 100);
285       END IF;
286     ELSE
287       IF (REP_IC_SALES = 0) THEN
288         RETURN (NULL);
289       ELSE
290         RETURN ((REP_IC_MARGIN / REP_IC_SALES) * 100);
291       END IF;
292     END IF;
293     RETURN NULL;
294   END REP_MARGIN_PCTFORMULA;
295 
296   FUNCTION CAT_MARGIN_PCTFORMULA(CAT_SALES IN NUMBER
297                                 ,CAT_MARGIN IN NUMBER) RETURN NUMBER IS
298   BEGIN
299     IF (CAT_SALES = 0) THEN
300       RETURN (NULL);
301     ELSE
302       RETURN ((CAT_MARGIN / CAT_SALES) * 100);
303     END IF;
304     RETURN NULL;
305   END CAT_MARGIN_PCTFORMULA;
306 
307   FUNCTION CATEGORY_PSEGFORMULA(CATEGORY IN VARCHAR2
308                                ,CATEGORY_SEGMENT IN VARCHAR2
309                                ,CATEGORY_PSEG IN VARCHAR2) RETURN VARCHAR2 IS
310   BEGIN
311     /*SRW.REFERENCE(CATEGORY)*/NULL;
312     /*SRW.REFERENCE(CATEGORY_SEGMENT)*/NULL;
313     RETURN (CATEGORY_PSEG);
314   END CATEGORY_PSEGFORMULA;
315 
316   FUNCTION ITEM_PSEGFORMULA(ITEM_NUMBER IN VARCHAR2
317                            ,ITEM_SEGMENT IN VARCHAR2
318                            ,ITEM_PSEG IN VARCHAR2) RETURN VARCHAR2 IS
319   BEGIN
320     /*SRW.REFERENCE(ITEM_NUMBER)*/NULL;
321     /*SRW.REFERENCE(ITEM_SEGMENT)*/NULL;
322     RETURN (ITEM_PSEG);
323   END ITEM_PSEGFORMULA;
324 
325   FUNCTION AFTERREPORT RETURN BOOLEAN IS
326   BEGIN
327     /*SRW.USER_EXIT('FND SRWEXIT')*/NULL;
328     /*SRW.MESSAGE(1
329                ,'CSTRMRGA >>      ' || TO_CHAR(SYSDATE
330                       ,'Dy Mon DD HH24:MI:SS YYYY'))*/NULL;
331     RETURN (TRUE);
332   END AFTERREPORT;
333 
334   FUNCTION AVG_UNIT_PRICEFORMULA(ITEM_INVOICE_QTY IN NUMBER
335                                 ,ITEM_SALES IN NUMBER) RETURN NUMBER IS
336   BEGIN
337     IF (ITEM_INVOICE_QTY = 0) THEN
338       RETURN (0);
339     ELSE
340       RETURN (ROUND(ITEM_SALES / ITEM_INVOICE_QTY
341                   ,P_EXT_PREC));
342     END IF;
343     RETURN NULL;
344   END AVG_UNIT_PRICEFORMULA;
345 
346   FUNCTION AVG_UNIT_COSTFORMULA(ITEM_SHIP_QTY IN NUMBER
347                                ,ITEM_COGS IN NUMBER) RETURN NUMBER IS
348   BEGIN
349     IF (ITEM_SHIP_QTY = 0) THEN
350       RETURN (0);
351     ELSE
352       RETURN (ROUND(ITEM_COGS / ITEM_SHIP_QTY
353                   ,P_EXT_PREC));
354     END IF;
355     RETURN NULL;
356   END AVG_UNIT_COSTFORMULA;
357 
358   FUNCTION ITEMCATFORMULA(CATEGORY IN VARCHAR2
359                          ,CATEGORY_SEGMENT IN VARCHAR2
360                          ,CATEGORY_PSEG IN VARCHAR2) RETURN VARCHAR2 IS
361   BEGIN
362     /*SRW.REFERENCE(CATEGORY)*/NULL;
363     /*SRW.REFERENCE(CATEGORY_SEGMENT)*/NULL;
364     /*SRW.REFERENCE(CATEGORY_PSEG)*/NULL;
365     IF P_SORT_OPTION = 2 THEN
366       RETURN (CATEGORY_PSEG);
367     ELSE
368       RETURN ('Can someone give me a glue what is going on?');
369     END IF;
370     RETURN NULL;
371   END ITEMCATFORMULA;
372 
373   FUNCTION ORDER_MARGIN_PCTFORMULA(ORDER_SALES IN NUMBER
374                                   ,ORDER_MARGIN IN NUMBER) RETURN NUMBER IS
375   BEGIN
376     IF (ORDER_SALES = 0) THEN
377       RETURN (NULL);
378     ELSE
379       RETURN ((ORDER_MARGIN / ORDER_SALES) * 100);
380     END IF;
381     RETURN NULL;
382   END ORDER_MARGIN_PCTFORMULA;
383 
384   FUNCTION ORDER_SALES1FORMULA(ORDER_SALES IN NUMBER
385                               ,ORDER_MARGIN_PCT IN NUMBER) RETURN NUMBER IS
386   BEGIN
387     /*SRW.REFERENCE(ORDER_SALES)*/NULL;
388     /*SRW.REFERENCE(ORDER_MARGIN_PCT)*/NULL;
389     IF (P_SORT_OPTION = 3 AND NOT (NVL(P_PCT_FROM
390        ,ORDER_MARGIN_PCT) <= ORDER_MARGIN_PCT AND NVL(P_PCT_TO
391        ,ORDER_MARGIN_PCT) >= ORDER_MARGIN_PCT)) THEN
392       RETURN (0);
393     ELSE
394       RETURN (ORDER_SALES);
395     END IF;
396     RETURN NULL;
397   END ORDER_SALES1FORMULA;
398 
399   FUNCTION ORDER_COGS1FORMULA(ORDER_COGS IN NUMBER
400                              ,ORDER_MARGIN_PCT IN NUMBER) RETURN NUMBER IS
401   BEGIN
402     /*SRW.REFERENCE(ORDER_COGS)*/NULL;
403     /*SRW.REFERENCE(ORDER_MARGIN_PCT)*/NULL;
404     IF (P_SORT_OPTION = 3 AND NOT (NVL(P_PCT_FROM
405        ,ORDER_MARGIN_PCT) <= ORDER_MARGIN_PCT AND NVL(P_PCT_TO
406        ,ORDER_MARGIN_PCT) >= ORDER_MARGIN_PCT)) THEN
407       RETURN (0);
408     ELSE
409       RETURN (ORDER_COGS);
410     END IF;
411     RETURN NULL;
412   END ORDER_COGS1FORMULA;
413 
414   FUNCTION ORDER_MARGIN1FORMULA(ORDER_MARGIN IN NUMBER
415                                ,ORDER_MARGIN_PCT IN NUMBER) RETURN NUMBER IS
416   BEGIN
417     /*SRW.REFERENCE(ORDER_MARGIN)*/NULL;
418     /*SRW.REFERENCE(ORDER_MARGIN_PCT)*/NULL;
419     IF (P_SORT_OPTION = 3 AND NOT (NVL(P_PCT_FROM
420        ,ORDER_MARGIN_PCT) <= ORDER_MARGIN_PCT AND NVL(P_PCT_TO
421        ,ORDER_MARGIN_PCT) >= ORDER_MARGIN_PCT)) THEN
422       RETURN (0);
423     ELSE
424       RETURN (ORDER_MARGIN);
425     END IF;
426     RETURN NULL;
427   END ORDER_MARGIN1FORMULA;
428 
429   FUNCTION ITEM_SALES1FORMULA(ITEM_SALES IN NUMBER
430                              ,ITEM_MARGIN_PCT IN NUMBER) RETURN NUMBER IS
431   BEGIN
432     /*SRW.REFERENCE(ITEM_SALES)*/NULL;
433     /*SRW.REFERENCE(ITEM_MARGIN_PCT)*/NULL;
434     IF (P_SORT_OPTION <> 3 AND NOT (NVL(P_PCT_FROM
435        ,ITEM_MARGIN_PCT) <= ITEM_MARGIN_PCT AND NVL(P_PCT_TO
436        ,ITEM_MARGIN_PCT) >= ITEM_MARGIN_PCT)) THEN
437       RETURN (0);
438     ELSE
439       RETURN (ITEM_SALES);
440     END IF;
441     RETURN NULL;
442   END ITEM_SALES1FORMULA;
443 
444   FUNCTION ITEM_COGS1FORMULA(ITEM_COGS IN NUMBER
445                             ,ITEM_MARGIN_PCT IN NUMBER) RETURN NUMBER IS
446   BEGIN
447     /*SRW.REFERENCE(ITEM_COGS)*/NULL;
448     /*SRW.REFERENCE(ITEM_MARGIN_PCT)*/NULL;
449     IF (P_SORT_OPTION <> 3 AND NOT (NVL(P_PCT_FROM
450        ,ITEM_MARGIN_PCT) <= ITEM_MARGIN_PCT AND NVL(P_PCT_TO
451        ,ITEM_MARGIN_PCT) >= ITEM_MARGIN_PCT)) THEN
452       RETURN (0);
453     ELSE
454       RETURN (ITEM_COGS);
455     END IF;
456     RETURN NULL;
457   END ITEM_COGS1FORMULA;
458 
459   FUNCTION ITEM_MARGIN1FORMULA(ITEM_MARGIN IN NUMBER
460                               ,ITEM_MARGIN_PCT IN NUMBER) RETURN NUMBER IS
461   BEGIN
462     /*SRW.REFERENCE(ITEM_MARGIN)*/NULL;
463     /*SRW.REFERENCE(ITEM_MARGIN_PCT)*/NULL;
464     IF (P_SORT_OPTION <> 3 AND NOT (NVL(P_PCT_FROM
465        ,ITEM_MARGIN_PCT) <= ITEM_MARGIN_PCT AND NVL(P_PCT_TO
466        ,ITEM_MARGIN_PCT) >= ITEM_MARGIN_PCT)) THEN
467       RETURN (0);
468     ELSE
469       RETURN (ITEM_MARGIN);
470     END IF;
471     RETURN NULL;
472   END ITEM_MARGIN1FORMULA;
473 
474   FUNCTION MARGINFORMULA(TOTAL_SALES_AMOUNT IN NUMBER
475                         ,TOTAL_COGS_AMOUNT IN NUMBER) RETURN NUMBER IS
476   BEGIN
477     RETURN (TOTAL_SALES_AMOUNT - TOTAL_COGS_AMOUNT);
478   END MARGINFORMULA;
479 
480   FUNCTION MARGIN_PCTFORMULA(TOTAL_SALES_AMOUNT IN NUMBER
481                             ,MARGIN IN NUMBER) RETURN NUMBER IS
482   BEGIN
483     IF (TOTAL_SALES_AMOUNT = 0) THEN
484       RETURN (NULL);
485     ELSE
486       RETURN (100 * (MARGIN / TOTAL_SALES_AMOUNT));
487     END IF;
488     RETURN NULL;
489   END MARGIN_PCTFORMULA;
490 
491   FUNCTION BETWEENPAGE RETURN BOOLEAN IS
492   BEGIN
493     RETURN (TRUE);
494   END BETWEENPAGE;
495 
496   FUNCTION CONFIG_ITEM_MARGINFORMULA(CONFIG_ITEM_SALES_AMOUNT IN NUMBER
497                                     ,CONFIG_ITEM_COGS_AMOUNT IN NUMBER) RETURN NUMBER IS
498   BEGIN
499     RETURN (CONFIG_ITEM_SALES_AMOUNT - CONFIG_ITEM_COGS_AMOUNT);
500   END CONFIG_ITEM_MARGINFORMULA;
501 
502   FUNCTION CONFIG_ITEM_MARGIN_PCTFORMULA(CONFIG_ITEM_SALES_AMOUNT IN NUMBER
503                                         ,CONFIG_ITEM_MARGIN IN NUMBER) RETURN NUMBER IS
504   BEGIN
505     IF (CONFIG_ITEM_SALES_AMOUNT = 0) THEN
506       RETURN (NULL);
507     ELSE
508       RETURN ((CONFIG_ITEM_MARGIN / CONFIG_ITEM_SALES_AMOUNT) * 100);
509     END IF;
510     RETURN NULL;
511   END CONFIG_ITEM_MARGIN_PCTFORMULA;
512 
513   FUNCTION AFTERPFORM RETURN BOOLEAN IS
514   BEGIN
515     RETURN (TRUE);
516   END AFTERPFORM;
517 
518   FUNCTION P_OPERATING_UNIT_NAMEVALIDTRIG RETURN BOOLEAN IS
519   BEGIN
520     RETURN (TRUE);
521   END P_OPERATING_UNIT_NAMEVALIDTRIG;
522 
523   FUNCTION BEFOREPFORM RETURN BOOLEAN IS
524   BEGIN
525     RETURN (TRUE);
526   END BEFOREPFORM;
527 function get_precision(qty_precision in number) return VARCHAR2 is
528 begin
529 
530 if qty_precision = 0 then return('999G999G999G990');
531 
532 elsif qty_precision = 1 then return('999G999G999G990D0');
533 
534 elsif qty_precision = 3 then return('999G999G999G990D000');
535 
536 elsif qty_precision = 4 then return('999G999G999G990D0000');
537 
538 elsif qty_precision = 5 then return('999G999G999G990D00000');
539 
540 elsif qty_precision = 6 then  return('999G999G999G990D000000');
541 
542 else return('999G999G999G990D00');
543 
544 end if;
545 
546 end;
547 END BOM_CSTROMMA_XMLP_PKG;
548 
549