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