DBA Data[Home] [Help]

PACKAGE BODY: APPS.BOM_DEFAULT_OP_RES

Source


1 PACKAGE BODY BOM_Default_Op_Res AS
2 /* $Header: BOMDRESB.pls 120.3.12010000.2 2008/11/14 16:14:11 snandana ship $ */
3 
4 /****************************************************************************
5 --
6 --  Copyright (c) 2000 Oracle Corporation, Redwood Shores, CA, USA
7 --  All rights reserved.
8 --
9 --  FILENAME
10 --
11 --    BOMDRESS.pls
12 --
13 --  DESCRIPTION
14 --
15 --      Body of package BOM_Default_Op_Res
16 --
17 --  NOTES
18 --
19 --  HISTORY
20 --
21 --  18-AUG-00 Masanori Kimizuka Initial Creation
22 --
23 ****************************************************************************/
24 
25         G_Pkg_Name      VARCHAR2(30)    := 'BOM_Default_Op_Res';
26         l_ACD_ADD       CONSTANT NUMBER := 1 ;
27 
28     /*******************************************************************
29     * Following are all get functions which will be used by the attribute
30     * defaulting procedure. Each column needing to be defaulted has one GET
31     * function.
32     ********************************************************************/
33 
34     -- Assigned_Units
35     FUNCTION Get_Assigned_Units
36     RETURN NUMBER
37     IS
38     BEGIN
39 
40             RETURN 1 ;   -- Return 1 unit
41 
42     END Get_Assigned_Units ;
43 
44 
45     -- Schedule_Flag
46     FUNCTION Get_Schedule_Flag
47     RETURN NUMBER
48     IS
49     BEGIN
50 
51             RETURN 2 ;   -- Return No: 2
52 
53     END Get_Schedule_Flag ;
54 
55 
56     -- Principle_Flag
57     FUNCTION Get_Principle_Flag
58     RETURN NUMBER
59     IS
60     BEGIN
61 
65 
62             RETURN 2 ;   -- Return No: 2
63 
64     END Get_Principle_Flag ;
66 
67     -- Get Flex Operation Resource
68     PROCEDURE Get_Flex_Op_Res
69     (  p_rev_op_resource_rec    IN  Bom_Rtg_Pub.Rev_Op_Resource_Rec_Type
70      , x_rev_op_resource_rec    IN OUT NOCOPY Bom_Rtg_Pub.Rev_Op_Resource_Rec_Type
71     )
72     IS
73         l_rev_op_resource_rec      Bom_Rtg_Pub.Rev_Op_Resource_Rec_Type ;
74         l_rev_op_res_unexp_rec       Bom_Rtg_Pub.Rev_Op_Res_Unexposed_Rec_Type ;
75 
76     BEGIN
77        --  Initialize operation exp and unexp record
78        l_rev_op_resource_rec  := p_rev_op_resource_rec ;
79 
80         --  In the future call Flex APIs for defaults
81 
82         IF l_rev_op_resource_rec.attribute_category = FND_API.G_MISS_CHAR THEN
83             l_rev_op_resource_rec.attribute_category := NULL;
84         END IF;
85 
86         IF l_rev_op_resource_rec.attribute1 = FND_API.G_MISS_CHAR THEN
87             l_rev_op_resource_rec.attribute1 := NULL;
88         END IF;
89 
90         IF l_rev_op_resource_rec.attribute2 = FND_API.G_MISS_CHAR THEN
91             l_rev_op_resource_rec.attribute2 := NULL;
92         END IF;
93 
94         IF l_rev_op_resource_rec.attribute3 = FND_API.G_MISS_CHAR THEN
95             l_rev_op_resource_rec.attribute3 := NULL;
96         END IF;
97 
98         IF l_rev_op_resource_rec.attribute4 = FND_API.G_MISS_CHAR THEN
99             l_rev_op_resource_rec.attribute4 := NULL;
100         END IF;
101 
102         IF l_rev_op_resource_rec.attribute5 = FND_API.G_MISS_CHAR THEN
103             l_rev_op_resource_rec.attribute5 := NULL;
104         END IF;
105 
106         IF l_rev_op_resource_rec.attribute6 = FND_API.G_MISS_CHAR THEN
107             l_rev_op_resource_rec.attribute6 := NULL;
108         END IF;
109 
110         IF l_rev_op_resource_rec.attribute7 = FND_API.G_MISS_CHAR THEN
111             l_rev_op_resource_rec.attribute7 := NULL;
112         END IF;
113 
114         IF l_rev_op_resource_rec.attribute8 = FND_API.G_MISS_CHAR THEN
115             l_rev_op_resource_rec.attribute8 := NULL;
116         END IF;
117 
118         IF l_rev_op_resource_rec.attribute9 = FND_API.G_MISS_CHAR THEN
119             l_rev_op_resource_rec.attribute9 := NULL;
120         END IF;
121 
122         IF l_rev_op_resource_rec.attribute10 = FND_API.G_MISS_CHAR THEN
123             l_rev_op_resource_rec.attribute10 := NULL;
124         END IF;
125 
126         IF l_rev_op_resource_rec.attribute11 = FND_API.G_MISS_CHAR THEN
127             l_rev_op_resource_rec.attribute11 := NULL;
128         END IF;
129 
130         IF l_rev_op_resource_rec.attribute12 = FND_API.G_MISS_CHAR THEN
131             l_rev_op_resource_rec.attribute12 := NULL;
132         END IF;
133 
134         IF l_rev_op_resource_rec.attribute13 = FND_API.G_MISS_CHAR THEN
135             l_rev_op_resource_rec.attribute13 := NULL;
136         END IF;
137 
138         IF l_rev_op_resource_rec.attribute14 = FND_API.G_MISS_CHAR THEN
139             l_rev_op_resource_rec.attribute14 := NULL;
140         END IF;
141 
142         IF l_rev_op_resource_rec.attribute15 = FND_API.G_MISS_CHAR THEN
143             l_rev_op_resource_rec.attribute15 := NULL;
144         END IF;
145 
146         x_rev_op_resource_rec := l_rev_op_resource_rec ;
147 
148     END Get_Flex_Op_Res ;
149 
150 
151 
152     -- Get Usage Rate or Amount
153     PROCEDURE  Get_Usage_Rate_Or_Amount
154              ( p_usage_rate_or_amount         IN  NUMBER
155              , p_usage_rate_or_amount_inverse IN  NUMBER
156              , x_usage_rate_or_amount         IN OUT NOCOPY NUMBER
157              , x_usage_rate_or_amount_inverse IN OUT NOCOPY NUMBER
158              )
159     IS
160         x_usage         NUMBER := NULL ;
161         x_usage_inverse NUMBER := NULL ;
162 
163     BEGIN
164 
165        IF  (   ( NVL(p_usage_rate_or_amount, FND_API.G_MISS_NUM)
166                      = FND_API.G_MISS_NUM )
167            AND ( NVL(p_usage_rate_or_amount_inverse, FND_API.G_MISS_NUM)
168                      = FND_API.G_MISS_NUM)
169            )
170        THEN
171           x_usage_rate_or_amount := 1 ;
172           x_usage_rate_or_amount_inverse := 1 ;
173 
174        ELSIF
175           ( p_usage_rate_or_amount_inverse IS NULL )
176           OR ((p_usage_rate_or_amount_inverse = FND_API.G_MISS_NUM)
177               AND(p_usage_rate_or_amount <> FND_API.G_MISS_NUM)
178              )
179        THEN
180           IF p_usage_rate_or_amount = 0 THEN
181              x_usage_rate_or_amount := p_usage_rate_or_amount ;
182              x_usage_rate_or_amount_inverse := 0 ;
183           ELSE
184 	     -- BUG 5896587
185 	     -- In ROUND function the decimal places have increased from 6 to 10 for Usage and Inverse Usage
186              /* Bug 7322996 */
187              -- In ROUND function the decimal places rounding off value changed with G_round_off_val(profile value)
188              x_usage  := ROUND(p_usage_rate_or_amount, G_round_off_val)  ;
189 
190              IF x_usage = 0 THEN
191                 x_usage_rate_or_amount_inverse := 0 ;
192              ELSE
193                 --
194                 -- Usate Rate or Amound and Inverse 's length is 42 in FORM
195                 --
196                 x_usage_rate_or_amount := to_number(SUBSTR(to_char(x_usage), 1, 42)) ;
197                 x_usage_rate_or_amount_inverse :=  to_number(SUBSTR(to_char(ROUND( 1/x_usage ,G_round_off_val)) , 1, 42))  ;/* Bug 7322996 */
198              END IF ;
199 
200           END IF ;
201 
202        ELSIF
203           ( p_usage_rate_or_amount IS NULL )
204           OR ((p_usage_rate_or_amount = FND_API.G_MISS_NUM)
208           IF p_usage_rate_or_amount_inverse = 0 THEN
205               AND(p_usage_rate_or_amount_inverse <> FND_API.G_MISS_NUM )
206              )
207        THEN
209              x_usage_rate_or_amount := 0 ;
210              x_usage_rate_or_amount_inverse := p_usage_rate_or_amount_inverse ;
211           ELSE
212              x_usage_inverse  := ROUND(p_usage_rate_or_amount_inverse ,G_round_off_val)  ;/* Bug 7322996 */
213 
214              IF x_usage_inverse = 0 THEN
215                 x_usage_rate_or_amount := 0 ;
216              ELSE
217                 --
218                 -- Usate Rate or Amound and Inverse 's length is 42 in FORM
219                 --
220                 x_usage_rate_or_amount_inverse :=  to_number(SUBSTR(to_char(x_usage_inverse), 1, 42)) ;
221                 x_usage_rate_or_amount := to_number( SUBSTR(to_char(ROUND( 1/ x_usage_inverse ,G_round_off_val )), 1, 42 ))  ; /* Bug 7322996 */
222              END IF ;
223           END IF ;
224        ELSE
225              x_usage_rate_or_amount := p_usage_rate_or_amount ;
226              x_usage_rate_or_amount_inverse :=  p_usage_rate_or_amount_inverse ;
227        END IF ;
228 
229     END Get_Usage_Rate_Or_Amount ;
230 
231 
232     -- Get Resource Attributes
233     PROCEDURE  Get_Res_Attributes
234                (  p_operation_sequence_id  IN  NUMBER
235                 , p_resource_id            IN  NUMBER
236                 , p_activity_id            IN  NUMBER
237                 , p_autocharge_type        IN  NUMBER
238                 , p_basis_type             IN  NUMBER
239                 , p_standard_rate_flag     IN  NUMBER
240                 , p_org_id                 IN  NUMBER
241                 , x_activity_id            IN OUT NOCOPY NUMBER
242                 , x_autocharge_type        IN OUT NOCOPY NUMBER
243                 , x_basis_type             IN OUT NOCOPY NUMBER
244                 , x_standard_rate_flag     IN OUT NOCOPY NUMBER
245                )
246     IS
247 
248        CURSOR l_res_attr_csr( p_op_seq_id NUMBER
249                             , p_res_id    NUMBER )
250        IS
251            SELECT  br.default_basis_type
252                  , ca.activity_id
253                  , DECODE ( bd.location_id,
254                                NULL, DECODE(br.AUTOCHARGE_TYPE,
255                                             NULL, 2,
256                                                3, 2,
257                                                br.AUTOCHARGE_TYPE),
258                                NVL(br.AUTOCHARGE_TYPE, 2)
259                           ) default_autocharge
260                  , NVL(br.standard_rate_flag, 1) standard_rate_flag
261            FROM    BOM_RESOURCES br
262                  , BOM_DEPARTMENTS bd
263                  , BOM_OPERATION_SEQUENCES bos
264                  , CST_ACTIVITIES_VAL_V    ca
265            WHERE   bd.department_id = bos.department_id
266            AND     ca.activity_id (+) = br.default_activity_id
267            AND     NVL(ca.organization_id, p_org_id) = p_org_id
268            AND     br.resource_id = p_resource_id
269            AND     bos.operation_sequence_id = p_operation_sequence_id ;
270 
271 
272 
273     BEGIN
274        FOR l_res_attr_rec IN l_res_attr_csr ( p_op_seq_id => p_operation_sequence_id
275                                             , p_res_id    => p_resource_id )
276        LOOP
277           IF ( p_activity_id IS NULL OR p_activity_id = FND_API.G_MISS_NUM )
278           THEN
279              x_activity_id := l_res_attr_rec.activity_id ;
280           ELSE
281              x_activity_id := p_activity_id ;
282           END IF ;
283 
284           IF p_autocharge_type IS NULL OR p_autocharge_type = FND_API.G_MISS_NUM
285           THEN
286              x_autocharge_type := l_res_attr_rec.default_autocharge ;
287           ELSE
288              x_autocharge_type := p_autocharge_type ;
289           END IF ;
290 
291           IF p_basis_type IS NULL OR p_basis_type = FND_API.G_MISS_NUM
292           THEN
293              x_basis_type := NVL(l_res_attr_rec.default_basis_type,1) ;
294           ELSE
295              x_basis_type := p_basis_type ;
296           END IF ;
297 
298           IF p_standard_rate_flag IS NULL OR p_standard_rate_flag = FND_API.G_MISS_NUM
299           THEN
300 
301              x_standard_rate_flag := NVL(l_res_attr_rec.standard_rate_flag,1)  ;
302 
303           ELSE
304              x_standard_rate_flag := p_standard_rate_flag ;
305 
306           END IF ;
307        END LOOP ;
308 
309     END Get_Res_Attributes ;
310 
311 /*** Added for bug 2683529 ***/
312     FUNCTION  Get_Res_Batchable ( p_resource_id IN  NUMBER
313                                        ) RETURN NUMBER
314     IS
315        CURSOR l_res_csr( p_resource_id NUMBER)
316        IS
317           SELECT   nvl(br.batchable,2) batchable
318           FROM     BOM_RESOURCES br
319           WHERE  br.resource_id           = p_resource_id;
320 
321     BEGIN
322        FOR l_res_rec IN l_res_csr (p_resource_id)
323        LOOP
324           RETURN l_res_rec.batchable;
325        END LOOP ;
326 
327        RETURN NULL ;
328 
329     END Get_Res_Batchable ;
330 
331 /*** This is not being used anymore ***/
332     FUNCTION  Get_Available_24hs_flag ( p_resource_id IN  NUMBER
333                                       , p_op_seq_id   IN  NUMBER
334                                        ) RETURN NUMBER
335     IS
336 
337 
338        CURSOR l_deptres_csr( p_resource_id NUMBER
339                            , p_op_seq_id   NUMBER
340                            )
341        IS
342           SELECT   bdr.available_24_hours_flag
343           FROM     BOM_OPERATION_SEQUENCES  bos
347           AND    bos.operation_sequence_id = p_op_seq_id ;
344                  , BOM_DEPARTMENT_RESOURCES bdr
345           WHERE  bdr.department_id         = bos.department_id
346           AND    bdr.resource_id           = p_resource_id
348 
349     BEGIN
350        FOR l_deptres_rec IN l_deptres_csr ( p_resource_id
351                                           , p_op_seq_id   )
352        LOOP
353           RETURN l_deptres_rec.available_24_hours_flag ;
354        END LOOP ;
355 
356        RETURN NULL ;
357 
358     END Get_Available_24hs_flag ;
359 
360 
361     /*********************************************************************
362     * Procedure : Attribute_Defaulting by RTG BO
363     * Parameters IN : Operation Resource exposed column record
364     *                 Operation Resource unexposed column record
365     * Parameters OUT: Operation Resource exposed column record after defaulting
366     *                 Operation Resource unexposed column record after defaulting
367     *                 Return Status
368     *                 Message Token Table
369     * Purpose   : Convert Routing Op Resource to ECO Op Resource  and
370     *             Call Attribute_Defaulting for ECO Bo
371     *             This procedure will default values in all the operation
372     *             resource fields that the user has left unfilled.
373     **********************************************************************/
374     PROCEDURE Attribute_Defaulting
375     (  p_op_resource_rec   IN  Bom_Rtg_Pub.Op_Resource_Rec_Type
376      , p_op_res_unexp_rec  IN  Bom_Rtg_Pub.Op_Res_Unexposed_Rec_Type
377      , x_op_resource_rec   IN OUT NOCOPY Bom_Rtg_Pub.Op_Resource_Rec_Type
378      , x_op_res_unexp_rec  IN OUT NOCOPY Bom_Rtg_Pub.Op_Res_Unexposed_Rec_Type
379      , x_mesg_token_tbl    IN OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
380      , x_return_status     IN OUT NOCOPY VARCHAR2
381     )
382     IS
383         l_rev_op_resource_rec      Bom_Rtg_Pub.Rev_Op_Resource_Rec_Type ;
384         l_rev_op_res_unexp_rec     Bom_Rtg_Pub.Rev_Op_Res_Unexposed_Rec_Type ;
385 
386     BEGIN
387 
388         x_return_status := FND_API.G_RET_STS_SUCCESS;
389 
390         -- Convert Routing Op Resource to ECO Op Resource
391         Bom_Rtg_Pub.Convert_RtgRes_To_EcoRes
392         (  p_rtg_op_resource_rec      => p_op_resource_rec
393          , p_rtg_op_res_unexp_rec     => p_op_res_unexp_rec
394          , x_rev_op_resource_rec      => l_rev_op_resource_rec
395          , x_rev_op_res_unexp_rec     => l_rev_op_res_unexp_rec
396         ) ;
397 
398 
399         -- Once the record transfer is done call the common
400         -- operation attribute defaulting
401         --
402         BOM_Default_Op_Res.Attribute_Defaulting
403         (  p_rev_op_resource_rec     => l_rev_op_resource_rec
404          , p_rev_op_res_unexp_rec    => l_rev_op_res_unexp_rec
405          , p_control_Rec             => Bom_Rtg_Pub.G_Default_Control_Rec
406          , x_rev_op_resource_rec     => l_rev_op_resource_rec
407          , x_rev_op_res_unexp_rec    => l_rev_op_res_unexp_rec
408          , x_return_status           => x_return_status
409          , x_mesg_token_tbl          => x_mesg_token_tbl
410         ) ;
411 
412 
413         -- Convert the Common record to Routing Record
414         Bom_Rtg_Pub.Convert_EcoRes_To_RtgRes
415         (  p_rev_op_resource_rec      => l_rev_op_resource_rec
416          , p_rev_op_res_unexp_rec     => l_rev_op_res_unexp_rec
417          , x_rtg_op_resource_rec      => x_op_resource_rec
418          , x_rtg_op_res_unexp_rec     => x_op_res_unexp_rec
419          ) ;
420 
421 
422     END Attribute_Defaulting ;
423 
424     /********************************************************************
425     * Procedure : Attribute_Defaulting by ECO BO
426     * Parameters IN : Revised Op Resource exposed column record
427     *                 Revised Op Resource unexposed column record
428     * Parameters OUT: Revised Op Resource exposed column record after defaulting
429     *                 Revised Op Resource unexposed column record after defaulting
430     *                 Return Status
431     *                 Message Token Table
432     * Purpose   : Attribute defaulting proc. defualts columns to
433     *             appropriate values. Defualting will happen for
434     *             exposed as well as unexposed columns.
435     *********************************************************************/
436     PROCEDURE Attribute_Defaulting
437     (  p_rev_op_resource_rec    IN  Bom_Rtg_Pub.Rev_Op_Resource_Rec_Type
438      , p_rev_op_res_unexp_rec   IN  Bom_Rtg_Pub.Rev_Op_Res_Unexposed_Rec_Type
439      , p_control_Rec            IN  Bom_Rtg_Pub.Control_Rec_Type
440      , x_rev_op_resource_rec    IN OUT NOCOPY Bom_Rtg_Pub.Rev_Op_Resource_Rec_Type
441      , x_rev_op_res_unexp_rec   IN OUT NOCOPY Bom_Rtg_Pub.Rev_Op_Res_Unexposed_Rec_Type
442      , x_mesg_token_tbl         IN OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
443      , x_return_status          IN OUT NOCOPY VARCHAR2
444     )
445 
446     IS
447 
448         l_rev_op_resource_rec      Bom_Rtg_Pub.Rev_Op_Resource_Rec_Type ;
449         l_rev_op_res_unexp_rec     Bom_Rtg_Pub.Rev_Op_Res_Unexposed_Rec_Type ;
450 
451         l_return_status VARCHAR2(1);
452         l_err_text  VARCHAR2(2000) ;
453         l_Mesg_Token_Tbl    Error_Handler.Mesg_Token_Tbl_Type;
454 
455 
456     BEGIN
457 
458        IF BOM_Rtg_Globals.Get_Debug = 'Y' THEN Error_Handler.Write_Debug
459             ('Within the Operation Resource Attr. Defaulting...') ;
460        END IF ;
461 
462        x_return_status := FND_API.G_RET_STS_SUCCESS ;
463 
464        --  Initialize operation exp and unexp record
465        l_rev_op_resource_rec    := p_rev_op_resource_rec ;
466        l_rev_op_res_unexp_rec   := p_rev_op_res_unexp_rec ;
467 
468 
472             --
469             /***********************************************************
470             --
471             -- Default Assigned_Units
473             ***********************************************************/
474             IF l_rev_op_resource_rec.assigned_units IS NULL OR
475                l_rev_op_resource_rec.assigned_units = FND_API.G_MISS_NUM
476             THEN
477                 l_rev_op_resource_rec.assigned_units :=
478                 Get_Assigned_Units ;
479             END IF ;
480 
481 
482 
483             /*********************************************************
484             --
485             -- Default Schedule_Flag
486             --
487             ***********************************************************/
488 
489             IF l_rev_op_resource_rec.schedule_flag IS NULL OR
490                l_rev_op_resource_rec.schedule_flag =  FND_API.G_MISS_NUM
491             THEN
492                 l_rev_op_resource_rec.schedule_flag :=
493                     Get_Schedule_Flag ;
494             END IF;
495 
496             /************************************************************
497             --
498             -- Default Principle_Flag
499             --
500             ************************************************************/
501 
502             IF l_rev_op_resource_rec.principle_flag IS NULL OR
503                l_rev_op_resource_rec.principle_flag = FND_API.G_MISS_NUM
504             THEN
505                l_rev_op_resource_rec.principle_flag :=
506                     Get_Principle_Flag ;
507             END IF;
508 
509 
510 
511             /************************************************************
512             --
513             -- Default Operation Sequence's FlexFields
514             --
515             ************************************************************/
516 
517             IF  l_rev_op_resource_rec.attribute_category = FND_API.G_MISS_CHAR
518             OR  l_rev_op_resource_rec.attribute1  = FND_API.G_MISS_CHAR
519             OR  l_rev_op_resource_rec.attribute2  = FND_API.G_MISS_CHAR
520             OR  l_rev_op_resource_rec.attribute3  = FND_API.G_MISS_CHAR
521             OR  l_rev_op_resource_rec.attribute4  = FND_API.G_MISS_CHAR
522             OR  l_rev_op_resource_rec.attribute5  = FND_API.G_MISS_CHAR
523             OR  l_rev_op_resource_rec.attribute6  = FND_API.G_MISS_CHAR
524             OR  l_rev_op_resource_rec.attribute7  = FND_API.G_MISS_CHAR
525             OR  l_rev_op_resource_rec.attribute8  = FND_API.G_MISS_CHAR
526             OR  l_rev_op_resource_rec.attribute9  = FND_API.G_MISS_CHAR
527             OR  l_rev_op_resource_rec.attribute10 = FND_API.G_MISS_CHAR
528             OR  l_rev_op_resource_rec.attribute11 = FND_API.G_MISS_CHAR
529             OR  l_rev_op_resource_rec.attribute12 = FND_API.G_MISS_CHAR
530             OR  l_rev_op_resource_rec.attribute13 = FND_API.G_MISS_CHAR
531             OR  l_rev_op_resource_rec.attribute14 = FND_API.G_MISS_CHAR
532             OR  l_rev_op_resource_rec.attribute15 = FND_API.G_MISS_CHAR
533             THEN
534 
535                 Get_Flex_Op_Res(  p_rev_op_resource_rec => l_rev_op_resource_rec
536                                 , x_rev_op_resource_rec => l_rev_op_resource_rec ) ;
537 
538             END IF;
539 
540         x_rev_op_resource_rec  := l_rev_op_resource_rec ;
541         x_rev_op_res_unexp_rec := l_rev_op_res_unexp_rec ;
542 
543         IF BOM_Rtg_Globals.Get_Debug = 'Y' THEN
544          Error_Handler.Write_Debug('Getting out of Operation Resource Attribute Defualting...');
545         END IF ;
546 
547 
548     EXCEPTION
549        WHEN OTHERS THEN
550           IF BOM_Rtg_Globals.Get_Debug = 'Y' THEN Error_Handler.Write_Debug
551           ('Some unknown error in Attribute Defaulting . . .' || SQLERRM );
552           END IF ;
553 
554 
555           l_err_text := G_PKG_NAME || ' Default (Attr. Defaulting) '
556                                 || substrb(SQLERRM,1,200);
557           -- dbms_output.put_line('Unexpected Error: '||l_err_text);
558 
559           Error_Handler.Add_Error_Token
560           (  p_message_name   => NULL
561            , p_message_text   => l_err_text
562            , p_mesg_token_tbl => l_mesg_token_tbl
563            , x_mesg_token_tbl => l_mesg_token_tbl
564           ) ;
565 
566           -- Return the status and message table.
567           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
568           x_mesg_token_tbl := l_mesg_token_tbl ;
569 
570 
571     END Attribute_Defaulting ;
572 
573 
574 
575     /******************************************************************
576     * Procedure : Populate_Null_Columns used by Rtg BO(Update or Delete)
577     * Parameters IN : Operation Resource exposed column record
578     *                 Operation Resource unexposed column record
579     *                 Old Operation Resource exposed column record
580     *                 Old Operation Resource unexposed column record
581     * Parameters OUT: Op Resource exposed column record after
582     *                 populating null columns
583     *                 Op Resource unexposed column record after
584     *                 populating null columns
585     * Purpose   : Convert Routing Op Resource to ECO Op Resource and
586     *             Call Populate_Null_Columns for ECO BO.
587     *             The procedure will populate the NULL columns from the
588     *             record that is queried from the database.
589     ********************************************************************/
590     PROCEDURE Populate_Null_Columns
591     (  p_op_resource_rec          IN  Bom_Rtg_Pub.Op_Resource_Rec_Type
592      , p_op_res_unexp_rec         IN  Bom_Rtg_Pub.Op_Res_Unexposed_Rec_Type
593      , p_old_op_resource_rec      IN  Bom_Rtg_Pub.Op_Resource_Rec_Type
597     )
594      , p_old_op_res_unexp_rec     IN  Bom_Rtg_Pub.Op_Res_Unexposed_Rec_Type
595      , x_op_resource_rec          IN OUT NOCOPY Bom_Rtg_Pub.Op_Resource_Rec_Type
596      , x_op_res_unexp_rec         IN OUT NOCOPY Bom_Rtg_Pub.Op_Res_Unexposed_Rec_Type
598 
599     IS
600         l_rev_op_resource_rec      Bom_Rtg_Pub.Rev_Op_Resource_Rec_Type ;
601         l_rev_op_res_unexp_rec     Bom_Rtg_Pub.Rev_Op_Res_Unexposed_Rec_Type ;
602         l_old_rev_op_resource_rec  Bom_Rtg_Pub.Rev_Op_Resource_Rec_Type ;
603         l_old_rev_op_res_unexp_rec Bom_Rtg_Pub.Rev_Op_Res_Unexposed_Rec_Type ;
604 
605 
606     BEGIN
607 
608         -- Convert Routing Op Resource to Revised Op Resource
609         Bom_Rtg_Pub.Convert_RtgRes_To_EcoRes
610         (  p_rtg_op_resource_rec      => p_op_resource_rec
611          , p_rtg_op_res_unexp_rec     => p_op_res_unexp_rec
612          , x_rev_op_resource_rec      => l_rev_op_resource_rec
613          , x_rev_op_res_unexp_rec     => l_rev_op_res_unexp_rec
614         ) ;
615 
616         -- Also Convert Old Rtg Op Resource to Old Revised Op Resource
617         Bom_Rtg_Pub.Convert_RtgRes_To_EcoRes
618         (  p_rtg_op_resource_rec      => p_old_op_resource_rec
619          , p_rtg_op_res_unexp_rec     => p_old_op_res_unexp_rec
620          , x_rev_op_resource_rec      => l_old_rev_op_resource_rec
621          , x_rev_op_res_unexp_rec     => l_old_rev_op_res_unexp_rec
622         ) ;
623 
624         --
625         -- Once the record transfer is done call the common
626         -- operation populate null columns
627         --
628         Bom_Default_Op_Res.Populate_Null_Columns
629         (  p_rev_op_resource_rec       => l_rev_op_resource_rec
630          , p_rev_op_res_unexp_rec      => l_rev_op_res_unexp_rec
631          , p_old_rev_op_resource_rec   => l_old_rev_op_resource_rec
632          , p_old_rev_op_res_unexp_rec  => l_old_rev_op_res_unexp_rec
633          , x_rev_op_resource_rec       => l_rev_op_resource_rec
634          , x_rev_op_res_unexp_rec      => l_rev_op_res_unexp_rec
635         ) ;
636 
637         --
638         -- On return from the populate null columns, save the defaulted
639         -- record back in the RTG BO's records
640         --
641 
642         -- Convert the Common record to Routing Record
643         Bom_Rtg_Pub.Convert_EcoRes_To_RtgRes
644         (  p_rev_op_resource_rec      => l_rev_op_resource_rec
645          , p_rev_op_res_unexp_rec     => l_rev_op_res_unexp_rec
646          , x_rtg_op_resource_rec      => x_op_resource_rec
647          , x_rtg_op_res_unexp_rec     => x_op_res_unexp_rec
648          ) ;
649 
650     END Populate_Null_Columns;
651 
652 
653     /******************************************************************
654     * Procedure : Populate_Null_Columns used
655     *            used by ECO BO(Update, Delete or Create with ACD_Type:2 Change)
656     * Parameters IN : Revised Op Resource exposed column record
657     *                 Revised Op Resource unexposed column record
658     *                 Old Revised Op Resource exposed column record
659     *                 Old Revised Op Resource unexposed column record
660     * Parameters OUT: Revised Op Resource exposed column record
661     *                 after populating null columns
662     *                 Revised Op Resource unexposed column record
663     *                 after populating null columns
664     * Purpose   : Complete record will compare the database record with
665     *             the user given record and will complete the user
666     *             record with values from the database record, for all
667     *             columns that the user has left NULL.
668     ********************************************************************/
669     PROCEDURE Populate_Null_Columns
670     (  p_rev_op_resource_rec      IN  Bom_Rtg_Pub.Rev_Op_Resource_Rec_Type
671      , p_rev_op_res_unexp_rec     IN  Bom_Rtg_Pub.Rev_Op_Res_Unexposed_Rec_Type
672      , p_old_rev_op_resource_rec  IN  Bom_Rtg_Pub.Rev_Op_Resource_Rec_Type
673      , p_old_rev_op_res_unexp_rec IN  Bom_Rtg_Pub.Rev_Op_Res_Unexposed_Rec_Type
674      , x_rev_op_resource_rec      IN OUT NOCOPY Bom_Rtg_Pub.Rev_Op_Resource_Rec_Type
675      , x_rev_op_res_unexp_rec     IN OUT NOCOPY Bom_Rtg_Pub.Rev_Op_Res_Unexposed_Rec_Type
676     )
677     IS
678 
679        l_rev_op_resource_rec      Bom_Rtg_Pub.Rev_Op_Resource_Rec_Type ;
680        l_rev_op_res_unexp_rec     Bom_Rtg_Pub.Rev_Op_Res_Unexposed_Rec_Type ;
681 
682     BEGIN
683        IF BOM_Rtg_Globals.Get_Debug = 'Y' THEN Error_Handler.Write_Debug
684             ('Within the Operation Resource Populate null columns...') ;
685        END IF ;
686 
687        --  Initialize operation exp and unexp record
688        l_rev_op_resource_rec  := p_rev_op_resource_rec ;
689        l_rev_op_res_unexp_rec := p_rev_op_res_unexp_rec ;
690 
691        -- Exposed Column
692        IF BOM_Rtg_Globals.Get_Debug = 'Y' THEN Error_Handler.Write_Debug
693             ('Populate null exposed columns......') ;
694        END IF ;
695 
696             IF l_rev_op_resource_rec.ACD_Type IS NULL
697             THEN
698                l_rev_op_resource_rec.ACD_Type
699                := p_old_rev_op_resource_rec.ACD_Type ;
700             END IF ;
701 
702             IF l_rev_op_resource_rec.Resource_Sequence_Number IS NULL
703             THEN
704                l_rev_op_resource_rec.Resource_Sequence_Number
705                := p_old_rev_op_resource_rec.Resource_Sequence_Number ;
706             END IF ;
707 
708             IF l_rev_op_resource_rec.Standard_Rate_Flag IS NULL
709             THEN
710                l_rev_op_resource_rec.Standard_Rate_Flag
711                := p_old_rev_op_resource_rec.Standard_Rate_Flag ;
712             END IF ;
713 
714 
715             IF l_rev_op_resource_rec.Assigned_Units IS NULL
716             THEN
720 
717                l_rev_op_resource_rec.Assigned_Units
718                := p_old_rev_op_resource_rec.Assigned_Units ;
719             END IF;
721             --  Usage Rate and Inverse are not same as others because
722             --  of defaulting.
723             IF l_rev_op_resource_rec.Usage_Rate_Or_Amount IS NULL AND
724                l_rev_op_resource_rec.Usage_Rate_Or_Amount_Inverse IS NULL
725             THEN
726                l_rev_op_resource_rec.Usage_Rate_Or_Amount
727                := p_old_rev_op_resource_rec.Usage_Rate_Or_Amount ;
728 
729                l_rev_op_resource_rec.Usage_Rate_Or_Amount_Inverse
730                := p_old_rev_op_resource_rec.Usage_Rate_Or_Amount_Inverse ;
731 
732             END IF ;
733 
734 
735             IF l_rev_op_resource_rec.Basis_Type IS NULL
736             THEN
737                l_rev_op_resource_rec.Basis_Type
738                := p_old_rev_op_resource_rec.Basis_Type ;
739             END IF ;
740 
741             IF l_rev_op_resource_rec.Schedule_Flag IS NULL
742             THEN
743                l_rev_op_resource_rec.Schedule_Flag
744                := p_old_rev_op_resource_rec.Schedule_Flag ;
745             END IF ;
746 
747             IF l_rev_op_resource_rec.Resource_Offset_Percent IS NULL
748             THEN
749                l_rev_op_resource_rec.Resource_Offset_Percent
750                := p_old_rev_op_resource_rec.Resource_Offset_Percent ;
751             END IF ;
752 
753             IF l_rev_op_resource_rec.Autocharge_Type IS NULL
754             THEN
755                l_rev_op_resource_rec.Autocharge_Type
756                := p_old_rev_op_resource_rec.Autocharge_Type ;
757             END IF ;
758 
759             IF l_rev_op_resource_rec.Schedule_Sequence_Number IS NULL
760             THEN
761                l_rev_op_resource_rec.Schedule_Sequence_Number
762                := p_old_rev_op_resource_rec.Schedule_Sequence_Number ;
763             END IF ;
764 
765 	    IF l_rev_op_resource_rec.Substitute_Group_Number IS NULL
766 	    THEN
767               l_rev_op_resource_rec.Substitute_Group_Number
768               := p_old_rev_op_resource_rec.Substitute_Group_Number;
769             END IF ;
770 
771             IF l_rev_op_resource_rec.Principle_Flag IS NULL
772             THEN
773                l_rev_op_resource_rec.Principle_Flag
774                := p_old_rev_op_resource_rec.Principle_Flag ;
775             END IF ;
776 
777             -- Populate Null Columns for FlexFields
778             IF l_rev_op_resource_rec.attribute_category IS NULL THEN
779                 l_rev_op_resource_rec.attribute_category :=
780                 p_old_rev_op_resource_rec.attribute_category;
781             END IF;
782 
783             IF l_rev_op_resource_rec.attribute1 IS NULL THEN
784                 l_rev_op_resource_rec.attribute1 :=
785                 p_old_rev_op_resource_rec.attribute1;
786             END IF;
787 
788             IF l_rev_op_resource_rec.attribute2  IS NULL THEN
789                 l_rev_op_resource_rec.attribute2 :=
790                 p_old_rev_op_resource_rec.attribute2;
791             END IF;
792 
793             IF l_rev_op_resource_rec.attribute3 IS NULL THEN
794                 l_rev_op_resource_rec.attribute3 :=
795                 p_old_rev_op_resource_rec.attribute3;
796             END IF;
797 
798             IF l_rev_op_resource_rec.attribute4 IS NULL THEN
799                 l_rev_op_resource_rec.attribute4 :=
800                 p_old_rev_op_resource_rec.attribute4;
801             END IF;
802 
803             IF l_rev_op_resource_rec.attribute5 IS NULL THEN
804                 l_rev_op_resource_rec.attribute5 :=
805                 p_old_rev_op_resource_rec.attribute5;
806             END IF;
807 
808             IF l_rev_op_resource_rec.attribute6 IS NULL THEN
809                 l_rev_op_resource_rec.attribute6 :=
810                 p_old_rev_op_resource_rec.attribute6;
811             END IF;
812 
813             IF l_rev_op_resource_rec.attribute7 IS NULL THEN
814                 l_rev_op_resource_rec.attribute7 :=
815                 p_old_rev_op_resource_rec.attribute7;
816             END IF;
817 
818             IF l_rev_op_resource_rec.attribute8 IS NULL THEN
819                 l_rev_op_resource_rec.attribute8 :=
820                 p_old_rev_op_resource_rec.attribute8;
821             END IF;
822 
823             IF l_rev_op_resource_rec.attribute9 IS NULL THEN
824                 l_rev_op_resource_rec.attribute9 :=
825                 p_old_rev_op_resource_rec.attribute9;
826             END IF;
827 
828             IF l_rev_op_resource_rec.attribute10 IS NULL THEN
829                 l_rev_op_resource_rec.attribute10 :=
830                 p_old_rev_op_resource_rec.attribute10;
831             END IF;
832 
833             IF l_rev_op_resource_rec.attribute11 IS NULL THEN
834                 l_rev_op_resource_rec.attribute11 :=
835                 p_old_rev_op_resource_rec.attribute11;
836             END IF;
837 
838             IF l_rev_op_resource_rec.attribute12 IS NULL THEN
839                 l_rev_op_resource_rec.attribute12 :=
840                 p_old_rev_op_resource_rec.attribute12;
841             END IF;
842 
843             IF l_rev_op_resource_rec.attribute13 IS NULL THEN
844                 l_rev_op_resource_rec.attribute13 :=
845                 p_old_rev_op_resource_rec.attribute13;
846             END IF;
847 
848             IF l_rev_op_resource_rec.attribute14 IS NULL THEN
849                 l_rev_op_resource_rec.attribute14 :=
850                 p_old_rev_op_resource_rec.attribute14;
851             END IF;
852 
853             IF l_rev_op_resource_rec.attribute15 IS NULL THEN
857 
854                 l_rev_op_resource_rec.attribute15 :=
855                 p_old_rev_op_resource_rec.attribute15;
856             END IF;
858 
859             --
860             -- Also copy the Unexposed Columns from Database to New record
861             --
862 
863 
864        IF BOM_Rtg_Globals.Get_Debug = 'Y' THEN Error_Handler.Write_Debug
865             ('Populate Null Unexposed columns......') ;
866        END IF ;
867 
868 
869            IF l_rev_op_resource_rec.transaction_type <> BOM_Rtg_Globals.G_OPR_CREATE
870            THEN
871 
872               l_rev_op_res_unexp_rec.Revised_Item_Sequence_Id
873               := p_old_rev_op_res_unexp_rec.Revised_Item_Sequence_Id ;
874 
875               l_rev_op_res_unexp_rec.Operation_Sequence_Id
876               := p_old_rev_op_res_unexp_rec.Operation_Sequence_Id ;
877 
878            END IF;
879 
880 
881            IF l_rev_op_resource_rec.Substitute_Group_Number IS NULL
882               OR l_rev_op_resource_rec.Substitute_Group_Number = FND_API.G_MISS_NUM
883            THEN
884               l_rev_op_resource_rec.Substitute_Group_Number
885               := p_old_rev_op_resource_rec.Substitute_Group_Number ;
886            END IF ;
887               l_rev_op_res_unexp_rec.Substitute_Group_Number := l_rev_op_resource_rec.Substitute_Group_Number;
888 
889            IF l_rev_op_res_unexp_rec.Resource_Id IS NULL
890               OR l_rev_op_res_unexp_rec.Resource_Id = FND_API.G_MISS_NUM
891            THEN
892               l_rev_op_res_unexp_rec.Resource_Id
893               := p_old_rev_op_res_unexp_rec.Resource_Id ;
894            END IF ;
895 
896            IF l_rev_op_res_unexp_rec.Activity_Id IS NULL
897               OR l_rev_op_res_unexp_rec.Activity_Id = FND_API.G_MISS_NUM
898            THEN
899               l_rev_op_res_unexp_rec.Activity_Id
900               := p_old_rev_op_res_unexp_rec.Activity_Id ;
901            END IF ;
902 
903 
904            IF l_rev_op_res_unexp_rec.Setup_Id IS NULL
905               OR l_rev_op_res_unexp_rec.Setup_Id = FND_API.G_MISS_NUM
906            THEN
907               l_rev_op_res_unexp_rec.Setup_Id
908               := p_old_rev_op_res_unexp_rec.Setup_Id ;
909            END IF ;
910 
911 
912            --  Return rev operation resource exp and unexp record
913            x_rev_op_resource_rec  := l_rev_op_resource_rec ;
914            x_rev_op_res_unexp_rec := l_rev_op_res_unexp_rec ;
915 
916     END Populate_Null_Columns;
917 
918 
919     /*********************************************************************
920     * Procedure : Entity_Defaulting by RTG BO
921     * Parameters IN : Operation Resource exposed column record
922     *                 Operation Resource unexposed column record
923     * Parameters OUT: Operation Resource exposed column record after defaulting
924     *                 Operation Resource unexposed column record after defaulting
925     *                 Return Status
926     *                 Message Token Table
927     * Purpose   : Convert Routing Op Resource to Revised Op Resource and
928     *             Call Entity_Defaulting for ECO Bo
929     *             This procedure will entity default values in all the op resource.
930     *             fields that the user has left unfilled.
931     **********************************************************************/
932     PROCEDURE Entity_Defaulting
933     (  p_op_resource_rec     IN  Bom_Rtg_Pub.Op_Resource_Rec_Type
934      , p_op_res_unexp_rec    IN  Bom_Rtg_Pub.Op_Res_Unexposed_Rec_Type
935      , x_op_resource_rec     IN OUT NOCOPY Bom_Rtg_Pub.Op_Resource_Rec_Type
936      , x_op_res_unexp_rec    IN OUT NOCOPY Bom_Rtg_Pub.Op_Res_Unexposed_Rec_Type
937      , x_mesg_token_tbl      IN OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
938      , x_return_status       IN OUT NOCOPY VARCHAR2
939     )
940     IS
941         l_rev_op_resource_rec      Bom_Rtg_Pub.Rev_Op_Resource_Rec_Type ;
942         l_rev_op_res_unexp_rec     Bom_Rtg_Pub.Rev_Op_Res_Unexposed_Rec_Type ;
943 
944         l_return_status VARCHAR2(1);
945         l_err_text  VARCHAR2(2000) ;
946         l_Mesg_Token_Tbl    Error_Handler.Mesg_Token_Tbl_Type;
947 
948     BEGIN
949 
950         x_return_status := FND_API.G_RET_STS_SUCCESS;
951 
952         --
953         -- The record definition of Revised Op Resource in ECO BO is
954         -- slightly different than the Op Resource definition of RTG BO
955         -- So, we will copy the values of RTG BO Record into an ECO
956         -- BO compatible record before we make a call to the
957         -- Entity Defaulting procedure.
958         --
959 
960         -- Convert Routing Op Resource to ECO Op Resource
961         Bom_Rtg_Pub.Convert_RtgRes_To_EcoRes
962         (  p_rtg_op_resource_rec      => p_op_resource_rec
963          , p_rtg_op_res_unexp_rec     => p_op_res_unexp_rec
964          , x_rev_op_resource_rec      => l_rev_op_resource_rec
965          , x_rev_op_res_unexp_rec     => l_rev_op_res_unexp_rec
966         ) ;
967 
968 
969         -- Once the record transfer is done call the
970         -- Revised operation resource entity defaulting
971         --
972         BOM_Default_Op_Res.Entity_Defaulting
973         (  p_rev_op_resource_rec     => l_rev_op_resource_rec
974          , p_rev_op_res_unexp_rec    => l_rev_op_res_unexp_rec
975          , p_control_Rec             => Bom_Rtg_Pub.G_Default_Control_Rec
976          , x_rev_op_resource_rec     => l_rev_op_resource_rec
977          , x_rev_op_res_unexp_rec    => l_rev_op_res_unexp_rec
978          , x_return_status           => x_return_status
979          , x_mesg_token_tbl          => x_mesg_token_tbl
980         ) ;
981 
982         -- Convert the ECO record to Routing Record
983         Bom_Rtg_Pub.Convert_EcoRes_To_RtgRes
987          , x_rtg_op_res_unexp_rec     => x_op_res_unexp_rec
984         (  p_rev_op_resource_rec      => l_rev_op_resource_rec
985          , p_rev_op_res_unexp_rec     => l_rev_op_res_unexp_rec
986          , x_rtg_op_resource_rec      => x_op_resource_rec
988          ) ;
989 
990     END Entity_Defaulting ;
991 
992 
993     /*********************************************************************
994     * Procedure : Entity_Defaulting by ECOBO
995     * Parameters IN : Revised Op Resource exposed column record
996     *                 Revised Op Resource unexposed column record
997     * Parameters OUT: Revised Op Resource exposed column record after defaulting
998     *                 Revised Op Resource unexposed column record after defaulting
999     *                 Return Status
1000     *                 Message Token Table
1001     * Purpose   : Entity defaulting proc. defualts columns to
1002     *             appropriate values. Defualting will happen for
1003     *             exposed as well as unexposed columns.
1004     **********************************************************************/
1005     PROCEDURE Entity_Defaulting
1006     (  p_rev_op_resource_rec    IN  Bom_Rtg_Pub.Rev_Op_Resource_Rec_Type
1007      , p_rev_op_res_unexp_rec   IN  Bom_Rtg_Pub.Rev_Op_Res_Unexposed_Rec_Type
1008      , p_control_Rec            IN  Bom_Rtg_Pub.Control_Rec_Type
1009      , x_rev_op_resource_rec    IN OUT NOCOPY Bom_Rtg_Pub.Rev_Op_Resource_Rec_Type
1010      , x_rev_op_res_unexp_rec   IN OUT NOCOPY Bom_Rtg_Pub.Rev_Op_Res_Unexposed_Rec_Type
1011      , x_mesg_token_tbl         IN OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
1012      , x_return_status          IN OUT NOCOPY VARCHAR2
1013     )
1014 
1015     IS
1016         l_rev_op_resource_rec        Bom_Rtg_Pub.Rev_Op_Resource_Rec_Type ;
1017         l_rev_op_res_unexp_rec       Bom_Rtg_Pub.Rev_Op_Res_Unexposed_Rec_Type ;
1018 
1019         l_return_status VARCHAR2(1);
1020         l_err_text  VARCHAR2(2000) ;
1021         l_Token_Tbl         Error_Handler.Token_Tbl_Type ;
1022         l_Mesg_Token_Tbl    Error_Handler.Mesg_Token_Tbl_Type ;
1023 
1024     BEGIN
1025 
1026        IF BOM_Rtg_Globals.Get_Debug = 'Y' THEN Error_Handler.Write_Debug
1027             ('Within the Operation Resource Entity Defaulting...') ;
1028        END IF ;
1029 
1030        l_return_status := FND_API.G_RET_STS_SUCCESS;
1031        x_return_status := FND_API.G_RET_STS_SUCCESS;
1032 
1033        --  Initialize operation exp and unexp record
1034        l_rev_op_resource_rec    := p_rev_op_resource_rec ;
1035        l_rev_op_res_unexp_rec   := p_rev_op_res_unexp_rec ;
1036 
1037 
1038             /************************************************************
1039             --
1040             -- Default Schedule_Sequence_Number and Substitute_Group_Number
1041             -- ( Copy from Schedule_Sequence_Number )
1042             ************************************************************/
1043 
1044             IF l_rev_op_resource_rec.schedule_sequence_number = FND_API.G_MISS_NUM
1045             THEN
1046                l_rev_op_resource_rec.schedule_sequence_number := NULL ;
1047             END IF ;
1048               l_rev_op_res_unexp_rec.substitute_group_number := l_rev_op_resource_rec.substitute_group_number;
1049 
1050            -- l_rev_op_res_unexp_rec.substitute_group_number
1051            --            := l_rev_op_resource_rec.schedule_sequence_number ;
1052 
1053             /************************************************************
1054             --
1055             -- Default Usage_Rate_Or_Amount and Usage_Rate_Or_Amount_Inverse
1056             --
1057             ************************************************************/
1058             Get_Usage_Rate_Or_Amount
1059              ( p_usage_rate_or_amount
1060                => l_rev_op_resource_rec.usage_rate_or_amount
1061              , p_usage_rate_or_amount_inverse
1062                => l_rev_op_resource_rec.usage_rate_or_amount_inverse
1063              , x_usage_rate_or_amount
1064                => l_rev_op_resource_rec.usage_rate_or_amount
1065              , x_usage_rate_or_amount_inverse
1066                => l_rev_op_resource_rec.usage_rate_or_amount_inverse
1067             ) ;
1068 
1069 
1070             /************************************************************
1071             --
1072             -- Default Activity_Id,
1073             --         Autocharge_Type,
1074             --         Basis_Type,
1075             --         Standard_Rate_Flag
1076             --
1077             ************************************************************/
1078             IF l_rev_op_resource_rec.transaction_type = BOM_Rtg_Globals.G_OPR_CREATE
1079                AND
1080                ( l_rev_op_res_unexp_rec.activity_id       IS NULL OR
1081                  l_rev_op_res_unexp_rec.activity_id       = FND_API.G_MISS_NUM OR
1082                  l_rev_op_resource_rec.autocharge_type    IS NULL OR
1083                  l_rev_op_resource_rec.autocharge_type = FND_API.G_MISS_NUM OR
1084                  l_rev_op_resource_rec.basis_type IS NULL OR
1085                  l_rev_op_resource_rec.basis_type  = FND_API.G_MISS_NUM OR
1086                  l_rev_op_resource_rec.standard_rate_flag IS NULL OR
1087                  l_rev_op_resource_rec.standard_rate_flag  = FND_API.G_MISS_NUM
1088                )
1089             THEN
1090                Get_Res_Attributes
1091                (  p_operation_sequence_id  => l_rev_op_res_unexp_rec.operation_sequence_id
1092                 , p_resource_id            => l_rev_op_res_unexp_rec.resource_id
1093                 , p_activity_id            => l_rev_op_res_unexp_rec.activity_id
1094                 , p_autocharge_type        => l_rev_op_resource_rec.autocharge_type
1095                 , p_basis_type             => l_rev_op_resource_rec.basis_type
1096                 , p_standard_rate_flag     => l_rev_op_resource_rec.standard_rate_flag
1097                 , p_org_id                 => l_rev_op_res_unexp_rec.organization_id
1101                 , x_standard_rate_flag     => l_rev_op_resource_rec.standard_rate_flag ) ;
1098                 , x_activity_id            => l_rev_op_res_unexp_rec.activity_id
1099                 , x_autocharge_type        => l_rev_op_resource_rec.autocharge_type
1100                 , x_basis_type             => l_rev_op_resource_rec.basis_type
1102 
1103             END IF ;
1104 
1105 
1106 	    /************************************************************
1107             --
1108             -- Default Assigned Units
1109             --         Check if resource is availabel 24hours.
1110             --          If so, Assigned Units must be 1.
1111             --
1112             --
1113             ************************************************************/
1114 	    /**** Commenting the following validation as per bug 2661684
1115             IF BOM_Rtg_Globals.Get_Debug = 'Y' THEN Error_Handler.Write_Debug
1116             ('Default Assigned Units. . . . ' || l_return_status) ;
1117             END IF ;
1118 
1119             IF   NVL(l_rev_op_resource_rec.acd_type,l_ACD_ADD) = l_ACD_ADD
1120                  AND l_rev_op_resource_rec.assigned_units <> 1
1121             THEN
1122 
1123 
1124                IF Get_Available_24hs_flag
1125                  ( p_resource_id => l_rev_op_res_unexp_rec.resource_id
1126                  , p_op_seq_id   => l_rev_op_res_unexp_rec.operation_sequence_id
1127                  )  = 1  -- Yes
1128                THEN
1129 
1130                   -- Set Assigned Units to 1
1131                   l_rev_op_resource_rec.assigned_units := 1 ;
1132 
1133 
1134                   l_Token_Tbl(1).token_name  := 'RES_SEQ_NUMBER';
1135                   l_Token_Tbl(1).token_value :=
1136                                    p_rev_op_resource_rec.resource_sequence_number ;
1137                   -- Set Warning Message
1138                   Error_Handler.Add_Error_Token
1139                   ( p_message_name   => 'BOM_RES_DEF_ASSGN_UNIT'
1140                   , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
1141                   , x_Mesg_Token_Tbl => l_Mesg_Token_Tbl
1142                   , p_Token_Tbl      => l_Token_Tbl
1143                   , p_Message_Type   => 'W'
1144                   ) ;
1145 
1146                END IF ;
1147             END IF ;
1148 	    End of commenting for bug 2661684 ****/
1149 
1150 	    /************************************************************
1151             --
1152             -- Check value of basis type -- bug 2683529
1153             --   If resource is batchable, basis type should always be LOT
1154             --
1155             ************************************************************/
1156 
1157             IF BOM_Rtg_Globals.Get_Debug = 'Y' THEN Error_Handler.Write_Debug
1158             ('Default Basis type. . . . ' || l_return_status) ;
1159             END IF ;
1160 
1161             IF   NVL(l_rev_op_resource_rec.acd_type,l_ACD_ADD) = l_ACD_ADD
1162                  AND l_rev_op_resource_rec.basis_type <> 2 -- If basis_type is not LOT
1163             THEN
1164 
1165                IF Get_Res_Batchable
1166                  ( p_resource_id => l_rev_op_res_unexp_rec.resource_id
1167                  )  = 1  -- Batchable
1168                THEN
1169 
1170                   -- Set basis type to 2
1171                   l_rev_op_resource_rec.basis_type := 2;  -- default to LOT basis type
1172 
1173                   l_Token_Tbl(1).token_name  := 'RES_SEQ_NUMBER';
1174                   l_Token_Tbl(1).token_value :=
1175                                    p_rev_op_resource_rec.resource_sequence_number ;
1176                   -- Set Warning Message
1177                   Error_Handler.Add_Error_Token
1178                   ( p_message_name   => 'BOM_RES_DEF_BASIS_TYPE' -- new message
1179                   , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
1180                   , x_Mesg_Token_Tbl => l_Mesg_Token_Tbl
1181                   , p_Token_Tbl      => l_Token_Tbl
1182                   , p_Message_Type   => 'W'
1183                   ) ;
1184 
1185                END IF ;
1186             END IF ;
1187 
1188 
1189             /************************************************************
1190             --
1191             -- Set missing column values to Null
1192             --
1193             ************************************************************/
1194             IF  l_rev_op_resource_rec.activity  = FND_API.G_MISS_CHAR
1195                 OR l_rev_op_res_unexp_rec.activity_id = FND_API.G_MISS_NUM
1196             THEN
1197                l_rev_op_resource_rec.activity     := NULL ;
1198                l_rev_op_res_unexp_rec.activity_id := NULL ;
1199             END IF ;
1200 
1201 
1202             IF  l_rev_op_resource_rec.setup_type = FND_API.G_MISS_CHAR
1203                 OR l_rev_op_res_unexp_rec.setup_id = FND_API.G_MISS_NUM
1204             THEN
1205                l_rev_op_resource_rec.setup_type := NULL ;
1206                l_rev_op_res_unexp_rec.setup_id  := NULL ;
1207             END IF ;
1208 
1209 
1210             IF l_rev_op_resource_rec.resource_offset_percent  = FND_API.G_MISS_NUM
1211             THEN
1212                l_rev_op_resource_rec.resource_offset_percent := NULL ;
1213             END IF ;
1214 
1215             IF  l_rev_op_resource_rec.principle_flag = FND_API.G_MISS_NUM
1216             THEN
1217                 l_rev_op_resource_rec.principle_flag := NULL ;
1218             END IF ;
1219 
1220 
1221             -- FlexFields
1222             IF l_rev_op_resource_rec.attribute_category = FND_API.G_MISS_CHAR THEN
1223                     l_rev_op_resource_rec.attribute_category := NULL ;
1224             END IF;
1225 
1229 
1226             IF l_rev_op_resource_rec.attribute1 = FND_API.G_MISS_CHAR THEN
1227                     l_rev_op_resource_rec.attribute1 := NULL ;
1228             END IF;
1230             IF l_rev_op_resource_rec.attribute2  = FND_API.G_MISS_CHAR THEN
1231                     l_rev_op_resource_rec.attribute2 := NULL ;
1232             END IF;
1233 
1234             IF l_rev_op_resource_rec.attribute3 = FND_API.G_MISS_CHAR THEN
1235                     l_rev_op_resource_rec.attribute3 := NULL ;
1236             END IF;
1237 
1238             IF l_rev_op_resource_rec.attribute4 = FND_API.G_MISS_CHAR THEN
1239                     l_rev_op_resource_rec.attribute4 := NULL ;
1240             END IF;
1241 
1242             IF l_rev_op_resource_rec.attribute5 = FND_API.G_MISS_CHAR THEN
1243                     l_rev_op_resource_rec.attribute5 := NULL ;
1244             END IF;
1245 
1246             IF l_rev_op_resource_rec.attribute6 = FND_API.G_MISS_CHAR THEN
1247                     l_rev_op_resource_rec.attribute6 := NULL ;
1248             END IF;
1249 
1250             IF l_rev_op_resource_rec.attribute7 = FND_API.G_MISS_CHAR THEN
1251                     l_rev_op_resource_rec.attribute7 := NULL ;
1252             END IF;
1253 
1254             IF l_rev_op_resource_rec.attribute8 = FND_API.G_MISS_CHAR THEN
1255                     l_rev_op_resource_rec.attribute8 := NULL ;
1256             END IF;
1257 
1258             IF l_rev_op_resource_rec.attribute9 = FND_API.G_MISS_CHAR THEN
1259                     l_rev_op_resource_rec.attribute9 := NULL ;
1260             END IF;
1261 
1262             IF l_rev_op_resource_rec.attribute10 = FND_API.G_MISS_CHAR THEN
1263                     l_rev_op_resource_rec.attribute10 := NULL ;
1264             END IF;
1265 
1266             IF l_rev_op_resource_rec.attribute11 = FND_API.G_MISS_CHAR THEN
1267                     l_rev_op_resource_rec.attribute11 := NULL ;
1268             END IF;
1269 
1270             IF l_rev_op_resource_rec.attribute12 = FND_API.G_MISS_CHAR THEN
1271                     l_rev_op_resource_rec.attribute12 := NULL ;
1272             END IF;
1273 
1274             IF l_rev_op_resource_rec.attribute13 = FND_API.G_MISS_CHAR THEN
1275                     l_rev_op_resource_rec.attribute13 := NULL ;
1276             END IF;
1277 
1278             IF l_rev_op_resource_rec.attribute14 = FND_API.G_MISS_CHAR THEN
1279                     l_rev_op_resource_rec.attribute14 := NULL ;
1280             END IF;
1281 
1282             IF l_rev_op_resource_rec.attribute15 = FND_API.G_MISS_CHAR THEN
1283                     l_rev_op_resource_rec.attribute15 := NULL ;
1284             END IF;
1285 
1286             -- Return the status and message table.
1287             x_return_status  := l_return_status ;
1288             x_mesg_token_tbl := l_mesg_token_tbl ;
1289 
1290             -- Return the common operation records after entity defaulting.
1291             x_rev_op_resource_rec    := l_rev_op_resource_rec ;
1292             x_rev_op_res_unexp_rec   := l_rev_op_res_unexp_rec ;
1293 
1294     EXCEPTION
1295        WHEN OTHERS THEN
1296           IF BOM_Rtg_Globals.Get_Debug = 'Y' THEN Error_Handler.Write_Debug
1297           ('Some unknown error in Entity Defaulting . . .' || SQLERRM );
1298           END IF ;
1299 
1300 
1301           l_err_text := G_PKG_NAME || ' Defaulting (Entity Defaulting) '
1302                                 || substrb(SQLERRM,1,200);
1303           -- dbms_output.put_line('Unexpected Error: '||l_err_text);
1304 
1305           Error_Handler.Add_Error_Token
1306           (  p_message_name   => NULL
1307            , p_message_text   => l_err_text
1308            , p_mesg_token_tbl => l_mesg_token_tbl
1309            , x_mesg_token_tbl => l_mesg_token_tbl
1310           ) ;
1311 
1312           -- Return the status and message table.
1313           x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1314           x_mesg_token_tbl := l_mesg_token_tbl ;
1315 
1316     END Entity_Defaulting ;
1317 
1318 
1319 END BOM_Default_Op_Res;