DBA Data[Home] [Help]

PACKAGE BODY: APPS.WSH_WSHRDBOL_XMLP_PKG

Source


1 PACKAGE BODY WSH_WSHRDBOL_XMLP_PKG AS
2 /* $Header: WSHRDBOLB.pls 120.3.12010000.2 2008/09/15 15:49:14 gbhargav ship $ */
3   FUNCTION AFTERPFORM RETURN BOOLEAN IS
4   BEGIN
5     P_DELIVERY_DATE_HIGH_V:=P_DELIVERY_DATE_HIGH;
6     LP_WHERE_CLAUSE := 'where 1 = 1';
7     IF P_DELIVERY_LEG_ID IS NOT NULL THEN
8       LP_DELIVERY_LEG_ID := 'AND wbrv.delivery_leg_id = :P_DELIVERY_LEG_ID';
9     END IF;
10     IF P_DELIVERY_DATE_HIGH IS NOT NULL THEN
11       --P_DELIVERY_DATE_HIGH := P_DELIVERY_DATE_HIGH + (86399 / 86400);
12       P_DELIVERY_DATE_HIGH_V := P_DELIVERY_DATE_HIGH + (86399 / 86400);
13     END IF;
14     --IF P_DELIVERY_DATE_LOW IS NOT NULL OR P_DELIVERY_DATE_HIGH IS NOT NULL THEN
15     IF P_DELIVERY_DATE_LOW IS NOT NULL OR P_DELIVERY_DATE_HIGH_V IS NOT NULL THEN
16       IF P_DELIVERY_DATE_LOW IS NULL THEN
17         --LP_DATE_RANGE := 'AND wbrv.delivery_leg_id IN (select distinct delivery_leg_id from wsh_delivery_legs where pick_up_stop_id in (select stop_id from wsh_trip_stops where planned_departure_date <= :P_DELIVERY_DATE_HIGH))';
18         LP_DATE_RANGE := 'AND wbrv.delivery_leg_id IN (select distinct delivery_leg_id from wsh_delivery_legs where pick_up_stop_id in (select stop_id from wsh_trip_stops where planned_departure_date <= :P_DELIVERY_DATE_HIGH_V))';
19       --ELSIF P_DELIVERY_DATE_HIGH IS NULL THEN
20       ELSIF P_DELIVERY_DATE_HIGH_V IS NULL THEN
21         LP_DATE_RANGE := 'AND wbrv.delivery_leg_id IN (select distinct delivery_leg_id from wsh_delivery_legs where pick_up_stop_id in (select stop_id from wsh_trip_stops where planned_departure_date >= :P_DELIVERY_DATE_LOW))';
22       ELSE
23         --LP_DATE_RANGE := 'AND wbrv.delivery_leg_id in (select distinct delivery_leg_id from wsh_delivery_legs where pick_up_stop_id in
24 	--(select stop_id from wsh_trip_stops where planned_departure_date between :P_DELIVERY_DATE_LOW and :P_DELIVERY_DATE_HIGH))';
25         LP_DATE_RANGE := 'AND wbrv.delivery_leg_id in (select distinct delivery_leg_id from wsh_delivery_legs where pick_up_stop_id in
26 	(select stop_id from wsh_trip_stops where planned_departure_date between :P_DELIVERY_DATE_LOW and :P_DELIVERY_DATE_HIGH_V))';
27       END IF;
28     END IF;
29     IF P_FREIGHT_CODE IS NOT NULL THEN
30       LP_FREIGHT_CODE := 'AND wbrv.ship_method = :P_FREIGHT_CODE';
31     END IF;
32     IF P_DELIVERY_ID IS NOT NULL THEN
33       LP_DELIVERY_ID := 'AND (wbrv.delivery_id = :P_DELIVERY_ID or
34                                                  exists (select delivery_id from wsh_delivery_legs wdl1
35                                                         where wdl1.delivery_id = wbrv.delivery_id
36                                                           and delivery_leg_id in
37                                                             (select parent_delivery_leg_id from wsh_delivery_legs
38                                                                     where delivery_id = :P_DELIVERY_ID))
39                                                  or
40                                                 exists ( select delivery_id from wsh_delivery_legs wdl2
41                                                         where wdl2.delivery_id = wbrv.delivery_id
42                                                           and parent_delivery_leg_id in
43                                                             (select delivery_leg_id from wsh_delivery_legs
44                                                               where delivery_id = :P_DELIVERY_ID))
45                                                        )';
46     END IF;
47     --Commented following in bug 7409923
48     /*
49     IF P_DELIVERY_ID IS NULL AND P_TRIP_ID IS NULL THEN
50       LP_DELIVERY_ID := 'AND (exists (select delivery_id from wsh_delivery_legs wdl1
51                                                         where wdl1.delivery_id = wbrv.delivery_id
52                                                           and delivery_leg_id in
53                                                             (select parent_delivery_leg_id from wsh_delivery_legs
54                                                                     where rownum=1))
55                                                  or
56                                                 exists ( select delivery_id from wsh_delivery_legs wdl2
57                                                         where wdl2.delivery_id = wbrv.delivery_id
58                                                           and parent_delivery_leg_id is not null)
59                                                        )';
60     END IF;
61     */
62 
63     IF P_ORGANIZATION_ID IS NOT NULL THEN
64       LP_ORGANIZATION_ID := 'AND wbrv.organization_id = :P_ORGANIZATION_ID';
65     END IF;
66     IF P_TRIP_ID IS NOT NULL THEN
67       LP_TRIP_ID := 'AND wbrv.delivery_leg_id in (select distinct delivery_leg_id from wsh_delivery_legs where pick_up_stop_id in (select stop_id from wsh_trip_stops where trip_id  = :P_TRIP_ID ))';
68     END IF;
69     RETURN (TRUE);
70   END AFTERPFORM;
71 
72   FUNCTION CF_LPNFORMULA(MASTER_CONTAINER_LPN IN VARCHAR2) RETURN CHAR IS
73     L_LPN VARCHAR2(30);
74   BEGIN
75     /*SRW.REFERENCE(MASTER_CONTAINER_LPN)*/NULL;
76     RETURN ('LPN# ' || MASTER_CONTAINER_LPN);
77   END CF_LPNFORMULA;
78 
79   FUNCTION CF_CONTAINER_ITEM_DESCRIPTIONF(DELIVERY_DETAIL_ID IN NUMBER
80                                          ,ORGANIZATION_ID IN NUMBER) RETURN CHAR IS
81     L_DESCRIPTION VARCHAR2(32767) := NULL;
82     L_CLASSIFICATION VARCHAR2(32767) := NULL;
83     L_HM VARCHAR2(1) := NULL;
84     L_NUM_PACKAGES NUMBER := NULL;
85     L_RETURN_STATUS VARCHAR2(1) := NULL;
86   BEGIN
87     /*SRW.REFERENCE(DELIVERY_DETAIL_ID)*/NULL;
88     WSH_BOLS_UTIL_PKG.GET_MASTER_CONTAINER_CONTENTS(DELIVERY_DETAIL_ID
89                                                    ,'REPORT'
90                                                    ,P_ITEM_DISPLAY
91                                                    ,ORGANIZATION_ID
92                                                    ,L_CLASSIFICATION
93                                                    ,L_DESCRIPTION
94                                                    ,L_HM
95                                                    ,L_NUM_PACKAGES
96                                                    ,L_RETURN_STATUS);
97     CP_CLASSIFICATION := L_CLASSIFICATION;
98     CP_HM := L_HM;
99     CP_NUM_PACKAGES := L_NUM_PACKAGES;
100     RETURN (L_DESCRIPTION);
101   END CF_CONTAINER_ITEM_DESCRIPTIONF;
102 
103   FUNCTION CF_CONTAINER_GROSS_WTFORMULA(MASTER_CONTAINER_GROSS_WEIGHT IN NUMBER
104                                        ,MASTER_CONTAINER_WEIGHT_UOM IN VARCHAR2) RETURN CHAR IS
105   BEGIN
106     /*SRW.REFERENCE(MASTER_CONTAINER_GROSS_WEIGHT)*/NULL;
107     /*SRW.REFERENCE(MASTER_CONTAINER_WEIGHT_UOM)*/NULL;
108     RETURN ('G ' || TO_CHAR(MASTER_CONTAINER_GROSS_WEIGHT) || ' ' || MASTER_CONTAINER_WEIGHT_UOM);
109   END CF_CONTAINER_GROSS_WTFORMULA;
110 
111   FUNCTION CF_1FORMULA(MASTER_CONTAINER_NET_WEIGHT IN NUMBER
112                       ,MASTER_CONTAINER_WEIGHT_UOM IN VARCHAR2) RETURN CHAR IS
113   BEGIN
114     /*SRW.REFERENCE(MASTER_CONTAINER_NET_WEIGHT)*/NULL;
115     /*SRW.REFERENCE(MASTER_CONTAINER_WEIGHT_UOM)*/NULL;
116     RETURN ('N ' || TO_CHAR(MASTER_CONTAINER_NET_WEIGHT) || ' ' || MASTER_CONTAINER_WEIGHT_UOM);
117   END CF_1FORMULA;
118 
119   FUNCTION CF_CONTAINER_TARE_WTFORMULA(MASTER_CONTAINER_TARE_WEIGHT IN NUMBER
120                                       ,MASTER_CONTAINER_WEIGHT_UOM IN VARCHAR2) RETURN CHAR IS
121   BEGIN
122     /*SRW.REFERENCE(MASTER_CONTAINER_TARE_WEIGHT)*/NULL;
123     /*SRW.REFERENCE(MASTER_CONTAINER_WEIGHT_UOM)*/NULL;
124     RETURN ('T ' || TO_CHAR(MASTER_CONTAINER_TARE_WEIGHT) || ' ' || MASTER_CONTAINER_WEIGHT_UOM);
125   END CF_CONTAINER_TARE_WTFORMULA;
126 
127   FUNCTION CF_CONTAINER_VOLUMEFORMULA(MASTER_CONTAINER_VOLUME IN NUMBER
128                                      ,MASTER_CONTAINER_VOLUME_UOM IN VARCHAR2) RETURN CHAR IS
129   BEGIN
130     /*SRW.REFERENCE(MASTER_CONTAINER_VOLUME)*/NULL;
131     /*SRW.REFERENCE(MASTER_CONTAINER_VOLUME_UOM)*/NULL;
132     RETURN (TO_CHAR(MASTER_CONTAINER_VOLUME) || ' ' || MASTER_CONTAINER_VOLUME_UOM);
133   END CF_CONTAINER_VOLUMEFORMULA;
134 
135   FUNCTION CF_UNPACKED_ITEM_DESCFORMULA(UNPACKED_ITEM_DESCRIPTION IN VARCHAR2
136                                        ,UNPACKED_ITEM_SHIPPED_QUANTITY IN NUMBER
137                                        ,UNPACKED_ITEM_QUANTITY_UOM IN VARCHAR2
138                                        ,UNPACKED_ITEM_ORGANIZATION_ID IN NUMBER
139                                        ,UNPACKED_ITEM_INV_ITEM_ID IN NUMBER
140                                        ,UNPACKED_ITEM_QUANTITY_UOM2 IN VARCHAR2
141                                        ,UNPACKED_ITEM_SHIPPED_QTY2 IN NUMBER) RETURN CHAR IS
142     CURSOR INVENTORY_LABEL(ID IN NUMBER,ORG_ID IN NUMBER) IS
143       SELECT
144         DESCRIPTION
145       FROM
146         MTL_SYSTEM_ITEMS_VL
147       WHERE INVENTORY_ITEM_ID = ID
148         AND ORGANIZATION_ID = ORG_ID;
149     L_DESCRIPTION VARCHAR2(1900);
150     L_SECOND_DESC VARCHAR2(100);
151     MESG VARCHAR2(10);
152     L_ITEM_DESC VARCHAR2(250);
153   BEGIN
154     /*SRW.REFERENCE(UNPACKED_ITEM_DESCRIPTION)*/NULL;
155     /*SRW.REFERENCE(UNPACKED_ITEM_SHIPPED_QUANTITY)*/NULL;
156     /*SRW.REFERENCE(UNPACKED_ITEM_QUANTITY_UOM)*/NULL;
157     /*SRW.REFERENCE(UNPACKED_ITEM_ORGANIZATION_ID)*/NULL;
158     /*SRW.REFERENCE(UNPACKED_ITEM_INV_ITEM_ID)*/NULL;
159     L_ITEM_DESC := UNPACKED_ITEM_DESCRIPTION;
160     IF (UNPACKED_ITEM_INV_ITEM_ID IS NOT NULL) THEN
161       OPEN INVENTORY_LABEL(UNPACKED_ITEM_INV_ITEM_ID,UNPACKED_ITEM_ORGANIZATION_ID);
162       FETCH INVENTORY_LABEL
163        INTO L_ITEM_DESC;
164       IF (INVENTORY_LABEL%NOTFOUND) THEN
165         L_ITEM_DESC := UNPACKED_ITEM_DESCRIPTION;
166       END IF;
167       CLOSE INVENTORY_LABEL;
168     END IF;
169     IF P_ITEM_DISPLAY = 'D' THEN
170       L_DESCRIPTION := L_ITEM_DESC;
171     ELSIF P_ITEM_DISPLAY = 'F' THEN
172       L_DESCRIPTION := WSH_UTIL_CORE.GENERIC_FLEX_NAME(UNPACKED_ITEM_INV_ITEM_ID
173                                                       ,UNPACKED_ITEM_ORGANIZATION_ID
174                                                       ,'INV'
175                                                       ,P_ITEM_FLEX_CODE
176                                                       ,101);
177     ELSE
178       L_DESCRIPTION := WSH_UTIL_CORE.GENERIC_FLEX_NAME(UNPACKED_ITEM_INV_ITEM_ID
179                                                       ,UNPACKED_ITEM_ORGANIZATION_ID
180                                                       ,'INV'
181                                                       ,P_ITEM_FLEX_CODE
182                                                       ,101) || ' ' || L_ITEM_DESC;
183     END IF;
184     IF (NVL(UNPACKED_ITEM_QUANTITY_UOM2
185        ,'*') <> '*') THEN
186       L_SECOND_DESC := ' ( ' || NVL(UNPACKED_ITEM_SHIPPED_QTY2
187                           ,0) || ' ' || UNPACKED_ITEM_QUANTITY_UOM2 || ' )';
188     ELSE
189       L_SECOND_DESC := NULL;
190     END IF;
191     FND_MESSAGE.SET_NAME('WSH'
192                         ,'WSH_WEB_OF_LABEL');
193     MESG := FND_MESSAGE.GET;
194     RETURN (TO_CHAR(UNPACKED_ITEM_SHIPPED_QUANTITY) || ' ' || UNPACKED_ITEM_QUANTITY_UOM || L_SECOND_DESC || ' ' || MESG || ' ' || L_DESCRIPTION);
195   END CF_UNPACKED_ITEM_DESCFORMULA;
196 
197   FUNCTION CF_UNPACKED_ITEM_WTFORMULA(UNPACKED_ITEM_NET_WEIGHT IN NUMBER
198                                      ,UNPACKED_ITEM_WEIGHT_UOM IN VARCHAR2) RETURN CHAR IS
199   BEGIN
200     /*SRW.REFERENCE(UNPACKED_ITEM_NET_WEIGHT)*/NULL;
201     /*SRW.REFERENCE(UNPACKED_ITEM_WEIGHT_UOM)*/NULL;
202     RETURN (TO_CHAR(UNPACKED_ITEM_NET_WEIGHT) || ' ' || UNPACKED_ITEM_WEIGHT_UOM);
203   END CF_UNPACKED_ITEM_WTFORMULA;
204 
205   FUNCTION CF_UNPACKED_ITEM_VOLFORMULA(UNPACKED_ITEM_VOLUME IN NUMBER
206                                       ,UNPACKED_ITEM_VOLUME_UOM IN VARCHAR2) RETURN CHAR IS
207   BEGIN
208     /*SRW.REFERENCE(UNPACKED_ITEM_VOLUME)*/NULL;
209     /*SRW.REFERENCE(UNPACKED_ITEM_VOLUME_UOM)*/NULL;
210     RETURN (TO_CHAR(UNPACKED_ITEM_VOLUME) || ' ' || UNPACKED_ITEM_VOLUME_UOM);
211   END CF_UNPACKED_ITEM_VOLFORMULA;
212 
213   FUNCTION CF_FC_COLLECT_CURRENCYFORMULA(FC_COLLECT_CURRENCY IN VARCHAR2) RETURN NUMBER IS
214   BEGIN
215     /*SRW.REFERENCE(FC_COLLECT_CURRENCY)*/NULL;
216     CP_TOTAL_COLLECT_CURRENCY := FC_COLLECT_CURRENCY;
217     RETURN (0);
218   END CF_FC_COLLECT_CURRENCYFORMULA;
219 
220   FUNCTION CP_NUM_PACKAGESFORMULA RETURN NUMBER IS
221   BEGIN
222     NULL;
223   END CP_NUM_PACKAGESFORMULA;
224 
225   FUNCTION CF_NUM_OF_LPN1FORMULA(DELIVERY_ID3 IN NUMBER) RETURN NUMBER IS
226     CURSOR LPN IS
227       SELECT
228         NUMBER_OF_LPN
229       FROM
230         WSH_NEW_DELIVERIES
231       WHERE DELIVERY_ID = DELIVERY_ID3;
232     L_NUM_LPN NUMBER;
233   BEGIN
234     OPEN LPN;
235     FETCH LPN
236      INTO L_NUM_LPN;
237     CLOSE LPN;
238     RETURN (L_NUM_LPN);
239   END CF_NUM_OF_LPN1FORMULA;
240 
241   FUNCTION BEFOREREPORT RETURN BOOLEAN IS
242   BEGIN
243     BEGIN
244       P_CONC_REQUEST_ID := FND_GLOBAL.CONC_REQUEST_ID;
245       /*SRW.USER_EXIT('FND SRWINIT')*/NULL;
246     EXCEPTION
247       WHEN /*SRW.USER_EXIT_FAILURE*/OTHERS THEN
248         /*SRW.MESSAGE(1
249                    ,'Failed FND SRWINIT.')*/NULL;
250         /*RAISE SRW.PROGRAM_ABORT*/RAISE_APPLICATION_ERROR(-20101,null);
251     END;
252     RETURN (TRUE);
253   END BEFOREREPORT;
254 
255   FUNCTION AFTERREPORT RETURN BOOLEAN IS
256   BEGIN
257     BEGIN
258       /*SRW.USER_EXIT('FND SRWEXIT')*/NULL;
259     EXCEPTION
260       WHEN /*SRW.USER_EXIT_FAILURE*/OTHERS THEN
261         /*SRW.MESSAGE(1
262                    ,'Failed in SRWEXIT')*/NULL;
263         RAISE;
264     END;
265     RETURN (TRUE);
266   END AFTERREPORT;
267 
268   FUNCTION LP_WHERE_CLAUSEVALIDTRIGGER RETURN BOOLEAN IS
269   BEGIN
270     RETURN (TRUE);
271   END LP_WHERE_CLAUSEVALIDTRIGGER;
272 
273   FUNCTION CF_DOCK_CODEFORMULA(DELIVERY_ID3 IN NUMBER) RETURN CHAR IS
274     L_DOCK_CODE WSH_DELIVERY_DETAILS.CUSTOMER_DOCK_CODE%TYPE;
275     L_PREV_DOCK_CODE WSH_DELIVERY_DETAILS.CUSTOMER_DOCK_CODE%TYPE;
276     L_COUNT NUMBER;
277     CURSOR C_DOCK IS
278       SELECT
279         DISTINCT
280         ( WDD.CUSTOMER_DOCK_CODE )
281       FROM
282         WSH_DELIVERY_DETAILS WDD,
283         WSH_DELIVERY_ASSIGNMENTS_V WDA
284       WHERE WDA.DELIVERY_ID = DELIVERY_ID3
285         AND WDA.DELIVERY_DETAIL_ID = WDD.DELIVERY_DETAIL_ID
286         AND NVL(WDD.CONTAINER_FLAG
287          ,'N') = 'N'
288         AND WDD.CUSTOMER_DOCK_CODE is not null
289       GROUP BY
290         WDD.CUSTOMER_DOCK_CODE;
291   BEGIN
292     L_COUNT := 0;
293     L_PREV_DOCK_CODE := NULL;
294     L_DOCK_CODE := NULL;
295     OPEN C_DOCK;
296     LOOP
297       FETCH C_DOCK
298        INTO L_DOCK_CODE;
299       EXIT WHEN C_DOCK%NOTFOUND;
300       L_COUNT := L_COUNT + 1;
301       IF (L_COUNT > 1) THEN
302         IF (L_DOCK_CODE <> L_PREV_DOCK_CODE) THEN
303           L_DOCK_CODE := NULL;
304           CLOSE C_DOCK;
305           EXIT;
306         END IF;
307       END IF;
308       L_PREV_DOCK_CODE := L_DOCK_CODE;
309     END LOOP;
310     CLOSE C_DOCK;
311     RETURN L_DOCK_CODE;
312   EXCEPTION
313     WHEN NO_DATA_FOUND THEN
314       L_DOCK_CODE := NULL;
315       RETURN (L_DOCK_CODE);
316     WHEN OTHERS THEN
317       L_DOCK_CODE := NULL;
318       RETURN (L_DOCK_CODE);
319   END CF_DOCK_CODEFORMULA;
320 
321   FUNCTION CF_CARRIER_NAMEFORMULA(SHIP_METHOD IN VARCHAR2) RETURN CHAR IS
322     L_CARRIER_NAME VARCHAR2(30);
323     L_CARRIER_ID NUMBER;
324   BEGIN
325     SELECT
326       CARRIER_ID
327     INTO L_CARRIER_ID
328     FROM
329       WSH_CARRIER_SERVICES
330     WHERE SHIP_METHOD_CODE = SHIP_METHOD;
331     SELECT
332       PARTY_NAME
333     INTO L_CARRIER_NAME
334     FROM
335       HZ_PARTIES
336     WHERE PARTY_ID = L_CARRIER_ID;
337     RETURN (L_CARRIER_NAME);
338   EXCEPTION
339     WHEN OTHERS THEN
340       RETURN (NULL);
341   END CF_CARRIER_NAMEFORMULA;
342 
343   FUNCTION CF_MBOL_NUMBERFORMULA(TRIP_ID1 IN NUMBER) RETURN CHAR IS
344     L_MBOL_NUMBER VARCHAR2(50);
345   BEGIN
346     SELECT
347       SEQUENCE_NUMBER
348     INTO L_MBOL_NUMBER
349     FROM
350       WSH_DOCUMENT_INSTANCES
351     WHERE ENTITY_ID = TRIP_ID1
352       AND ENTITY_NAME = 'WSH_TRIPS';
353     RETURN L_MBOL_NUMBER;
354   EXCEPTION
355     WHEN NO_DATA_FOUND THEN
356       RETURN NULL;
357   END CF_MBOL_NUMBERFORMULA;
358 
359   FUNCTION CF_CUSTOMER_NAMEFORMULA(CUSTOMER_NAME IN VARCHAR2) RETURN CHAR IS
360     L_CUSTOMER_NAME HZ_PARTIES.PARTY_NAME%TYPE;
361     L_PERSON_TITLE HZ_PARTIES.PERSON_TITLE%TYPE;
362     L_PERSON_TITLE_UP HZ_PARTIES.PERSON_TITLE%TYPE;
363     L_LOOKUP_TYPE VARCHAR2(20);
364   BEGIN
365     /*SRW.REFERENCE(CUSTOMER_NAME)*/NULL;
366     SELECT
367       PARTY_NAME,
368       NVL(PERSON_PRE_NAME_ADJUNCT
369          ,PERSON_TITLE) TITLE
370     INTO L_CUSTOMER_NAME,L_PERSON_TITLE
371     FROM
372       HZ_PARTIES
373     WHERE PARTY_NAME = CUSTOMER_NAME;
374     IF L_PERSON_TITLE IS NOT NULL THEN
375       BEGIN
376         L_LOOKUP_TYPE := 'RESPONSIBILITY';
377         L_PERSON_TITLE_UP := UPPER(L_PERSON_TITLE);
378         SELECT
379           MEANING || ' ' || L_CUSTOMER_NAME
380         INTO L_CUSTOMER_NAME
381         FROM
382           AR_LOOKUPS
383         WHERE LOOKUP_CODE = L_PERSON_TITLE_UP
384           AND LOOKUP_TYPE = L_LOOKUP_TYPE;
385       EXCEPTION
386         WHEN OTHERS THEN
387           L_CUSTOMER_NAME := L_PERSON_TITLE || ' ' || L_CUSTOMER_NAME;
388       END;
389     END IF;
390     RETURN (L_CUSTOMER_NAME);
391   EXCEPTION
392     WHEN OTHERS THEN
393       RETURN (CUSTOMER_NAME);
394   END CF_CUSTOMER_NAMEFORMULA;
395 
396   FUNCTION CF_COMMODITY_CLASSFORMULA(UNPACKED_ITEM_INV_ITEM_ID IN NUMBER
397                                     ,UNPACKED_ITEM_ORGANIZATION_ID IN NUMBER) RETURN CHAR IS
398     L_CLASS_LIST VARCHAR2(1000);
399     CURSOR C_CATEGORY(C_INV_ITEM_ID IN NUMBER,C_INV_ORG_ID IN NUMBER) IS
400       SELECT
401         CONCATENATED_SEGMENTS COMM_CLASS
402       FROM
403         MTL_CATEGORIES_KFV MC,
404         MTL_ITEM_CATEGORIES MIC,
405         MTL_CATEGORY_SETS_VL MCSTL
406       WHERE MIC.INVENTORY_ITEM_ID = C_INV_ITEM_ID
407         AND MIC.ORGANIZATION_ID = C_INV_ORG_ID
408         AND MIC.CATEGORY_SET_ID = MCSTL.CATEGORY_SET_ID
409         AND MC.CATEGORY_ID = MIC.CATEGORY_ID
410         AND MCSTL.CATEGORY_SET_NAME = 'WSH_COMMODITY_CODE'
411       ORDER BY
412         MC.CATEGORY_ID;
413   BEGIN
414     /*SRW.REFERENCE(UNPACKED_ITEM_INV_ITEM_ID)*/NULL;
415     /*SRW.REFERENCE(UNPACKED_ITEM_ORGANIZATION_ID)*/NULL;
416     FOR c_rec IN C_CATEGORY(UNPACKED_ITEM_INV_ITEM_ID,UNPACKED_ITEM_ORGANIZATION_ID) LOOP
417       IF (L_CLASS_LIST IS NULL) THEN
418         L_CLASS_LIST := C_REC.COMM_CLASS;
419       ELSE
420         L_CLASS_LIST := L_CLASS_LIST || ', ' || C_REC.COMM_CLASS;
421       END IF;
422     END LOOP;
423     RETURN (L_CLASS_LIST);
424   EXCEPTION
425     WHEN OTHERS THEN
426       RETURN (NULL);
427   END CF_COMMODITY_CLASSFORMULA;
428 
429   FUNCTION CF_DETAIL_COMM_CLASSFORMULA(DELIVERY_DETAIL_ID IN NUMBER) RETURN CHAR IS
430     L_CLASS_LIST VARCHAR2(4000);
431     CURSOR C_CATEGORY(C_INV_ITEM_ID IN NUMBER,C_INV_ORG_ID IN NUMBER) IS
432       SELECT
433         MC.SEGMENT1 || '-' || MC.SEGMENT2 || '-' || MC.SEGMENT3 COMM_CLASS
434       FROM
435         MTL_CATEGORIES MC,
436         MTL_ITEM_CATEGORIES MIC,
437         MTL_CATEGORY_SETS_VL MCSTL
438       WHERE MIC.INVENTORY_ITEM_ID = C_INV_ITEM_ID
439         AND MIC.ORGANIZATION_ID = C_INV_ORG_ID
440         AND MIC.CATEGORY_SET_ID = MCSTL.CATEGORY_SET_ID
441         AND MC.CATEGORY_ID = MIC.CATEGORY_ID
442         AND MCSTL.CATEGORY_SET_NAME = 'WSH_COMMODITY_CODE'
443       ORDER BY
444         MC.CATEGORY_ID;
445     CURSOR C_DLV_DETAIL(C_DELIVERY_DETAIL_ID IN NUMBER) IS
446       SELECT
447         DISTINCT
448         INVENTORY_ITEM_ID,
449         ORGANIZATION_ID
450       FROM
451         WSH_DELIVERY_DETAILS WDD
452       WHERE WDD.DELIVERY_DETAIL_ID IN (
453         SELECT
454           WDA.DELIVERY_DETAIL_ID
455         FROM
456           WSH_DELIVERY_ASSIGNMENTS WDA
457         START WITH WDA.DELIVERY_DETAIL_ID = C_DELIVERY_DETAIL_ID
458         CONNECT BY prior WDA.DELIVERY_DETAIL_ID = WDA.PARENT_DELIVERY_DETAIL_ID )
459         AND WDD.CONTAINER_FLAG = 'N';
460   BEGIN
461     /*SRW.REFERENCE(DELIVERY_DETAIL_ID)*/NULL;
462     FOR c_1 IN C_DLV_DETAIL(DELIVERY_DETAIL_ID) LOOP
463       FOR c_cat IN C_CATEGORY(c_1.inventory_item_id,c_1.organization_id) LOOP
464         IF (L_CLASS_LIST IS NULL) THEN
465           L_CLASS_LIST := C_CAT.COMM_CLASS;
466         ELSE
467           L_CLASS_LIST := L_CLASS_LIST || ', ' || C_CAT.COMM_CLASS;
468         END IF;
469       END LOOP;
470     END LOOP;
471     IF (LENGTH(L_CLASS_LIST) > 2000) THEN
472       L_CLASS_LIST := SUBSTR(L_CLASS_LIST
473                             ,1
474                             ,2000);
475     END IF;
476     RETURN (L_CLASS_LIST);
477   EXCEPTION
478     WHEN OTHERS THEN
479       RETURN (NULL);
480   END CF_DETAIL_COMM_CLASSFORMULA;
481 
482   FUNCTION CF_SRC_HDR_IDFORMULA RETURN NUMBER IS
483     CURSOR C_MATCH_DLV_DETAIL(C_INV_ITEM_ID IN NUMBER,C_INV_ORG_ID IN NUMBER,C_DELIVERY_ID IN NUMBER) IS
484       SELECT
485         WDD.DELIVERY_DETAIL_ID,
486         WDD.SOURCE_HEADER_ID,
487         WDD.SOURCE_LINE_ID,
488         WDD.TOP_MODEL_LINE_ID
489       FROM
490         WSH_DELIVERY_DETAILS WDD,
491         WSH_DELIVERY_ASSIGNMENTS WDA
492       WHERE WDA.DELIVERY_ID = C_DELIVERY_ID
493         AND WDA.DELIVERY_DETAIL_ID = WDD.DELIVERY_DETAIL_ID
494         AND WDD.INVENTORY_ITEM_ID = C_INV_ITEM_ID
495         AND WDD.ORGANIZATION_ID = C_INV_ORG_ID
496         AND WDD.TOP_MODEL_LINE_ID IS NOT NULL
497         AND ROWNUM = 1;
498     L_SRC_HEADER_ID NUMBER;
499     L_SRC_LINE_ID NUMBER;
500     L_TOP_MODEL_LINE_ID NUMBER;
501   BEGIN
502     RETURN (L_SRC_HEADER_ID);
503   EXCEPTION
504     WHEN OTHERS THEN
505       CP_TOP_MODEL_LINE_ID := NULL;
506       CP_SRC_LINE_ID := NULL;
507       RETURN (NULL);
508   END CF_SRC_HDR_IDFORMULA;
509 
510   FUNCTION CP_CLASSIFICATION_P RETURN VARCHAR2 IS
511   BEGIN
512     RETURN CP_CLASSIFICATION;
513   END CP_CLASSIFICATION_P;
514 
515   FUNCTION CP_NUM_PACKAGES_P RETURN NUMBER IS
516   BEGIN
517     RETURN CP_NUM_PACKAGES;
518   END CP_NUM_PACKAGES_P;
519 
520   FUNCTION CP_TOP_MODEL_LINE_ID_P RETURN NUMBER IS
521   BEGIN
522     RETURN CP_TOP_MODEL_LINE_ID;
523   END CP_TOP_MODEL_LINE_ID_P;
524 
525   FUNCTION CP_SRC_LINE_ID_P RETURN NUMBER IS
526   BEGIN
527     RETURN CP_SRC_LINE_ID;
528   END CP_SRC_LINE_ID_P;
529 
530   FUNCTION CP_CONTAINER_CLASSIFICATION_P RETURN VARCHAR2 IS
531   BEGIN
532     RETURN CP_CONTAINER_CLASSIFICATION;
533   END CP_CONTAINER_CLASSIFICATION_P;
534 
535   FUNCTION CP_HM_P RETURN VARCHAR2 IS
536   BEGIN
537     RETURN CP_HM;
538   END CP_HM_P;
539 
540   FUNCTION CP_TOTAL_PREPAID_AMOUNT_P RETURN NUMBER IS
541   BEGIN
542     RETURN CP_TOTAL_PREPAID_AMOUNT;
543   END CP_TOTAL_PREPAID_AMOUNT_P;
544 
545   FUNCTION CP_TOTAL_PREPAID_CURRENCY_P RETURN VARCHAR2 IS
546   BEGIN
547     RETURN CP_TOTAL_PREPAID_CURRENCY;
548   END CP_TOTAL_PREPAID_CURRENCY_P;
549 
550   FUNCTION CP_TOTAL_COLLECT_CURRENCY_P RETURN VARCHAR2 IS
551   BEGIN
552     RETURN CP_TOTAL_COLLECT_CURRENCY;
553   END CP_TOTAL_COLLECT_CURRENCY_P;
554 
555 END WSH_WSHRDBOL_XMLP_PKG;
556 
557