[Home] [Help]
PACKAGE BODY: APPS.MRP_ASSIGNMENT_PVT
Source
1 PACKAGE BODY MRP_Assignment_PVT AS
2 /* $Header: MRPVASNB.pls 120.2 2005/06/24 13:57:28 ichoudhu noship $ */
3
4 -- Global constant holding the package name
5
6 G_PKG_NAME CONSTANT VARCHAR2(30) := 'MRP_Assignment_PVT';
7
8 -- Assignment_Set
9
10 PROCEDURE Assignment_Set
11 ( p_validation_level IN NUMBER
12 , p_control_rec IN MRP_GLOBALS.Control_Rec_Type
13 , p_Assignment_Set_rec IN MRP_Src_Assignment_PUB.Assignment_Set_Rec_Type
14 , p_old_Assignment_Set_rec IN MRP_Src_Assignment_PUB.Assignment_Set_Rec_Type
15 , x_Assignment_Set_rec OUT NOCOPY MRP_Src_Assignment_PUB.Assignment_Set_Rec_Type
16 , x_old_Assignment_Set_rec OUT NOCOPY MRP_Src_Assignment_PUB.Assignment_Set_Rec_Type
17 )
18 IS
19 l_return_status VARCHAR2(1);
20 l_control_rec MRP_GLOBALS.Control_Rec_Type;
21 l_Assignment_Set_rec MRP_Src_Assignment_PUB.Assignment_Set_Rec_Type := p_Assignment_Set_rec;
22 l_old_Assignment_Set_rec MRP_Src_Assignment_PUB.Assignment_Set_Rec_Type := p_old_Assignment_Set_rec;
23
24 l_Assignment_Set_rec_out MRP_Src_Assignment_PUB.Assignment_Set_Rec_Type := p_Assignment_Set_rec;
25 l_old_Assignment_Set_rec_out MRP_Src_Assignment_PUB.Assignment_Set_Rec_Type := p_old_Assignment_Set_rec;
26 BEGIN
27
28 -- Load API control record
29
30 l_control_rec := MRP_GLOBALS.Init_Control_Rec
31 ( p_operation => l_Assignment_Set_rec.operation
32 , p_control_rec => p_control_rec
33 );
34
35 -- Set record return status.
36
37 l_Assignment_Set_rec.return_status := FND_API.G_RET_STS_SUCCESS;
38
39 -- Prepare record.
40
41 IF l_Assignment_Set_rec.operation = MRP_Globals.G_OPR_CREATE THEN
42
43 l_Assignment_Set_rec.db_flag := FND_API.G_FALSE;
44
45 -- Set missing old record elements to NULL.
46
47 l_old_Assignment_Set_rec :=
48 MRP_Assignment_Set_Util.Convert_Miss_To_Null (l_old_Assignment_Set_rec);
49
50 ELSIF l_Assignment_Set_rec.operation = MRP_Globals.G_OPR_UPDATE
51 OR l_Assignment_Set_rec.operation = MRP_Globals.G_OPR_DELETE
52 THEN
53
54 l_Assignment_Set_rec.db_flag := FND_API.G_TRUE;
55
56 -- Query Old if missing
57
58 IF l_old_Assignment_Set_rec.Assignment_Set_Id = FND_API.G_MISS_NUM
59 THEN
60
61 l_old_Assignment_Set_rec := MRP_Assignment_Set_Handlers.Query_Row
62 ( p_Assignment_Set_Id => l_Assignment_Set_rec.Assignment_Set_Id
63 );
64
65 ELSE
66
67 -- Set missing old record elements to NULL.
68
69 l_old_Assignment_Set_rec :=
70 MRP_Assignment_Set_Util.Convert_Miss_To_Null (l_old_Assignment_Set_rec);
71
72 END IF;
73
74 -- Complete new record from old
75
76 l_Assignment_Set_rec := MRP_Assignment_Set_Util.Complete_Record
77 ( p_Assignment_Set_rec => l_Assignment_Set_rec
78 , p_old_Assignment_Set_rec => l_old_Assignment_Set_rec
79 );
80
81 END IF;
82
83 -- Attribute level validation.
84
85 IF l_control_rec.default_attributes
86 OR l_control_rec.change_attributes
87 THEN
88
89 IF p_validation_level > FND_API.G_VALID_LEVEL_NONE THEN
90
91 MRP_Validate_Assignment_Set.Attributes
92 ( x_return_status => l_return_status
93 , p_Assignment_Set_rec => l_Assignment_Set_rec
94 , p_old_Assignment_Set_rec => l_old_Assignment_Set_rec
95 );
96
97 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
98 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
99 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
100 RAISE FND_API.G_EXC_ERROR;
101 END IF;
102
103 END IF;
104
105 END IF;
106
107 -- Clear dependent attributes.
108
109 IF l_control_rec.change_attributes THEN
110
111 MRP_Assignment_Set_Util.Clear_Dependent_Attr
112 ( p_Assignment_Set_rec => l_Assignment_Set_rec
113 , p_old_Assignment_Set_rec => l_old_Assignment_Set_rec
114 , x_Assignment_Set_rec => l_Assignment_Set_rec_out
115 );
116 l_Assignment_Set_rec := l_Assignment_Set_rec_out;
117
118 END IF;
119
120 -- Default missing attributes
121
122 IF l_control_rec.default_attributes
123 OR l_control_rec.change_attributes
124 THEN
125
126 MRP_Default_Assignment_Set.Attributes
127 ( p_Assignment_Set_rec => l_Assignment_Set_rec
128 , x_Assignment_Set_rec => l_Assignment_Set_rec_out
129 );
130 l_Assignment_Set_rec := l_Assignment_Set_rec_out;
131
132 END IF;
133
134 -- Apply attribute changes
135
136 IF l_control_rec.default_attributes
137 OR l_control_rec.change_attributes
138 THEN
139
140 MRP_Assignment_Set_Util.Apply_Attribute_Changes
141 ( p_Assignment_Set_rec => l_Assignment_Set_rec
142 , p_old_Assignment_Set_rec => l_old_Assignment_Set_rec
143 , x_Assignment_Set_rec => l_Assignment_Set_rec_out
144 );
145 l_Assignment_Set_rec := l_Assignment_Set_rec_out;
146
147 END IF;
148
149 -- Entity level validation.
150
151 IF l_control_rec.validate_entity THEN
152
153 IF l_Assignment_Set_rec.operation = MRP_Globals.G_OPR_DELETE THEN
154
155 MRP_Validate_Assignment_Set.Entity_Delete
156 ( x_return_status => l_return_status
157 , p_Assignment_Set_rec => l_Assignment_Set_rec
158 );
159
160 ELSE
161
162 MRP_Validate_Assignment_Set.Entity
163 ( x_return_status => l_return_status
164 , p_Assignment_Set_rec => l_Assignment_Set_rec
165 , p_old_Assignment_Set_rec => l_old_Assignment_Set_rec
166 );
167
168 END IF;
169
170 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
171 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
172 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
173 RAISE FND_API.G_EXC_ERROR;
174 END IF;
175
176 END IF;
177
178 -- Step 4. Write to DB
179
180 IF l_control_rec.write_to_db THEN
181
182 IF l_Assignment_Set_rec.operation = MRP_Globals.G_OPR_DELETE THEN
183
184 MRP_Assignment_Set_Handlers.Delete_Row
185 ( p_Assignment_Set_Id => l_Assignment_Set_rec.Assignment_Set_Id
186 );
187
188 ELSE
189
190 -- Get Who Information
191
192 l_Assignment_Set_rec.last_update_date := SYSDATE;
193 l_Assignment_Set_rec.last_updated_by := FND_GLOBAL.USER_ID;
194 l_Assignment_Set_rec.last_update_login := FND_GLOBAL.LOGIN_ID;
195
196 IF l_Assignment_Set_rec.operation = MRP_Globals.G_OPR_UPDATE THEN
197
198 MRP_Assignment_Set_Handlers.Update_Row (l_Assignment_Set_rec);
199
200 ELSIF l_Assignment_Set_rec.operation = MRP_Globals.G_OPR_CREATE THEN
201
202 l_Assignment_Set_rec.creation_date := SYSDATE;
203 l_Assignment_Set_rec.created_by := FND_GLOBAL.USER_ID;
204
205 MRP_Assignment_Set_Handlers.Insert_Row (l_Assignment_Set_rec);
206
207 END IF;
208
209 END IF;
210
211 END IF;
212
213 -- Load OUT parameters
214
215 x_Assignment_Set_rec := l_Assignment_Set_rec;
216 x_old_Assignment_Set_rec := l_old_Assignment_Set_rec;
217
218 EXCEPTION
219
220 WHEN FND_API.G_EXC_ERROR THEN
221
222 l_Assignment_Set_rec.return_status := FND_API.G_RET_STS_ERROR;
223 x_Assignment_Set_rec := l_Assignment_Set_rec;
224 x_old_Assignment_Set_rec := l_old_Assignment_Set_rec;
225 RAISE;
226
227 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
228
229 l_Assignment_Set_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
230 x_Assignment_Set_rec := l_Assignment_Set_rec;
231 x_old_Assignment_Set_rec := l_old_Assignment_Set_rec;
232
233 RAISE;
234
235 WHEN OTHERS THEN
236
237 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
238 THEN
239 FND_MSG_PUB.Add_Exc_Msg
240 ( G_PKG_NAME
241 , 'Assignment_Set'
242 );
243 END IF;
244
245 l_Assignment_Set_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
246 x_Assignment_Set_rec := l_Assignment_Set_rec;
247 x_old_Assignment_Set_rec := l_old_Assignment_Set_rec;
248
249 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
250
251 END Assignment_Set;
252
253 -- Assignments
254
255 PROCEDURE Assignments
256 ( p_validation_level IN NUMBER
257 , p_control_rec IN MRP_GLOBALS.Control_Rec_Type
258 , p_Assignment_tbl IN MRP_Src_Assignment_PUB.Assignment_Tbl_Type
259 , p_old_Assignment_tbl IN MRP_Src_Assignment_PUB.Assignment_Tbl_Type
260 , x_Assignment_tbl OUT NOCOPY MRP_Src_Assignment_PUB.Assignment_Tbl_Type
261 , x_old_Assignment_tbl OUT NOCOPY MRP_Src_Assignment_PUB.Assignment_Tbl_Type
262 )
263 IS
264 l_return_status VARCHAR2(1);
265 l_control_rec MRP_GLOBALS.Control_Rec_Type;
266 l_Assignment_rec MRP_Src_Assignment_PUB.Assignment_Rec_Type;
267 l_Assignment_rec_out MRP_Src_Assignment_PUB.Assignment_Rec_Type;
268 l_Assignment_tbl MRP_Src_Assignment_PUB.Assignment_Tbl_Type;
269 l_old_Assignment_rec MRP_Src_Assignment_PUB.Assignment_Rec_Type;
270 l_old_Assignment_tbl MRP_Src_Assignment_PUB.Assignment_Tbl_Type;
271 BEGIN
272
273 -- Init local table variables.
274
275 l_Assignment_tbl := p_Assignment_tbl;
276 l_old_Assignment_tbl := p_old_Assignment_tbl;
277
278 FOR I IN 1..l_Assignment_tbl.COUNT LOOP
279 BEGIN
280
281 -- Load local records.
282
283 l_Assignment_rec := l_Assignment_tbl(I);
284
285 IF l_old_Assignment_tbl.EXISTS(I) THEN
286 l_old_Assignment_rec := l_old_Assignment_tbl(I);
287 ELSE
288 l_old_Assignment_rec := MRP_Src_Assignment_PUB.G_MISS_ASSIGNMENT_REC;
289 END IF;
290
291 -- Load API control record
292
293 l_control_rec := MRP_GLOBALS.Init_Control_Rec
294 ( p_operation => l_Assignment_rec.operation
295 , p_control_rec => p_control_rec
296 );
297
298 -- Set record return status.
299
300 l_Assignment_rec.return_status := FND_API.G_RET_STS_SUCCESS;
301
302 -- Prepare record.
303
304 IF l_Assignment_rec.operation = MRP_Globals.G_OPR_CREATE THEN
305
306 l_Assignment_rec.db_flag := FND_API.G_FALSE;
307
308 -- Set missing old record elements to NULL.
309
310 l_old_Assignment_rec :=
311 MRP_Assignment_Util.Convert_Miss_To_Null (l_old_Assignment_rec);
312
313 ELSIF l_Assignment_rec.operation = MRP_Globals.G_OPR_UPDATE
314 OR l_Assignment_rec.operation = MRP_Globals.G_OPR_DELETE
315 THEN
316
317 l_Assignment_rec.db_flag := FND_API.G_TRUE;
318
319 -- Query Old if missing
320
321 IF l_old_Assignment_rec.Assignment_Id = FND_API.G_MISS_NUM
322 THEN
323
324 l_old_Assignment_rec := MRP_Assignment_Handlers.Query_Row
325 ( p_Assignment_Id => l_Assignment_rec.Assignment_Id
326 );
327
328 ELSE
329
330 -- Set missing old record elements to NULL.
331
332 l_old_Assignment_rec :=
333 MRP_Assignment_Util.Convert_Miss_To_Null (l_old_Assignment_rec);
334
335 END IF;
336
337 -- Complete new record from old
338
339 l_Assignment_rec := MRP_Assignment_Util.Complete_Record
340 ( p_Assignment_rec => l_Assignment_rec
341 , p_old_Assignment_rec => l_old_Assignment_rec
342 );
343
344 END IF;
345
346 -- Attribute level validation.
347
348 IF l_control_rec.default_attributes
349 OR l_control_rec.change_attributes
350 THEN
351
352 IF p_validation_level > FND_API.G_VALID_LEVEL_NONE THEN
353
354 MRP_Validate_Assignment.Attributes
355 ( x_return_status => l_return_status
356 , p_Assignment_rec => l_Assignment_rec
357 , p_old_Assignment_rec => l_old_Assignment_rec
358 );
359
360 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
361 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
362 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
363 RAISE FND_API.G_EXC_ERROR;
364 END IF;
365
366 END IF;
367
368 END IF;
369
370 -- Clear dependent attributes.
371
372 IF l_control_rec.change_attributes THEN
373
374 MRP_Assignment_Util.Clear_Dependent_Attr
375 ( p_Assignment_rec => l_Assignment_rec
376 , p_old_Assignment_rec => l_old_Assignment_rec
377 , x_Assignment_rec => l_Assignment_rec_out
378 );
379 l_Assignment_rec := l_Assignment_rec_out;
380
381 END IF;
382
383 -- Default missing attributes
384
385 IF l_control_rec.default_attributes
386 OR l_control_rec.change_attributes
387 THEN
388
389 MRP_Default_Assignment.Attributes
390 ( p_Assignment_rec => l_Assignment_rec
391 , x_Assignment_rec => l_Assignment_rec_out
392 );
393 l_Assignment_rec := l_Assignment_rec_out;
394
395 END IF;
396
397 -- Apply attribute changes
398
399 IF l_control_rec.default_attributes
400 OR l_control_rec.change_attributes
401 THEN
402
403 MRP_Assignment_Util.Apply_Attribute_Changes
404 ( p_Assignment_rec => l_Assignment_rec
405 , p_old_Assignment_rec => l_old_Assignment_rec
406 , x_Assignment_rec => l_Assignment_rec_out
407 );
408 l_Assignment_rec := l_Assignment_rec_out;
409
410 END IF;
411
412 -- Entity level validation.
413
414 IF l_control_rec.validate_entity THEN
415
416 IF l_Assignment_rec.operation = MRP_Globals.G_OPR_DELETE THEN
417
418 MRP_Validate_Assignment.Entity_Delete
419 ( x_return_status => l_return_status
420 , p_Assignment_rec => l_Assignment_rec
421 );
422
423 ELSE
424
425 MRP_Validate_Assignment.Entity
426 ( x_return_status => l_return_status
427 , p_Assignment_rec => l_Assignment_rec
428 , p_old_Assignment_rec => l_old_Assignment_rec
429 );
430
431 END IF;
432
433 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
434 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
435 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
436 RAISE FND_API.G_EXC_ERROR;
437 END IF;
438
439 END IF;
440
441 -- Step 4. Write to DB
442
443 IF l_control_rec.write_to_db THEN
444
445 IF l_Assignment_rec.operation = MRP_Globals.G_OPR_DELETE THEN
446
447 MRP_Assignment_Handlers.Delete_Row
448 ( p_Assignment_Id => l_Assignment_rec.Assignment_Id
449 );
450
451 ELSE
452
453 -- Get Who Information
454
455 l_Assignment_rec.last_update_date := SYSDATE;
456 l_Assignment_rec.last_updated_by := FND_GLOBAL.USER_ID;
457 l_Assignment_rec.last_update_login := FND_GLOBAL.LOGIN_ID;
458
459 IF l_Assignment_rec.operation = MRP_Globals.G_OPR_UPDATE THEN
460
461 MRP_Assignment_Handlers.Update_Row (l_Assignment_rec);
462
463 ELSIF l_Assignment_rec.operation = MRP_Globals.G_OPR_CREATE THEN
464
465 l_Assignment_rec.creation_date := SYSDATE;
466 l_Assignment_rec.created_by := FND_GLOBAL.USER_ID;
467
468 MRP_Assignment_Handlers.Insert_Row (l_Assignment_rec);
469
470 END IF;
471
472 END IF;
473
474 END IF;
475
476 -- Load tables.
477
478 l_Assignment_tbl(I) := l_Assignment_rec;
479 l_old_Assignment_tbl(I) := l_old_Assignment_rec;
480
481 -- For loop exception handler.
482
483
484 EXCEPTION
485
486 WHEN FND_API.G_EXC_ERROR THEN
487
488 l_Assignment_rec.return_status := FND_API.G_RET_STS_ERROR;
489 l_Assignment_tbl(I) := l_Assignment_rec;
490 l_old_Assignment_tbl(I) := l_old_Assignment_rec;
491
492 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
493
494 l_Assignment_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
495 l_Assignment_tbl(I) := l_Assignment_rec;
496 l_old_Assignment_tbl(I) := l_old_Assignment_rec;
497 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
498
499 WHEN OTHERS THEN
500
501 l_Assignment_rec.return_status := FND_API.G_RET_STS_UNEXP_ERROR;
502 l_Assignment_tbl(I) := l_Assignment_rec;
503 l_old_Assignment_tbl(I) := l_old_Assignment_rec;
504
505 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
506 THEN
507 FND_MSG_PUB.Add_Exc_Msg
508 ( G_PKG_NAME
509 , 'Assignments'
510 );
511 END IF;
512
513 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
514
515 END;
516 END LOOP;
517
518 -- Load OUT parameters
519
520 x_Assignment_tbl := l_Assignment_tbl;
521 x_old_Assignment_tbl := l_old_Assignment_tbl;
522
523 EXCEPTION
524
525 WHEN FND_API.G_EXC_ERROR THEN
526
527 RAISE;
528
529 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
530
531
532 RAISE;
533
534 WHEN OTHERS THEN
535
536 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
537 THEN
538 FND_MSG_PUB.Add_Exc_Msg
539 ( G_PKG_NAME
540 , 'Assignments'
541 );
542 END IF;
543
544
545 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
546
547 END Assignments;
548
549 -- Start of Comments
550 -- API name Process_Assignment
551 -- Type Private
552 -- Function
553 --
554 -- Pre-reqs
555 --
556 -- Parameters
557 --
558 -- Version Current version = 1.0
559 -- Initial version = 1.0
560 --
561 -- Notes
562 --
563 -- End of Comments
564
565 PROCEDURE Process_Assignment
566 ( p_api_version_number IN NUMBER
567 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
568 , p_commit IN VARCHAR2 := FND_API.G_FALSE
569 , p_validation_level IN NUMBER := FND_API.G_VALID_LEVEL_FULL
570 , p_control_rec IN MRP_GLOBALS.Control_Rec_Type :=
571 MRP_GLOBALS.G_MISS_CONTROL_REC
572 , x_return_status OUT NOCOPY VARCHAR2
573 , x_msg_count OUT NOCOPY NUMBER
574 , x_msg_data OUT NOCOPY VARCHAR2
575 , p_Assignment_Set_rec IN MRP_Src_Assignment_PUB.Assignment_Set_Rec_Type :=
576 MRP_Src_Assignment_PUB.G_MISS_ASSIGNMENT_SET_REC
577 , p_old_Assignment_Set_rec IN MRP_Src_Assignment_PUB.Assignment_Set_Rec_Type :=
578 MRP_Src_Assignment_PUB.G_MISS_ASSIGNMENT_SET_REC
579 , p_Assignment_tbl IN MRP_Src_Assignment_PUB.Assignment_Tbl_Type :=
580 MRP_Src_Assignment_PUB.G_MISS_ASSIGNMENT_TBL
581 , p_old_Assignment_tbl IN MRP_Src_Assignment_PUB.Assignment_Tbl_Type :=
582 MRP_Src_Assignment_PUB.G_MISS_ASSIGNMENT_TBL
583 , x_Assignment_Set_rec OUT NOCOPY MRP_Src_Assignment_PUB.Assignment_Set_Rec_Type
584 , x_Assignment_tbl OUT NOCOPY MRP_Src_Assignment_PUB.Assignment_Tbl_Type
585 )
586 IS
587 l_api_version_number CONSTANT NUMBER := 1.0;
588 l_api_name CONSTANT VARCHAR2(30):= 'Process_Assignment';
589 l_return_status VARCHAR2(1);
590 l_control_rec MRP_GLOBALS.Control_Rec_Type;
591 l_Assignment_Set_rec MRP_Src_Assignment_PUB.Assignment_Set_Rec_Type := p_Assignment_Set_rec;
592 l_old_Assignment_Set_rec MRP_Src_Assignment_PUB.Assignment_Set_Rec_Type := p_old_Assignment_Set_rec;
593 l_Assignment_rec MRP_Src_Assignment_PUB.Assignment_Rec_Type;
594 l_Assignment_tbl MRP_Src_Assignment_PUB.Assignment_Tbl_Type;
595 l_old_Assignment_rec MRP_Src_Assignment_PUB.Assignment_Rec_Type;
596 l_old_Assignment_tbl MRP_Src_Assignment_PUB.Assignment_Tbl_Type;
597 l_old_Assignment_tbl_out MRP_Src_Assignment_PUB.Assignment_Tbl_Type;
598
599 l_Assignment_Set_rec_out MRP_Src_Assignment_PUB.Assignment_Set_Rec_Type := p_Assignment_Set_rec;
600 l_old_Assignment_Set_rec_out MRP_Src_Assignment_PUB.Assignment_Set_Rec_Type := p_old_Assignment_Set_rec;
601 l_Assignment_rec_out MRP_Src_Assignment_PUB.Assignment_Rec_Type;
602 l_Assignment_tbl_out MRP_Src_Assignment_PUB.Assignment_Tbl_Type;
603
604 l_src_rule_org_id NUMBER;
605 l_category_set_id NUMBER;
606 l_organization_id NUMBER := FND_API.G_MISS_NUM;
607
608 BEGIN
609
610 -- Standard call to check for call compatibility
611
612 IF NOT FND_API.Compatible_API_Call
613 ( l_api_version_number
614 , p_api_version_number
615 , l_api_name
616 , G_PKG_NAME
617 )
618 THEN
619 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
620 END IF;
621
622 -- Set Save point.
623 SAVEPOINT Process_Assignment_PVT;
624
625 -- Initialize message list.
626
627 IF FND_API.to_Boolean(p_init_msg_list) THEN
628 FND_MSG_PUB.initialize;
629 END IF;
630
631 -- Init local table variables.
632
633 l_Assignment_tbl := p_Assignment_tbl;
634 l_old_Assignment_tbl := p_old_Assignment_tbl;
635
636 -- Assignment_Set
637
638 Assignment_Set
639 ( p_validation_level => p_validation_level
640 , p_control_rec => p_control_rec
641 , p_Assignment_Set_rec => l_Assignment_Set_rec
642 , p_old_Assignment_Set_rec => l_old_Assignment_Set_rec
643 , x_Assignment_Set_rec => l_Assignment_Set_rec_out
644 , x_old_Assignment_Set_rec => l_old_Assignment_Set_rec_out
645 );
646 l_Assignment_Set_rec := l_Assignment_Set_rec_out;
647 l_old_Assignment_Set_rec := l_old_Assignment_Set_rec_out;
648
649 -- Perform Assignment_Set group requests.
650
651 IF p_control_rec.process AND
652 (p_control_rec.process_entity = MRP_GLOBALS.G_ENTITY_ALL OR
653 p_control_rec.process_entity = MRP_GLOBALS.G_ENTITY_ASSIGNMENT_SET)
654 THEN
655
656 NULL;
657
658 END IF;
659
660 -- Load parent key if missing and operation is create.
661
662 FOR I IN 1..l_Assignment_tbl.COUNT LOOP
663
664 l_Assignment_rec := l_Assignment_tbl(I);
665
666 IF l_Assignment_rec.operation = MRP_Globals.G_OPR_CREATE
667 AND (l_Assignment_rec.Assignment_Set_Id IS NULL OR
668 l_Assignment_rec.Assignment_Set_Id = FND_API.G_MISS_NUM)
669 THEN
670
671 -- Copy parent_id.
672
673 l_Assignment_tbl(I).Assignment_Set_Id := l_Assignment_Set_rec.Assignment_Set_Id;
674 END IF;
675 END LOOP;
676
677 -- Assignments
678
679 Assignments
680 ( p_validation_level => p_validation_level
681 , p_control_rec => p_control_rec
682 , p_Assignment_tbl => l_Assignment_tbl
683 , p_old_Assignment_tbl => l_old_Assignment_tbl
684 , x_Assignment_tbl => l_Assignment_tbl_out
685 , x_old_Assignment_tbl => l_old_Assignment_tbl_out
686 );
687 l_Assignment_tbl := l_Assignment_tbl_out;
688 l_old_Assignment_tbl := l_old_Assignment_tbl_out;
689
690 -- Perform Assignment group requests.
691
692 IF p_control_rec.process AND
693 (p_control_rec.process_entity = MRP_GLOBALS.G_ENTITY_ALL OR
694 p_control_rec.process_entity = MRP_GLOBALS.G_ENTITY_ASSIGNMENT)
695 THEN
696
697 FOR I IN 1..l_Assignment_tbl.COUNT LOOP
698
699 l_Assignment_rec := l_Assignment_tbl(I);
700
701 BEGIN
702 SELECT organization_id
703 INTO l_src_rule_org_id
704 FROM MRP_SOURCING_RULES
705 WHERE sourcing_rule_id = l_Assignment_rec.sourcing_rule_id;
706 EXCEPTION
707 WHEN NO_DATA_FOUND THEN
708 NULL;
709 END;
710
711 IF (l_Assignment_rec.assignment_type = 1 OR
712 l_Assignment_rec.assignment_type = 2 OR
713 l_Assignment_rec.assignment_type = 3) AND
714 (l_src_rule_org_id <> NULL AND
715 l_Assignment_rec.Sourcing_Rule_Type <> 2) THEN
716 FND_MESSAGE.SET_NAME('MRP','MRP_ATTRIBUTE_VALUE_ERROR');
717 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Sourcing_Rule_Type');
718 FND_MESSAGE.SET_TOKEN('DETAILS',
719 'Cannot use local Sourcing Rule for this assignment');
720 FND_MSG_PUB.Add;
721 l_Assignment_tbl(I).return_status := FND_API.G_RET_STS_ERROR;
722 END IF;
723
724 IF (l_Assignment_rec.assignment_type = 4 OR
725 l_Assignment_rec.assignment_type = 5 OR
726 l_Assignment_rec.assignment_type = 6) AND
727 l_Assignment_rec.Sourcing_Rule_Type = 2 THEN
728 FND_MESSAGE.SET_NAME('MRP','MRP_ATTRIBUTE_VALUE_ERROR');
729 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Sourcing_Rule_Type');
730 FND_MESSAGE.SET_TOKEN('DETAILS',
731 'Cannot use a Bill of Distribution for this assignment');
732 FND_MSG_PUB.Add;
733 l_Assignment_tbl(I).return_status := FND_API.G_RET_STS_ERROR;
734 END IF;
735
736 l_category_set_id := FND_PROFILE.value('MRP_SRA_CATEGORY_SET');
737
738 IF l_category_set_id is NULL AND
739 l_Assignment_rec.category_id IS NOT NULL THEN
740 FND_MESSAGE.SET_NAME('MRP','MRP_ATTRIBUTE_VALUE_ERROR');
741 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','Category_Set_Id');
742 FND_MESSAGE.SET_TOKEN('DETAILS',
743 'Category_Set_Id cannot be NULL');
744 FND_MSG_PUB.Add;
745 l_Assignment_tbl(I).return_status := FND_API.G_RET_STS_ERROR;
746 END IF;
747
748 -- if Customer and Ship to site are passed in and there is
749 -- an organization modelled as this Customer at this site,
750 -- populate the source_organization_id
751
752 l_organization_id := FND_API.G_MISS_NUM;
753 BEGIN
754 SELECT organization_id
755 INTO l_organization_id
756 FROM mrp_cust_sup_org_v
757 WHERE Customer_Id = to_char(l_Assignment_rec.Customer_Id)
758 AND Ship_To_Site_Id = to_char(l_Assignment_rec.Ship_To_Site_Id);
759
760 IF l_organization_id IS NOT NULL AND
761 l_organization_id <> FND_API.G_MISS_NUM THEN
762 UPDATE mrp_sr_assignments
763 SET organization_id = l_organization_id
764 WHERE assignment_id = l_Assignment_rec.assignment_id;
765
766 END IF;
767 EXCEPTION
768 WHEN NO_DATA_FOUND THEN
769 NULL;
770 END;
771
772 END LOOP;
773
774 END IF;
775
776 -- Step 6. Perform Object group logic
777
778 IF p_control_rec.process AND
779 p_control_rec.process_entity = MRP_GLOBALS.G_ENTITY_ALL
780 THEN
781
782 NULL;
783
784 END IF;
785
786 -- Done processing, load OUT parameters.
787
788 x_Assignment_Set_rec := l_Assignment_Set_rec;
789 x_Assignment_tbl := l_Assignment_tbl;
790
791 -- Clear API cache.
792
793 IF p_control_rec.clear_api_cache THEN
794
795 NULL;
796
797 END IF;
798
799 -- Clear API request tbl.
800
801 IF p_control_rec.clear_api_requests THEN
802
803 NULL;
804
805 END IF;
806
807 -- Derive return status.
808
809 x_return_status := FND_API.G_RET_STS_SUCCESS;
810
811 IF l_Assignment_Set_rec.return_status = FND_API.G_RET_STS_ERROR THEN
812 ROLLBACK TO Process_Assignment_PVT;
813 x_return_status := FND_API.G_RET_STS_ERROR;
814 END IF;
815
816 FOR I IN 1..l_Assignment_tbl.COUNT LOOP
817
818 IF l_Assignment_tbl(I).return_status = FND_API.G_RET_STS_ERROR THEN
819 ROLLBACK TO Process_Assignment_PVT;
820 x_return_status := FND_API.G_RET_STS_ERROR;
821 END IF;
822
823 END LOOP;
824
825 -- Get message count and data
826
827 FND_MSG_PUB.Count_And_Get
828 ( p_count => x_msg_count
829 , p_data => x_msg_data
830 );
831
832
833 EXCEPTION
834
835 WHEN FND_API.G_EXC_ERROR THEN
836
837 x_return_status := FND_API.G_RET_STS_ERROR;
838
839 -- Get message count and data
840
841 FND_MSG_PUB.Count_And_Get
842 ( p_count => x_msg_count
843 , p_data => x_msg_data
844 );
845
846 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
847
848 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
849
850 -- Get message count and data
851
852 FND_MSG_PUB.Count_And_Get
853 ( p_count => x_msg_count
854 , p_data => x_msg_data
855 );
856
857 WHEN OTHERS THEN
858
859 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
860
861 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
862 THEN
863 FND_MSG_PUB.Add_Exc_Msg
864 ( G_PKG_NAME
865 , 'Process_Assignment'
866 );
867 END IF;
868
869 -- Get message count and data
870
871 FND_MSG_PUB.Count_And_Get
872 ( p_count => x_msg_count
873 , p_data => x_msg_data
874 );
875
876 END Process_Assignment;
877
878 -- Start of Comments
879 -- API name Lock_Assignment
880 -- Type Private
881 -- Function
882 --
883 -- Pre-reqs
884 --
885 -- Parameters
886 --
887 -- Version Current version = 1.0
888 -- Initial version = 1.0
889 --
890 -- Notes
891 --
892 -- End of Comments
893
894 PROCEDURE Lock_Assignment
895 ( p_api_version_number IN NUMBER
896 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
897 , x_return_status OUT NOCOPY VARCHAR2
898 , x_msg_count OUT NOCOPY NUMBER
899 , x_msg_data OUT NOCOPY VARCHAR2
900 , p_Assignment_Set_rec IN MRP_Src_Assignment_PUB.Assignment_Set_Rec_Type :=
901 MRP_Src_Assignment_PUB.G_MISS_ASSIGNMENT_SET_REC
902 , p_Assignment_tbl IN MRP_Src_Assignment_PUB.Assignment_Tbl_Type :=
903 MRP_Src_Assignment_PUB.G_MISS_ASSIGNMENT_TBL
904 , x_Assignment_Set_rec OUT NOCOPY MRP_Src_Assignment_PUB.Assignment_Set_Rec_Type
905 , x_Assignment_tbl OUT NOCOPY MRP_Src_Assignment_PUB.Assignment_Tbl_Type
906 )
907 IS
908 l_api_version_number CONSTANT NUMBER := 1.0;
909 l_api_name CONSTANT VARCHAR2(30):= 'Lock_Assignment';
910 l_return_status VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
911 l_Assignment_rec MRP_Src_Assignment_PUB.Assignment_Rec_Type;
912 BEGIN
913
914 -- Standard call to check for call compatibility
915
916 IF NOT FND_API.Compatible_API_Call
917 ( l_api_version_number
918 , p_api_version_number
919 , l_api_name
920 , G_PKG_NAME
921 )
922 THEN
923 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
924 END IF;
925
926 -- Initialize message list.
927
928 IF FND_API.to_Boolean(p_init_msg_list) THEN
929 FND_MSG_PUB.initialize;
930 END IF;
931
932 -- Set Savepoint
933
934 SAVEPOINT Lock_Assignment_PVT;
935
936 -- Lock Assignment_Set
937
938 IF p_Assignment_Set_rec.operation = MRP_Globals.G_OPR_LOCK THEN
939
940 MRP_Assignment_Set_Handlers.Lock_Row
941 ( p_Assignment_Set_rec => p_Assignment_Set_rec
942 , x_Assignment_Set_rec => x_Assignment_Set_rec
943 , x_return_status => l_return_status
944 );
945
946 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
947 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
948 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
949 RAISE FND_API.G_EXC_ERROR;
950 END IF;
951
952
953 END IF;
954
955 -- Lock Assignment
956
957 FOR I IN 1..p_Assignment_tbl.COUNT LOOP
958
959 IF p_Assignment_tbl(I).operation = MRP_Globals.G_OPR_LOCK THEN
960
961 MRP_Assignment_Handlers.Lock_Row
962 ( p_Assignment_rec => p_Assignment_tbl(I)
963 , x_Assignment_rec => l_Assignment_rec
964 , x_return_status => l_return_status
965 );
966
967 IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
968 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
969 ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
970 RAISE FND_API.G_EXC_ERROR;
971 END IF;
972
973 x_Assignment_tbl(I) := l_Assignment_rec;
974
975 END IF;
976
977 END LOOP;
978
979 -- Set return status
980
981 x_return_status := FND_API.G_RET_STS_SUCCESS;
982
983 -- Get message count and data
984
985 FND_MSG_PUB.Count_And_Get
986 ( p_count => x_msg_count
987 , p_data => x_msg_data
988 );
989
990
991 EXCEPTION
992
993 WHEN FND_API.G_EXC_ERROR THEN
994
995 x_return_status := FND_API.G_RET_STS_ERROR;
996
997 -- Get message count and data
998
999 FND_MSG_PUB.Count_And_Get
1000 ( p_count => x_msg_count
1001 , p_data => x_msg_data
1002 );
1003
1004 -- Rollback
1005
1006 ROLLBACK TO Lock_Assignment_PVT;
1007
1008 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1009
1010 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1011
1012 -- Get message count and data
1013
1014 FND_MSG_PUB.Count_And_Get
1015 ( p_count => x_msg_count
1016 , p_data => x_msg_data
1017 );
1018
1019 -- Rollback
1020
1021 ROLLBACK TO Lock_Assignment_PVT;
1022
1023 WHEN OTHERS THEN
1024
1025 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1026
1027 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1028 THEN
1029 FND_MSG_PUB.Add_Exc_Msg
1030 ( G_PKG_NAME
1031 , 'Lock_Assignment'
1032 );
1033 END IF;
1034
1035 -- Get message count and data
1036
1037 FND_MSG_PUB.Count_And_Get
1038 ( p_count => x_msg_count
1039 , p_data => x_msg_data
1040 );
1041
1042 -- Rollback
1043
1044 ROLLBACK TO Lock_Assignment_PVT;
1045
1046 END Lock_Assignment;
1047
1048 -- Start of Comments
1049 -- API name Get_Assignment
1050 -- Type Private
1051 -- Function
1052 --
1053 -- Pre-reqs
1054 --
1055 -- Parameters
1056 --
1057 -- Version Current version = 1.0
1058 -- Initial version = 1.0
1059 --
1060 -- Notes
1061 --
1062 -- End of Comments
1063
1064 PROCEDURE Get_Assignment
1065 ( p_api_version_number IN NUMBER
1066 , p_init_msg_list IN VARCHAR2 := FND_API.G_FALSE
1067 , x_return_status OUT NOCOPY VARCHAR2
1068 , x_msg_count OUT NOCOPY NUMBER
1069 , x_msg_data OUT NOCOPY VARCHAR2
1070 , p_Assignment_Set_Id IN NUMBER
1071 , x_Assignment_Set_rec OUT NOCOPY MRP_Src_Assignment_PUB.Assignment_Set_Rec_Type
1072 , x_Assignment_tbl OUT NOCOPY MRP_Src_Assignment_PUB.Assignment_Tbl_Type
1073 )
1074 IS
1075 l_api_version_number CONSTANT NUMBER := 1.0;
1076 l_api_name CONSTANT VARCHAR2(30):= 'Get_Assignment';
1077 l_Assignment_Set_rec MRP_Src_Assignment_PUB.Assignment_Set_Rec_Type;
1078 l_Assignment_tbl MRP_Src_Assignment_PUB.Assignment_Tbl_Type;
1079 BEGIN
1080
1081 -- Standard call to check for call compatibility
1082
1083 IF NOT FND_API.Compatible_API_Call
1084 ( l_api_version_number
1085 , p_api_version_number
1086 , l_api_name
1087 , G_PKG_NAME
1088 )
1089 THEN
1090 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1091 END IF;
1092
1093 -- Initialize message list.
1094
1095 IF FND_API.to_Boolean(p_init_msg_list) THEN
1096 FND_MSG_PUB.initialize;
1097 END IF;
1098
1099 -- Get Assignment_Set
1100
1101 l_Assignment_Set_rec := MRP_Assignment_Set_Handlers.Query_Row
1102 ( p_Assignment_Set_Id => p_Assignment_Set_Id
1103 );
1104
1105 -- Get Assignment ( parent = Assignment_Set )
1106
1107 l_Assignment_tbl := MRP_Assignment_Handlers.Query_Rows
1108 ( p_Assignment_Set_Id => l_Assignment_Set_rec.Assignment_Set_Id
1109 );
1110
1111
1112 -- Load out parameters
1113
1114 x_Assignment_Set_rec := l_Assignment_Set_rec;
1115 x_Assignment_tbl := l_Assignment_tbl;
1116
1117 -- Set return status
1118
1119 x_return_status := FND_API.G_RET_STS_SUCCESS;
1120
1121 -- Get message count and data
1122
1123 FND_MSG_PUB.Count_And_Get
1124 ( p_count => x_msg_count
1125 , p_data => x_msg_data
1126 );
1127
1128
1129 EXCEPTION
1130
1131 WHEN FND_API.G_EXC_ERROR THEN
1132
1133 x_return_status := FND_API.G_RET_STS_ERROR;
1134
1135 -- Get message count and data
1136
1137 FND_MSG_PUB.Count_And_Get
1138 ( p_count => x_msg_count
1139 , p_data => x_msg_data
1140 );
1141
1142 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1143
1144 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1145
1146 -- Get message count and data
1147
1148 FND_MSG_PUB.Count_And_Get
1149 ( p_count => x_msg_count
1150 , p_data => x_msg_data
1151 );
1152
1153 WHEN OTHERS THEN
1154
1155 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1156
1157 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1158 THEN
1159 FND_MSG_PUB.Add_Exc_Msg
1160 ( G_PKG_NAME
1161 , 'Get_Assignment'
1162 );
1163 END IF;
1164
1165 -- Get message count and data
1166
1167 FND_MSG_PUB.Count_And_Get
1168 ( p_count => x_msg_count
1169 , p_data => x_msg_data
1170 );
1171
1172 END Get_Assignment;
1173
1174 END MRP_Assignment_PVT;