33: -- added DEFAULT NULL
34: PROCEDURE Auto_Detail
35: (
36: p_api_version IN NUMBER
37: , p_init_msg_lst IN VARCHAR2 DEFAULT FND_API.G_FALSE
38: , p_validation_flag IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL
39: , p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE
40: , p_mo_hdr_rec IN GMI_Move_Order_Global.mo_hdr_rec
41: , p_mo_line_tbl IN GMI_Move_Order_Global.mo_line_tbl
34: PROCEDURE Auto_Detail
35: (
36: p_api_version IN NUMBER
37: , p_init_msg_lst IN VARCHAR2 DEFAULT FND_API.G_FALSE
38: , p_validation_flag IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL
39: , p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE
40: , p_mo_hdr_rec IN GMI_Move_Order_Global.mo_hdr_rec
41: , p_mo_line_tbl IN GMI_Move_Order_Global.mo_line_tbl
42: , p_grouping_rule_id IN NUMBER DEFAULT NULL
35: (
36: p_api_version IN NUMBER
37: , p_init_msg_lst IN VARCHAR2 DEFAULT FND_API.G_FALSE
38: , p_validation_flag IN NUMBER DEFAULT FND_API.G_VALID_LEVEL_FULL
39: , p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE
40: , p_mo_hdr_rec IN GMI_Move_Order_Global.mo_hdr_rec
41: , p_mo_line_tbl IN GMI_Move_Order_Global.mo_line_tbl
42: , p_grouping_rule_id IN NUMBER DEFAULT NULL
43: , p_allow_delete IN VARCHAR2 DEFAULT NULL
99: Raise a temporary error, for Dummy calls
100: ======================================================================= */
101: /* FND_MESSAGE.SET_NAME('GMI','GMI_RSV_UNAVAILABLE'); */
102: /* OE_MSG_PUB.Add; */
103: /* RAISE FND_API.G_EXC_ERROR; */
104:
105: GMI_Reservation_Util.PrintLn('Entering_GMI_Pick_Release....');
106: /* =====================================================================
107: Initialization
107: Initialization
108: ===================================================================== */
109: /* Initialize API return status to success */
110: gmi_reservation_util.println('Value of p_grouping_rule_id in Auto_Detail is '||p_grouping_rule_id);
111: x_return_status := FND_API.G_RET_STS_SUCCESS;
112: GMI_Reservation_Util.PrintLn('EXITING GMI_Pick_Release....');
113:
114: GMI_Reservation_Util.PrintLn('GMI_Pick_Release_PUB, Before Init status');
115: /* Set a SavePoint */
115: /* Set a SavePoint */
116: SAVEPOINT Pick_Release_PUB;
117:
118: /* Standard Call to check for call compatibility */
119: IF NOT FND_API.Compatible_API_Call(l_api_version
120: , p_api_version
121: , l_api_name
122: , G_PKG_NAME) THEN
123: GMI_Reservation_Util.PrintLn('GMI_Pick_Release_PUB, Error in Compatible_API_Call');
120: , p_api_version
121: , l_api_name
122: , G_PKG_NAME) THEN
123: GMI_Reservation_Util.PrintLn('GMI_Pick_Release_PUB, Error in Compatible_API_Call');
124: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
125: END IF;
126:
127: /* Initialize message list if p_init_msg_list is set to true */
128: IF FND_API.to_Boolean(p_init_msg_lst) THEN
124: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
125: END IF;
126:
127: /* Initialize message list if p_init_msg_list is set to true */
128: IF FND_API.to_Boolean(p_init_msg_lst) THEN
129: FND_MSG_PUB.initialize;
130: END IF;
131: /* =====================================================================
132: Validate parameters
141: GMI_Reservation_Util.PrintLn('GMI_Pick_Release_PUB, Validation Error count=0');
142: ROLLBACK TO Pick_Release_PUB;
143: FND_MESSAGE.SET_NAME('INV','INV_NO_LINES_TO_PICK');
144: FND_MSG_PUB.Add;
145: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
146: END IF;
147:
148: /* Validate that all move order lines are from the same org, that all lines
149: have a status of pre-approved (7) or approved (3), and that all of the move
158: IF l_mo_line.organization_id <> l_organization_id THEN
159: GMI_Reservation_Util.PrintLn('GMI_Pick_Release_PUB, In loop Error pick_different_org');
160: FND_MESSAGE.SET_NAME('GMI','INV_PICK_DIFFERENT_ORG');
161: FND_MSG_PUB.Add;
162: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
163: END IF;
164:
165: /* Verify that the line status is approved or pre-approved */
166: IF (l_mo_line.line_status <> 3 AND l_mo_line.line_status <> 7) THEN
166: IF (l_mo_line.line_status <> 3 AND l_mo_line.line_status <> 7) THEN
167: GMI_Reservation_Util.PrintLn('GMI_Pick_Release_PUB, In loop Error Pick_line_Status');
168: FND_MESSAGE.SET_NAME('GMI','INV_PICK_LINE_STATUS');
169: FND_MSG_PUB.Add;
170: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
171: END IF;
172:
173: /* Verify that the move order type is Pick Wave (3) */
174: GMI_Reservation_Util.PrintLn('GMI_Pick_Release_PUB, In loop org_id='||l_organization_id||', index='||l_line_index);
234: gmi_reservation_util.println('Value of p_grouping_rule_idp_grouping_rule_id in Auto_Detail before calling process_line is '||p_grouping_rule_id);
235: gmi_reservation_util.println('Value of l_grouping_rule_idp_grouping_rule_id in Auto_Detail before calling process_line is '||l_grouping_rule_id);
236: GMI_Pick_Release_PVT.Process_Line(
237: p_api_version => 1.0
238: ,p_validation_flag => fnd_api.g_true
239: ,p_commit => fnd_api.g_false
240: ,p_mo_hdr_rec => p_mo_hdr_rec
241: ,p_mo_line_rec => l_mo_line
242: ,p_grouping_rule_id => l_grouping_rule_id
235: gmi_reservation_util.println('Value of l_grouping_rule_idp_grouping_rule_id in Auto_Detail before calling process_line is '||l_grouping_rule_id);
236: GMI_Pick_Release_PVT.Process_Line(
237: p_api_version => 1.0
238: ,p_validation_flag => fnd_api.g_true
239: ,p_commit => fnd_api.g_false
240: ,p_mo_hdr_rec => p_mo_hdr_rec
241: ,p_mo_line_rec => l_mo_line
242: ,p_grouping_rule_id => l_grouping_rule_id
243: ,p_print_mode => l_print_mode
248: ,x_msg_data => x_msg_data
249: );
250:
251: GMI_Reservation_Util.PrintLn('l_return_status from process_line is ' || l_api_return_status);
252: IF l_api_return_status <> FND_API.G_RET_STS_SUCCESS THEN
253: /* If partial picking is not allowed or a Move Order Line cannot be pick
254: released, and the parameter to allow partial picking is false, then the
255: API should rollback all changes and return an error.
256: */
257: x_pick_release_status.delete;
258: ROLLBACK TO Pick_Release_PUB;
259: FND_MESSAGE.SET_NAME('INV','INV_COULD_NOT_PICK_FULL');
260: FND_MSG_PUB.Add;
261: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
262: END IF;
263:
264: /* HW BUG#:1941429 code for cross_docking */
265:
280: where move_order_line_id = l_mo_line.line_id ;
281: EXCEPTION
282: WHEN no_data_found THEN
283: ROLLBACK TO SAVEPOINT Pick_Release_PUB;
284: x_return_status := FND_API.G_RET_STS_ERROR;
285: FND_MSG_PUB.count_and_get
286: ( p_count => x_msg_count
287: , p_data => x_msg_data
288: );
303: 'Inv_Pick_Release_Pub.Pick_Release');
304: ROLLBACK TO SAVEPOINT Pick_Release_PUB;
305: FND_MESSAGE.SET_NAME('INV','INV_DELIV_INFO_MISSING');
306: FND_MSG_PUB.Add;
307: RAISE fnd_api.g_exc_unexpected_error;
308: END;
309:
310: gmi_reservation_util.println('Value of l_quantity from WDD '||l_quantity);
311: gmi_reservation_util.println('Value of l_secondary_quantity from '||l_secondary_quantity);
354: 'Inv_Pick_Release_Pub.Pick_Release');
355: ROLLBACK TO SAVEPOINT Pick_Release_PUB;
356: FND_MESSAGE.SET_NAME('INV','INV_DELIV_INFO_MISSING');
357: FND_MSG_PUB.Add;
358: RAISE fnd_api.g_exc_unexpected_error;
359: END;
360: gmi_reservation_util.println('In Auto_detail going to call update_shipping');
361: --Call Update_Shipping_Attributes to backorder detail line
362: l_shipping_attr(1).source_header_id := l_source_header_id;
378: (p_source_code => 'INV',
379: p_changed_attributes => l_shipping_attr,
380: x_return_status => l_api_return_status
381: );
382: IF( l_api_return_status = FND_API.G_RET_STS_ERROR ) then
383: GMI_Reservation_Util.Println('Retrun error from update shipping attributes',
384: 'GMI_Pick_Release_Pub.Auto_Detail');
385: raise FND_API.G_EXC_ERROR;
386: END IF;
381: );
382: IF( l_api_return_status = FND_API.G_RET_STS_ERROR ) then
383: GMI_Reservation_Util.Println('Retrun error from update shipping attributes',
384: 'GMI_Pick_Release_Pub.Auto_Detail');
385: raise FND_API.G_EXC_ERROR;
386: END IF;
387:
388: UPDATE IC_TXN_REQUEST_LINES
389: SET quantity = l_transaction_quantity,
403: /* l_detail_rec_count := 0; */
404: /* Update the Pick Release API's return status to an error if the line could
405: not be processed. Note that processing of other lines will continue.
406: */
407: IF l_api_return_status = FND_API.G_RET_STS_UNEXP_ERROR OR
408: l_api_return_status = FND_API.G_RET_STS_ERROR THEN
409: x_return_status := FND_API.G_RET_STS_ERROR;
410: END IF;
411:
404: /* Update the Pick Release API's return status to an error if the line could
405: not be processed. Note that processing of other lines will continue.
406: */
407: IF l_api_return_status = FND_API.G_RET_STS_UNEXP_ERROR OR
408: l_api_return_status = FND_API.G_RET_STS_ERROR THEN
409: x_return_status := FND_API.G_RET_STS_ERROR;
410: END IF;
411:
412: GMI_Reservation_Util.PrintLn('Before Next loop No Error');
405: not be processed. Note that processing of other lines will continue.
406: */
407: IF l_api_return_status = FND_API.G_RET_STS_UNEXP_ERROR OR
408: l_api_return_status = FND_API.G_RET_STS_ERROR THEN
409: x_return_status := FND_API.G_RET_STS_ERROR;
410: END IF;
411:
412: GMI_Reservation_Util.PrintLn('Before Next loop No Error');
413:
418: x_return_status := l_api_return_status;
419:
420:
421: EXCEPTION
422: WHEN FND_API.G_EXC_ERROR THEN
423: GMI_Reservation_Util.PrintLn('End of Pick_ReleasePUB Error (Rollback to Savepoint)');
424: ROLLBACK TO SAVEPOINT Pick_Release_PUB;
425:
426: x_return_status := FND_API.G_RET_STS_ERROR;
422: WHEN FND_API.G_EXC_ERROR THEN
423: GMI_Reservation_Util.PrintLn('End of Pick_ReleasePUB Error (Rollback to Savepoint)');
424: ROLLBACK TO SAVEPOINT Pick_Release_PUB;
425:
426: x_return_status := FND_API.G_RET_STS_ERROR;
427:
428: /* Get message count and data */
429: FND_MSG_PUB.count_and_get
430: ( p_count => x_msg_count
433:
434: WHEN OTHERS THEN
435: GMI_Reservation_Util.PrintLn('End of Pick_ReleasePUB ErrorOther (Rollback to Savepoint)');
436: ROLLBACK TO SAVEPOINT Pick_Release_PUB;
437: x_return_status := FND_API.G_RET_STS_ERROR;
438:
439: /* Get message count and data */
440: FND_MSG_PUB.count_and_get
441: ( p_count => x_msg_count