[Home] [Help]
PACKAGE BODY: APPS.BOM_DEFAULT_RTG_HEADER
Source
1 PACKAGE BODY BOM_Default_Rtg_Header AS
2 /* $Header: BOMDRTGB.pls 120.1.12010000.2 2010/01/22 05:55:57 ybabulal ship $*/
3 /****************************************************************************
4 --
5 -- Copyright (c) 2000 Oracle Corporation, Redwood Shores, CA, USA
6 -- All rights reserved.
7 --
8 -- FILENAME
9 --
10 -- BOMDRTGB.pls
11 --
12 -- DESCRIPTION
13 --
14 -- Body of package BOM_Default_Rtg_Header
15 --
16 -- NOTES
17 --
18 -- HISTORY
19 -- 07-AUG-2000 Biao Zhang Initial Creation
20 --
21 ****************************************************************************/
22 G_PKG_NAME CONSTANT VARCHAR2(30) := 'Rtg_Default_Rtg_Header';
23
24
25 /********************************************************************
26 * Function : Get_Routing_Sequence
27 * Return : NUMBER
28 * Purpose : Function will return the routing_sequence_id.
29 *
30 **********************************************************************/
31 FUNCTION Get_Routing_Sequence
32 RETURN NUMBER
33 IS
34 l_routing_sequence_id NUMBER := NULL;
35 BEGIN
36
37 SELECT bom_operational_routings_s.nextval
38 INTO l_routing_sequence_id
39 FROM sys.dual;
40
41 RETURN l_routing_sequence_id;
42
43 EXCEPTION
44
45 WHEN OTHERS THEN
46 RETURN NULL;
47
48 END Get_routing_Sequence;
49
50 PROCEDURE Get_Flex_Rtg_Header
51 ( p_rtg_header_rec IN Bom_Rtg_Pub.Rtg_Header_Rec_Type
52 , x_rtg_header_rec IN OUT NOCOPY Bom_Rtg_Pub.Rtg_Header_Rec_Type
53 )
54 IS
55 BEGIN
56
57 -- In the future call Flex APIs for defaults
58 x_rtg_header_rec := p_rtg_header_rec;
59
60 IF p_rtg_header_rec.attribute_category =FND_API.G_MISS_CHAR THEN
61 x_rtg_header_rec.attribute_category := NULL;
62 END IF;
63
64 IF p_rtg_header_rec.attribute1 = FND_API.G_MISS_CHAR THEN
65 x_rtg_header_rec.attribute1 := NULL;
66 END IF;
67
68 IF p_rtg_header_rec.attribute2 = FND_API.G_MISS_CHAR THEN
69 x_rtg_header_rec.attribute2 := NULL;
70 END IF;
71
72 IF p_rtg_header_rec.attribute3 = FND_API.G_MISS_CHAR THEN
73 x_rtg_header_rec.attribute3 := NULL;
74 END IF;
75
76 IF p_rtg_header_rec.attribute4 = FND_API.G_MISS_CHAR THEN
77 x_rtg_header_rec.attribute4 := NULL;
78 END IF;
79
80 IF p_rtg_header_rec.attribute5 = FND_API.G_MISS_CHAR THEN
81 x_rtg_header_rec.attribute5 := NULL;
82 END IF;
83
84 IF p_rtg_header_rec.attribute6 = FND_API.G_MISS_CHAR THEN
85 x_rtg_header_rec.attribute6 := NULL;
86 END IF;
87
88 IF p_rtg_header_rec.attribute7 = FND_API.G_MISS_CHAR THEN
89 x_rtg_header_rec.attribute7 := NULL;
90 END IF;
91
92 IF p_rtg_header_rec.attribute8 = FND_API.G_MISS_CHAR THEN
93 x_rtg_header_rec.attribute8 := NULL;
94 END IF;
95
96 IF p_rtg_header_rec.attribute9 = FND_API.G_MISS_CHAR THEN
97 x_rtg_header_rec.attribute9 := NULL;
98 END IF;
99
100 IF p_rtg_header_rec.attribute10 = FND_API.G_MISS_CHAR THEN
101 x_rtg_header_rec.attribute10 := NULL;
102 END IF;
103
104 IF p_rtg_header_rec.attribute11 = FND_API.G_MISS_CHAR THEN
105 x_rtg_header_rec.attribute11 := NULL;
106 END IF;
107
108 IF p_rtg_header_rec.attribute12 = FND_API.G_MISS_CHAR THEN
109 x_rtg_header_rec.attribute12 := NULL;
110 END IF;
111
112 IF p_rtg_header_rec.attribute13 = FND_API.G_MISS_CHAR THEN
113 x_rtg_header_rec.attribute13 := NULL;
114 END IF;
115
116 IF p_rtg_header_rec.attribute14 = FND_API.G_MISS_CHAR THEN
117 x_rtg_header_rec.attribute14 := NULL;
118 END IF;
119
120 IF p_rtg_header_rec.attribute15 = FND_API.G_MISS_CHAR THEN
121 x_rtg_header_rec.attribute15 := NULL;
122 END IF;
123
124
125 END Get_Flex_Rtg_Header;
126
127 -- Get_Cfm_Routing_Flag
128 FUNCTION Get_Cfm_Routing_Flag
129 RETURN NUMBER
130 IS
131 BEGIN
132 RETURN 2 ; -- Return 2 : Standard Routing
133 END Get_Cfm_Routing_Flag ;
134
135 -- Get_Mixed_Model_Map_Flag
136 FUNCTION Get_Mixed_Model_Map_Flag
137 RETURN NUMBER
138 IS
139 BEGIN
140 RETURN 2 ; -- Return 2 : No
141 END Get_Mixed_Model_Map_Flag ;
142
143 -- Get_Ctp_Flag
144 FUNCTION Get_Ctp_Flag
145 RETURN NUMBER
146 IS
147 BEGIN
148 RETURN 2 ; -- Return 2 : No
149 END Get_Ctp_Flag ;
150
151
152 -- Get_Eng_Routing_Flag
153 FUNCTION Get_Eng_Routing_Flag( p_assembly_item_id NUMBER
154 , p_org_id NUMBER)
155 RETURN NUMBER
156 IS
157 p_eng_routng_flag NUMBER ;
158 CURSOR get_routing_flag_csr ( p_assembly_item_id NUMBER
159 , p_org_id NUMBER )
160 IS
161 SELECT DECODE(eng_item_flag, 'Y', 1, 2) eng_routing_flag
162 FROM mtl_system_items
163 WHERE inventory_item_id = p_assembly_item_id
164 AND organization_id = p_org_id;
165
166
167
168
169 BEGIN
170
171 FOR get_routing_flag_rec IN get_routing_flag_csr
172 ( p_assembly_item_id
173 , p_org_id )
174 LOOP
175
176 RETURN get_routing_flag_rec.eng_routing_flag ;
177
178 END LOOP ;
179
180 RETURN 2 ; -- Return 2 : No - Mfg Routing
181
182 END Get_Eng_Routing_Flag ;
183
184 -- Added for SSOS (bug 2689249)
185 FUNCTION Get_Ser_Num_Control_Code( p_assembly_item_id NUMBER
186 , p_org_id NUMBER)
187 RETURN NUMBER
188 IS
189 p_serial_number_control_code NUMBER ;
190 CURSOR GET_SER_NUM_CONTROL_CODE_csr ( p_assembly_item_id NUMBER
191 , p_org_id NUMBER )
192 IS
193 SELECT serial_number_control_code
194 FROM mtl_system_items
195 WHERE inventory_item_id = p_assembly_item_id
196 AND organization_id = p_org_id;
197
198 BEGIN
199
200 FOR GET_SER_NUM_CONTROL_CODE_rec IN GET_SER_NUM_CONTROL_CODE_csr
201 ( p_assembly_item_id
202 , p_org_id )
203 LOOP
204
205 RETURN GET_SER_NUM_CONTROL_CODE_rec.serial_number_control_code ;
206
207 END LOOP ;
208
209 END Get_Ser_Num_Control_Code ;
210
211
212 /*********************************************************************
213 * Procedure : Attribute_Defaulting
214 * Parameters IN : Rtg Header exposed record
215 * Rtg Header unexposed record
216 * Parameters out: Rtg Header exposed record after defaulting
217 * Rtg Header unexposed record after defaulting
218 * Mesg_Token_Table
219 * Return_Status
220 * Purpose : Attribute Defaulting will default the necessary null
221 * attribute with appropriate values.
222 **********************************************************************/
223 PROCEDURE Attribute_Defaulting
224 ( p_rtg_header_rec IN Bom_Rtg_Pub.Rtg_Header_Rec_Type
225 , p_rtg_header_unexp_rec IN Bom_Rtg_Pub.Rtg_Header_Unexposed_Rec_Type
226 , x_rtg_header_rec IN OUT NOCOPY Bom_Rtg_Pub.Rtg_Header_Rec_Type
227 , x_rtg_header_unexp_rec IN OUT NOCOPY Bom_Rtg_Pub.Rtg_Header_Unexposed_Rec_Type
228 , x_mesg_token_tbl IN OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
229 , x_return_status IN OUT NOCOPY VARCHAR2
230 )
231 IS
232 --bug:4285921 Cursor to get completion subinventory and locator id.
233 CURSOR l_CommonRtg_csr (P_CommRtgSeqId NUMBER, P_OrgId NUMBER, P_Alt VARCHAR2) IS
234 SELECT
235 COMPLETION_SUBINVENTORY,
236 COMPLETION_LOCATOR_ID
237 FROM
238 BOM_OPERATIONAL_ROUTINGS
239 WHERE
240 ROUTING_SEQUENCE_ID = P_CommRtgSeqId
241 AND ORGANIZATION_ID = P_OrgId
242 AND NVL(ALTERNATE_ROUTING_DESIGNATOR, 'primary alternate') =
243 NVL(P_Alt, 'primary alternate');
244 BEGIN
245
246 x_rtg_header_rec := p_rtg_header_rec;
247 x_rtg_header_unexp_rec := p_rtg_header_unexp_rec;
248 x_return_status := FND_API.G_RET_STS_SUCCESS;
249
250 IF p_rtg_header_unexp_rec.routing_sequence_id IS NULL OR
251 p_rtg_header_unexp_rec.routing_sequence_id = FND_API.G_MISS_NUM
252 THEN
253 x_rtg_header_unexp_rec.routing_sequence_id :=
254 Get_Routing_Sequence;
255
256 IF BOM_Rtg_Globals.Get_Debug = 'Y'
257 THEN Error_Handler.Write_Debug('New Routing Sequence Id : '
258 || to_char(x_rtg_header_unexp_rec.routing_sequence_id));
259 END IF;
260
261 END IF;
262
263 IF p_rtg_header_rec.cfm_routing_flag = FND_API.G_MISS_NUM
264 OR p_rtg_header_rec.cfm_routing_flag IS NULL
265 THEN
266 x_rtg_header_rec.cfm_routing_flag := Get_Cfm_Routing_Flag ;
267 END IF;
268
269 IF p_rtg_header_rec.mixed_model_map_flag =FND_API.G_MISS_NUM
270 OR p_rtg_header_rec.mixed_model_map_flag IS NULL
271 THEN
272 x_rtg_header_rec.mixed_model_map_flag := Get_Mixed_Model_Map_Flag ;
273 END IF;
274
275 IF p_rtg_header_rec.ctp_flag =FND_API.G_MISS_NUM
276 OR p_rtg_header_rec.ctp_flag IS NULL
277 THEN
278 x_rtg_header_rec.ctp_flag := Get_Ctp_Flag ;
279 END IF;
280
281 IF p_rtg_header_rec.eng_routing_flag = FND_API.G_MISS_NUM
282 OR p_rtg_header_rec.eng_routing_flag IS NULL
283 THEN
284 x_rtg_header_rec.eng_routing_flag
285 := Get_Eng_Routing_Flag
286 ( p_assembly_item_id => p_rtg_header_unexp_rec.assembly_item_id
287 , p_org_id => p_rtg_header_unexp_rec.organization_id ) ;
288
289 END IF ;
290
291 IF p_rtg_header_rec.total_cycle_time = FND_API.G_MISS_NUM THEN
292 x_rtg_header_rec.total_cycle_time := NULL ;
293 END IF;
294
295 Get_Flex_Rtg_Header( p_rtg_header_rec => x_rtg_header_rec
296 , x_rtg_header_rec => x_rtg_header_rec
297 );
298
299 --bug:4285921 begins
300 -- Called for CREATE.
301 -- Take values of completion_subinventory and completion_locator_id
302 -- from input if specified, else take it from common routing.
303 IF NVL(p_rtg_header_unexp_rec.common_routing_sequence_id, FND_API.G_MISS_NUM) <>
304 FND_API.G_MISS_NUM
305 THEN
306 FOR l_CommonRtg_rec IN
307 l_CommonRtg_csr
308 (
309 P_CommRtgSeqId => p_rtg_header_unexp_rec.common_routing_sequence_id,
310 P_OrgId => p_rtg_header_unexp_rec.organization_id,
311 P_Alt => p_rtg_header_rec.alternate_routing_code
312 )
313 LOOP
314 x_rtg_header_rec.completion_subinventory :=
315 NVL(p_rtg_header_rec.completion_subinventory,l_CommonRtg_rec.completion_subinventory);
316 x_rtg_header_unexp_rec.completion_locator_id :=
317 NVL(p_rtg_header_unexp_rec.completion_locator_id,l_CommonRtg_rec.completion_locator_id);
318 END LOOP; -- common routing
319 END IF; -- set common routing info
320 --bug:4285921 ends
321
322 END Attribute_Defaulting;
323
324 /*********************************************************************
325 * Procedure : Entity_Attribute_Defaulting
326 * Parameters IN : Rtg Header exposed record
327 * Rtg Header unexposed record
328 * Parameters out: Rtg Header exposed record after defaulting
329 * Rtg Header unexposed record after defaulting
330 * Mesg_Token_Table
331 * Return_Status
332 * Purpose : Entity Attribute Defaulting will default the necessary
333 * entity level attribute with appropriate values.
334 **********************************************************************/
335 PROCEDURE Entity_Attribute_Defaulting
336 ( p_rtg_header_rec IN Bom_Rtg_Pub.Rtg_Header_Rec_Type
337 , p_rtg_header_unexp_rec IN Bom_Rtg_Pub.Rtg_Header_Unexposed_Rec_Type
338 , x_rtg_header_rec IN OUT NOCOPY Bom_Rtg_Pub.Rtg_Header_Rec_Type
339 , x_rtg_header_unexp_rec IN OUT NOCOPY Bom_Rtg_Pub.Rtg_Header_Unexposed_Rec_Type
340 , x_mesg_token_tbl IN OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
341 , x_return_status IN OUT NOCOPY VARCHAR2
342 )
343 IS
344
345 l_token_tbl Error_Handler.Token_Tbl_Type;
346 l_Mesg_Token_Tbl Error_Handler.Mesg_Token_Tbl_Type;
347
348 BEGIN
349
350 x_rtg_header_rec := p_rtg_header_rec;
351 x_rtg_header_unexp_rec := p_rtg_header_unexp_rec;
352 x_return_status := FND_API.G_RET_STS_SUCCESS;
353
354 IF (p_rtg_header_unexp_rec.routing_sequence_id IS NOT NULL
355 AND p_rtg_header_unexp_rec.routing_sequence_id <> FND_API.G_MISS_NUM)
356 AND ( p_rtg_header_unexp_rec.common_routing_sequence_id IS NULL
357 OR p_rtg_header_unexp_rec.common_routing_sequence_id
358 = FND_API.G_MISS_NUM )
359 THEN
360 x_rtg_header_unexp_rec.common_routing_sequence_id :=
361 p_rtg_header_unexp_rec.routing_sequence_id;
362 END IF;
363
364 IF p_rtg_header_unexp_rec.common_routing_sequence_id
365 = p_rtg_header_unexp_rec.routing_sequence_id
366 THEN
367 x_rtg_header_unexp_rec.common_assembly_item_id := NULL ;
371 x_rtg_header_unexp_rec.common_assembly_item_id := NULL ;
368
369 ELSIF p_rtg_header_unexp_rec.common_assembly_item_id = FND_API.G_MISS_NUM
370 THEN
372 END IF ;
373
374 IF p_rtg_header_rec.eng_routing_flag IS NOT NULL
375 AND p_rtg_header_rec.eng_routing_flag <> FND_API.G_MISS_NUM
376 AND ( p_rtg_header_unexp_rec.routing_type IS NULL
377 OR p_rtg_header_unexp_rec.routing_type = FND_API.G_MISS_NUM)
378 THEN
379 SELECT DECODE(p_rtg_header_rec.eng_routing_flag, 1, 2, 1)
380 INTO x_rtg_header_unexp_rec.routing_type
381 FROM SYS.DUAL ;
382 END IF;
383
384
385 IF p_rtg_header_rec.total_cycle_time = FND_API.G_MISS_NUM THEN
386 x_rtg_header_rec.total_cycle_time := NULL ;
387 END IF;
388
389 IF p_rtg_header_rec.alternate_routing_code = FND_API.G_MISS_CHAR
390 THEN
391 x_rtg_header_rec.alternate_routing_code := NULL ;
392 END IF ;
393
394 IF p_rtg_header_rec.completion_subinventory = FND_API.G_MISS_CHAR
395 THEN
396 x_rtg_header_rec.completion_subinventory := NULL ;
397 END IF ;
398
399 IF p_rtg_header_unexp_rec.completion_locator_id = FND_API.G_MISS_NUM
400 THEN
401 x_rtg_header_unexp_rec.completion_locator_id := NULL ;
402 END IF ;
403
404 IF p_rtg_header_unexp_rec.line_id = FND_API.G_MISS_NUM
405 OR p_rtg_header_unexp_rec.line_id IS NULL
406 THEN
407 x_rtg_header_unexp_rec.line_id := NULL ;
408 x_rtg_header_rec.line_code := NULL ;
409 END IF ;
410
411 IF p_rtg_header_rec.priority = FND_API.G_MISS_NUM THEN
412 x_rtg_header_rec.priority := NULL ;
413 END IF ;
414
415 IF p_rtg_header_rec.total_cycle_time = FND_API.G_MISS_NUM THEN
416 x_rtg_header_rec.total_cycle_time := NULL ;
417 END IF ;
418
419 IF p_rtg_header_rec.routing_comment = FND_API.G_MISS_CHAR
420 THEN
421 x_rtg_header_rec.routing_comment := NULL ;
422 END IF ;
423
424 IF p_rtg_header_rec.ser_start_op_seq = FND_API.G_MISS_NUM -- Added for SSOS (bug 2689249)
425 THEN
426 x_rtg_header_rec.ser_start_op_seq := NULL ;
427 ELSIF p_rtg_header_rec.ser_start_op_seq IS NOT NULL THEN
428 --bug:5137686 Allow SSOS for network routing also.
429 IF ( ( BOM_Rtg_Globals.Get_Cfm_Rtg_Flag <> BOM_Rtg_Globals.G_STD_RTG )
430 AND ( BOM_Rtg_Globals.Get_Cfm_Rtg_Flag <> BOM_Rtg_Globals.G_LOT_RTG ) )
431 AND
432 ( BOM_Rtg_Globals.Get_Eam_Item_Type <> BOM_Rtg_Globals.G_ASSET_ACTIVITY ) THEN -- SSOS is for Std routings only
433 x_rtg_header_rec.ser_start_op_seq := NULL ;
434 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
435 THEN
436 /*
437 l_token_tbl(1).token_name := 'ASSEMBLY_ITEM_NAME';
438 l_token_tbl(1).token_value :=
439 p_rtg_header_rec.assembly_item_name;
440 */
441 Error_Handler.Add_Error_Token
442 ( x_Mesg_token_tbl => l_Mesg_Token_Tbl
443 , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
444 , p_message_name => 'BOM_NON_STD_RTG_SSOS_IGNORED'
445 , p_token_tbl => l_token_tbl
446 , p_message_type => 'W'
447 );
448 END IF ;
449 END IF;
450 IF Get_Ser_Num_Control_Code
451 ( p_assembly_item_id => p_rtg_header_unexp_rec.assembly_item_id
452 , p_org_id => p_rtg_header_unexp_rec.organization_id ) <> 2 THEN
453 x_rtg_header_rec.ser_start_op_seq := NULL ;
454 /*
455 l_token_tbl(1).token_name := 'ASSEMBLY_ITEM_NAME';
456 l_token_tbl(1).token_value :=
457 p_rtg_header_rec.assembly_item_name;
458 */
459 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
460 THEN
461
462 Error_Handler.Add_Error_Token
463 ( x_Mesg_token_tbl => l_Mesg_Token_Tbl
464 , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
465 , p_message_name => 'BOM_NON_PREDEF_SSOS_IGNORED'
466 , p_token_tbl => l_token_tbl
467 , p_message_type => 'W'
468 );
469 END IF ;
470 END IF;
471 END IF ;
472
473
474 --
475 -- Defaulting for non operated columns in
476 -- Standard Routing and Lot Based Routing
477 --
478 IF p_rtg_header_rec.cfm_routing_flag IN ( 2 , 3)
479 AND (x_rtg_header_rec.line_code IS NOT NULL
480 OR x_rtg_header_rec.mixed_model_map_flag <> 2
481 OR x_rtg_header_rec.total_cycle_time IS NOT NULL)
482 THEN
483 x_rtg_header_rec.line_code := NULL ;
484 x_rtg_header_rec.mixed_model_map_flag:= 2 ;
485 x_rtg_header_rec.total_cycle_time := NULL;
486
487
488 l_token_tbl(1).token_name := 'ASSEMBLY_ITEM_NAME';
489 l_token_tbl(1).token_value :=
490 p_rtg_header_rec.assembly_item_name;
491
492 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
493 THEN
494
495 Error_Handler.Add_Error_Token
499 , p_token_tbl => l_token_tbl
496 ( x_Mesg_token_tbl => l_Mesg_Token_Tbl
497 , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
498 , p_message_name => 'BOM_RTG_FLOW_ATTR_IGNORED'
500 , p_message_type => 'W'
501 );
502 END IF ;
503
504 END IF;
505
506 x_mesg_token_tbl := l_Mesg_Token_Tbl ;
507
508 END Entity_Attribute_Defaulting;
509
510 /******************************************************************
511 * Procedure : Populate_Null_Columns
512 * Parameters IN : Rtg Header Exposed column record
513 * Rtg Header Unexposed column record
514 * Old Rtg Header Exposed Column Record
515 * Old Rtg Header Unexposed Column Record
516 * Parameters out: Rtg Header Exposed column record after populating
517 * Rtg Header Unexposed Column record after populating
518 * Purpose : This procedure will look at the columns that the user
519 * has not filled in and will assign those columns a
520 * value from the old record.
521 * This procedure is not called CREATE
522 ********************************************************************/
523 PROCEDURE Populate_Null_Columns
524 ( p_rtg_header_rec IN Bom_Rtg_Pub.Rtg_Header_Rec_Type
525 , p_rtg_header_unexp_rec IN Bom_Rtg_Pub.Rtg_Header_Unexposed_Rec_Type
526 , p_old_rtg_header_rec IN Bom_Rtg_Pub.Rtg_Header_Rec_Type
527 , p_old_rtg_header_unexp_rec IN Bom_Rtg_Pub.Rtg_Header_Unexposed_Rec_Type
528 , x_rtg_header_rec IN OUT NOCOPY Bom_Rtg_Pub.Rtg_Header_Rec_Type
529 , x_rtg_header_unexp_rec IN OUT NOCOPY Bom_Rtg_Pub.Rtg_Header_Unexposed_Rec_Type
530 )
531 IS
532 --bug:4285921 Cursor to get completion subinventory and locator id.
533 CURSOR l_CommonRtg_csr (P_CommRtgSeqId NUMBER, P_OrgId NUMBER, P_Alt VARCHAR2) IS
534 SELECT
535 COMPLETION_SUBINVENTORY,
536 COMPLETION_LOCATOR_ID
537 FROM
538 BOM_OPERATIONAL_ROUTINGS
539 WHERE
540 ROUTING_SEQUENCE_ID = P_CommRtgSeqId
541 AND ORGANIZATION_ID = P_OrgId
542 AND NVL(ALTERNATE_ROUTING_DESIGNATOR, 'primary alternate') =
543 NVL(P_Alt, 'primary alternate');
544 l_rtg_header_rec Bom_Rtg_Pub.Rtg_Header_Rec_Type; /* bug 7581065*/
545 BEGIN
546 x_rtg_header_rec := p_rtg_header_rec;
547 x_rtg_header_unexp_rec := p_rtg_header_unexp_rec;
548
549
550 IF( p_rtg_header_rec.eng_routing_flag IS NULL OR
551 p_rtg_header_rec.eng_routing_flag = FND_API.G_MISS_NUM )
552 THEN
553 x_rtg_header_unexp_rec.routing_type :=
554 p_old_rtg_header_unexp_rec.routing_type ;
555 END IF;
556
557
558 IF p_rtg_header_rec.Routing_Comment IS NULL
559 THEN
560 x_rtg_header_rec.Routing_Comment :=
561 p_old_rtg_header_rec.Routing_Comment ;
562 END IF;
563
564 IF p_rtg_header_rec.CFM_Routing_Flag IS NULL
565 OR p_rtg_header_rec.CFM_Routing_Flag = FND_API.G_MISS_NUM
566 THEN
567 x_rtg_header_rec.CFM_Routing_Flag :=
568 p_old_rtg_header_rec.CFM_Routing_Flag ;
569 END IF ;
570
571 IF p_rtg_header_rec.Mixed_Model_Map_Flag IS NULL
572 OR p_rtg_header_rec.Mixed_Model_Map_Flag = FND_API.G_MISS_NUM
573 THEN
574 x_rtg_header_rec.Mixed_Model_Map_Flag :=
575 p_old_rtg_header_rec.Mixed_Model_Map_Flag ;
576 END IF ;
577
578 IF p_rtg_header_rec.CTP_Flag IS NULL
579 OR p_rtg_header_rec.CTP_Flag = FND_API.G_MISS_NUM
580 THEN
581 x_rtg_header_rec.CTP_Flag :=
582 p_old_rtg_header_rec.CTP_Flag ;
583 END IF ;
584
585 IF p_rtg_header_rec.Priority IS NULL
586 THEN
587 x_rtg_header_rec.Priority :=
588 p_old_rtg_header_rec.Priority ;
589 END IF ;
590
591 IF p_rtg_header_rec.Total_Cycle_Time IS NULL
592 THEN
593 x_rtg_header_rec.Total_Cycle_Time :=
594 p_old_rtg_header_rec.Total_Cycle_Time ;
595 END IF ;
596
597 IF p_rtg_header_rec.ser_start_op_seq IS NULL -- Added for SSOS (bug 2689249)
598 THEN
599 x_rtg_header_rec.ser_start_op_seq :=
600 p_old_rtg_header_rec.ser_start_op_seq;
601 END IF ;
602
603 --
604 -- Populate Null or missng flex field columns
605 --
606 IF p_rtg_header_rec.attribute_category IS NULL OR
607 p_rtg_header_rec.attribute_category = FND_API.G_MISS_CHAR
608 THEN
609 x_rtg_header_rec.attribute_category :=
610 p_old_rtg_header_rec.attribute_category;
611
612 END IF;
613
614 IF /*p_rtg_header_rec.attribute1 = FND_API.G_MISS_CHAR OR /*Commented condition bug 7581065*/
618 p_old_rtg_header_rec.attribute1;
615 p_rtg_header_rec.attribute1 IS NULL
616 THEN
617 x_rtg_header_rec.attribute1 :=
619 END IF;
620
621 IF /*p_rtg_header_rec.attribute2 = FND_API.G_MISS_CHAR OR/*Commented condition bug 7581065*/
622 p_rtg_header_rec.attribute2 IS NULL
623 THEN
624 x_rtg_header_rec.attribute2 :=
625 p_old_rtg_header_rec.attribute2;
626 END IF;
627
628 IF /*p_rtg_header_rec.attribute3 = FND_API.G_MISS_CHAR OR/*Commented condition bug 7581065*/
629 p_rtg_header_rec.attribute3 IS NULL
630 THEN
631 x_rtg_header_rec.attribute3 :=
632 p_old_rtg_header_rec.attribute3;
633 END IF;
634
635 IF /*p_rtg_header_rec.attribute4 = FND_API.G_MISS_CHAR OR/*Commented condition bug 7581065*/
636 p_rtg_header_rec.attribute4 IS NULL
637 THEN
638 x_rtg_header_rec.attribute4 :=
639 p_old_rtg_header_rec.attribute4;
640 END IF;
641
642 IF /*p_rtg_header_rec.attribute5 = FND_API.G_MISS_CHAR OR/*Commented condition bug 7581065*/
643 p_rtg_header_rec.attribute5 IS NULL
644 THEN
645 x_rtg_header_rec.attribute5 :=
646 p_old_rtg_header_rec.attribute5;
647 END IF;
648
649 IF /*p_rtg_header_rec.attribute6 = FND_API.G_MISS_CHAR OR/*Commented condition bug 7581065*/
650 p_rtg_header_rec.attribute6 IS NULL
651 THEN
652 x_rtg_header_rec.attribute6 :=
653 p_old_rtg_header_rec.attribute6;
654 END IF;
655
656 IF /*p_rtg_header_rec.attribute7 = FND_API.G_MISS_CHAR OR/*Commented condition bug 7581065*/
657 p_rtg_header_rec.attribute7 IS NULL
658 THEN
659 x_rtg_header_rec.attribute7 :=
660 p_old_rtg_header_rec.attribute7;
661 END IF;
662
663 IF /*p_rtg_header_rec.attribute8 = FND_API.G_MISS_CHAR OR/*Commented condition bug 7581065*/
664 p_rtg_header_rec.attribute8 IS NULL
665 THEN
666 x_rtg_header_rec.attribute8 :=
667 p_old_rtg_header_rec.attribute8;
668 END IF;
669
670 IF /*p_rtg_header_rec.attribute9 = FND_API.G_MISS_CHAR OR/*Commented condition bug 7581065*/
671 p_rtg_header_rec.attribute9 IS NULL
672 THEN
673 x_rtg_header_rec.attribute9 :=
674 p_old_rtg_header_rec.attribute9;
675 END IF;
676
677 IF /*p_rtg_header_rec.attribute10 = FND_API.G_MISS_CHAR OR/*Commented condition bug 7581065*/
678 p_rtg_header_rec.attribute10 IS NULL
679 THEN
680 x_rtg_header_rec.attribute10 :=
681 p_old_rtg_header_rec.attribute10;
682 END IF;
683
684 IF /*p_rtg_header_rec.attribute11 = FND_API.G_MISS_CHAR OR/*Commented condition bug 7581065*/
685 p_rtg_header_rec.attribute11 IS NULL
686 THEN
687 x_rtg_header_rec.attribute11 :=
688 p_old_rtg_header_rec.attribute11;
689 END IF;
690
691 IF /*p_rtg_header_rec.attribute12 = FND_API.G_MISS_CHAR OR/*Commented condition bug 7581065*/
692 p_rtg_header_rec.attribute12 IS NULL
693 THEN
694 x_rtg_header_rec.attribute12 :=
695 p_old_rtg_header_rec.attribute12;
696 END IF;
697
698 IF /*p_rtg_header_rec.attribute13 = FND_API.G_MISS_CHAR OR/*Commented condition bug 7581065*/
699 p_rtg_header_rec.attribute13 IS NULL
700 THEN
701 x_rtg_header_rec.attribute13 :=
702 p_old_rtg_header_rec.attribute13;
703 END IF;
704
705 IF /*p_rtg_header_rec.attribute14 = FND_API.G_MISS_CHAR OR/*Commented condition bug 7581065*/
706 p_rtg_header_rec.attribute14 IS NULL
707 THEN
708 x_rtg_header_rec.attribute14 :=
709 p_old_rtg_header_rec.attribute14;
710 END IF;
711
712 IF /*p_rtg_header_rec.attribute15 = FND_API.G_MISS_CHAR OR/*Commented condition bug 7581065*/
713 p_rtg_header_rec.attribute15 IS NULL
714 THEN
715 x_rtg_header_rec.attribute15 :=
716 p_old_rtg_header_rec.attribute15;
717 END IF;
718 --
719 -- Get the unexposed columns from the database and return
720 -- them as the unexposed columns for the current record.
721 --
722 x_rtg_header_unexp_rec.routing_sequence_id
723 := p_old_rtg_header_unexp_rec.routing_sequence_id;
724
725 IF p_rtg_header_unexp_rec.Common_Assembly_Item_Id = FND_API.G_MISS_NUM
726 OR p_rtg_header_unexp_rec.Common_Assembly_Item_Id IS NULL
727 THEN
728 x_rtg_header_unexp_rec.Common_Assembly_Item_Id
729 := p_old_rtg_header_unexp_rec.Common_Assembly_Item_Id ;
730 END IF ;
734 THEN
731
732 IF p_rtg_header_unexp_rec.Common_Routing_Sequence_Id = FND_API.G_MISS_NUM
733 OR p_rtg_header_unexp_rec.Common_Routing_Sequence_Id IS NULL
735 x_rtg_header_unexp_rec.Common_Routing_Sequence_Id
736 := p_old_rtg_header_unexp_rec.Common_Routing_Sequence_Id ;
737 END IF ;
738
739 IF p_rtg_header_unexp_rec.Line_Id = FND_API.G_MISS_NUM
740 OR p_rtg_header_unexp_rec.Line_Id IS NULL
741 THEN
742
743 x_rtg_header_unexp_rec.Line_Id
744 := p_old_rtg_header_unexp_rec.Line_Id ;
745 END IF ;
746
747
748 --bug:4285921 begins
749 -- Called during Update.
750 -- Take values of completion_subinventory and completion_locator_id
751 -- from input if specified, else from common routing.
752
753 FOR l_CommonRtg_rec IN
754 l_CommonRtg_csr
755 (
756 P_CommRtgSeqId => p_rtg_header_unexp_rec.common_routing_sequence_id,
757 P_OrgId => p_rtg_header_unexp_rec.organization_id,
758 P_Alt => p_rtg_header_rec.alternate_routing_code
759 )
760 LOOP
761 x_rtg_header_rec.completion_subinventory :=
762 NVL(p_rtg_header_rec.completion_subinventory,l_CommonRtg_rec.completion_subinventory);
763
764 IF ( p_rtg_header_rec.Completion_Subinventory IS NOT NULL )
765 AND ( p_rtg_header_rec.Completion_Subinventory <>
766 p_old_rtg_header_rec.Completion_Subinventory )
767 AND
768 (
769 (
770 p_rtg_header_unexp_rec.Completion_Locator_Id IS NOT NULL
771 AND p_old_rtg_header_unexp_rec.Completion_Locator_Id IS NOT NULL
772 )
773 AND
774 (
775 p_rtg_header_unexp_rec.Completion_Locator_Id =
776 p_old_rtg_header_unexp_rec.Completion_Locator_Id
777 OR
778 (
779 p_rtg_header_unexp_rec.Completion_Locator_Id IS NOT NULL
780 AND p_rtg_header_unexp_rec.Completion_Locator_Id = FND_API.G_MISS_NUM
781 )
782 )
783 )
784 THEN
785 x_rtg_header_unexp_rec.Completion_Locator_Id := NULL;
786 ELSIF
787 (
788 p_rtg_header_rec.Completion_Subinventory IS NOT NULL
789 AND p_rtg_header_rec.Completion_Subinventory <>
790 p_old_rtg_header_rec.Completion_Subinventory
791 AND p_rtg_header_unexp_rec.Completion_Locator_Id = FND_API.G_MISS_NUM
792 )
793 THEN
794 x_rtg_header_unexp_rec.Completion_Locator_Id := NULL;
795 ELSIF
796 (
797 p_rtg_header_rec.Completion_Subinventory IS NOT NULL
798 AND p_rtg_header_rec.Completion_Subinventory =
799 p_old_rtg_header_rec.Completion_Subinventory
800 AND p_rtg_header_unexp_rec.Completion_Locator_Id IS NULL
801 )
802 THEN
803 x_rtg_header_unexp_rec.Completion_Locator_Id :=
804 NVL(p_rtg_header_unexp_rec.Completion_Locator_Id,l_CommonRtg_rec.completion_locator_id);
805 ELSIF p_rtg_header_rec.Completion_Location_Name IS NULL
806 THEN
807 x_rtg_header_unexp_rec.Completion_Locator_Id :=
808 NVL(p_rtg_header_unexp_rec.Completion_Locator_Id,l_CommonRtg_rec.completion_locator_id);
809 END IF;
810 END LOOP; -- common routing
811 --bug:4285921 ends
812 l_rtg_header_rec := x_rtg_header_rec; /* bug 7581065*/
813 /* bug 7581065 Assign NULL on DFF if the values are MISSING */
814 Get_Flex_Rtg_Header( p_rtg_header_rec => l_rtg_header_rec
815 , x_rtg_header_rec => x_rtg_header_rec
816 );
817 /* end bug 7581065*/
818
819 END Populate_Null_Columns;
820
821 END BOM_Default_Rtg_Header;