93: IS
94: l_date_format VARCHAR2 (100);
95: l_api_name VARCHAR2 (50) := 'get_reservations_msca';
96: BEGIN
97: x_return_status := fnd_api.g_ret_sts_success;
98: x_error_msg := ' ';
99: fnd_profile.get ('ICX_DATE_FORMAT_MASK', l_date_format);
100:
101: OPEN x_rsrv_cursor
139: || SQLERRM);
140: END IF;
141:
142: fnd_msg_pub.add_exc_msg (g_pkg_name, l_api_name);
143: x_return_status := fnd_api.g_ret_sts_unexp_error;
144: x_error_msg := fnd_message.get;
145: END get_reservations_msca;
146:
147: PROCEDURE create_batch_reservations (
177: gme_debug.put_line ('Entering api ' || g_pkg_name || '.'
178: || l_api_name);
179: END IF;
180:
181: x_return_status := fnd_api.g_ret_sts_success;
182:
183: FOR get_rec IN cur_reservable_ings LOOP
184: l_mtl_dtl_rec := get_rec;
185:
193: ,p_called_by => 'S'
194: ,x_open_qty => l_resv_qty
195: ,x_return_status => l_return_status);
196:
197: IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
198: RAISE get_open_qty_err;
199: END IF;
200: ELSE
201: l_resv_qty := l_mtl_dtl_rec.plan_qty;
222: || ' create_material_reservation returns status of '
223: || l_return_status);
224: END IF;
225:
226: IF (l_return_status = fnd_api.g_ret_sts_unexp_error) THEN
227: RAISE line_resvn_err;
228: END IF;
229: END IF;
230: END LOOP;
247: || SQLERRM);
248: END IF;
249:
250: fnd_msg_pub.add_exc_msg (g_pkg_name, l_api_name);
251: x_return_status := fnd_api.g_ret_sts_unexp_error;
252: END create_batch_reservations;
253:
254: -- Bug 6437252
255: -- Added lpn_id parameter.
289: gme_debug.put_line ('input value lpn_id => ' || p_lpn_id);
290: gme_debug.put_line ('input value release_type => ' || p_matl_dtl_rec.release_type );
291: END IF;
292:
293: x_return_status := fnd_api.g_ret_sts_success;
294:
295: --Bug#4604943 Begin validate the batch and material line
296: validate_mtl_for_reservation(
297: p_material_detail_rec => p_matl_dtl_rec
295: --Bug#4604943 Begin validate the batch and material line
296: validate_mtl_for_reservation(
297: p_material_detail_rec => p_matl_dtl_rec
298: ,x_return_status => l_return_status );
299: IF l_return_status <> fnd_api.g_ret_sts_success THEN
300: RAISE invalid_mtl_for_rsrv;
301: END IF;
302: --Bug#4604943 End
303: l_rsv_rec.requirement_date := p_matl_dtl_rec.material_requirement_date;
369:
370:
371: inv_reservation_pub.create_reservation
372: (p_api_version_number => 1.0
373: ,p_init_msg_lst => fnd_api.g_false
374: ,x_return_status => l_return_status
375: ,x_msg_count => l_msg_count
376: ,x_msg_data => l_msg_data
377: ,p_rsv_rec => l_rsv_rec
376: ,x_msg_data => l_msg_data
377: ,p_rsv_rec => l_rsv_rec
378: ,p_serial_number => l_in_serial_num
379: ,x_serial_number => l_out_serial_num
380: ,p_partial_reservation_flag => fnd_api.g_true
381: -- ,p_force_reservation_flag => fnd_api.g_true
382: ,p_validation_flag => fnd_api.g_true
383: ,x_quantity_reserved => l_qty_reserved
384: ,x_reservation_id => l_reservation_id
377: ,p_rsv_rec => l_rsv_rec
378: ,p_serial_number => l_in_serial_num
379: ,x_serial_number => l_out_serial_num
380: ,p_partial_reservation_flag => fnd_api.g_true
381: -- ,p_force_reservation_flag => fnd_api.g_true
382: ,p_validation_flag => fnd_api.g_true
383: ,x_quantity_reserved => l_qty_reserved
384: ,x_reservation_id => l_reservation_id
385: ,p_partial_rsv_exists => TRUE);
378: ,p_serial_number => l_in_serial_num
379: ,x_serial_number => l_out_serial_num
380: ,p_partial_reservation_flag => fnd_api.g_true
381: -- ,p_force_reservation_flag => fnd_api.g_true
382: ,p_validation_flag => fnd_api.g_true
383: ,x_quantity_reserved => l_qty_reserved
384: ,x_reservation_id => l_reservation_id
385: ,p_partial_rsv_exists => TRUE);
386:
395: || ' qty reserved IS '
396: || l_qty_reserved );
397: END IF;
398: IF (l_return_status IN
399: (fnd_api.g_ret_sts_error, fnd_api.g_ret_sts_unexp_error) ) THEN
400: RAISE create_resvn_err;
401: END IF;
402:
403: IF g_debug <= gme_debug.g_log_procedure THEN
426: || SQLERRM);
427: END IF;
428:
429: fnd_msg_pub.add_exc_msg (g_pkg_name, l_api_name);
430: x_return_status := fnd_api.g_ret_sts_unexp_error;
431: END create_material_reservation;
432:
433: PROCEDURE get_material_reservations (
434: p_organization_id IN NUMBER
463: gme_debug.put_line ('Entering api ' || g_pkg_name || '.'
464: || l_api_name);
465: END IF;
466:
467: x_return_status := fnd_api.g_ret_sts_success;
468:
469: IF p_dispense_ind = 'Y' THEN
470:
471: gmo_dispense_grp.GET_MATERIAL_DISPENSE_DATA (p_api_version => 1.0,
475: x_msg_data => l_msg_data,
476: p_material_detail_id => p_material_detail_id,
477: x_dispense_data => x_reservations_tbl
478: );
479: IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
480: RAISE error_dispense_mat;
481: END IF;
482:
483: ELSE
506: || SQLERRM);
507: END IF;
508:
509: fnd_msg_pub.add_exc_msg (g_pkg_name, l_api_name);
510: x_return_status := fnd_api.g_ret_sts_unexp_error;
511: END get_material_reservations;
512:
513: /* Procedure Added in Bug No.9924437 */
514: PROCEDURE get_material_res (
553: gme_debug.put_line ('Entering api ' || g_pkg_name || '.'
554: || l_api_name);
555: END IF;
556:
557: x_return_status := fnd_api.g_ret_sts_success;
558:
559: IF p_dispense_ind = 'Y' THEN
560:
561: gmo_dispense_grp.GET_MATERIAL_DISPENSE_DATA (p_api_version => 1.0,
565: x_msg_data => l_msg_data,
566: p_material_detail_id => p_material_detail_id,
567: x_dispense_data => x_reservations_tbl
568: );
569: IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
570: RAISE error_dispense_mat;
571: END IF;
572:
573: ELSE
596: || SQLERRM);
597: END IF;
598:
599: fnd_msg_pub.add_exc_msg (g_pkg_name, l_api_name);
600: x_return_status := fnd_api.g_ret_sts_unexp_error;
601: END get_material_res;
602:
603: PROCEDURE get_MO_allocated_qty (p_mtl_dtl_rec IN gme_material_details%ROWTYPE
604: ,p_called_by IN VARCHAR2
700: END LOOP;
701: CLOSE MO_line_allocation;
702: EXCEPTION
703: WHEN uom_conv_error THEN
704: x_return_status := fnd_api.g_ret_sts_error;
705: fnd_message.set_name ('GMI', 'IC_API_UOM_CONVERSION_ERROR');
706: fnd_message.set_token ('ITEM_NO', l_item_no);
707: fnd_message.set_token ('FROM_UOM', l_from_uom);
708: fnd_message.set_token ('TO_UOM', l_to_uom);
717: || SQLERRM);
718: END IF;
719:
720: fnd_msg_pub.add_exc_msg (g_pkg_name, l_api_name);
721: x_return_status := fnd_api.g_ret_sts_unexp_error;
722: END get_MO_allocated_qty;
723:
724:
725:
786: PROCEDURE convert_partial_to_dlr (
787: p_reservation_rec IN mtl_reservations%ROWTYPE
788: ,p_material_dtl_rec IN gme_material_details%ROWTYPE
789: ,p_item_rec IN mtl_system_items%ROWTYPE
790: ,p_qty_check IN VARCHAR2 := fnd_api.g_false
791: ,x_reservation_rec OUT NOCOPY mtl_reservations%ROWTYPE
792: ,x_return_status OUT NOCOPY VARCHAR2)
793: IS
794: l_api_name CONSTANT VARCHAR2 (30) := 'convert_partial_to_dlr';
798: gme_debug.put_line ('Entering api ' || g_pkg_name || '.'
799: || l_api_name);
800: END IF;
801:
802: x_return_status := fnd_api.g_ret_sts_success;
803: x_reservation_rec := p_reservation_rec;
804:
805: IF ( p_item_rec.lot_control_code > 1
806: AND x_reservation_rec.lot_number IS NULL) THEN
840: END IF;
841: END IF;
842: END IF;
843:
844: IF (p_qty_check = fnd_api.g_true) THEN
845: --QUERY TREE FOR ATT WITH RESVN DETAILS AND COMPARE QTY
846: NULL;
847: END IF;
848: EXCEPTION
856: || SQLERRM);
857: END IF;
858:
859: fnd_msg_pub.add_exc_msg (g_pkg_name, l_api_name);
860: x_return_status := fnd_api.g_ret_sts_unexp_error;
861: END convert_partial_to_dlr;
862:
863: PROCEDURE delete_batch_reservations (
864: p_organization_id IN NUMBER
884: gme_debug.put_line ('Entering api ' || g_pkg_name || '.'
885: || l_api_name);
886: END IF;
887:
888: x_return_status := fnd_api.g_ret_sts_success;
889:
890: FOR get_rec IN cur_batch_materials LOOP
891: gme_reservations_pvt.delete_material_reservations
892: (p_organization_id => get_rec.organization_id
893: ,p_batch_id => get_rec.batch_id
894: ,p_material_detail_id => get_rec.material_detail_id
895: ,x_return_status => l_return_status);
896:
897: IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
898: RAISE delete_resvn_error;
899: END IF;
900: END LOOP;
901:
915: || SQLERRM);
916: END IF;
917:
918: fnd_msg_pub.add_exc_msg (g_pkg_name, l_api_name);
919: x_return_status := fnd_api.g_ret_sts_unexp_error;
920: END delete_batch_reservations;
921:
922: PROCEDURE delete_material_reservations (
923: p_organization_id IN NUMBER
940: gme_debug.put_line ('p_batch_id = ' || p_batch_id);
941: gme_debug.put_line ('p_material_detail_id = ' || p_material_detail_id);
942: END IF;
943:
944: x_return_status := fnd_api.g_ret_sts_success;
945: gme_reservations_pvt.get_material_reservations
946: (p_organization_id => p_organization_id
947: ,p_batch_id => p_batch_id
948: ,p_material_detail_id => p_material_detail_id
953: gme_reservations_pvt.delete_reservation
954: (p_reservation_id => l_rsv_tbl (i).reservation_id
955: ,x_return_status => l_return_status);
956:
957: IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
958: RAISE del_resvn_error;
959: END IF;
960: END LOOP;
961:
958: RAISE del_resvn_error;
959: END IF;
960: END LOOP;
961:
962: IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
963: RAISE del_resvn_error;
964: END IF;
965:
966: IF g_debug <= gme_debug.g_log_procedure THEN
979: || SQLERRM);
980: END IF;
981:
982: fnd_msg_pub.add_exc_msg (g_pkg_name, l_api_name);
983: x_return_status := fnd_api.g_ret_sts_unexp_error;
984: END delete_material_reservations;
985:
986: PROCEDURE delete_reservation (
987: p_reservation_id IN NUMBER
1003: IF (g_debug <= gme_debug.g_log_statement) THEN
1004: gme_debug.put_line ('p_reservation_id = ' || p_reservation_id);
1005: END IF;
1006:
1007: x_return_status := fnd_api.g_ret_sts_success;
1008: l_rsv_rec.reservation_id := p_reservation_id;
1009:
1010: IF (g_debug <= gme_debug.g_log_statement) THEN
1011: gme_debug.put_line ('Calling inv_reservation_pub.delete_reservation');
1012: END IF;
1013:
1014: inv_reservation_pub.delete_reservation
1015: (p_api_version_number => 1.0
1016: ,p_init_msg_lst => fnd_api.g_false
1017: ,x_return_status => l_return_status
1018: ,x_msg_count => l_msg_count
1019: ,x_msg_data => l_msg_data
1020: ,p_rsv_rec => l_rsv_rec
1019: ,x_msg_data => l_msg_data
1020: ,p_rsv_rec => l_rsv_rec
1021: ,p_serial_number => l_serial_number);
1022:
1023: IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
1024: RAISE del_resvn_error;
1025: END IF;
1026:
1027: IF g_debug <= gme_debug.g_log_procedure THEN
1047: || SQLERRM);
1048: END IF;
1049:
1050: fnd_msg_pub.add_exc_msg (g_pkg_name, l_api_name);
1051: x_return_status := fnd_api.g_ret_sts_unexp_error;
1052: END delete_reservation;
1053:
1054: PROCEDURE get_reservation_dtl_qty (
1055: p_reservation_rec IN mtl_reservations%ROWTYPE
1108:
1109: x_qty := l_temp_qty;
1110: EXCEPTION
1111: WHEN uom_conv_error THEN
1112: x_return_status := fnd_api.g_ret_sts_error;
1113: fnd_message.set_name ('GMI', 'IC_API_UOM_CONVERSION_ERROR');
1114: fnd_message.set_token ('ITEM_NO', l_item_no);
1115: fnd_message.set_token ('FROM_UOM', l_from_uom);
1116: fnd_message.set_token ('TO_UOM', l_to_uom);
1124: || SQLERRM);
1125: END IF;
1126:
1127: fnd_msg_pub.add_exc_msg (g_pkg_name, l_api_name);
1128: x_return_status := fnd_api.g_ret_sts_unexp_error;
1129: END get_reservation_dtl_qty;
1130:
1131: -- Bug 12613813 - add p_locator_only parameter so picking can consider locator also.
1132: PROCEDURE get_reserved_qty (
1150: FROM mtl_reservations mr
1151: WHERE mr.demand_source_type_id = gme_common_pvt.g_txn_source_type
1152: AND mr.demand_source_header_id = l_mtl_dtl_rec.batch_id
1153: AND mr.demand_source_line_id = l_mtl_dtl_rec.material_detail_id
1154: AND ((p_supply_sub_only = fnd_api.g_false) OR (mr.subinventory_code = l_mtl_dtl_rec.subinventory))
1155: AND (p_locator_only = fnd_api.g_false OR NVL(mr.locator_id, '-1') = NVL(l_mtl_dtl_rec.locator_id, '-1')); -- Bug 12737393
1156: /* AND NOT EXISTS (SELECT 1
1157: FROM mtl_material_transactions_temp
1158: WHERE reservation_id = mr.reservation_id); */ /* Commented code in Bug No.9946983*/
1151: WHERE mr.demand_source_type_id = gme_common_pvt.g_txn_source_type
1152: AND mr.demand_source_header_id = l_mtl_dtl_rec.batch_id
1153: AND mr.demand_source_line_id = l_mtl_dtl_rec.material_detail_id
1154: AND ((p_supply_sub_only = fnd_api.g_false) OR (mr.subinventory_code = l_mtl_dtl_rec.subinventory))
1155: AND (p_locator_only = fnd_api.g_false OR NVL(mr.locator_id, '-1') = NVL(l_mtl_dtl_rec.locator_id, '-1')); -- Bug 12737393
1156: /* AND NOT EXISTS (SELECT 1
1157: FROM mtl_material_transactions_temp
1158: WHERE reservation_id = mr.reservation_id); */ /* Commented code in Bug No.9946983*/
1159:
1164: gme_debug.put_line ('Entering api ' || g_pkg_name || '.'
1165: || l_api_name);
1166: END IF;
1167:
1168: x_return_status := fnd_api.g_ret_sts_success;
1169: x_reserved_qty := 0;
1170:
1171: -- Bug 12737393 - Move fetch outside of IF
1172: IF (NOT (gme_material_details_dbl.fetch_row (p_mtl_dtl_rec
1176:
1177: IF (p_mtl_dtl_rec.inventory_item_id IS NULL
1178: OR p_mtl_dtl_rec.dtl_um IS NULL
1179: OR p_mtl_dtl_rec.batch_id IS NULL
1180: OR (p_supply_sub_only = fnd_api.g_true AND p_mtl_dtl_rec.subinventory IS NULL)) THEN
1181: /*
1182: IF (NOT (gme_material_details_dbl.fetch_row (p_mtl_dtl_rec
1183: ,l_mtl_dtl_rec) ) ) THEN
1184: RAISE matl_fetch_error;
1201: ,p_uom_code => l_mtl_dtl_rec.dtl_um
1202: ,x_qty => l_temp_qty
1203: ,x_return_status => l_return_status);
1204:
1205: IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
1206: RAISE get_resv_qty_error;
1207: END IF;
1208:
1209: x_reserved_qty := x_reserved_qty + l_temp_qty;
1213: gme_debug.put_line ('Exiting api ' || g_pkg_name || '.' || l_api_name);
1214: END IF;
1215: EXCEPTION
1216: WHEN matl_fetch_error THEN
1217: x_return_status := fnd_api.g_ret_sts_error;
1218: WHEN get_resv_qty_error THEN
1219: x_return_status := l_return_status;
1220: WHEN OTHERS THEN
1221: IF g_debug <= gme_debug.g_log_unexpected THEN
1227: || SQLERRM);
1228: END IF;
1229:
1230: fnd_msg_pub.add_exc_msg (g_pkg_name, l_api_name);
1231: x_return_status := fnd_api.g_ret_sts_unexp_error;
1232: END get_reserved_qty;
1233:
1234: PROCEDURE relieve_reservation (
1235: p_reservation_id IN NUMBER
1250: gme_debug.put_line ('Entering api ' || g_pkg_name || '.'
1251: || l_api_name);
1252: END IF;
1253:
1254: x_return_status := fnd_api.g_ret_sts_success;
1255: l_rsv_rec.reservation_id := p_reservation_id;
1256:
1257: IF g_debug <= gme_debug.g_log_statement THEN
1258: gme_debug.put_line
1266: END IF;
1267:
1268: inv_reservation_pub.relieve_reservation
1269: (p_api_version_number => 1.0
1270: ,p_init_msg_lst => fnd_api.g_false
1271: ,x_return_status => l_return_status
1272: ,x_msg_count => l_msg_count
1273: ,x_msg_data => l_msg_data
1274: ,p_rsv_rec => l_rsv_rec
1272: ,x_msg_count => l_msg_count
1273: ,x_msg_data => l_msg_data
1274: ,p_rsv_rec => l_rsv_rec
1275: ,p_primary_relieved_quantity => p_prim_relieve_qty
1276: ,p_relieve_all => fnd_api.g_false
1277: ,p_original_serial_number => l_serial_number
1278: ,p_validation_flag => fnd_api.g_true
1279: ,x_primary_relieved_quantity => l_prim_relieve_qty
1280: ,x_primary_remain_quantity => l_prim_remain_qty);
1274: ,p_rsv_rec => l_rsv_rec
1275: ,p_primary_relieved_quantity => p_prim_relieve_qty
1276: ,p_relieve_all => fnd_api.g_false
1277: ,p_original_serial_number => l_serial_number
1278: ,p_validation_flag => fnd_api.g_true
1279: ,x_primary_relieved_quantity => l_prim_relieve_qty
1280: ,x_primary_remain_quantity => l_prim_remain_qty);
1281:
1282: IF g_debug <= gme_debug.g_log_statement THEN
1292: || 'Error is :'
1293: || l_msg_data);
1294: END IF;
1295:
1296: IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
1297: RAISE relieve_resvn_error;
1298: END IF;
1299:
1300: IF g_debug <= gme_debug.g_log_procedure THEN
1313: || SQLERRM);
1314: END IF;
1315:
1316: fnd_msg_pub.add_exc_msg (g_pkg_name, l_api_name);
1317: x_return_status := fnd_api.g_ret_sts_unexp_error;
1318: END relieve_reservation;
1319:
1320: /* Pass only values needed to be updated reservation ID is required */
1321: PROCEDURE update_reservation (
1344: gme_debug.put_line ('Entering api ' || g_pkg_name || '.'
1345: || l_api_name);
1346: END IF;
1347:
1348: x_return_status := fnd_api.g_ret_sts_success;
1349: query_reservation (p_reservation_id => p_reservation_id
1350: ,x_reservation_rec => l_orig_rsv_rec
1351: ,x_return_status => l_return_status);
1352:
1349: query_reservation (p_reservation_id => p_reservation_id
1350: ,x_reservation_rec => l_orig_rsv_rec
1351: ,x_return_status => l_return_status);
1352:
1353: IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
1354: RAISE query_resvn_error;
1355: END IF;
1356:
1357: l_rsv_rec.reservation_id := p_reservation_id;
1374: END IF;
1375:
1376: inv_reservation_pub.update_reservation
1377: (p_api_version_number => 1.0
1378: ,p_init_msg_lst => fnd_api.g_false
1379: ,x_return_status => l_return_status
1380: ,x_msg_count => l_msg_count
1381: ,x_msg_data => l_msg_data
1382: ,p_original_rsv_rec => l_orig_rsv_rec
1382: ,p_original_rsv_rec => l_orig_rsv_rec
1383: ,p_to_rsv_rec => l_rsv_rec
1384: ,p_original_serial_number => l_serial_number
1385: ,p_to_serial_number => l_serial_number
1386: ,p_validation_flag => fnd_api.g_true
1387: ,p_check_availability => fnd_api.g_true);
1388:
1389: IF g_debug <= gme_debug.g_log_statement THEN
1390: gme_debug.put_line
1383: ,p_to_rsv_rec => l_rsv_rec
1384: ,p_original_serial_number => l_serial_number
1385: ,p_to_serial_number => l_serial_number
1386: ,p_validation_flag => fnd_api.g_true
1387: ,p_check_availability => fnd_api.g_true);
1388:
1389: IF g_debug <= gme_debug.g_log_statement THEN
1390: gme_debug.put_line
1391: ( g_pkg_name
1399: || 'Error is :'
1400: || l_msg_data);
1401: END IF;
1402:
1403: IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
1404: RAISE update_resvn_error;
1405: END IF;
1406:
1407: IF g_debug <= gme_debug.g_log_procedure THEN
1422: || SQLERRM);
1423: END IF;
1424:
1425: fnd_msg_pub.add_exc_msg (g_pkg_name, l_api_name);
1426: x_return_status := fnd_api.g_ret_sts_unexp_error;
1427: END update_reservation;
1428:
1429: /* Pass reservation ID to be queried */
1430: PROCEDURE query_reservation (
1447: gme_debug.put_line ('Entering api ' || g_pkg_name || '.'
1448: || l_api_name);
1449: END IF;
1450:
1451: x_return_status := fnd_api.g_ret_sts_success;
1452: l_rsv_rec.reservation_id := p_reservation_id;
1453:
1454: IF g_debug <= gme_debug.g_log_statement THEN
1455: gme_debug.put_line
1461: END IF;
1462:
1463: inv_reservation_pub.query_reservation
1464: (p_api_version_number => 1.0
1465: ,p_init_msg_lst => fnd_api.g_false
1466: ,x_return_status => l_return_status
1467: ,x_msg_count => l_msg_count
1468: ,x_msg_data => l_msg_data
1469: ,p_query_input => l_rsv_rec
1466: ,x_return_status => l_return_status
1467: ,x_msg_count => l_msg_count
1468: ,x_msg_data => l_msg_data
1469: ,p_query_input => l_rsv_rec
1470: ,p_lock_records => fnd_api.g_false
1471: ,p_sort_by_req_date => inv_reservation_global.g_query_no_sort
1472: ,p_cancel_order_mode => inv_reservation_global.g_cancel_order_no
1473: ,x_mtl_reservation_tbl => l_rsv_tbl
1474: ,x_mtl_reservation_tbl_count => l_rsv_count
1487: || 'Error is :'
1488: || l_msg_data);
1489: END IF;
1490:
1491: IF (l_return_status <> fnd_api.g_ret_sts_success) THEN
1492: RAISE update_resvn_error;
1493: END IF;
1494:
1495: x_reservation_rec := l_rsv_tbl (1);
1510: || SQLERRM);
1511: END IF;
1512:
1513: fnd_msg_pub.add_exc_msg (g_pkg_name, l_api_name);
1514: x_return_status := fnd_api.g_ret_sts_unexp_error;
1515: END query_reservation;
1516:
1517: FUNCTION pending_reservations_exist (
1518: p_organization_id IN NUMBER
1617: || l_api_name);
1618: END IF;
1619:
1620: /* Set the return status to success initially */
1621: x_return_status := fnd_api.g_ret_sts_success;
1622:
1623: /* Retrieve item row */
1624: OPEN cur_fetch_item (p_material_details_rec.organization_id
1625: ,p_material_details_rec.inventory_item_id);
1653: gme_common_pvt.log_message ('GME_ITEM_NOT_TRANSACTABLE');
1654: RAISE validation_error;
1655: END IF;
1656:
1657: gme_common_pvt.g_move_to_temp := fnd_api.g_false;
1658: /* Verify that the reservation is fully detailed */
1659: l_rsv_type :=
1660: gme_reservations_pvt.reservation_fully_specified
1661: (p_reservation_rec => p_reservation_rec
1694: || ' Return status from gme_reservations_pvt.convert_partial_to_dlr is '
1695: || x_return_status);
1696: END IF;
1697:
1698: IF x_return_status <> fnd_api.g_ret_sts_success THEN
1699: gme_common_pvt.log_message ('GME_RSV_DETAIL_REQUIRED');
1700: RAISE detail_reservation_error;
1701: END IF;
1702: ELSE -- fully detailed
1792: || ' Return status from gme_release_batch_pvt.build_and_create_transaction is '
1793: || x_return_status);
1794: END IF;
1795:
1796: IF x_return_status NOT IN ('T', fnd_api.g_ret_sts_success) THEN
1797: RAISE create_transaction_error;
1798: END IF;
1799:
1800: IF g_debug <= gme_debug.g_log_statement THEN
1810: || TO_CHAR (SYSDATE, 'MM/DD/YYYY HH24:MI:SS') );
1811: END IF;
1812: EXCEPTION
1813: WHEN error_unexpected OR uom_conversion_failure OR fetch_error OR validation_error OR create_transaction_error OR detail_reservation_error THEN
1814: x_return_status := fnd_api.g_ret_sts_error;
1815: gme_common_pvt.count_and_get (x_count => x_message_count
1816: ,p_encoded => fnd_api.g_false
1817: ,x_data => x_message_list);
1818: WHEN OTHERS THEN
1812: EXCEPTION
1813: WHEN error_unexpected OR uom_conversion_failure OR fetch_error OR validation_error OR create_transaction_error OR detail_reservation_error THEN
1814: x_return_status := fnd_api.g_ret_sts_error;
1815: gme_common_pvt.count_and_get (x_count => x_message_count
1816: ,p_encoded => fnd_api.g_false
1817: ,x_data => x_message_list);
1818: WHEN OTHERS THEN
1819: IF g_debug <= gme_debug.g_log_unexpected THEN
1820: gme_debug.put_line ( g_pkg_name
1824: || ' When others exception:'
1825: || SQLERRM);
1826: END IF;
1827:
1828: x_return_status := fnd_api.g_ret_sts_unexp_error;
1829: gme_common_pvt.count_and_get (x_count => x_message_count
1830: ,p_encoded => fnd_api.g_false
1831: ,x_data => x_message_list);
1832: END convert_dtl_reservation;
1826: END IF;
1827:
1828: x_return_status := fnd_api.g_ret_sts_unexp_error;
1829: gme_common_pvt.count_and_get (x_count => x_message_count
1830: ,p_encoded => fnd_api.g_false
1831: ,x_data => x_message_list);
1832: END convert_dtl_reservation;
1833:
1834: PROCEDURE auto_detail_line (
1884: gme_debug.put_line ('Entering api ' || g_pkg_name || '.'
1885: || l_api_name);
1886: END IF;
1887:
1888: x_return_status := fnd_api.g_ret_sts_success;
1889:
1890: IF g_debug <= gme_debug.g_log_statement THEN
1891: gme_debug.put_line ( g_pkg_name
1892: || '.'
1897: --Bug#4604943 Begin validate the batch and material line
1898: validate_mtl_for_reservation(
1899: p_material_detail_rec => p_material_details_rec
1900: ,x_return_status => l_return_status );
1901: IF l_return_status <> fnd_api.g_ret_sts_success THEN
1902: RAISE invalid_mtl_for_rsrv;
1903: END IF;
1904: -- Pawan kumar made changes for 5294184
1905:
1959: || ' No. of reservations is '
1960: || l_rsv_tbl.COUNT);
1961: END IF;
1962:
1963: IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
1964: RAISE retrieve_res_fail;
1965: END IF;
1966:
1967: WHILE l_count <= l_rsv_tbl.COUNT LOOP
2002: || ' Return status from relieve_reservation is '
2003: || x_return_status);
2004: END IF;
2005:
2006: IF x_return_status <> fnd_api.g_ret_sts_success THEN
2007: RAISE relieve_res_error;
2008: END IF;
2009: END IF;
2010:
2030: || ' get_open_qty returns open qty of '
2031: || l_open_qty);
2032: END IF;
2033:
2034: IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
2035: RAISE open_qty_error;
2036: END IF;
2037:
2038: get_MO_allocated_qty (p_mtl_dtl_rec => p_material_details_rec
2047: || ' get_MO_allocated_qty returns MO Allocated Qty of '
2048: || nvl(l_mo_allocated_qty,0));
2049: END IF;
2050:
2051: IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
2052: RAISE open_qty_error;
2053: END IF;
2054: /* We need to reduce the open qty by additionly MO allocated as once
2055: either transact MO or WMS Pick Drop. MO Qty will be reserved for
2095: || ' Return from update_move_order_lines is '
2096: || x_return_status);
2097: END IF;
2098:
2099: IF x_return_status <> fnd_api.g_ret_sts_success THEN
2100: RAISE update_mo_fail;
2101: END IF;
2102:
2103: IF g_debug <= gme_debug.g_log_statement THEN
2229: END IF;
2230:
2231: wms_rule_extn_pvt.suggest_reservations(
2232: p_api_version => 1.0
2233: , p_init_msg_list => FND_API.G_TRUE
2234: , p_commit => FND_API.G_FALSE
2235: , p_validation_level => 100
2236: , x_return_status => x_return_status
2237: , x_msg_count => l_msg_count
2230:
2231: wms_rule_extn_pvt.suggest_reservations(
2232: p_api_version => 1.0
2233: , p_init_msg_list => FND_API.G_TRUE
2234: , p_commit => FND_API.G_FALSE
2235: , p_validation_level => 100
2236: , x_return_status => x_return_status
2237: , x_msg_count => l_msg_count
2238: , x_msg_data => l_msg_data
2236: , x_return_status => x_return_status
2237: , x_msg_count => l_msg_count
2238: , x_msg_data => l_msg_data
2239: , p_transaction_temp_id => p_material_details_rec.move_order_line_id
2240: , p_allow_partial_pick => FND_API.G_TRUE
2241: , p_suggest_serial => FND_API.G_FALSE
2242: , p_mo_line_rec => l_trolin_rec_type
2243: , p_demand_source_header_id=> p_material_details_rec.batch_id
2244: , p_demand_source_line_id => p_material_details_rec.material_detail_id
2237: , x_msg_count => l_msg_count
2238: , x_msg_data => l_msg_data
2239: , p_transaction_temp_id => p_material_details_rec.move_order_line_id
2240: , p_allow_partial_pick => FND_API.G_TRUE
2241: , p_suggest_serial => FND_API.G_FALSE
2242: , p_mo_line_rec => l_trolin_rec_type
2243: , p_demand_source_header_id=> p_material_details_rec.batch_id
2244: , p_demand_source_line_id => p_material_details_rec.material_detail_id
2245: , p_demand_source_type => 5
2259: || ' suggest_reservations mesg '
2260: || l_msg_data);
2261: END IF;
2262:
2263: IF x_return_status <> fnd_api.g_ret_sts_success THEN
2264: -- Bug 12934259 - clear tree upon eror.
2265: inv_quantity_tree_pub.clear_quantity_cache;
2266:
2267: RAISE create_suggestions_err;
2281: || ' after detailing get_open_qty returns open qty of '
2282: || l_open_qty);
2283: END IF;
2284:
2285: IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
2286: RAISE open_qty_error;
2287: END IF;
2288: /* Bug No.9924437
2289: we need to account for Staged Reservations as well as move_order allocations
2301: || ' get_MO_allocated_qty returns MO Allocated Qty of '
2302: || nvl(l_mo_allocated_qty,0));
2303: END IF;
2304:
2305: IF (x_return_status <> fnd_api.g_ret_sts_success) THEN
2306: RAISE open_qty_error;
2307: END IF;
2308: /* We need to reduce the open qty by additionly MO allocated as once
2309: either transact MO or WMS Pick Drop. MO Qty will be reserved for
2364: END IF;
2365:
2366: /* may not be sufficient inventory to create a balancing HLR so accept an error return */
2367: IF l_return_status NOT IN
2368: (fnd_api.g_ret_sts_success, fnd_api.g_ret_sts_error) THEN
2369: x_return_status := l_return_status;
2370: -- Bug 12934259 - clear tree upon eror.
2371: inv_quantity_tree_pub.clear_quantity_cache;
2372: RAISE create_reservation_err;
2406: || SQLERRM);
2407: END IF;
2408:
2409: fnd_msg_pub.add_exc_msg (g_pkg_name, l_api_name);
2410: x_return_status := fnd_api.g_ret_sts_unexp_error;
2411: END auto_detail_line;
2412:
2413: PROCEDURE auto_detail_batch(p_batch_rec IN GME_BATCH_HEADER%ROWTYPE,
2414: p_timefence IN NUMBER DEFAULT 100000,
2449: IF g_debug <= gme_debug.g_log_procedure THEN
2450: gme_debug.put_line('Entering api '||g_pkg_name||'.'||l_api_name);
2451: END IF;
2452:
2453: x_return_status := FND_API.G_RET_STS_SUCCESS;
2454:
2455: IF g_debug <= gme_debug.g_log_statement THEN
2456: gme_debug.put_line(g_pkg_name||'.'||l_api_name||'gme_common_pvt.g_rule_based_resv_horizon
2457: is '||gme_common_pvt.g_rule_based_resv_horizon);
2493: IF g_debug <= gme_debug.g_log_statement THEN
2494: gme_debug.put_line(g_pkg_name||'.'||l_api_name||' Acquired the lock. Tree ID is: ' || l_tree_id);
2495: END IF;
2496:
2497: IF x_return_status = fnd_api.g_ret_sts_unexp_error THEN
2498: raise fnd_api.g_exc_unexpected_error;
2499: elsif x_return_status = fnd_api.g_ret_sts_error THEN
2500: raise fnd_api.g_exc_error;
2501: END IF;
2494: gme_debug.put_line(g_pkg_name||'.'||l_api_name||' Acquired the lock. Tree ID is: ' || l_tree_id);
2495: END IF;
2496:
2497: IF x_return_status = fnd_api.g_ret_sts_unexp_error THEN
2498: raise fnd_api.g_exc_unexpected_error;
2499: elsif x_return_status = fnd_api.g_ret_sts_error THEN
2500: raise fnd_api.g_exc_error;
2501: END IF;
2502: END LOOP;
2495: END IF;
2496:
2497: IF x_return_status = fnd_api.g_ret_sts_unexp_error THEN
2498: raise fnd_api.g_exc_unexpected_error;
2499: elsif x_return_status = fnd_api.g_ret_sts_error THEN
2500: raise fnd_api.g_exc_error;
2501: END IF;
2502: END LOOP;
2503: -- bug 9852628 end
2496:
2497: IF x_return_status = fnd_api.g_ret_sts_unexp_error THEN
2498: raise fnd_api.g_exc_unexpected_error;
2499: elsif x_return_status = fnd_api.g_ret_sts_error THEN
2500: raise fnd_api.g_exc_error;
2501: END IF;
2502: END LOOP;
2503: -- bug 9852628 end
2504:
2525: gme_debug.put_line(g_pkg_name||'.'||l_api_name||' Call to auto detail line returns '||x_return_status);
2526: END IF;
2527:
2528: /* Bug#4604943 just checking for unexpected error similar to create_batch_reservations */
2529: IF (l_return_status = fnd_api.g_ret_sts_unexp_error) THEN
2530: RAISE auto_detail_failure;
2531: END IF;
2532:
2533: --END IF;
2536: -- Bug 12934259 - Release lock on inventory records.
2537: FOR get_matl_rec IN cur_get_reservable_ings LOOP
2538: INV_Quantity_Tree_PVT.release_lock(
2539: p_api_version_number => 1.0,
2540: p_init_msg_lst => fnd_api.g_false,
2541: x_return_status => x_return_status,
2542: x_msg_count => l_msg_count,
2543: x_msg_data => l_msg_data,
2544: p_organization_id => get_matl_rec.organization_id,
2559: -- Bug 12934259 - Release lock on inventory records.
2560: FOR get_matl_rec IN cur_get_reservable_ings LOOP
2561: INV_Quantity_Tree_PVT.release_lock(
2562: p_api_version_number => 1.0,
2563: p_init_msg_lst => fnd_api.g_false,
2564: x_return_status => x_return_status,
2565: x_msg_count => l_msg_count,
2566: x_msg_data => l_msg_data,
2567: p_organization_id => get_matl_rec.organization_id,
2576: IF g_debug <= gme_debug.g_log_unexpected THEN
2577: gme_debug.put_line('When others exception in '||g_pkg_name||'.'||l_api_name||' Error is ' || SQLERRM);
2578: END IF;
2579: fnd_msg_pub.add_exc_msg(g_pkg_name, l_api_name);
2580: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
2581: END auto_detail_batch;
2582:
2583: --Bug#4604943 created the following procedure
2584: PROCEDURE validate_mtl_for_reservation(
2597: IF g_debug <= gme_debug.g_log_procedure THEN
2598: gme_debug.put_line('Entering api '||g_pkg_name||'.'||l_api_name);
2599: END IF;
2600:
2601: x_return_status := fnd_api.g_ret_sts_success;
2602:
2603: l_batch_header_rec.batch_id := p_material_detail_rec.batch_id;
2604: IF NOT (gme_batch_header_dbl.fetch_row (l_batch_header_rec, l_batch_header_rec)) THEN
2605: RAISE fetch_failure;
2642: gme_debug.put_line ('Exiting api ' || g_pkg_name || '.' || l_api_name);
2643: END IF;
2644: EXCEPTION
2645: WHEN fetch_failure THEN
2646: x_return_status := fnd_api.g_ret_sts_error;
2647: WHEN demand_line_error THEN
2648: gme_common_pvt.log_message('GME_INVALID_DEMAND_LINE');
2649: x_return_status := fnd_api.g_ret_sts_error;
2650: WHEN batch_status_error THEN
2645: WHEN fetch_failure THEN
2646: x_return_status := fnd_api.g_ret_sts_error;
2647: WHEN demand_line_error THEN
2648: gme_common_pvt.log_message('GME_INVALID_DEMAND_LINE');
2649: x_return_status := fnd_api.g_ret_sts_error;
2650: WHEN batch_status_error THEN
2651: gme_common_pvt.log_message('GME_INVALID_BATCH_STATUS','PROCESS','RESERVATIONS');
2652: x_return_status := fnd_api.g_ret_sts_error;
2653: WHEN OTHERS THEN
2648: gme_common_pvt.log_message('GME_INVALID_DEMAND_LINE');
2649: x_return_status := fnd_api.g_ret_sts_error;
2650: WHEN batch_status_error THEN
2651: gme_common_pvt.log_message('GME_INVALID_BATCH_STATUS','PROCESS','RESERVATIONS');
2652: x_return_status := fnd_api.g_ret_sts_error;
2653: WHEN OTHERS THEN
2654: IF g_debug <= gme_debug.g_log_unexpected THEN
2655: gme_debug.put_line ( 'When others exception in '
2656: || g_pkg_name
2660: || SQLERRM);
2661: END IF;
2662:
2663: fnd_msg_pub.add_exc_msg (g_pkg_name, l_api_name);
2664: x_return_status := fnd_api.g_ret_sts_unexp_error;
2665: END validate_mtl_for_reservation;
2666: END gme_reservations_pvt;