[Home] [Help]
PACKAGE BODY: APPS.MRP_FLOW_SCHEDULE_PUB
Source
1 PACKAGE BODY MRP_Flow_Schedule_PUB AS
2 /* $Header: MRPPWFSB.pls 120.1.12010000.2 2008/08/20 19:26:14 adasa ship $ */
3
4 -- Global constant holding the package name
5
6 G_PKG_NAME CONSTANT VARCHAR2(30) := 'MRP_Flow_Schedule_PUB';
7
8 -- Forward declaration of Procedure Id_To_Value
9 /*
10 Enhancement : 2665434
11 Description : Changed the usage of the record type from old record type
12 (MRP_FLow_Schedule_PUB.Flow_Schedule_Rec_Type) to new record type
13 (MRP_FLow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type)
14 */
15 PROCEDURE Id_To_Value
16 ( p_flow_schedule_rec IN MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type
17 , x_flow_schedule_val_rec OUT NOCOPY MRP_Flow_Schedule_PVT.Flow_Schedule_Val_PVT_Rec_Type
18 );
19
20 -- Forward declaration of procedure Value_To_Id
21 /*
22 Enhancement : 2665434
23 Description : Changed the usage of the record type from old record type
24 (MRP_FLow_Schedule_PUB.Flow_Schedule_Rec_Type) to new record type
25 (MRP_FLow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type)
26 */
27 PROCEDURE Value_To_Id
28 ( x_return_status OUT NOCOPY VARCHAR2
29 , p_flow_schedule_rec IN MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type
30 , p_flow_schedule_val_rec IN MRP_Flow_Schedule_PVT.Flow_Schedule_Val_PVT_Rec_Type
31 , x_flow_schedule_rec OUT NOCOPY MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type
32 );
33
34 -- Start of Comments
35 -- API name Process_Flow_Schedule
36 -- Type Public
37 -- Function
38 --
39 -- Pre-reqs
40 --
41 -- Parameters
42 --
43 -- Version Current version = 1.0
44 -- Initial version = 1.0
45 --
46 -- Notes
47 --
48 -- End of Comments
49
50 PROCEDURE Process_Flow_Schedule
51 ( p_api_version_number IN NUMBER
52 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
53 , p_return_values IN VARCHAR2 := FND_API.G_FALSE
54 , p_commit IN VARCHAR2 := FND_API.G_FALSE
55 , x_return_status OUT NOCOPY VARCHAR2
56 , x_msg_count OUT NOCOPY NUMBER
57 , x_msg_data OUT NOCOPY VARCHAR2
58 , p_flow_schedule_rec IN Flow_Schedule_Rec_Type :=
59 G_MISS_FLOW_SCHEDULE_REC
60 , p_flow_schedule_val_rec IN Flow_Schedule_Val_Rec_Type :=
61 G_MISS_FLOW_SCHEDULE_VAL_REC
62 , x_flow_schedule_rec OUT NOCOPY Flow_Schedule_Rec_Type
63 , x_flow_schedule_val_rec OUT NOCOPY Flow_Schedule_Val_Rec_Type
64 , p_explode_bom IN VARCHAR2 := 'N'
65 )
66 IS
67 l_api_version_number CONSTANT NUMBER := 1.0;
68 l_api_name CONSTANT VARCHAR2(30):= 'Process_Flow_Schedule';
69 l_control_rec MRP_GLOBALS.Control_Rec_Type;
70 l_return_status VARCHAR2(1);
71 l_flow_schedule_rec MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
72 l_p_flow_schedule_rec MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
73 l_p_old_flow_schedule_rec MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
74 l_p_flow_schedule_val_rec MRP_Flow_Schedule_PVT.Flow_Schedule_Val_PVT_Rec_Type;
75 l_x_flow_schedule_val_rec MRP_Flow_Schedule_PVT.Flow_Schedule_Val_PVT_Rec_Type;
76 l_error_msg VARCHAR2(2000);
77 l_error_code NUMBER;
78 BEGIN
79
80 -- Standard call to check for call compatibility
81
82 IF NOT FND_API.Compatible_API_Call
83 ( l_api_version_number
84 , p_api_version_number
85 , l_api_name
86 , G_PKG_NAME
87 )
88 THEN
89 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
90 END IF;
91
92 /*bug 5292986 - set the operation unit so project/task can be validated correctly */
93 fnd_profile.PUT('MFG_ORGANIZATION_ID', p_flow_schedule_rec.organization_id);
94
95 MRP_Flow_Schedule_PVT.PUB_Flow_Sched_Rec_To_PVT(p_flow_schedule_rec,l_p_flow_schedule_rec);
96 MRP_Flow_Schedule_PVT.PUB_Flow_Sched_Val_Rec_To_PVT(p_flow_schedule_val_rec,l_p_flow_schedule_val_rec);
97
98 -- Perform Value to Id conversion
99
100 Value_To_Id
101 ( x_return_status => l_return_status
102 , p_flow_schedule_rec => l_p_flow_schedule_rec
103 , p_flow_schedule_val_rec => l_p_flow_schedule_val_rec
104 , x_flow_schedule_rec => l_flow_schedule_rec
105 );
106
107 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
108 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
109 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
110 RAISE FND_API.G_EXC_ERROR;
111 END IF;
112
113
114 -- Call MRP_Flow_Schedule_PVT.Process_Flow_Schedule
115
116 MRP_Flow_Schedule_PVT.Process_Flow_Schedule
117 ( p_api_version_number => 1.0
118 , p_init_msg_list => p_init_msg_list
119 , p_validation_level => FND_API.G_VALID_LEVEL_FULL
120 , p_commit => p_commit
121 , x_return_status => x_return_status
122 , x_msg_count => x_msg_count
123 , x_msg_data => x_msg_data
124 , p_control_rec => l_control_rec
125 , p_flow_schedule_rec => l_flow_schedule_rec
126 , p_old_flow_schedule_rec => l_p_old_flow_schedule_rec
127 , x_flow_schedule_rec => l_flow_schedule_rec
128 , p_explode_bom => 'Y'
129 );
130
131 -- Load Id OUT parameters.
132
133 MRP_Flow_Schedule_PVT.PVT_Flow_Sched_Rec_To_PUB(l_flow_schedule_rec,x_flow_schedule_rec);
134
135
136 -- If p_return_values is TRUE then convert Ids to Values.
137
138 IF FND_API.to_Boolean(p_return_values) THEN
139
140 Id_To_Value
141 ( p_flow_schedule_rec => l_flow_schedule_rec
142 , x_flow_schedule_val_rec => l_x_flow_schedule_val_rec
143 );
144
145 MRP_Flow_Schedule_PVT.PVT_Flow_Sched_Val_Rec_To_PUB(l_x_flow_schedule_val_rec,x_flow_schedule_val_rec);
146
147 END IF;
148
149 EXCEPTION
150
151 WHEN FND_API.G_EXC_ERROR THEN
152
153 x_return_status := FND_API.G_RET_STS_ERROR;
154
155 -- Get message count and data
156
157 FND_MSG_PUB.Count_And_Get
158 ( p_count => x_msg_count
159 , p_data => x_msg_data
160 );
161
162 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
163
164 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
165
166 -- Get message count and data
167
168 FND_MSG_PUB.Count_And_Get
169 ( p_count => x_msg_count
170 , p_data => x_msg_data
171 );
172
173 WHEN OTHERS THEN
174
175 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
176
177 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
178 THEN
179 FND_MSG_PUB.Add_Exc_Msg
180 ( G_PKG_NAME
181 , 'Process_Flow_Schedule'
182 );
183 END IF;
184
185 -- Get message count and data
186
187 FND_MSG_PUB.Count_And_Get
188 ( p_count => x_msg_count
189 , p_data => x_msg_data
190 );
191
192 END Process_Flow_Schedule;
193
194 -- Start of Comments
195 -- API name Lock_Flow_Schedule
196 -- Type Public
197 -- Function
198 --
199 -- Pre-reqs
200 --
201 -- Parameters
202 --
203 -- Version Current version = 1.0
204 -- Initial version = 1.0
205 --
206 -- Notes
207 --
208 -- End of Comments
209
210 PROCEDURE Lock_Flow_Schedule
211 ( p_api_version_number IN NUMBER
212 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
213 , p_return_values IN VARCHAR2 := FND_API.G_FALSE
214 , x_return_status OUT NOCOPY VARCHAR2
215 , x_msg_count OUT NOCOPY NUMBER
216 , x_msg_data OUT NOCOPY VARCHAR2
217 , p_flow_schedule_rec IN Flow_Schedule_Rec_Type :=
218 G_MISS_FLOW_SCHEDULE_REC
219 , p_flow_schedule_val_rec IN Flow_Schedule_Val_Rec_Type :=
220 G_MISS_FLOW_SCHEDULE_VAL_REC
221 , x_flow_schedule_rec OUT NOCOPY Flow_Schedule_Rec_Type
222 , x_flow_schedule_val_rec OUT NOCOPY Flow_Schedule_Val_Rec_Type
223 )
224 IS
225 l_api_version_number CONSTANT NUMBER := 1.0;
226 l_api_name CONSTANT VARCHAR2(30):= 'Lock_Flow_Schedule';
227 l_return_status VARCHAR2(1);
228 l_flow_schedule_rec MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
229 l_p_flow_schedule_rec MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
230 l_p_flow_schedule_val_rec MRP_Flow_Schedule_PVT.Flow_Schedule_Val_PVT_Rec_Type;
231 l_x_flow_schedule_val_rec MRP_Flow_Schedule_PVT.Flow_Schedule_Val_PVT_Rec_Type;
232 BEGIN
233
234 -- Standard call to check for call compatibility
235
236 IF NOT FND_API.Compatible_API_Call
237 ( l_api_version_number
238 , p_api_version_number
239 , l_api_name
240 , G_PKG_NAME
241 )
242 THEN
243 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
244 END IF;
245
246 MRP_Flow_Schedule_PVT.PUB_Flow_Sched_Rec_To_PVT(p_flow_schedule_rec,l_p_flow_schedule_rec);
247 MRP_Flow_Schedule_PVT.PUB_Flow_Sched_Val_Rec_To_PVT(p_flow_schedule_val_rec,l_p_flow_schedule_val_rec);
248
249 -- Perform Value to Id conversion
250
251 Value_To_Id
252 ( x_return_status => l_return_status
253 , p_flow_schedule_rec => l_p_flow_schedule_rec
254 , p_flow_schedule_val_rec => l_p_flow_schedule_val_rec
255 , x_flow_schedule_rec => l_flow_schedule_rec
256 );
257
258 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
259 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
260 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
261 RAISE FND_API.G_EXC_ERROR;
262 END IF;
263
264
265 -- Call MRP_Flow_Schedule_PVT.Lock_Flow_Schedule
266
267 MRP_Flow_Schedule_PVT.Lock_Flow_Schedule
268 ( p_api_version_number => 1.0
269 , p_init_msg_list => p_init_msg_list
270 , x_return_status => x_return_status
271 , x_msg_count => x_msg_count
272 , x_msg_data => x_msg_data
273 , p_flow_schedule_rec => l_flow_schedule_rec
274 , x_flow_schedule_rec => l_flow_schedule_rec
275 );
276
277 -- Load Id OUT parameters.
278
279 MRP_Flow_Schedule_PVT.PVT_Flow_Sched_Rec_To_PUB(l_flow_schedule_rec,x_flow_schedule_rec);
280
281 -- If p_return_values is TRUE then convert Ids to Values.
282
283 IF FND_API.to_Boolean(p_return_values) THEN
284
285 Id_To_Value
286 ( p_flow_schedule_rec => l_flow_schedule_rec
287 , x_flow_schedule_val_rec => l_x_flow_schedule_val_rec
288 );
289
290 MRP_Flow_Schedule_PVT.PVT_Flow_Sched_Val_Rec_To_PUB(l_x_flow_schedule_val_rec,x_flow_schedule_val_rec);
291
292 END IF;
293
294 EXCEPTION
295
296 WHEN FND_API.G_EXC_ERROR THEN
297
298 x_return_status := FND_API.G_RET_STS_ERROR;
299
300 -- Get message count and data
301
302 FND_MSG_PUB.Count_And_Get
303 ( p_count => x_msg_count
304 , p_data => x_msg_data
305 );
306
307 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
308
309 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
310
311 -- Get message count and data
312
313 FND_MSG_PUB.Count_And_Get
314 ( p_count => x_msg_count
315 , p_data => x_msg_data
316 );
317
318 WHEN OTHERS THEN
319
320 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
321
322 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
323 THEN
324 FND_MSG_PUB.Add_Exc_Msg
325 ( G_PKG_NAME
326 , 'Lock_Flow_Schedule'
327 );
328 END IF;
329
330 -- Get message count and data
331
332 FND_MSG_PUB.Count_And_Get
333 ( p_count => x_msg_count
334 , p_data => x_msg_data
335 );
336
337 END Lock_Flow_Schedule;
338
339 -- Start of Comments
340 -- API name Get_Flow_Schedule
341 -- Type Public
342 -- Function
343 --
344 -- Pre-reqs
345 --
346 -- Parameters
347 --
348 -- Version Current version = 1.0
349 -- Initial version = 1.0
350 --
351 -- Notes
352 --
353 -- End of Comments
354
355 PROCEDURE Get_Flow_Schedule
356 ( p_api_version_number IN NUMBER
357 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
358 , p_return_values IN VARCHAR2 := FND_API.G_FALSE
359 , x_return_status OUT NOCOPY VARCHAR2
360 , x_msg_count OUT NOCOPY NUMBER
361 , x_msg_data OUT NOCOPY VARCHAR2
362 , p_wip_entity_id IN NUMBER :=
363 FND_API.G_MISS_NUM
364 , p_wip_entity IN VARCHAR2 :=
365 FND_API.G_MISS_CHAR
366 , x_flow_schedule_rec OUT NOCOPY Flow_Schedule_Rec_Type
367 , x_flow_schedule_val_rec OUT NOCOPY Flow_Schedule_Val_Rec_Type
368 )
369 IS
370 l_api_version_number CONSTANT NUMBER := 1.0;
371 l_api_name CONSTANT VARCHAR2(30):= 'Get_Flow_Schedule';
372 l_wip_entity_id NUMBER := p_wip_entity_id;
373 l_flow_schedule_rec MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
374 l_x_flow_schedule_val_rec MRP_Flow_Schedule_PVT.Flow_Schedule_Val_PVT_Rec_Type;
375 BEGIN
376
377 -- Standard call to check for call compatibility
378
379 IF NOT FND_API.Compatible_API_Call
380 ( l_api_version_number
381 , p_api_version_number
382 , l_api_name
383 , G_PKG_NAME
384 )
385 THEN
386 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
387 END IF;
388
389 -- Standard check for Val/ID conversion
390
391 IF p_wip_entity = FND_API.G_MISS_CHAR
392 THEN
393
394 l_wip_entity_id := p_wip_entity_id;
395
396 ELSIF p_wip_entity_id <> FND_API.G_MISS_NUM THEN
397
398 l_wip_entity_id := p_wip_entity_id;
399
400 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_SUCCESS)
401 THEN
402
403 FND_MESSAGE.SET_NAME('MRP','MRP_BOTH_VAL_AND_ID_EXIST');
404 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','wip_entity');
405 FND_MSG_PUB.Add;
406
407 END IF;
408
409 ELSE
410
411 -- Convert Value to Id
412
413 l_wip_entity_id := MRP_Value_To_Id.wip_entity
414 ( p_wip_entity => p_wip_entity
415 );
416
417 IF l_wip_entity_id = FND_API.G_MISS_NUM THEN
418 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
419 THEN
420
421 FND_MESSAGE.SET_NAME('MRP','MRP_INVALID_BUSINESS_OBJ_VALUE');
422 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','wip_entity');
423 FND_MSG_PUB.Add;
424
425 END IF;
426 END IF;
427
428 RAISE FND_API.G_EXC_ERROR;
429
430 END IF;
431
432
433 -- Call MRP_Flow_Schedule_PVT.Get_Flow_Schedule
434
435 MRP_Flow_Schedule_PVT.Get_Flow_Schedule
436 ( p_api_version_number => 1.0
437 , p_init_msg_list => p_init_msg_list
438 , x_return_status => x_return_status
439 , x_msg_count => x_msg_count
440 , x_msg_data => x_msg_data
441 , p_wip_entity_id => l_wip_entity_id
442 , x_flow_schedule_rec => l_flow_schedule_rec
443 );
444
445 -- Load Id OUT parameters.
446
447 MRP_Flow_Schedule_PVT.PVT_Flow_Sched_Rec_To_PUB(l_flow_schedule_rec,x_flow_schedule_rec);
448
449 -- If p_return_values is TRUE then convert Ids to Values.
450
451 IF FND_API.TO_BOOLEAN(p_return_values) THEN
452
453 Id_To_Value
454 ( p_flow_schedule_rec => l_flow_schedule_rec
455 , x_flow_schedule_val_rec => l_x_flow_schedule_val_rec
456 );
457
458 MRP_Flow_Schedule_PVT.PVT_Flow_Sched_Val_Rec_To_PUB(l_x_flow_schedule_val_rec,x_flow_schedule_val_rec);
459
460 END IF;
461
462 -- Set return status
463
464 x_return_status := FND_API.G_RET_STS_SUCCESS;
465
466 -- Get message count and data
467
468 FND_MSG_PUB.Count_And_Get
469 ( p_count => x_msg_count
470 , p_data => x_msg_data
471 );
472
473
474 EXCEPTION
475
476 WHEN FND_API.G_EXC_ERROR THEN
477
478 x_return_status := FND_API.G_RET_STS_ERROR;
479
480 -- Get message count and data
481
482 FND_MSG_PUB.Count_And_Get
483 ( p_count => x_msg_count
484 , p_data => x_msg_data
485 );
486
487 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
488
489 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
490
491 -- Get message count and data
492
493 FND_MSG_PUB.Count_And_Get
494 ( p_count => x_msg_count
495 , p_data => x_msg_data
496 );
497
498 WHEN OTHERS THEN
499
500 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
501
502 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
503 THEN
504 FND_MSG_PUB.Add_Exc_Msg
505 ( G_PKG_NAME
506 , 'Get_Flow_Schedule'
507 );
508 END IF;
509
510 -- Get message count and data
511
512 FND_MSG_PUB.Count_And_Get
513 ( p_count => x_msg_count
514 , p_data => x_msg_data
515 );
516
517 END Get_Flow_Schedule;
518
519 -- Procedure Id_To_Value
520
521 PROCEDURE Id_To_Value
522 ( p_flow_schedule_rec IN MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type
523 , x_flow_schedule_val_rec OUT NOCOPY MRP_Flow_Schedule_PVT.Flow_Schedule_Val_PVT_Rec_Type
524 )
525 IS
526 l_p_old_flow_schedule_rec MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type ;
527 BEGIN
528
529 -- Convert flow_schedule
530
531 x_flow_schedule_val_rec := MRP_Flow_Schedule_Util.Get_Values(p_flow_schedule_rec,l_p_old_flow_schedule_rec);
532
533 EXCEPTION
534
535 WHEN OTHERS THEN
536
537 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
538 THEN
539 FND_MSG_PUB.Add_Exc_Msg
540 ( G_PKG_NAME
541 , 'Id_To_Value'
542 );
543 END IF;
544
545 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
546
547 END Id_To_Value;
548
549 -- Procedure Value_To_Id
550
551 PROCEDURE Value_To_Id
552 ( x_return_status OUT NOCOPY VARCHAR2
553 , p_flow_schedule_rec IN MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type
554 , p_flow_schedule_val_rec IN MRP_Flow_Schedule_PVT.Flow_Schedule_Val_PVT_Rec_Type
555 , x_flow_schedule_rec OUT NOCOPY MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type
556 )
557 IS
558 l_flow_schedule_rec MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
559 l_index BINARY_INTEGER;
560 BEGIN
561
562 -- Init x_return_status.
563
564 x_return_status := FND_API.G_RET_STS_SUCCESS;
565
566 -- Convert flow_schedule
567
568 l_flow_schedule_rec := MRP_Flow_Schedule_Util.Get_Ids
569 ( p_flow_schedule_rec => p_flow_schedule_rec
570 , p_flow_schedule_val_rec => p_flow_schedule_val_rec
571 );
572
573 x_flow_schedule_rec := l_flow_schedule_rec;
574
575 IF l_flow_schedule_rec.return_status = FND_API.G_RET_STS_ERROR THEN
576 x_return_status := FND_API.G_RET_STS_ERROR;
577 END IF;
578
579 EXCEPTION
580
581 WHEN OTHERS THEN
582
583 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
584 THEN
585 FND_MSG_PUB.Add_Exc_Msg
586 ( G_PKG_NAME
587 , 'Value_To_Id'
588 );
589 END IF;
590
591 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
592
593 END Value_To_Id;
594
595 -- Start of Comments
596 -- API name Line_Schedule
597 -- Type Public
598 -- Function
599 --
600 -- Pre-reqs
601 --
602 -- Parameters
603 --
604 -- Version Current version = 1.0
605 -- Initial version = 1.0
606 --
607 -- Notes
608 --
609 -- End of Comments
610
611 PROCEDURE Line_Schedule
612 ( p_api_version_number IN NUMBER
613 , x_return_status OUT NOCOPY VARCHAR2
614 , x_msg_count OUT NOCOPY NUMBER
615 , x_msg_data OUT NOCOPY VARCHAR2
616 , p_rule_id IN NUMBER
617 , p_line_id IN NUMBER
618 , p_org_id IN NUMBER
619 , p_sched_start_date IN DATE
620 , p_sched_end_date IN DATE
621 , p_update IN NUMBER
622 )
623 IS
624 l_api_version_number CONSTANT NUMBER := 1.0;
625 l_api_name CONSTANT VARCHAR2(30):= 'Line_Schedule';
626 l_return_status VARCHAR2(1);
627 BEGIN
628
629 -- Standard call to check for call compatibility
630
631 IF NOT FND_API.Compatible_API_Call
632 ( l_api_version_number
633 , p_api_version_number
634 , l_api_name
635 , G_PKG_NAME
636 )
637 THEN
638 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
639 END IF;
640
641 MRP_Flow_Schedule_Util.Line_Schedule (
642 p_rule_id ,
643 p_line_id ,
644 p_org_id ,
645 p_sched_start_date ,
646 p_sched_end_date ,
647 p_update ,
648 2 ,
649 x_return_status ,
650 x_msg_count ,
651 x_msg_data );
652
653 EXCEPTION
654
655 WHEN FND_API.G_EXC_ERROR THEN
656
657 x_return_status := FND_API.G_RET_STS_ERROR;
658
659 -- Get message count and data
660
661 FND_MSG_PUB.Count_And_Get
662 ( p_count => x_msg_count
663 , p_data => x_msg_data
664 );
665
666 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
667
668 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
669
670 -- Get message count and data
671
672 FND_MSG_PUB.Count_And_Get
673 ( p_count => x_msg_count
674 , p_data => x_msg_data
675 );
676
677 WHEN OTHERS THEN
678
679 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
680
681 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
682 THEN
683 FND_MSG_PUB.Add_Exc_Msg
684 ( G_PKG_NAME
685 , 'Line_Schedule'
686 );
687 END IF;
688
689 -- Get message count and data
690
691 FND_MSG_PUB.Count_And_Get
692 ( p_count => x_msg_count
693 , p_data => x_msg_data
694 );
695
696 END Line_Schedule;
697
698 -- Start of Comments
699 -- API name get_first_unit_completion_date
700 -- Type Public
701 -- Function
702 --
703 -- Pre-reqs
704 --
705 -- Parameters
706 --
707 -- Version Current version = 1.0
708 -- Initial version = 1.0
709 --
710 -- Notes
711 --
712 -- End of Comments
713
714 FUNCTION get_first_unit_completion_date
715 ( p_api_version_number IN NUMBER
716 , x_return_status OUT NOCOPY VARCHAR2
717 , x_msg_count OUT NOCOPY NUMBER
718 , x_msg_data OUT NOCOPY VARCHAR2
719 , p_org_id IN NUMBER
720 , p_item_id IN NUMBER
721 , p_qty IN NUMBER
722 , p_line_id IN NUMBER
723 , p_start_date IN DATE
724 ) RETURN DATE
725 IS
726 l_api_version_number CONSTANT NUMBER := 1.0;
727 l_api_name CONSTANT VARCHAR2(30):= 'get_first_unit_completion_date';
728 l_date DATE;
729 l_qty NUMBER := 1;/* Added l_qty for bugfix:7211657 */
730 BEGIN
731
732 -- Standard call to check for call compatibility
733
734 IF NOT FND_API.Compatible_API_Call
735 ( l_api_version_number
736 , p_api_version_number
737 , l_api_name
738 , G_PKG_NAME
739 )
740 THEN
741 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
742 END IF;
743
744 x_return_status := FND_API.G_RET_STS_SUCCESS;
745
746 /* Changed p_qty to l_qty in below call as we need only first unit completion date.Setting for bugfix:7211657 */
747
748 l_date := MRP_LINE_SCHEDULE_ALGORITHM.calculate_completion_time (
749 p_org_id ,
750 p_item_id ,
751 --p_qty ,
752 l_qty,
753 p_line_id ,
754 p_start_date );
755
756 return l_date;
757 EXCEPTION
758
759 WHEN FND_API.G_EXC_ERROR THEN
760
761 x_return_status := FND_API.G_RET_STS_ERROR;
762
763 -- Get message count and data
764
765 FND_MSG_PUB.Count_And_Get
766 ( p_count => x_msg_count
767 , p_data => x_msg_data
768 );
769
770 return NULL;
771
772 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
773
774 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
775
776 -- Get message count and data
777
778 FND_MSG_PUB.Count_And_Get
779 ( p_count => x_msg_count
780 , p_data => x_msg_data
781 );
782
783 return NULL;
784
785 WHEN OTHERS THEN
786
787 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
788
789 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
790 THEN
791 FND_MSG_PUB.Add_Exc_Msg
792 ( G_PKG_NAME
793 , 'get_first_unit_completion_date'
794 );
795 END IF;
796
797 -- Get message count and data
798
799 FND_MSG_PUB.Count_And_Get
800 ( p_count => x_msg_count
801 , p_data => x_msg_data
802 );
803
804 return NULL;
805
806 END get_first_unit_completion_date;
807
808 -- Start of Comments
809 -- API name get_operation_offset_date
810 -- Type Public
811 -- Function
812 --
813 -- Pre-reqs
814 --
815 -- Parameters
816 --
817 -- Version Current version = 1.0
818 -- Initial version = 1.0
819 --
820 -- Notes
821 --
822 -- End of Comments
823 -- This API is a wrapper to feeder_line_comp_date function that is used to find
824 -- the time in which the operation in the network routing start.
825 -- If the p_calculate_option = 0, the API will calculate the operation start time of the last quantity.
826 -- If the p_calculate_option = 1, the API will calculate the operation start time of the 1st quantity.
827
828 FUNCTION get_operation_offset_date
829 (p_api_version_number IN NUMBER,
830 x_return_status OUT NOCOPY VARCHAR2,
831 x_msg_count OUT NOCOPY NUMBER,
832 x_msg_data OUT NOCOPY VARCHAR2,
833 p_org_id IN NUMBER,
834 p_assembly_item_id IN NUMBER,
835 p_routing_sequence_id IN NUMBER,
836 p_operation_sequence_id IN NUMBER,
837 p_assembly_qty IN NUMBER,
838 p_assembly_comp_date IN DATE,
839 p_calculate_option IN NUMBER
840 ) return DATE
841 IS
842 l_op_date DATE;
843 l_line_id NUMBER;
844 l_cnt NUMBER;
845 l_api_version_number CONSTANT NUMBER := 1.0;
846 l_api_name CONSTANT VARCHAR2(30):= 'get_operation_offset_date';
847
848 BEGIN
849 -- Standard call to check for call compatibility
850
851 IF NOT FND_API.Compatible_API_Call
852 ( l_api_version_number
853 , p_api_version_number
854 , l_api_name
855 , G_PKG_NAME
856 )
857 THEN
858 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
859 END IF;
860
861 x_return_status := FND_API.G_RET_STS_SUCCESS;
862
863 SELECT line_id
864 INTO l_line_id
865 FROM BOM_OPERATIONAL_ROUTINGS
866 WHERE ROUTING_SEQUENCE_ID = p_routing_sequence_id
867 AND ASSEMBLY_ITEM_ID = p_assembly_item_id
868 AND ORGANIZATION_ID = p_org_id;
869
870 IF (p_calculate_option NOT IN (0,1)) THEN
871 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
872 FND_MESSAGE.SET_NAME('MRP','MRP_INVALID_BUSINESS_OBJ_VALUE');
873 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','calculate_option');
874 FND_MSG_PUB.Add;
875 END IF;
876 RAISE FND_API.G_EXC_ERROR;
877 END IF;
878
879 SELECT count(*)
880 INTO l_cnt
881 FROM BOM_OPERATION_SEQUENCES
882 WHERE OPERATION_SEQUENCE_ID = p_operation_sequence_id
883 AND ROUTING_SEQUENCE_ID = p_routing_sequence_id;
884 IF (l_cnt = 0) THEN
885 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
886 FND_MESSAGE.SET_NAME('MRP','MRP_INVALID_BUSINESS_OBJ_VALUE');
887 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','operation_sequence_id');
888 FND_MSG_PUB.Add;
889 END IF;
890 RAISE FND_API.G_EXC_ERROR;
891 END IF;
892
893 l_op_date := FLM_CREATE_PRODUCT_SYNCH.feeder_line_comp_date (p_org_id,
894 l_line_id,
895 p_assembly_item_id,
896 p_assembly_comp_date,
897 p_assembly_comp_date,
898 p_operation_sequence_id,
899 p_assembly_qty,
900 p_calculate_option);
901
902 return l_op_date;
903 EXCEPTION
904
905 WHEN FND_API.G_EXC_ERROR THEN
906
907 x_return_status := FND_API.G_RET_STS_ERROR;
908
909 -- Get message count and data
910
911 FND_MSG_PUB.Count_And_Get
912 ( p_count => x_msg_count
913 , p_data => x_msg_data
914 );
915
916 return NULL;
917
918 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
919
920 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
921
922 -- Get message count and data
923
924 FND_MSG_PUB.Count_And_Get
925 ( p_count => x_msg_count
926 , p_data => x_msg_data
927 );
928
929 return NULL;
930
931 WHEN OTHERS THEN
932
933 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
934
935 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
936 THEN
937 FND_MSG_PUB.Add_Exc_Msg
938 ( G_PKG_NAME
939 , 'get_operation_offset_date'
940 );
941 END IF;
942
943 -- Get message count and data
944
945 FND_MSG_PUB.Count_And_Get
946 ( p_count => x_msg_count
947 , p_data => x_msg_data
948 );
949
950 return NULL;
951
952 END get_operation_offset_date;
953
954
955 -- Start of Comments
956 -- API name unlink_order_line
957 -- Type Public
958 -- Procedure
959 --
960 -- Pre-reqs
961 --
962 -- Parameters
963 --
964 -- Version Current version = 1.0
965 -- Initial version = 1.0
966 --
967 -- Notes
968 -- This API removes sales order line reference in the flow
969 -- schedules. It finds flow schedules that has this order line
970 -- as demand, then null the demand fields.
971 -- It is only for sales order.
972 --
973 -- End of Comments
974
975
976 procedure unlink_order_line
977 (
978 p_api_version_number IN NUMBER,
979 x_return_status OUT NOCOPY VARCHAR2,
980 x_msg_count OUT NOCOPY NUMBER,
981 x_msg_data OUT NOCOPY VARCHAR2,
982 p_assembly_item_id IN NUMBER,
983 p_line_id IN NUMBER
984 )
985 IS
986 l_api_version_number CONSTANT NUMBER := 1.0;
987 l_api_name CONSTANT VARCHAR2(30):= 'unlink_order_line';
988
989 l_item_id NUMBER;
990
991 BEGIN
992 -- Standard call to check for call compatibility
993 IF NOT FND_API.Compatible_API_Call
994 ( l_api_version_number
995 , p_api_version_number
996 , l_api_name
997 , G_PKG_NAME
998 )
999 THEN
1000 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1001 END IF;
1002
1003 x_return_status := FND_API.G_RET_STS_SUCCESS;
1004
1005 BEGIN
1006 select inventory_item_id
1007 into l_item_id
1008 from oe_order_lines_all
1009 where line_id = p_line_id;
1010 EXCEPTION WHEN OTHERS THEN
1011 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1012 FND_MESSAGE.SET_NAME('MRP','MRP_INVALID_OE_LINE_ID');
1013 FND_MSG_PUB.Add;
1014 END IF;
1015 RAISE FND_API.G_EXC_ERROR;
1016 END;
1017
1018 if( p_assembly_item_id is null or l_item_id <> p_assembly_item_id ) then
1019 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR) THEN
1020 FND_MESSAGE.SET_NAME('MRP','MRP_ITEM_OE_LINE_ID_NOT_MATCH');
1021 FND_MSG_PUB.Add;
1022 END IF;
1023 RAISE FND_API.G_EXC_ERROR;
1024 end if;
1025
1026 update wip_flow_schedules
1027 set demand_source_header_id = null,
1028 demand_source_line = null,
1029 demand_source_type = null,
1030 demand_source_delivery = null
1031 where demand_source_line = to_char(p_line_id)
1032 and primary_item_id = p_assembly_item_id
1033 and demand_source_type = 2 ;
1034
1035 EXCEPTION
1036
1037 WHEN FND_API.G_EXC_ERROR THEN
1038 x_return_status := FND_API.G_RET_STS_ERROR;
1039 -- Get message count and data
1040 FND_MSG_PUB.Count_And_Get
1041 ( p_count => x_msg_count
1042 , p_data => x_msg_data
1043 );
1044
1045 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1046
1047 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1048 -- Get message count and data
1049 FND_MSG_PUB.Count_And_Get
1050 ( p_count => x_msg_count
1051 , p_data => x_msg_data
1052 );
1053
1054 WHEN OTHERS THEN
1055
1056 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1057 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1058 THEN
1059 FND_MSG_PUB.Add_Exc_Msg
1060 ( G_PKG_NAME
1061 , 'get_operation_offset_date'
1062 );
1063 END IF;
1064
1065 -- Get message count and data
1066 FND_MSG_PUB.Count_And_Get
1067 ( p_count => x_msg_count
1068 , p_data => x_msg_data
1069 );
1070
1071 END unlink_order_line;
1072
1073 END MRP_Flow_Schedule_PUB;