1 PACKAGE BODY MRP_Default_Flow_Schedule AS
2 /* $Header: MRPDSCNB.pls 120.4 2011/12/02 09:35:00 sisankar ship $ */
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
513 AND ((alternate_routing_designator IS NULL) OR
514 (alternate_routing_designator IS NOT NULL
515 AND priority = (SELECT min(priority)
516 FROM bom_operational_routings
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
687 END Get_Mps_Scheduled_Comp_Date;
688
689 FUNCTION Get_Organization
690 RETURN NUMBER
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
864 END Get_Overhead_Variance_Account;
865
866 FUNCTION Get_Planned_Quantity
867 RETURN NUMBER
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;
1053 l_error_number NUMBER := 1;
1054 l_revision_date DATE := NULL;
1055 BEGIN
1056
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 /*Added below variables for bugfix:8261414 */
1132 l_completion_date_num NUMBER;
1133 l_cal_code VARCHAR2(10);
1134 l_excep_code NUMBER;
1135 l_valid_date NUMBER;
1136 l_hr_line_rate NUMBER;
1137 l_sec NUMBER;
1138 l_last_comp_time NUMBER;
1139 BEGIN
1140
1141 IF g_flow_schedule_rec.scheduled_completion_date IS NOT NULL AND
1142 g_flow_schedule_rec.scheduled_completion_date <> FND_API.G_MISS_DATE AND
1143 g_flow_schedule_rec.organization_id IS NOT NULL AND
1144 g_flow_schedule_rec.organization_id <> FND_API.G_MISS_NUM AND
1145 g_flow_schedule_rec.primary_item_id IS NOT NULL AND
1146 g_flow_schedule_rec.primary_item_id <> FND_API.G_MISS_NUM AND
1147 g_flow_schedule_rec.planned_quantity IS NOT NULL AND
1148 g_flow_schedule_rec.planned_quantity <> FND_API.G_MISS_NUM AND
1149 g_flow_schedule_rec.line_id IS NOT NULL AND
1150 g_flow_schedule_rec.line_id <> FND_API.G_MISS_NUM
1151 THEN
1152
1153 SELECT NVL(FIXED_LEAD_TIME,0),
1154 NVL(VARIABLE_LEAD_TIME,0)
1155 INTO l_fixed_lead_time, l_variable_lead_time
1156 FROM MTL_SYSTEM_ITEMS
1157 WHERE INVENTORY_ITEM_ID = g_flow_schedule_rec.primary_item_id
1158 AND ORGANIZATION_ID = g_flow_schedule_rec.organization_id;
1159
1160 SELECT start_time, stop_time,maximum_rate
1161 INTO l_start_time, l_end_time,l_hr_line_rate /*8261414 */
1162 FROM wip_lines
1163 WHERE line_id = g_flow_schedule_rec.line_id
1164 AND organization_id = g_flow_schedule_rec.organization_id;
1165
1166 --fix bug#3827600 /*Bugfix:8261414.Added equal to operator in below condition */
1167 if (l_end_time <= l_start_time) then
1168 l_new_end_time := 86400+l_end_time;
1169 else
1170 l_new_end_time := l_end_time;
1171 end if;
1172
1173 l_completion_date := trunc(g_flow_schedule_rec.scheduled_completion_date);
1174 l_completion_time := to_char(g_flow_schedule_rec.scheduled_completion_date,'SSSSS');
1175
1176 /*Bug fix 8261414*. Below code will get the correct schedule completion date
1177 to be passed to calculate_begin_time function.
1178 If scheduled completion date given is in time slot when line is active then
1179 it is passed as it is.And when completion date falls in the time slot
1180 when line is inactive,next nearest time when line is active is considered as
1181 completion date.*/
1182
1183 SELECT calendar_code,calendar_exception_set_id
1184 INTO l_cal_code,l_excep_code
1185 FROM mtl_parameters
1186 WHERE organization_id = g_flow_schedule_rec.organization_id;
1187
1188 l_completion_date_num := to_number(to_char(l_completion_date,'J'));
1189
1190 if (l_end_time <= l_start_time) then
1191
1192 if (l_completion_time < l_end_time ) then
1193 l_completion_date_num := l_completion_date_num - 1 ;
1194 l_completion_time := l_completion_time + 24*3600 ;
1195 end if;
1196
1197
1198 SELECT min(to_number(to_char(bom_cal.calendar_date,'J')))
1199 into l_valid_date
1200 FROM bom_calendar_dates bom_cal
1201 WHERE bom_cal.calendar_code = l_cal_code
1202 AND bom_cal.exception_set_id = l_excep_code
1203 AND bom_cal.calendar_date >= to_date(l_completion_date_num,'j')
1204 AND bom_cal.seq_num is NOT NULL;
1205
1206 l_last_comp_time := l_start_time;
1207
1208 if (l_valid_date = l_completion_date_num) then
1209 if (l_completion_time > l_new_end_time) then
1210 l_last_comp_time := l_new_end_time;
1211 elsif (l_completion_time > l_start_time ) then
1212 --l_sec := 3600/l_hr_line_rate;
1213 l_last_comp_time := l_completion_time;/*l_start_time+
1214 ceil((l_completion_time-l_start_time)/l_sec) * l_sec;
1215 l_last_comp_time := l_last_comp_time - l_sec; */
1216 end if;
1217 end if;
1218 l_completion_time := l_last_comp_time;
1219 l_completion_date := to_date(l_valid_date,'j');
1220
1221
1222 elsif (l_completion_time > l_start_time AND l_completion_time < l_new_end_time ) then
1223
1224
1225 SELECT min(to_number(to_char(bom_cal.calendar_date,'J')))
1226 into l_valid_date
1227 FROM bom_calendar_dates bom_cal
1228 WHERE bom_cal.calendar_code = l_cal_code
1229 AND bom_cal.exception_set_id = l_excep_code
1230 AND bom_cal.calendar_date >= to_date(l_completion_date_num,'j')
1231 AND bom_cal.seq_num is NOT NULL;
1232
1233 if(l_valid_date <> l_completion_date_num) then
1234 l_completion_date := to_date(l_valid_date,'j');
1235 l_completion_time := l_start_time;
1236 end if;
1237
1238
1239 end if;
1240
1241 /*End Bug fix 8261414*/
1242
1243
1244 /*Bugfix:8261414.Added additional AND condition */
1245 if (l_completion_time > l_new_end_time AND l_end_time > l_start_time ) then
1246 l_completion_date_time := l_completion_date + (l_new_end_time/86400);
1247 /*Bugfix:8261414.Added additional AND condition */
1248 elsif (l_completion_time < l_start_time AND l_end_time > l_start_time) then
1249 l_completion_date := mrp_calendar.prev_work_day(
1250 g_flow_schedule_rec.organization_id,
1251 1,
1252 flm_timezone.server_to_calendar(l_completion_date)-1);
1253
1254 l_completion_date := flm_timezone.calendar_to_server(l_completion_date,l_completion_time);
1255 l_completion_date_time := trunc(l_completion_date) + (l_new_end_time/86400);
1256
1257 else
1258 l_completion_date_time := l_completion_date + (l_completion_time/86400);
1259
1260 end if;
1261 --end of fix bug#3827600
1262
1263 l_lead_time := l_fixed_lead_time + (l_variable_lead_time *
1264 (g_flow_schedule_rec.planned_quantity-1));
1265
1266 l_temp_date := MRP_LINE_SCHEDULE_ALGORITHM.calculate_begin_time(
1267 g_flow_schedule_rec.organization_id,
1268 l_completion_date_time,
1269 l_lead_time,
1270 l_start_time,
1271 l_end_time /*l_new_end_time */);/*Bugfix:8261414.Passed l_end_time as l_end_time is converted to l_new_end_time in called function. */
1272
1273 RETURN l_temp_date;
1274
1275 ELSE
1276
1277 RETURN NULL;
1278
1279 END IF;
1280
1281 EXCEPTION
1282
1283 WHEN OTHERS THEN
1284
1285 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1286 THEN
1287 FND_MSG_PUB.Add_Exc_Msg
1288 ( G_PKG_NAME,
1289 'Get_Scheduled_Start_Date'
1290 );
1291 END IF;
1292
1293 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1294
1295 END Get_Scheduled_Start_Date;
1296
1297 FUNCTION Get_Schedule_Group
1298 RETURN NUMBER
1299 IS
1300 BEGIN
1301
1302 RETURN NULL;
1303
1304 END Get_Schedule_Group;
1305
1306 FUNCTION Get_Schedule_Number
1307 RETURN VARCHAR2
1308 IS
1309 l_schedule_number VARCHAR2(30) := NULL;
1310 l_error_number NUMBER := 1;
1311 BEGIN
1312
1313 l_error_number := WIP_FLOW_DERIVE.Schedule_Number(l_schedule_number);
1314
1315 IF l_error_number = 1 THEN
1316
1317 RETURN l_schedule_number;
1318
1319 ELSE
1320
1321 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1322 THEN
1323 FND_MSG_PUB.Add_Exc_Msg
1324 ( G_PKG_NAME,
1325 'Get_Schedule_Number'
1326 );
1327 END IF;
1328
1329 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1330
1331 RETURN NULL;
1332
1333 END IF;
1334
1335 END Get_Schedule_Number;
1336
1337 FUNCTION Get_Status
1338 RETURN NUMBER
1339 IS
1340 BEGIN
1341
1342 -- Return Open (1)
1343 RETURN 1;
1344
1345 END Get_Status;
1346
1347 FUNCTION Get_Std_Cost_Adjustment_Acct
1348 RETURN NUMBER
1349 IS
1350 l_std_cost_adjustment_acct NUMBER := NULL;
1351 BEGIN
1352
1353 IF g_flow_schedule_rec.class_code IS NOT NULL AND
1354 g_flow_schedule_rec.class_code <> FND_API.G_MISS_CHAR AND
1355 g_flow_schedule_rec.organization_id IS NOT NULL AND
1356 g_flow_schedule_rec.organization_id <> FND_API.G_MISS_NUM
1357 THEN
1358
1359 SELECT STD_COST_ADJUSTMENT_ACCOUNT
1360 INTO l_std_cost_adjustment_acct
1361 FROM WIP_ACCOUNTING_CLASSES
1362 WHERE CLASS_CODE = g_flow_schedule_rec.class_code
1363 AND ORGANIZATION_ID = g_flow_schedule_rec.organization_id;
1364
1365 RETURN l_std_cost_adjustment_acct;
1366
1367 ELSE
1368
1369 RETURN NULL;
1370
1371 END IF;
1372
1373 EXCEPTION
1374
1375 WHEN OTHERS THEN
1376
1377 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1378 THEN
1379 FND_MSG_PUB.Add_Exc_Msg
1380 ( G_PKG_NAME,
1381 'Get_Std_Cost_Adjustment_Acct'
1382 );
1383 END IF;
1384
1385 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1386
1387 END Get_Std_Cost_Adjustment_Acct;
1388
1389 FUNCTION Get_Task
1390 RETURN NUMBER
1391 IS
1392 BEGIN
1393
1394 RETURN NULL;
1395
1396 END Get_Task;
1397
1398 FUNCTION Get_Wip_Entity
1399 RETURN NUMBER
1400 IS
1401 l_wip_entity_id NUMBER := NULL;
1402 BEGIN
1403
1404 -- Select from sequence
1405 SELECT WIP_ENTITIES_S.nextval
1406 INTO l_wip_entity_id
1407 FROM DUAL;
1408
1409 RETURN l_wip_entity_id;
1410
1411 EXCEPTION
1412
1413 WHEN OTHERS THEN
1414
1415 IF FND_MSG_PUB.Check_Msg_Level (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1416 THEN
1417 FND_MSG_PUB.Add_Exc_Msg
1418 ( G_PKG_NAME,
1419 'Get_Wip_Entity'
1420 );
1421 END IF;
1422
1423 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1424
1425 END Get_Wip_Entity;
1426
1427
1428
1429
1430 FUNCTION Get_End_Item_Unit_Number
1431 RETURN NUMBER
1432 IS
1433 BEGIN
1434 RETURN NULL;
1435
1436 END Get_End_Item_Unit_Number;
1437
1438 FUNCTION Get_Quantity_Scrapped
1439 RETURN NUMBER
1440 IS
1441 BEGIN
1442 RETURN 0;
1443
1444 END Get_Quantity_Scrapped;
1445
1446 PROCEDURE Get_Flex_Wip_Flow_Schedule
1447 IS
1448 BEGIN
1449
1450 -- In the future call Flex APIs for defaults
1451
1452 IF g_flow_schedule_rec.attribute1 = FND_API.G_MISS_CHAR THEN
1453 g_flow_schedule_rec.attribute1 := NULL;
1454 END IF;
1455
1456 IF g_flow_schedule_rec.attribute10 = FND_API.G_MISS_CHAR THEN
1457 g_flow_schedule_rec.attribute10 := NULL;
1458 END IF;
1459
1460 IF g_flow_schedule_rec.attribute11 = FND_API.G_MISS_CHAR THEN
1461 g_flow_schedule_rec.attribute11 := NULL;
1462 END IF;
1463
1464 IF g_flow_schedule_rec.attribute12 = FND_API.G_MISS_CHAR THEN
1465 g_flow_schedule_rec.attribute12 := NULL;
1466 END IF;
1467
1468 IF g_flow_schedule_rec.attribute13 = FND_API.G_MISS_CHAR THEN
1469 g_flow_schedule_rec.attribute13 := NULL;
1470 END IF;
1471
1472 IF g_flow_schedule_rec.attribute14 = FND_API.G_MISS_CHAR THEN
1473 g_flow_schedule_rec.attribute14 := NULL;
1474 END IF;
1475
1476 IF g_flow_schedule_rec.attribute15 = FND_API.G_MISS_CHAR THEN
1477 g_flow_schedule_rec.attribute15 := NULL;
1478 END IF;
1479
1480 IF g_flow_schedule_rec.attribute2 = FND_API.G_MISS_CHAR THEN
1481 g_flow_schedule_rec.attribute2 := NULL;
1482 END IF;
1483
1484 IF g_flow_schedule_rec.attribute3 = FND_API.G_MISS_CHAR THEN
1485 g_flow_schedule_rec.attribute3 := NULL;
1486 END IF;
1487
1488 IF g_flow_schedule_rec.attribute4 = FND_API.G_MISS_CHAR THEN
1489 g_flow_schedule_rec.attribute4 := NULL;
1490 END IF;
1491
1492 IF g_flow_schedule_rec.attribute5 = FND_API.G_MISS_CHAR THEN
1493 g_flow_schedule_rec.attribute5 := NULL;
1494 END IF;
1495
1496 IF g_flow_schedule_rec.attribute6 = FND_API.G_MISS_CHAR THEN
1497 g_flow_schedule_rec.attribute6 := NULL;
1498 END IF;
1499
1500 IF g_flow_schedule_rec.attribute7 = FND_API.G_MISS_CHAR THEN
1501 g_flow_schedule_rec.attribute7 := NULL;
1502 END IF;
1503
1504 IF g_flow_schedule_rec.attribute8 = FND_API.G_MISS_CHAR THEN
1505 g_flow_schedule_rec.attribute8 := NULL;
1506 END IF;
1507
1508 IF g_flow_schedule_rec.attribute9 = FND_API.G_MISS_CHAR THEN
1509 g_flow_schedule_rec.attribute9 := NULL;
1510 END IF;
1511
1512 IF g_flow_schedule_rec.attribute_category = FND_API.G_MISS_CHAR THEN
1513 g_flow_schedule_rec.attribute_category := NULL;
1514 END IF;
1515
1516 END Get_Flex_Wip_Flow_Schedule;
1517
1518 -- Procedure Attributes
1519
1520 PROCEDURE Attributes
1521 ( p_flow_schedule_rec IN MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type
1522 , p_iteration IN NUMBER DEFAULT NULL
1523 , x_flow_schedule_rec IN OUT NOCOPY MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type
1524 )
1525 IS
1526 l_old_flow_schedule_rec MRP_Flow_Schedule_PVT.Flow_Schedule_PVT_Rec_Type;
1527 BEGIN
1528
1529 -- Check number of iterations.
1530 -- If p_iteration is null, default to 1
1531 IF nvl(p_iteration, 1) > MRP_GLOBALS.G_MAX_DEF_ITERATIONS THEN
1532
1533 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
1534 THEN
1535
1536 FND_MESSAGE.SET_NAME('MRP','MRP_DEF_MAX_ITERATION');
1537 FND_MSG_PUB.Add;
1538
1539 END IF;
1540
1541 RAISE FND_API.G_EXC_ERROR;
1542
1543 END IF;
1544 -- Initialize g_flow_schedule_rec
1545
1546 g_flow_schedule_rec := p_flow_schedule_rec;
1547
1548 -- Default missing attributes.
1549
1550 IF g_flow_schedule_rec.alternate_bom_designator = FND_API.G_MISS_CHAR or g_flow_schedule_rec.alternate_bom_designator IS NULL THEN
1551
1552 g_flow_schedule_rec.alternate_bom_designator := Get_Alternate_Bom_Designator;
1553
1554 IF g_flow_schedule_rec.alternate_bom_designator IS NOT NULL THEN
1555
1556 IF MRP_Validate.Alternate_Bom_Designator(g_flow_schedule_rec.alternate_bom_designator)
1557 THEN
1558 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1559 ( p_attr_id => MRP_Flow_Schedule_Util.G_ALTERNATE_BOM_DESIGNATOR
1560 , p_flow_schedule_rec => g_flow_schedule_rec
1561 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1562 , x_flow_schedule_rec => g_flow_schedule_rec
1563 );
1564 ELSE
1565 g_flow_schedule_rec.alternate_bom_designator := NULL;
1566 END IF;
1567
1568 END IF;
1569
1570 END IF;
1571
1572 IF g_flow_schedule_rec.alternate_routing_desig = FND_API.G_MISS_CHAR or g_flow_schedule_rec.alternate_routing_desig IS NULL THEN
1573
1574 g_flow_schedule_rec.alternate_routing_desig := Get_Alternate_Routing_Desig;
1575
1576 IF g_flow_schedule_rec.alternate_routing_desig IS NOT NULL THEN
1577
1578 IF MRP_Validate.Alternate_Routing_Desig(g_flow_schedule_rec.alternate_routing_desig)
1579 THEN
1580 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1581 ( p_attr_id => MRP_Flow_Schedule_Util.G_ALTERNATE_ROUTING_DESIG
1582 , p_flow_schedule_rec => g_flow_schedule_rec
1583 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1584 , x_flow_schedule_rec => g_flow_schedule_rec
1585 );
1586 ELSE
1587 g_flow_schedule_rec.alternate_routing_desig := NULL;
1588 END IF;
1589
1590 END IF;
1591
1592 END IF;
1593
1594 /* Fix for bug 2977987: Moved this code to ensure that bom_revision is calculated after calculating
1595 bom_revision_date
1596
1597 IF g_flow_schedule_rec.bom_revision = FND_API.G_MISS_CHAR OR g_flow_schedule_rec.bom_revision IS NULL THEN
1598
1599 g_flow_schedule_rec.bom_revision := Get_Bom_Revision;
1600
1601 IF g_flow_schedule_rec.bom_revision IS NOT NULL THEN
1602
1603 IF MRP_Validate.Bom_Revision(g_flow_schedule_rec.bom_revision)
1604 THEN
1605 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1606 ( p_attr_id => MRP_Flow_Schedule_Util.G_BOM_REVISION
1607 , p_flow_schedule_rec => g_flow_schedule_rec
1608 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1609 , x_flow_schedule_rec => g_flow_schedule_rec
1610 );
1611 ELSE
1612 g_flow_schedule_rec.bom_revision := NULL;
1613 END IF;
1614
1615 END IF;
1616
1617 END IF;
1618 */
1619
1620 IF g_flow_schedule_rec.bom_revision_date = FND_API.G_MISS_DATE OR g_flow_schedule_rec.bom_revision_date IS NULL THEN
1621
1622 g_flow_schedule_rec.bom_revision_date := Get_Bom_Revision_Date;
1623
1624 IF g_flow_schedule_rec.bom_revision_date IS NOT NULL THEN
1625
1626 IF MRP_Validate.Bom_Revision_Date(g_flow_schedule_rec.bom_revision_date)
1627 THEN
1628 -- Modified for Bug 9667180
1629 g_flow_schedule_rec.bom_revision := Get_Bom_Revision;
1630 ELSE
1631 g_flow_schedule_rec.bom_revision_date := NULL;
1632 END IF;
1633
1634 END IF;
1635
1636 END IF;
1637
1638 /* Fix for bug 2977987: bom_revision is being calculated after calculating bom_revision_date. */
1639
1640 IF g_flow_schedule_rec.bom_revision = FND_API.G_MISS_CHAR OR g_flow_schedule_rec.bom_revision IS NULL THEN
1641
1642 g_flow_schedule_rec.bom_revision := Get_Bom_Revision;
1643
1644 IF g_flow_schedule_rec.bom_revision IS NOT NULL THEN
1645
1646 IF MRP_Validate.Bom_Revision(g_flow_schedule_rec.bom_revision)
1647 THEN
1648 -- Modified for Bug 9667180
1649 null;
1650 ELSE
1651 g_flow_schedule_rec.bom_revision := NULL;
1652 END IF;
1653
1654 END IF;
1655
1656 END IF;
1657
1658
1659 IF g_flow_schedule_rec.build_sequence = FND_API.G_MISS_NUM OR g_flow_schedule_rec.build_sequence IS NULL THEN
1660
1661 g_flow_schedule_rec.build_sequence := Get_Build_Sequence;
1662
1663 IF g_flow_schedule_rec.build_sequence IS NOT NULL THEN
1664
1665 IF MRP_Validate.Build_Sequence(g_flow_schedule_rec.build_sequence)
1666 THEN
1667 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1668 ( p_attr_id => MRP_Flow_Schedule_Util.G_BUILD_SEQUENCE
1669 , p_flow_schedule_rec => g_flow_schedule_rec
1670 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1671 , x_flow_schedule_rec => g_flow_schedule_rec
1672 );
1673 ELSE
1674 g_flow_schedule_rec.build_sequence := NULL;
1675 END IF;
1676
1677 END IF;
1678
1679 END IF;
1680
1681 IF g_flow_schedule_rec.class_code = FND_API.G_MISS_CHAR OR g_flow_schedule_rec.class_code IS NULL THEN
1682
1683 g_flow_schedule_rec.class_code := Get_Class;
1684
1685 IF g_flow_schedule_rec.class_code IS NOT NULL THEN
1686
1687 IF MRP_Validate.Class(g_flow_schedule_rec.class_code)
1688 THEN
1689 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1690 ( p_attr_id => MRP_Flow_Schedule_Util.G_CLASS
1691 , p_flow_schedule_rec => g_flow_schedule_rec
1692 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1693 , x_flow_schedule_rec => g_flow_schedule_rec
1694 );
1695 ELSE
1696 g_flow_schedule_rec.class_code := NULL;
1697 END IF;
1698
1699 END IF;
1700
1701 END IF;
1702
1703 IF g_flow_schedule_rec.completion_locator_id = FND_API.G_MISS_NUM OR g_flow_schedule_rec.completion_locator_id IS NULL THEN
1704
1705 g_flow_schedule_rec.completion_locator_id := Get_Completion_Locator;
1706
1707 IF g_flow_schedule_rec.completion_locator_id IS NOT NULL THEN
1708
1709 IF MRP_Validate.Completion_Locator(g_flow_schedule_rec.completion_locator_id)
1710 THEN
1711 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1712 ( p_attr_id => MRP_Flow_Schedule_Util.G_COMPLETION_LOCATOR
1713 , p_flow_schedule_rec => g_flow_schedule_rec
1714 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1715 , x_flow_schedule_rec => g_flow_schedule_rec
1716 );
1717 ELSE
1718 g_flow_schedule_rec.completion_locator_id := NULL;
1719 END IF;
1720
1721 END IF;
1722
1723 END IF;
1724
1725 IF g_flow_schedule_rec.completion_subinventory = FND_API.G_MISS_CHAR OR g_flow_schedule_rec.completion_subinventory IS NULL THEN
1726
1727 g_flow_schedule_rec.completion_subinventory := Get_Completion_Subinventory;
1728
1729 IF g_flow_schedule_rec.completion_subinventory IS NOT NULL THEN
1730
1731 IF MRP_Validate.Completion_Subinventory(g_flow_schedule_rec.completion_subinventory)
1732 THEN
1733 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1734 ( p_attr_id => MRP_Flow_Schedule_Util.G_COMPLETION_SUBINVENTORY
1735 , p_flow_schedule_rec => g_flow_schedule_rec
1736 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1737 , x_flow_schedule_rec => g_flow_schedule_rec
1738 );
1739 ELSE
1740 g_flow_schedule_rec.completion_subinventory := NULL;
1741 END IF;
1742
1743 END IF;
1744
1745 END IF;
1746
1747 IF g_flow_schedule_rec.date_closed = FND_API.G_MISS_DATE OR g_flow_schedule_rec.date_closed IS NULL THEN
1748
1749 g_flow_schedule_rec.date_closed := Get_Date_Closed;
1750
1751 IF g_flow_schedule_rec.date_closed IS NOT NULL THEN
1752
1753 IF MRP_Validate.Date_Closed(g_flow_schedule_rec.date_closed)
1754 THEN
1755 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1756 ( p_attr_id => MRP_Flow_Schedule_Util.G_DATE_CLOSED
1757 , p_flow_schedule_rec => g_flow_schedule_rec
1758 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1759 , x_flow_schedule_rec => g_flow_schedule_rec
1760 );
1761 ELSE
1762 g_flow_schedule_rec.date_closed := NULL;
1763 END IF;
1764
1765 END IF;
1766
1767 END IF;
1768
1769 IF g_flow_schedule_rec.demand_class = FND_API.G_MISS_CHAR OR g_flow_schedule_rec.demand_class IS NULL THEN
1770
1771 g_flow_schedule_rec.demand_class := Get_Demand_Class;
1772
1773 IF g_flow_schedule_rec.demand_class IS NOT NULL THEN
1774
1775 IF MRP_Validate.Demand_Class(g_flow_schedule_rec.demand_class)
1776 THEN
1777 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1778 ( p_attr_id => MRP_Flow_Schedule_Util.G_DEMAND_CLASS
1779 , p_flow_schedule_rec => g_flow_schedule_rec
1780 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1781 , x_flow_schedule_rec => g_flow_schedule_rec
1782 );
1783 ELSE
1784 g_flow_schedule_rec.demand_class := NULL;
1785 END IF;
1786
1787 END IF;
1788
1789 END IF;
1790
1791 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
1792
1793 g_flow_schedule_rec.end_item_unit_number := Get_end_item_unit_number;
1794
1795 IF g_flow_schedule_rec.end_item_unit_number IS NOT NULL THEN
1796
1797 IF MRP_Validate.end_item_unit_number(g_flow_schedule_rec.end_item_unit_number)
1798 THEN
1799 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1800 ( p_attr_id => MRP_Flow_Schedule_Util.G_END_ITEM_UNIT_NUMBER
1801 , p_flow_schedule_rec => g_flow_schedule_rec
1802 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1803 , x_flow_schedule_rec => g_flow_schedule_rec
1804 );
1805 ELSE
1806 g_flow_schedule_rec.end_item_unit_number := NULL;
1807 END IF;
1808
1809 END IF;
1810
1811 END IF;
1812
1813 IF g_flow_schedule_rec.quantity_scrapped = FND_API.G_MISS_NUM or g_flow_schedule_rec.quantity_scrapped IS NULL THEN
1814
1815 g_flow_schedule_rec.quantity_scrapped := Get_quantity_scrapped;
1816
1817 IF g_flow_schedule_rec.quantity_scrapped IS NOT NULL THEN
1818
1819 IF MRP_Validate.quantity_scrapped(g_flow_schedule_rec.quantity_scrapped)
1820 THEN
1821 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1822 ( p_attr_id => MRP_Flow_Schedule_Util.G_quantity_scrapped
1823 , p_flow_schedule_rec => g_flow_schedule_rec
1824 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1825 , x_flow_schedule_rec => g_flow_schedule_rec
1826 );
1827 ELSE
1828 g_flow_schedule_rec.quantity_scrapped := NULL;
1829 END IF;
1830
1831 END IF;
1832
1833 END IF;
1834
1835 IF g_flow_schedule_rec.demand_source_delivery = FND_API.G_MISS_CHAR OR g_flow_schedule_rec.demand_source_delivery IS NULL THEN
1836
1837 g_flow_schedule_rec.demand_source_delivery := Get_Demand_Source_Delivery;
1838
1839 IF g_flow_schedule_rec.demand_source_delivery IS NOT NULL THEN
1840
1841 IF MRP_Validate.Demand_Source_Delivery(g_flow_schedule_rec.demand_source_delivery)
1842 THEN
1843 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1844 ( p_attr_id => MRP_Flow_Schedule_Util.G_DEMAND_SOURCE_DELIVERY
1845 , p_flow_schedule_rec => g_flow_schedule_rec
1846 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1847 , x_flow_schedule_rec => g_flow_schedule_rec
1848 );
1849 ELSE
1850 g_flow_schedule_rec.demand_source_delivery := NULL;
1851 END IF;
1852
1853 END IF;
1854
1855 END IF;
1856
1857 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
1858
1859 g_flow_schedule_rec.demand_source_header_id := Get_Demand_Source_Header;
1860
1861 IF g_flow_schedule_rec.demand_source_header_id IS NOT NULL THEN
1862
1863 IF MRP_Validate.Demand_Source_Header(g_flow_schedule_rec.demand_source_header_id)
1864 THEN
1865 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1866 ( p_attr_id => MRP_Flow_Schedule_Util.G_DEMAND_SOURCE_HEADER
1867 , p_flow_schedule_rec => g_flow_schedule_rec
1868 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1869 , x_flow_schedule_rec => g_flow_schedule_rec
1870 );
1871 ELSE
1872 g_flow_schedule_rec.demand_source_header_id := NULL;
1873 END IF;
1874
1875 END IF;
1876
1877 END IF;
1878
1879 IF g_flow_schedule_rec.demand_source_line = FND_API.G_MISS_CHAR OR g_flow_schedule_rec.demand_source_line IS NULL THEN
1880
1881 g_flow_schedule_rec.demand_source_line := Get_Demand_Source_Line;
1882
1883 IF g_flow_schedule_rec.demand_source_line IS NOT NULL THEN
1884
1885 IF MRP_Validate.Demand_Source_Line(g_flow_schedule_rec.demand_source_line)
1886 THEN
1887 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1888 ( p_attr_id => MRP_Flow_Schedule_Util.G_DEMAND_SOURCE_LINE
1889 , p_flow_schedule_rec => g_flow_schedule_rec
1890 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1891 , x_flow_schedule_rec => g_flow_schedule_rec
1892 );
1893 ELSE
1894 g_flow_schedule_rec.demand_source_line := NULL;
1895 END IF;
1896
1897 END IF;
1898
1899 END IF;
1900
1901 IF g_flow_schedule_rec.demand_source_type = FND_API.G_MISS_NUM OR g_flow_schedule_rec.demand_source_type IS NULL THEN
1902
1903 g_flow_schedule_rec.demand_source_type := Get_Demand_Source_Type;
1904
1905 IF g_flow_schedule_rec.demand_source_type IS NOT NULL THEN
1906
1907 IF MRP_Validate.Demand_Source_Type(g_flow_schedule_rec.demand_source_type)
1908 THEN
1909 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1910 ( p_attr_id => MRP_Flow_Schedule_Util.G_DEMAND_SOURCE_TYPE
1911 , p_flow_schedule_rec => g_flow_schedule_rec
1912 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1913 , x_flow_schedule_rec => g_flow_schedule_rec
1914 );
1915 ELSE
1916 g_flow_schedule_rec.demand_source_type := NULL;
1917 END IF;
1918
1919 END IF;
1920
1921 END IF;
1922
1923 IF g_flow_schedule_rec.line_id = FND_API.G_MISS_NUM OR g_flow_schedule_rec.line_id IS NULL THEN
1924
1925 g_flow_schedule_rec.line_id := Get_Line;
1926
1927 IF g_flow_schedule_rec.line_id IS NOT NULL THEN
1928
1929 IF MRP_Validate.Line(g_flow_schedule_rec.line_id)
1930 THEN
1931 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1932 ( p_attr_id => MRP_Flow_Schedule_Util.G_LINE
1933 , p_flow_schedule_rec => g_flow_schedule_rec
1934 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1935 , x_flow_schedule_rec => g_flow_schedule_rec
1936 );
1937 ELSE
1938 g_flow_schedule_rec.line_id := NULL;
1939 END IF;
1940
1941 END IF;
1942
1943 END IF;
1944
1945 IF g_flow_schedule_rec.material_account = FND_API.G_MISS_NUM OR g_flow_schedule_rec.material_account IS NULL THEN
1946
1947 g_flow_schedule_rec.material_account := Get_Material_Account;
1948
1949 IF g_flow_schedule_rec.material_account IS NOT NULL THEN
1950
1951 IF MRP_Validate.Material_Account(g_flow_schedule_rec.material_account)
1952 THEN
1953 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1954 ( p_attr_id => MRP_Flow_Schedule_Util.G_MATERIAL_ACCOUNT
1955 , p_flow_schedule_rec => g_flow_schedule_rec
1956 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1957 , x_flow_schedule_rec => g_flow_schedule_rec
1958 );
1959 ELSE
1960 g_flow_schedule_rec.material_account := NULL;
1961 END IF;
1962
1963 END IF;
1964
1965 END IF;
1966
1967 IF g_flow_schedule_rec.material_overhead_account = FND_API.G_MISS_NUM OR g_flow_schedule_rec.material_overhead_account IS NULL THEN
1968
1969 g_flow_schedule_rec.material_overhead_account := Get_Material_Overhead_Account;
1970
1971 IF g_flow_schedule_rec.material_overhead_account IS NOT NULL THEN
1972
1973 IF MRP_Validate.Material_Overhead_Account(g_flow_schedule_rec.material_overhead_account)
1974 THEN
1975 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1976 ( p_attr_id => MRP_Flow_Schedule_Util.G_MATERIAL_OVERHEAD_ACCOUNT
1977 , p_flow_schedule_rec => g_flow_schedule_rec
1978 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
1979 , x_flow_schedule_rec => g_flow_schedule_rec
1980 );
1981 ELSE
1982 g_flow_schedule_rec.material_overhead_account := NULL;
1983 END IF;
1984
1985 END IF;
1986
1987 END IF;
1988
1989 IF g_flow_schedule_rec.material_variance_account = FND_API.G_MISS_NUM OR g_flow_schedule_rec.material_variance_account IS NULL THEN
1990
1991 g_flow_schedule_rec.material_variance_account := Get_Material_Variance_Account;
1992
1993 IF g_flow_schedule_rec.material_variance_account IS NOT NULL THEN
1994
1995 IF MRP_Validate.Material_Variance_Account(g_flow_schedule_rec.material_variance_account)
1996 THEN
1997 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
1998 ( p_attr_id => MRP_Flow_Schedule_Util.G_MATERIAL_VARIANCE_ACCOUNT
1999 , p_flow_schedule_rec => g_flow_schedule_rec
2000 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2001 , x_flow_schedule_rec => g_flow_schedule_rec
2002 );
2003 ELSE
2004 g_flow_schedule_rec.material_variance_account := NULL;
2005 END IF;
2006
2007 END IF;
2008
2009 END IF;
2010
2011 IF g_flow_schedule_rec.mps_net_quantity = FND_API.G_MISS_NUM OR g_flow_schedule_rec.mps_net_quantity IS NULL THEN
2012
2013 g_flow_schedule_rec.mps_net_quantity := Get_Mps_Net_Quantity;
2014
2015 IF g_flow_schedule_rec.mps_net_quantity IS NOT NULL THEN
2016
2017 IF MRP_Validate.Mps_Net_Quantity(g_flow_schedule_rec.mps_net_quantity)
2018 THEN
2019 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2020 ( p_attr_id => MRP_Flow_Schedule_Util.G_MPS_NET_QUANTITY
2021 , p_flow_schedule_rec => g_flow_schedule_rec
2022 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2023 , x_flow_schedule_rec => g_flow_schedule_rec
2024 );
2025 ELSE
2026 g_flow_schedule_rec.mps_net_quantity := NULL;
2027 END IF;
2028
2029 END IF;
2030
2031 END IF;
2032
2033 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
2034
2035 g_flow_schedule_rec.mps_scheduled_comp_date := Get_Mps_Scheduled_Comp_Date;
2036
2037 IF g_flow_schedule_rec.mps_scheduled_comp_date IS NOT NULL THEN
2038
2039 IF MRP_Validate.Mps_Scheduled_Comp_Date(g_flow_schedule_rec.mps_scheduled_comp_date)
2040 THEN
2041 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2042 ( p_attr_id => MRP_Flow_Schedule_Util.G_MPS_SCHEDULED_COMP_DATE
2043 , p_flow_schedule_rec => g_flow_schedule_rec
2044 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2045 , x_flow_schedule_rec => g_flow_schedule_rec
2046 );
2047 ELSE
2048 g_flow_schedule_rec.mps_scheduled_comp_date := NULL;
2049 END IF;
2050
2051 END IF;
2052
2053 END IF;
2054
2055 IF g_flow_schedule_rec.organization_id = FND_API.G_MISS_NUM OR g_flow_schedule_rec.organization_id IS NULL THEN
2056
2057 g_flow_schedule_rec.organization_id := Get_Organization;
2058
2059 IF g_flow_schedule_rec.organization_id IS NOT NULL THEN
2060
2061 IF MRP_Validate.Organization(g_flow_schedule_rec.organization_id)
2062 THEN
2063 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2064 ( p_attr_id => MRP_Flow_Schedule_Util.G_ORGANIZATION
2065 , p_flow_schedule_rec => g_flow_schedule_rec
2066 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2067 , x_flow_schedule_rec => g_flow_schedule_rec
2068 );
2069 ELSE
2070 g_flow_schedule_rec.organization_id := NULL;
2071 END IF;
2072
2073 END IF;
2074
2075 END IF;
2076
2077 IF g_flow_schedule_rec.outside_processing_acct = FND_API.G_MISS_NUM OR g_flow_schedule_rec.outside_processing_acct IS NULL THEN
2078
2079 g_flow_schedule_rec.outside_processing_acct := Get_Outside_Processing_Acct;
2080
2081 IF g_flow_schedule_rec.outside_processing_acct IS NOT NULL THEN
2082
2083 IF MRP_Validate.Outside_Processing_Acct(g_flow_schedule_rec.outside_processing_acct)
2084 THEN
2085 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2086 ( p_attr_id => MRP_Flow_Schedule_Util.G_OUTSIDE_PROCESSING_ACCT
2087 , p_flow_schedule_rec => g_flow_schedule_rec
2088 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2089 , x_flow_schedule_rec => g_flow_schedule_rec
2090 );
2091 ELSE
2092 g_flow_schedule_rec.outside_processing_acct := NULL;
2093 END IF;
2094
2095 END IF;
2096
2097 END IF;
2098
2099 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
2100
2101 g_flow_schedule_rec.outside_proc_var_acct := Get_Outside_Proc_Var_Acct;
2102
2103 IF g_flow_schedule_rec.outside_proc_var_acct IS NOT NULL THEN
2104
2105 IF MRP_Validate.Outside_Proc_Var_Acct(g_flow_schedule_rec.outside_proc_var_acct)
2106 THEN
2107 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2108 ( p_attr_id => MRP_Flow_Schedule_Util.G_OUTSIDE_PROC_VAR_ACCT
2109 , p_flow_schedule_rec => g_flow_schedule_rec
2110 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2111 , x_flow_schedule_rec => g_flow_schedule_rec
2112 );
2113 ELSE
2114 g_flow_schedule_rec.outside_proc_var_acct := NULL;
2115 END IF;
2116
2117 END IF;
2118
2119 END IF;
2120
2121 IF g_flow_schedule_rec.overhead_account = FND_API.G_MISS_NUM OR g_flow_schedule_rec.overhead_account IS NULL THEN
2122
2123 g_flow_schedule_rec.overhead_account := Get_Overhead_Account;
2124
2125 IF g_flow_schedule_rec.overhead_account IS NOT NULL THEN
2126
2127 IF MRP_Validate.Overhead_Account(g_flow_schedule_rec.overhead_account)
2128 THEN
2129 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2130 ( p_attr_id => MRP_Flow_Schedule_Util.G_OVERHEAD_ACCOUNT
2131 , p_flow_schedule_rec => g_flow_schedule_rec
2132 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2133 , x_flow_schedule_rec => g_flow_schedule_rec
2134 );
2135 ELSE
2136 g_flow_schedule_rec.overhead_account := NULL;
2137 END IF;
2138
2139 END IF;
2140
2141 END IF;
2142
2143 IF g_flow_schedule_rec.overhead_variance_account = FND_API.G_MISS_NUM OR g_flow_schedule_rec.overhead_variance_account IS NULL THEN
2144
2145 g_flow_schedule_rec.overhead_variance_account := Get_Overhead_Variance_Account;
2146
2147 IF g_flow_schedule_rec.overhead_variance_account IS NOT NULL THEN
2148
2149 IF MRP_Validate.Overhead_Variance_Account(g_flow_schedule_rec.overhead_variance_account)
2150 THEN
2151 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2152 ( p_attr_id => MRP_Flow_Schedule_Util.G_OVERHEAD_VARIANCE_ACCOUNT
2153 , p_flow_schedule_rec => g_flow_schedule_rec
2154 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2155 , x_flow_schedule_rec => g_flow_schedule_rec
2156 );
2157 ELSE
2158 g_flow_schedule_rec.overhead_variance_account := NULL;
2159 END IF;
2160
2161 END IF;
2162
2163 END IF;
2164
2165 IF g_flow_schedule_rec.planned_quantity = FND_API.G_MISS_NUM OR g_flow_schedule_rec.planned_quantity IS NULL THEN
2166
2167 g_flow_schedule_rec.planned_quantity := Get_Planned_Quantity;
2168
2169 IF g_flow_schedule_rec.planned_quantity IS NOT NULL THEN
2170
2171 IF MRP_Validate.Planned_Quantity(g_flow_schedule_rec.planned_quantity)
2172 THEN
2173 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2174 ( p_attr_id => MRP_Flow_Schedule_Util.G_PLANNED_QUANTITY
2175 , p_flow_schedule_rec => g_flow_schedule_rec
2176 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2177 , x_flow_schedule_rec => g_flow_schedule_rec
2178 );
2179 ELSE
2180 g_flow_schedule_rec.planned_quantity := NULL;
2181 END IF;
2182
2183 END IF;
2184
2185 END IF;
2186
2187 IF g_flow_schedule_rec.primary_item_id = FND_API.G_MISS_NUM OR g_flow_schedule_rec.primary_item_id IS NULL THEN
2188
2189 g_flow_schedule_rec.primary_item_id := Get_Primary_Item;
2190
2191 IF g_flow_schedule_rec.primary_item_id IS NOT NULL THEN
2192
2193 IF MRP_Validate.Primary_Item(g_flow_schedule_rec.primary_item_id)
2194 THEN
2195 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2196 ( p_attr_id => MRP_Flow_Schedule_Util.G_PRIMARY_ITEM
2197 , p_flow_schedule_rec => g_flow_schedule_rec
2198 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2199 , x_flow_schedule_rec => g_flow_schedule_rec
2200 );
2201 ELSE
2202 g_flow_schedule_rec.primary_item_id := NULL;
2203 END IF;
2204
2205 END IF;
2206
2207 END IF;
2208
2209 IF g_flow_schedule_rec.project_id = FND_API.G_MISS_NUM OR g_flow_schedule_rec.project_id IS NULL THEN
2210
2211 g_flow_schedule_rec.project_id := Get_Project;
2212
2213 IF g_flow_schedule_rec.project_id IS NOT NULL THEN
2214
2215 IF MRP_Validate.Project(g_flow_schedule_rec.project_id)
2216 THEN
2217 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2218 ( p_attr_id => MRP_Flow_Schedule_Util.G_PROJECT
2219 , p_flow_schedule_rec => g_flow_schedule_rec
2220 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2221 , x_flow_schedule_rec => g_flow_schedule_rec
2222 );
2223 ELSE
2224 g_flow_schedule_rec.project_id := NULL;
2225 END IF;
2226
2227 END IF;
2228
2229 END IF;
2230
2231 IF g_flow_schedule_rec.quantity_completed = FND_API.G_MISS_NUM OR g_flow_schedule_rec.quantity_completed IS NULL THEN
2232
2233 g_flow_schedule_rec.quantity_completed := Get_Quantity_Completed;
2234
2235 IF g_flow_schedule_rec.quantity_completed IS NOT NULL THEN
2236
2237 IF MRP_Validate.Quantity_Completed(g_flow_schedule_rec.quantity_completed)
2238 THEN
2239 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2240 ( p_attr_id => MRP_Flow_Schedule_Util.G_QUANTITY_COMPLETED
2241 , p_flow_schedule_rec => g_flow_schedule_rec
2242 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2243 , x_flow_schedule_rec => g_flow_schedule_rec
2244 );
2245 ELSE
2246 g_flow_schedule_rec.quantity_completed := NULL;
2247 END IF;
2248
2249 END IF;
2250
2251 END IF;
2252
2253 IF g_flow_schedule_rec.request_id = FND_API.G_MISS_NUM OR g_flow_schedule_rec.request_id IS NULL THEN
2254
2255 -- bug 4529167
2256 -- g_flow_schedule_rec.request_id := Get_Request_Id;
2257 g_flow_schedule_rec.request_id := null;
2258
2259 END IF;
2260
2261 IF g_flow_schedule_rec.resource_account = FND_API.G_MISS_NUM OR g_flow_schedule_rec.resource_account IS NULL THEN
2262
2263 g_flow_schedule_rec.resource_account := Get_Resource_Account;
2264
2265 IF g_flow_schedule_rec.resource_account IS NOT NULL THEN
2266
2267 IF MRP_Validate.Resource_Account(g_flow_schedule_rec.resource_account)
2268 THEN
2269 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2270 ( p_attr_id => MRP_Flow_Schedule_Util.G_RESOURCE_ACCOUNT
2271 , p_flow_schedule_rec => g_flow_schedule_rec
2272 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2273 , x_flow_schedule_rec => g_flow_schedule_rec
2274 );
2275 ELSE
2276 g_flow_schedule_rec.resource_account := NULL;
2277 END IF;
2278
2279 END IF;
2280
2281 END IF;
2282
2283 IF g_flow_schedule_rec.resource_variance_account = FND_API.G_MISS_NUM OR g_flow_schedule_rec.resource_variance_account IS NULL THEN
2284
2285 g_flow_schedule_rec.resource_variance_account := Get_Resource_Variance_Account;
2286
2287 IF g_flow_schedule_rec.resource_variance_account IS NOT NULL THEN
2288
2289 IF MRP_Validate.Resource_Variance_Account(g_flow_schedule_rec.resource_variance_account)
2290 THEN
2291 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2292 ( p_attr_id => MRP_Flow_Schedule_Util.G_RESOURCE_VARIANCE_ACCOUNT
2293 , p_flow_schedule_rec => g_flow_schedule_rec
2294 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2295 , x_flow_schedule_rec => g_flow_schedule_rec
2296 );
2297 ELSE
2298 g_flow_schedule_rec.resource_variance_account := NULL;
2299 END IF;
2300
2301 END IF;
2302
2303 END IF;
2304
2305 /* Fix for bug 2977987: Moved this code to ensure that routing_revision is calculated after calculating
2306 routing_revision_date
2307
2308 IF g_flow_schedule_rec.routing_revision = FND_API.G_MISS_CHAR OR g_flow_schedule_rec.routing_revision IS NULL THEN
2309
2310 g_flow_schedule_rec.routing_revision := Get_Routing_Revision;
2311
2312 IF g_flow_schedule_rec.routing_revision IS NOT NULL THEN
2313
2314 IF MRP_Validate.Routing_Revision(g_flow_schedule_rec.routing_revision)
2315 THEN
2316 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2317 ( p_attr_id => MRP_Flow_Schedule_Util.G_ROUTING_REVISION
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
2323 g_flow_schedule_rec.routing_revision := NULL;
2324 END IF;
2325
2326 END IF;
2327
2328 END IF;
2329 */
2330
2331 IF g_flow_schedule_rec.routing_revision_date = FND_API.G_MISS_DATE OR g_flow_schedule_rec.routing_revision_date IS NULL THEN
2332
2333 g_flow_schedule_rec.routing_revision_date := Get_Routing_Revision_Date;
2334
2335 IF g_flow_schedule_rec.routing_revision_date IS NOT NULL THEN
2336
2337 IF MRP_Validate.Routing_Revision_Date(g_flow_schedule_rec.routing_revision_date)
2338 THEN
2339 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2340 ( p_attr_id => MRP_Flow_Schedule_Util.G_ROUTING_REVISION_DATE
2341 , p_flow_schedule_rec => g_flow_schedule_rec
2342 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2343 , x_flow_schedule_rec => g_flow_schedule_rec
2344 );
2345 ELSE
2346 g_flow_schedule_rec.routing_revision_date := NULL;
2347 END IF;
2348
2349 END IF;
2350
2351 END IF;
2352
2353 /* Fix for bug 2977987: routing_revision is being calculated after calculating routing_revision_date */
2354
2355 IF g_flow_schedule_rec.routing_revision = FND_API.G_MISS_CHAR OR g_flow_schedule_rec.routing_revision IS NULL THEN
2356
2357 g_flow_schedule_rec.routing_revision := Get_Routing_Revision;
2358
2359 IF g_flow_schedule_rec.routing_revision IS NOT NULL THEN
2360
2361 IF MRP_Validate.Routing_Revision(g_flow_schedule_rec.routing_revision)
2362 THEN
2363 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2364 ( p_attr_id => MRP_Flow_Schedule_Util.G_ROUTING_REVISION
2365 , p_flow_schedule_rec => g_flow_schedule_rec
2366 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2367 , x_flow_schedule_rec => g_flow_schedule_rec
2368 );
2369 ELSE
2370 g_flow_schedule_rec.routing_revision := NULL;
2371 END IF;
2372
2373 END IF;
2374
2375 END IF;
2376
2377 IF g_flow_schedule_rec.scheduled_completion_date = FND_API.G_MISS_DATE OR g_flow_schedule_rec.scheduled_completion_date IS NULL THEN
2378
2379 g_flow_schedule_rec.scheduled_completion_date := Get_Scheduled_Completion_Date;
2380
2381 IF g_flow_schedule_rec.scheduled_completion_date IS NOT NULL THEN
2382
2383 IF MRP_Validate.Scheduled_Completion_Date(g_flow_schedule_rec.scheduled_completion_date)
2384 THEN
2385 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2386 ( p_attr_id => MRP_Flow_Schedule_Util.G_SCHEDULED_COMPLETION_DATE
2387 , p_flow_schedule_rec => g_flow_schedule_rec
2388 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2389 , x_flow_schedule_rec => g_flow_schedule_rec
2390 );
2391 ELSE
2392 g_flow_schedule_rec.scheduled_completion_date := NULL;
2393 END IF;
2394
2395 END IF;
2396
2397 END IF;
2398
2399 IF g_flow_schedule_rec.scheduled_flag = FND_API.G_MISS_NUM or g_flow_schedule_rec.scheduled_flag IS NULL THEN
2400
2401 g_flow_schedule_rec.scheduled_flag := Get_Scheduled;
2402
2403 IF g_flow_schedule_rec.scheduled_flag IS NOT NULL THEN
2404
2405 IF MRP_Validate.Scheduled(g_flow_schedule_rec.scheduled_flag)
2406 THEN
2407 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2408 ( p_attr_id => MRP_Flow_Schedule_Util.G_SCHEDULED
2409 , p_flow_schedule_rec => g_flow_schedule_rec
2410 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2411 , x_flow_schedule_rec => g_flow_schedule_rec
2412 );
2413 ELSE
2414 g_flow_schedule_rec.scheduled_flag := NULL;
2415 END IF;
2416
2417 END IF;
2418
2419 END IF;
2420
2421 IF g_flow_schedule_rec.scheduled_start_date = FND_API.G_MISS_DATE OR g_flow_schedule_rec.scheduled_start_date IS NULL THEN
2422
2423 g_flow_schedule_rec.scheduled_start_date := Get_Scheduled_Start_Date;
2424
2425 IF g_flow_schedule_rec.scheduled_start_date IS NOT NULL THEN
2426
2427 IF MRP_Validate.Scheduled_Start_Date(g_flow_schedule_rec.scheduled_start_date)
2428 THEN
2429 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2430 ( p_attr_id => MRP_Flow_Schedule_Util.G_SCHEDULED_START_DATE
2431 , p_flow_schedule_rec => g_flow_schedule_rec
2432 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2433 , x_flow_schedule_rec => g_flow_schedule_rec
2434 );
2435 ELSE
2436 g_flow_schedule_rec.scheduled_start_date := NULL;
2437 END IF;
2438
2439 END IF;
2440
2441 END IF;
2442
2443 IF g_flow_schedule_rec.schedule_group_id = FND_API.G_MISS_NUM OR g_flow_schedule_rec.schedule_group_id IS NULL THEN
2444
2445 g_flow_schedule_rec.schedule_group_id := Get_Schedule_Group;
2446
2447 IF g_flow_schedule_rec.schedule_group_id IS NOT NULL THEN
2448
2449 IF MRP_Validate.Schedule_Group(g_flow_schedule_rec.schedule_group_id)
2450 THEN
2451 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2452 ( p_attr_id => MRP_Flow_Schedule_Util.G_SCHEDULE_GROUP
2453 , p_flow_schedule_rec => g_flow_schedule_rec
2454 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2455 , x_flow_schedule_rec => g_flow_schedule_rec
2456 );
2457 ELSE
2458 g_flow_schedule_rec.schedule_group_id := NULL;
2459 END IF;
2460
2461 END IF;
2462
2463 END IF;
2464
2465 IF g_flow_schedule_rec.schedule_number = FND_API.G_MISS_CHAR OR g_flow_schedule_rec.schedule_number IS NULL THEN
2466
2467 g_flow_schedule_rec.schedule_number := Get_Schedule_Number;
2468
2469 IF g_flow_schedule_rec.schedule_number IS NOT NULL THEN
2470
2471 IF MRP_Validate.Schedule_Number(g_flow_schedule_rec.schedule_number)
2472 THEN
2473 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2474 ( p_attr_id => MRP_Flow_Schedule_Util.G_SCHEDULE_NUMBER
2475 , p_flow_schedule_rec => g_flow_schedule_rec
2476 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2477 , x_flow_schedule_rec => g_flow_schedule_rec
2478 );
2479 ELSE
2480 g_flow_schedule_rec.schedule_number := NULL;
2481 END IF;
2482
2483 END IF;
2484
2485 END IF;
2486
2487 IF g_flow_schedule_rec.status = FND_API.G_MISS_NUM OR g_flow_schedule_rec.status IS NULL THEN
2488
2489 g_flow_schedule_rec.status := Get_Status;
2490
2491 IF g_flow_schedule_rec.status IS NOT NULL THEN
2492
2493 IF MRP_Validate.Status(g_flow_schedule_rec.status)
2494 THEN
2495 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2496 ( p_attr_id => MRP_Flow_Schedule_Util.G_STATUS
2497 , p_flow_schedule_rec => g_flow_schedule_rec
2498 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2499 , x_flow_schedule_rec => g_flow_schedule_rec
2500 );
2501 ELSE
2502 g_flow_schedule_rec.status := NULL;
2503 END IF;
2504
2505 END IF;
2506
2507 END IF;
2508
2509 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
2510
2511 g_flow_schedule_rec.std_cost_adjustment_acct := Get_Std_Cost_Adjustment_Acct;
2512
2513 IF g_flow_schedule_rec.std_cost_adjustment_acct IS NOT NULL THEN
2514
2515 IF MRP_Validate.Std_Cost_Adjustment_Acct(g_flow_schedule_rec.std_cost_adjustment_acct)
2516 THEN
2517 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2518 ( p_attr_id => MRP_Flow_Schedule_Util.G_STD_COST_ADJUSTMENT_ACCT
2519 , p_flow_schedule_rec => g_flow_schedule_rec
2520 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2521 , x_flow_schedule_rec => g_flow_schedule_rec
2522 );
2523 ELSE
2524 g_flow_schedule_rec.std_cost_adjustment_acct := NULL;
2525 END IF;
2526
2527 END IF;
2528
2529 END IF;
2530
2531 IF g_flow_schedule_rec.task_id = FND_API.G_MISS_NUM OR g_flow_schedule_rec.task_id IS NULL THEN
2532
2533 g_flow_schedule_rec.task_id := Get_Task;
2534
2535 IF g_flow_schedule_rec.task_id IS NOT NULL THEN
2536
2537 IF MRP_Validate.Task(g_flow_schedule_rec.task_id)
2538 THEN
2539 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2540 ( p_attr_id => MRP_Flow_Schedule_Util.G_TASK
2541 , p_flow_schedule_rec => g_flow_schedule_rec
2542 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2543 , x_flow_schedule_rec => g_flow_schedule_rec
2544 );
2545 ELSE
2546 g_flow_schedule_rec.task_id := NULL;
2547 END IF;
2548
2549 END IF;
2550
2551 END IF;
2552
2553 IF g_flow_schedule_rec.wip_entity_id = FND_API.G_MISS_NUM OR g_flow_schedule_rec.wip_entity_id IS NULL THEN
2554
2555 g_flow_schedule_rec.wip_entity_id := Get_Wip_Entity;
2556
2557 IF g_flow_schedule_rec.wip_entity_id IS NOT NULL THEN
2558
2559 IF MRP_Validate.Wip_Entity(g_flow_schedule_rec.wip_entity_id)
2560 THEN
2561 MRP_Flow_Schedule_Util.Clear_Dependent_Attr
2562 ( p_attr_id => MRP_Flow_Schedule_Util.G_WIP_ENTITY
2563 , p_flow_schedule_rec => g_flow_schedule_rec
2564 , p_old_flow_schedule_rec => l_old_flow_schedule_rec
2565 , x_flow_schedule_rec => g_flow_schedule_rec
2566 );
2567 ELSE
2568 g_flow_schedule_rec.wip_entity_id := NULL;
2569 END IF;
2570
2571 END IF;
2572
2573 END IF;
2574
2575 IF g_flow_schedule_rec.attribute1 = FND_API.G_MISS_CHAR
2576 OR g_flow_schedule_rec.attribute10 = FND_API.G_MISS_CHAR
2577 OR g_flow_schedule_rec.attribute11 = FND_API.G_MISS_CHAR
2578 OR g_flow_schedule_rec.attribute12 = FND_API.G_MISS_CHAR
2579 OR g_flow_schedule_rec.attribute13 = FND_API.G_MISS_CHAR
2580 OR g_flow_schedule_rec.attribute14 = FND_API.G_MISS_CHAR
2581 OR g_flow_schedule_rec.attribute15 = FND_API.G_MISS_CHAR
2582 OR g_flow_schedule_rec.attribute2 = FND_API.G_MISS_CHAR
2583 OR g_flow_schedule_rec.attribute3 = FND_API.G_MISS_CHAR
2584 OR g_flow_schedule_rec.attribute4 = FND_API.G_MISS_CHAR
2585 OR g_flow_schedule_rec.attribute5 = FND_API.G_MISS_CHAR
2586 OR g_flow_schedule_rec.attribute6 = FND_API.G_MISS_CHAR
2587 OR g_flow_schedule_rec.attribute7 = FND_API.G_MISS_CHAR
2588 OR g_flow_schedule_rec.attribute8 = FND_API.G_MISS_CHAR
2589 OR g_flow_schedule_rec.attribute9 = FND_API.G_MISS_CHAR
2590 OR g_flow_schedule_rec.attribute_category = FND_API.G_MISS_CHAR
2591 THEN
2592
2593 Get_Flex_Wip_Flow_Schedule;
2594
2595 END IF;
2596
2597 IF g_flow_schedule_rec.created_by = FND_API.G_MISS_NUM THEN
2598
2599 g_flow_schedule_rec.created_by := NULL;
2600
2601 END IF;
2602
2603 IF g_flow_schedule_rec.creation_date = FND_API.G_MISS_DATE THEN
2604
2605 g_flow_schedule_rec.creation_date := NULL;
2606
2607 END IF;
2608
2609 IF g_flow_schedule_rec.last_updated_by = FND_API.G_MISS_NUM THEN
2610
2611 g_flow_schedule_rec.last_updated_by := NULL;
2612
2613 END IF;
2614
2615 IF g_flow_schedule_rec.last_update_date = FND_API.G_MISS_DATE THEN
2616
2617 g_flow_schedule_rec.last_update_date := NULL;
2618
2619 END IF;
2620
2621 IF g_flow_schedule_rec.last_update_login = FND_API.G_MISS_NUM THEN
2622
2623 g_flow_schedule_rec.last_update_login := NULL;
2624
2625 END IF;
2626
2627 IF g_flow_schedule_rec.program_application_id = FND_API.G_MISS_NUM THEN
2628
2629 g_flow_schedule_rec.program_application_id := NULL;
2630
2631 END IF;
2632
2633 IF g_flow_schedule_rec.program_id = FND_API.G_MISS_NUM THEN
2634
2635 g_flow_schedule_rec.program_id := NULL;
2636
2637 END IF;
2638
2639 IF g_flow_schedule_rec.program_update_date = FND_API.G_MISS_DATE THEN
2640
2641 g_flow_schedule_rec.program_update_date := NULL;
2642
2643 END IF;
2644
2645 IF g_flow_schedule_rec.request_id = FND_API.G_MISS_NUM THEN
2646
2647 g_flow_schedule_rec.request_id := NULL;
2648
2649 END IF;
2650
2651 IF g_flow_schedule_rec.kanban_card_id = FND_API.G_MISS_NUM THEN
2652
2653 g_flow_schedule_rec.kanban_card_id := NULL;
2654
2655 END IF;
2656
2657 -- Redefault if there are any missing attributes.
2658
2659 IF g_flow_schedule_rec.alternate_bom_designator = FND_API.G_MISS_CHAR
2660 OR g_flow_schedule_rec.alternate_routing_desig = FND_API.G_MISS_CHAR
2661 OR g_flow_schedule_rec.attribute1 = FND_API.G_MISS_CHAR
2662 OR g_flow_schedule_rec.attribute10 = FND_API.G_MISS_CHAR
2663 OR g_flow_schedule_rec.attribute11 = FND_API.G_MISS_CHAR
2664 OR g_flow_schedule_rec.attribute12 = FND_API.G_MISS_CHAR
2665 OR g_flow_schedule_rec.attribute13 = FND_API.G_MISS_CHAR
2666 OR g_flow_schedule_rec.attribute14 = FND_API.G_MISS_CHAR
2667 OR g_flow_schedule_rec.attribute15 = FND_API.G_MISS_CHAR
2668 OR g_flow_schedule_rec.attribute2 = FND_API.G_MISS_CHAR
2669 OR g_flow_schedule_rec.attribute3 = FND_API.G_MISS_CHAR
2670 OR g_flow_schedule_rec.attribute4 = FND_API.G_MISS_CHAR
2671 OR g_flow_schedule_rec.attribute5 = FND_API.G_MISS_CHAR
2672 OR g_flow_schedule_rec.attribute6 = FND_API.G_MISS_CHAR
2673 OR g_flow_schedule_rec.attribute7 = FND_API.G_MISS_CHAR
2674 OR g_flow_schedule_rec.attribute8 = FND_API.G_MISS_CHAR
2675 OR g_flow_schedule_rec.attribute9 = FND_API.G_MISS_CHAR
2676 OR g_flow_schedule_rec.attribute_category = FND_API.G_MISS_CHAR
2677 OR g_flow_schedule_rec.bom_revision = FND_API.G_MISS_CHAR
2678 OR g_flow_schedule_rec.bom_revision_date = FND_API.G_MISS_DATE
2679 OR g_flow_schedule_rec.build_sequence = FND_API.G_MISS_NUM
2680 OR g_flow_schedule_rec.class_code = FND_API.G_MISS_CHAR
2681 OR g_flow_schedule_rec.completion_locator_id = FND_API.G_MISS_NUM
2682 OR g_flow_schedule_rec.completion_subinventory = FND_API.G_MISS_CHAR
2683 OR g_flow_schedule_rec.created_by = FND_API.G_MISS_NUM
2684 OR g_flow_schedule_rec.creation_date = FND_API.G_MISS_DATE
2685 OR g_flow_schedule_rec.date_closed = FND_API.G_MISS_DATE
2686 OR g_flow_schedule_rec.end_item_unit_number = FND_API.G_MISS_CHAR
2687 OR g_flow_schedule_rec.quantity_scrapped = FND_API.G_MISS_NUM
2688 OR g_flow_schedule_rec.demand_class = FND_API.G_MISS_CHAR
2689 OR g_flow_schedule_rec.demand_source_delivery = FND_API.G_MISS_CHAR
2690 OR g_flow_schedule_rec.demand_source_header_id = FND_API.G_MISS_NUM
2691 OR g_flow_schedule_rec.demand_source_line = FND_API.G_MISS_CHAR
2692 OR g_flow_schedule_rec.demand_source_type = FND_API.G_MISS_NUM
2693 OR g_flow_schedule_rec.last_updated_by = FND_API.G_MISS_NUM
2694 OR g_flow_schedule_rec.last_update_date = FND_API.G_MISS_DATE
2695 OR g_flow_schedule_rec.last_update_login = FND_API.G_MISS_NUM
2696 OR g_flow_schedule_rec.line_id = FND_API.G_MISS_NUM
2697 OR g_flow_schedule_rec.material_account = FND_API.G_MISS_NUM
2698 OR g_flow_schedule_rec.material_overhead_account = FND_API.G_MISS_NUM
2699 OR g_flow_schedule_rec.material_variance_account = FND_API.G_MISS_NUM
2700 OR g_flow_schedule_rec.mps_net_quantity = FND_API.G_MISS_NUM
2701 OR g_flow_schedule_rec.mps_scheduled_comp_date = FND_API.G_MISS_DATE
2702 OR g_flow_schedule_rec.organization_id = FND_API.G_MISS_NUM
2703 OR g_flow_schedule_rec.outside_processing_acct = FND_API.G_MISS_NUM
2704 OR g_flow_schedule_rec.outside_proc_var_acct = FND_API.G_MISS_NUM
2705 OR g_flow_schedule_rec.overhead_account = FND_API.G_MISS_NUM
2706 OR g_flow_schedule_rec.overhead_variance_account = FND_API.G_MISS_NUM
2707 OR g_flow_schedule_rec.planned_quantity = FND_API.G_MISS_NUM
2708 OR g_flow_schedule_rec.primary_item_id = FND_API.G_MISS_NUM
2709 OR g_flow_schedule_rec.program_application_id = FND_API.G_MISS_NUM
2710 OR g_flow_schedule_rec.program_id = FND_API.G_MISS_NUM
2711 OR g_flow_schedule_rec.program_update_date = FND_API.G_MISS_DATE
2712 OR g_flow_schedule_rec.project_id = FND_API.G_MISS_NUM
2713 OR g_flow_schedule_rec.quantity_completed = FND_API.G_MISS_NUM
2714 OR g_flow_schedule_rec.request_id = FND_API.G_MISS_NUM
2715 OR g_flow_schedule_rec.resource_account = FND_API.G_MISS_NUM
2716 OR g_flow_schedule_rec.resource_variance_account = FND_API.G_MISS_NUM
2717 OR g_flow_schedule_rec.routing_revision = FND_API.G_MISS_CHAR
2718 OR g_flow_schedule_rec.routing_revision_date = FND_API.G_MISS_DATE
2719 OR g_flow_schedule_rec.scheduled_completion_date = FND_API.G_MISS_DATE
2720 OR g_flow_schedule_rec.scheduled_flag = FND_API.G_MISS_NUM
2721 OR g_flow_schedule_rec.scheduled_start_date = FND_API.G_MISS_DATE
2722 OR g_flow_schedule_rec.schedule_group_id = FND_API.G_MISS_NUM
2723 OR g_flow_schedule_rec.schedule_number = FND_API.G_MISS_CHAR
2724 OR g_flow_schedule_rec.status = FND_API.G_MISS_NUM
2725 OR g_flow_schedule_rec.std_cost_adjustment_acct = FND_API.G_MISS_NUM
2726 OR g_flow_schedule_rec.task_id = FND_API.G_MISS_NUM
2727 OR g_flow_schedule_rec.wip_entity_id = FND_API.G_MISS_NUM
2728 THEN
2729
2730 MRP_Default_Flow_Schedule.Attributes
2731 ( p_flow_schedule_rec => g_flow_schedule_rec
2732 , p_iteration => nvl(p_iteration, 1) + 1
2733 , x_flow_schedule_rec => x_flow_schedule_rec
2734 );
2735
2736 ELSE
2737
2738 -- Done defaulting attributes
2739
2740 x_flow_schedule_rec := g_flow_schedule_rec;
2741
2742 END IF;
2743
2744 END Attributes;
2745
2746 END MRP_Default_Flow_Schedule;