DBA Data[Home] [Help]

PACKAGE BODY: APPS.WIP_DEFAULT_DISCRETEJOB

Source


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;