DBA Data[Home] [Help]

PACKAGE BODY: APPS.BOM_CSTRPMDD_XMLP_PKG

Source


1 PACKAGE BODY BOM_CSTRPMDD_XMLP_PKG AS
2 /* $Header: CSTRPMDDB.pls 120.0 2007/12/24 10:14:13 dwkrishn noship $ */
3   FUNCTION C_SOURCE_TYPE_NAMEFORMULA RETURN VARCHAR2 IS
4   BEGIN
5     DECLARE
6       SOURCE_TYPE_ID NUMBER;
7       SOURCE_TYPE_NAME VARCHAR2(30);
8     BEGIN
9       SOURCE_TYPE_ID := P_SOURCE_TYPE_ID;
10       IF P_SOURCE_TYPE_ID IS NOT NULL THEN
11         SELECT
12           TRANSACTION_SOURCE_TYPE_NAME
13         INTO SOURCE_TYPE_NAME
14         FROM
15           MTL_TXN_SOURCE_TYPES
16         WHERE TRANSACTION_SOURCE_TYPE_ID = SOURCE_TYPE_ID;
17         RETURN (SOURCE_TYPE_NAME);
18       ELSE
19         RETURN ('');
20       END IF;
21     EXCEPTION
22       WHEN NO_DATA_FOUND THEN
23         RETURN ('No Data');
24     END;
25     RETURN NULL;
26   END C_SOURCE_TYPE_NAMEFORMULA;
27 
28   FUNCTION BEFOREREPORT RETURN BOOLEAN IS
29   BEGIN
30     IF P_SORT_ID = 1 THEN
31       /*SRW.SET_MAXROW('Q_acct_item'
32                     ,0)*/NULL;
33       /*SRW.SET_MAXROW('Q_item_acct'
34                     ,0)*/NULL;
35     ELSIF P_SORT_ID = 2 THEN
36       /*SRW.SET_MAXROW('Q_item_acct'
37                     ,0)*/NULL;
38       /*SRW.SET_MAXROW('Q_acct'
39                     ,0)*/NULL;
40     ELSIF P_SORT_ID = 3 THEN
41       /*SRW.SET_MAXROW('Q_acct'
42                     ,0)*/NULL;
43       /*SRW.SET_MAXROW('Q_acct_item'
44                     ,0)*/NULL;
45     ELSE
46       NULL;
47     END IF;
48     BEGIN
49       P_CONC_REQUEST_ID := FND_GLOBAL.CONC_REQUEST_ID;
50       /*SRW.USER_EXIT('FND SRWINIT')*/NULL;
51     EXCEPTION
52       WHEN /*SRW.USER_EXIT_FAILURE*/OTHERS THEN
53         /*SRW.MESSAGE(1
54                    ,'Failed in SRWINIT')*/NULL;
55         RAISE;
56     END;
57     BEGIN
58       SELECT
59         FRV.RESPONSIBILITY_NAME,
60         TO_CHAR(FCR.REQUEST_DATE
61                ,'YYYY/MM/DD HH24:MI:SS'),
62         FAV.APPLICATION_NAME,
63         FU.USER_NAME
64       INTO CP_RESPONSIBILITY,CP_REQUEST_TIME,CP_APPLICATION,CP_REQUESTED_BY
65       FROM
66         FND_CONCURRENT_REQUESTS FCR,
67         FND_RESPONSIBILITY_VL FRV,
68         FND_APPLICATION_VL FAV,
69         FND_USER FU
70       WHERE FCR.REQUEST_ID = P_CONC_REQUEST_ID
71         AND FCR.RESPONSIBILITY_APPLICATION_ID = FRV.APPLICATION_ID
72         AND FCR.RESPONSIBILITY_ID = FRV.RESPONSIBILITY_ID
73         AND FRV.APPLICATION_ID = FAV.APPLICATION_ID
74         AND FU.USER_ID = FCR.REQUESTED_BY;
75     EXCEPTION
76       WHEN NO_DATA_FOUND THEN
77         /*SRW.MESSAGE(30
78                    ,'Failed Request By and Request time Init, no data')*/NULL;
79       WHEN OTHERS THEN
80         /*SRW.MESSAGE(31
81                    ,'Failed Request By and Request time Init.')*/NULL;
82     END;
83     BEGIN
84       SELECT
85         DISTINCT
86         XFI.NAME,
87         CCG.COST_GROUP,
88         CCT.COST_TYPE,
89         NVL(FC.PRECISION
90            ,2),
91         NVL(FC.EXTENDED_PRECISION
92            ,5),
93         CPP.PERIOD_NAME
94       INTO CP_LEGAL_ENTITY,CP_COST_GROUP,CP_COST_TYPE,CP_PRECISION,CP_EXT_PRECISION,CP_PERIOD_NAME
95       FROM
96         CST_PAC_PERIODS CPP,
97         XLE_FIRSTPARTY_INFORMATION_V XFI,
98         FND_CURRENCIES FC,
99         CST_COST_GROUPS CCG,
100         CST_COST_TYPES CCT
101       WHERE XFI.LEGAL_ENTITY_ID = P_LEGAL_ENTITY_ID
102         AND CPP.PAC_PERIOD_ID = P_PERIOD_ID
103         AND FC.CURRENCY_CODE = P_CURRENCY_CODE
104         AND CCG.COST_GROUP_ID = P_COST_GROUP_ID
105         AND CCT.COST_TYPE_ID = P_COST_TYPE_ID;
106     EXCEPTION
107       WHEN NO_DATA_FOUND THEN
108         /*SRW.MESSAGE(30
109                    ,'Failed in Legal Entity Init. no data')*/NULL;
110       WHEN OTHERS THEN
111         /*SRW.MESSAGE(31
112                    ,'Failed in legal entity Init.')*/NULL;
113     END;
114     Qty_precision := bom_common_xmlp_pkg.get_precision(CP_PRECISION);
115     BEGIN
116       NULL;
117     EXCEPTION
118       WHEN /*SRW.USER_EXIT_FAILURE*/OTHERS THEN
119         /*SRW.MESSAGE(2
120                    ,'Failed in MSTK/Select')*/NULL;
121         RAISE;
122     END;
123     BEGIN
124       NULL;
125     EXCEPTION
126       WHEN /*SRW.USER_EXIT_FAILURE*/OTHERS THEN
127         /*SRW.MESSAGE(3
128                    ,'Failed in GL#/Select')*/NULL;
129         RAISE;
130     END;
131     BEGIN
132       IF P_ACCT_LO IS NOT NULL OR P_ACCT_HI IS NOT NULL THEN
133         NULL;
134       ELSE
135         NULL;
136       END IF;
137     EXCEPTION
138       WHEN /*SRW.USER_EXIT_FAILURE*/OTHERS THEN
139         /*SRW.MESSAGE(4
140                    ,'Failed in GL#/Where')*/NULL;
141         RAISE;
142     END;
143     BEGIN
144       IF P_ITEM_LO IS NOT NULL OR P_ITEM_HI IS NOT NULL THEN
145         NULL;
146       ELSE
147         NULL;
148       END IF;
149     EXCEPTION
150       WHEN /*SRW.USER_EXIT_FAILURE*/OTHERS THEN
151         /*SRW.MESSAGE(5
152                    ,'Failed in MSTK/Where')*/NULL;
153         RAISE;
154     END;
155     BEGIN
156       IF P_CAT_LO IS NOT NULL OR P_CAT_HI IS NOT NULL THEN
157         NULL;
158       ELSE
159         NULL;
160       END IF;
161     EXCEPTION
162       WHEN /*SRW.USER_EXIT_FAILURE*/OTHERS THEN
163         /*SRW.MESSAGE(6
164                    ,'Failed in MCAT/Where')*/NULL;
165         RAISE;
166     END;
167     BEGIN
168       NULL;
169     EXCEPTION
170       WHEN /*SRW.USER_EXIT_FAILURE*/OTHERS THEN
171         /*SRW.MESSAGE(9
172                    ,'Failed in MKTS/Sel')*/NULL;
173         RAISE;
174     END;
175     BEGIN
176       NULL;
177     EXCEPTION
178       WHEN /*SRW.USER_EXIT_FAILURE*/OTHERS THEN
179         /*SRW.MESSAGE(10
180                    ,'Failed in MDSP/Sel')*/NULL;
181         RAISE;
182     END;
183     BEGIN
184       NULL;
185     EXCEPTION
186       WHEN /*SRW.USER_EXIT_FAILURE*/OTHERS THEN
187         /*SRW.MESSAGE(11
188                    ,'Failed in GL#/Sel')*/NULL;
189         RAISE;
190     END;
191     BEGIN
192       IF P_SOURCE_TYPE_ID in (2,8,12) THEN
193         BEGIN
194           IF P_SOURCE_HI IS NOT NULL OR P_SOURCE_LO IS NOT NULL THEN
195             NULL;
196           ELSE
197             NULL;
198           END IF;
199         EXCEPTION
200           WHEN /*SRW.USER_EXIT_FAILURE*/OTHERS THEN
201             /*SRW.MESSAGE(1
202                        ,'Failed in before report trigger:MKTS/where')*/NULL;
203             RAISE;
204         END;
205       ELSIF P_SOURCE_TYPE_ID = 6 THEN
206         BEGIN
207           IF P_SOURCE_HI IS NOT NULL OR P_SOURCE_LO IS NOT NULL THEN
208             NULL;
209           ELSE
210             NULL;
211           END IF;
212         EXCEPTION
213           WHEN /*SRW.USER_EXIT_FAILURE*/OTHERS THEN
214             /*SRW.MESSAGE(1
215                        ,'Failed in before report trigger:MDSP/where')*/NULL;
216             RAISE;
217         END;
218       ELSIF P_SOURCE_TYPE_ID = 3 THEN
219         BEGIN
220           IF P_SOURCE_HI IS NOT NULL OR P_SOURCE_LO IS NOT NULL THEN
221             NULL;
222           ELSE
223             NULL;
224           END IF;
225         EXCEPTION
226           WHEN /*SRW.USER_EXIT_FAILURE*/OTHERS THEN
227             /*SRW.MESSAGE(1
228                        ,'Failed in before report trigger:GL/where')*/NULL;
229             RAISE;
230         END;
231       ELSE
232         NULL;
233       END IF;
234     END;
235     BEGIN
236       IF P_SOURCE_TYPE_ID in (2,8,12) AND (P_SOURCE_LO IS NOT NULL OR P_SOURCE_HI IS NOT NULL) THEN
237         P_SOURCE_WHERE2 := 'AND mmt.transaction_source_id = mkts.sales_order_id
238                                      AND ' || P_SOURCE_WHERE;
239       ELSIF P_SOURCE_TYPE_ID = 3 AND (P_SOURCE_LO IS NOT NULL OR P_SOURCE_HI IS NOT NULL) THEN
240         P_SOURCE_WHERE2 := 'AND mmt.transaction_source_id = glc.code_combination_id
241                                      AND ' || P_SOURCE_WHERE;
242       ELSIF P_SOURCE_TYPE_ID = 6 AND (P_SOURCE_LO IS NOT NULL OR P_SOURCE_HI IS NOT NULL) THEN
243         P_SOURCE_WHERE2 := 'AND mmt.transaction_source_id = mdsp.disposition_id
244                                       and ' || P_SOURCE_WHERE;
245       END IF;
246     END;
247     BEGIN
248       SELECT
249         MEANING
250       INTO CP_SORT_BY_COV
251       FROM
252         MFG_LOOKUPS
253       WHERE LOOKUP_TYPE = 'CST_SRS_PAC_BOM_CSTRPMDD_XMLP_PKG_SORT'
254         AND LOOKUP_CODE = P_SORT_ID;
255       SELECT
256         MEANING
257       INTO CP_TYPE_OPTION_COV
258       FROM
259         MFG_LOOKUPS
260       WHERE LOOKUP_TYPE = 'INV_SRS_DST_TYPE'
261         AND LOOKUP_CODE = P_TYPE_OPTION
262         AND ENABLED_FLAG = 'Y';
263     EXCEPTION
264       WHEN OTHERS THEN
265         /*SRW.MESSAGE(2
266                    ,'Failed in initializing sort by for cover page')*/NULL;
267     END;
268     RETURN (TRUE);
269   END BEFOREREPORT;
270 
271   FUNCTION AFTERREPORT RETURN BOOLEAN IS
272   BEGIN
273     BEGIN
274       /*SRW.USER_EXIT('FND SRWEXIT')*/NULL;
275     EXCEPTION
276       WHEN /*SRW.USER_EXIT_FAILURE*/OTHERS THEN
277         /*SRW.MESSAGE(1
278                    ,'Failed in SRWEXIT')*/NULL;
279     END;
280     RETURN (TRUE);
281     RETURN (TRUE);
282   END AFTERREPORT;
283 
284   FUNCTION C_ACCT_PAD0FORMULA(C_ACCT_PAD0 IN VARCHAR2) RETURN VARCHAR2 IS
285   BEGIN
286     RETURN (C_ACCT_PAD0);
287   END C_ACCT_PAD0FORMULA;
288 
289   FUNCTION C_ACCT_PAD1FORMULA(C_ACCT_PAD1 IN VARCHAR2) RETURN VARCHAR2 IS
290   BEGIN
291     RETURN (C_ACCT_PAD1);
292   END C_ACCT_PAD1FORMULA;
293 
294   FUNCTION C_ACCT_PAD2FORMULA(C_ACCT_PAD2 IN VARCHAR2) RETURN VARCHAR2 IS
295   BEGIN
296     RETURN (C_ACCT_PAD2);
297   END C_ACCT_PAD2FORMULA;
298 
299   FUNCTION C_ITEM_PAD1FORMULA(C_ITEM_PAD1 IN VARCHAR2) RETURN VARCHAR2 IS
300   BEGIN
301     RETURN (C_ITEM_PAD1);
302   END C_ITEM_PAD1FORMULA;
303 
304   FUNCTION C_ITEM_PAD2FORMULA(C_ITEM_PAD2 IN VARCHAR2) RETURN VARCHAR2 IS
305   BEGIN
306     RETURN (C_ITEM_PAD2);
307   END C_ITEM_PAD2FORMULA;
308 
309   FUNCTION C_SOURCE_WHEREFORMULA RETURN VARCHAR2 IS
310   BEGIN
311     BEGIN
312       IF P_SOURCE_TYPE_ID = 1 THEN
313         IF P_SOURCE_HI IS NOT NULL AND P_SOURCE_LO IS NOT NULL THEN
314           RETURN ('AND mmt.transaction_source_id = poh.po_header_id
315                  	    AND poh.segment1 BETWEEN ''' || P_SOURCE_LO || ''' AND ''' || P_SOURCE_HI || ''' ');
316         ELSIF P_SOURCE_HI IS NULL AND P_SOURCE_LO IS NOT NULL THEN
317           RETURN ('AND mmt.transaction_source_id = poh.po_header_id
318                              AND poh.segment1 >= ''' || P_SOURCE_LO || ''' ');
319         ELSIF P_SOURCE_HI IS NOT NULL AND P_SOURCE_LO IS NULL THEN
320           RETURN ('AND mmt.transaction_source_id = poh.po_header_id
321                              AND poh.segment1 <= ''' || P_SOURCE_HI || ''' ');
322         END IF;
323       END IF;
324     END;
325     BEGIN
326       IF P_SOURCE_TYPE_ID = 5 THEN
327         IF P_SOURCE_HI IS NOT NULL AND P_SOURCE_LO IS NOT NULL THEN
328           RETURN ('AND mmt.transaction_source_id = wipe.wip_entity_id
329                              AND wipe.wip_entity_name BETWEEN ''' || P_SOURCE_LO || '''
330                                                      AND ''' || P_SOURCE_HI || ''' ');
331         ELSIF P_SOURCE_HI IS NULL AND P_SOURCE_LO IS NOT NULL THEN
332           RETURN ('AND mmt.transaction_source_id = wipe.wip_entity_id
333                              AND wipe.wip_entity_name >= ''' || P_SOURCE_LO || ''' ');
334         ELSIF P_SOURCE_HI IS NOT NULL AND P_SOURCE_LO IS NULL THEN
335           RETURN ('AND mmt.transaction_source_id = wipe.wip_entity_id
336                              AND wipe.wip_entity_name <= ''' || P_SOURCE_HI || ''' ');
337         END IF;
338       END IF;
339     END;
340     BEGIN
341       IF P_SOURCE_TYPE_ID = 7 THEN
342         IF P_SOURCE_HI IS NOT NULL AND P_SOURCE_LO IS NOT NULL THEN
343           RETURN ('AND mmt.transaction_source_id = prh.requisition_header_id
344                  	    AND prh.segment1 BETWEEN ''' || P_SOURCE_LO || ''' AND ''' || P_SOURCE_HI || ''' ');
345         ELSIF P_SOURCE_HI IS NULL AND P_SOURCE_LO IS NOT NULL THEN
346           RETURN ('AND mmt.transaction_source_id = prh.requisition_header_id
347                  	    AND prh.segment1 >= ''' || P_SOURCE_LO || ''' ');
348         ELSIF P_SOURCE_HI IS NOT NULL AND P_SOURCE_LO IS NULL THEN
349           RETURN ('AND mmt.transaction_source_id = prh.requisition_header_id
350                  	    AND prh.segment1 <= ''' || P_SOURCE_HI || ''' ');
351         END IF;
352       END IF;
353     END;
354     BEGIN
355       IF P_SOURCE_TYPE_ID = 9 THEN
356         IF P_SOURCE_HI IS NOT NULL AND P_SOURCE_LO IS NOT NULL THEN
357           RETURN ('AND mmt.transaction_source_id = cch.cycle_count_header_id
358                  	    AND cch.cycle_count_header_name BETWEEN ''' || P_SOURCE_LO || '''
359                                                              AND ''' || P_SOURCE_HI || ''' ');
360         ELSIF P_SOURCE_HI IS NULL AND P_SOURCE_LO IS NOT NULL THEN
361           RETURN ('AND mmt.transaction_source_id = cch.cycle_count_header_id
362                  	    AND cch.cycle_count_header_name >= ''' || P_SOURCE_LO || ''' ');
363         ELSIF P_SOURCE_HI IS NOT NULL AND P_SOURCE_LO IS NULL THEN
364           RETURN ('AND mmt.transaction_source_id = cch.cycle_count_header_id
365                  	    AND cch.cycle_count_header_name <= ''' || P_SOURCE_HI || ''' ');
366         END IF;
367       END IF;
368     END;
369     BEGIN
370       IF P_SOURCE_TYPE_ID = 10 THEN
371         IF P_SOURCE_HI IS NOT NULL AND P_SOURCE_LO IS NOT NULL THEN
372           RETURN ('AND mmt.transaction_source_id = pi.physical_inventory_id
373                  	    AND pi.physical_inventory_name BETWEEN ''' || P_SOURCE_LO || '''
374                                                             AND ''' || P_SOURCE_HI || ''' ');
375         ELSIF P_SOURCE_HI IS NULL AND P_SOURCE_LO IS NOT NULL THEN
376           RETURN ('AND mmt.transaction_source_id = pi.physical_inventory_id
377                  	    AND pi.physical_inventory_name >= ''' || P_SOURCE_LO || ''' ');
378         ELSIF P_SOURCE_HI IS NOT NULL AND P_SOURCE_LO IS NULL THEN
379           RETURN ('AND mmt.transaction_source_id = pi.physical_inventory_id
380                  	    AND pi.physical_inventory_name <= ''' || P_SOURCE_HI || ''' ');
381         END IF;
382       END IF;
383     END;
384     BEGIN
385       IF P_SOURCE_TYPE_ID = 11 THEN
386         IF P_SOURCE_HI IS NOT NULL AND P_SOURCE_LO IS NOT NULL THEN
387           RETURN ('AND mmt.transaction_source_id = cst.cost_update_id
388                  	    AND cst.description BETWEEN ''' || P_SOURCE_LO || ''' AND ''' || P_SOURCE_HI || ''' ');
389         ELSIF P_SOURCE_HI IS NULL AND P_SOURCE_LO IS NOT NULL THEN
390           RETURN ('AND mmt.transaction_source_id = cst.cost_update_id
391                  	    AND cst.description BETWEEN >= ''' || P_SOURCE_LO || ''' ');
392         ELSIF P_SOURCE_HI IS NOT NULL AND P_SOURCE_LO IS NULL THEN
393           RETURN ('AND mmt.transaction_source_id = cst.cost_update_id
394                  	    AND cst.description <= ''' || P_SOURCE_HI || ''' ');
395         END IF;
396       END IF;
397     END;
398     BEGIN
399       IF P_SOURCE_TYPE_ID >= 13 THEN
400         IF P_SOURCE_HI IS NOT NULL AND P_SOURCE_LO IS NOT NULL THEN
401           RETURN ('AND mmt.transaction_source_name BETWEEN ''' || P_SOURCE_LO || '''
402                                                              AND ''' || P_SOURCE_HI || ''' ');
403         ELSIF P_SOURCE_HI IS NULL AND P_SOURCE_LO IS NOT NULL THEN
404           RETURN ('AND mmt.transaction_source_name >= ''' || P_SOURCE_LO || ''' ');
405         ELSIF P_SOURCE_HI IS NOT NULL AND P_SOURCE_LO IS NULL THEN
406           RETURN ('AND mmt.transaction_source_name <= ''' || P_SOURCE_HI || ''' ');
407         END IF;
408       END IF;
409     END;
410     RETURN ' ';
411   END C_SOURCE_WHEREFORMULA;
412 
413   FUNCTION WHERE_VALUE RETURN VARCHAR2 IS
414   BEGIN
415     DECLARE
416       HI VARCHAR2(16);
417       LO VARCHAR2(16);
418     BEGIN
419       HI := TO_CHAR(ABS(P_VALUE_HI));
420       LO := TO_CHAR(ABS(P_VALUE_LO));
421       IF P_VALUE_HI IS NOT NULL AND P_VALUE_LO IS NOT NULL THEN
422         RETURN ('AND nvl(nvl(cal.accounted_dr,cal.accounted_cr),0)
423                                BETWEEN ''' || LO || ''' AND ''' || HI || '''');
424       ELSIF P_VALUE_HI IS NULL AND P_VALUE_LO IS NOT NULL THEN
425         RETURN ('AND nvl(nvl(cal.accounted_dr,cal.accounted_cr),0)
426                                >= ''' || LO || ''' ');
427       ELSIF P_VALUE_HI IS NOT NULL AND P_VALUE_LO IS NULL THEN
428         RETURN ('AND nvl(nvl(cal.accounted_dr,cal.accounted_cr),0)
429                                <= ''' || HI || '''');
430       ELSE
431         RETURN (' ');
432       END IF;
433     END;
434     RETURN ' ';
435   END WHERE_VALUE;
436 
437   FUNCTION C_WHERE_REASONFORMULA RETURN VARCHAR2 IS
438   BEGIN
439     IF P_REASON_ID IS NOT NULL THEN
440       RETURN ('AND mmt.reason_id = ' || TO_CHAR(P_REASON_ID));
441     ELSE
442       RETURN (' ');
443     END IF;
444     RETURN ' ';
445   END C_WHERE_REASONFORMULA;
446 
447   FUNCTION C_FROM_CATFORMULA RETURN VARCHAR2 IS
448   BEGIN
449     IF P_CAT_LO IS NOT NULL OR P_CAT_HI IS NOT NULL THEN
450       RETURN (', mtl_item_categories mic, mtl_categories_b mc');
451     ELSE
452       RETURN (', mtl_item_categories mic');
453     END IF;
454     RETURN NULL;
455   END C_FROM_CATFORMULA;
456 
457   FUNCTION C_WHERE_CATFORMULA RETURN VARCHAR2 IS
458   BEGIN
459     IF P_CAT_LO IS NOT NULL OR P_CAT_HI IS NOT NULL THEN
460       RETURN ('AND mmt.inventory_item_id = mic.inventory_item_id
461                        AND mmt.organization_id = mic.organization_id
462                        AND mic.category_set_id = ' || P_CAT_SET_ID || ' AND mic.category_id = mc.category_id');
463     ELSE
464       RETURN ('AND mmt.inventory_item_id = mic.inventory_item_id
465                        AND mmt.organization_id = mic.organization_id
466              	  AND mic.category_set_id = ' || P_CAT_SET_ID);
467     END IF;
468     RETURN NULL;
469   END C_WHERE_CATFORMULA;
470 
471   FUNCTION C_CAT_SET_NAMEFORMULA RETURN VARCHAR2 IS
472   BEGIN
473     DECLARE
474       CAT_SET_ID NUMBER;
475       CAT_SET_NAME VARCHAR2(30);
476     BEGIN
477       CAT_SET_ID := P_CAT_SET_ID;
478       SELECT
479         CATEGORY_SET_NAME
480       INTO CAT_SET_NAME
481       FROM
482         MTL_CATEGORY_SETS
483       WHERE CATEGORY_SET_ID = CAT_SET_ID;
484       RETURN (CAT_SET_NAME);
485     EXCEPTION
486       WHEN NO_DATA_FOUND THEN
487         RETURN ('');
488       WHEN OTHERS THEN
489         RETURN ('Error');
490     END;
491     RETURN NULL;
492   END C_CAT_SET_NAMEFORMULA;
493 
494   FUNCTION C_TXN_TYPE_NAMEFORMULA RETURN VARCHAR2 IS
495   BEGIN
496     DECLARE
497       TXN_TYPE_ID NUMBER;
498       TXN_TYPE_NAME VARCHAR2(30);
499     BEGIN
500       TXN_TYPE_ID := P_TXN_TYPE_ID;
501       IF TXN_TYPE_ID IS NOT NULL THEN
502         SELECT
503           TRANSACTION_TYPE_NAME
504         INTO TXN_TYPE_NAME
505         FROM
506           MTL_TRANSACTION_TYPES
507         WHERE TRANSACTION_TYPE_ID = TXN_TYPE_ID;
508         RETURN (TXN_TYPE_NAME);
509       ELSE
510         RETURN ('');
511       END IF;
512     EXCEPTION
513       WHEN NO_DATA_FOUND THEN
514         RETURN ('No Data');
515     END;
516     RETURN NULL;
517   END C_TXN_TYPE_NAMEFORMULA;
518 
519   FUNCTION C_REASON_NAMEFORMULA RETURN VARCHAR2 IS
520   BEGIN
521     DECLARE
522       TXN_REASON_ID VARCHAR2(20);
523       REASON_NAME VARCHAR2(30);
524     BEGIN
525       TXN_REASON_ID := P_REASON_ID;
526       IF TXN_REASON_ID IS NOT NULL THEN
527         SELECT
528           REASON_NAME
529         INTO REASON_NAME
530         FROM
531           MTL_TRANSACTION_REASONS
532         WHERE REASON_ID = TXN_REASON_ID;
533         RETURN (REASON_NAME);
534       ELSE
535         RETURN ('');
536       END IF;
537     EXCEPTION
538       WHEN NO_DATA_FOUND THEN
539         RETURN ('No Data');
540     END;
541     RETURN NULL;
542   END C_REASON_NAMEFORMULA;
543 
544   FUNCTION C_TYPE_OPTIONFORMULA RETURN VARCHAR2 IS
545   BEGIN
546     IF P_TYPE_OPTION = 1 THEN
547       RETURN ('mtst.transaction_source_type_name');
548     ELSE
549       RETURN ('mtt.transaction_type_name');
550     END IF;
551     RETURN NULL;
552   END C_TYPE_OPTIONFORMULA;
553 
554   FUNCTION C_FROM_TYPEFORMULA RETURN VARCHAR2 IS
555   BEGIN
556     IF P_TYPE_OPTION = 1 THEN
557       RETURN (', mtl_txn_source_types mtst');
558     ELSE
559       RETURN (', mtl_transaction_types mtt');
560     END IF;
561     RETURN NULL;
562   END C_FROM_TYPEFORMULA;
563 
564   FUNCTION C_WHERE_TYPEFORMULA RETURN VARCHAR2 IS
565   BEGIN
566     IF P_TYPE_OPTION = 1 THEN
567       RETURN ('AND mmt.transaction_source_type_id
568                        = mtst.transaction_source_type_id');
569     ELSE
570       RETURN ('AND mmt.transaction_type_id = mtt.transaction_type_id');
571     END IF;
572     RETURN NULL;
573   END C_WHERE_TYPEFORMULA;
574 
575   FUNCTION AFTERPFORM RETURN BOOLEAN IS
576   BEGIN
577     RETURN (TRUE);
578   END AFTERPFORM;
579 
580   FUNCTION C_SOURCE_FROMFORMULA RETURN VARCHAR2 IS
581   BEGIN
582     BEGIN
583       IF P_SOURCE_TYPE_ID = 1 AND (P_SOURCE_HI IS NOT NULL OR P_SOURCE_LO IS NOT NULL) THEN
584         RETURN (', po_headers_all poh');
585       END IF;
586       IF P_SOURCE_TYPE_ID = 5 AND (P_SOURCE_HI IS NOT NULL OR P_SOURCE_LO IS NOT NULL) THEN
587         RETURN (', wip_entities wipe');
588       END IF;
589       IF P_SOURCE_TYPE_ID = 7 AND (P_SOURCE_HI IS NOT NULL OR P_SOURCE_LO IS NOT NULL) THEN
590         RETURN (', po_requisition_headers prh');
591       END IF;
592       IF P_SOURCE_TYPE_ID = 9 AND (P_SOURCE_HI IS NOT NULL OR P_SOURCE_LO IS NOT NULL) THEN
593         RETURN (', mtl_cycle_count_headers cch');
594       END IF;
595       IF P_SOURCE_TYPE_ID = 10 AND (P_SOURCE_HI IS NOT NULL OR P_SOURCE_LO IS NOT NULL) THEN
596         RETURN (', mtl_physical_inventories pi');
597       END IF;
598       IF P_SOURCE_TYPE_ID = 11 AND (P_SOURCE_HI IS NOT NULL OR P_SOURCE_LO IS NOT NULL) THEN
599         RETURN (', cst_cost_updates cst');
600       END IF;
601     END;
602     RETURN ' ';
603   END C_SOURCE_FROMFORMULA;
604 
605   FUNCTION C_ACCT_VALUE0_RFORMULA(C_ACCT_VALUE0 IN NUMBER) RETURN NUMBER IS
606     C_ACCT_VALUE0_R NUMBER;
607   BEGIN
608     C_ACCT_VALUE0_R := ROUND(C_ACCT_VALUE0
609                             ,CP_PRECISION);
610     RETURN C_ACCT_VALUE0_R;
611   END C_ACCT_VALUE0_RFORMULA;
612 
613   FUNCTION VALUE_RFORMULA(VALUE IN NUMBER) RETURN NUMBER IS
614     VALUE_R NUMBER;
615   BEGIN
616     VALUE_R := ROUND(VALUE
617                     ,CP_PRECISION);
618     RETURN VALUE_R;
619   END VALUE_RFORMULA;
620 
621   FUNCTION C_REPORT_VALUE_RFORMULA(C_REPORT_VALUE IN NUMBER) RETURN NUMBER IS
622     C_REPORT_VALUE_R NUMBER;
623   BEGIN
624     C_REPORT_VALUE_R := ROUND(C_REPORT_VALUE
625                              ,CP_PRECISION);
626     RETURN C_REPORT_VALUE_R;
627   END C_REPORT_VALUE_RFORMULA;
628 
629   FUNCTION C_ACCT_VALUE1_RFORMULA(C_ACCT_VALUE1 IN NUMBER) RETURN NUMBER IS
630     C_ACCT_VALUE1_R NUMBER;
631   BEGIN
632     C_ACCT_VALUE1_R := ROUND(C_ACCT_VALUE1
633                             ,CP_PRECISION);
634     RETURN C_ACCT_VALUE1_R;
635   END C_ACCT_VALUE1_RFORMULA;
636 
637   FUNCTION C_ITEM_VALUE2_RFORMULA(C_ITEM_VALUE2 IN NUMBER) RETURN NUMBER IS
638     C_ITEM_VALUE2_R NUMBER;
639   BEGIN
640     C_ITEM_VALUE2_R := ROUND(C_ITEM_VALUE2
641                             ,CP_PRECISION);
642     RETURN C_ITEM_VALUE2_R;
643   END C_ITEM_VALUE2_RFORMULA;
644 
645   FUNCTION C_REPORT_VALUE1_RFORMULA(C_REPORT_VALUE1 IN NUMBER) RETURN NUMBER IS
646     C_REPORT_VALUE1_R NUMBER;
647   BEGIN
648     C_REPORT_VALUE1_R := ROUND(C_REPORT_VALUE1
649                               ,CP_PRECISION);
650     RETURN C_REPORT_VALUE1_R;
651   END C_REPORT_VALUE1_RFORMULA;
652 
653   FUNCTION C_REPORT_VALUE2_RFORMULA(C_REPORT_VALUE2 IN NUMBER) RETURN NUMBER IS
654     C_REPORT_VALUE2_R NUMBER;
655   BEGIN
656     C_REPORT_VALUE2_R := ROUND(C_REPORT_VALUE2
657                               ,CP_PRECISION);
658     RETURN C_REPORT_VALUE2_R;
659   END C_REPORT_VALUE2_RFORMULA;
660 
661   FUNCTION VALUE1_RFORMULA(VALUE1 IN NUMBER) RETURN NUMBER IS
662     VALUE1_R NUMBER;
663   BEGIN
664     VALUE1_R := ROUND(VALUE1
665                      ,CP_PRECISION);
666     RETURN VALUE1_R;
667   END VALUE1_RFORMULA;
668 
669   FUNCTION VALUE2_RFORMULA(VALUE2 IN NUMBER) RETURN NUMBER IS
670     VALUE2_R NUMBER;
671   BEGIN
672     VALUE2_R := ROUND(VALUE2
673                      ,CP_PRECISION);
674     RETURN VALUE2_R;
675   END VALUE2_RFORMULA;
676 
677   FUNCTION C_RT_WHERE_CATFORMULA RETURN CHAR IS
678   BEGIN
679     IF P_CAT_LO IS NOT NULL OR P_CAT_HI IS NOT NULL THEN
680       RETURN ('AND rsl.item_id = mic.inventory_item_id
681                        AND cah.organization_id = mic.organization_id
682                        AND mic.category_set_id = ' || TO_CHAR(P_CAT_SET_ID) || ' AND mic.category_id = mc.category_id');
683     ELSE
684       RETURN ('AND rsl.item_id = mic.inventory_item_id
685                        AND cah.organization_id = mic.organization_id
686                        AND mic.category_set_id  = ' || TO_CHAR(P_CAT_SET_ID));
687     END IF;
688     RETURN ' ';
689   END C_RT_WHERE_CATFORMULA;
690 
691   FUNCTION C_RT_WHERE_REASONFORMULA RETURN CHAR IS
692   BEGIN
693     IF P_REASON_ID IS NOT NULL THEN
694       RETURN ('AND rt.reason_id = ' || TO_CHAR(P_REASON_ID));
695     ELSE
696       RETURN (' ');
697     END IF;
698     RETURN NULL;
699   END C_RT_WHERE_REASONFORMULA;
700 
701   FUNCTION C_RT_TYPE_OPTIONFORMULA RETURN CHAR IS
702   BEGIN
703     IF P_TYPE_OPTION = 1 THEN
704       RETURN ('rt.source_document_code');
705     ELSE
706       RETURN ('rt.transaction_type');
707     END IF;
708     RETURN NULL;
709   END C_RT_TYPE_OPTIONFORMULA;
710 
711   FUNCTION C_TXN_QUANTITY(L_AE_LINE_ID IN NUMBER
712                          ,L_QUANTITY IN NUMBER) RETURN NUMBER IS
713     L_TXN_QUANTITY NUMBER;
714     L_EVENT_TYPE VARCHAR2(15);
715     L_TRANSACTION_ID NUMBER;
716     L_PO_DISTRIBUTION_ID NUMBER;
717     L_ACCRUAL_QTY NUMBER;
718     L_ENCUM_QTY NUMBER;
719     L_SERVICE_FLAG NUMBER;
720     L_PO_LINE_LOCATION_ID NUMBER;
721     L_SHIPMENT_QTY NUMBER;
722     L_DIST_QTY NUMBER;
723     L_MATCH_OPTION VARCHAR2(1);
724     L_PERIOD_END_DATE DATE;
725     L_RETURN_STATUS VARCHAR2(1);
726     L_MSG_COUNT NUMBER;
727     L_MSG_DATA VARCHAR2(240);
728     L_STMT_NUM NUMBER;
729     PROCESS_ERROR EXCEPTION;
730   BEGIN
731     L_RETURN_STATUS := CST_UTILITY_PUB.GET_RET_STS_SUCCESS;
732     L_STMT_NUM := 10;
733     SELECT
734       CAH.AE_CATEGORY,
735       CAH.ACCOUNTING_EVENT_ID,
736       CAL.PO_DISTRIBUTION_ID
737     INTO L_EVENT_TYPE,L_TRANSACTION_ID,L_PO_DISTRIBUTION_ID
738     FROM
739       CST_AE_HEADERS CAH,
740       CST_AE_LINES CAL
741     WHERE CAL.AE_LINE_ID = L_AE_LINE_ID
742       AND CAH.AE_HEADER_ID = CAL.AE_HEADER_ID;
743     IF (L_EVENT_TYPE = 'Accrual') THEN
744       L_STMT_NUM := 20;
745       SELECT
746         PERIOD_END_DATE
747       INTO L_PERIOD_END_DATE
748       FROM
749         CST_PAC_PERIODS CPP
750       WHERE CPP.PAC_PERIOD_ID = P_PERIOD_ID;
751       L_STMT_NUM := 30;
752       SELECT
753         DECODE(POLL.MATCHING_BASIS
754               ,'AMOUNT'
755               ,1
756               ,0),
757         POLL.LINE_LOCATION_ID,
758         DECODE(POLL.MATCHING_BASIS
759               ,'AMOUNT'
760               ,POLL.AMOUNT - NVL(POLL.AMOUNT_CANCELLED
761                  ,0)
762               ,POLL.QUANTITY - NVL(POLL.QUANTITY_CANCELLED
763                  ,0)),
764         DECODE(POLL.MATCHING_BASIS
765               ,'AMOUNT'
766               ,POD.AMOUNT_ORDERED - NVL(POD.AMOUNT_CANCELLED
767                  ,0)
768               ,POD.QUANTITY_ORDERED - NVL(POD.QUANTITY_CANCELLED
769                  ,0)),
770         NVL(POLL.MATCH_OPTION
771            ,'P')
772       INTO L_SERVICE_FLAG,L_PO_LINE_LOCATION_ID,L_SHIPMENT_QTY,L_DIST_QTY,L_MATCH_OPTION
773       FROM
774         PO_DISTRIBUTIONS_ALL POD,
775         PO_LINE_LOCATIONS_ALL POLL,
776         PO_LINES_ALL POL
777       WHERE POD.PO_DISTRIBUTION_ID = L_PO_DISTRIBUTION_ID
778         AND POD.LINE_LOCATION_ID = POLL.LINE_LOCATION_ID
779         AND POLL.PO_LINE_ID = POL.PO_LINE_ID
780         AND NVL(POLL.ACCRUE_ON_RECEIPT_FLAG
781          ,'N') = 'N';
782       L_STMT_NUM := 40;
783       CST_PERENDACCRUALS_PVT.CALCULATE_ACCRUALAMOUNT(P_API_VERSION => 1.0
784                                                     ,P_INIT_MSG_LIST => CST_UTILITY_PUB.GET_FALSE
785                                                     ,P_VALIDATION_LEVEL => 100
786                                                     ,X_RETURN_STATUS => L_RETURN_STATUS
787                                                     ,X_MSG_COUNT => L_MSG_COUNT
788                                                     ,X_MSG_DATA => L_MSG_DATA
789                                                     ,P_MATCH_OPTION => L_MATCH_OPTION
790                                                     ,P_DISTRIBUTION_ID => L_PO_DISTRIBUTION_ID
791                                                     ,P_SHIPMENT_ID => L_PO_LINE_LOCATION_ID
792                                                     ,P_TRANSACTION_ID => L_TRANSACTION_ID
793                                                     ,P_SERVICE_FLAG => L_SERVICE_FLAG
794                                                     ,P_DIST_QTY => L_DIST_QTY
795                                                     ,P_SHIPMENT_QTY => L_SHIPMENT_QTY
796                                                     ,P_END_DATE => L_PERIOD_END_DATE
797                                                     ,X_ACCRUAL_QTY => L_ACCRUAL_QTY
798                                                     ,X_ENCUM_QTY => L_ENCUM_QTY);
799       IF (L_RETURN_STATUS <> CST_UTILITY_PUB.GET_RET_STS_SUCCESS) THEN
800         RAISE PROCESS_ERROR;
801       END IF;
802       L_STMT_NUM := 50;
803       SELECT
804         DECODE(CAL.ACCOUNTED_DR
805               ,NULL
806               ,-1 * L_ACCRUAL_QTY
807               ,L_ACCRUAL_QTY)
808       INTO L_TXN_QUANTITY
809       FROM
810         CST_AE_LINES CAL
811       WHERE CAL.AE_LINE_ID = L_AE_LINE_ID;
812     ELSE
813       L_STMT_NUM := 100;
814       L_TXN_QUANTITY := L_QUANTITY;
815     END IF;
816     RETURN (L_TXN_QUANTITY);
817   EXCEPTION
818     WHEN PROCESS_ERROR THEN
819       /*SRW.MESSAGE(998
820                  ,'Failed calculating accrual quantity :' || TO_CHAR(L_STMT_NUM) || ':' || L_MSG_DATA)*/NULL;
821       RAISE;
822     WHEN OTHERS THEN
823       /*SRW.MESSAGE(999
824                  ,'c_txn_quantity : failed calculating transaction quantity :' || TO_CHAR(L_STMT_NUM) || ':' || SUBSTR(SQLERRM
825                        ,1
826                        ,170))*/NULL;
827       RAISE;
828   END C_TXN_QUANTITY;
829 
830   FUNCTION C_QUANTITYFORMULA(AE_LINE_ID IN NUMBER
831                             ,QUANTITY IN NUMBER) RETURN NUMBER IS
832   BEGIN
833     /*SRW.REFERENCE(AE_LINE_ID)*/NULL;
834     /*SRW.REFERENCE(QUANTITY)*/NULL;
835     RETURN (C_TXN_QUANTITY(AE_LINE_ID
836                          ,QUANTITY));
837   END C_QUANTITYFORMULA;
838 
839   FUNCTION C_QUANTITY1FORMULA(AE_LINE_ID1 IN NUMBER
840                              ,QUANTITY1 IN NUMBER) RETURN NUMBER IS
841   BEGIN
842     /*SRW.REFERENCE(AE_LINE_ID1)*/NULL;
843     /*SRW.REFERENCE(QUANTITY1)*/NULL;
844     RETURN (C_TXN_QUANTITY(AE_LINE_ID1
845                          ,QUANTITY1));
846   END C_QUANTITY1FORMULA;
847 
848   FUNCTION C_QUANTITY2FORMULA(AE_LINE_ID2 IN NUMBER
849                              ,QUANTITY2 IN NUMBER) RETURN NUMBER IS
850   BEGIN
851     /*SRW.REFERENCE(AE_LINE_ID2)*/NULL;
852     /*SRW.REFERENCE(QUANTITY2)*/NULL;
853     RETURN (C_TXN_QUANTITY(AE_LINE_ID2
854                          ,QUANTITY2));
855   END C_QUANTITY2FORMULA;
856 
857   FUNCTION CP_APPLICATION_P RETURN VARCHAR2 IS
858   BEGIN
859     RETURN CP_APPLICATION;
860   END CP_APPLICATION_P;
861 
862   FUNCTION CP_COST_GROUP_P RETURN VARCHAR2 IS
863   BEGIN
864     RETURN CP_COST_GROUP;
865   END CP_COST_GROUP_P;
866 
867   FUNCTION CP_COST_TYPE_P RETURN VARCHAR2 IS
868   BEGIN
869     RETURN CP_COST_TYPE;
870   END CP_COST_TYPE_P;
871 
872   FUNCTION CP_LEGAL_ENTITY_P RETURN VARCHAR2 IS
873   BEGIN
874     RETURN CP_LEGAL_ENTITY;
875   END CP_LEGAL_ENTITY_P;
876 
877   FUNCTION CP_PERIOD_NAME_P RETURN VARCHAR2 IS
878   BEGIN
879     RETURN CP_PERIOD_NAME;
880   END CP_PERIOD_NAME_P;
881 
882   FUNCTION CP_REQUESTED_BY_P RETURN VARCHAR2 IS
883   BEGIN
884     RETURN CP_REQUESTED_BY;
885   END CP_REQUESTED_BY_P;
886 
887   FUNCTION CP_REQUEST_TIME_P RETURN VARCHAR2 IS
888   BEGIN
889     RETURN CP_REQUEST_TIME;
890   END CP_REQUEST_TIME_P;
891 
892   FUNCTION CP_RESPONSIBILITY_P RETURN VARCHAR2 IS
893   BEGIN
894     RETURN CP_RESPONSIBILITY;
895   END CP_RESPONSIBILITY_P;
896 
897   FUNCTION CP_PRECISION_P RETURN NUMBER IS
898   BEGIN
899     RETURN CP_PRECISION;
900   END CP_PRECISION_P;
901 
902   FUNCTION CP_SORT_BY_COV_P RETURN VARCHAR2 IS
903   BEGIN
904     RETURN CP_SORT_BY_COV;
905   END CP_SORT_BY_COV_P;
906 
907   FUNCTION CP_TYPE_OPTION_COV_P RETURN VARCHAR2 IS
908   BEGIN
909     RETURN CP_TYPE_OPTION_COV;
910   END CP_TYPE_OPTION_COV_P;
911 
912   FUNCTION CP_EXT_PRECISION_P RETURN NUMBER IS
913   BEGIN
914     RETURN CP_EXT_PRECISION;
915   END CP_EXT_PRECISION_P;
916 
917 END BOM_CSTRPMDD_XMLP_PKG;
918 
919 
920