74: --9187335 End
75: BEGIN
76:
77: oe_debug_pub.add('Entering oe_schedule_grp.update_scheduling_results' || p_x_sch_tbl.count ,1);
78: x_return_status := FND_API.G_RET_STS_SUCCESS;
79:
80: IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL > '110509' THEN
81: l_count := p_x_sch_tbl.count;
82: --9187335 Start
109: --12639544
110: --l_add_count:=g_sch_tbl.count+1;
111: l_add_count:= l_add_count +1;
112: g_sch_tbl(l_add_count) :=p_x_sch_tbl(I);
113: --g_sch_tbl(I).x_return_status := FND_API.G_RET_STS_SUCCESS;
114: g_sch_tbl(l_add_count).x_return_status := FND_API.G_RET_STS_SUCCESS;
115:
116: BEGIN
117: SELECT ship_set_id, arrival_set_id
110: --l_add_count:=g_sch_tbl.count+1;
111: l_add_count:= l_add_count +1;
112: g_sch_tbl(l_add_count) :=p_x_sch_tbl(I);
113: --g_sch_tbl(I).x_return_status := FND_API.G_RET_STS_SUCCESS;
114: g_sch_tbl(l_add_count).x_return_status := FND_API.G_RET_STS_SUCCESS;
115:
116: BEGIN
117: SELECT ship_set_id, arrival_set_id
118: INTO l_ship_set_id, l_arrival_set_id
144: l_non_plan_line_rec.line_id:=k.line_id;
145: l_non_plan_line_rec.inventory_item_id:=k.inventory_item_id;
146: l_non_plan_line_rec.Orig_Inventory_item_id:=k.inventory_item_id;
147: l_non_plan_line_rec.Orig_ordered_quantity:=k.ordered_quantity;
148: l_non_plan_line_rec.x_return_status := FND_API.G_RET_STS_SUCCESS;
149:
150: IF g_sch_tbl.count>0 THEN
151: l_add_count:=g_sch_tbl.count+1;
152: END IF ;
170: l_non_plan_line_rec.line_id:=k.line_id;
171: l_non_plan_line_rec.inventory_item_id:=k.inventory_item_id;
172: l_non_plan_line_rec.Orig_Inventory_item_id:=k.inventory_item_id;
173: l_non_plan_line_rec.Orig_ordered_quantity:=k.ordered_quantity;
174: l_non_plan_line_rec.x_return_status := FND_API.G_RET_STS_SUCCESS;
175:
176: IF g_sch_tbl.count>0 THEN
177: l_add_count:=g_sch_tbl.count+1;
178: END IF ;
193: Process_order(x_return_status => l_return_status);
194: oe_debug_pub.ADD('After Process Order :'|| l_return_status);
195: /*
196: -- Handling error as per bug 7679398
197: IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
198: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
199: ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
200: RAISE FND_API.G_EXC_ERROR;
201: END IF;
194: oe_debug_pub.ADD('After Process Order :'|| l_return_status);
195: /*
196: -- Handling error as per bug 7679398
197: IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
198: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
199: ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
200: RAISE FND_API.G_EXC_ERROR;
201: END IF;
202: */
195: /*
196: -- Handling error as per bug 7679398
197: IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
198: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
199: ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
200: RAISE FND_API.G_EXC_ERROR;
201: END IF;
202: */
203: -- Commented the above for bug 7679398/7675256, and added the SAVEPOINT -
196: -- Handling error as per bug 7679398
197: IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
198: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
199: ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
200: RAISE FND_API.G_EXC_ERROR;
201: END IF;
202: */
203: -- Commented the above for bug 7679398/7675256, and added the SAVEPOINT -
204: IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
200: RAISE FND_API.G_EXC_ERROR;
201: END IF;
202: */
203: -- Commented the above for bug 7679398/7675256, and added the SAVEPOINT -
204: IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
205: ROLLBACK TO Group_Schedule;
206: END IF;
207:
208:
218: FOR I in 1..p_x_sch_tbl.LAST LOOP
219: IF p_x_sch_tbl(I).line_id = g_sch_tbl(J).line_id THEN
220: p_x_sch_tbl(I).x_return_status
221: := g_sch_tbl(J).x_return_status;
222: IF g_sch_tbl(J).x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
223:
224: oe_debug_pub.add('Setting the status to W to indicate partial processing',1);
225: x_return_status := 'W';
226:
249: oe_debug_pub.add('Exiting oe_schedule_grp.update_scheduling_results' ||
250: x_return_status,1);
251:
252: EXCEPTION
253: WHEN FND_API.G_EXC_ERROR THEN
254: x_return_status := FND_API.G_RET_STS_ERROR;
255:
256: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
257: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
250: x_return_status,1);
251:
252: EXCEPTION
253: WHEN FND_API.G_EXC_ERROR THEN
254: x_return_status := FND_API.G_RET_STS_ERROR;
255:
256: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
257: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
258:
252: EXCEPTION
253: WHEN FND_API.G_EXC_ERROR THEN
254: x_return_status := FND_API.G_RET_STS_ERROR;
255:
256: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
257: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
258:
259: WHEN OTHERS THEN
260: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
253: WHEN FND_API.G_EXC_ERROR THEN
254: x_return_status := FND_API.G_RET_STS_ERROR;
255:
256: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
257: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
258:
259: WHEN OTHERS THEN
260: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
261:
256: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
257: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
258:
259: WHEN OTHERS THEN
260: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
261:
262: IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
263: THEN
264: OE_MSG_PUB.Add_Exc_Msg
272: IS
273: l_line_rec OE_Order_PUB.Line_Rec_type;
274: l_local_line_tbl OE_ORDER_PUB.line_tbl_type;
275: l_control_rec OE_GLOBALS.control_rec_type;
276: l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
277: l_count Number;
278: l_ship_from_is_changed BOOLEAN := FALSE;
279: l_ship_method_is_changed BOOLEAN := FALSE;
280:
293: l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
294: BEGIN
295:
296: oe_debug_pub.add('Entering oe_schedule_grp.Process_order',1);
297: x_return_status := FND_API.G_RET_STS_SUCCESS;
298:
299: -- This variable is to track that the Item is being Substituted by Planning Loop Back and not being changed manully by user.
300: -- Initializing to 'N' for current set of Lines. Will set it to Y if any item substitutions are happening.
301: OE_SCHEDULE_UTIL.OESCH_ITEM_IS_SUBSTITUTED := 'N'; -- Added for ER 6110708
313: WHILE I IS NOT NULL
314: LOOP
315: -- FOR I IN 1..g_sch_tbl.count LOOP
316:
317: IF g_sch_tbl(I).x_return_status = FND_API.G_RET_STS_SUCCESS THEN
318:
319: -- g_sch_tbl(I).x_return_status := FND_API.G_RET_STS_SUCCESS;
320:
321: BEGIN
315: -- FOR I IN 1..g_sch_tbl.count LOOP
316:
317: IF g_sch_tbl(I).x_return_status = FND_API.G_RET_STS_SUCCESS THEN
318:
319: -- g_sch_tbl(I).x_return_status := FND_API.G_RET_STS_SUCCESS;
320:
321: BEGIN
322: OE_Line_Util.Query_Row( p_line_id => g_sch_tbl(I).line_id
323: ,x_line_rec => l_line_rec);
333:
334: FND_MESSAGE.SET_NAME('ONT', 'OE_INVALID_LOOP_LINE');
335: FND_MESSAGE.SET_TOKEN('LINE_ID',g_sch_tbl(I).line_id);
336: OE_MSG_PUB.ADD;
337: g_sch_tbl(I).x_return_status := FND_API.G_RET_STS_ERROR;
338: goto end_main_loop;
339: END;
340: -- Special Validation is needed before taking the data
341:
368: FND_MESSAGE.SET_NAME('ONT', 'OE_INVALID_ATTRIBUTE');
369: FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
370: OE_Order_Util.Get_Attribute_Name('Schedule_Ship_Date'));
371: OE_MSG_PUB.ADD;
372: g_sch_tbl(I).x_return_status := FND_API.G_RET_STS_ERROR;
373:
374: END IF;
375:
376: IF g_sch_tbl(I).Orig_Schedule_arrival_date IS NOT NULL
381: FND_MESSAGE.SET_NAME('ONT', 'OE_INVALID_ATTRIBUTE');
382: FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
383: OE_Order_Util.Get_Attribute_Name('Schedule_Arrival_date'));
384: OE_MSG_PUB.ADD;
385: g_sch_tbl(I).x_return_status := FND_API.G_RET_STS_ERROR;
386:
387: END IF;
388:
389: IF g_sch_tbl(I).Orig_ship_from_org_id IS NOT NULL
394: FND_MESSAGE.SET_NAME('ONT', 'OE_INVALID_ATTRIBUTE');
395: FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
396: OE_Order_Util.Get_Attribute_Name('ship_from_org_id'));
397: OE_MSG_PUB.ADD;
398: g_sch_tbl(I).x_return_status := FND_API.G_RET_STS_ERROR;
399:
400: END IF;
401:
402: IF g_sch_tbl(I).Orig_Shipping_Method_Code IS NOT NULL
407: FND_MESSAGE.SET_NAME('ONT', 'OE_INVALID_ATTRIBUTE');
408: FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
409: OE_Order_Util.Get_Attribute_Name('Shipping_Method_Code'));
410: OE_MSG_PUB.ADD;
411: g_sch_tbl(I).x_return_status := FND_API.G_RET_STS_ERROR;
412:
413: END IF;
414:
415: IF g_sch_tbl(I).Orig_ordered_quantity IS NOT NULL
420: FND_MESSAGE.SET_NAME('ONT', 'OE_INVALID_ATTRIBUTE');
421: FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
422: OE_Order_Util.Get_Attribute_Name('ordered_quantity'));
423: OE_MSG_PUB.ADD;
424: g_sch_tbl(I).x_return_status := FND_API.G_RET_STS_ERROR;
425:
426: END IF;
427:
428: IF g_sch_tbl(I).Orig_Earliest_Ship_date IS NOT NULL
435: FND_MESSAGE.SET_NAME('ONT', 'OE_INVALID_ATTRIBUTE');
436: FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
437: OE_Order_Util.Get_Attribute_Name('Earliest_Ship_date'));
438: OE_MSG_PUB.ADD;
439: g_sch_tbl(I).x_return_status := FND_API.G_RET_STS_ERROR;
440:
441: END IF;
442:
443: IF l_line_rec.ato_line_id is not null
444: AND l_line_rec.ato_line_id <> l_line_rec.line_id
445: AND NOT l_line_rec.item_type_code = OE_GLOBALS.G_ITEM_CONFIG THEN
446:
447: oe_debug_pub.add('E4',2);
448: g_sch_tbl(I).x_return_status := FND_API.G_RET_STS_ERROR;
449: FND_MESSAGE.SET_NAME('ONT', 'OE_SCH_LOOP_NOT_SUP');
450: OE_MSG_PUB.ADD;
451: END IF;
452:
466: FND_MESSAGE.SET_NAME('ONT', 'OE_INVALID_ATTRIBUTE');
467: FND_MESSAGE.SET_TOKEN('ATTRIBUTE',
468: OE_Order_Util.Get_Attribute_Name('inventory_item_id'));
469: OE_MSG_PUB.ADD;
470: g_sch_tbl(I).x_return_status := FND_API.G_RET_STS_ERROR;
471: END IF;
472:
473: l_opm_enabled := INV_GMI_RSV_BRANCH.Process_Branch(p_organization_id => l_line_rec.ship_from_org_id);
474:
511: -- Booked Line and OPM Item
512: ( nvl(l_line_rec.booked_flag, 'N') = 'Y' and nvl(l_line_rec.reserved_quantity, 0) <> 0 ) -- Booked Line with Reservations
513: )
514: THEN
515: g_sch_tbl(I).x_return_status := FND_API.G_RET_STS_ERROR;
516: FND_MESSAGE.SET_NAME('ONT', 'OE_SCH_LOOP_NOT_SUP');
517: OE_MSG_PUB.ADD;
518: END IF;
519:
526: WHERE INVENTORY_ITEM_ID = g_sch_tbl(I).inventory_item_id
527: AND ORGANIZATION_ID = nvl(g_sch_tbl(I).ship_from_org_id, l_line_rec.ship_from_org_id);
528:
529: IF l_shippable_flag <> l_line_rec.shippable_flag THEN
530: g_sch_tbl(I).x_return_status := FND_API.G_RET_STS_ERROR;
531: FND_MESSAGE.SET_NAME('ONT', 'OE_SCH_LOOP_SHP_NONSHP');
532: OE_MSG_PUB.ADD;
533: END IF;
534: END;
541:
542: -- Special Validation.
543:
544: oe_debug_pub.add('After Special Validation ',2);
545: IF g_sch_tbl(I).x_return_status = FND_API.G_RET_STS_SUCCESS THEN
546:
547: IF nvl(l_line_rec.override_atp_date_code,'N') = 'Y' THEN
548: g_sch_tbl(I).x_override_atp_date_code := 'Y';
549: END IF;
588: /*
589: IF trunc(g_sch_tbl(I).schedule_ship_date) < trunc(l_local_line_tbl(J).request_date) THEN
590:
591: oe_debug_pub.add('Schedule Ship Date connot be less than request_date');
592: g_sch_tbl(I).x_return_status := FND_API.G_RET_STS_ERROR;
593: l_local_line_tbl(J).operation := OE_GLOBALS.G_OPR_NONE;
594: l_local_line_tbl(J).return_status := FND_API.G_RET_STS_ERROR;
595: FND_MESSAGE.SET_NAME('ONT', 'ONT_SCH_INVALID_DATE');
596: OE_MSG_PUB.ADD;
590:
591: oe_debug_pub.add('Schedule Ship Date connot be less than request_date');
592: g_sch_tbl(I).x_return_status := FND_API.G_RET_STS_ERROR;
593: l_local_line_tbl(J).operation := OE_GLOBALS.G_OPR_NONE;
594: l_local_line_tbl(J).return_status := FND_API.G_RET_STS_ERROR;
595: FND_MESSAGE.SET_NAME('ONT', 'ONT_SCH_INVALID_DATE');
596: OE_MSG_PUB.ADD;
597: goto end_loop;
598: END IF;
605:
606: /* IF trunc(g_sch_tbl(I).schedule_arrival_date) < trunc(l_local_line_tbl(J).request_date) THEN
607:
608: oe_debug_pub.add('Schedule Ship Date connot be less than request_date');
609: g_sch_tbl(I).x_return_status := FND_API.G_RET_STS_ERROR;
610: l_local_line_tbl(J).operation := OE_GLOBALS.G_OPR_NONE;
611: l_local_line_tbl(J).return_status := FND_API.G_RET_STS_ERROR;
612: FND_MESSAGE.SET_NAME('ONT', 'ONT_SCH_INVALID_DATE');
613: oe_msg_pub.add;
607:
608: oe_debug_pub.add('Schedule Ship Date connot be less than request_date');
609: g_sch_tbl(I).x_return_status := FND_API.G_RET_STS_ERROR;
610: l_local_line_tbl(J).operation := OE_GLOBALS.G_OPR_NONE;
611: l_local_line_tbl(J).return_status := FND_API.G_RET_STS_ERROR;
612: FND_MESSAGE.SET_NAME('ONT', 'ONT_SCH_INVALID_DATE');
613: oe_msg_pub.add;
614: goto end_loop;
615: END IF;
710: IF g_sch_tbl(I).schedule_ship_date is NOT NULL THEN
711: /* IF trunc(g_sch_tbl(I).schedule_ship_date) < trunc(l_line_rec.request_date) THEN
712:
713: oe_debug_pub.add('Schedule Ship Date connot be less than request_date');
714: g_sch_tbl(I).x_return_status := FND_API.G_RET_STS_ERROR;
715: l_line_rec.operation := OE_GLOBALS.G_OPR_NONE;
716: l_line_rec.return_status := FND_API.G_RET_STS_ERROR;
717: FND_MESSAGE.SET_NAME('ONT', 'ONT_SCH_INVALID_DATE');
718: OE_MSG_PUB.ADD;
712:
713: oe_debug_pub.add('Schedule Ship Date connot be less than request_date');
714: g_sch_tbl(I).x_return_status := FND_API.G_RET_STS_ERROR;
715: l_line_rec.operation := OE_GLOBALS.G_OPR_NONE;
716: l_line_rec.return_status := FND_API.G_RET_STS_ERROR;
717: FND_MESSAGE.SET_NAME('ONT', 'ONT_SCH_INVALID_DATE');
718: OE_MSG_PUB.ADD;
719: goto end_loop1;
720: END IF;
723: IF g_sch_tbl(I).schedule_arrival_date is NOT NULL THEN
724: /* IF trunc(g_sch_tbl(I).schedule_arrival_date) < trunc(l_line_rec.request_date) THEN
725:
726: oe_debug_pub.add('Schedule Ship Date connot be less than request_date');
727: g_sch_tbl(I).x_return_status := FND_API.G_RET_STS_ERROR;
728: l_line_rec.operation := OE_GLOBALS.G_OPR_NONE;
729: l_line_rec.return_status := FND_API.G_RET_STS_ERROR;
730: FND_MESSAGE.SET_NAME('ONT', 'ONT_SCH_INVALID_DATE');
731: oe_msg_pub.add;
725:
726: oe_debug_pub.add('Schedule Ship Date connot be less than request_date');
727: g_sch_tbl(I).x_return_status := FND_API.G_RET_STS_ERROR;
728: l_line_rec.operation := OE_GLOBALS.G_OPR_NONE;
729: l_line_rec.return_status := FND_API.G_RET_STS_ERROR;
730: FND_MESSAGE.SET_NAME('ONT', 'ONT_SCH_INVALID_DATE');
731: oe_msg_pub.add;
732: goto end_loop1;
733: END IF;
791: FOR J IN 1..g_line_tbl.count LOOP
792:
793: oe_debug_pub.add('Operation ' || g_line_tbl(J).operation ,2);
794:
795: IF g_line_tbl(J).return_status <> FND_API.G_RET_STS_SUCCESS THEN
796:
797: oe_debug_pub.add('None ' || g_line_tbl(J).return_status,2);
798: g_line_tbl(J).operation := OE_GLOBALS.G_OPR_NONE;
799:
926: ,x_return_status => x_return_status);
927:
928: EXCEPTION
929: WHEN OTHERS THEN
930: x_return_status := FND_API.G_RET_STS_ERROR;
931: END;
932: IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
933: oe_debug_pub.add('OEXGSCHB : Setting the x_return_status for failed lines', 5); -- Added for ER 6110708
934: oe_debug_pub.add('OEXGSCHB : Failed Line Id : ' || g_line_tbl(J).line_id, 5); -- Added for ER 6110708
928: EXCEPTION
929: WHEN OTHERS THEN
930: x_return_status := FND_API.G_RET_STS_ERROR;
931: END;
932: IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
933: oe_debug_pub.add('OEXGSCHB : Setting the x_return_status for failed lines', 5); -- Added for ER 6110708
934: oe_debug_pub.add('OEXGSCHB : Failed Line Id : ' || g_line_tbl(J).line_id, 5); -- Added for ER 6110708
935: g_sch_tbl(J).x_return_status := x_return_status;
936: END IF;
936: END IF;
937: END LOOP;
938: END IF;
939: -- 4606248
940: IF x_return_status = FND_API.G_RET_STS_SUCCESS THEN
941:
942: OE_Order_PVT.Process_Requests_And_Notify
943: ( p_process_requests => TRUE
944: ,p_notify => TRUE
950: OE_SCHEDULE_UTIL.OESCH_ITEM_IS_SUBSTITUTED := 'N'; -- Added for ER 6110708
951:
952: -- ELSE -- Updated for bug 7679398/7675256
953: END IF;
954: IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
955:
956:
957:
958: FOR I IN 1..g_line_tbl.COUNT LOOP
987: IF ( g_line_tbl(I).reserved_quantity > 0
988: OR g_line_tbl(I).inventory_item_id <> g_old_line_tbl(I).inventory_item_id -- Added for ER 6110708
989: )
990: AND (g_line_tbl(I).return_status is null OR
991: g_line_tbl(I).return_status = FND_API.G_RET_STS_SUCCESS) THEN
992:
993: Update_reservation(p_index => I,
994: x_return_status => l_return_status);
995:
994: x_return_status => l_return_status);
995:
996: END IF;
997: END LOOP;
998: IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
999: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1000: ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1001: RAISE FND_API.G_EXC_ERROR;
1002: END IF;
995:
996: END IF;
997: END LOOP;
998: IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
999: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1000: ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1001: RAISE FND_API.G_EXC_ERROR;
1002: END IF;
1003:
996: END IF;
997: END LOOP;
998: IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
999: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1000: ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1001: RAISE FND_API.G_EXC_ERROR;
1002: END IF;
1003:
1004:
997: END LOOP;
998: IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
999: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1000: ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1001: RAISE FND_API.G_EXC_ERROR;
1002: END IF;
1003:
1004:
1005: g_line_tbl.delete;
1006: g_old_line_tbl.delete;
1007:
1008: oe_debug_pub.add('Exiting oe_schedule_grp.Process_order '||x_return_status,1);
1009: EXCEPTION
1010: WHEN FND_API.G_EXC_ERROR THEN
1011:
1012: OE_Schedule_GRP.G_ISO_Planning_Update := FALSE;
1013: -- Added for IR ISO Tracking bug 7667702
1014:
1011:
1012: OE_Schedule_GRP.G_ISO_Planning_Update := FALSE;
1013: -- Added for IR ISO Tracking bug 7667702
1014:
1015: x_return_status := FND_API.G_RET_STS_ERROR;
1016: g_line_tbl.delete;
1017: g_old_line_tbl.delete;
1018:
1019: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1015: x_return_status := FND_API.G_RET_STS_ERROR;
1016: g_line_tbl.delete;
1017: g_old_line_tbl.delete;
1018:
1019: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1020:
1021: OE_Schedule_GRP.G_ISO_Planning_Update := FALSE;
1022: -- Added for IR ISO Tracking bug 7667702
1023:
1020:
1021: OE_Schedule_GRP.G_ISO_Planning_Update := FALSE;
1022: -- Added for IR ISO Tracking bug 7667702
1023:
1024: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1025: g_line_tbl.delete;
1026: g_old_line_tbl.delete;
1027:
1028: WHEN OTHERS THEN
1029:
1030: OE_Schedule_GRP.G_ISO_Planning_Update := FALSE;
1031: -- Added for IR ISO Tracking bug 7667702
1032:
1033: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1034: g_line_tbl.delete;
1035: g_old_line_tbl.delete;
1036:
1037: IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1063: ,p_header_id => g_sch_tbl(I).header_id
1064: ,p_line_id => g_sch_tbl(I).line_id);
1065:
1066: oe_debug_pub.add('ONT_SCH_LOOP_DATE_NULL',1);
1067: g_sch_tbl(I).x_return_status := FND_API.G_RET_STS_ERROR;
1068: FND_MESSAGE.SET_NAME('ONT', 'ONT_SCH_LOOP_DATE_NULL');
1069: OE_MSG_PUB.ADD;
1070:
1071: END IF;
1072:
1073: I := g_sch_tbl.NEXT(I);
1074: END LOOP;
1075: EXCEPTION
1076: WHEN FND_API.G_EXC_ERROR THEN
1077: x_return_status := FND_API.G_RET_STS_ERROR;
1078:
1079: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1080: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1073: I := g_sch_tbl.NEXT(I);
1074: END LOOP;
1075: EXCEPTION
1076: WHEN FND_API.G_EXC_ERROR THEN
1077: x_return_status := FND_API.G_RET_STS_ERROR;
1078:
1079: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1080: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1081:
1075: EXCEPTION
1076: WHEN FND_API.G_EXC_ERROR THEN
1077: x_return_status := FND_API.G_RET_STS_ERROR;
1078:
1079: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1080: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1081:
1082: WHEN OTHERS THEN
1083: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1076: WHEN FND_API.G_EXC_ERROR THEN
1077: x_return_status := FND_API.G_RET_STS_ERROR;
1078:
1079: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1080: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1081:
1082: WHEN OTHERS THEN
1083: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1084:
1079: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1080: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1081:
1082: WHEN OTHERS THEN
1083: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1084:
1085: IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1086: THEN
1087: OE_MSG_PUB.Add_Exc_Msg
1093:
1094: PROCEDURE Validate_Lines(x_return_status OUT NOCOPY /* file.sql.39 change */ Varchar2)
1095: IS
1096: l_scheduling_level_code VARCHAR2(30);
1097: l_out_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
1098: l_msg_count NUMBER;
1099: l_msg_data VARCHAR2(2000);
1100: l_result Varchar2(30);
1101: l_index NUMBER;
1107: FOR I IN 1..G_LINE_TBL.COUNT LOOP
1108:
1109: oe_debug_pub.add('Validate_Lines' || g_line_tbl(I).line_id,1);
1110:
1111: x_return_status := FND_API.G_RET_STS_SUCCESS;
1112: OE_MSG_PUB.set_msg_context
1113: ( p_entity_code => 'LINE'
1114: ,p_entity_id => g_line_tbl(I).line_id
1115: ,p_header_id => g_line_tbl(I).header_id
1136: oe_debug_pub.add('E1',2);
1137: g_line_tbl(I).operation := OE_GLOBALS.G_OPR_NONE;
1138: FND_MESSAGE.SET_NAME('ONT', 'ONT_SCH_LOOP_CANT_UPDATE');
1139: OE_MSG_PUB.ADD;
1140: x_return_status := FND_API.G_RET_STS_ERROR;
1141: END IF;
1142: */
1143: IF g_line_tbl(I).cancelled_flag = 'Y' THEN
1144:
1145: oe_debug_pub.add('E1-1',2);
1146: g_line_tbl(I).operation := OE_GLOBALS.G_OPR_NONE;
1147: FND_MESSAGE.SET_NAME('ONT', 'OE_SCH_LINE_FULLY_CANCELLED');
1148: OE_MSG_PUB.ADD;
1149: x_return_status := FND_API.G_RET_STS_ERROR;
1150: END IF;
1151:
1152: IF g_line_tbl(I).shipped_quantity is not null THEN
1153:
1154: oe_debug_pub.add('E1-2',2);
1155: g_line_tbl(I).operation := OE_GLOBALS.G_OPR_NONE;
1156: FND_MESSAGE.SET_NAME('ONT', 'OE_SCH_LINE_SHIPPED');
1157: OE_MSG_PUB.ADD;
1158: x_return_status := FND_API.G_RET_STS_ERROR;
1159: END IF;
1160:
1161: oe_debug_pub.add('Firm_demand_flag :' || g_line_tbl(I).firm_demand_flag,1);
1162:
1168: oe_debug_pub.add('E2',2);
1169: g_line_tbl(I).operation := OE_GLOBALS.G_OPR_NONE;
1170: FND_MESSAGE.SET_NAME('ONT', 'ONT_SCH_LOOP_FRMD');
1171: OE_MSG_PUB.ADD;
1172: x_return_status := FND_API.G_RET_STS_ERROR;
1173: END IF; */
1174:
1175: IF g_line_tbl(I).item_type_code = OE_GLOBALS.G_ITEM_SERVICE THEN
1176:
1177: oe_debug_pub.add('E3',2);
1178: g_line_tbl(I).operation := OE_GLOBALS.G_OPR_NONE;
1179: FND_MESSAGE.SET_NAME('ONT', 'ONT_SCH_LOOP_SRV');
1180: OE_MSG_PUB.ADD;
1181: x_return_status := FND_API.G_RET_STS_ERROR;
1182: END IF;
1183:
1184: IF g_line_tbl(I).ato_line_id IS NOT NULL THEN
1185: /* IF NOT (g_line_tbl(I).ato_line_id = g_line_tbl(I).line_id OR
1188: oe_debug_pub.add('E4',2);
1189: g_line_tbl(I).operation := OE_GLOBALS.G_OPR_NONE;
1190: FND_MESSAGE.SET_NAME('ONT', 'OE_SCH_LOOP_NOT_SUP');
1191: OE_MSG_PUB.ADD;
1192: x_return_status := FND_API.G_RET_STS_ERROR;
1193: END IF;
1194: */
1195: IF nvl(g_line_tbl(I).model_remnant_flag,'N') = 'Y' THEN
1196: oe_debug_pub.add('E5',2);
1196: oe_debug_pub.add('E5',2);
1197: g_line_tbl(I).operation := OE_GLOBALS.G_OPR_NONE;
1198: FND_MESSAGE.SET_NAME('ONT', 'OE_SCH_LOOP_NOT_SUP');
1199: OE_MSG_PUB.ADD;
1200: x_return_status := FND_API.G_RET_STS_ERROR;
1201:
1202: END IF;
1203: END IF;
1204:
1207: oe_debug_pub.add('E6',2);
1208: g_line_tbl(I).operation := OE_GLOBALS.G_OPR_NONE;
1209: FND_MESSAGE.SET_NAME('ONT', 'ONT_SCH_LOOP_RET');
1210: OE_MSG_PUB.ADD;
1211: x_return_status := FND_API.G_RET_STS_ERROR;
1212: END IF;
1213:
1214: IF OE_OTA_UTIL.Is_OTA_Line(g_line_tbl(I).order_quantity_uom) THEN
1215:
1216: oe_debug_pub.add('E7',2);
1217: g_line_tbl(I).operation := OE_GLOBALS.G_OPR_NONE;
1218: FND_MESSAGE.SET_NAME('ONT', 'OE_SCH_LOOP_NOT_SUP');
1219: OE_MSG_PUB.ADD;
1220: x_return_status := FND_API.G_RET_STS_ERROR;
1221: END IF;
1222:
1223: IF g_line_tbl(I).source_type_code = OE_GLOBALS.G_SOURCE_EXTERNAL THEN
1224:
1225: oe_debug_pub.add('E8',2);
1226: g_line_tbl(I).operation := OE_GLOBALS.G_OPR_NONE;
1227: FND_MESSAGE.SET_NAME('ONT', 'ONT_SCH_LOOP_EXT');
1228: OE_MSG_PUB.ADD;
1229: x_return_status := FND_API.G_RET_STS_ERROR;
1230: END IF;
1231:
1232: l_scheduling_level_code := OE_SCHEDULE_UTIL.Get_Scheduling_Level
1233: (g_line_tbl(I).header_id,
1240: oe_debug_pub.add('E9',2);
1241: g_line_tbl(I).operation := OE_GLOBALS.G_OPR_NONE;
1242: FND_MESSAGE.SET_NAME('ONT', 'ONT_SCH_LOOP_LVL');
1243: OE_MSG_PUB.ADD;
1244: x_return_status := FND_API.G_RET_STS_ERROR;
1245:
1246:
1247: END IF;
1248:
1267: oe_debug_pub.add('E10',2);
1268: g_line_tbl(I).operation := OE_GLOBALS.G_OPR_NONE;
1269: FND_MESSAGE.SET_NAMe('ONT', 'OE_SCH_LOOP_WSH_UPD');
1270: OE_MSG_PUB.ADD;
1271: x_return_status := FND_API.G_RET_STS_ERROR;
1272:
1273: END IF;
1274: */
1275: IF Oe_Sys_Parameters.Value('ONT_SCHEDULE_LINE_ON_HOLD') = 'N' THEN
1275: IF Oe_Sys_Parameters.Value('ONT_SCHEDULE_LINE_ON_HOLD') = 'N' THEN
1276:
1277: OE_Holds_PUB.Check_Holds
1278: ( p_api_version => 1.0
1279: , p_init_msg_list => FND_API.G_FALSE
1280: , p_commit => FND_API.G_FALSE
1281: , p_validation_level => FND_API.G_VALID_LEVEL_FULL
1282: , x_return_status => l_out_return_status
1283: , x_msg_count => l_msg_count
1276:
1277: OE_Holds_PUB.Check_Holds
1278: ( p_api_version => 1.0
1279: , p_init_msg_list => FND_API.G_FALSE
1280: , p_commit => FND_API.G_FALSE
1281: , p_validation_level => FND_API.G_VALID_LEVEL_FULL
1282: , x_return_status => l_out_return_status
1283: , x_msg_count => l_msg_count
1284: , x_msg_data => l_msg_data
1277: OE_Holds_PUB.Check_Holds
1278: ( p_api_version => 1.0
1279: , p_init_msg_list => FND_API.G_FALSE
1280: , p_commit => FND_API.G_FALSE
1281: , p_validation_level => FND_API.G_VALID_LEVEL_FULL
1282: , x_return_status => l_out_return_status
1283: , x_msg_count => l_msg_count
1284: , x_msg_data => l_msg_data
1285: , p_line_id => g_line_tbl(I).line_id
1288: , p_entity_id => NULL
1289: , x_result_out => l_result
1290: );
1291:
1292: IF (l_out_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
1293: IF l_out_return_status = FND_API.G_RET_STS_ERROR THEN
1294: RAISE FND_API.G_EXC_ERROR;
1295: ELSE
1296: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1289: , x_result_out => l_result
1290: );
1291:
1292: IF (l_out_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
1293: IF l_out_return_status = FND_API.G_RET_STS_ERROR THEN
1294: RAISE FND_API.G_EXC_ERROR;
1295: ELSE
1296: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1297: END IF;
1290: );
1291:
1292: IF (l_out_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
1293: IF l_out_return_status = FND_API.G_RET_STS_ERROR THEN
1294: RAISE FND_API.G_EXC_ERROR;
1295: ELSE
1296: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1297: END IF;
1298: END IF;
1292: IF (l_out_return_status <> FND_API.G_RET_STS_SUCCESS) THEN
1293: IF l_out_return_status = FND_API.G_RET_STS_ERROR THEN
1294: RAISE FND_API.G_EXC_ERROR;
1295: ELSE
1296: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1297: END IF;
1298: END IF;
1299:
1300: IF (l_result = FND_API.G_TRUE) THEN
1296: RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1297: END IF;
1298: END IF;
1299:
1300: IF (l_result = FND_API.G_TRUE) THEN
1301: oe_debug_pub.add('E11',2);
1302: g_line_tbl(I).operation := OE_GLOBALS.G_OPR_NONE;
1303: FND_MESSAGE.SET_NAME('ONT','OE_SCH_LINE_ON_HOLD');
1304: OE_MSG_PUB.Add;
1301: oe_debug_pub.add('E11',2);
1302: g_line_tbl(I).operation := OE_GLOBALS.G_OPR_NONE;
1303: FND_MESSAGE.SET_NAME('ONT','OE_SCH_LINE_ON_HOLD');
1304: OE_MSG_PUB.Add;
1305: x_return_status := FND_API.G_RET_STS_ERROR;
1306: END IF;
1307:
1308:
1309: END IF;
1307:
1308:
1309: END IF;
1310:
1311: IF x_return_status <> FND_API.G_RET_STS_SUCCESS THEN
1312:
1313: l_index := find_index(g_line_tbl(I).line_id);
1314: g_sch_tbl(l_index).x_return_status := x_return_status;
1315: END IF;
1317:
1318: oe_debug_pub.add('Existing Validate_Lines',1);
1319:
1320: EXCEPTION
1321: WHEN FND_API.G_EXC_ERROR THEN
1322: x_return_status := FND_API.G_RET_STS_ERROR;
1323:
1324: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1325: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1318: oe_debug_pub.add('Existing Validate_Lines',1);
1319:
1320: EXCEPTION
1321: WHEN FND_API.G_EXC_ERROR THEN
1322: x_return_status := FND_API.G_RET_STS_ERROR;
1323:
1324: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1325: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1326:
1320: EXCEPTION
1321: WHEN FND_API.G_EXC_ERROR THEN
1322: x_return_status := FND_API.G_RET_STS_ERROR;
1323:
1324: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1325: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1326:
1327: WHEN OTHERS THEN
1328: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1321: WHEN FND_API.G_EXC_ERROR THEN
1322: x_return_status := FND_API.G_RET_STS_ERROR;
1323:
1324: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1325: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1326:
1327: WHEN OTHERS THEN
1328: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1329:
1324: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1325: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1326:
1327: WHEN OTHERS THEN
1328: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1329:
1330: IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1331: THEN
1332: OE_MSG_PUB.Add_Exc_Msg
1414:
1415: IF g_line_tbl(J).ship_set_id = p_ship_set_id THEN
1416:
1417: g_line_tbl(J).operation := OE_GLOBALS.G_OPR_NONE;
1418: g_line_tbl(J).return_status := FND_API.G_RET_STS_ERROR;
1419:
1420: l_index := find_index(g_line_tbl(J).line_id);
1421: g_sch_tbl(l_index).x_return_status := FND_API.G_RET_STS_ERROR;
1422: END IF;
1417: g_line_tbl(J).operation := OE_GLOBALS.G_OPR_NONE;
1418: g_line_tbl(J).return_status := FND_API.G_RET_STS_ERROR;
1419:
1420: l_index := find_index(g_line_tbl(J).line_id);
1421: g_sch_tbl(l_index).x_return_status := FND_API.G_RET_STS_ERROR;
1422: END IF;
1423:
1424: END LOOP;
1425:
1429:
1430: IF g_line_tbl(J).arrival_set_id = p_arrival_set_id THEN
1431:
1432: g_line_tbl(J).operation := OE_GLOBALS.G_OPR_NONE;
1433: g_line_tbl(J).return_status := FND_API.G_RET_STS_ERROR;
1434: l_index := find_index(g_line_tbl(J).line_id);
1435: g_sch_tbl(l_index).x_return_status := FND_API.G_RET_STS_ERROR;
1436: END IF;
1437:
1431:
1432: g_line_tbl(J).operation := OE_GLOBALS.G_OPR_NONE;
1433: g_line_tbl(J).return_status := FND_API.G_RET_STS_ERROR;
1434: l_index := find_index(g_line_tbl(J).line_id);
1435: g_sch_tbl(l_index).x_return_status := FND_API.G_RET_STS_ERROR;
1436: END IF;
1437:
1438: END LOOP;
1439:
1444: IF g_line_tbl(J).top_model_line_id = p_top_model_line_id THEN
1445:
1446: g_line_tbl(J).operation := OE_GLOBALS.G_OPR_NONE;
1447: l_index := find_index(g_line_tbl(J).line_id);
1448: g_sch_tbl(l_index).x_return_status := FND_API.G_RET_STS_ERROR;
1449:
1450: END IF;
1451:
1452: END LOOP;
1493:
1494:
1495: RETURN FALSE;
1496: EXCEPTION
1497: WHEN FND_API.G_EXC_ERROR THEN
1498: RETURN FALSE;
1499:
1500: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1501: RETURN FALSE;
1496: EXCEPTION
1497: WHEN FND_API.G_EXC_ERROR THEN
1498: RETURN FALSE;
1499:
1500: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1501: RETURN FALSE;
1502:
1503: WHEN OTHERS THEN
1504:
1543:
1544:
1545: RETURN null;
1546: EXCEPTION
1547: WHEN FND_API.G_EXC_ERROR THEN
1548: RETURN Null;
1549:
1550: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1551: RETURN Null;
1546: EXCEPTION
1547: WHEN FND_API.G_EXC_ERROR THEN
1548: RETURN Null;
1549:
1550: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1551: RETURN Null;
1552:
1553: WHEN OTHERS THEN
1554:
1594: ,x_return_status => x_return_status);
1595:
1596: END IF;
1597: EXCEPTION
1598: WHEN FND_API.G_EXC_ERROR THEN
1599: x_return_status := FND_API.G_RET_STS_ERROR;
1600:
1601: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1602: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1595:
1596: END IF;
1597: EXCEPTION
1598: WHEN FND_API.G_EXC_ERROR THEN
1599: x_return_status := FND_API.G_RET_STS_ERROR;
1600:
1601: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1602: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1603:
1597: EXCEPTION
1598: WHEN FND_API.G_EXC_ERROR THEN
1599: x_return_status := FND_API.G_RET_STS_ERROR;
1600:
1601: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1602: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1603:
1604: WHEN OTHERS THEN
1605: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1598: WHEN FND_API.G_EXC_ERROR THEN
1599: x_return_status := FND_API.G_RET_STS_ERROR;
1600:
1601: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1602: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1603:
1604: WHEN OTHERS THEN
1605: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1606:
1601: WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1602: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1603:
1604: WHEN OTHERS THEN
1605: x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1606:
1607: IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1608: THEN
1609: OE_MSG_PUB.Add_Exc_Msg