1 PACKAGE BODY WIP_Default_Discretejob AS
2 /* $Header: WIPDWDJB.pls 120.0.12020000.2 2012/07/18 07:46:27 ankohli ship $ */
3
4 -- Global constant holding the package name
5
6 G_PKG_NAME CONSTANT VARCHAR2(30) := 'WIP_Default_Discretejob';
7
8 -- Package global used within the package.
9
10 g_DiscreteJob_rec WIP_Work_Order_PUB.Discretejob_Rec_Type;
11
12 -- Get functions.
13
14 FUNCTION Get_Alternate_Bom_Designator
15 RETURN VARCHAR2
16 IS
17 BEGIN
18
19 IF(g_DiscreteJob_rec.Alternate_Bom_Designator IS NOT NULL) THEN
20 RETURN g_DiscreteJob_rec.Alternate_Bom_Designator;
21 END IF;
22
23 RETURN NULL;
24
25 END Get_Alternate_Bom_Designator;
26
27 FUNCTION Get_Alternate_Rout_Designator
28 RETURN VARCHAR2
29 IS
30 BEGIN
31
32 IF(g_DiscreteJob_rec.Alternate_Rout_Designator IS NOT NULL) THEN
33 RETURN g_DiscreteJob_rec.Alternate_Rout_Designator;
34 END IF;
35
36 RETURN NULL;
37
38 END Get_Alternate_Rout_Designator;
39
40 FUNCTION Get_Bom_Reference
41 RETURN NUMBER
42 IS
43 BEGIN
44
45 IF(g_DiscreteJob_rec.Bom_Reference_Id IS NOT NULL) THEN
46 RETURN g_DiscreteJob_rec.Bom_Reference_Id;
47 END IF;
48
49 RETURN NULL;
50
51 END Get_Bom_Reference;
52
53 FUNCTION Get_Bom_Revision
54 RETURN VARCHAR2
55 IS
56 BEGIN
57
58 IF(g_DiscreteJob_rec.Bom_Revision IS NOT NULL) THEN
59 RETURN g_DiscreteJob_rec.Bom_Revision;
60 END IF;
61
62 RETURN NULL;
63
64 END Get_Bom_Revision;
65
66 FUNCTION Get_Bom_Revision_Date
67 RETURN DATE
68 IS
69 BEGIN
70
71 IF(g_DiscreteJob_rec.Bom_Revision_Date IS NOT NULL) THEN
72 RETURN g_DiscreteJob_rec.Bom_Revision_Date;
73 END IF;
74
75 RETURN NULL;
76
77 END Get_Bom_Revision_Date;
78
79 FUNCTION Get_Build_Sequence
80 RETURN NUMBER
81 IS
82 BEGIN
83
84 IF(g_DiscreteJob_rec.Build_Sequence IS NOT NULL) THEN
85 RETURN g_DiscreteJob_rec.Build_Sequence;
86 END IF;
87
88 RETURN NULL;
89
90 END Get_Build_Sequence;
91
92 FUNCTION Get_Class
93 RETURN VARCHAR2
94 IS
95 l_acct_class VARCHAR2(10);
96 BEGIN
97
98 IF(g_DiscreteJob_rec.class_code IS NOT NULL) THEN
99 RETURN g_DiscreteJob_rec.class_code;
100 END IF;
101
102 IF(g_DiscreteJob_rec.organization_id IS NOT NULL) THEN
103 SELECT default_discrete_class INTO l_acct_class
104 FROM wip_parameters
105 WHERE organization_id = g_DiscreteJob_rec.organization_id;
106
107 RETURN l_acct_class;
108 END IF;
109
110 RETURN NULL;
111
112 EXCEPTION
113 WHEN OTHERS THEN
114 RETURN FND_API.G_MISS_CHAR;
115
116 END Get_Class;
117
118 FUNCTION Get_Common_Bom_Sequence
119 RETURN NUMBER
120 IS
121 BEGIN
122
123 IF(g_DiscreteJob_rec.Common_Bom_Sequence_Id IS NOT NULL) THEN
124 RETURN g_DiscreteJob_rec.Common_Bom_Sequence_Id;
125 END IF;
126
127 RETURN NULL;
128
129 END Get_Common_Bom_Sequence;
130
131 FUNCTION Get_Common_Rout_Sequence
132 RETURN NUMBER
133 IS
134 BEGIN
135
136 IF(g_DiscreteJob_rec.Common_Rout_Sequence_Id IS NOT NULL) THEN
137 RETURN g_DiscreteJob_rec.Common_Rout_Sequence_Id;
138 END IF;
139
140 RETURN NULL;
141
142 END Get_Common_Rout_Sequence;
143
144 FUNCTION Get_Completion_Locator
145 RETURN NUMBER
146 IS
147 l_kanban_rec INV_Kanban_PVT.Kanban_Card_Rec_Type;
148 l_return_status VARCHAR2(1);
149 l_msg_count NUMBER;
150 l_msg_data VARCHAR2(1000);
151 l_locator_control NUMBER;
152 BEGIN
153 --bug14167405 Moving the order of defaulting logic for Kanban before Bom/Routing defaults, since this is Kanban flow
154 IF g_DiscreteJob_rec.organization_id IS NULL
155 OR g_DiscreteJob_rec.completion_subinventory IS NULL
156 OR g_DiscreteJob_rec.primary_item_id IS NULL
157 THEN
158 RETURN FND_API.G_MISS_NUM;
159 ELSE
160 Wip_Globals.Get_Locator_Control(g_DiscreteJob_rec.organization_id,
161 g_DiscreteJob_rec.completion_subinventory,
162 g_DiscreteJob_rec.primary_item_id,
163 l_return_status,
164 l_msg_count,
165 l_msg_data,
166 l_locator_control
167 );
168 IF l_return_status <> FND_API.G_RET_STS_SUCCESS THEN
169 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
170 END IF;
171
172 IF l_locator_control = 1 THEN
173 RETURN NULL;
174 END IF;
175 -- Default the locator only if there is locator control.
176 IF(g_DiscreteJob_rec.kanban_card_id IS NOT NULL) THEN
177 l_kanban_rec := INV_KanbanCard_PKG.Query_Row(p_kanban_card_id => g_DiscreteJob_rec.kanban_card_id);
178 RETURN(l_kanban_rec.locator_id);
179 END IF;
180 END IF;
181
182 IF(g_DiscreteJob_rec.completion_locator_id IS NOT NULL) THEN
183 RETURN g_DiscreteJob_rec.completion_locator_id;
184 END IF;
185
186 RETURN NULL;
187
188 EXCEPTION
189 WHEN OTHERS THEN
190 RETURN FND_API.G_MISS_NUM;
191
192 END Get_Completion_Locator;
193
194 FUNCTION Get_Completion_Subinventory
195 RETURN VARCHAR2
196 IS
197 l_kanban_rec INV_Kanban_PVT.Kanban_Card_Rec_Type;
198 BEGIN
199 --bug14167405 Moving the order of defaulting logic for Kanban before Bom/Routing defaults, since this is Kanban flow
200 IF(g_DiscreteJob_rec.kanban_card_id IS NOT NULL) THEN
201 l_kanban_rec := INV_KanbanCard_PKG.Query_Row(p_kanban_card_id => g_DiscreteJob_rec.kanban_card_id);
202 RETURN(l_kanban_rec.subinventory_name);
203 END IF;
204
205 IF(g_DiscreteJob_rec.completion_subinventory IS NOT NULL) THEN
206 RETURN g_DiscreteJob_rec.completion_subinventory;
207 END IF;
208
209 EXCEPTION
210 WHEN OTHERS THEN
211 RETURN FND_API.G_MISS_CHAR;
212
213 END Get_Completion_Subinventory;
214
215 FUNCTION Get_Date_Closed
216 RETURN DATE
217 IS
218 BEGIN
219
220 IF(g_DiscreteJob_rec.date_closed IS NOT NULL) THEN
221 RETURN g_DiscreteJob_rec.date_closed;
222 END IF;
223
224 RETURN NULL;
225
226 END Get_Date_Closed;
227
228 FUNCTION Get_Date_Completed
229 RETURN DATE
230 IS
231 BEGIN
232
233 IF(g_DiscreteJob_rec.date_completed IS NOT NULL) THEN
234 RETURN g_DiscreteJob_rec.date_completed;
235 END IF;
236
237 RETURN NULL;
238
239 END Get_Date_Completed;
240
241 FUNCTION Get_Date_Released
242 RETURN DATE
243 IS
244 BEGIN
245
246 IF(g_DiscreteJob_rec.date_released IS NOT NULL) THEN
247 RETURN g_DiscreteJob_rec.date_released;
248 END IF;
249
250 RETURN Sysdate;
251
252 END Get_Date_Released;
253
254 FUNCTION Get_Demand_Class
255 RETURN VARCHAR2
256 IS
257 BEGIN
258
259 IF(g_DiscreteJob_rec.demand_class IS NOT NULL) THEN
260 RETURN g_DiscreteJob_rec.demand_class;
261 END IF;
262
263 RETURN NULL;
264
265 END Get_Demand_Class;
266
267 FUNCTION Get_Description
268 RETURN VARCHAR2
269 IS
270 BEGIN
271
272 IF(g_DiscreteJob_rec.Description IS NOT NULL) THEN
273 RETURN g_DiscreteJob_rec.Description;
274 END IF;
275
276 RETURN NULL;
277
278 END Get_Description;
279
280 FUNCTION Get_Firm_Planned
281 RETURN NUMBER
282 IS
283 BEGIN
284
285 IF(g_DiscreteJob_rec.Firm_Planned_Flag IS NOT NULL) THEN
286 RETURN g_DiscreteJob_rec.Firm_Planned_Flag;
287 END IF;
288
289 RETURN NULL;
290
291 END Get_Firm_Planned;
292
293 FUNCTION Get_Job_Type
294 RETURN NUMBER
295 IS
296 BEGIN
297
298 IF(g_DiscreteJob_rec.Job_Type IS NOT NULL) THEN
299 RETURN g_DiscreteJob_rec.Job_Type;
300 END IF;
301
302 IF(g_DiscreteJob_rec.kanban_card_id IS NOT NULL) THEN
303 -- Create Standard Jobs for Kanban replenishment.
304 RETURN 1;
305 END IF;
306
307 RETURN NULL;
308
309 END Get_Job_Type;
310
311 FUNCTION Get_Kanban_Card
312 RETURN NUMBER
313 IS
314 BEGIN
315
316 IF(g_DiscreteJob_rec.Kanban_Card_id IS NOT NULL) THEN
317 RETURN g_DiscreteJob_rec.Kanban_Card_id;
318 END IF;
319
320 RETURN NULL;
321
322 END Get_Kanban_Card;
323
324 FUNCTION Get_Line
325 RETURN NUMBER
326 IS
327 l_kanban_rec INV_Kanban_PVT.Kanban_Card_Rec_Type;
328 BEGIN
329
330 IF(g_DiscreteJob_rec.Line_id IS NOT NULL) THEN
331 RETURN g_DiscreteJob_rec.Line_id;
332 END IF;
333
334 IF(g_DiscreteJob_rec.kanban_card_id IS NOT NULL) THEN
335 l_kanban_rec := INV_KanbanCard_PKG.Query_Row(p_kanban_card_id => g_DiscreteJob_rec.kanban_card_id);
336 RETURN(l_kanban_rec.wip_line_id);
337 END IF;
338
339 EXCEPTION
340 WHEN OTHERS THEN
341 RETURN FND_API.G_MISS_NUM;
342
343 END Get_Line;
344
345 FUNCTION Get_Lot_Number
346 RETURN VARCHAR2
347 IS
348 BEGIN
349
350 IF(g_DiscreteJob_rec.Lot_Number IS NOT NULL) THEN
351 RETURN g_DiscreteJob_rec.Lot_Number;
352 END IF;
353
354 RETURN NULL;
355
356 END Get_Lot_Number;
357
358 FUNCTION Get_Material_Account
359 RETURN NUMBER
360 IS
361 BEGIN
362
363 IF(g_DiscreteJob_rec.Material_Account IS NOT NULL) THEN
364 RETURN g_DiscreteJob_rec.Material_Account;
365 END IF;
366
367 RETURN NULL;
368
369 END Get_Material_Account;
370
371 FUNCTION Get_Material_Overhead_Account
372 RETURN NUMBER
373 IS
374 BEGIN
375
376 IF(g_DiscreteJob_rec.Material_Overhead_Account IS NOT NULL) THEN
377 RETURN g_DiscreteJob_rec.Material_Overhead_Account;
378 END IF;
379
380 RETURN NULL;
381
382 END Get_Material_Overhead_Account;
383
384 FUNCTION Get_Material_Variance_Account
385 RETURN NUMBER
386 IS
387 BEGIN
388
389 IF(g_DiscreteJob_rec.Material_Variance_Account IS NOT NULL) THEN
390 RETURN g_DiscreteJob_rec.Material_Variance_Account;
391 END IF;
392
393 RETURN NULL;
394
395 END Get_Material_Variance_Account;
396
397 FUNCTION Get_Mps_Net_Quantity
398 RETURN NUMBER
399 IS
400 BEGIN
401
402 IF(g_DiscreteJob_rec.Mps_Net_Quantity IS NOT NULL) THEN
403 RETURN g_DiscreteJob_rec.Mps_Net_Quantity;
404 END IF;
405
406 RETURN NULL;
407
408 END Get_Mps_Net_Quantity;
409
410 FUNCTION Get_Mps_Scheduled_Cpl_Date
411 RETURN DATE
412 IS
413 BEGIN
414
415 IF(g_DiscreteJob_rec.Mps_Scheduled_Cpl_Date IS NOT NULL) THEN
416 RETURN g_DiscreteJob_rec.Mps_Scheduled_Cpl_Date;
417 END IF;
418
419 RETURN NULL;
420
421 END Get_Mps_Scheduled_Cpl_Date;
422
423 FUNCTION Get_Net_Quantity
424 RETURN NUMBER
425 IS
426 BEGIN
427
428 IF(g_DiscreteJob_rec.Net_Quantity IS NOT NULL) THEN
429 RETURN g_DiscreteJob_rec.Net_Quantity;
430 END IF;
431
432 RETURN NULL;
433
434 END Get_Net_Quantity;
435
436 FUNCTION Get_Organization
437 RETURN NUMBER
438 IS
439 BEGIN
440
441 IF(g_DiscreteJob_rec.Organization_id IS NOT NULL) THEN
442 RETURN g_DiscreteJob_rec.Organization_id;
443 END IF;
444
445 RETURN NULL;
446
447 END Get_Organization;
448
449 FUNCTION Get_Osp_Account
450 RETURN NUMBER
451 IS
452 BEGIN
453
454 IF(g_DiscreteJob_rec.Osp_Account IS NOT NULL) THEN
455 RETURN g_DiscreteJob_rec.Osp_Account;
456 END IF;
457
458 RETURN NULL;
459
460 END Get_Osp_Account;
461
462 FUNCTION Get_Osp_Variance_Account
463 RETURN NUMBER
464 IS
465 BEGIN
466
467 IF(g_DiscreteJob_rec.Osp_Variance_Account IS NOT NULL) THEN
468 RETURN g_DiscreteJob_rec.Osp_Variance_Account;
469 END IF;
470
471 RETURN NULL;
472
473 END Get_Osp_Variance_Account;
474
475 FUNCTION Get_Overcpl_Tolerance_Type
476 RETURN NUMBER
477 IS
478 BEGIN
479
480 IF(g_DiscreteJob_rec.Overcpl_Tolerance_Type IS NOT NULL) THEN
481 RETURN g_DiscreteJob_rec.Overcpl_Tolerance_Type;
482 END IF;
483
484 RETURN NULL;
485
486 END Get_Overcpl_Tolerance_Type;
487
488 FUNCTION Get_Overcpl_Tolerance_Value
489 RETURN NUMBER
490 IS
491 BEGIN
492
493 IF(g_DiscreteJob_rec.Overcpl_Tolerance_Value IS NOT NULL) THEN
494 RETURN g_DiscreteJob_rec.Overcpl_Tolerance_Value;
495 END IF;
496
497 RETURN NULL;
498
499 END Get_Overcpl_Tolerance_Value;
500
501 FUNCTION Get_Overhead_Account
502 RETURN NUMBER
503 IS
504 BEGIN
505
506 IF(g_DiscreteJob_rec.Overhead_Account IS NOT NULL) THEN
507 RETURN g_DiscreteJob_rec.Overhead_Account;
508 END IF;
509
510 RETURN NULL;
511
512 END Get_Overhead_Account;
513
514 FUNCTION Get_Overhead_Variance_Account
515 RETURN NUMBER
516 IS
517 BEGIN
518
519 IF(g_DiscreteJob_rec.Overhead_Variance_Account IS NOT NULL) THEN
520 RETURN g_DiscreteJob_rec.Overhead_Variance_Account;
521 END IF;
522
523 RETURN NULL;
524
525 END Get_Overhead_Variance_Account;
526
527 FUNCTION Get_Primary_Item
528 RETURN NUMBER
529 IS
530 l_kanban_rec INV_Kanban_PVT.Kanban_Card_Rec_Type;
531 BEGIN
532
533 IF(g_DiscreteJob_rec.primary_item_id IS NOT NULL) THEN
534 RETURN g_DiscreteJob_rec.primary_item_id;
535 END IF;
536
537 IF(g_DiscreteJob_rec.kanban_card_id IS NOT NULL) THEN
538 l_kanban_rec := INV_KanbanCard_PKG.Query_Row(p_kanban_card_id => g_DiscreteJob_rec.kanban_card_id);
539 RETURN(l_kanban_rec.inventory_item_id);
540 END IF;
541
542 EXCEPTION
543 WHEN OTHERS THEN
544 RETURN FND_API.G_MISS_NUM;
545
546 END Get_Primary_Item;
547
548 FUNCTION Get_Project_Costed
549 RETURN NUMBER
550 IS
551 BEGIN
552
553 IF(g_DiscreteJob_rec.Project_Costed IS NOT NULL) THEN
554 RETURN g_DiscreteJob_rec.Project_Costed;
555 END IF;
556
557 RETURN NULL;
558
559 END Get_Project_Costed;
560
561 FUNCTION Get_Project
562 RETURN NUMBER
563 IS
564 BEGIN
565
566 IF(g_DiscreteJob_rec.Project_Id IS NOT NULL) THEN
567 RETURN g_DiscreteJob_rec.Project_Id;
568 END IF;
569
570 RETURN NULL;
571
572 END Get_Project;
573
574 FUNCTION Get_Quantity_Completed
575 RETURN NUMBER
576 IS
577 BEGIN
578
579 IF(g_DiscreteJob_rec.Quantity_Completed IS NOT NULL) THEN
580 RETURN g_DiscreteJob_rec.Quantity_Completed;
581 END IF;
582
583 RETURN NULL;
584
585 END Get_Quantity_Completed;
586
587 FUNCTION Get_Quantity_Scrapped
588 RETURN NUMBER
589 IS
590 BEGIN
591
592 IF(g_DiscreteJob_rec.Quantity_Scrapped IS NOT NULL) THEN
593 RETURN g_DiscreteJob_rec.Quantity_Scrapped;
594 END IF;
595
596 RETURN NULL;
597
598 END Get_Quantity_Scrapped;
599
600 FUNCTION Get_Resource_Account
601 RETURN NUMBER
602 IS
603 BEGIN
604
605 IF(g_DiscreteJob_rec.Resource_Account IS NOT NULL) THEN
606 RETURN g_DiscreteJob_rec.Resource_Account;
607 END IF;
608
609 RETURN NULL;
610
611 END Get_Resource_Account;
612
613 FUNCTION Get_Resource_Variance_Account
614 RETURN NUMBER
615 IS
616 BEGIN
617
618 IF(g_DiscreteJob_rec.Resource_Variance_Account IS NOT NULL) THEN
619 RETURN g_DiscreteJob_rec.Resource_Variance_Account;
620 END IF;
621
622 RETURN NULL;
623
624 END Get_Resource_Variance_Account;
625
626 FUNCTION Get_Routing_Reference
627 RETURN NUMBER
628 IS
629 BEGIN
630
631 IF(g_DiscreteJob_rec.Routing_Revision IS NOT NULL) THEN
632 RETURN g_DiscreteJob_rec.Routing_Reference_Id;
633 END IF;
634
635 RETURN NULL;
636
637 END Get_Routing_Reference;
638
639 FUNCTION Get_Routing_Revision
640 RETURN VARCHAR2
641 IS
642 BEGIN
643
644 IF(g_DiscreteJob_rec.Routing_Revision IS NOT NULL) THEN
645 RETURN g_DiscreteJob_rec.Routing_Revision;
646 END IF;
647
648 RETURN NULL;
649
650 END Get_Routing_Revision;
651
652 FUNCTION Get_Routing_Revision_Date
653 RETURN DATE
654 IS
655 BEGIN
656
657 IF(g_DiscreteJob_rec.Routing_Revision_Date IS NOT NULL) THEN
658 RETURN g_DiscreteJob_rec.Routing_Revision_Date;
659 END IF;
660
661 RETURN NULL;
662
663 END Get_Routing_Revision_Date;
664
665 FUNCTION Get_Scheduled_Completion_Date
666 RETURN DATE
667 IS
668 l_rout_exists NUMBER := 0;
669 BEGIN
670
671 IF(g_DiscreteJob_rec.scheduled_completion_date IS NOT NULL) THEN
672 RETURN g_DiscreteJob_rec.scheduled_completion_date;
673 END IF;
674
675 -- If the assembly doesnot have a routing default the completion sate to be the same as the start date.
676
677 IF g_DiscreteJob_rec.primary_item_id IS NOT NULL
678 AND g_DiscreteJob_rec.organization_id IS NOT NULL THEN
679
680 SELECT 1 INTO l_rout_exists
681 FROM dual
682 WHERE exists(
683 SELECT routing_sequence_id
684 FROM bom_operational_routings
685 WHERE assembly_item_id = g_DiscreteJob_rec.primary_item_id
686 AND organization_id = g_DiscreteJob_rec.organization_id);
687
688 IF (l_rout_exists = 0) THEN
689 RETURN g_DiscreteJob_rec.Scheduled_Start_Date;
690 END IF;
691 END IF;
692
693 RETURN NULL;
694
695 EXCEPTION
696 WHEN OTHERS THEN
697 RETURN FND_API.G_MISS_DATE;
698
699 END Get_Scheduled_Completion_Date;
700
701 FUNCTION Get_Scheduled_Start_Date
702 RETURN DATE
703 IS
704 l_rout_exists NUMBER := 0;
705 BEGIN
706
707 IF(g_DiscreteJob_rec.scheduled_start_date IS NOT NULL) THEN
708 RETURN g_DiscreteJob_rec.scheduled_start_date;
709 END IF;
710
711 -- If this defaulting is for kanban default the start date to be sysdate.
712 IF(g_DiscreteJob_rec.kanban_card_id IS NOT NULL) THEN
713 RETURN Sysdate;
714 END IF;
715
716 -- If the assembly doesnot have a routing default the start sate to be the same as the completion date.
717
718 IF g_DiscreteJob_rec.primary_item_id IS NOT NULL
719 AND g_DiscreteJob_rec.organization_id IS NOT NULL THEN
720
721 SELECT 1 INTO l_rout_exists
722 FROM dual
723 WHERE exists(
724 SELECT routing_sequence_id
725 FROM bom_operational_routings
726 WHERE assembly_item_id = g_DiscreteJob_rec.primary_item_id
727 AND organization_id = g_DiscreteJob_rec.organization_id);
728
729 IF (l_rout_exists = 0) THEN
730 RETURN g_DiscreteJob_rec.Scheduled_Completion_Date;
731 END IF;
732 END IF;
733
734 RETURN NULL;
735
736 EXCEPTION
737 WHEN OTHERS THEN
738 RETURN FND_API.G_MISS_DATE;
739
740 END Get_Scheduled_Start_Date;
741
742 FUNCTION Get_Schedule_Group
743 RETURN NUMBER
744 IS
745 BEGIN
746
747 IF(g_DiscreteJob_rec.Schedule_Group_Id IS NOT NULL) THEN
748 RETURN g_DiscreteJob_rec.Schedule_Group_Id;
749 END IF;
750
751 RETURN NULL;
752
753 END Get_Schedule_Group;
754
755 FUNCTION Get_Source
756 RETURN VARCHAR2
757 IS
758 BEGIN
759
760 IF(g_DiscreteJob_rec.Source_Code IS NOT NULL) THEN
761 RETURN g_DiscreteJob_rec.Source_Code;
762 END IF;
763
764 RETURN NULL;
765
766 END Get_Source;
767
768 FUNCTION Get_Source_Line
769 RETURN NUMBER
770 IS
771 BEGIN
772
773 IF(g_DiscreteJob_rec.Source_Line_Id IS NOT NULL) THEN
774 RETURN g_DiscreteJob_rec.Source_Line_Id;
775 END IF;
776
777 RETURN NULL;
778
779 END Get_Source_Line;
780
781 FUNCTION Get_Start_Quantity
782 RETURN NUMBER
783 IS
784 l_kanban_rec INV_Kanban_PVT.Kanban_Card_Rec_Type;
785 BEGIN
786
787 IF(g_DiscreteJob_rec.start_quantity IS NOT NULL) THEN
788 RETURN g_DiscreteJob_rec.start_quantity;
789 END IF;
790
791 IF(g_DiscreteJob_rec.kanban_card_id IS NOT NULL) THEN
792 l_kanban_rec := INV_KanbanCard_PKG.Query_Row(p_kanban_card_id => g_DiscreteJob_rec.kanban_card_id);
793 RETURN(l_kanban_rec.kanban_size);
794 END IF;
795
796 EXCEPTION
797 WHEN OTHERS THEN
798 RETURN FND_API.G_MISS_NUM;
799
800 END Get_Start_Quantity;
801
802 FUNCTION Get_Status_Type
803 RETURN NUMBER
804 IS
805 BEGIN
806
807 IF(g_DiscreteJob_rec.Status_Type IS NOT NULL) THEN
808 RETURN g_DiscreteJob_rec.Status_Type;
809 END IF;
810
811 -- By default Jobs are created as unreleased
812 RETURN 1;
813
814 END Get_Status_Type;
815
816 FUNCTION Get_Std_Cost_Adj_Account
817 RETURN NUMBER
818 IS
819 BEGIN
820
821 IF(g_DiscreteJob_rec.Std_Cost_Adj_Account IS NOT NULL) THEN
822 RETURN g_DiscreteJob_rec.Std_Cost_Adj_Account;
823 END IF;
824
825 RETURN NULL;
826
827 END Get_Std_Cost_Adj_Account;
828
829 FUNCTION Get_Task
830 RETURN NUMBER
831 IS
832 BEGIN
833
834 IF(g_DiscreteJob_rec.Task_Id IS NOT NULL) THEN
835 RETURN g_DiscreteJob_rec.Task_Id;
836 END IF;
837
838 RETURN NULL;
839
840 END Get_Task;
841
842 FUNCTION Get_Wip_Entity
843 RETURN NUMBER
844 IS
845 l_Wip_Entity_Id NUMBER;
846 BEGIN
847
848 IF(g_DiscreteJob_rec.Wip_Entity_Id IS NOT NULL) THEN
849 RETURN g_DiscreteJob_rec.Wip_Entity_Id;
850 END IF;
851
852 RETURN NULL;
853 /* Use the following section if you need a new wip entity id */
854 /*
855 Select wip_entities_s.nextval into l_wip_entity_id FROM dual;
856 RETURN l_Wip_Entity_Id;
857 */
858
859 END Get_Wip_Entity;
860
861 FUNCTION Get_Wip_Supply_Type
862 RETURN NUMBER
863 IS
864 BEGIN
865
866 IF(g_DiscreteJob_rec.Wip_Supply_Type IS NOT NULL) THEN
867 RETURN g_DiscreteJob_rec.Wip_Supply_Type;
868 END IF;
869
870 RETURN NULL;
871
872 END Get_Wip_Supply_Type;
873
874 PROCEDURE Get_Flex_Discretejob
875 IS
876 BEGIN
877
878 -- In the future call Flex APIs for defaults
879
880 IF g_DiscreteJob_rec.attribute1 = FND_API.G_MISS_CHAR THEN
881 g_DiscreteJob_rec.attribute1 := NULL;
882 END IF;
883
884 IF g_DiscreteJob_rec.attribute10 = FND_API.G_MISS_CHAR THEN
885 g_DiscreteJob_rec.attribute10 := NULL;
886 END IF;
887
888 IF g_DiscreteJob_rec.attribute11 = FND_API.G_MISS_CHAR THEN
889 g_DiscreteJob_rec.attribute11 := NULL;
890 END IF;
891
892 IF g_DiscreteJob_rec.attribute12 = FND_API.G_MISS_CHAR THEN
893 g_DiscreteJob_rec.attribute12 := NULL;
894 END IF;
895
896 IF g_DiscreteJob_rec.attribute13 = FND_API.G_MISS_CHAR THEN
897 g_DiscreteJob_rec.attribute13 := NULL;
898 END IF;
899
900 IF g_DiscreteJob_rec.attribute14 = FND_API.G_MISS_CHAR THEN
901 g_DiscreteJob_rec.attribute14 := NULL;
902 END IF;
903
904 IF g_DiscreteJob_rec.attribute15 = FND_API.G_MISS_CHAR THEN
905 g_DiscreteJob_rec.attribute15 := NULL;
906 END IF;
907
908 IF g_DiscreteJob_rec.attribute2 = FND_API.G_MISS_CHAR THEN
909 g_DiscreteJob_rec.attribute2 := NULL;
910 END IF;
911
912 IF g_DiscreteJob_rec.attribute3 = FND_API.G_MISS_CHAR THEN
913 g_DiscreteJob_rec.attribute3 := NULL;
914 END IF;
915
916 IF g_DiscreteJob_rec.attribute4 = FND_API.G_MISS_CHAR THEN
917 g_DiscreteJob_rec.attribute4 := NULL;
918 END IF;
919
920 IF g_DiscreteJob_rec.attribute5 = FND_API.G_MISS_CHAR THEN
921 g_DiscreteJob_rec.attribute5 := NULL;
922 END IF;
923
924 IF g_DiscreteJob_rec.attribute6 = FND_API.G_MISS_CHAR THEN
925 g_DiscreteJob_rec.attribute6 := NULL;
926 END IF;
927
928 IF g_DiscreteJob_rec.attribute7 = FND_API.G_MISS_CHAR THEN
929 g_DiscreteJob_rec.attribute7 := NULL;
930 END IF;
931
932 IF g_DiscreteJob_rec.attribute8 = FND_API.G_MISS_CHAR THEN
933 g_DiscreteJob_rec.attribute8 := NULL;
934 END IF;
935
936 IF g_DiscreteJob_rec.attribute9 = FND_API.G_MISS_CHAR THEN
937 g_DiscreteJob_rec.attribute9 := NULL;
938 END IF;
939
940 IF g_DiscreteJob_rec.attribute_category = FND_API.G_MISS_CHAR THEN
941 g_DiscreteJob_rec.attribute_category := NULL;
942 END IF;
943
944 END Get_Flex_Discretejob;
945
946 -- Procedure Attributes
947
948 PROCEDURE Attributes
949 ( p_DiscreteJob_rec IN WIP_Work_Order_PUB.Discretejob_Rec_Type
950 , p_iteration IN NUMBER DEFAULT NULL
951 , p_ReDefault IN BOOLEAN DEFAULT NULL
952 , x_DiscreteJob_rec OUT NOCOPY WIP_Work_Order_PUB.Discretejob_Rec_Type
953 )
954 IS
955 l_DiscreteJob_rec WIP_Work_Order_PUB.Discretejob_Rec_Type:= WIP_Work_Order_PUB.G_MISS_DISCRETEJOB_REC;
956 l_return_status BOOLEAN;
957 l_Defaulting_Done BOOLEAN := FALSE;
958 BEGIN
959
960 -- Check number of iterations.
961
962 IF nvl(p_iteration,1) > WIP_GLOBALS.G_MAX_DEF_ITERATIONS THEN
963
964 Wip_Globals.Add_Error_Message(p_message_name => 'WIP_DEF_MAX_ITERATION');
965 RAISE FND_API.G_EXC_ERROR;
966
967 END IF;
968
969 IF p_DiscreteJob_rec.action = WIP_Globals.G_OPR_DEFAULT_USING_KANBAN
970 THEN
971
972 IF p_DiscreteJob_rec.kanban_card_id IS NULL
973 THEN
974 Wip_Globals.Add_Error_Message(p_message_name => 'WIP_ATTRIBUTE_REQUIRED',
975 p_token1_name => 'ATTRIBUTE',
976 p_token1_value => 'KANBAN_CARD_ID');
977 RAISE FND_API.G_EXC_ERROR;
978 ELSE
979 l_DiscreteJob_rec.kanban_card_id := p_DiscreteJob_rec.kanban_card_id;
980
981 END IF;
982
983 IF p_DiscreteJob_rec.organization_id IS NULL
984 THEN
985 Wip_Globals.Add_Error_Message(p_message_name => 'WIP_ATTRIBUTE_REQUIRED',
986 p_token1_name => 'ATTRIBUTE',
987 p_token1_value => 'ORGANIZATION_ID');
988 RAISE FND_API.G_EXC_ERROR;
989 ELSE
990 l_DiscreteJob_rec.organization_id := p_DiscreteJob_rec.organization_id;
991
992 END IF;
993 -- Initialize g_DiscreteJob_rec
994
995 g_DiscreteJob_rec := p_DiscreteJob_rec;
996
997 -- Default missing attributes.
998
999 g_DiscreteJob_rec.completion_subinventory := Get_Completion_Subinventory;
1000 g_DiscreteJob_rec.primary_item_id := Get_Primary_Item;
1001 g_DiscreteJob_rec.completion_locator_id := Get_Completion_Locator;
1002 g_DiscreteJob_rec.date_released := Get_Date_Released;
1003 g_DiscreteJob_rec.firm_planned_flag := Get_Firm_Planned;
1004 g_DiscreteJob_rec.job_type := Get_Job_Type;
1005 g_DiscreteJob_rec.mps_net_quantity := Get_Mps_Net_Quantity;
1006 g_DiscreteJob_rec.mps_scheduled_cpl_date := Get_Mps_Scheduled_Cpl_Date;
1007 g_DiscreteJob_rec.net_quantity := Get_Net_Quantity;
1008 g_DiscreteJob_rec.scheduled_completion_date := Get_Scheduled_Completion_Date;
1009 g_DiscreteJob_rec.scheduled_start_date := Get_Scheduled_Start_Date;
1010 g_DiscreteJob_rec.source_code := Get_Source;
1011 g_DiscreteJob_rec.start_quantity := Get_Start_Quantity;
1012 g_DiscreteJob_rec.status_type := Get_Status_Type;
1013 g_DiscreteJob_rec.wip_entity_id := Get_Wip_Entity;
1014 g_DiscreteJob_rec.wip_supply_type := Get_Wip_Supply_Type;
1015
1016 l_Defaulting_Done := TRUE;
1017
1018 END IF;
1019
1020 -- Done defaulting attributes
1021 IF l_Defaulting_Done
1022 THEN
1023 /* Fix for bug 3392437. Modified the following 'If' condition:
1024 IF nvl(p_ReDefault,FALSE)
1025 The code in the THEN part needs to be executed when p_ReDefault is FALSE.
1026 This If condition fails when p_ReDefault is FALSE and hence the control
1027 goes to Else.
1028 */
1029 IF nvl(p_ReDefault,FALSE)=FALSE
1030 THEN
1031 x_DiscreteJob_rec := WIP_DiscreteJob_Util.Complete_Record(g_DiscreteJob_rec,p_DiscreteJob_rec,FALSE);
1032 ELSE
1033 -- Force Copy the given record into the defaulted record.
1034 x_DiscreteJob_rec := WIP_DiscreteJob_Util.Complete_Record(g_DiscreteJob_rec,p_DiscreteJob_rec,TRUE);
1035 END IF;
1036 -- Check against the given flow schedule record
1037 l_return_status := WIP_DiscreteJob_Util.Compare(x_DiscreteJob_rec, p_DiscreteJob_rec);
1038 IF (nvl(p_ReDefault,FALSE) = FALSE AND l_return_status = FALSE)
1039 THEN
1040 x_DiscreteJob_rec.return_status := 'N';
1041 END IF;
1042 END IF;
1043
1044
1045 END Attributes;
1046
1047 END WIP_Default_Discretejob;