129: l_dflex_r.flexfield_name := P_DESC_FLEX_NAME ; -- 'MTL_UOM_CLASSES';
130: /* Get all contexts */
131:
132: IF (L_DEBUG = 1) THEN
133: INV_LOG_UTIL.TRACE('Before getting context', 'inv_uom_api_pub', '9');
134: END IF;
135:
136:
137: FND_DFLEX.GET_CONTEXTS(FLEXFIELD => L_DFLEX_R, CONTEXTS => L_CONTEXTS_DR);
145: /* Using the position get the segments in the global context which are enabled */
146: l_context := l_contexts_dr.context_code(l_global_context);
147:
148: IF (L_DEBUG = 1) THEN
149: INV_LOG_UTIL.TRACE('l_context:' || L_CONTEXT, 'inv_uom_api_pub', '9');
150: END IF;
151:
152:
153: /* Prepare the context_r type for getting the segments associated with the global context */
167: IF (p_attributes_cnt > l_nsegments) AND
168: p_attribute_category IS NULL THEN
169:
170: IF (L_DEBUG = 1) THEN
171: INV_LOG_UTIL.TRACE('Parameter attribute count greater than segments in DFF:', 'inv_uom_api_pub', '9');
172: END IF;
173:
174: /* user passed more parameters than needed by global data elements,
175: * even though context is passed as null. hence error out
183: END IF;
184:
185:
186: IF (L_DEBUG = 1) THEN
187: INV_LOG_UTIL.TRACE('Before for loop:', 'inv_uom_api_pub', '9');
188: END IF;
189:
190: FOR i IN 1 .. l_nsegments LOOP
191: L_ENABLED_SEG_NAME(V_INDEX) := L_SEGMENTS_DR.APPLICATION_COLUMN_NAME(I);
223: END LOOP;
224:
225:
226: IF (L_DEBUG = 1) THEN
227: INV_LOG_UTIL.TRACE('After for loop:', 'inv_uom_api_pub', '9');
228: END IF;
229:
230: IF l_enabled_seg_name.COUNT > 0 THEN
231: FOR i IN l_enabled_seg_name.FIRST .. l_enabled_seg_name.LAST LOOP
230: IF l_enabled_seg_name.COUNT > 0 THEN
231: FOR i IN l_enabled_seg_name.FIRST .. l_enabled_seg_name.LAST LOOP
232:
233: IF (L_DEBUG = 1) THEN
234: INV_LOG_UTIL.TRACE('l_enabled_seg_name:' || l_enabled_seg_name(i), 'inv_uom_api_pub', '9');
235: END IF;
236:
237: NULL;
238: END LOOP;
242: l_context := NULL;
243: l_nsegments := 0;
244:
245: IF (L_DEBUG = 1) THEN
246: INV_LOG_UTIL.TRACE('p_attribute_category:' || p_attribute_category, 'inv_uom_api_pub', '9');
247: END IF;
248:
249: /*Get the context for the item passed */
250: IF p_attribute_category IS NOT NULL THEN
251:
252: L_CONTEXT := P_ATTRIBUTE_CATEGORY;
253:
254: IF (L_DEBUG = 1) THEN
255: INV_LOG_UTIL.TRACE('p_attribute_category:' || P_ATTRIBUTE_CATEGORY, 'inv_uom_api_pub', '9');
256: END IF;
257:
258: /* Set flex context for validation of the value set */
259: fnd_flex_descval.set_context_value(l_context);
268: FOR i IN 1 .. l_nsegments LOOP
269: l_enabled_seg_name(v_index) := l_segments_dr.application_column_name(i);
270:
271: IF (L_DEBUG = 1) THEN
272: INV_LOG_UTIL.TRACE('l_segments_dr.appl_column_name'||i||l_segments_dr.application_column_name(i), 'inv_uom_api_pub', '9');
273: END IF;
274:
275: IF l_segments_dr.is_required(i) THEN
276: col := SUBSTR(l_segments_dr.application_column_name(i)
330: -- x_req_error_flag := 'Y';
331: -- dbms_output.put_line('error_segment:'||error_segment);
332:
333: IF (L_DEBUG = 1) THEN
334: INV_LOG_UTIL.TRACE('ERROR_SEGMENT'||ERROR_SEGMENT, 'inv_uom_api_pub', '9');
335: END IF;
336:
337: RAISE errors_received;
338:
341: --END IF; /* p_attribute_category IS NOT NULL */
342:
343:
344: IF (L_DEBUG = 1) THEN
345: INV_LOG_UTIL.TRACE('End of validate_attr_info', 'inv_uom_api_pub', '9');
346: END IF;
347:
348: EXCEPTION
349: WHEN ERRORS_RECEIVED THEN
367: FND_MSG_PUB.COUNT_AND_GET(P_ENCODED => FND_API.G_FALSE, P_COUNT => X_MSG_COUNT, P_DATA => X_MSG_DATA);
368: X_MSG_DATA := FND_MSG_PUB.GET(X_MSG_COUNT, 'F');
369:
370: IF (L_DEBUG = 1) THEN
371: INV_LOG_UTIL.TRACE('errors_received exception:'||X_MSG_DATA, 'inv_uom_api_pub', '9');
372: END IF;
373:
374: WHEN fnd_api.g_exc_error THEN
375: x_return_status := fnd_api.g_ret_sts_error;
511: -- first if p_action_type = 'I'
512: IF p_action_type = 'I' THEN
513:
514: IF (L_DEBUG = 1) THEN
515: INV_LOG_UTIL.TRACE('Entered into the UOM_Class', 'inv_uom_api_pub', '9');
516: INV_LOG_UTIL.TRACE('P_UOM_CLASS:' || P_UOM_CLASS, 'inv_uom_api_pub', '9');
517: INV_LOG_UTIL.TRACE('testing..', 'inv_uom_api_pub', '9');
518: END IF;
519:
512: IF p_action_type = 'I' THEN
513:
514: IF (L_DEBUG = 1) THEN
515: INV_LOG_UTIL.TRACE('Entered into the UOM_Class', 'inv_uom_api_pub', '9');
516: INV_LOG_UTIL.TRACE('P_UOM_CLASS:' || P_UOM_CLASS, 'inv_uom_api_pub', '9');
517: INV_LOG_UTIL.TRACE('testing..', 'inv_uom_api_pub', '9');
518: END IF;
519:
520:
513:
514: IF (L_DEBUG = 1) THEN
515: INV_LOG_UTIL.TRACE('Entered into the UOM_Class', 'inv_uom_api_pub', '9');
516: INV_LOG_UTIL.TRACE('P_UOM_CLASS:' || P_UOM_CLASS, 'inv_uom_api_pub', '9');
517: INV_LOG_UTIL.TRACE('testing..', 'inv_uom_api_pub', '9');
518: END IF;
519:
520:
521: IF (L_DEBUG = 1) THEN
518: END IF;
519:
520:
521: IF (L_DEBUG = 1) THEN
522: INV_LOG_UTIL.TRACE('Entered into the UOM_Class', 'inv_uom_api_pub', '9');
523: INV_LOG_UTIL.TRACE('L_USERID:' || L_USERID, 'inv_uom_api_pub', '9');
524: INV_LOG_UTIL.TRACE('L_LOGINID:' || L_LOGINID, 'inv_uom_api_pub', '9');
525: END IF;
526:
519:
520:
521: IF (L_DEBUG = 1) THEN
522: INV_LOG_UTIL.TRACE('Entered into the UOM_Class', 'inv_uom_api_pub', '9');
523: INV_LOG_UTIL.TRACE('L_USERID:' || L_USERID, 'inv_uom_api_pub', '9');
524: INV_LOG_UTIL.TRACE('L_LOGINID:' || L_LOGINID, 'inv_uom_api_pub', '9');
525: END IF;
526:
527: -- Validating P_UOM_CLASS
520:
521: IF (L_DEBUG = 1) THEN
522: INV_LOG_UTIL.TRACE('Entered into the UOM_Class', 'inv_uom_api_pub', '9');
523: INV_LOG_UTIL.TRACE('L_USERID:' || L_USERID, 'inv_uom_api_pub', '9');
524: INV_LOG_UTIL.TRACE('L_LOGINID:' || L_LOGINID, 'inv_uom_api_pub', '9');
525: END IF;
526:
527: -- Validating P_UOM_CLASS
528: BEGIN
531:
532: IF L_FOUND THEN
533:
534: IF (L_DEBUG = 1) THEN
535: INV_LOG_UTIL.TRACE('Uom class exists:', 'inv_uom_api_pub', '9');
536: END IF;
537:
538: FND_MESSAGE.SET_NAME('INV', 'INV_DUP');
539: FND_MESSAGE.SET_TOKEN('VALUE1', P_UOM_CLASS);
546: END;
547: -- End of Validating P_UOM_CLASS
548:
549: IF (L_DEBUG = 1) THEN
550: INV_LOG_UTIL.TRACE('P_DISABLE_DATE:' || P_DISABLE_DATE, 'inv_uom_api_pub', '9');
551: END IF;
552:
553:
554: IF P_DISABLE_DATE IS NOT NULL AND TRUNC(P_DISABLE_DATE) < TRUNC(SYSDATE) THEN
578:
579: IF LENGTH(P_BASE_UOM_CODE) > 3 THEN
580:
581: IF (L_DEBUG = 1) THEN
582: INV_LOG_UTIL.TRACE('UOM code exceeds its length 3 ', 'inv_uom_api_pub', '9');
583: END IF;
584:
585: FND_MESSAGE.SET_NAME('INV', 'INV_INVALID_PARAMETER_TYPE');
586: FND_MESSAGE.SET_TOKEN('VALUE1', 'P_BASE_UOM_CODE');
607: NULL;
608: END ;
609:
610: IF (L_DEBUG = 1) THEN
611: INV_LOG_UTIL.TRACE('l_unit_of_measure:' || L_UNIT_OF_MEASURE, 'inv_uom_api_pub', '9');
612: INV_LOG_UTIL.TRACE('l_uom_code:' || L_UOM_CODE, 'inv_uom_api_pub', '9');
613: END IF;
614:
615: IF ( L_UNIT_OF_MEASURE IS NOT NULL) THEN
608: END ;
609:
610: IF (L_DEBUG = 1) THEN
611: INV_LOG_UTIL.TRACE('l_unit_of_measure:' || L_UNIT_OF_MEASURE, 'inv_uom_api_pub', '9');
612: INV_LOG_UTIL.TRACE('l_uom_code:' || L_UOM_CODE, 'inv_uom_api_pub', '9');
613: END IF;
614:
615: IF ( L_UNIT_OF_MEASURE IS NOT NULL) THEN
616: FND_MESSAGE.SET_NAME('INV', 'INV_UNIT_EXISTS');
649:
650: END IF ; -- end of first if p_action_type = 'I'
651:
652: IF (L_DEBUG = 1) THEN
653: INV_LOG_UTIL.TRACE('p_action_type:' || p_action_type, 'inv_uom_api_pub', '9');
654: END IF;
655:
656: IF p_action_type = 'U' THEN
657:
661:
662: IF NOT L_FOUND THEN
663:
664: IF (L_DEBUG = 1) THEN
665: INV_LOG_UTIL.TRACE('UOM Class does not exists', 'inv_uom_api_pub', '9');
666: END IF;
667:
668: -- FND_MESSAGE.SET_NAME('INV', 'INV_UOM_NOTFOUND'); -- added now
669: -- FND_MSG_PUB.ADD;
687:
688: IF LENGTH(P_BASE_UOM_CODE) > 3 THEN
689:
690: IF (L_DEBUG = 1) THEN
691: INV_LOG_UTIL.TRACE('UOM code exceeds its length 3 ', 'inv_uom_api_pub', '9');
692: END IF;
693:
694: FND_MESSAGE.SET_NAME('INV', 'INV_INVALID_PARAMETER_TYPE');
695: FND_MESSAGE.SET_TOKEN('VALUE1', 'P_BASE_UOM_CODE');
706:
707: IF P_DISABLE_DATE IS NOT NULL AND TRUNC(P_DISABLE_DATE) < TRUNC(SYSDATE) THEN
708:
709: IF (L_DEBUG = 1) THEN
710: INV_LOG_UTIL.TRACE('Disable date is past date', 'inv_uom_api_pub', '9');
711: END IF;
712:
713: FND_MESSAGE.SET_NAME('INV', 'INV_DISABLE_DATE');
714: FND_MSG_PUB.ADD;
750: RAISE FND_API.G_EXC_ERROR;
751: END ;
752:
753: IF (L_DEBUG = 1) THEN
754: INV_LOG_UTIL.TRACE('l_unit_of_measure:' || L_UNIT_OF_MEASURE, 'inv_uom_api_pub', '9');
755: INV_LOG_UTIL.TRACE('l_uom_code:' || L_UOM_CODE, 'inv_uom_api_pub', '9');
756: END IF;
757:
758: IF ( L_UNIT_OF_MEASURE IS NULL OR L_UOM_CODE IS NULL) THEN
751: END ;
752:
753: IF (L_DEBUG = 1) THEN
754: INV_LOG_UTIL.TRACE('l_unit_of_measure:' || L_UNIT_OF_MEASURE, 'inv_uom_api_pub', '9');
755: INV_LOG_UTIL.TRACE('l_uom_code:' || L_UOM_CODE, 'inv_uom_api_pub', '9');
756: END IF;
757:
758: IF ( L_UNIT_OF_MEASURE IS NULL OR L_UOM_CODE IS NULL) THEN
759: -- DBMS_OUTPUT.PUT_LINE('unit of measure already exists');
824: l_att_count := l_att_count + 1;
825: END IF;
826:
827: IF (L_DEBUG = 1) THEN
828: INV_LOG_UTIL.TRACE('No.of attributes passed to create class:'|| l_att_count, 'inv_uom_api_pub', '9');
829: END IF;
830:
831: l_inv_attributes_tbl (1) := p_attribute1;
832: l_inv_attributes_tbl (2) := p_attribute2;
854: , P_DESC_FLEX_NAME => L_DESC_FLEX_NAME
855: );
856:
857: IF (L_DEBUG = 1) THEN
858: INV_LOG_UTIL.TRACE('l_return_status:' || l_return_status, 'inv_uom_api_pub', '9');
859: INV_LOG_UTIL.TRACE('L_MSG_DATA:' || L_MSG_DATA, 'inv_uom_api_pub', '9');
860: END IF;
861:
862: IF L_RETURN_STATUS = 'E' THEN
855: );
856:
857: IF (L_DEBUG = 1) THEN
858: INV_LOG_UTIL.TRACE('l_return_status:' || l_return_status, 'inv_uom_api_pub', '9');
859: INV_LOG_UTIL.TRACE('L_MSG_DATA:' || L_MSG_DATA, 'inv_uom_api_pub', '9');
860: END IF;
861:
862: IF L_RETURN_STATUS = 'E' THEN
863: RAISE fnd_api.g_exc_error;
931: RAISE FND_API.G_EXC_ERROR;
932: END;
933:
934: IF (L_DEBUG = 1) THEN
935: INV_LOG_UTIL.TRACE('After inserting uom class, X_RETURN_STATUS:'|| X_RETURN_STATUS, 'inv_uom_api_pub', '9');
936: END IF;
937:
938: IF NOT (X_RETURN_STATUS = L_SUCCESS) THEN
939: APP_EXCEPTION.RAISE_EXCEPTION;
993: l_att_count := l_att_count + 1;
994: END IF;
995:
996: IF (L_DEBUG = 1) THEN
997: INV_LOG_UTIL.TRACE('No.of Attributes passed to create uom:'|| l_att_count, 'inv_uom_api_pub', '9');
998: END IF;
999:
1000: l_uom_attributes_tbl (1) := p_uom_attribute1;
1001: L_UOM_ATTRIBUTES_TBL (2) := P_UOM_ATTRIBUTE2;
1024: , P_DESC_FLEX_NAME => L_DESC_FLEX_NAME
1025: );
1026:
1027: IF (L_DEBUG = 1) THEN
1028: INV_LOG_UTIL.TRACE('l_return_status:' || l_return_status, 'inv_uom_api_pub', '9');
1029: INV_LOG_UTIL.TRACE('L_MSG_DATA:' || L_MSG_DATA, 'inv_uom_api_pub', '9');
1030: END IF;
1031:
1032: IF l_return_status = 'E' THEN
1025: );
1026:
1027: IF (L_DEBUG = 1) THEN
1028: INV_LOG_UTIL.TRACE('l_return_status:' || l_return_status, 'inv_uom_api_pub', '9');
1029: INV_LOG_UTIL.TRACE('L_MSG_DATA:' || L_MSG_DATA, 'inv_uom_api_pub', '9');
1030: END IF;
1031:
1032: IF l_return_status = 'E' THEN
1033: --DBMS_output.put_line('Error from validate_loc_attr_info');
1200: RAISE FND_API.G_EXC_ERROR;
1201: END;
1202:
1203: IF (L_DEBUG = 1) THEN
1204: INV_LOG_UTIL.TRACE('After update uom class , X_RETURN_STATUS:'|| X_RETURN_STATUS, 'inv_uom_api_pub', '9');
1205: END IF;
1206:
1207: IF X_RETURN_STATUS <> 'S' THEN
1208: RAISE FND_API.G_EXC_ERROR;
1361: IF L_FOUND THEN
1362:
1363: -- L_BASE_UOM_FLAG := 'N';
1364: IF (L_DEBUG = 1) THEN
1365: INV_LOG_UTIL.TRACE('UOM class exists', 'inv_uom_api_pub', '9');
1366: END IF;
1367:
1368: -- The unit of measure and uom code are not base uom.
1369: ELSE
1385:
1386: IF LENGTH(P_UOM_CODE) > 3 THEN
1387:
1388: IF (L_DEBUG = 1) THEN
1389: INV_LOG_UTIL.TRACE('UOM code exceeds its length 3 ', 'inv_uom_api_pub', '9');
1390: END IF;
1391:
1392: FND_MESSAGE.SET_NAME('INV', 'INV_INVALID_PARAMETER_TYPE');
1393: FND_MESSAGE.SET_TOKEN('VALUE1', 'P_UOM_CODE');
2038:
2039: IF P_DISABLE_DATE IS NOT NULL AND TRUNC(P_DISABLE_DATE) < TRUNC(SYSDATE) THEN
2040:
2041: IF (L_DEBUG = 1) THEN
2042: INV_LOG_UTIL.TRACE('Disable date is past date', 'inv_uom_api_pub', '9');
2043: END IF;
2044:
2045: FND_MESSAGE.SET_NAME('INV', 'INV_DISABLE_DATE');
2046: FND_MSG_PUB.ADD;
2066: l_qr := 0;
2067: END;
2068:
2069: IF (L_DEBUG = 1) THEN
2070: INV_LOG_UTIL.TRACE('Reservations l_qr:'|| l_qr, 'inv_uom_api_pub', '9');
2071: END IF;
2072:
2073: if l_qr > 0 then
2074:
2111: RAISE L_INVALID_UOM_EXC ;
2112: END ;
2113:
2114: IF (L_DEBUG = 1) THEN
2115: INV_LOG_UTIL.TRACE('L_FROM_UNIT_OF_MEASURE:' || L_FROM_UNIT_OF_MEASURE, 'inv_uom_api_pub', '9');
2116: INV_LOG_UTIL.TRACE('L_FROM_CLASS:' || L_FROM_CLASS, 'inv_uom_api_pub', '9');
2117: INV_LOG_UTIL.TRACE('P_FROM_BASE_UOM_FLAG:' || P_FROM_BASE_UOM_FLAG, 'inv_uom_api_pub', '9');
2118: END IF;
2119:
2112: END ;
2113:
2114: IF (L_DEBUG = 1) THEN
2115: INV_LOG_UTIL.TRACE('L_FROM_UNIT_OF_MEASURE:' || L_FROM_UNIT_OF_MEASURE, 'inv_uom_api_pub', '9');
2116: INV_LOG_UTIL.TRACE('L_FROM_CLASS:' || L_FROM_CLASS, 'inv_uom_api_pub', '9');
2117: INV_LOG_UTIL.TRACE('P_FROM_BASE_UOM_FLAG:' || P_FROM_BASE_UOM_FLAG, 'inv_uom_api_pub', '9');
2118: END IF;
2119:
2120: BEGIN
2113:
2114: IF (L_DEBUG = 1) THEN
2115: INV_LOG_UTIL.TRACE('L_FROM_UNIT_OF_MEASURE:' || L_FROM_UNIT_OF_MEASURE, 'inv_uom_api_pub', '9');
2116: INV_LOG_UTIL.TRACE('L_FROM_CLASS:' || L_FROM_CLASS, 'inv_uom_api_pub', '9');
2117: INV_LOG_UTIL.TRACE('P_FROM_BASE_UOM_FLAG:' || P_FROM_BASE_UOM_FLAG, 'inv_uom_api_pub', '9');
2118: END IF;
2119:
2120: BEGIN
2121: SELECT UNIT_OF_MEASURE , UOM_CLASS , BASE_UOM_FLAG
2128: RAISE L_INVALID_UOM_EXC ;
2129: END ;
2130:
2131: IF (L_DEBUG = 1) THEN
2132: INV_LOG_UTIL.TRACE('L_TO_UNIT_OF_MEASURE:' || L_TO_UNIT_OF_MEASURE, 'inv_uom_api_pub', '9');
2133: INV_LOG_UTIL.TRACE('L_TO_CLASS:' || L_TO_CLASS, 'inv_uom_api_pub', '9');
2134: INV_LOG_UTIL.TRACE('P_TO_BASE_UOM_FLAG:' || P_TO_BASE_UOM_FLAG, 'inv_uom_api_pub', '9');
2135: END IF;
2136:
2129: END ;
2130:
2131: IF (L_DEBUG = 1) THEN
2132: INV_LOG_UTIL.TRACE('L_TO_UNIT_OF_MEASURE:' || L_TO_UNIT_OF_MEASURE, 'inv_uom_api_pub', '9');
2133: INV_LOG_UTIL.TRACE('L_TO_CLASS:' || L_TO_CLASS, 'inv_uom_api_pub', '9');
2134: INV_LOG_UTIL.TRACE('P_TO_BASE_UOM_FLAG:' || P_TO_BASE_UOM_FLAG, 'inv_uom_api_pub', '9');
2135: END IF;
2136:
2137:
2130:
2131: IF (L_DEBUG = 1) THEN
2132: INV_LOG_UTIL.TRACE('L_TO_UNIT_OF_MEASURE:' || L_TO_UNIT_OF_MEASURE, 'inv_uom_api_pub', '9');
2133: INV_LOG_UTIL.TRACE('L_TO_CLASS:' || L_TO_CLASS, 'inv_uom_api_pub', '9');
2134: INV_LOG_UTIL.TRACE('P_TO_BASE_UOM_FLAG:' || P_TO_BASE_UOM_FLAG, 'inv_uom_api_pub', '9');
2135: END IF;
2136:
2137:
2138:
2148: P_UOM_RATE ,
2149: X_RETURN_STATUS );
2150:
2151: IF (L_DEBUG = 1) THEN
2152: INV_LOG_UTIL.TRACE('After standard uom conversion creations,X_RETURN_STATUS:'|| X_RETURN_STATUS, 'inv_uom_api_pub', '9');
2153: END IF;
2154:
2155: IF X_RETURN_STATUS = FND_API.G_RET_STS_SUCCESS THEN
2156:
2175:
2176: IF X_RETURN_STATUS = 'W' THEN
2177:
2178: IF (L_DEBUG = 1) THEN
2179: INV_LOG_UTIL.TRACE('Conversion already exists', 'inv_uom_api_pub', '9');
2180: END IF;
2181:
2182: FND_MESSAGE.SET_NAME('INV', 'INV_CONV_EXISTS');
2183: FND_MESSAGE.SET_TOKEN('VALUE1', P_FROM_UOM_CODE);
2199:
2200: IF L_FROM_CLASS = L_TO_CLASS THEN -- standard intra class conversion.
2201:
2202: IF (L_DEBUG = 1) THEN
2203: INV_LOG_UTIL.TRACE('Intra class conversion', 'inv_uom_api_pub', '9');
2204: END IF;
2205:
2206: IF P_FROM_BASE_UOM_FLAG = 'Y' AND P_TO_BASE_UOM_FLAG = 'N' THEN
2207:
2288: RAISE FND_API.G_EXC_ERROR;
2289: END;
2290:
2291: IF (L_DEBUG = 1) THEN
2292: INV_LOG_UTIL.TRACE('l_ORG_EXISTS:' || l_ORG_EXISTS, 'inv_uom_api_pub', '9');
2293: END IF;
2294:
2295: BEGIN
2296: SELECT 1
2307:
2308: END;
2309:
2310: IF (L_DEBUG = 1) THEN
2311: INV_LOG_UTIL.TRACE('l_ITEM_EXISTS:' || l_ITEM_EXISTS, 'inv_uom_api_pub', '9');
2312: END IF;
2313:
2314:
2315:
2333: END;
2334:
2335:
2336: IF (L_DEBUG = 1) THEN
2337: INV_LOG_UTIL.TRACE('l_primary_uom_code:' || L_PRIMARY_UOM_CODE || ',l_secondary_uom_code' || L_SECONDARY_UOM_CODE, 'inv_uom_api_pub', '9');
2338: INV_LOG_UTIL.TRACE('l_secondary_def_ind:' || L_SECONDARY_DEF_IND || ',l_tracking_quantity_ind' || L_TRACKING_QUANTITY_IND, 'inv_uom_api_pub', '9');
2339: INV_LOG_UTIL.TRACE('l_lot_divisible_flag:' || L_LOT_DIVISIBLE_FLAG, 'inv_uom_api_pub', '9');
2340: END IF;
2341:
2334:
2335:
2336: IF (L_DEBUG = 1) THEN
2337: INV_LOG_UTIL.TRACE('l_primary_uom_code:' || L_PRIMARY_UOM_CODE || ',l_secondary_uom_code' || L_SECONDARY_UOM_CODE, 'inv_uom_api_pub', '9');
2338: INV_LOG_UTIL.TRACE('l_secondary_def_ind:' || L_SECONDARY_DEF_IND || ',l_tracking_quantity_ind' || L_TRACKING_QUANTITY_IND, 'inv_uom_api_pub', '9');
2339: INV_LOG_UTIL.TRACE('l_lot_divisible_flag:' || L_LOT_DIVISIBLE_FLAG, 'inv_uom_api_pub', '9');
2340: END IF;
2341:
2342: -- End of Validating item and organization.
2335:
2336: IF (L_DEBUG = 1) THEN
2337: INV_LOG_UTIL.TRACE('l_primary_uom_code:' || L_PRIMARY_UOM_CODE || ',l_secondary_uom_code' || L_SECONDARY_UOM_CODE, 'inv_uom_api_pub', '9');
2338: INV_LOG_UTIL.TRACE('l_secondary_def_ind:' || L_SECONDARY_DEF_IND || ',l_tracking_quantity_ind' || L_TRACKING_QUANTITY_IND, 'inv_uom_api_pub', '9');
2339: INV_LOG_UTIL.TRACE('l_lot_divisible_flag:' || L_LOT_DIVISIBLE_FLAG, 'inv_uom_api_pub', '9');
2340: END IF;
2341:
2342: -- End of Validating item and organization.
2343: -- Validating p_from_uom_code and p_to_uom_code.
2366: RAISE L_INVALID_BASE_UOM;
2367: END ;
2368:
2369: IF (L_DEBUG = 1) THEN
2370: INV_LOG_UTIL.TRACE('l_uom_code:' || l_uom_code, 'inv_uom_api_pub', '9');
2371: END IF;
2372:
2373: BEGIN
2374:
2381:
2382: EXCEPTION
2383: WHEN NO_DATA_FOUND THEN
2384: IF (L_DEBUG = 1) THEN
2385: INV_LOG_UTIL.TRACE('From UOM code is not belongs to item primary uom code', 'inv_uom_api_pub', '9');
2386: END IF;
2387:
2388: FND_MESSAGE.SET_NAME('INV', 'INV_INVALID_ITEM_BASE');
2389: FND_MESSAGE.SET_TOKEN('VALUE', P_FROM_UOM_CODE);
2417: WHERE INVENTORY_ITEM_ID = P_ITEM_ID
2418: AND ORGANIZATION_ID = P_ORG_ID;
2419:
2420: IF (L_DEBUG = 1) THEN
2421: INV_LOG_UTIL.TRACE('v_lot_control_code:' || v_lot_control_code, 'inv_uom_api_pub', '9');
2422: INV_LOG_UTIL.TRACE('l_shelf_life_code:' || l_shelf_life_code, 'inv_uom_api_pub', '9');
2423: END IF;
2424:
2425: IF( v_lot_control_code = 1 ) THEN
2418: AND ORGANIZATION_ID = P_ORG_ID;
2419:
2420: IF (L_DEBUG = 1) THEN
2421: INV_LOG_UTIL.TRACE('v_lot_control_code:' || v_lot_control_code, 'inv_uom_api_pub', '9');
2422: INV_LOG_UTIL.TRACE('l_shelf_life_code:' || l_shelf_life_code, 'inv_uom_api_pub', '9');
2423: END IF;
2424:
2425: IF( v_lot_control_code = 1 ) THEN
2426: FND_MESSAGE.SET_NAME('INV', 'INV_LOTC_LOT_CTL_ERROR');
2464: AND EXPIRATION_DATE > SYSDATE;
2465: EXCEPTION
2466: WHEN NO_DATA_FOUND THEN
2467: IF (L_DEBUG = 1) THEN
2468: INV_LOG_UTIL.TRACE('Lot expired' , 'inv_uom_api_pub', '9');
2469: END IF;
2470: FND_MESSAGE.SET_NAME('INV', 'INV_LOT_EXPIRED');
2471: FND_MSG_PUB.ADD;
2472: RAISE FND_API.G_EXC_ERROR;
2491: -- Fetch the p_to_unit_of_measure from MTL_UNITS_OF_MEASURE_VL.
2492: EXCEPTION
2493: WHEN NO_DATA_FOUND THEN
2494: IF (L_DEBUG = 1) THEN
2495: INV_LOG_UTIL.TRACE('uom class conversion not exists', 'inv_uom_api_pub', '9');
2496: END IF;
2497: NULL;
2498: END ;
2499:
2497: NULL;
2498: END ;
2499:
2500: IF (L_DEBUG = 1) THEN
2501: INV_LOG_UTIL.TRACE('l_count:'||l_count, 'inv_uom_api_pub', '9');
2502: END IF;
2503:
2504: IF (l_count > 0) THEN
2505: FND_MESSAGE.SET_NAME('INV', 'INV_LOTC_UOM_INUSE');
2534: -- Fetch the p_to_unit_of_measure from MTL_UNITS_OF_MEASURE_VL.
2535: EXCEPTION
2536: WHEN NO_DATA_FOUND THEN
2537: IF (L_DEBUG = 1) THEN
2538: INV_LOG_UTIL.TRACE('No data found exception, lot conversion does not exists', 'inv_uom_api_pub', '9');
2539: END IF;
2540: RAISE L_LOT_CONV_NOT_EXISTS;
2541: END ;
2542:
2542:
2543: ELSE
2544:
2545: IF (L_DEBUG = 1) THEN
2546: INV_LOG_UTIL.TRACE('Invalid object type', 'inv_uom_api_pub', '9');
2547: END IF;
2548:
2549: FND_MESSAGE.SET_NAME('INV', 'INV_INVALID_PARAMETER_TYPE');
2550: fnd_message.set_token('VALUE1', 'p_action_type');
2570: FND_MESSAGE.SET_NAME('INV', 'INV_INT_REACODE');
2571: FND_MSG_PUB.ADD;
2572:
2573: IF (L_DEBUG = 1) THEN
2574: INV_LOG_UTIL.TRACE('NO data found for the reason id:'||P_REASON_ID, 'inv_uom_api_pub', '9');
2575: END IF;
2576:
2577: RAISE L_INVALID_REASON;
2578: end;
2585:
2586: IF ( P_UPDATE_TYPE NOT IN (1, 2, 3, 4) OR P_ONHAND_UPDATE NOT IN (1, 2) ) THEN
2587:
2588: IF (L_DEBUG = 1) THEN
2589: INV_LOG_UTIL.TRACE('Invalid Update type ', 'inv_uom_api_pub', '9');
2590: END IF;
2591:
2592: FND_MESSAGE.SET_NAME('INV', 'INV_LOTC_UPDATETYPE_INVALID');
2593: FND_MSG_PUB.ADD;
2631:
2632: IF (GET_NON_BATCH_TXNS % FOUND) THEN
2633:
2634: IF (L_DEBUG = 1) THEN
2635: INV_LOG_UTIL.TRACE(' INV_LOTCONV_NON_BATCH ', 'inv_uom_api_pub', '9');
2636: END IF;
2637:
2638: CLOSE GET_NON_BATCH_TXNS;
2639: FND_MESSAGE.SET_NAME('INV', 'INV_LOTCONV_NON_BATCH');
2649: END;
2650:
2651:
2652: IF (L_DEBUG = 1) THEN
2653: INV_LOG_UTIL.TRACE('Retrive batch associated with the lot.', 'inv_uom_api_pub', '9');
2654: END IF;
2655:
2656: -- Retrive batch associated with the lot.
2657: BEGIN
2671: X_OPM_COSTED_FLAG;
2672:
2673: IF GET_BATCH_INFO%NOTFOUND THEN
2674: IF (L_DEBUG = 1) THEN
2675: INV_LOG_UTIL.TRACE('record doest not exists in GET_BATCH_INFO ', 'inv_uom_api_pub', '9');
2676: END IF;
2677: EXIT;
2678: ELSE
2679: IF (x_row_count = 0) THEN
2707:
2708: END IF;
2709:
2710: IF (L_DEBUG = 1) THEN
2711: INV_LOG_UTIL.TRACE('X_OPM_COSTED_FLAG:'||X_OPM_COSTED_FLAG, 'inv_uom_api_pub', '9');
2712: END IF;
2713:
2714: IF (X_OPM_COSTED_FLAG IS NULL) THEN
2715:
2754: -- Primary qty can get affected only when conv is changed for batch detail uom.
2755: -- Raise error if from uom class is not same as batch secondary uom class.
2756:
2757: IF (L_DEBUG = 1) THEN
2758: INV_LOG_UTIL.TRACE('Openning Cursor GET_BATCH:', 'inv_uom_api_pub', '9');
2759: END IF;
2760:
2761: OPEN GET_BATCH;
2762: FETCH GET_BATCH INTO x_batch_row;
2811:
2812: --populating onhand table for the item in loop with correct values based on p_onhand_type.
2813:
2814: IF (L_DEBUG = 1) THEN
2815: INV_LOG_UTIL.TRACE('Openning Cursor CUR_ONHAND:', 'inv_uom_api_pub', '9');
2816: END IF;
2817:
2818: FOR CC IN CUR_ONHAND
2819: LOOP
2818: FOR CC IN CUR_ONHAND
2819: LOOP
2820:
2821: IF (L_DEBUG = 1) THEN
2822: INV_LOG_UTIL.TRACE('l_temp:' ||L_TEMP , 'inv_uom_api_pub', '9');
2823: END IF;
2824:
2825: new_primary_qty := NULL;
2826: new_secondary_qty := NULL;
2844:
2845: X_CALC_QTY := NEW_PRIMARY_QTY / P_UOM_RATE ;
2846:
2847: IF (L_DEBUG = 1) THEN
2848: INV_LOG_UTIL.TRACE('Recalculate primary...X_CALC_QTY:' || X_CALC_QTY, 'inv_uom_api_pub', '9');
2849: END IF;
2850:
2851: IF (X_CALC_QTY = - 99999) THEN
2852:
2867:
2868: X_CALC_QTY := NEW_SECONDARY_QTY * P_UOM_RATE;
2869:
2870: IF (L_DEBUG = 1) THEN
2871: INV_LOG_UTIL.TRACE('Recalculate primary...X_CALC_QTY:' || X_CALC_QTY, 'inv_uom_api_pub', '9');
2872: END IF;
2873:
2874: IF (X_CALC_QTY = - 99999) THEN
2875:
2896: TRANSACTION_PRIMARY_QTY := (NEW_PRIMARY_QTY - L_QTY_TBL(L_TEMP).OLD_PRIMARY_QTY);
2897: transaction_secondary_qty := (new_secondary_qty - l_qty_tbl(l_temp).old_secondary_qty);
2898:
2899: IF (L_DEBUG = 1) THEN
2900: INV_LOG_UTIL.TRACE('TRANSACTION_PRIMARY_QTY:' || TRANSACTION_PRIMARY_QTY, 'inv_uom_api_pub', '9');
2901: INV_LOG_UTIL.TRACE('transaction_secondary_qty:' || TRANSACTION_SECONDARY_QTY, 'inv_uom_api_pub', '9');
2902: END IF;
2903:
2904: END IF;
2897: transaction_secondary_qty := (new_secondary_qty - l_qty_tbl(l_temp).old_secondary_qty);
2898:
2899: IF (L_DEBUG = 1) THEN
2900: INV_LOG_UTIL.TRACE('TRANSACTION_PRIMARY_QTY:' || TRANSACTION_PRIMARY_QTY, 'inv_uom_api_pub', '9');
2901: INV_LOG_UTIL.TRACE('transaction_secondary_qty:' || TRANSACTION_SECONDARY_QTY, 'inv_uom_api_pub', '9');
2902: END IF;
2903:
2904: END IF;
2905:
2911:
2912: CLOSE BATCH_TXNS;
2913:
2914: IF (L_DEBUG = 1) THEN
2915: INV_LOG_UTIL.TRACE('X_BATCH_QTY1:' || X_BATCH_QTY1, 'inv_uom_api_pub', '9');
2916: INV_LOG_UTIL.TRACE('X_BATCH_QTY2:' || X_BATCH_QTY2, 'inv_uom_api_pub', '9');
2917: END IF;
2918:
2919:
2912: CLOSE BATCH_TXNS;
2913:
2914: IF (L_DEBUG = 1) THEN
2915: INV_LOG_UTIL.TRACE('X_BATCH_QTY1:' || X_BATCH_QTY1, 'inv_uom_api_pub', '9');
2916: INV_LOG_UTIL.TRACE('X_BATCH_QTY2:' || X_BATCH_QTY2, 'inv_uom_api_pub', '9');
2917: END IF;
2918:
2919:
2920: IF (P_UPDATE_TYPE = 1) THEN
2940: L_QTY_TBL(L_TEMP).TRANSACTION_PRIMARY_QTY := TRANSACTION_PRIMARY_QTY;
2941: L_QTY_TBL(L_TEMP).TRANSACTION_SECONDARY_QTY := TRANSACTION_SECONDARY_QTY;
2942:
2943: IF (L_DEBUG = 1) THEN
2944: INV_LOG_UTIL.TRACE('L_QTY_TBL(L_TEMP).TRANSACTION_PRIMARY_QTY' || L_QTY_TBL(L_TEMP).TRANSACTION_PRIMARY_QTY, 'inv_uom_api_pub', '9');
2945: END IF;
2946:
2947: L_TEMP := L_TEMP + 1;
2948:
2949: END LOOP;
2950: --end of populating pl-sql qty table.
2951:
2952: IF (L_DEBUG = 1) THEN
2953: INV_LOG_UTIL.TRACE('Checing reservations exists or not ', 'inv_uom_api_pub', '9');
2954: END IF;
2955: -- Verify that no reservations exists for the item.
2956:
2957: INV_QUANTITY_TREE_PUB.QUERY_QUANTITIES (
2988: p_transfer_locator_id => NULL
2989: );
2990:
2991: IF (L_DEBUG = 1) THEN
2992: INV_LOG_UTIL.TRACE('Query Quantities', 'inv_uom_api_pub', '9');
2993: INV_LOG_UTIL.TRACE('L_QR:' || L_QR, 'inv_uom_api_pub', '9');
2994: END IF;
2995:
2996: IF (L_RETURN_STATUS <> 'S') THEN
2989: );
2990:
2991: IF (L_DEBUG = 1) THEN
2992: INV_LOG_UTIL.TRACE('Query Quantities', 'inv_uom_api_pub', '9');
2993: INV_LOG_UTIL.TRACE('L_QR:' || L_QR, 'inv_uom_api_pub', '9');
2994: END IF;
2995:
2996: IF (L_RETURN_STATUS <> 'S') THEN
2997:
3016:
3017: -- End of reservation validationg for the item.
3018:
3019: IF (L_DEBUG = 1) THEN
3020: INV_LOG_UTIL.TRACE('Checing pending transactions exists or not ', 'inv_uom_api_pub', '9');
3021: END IF;
3022:
3023: --check for pending transactions against the item -
3024:
3039: L_PENDING_COUNT := 0;
3040: END;
3041:
3042: IF (L_DEBUG = 1) THEN
3043: INV_LOG_UTIL.TRACE('Pending transactions:', 'inv_uom_api_pub', '9');
3044: INV_LOG_UTIL.TRACE('L_PENDING_COUNT:' || L_PENDING_COUNT, 'inv_uom_api_pub', '9');
3045: END IF;
3046:
3047: IF (l_pending_count >0) THEN
3040: END;
3041:
3042: IF (L_DEBUG = 1) THEN
3043: INV_LOG_UTIL.TRACE('Pending transactions:', 'inv_uom_api_pub', '9');
3044: INV_LOG_UTIL.TRACE('L_PENDING_COUNT:' || L_PENDING_COUNT, 'inv_uom_api_pub', '9');
3045: END IF;
3046:
3047: IF (l_pending_count >0) THEN
3048:
3080:
3081: EXCEPTION
3082: WHEN OTHERS THEN
3083: IF (L_DEBUG = 1) THEN
3084: INV_LOG_UTIL.TRACE('Exception raised when retriving uom and uom class:', 'inv_uom_api_pub', '9');
3085: END IF;
3086: null;
3087: END;
3088: