1 PACKAGE BODY MRP_Default_Flow_Schedule AS
2 /* $Header: MRPDSCNB.pls 120.1 2005/08/30 15:49:51 yulin noship $ */
3
4 -- Global constant holding the package name
5
6 G_PKG_NAME CONSTANT VARCHAR2(30) := 'MRP_Default_Flow_Schedule';
7
8 -- Package global used within the package.
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 g_flow_schedule_rec MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
16
17 -- Get functions.
18
19 FUNCTION Get_Alternate_Bom_Designator
20 RETURN VARCHAR2
21 IS
22 BEGIN
23
24 RETURN NULL;
25
26 END Get_Alternate_Bom_Designator;
27
28 FUNCTION Get_Alternate_Routing_Desig
29 RETURN VARCHAR2
30 IS
31
32 CURSOR C1(p_item_id IN NUMBER,
33 p_org_id IN NUMBER,
34 p_line_id IN NUMBER) IS
35 SELECT alternate_routing_designator
36 FROM bom_operational_routings
37 WHERE line_id = p_line_id
38 AND assembly_item_id = p_item_id
39 AND organization_id = p_org_id
40 AND cfm_routing_flag = 1
41 ORDER BY alternate_routing_designator desc;
42
43 l_alt_rtg_desig VARCHAR2(10);
44
45 BEGIN
46
47 IF g_flow_schedule_rec.primary_item_id IS NOT NULL AND
48 g_flow_schedule_rec.primary_item_id <> FND_API.G_MISS_NUM AND
49 g_flow_schedule_rec.organization_id IS NOT NULL AND
50 g_flow_schedule_rec.organization_id <> FND_API.G_MISS_NUM AND
51 g_flow_schedule_rec.line_id IS NOT NULL AND
52 g_flow_schedule_rec.line_id <> FND_API.G_MISS_NUM
53 THEN
54
55 OPEN C1(g_flow_schedule_rec.primary_item_id,
56 g_flow_schedule_rec.organization_id,
57 g_flow_schedule_rec.line_id);
58 LOOP
59 FETCH C1 into l_alt_rtg_desig;
60 /* We just want one row so exit */
61 EXIT;
62 END LOOP;
63 CLOSE C1;
64
65 RETURN l_alt_rtg_desig;
66
67 ELSE
68
69 RETURN NULL;
70
71 END IF;
72
73 EXCEPTION
74
75 WHEN NO_DATA_FOUND THEN
76
77 RETURN NULL;
78
79 WHEN OTHERS THEN
80
81 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
82 THEN
83 FND_MSG_PUB.Add_Exc_Msg
84 ( G_PKG_NAME,
85 'Get_Alternate_Routing_Desig'
86 );
87 END IF;
88
89 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
90
91 END Get_Alternate_Routing_Desig;
92
93 FUNCTION Get_Bom_Revision
94 RETURN VARCHAR2
95 IS
96 l_bom_revision VARCHAR(3) := NULL;
97 l_revision VARCHAR(3) := NULL;
98 l_error_number NUMBER := 1;
99 l_revision_date DATE := NULL;
100 BEGIN
101
102 IF g_flow_schedule_rec.primary_item_id IS NOT NULL AND
103 g_flow_schedule_rec.primary_item_id <> FND_API.G_MISS_NUM AND
104 g_flow_schedule_rec.organization_id IS NOT NULL AND
105 g_flow_schedule_rec.organization_id <> FND_API.G_MISS_NUM AND
106 g_flow_schedule_rec.scheduled_completion_date IS NOT NULL AND
107 g_flow_schedule_rec.scheduled_completion_date <> FND_API.G_MISS_DATE
108 THEN
109
110 IF g_flow_schedule_rec.bom_revision_date = FND_API.G_MISS_DATE THEN
111 l_revision_date := NULL;
112 ELSE
113 l_revision_date := g_flow_schedule_rec.bom_revision_date;
114 END IF;
115
116 l_error_number := WIP_FLOW_DERIVE.Bom_Revision(
117 l_bom_revision,
118 l_revision,
119 l_revision_date,
120 g_flow_schedule_rec.primary_item_id,
121 g_flow_schedule_rec.scheduled_completion_date,
122 g_flow_schedule_rec.organization_id
123 );
124
125 IF l_error_number = 1 THEN
126
127 RETURN l_bom_revision;
128
129 ELSE
130
131 -- If we couldn't retrieve the BOM, we don't care because
132 -- it is not a required field so we just return null.
133 RETURN NULL;
134
135 END IF;
136
137 ELSE
138
139 RETURN NULL;
140
141 END IF;
142
143 END Get_Bom_Revision;
144
145 FUNCTION Get_Bom_Revision_Date
146 RETURN DATE
147 IS
148 l_bom_revision VARCHAR(3) := NULL;
149 l_revision VARCHAR(3) := NULL;
150 l_error_number NUMBER := 1;
151 l_revision_date DATE := NULL;
152 BEGIN
153
154 IF g_flow_schedule_rec.primary_item_id IS NOT NULL AND
155 g_flow_schedule_rec.primary_item_id <> FND_API.G_MISS_NUM AND
156 g_flow_schedule_rec.organization_id IS NOT NULL AND
157 g_flow_schedule_rec.organization_id <> FND_API.G_MISS_NUM AND
158 g_flow_schedule_rec.scheduled_completion_date IS NOT NULL AND
159 g_flow_schedule_rec.scheduled_completion_date <> FND_API.G_MISS_DATE
160 THEN
161
162 /* Fix for bug 2977987: Initialized l_revision_date instead of
163 l_bom_revision so that scheduled_completion_date is returned
164 instead of sysdate */
165
166 IF g_flow_schedule_rec.bom_revision_date = FND_API.G_MISS_DATE THEN
167 l_revision_date := NULL;
168 ELSE
169 l_revision_date := g_flow_schedule_rec.bom_revision_date;
170 END IF;
171
172 l_error_number := WIP_FLOW_DERIVE.Bom_Revision(
173 l_bom_revision,
174 l_revision,
175 l_revision_date,
176 g_flow_schedule_rec.primary_item_id,
177 g_flow_schedule_rec.scheduled_completion_date,
178 g_flow_schedule_rec.organization_id
179 );
180
181 -- revision_date should be null if revision is null
182 IF (l_error_number = 1 and l_bom_revision is not null) THEN
183
184 RETURN l_revision_date;
185
186 ELSE
187
188 -- If we couldn't retrieve the BOM, we don't care because
189 -- it is not a required field so we just return null.
190 RETURN NULL;
191
192 END IF;
193
194 ELSE
195
196 RETURN NULL;
197
198 END IF;
199
200 END Get_Bom_Revision_Date;
201
202 FUNCTION Get_Build_Sequence
203 RETURN NUMBER
204 IS
205 BEGIN
206
207 RETURN NULL;
208
209 END Get_Build_Sequence;
210
211 FUNCTION Get_Class
212 RETURN VARCHAR2
213 IS
214 l_class_code VARCHAR2(10) := NULL;
215 l_project_id NUMBER := NULL;
216 l_project_name VARCHAR2(30) := NULL;
217 l_error_number NUMBER := 1;
218 l_err_mesg VARCHAR2(80) := NULL;
219 l_default_class VARCHAR2(10) := NULL;
220 BEGIN
221
222 -- Use wip procedure to get class code. Class code is dependent
223 -- on item, organization, and project.
224
225 IF g_flow_schedule_rec.primary_item_id IS NOT NULL AND
226 g_flow_schedule_rec.primary_item_id <> FND_API.G_MISS_NUM AND
227 g_flow_schedule_rec.organization_id IS NOT NULL AND
228 g_flow_schedule_rec.organization_id <> FND_API.G_MISS_NUM
229 THEN
230
231 IF g_flow_schedule_rec.project_id = FND_API.G_MISS_NUM THEN
232 l_project_id := NULL;
233 ELSE
234 l_project_id := g_flow_schedule_rec.project_id;
235 END IF;
236
237 -- If the project is defined then we need to have a class code
238 -- defined at the project level.
239 -- If not, raise an expected error to the user.
240 IF l_project_id IS NOT NULL THEN
241 BEGIN
242
243 SELECT wip_acct_class_code, project_number
244 INTO l_class_code, l_project_name
245 FROM mrp_project_parameters_v
246 WHERE project_id = l_project_id
247 AND organization_id = g_flow_schedule_rec.organization_id;
248
249 EXCEPTION
250 WHEN NO_DATA_FOUND THEN
251
252 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
253 THEN
254
255 FND_MESSAGE.SET_NAME('MRP','MRP_NO_PROJ_CLASS_CODE');
256 FND_MESSAGE.SET_TOKEN('PROJECT',l_project_name);
257 FND_MSG_PUB.Add;
258
259 RAISE FND_API.G_EXC_ERROR;
260
261 END IF;
262
263 END;
264
265 END IF;
266
267 l_error_number := WIP_FLOW_DERIVE.Class_Code(l_class_code,
268 l_err_mesg,
269 g_flow_schedule_rec.organization_id,
270 g_flow_schedule_rec.primary_item_id,
271 4,
272 l_project_id);
273
274 IF l_error_number = 1 THEN
275
276 RETURN l_class_code;
277
278 ELSE
279
280 -- If the procedure returns with error, then was it
281 -- because there is no default defined at the org level.
282 -- If so, raise an expected error to the user.
283 BEGIN
284
285 SELECT default_discrete_class
286 INTO l_default_class
287 FROM wip_parameters
288 WHERE organization_id = g_flow_schedule_rec.organization_id;
289
290 RETURN l_default_class;
291
292 EXCEPTION
293 WHEN NO_DATA_FOUND THEN
294
295 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
296 THEN
297
298 FND_MESSAGE.SET_NAME('MRP','MRP-NO_DEFAULT_CLASS');
299 FND_MSG_PUB.Add;
300
301 END IF;
302
303 RAISE FND_API.G_EXC_ERROR;
304
305 WHEN OTHERS THEN
306
307 -- l_err_mesg is not used because class code procedure
308 -- returns translated message
309
310 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
311 THEN
312 FND_MSG_PUB.Add_Exc_Msg
313 ( G_PKG_NAME,
314 'Get_Class: '||l_err_mesg
315 );
316 END IF;
317
318 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
319
320 END;
321
322 END IF;
323
324 ELSE
325
326 RETURN NULL;
327
328 END IF;
329
330 END Get_Class;
331
332 FUNCTION Get_Completion_Locator
333 RETURN NUMBER
334 IS
335 l_alt_routing VARCHAR(10) := NULL;
336 l_subinventory VARCHAR(10) := NULL;
337 l_locator_id NUMBER := NULL;
338 l_error_number NUMBER := 1;
339 BEGIN
340
341 IF g_flow_schedule_rec.primary_item_id IS NOT NULL AND
342 g_flow_schedule_rec.primary_item_id <> FND_API.G_MISS_NUM AND
343 g_flow_schedule_rec.organization_id IS NOT NULL AND
344 g_flow_schedule_rec.organization_id <> FND_API.G_MISS_NUM
345 THEN
346
347 IF g_flow_schedule_rec.alternate_routing_desig = FND_API.G_MISS_CHAR
348 THEN
349 l_alt_routing := NULL;
350 ELSE
351 l_alt_routing := g_flow_schedule_rec.alternate_routing_desig;
352 END IF;
353
354 l_error_number := WIP_FLOW_DERIVE.Routing_Completion_Sub_Loc(
355 l_subinventory,
356 l_locator_id,
357 g_flow_schedule_rec.primary_item_id,
358 g_flow_schedule_rec.organization_id,
359 l_alt_routing
360 );
361
362 IF l_error_number = 1 THEN
363
364 RETURN l_locator_id;
365
366 ELSE
367
368 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
369 THEN
370 FND_MSG_PUB.Add_Exc_Msg
371 ( G_PKG_NAME,
372 'Get_Completion_Locator'
373 );
374 END IF;
375
376 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
377
378 END IF;
379
380 ELSE
381
382 RETURN NULL;
383
384 END IF;
385
386 END Get_Completion_Locator;
387
388 FUNCTION Get_Completion_Subinventory
389 RETURN VARCHAR2
390 IS
391 l_alt_routing VARCHAR(10) := NULL;
392 l_subinventory VARCHAR(10) := NULL;
393 l_locator_id NUMBER := NULL;
394 l_error_number NUMBER := 1;
395 BEGIN
396
397 IF g_flow_schedule_rec.primary_item_id IS NOT NULL AND
398 g_flow_schedule_rec.primary_item_id <> FND_API.G_MISS_NUM AND
399 g_flow_schedule_rec.organization_id IS NOT NULL AND
400 g_flow_schedule_rec.organization_id <> FND_API.G_MISS_NUM
401 THEN
402
403 IF g_flow_schedule_rec.alternate_routing_desig = FND_API.G_MISS_CHAR
404 THEN
405 l_alt_routing := NULL;
406 ELSE
407 l_alt_routing := g_flow_schedule_rec.alternate_routing_desig;
408 END IF;
409
410 l_error_number := WIP_FLOW_DERIVE.Routing_Completion_Sub_Loc(
411 l_subinventory,
412 l_locator_id,
413 g_flow_schedule_rec.primary_item_id,
414 g_flow_schedule_rec.organization_id,
415 l_alt_routing
416 );
417
418 IF l_error_number = 1 THEN
419
420 RETURN l_subinventory;
421
422 ELSE
423
424 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
425 THEN
426 FND_MSG_PUB.Add_Exc_Msg
427 ( G_PKG_NAME,
428 'Get_Completion_Subinventory'
429 );
430 END IF;
431
432 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
433
434 END IF;
435
436 ELSE
437
438 RETURN NULL;
439
440 END IF;
441
442 END Get_Completion_Subinventory;
443
444 FUNCTION Get_Date_Closed
445 RETURN DATE
446 IS
447 BEGIN
448
449 RETURN NULL;
450
451 END Get_Date_Closed;
452
453 FUNCTION Get_Demand_Class
454 RETURN VARCHAR2
455 IS
456 BEGIN
457
458 RETURN NULL;
459
460 END Get_Demand_Class;
461
462 FUNCTION Get_Demand_Source_Delivery
463 RETURN VARCHAR2
464 IS
465 BEGIN
466
467 RETURN NULL;
468
469 END Get_Demand_Source_Delivery;
470
471 FUNCTION Get_Demand_Source_Header
472 RETURN NUMBER
473 IS
474 BEGIN
475
476 RETURN NULL;
477
478 END Get_Demand_Source_Header;
479
480 FUNCTION Get_Demand_Source_Line
481 RETURN VARCHAR2
482 IS
483 BEGIN
484
485 RETURN NULL;
486
487 END Get_Demand_Source_Line;
488
489 FUNCTION Get_Demand_Source_Type
490 RETURN NUMBER
491 IS
492 BEGIN
493
494 RETURN NULL;
495
496 END Get_Demand_Source_Type;
497
498 FUNCTION Get_Line
499 RETURN NUMBER
500 IS
501 l_line_id NUMBER;
502 BEGIN
503
504 IF g_flow_schedule_rec.primary_item_id IS NOT NULL AND
505 g_flow_schedule_rec.primary_item_id <> FND_API.G_MISS_NUM AND
506 g_flow_schedule_rec.organization_id IS NOT NULL AND
507 g_flow_schedule_rec.organization_id <> FND_API.G_MISS_NUM
508 THEN
509 SELECT line_id
510 INTO l_line_id
511 FROM bom_operational_routings
512 WHERE cfm_routing_flag = 1
516 FROM bom_operational_routings
513 AND ((alternate_routing_designator IS NULL) OR
514 (alternate_routing_designator IS NOT NULL
515 AND priority = (SELECT min(priority)
517 WHERE cfm_routing_flag = 1
518 AND assembly_item_id = g_flow_schedule_rec.primary_item_id
519 AND organization_id = g_flow_schedule_rec.organization_id
520 AND NOT EXISTS (SELECT line_id FROM bom_operational_routings
521 WHERE cfm_routing_flag = 1
522 AND alternate_routing_designator IS NULL
523 AND assembly_item_id = g_flow_schedule_rec.primary_item_id
524 AND organization_id = g_flow_schedule_rec.organization_id
525 ))))
526 AND assembly_item_id = g_flow_schedule_rec.primary_item_id
527 AND organization_id = g_flow_schedule_rec.organization_id;
528
529 RETURN l_line_id;
530
531 ELSE
532
533 RETURN NULL;
534
535 END IF;
536
537 EXCEPTION
538
539 WHEN OTHERS THEN
540
541 RETURN NULL;
542
543 END Get_Line;
544
545 FUNCTION Get_Material_Account
546 RETURN NUMBER
547 IS
548 l_material_account NUMBER := NULL;
549 BEGIN
550
551 IF g_flow_schedule_rec.class_code IS NOT NULL AND
552 g_flow_schedule_rec.class_code <> FND_API.G_MISS_CHAR AND
553 g_flow_schedule_rec.organization_id IS NOT NULL AND
554 g_flow_schedule_rec.organization_id <> FND_API.G_MISS_NUM
555 THEN
556
557 SELECT MATERIAL_ACCOUNT
558 INTO l_material_account
559 FROM WIP_ACCOUNTING_CLASSES
560 WHERE CLASS_CODE = g_flow_schedule_rec.class_code
561 AND ORGANIZATION_ID = g_flow_schedule_rec.organization_id;
562
563 RETURN l_material_account;
564
565 ELSE
566
567 RETURN NULL;
568
569 END IF;
570
571 EXCEPTION
572
573 WHEN OTHERS THEN
574
575 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
576 THEN
577 FND_MSG_PUB.Add_Exc_Msg
578 ( G_PKG_NAME,
579 'Get_Material_Account'
580 );
581 END IF;
582
583 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
584
585 END Get_Material_Account;
586
587 FUNCTION Get_Material_Overhead_Account
588 RETURN NUMBER
589 IS
590 l_material_overhead_account NUMBER := NULL;
591 BEGIN
592
593 IF g_flow_schedule_rec.class_code IS NOT NULL AND
594 g_flow_schedule_rec.class_code <> FND_API.G_MISS_CHAR AND
595 g_flow_schedule_rec.organization_id IS NOT NULL AND
596 g_flow_schedule_rec.organization_id <> FND_API.G_MISS_NUM
597 THEN
598
599 SELECT MATERIAL_OVERHEAD_ACCOUNT
600 INTO l_material_overhead_account
601 FROM WIP_ACCOUNTING_CLASSES
602 WHERE CLASS_CODE = g_flow_schedule_rec.class_code
603 AND ORGANIZATION_ID = g_flow_schedule_rec.organization_id;
604
605 RETURN l_material_overhead_account;
606
607 ELSE
608
609 RETURN NULL;
610
611 END IF;
612
613 EXCEPTION
614
615 WHEN OTHERS THEN
616
617 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
618 THEN
619 FND_MSG_PUB.Add_Exc_Msg
620 ( G_PKG_NAME,
621 'Get_Material_Overhead_Account'
622 );
623 END IF;
624
625 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
626
627 END Get_Material_Overhead_Account;
628
629 FUNCTION Get_Material_Variance_Account
630 RETURN NUMBER
631 IS
632 l_material_variance_account NUMBER := NULL;
633 BEGIN
634
635 IF g_flow_schedule_rec.class_code IS NOT NULL AND
636 g_flow_schedule_rec.class_code <> FND_API.G_MISS_CHAR AND
637 g_flow_schedule_rec.organization_id IS NOT NULL AND
638 g_flow_schedule_rec.organization_id <> FND_API.G_MISS_NUM
639 THEN
640
641 SELECT MATERIAL_VARIANCE_ACCOUNT
642 INTO l_material_variance_account
643 FROM WIP_ACCOUNTING_CLASSES
644 WHERE CLASS_CODE = g_flow_schedule_rec.class_code
645 AND ORGANIZATION_ID = g_flow_schedule_rec.organization_id;
646
647 RETURN l_material_variance_account;
648
649 ELSE
650
651 RETURN NULL;
652
653 END IF;
654
655 EXCEPTION
656
657 WHEN OTHERS THEN
658
659 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
660 THEN
661 FND_MSG_PUB.Add_Exc_Msg
662 ( G_PKG_NAME,
663 'Get_Material_Variance_Account'
664 );
665 END IF;
666
667 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
668
669 END Get_Material_Variance_Account;
670
671 FUNCTION Get_Mps_Net_Quantity
672 RETURN NUMBER
673 IS
674 BEGIN
675
676 RETURN NULL;
677
678 END Get_Mps_Net_Quantity;
679
680 FUNCTION Get_Mps_Scheduled_Comp_Date
681 RETURN DATE
682 IS
683 BEGIN
684
685 RETURN NULL;
686
690 RETURN NUMBER
687 END Get_Mps_Scheduled_Comp_Date;
688
689 FUNCTION Get_Organization
691 IS
692 BEGIN
693
694 RETURN NULL;
695
696 END Get_Organization;
697
698 FUNCTION Get_Outside_Processing_Acct
699 RETURN NUMBER
700 IS
701 l_outside_processing_acct NUMBER := NULL;
702 BEGIN
703
704 IF g_flow_schedule_rec.class_code IS NOT NULL AND
705 g_flow_schedule_rec.class_code <> FND_API.G_MISS_CHAR AND
706 g_flow_schedule_rec.organization_id IS NOT NULL AND
707 g_flow_schedule_rec.organization_id <> FND_API.G_MISS_NUM
708 THEN
709
710 SELECT OUTSIDE_PROCESSING_ACCOUNT
711 INTO l_outside_processing_acct
712 FROM WIP_ACCOUNTING_CLASSES
713 WHERE CLASS_CODE = g_flow_schedule_rec.class_code
714 AND ORGANIZATION_ID = g_flow_schedule_rec.organization_id;
715
716 RETURN l_outside_processing_acct;
717
718 ELSE
719
720 RETURN NULL;
721
722 END IF;
723
724 EXCEPTION
725
726 WHEN OTHERS THEN
727
728 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
729 THEN
730 FND_MSG_PUB.Add_Exc_Msg
731 ( G_PKG_NAME,
732 'Get_Outside_Processing_Acct'
733 );
734 END IF;
735
736 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
737
738 END Get_Outside_Processing_Acct;
739
740 FUNCTION Get_Outside_Proc_Var_Acct
741 RETURN NUMBER
742 IS
743 l_outside_proc_var_acct NUMBER := NULL;
744 BEGIN
745
746 IF g_flow_schedule_rec.class_code IS NOT NULL AND
747 g_flow_schedule_rec.class_code <> FND_API.G_MISS_CHAR AND
748 g_flow_schedule_rec.organization_id IS NOT NULL AND
749 g_flow_schedule_rec.organization_id <> FND_API.G_MISS_NUM
750 THEN
751
752 SELECT OUTSIDE_PROC_VARIANCE_ACCOUNT
753 INTO l_outside_proc_var_acct
754 FROM WIP_ACCOUNTING_CLASSES
755 WHERE CLASS_CODE = g_flow_schedule_rec.class_code
756 AND ORGANIZATION_ID = g_flow_schedule_rec.organization_id;
757
758 RETURN l_outside_proc_var_acct;
759
760 ELSE
761
762 RETURN NULL;
763
764 END IF;
765
766 EXCEPTION
767
768 WHEN OTHERS THEN
769
770 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
771 THEN
772 FND_MSG_PUB.Add_Exc_Msg
773 ( G_PKG_NAME,
774 'Get_Outside_Proc_Var_Acct'
775 );
776 END IF;
777
778 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
779
780 END Get_Outside_Proc_Var_Acct;
781
782 FUNCTION Get_Overhead_Account
783 RETURN NUMBER
784 IS
785 l_overhead_account NUMBER := NULL;
786 BEGIN
787
788 IF g_flow_schedule_rec.class_code IS NOT NULL AND
789 g_flow_schedule_rec.class_code <> FND_API.G_MISS_CHAR AND
790 g_flow_schedule_rec.organization_id IS NOT NULL AND
791 g_flow_schedule_rec.organization_id <> FND_API.G_MISS_NUM
792 THEN
793
794 SELECT OVERHEAD_ACCOUNT
795 INTO l_overhead_account
796 FROM WIP_ACCOUNTING_CLASSES
797 WHERE CLASS_CODE = g_flow_schedule_rec.class_code
798 AND ORGANIZATION_ID = g_flow_schedule_rec.organization_id;
799
800 RETURN l_overhead_account;
801
802 ELSE
803
804 RETURN NULL;
805
806 END IF;
807
808 EXCEPTION
809
810 WHEN OTHERS THEN
811
812 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
813 THEN
814 FND_MSG_PUB.Add_Exc_Msg
815 ( G_PKG_NAME,
816 'Get_Overhead_Account'
817 );
818 END IF;
819
820 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
821
822 END Get_Overhead_Account;
823
824 FUNCTION Get_Overhead_Variance_Account
825 RETURN NUMBER
826 IS
827 l_overhead_variance_account NUMBER := NULL;
828 BEGIN
829
830 IF g_flow_schedule_rec.class_code IS NOT NULL AND
831 g_flow_schedule_rec.class_code <> FND_API.G_MISS_CHAR AND
832 g_flow_schedule_rec.organization_id IS NOT NULL AND
833 g_flow_schedule_rec.organization_id <> FND_API.G_MISS_NUM
834 THEN
835
836 SELECT OVERHEAD_VARIANCE_ACCOUNT
837 INTO l_overhead_variance_account
838 FROM WIP_ACCOUNTING_CLASSES
839 WHERE CLASS_CODE = g_flow_schedule_rec.class_code
840 AND ORGANIZATION_ID = g_flow_schedule_rec.organization_id;
841
842 RETURN l_overhead_variance_account;
843
844 ELSE
845
846 RETURN NULL;
847
848 END IF;
849
850 EXCEPTION
851
852 WHEN OTHERS THEN
853
854 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
855 THEN
856 FND_MSG_PUB.Add_Exc_Msg
857 ( G_PKG_NAME,
858 'Get_Overhead_Variance_Account'
859 );
860 END IF;
861
862 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
863
867 RETURN NUMBER
864 END Get_Overhead_Variance_Account;
865
866 FUNCTION Get_Planned_Quantity
868 IS
869 BEGIN
870
871 RETURN NULL;
872
873 END Get_Planned_Quantity;
874
875 FUNCTION Get_Primary_Item
876 RETURN NUMBER
877 IS
878 BEGIN
879
880 RETURN NULL;
881
882 END Get_Primary_Item;
883
884 FUNCTION Get_Project
885 RETURN NUMBER
886 IS
887 BEGIN
888
889 RETURN NULL;
890
891 END Get_Project;
892
893 FUNCTION Get_Quantity_Completed
894 RETURN NUMBER
895 IS
896 BEGIN
897
898 RETURN 0;
899
900 END Get_Quantity_Completed;
901
902 FUNCTION Get_Request_Id
903 RETURN NUMBER
904 IS
905 l_request_id NUMBER := 0;
906 BEGIN
907
908 SELECT USERENV( 'SESSIONID' )
909 INTO l_request_id
910 FROM DUAL;
911
912 RETURN l_request_id;
913
914 END Get_Request_Id;
915
916 FUNCTION Get_Resource_Account
917 RETURN NUMBER
918 IS
919 l_resource_account NUMBER := NULL;
920 BEGIN
921
922 IF g_flow_schedule_rec.class_code IS NOT NULL AND
923 g_flow_schedule_rec.class_code <> FND_API.G_MISS_CHAR AND
924 g_flow_schedule_rec.organization_id IS NOT NULL AND
925 g_flow_schedule_rec.organization_id <> FND_API.G_MISS_NUM
926 THEN
927
928 SELECT RESOURCE_ACCOUNT
929 INTO l_resource_account
930 FROM WIP_ACCOUNTING_CLASSES
931 WHERE CLASS_CODE = g_flow_schedule_rec.class_code
932 AND ORGANIZATION_ID = g_flow_schedule_rec.organization_id;
933
934 RETURN l_resource_account;
935
936 ELSE
937
938 RETURN NULL;
939
940 END IF;
941
942 EXCEPTION
943
944 WHEN OTHERS THEN
945
946 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
947 THEN
948 FND_MSG_PUB.Add_Exc_Msg
949 ( G_PKG_NAME,
950 'Get_Resource_Account'
951 );
952 END IF;
953
954 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
955
956 END Get_Resource_Account;
957
958 FUNCTION Get_Resource_Variance_Account
959 RETURN NUMBER
960 IS
961 l_resource_variance_account NUMBER := NULL;
962 BEGIN
963
964 IF g_flow_schedule_rec.class_code IS NOT NULL AND
965 g_flow_schedule_rec.class_code <> FND_API.G_MISS_CHAR AND
966 g_flow_schedule_rec.organization_id IS NOT NULL AND
967 g_flow_schedule_rec.organization_id <> FND_API.G_MISS_NUM
968 THEN
969
970 SELECT RESOURCE_VARIANCE_ACCOUNT
971 INTO l_resource_variance_account
972 FROM WIP_ACCOUNTING_CLASSES
973 WHERE CLASS_CODE = g_flow_schedule_rec.class_code
974 AND ORGANIZATION_ID = g_flow_schedule_rec.organization_id;
975
976 RETURN l_resource_variance_account;
977
978 ELSE
979
980 RETURN NULL;
981
982 END IF;
983
984 EXCEPTION
985
986 WHEN OTHERS THEN
987
988 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
989 THEN
990 FND_MSG_PUB.Add_Exc_Msg
991 ( G_PKG_NAME,
992 'Get_Resource_Variance_Account'
993 );
994 END IF;
995
996 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
997
998 END Get_Resource_Variance_Account;
999
1000 FUNCTION Get_Routing_Revision
1001 RETURN VARCHAR2
1002 IS
1003 l_routing_revision VARCHAR(3) := NULL;
1004 l_error_number NUMBER := 1;
1005 l_revision_date DATE := NULL;
1006 BEGIN
1007
1008 IF g_flow_schedule_rec.primary_item_id IS NOT NULL AND
1009 g_flow_schedule_rec.primary_item_id <> FND_API.G_MISS_NUM AND
1010 g_flow_schedule_rec.organization_id IS NOT NULL AND
1011 g_flow_schedule_rec.organization_id <> FND_API.G_MISS_NUM AND
1012 g_flow_schedule_rec.scheduled_completion_date IS NOT NULL AND
1013 g_flow_schedule_rec.scheduled_completion_date <> FND_API.G_MISS_DATE
1014 THEN
1015
1016 IF g_flow_schedule_rec.routing_revision_date = FND_API.G_MISS_DATE THEN
1017 l_revision_date := NULL;
1018 ELSE
1019 l_revision_date := g_flow_schedule_rec.routing_revision_date;
1020 END IF;
1021
1022 l_error_number := WIP_FLOW_DERIVE.Routing_Revision(
1023 l_routing_revision,
1024 l_revision_date,
1025 g_flow_schedule_rec.primary_item_id,
1026 g_flow_schedule_rec.scheduled_completion_date,
1027 g_flow_schedule_rec.organization_id
1028 );
1029
1030 IF l_error_number = 1 THEN
1031
1032 RETURN l_routing_revision;
1033
1034 ELSIF l_routing_revision IS NULL THEN
1035
1036 RETURN NULL;
1037
1038 END IF;
1039
1040 ELSE
1041
1042 RETURN NULL;
1043
1044 END IF;
1045
1046 END Get_Routing_Revision;
1047
1048
1049 FUNCTION Get_Routing_Revision_Date
1050 RETURN DATE
1051 IS
1052 l_routing_revision VARCHAR(3) := NULL;
1056
1053 l_error_number NUMBER := 1;
1054 l_revision_date DATE := NULL;
1055 BEGIN
1057 IF g_flow_schedule_rec.primary_item_id IS NOT NULL AND
1058 g_flow_schedule_rec.primary_item_id <> FND_API.G_MISS_NUM AND
1059 g_flow_schedule_rec.organization_id IS NOT NULL AND
1060 g_flow_schedule_rec.organization_id <> FND_API.G_MISS_NUM AND
1061 g_flow_schedule_rec.scheduled_completion_date IS NOT NULL AND
1062 g_flow_schedule_rec.scheduled_completion_date <> FND_API.G_MISS_DATE
1063 THEN
1064
1065 IF g_flow_schedule_rec.routing_revision_date = FND_API.G_MISS_DATE THEN
1066 l_revision_date := NULL;
1067 ELSE
1068 l_revision_date := g_flow_schedule_rec.routing_revision_date;
1069 END IF;
1070
1071 l_error_number := WIP_FLOW_DERIVE.Routing_Revision(
1072 l_routing_revision,
1073 l_revision_date,
1074 g_flow_schedule_rec.primary_item_id,
1075 g_flow_schedule_rec.scheduled_completion_date,
1076 g_flow_schedule_rec.organization_id
1077 );
1078
1079 -- revision_date should be null, if revision is null
1080 IF (l_error_number = 1 and l_routing_revision is not null) THEN
1081
1082 RETURN l_revision_date;
1083
1084 ELSE
1085 RETURN NULL;
1086
1087 END IF;
1088
1089 ELSE
1090
1091 RETURN NULL;
1092
1093 END IF;
1094
1095 END Get_Routing_Revision_Date;
1096
1097
1098 FUNCTION Get_Scheduled_Completion_Date
1099 RETURN DATE
1100 IS
1101 BEGIN
1102
1103 RETURN NULL;
1104
1105 END Get_Scheduled_Completion_Date;
1106
1107 FUNCTION Get_Scheduled
1108 RETURN NUMBER
1109 IS
1110 BEGIN
1111
1112 -- Return yes (1)
1113 RETURN 1;
1114
1115 END Get_Scheduled;
1116
1117 FUNCTION Get_Scheduled_Start_Date
1118 RETURN DATE
1119 IS
1120 l_variable_lead_time NUMBER := 0;
1121 l_fixed_lead_time NUMBER := 0;
1122 l_temp_date DATE;
1123 l_lead_time NUMBER := 0;
1124 l_start_time NUMBER;
1125 l_end_time NUMBER;
1126 l_completion_date_time DATE;
1127 l_completion_date DATE;
1128 l_completion_time NUMBER;
1129 l_new_end_time NUMBER;
1130
1131 BEGIN
1132
1133 IF g_flow_schedule_rec.scheduled_completion_date IS NOT NULL AND
1134 g_flow_schedule_rec.scheduled_completion_date <> FND_API.G_MISS_DATE AND
1135 g_flow_schedule_rec.organization_id IS NOT NULL AND
1136 g_flow_schedule_rec.organization_id <> FND_API.G_MISS_NUM AND
1137 g_flow_schedule_rec.primary_item_id IS NOT NULL AND
1138 g_flow_schedule_rec.primary_item_id <> FND_API.G_MISS_NUM AND
1139 g_flow_schedule_rec.planned_quantity IS NOT NULL AND
1140 g_flow_schedule_rec.planned_quantity <> FND_API.G_MISS_NUM AND
1141 g_flow_schedule_rec.line_id IS NOT NULL AND
1142 g_flow_schedule_rec.line_id <> FND_API.G_MISS_NUM
1143 THEN
1144
1145 SELECT NVL(FIXED_LEAD_TIME,0),
1146 NVL(VARIABLE_LEAD_TIME,0)
1147 INTO l_fixed_lead_time, l_variable_lead_time
1148 FROM MTL_SYSTEM_ITEMS
1149 WHERE INVENTORY_ITEM_ID = g_flow_schedule_rec.primary_item_id
1150 AND ORGANIZATION_ID = g_flow_schedule_rec.organization_id;
1151
1152 SELECT start_time, stop_time
1153 INTO l_start_time, l_end_time
1154 FROM wip_lines
1155 WHERE line_id = g_flow_schedule_rec.line_id
1156 AND organization_id = g_flow_schedule_rec.organization_id;
1157
1158 --fix bug#3827600
1159 if (l_end_time < l_start_time) then
1160 l_new_end_time := 86400+l_end_time;
1161 else
1162 l_new_end_time := l_end_time;
1163 end if;
1164
1165 l_completion_date := trunc(g_flow_schedule_rec.scheduled_completion_date);
1166 l_completion_time := to_char(g_flow_schedule_rec.scheduled_completion_date,'SSSSS');
1167
1168 if (l_completion_time > l_new_end_time) then
1169 l_completion_date_time := l_completion_date + (l_new_end_time/86400);
1170
1171 elsif (l_completion_time < l_start_time) then
1172 l_completion_date := mrp_calendar.prev_work_day(
1173 g_flow_schedule_rec.organization_id,
1174 1,
1175 flm_timezone.server_to_calendar(l_completion_date)-1);
1176
1177 l_completion_date := flm_timezone.calendar_to_server(l_completion_date,l_completion_time);
1178 l_completion_date_time := trunc(l_completion_date) + (l_new_end_time/86400);
1179
1180 else
1181 l_completion_date_time := l_completion_date + (l_completion_time/86400);
1182
1183 end if;
1184 --end of fix bug#3827600
1185
1186 l_lead_time := l_fixed_lead_time + (l_variable_lead_time *
1187 (g_flow_schedule_rec.planned_quantity-1));
1188
1189 l_temp_date := MRP_LINE_SCHEDULE_ALGORITHM.calculate_begin_time(
1190 g_flow_schedule_rec.organization_id,
1191 l_completion_date_time,
1192 l_lead_time,
1193 l_start_time,
1194 l_new_end_time);
1195
1196 RETURN l_temp_date;
1197
1198 ELSE
1199
1200 RETURN NULL;
1201
1205
1202 END IF;
1203
1204 EXCEPTION
1206 WHEN OTHERS THEN
1207
1208 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1209 THEN
1210 FND_MSG_PUB.Add_Exc_Msg
1211 ( G_PKG_NAME,
1212 'Get_Scheduled_Start_Date'
1213 );
1214 END IF;
1215
1216 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1217
1218 END Get_Scheduled_Start_Date;
1219
1220 FUNCTION Get_Schedule_Group
1221 RETURN NUMBER
1222 IS
1223 BEGIN
1224
1225 RETURN NULL;
1226
1227 END Get_Schedule_Group;
1228
1229 FUNCTION Get_Schedule_Number
1230 RETURN VARCHAR2
1231 IS
1232 l_schedule_number VARCHAR2(30) := NULL;
1233 l_error_number NUMBER := 1;
1234 BEGIN
1235
1236 l_error_number := WIP_FLOW_DERIVE.Schedule_Number(l_schedule_number);
1237
1238 IF l_error_number = 1 THEN
1239
1240 RETURN l_schedule_number;
1241
1242 ELSE
1243
1244 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1245 THEN
1246 FND_MSG_PUB.Add_Exc_Msg
1247 ( G_PKG_NAME,
1248 'Get_Schedule_Number'
1249 );
1250 END IF;
1251
1252 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1253
1254 RETURN NULL;
1255
1256 END IF;
1257
1258 END Get_Schedule_Number;
1259
1260 FUNCTION Get_Status
1261 RETURN NUMBER
1262 IS
1263 BEGIN
1264
1265 -- Return Open (1)
1266 RETURN 1;
1267
1268 END Get_Status;
1269
1270 FUNCTION Get_Std_Cost_Adjustment_Acct
1271 RETURN NUMBER
1272 IS
1273 l_std_cost_adjustment_acct NUMBER := NULL;
1274 BEGIN
1275
1276 IF g_flow_schedule_rec.class_code IS NOT NULL AND
1277 g_flow_schedule_rec.class_code <> FND_API.G_MISS_CHAR AND
1278 g_flow_schedule_rec.organization_id IS NOT NULL AND
1279 g_flow_schedule_rec.organization_id <> FND_API.G_MISS_NUM
1280 THEN
1281
1282 SELECT STD_COST_ADJUSTMENT_ACCOUNT
1283 INTO l_std_cost_adjustment_acct
1284 FROM WIP_ACCOUNTING_CLASSES
1285 WHERE CLASS_CODE = g_flow_schedule_rec.class_code
1286 AND ORGANIZATION_ID = g_flow_schedule_rec.organization_id;
1287
1288 RETURN l_std_cost_adjustment_acct;
1289
1290 ELSE
1291
1292 RETURN NULL;
1293
1294 END IF;
1295
1296 EXCEPTION
1297
1298 WHEN OTHERS THEN
1299
1300 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1301 THEN
1302 FND_MSG_PUB.Add_Exc_Msg
1303 ( G_PKG_NAME,
1304 'Get_Std_Cost_Adjustment_Acct'
1305 );
1306 END IF;
1307
1308 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1309
1310 END Get_Std_Cost_Adjustment_Acct;
1311
1312 FUNCTION Get_Task
1313 RETURN NUMBER
1314 IS
1315 BEGIN
1316
1317 RETURN NULL;
1318
1319 END Get_Task;
1320
1321 FUNCTION Get_Wip_Entity
1322 RETURN NUMBER
1323 IS
1324 l_wip_entity_id NUMBER := NULL;
1325 BEGIN
1326
1327 -- Select from sequence
1328 SELECT WIP_ENTITIES_S.nextval
1329 INTO l_wip_entity_id
1330 FROM DUAL;
1331
1332 RETURN l_wip_entity_id;
1333
1334 EXCEPTION
1335
1336 WHEN OTHERS THEN
1337
1338 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1339 THEN
1340 FND_MSG_PUB.Add_Exc_Msg
1341 ( G_PKG_NAME,
1342 'Get_Wip_Entity'
1343 );
1344 END IF;
1345
1346 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1347
1348 END Get_Wip_Entity;
1349
1350
1351
1352
1353 FUNCTION Get_End_Item_Unit_Number
1354 RETURN NUMBER
1355 IS
1356 BEGIN
1357 RETURN NULL;
1358
1359 END Get_End_Item_Unit_Number;
1360
1361 FUNCTION Get_Quantity_Scrapped
1362 RETURN NUMBER
1363 IS
1364 BEGIN
1365 RETURN 0;
1366
1367 END Get_Quantity_Scrapped;
1368
1369 PROCEDURE Get_Flex_Wip_Flow_Schedule
1370 IS
1371 BEGIN
1372
1373 -- In the future call Flex APIs for defaults
1374
1375 IF g_flow_schedule_rec.attribute1 = FND_API.G_MISS_CHAR THEN
1376 g_flow_schedule_rec.attribute1 := NULL;
1377 END IF;
1378
1379 IF g_flow_schedule_rec.attribute10 = FND_API.G_MISS_CHAR THEN
1380 g_flow_schedule_rec.attribute10 := NULL;
1381 END IF;
1382
1383 IF g_flow_schedule_rec.attribute11 = FND_API.G_MISS_CHAR THEN
1384 g_flow_schedule_rec.attribute11 := NULL;
1385 END IF;
1386
1387 IF g_flow_schedule_rec.attribute12 = FND_API.G_MISS_CHAR THEN
1388 g_flow_schedule_rec.attribute12 := NULL;
1389 END IF;
1390
1391 IF g_flow_schedule_rec.attribute13 = FND_API.G_MISS_CHAR THEN
1392 g_flow_schedule_rec.attribute13 := NULL;
1393 END IF;
1394
1395 IF g_flow_schedule_rec.attribute14 = FND_API.G_MISS_CHAR THEN
1396 g_flow_schedule_rec.attribute14 := NULL;
1397 END IF;
1398
1402
1399 IF g_flow_schedule_rec.attribute15 = FND_API.G_MISS_CHAR THEN
1400 g_flow_schedule_rec.attribute15 := NULL;
1401 END IF;
1403 IF g_flow_schedule_rec.attribute2 = FND_API.G_MISS_CHAR THEN
1404 g_flow_schedule_rec.attribute2 := NULL;
1405 END IF;
1406
1407 IF g_flow_schedule_rec.attribute3 = FND_API.G_MISS_CHAR THEN
1408 g_flow_schedule_rec.attribute3 := NULL;
1409 END IF;
1410
1411 IF g_flow_schedule_rec.attribute4 = FND_API.G_MISS_CHAR THEN
1412 g_flow_schedule_rec.attribute4 := NULL;
1413 END IF;
1414
1415 IF g_flow_schedule_rec.attribute5 = FND_API.G_MISS_CHAR THEN
1416 g_flow_schedule_rec.attribute5 := NULL;
1417 END IF;
1418
1419 IF g_flow_schedule_rec.attribute6 = FND_API.G_MISS_CHAR THEN
1420 g_flow_schedule_rec.attribute6 := NULL;
1421 END IF;
1422
1423 IF g_flow_schedule_rec.attribute7 = FND_API.G_MISS_CHAR THEN
1424 g_flow_schedule_rec.attribute7 := NULL;
1425 END IF;
1426
1427 IF g_flow_schedule_rec.attribute8 = FND_API.G_MISS_CHAR THEN
1428 g_flow_schedule_rec.attribute8 := NULL;
1429 END IF;
1430
1431 IF g_flow_schedule_rec.attribute9 = FND_API.G_MISS_CHAR THEN
1432 g_flow_schedule_rec.attribute9 := NULL;
1433 END IF;
1434
1435 IF g_flow_schedule_rec.attribute_category = FND_API.G_MISS_CHAR THEN
1436 g_flow_schedule_rec.attribute_category := NULL;
1437 END IF;
1438
1439 END Get_Flex_Wip_Flow_Schedule;
1440
1441 -- Procedure Attributes
1442
1443 PROCEDURE Attributes
1444 ( p_flow_schedule_rec IN MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type
1445 , p_iteration IN NUMBER DEFAULT NULL
1446 , x_flow_schedule_rec IN OUT NOCOPY MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type
1447 )
1448 IS
1449 l_old_flow_schedule_rec MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
1450 BEGIN
1451
1452 -- Check number of iterations.
1453 -- If p_iteration is null, default to 1
1454 IF nvl(p_iteration, 1) > MRP_GLOBALS.G_MAX_DEF_ITERATIONS THEN
1455
1456 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
1457 THEN
1458
1459 FND_MESSAGE.SET_NAME('MRP','MRP_DEF_MAX_ITERATION');
1460 FND_MSG_PUB.Add;
1461
1462 END IF;
1463
1464 RAISE FND_API.G_EXC_ERROR;
1465
1466 END IF;
1467 -- Initialize g_flow_schedule_rec
1468
1469 g_flow_schedule_rec := p_flow_schedule_rec;
1470
1471 -- Default missing attributes.
1472
1473 IF g_flow_schedule_rec.alternate_bom_designator = FND_API.G_MISS_CHAR or g_flow_schedule_rec.alternate_bom_designator IS NULL THEN
1474
1475 g_flow_schedule_rec.alternate_bom_designator := Get_Alternate_Bom_Designator;
1476
1477 IF g_flow_schedule_rec.alternate_bom_designator IS NOT NULL THEN
1478
1479 IF MRP_Validate.Alternate_Bom_Designator(g_flow_schedule_rec.alternate_bom_designator)
1480 THEN
1481 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1482 ( p_attr_id => MRP_Flow_Schedule_Util.G_ALTERNATE_BOM_DESIGNATOR
1483 , p_flow_schedule_rec => g_flow_schedule_rec
1484 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1485 , x_flow_schedule_rec => g_flow_schedule_rec
1486 );
1487 ELSE
1488 g_flow_schedule_rec.alternate_bom_designator := NULL;
1489 END IF;
1490
1491 END IF;
1492
1493 END IF;
1494
1495 IF g_flow_schedule_rec.alternate_routing_desig = FND_API.G_MISS_CHAR or g_flow_schedule_rec.alternate_routing_desig IS NULL THEN
1496
1497 g_flow_schedule_rec.alternate_routing_desig := Get_Alternate_Routing_Desig;
1498
1499 IF g_flow_schedule_rec.alternate_routing_desig IS NOT NULL THEN
1500
1501 IF MRP_Validate.Alternate_Routing_Desig(g_flow_schedule_rec.alternate_routing_desig)
1502 THEN
1503 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1504 ( p_attr_id => MRP_Flow_Schedule_Util.G_ALTERNATE_ROUTING_DESIG
1505 , p_flow_schedule_rec => g_flow_schedule_rec
1506 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1507 , x_flow_schedule_rec => g_flow_schedule_rec
1508 );
1509 ELSE
1510 g_flow_schedule_rec.alternate_routing_desig := NULL;
1511 END IF;
1512
1513 END IF;
1514
1515 END IF;
1516
1517 /* Fix for bug 2977987: Moved this code to ensure that bom_revision is calculated after calculating
1518 bom_revision_date
1519
1520 IF g_flow_schedule_rec.bom_revision = FND_API.G_MISS_CHAR OR g_flow_schedule_rec.bom_revision IS NULL THEN
1521
1522 g_flow_schedule_rec.bom_revision := Get_Bom_Revision;
1523
1524 IF g_flow_schedule_rec.bom_revision IS NOT NULL THEN
1525
1526 IF MRP_Validate.Bom_Revision(g_flow_schedule_rec.bom_revision)
1527 THEN
1528 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1529 ( p_attr_id => MRP_Flow_Schedule_Util.G_BOM_REVISION
1530 , p_flow_schedule_rec => g_flow_schedule_rec
1534 ELSE
1531 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1532 , x_flow_schedule_rec => g_flow_schedule_rec
1533 );
1535 g_flow_schedule_rec.bom_revision := NULL;
1536 END IF;
1537
1538 END IF;
1539
1540 END IF;
1541 */
1542
1543 IF g_flow_schedule_rec.bom_revision_date = FND_API.G_MISS_DATE OR g_flow_schedule_rec.bom_revision_date IS NULL THEN
1544
1545 g_flow_schedule_rec.bom_revision_date := Get_Bom_Revision_Date;
1546
1547 IF g_flow_schedule_rec.bom_revision_date IS NOT NULL THEN
1548
1549 IF MRP_Validate.Bom_Revision_Date(g_flow_schedule_rec.bom_revision_date)
1550 THEN
1551 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1552 ( p_attr_id => MRP_Flow_Schedule_Util.G_BOM_REVISION_DATE
1553 , p_flow_schedule_rec => g_flow_schedule_rec
1554 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1555 , x_flow_schedule_rec => g_flow_schedule_rec
1556 );
1557 ELSE
1558 g_flow_schedule_rec.bom_revision_date := NULL;
1559 END IF;
1560
1561 END IF;
1562
1563 END IF;
1564
1565 /* Fix for bug 2977987: bom_revision is being calculated after calculating bom_revision_date. */
1566
1567 IF g_flow_schedule_rec.bom_revision = FND_API.G_MISS_CHAR OR g_flow_schedule_rec.bom_revision IS NULL THEN
1568
1569 g_flow_schedule_rec.bom_revision := Get_Bom_Revision;
1570
1571 IF g_flow_schedule_rec.bom_revision IS NOT NULL THEN
1572
1573 IF MRP_Validate.Bom_Revision(g_flow_schedule_rec.bom_revision)
1574 THEN
1575 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1576 ( p_attr_id => MRP_Flow_Schedule_Util.G_BOM_REVISION
1577 , p_flow_schedule_rec => g_flow_schedule_rec
1578 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1579 , x_flow_schedule_rec => g_flow_schedule_rec
1580 );
1581 ELSE
1582 g_flow_schedule_rec.bom_revision := NULL;
1583 END IF;
1584
1585 END IF;
1586
1587 END IF;
1588
1589
1590 IF g_flow_schedule_rec.build_sequence = FND_API.G_MISS_NUM OR g_flow_schedule_rec.build_sequence IS NULL THEN
1591
1592 g_flow_schedule_rec.build_sequence := Get_Build_Sequence;
1593
1594 IF g_flow_schedule_rec.build_sequence IS NOT NULL THEN
1595
1596 IF MRP_Validate.Build_Sequence(g_flow_schedule_rec.build_sequence)
1597 THEN
1598 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1599 ( p_attr_id => MRP_Flow_Schedule_Util.G_BUILD_SEQUENCE
1600 , p_flow_schedule_rec => g_flow_schedule_rec
1601 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1602 , x_flow_schedule_rec => g_flow_schedule_rec
1603 );
1604 ELSE
1605 g_flow_schedule_rec.build_sequence := NULL;
1606 END IF;
1607
1608 END IF;
1609
1610 END IF;
1611
1612 IF g_flow_schedule_rec.class_code = FND_API.G_MISS_CHAR OR g_flow_schedule_rec.class_code IS NULL THEN
1613
1614 g_flow_schedule_rec.class_code := Get_Class;
1615
1616 IF g_flow_schedule_rec.class_code IS NOT NULL THEN
1617
1618 IF MRP_Validate.Class(g_flow_schedule_rec.class_code)
1619 THEN
1620 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1621 ( p_attr_id => MRP_Flow_Schedule_Util.G_CLASS
1622 , p_flow_schedule_rec => g_flow_schedule_rec
1623 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1624 , x_flow_schedule_rec => g_flow_schedule_rec
1625 );
1626 ELSE
1627 g_flow_schedule_rec.class_code := NULL;
1628 END IF;
1629
1630 END IF;
1631
1632 END IF;
1633
1634 IF g_flow_schedule_rec.completion_locator_id = FND_API.G_MISS_NUM OR g_flow_schedule_rec.completion_locator_id IS NULL THEN
1635
1636 g_flow_schedule_rec.completion_locator_id := Get_Completion_Locator;
1637
1638 IF g_flow_schedule_rec.completion_locator_id IS NOT NULL THEN
1639
1640 IF MRP_Validate.Completion_Locator(g_flow_schedule_rec.completion_locator_id)
1641 THEN
1642 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1643 ( p_attr_id => MRP_Flow_Schedule_Util.G_COMPLETION_LOCATOR
1644 , p_flow_schedule_rec => g_flow_schedule_rec
1645 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1646 , x_flow_schedule_rec => g_flow_schedule_rec
1647 );
1648 ELSE
1649 g_flow_schedule_rec.completion_locator_id := NULL;
1650 END IF;
1651
1652 END IF;
1653
1654 END IF;
1655
1656 IF g_flow_schedule_rec.completion_subinventory = FND_API.G_MISS_CHAR OR g_flow_schedule_rec.completion_subinventory IS NULL THEN
1657
1661
1658 g_flow_schedule_rec.completion_subinventory := Get_Completion_Subinventory;
1659
1660 IF g_flow_schedule_rec.completion_subinventory IS NOT NULL THEN
1662 IF MRP_Validate.Completion_Subinventory(g_flow_schedule_rec.completion_subinventory)
1663 THEN
1664 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1665 ( p_attr_id => MRP_Flow_Schedule_Util.G_COMPLETION_SUBINVENTORY
1666 , p_flow_schedule_rec => g_flow_schedule_rec
1667 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1668 , x_flow_schedule_rec => g_flow_schedule_rec
1669 );
1670 ELSE
1671 g_flow_schedule_rec.completion_subinventory := NULL;
1672 END IF;
1673
1674 END IF;
1675
1676 END IF;
1677
1678 IF g_flow_schedule_rec.date_closed = FND_API.G_MISS_DATE OR g_flow_schedule_rec.date_closed IS NULL THEN
1679
1680 g_flow_schedule_rec.date_closed := Get_Date_Closed;
1681
1682 IF g_flow_schedule_rec.date_closed IS NOT NULL THEN
1683
1684 IF MRP_Validate.Date_Closed(g_flow_schedule_rec.date_closed)
1685 THEN
1686 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1687 ( p_attr_id => MRP_Flow_Schedule_Util.G_DATE_CLOSED
1688 , p_flow_schedule_rec => g_flow_schedule_rec
1689 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1690 , x_flow_schedule_rec => g_flow_schedule_rec
1691 );
1692 ELSE
1693 g_flow_schedule_rec.date_closed := NULL;
1694 END IF;
1695
1696 END IF;
1697
1698 END IF;
1699
1700 IF g_flow_schedule_rec.demand_class = FND_API.G_MISS_CHAR OR g_flow_schedule_rec.demand_class IS NULL THEN
1701
1702 g_flow_schedule_rec.demand_class := Get_Demand_Class;
1703
1704 IF g_flow_schedule_rec.demand_class IS NOT NULL THEN
1705
1706 IF MRP_Validate.Demand_Class(g_flow_schedule_rec.demand_class)
1707 THEN
1708 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1709 ( p_attr_id => MRP_Flow_Schedule_Util.G_DEMAND_CLASS
1710 , p_flow_schedule_rec => g_flow_schedule_rec
1711 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1712 , x_flow_schedule_rec => g_flow_schedule_rec
1713 );
1714 ELSE
1715 g_flow_schedule_rec.demand_class := NULL;
1716 END IF;
1717
1718 END IF;
1719
1720 END IF;
1721
1722 IF g_flow_schedule_rec.end_item_unit_number = FND_API.G_MISS_CHAR OR g_flow_schedule_rec.end_item_unit_number IS NULL THEN
1723
1724 g_flow_schedule_rec.end_item_unit_number := Get_end_item_unit_number;
1725
1726 IF g_flow_schedule_rec.end_item_unit_number IS NOT NULL THEN
1727
1728 IF MRP_Validate.end_item_unit_number(g_flow_schedule_rec.end_item_unit_number)
1729 THEN
1730 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1731 ( p_attr_id => MRP_Flow_Schedule_Util.G_END_ITEM_UNIT_NUMBER
1732 , p_flow_schedule_rec => g_flow_schedule_rec
1733 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1734 , x_flow_schedule_rec => g_flow_schedule_rec
1735 );
1736 ELSE
1737 g_flow_schedule_rec.end_item_unit_number := NULL;
1738 END IF;
1739
1740 END IF;
1741
1742 END IF;
1743
1744 IF g_flow_schedule_rec.quantity_scrapped = FND_API.G_MISS_NUM or g_flow_schedule_rec.quantity_scrapped IS NULL THEN
1745
1746 g_flow_schedule_rec.quantity_scrapped := Get_quantity_scrapped;
1747
1748 IF g_flow_schedule_rec.quantity_scrapped IS NOT NULL THEN
1749
1750 IF MRP_Validate.quantity_scrapped(g_flow_schedule_rec.quantity_scrapped)
1751 THEN
1752 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1753 ( p_attr_id => MRP_Flow_Schedule_Util.G_quantity_scrapped
1754 , p_flow_schedule_rec => g_flow_schedule_rec
1755 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1756 , x_flow_schedule_rec => g_flow_schedule_rec
1757 );
1758 ELSE
1759 g_flow_schedule_rec.quantity_scrapped := NULL;
1760 END IF;
1761
1762 END IF;
1763
1764 END IF;
1765
1766 IF g_flow_schedule_rec.demand_source_delivery = FND_API.G_MISS_CHAR OR g_flow_schedule_rec.demand_source_delivery IS NULL THEN
1767
1768 g_flow_schedule_rec.demand_source_delivery := Get_Demand_Source_Delivery;
1769
1770 IF g_flow_schedule_rec.demand_source_delivery IS NOT NULL THEN
1771
1772 IF MRP_Validate.Demand_Source_Delivery(g_flow_schedule_rec.demand_source_delivery)
1773 THEN
1774 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1778 , x_flow_schedule_rec => g_flow_schedule_rec
1775 ( p_attr_id => MRP_Flow_Schedule_Util.G_DEMAND_SOURCE_DELIVERY
1776 , p_flow_schedule_rec => g_flow_schedule_rec
1777 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1779 );
1780 ELSE
1781 g_flow_schedule_rec.demand_source_delivery := NULL;
1782 END IF;
1783
1784 END IF;
1785
1786 END IF;
1787
1788 IF g_flow_schedule_rec.demand_source_header_id = FND_API.G_MISS_NUM OR g_flow_schedule_rec.demand_source_header_id IS NULL THEN
1789
1790 g_flow_schedule_rec.demand_source_header_id := Get_Demand_Source_Header;
1791
1792 IF g_flow_schedule_rec.demand_source_header_id IS NOT NULL THEN
1793
1794 IF MRP_Validate.Demand_Source_Header(g_flow_schedule_rec.demand_source_header_id)
1795 THEN
1796 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1797 ( p_attr_id => MRP_Flow_Schedule_Util.G_DEMAND_SOURCE_HEADER
1798 , p_flow_schedule_rec => g_flow_schedule_rec
1799 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1800 , x_flow_schedule_rec => g_flow_schedule_rec
1801 );
1802 ELSE
1803 g_flow_schedule_rec.demand_source_header_id := NULL;
1804 END IF;
1805
1806 END IF;
1807
1808 END IF;
1809
1810 IF g_flow_schedule_rec.demand_source_line = FND_API.G_MISS_CHAR OR g_flow_schedule_rec.demand_source_line IS NULL THEN
1811
1812 g_flow_schedule_rec.demand_source_line := Get_Demand_Source_Line;
1813
1814 IF g_flow_schedule_rec.demand_source_line IS NOT NULL THEN
1815
1816 IF MRP_Validate.Demand_Source_Line(g_flow_schedule_rec.demand_source_line)
1817 THEN
1818 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1819 ( p_attr_id => MRP_Flow_Schedule_Util.G_DEMAND_SOURCE_LINE
1820 , p_flow_schedule_rec => g_flow_schedule_rec
1821 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1822 , x_flow_schedule_rec => g_flow_schedule_rec
1823 );
1824 ELSE
1825 g_flow_schedule_rec.demand_source_line := NULL;
1826 END IF;
1827
1828 END IF;
1829
1830 END IF;
1831
1832 IF g_flow_schedule_rec.demand_source_type = FND_API.G_MISS_NUM OR g_flow_schedule_rec.demand_source_type IS NULL THEN
1833
1834 g_flow_schedule_rec.demand_source_type := Get_Demand_Source_Type;
1835
1836 IF g_flow_schedule_rec.demand_source_type IS NOT NULL THEN
1837
1838 IF MRP_Validate.Demand_Source_Type(g_flow_schedule_rec.demand_source_type)
1839 THEN
1840 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1841 ( p_attr_id => MRP_Flow_Schedule_Util.G_DEMAND_SOURCE_TYPE
1842 , p_flow_schedule_rec => g_flow_schedule_rec
1843 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1844 , x_flow_schedule_rec => g_flow_schedule_rec
1845 );
1846 ELSE
1847 g_flow_schedule_rec.demand_source_type := NULL;
1848 END IF;
1849
1850 END IF;
1851
1852 END IF;
1853
1854 IF g_flow_schedule_rec.line_id = FND_API.G_MISS_NUM OR g_flow_schedule_rec.line_id IS NULL THEN
1855
1856 g_flow_schedule_rec.line_id := Get_Line;
1857
1858 IF g_flow_schedule_rec.line_id IS NOT NULL THEN
1859
1860 IF MRP_Validate.Line(g_flow_schedule_rec.line_id)
1861 THEN
1862 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1863 ( p_attr_id => MRP_Flow_Schedule_Util.G_LINE
1864 , p_flow_schedule_rec => g_flow_schedule_rec
1865 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1866 , x_flow_schedule_rec => g_flow_schedule_rec
1867 );
1868 ELSE
1869 g_flow_schedule_rec.line_id := NULL;
1870 END IF;
1871
1872 END IF;
1873
1874 END IF;
1875
1876 IF g_flow_schedule_rec.material_account = FND_API.G_MISS_NUM OR g_flow_schedule_rec.material_account IS NULL THEN
1877
1878 g_flow_schedule_rec.material_account := Get_Material_Account;
1879
1880 IF g_flow_schedule_rec.material_account IS NOT NULL THEN
1881
1882 IF MRP_Validate.Material_Account(g_flow_schedule_rec.material_account)
1883 THEN
1884 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1885 ( p_attr_id => MRP_Flow_Schedule_Util.G_MATERIAL_ACCOUNT
1886 , p_flow_schedule_rec => g_flow_schedule_rec
1887 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1888 , x_flow_schedule_rec => g_flow_schedule_rec
1889 );
1890 ELSE
1891 g_flow_schedule_rec.material_account := NULL;
1892 END IF;
1893
1894 END IF;
1895
1899
1896 END IF;
1897
1898 IF g_flow_schedule_rec.material_overhead_account = FND_API.G_MISS_NUM OR g_flow_schedule_rec.material_overhead_account IS NULL THEN
1900 g_flow_schedule_rec.material_overhead_account := Get_Material_Overhead_Account;
1901
1902 IF g_flow_schedule_rec.material_overhead_account IS NOT NULL THEN
1903
1904 IF MRP_Validate.Material_Overhead_Account(g_flow_schedule_rec.material_overhead_account)
1905 THEN
1906 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1907 ( p_attr_id => MRP_Flow_Schedule_Util.G_MATERIAL_OVERHEAD_ACCOUNT
1908 , p_flow_schedule_rec => g_flow_schedule_rec
1909 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1910 , x_flow_schedule_rec => g_flow_schedule_rec
1911 );
1912 ELSE
1913 g_flow_schedule_rec.material_overhead_account := NULL;
1914 END IF;
1915
1916 END IF;
1917
1918 END IF;
1919
1920 IF g_flow_schedule_rec.material_variance_account = FND_API.G_MISS_NUM OR g_flow_schedule_rec.material_variance_account IS NULL THEN
1921
1922 g_flow_schedule_rec.material_variance_account := Get_Material_Variance_Account;
1923
1924 IF g_flow_schedule_rec.material_variance_account IS NOT NULL THEN
1925
1926 IF MRP_Validate.Material_Variance_Account(g_flow_schedule_rec.material_variance_account)
1927 THEN
1928 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1929 ( p_attr_id => MRP_Flow_Schedule_Util.G_MATERIAL_VARIANCE_ACCOUNT
1930 , p_flow_schedule_rec => g_flow_schedule_rec
1931 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1932 , x_flow_schedule_rec => g_flow_schedule_rec
1933 );
1934 ELSE
1935 g_flow_schedule_rec.material_variance_account := NULL;
1936 END IF;
1937
1938 END IF;
1939
1940 END IF;
1941
1942 IF g_flow_schedule_rec.mps_net_quantity = FND_API.G_MISS_NUM OR g_flow_schedule_rec.mps_net_quantity IS NULL THEN
1943
1944 g_flow_schedule_rec.mps_net_quantity := Get_Mps_Net_Quantity;
1945
1946 IF g_flow_schedule_rec.mps_net_quantity IS NOT NULL THEN
1947
1948 IF MRP_Validate.Mps_Net_Quantity(g_flow_schedule_rec.mps_net_quantity)
1949 THEN
1950 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1951 ( p_attr_id => MRP_Flow_Schedule_Util.G_MPS_NET_QUANTITY
1952 , p_flow_schedule_rec => g_flow_schedule_rec
1953 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1954 , x_flow_schedule_rec => g_flow_schedule_rec
1955 );
1956 ELSE
1957 g_flow_schedule_rec.mps_net_quantity := NULL;
1958 END IF;
1959
1960 END IF;
1961
1962 END IF;
1963
1964 IF g_flow_schedule_rec.mps_scheduled_comp_date = FND_API.G_MISS_DATE OR g_flow_schedule_rec.mps_scheduled_comp_date IS NULL THEN
1965
1966 g_flow_schedule_rec.mps_scheduled_comp_date := Get_Mps_Scheduled_Comp_Date;
1967
1968 IF g_flow_schedule_rec.mps_scheduled_comp_date IS NOT NULL THEN
1969
1970 IF MRP_Validate.Mps_Scheduled_Comp_Date(g_flow_schedule_rec.mps_scheduled_comp_date)
1971 THEN
1972 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1973 ( p_attr_id => MRP_Flow_Schedule_Util.G_MPS_SCHEDULED_COMP_DATE
1974 , p_flow_schedule_rec => g_flow_schedule_rec
1975 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1976 , x_flow_schedule_rec => g_flow_schedule_rec
1977 );
1978 ELSE
1979 g_flow_schedule_rec.mps_scheduled_comp_date := NULL;
1980 END IF;
1981
1982 END IF;
1983
1984 END IF;
1985
1986 IF g_flow_schedule_rec.organization_id = FND_API.G_MISS_NUM OR g_flow_schedule_rec.organization_id IS NULL THEN
1987
1988 g_flow_schedule_rec.organization_id := Get_Organization;
1989
1990 IF g_flow_schedule_rec.organization_id IS NOT NULL THEN
1991
1992 IF MRP_Validate.Organization(g_flow_schedule_rec.organization_id)
1993 THEN
1994 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1995 ( p_attr_id => MRP_Flow_Schedule_Util.G_ORGANIZATION
1996 , p_flow_schedule_rec => g_flow_schedule_rec
1997 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1998 , x_flow_schedule_rec => g_flow_schedule_rec
1999 );
2000 ELSE
2001 g_flow_schedule_rec.organization_id := NULL;
2002 END IF;
2003
2004 END IF;
2005
2006 END IF;
2007
2008 IF g_flow_schedule_rec.outside_processing_acct = FND_API.G_MISS_NUM OR g_flow_schedule_rec.outside_processing_acct IS NULL THEN
2009
2010 g_flow_schedule_rec.outside_processing_acct := Get_Outside_Processing_Acct;
2011
2012 IF g_flow_schedule_rec.outside_processing_acct IS NOT NULL THEN
2013
2017 ( p_attr_id => MRP_Flow_Schedule_Util.G_OUTSIDE_PROCESSING_ACCT
2014 IF MRP_Validate.Outside_Processing_Acct(g_flow_schedule_rec.outside_processing_acct)
2015 THEN
2016 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2018 , p_flow_schedule_rec => g_flow_schedule_rec
2019 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2020 , x_flow_schedule_rec => g_flow_schedule_rec
2021 );
2022 ELSE
2023 g_flow_schedule_rec.outside_processing_acct := NULL;
2024 END IF;
2025
2026 END IF;
2027
2028 END IF;
2029
2030 IF g_flow_schedule_rec.outside_proc_var_acct = FND_API.G_MISS_NUM OR g_flow_schedule_rec.outside_proc_var_acct IS NULL THEN
2031
2032 g_flow_schedule_rec.outside_proc_var_acct := Get_Outside_Proc_Var_Acct;
2033
2034 IF g_flow_schedule_rec.outside_proc_var_acct IS NOT NULL THEN
2035
2036 IF MRP_Validate.Outside_Proc_Var_Acct(g_flow_schedule_rec.outside_proc_var_acct)
2037 THEN
2038 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2039 ( p_attr_id => MRP_Flow_Schedule_Util.G_OUTSIDE_PROC_VAR_ACCT
2040 , p_flow_schedule_rec => g_flow_schedule_rec
2041 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2042 , x_flow_schedule_rec => g_flow_schedule_rec
2043 );
2044 ELSE
2045 g_flow_schedule_rec.outside_proc_var_acct := NULL;
2046 END IF;
2047
2048 END IF;
2049
2050 END IF;
2051
2052 IF g_flow_schedule_rec.overhead_account = FND_API.G_MISS_NUM OR g_flow_schedule_rec.overhead_account IS NULL THEN
2053
2054 g_flow_schedule_rec.overhead_account := Get_Overhead_Account;
2055
2056 IF g_flow_schedule_rec.overhead_account IS NOT NULL THEN
2057
2058 IF MRP_Validate.Overhead_Account(g_flow_schedule_rec.overhead_account)
2059 THEN
2060 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2061 ( p_attr_id => MRP_Flow_Schedule_Util.G_OVERHEAD_ACCOUNT
2062 , p_flow_schedule_rec => g_flow_schedule_rec
2063 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2064 , x_flow_schedule_rec => g_flow_schedule_rec
2065 );
2066 ELSE
2067 g_flow_schedule_rec.overhead_account := NULL;
2068 END IF;
2069
2070 END IF;
2071
2072 END IF;
2073
2074 IF g_flow_schedule_rec.overhead_variance_account = FND_API.G_MISS_NUM OR g_flow_schedule_rec.overhead_variance_account IS NULL THEN
2075
2076 g_flow_schedule_rec.overhead_variance_account := Get_Overhead_Variance_Account;
2077
2078 IF g_flow_schedule_rec.overhead_variance_account IS NOT NULL THEN
2079
2080 IF MRP_Validate.Overhead_Variance_Account(g_flow_schedule_rec.overhead_variance_account)
2081 THEN
2082 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2083 ( p_attr_id => MRP_Flow_Schedule_Util.G_OVERHEAD_VARIANCE_ACCOUNT
2084 , p_flow_schedule_rec => g_flow_schedule_rec
2085 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2086 , x_flow_schedule_rec => g_flow_schedule_rec
2087 );
2088 ELSE
2089 g_flow_schedule_rec.overhead_variance_account := NULL;
2090 END IF;
2091
2092 END IF;
2093
2094 END IF;
2095
2096 IF g_flow_schedule_rec.planned_quantity = FND_API.G_MISS_NUM OR g_flow_schedule_rec.planned_quantity IS NULL THEN
2097
2098 g_flow_schedule_rec.planned_quantity := Get_Planned_Quantity;
2099
2100 IF g_flow_schedule_rec.planned_quantity IS NOT NULL THEN
2101
2102 IF MRP_Validate.Planned_Quantity(g_flow_schedule_rec.planned_quantity)
2103 THEN
2104 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2105 ( p_attr_id => MRP_Flow_Schedule_Util.G_PLANNED_QUANTITY
2106 , p_flow_schedule_rec => g_flow_schedule_rec
2107 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2108 , x_flow_schedule_rec => g_flow_schedule_rec
2109 );
2110 ELSE
2111 g_flow_schedule_rec.planned_quantity := NULL;
2112 END IF;
2113
2114 END IF;
2115
2116 END IF;
2117
2118 IF g_flow_schedule_rec.primary_item_id = FND_API.G_MISS_NUM OR g_flow_schedule_rec.primary_item_id IS NULL THEN
2119
2120 g_flow_schedule_rec.primary_item_id := Get_Primary_Item;
2121
2122 IF g_flow_schedule_rec.primary_item_id IS NOT NULL THEN
2123
2124 IF MRP_Validate.Primary_Item(g_flow_schedule_rec.primary_item_id)
2125 THEN
2126 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2127 ( p_attr_id => MRP_Flow_Schedule_Util.G_PRIMARY_ITEM
2131 );
2128 , p_flow_schedule_rec => g_flow_schedule_rec
2129 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2130 , x_flow_schedule_rec => g_flow_schedule_rec
2132 ELSE
2133 g_flow_schedule_rec.primary_item_id := NULL;
2134 END IF;
2135
2136 END IF;
2137
2138 END IF;
2139
2140 IF g_flow_schedule_rec.project_id = FND_API.G_MISS_NUM OR g_flow_schedule_rec.project_id IS NULL THEN
2141
2142 g_flow_schedule_rec.project_id := Get_Project;
2143
2144 IF g_flow_schedule_rec.project_id IS NOT NULL THEN
2145
2146 IF MRP_Validate.Project(g_flow_schedule_rec.project_id)
2147 THEN
2148 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2149 ( p_attr_id => MRP_Flow_Schedule_Util.G_PROJECT
2150 , p_flow_schedule_rec => g_flow_schedule_rec
2151 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2152 , x_flow_schedule_rec => g_flow_schedule_rec
2153 );
2154 ELSE
2155 g_flow_schedule_rec.project_id := NULL;
2156 END IF;
2157
2158 END IF;
2159
2160 END IF;
2161
2162 IF g_flow_schedule_rec.quantity_completed = FND_API.G_MISS_NUM OR g_flow_schedule_rec.quantity_completed IS NULL THEN
2163
2164 g_flow_schedule_rec.quantity_completed := Get_Quantity_Completed;
2165
2166 IF g_flow_schedule_rec.quantity_completed IS NOT NULL THEN
2167
2168 IF MRP_Validate.Quantity_Completed(g_flow_schedule_rec.quantity_completed)
2169 THEN
2170 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2171 ( p_attr_id => MRP_Flow_Schedule_Util.G_QUANTITY_COMPLETED
2172 , p_flow_schedule_rec => g_flow_schedule_rec
2173 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2174 , x_flow_schedule_rec => g_flow_schedule_rec
2175 );
2176 ELSE
2177 g_flow_schedule_rec.quantity_completed := NULL;
2178 END IF;
2179
2180 END IF;
2181
2182 END IF;
2183
2184 IF g_flow_schedule_rec.request_id = FND_API.G_MISS_NUM OR g_flow_schedule_rec.request_id IS NULL THEN
2185
2186 -- bug 4529167
2187 -- g_flow_schedule_rec.request_id := Get_Request_Id;
2188 g_flow_schedule_rec.request_id := null;
2189
2190 END IF;
2191
2192 IF g_flow_schedule_rec.resource_account = FND_API.G_MISS_NUM OR g_flow_schedule_rec.resource_account IS NULL THEN
2193
2194 g_flow_schedule_rec.resource_account := Get_Resource_Account;
2195
2196 IF g_flow_schedule_rec.resource_account IS NOT NULL THEN
2197
2198 IF MRP_Validate.Resource_Account(g_flow_schedule_rec.resource_account)
2199 THEN
2200 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2201 ( p_attr_id => MRP_Flow_Schedule_Util.G_RESOURCE_ACCOUNT
2202 , p_flow_schedule_rec => g_flow_schedule_rec
2203 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2204 , x_flow_schedule_rec => g_flow_schedule_rec
2205 );
2206 ELSE
2207 g_flow_schedule_rec.resource_account := NULL;
2208 END IF;
2209
2210 END IF;
2211
2212 END IF;
2213
2214 IF g_flow_schedule_rec.resource_variance_account = FND_API.G_MISS_NUM OR g_flow_schedule_rec.resource_variance_account IS NULL THEN
2215
2216 g_flow_schedule_rec.resource_variance_account := Get_Resource_Variance_Account;
2217
2218 IF g_flow_schedule_rec.resource_variance_account IS NOT NULL THEN
2219
2220 IF MRP_Validate.Resource_Variance_Account(g_flow_schedule_rec.resource_variance_account)
2221 THEN
2222 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2223 ( p_attr_id => MRP_Flow_Schedule_Util.G_RESOURCE_VARIANCE_ACCOUNT
2224 , p_flow_schedule_rec => g_flow_schedule_rec
2225 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2226 , x_flow_schedule_rec => g_flow_schedule_rec
2227 );
2228 ELSE
2229 g_flow_schedule_rec.resource_variance_account := NULL;
2230 END IF;
2231
2232 END IF;
2233
2234 END IF;
2235
2236 /* Fix for bug 2977987: Moved this code to ensure that routing_revision is calculated after calculating
2237 routing_revision_date
2238
2239 IF g_flow_schedule_rec.routing_revision = FND_API.G_MISS_CHAR OR g_flow_schedule_rec.routing_revision IS NULL THEN
2240
2241 g_flow_schedule_rec.routing_revision := Get_Routing_Revision;
2242
2243 IF g_flow_schedule_rec.routing_revision IS NOT NULL THEN
2244
2245 IF MRP_Validate.Routing_Revision(g_flow_schedule_rec.routing_revision)
2246 THEN
2247 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2251 , x_flow_schedule_rec => g_flow_schedule_rec
2248 ( p_attr_id => MRP_Flow_Schedule_Util.G_ROUTING_REVISION
2249 , p_flow_schedule_rec => g_flow_schedule_rec
2250 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2252 );
2253 ELSE
2254 g_flow_schedule_rec.routing_revision := NULL;
2255 END IF;
2256
2257 END IF;
2258
2259 END IF;
2260 */
2261
2262 IF g_flow_schedule_rec.routing_revision_date = FND_API.G_MISS_DATE OR g_flow_schedule_rec.routing_revision_date IS NULL THEN
2263
2264 g_flow_schedule_rec.routing_revision_date := Get_Routing_Revision_Date;
2265
2266 IF g_flow_schedule_rec.routing_revision_date IS NOT NULL THEN
2267
2268 IF MRP_Validate.Routing_Revision_Date(g_flow_schedule_rec.routing_revision_date)
2269 THEN
2270 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2271 ( p_attr_id => MRP_Flow_Schedule_Util.G_ROUTING_REVISION_DATE
2272 , p_flow_schedule_rec => g_flow_schedule_rec
2273 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2274 , x_flow_schedule_rec => g_flow_schedule_rec
2275 );
2276 ELSE
2277 g_flow_schedule_rec.routing_revision_date := NULL;
2278 END IF;
2279
2280 END IF;
2281
2282 END IF;
2283
2284 /* Fix for bug 2977987: routing_revision is being calculated after calculating routing_revision_date */
2285
2286 IF g_flow_schedule_rec.routing_revision = FND_API.G_MISS_CHAR OR g_flow_schedule_rec.routing_revision IS NULL THEN
2287
2288 g_flow_schedule_rec.routing_revision := Get_Routing_Revision;
2289
2290 IF g_flow_schedule_rec.routing_revision IS NOT NULL THEN
2291
2292 IF MRP_Validate.Routing_Revision(g_flow_schedule_rec.routing_revision)
2293 THEN
2294 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2295 ( p_attr_id => MRP_Flow_Schedule_Util.G_ROUTING_REVISION
2296 , p_flow_schedule_rec => g_flow_schedule_rec
2297 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2298 , x_flow_schedule_rec => g_flow_schedule_rec
2299 );
2300 ELSE
2301 g_flow_schedule_rec.routing_revision := NULL;
2302 END IF;
2303
2304 END IF;
2305
2306 END IF;
2307
2308 IF g_flow_schedule_rec.scheduled_completion_date = FND_API.G_MISS_DATE OR g_flow_schedule_rec.scheduled_completion_date IS NULL THEN
2309
2310 g_flow_schedule_rec.scheduled_completion_date := Get_Scheduled_Completion_Date;
2311
2312 IF g_flow_schedule_rec.scheduled_completion_date IS NOT NULL THEN
2313
2314 IF MRP_Validate.Scheduled_Completion_Date(g_flow_schedule_rec.scheduled_completion_date)
2315 THEN
2316 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2317 ( p_attr_id => MRP_Flow_Schedule_Util.G_SCHEDULED_COMPLETION_DATE
2318 , p_flow_schedule_rec => g_flow_schedule_rec
2319 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2320 , x_flow_schedule_rec => g_flow_schedule_rec
2321 );
2322 ELSE
2326 END IF;
2323 g_flow_schedule_rec.scheduled_completion_date := NULL;
2324 END IF;
2325
2327
2328 END IF;
2329
2330 IF g_flow_schedule_rec.scheduled_flag = FND_API.G_MISS_NUM or g_flow_schedule_rec.scheduled_flag IS NULL THEN
2331
2332 g_flow_schedule_rec.scheduled_flag := Get_Scheduled;
2333
2334 IF g_flow_schedule_rec.scheduled_flag IS NOT NULL THEN
2335
2336 IF MRP_Validate.Scheduled(g_flow_schedule_rec.scheduled_flag)
2337 THEN
2338 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2339 ( p_attr_id => MRP_Flow_Schedule_Util.G_SCHEDULED
2340 , p_flow_schedule_rec => g_flow_schedule_rec
2341 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2342 , x_flow_schedule_rec => g_flow_schedule_rec
2343 );
2344 ELSE
2345 g_flow_schedule_rec.scheduled_flag := NULL;
2346 END IF;
2347
2348 END IF;
2349
2350 END IF;
2351
2352 IF g_flow_schedule_rec.scheduled_start_date = FND_API.G_MISS_DATE OR g_flow_schedule_rec.scheduled_start_date IS NULL THEN
2353
2354 g_flow_schedule_rec.scheduled_start_date := Get_Scheduled_Start_Date;
2355
2356 IF g_flow_schedule_rec.scheduled_start_date IS NOT NULL THEN
2357
2358 IF MRP_Validate.Scheduled_Start_Date(g_flow_schedule_rec.scheduled_start_date)
2359 THEN
2360 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2361 ( p_attr_id => MRP_Flow_Schedule_Util.G_SCHEDULED_START_DATE
2362 , p_flow_schedule_rec => g_flow_schedule_rec
2363 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2364 , x_flow_schedule_rec => g_flow_schedule_rec
2365 );
2366 ELSE
2367 g_flow_schedule_rec.scheduled_start_date := NULL;
2368 END IF;
2369
2370 END IF;
2371
2372 END IF;
2373
2374 IF g_flow_schedule_rec.schedule_group_id = FND_API.G_MISS_NUM OR g_flow_schedule_rec.schedule_group_id IS NULL THEN
2375
2376 g_flow_schedule_rec.schedule_group_id := Get_Schedule_Group;
2377
2378 IF g_flow_schedule_rec.schedule_group_id IS NOT NULL THEN
2379
2380 IF MRP_Validate.Schedule_Group(g_flow_schedule_rec.schedule_group_id)
2381 THEN
2382 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2383 ( p_attr_id => MRP_Flow_Schedule_Util.G_SCHEDULE_GROUP
2384 , p_flow_schedule_rec => g_flow_schedule_rec
2385 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2386 , x_flow_schedule_rec => g_flow_schedule_rec
2387 );
2388 ELSE
2389 g_flow_schedule_rec.schedule_group_id := NULL;
2390 END IF;
2391
2392 END IF;
2393
2394 END IF;
2395
2396 IF g_flow_schedule_rec.schedule_number = FND_API.G_MISS_CHAR OR g_flow_schedule_rec.schedule_number IS NULL THEN
2397
2398 g_flow_schedule_rec.schedule_number := Get_Schedule_Number;
2399
2400 IF g_flow_schedule_rec.schedule_number IS NOT NULL THEN
2401
2402 IF MRP_Validate.Schedule_Number(g_flow_schedule_rec.schedule_number)
2403 THEN
2404 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2405 ( p_attr_id => MRP_Flow_Schedule_Util.G_SCHEDULE_NUMBER
2406 , p_flow_schedule_rec => g_flow_schedule_rec
2407 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2408 , x_flow_schedule_rec => g_flow_schedule_rec
2409 );
2410 ELSE
2411 g_flow_schedule_rec.schedule_number := NULL;
2412 END IF;
2413
2414 END IF;
2415
2416 END IF;
2417
2418 IF g_flow_schedule_rec.status = FND_API.G_MISS_NUM OR g_flow_schedule_rec.status IS NULL THEN
2419
2420 g_flow_schedule_rec.status := Get_Status;
2421
2422 IF g_flow_schedule_rec.status IS NOT NULL THEN
2423
2424 IF MRP_Validate.Status(g_flow_schedule_rec.status)
2425 THEN
2426 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2427 ( p_attr_id => MRP_Flow_Schedule_Util.G_STATUS
2428 , p_flow_schedule_rec => g_flow_schedule_rec
2429 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2430 , x_flow_schedule_rec => g_flow_schedule_rec
2431 );
2432 ELSE
2433 g_flow_schedule_rec.status := NULL;
2434 END IF;
2435
2436 END IF;
2437
2438 END IF;
2439
2440 IF g_flow_schedule_rec.std_cost_adjustment_acct = FND_API.G_MISS_NUM OR g_flow_schedule_rec.std_cost_adjustment_acct IS NULL THEN
2441
2442 g_flow_schedule_rec.std_cost_adjustment_acct := Get_Std_Cost_Adjustment_Acct;
2443
2444 IF g_flow_schedule_rec.std_cost_adjustment_acct IS NOT NULL THEN
2445
2449 ( p_attr_id => MRP_Flow_Schedule_Util.G_STD_COST_ADJUSTMENT_ACCT
2446 IF MRP_Validate.Std_Cost_Adjustment_Acct(g_flow_schedule_rec.std_cost_adjustment_acct)
2447 THEN
2448 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2450 , p_flow_schedule_rec => g_flow_schedule_rec
2451 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2452 , x_flow_schedule_rec => g_flow_schedule_rec
2453 );
2454 ELSE
2455 g_flow_schedule_rec.std_cost_adjustment_acct := NULL;
2456 END IF;
2457
2458 END IF;
2459
2460 END IF;
2461
2462 IF g_flow_schedule_rec.task_id = FND_API.G_MISS_NUM OR g_flow_schedule_rec.task_id IS NULL THEN
2463
2464 g_flow_schedule_rec.task_id := Get_Task;
2465
2466 IF g_flow_schedule_rec.task_id IS NOT NULL THEN
2467
2468 IF MRP_Validate.Task(g_flow_schedule_rec.task_id)
2469 THEN
2470 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2471 ( p_attr_id => MRP_Flow_Schedule_Util.G_TASK
2472 , p_flow_schedule_rec => g_flow_schedule_rec
2473 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2474 , x_flow_schedule_rec => g_flow_schedule_rec
2475 );
2476 ELSE
2477 g_flow_schedule_rec.task_id := NULL;
2478 END IF;
2479
2480 END IF;
2481
2482 END IF;
2483
2484 IF g_flow_schedule_rec.wip_entity_id = FND_API.G_MISS_NUM OR g_flow_schedule_rec.wip_entity_id IS NULL THEN
2485
2486 g_flow_schedule_rec.wip_entity_id := Get_Wip_Entity;
2487
2488 IF g_flow_schedule_rec.wip_entity_id IS NOT NULL THEN
2489
2490 IF MRP_Validate.Wip_Entity(g_flow_schedule_rec.wip_entity_id)
2491 THEN
2492 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2493 ( p_attr_id => MRP_Flow_Schedule_Util.G_WIP_ENTITY
2494 , p_flow_schedule_rec => g_flow_schedule_rec
2495 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2496 , x_flow_schedule_rec => g_flow_schedule_rec
2497 );
2498 ELSE
2499 g_flow_schedule_rec.wip_entity_id := NULL;
2500 END IF;
2501
2502 END IF;
2503
2504 END IF;
2505
2506 IF g_flow_schedule_rec.attribute1 = FND_API.G_MISS_CHAR
2507 OR g_flow_schedule_rec.attribute10 = FND_API.G_MISS_CHAR
2508 OR g_flow_schedule_rec.attribute11 = FND_API.G_MISS_CHAR
2509 OR g_flow_schedule_rec.attribute12 = FND_API.G_MISS_CHAR
2510 OR g_flow_schedule_rec.attribute13 = FND_API.G_MISS_CHAR
2511 OR g_flow_schedule_rec.attribute14 = FND_API.G_MISS_CHAR
2512 OR g_flow_schedule_rec.attribute15 = FND_API.G_MISS_CHAR
2513 OR g_flow_schedule_rec.attribute2 = FND_API.G_MISS_CHAR
2514 OR g_flow_schedule_rec.attribute3 = FND_API.G_MISS_CHAR
2515 OR g_flow_schedule_rec.attribute4 = FND_API.G_MISS_CHAR
2516 OR g_flow_schedule_rec.attribute5 = FND_API.G_MISS_CHAR
2517 OR g_flow_schedule_rec.attribute6 = FND_API.G_MISS_CHAR
2518 OR g_flow_schedule_rec.attribute7 = FND_API.G_MISS_CHAR
2519 OR g_flow_schedule_rec.attribute8 = FND_API.G_MISS_CHAR
2520 OR g_flow_schedule_rec.attribute9 = FND_API.G_MISS_CHAR
2521 OR g_flow_schedule_rec.attribute_category = FND_API.G_MISS_CHAR
2522 THEN
2523
2524 Get_Flex_Wip_Flow_Schedule;
2525
2526 END IF;
2527
2528 IF g_flow_schedule_rec.created_by = FND_API.G_MISS_NUM THEN
2529
2530 g_flow_schedule_rec.created_by := NULL;
2531
2532 END IF;
2533
2534 IF g_flow_schedule_rec.creation_date = FND_API.G_MISS_DATE THEN
2535
2536 g_flow_schedule_rec.creation_date := NULL;
2537
2538 END IF;
2539
2540 IF g_flow_schedule_rec.last_updated_by = FND_API.G_MISS_NUM THEN
2541
2542 g_flow_schedule_rec.last_updated_by := NULL;
2543
2544 END IF;
2545
2546 IF g_flow_schedule_rec.last_update_date = FND_API.G_MISS_DATE THEN
2547
2548 g_flow_schedule_rec.last_update_date := NULL;
2549
2550 END IF;
2551
2552 IF g_flow_schedule_rec.last_update_login = FND_API.G_MISS_NUM THEN
2553
2554 g_flow_schedule_rec.last_update_login := NULL;
2555
2556 END IF;
2557
2558 IF g_flow_schedule_rec.program_application_id = FND_API.G_MISS_NUM THEN
2559
2560 g_flow_schedule_rec.program_application_id := NULL;
2561
2562 END IF;
2563
2564 IF g_flow_schedule_rec.program_id = FND_API.G_MISS_NUM THEN
2565
2566 g_flow_schedule_rec.program_id := NULL;
2567
2568 END IF;
2569
2570 IF g_flow_schedule_rec.program_update_date = FND_API.G_MISS_DATE THEN
2571
2572 g_flow_schedule_rec.program_update_date := NULL;
2573
2574 END IF;
2575
2576 IF g_flow_schedule_rec.request_id = FND_API.G_MISS_NUM THEN
2577
2578 g_flow_schedule_rec.request_id := NULL;
2579
2580 END IF;
2581
2582 IF g_flow_schedule_rec.kanban_card_id = FND_API.G_MISS_NUM THEN
2583
2584 g_flow_schedule_rec.kanban_card_id := NULL;
2585
2586 END IF;
2587
2588 -- Redefault if there are any missing attributes.
2589
2590 IF g_flow_schedule_rec.alternate_bom_designator = FND_API.G_MISS_CHAR
2591 OR g_flow_schedule_rec.alternate_routing_desig = FND_API.G_MISS_CHAR
2592 OR g_flow_schedule_rec.attribute1 = FND_API.G_MISS_CHAR
2593 OR g_flow_schedule_rec.attribute10 = FND_API.G_MISS_CHAR
2594 OR g_flow_schedule_rec.attribute11 = FND_API.G_MISS_CHAR
2595 OR g_flow_schedule_rec.attribute12 = FND_API.G_MISS_CHAR
2596 OR g_flow_schedule_rec.attribute13 = FND_API.G_MISS_CHAR
2597 OR g_flow_schedule_rec.attribute14 = FND_API.G_MISS_CHAR
2598 OR g_flow_schedule_rec.attribute15 = FND_API.G_MISS_CHAR
2599 OR g_flow_schedule_rec.attribute2 = FND_API.G_MISS_CHAR
2600 OR g_flow_schedule_rec.attribute3 = FND_API.G_MISS_CHAR
2601 OR g_flow_schedule_rec.attribute4 = FND_API.G_MISS_CHAR
2602 OR g_flow_schedule_rec.attribute5 = FND_API.G_MISS_CHAR
2603 OR g_flow_schedule_rec.attribute6 = FND_API.G_MISS_CHAR
2604 OR g_flow_schedule_rec.attribute7 = FND_API.G_MISS_CHAR
2605 OR g_flow_schedule_rec.attribute8 = FND_API.G_MISS_CHAR
2606 OR g_flow_schedule_rec.attribute9 = FND_API.G_MISS_CHAR
2607 OR g_flow_schedule_rec.attribute_category = FND_API.G_MISS_CHAR
2608 OR g_flow_schedule_rec.bom_revision = FND_API.G_MISS_CHAR
2609 OR g_flow_schedule_rec.bom_revision_date = FND_API.G_MISS_DATE
2610 OR g_flow_schedule_rec.build_sequence = FND_API.G_MISS_NUM
2611 OR g_flow_schedule_rec.class_code = FND_API.G_MISS_CHAR
2612 OR g_flow_schedule_rec.completion_locator_id = FND_API.G_MISS_NUM
2613 OR g_flow_schedule_rec.completion_subinventory = FND_API.G_MISS_CHAR
2614 OR g_flow_schedule_rec.created_by = FND_API.G_MISS_NUM
2615 OR g_flow_schedule_rec.creation_date = FND_API.G_MISS_DATE
2616 OR g_flow_schedule_rec.date_closed = FND_API.G_MISS_DATE
2617 OR g_flow_schedule_rec.end_item_unit_number = FND_API.G_MISS_CHAR
2618 OR g_flow_schedule_rec.quantity_scrapped = FND_API.G_MISS_NUM
2619 OR g_flow_schedule_rec.demand_class = FND_API.G_MISS_CHAR
2620 OR g_flow_schedule_rec.demand_source_delivery = FND_API.G_MISS_CHAR
2621 OR g_flow_schedule_rec.demand_source_header_id = FND_API.G_MISS_NUM
2622 OR g_flow_schedule_rec.demand_source_line = FND_API.G_MISS_CHAR
2623 OR g_flow_schedule_rec.demand_source_type = FND_API.G_MISS_NUM
2624 OR g_flow_schedule_rec.last_updated_by = FND_API.G_MISS_NUM
2625 OR g_flow_schedule_rec.last_update_date = FND_API.G_MISS_DATE
2626 OR g_flow_schedule_rec.last_update_login = FND_API.G_MISS_NUM
2627 OR g_flow_schedule_rec.line_id = FND_API.G_MISS_NUM
2628 OR g_flow_schedule_rec.material_account = FND_API.G_MISS_NUM
2629 OR g_flow_schedule_rec.material_overhead_account = FND_API.G_MISS_NUM
2630 OR g_flow_schedule_rec.material_variance_account = FND_API.G_MISS_NUM
2631 OR g_flow_schedule_rec.mps_net_quantity = FND_API.G_MISS_NUM
2632 OR g_flow_schedule_rec.mps_scheduled_comp_date = FND_API.G_MISS_DATE
2633 OR g_flow_schedule_rec.organization_id = FND_API.G_MISS_NUM
2634 OR g_flow_schedule_rec.outside_processing_acct = FND_API.G_MISS_NUM
2635 OR g_flow_schedule_rec.outside_proc_var_acct = FND_API.G_MISS_NUM
2636 OR g_flow_schedule_rec.overhead_account = FND_API.G_MISS_NUM
2637 OR g_flow_schedule_rec.overhead_variance_account = FND_API.G_MISS_NUM
2638 OR g_flow_schedule_rec.planned_quantity = FND_API.G_MISS_NUM
2639 OR g_flow_schedule_rec.primary_item_id = FND_API.G_MISS_NUM
2640 OR g_flow_schedule_rec.program_application_id = FND_API.G_MISS_NUM
2641 OR g_flow_schedule_rec.program_id = FND_API.G_MISS_NUM
2642 OR g_flow_schedule_rec.program_update_date = FND_API.G_MISS_DATE
2643 OR g_flow_schedule_rec.project_id = FND_API.G_MISS_NUM
2644 OR g_flow_schedule_rec.quantity_completed = FND_API.G_MISS_NUM
2645 OR g_flow_schedule_rec.request_id = FND_API.G_MISS_NUM
2646 OR g_flow_schedule_rec.resource_account = FND_API.G_MISS_NUM
2647 OR g_flow_schedule_rec.resource_variance_account = FND_API.G_MISS_NUM
2648 OR g_flow_schedule_rec.routing_revision = FND_API.G_MISS_CHAR
2649 OR g_flow_schedule_rec.routing_revision_date = FND_API.G_MISS_DATE
2650 OR g_flow_schedule_rec.scheduled_completion_date = FND_API.G_MISS_DATE
2651 OR g_flow_schedule_rec.scheduled_flag = FND_API.G_MISS_NUM
2652 OR g_flow_schedule_rec.scheduled_start_date = FND_API.G_MISS_DATE
2653 OR g_flow_schedule_rec.schedule_group_id = FND_API.G_MISS_NUM
2654 OR g_flow_schedule_rec.schedule_number = FND_API.G_MISS_CHAR
2655 OR g_flow_schedule_rec.status = FND_API.G_MISS_NUM
2656 OR g_flow_schedule_rec.std_cost_adjustment_acct = FND_API.G_MISS_NUM
2657 OR g_flow_schedule_rec.task_id = FND_API.G_MISS_NUM
2658 OR g_flow_schedule_rec.wip_entity_id = FND_API.G_MISS_NUM
2659 THEN
2660
2661 MRP_Default_Flow_Schedule.Attributes
2662 ( p_flow_schedule_rec => g_flow_schedule_rec
2663 , p_iteration => nvl(p_iteration, 1) + 1
2664 , x_flow_schedule_rec => x_flow_schedule_rec
2665 );
2666
2667 ELSE
2668
2669 -- Done defaulting attributes
2670
2671 x_flow_schedule_rec := g_flow_schedule_rec;
2672
2673 END IF;
2674
2675 END Attributes;
2676
2677 END MRP_Default_Flow_Schedule;