DBA Data[Home] [Help]

PACKAGE BODY: APPS.GML_GMLUNALC_XMLP_PKG

Source


1 PACKAGE BODY GML_GMLUNALC_XMLP_PKG AS
2 /* $Header: GMLUNALCB.pls 120.0 2007/12/24 13:19:58 nchinnam noship $ */
3   FUNCTION AFTERPFORM RETURN BOOLEAN IS
4     SORT4 VARCHAR2(20);
5   BEGIN
6     P_DEFAULT_LOCATION := FND_PROFILE.VALUE('IC$DEFAULT_LOCT');
7     PARAM_WHERE_CLAUSE := ' ';
8     IF (P_FROM_WHSE IS NOT NULL) THEN
9       PARAM_WHERE_CLAUSE := PARAM_WHERE_CLAUSE || ' and whse.whse_code >= :p_from_whse ';
10     END IF;
11     IF (P_TO_WHSE IS NOT NULL) THEN
12       PARAM_WHERE_CLAUSE := PARAM_WHERE_CLAUSE || ' and whse.whse_code <= :p_to_whse ';
13     END IF;
14     IF (P_FROM_ORDER_NO IS NOT NULL) THEN
15       PARAM_WHERE_CLAUSE := PARAM_WHERE_CLAUSE || ' and HDR.ORDER_NUMBER >= :p_from_order_no ';
16     END IF;
17     IF (P_TO_ORDER_NO IS NOT NULL) THEN
18       PARAM_WHERE_CLAUSE := PARAM_WHERE_CLAUSE || ' and HDR.ORDER_NUMBER <= :p_to_order_no ';
19     END IF;
20     IF (P_FROM_ITEM_NO IS NOT NULL) THEN
21       PARAM_WHERE_CLAUSE := PARAM_WHERE_CLAUSE || ' and itm.item_no >= :p_from_item_no ';
22     END IF;
23     IF (P_TO_ITEM_NO IS NOT NULL) THEN
24       PARAM_WHERE_CLAUSE := PARAM_WHERE_CLAUSE || ' and itm.item_no <= :p_to_item_no ';
25     END IF;
26     IF (P_FROM_CUST_NO IS NOT NULL) THEN
27       PARAM_WHERE_CLAUSE := PARAM_WHERE_CLAUSE || ' and dtl.ship_to_org_id >= :p_from_cust_no ';
28     END IF;
29     IF (P_TO_CUST_NO IS NOT NULL) THEN
30       PARAM_WHERE_CLAUSE := PARAM_WHERE_CLAUSE || ' and dtl.ship_to_org_id <= :p_to_cust_no ';
31     END IF;
32     IF (P_FROM_SHIPDATE IS NOT NULL) THEN
33       PARAM_WHERE_CLAUSE := PARAM_WHERE_CLAUSE || ' and TRUNC(DTL.SCHEDULE_SHIP_DATE) >= TRUNC(:p_from_shipdate) ';
34     END IF;
35     IF (P_TO_SHIPDATE IS NOT NULL) THEN
36       PARAM_WHERE_CLAUSE := PARAM_WHERE_CLAUSE || ' and TRUNC(DTL.SCHEDULE_SHIP_DATE) <= TRUNC(:p_to_shipdate) ';
37     END IF;
38     P_SORT := ' ';
39     IF P_SORT_1 = '5' THEN
40       P_SORT := P_SORT || ',WHSE_CODE';
41     ELSIF P_SORT_1 = '1' THEN
42       P_SORT := P_SORT || ',ITEM_NO';
43     ELSIF P_SORT_1 = '3' THEN
44       P_SORT := P_SORT || ',SHIP_DATE';
45     ELSIF P_SORT_1 = '2' THEN
46       P_SORT := P_SORT || ',ORDER_NO';
47     ELSIF P_SORT_1 = '4' THEN
48       P_SORT := P_SORT || ',CUSTOMER_NAME';
49     END IF;
50     IF P_SORT_2 = '5' THEN
51       P_SORT := P_SORT || ',WHSE_CODE';
52     ELSIF P_SORT_2 = '1' THEN
53       P_SORT := P_SORT || ',ITEM_NO';
54     ELSIF P_SORT_2 = '3' THEN
55       P_SORT := P_SORT || ',SHIP_DATE';
56     ELSIF P_SORT_2 = '2' THEN
57       P_SORT := P_SORT || ',ORDER_NO';
58     ELSIF P_SORT_2 = '4' THEN
59       P_SORT := P_SORT || ',CUSTOMER_NAME';
60     END IF;
61     IF P_SORT_3 = '5' THEN
62       P_SORT := P_SORT || ',WHSE_CODE';
63     ELSIF P_SORT_3 = '1' THEN
64       P_SORT := P_SORT || ',ITEM_NO';
65     ELSIF P_SORT_3 = '3' THEN
66       P_SORT := P_SORT || ',SHIP_DATE';
67     ELSIF P_SORT_3 = '2' THEN
68       P_SORT := P_SORT || ',ORDER_NO';
69     ELSIF P_SORT_3 = '4' THEN
70       P_SORT := P_SORT || ',CUSTOMER_NAME';
71     END IF;
72     IF P_SORT_4 = '5' THEN
73       P_SORT := P_SORT || ',WHSE_CODE';
74     ELSIF P_SORT_4 = '1' THEN
75       P_SORT := P_SORT || ',ITEM_NO';
76     ELSIF P_SORT_4 = '3' THEN
77       P_SORT := P_SORT || ',SHIP_DATE';
78     ELSIF P_SORT_4 = '2' THEN
79       P_SORT := P_SORT || ',ORDER_NO';
80     ELSIF P_SORT_4 = '4' THEN
81       P_SORT := P_SORT || ',CUSTOMER_NAME';
82     END IF;
83     RETURN (TRUE);
84   END AFTERPFORM;
85 
86   FUNCTION CF_1FORMULA(ITEM_ID IN NUMBER
87                       ,WHSE_CODE IN VARCHAR2
88                       ,QC_GRADE IN VARCHAR2
89                       ,UOM IN VARCHAR2) RETURN NUMBER IS
90   BEGIN
91     DECLARE
92       V_SHIP_QTY NUMBER;
93       V_COMMITTEDSALES_QTY NUMBER;
94       V_COMMITTEDPROD_QTY NUMBER;
95       V_INVENTORY_AVAIL NUMBER;
96       V_TEMP NUMBER;
97       L_GRADE_CTL NUMBER;
98       L_QTY_RESERVED_REAL NUMBER;
99       L_QTY2_RESERVED_REAL NUMBER;
100       L_ONHAND_QTY1 NUMBER := 0;
101       L_ONHAND_QTY2 NUMBER := 0;
102       L_COMMITTEDSALES_QTY1 NUMBER := 0;
103       L_COMMITTEDSALES_QTY2 NUMBER := 0;
104       L_ITEM_UOM VARCHAR2(4);
105       L_ORDER_UM VARCHAR2(4);
106       L_CONVERTED_UOM VARCHAR2(4);
107       L_CONVERTED_INVENTORY_AVAIL NUMBER;
108       CURSOR RESERVED_QUANTITY_FOR_GRD IS
109         SELECT
110           SUM(NVL(TRANS_QTY
111                  ,0)),
112           SUM(NVL(TRANS_QTY2
113                  ,0))
114         FROM
115           IC_TRAN_PND
116         WHERE ITEM_ID = CF_1FORMULA.ITEM_ID
117           AND WHSE_CODE = CF_1FORMULA.WHSE_CODE
118           AND COMPLETED_IND = 0
119           AND DELETE_MARK = 0
120           AND DOC_TYPE = 'OMSO'
121           AND QC_GRADE = CF_1FORMULA.QC_GRADE
122           AND ( LOT_ID <> 0
123         OR LOCATION <> FND_PROFILE.VALUE('IC$DEFAULT_LOCT') );
124       CURSOR RESERVED_QUANTITY_FOR_ATP IS
125         SELECT
126           SUM(NVL(TRANS_QTY
127                  ,0)),
128           SUM(NVL(TRANS_QTY2
129                  ,0))
130         FROM
131           IC_TRAN_PND
132         WHERE ITEM_ID = CF_1FORMULA.ITEM_ID
133           AND WHSE_CODE = CF_1FORMULA.WHSE_CODE
134           AND COMPLETED_IND = 0
135           AND DELETE_MARK = 0
136           AND ( LOT_ID <> 0
137         OR LOCATION <> FND_PROFILE.VALUE('IC$DEFAULT_LOCT') );
138       CURSOR QTY_ON_HAND IS
139         SELECT
140           SUM(NVL(S.ONHAND_ORDER_QTY
141                  ,0)),
142           SUM(NVL(S.ONHAND_ORDER_QTY2
143                  ,0)),
144           SUM(NVL(S.COMMITTEDSALES_QTY
145                  ,0)),
146           SUM(NVL(S.COMMITTEDSALES_QTY2
147                  ,0))
148         FROM
149           IC_SUMM_INV S
150         WHERE S.ITEM_ID = CF_1FORMULA.ITEM_ID
151           AND S.WHSE_CODE = CF_1FORMULA.WHSE_CODE;
152       CURSOR QTY_ON_HAND_GRADE IS
153         SELECT
154           SUM(NVL(S.ONHAND_ORDER_QTY
155                  ,0)),
156           SUM(NVL(S.ONHAND_ORDER_QTY2
157                  ,0)),
158           SUM(NVL(S.COMMITTEDSALES_QTY
159                  ,0)),
160           SUM(NVL(S.COMMITTEDSALES_QTY2
161                  ,0))
162         FROM
163           IC_SUMM_INV S
164         WHERE S.ITEM_ID = CF_1FORMULA.ITEM_ID
165           AND S.WHSE_CODE = CF_1FORMULA.WHSE_CODE
166           AND S.QC_GRADE = CF_1FORMULA.QC_GRADE;
167       CURSOR GET_GRADE_CTL IS
168         SELECT
169           GRADE_CTL
170         FROM
171           IC_ITEM_MST
172         WHERE ITEM_ID = CF_1FORMULA.ITEM_ID;
173       CURSOR GET_ITEM_UOM IS
174         SELECT
175           ITEM_UM
176         FROM
177           IC_ITEM_MST
178         WHERE ITEM_ID = CF_1FORMULA.ITEM_ID;
179     BEGIN
180       OPEN GET_GRADE_CTL;
181       FETCH GET_GRADE_CTL
182        INTO L_GRADE_CTL;
183       CLOSE GET_GRADE_CTL;
184       IF (L_GRADE_CTL > 0 AND CF_1FORMULA.QC_GRADE IS NOT NULL) THEN
185         OPEN RESERVED_QUANTITY_FOR_GRD;
186         FETCH RESERVED_QUANTITY_FOR_GRD
187          INTO L_QTY_RESERVED_REAL,L_QTY2_RESERVED_REAL;
188         CLOSE RESERVED_QUANTITY_FOR_GRD;
189       ELSE
190         OPEN RESERVED_QUANTITY_FOR_ATP;
191         FETCH RESERVED_QUANTITY_FOR_ATP
192          INTO L_QTY_RESERVED_REAL,L_QTY2_RESERVED_REAL;
193         CLOSE RESERVED_QUANTITY_FOR_ATP;
194       END IF;
195       L_QTY_RESERVED_REAL := NVL(L_QTY_RESERVED_REAL
196                                 ,0);
197       L_QTY2_RESERVED_REAL := NVL(L_QTY2_RESERVED_REAL
198                                  ,0);
199       IF (L_GRADE_CTL > 0 AND CF_1FORMULA.QC_GRADE IS NOT NULL) THEN
200         OPEN QTY_ON_HAND_GRADE;
201         FETCH QTY_ON_HAND_GRADE
202          INTO L_ONHAND_QTY1,L_ONHAND_QTY2,L_COMMITTEDSALES_QTY1,L_COMMITTEDSALES_QTY2;
203         CLOSE QTY_ON_HAND_GRADE;
204       ELSE
205         OPEN QTY_ON_HAND;
206         FETCH QTY_ON_HAND
207          INTO L_ONHAND_QTY1,L_ONHAND_QTY2,L_COMMITTEDSALES_QTY1,L_COMMITTEDSALES_QTY2;
208         CLOSE QTY_ON_HAND;
209       END IF;
210       L_ONHAND_QTY1 := NVL(L_ONHAND_QTY1
211                           ,0);
212       L_ONHAND_QTY2 := NVL(L_ONHAND_QTY2
213                           ,0);
214       L_COMMITTEDSALES_QTY1 := NVL(L_COMMITTEDSALES_QTY1
215                                   ,0);
216       L_COMMITTEDSALES_QTY2 := NVL(L_COMMITTEDSALES_QTY2
217                                   ,0);
218       V_INVENTORY_AVAIL := L_ONHAND_QTY1 + L_QTY_RESERVED_REAL;
219       OPEN GET_ITEM_UOM;
220       FETCH GET_ITEM_UOM
221        INTO L_ITEM_UOM;
222       CLOSE GET_ITEM_UOM;
223       /*SRW.MESSAGE('9'
224                  ,'l_item_uom =  ' || L_ITEM_UOM)*/NULL;
225       /*SRW.MESSAGE('2'
226                  ,'just b4 uom call uom =  ' || UOM)*/NULL;
227       /*SRW.MESSAGE('3'
228                  ,'just b4 uom item_id =  ' || ITEM_ID)*/NULL;
229       /*SRW.MESSAGE('4'
230                  ,'v_inventory_avail = ' || V_INVENTORY_AVAIL)*/NULL;
231       SELECT
232         UM_CODE
233       INTO L_ORDER_UM
234       FROM
235         SY_UOMS_MST
236       WHERE UOM_CODE = CF_1FORMULA.UOM;
237       GMICUOM.ICUOMCV(CF_1FORMULA.ITEM_ID
238                      ,0
239                      ,V_INVENTORY_AVAIL
240                      ,L_ITEM_UOM
241                      ,L_ORDER_UM
242                      ,L_CONVERTED_INVENTORY_AVAIL);
243       /*SRW.MESSAGE('4'
244                  ,'l_converted_inventory_avail = ' || L_CONVERTED_INVENTORY_AVAIL)*/NULL;
245       V_INVENTORY_AVAIL := L_CONVERTED_INVENTORY_AVAIL;
246       IF (V_INVENTORY_AVAIL < 0) THEN
247         RETURN 0;
248       ELSE
249         RETURN V_INVENTORY_AVAIL;
250       END IF;
251     END;
252     RETURN NULL;
253   END CF_1FORMULA;
254 
255   FUNCTION CF_SORT_DESCFORMULA RETURN VARCHAR2 IS
256   BEGIN
257     IF P_SORT_1 IS NOT NULL THEN
258       SELECT
259         MEANING
260       INTO CP_SORT_1
261       FROM
262         GEM_LOOKUP_VALUES
263       WHERE LOOKUP_TYPE like 'GEMMS_OP_ORUARPJ'
264         AND LOOKUP_CODE = P_SORT_1;
265     END IF;
266     IF P_SORT_2 IS NOT NULL THEN
267       SELECT
268         MEANING
269       INTO CP_SORT_2
270       FROM
271         GEM_LOOKUP_VALUES
272       WHERE LOOKUP_TYPE like 'GEMMS_OP_ORUARPJ'
273         AND LOOKUP_CODE = P_SORT_2;
274     END IF;
275     IF P_SORT_3 IS NOT NULL THEN
276       SELECT
277         MEANING
278       INTO CP_SORT_3
279       FROM
280         GEM_LOOKUP_VALUES
281       WHERE LOOKUP_TYPE like 'GEMMS_OP_ORUARPJ'
282         AND LOOKUP_CODE = P_SORT_3;
283     END IF;
284     IF P_SORT_4 IS NOT NULL THEN
285       SELECT
286         MEANING
287       INTO CP_SORT_4
288       FROM
289         GEM_LOOKUP_VALUES
290       WHERE LOOKUP_TYPE like 'GEMMS_OP_ORUARPJ'
291         AND LOOKUP_CODE = P_SORT_4;
292     END IF;
293     RETURN NULL;
294   EXCEPTION
295     WHEN OTHERS THEN
296       RETURN NULL;
297   END CF_SORT_DESCFORMULA;
298 
299   FUNCTION BEFOREREPORT RETURN BOOLEAN IS
300   BEGIN
301     P_CONC_REQUEST_ID := FND_GLOBAL.CONC_REQUEST_ID;
302     /*SRW.USER_EXIT('FND SRWINIT')*/NULL;
303     SELECT
304       NAME
305     INTO CP_ORGN_NAME
306     FROM
307       HR_OPERATING_UNITS
308     WHERE ORGANIZATION_ID = FND_PROFILE.VALUE('ORG_ID');
309     SELECT
310       USER_NAME
311     INTO CP_USER
312     FROM
313       FND_USER
314     WHERE P_DEFAULT_USER = USER_ID;
315     IF P_SORT_1 IS NOT NULL THEN
316       SELECT
317         MEANING
318       INTO CP_SORT_1
319       FROM
320         GEM_LOOKUPS
321       WHERE LOOKUP_TYPE like 'GEMMS_OP_ORUARPJ'
322         AND LOOKUP_CODE = P_SORT_1;
323     END IF;
324     IF P_SORT_2 IS NOT NULL THEN
325       SELECT
326         MEANING
327       INTO CP_SORT_2
328       FROM
329         GEM_LOOKUPS
330       WHERE LOOKUP_TYPE like 'GEMMS_OP_ORUARPJ'
331         AND LOOKUP_CODE = P_SORT_2;
332     END IF;
333     IF P_SORT_3 IS NOT NULL THEN
334       SELECT
335         MEANING
336       INTO CP_SORT_3
337       FROM
338         GEM_LOOKUPS
339       WHERE LOOKUP_TYPE like 'GEMMS_OP_ORUARPJ'
340         AND LOOKUP_CODE = P_SORT_3;
341     END IF;
342     IF P_SORT_4 IS NOT NULL THEN
343       SELECT
344         MEANING
345       INTO CP_SORT_4
346       FROM
347         GEM_LOOKUPS
348       WHERE LOOKUP_TYPE like 'GEMMS_OP_ORUARPJ'
349         AND LOOKUP_CODE = P_SORT_4;
350     END IF;
351     RETURN (TRUE);
352   EXCEPTION
353     WHEN OTHERS THEN
354       RETURN TRUE;
355   END BEFOREREPORT;
356 
357   FUNCTION CF_LINE_NUMBERFORMULA(LINE_NUMBER IN NUMBER
358                                 ,SHIPMENT_NUMBER IN NUMBER) RETURN NUMBER IS
359   BEGIN
360     DECLARE
361       L_LINE_NUMBER NUMBER;
362       L_SHIPMENT_NUMBER NUMBER;
363     BEGIN
364       L_LINE_NUMBER := LINE_NUMBER || '.' || SHIPMENT_NUMBER;
365       RETURN L_LINE_NUMBER;
366     END;
367     RETURN NULL;
368   END CF_LINE_NUMBERFORMULA;
369 
370   FUNCTION CF_UNALLOCATED_INVENTORYFORMUL(ITEM_ID IN NUMBER
371                                          ,LINE_ID IN NUMBER
372                                          ,UNALLOCATED_INVENTORY IN NUMBER
373                                          ,UOM IN VARCHAR2) RETURN NUMBER IS
374   BEGIN
375     DECLARE
376       L_ITEM_UOM VARCHAR2(4);
377       L_CONVERTED_UNALLOCATED_INV NUMBER;
378       V_UNALLOCATED_INVENTORY NUMBER;
379       L_LINE_ID NUMBER;
380       L_UNALLOCATED_INVENTORY NUMBER;
381       L_ORDER_UM VARCHAR2(4);
382       CURSOR GET_ITEM_UOM IS
383         SELECT
384           ITEM_UM
385         FROM
386           IC_ITEM_MST
387         WHERE ITEM_ID = CF_UNALLOCATED_INVENTORYFORMUL.ITEM_ID;
388       CURSOR CHECK_IC_TRAN_PND IS
389         SELECT
390           PND.LINE_ID
391         FROM
392           IC_TRAN_PND PND
393         WHERE PND.DOC_TYPE = 'OMSO'
394           AND PND.COMPLETED_IND = 0
395           AND PND.DELETE_MARK = 0
396           AND PND.TRANS_QTY < 0
397           AND LINE_ID = CF_UNALLOCATED_INVENTORYFORMUL.LINE_ID;
398     BEGIN
399       /*SRW.MESSAGE('1'
400                  ,'in unallocated_inventory conversion function')*/NULL;
401       OPEN CHECK_IC_TRAN_PND;
402       FETCH CHECK_IC_TRAN_PND
403        INTO L_LINE_ID;
404       CLOSE CHECK_IC_TRAN_PND;
405       IF (NVL(L_LINE_ID
406          ,0) = 0) THEN
407         RETURN (CF_UNALLOCATED_INVENTORYFORMUL.UNALLOCATED_INVENTORY);
408       ELSE
409         OPEN GET_ITEM_UOM;
410         FETCH GET_ITEM_UOM
411          INTO L_ITEM_UOM;
412         CLOSE GET_ITEM_UOM;
413         /*SRW.MESSAGE('9'
414                    ,'zzl_item_uom =  ' || L_ITEM_UOM)*/NULL;
415         /*SRW.MESSAGE('2'
416                    ,'zzjust b4 uom call uom =  ' || UOM)*/NULL;
417         /*SRW.MESSAGE('3'
418                    ,'zzjust b4 uom item_id =  ' || ITEM_ID)*/NULL;
419         /*SRW.MESSAGE('4'
420                    ,'zzunallocated_inventory = ' || UNALLOCATED_INVENTORY)*/NULL;
421         SELECT
422           UM_CODE
423         INTO L_ORDER_UM
424         FROM
425           SY_UOMS_MST
426         WHERE UOM_CODE = UOM;
427         GMICUOM.ICUOMCV(CF_UNALLOCATED_INVENTORYFORMUL.ITEM_ID
428                        ,0
429                        ,CF_UNALLOCATED_INVENTORYFORMUL.UNALLOCATED_INVENTORY
430                        ,L_ITEM_UOM
431                        ,L_ORDER_UM
432                        ,L_CONVERTED_UNALLOCATED_INV);
433         /*SRW.MESSAGE('4'
434                    ,'l_converted_iunallocated_inventory = ' || L_CONVERTED_UNALLOCATED_INV)*/NULL;
435         V_UNALLOCATED_INVENTORY := L_CONVERTED_UNALLOCATED_INV;
436         IF (V_UNALLOCATED_INVENTORY < 0) THEN
437           RETURN 0;
438         ELSE
439           RETURN V_UNALLOCATED_INVENTORY;
440         END IF;
441       END IF;
442     END;
443   END CF_UNALLOCATED_INVENTORYFORMUL;
444 
445   FUNCTION AFTERREPORT RETURN BOOLEAN IS
446   BEGIN
447     /*SRW.USER_EXIT('FND SRWEXIT')*/NULL;
448     RETURN (TRUE);
449   END AFTERREPORT;
450 
451   FUNCTION CP_ORGN_NAME_P RETURN VARCHAR2 IS
452   BEGIN
453     RETURN CP_ORGN_NAME;
454   END CP_ORGN_NAME_P;
455 
456   FUNCTION CP_USER_P RETURN VARCHAR2 IS
457   BEGIN
458     RETURN CP_USER;
459   END CP_USER_P;
460 
461   FUNCTION CP_SORT_4_P RETURN VARCHAR2 IS
462   BEGIN
463     RETURN CP_SORT_4;
464   END CP_SORT_4_P;
465 
466   FUNCTION CP_SORT_3_P RETURN VARCHAR2 IS
467   BEGIN
468     RETURN CP_SORT_3;
469   END CP_SORT_3_P;
470 
471   FUNCTION CP_SORT_2_P RETURN VARCHAR2 IS
472   BEGIN
473     RETURN CP_SORT_2;
474   END CP_SORT_2_P;
475 
476   FUNCTION CP_SORT_1_P RETURN VARCHAR2 IS
477   BEGIN
478     RETURN CP_SORT_1;
479   END CP_SORT_1_P;
480 
481 END GML_GMLUNALC_XMLP_PKG;
482