DBA Data[Home] [Help]

PACKAGE BODY: APPS.ENG_DEFAULT_ECO

Source


1 PACKAGE BODY ENG_Default_Eco AS
2 /* $Header: ENGDECOB.pls 120.0.12000000.4 2007/10/12 13:04:05 jiabraha ship $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'ENG_Default_Eco';
7 
8 --  Package global used within the package.
9 
10 g_ECO_rec                     ENG_Eco_PUB.Eco_Rec_Type;
11 g_Unexp_ECO_Rec		      ENG_Eco_PUB.Eco_unexposed_Rec_Type;
12 
13 --  Get functions.
14 
15 FUNCTION Get_Responsible_Org
16 RETURN NUMBER
17 IS
18 l_profile_value NUMBER := NULL;
19 BEGIN
20 
21     IF fnd_profile.defined('ENG:ECO_DEPARTMENT')
22     THEN
23     	l_profile_value := fnd_profile.value('ENG:ECO_DEPARTMENT');
24     END IF;
25 
26     RETURN l_profile_value;
27 
28 END Get_Responsible_Org;
29 
30 FUNCTION Get_Change_Id
31 RETURN NUMBER
32 IS
33 l_change_id NUMBER := NULL;
34 BEGIN
35 
36     SELECT ENG_ENGINEERING_CHANGES_S.NEXTVAL
37     INTO l_change_id
38     FROM DUAL;
39 
40     RETURN l_change_id;
41 
42     EXCEPTION
43 
44         WHEN OTHERS THEN
45                 RETURN NULL;
46 
47 END Get_Change_Id;
48 
49 
50 PROCEDURE Get_Flex_Eco
51 ( p_ECO_rec		IN  ENG_ECO_PUB.ECO_Rec_Type
52 , x_ECO_rec 		OUT NOCOPY ENG_ECO_PUB.ECO_Rec_Type
53 )
54 IS
55 l_ECO_rec		ENG_Eco_PUB.Eco_Rec_Type := p_ECO_rec;
56 BEGIN
57 
58     --  In the future call Flex APIs for defaults
59 
60     IF l_ECO_rec.attribute7 = FND_API.G_MISS_CHAR THEN
61         l_ECO_rec.attribute7           := NULL;
62     END IF;
63 
64     IF l_ECO_rec.attribute8 = FND_API.G_MISS_CHAR THEN
65         l_ECO_rec.attribute8           := NULL;
66     END IF;
67 
68     IF l_ECO_rec.attribute9 = FND_API.G_MISS_CHAR THEN
69         l_ECO_rec.attribute9           := NULL;
70     END IF;
71 
72     IF l_ECO_rec.attribute10 = FND_API.G_MISS_CHAR THEN
73         l_ECO_rec.attribute10          := NULL;
74     END IF;
75 
76     IF l_ECO_rec.attribute11 = FND_API.G_MISS_CHAR THEN
77         l_ECO_rec.attribute11          := NULL;
78     END IF;
79 
80     IF l_ECO_rec.attribute12 = FND_API.G_MISS_CHAR THEN
81         l_ECO_rec.attribute12          := NULL;
82     END IF;
83 
84     IF l_ECO_rec.attribute13 = FND_API.G_MISS_CHAR THEN
85         l_ECO_rec.attribute13          := NULL;
86     END IF;
87 
88     IF l_ECO_rec.attribute14 = FND_API.G_MISS_CHAR THEN
89         l_ECO_rec.attribute14          := NULL;
90     END IF;
91 
92     IF l_ECO_rec.attribute15 = FND_API.G_MISS_CHAR THEN
93         l_ECO_rec.attribute15          := NULL;
94     END IF;
95 
96     IF l_ECO_rec.attribute_category = FND_API.G_MISS_CHAR THEN
97         l_ECO_rec.attribute_category   := NULL;
98     END IF;
99 
100     IF l_ECO_rec.attribute1 = FND_API.G_MISS_CHAR THEN
101         l_ECO_rec.attribute1           := NULL;
102     END IF;
103 
104     IF l_ECO_rec.attribute2 = FND_API.G_MISS_CHAR THEN
105         l_ECO_rec.attribute2           := NULL;
106     END IF;
107 
108     IF l_ECO_rec.attribute3 = FND_API.G_MISS_CHAR THEN
109         l_ECO_rec.attribute3           := NULL;
110     END IF;
111 
112     IF l_ECO_rec.attribute4 = FND_API.G_MISS_CHAR THEN
113         l_ECO_rec.attribute4           := NULL;
114     END IF;
115 
116     IF l_ECO_rec.attribute5 = FND_API.G_MISS_CHAR THEN
117         l_ECO_rec.attribute5           := NULL;
118     END IF;
119 
120     IF l_ECO_rec.attribute6 = FND_API.G_MISS_CHAR THEN
121         l_ECO_rec.attribute6           := NULL;
122     END IF;
123 
124     x_ECO_rec := l_ECO_rec;
125 
126 END Get_Flex_Eco;
127 
128 --  Procedure Attribute_Defaulting
129 
130 PROCEDURE Attribute_Defaulting
131 (   p_ECO_rec                       IN  ENG_Eco_PUB.Eco_Rec_Type
132 ,   p_Unexp_ECO_rec		    IN  ENG_Eco_PUB.Eco_unexposed_Rec_Type
133 ,   x_ECO_rec                       IN OUT NOCOPY ENG_Eco_PUB.Eco_Rec_Type
134 ,   x_Unexp_ECO_rec		    IN OUT NOCOPY ENG_Eco_PUB.Eco_unexposed_Rec_Type
135 ,   x_return_status		    OUT NOCOPY VARCHAR2
136 ,   x_Mesg_Token_Tbl		    OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
137 )
138 IS
139 l_process_name		VARCHAR2(30) := NULL;
140 l_err_text		VARCHAR2(240) := NULL;
141 l_Token_Tbl		Error_Handler.Token_Tbl_Type;
142 l_Mesg_Token_Tbl	Error_Handler.Mesg_Token_Tbl_Type;
143 
144 cursor status (p_change_order_type_id NUMBER
145 		    ) is
146        SELECT status_code ,status_type
147        from  eng_change_statuses_vl
148        where status_code in
149        (select status_code from  eng_lifecycle_statuses
150                         where entity_name='ENG_CHANGE_TYPE'
151                         and entity_id1 = p_change_order_type_id
152                         and sequence_number =
153                            (select min(sequence_number) from eng_lifecycle_statuses
154                             where entity_name='ENG_CHANGE_TYPE'
155                             and entity_id1 = p_change_order_type_id)
156        );
157 
158 
159 l_status status%ROWTYPE;
160 
161 BEGIN
162 
163     --  Initialize g_ECO_rec
164     g_ECO_rec := p_ECO_rec;
165     g_Unexp_ECO_rec := p_Unexp_ECO_rec;
166 
167     --  Default missing attributes.
168 
169     IF g_Unexp_ECO_rec.responsible_org_id IS NULL THEN
170 
171         g_Unexp_ECO_rec.responsible_org_id := Get_Responsible_Org;
172 
173     END IF;
174 
175 /*    IF g_Unexp_ECO_rec.status_type IS NULL THEN
176 
177     	-- Default to 'Open'
178 
179         g_Unexp_ECO_rec.status_type := 1;
180 
181     END IF; */
182 
183     --11.5.10
184     IF g_ECO_rec.plm_or_erp_change='PLM' and g_Unexp_ECO_rec.status_code IS NULL THEN
185 
186        OPEN status(g_Unexp_ECO_rec.Change_Order_Type_Id);
187 	FETCH status INTO l_status;
188 	IF status%FOUND THEN
189   	   g_Unexp_ECO_rec.status_type := l_status.status_type;
190 	   g_Unexp_ECO_rec.status_code := l_status.status_code;
191 	ELSE
192   	   g_Unexp_ECO_rec.status_type := 1;
193 	   g_Unexp_ECO_rec.status_code := 1;
194 	END IF;
195 	CLOSE status;
196    ELSIF g_Unexp_ECO_rec.status_type IS NULL THEN
197         g_Unexp_ECO_rec.status_type := 1;
198         g_Unexp_ECO_rec.status_code := 1;
199     ELSIF g_Unexp_ECO_rec.status_code IS NULL -- Added for bug 3539102
200     THEN
201     	g_Unexp_ECO_rec.status_code := g_Unexp_ECO_rec.status_type;
202     END IF;
203 
204     --changed from g_Unexp_ECO_rec.initiation_date := SYSDATE to the follwing bug no:2738054
205 
206      g_Unexp_ECO_rec.initiation_date := nvl(g_Unexp_ECO_rec.initiation_date,SYSDATE);
207 
208 /*    IF g_Unexp_ECO_rec.cancellation_date IS NULL  AND
209        g_ECO_rec.status_type = 5
210     THEN
211     	g_Unexp_ECO_rec.cancellation_date := SYSDATE;
212     END IF;
213 */
214 
215 /*    IF g_unexp_eco_rec.project_id = FND_API.G_MISS_NUM
216     THEN
217 	g_unexp_eco_rec.project_id := NULL;
218     END IF;
219 
220     IF g_unexp_eco_rec.task_id = FND_API.G_MISS_NUM
221     THEN
222         g_unexp_eco_rec.task_id := NULL;
223     END IF;
224 */
225     /* Added by MK on 11/29/00 Bug #1508078
226     -- Defaulting hierarchy_flag and organization_hierarchy
227     --
228     IF g_ECO_rec.hierarchy_flag IS NULL OR
229        g_ECO_rec.hierarchy_flag = FND_API.G_MISS_NUM
230     THEN
231        g_ECO_rec.hierarchy_flag := 2 ; -- 2 : No
232     END IF;
233     */
234 
235     IF g_ECO_rec.organization_hierarchy = FND_API.G_MISS_CHAR THEN
236        g_ECO_rec.organization_hierarchy :=  NULL ;
237     END IF;
238 
239 
240     -- Eng Change
241     IF  g_unexp_eco_rec.change_mgmt_type_code = FND_API.G_MISS_CHAR
242     OR  g_unexp_eco_rec.change_mgmt_type_code IS NULL
243     THEN
244         g_unexp_eco_rec.change_mgmt_type_code := Eng_Globals.G_CHANGE_ORDER ;
245     END IF;
246 
247     IF g_unexp_eco_rec.assignee_id = FND_API.G_MISS_NUM
248     THEN
249         g_unexp_eco_rec.assignee_id := NULL;
250     END IF;
251 
252     IF  g_unexp_eco_rec.source_type_code = FND_API.G_MISS_CHAR
253     OR  g_unexp_eco_rec.source_type_code IS NULL
254     THEN
255         g_unexp_eco_rec.source_type_code := NULL ;
256     END IF;
257 
258     IF g_unexp_eco_rec.source_id = FND_API.G_MISS_NUM
259     THEN
260         g_unexp_eco_rec.source_id := NULL;
261     END IF;
262 
263     IF g_ECO_rec.internal_use_only IS NULL OR
264        g_ECO_rec.internal_use_only = FND_API.G_MISS_NUM
265     THEN
266        g_ECO_rec.internal_use_only := 1 ; -- 1 : Yes
267     END IF;
268 
269     IF g_ECO_rec.need_by_date = FND_API.G_MISS_DATE THEN
270        g_ECO_rec.need_by_date :=  NULL ;
271     END IF;
272 
273     IF  g_ECO_rec.effort = FND_API.G_MISS_NUM
274     THEN
275        g_ECO_rec.effort := NULL ;
276     END IF;
277 
278     g_unexp_eco_rec.change_id := Get_Change_Id;
279 
280     --  Done defaulting attributes
281 
282     x_ECO_rec := g_ECO_rec;
283     x_Unexp_ECO_rec := g_Unexp_ECO_Rec;
284     x_return_status := 'S';
285 
286 END Attribute_Defaulting;
287 
288 --  Procedure Entity_Defaulting
289 
290 PROCEDURE Entity_Defaulting
291 (   p_ECO_rec                       IN  ENG_Eco_PUB.Eco_Rec_Type
292 ,   p_Unexp_ECO_rec		    IN  ENG_Eco_PUB.Eco_unexposed_Rec_Type
293 ,   p_Old_ECO_rec	 	    IN  ENG_Eco_PUB.Eco_Rec_Type
294 ,   p_Old_Unexp_ECO_rec		    IN  ENG_Eco_PUB.Eco_unexposed_Rec_Type
295 ,   p_control_rec                   IN  BOM_BO_PUB.Control_Rec_Type :=
296                                         BOM_BO_PUB.G_DEFAULT_CONTROL_REC
297 ,   x_ECO_rec                       IN OUT NOCOPY ENG_Eco_PUB.Eco_Rec_Type
298 ,   x_Unexp_ECO_rec		    IN OUT NOCOPY ENG_Eco_PUB.Eco_unexposed_Rec_Type
299 ,   x_return_status		    OUT NOCOPY VARCHAR2
300 ,   x_Mesg_Token_Tbl		    OUT NOCOPY Error_Handler.Mesg_Token_Tbl_Type
301 )
302 IS
303 l_process_name		VARCHAR2(30) := NULL;
304 l_ECO_rec		ENG_Eco_PUB.Eco_Rec_Type := p_ECO_rec;
305 l_Unexp_ECO_rec		ENG_Eco_PUB.Eco_unexposed_Rec_Type := p_Unexp_ECO_rec;
306 l_processed		BOOLEAN := FALSE;
307 l_Token_Tbl		Error_Handler.Token_Tbl_Type;
308 l_Mesg_Token_Tbl	Error_Handler.Mesg_Token_Tbl_Type;
309 l_err_text		VARCHAR2(2000) := NULL;
310 
311 
312 -- Added for bug 3591945
313 l_sql_stmt		VARCHAR2(2000);
314 l_default_hierarchy_flag NUMBER;
315 
316 /* Cursor to fetch the default hierarchy set for the change header type */
317 CURSOR c_change_default_hierarchy (
318 		cp_change_type_id IN NUMBER,
319 		cp_organization_id IN NUMBER
320 		) IS
321 SELECT pos.organization_structure_id, pos.NAME
322 FROM per_organization_structures pos
323 WHERE pos.organization_structure_id in (SELECT hierarchy_id
324 		FROM ENG_TYPE_ORG_HIERARCHIES
325 		WHERE change_type_id = cp_change_type_id
326 		AND organization_id = cp_organization_id
327 		AND default_hierarchy_flag = 'Y');
328 BEGIN
329 
330     l_token_tbl(1).token_name := 'ECO_NAME';
331     l_token_tbl(1).token_value := p_ECO_Rec.ECO_Name;
332 
333     x_return_status := FND_API.G_RET_STS_SUCCESS;
334 
335     IF l_ECO_rec.priority_code = FND_API.G_MISS_CHAR
336     THEN
337     	l_ECO_rec.priority_code := NULL;
338     END IF;
339 
340     IF l_ECO_rec.approval_list_name = FND_API.G_MISS_CHAR
341     THEN
342     	l_ECO_rec.approval_list_name := NULL;
343     END IF;
344 
345     IF l_ECO_rec.ECO_department_name = FND_API.G_MISS_CHAR
346     THEN
347     	l_ECO_rec.ECO_Department_name := NULL;
348     END IF;
349 
350     IF l_Unexp_ECO_rec.status_type = FND_API.G_MISS_NUM
351     THEN
352     	l_Unexp_ECO_rec.status_type := NULL;
353     END IF;
354 
355     IF l_Unexp_ECO_rec.approval_status_type = FND_API.G_MISS_NUM
356     THEN
357     	l_Unexp_ECO_rec.approval_status_type := NULL;
358     END IF;
359 
360     IF l_ECO_rec.reason_code = FND_API.G_MISS_CHAR
361     THEN
362     	l_ECO_rec.reason_code := NULL;
363     END IF;
364 
365     IF l_ECO_rec.eng_implementation_cost = FND_API.G_MISS_NUM
366     THEN
367     	l_ECO_rec.eng_implementation_cost := NULL;
368     END IF;
369 
370     IF l_ECO_rec.mfg_implementation_cost = FND_API.G_MISS_NUM
371     THEN
372     	l_ECO_rec.mfg_implementation_cost := NULL;
373     END IF;
374 
375     IF l_ECO_rec.cancellation_comments = FND_API.G_MISS_CHAR
376     THEN
377     	l_ECO_rec.cancellation_comments := NULL;
378     END IF;
379 
380     IF l_ECO_rec.requestor = FND_API.G_MISS_CHAR
381     THEN
382     	l_ECO_rec.requestor := NULL;
383     END IF;
384 
385     IF l_ECO_rec.description = FND_API.G_MISS_CHAR
386     THEN
387     	l_ECO_rec.description := NULL;
388     END IF;
389 
390     /* Added by MK on 11/29/00 Bug #1508078
391     -- Entity Defaulting
392     -- Set null to unexposed data columns
393     --
394     */
395     IF l_Unexp_ECO_rec.initiation_date = FND_API.G_MISS_DATE
396     THEN
397         l_Unexp_ECO_rec.initiation_date     := NULL ;
398     END IF ;
399 
400     IF l_Unexp_ECO_rec.implementation_date = FND_API.G_MISS_DATE
401     THEN
402         l_Unexp_ECO_rec.implementation_date := NULL ;
403     END IF ;
404 
405     IF  l_Unexp_ECO_rec.cancellation_date = FND_API.G_MISS_DATE
406     THEN
407         l_Unexp_ECO_rec.cancellation_date   := NULL ;
408     END IF ;
409 
410     IF  l_ECO_rec.approval_date = FND_API.G_MISS_DATE
411     THEN
412         l_ECO_rec.approval_date       := NULL ;
413     END IF ;
414 
415     IF  l_ECO_rec.approval_request_date = FND_API.G_MISS_DATE
416     THEN
417         l_ECO_rec.approval_request_date := NULL ;
418     END IF ;
419 
420     -- Eng Change
421     IF l_ECO_rec.change_management_type = FND_API.G_MISS_CHAR
422     THEN
423         l_ECO_rec.change_management_type := NULL;
424     END IF;
425 
426     -- Eng Change
427     IF l_Unexp_ECO_rec.change_mgmt_type_code = FND_API.G_MISS_CHAR
428     THEN
429         l_Unexp_ECO_rec.change_mgmt_type_code := NULL;
430     END IF;
431 
432     -- Eng Change
433     IF l_ECO_rec.assignee = FND_API.G_MISS_CHAR
434     THEN
435         l_ECO_rec.assignee := NULL;
436     END IF;
437 
438 /*    -- Eng Change
439     IF l_ECO_rec.assignee_company_name = FND_API.G_MISS_CHAR
440     THEN
441         l_ECO_rec.assignee := NULL;
442     END IF;
443 */
444     -- Eng Change
445     IF l_Unexp_ECO_rec.assignee_id = FND_API.G_MISS_NUM
446     THEN
447         l_Unexp_ECO_rec.assignee_id := NULL;
448     END IF;
449 
450     IF l_ECO_rec.source_type = FND_API.G_MISS_CHAR
451     THEN
452         l_ECO_rec.source_type := NULL;
453     END IF;
454 
455     IF  l_Unexp_ECO_rec.source_type_code = FND_API.G_MISS_CHAR
456     THEN
457         l_Unexp_ECO_rec.source_type_code := NULL ;
458     END IF;
459 
460     IF l_ECO_rec.source_name = FND_API.G_MISS_CHAR
461     THEN
462         l_ECO_rec.source_name := NULL;
463     END IF;
464 
465     IF g_unexp_eco_rec.source_id = FND_API.G_MISS_NUM
466     THEN
467         g_unexp_eco_rec.source_id := NULL;
468     END IF;
469 
470     IF  g_ECO_rec.effort = FND_API.G_MISS_NUM
471     THEN
472        g_ECO_rec.effort := NULL ;
473     END IF;
474 
475     IF l_ECO_rec.internal_use_only IS NULL OR
476        l_ECO_rec.internal_use_only = FND_API.G_MISS_NUM
477     THEN
478        l_ECO_rec.internal_use_only := 1 ; -- 1 : Yes
479     END IF;
480 
481     IF l_ECO_rec.need_by_date = FND_API.G_MISS_DATE THEN
482        l_ECO_rec.need_by_date :=  NULL ;
483     END IF;
484 
485 
486     g_ECO_rec := l_ECO_rec;
487     Get_Flex_Eco
488     	 ( p_ECO_rec => g_ECO_rec
489     	 , x_ECO_rec => l_ECO_rec
490     	 );
491 
492         -- Initialize Workflow Process
493 
494     ENG_Globals.Init_Process_Name
495         ( g_Unexp_ECO_rec.change_order_type_id
496         , g_ECO_rec.priority_code
497         , g_Unexp_ECO_rec.organization_id);
498 
499     /*********************************************************************
500       -- If caller is the form, then perform this defaulting upon request.
501       -- If caller is the open interface, perform it for UPDATEs
502       -- Added by AS on 10/07/99 to facilitate ECO form re-architecture.
503     **********************************************************************/
504 
505     IF (p_control_rec.caller_type = 'FORM' AND
506 	NVL(p_control_rec.validation_controller, FND_API.G_MISS_CHAR) =
507 			'PROCESS')
508        OR
509        l_ECO_rec.transaction_type = ENG_Globals.G_OPR_UPDATE
510     THEN
511 	l_processed := FALSE;
512 
513 	IF p_control_rec.caller_type = 'OI'
514 	THEN
515 		ENG_Globals.Check_Approved_For_Process
516 		( p_change_notice => l_ECO_rec.ECO_name
517 		, p_organization_id => l_Unexp_ECO_rec.organization_id
518 		, x_processed => l_processed
519 		, x_err_text => l_err_text
520 		);
521 	ELSIF (p_control_rec.caller_type = 'FORM' AND
522                NVL(p_control_rec.validation_controller, FND_API.G_MISS_CHAR) =
523                         'PROCESS' AND
524                l_Unexp_ECO_rec.approval_status_type not in (1,3))
525 	THEN
526 		l_processed := TRUE;
527 	END IF;
528 
529 	IF l_processed
530     	THEN
531         	-- Issue warning if calling thru open interface. If calling
532 		-- thru form, user will have been asked for confirmation already
533 
534 		IF p_control_rec.caller_type = 'OI' AND
535 		   FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_SUCCESS)
536         	THEN
537         		Error_Handler.Add_Error_Token
538 	   			( p_Message_Name => 'ENG_APPROVE_WARNING'
539 	   			, p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
540 	   			, x_Mesg_Token_Tbl => l_Mesg_Token_Tbl
541 	   			, p_Token_Tbl => l_Token_Tbl
542 			        , p_message_type       => 'W'
543 	   			);
544         	END IF;
545 
546         	l_Unexp_ECO_rec.approval_status_type := 1;	-- Not Submitted For Approval
547         	l_ECO_rec.approval_request_date := NULL;
548         	l_ECO_rec.approval_date := NULL;
549 
550         	-- Set all "Scheduled" revised items to "Open"
551 
552 	        BEGIN
553 		        UPDATE eng_revised_items
554         		   SET 	status_type = 1,
555         			last_update_date = SYSDATE,
556 	        		last_updated_by = 'XXX',
557 		                last_update_login = 'XXX'
558 		         WHERE organization_id = p_Unexp_ECO_rec.organization_id
559         		   AND change_notice = p_ECO_rec.ECO_name
560 		           AND status_type = 4;
561 		EXCEPTION
562 			WHEN NO_DATA_FOUND THEN
563 				NULL;
564 			WHEN OTHERS THEN
565 				l_err_text := G_PKG_NAME || ' : (Entity Defaulting) '
566 						|| substrb(SQLERRM,1,200);
567             			Error_Handler.Add_Error_Token
568 	   				( p_Message_Text => l_err_text
569 	   				, p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
570 	   				, x_Mesg_Token_Tbl => x_Mesg_Token_Tbl
571 	   				);
572 		END;
573     	END IF;
574     END IF;
575 
576     IF l_Unexp_ECO_rec.cancellation_date IS NULL  AND
577        l_Unexp_ECO_rec.status_type = 5
578     THEN
579         l_Unexp_ECO_rec.cancellation_date := SYSDATE;
580     END IF;
581 
582     l_processed := FALSE;
583 
584     IF l_ECO_rec.transaction_type = ENG_GLOBALS.G_OPR_CREATE OR
585     (l_ECO_rec.priority_code <>
586     p_old_ECO_rec.priority_code OR
587     (l_ECO_rec.priority_code IS NULL AND
588     p_old_ECO_rec.priority_code IS NOT NULL) OR
589     (p_old_ECO_rec.priority_code IS NULL AND
590     l_ECO_rec.priority_code IS NOT NULL))
591     THEN
592 
593         -- If process found, null out Approval List and set other approval details accordingly.
594         -- Also issue warning.
595 
596         ENG_Globals.Init_Process_Name
597         	( p_change_order_type_id => l_Unexp_ECO_rec.change_order_type_id
598 		, p_priority_code	=> l_ECO_rec.priority_code
599 		, p_organization_id => l_Unexp_ECO_rec.organization_id
600 		);
601 
602     	--  Get new Workflow Process name
603 
604     	l_process_name := ENG_Globals.Get_Process_Name;
605 
606 	IF l_process_name IS NOT NULL
607 	THEN
608 	    l_Unexp_ECO_rec.approval_list_id := NULL;
609 	    l_ECO_rec.approval_request_date := NULL;
610 	    l_ECO_rec.approval_date := NULL;
611 	    l_Unexp_ECO_rec.approval_status_type := 1;	-- Not Submitted for Approval
612 
613 	    IF p_control_rec.caller_type = 'OI' AND
614 	       FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_SUCCESS)
615             THEN
616         	Error_Handler.Add_Error_Token
617 	   			( p_Message_Name => 'ENG_APPROV_DETAILS_CHANGED'
618 	   			, p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
619 	   			, x_Mesg_Token_Tbl => l_Mesg_Token_Tbl
620 	   			, p_Token_Tbl => l_Token_Tbl
621 				, p_message_type       => 'W'
622 	   			);
623 	    END IF;
624         END IF;
625         l_processed := TRUE;
626     END IF;
627 
628     IF l_ECO_rec.transaction_type = ENG_GLOBALS.G_OPR_CREATE OR
629     (l_Unexp_ECO_rec.change_order_type_id <>
630     p_old_Unexp_ECO_rec.change_order_type_id OR
631     (l_Unexp_ECO_rec.change_order_type_id IS NULL AND
632     p_old_Unexp_ECO_rec.change_order_type_id IS NOT NULL))
633     THEN
634 	IF l_processed
635 	THEN
636 	    NULL;
637 	ELSE
638 
639     	    --  Get new Workflow Process name
640 
641             ENG_Globals.Init_Process_Name
642             	( p_change_order_type_id => l_Unexp_ECO_rec.change_order_type_id
643 	  	, p_priority_code	=> l_ECO_rec.priority_code
644 		, p_organization_id => l_Unexp_ECO_rec.organization_id
645 		);
646 
647     	    l_process_name := ENG_Globals.Get_Process_Name;
648 
649             -- If process found, null out Approval List and set other approval details accordingly.
650             -- Also issue warning.
651 
652 	    IF l_process_name IS NOT NULL
653 	    THEN
654 	    	l_Unexp_ECO_rec.approval_list_id := NULL;
655 	    	l_ECO_rec.approval_request_date := NULL;
656 	    	l_ECO_rec.approval_date := NULL;
657 	    	l_Unexp_ECO_rec.approval_status_type := 1;	-- Not Submitted for Approval
658 
659 	    	IF p_control_rec.caller_type = 'OI' AND
660 		   FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_SUCCESS)
661             	THEN
662         	Error_Handler.Add_Error_Token
663 	   			( p_Message_Name => 'ENG_APPROV_DETAILS_CHANGED'
664 	   			, p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
665 	   			, x_Mesg_Token_Tbl => l_Mesg_Token_Tbl
666 	   			, p_Token_Tbl => l_Token_Tbl
667 				, p_message_type       => 'W'
668 	   			);
669 	    	END IF;
670 	    END IF;
671         END IF;
672     END IF;
673 
674   IF l_ECO_rec.transaction_type = ENG_GLOBALS.G_OPR_CREATE OR
675     (l_Unexp_ECO_rec.approval_list_id <>
676     p_old_Unexp_ECO_rec.approval_list_id OR
677     (l_Unexp_ECO_rec.approval_list_id IS NULL AND
678     p_old_Unexp_ECO_rec.approval_list_id IS NOT NULL) OR
679     (p_old_Unexp_ECO_rec.approval_list_id IS NULL AND
680     l_Unexp_ECO_rec.approval_list_id IS NOT NULL))
681     THEN
682 
683  	-- No approval list or workflow process
684 
685 	IF l_Unexp_ECO_rec.approval_status_type IS NULL AND
686 	   l_process_name IS NULL AND
687 	   l_Unexp_ECO_rec.approval_list_id IS NULL
688 	THEN
689  	  -- Changed to Not Submitted For Approval ,as a part of Approval Status Changes
690 	  /* Fix for bug 6413814 - Approval Status should be
691                            - 'Not Submitted For Approval' for PLM COs
692                            - 'Approved' for ERP ECOs
693              Added an If-Else condition to check for plm_or_erp_change column.
694           */
695           If nvl(l_ECO_rec.plm_or_erp_change,'PLM') = 'PLM' Then
696              l_Unexp_ECO_rec.approval_status_type := 1;
697              l_ECO_rec.approval_date := NULL;
698           Else  /* for ERP Ecos*/
699 	     l_Unexp_ECO_rec.approval_status_type := 5;  --Bug 5904664
700 	      l_ECO_rec.approval_date := SYSDATE;    	   --Bug 5904664
701 	  END IF;
702      END IF;
703 
704 
705  	-- Approval list or (workflow process and not(Approval Requested))
706 
707 	IF l_Unexp_ECO_rec.approval_status_type IS NULL AND
708 	   ((l_process_name IS NOT NULL AND
709 	     NVL(p_old_Unexp_ECO_rec.approval_status_type, 0) <> 3)
710 	    OR
711 	    l_Unexp_ECO_rec.approval_list_id IS NOT NULL)
712 	THEN
713 		l_Unexp_ECO_rec.approval_status_type := 1;
714 		l_ECO_rec.approval_date := NULL;
715 		l_ECO_rec.approval_request_date := NULL;
716         END IF;
717 
718     END IF;
719 
720     IF l_ECO_rec.transaction_type = ENG_GLOBALS.G_OPR_CREATE OR
721     (l_Unexp_ECO_rec.approval_status_type <>
722     p_old_Unexp_ECO_rec.approval_status_type OR
723     (l_Unexp_ECO_rec.approval_status_type IS NULL AND
724     p_old_Unexp_ECO_rec.approval_status_type IS NOT NULL) OR
725     (p_old_Unexp_ECO_rec.approval_status_type IS NULL AND
726     l_Unexp_ECO_rec.approval_status_type IS NOT NULL))
727     THEN
728 
729     	-- No Workflow Process or approval list id
730 
731     	IF l_process_name IS NULL AND
732     	   l_Unexp_ECO_rec.approval_list_id IS NULL AND
733     	   l_Unexp_ECO_rec.approval_status_type IS NULL
734     	THEN
735 	-- Changed to Not Submitted For Approval ,as a part of Approval Status Changes
736 	/* Fix for bug 6413814 - Approval Status should be
737                            - 'Not Submitted For Approval' for PLM COs
738                            - 'Approved' for ERP ECOs
739             Added an If-Else condition to check for plm_or_erp_change column.
740         */
741 
742             If nvl(l_ECO_rec.plm_or_erp_change,'PLM') = 'PLM' Then
743               l_Unexp_ECO_rec.approval_status_type := 1;
744               l_ECO_rec.approval_date := NULL;
745             Else  /* for ERP Ecos*/
746 	      l_Unexp_ECO_rec.approval_status_type := 5;    	  --Bug 5904664
747     	      l_ECO_rec.approval_date := SYSDATE;			  --Bug 5904664
748             END IF;
749     	END IF;
750 
751     	-- Approval requested
752 
753     	IF l_Unexp_ECO_rec.approval_status_type = 3
754     	THEN
755     		l_ECO_rec.approval_request_date := SYSDATE;
756     		l_ECO_rec.approval_date := NULL;
757     	END IF;
758 
759     	-- Approved
760 
761     	IF l_Unexp_ECO_rec.approval_status_type = 5
762     	THEN
763     		l_ECO_rec.approval_date := SYSDATE;
764     	ELSE
765     		l_ECO_rec.approval_date := NULL;
766     	END IF;
767 
768     	-- Not Submitted for Approval or Ready to Approve
769 
770     	IF l_Unexp_ECO_rec.approval_status_type IN (1,2)
771     	THEN
772     		l_ECO_rec.approval_request_date := NULL;
773     	END IF;
774 
775     END IF;
776 
777 
778     /* Added by MK on 11/29/00 Bug #1508078
779     -- Entity Defaulting hierarchy_flag and organization_hierarchy
780     --
781     IF l_ECO_rec.hierarchy_flag IS NULL OR
782        l_ECO_rec.hierarchy_flag = FND_API.G_MISS_NUM
783     THEN
784            l_ECO_rec.hierarchy_flag := 2 ; -- 2 : No
785     END IF ;
786 
787     IF l_ECO_rec.hierarchy_flag <> 1
788     THEN
789            l_ECO_rec.organization_hierarchy := NULL ;
790     END IF ;
791     */
792 
793     IF l_ECO_rec.organization_hierarchy = FND_API.G_MISS_CHAR
794     THEN
795            l_ECO_rec.organization_hierarchy := NULL ;
796     END IF ;
797 
798     -- Changes for bug 3591945
799     -- Set the default hierarchy defined at the change type, if any.
800 
801     IF l_ECO_rec.organization_hierarchy IS NULL
802        AND l_ECO_rec.plm_or_erp_change = 'PLM'
803        AND l_ECO_rec.transaction_type = ENG_GLOBALS.G_OPR_CREATE
804     THEN
805     	l_sql_stmt := 'SELECT 1
806 			FROM AK_CUSTOM_REGION_ITEMS AK_ITEMS, ENG_ATTRIBUTES_SECTIONS_TL ENG_ATTRIBUTES,
807 			     ENG_ATTRIBUTES_SECTIONS_B ENG_ATTRIBUTES_B, EGO_CUSTOMIZATION_EXT  ATTRIBUTE_EXT
808 			WHERE
809 			     AK_ITEMS.ATTRIBUTE_CODE = ENG_ATTRIBUTES.ATTRIBUTE_SECTION_CODE
810 			     AND  ENG_ATTRIBUTES_B.ATTRIBUTE_SECTION_CODE = ENG_ATTRIBUTES.ATTRIBUTE_SECTION_CODE
811 			     AND ENG_ATTRIBUTES_B.ATTRIBUTE_SECTION_FLAG= ''A''
812 			     AND AK_ITEMS.PROPERTY_NAME= ''DISPLAY_SEQUENCE''
813 			     AND AK_ITEMS.CUSTOMIZATION_CODE=ATTRIBUTE_EXT.CUSTOMIZATION_CODE
814 			     AND ATTRIBUTE_EXT.CLASSIFICATION1 =:1
815 			     AND ATTRIBUTE_EXT.CLASSIFICATION2 =  :2
816 			     AND ATTRIBUTE_EXT.REGION_CODE = ''ENG_ADMIN_CONFIGURATIONS''
817 			     AND ATTRIBUTE_EXT.REGION_APPLICATION_ID = ''703''	 AND ENG_ATTRIBUTES.language = USERENV(''lang'')
818 			     AND AK_ITEMS.ATTRIBUTE_CODE =  ''ORGANIZATION_HIERARCHY''	';
819 	BEGIN
820 		l_default_hierarchy_flag := 2;
821 		EXECUTE IMMEDIATE l_sql_stmt INTO l_default_hierarchy_flag USING l_Unexp_ECO_rec.Change_Mgmt_Type_Code, l_Unexp_ECO_rec.Change_Order_Type_Id;
822 	EXCEPTION
823 	WHEN OTHERS THEN
824 		l_default_hierarchy_flag := 2;
825 	END;
826 	IF (l_default_hierarchy_flag = 1)
827 	THEN
828 		OPEN c_change_default_hierarchy(l_Unexp_ECO_rec.Change_Order_Type_Id, l_Unexp_ECO_rec.Organization_Id);
829 		FETCH c_change_default_hierarchy INTO l_Unexp_ECO_rec.Hierarchy_Id, l_ECO_rec.organization_hierarchy;
830 		CLOSE c_change_default_hierarchy;
831 	END IF;
832     END IF;
833     -- End changes for bug 3591945
834    -- Load out record
835 
836    x_ECO_rec := l_ECO_rec;
837    x_Unexp_ECO_rec := l_Unexp_ECO_rec;
838    x_Mesg_Token_Tbl := l_Mesg_Token_Tbl;
839 END Entity_Defaulting;
840 
841 --  Procedure Populate_NULL_Columns
842 
843 PROCEDURE Populate_NULL_Columns
844 (   p_ECO_rec                       IN  ENG_Eco_PUB.Eco_Rec_Type
845 ,   p_Unexp_ECO_rec		    IN  ENG_Eco_PUB.Eco_unexposed_Rec_Type
846 ,   p_Old_ECO_rec	 	    IN  ENG_Eco_PUB.Eco_Rec_Type
847 ,   p_Old_Unexp_ECO_rec		    IN  ENG_Eco_PUB.Eco_unexposed_Rec_Type
848 ,   x_ECO_rec                       IN OUT NOCOPY ENG_Eco_PUB.Eco_Rec_Type
849 ,   x_Unexp_ECO_rec		    IN OUT NOCOPY ENG_Eco_PUB.Eco_unexposed_Rec_Type
850 )
851 IS
852 l_ECO_rec               ENG_Eco_PUB.Eco_Rec_Type := p_ECO_rec;
853 l_Unexp_ECO_rec		ENG_Eco_PUB.Eco_unexposed_Rec_Type := p_Unexp_ECO_rec;
854 BEGIN
855 
856     l_Unexp_ECO_rec.initiation_date := p_old_Unexp_ECO_rec.initiation_date;
857     l_Unexp_ECO_rec.implementation_date := p_old_Unexp_ECO_rec.implementation_date;
858     l_Unexp_ECO_rec.cancellation_date := p_old_Unexp_ECO_rec.cancellation_date;
859     l_ECO_rec.approval_date := p_old_ECO_rec.approval_date;
860     l_ECO_rec.approval_request_date := p_old_ECO_rec.approval_request_date;
861 
862     IF l_Unexp_ECO_rec.requestor_id IS NULL
863     THEN
864    	l_Unexp_ECO_rec.requestor_id := p_Old_Unexp_ECO_rec.requestor_id;
865     END IF;
866 
867     IF l_Unexp_ECO_rec.responsible_org_id IS NULL
868     THEN
869    	l_Unexp_ECO_rec.responsible_org_id := p_Old_Unexp_ECO_rec.responsible_org_id;
870     END IF;
871 
872     IF l_Unexp_ECO_rec.approval_list_id IS NULL
873     THEN
874    	l_Unexp_ECO_rec.approval_list_id := p_Old_Unexp_ECO_rec.approval_list_id;
875     END IF;
876 
877    IF l_Unexp_ECO_rec.change_order_type_id IS NULL
878     THEN
879    	l_Unexp_ECO_rec.change_order_type_id := p_Old_Unexp_ECO_rec.change_order_type_id;
880     END IF;
881 
882     IF l_ECO_rec.attribute7 IS NULL THEN
883         l_ECO_rec.attribute7 := p_old_ECO_rec.attribute7;
884     END IF;
885 
886     IF l_ECO_rec.attribute8 IS NULL THEN
887         l_ECO_rec.attribute8 := p_old_ECO_rec.attribute8;
888     END IF;
889 
890     IF l_ECO_rec.attribute9 IS NULL THEN
891         l_ECO_rec.attribute9 := p_old_ECO_rec.attribute9;
892     END IF;
893 
894     IF l_ECO_rec.attribute10 IS NULL THEN
895         l_ECO_rec.attribute10 := p_old_ECO_rec.attribute10;
896     END IF;
897 
898     IF l_ECO_rec.attribute11 IS NULL THEN
899         l_ECO_rec.attribute11 := p_old_ECO_rec.attribute11;
900     END IF;
901 
902     IF l_ECO_rec.attribute12 IS NULL THEN
903         l_ECO_rec.attribute12 := p_old_ECO_rec.attribute12;
904     END IF;
905 
906     IF l_ECO_rec.attribute13 IS NULL THEN
907         l_ECO_rec.attribute13 := p_old_ECO_rec.attribute13;
908     END IF;
909 
910     IF l_ECO_rec.attribute14 IS NULL THEN
911         l_ECO_rec.attribute14 := p_old_ECO_rec.attribute14;
912     END IF;
913 
914     IF l_ECO_rec.attribute15 IS NULL THEN
915         l_ECO_rec.attribute15 := p_old_ECO_rec.attribute15;
916     END IF;
917 
918     IF l_Unexp_ECO_rec.approval_status_type IS NULL THEN
919         l_Unexp_ECO_rec.approval_status_type := p_old_Unexp_ECO_rec.approval_status_type;
920     END IF;
921 
922     IF l_ECO_rec.description IS NULL THEN
923         l_ECO_rec.description := p_old_ECO_rec.description;
924     END IF;
925 
926     --Bug 6378121, Add status_code in the entity defaulting
927     IF l_Unexp_ECO_rec.status_code IS NULL THEN
928         l_Unexp_ECO_rec.status_code := p_old_Unexp_ECO_rec.status_code;
929     END IF;
930 
931     IF l_Unexp_ECO_rec.status_type IS NULL THEN
932         l_Unexp_ECO_rec.status_type := p_old_Unexp_ECO_rec.status_type;
933     END IF;
934 
935     IF l_ECO_rec.ECO_Department_Name IS NULL THEN
936         l_ECO_rec.ECO_Department_Name := p_old_ECO_rec.ECO_Department_Name;
937     END IF;
938 
939     IF l_ECO_rec.Approval_List_Name IS NULL THEN
940         l_ECO_rec.Approval_List_Name := p_old_ECO_rec.Approval_List_Name;
941     END IF;
942 
943     IF l_ECO_rec.Requestor IS NULL THEN
944         l_ECO_rec.Requestor := p_old_ECO_rec.Requestor;
945     END IF;
946 
947     IF l_ECO_rec.cancellation_comments IS NULL THEN
948         l_ECO_rec.cancellation_comments := p_old_ECO_rec.cancellation_comments;
949     END IF;
950 
951     IF l_ECO_rec.priority_code IS NULL THEN
952         l_ECO_rec.priority_code := p_old_ECO_rec.priority_code;
953     END IF;
954 
955     IF l_ECO_rec.reason_code IS NULL THEN
956         l_ECO_rec.reason_code := p_old_ECO_rec.reason_code;
957     END IF;
958 
959     IF l_ECO_rec.ENG_implementation_cost IS NULL THEN
960         l_ECO_rec.ENG_implementation_cost := p_old_ECO_rec.ENG_implementation_cost;
961     END IF;
962 
963     IF l_ECO_rec.MFG_implementation_cost IS NULL THEN
964         l_ECO_rec.MFG_implementation_cost := p_old_ECO_rec.MFG_implementation_cost;
965     END IF;
966 
967     IF l_ECO_rec.attribute_category IS NULL THEN
968         l_ECO_rec.attribute_category := p_old_ECO_rec.attribute_category;
969     END IF;
970 
971     IF l_ECO_rec.attribute1 IS NULL THEN
972         l_ECO_rec.attribute1 := p_old_ECO_rec.attribute1;
973     END IF;
974 
975     IF l_ECO_rec.attribute2 IS NULL THEN
976         l_ECO_rec.attribute2 := p_old_ECO_rec.attribute2;
977     END IF;
978 
979     IF l_ECO_rec.attribute3 IS NULL THEN
980         l_ECO_rec.attribute3 := p_old_ECO_rec.attribute3;
981     END IF;
982 
983     IF l_ECO_rec.attribute4 IS NULL THEN
984         l_ECO_rec.attribute4 := p_old_ECO_rec.attribute4;
985     END IF;
986 
987     IF l_ECO_rec.attribute5 IS NULL THEN
988         l_ECO_rec.attribute5 := p_old_ECO_rec.attribute5;
989     END IF;
990 
991     IF l_ECO_rec.attribute6 IS NULL THEN
992         l_ECO_rec.attribute6 := p_old_ECO_rec.attribute6;
993     END IF;
994 
995 
996     /* Added by MK on 11/29/00 Bug #1508078
997     -- Modified populating hierarchy_flag and organization_hierarchy
998     -- when these are miss values
999 
1000     IF l_ECO_rec.hierarchy_flag IS NULL
1001     OR l_ECO_rec.hierarchy_flag = FND_API.G_MISS_NUM
1002     THEN
1003         l_ECO_rec.hierarchy_flag := p_old_ECO_rec.hierarchy_flag;
1004     END IF;
1005     */
1006 
1007     IF l_ECO_rec.organization_hierarchy IS NULL
1008     OR l_ECO_rec.organization_hierarchy = FND_API.G_MISS_CHAR
1009     THEN
1010         l_ECO_rec.organization_hierarchy := p_old_ECO_rec.organization_hierarchy;
1011     END IF;
1012 
1013 
1014     -- Eng Change
1015     IF l_Unexp_ECO_rec.change_mgmt_type_code IS NULL
1016     OR l_Unexp_ECO_rec.change_mgmt_type_code = FND_API.G_MISS_CHAR
1017     THEN
1018        l_Unexp_ECO_rec.change_mgmt_type_code := p_Old_Unexp_ECO_rec.change_mgmt_type_code ;
1019     END IF;
1020 
1021     -- Eng Change
1022     -- User should be able to null out assignee
1023     IF l_Unexp_ECO_rec.assignee_id IS NULL
1024     OR ( l_Unexp_ECO_rec.assignee_id = FND_API.G_MISS_NUM
1025          AND p_Old_Unexp_ECO_rec.assignee_id IS NULL )
1026     THEN
1027        l_Unexp_ECO_rec.assignee_id := p_Old_Unexp_ECO_rec.assignee_id ;
1028     END IF;
1029 
1030 
1031    x_ECO_rec := l_ECO_rec;
1032    x_Unexp_ECO_rec := l_Unexp_ECO_rec;
1033 
1034 END Populate_NULL_Columns;
1035 
1036 END ENG_Default_Eco;