DBA Data[Home] [Help]

PACKAGE BODY: APPS.EAM_WO_DEFAULT_PVT

Source


1 PACKAGE BODY EAM_WO_DEFAULT_PVT AS
2 /* $Header: EAMVWODB.pls 120.27.12020000.5 2013/03/01 06:15:01 vchidura ship $ */
3 /***************************************************************************
4 --
5 --  Copyright (c) 2002 Oracle Corporation, Redwood Shores, CA, USA
6 --  All rights reserved.
7 --
8 --  FILENAME
9 --
10 --      EAMVWODB.pls
11 --
12 --  DESCRIPTION
13 --
14 --      Spec of package EAM_WO_DEFAULT_PVT
15 --
16 --  NOTES
17 --
18 --  HISTORY
19 --
20 --  30-JUN-2002    Kenichi Nagumo     Initial Creation
21 --  15-May-2005    Anju Gupta		  Changes for IB/Transactable Assets
22 ***************************************************************************/
23 G_PKG_NAME      CONSTANT VARCHAR2(30) := 'EAM_WO_DEFAULT_PVT';
24 
25         /********************************************************************
26         * Function      : get_wip_entity_id
27         * Return        : NUMBER
28         * Purpose       : Function will return wip_entity_id
29         *
30         **********************************************************************/
31 
32 
33 	FUNCTION get_wip_entity_id
34         RETURN NUMBER
35         IS
36                 l_wip_entity_id      NUMBER := NULL;
37         BEGIN
38 
39 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug(to_char(sysdate,'DD-MON-YY HH:MI:SS')||' EAM_WO_DEFAULT_PVT.get_wip_entity_id : Start ================'); END IF;
40 
41                 SELECT wip_entities_s.nextval
42                 INTO   l_wip_entity_id
43                 FROM   dual;
44 
45 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug(to_char(sysdate,'DD-MON-YY HH:MI:SS')||' EAM_WO_DEFAULT_PVT.get_wip_entity_id : End wip_entity_id: '||l_wip_entity_id||' ================'); END IF;
46 
47                 RETURN l_wip_entity_id;
48 
49          EXCEPTION
50                 WHEN OTHERS THEN
51                         RETURN NULL;
52 
53         END get_wip_entity_id;
54 
55 
56 
57         /********************************************************************
58         * Function      : get_wip_entity_name_prefix
59         * Return        : VARCHAR2
60         * Purpose       : Function will return wip_entity_name_prefix
61         *
62         **********************************************************************/
63 
64         FUNCTION get_wip_entity_name_prefix
65           (  p_organization_id IN  NUMBER
66           )
67         RETURN VARCHAR2
68         IS
69                 l_wip_entity_name_prefix      VARCHAR2(30) := NULL;
70         BEGIN
71 
72 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug(to_char(sysdate,'DD-MON-YY HH:MI:SS')||' EAM_WO_DEFAULT_PVT.get_wip_entity_name_prefix : Start ================'); END IF;
73 
74                 SELECT work_order_prefix
75                 INTO   l_wip_entity_name_prefix
76                 FROM   wip_eam_parameters
77                 WHERE  organization_id = p_organization_id;
78 
79 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug(to_char(sysdate,'DD-MON-YY HH:MI:SS')||' EAM_WO_DEFAULT_PVT.get_wip_entity_name_prefix : End wip_entity_name prefix: '||l_wip_entity_name_prefix||' =============='); END IF;
80 
81                 RETURN l_wip_entity_name_prefix;
82 
83          EXCEPTION
84                 WHEN OTHERS THEN
85                         RETURN NULL;
86 
87         END get_wip_entity_name_prefix;
88 
89         -- ER 11884444
90         /********************************************************************
91         * Function      : get_pm_wip_entity_prefix
92         * Return        : VARCHAR2
93         * Purpose       : Function will return PM_WORK_ORDER_PREFIX
94         *
95         **********************************************************************/
96 
97         FUNCTION get_pm_wip_entity_prefix
98           (  p_organization_id IN  NUMBER
99           )
100         RETURN VARCHAR2
101         IS
102                 l_pm_wip_entity_prefix      VARCHAR2(30) := NULL;
103         BEGIN
104 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug(to_char(sysdate,'DD-MON-YY HH:MI:SS')||' EAM_WO_DEFAULT_PVT.get_pm_wip_entity_prefix : Start ================'); END IF;
105 
106                 SELECT PM_WORK_ORDER_PREFIX
107                 INTO   l_pm_wip_entity_prefix
108                 FROM   wip_eam_parameters
109                 WHERE  organization_id = p_organization_id;
110 
111                 --l_pm_wip_entity_prefix := 'PM_PREFIX';
112 
113 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug(to_char(sysdate,'DD-MON-YY HH:MI:SS')||' EAM_WO_DEFAULT_PVT.get_pm_wip_entity_prefix : End PM_wip_entity_name prefix: '||l_pm_wip_entity_prefix||' =============='); END IF;
114 
115                 RETURN l_pm_wip_entity_prefix;
116 
117          EXCEPTION
118                 WHEN OTHERS THEN
119                         RETURN NULL;
120         END get_pm_wip_entity_prefix;
121 
122 
123 
124         /********************************************************************
125         * Function      : get_wip_entity_name
126         * Return        : VARCHAR2
127         * Purpose       : Function will return new work order name
128         *
129         **********************************************************************/
130 
131         FUNCTION get_wip_entity_name(p_org_id NUMBER,p_plan_maintenance VARCHAR2, p_source_code VARCHAR2)
132         RETURN VARCHAR2
133         IS
134                 l_wip_entity_name      VARCHAR2(240) := NULL;
135 		l_wip_entity_count     NUMBER :=0;
136 		l_wip_entity_name_prefix      VARCHAR2(30) := NULL;
137         BEGIN
138 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug(to_char(sysdate,'DD-MON-YY HH:MI:SS')||' EAM_WO_DEFAULT_PVT.get_wip_entity_name: Start  =============='); END IF;
139 
140 		 -- ER 11884444
141      -- PM Work Order prefix for WO generation
142 		 IF nvl(p_plan_maintenance,'N') <> 'Y' THEN
143 			l_wip_entity_name_prefix :=get_wip_entity_name_prefix(p_org_id);
144      ELSIF nvl(p_plan_maintenance,'N') = 'Y' THEN
145       l_wip_entity_name_prefix := get_pm_wip_entity_prefix(p_org_id);
146 		END IF;
147       IF nvl(p_source_code,'EAM') ='BUD' THEN -- ER 14323372
148  	 l_wip_entity_name_prefix := 'BFWO';
149       END IF;
150 	LOOP
151           IF nvl(p_source_code,'EAM') ='BUD' THEN -- ER 14323372
152  	     SELECT eam_bfwo_job_number_s.nextval
153  	     INTO   l_wip_entity_name
154  	     FROM   dual;
155  	  ELSE
156                 SELECT wip_job_number_s.nextval
157                 INTO   l_wip_entity_name
158                 FROM   dual;
159          END IF;
160 
161 		l_wip_entity_name :=  l_wip_entity_name_prefix || l_wip_entity_name;
162 
163 		select  count(*) into l_wip_entity_count from wip_entities
164 		where organization_id = p_org_id and wip_entity_name =l_wip_entity_name
165 		and rownum <= 1;
166 
167 	EXIT WHEN l_wip_entity_count=0;
168 	END LOOP;
169 
170 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug(to_char(sysdate,'DD-MON-YY HH:MI:SS')||' EAM_WO_DEFAULT_PVT.get_wip_entity_name: End  l_wip_entity_name : '||l_wip_entity_name ||' =============='); END IF;
171 
172 	 RETURN l_wip_entity_name;
173          EXCEPTION
174                 WHEN OTHERS THEN
175                         RETURN NULL;
176         END get_wip_entity_name;
177 
178 
179 
180 
181         /********************************************************************
182         * Procedure     : get_flex_eam_wo
183         **********************************************************************/
184 
185 
186         PROCEDURE get_flex_eam_wo
187           (  p_eam_wo_rec IN  EAM_PROCESS_WO_PUB.eam_wo_rec_type
188            , x_eam_wo_rec OUT NOCOPY EAM_PROCESS_WO_PUB.eam_wo_rec_type
189           )
190         IS
191         BEGIN
192 
193 		IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug(to_char(sysdate,'DD-MON-YY HH:MI:SS')||' EAM_WO_DEFAULT_PVT.get_flex_eam_wo: Start  =============='); END IF;
194 
195             --  In the future call Flex APIs for defaults
196                 x_eam_wo_rec := p_eam_wo_rec;
197 
198                 IF p_eam_wo_rec.attribute_category =FND_API.G_MISS_CHAR THEN
199                         x_eam_wo_rec.attribute_category := NULL;
200                 END IF;
201 
202                 IF p_eam_wo_rec.attribute1 = FND_API.G_MISS_CHAR THEN
203                         x_eam_wo_rec.attribute1  := NULL;
204                 END IF;
205 
206                 IF p_eam_wo_rec.attribute2 = FND_API.G_MISS_CHAR THEN
207                         x_eam_wo_rec.attribute2  := NULL;
208                 END IF;
209 
210                 IF p_eam_wo_rec.attribute3 = FND_API.G_MISS_CHAR THEN
211                         x_eam_wo_rec.attribute3  := NULL;
212                 END IF;
213 
214                 IF p_eam_wo_rec.attribute4 = FND_API.G_MISS_CHAR THEN
215                         x_eam_wo_rec.attribute4  := NULL;
216                 END IF;
217 
218                 IF p_eam_wo_rec.attribute5 = FND_API.G_MISS_CHAR THEN
219                         x_eam_wo_rec.attribute5  := NULL;
220                 END IF;
221 
222                 IF p_eam_wo_rec.attribute6 = FND_API.G_MISS_CHAR THEN
223                         x_eam_wo_rec.attribute6  := NULL;
224                 END IF;
225 
226                 IF p_eam_wo_rec.attribute7 = FND_API.G_MISS_CHAR THEN
227                         x_eam_wo_rec.attribute7  := NULL;
228                 END IF;
229 
230                 IF p_eam_wo_rec.attribute8 = FND_API.G_MISS_CHAR THEN
231                         x_eam_wo_rec.attribute8  := NULL;
232                 END IF;
233 
234                 IF p_eam_wo_rec.attribute9 = FND_API.G_MISS_CHAR THEN
235                         x_eam_wo_rec.attribute9  := NULL;
236                 END IF;
237 
238                 IF p_eam_wo_rec.attribute10 = FND_API.G_MISS_CHAR THEN
239                         x_eam_wo_rec.attribute10 := NULL;
240                 END IF;
241 
242                 IF p_eam_wo_rec.attribute11 = FND_API.G_MISS_CHAR THEN
243                         x_eam_wo_rec.attribute11 := NULL;
244                 END IF;
245 
246                 IF p_eam_wo_rec.attribute12 = FND_API.G_MISS_CHAR THEN
247                         x_eam_wo_rec.attribute12 := NULL;
248                 END IF;
249 
250                 IF p_eam_wo_rec.attribute13 = FND_API.G_MISS_CHAR THEN
251                         x_eam_wo_rec.attribute13 := NULL;
252                 END IF;
253 
254                 IF p_eam_wo_rec.attribute14 = FND_API.G_MISS_CHAR THEN
255                         x_eam_wo_rec.attribute14 := NULL;
256                 END IF;
257 
258                 IF p_eam_wo_rec.attribute15 = FND_API.G_MISS_CHAR THEN
259                         x_eam_wo_rec.attribute15 := NULL;
260                 END IF;
261 
262 		IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug(to_char(sysdate,'DD-MON-YY HH:MI:SS')||' EAM_WO_DEFAULT_PVT.get_flex_eam_wo: End  =============='); END IF;
263 
264         END get_flex_eam_wo;
265 
266 
267         /*********************************************************************
268         * Procedure     : Attribute_Defaulting
269         * Parameters IN : Work Order record
270         * Parameters OUT NOCOPY: Work Order record after defaulting
271         *                 Mesg_Token_Table
272         *                 Return_Status
273         * Purpose       : Attribute Defaulting will default the necessary null
274         *                 attribute with appropriate values.
275         **********************************************************************/
276 
277         PROCEDURE Attribute_Defaulting
278         (  p_eam_wo_rec          IN  EAM_PROCESS_WO_PUB.eam_wo_rec_type
279 	, p_old_eam_wo_rec          IN  EAM_PROCESS_WO_PUB.eam_wo_rec_type
280          , x_eam_wo_rec          OUT NOCOPY EAM_PROCESS_WO_PUB.eam_wo_rec_type
281          , x_mesg_token_tbl          OUT NOCOPY EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type
282          , x_return_status           OUT NOCOPY VARCHAR2
283          )
284         IS
285           l_err_text              VARCHAR2(2000) := NULL;
286           l_return_status         VARCHAR2(2);
287           l_msg_count             NUMBER;
288           l_Mesg_Token_Tbl        EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type;
289           l_out_Mesg_Token_Tbl    EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type;
290           l_out_eam_wo_rec        EAM_PROCESS_WO_PUB.eam_wo_rec_type;
291           l_Token_Tbl             EAM_ERROR_MESSAGE_PVT.Token_Tbl_Type;
292           l_job_type              NUMBER := 1;
293 
294           l_owning_department             NUMBER;
295           l_priority                      NUMBER;
296           l_material_account              NUMBER;
297           l_material_overhead_account     NUMBER;
298           l_resource_account              NUMBER;
299           l_outside_processing_account    NUMBER;
300           l_material_variance_account     NUMBER;
301           l_resource_variance_account     NUMBER;
302           l_osp_var_account               NUMBER;
303           l_std_cost_adjustment_account   NUMBER;
304           l_overhead_account              NUMBER;
305           l_overhead_variance_account     NUMBER;
306           l_issue_zero_cost_flag          VARCHAR2(1);
307 
308           l_class_code                    VARCHAR2(10);
309           l_activity_cause                VARCHAR2(30);
310           l_activity_type                 VARCHAR2(30);
311           l_activity_source               VARCHAR2(30);
312           l_shutdown_type                 VARCHAR2(30);
313           l_notification_required         VARCHAR2(1);
314           l_tagout_required               VARCHAR2(1);
315           l_auto_firm_flag                VARCHAR2(10);
316     	  l_activity_description	  VARCHAR2(240);
317 
318 
319 	  l_old_eam_wo_rec                EAM_PROCESS_WO_PUB.eam_wo_rec_type;
320 	  l_auto_firm_create_flag         VARCHAR2(1);
321 
322           /*WO Defaults ER*/
323           l_work_order_type               NUMBER;
324           l_planner_maintenance           NUMBER;
325           l_firm_flag                     NUMBER;
326           l_plan_maintenance              VARCHAR2(1);
327 
328         BEGIN
329 		IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
330 			EAM_ERROR_MESSAGE_PVT.Write_Debug(to_char(sysdate,'DD-MON-YY HH:MI:SS')||' EAM_WO_DEFAULT_PVT.Attribute_Defaulting : Start================');
331 		END IF;
332 
333 		IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
334 			EAM_ERROR_MESSAGE_PVT.Write_Debug(to_char(sysdate,'DD-MON-YY HH:MI:SS')||' EAM_WO_DEFAULT_PVT.Attribute_Defaulting : Calling EAM_WO_UTILITY_PVT.Query_Row');
335 		END IF;
336 
337 		 EAM_WO_UTILITY_PVT.Query_Row(
338                   p_wip_entity_id       => p_eam_wo_rec.wip_entity_id
339                 , p_organization_id     => p_eam_wo_rec.organization_id
340                 , x_eam_wo_rec          => l_old_eam_wo_rec
341                 , x_Return_status       => l_return_status
342                 );
343 
344 
345                 x_eam_wo_rec := p_eam_wo_rec;
346                 x_return_status := FND_API.G_RET_STS_SUCCESS;
347 
348                 IF p_eam_wo_rec.wip_entity_id IS NULL OR
349                    p_eam_wo_rec.wip_entity_id = FND_API.G_MISS_NUM
350                 THEN
351                         x_eam_wo_rec.wip_entity_id :=get_wip_entity_id;
352 
353 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug(' EAM_WO_DEFAULT_PVT.Attribute_Defaulting : New wip_entity_id : ' || to_char(x_eam_wo_rec.wip_entity_id)); END IF;
354 
355                 END IF;
356 
357                 IF p_eam_wo_rec.wip_entity_name IS NULL OR
358                    p_eam_wo_rec.wip_entity_name = FND_API.G_MISS_CHAR
359                 THEN
360                       x_eam_wo_rec.wip_entity_name := get_wip_entity_name(p_eam_wo_rec.organization_id,p_eam_wo_rec.plan_maintenance,p_eam_wo_rec.source_code);
361 
362 
363 
364 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug(' EAM_WO_DEFAULT_PVT.Attribute_Defaulting : New wip_entity_name : ' || x_eam_wo_rec.wip_entity_name); END IF;
365 
366                 END IF;
367 
368                 -- Finding out whether Asset or Rebuild WO
369                 IF p_eam_wo_rec.maintenance_object_type = 2 THEN
370                   -- Rebuild
371                   l_job_type := 2;
372                 ELSIF p_eam_wo_rec.maintenance_object_type = 3 THEN
373                   IF p_eam_wo_rec.rebuild_item_id is not null THEN
374                     l_job_type :=2;
375                   ELSE
376                     l_job_type :=1;
377                   END IF;
378                 END IF;
379 
380 
381 		IF (   p_eam_wo_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_CREATE
382 		            AND p_eam_wo_rec.class_code is null )
383 	        THEN
384                         WIP_EAM_UTILS.DEFAULT_ACC_CLASS(
385                          p_org_id            => p_eam_wo_rec.organization_id,
386                          p_job_type          => l_job_type,
387                          p_serial_number     => nvl(p_eam_wo_rec.rebuild_serial_number, p_eam_wo_rec.asset_number),
388                          p_asset_group_id    => nvl(p_eam_wo_rec.rebuild_item_id, p_eam_wo_rec.asset_group_id),
389                          p_parent_wo_id      => p_eam_wo_rec.parent_wip_entity_id,
390                          p_asset_activity_id => p_eam_wo_rec.asset_activity_id,
391                          p_project_id        => p_eam_wo_rec.project_id,
392                          p_task_id           => p_eam_wo_rec.task_id,
393                          x_class_code        => l_class_code,
394                          x_return_status     => l_return_status,
395                          x_msg_data          => l_err_text
396                         );
397 
398                    IF l_class_code IS NOT NULL AND
399                        l_class_code <> FND_API.G_MISS_CHAR
400                    THEN
401                       -- Default the WIP ACC Class
402                        x_eam_wo_rec.class_code := l_class_code;
403 
404 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('EAM_WO_DEFAULT_PVT.Attribute_Defaulting : New class_code : ' || x_eam_wo_rec.class_code); END IF;
405                     END IF;
406 
407                 END IF;
408 
409 		IF p_eam_wo_rec.asset_activity_id is not null THEN
410 
411 		/* Defaulting logic of work order description from activity description for bug# 3418828 */
412 
413 		   IF ( p_eam_wo_rec.description IS NULL
414 			and p_eam_wo_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_CREATE )
415 		   THEN
416 		        begin
417 				 SELECT description
418 				 INTO   l_activity_description
419 				 FROM   MTL_SYSTEM_ITEMS_KFV MSI, MTL_PARAMETERS MP
420 				 WHERE  MSI.inventory_item_id = p_eam_wo_rec.asset_activity_id
421 				 AND    MSI.organization_id = MP.ORGANIZATION_ID
422 				 AND    MP.MAINT_ORGANIZATION_ID = p_eam_wo_rec.organization_id
423                                  AND rownum = 1;
424 
425 				 x_eam_wo_rec.description := l_activity_description;
426 
427 				 EXCEPTION
428 				 	WHEN OTHERS THEN
429 						NULL;
430 			 end;
431 		   END IF;
432 
433 		/* end of fix */
434 
435                 IF ( p_eam_wo_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_CREATE /*OR
436 		        (p_eam_wo_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_UPDATE AND
437 			    NVL(p_eam_wo_rec.asset_activity_id,-1) <> NVL(l_old_eam_wo_rec.asset_activity_id,-1)) commented for BUG#5609642 */ ) THEN   --default if new workorder or activity is changed
438 
439 														WIP_EAMWORKORDER_PVT.Get_EAM_Act_Cause_Default
440 														      (p_api_version               => 1,
441 														       p_init_msg_list             => FND_API.G_FALSE,
442 														       p_commit                    => FND_API.G_FALSE,
443 														       p_validation_level          => FND_API.G_VALID_LEVEL_FULL,
444 														       x_return_status             => l_return_status,
445 														       x_msg_count                 => l_msg_count,
446 														       x_msg_data                  => l_err_text,
447 														       p_primary_item_id           => p_eam_wo_rec.asset_activity_id,
448 														       p_organization_id           => p_eam_wo_rec.organization_id,
449 														       p_maintenance_object_type   => p_eam_wo_rec.maintenance_object_type,
450 														       p_maintenance_object_id     => p_eam_wo_rec.maintenance_object_id,
451 														       p_rebuild_item_id           => p_eam_wo_rec.rebuild_item_id,
452 														       x_activity_cause_code       => l_activity_cause
453 														      );
454 
455 														  IF l_activity_cause IS NOT NULL AND
456 														     l_activity_cause <> FND_API.G_MISS_CHAR AND
457 														     p_eam_wo_rec.activity_cause IS NULL /* Added for BUG#5609642 */
458 														  THEN
459 														    x_eam_wo_rec.activity_cause := l_activity_cause;
460 
461 												IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('EAM_WO_DEFAULT_PVT.Attribute_Defaulting : New activity_cause : ' || x_eam_wo_rec.activity_cause); END IF;
462 														  END IF;
463 
464 														    WIP_EAMWORKORDER_PVT.Get_EAM_Act_Type_Default
465 														      (p_api_version               => 1,
466 														       p_init_msg_list             => FND_API.G_FALSE,
467 														       p_commit                    => FND_API.G_FALSE,
468 														       p_validation_level          => FND_API.G_VALID_LEVEL_FULL,
469 														       x_return_status             => l_return_status,
470 														       x_msg_count                 => l_msg_count,
471 														       x_msg_data                  => l_err_text,
472 														       p_primary_item_id           => p_eam_wo_rec.asset_activity_id,
473 														       p_organization_id           => p_eam_wo_rec.organization_id,
474 														       p_maintenance_object_type   => p_eam_wo_rec.maintenance_object_type,
475 														       p_maintenance_object_id     => p_eam_wo_rec.maintenance_object_id,
476 														       p_rebuild_item_id           => p_eam_wo_rec.rebuild_item_id,
477 														       x_activity_type_code        => l_activity_type
478 														    );
479 
480 														  IF l_activity_type IS NOT NULL AND
481 														     l_activity_type <> FND_API.G_MISS_CHAR AND
482 														     p_eam_wo_rec.activity_type IS NULL /* Added for BUG#5609642 */
483 														  THEN
484 														    x_eam_wo_rec.activity_type := l_activity_type;
485 												IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('EAM_WO_DEFAULT_PVT.Attribute_Defaulting : New activity_type : ' || x_eam_wo_rec.activity_type); END IF;
486 														  END IF;
487 
488 														    WIP_EAMWORKORDER_PVT.Get_EAM_Act_Source_Default
489 														      (p_api_version               => 1,
490 														       p_init_msg_list             => FND_API.G_FALSE,
491 														       p_commit                    => FND_API.G_FALSE,
492 														       p_validation_level          => FND_API.G_VALID_LEVEL_FULL,
493 														       x_return_status             => l_return_status,
494 														       x_msg_count                 => l_msg_count,
495 														       x_msg_data                  => l_err_text,
496 														       p_primary_item_id           => p_eam_wo_rec.asset_activity_id,
497 														       p_organization_id           => p_eam_wo_rec.organization_id,
498 														       p_maintenance_object_type   => p_eam_wo_rec.maintenance_object_type,
499 														       p_maintenance_object_id     => p_eam_wo_rec.maintenance_object_id,
500 														       p_rebuild_item_id           => p_eam_wo_rec.rebuild_item_id,
501 														       x_activity_source_code      => l_activity_source
502 														    );
503 
504 														  IF l_activity_source IS NOT NULL AND
505 														     l_activity_source <> FND_API.G_MISS_CHAR AND
506 														     p_eam_wo_rec.activity_source IS NULL /* Added for BUG#5609642 */
507 														  THEN
508 														    x_eam_wo_rec.activity_source := l_activity_source;
509 
510 												IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('EAM_WO_DEFAULT_PVT.Attribute_Defaulting : New activity_source : ' || x_eam_wo_rec.activity_source); END IF;
511 														  END IF;
512 
513 														    WIP_EAMWORKORDER_PVT.Get_EAM_Shutdown_Default
514 														      (p_api_version               => 1,
515 														       p_init_msg_list             => FND_API.G_FALSE,
516 														       p_commit                    => FND_API.G_FALSE,
517 														       p_validation_level          => FND_API.G_VALID_LEVEL_FULL,
518 														       x_return_status             => l_return_status,
519 														       x_msg_count                 => l_msg_count,
520 														       x_msg_data                  => l_err_text,
521 														       p_primary_item_id           => p_eam_wo_rec.asset_activity_id,
522 														       p_organization_id           => p_eam_wo_rec.organization_id,
523 														       p_maintenance_object_type   => p_eam_wo_rec.maintenance_object_type,
524 														       p_maintenance_object_id     => p_eam_wo_rec.maintenance_object_id,
525 														       p_rebuild_item_id           => p_eam_wo_rec.rebuild_item_id,
526 														       x_shutdown_type_code        => l_shutdown_type
527 														    );
528 
529 														  IF l_shutdown_type IS NOT NULL AND
530 														     l_shutdown_type <> FND_API.G_MISS_CHAR AND
531 														      p_eam_wo_rec.shutdown_type IS NULL /* Added for BUG#5609642 */
532 														  THEN
533 														    x_eam_wo_rec.shutdown_type := l_shutdown_type;
534 												IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
535 												 EAM_ERROR_MESSAGE_PVT.Write_Debug('EAM_WO_DEFAULT_PVT.Attribute_Defaulting : New shutdown_type : ' || x_eam_wo_rec.shutdown_type);
536 												 END IF;
537 														  END IF;
538 
539 														    WIP_EAMWORKORDER_PVT.Get_EAM_Notification_Default
540 														      (p_api_version               => 1,
541 														       p_init_msg_list             => FND_API.G_FALSE,
542 														       p_commit                    => FND_API.G_FALSE,
543 														       p_validation_level          => FND_API.G_VALID_LEVEL_FULL,
544 														       x_return_status             => l_return_status,
545 														       x_msg_count                 => l_msg_count,
546 														       x_msg_data                  => l_err_text,
547 														       p_primary_item_id           => p_eam_wo_rec.asset_activity_id,
548 														       p_organization_id           => p_eam_wo_rec.organization_id,
549 														       p_maintenance_object_type   => p_eam_wo_rec.maintenance_object_type,
550 														       p_maintenance_object_id     => p_eam_wo_rec.maintenance_object_id,
551 														       p_rebuild_item_id           => p_eam_wo_rec.rebuild_item_id,
552 														       x_notification_flag         => l_notification_required
553 														    );
554 
555 														  IF l_notification_required IS NOT NULL AND
556 														     l_notification_required <> FND_API.G_MISS_CHAR AND
557 														     p_eam_wo_rec.notification_required IS NULL /* Added for BUG#5609642 */
558 														  THEN
559 														    x_eam_wo_rec.notification_required := l_notification_required;
560 												IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
561 												 EAM_ERROR_MESSAGE_PVT.Write_Debug('EAM_WO_DEFAULT_PVT.Attribute_Defaulting : New notification_required : ' || x_eam_wo_rec.notification_required);
562 												 END IF;
563 														  END IF;
564 
565 														    WIP_EAMWORKORDER_PVT.Get_EAM_Tagout_Default
566 														      (p_api_version               => 1,
567 														       p_init_msg_list             => FND_API.G_FALSE,
568 														       p_commit                    => FND_API.G_FALSE,
569 														       p_validation_level          => FND_API.G_VALID_LEVEL_FULL,
570 														       x_return_status             => l_return_status,
571 														       x_msg_count                 => l_msg_count,
572 														       x_msg_data                  => l_err_text,
573 														       p_primary_item_id           => p_eam_wo_rec.asset_activity_id,
574 														       p_organization_id           => p_eam_wo_rec.organization_id,
575 														       p_maintenance_object_type   => p_eam_wo_rec.maintenance_object_type,
576 														       p_maintenance_object_id     => p_eam_wo_rec.maintenance_object_id,
577 														       p_rebuild_item_id           => p_eam_wo_rec.rebuild_item_id,
578 														       x_tagout_required           => l_tagout_required
579 														    );
580 
581 														  IF l_tagout_required IS NOT NULL AND
582 														     l_tagout_required <> FND_API.G_MISS_CHAR AND
583 														     p_eam_wo_rec.tagout_required IS NULL /* Added for BUG#5609642 */
584 														  THEN
585 														    x_eam_wo_rec.tagout_required := l_tagout_required;
586 												IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
587 												 EAM_ERROR_MESSAGE_PVT.Write_Debug('EAM_WO_DEFAULT_PVT.Attribute_Defaulting : New tagout_default : ' || x_eam_wo_rec.tagout_required);
588 												 END IF;
589 														  END IF;
590 /*WO Defaults ER 16094794*/
591 
592                                  WIP_EAMWORKORDER_PVT.Get_EAM_ACT_WO_Type_Default
593 														      (p_api_version               => 1,
594 														       p_init_msg_list             => FND_API.G_FALSE,
595 														       p_commit                    => FND_API.G_FALSE,
596 														       p_validation_level          => FND_API.G_VALID_LEVEL_FULL,
597 														       x_return_status             => l_return_status,
598 														       x_msg_count                 => l_msg_count,
599 														       x_msg_data                  => l_err_text,
600 														       p_primary_item_id           => p_eam_wo_rec.asset_activity_id,
601 														       p_organization_id           => p_eam_wo_rec.organization_id,
602 														       p_maintenance_object_type   => p_eam_wo_rec.maintenance_object_type,
603 														       p_maintenance_object_id     => p_eam_wo_rec.maintenance_object_id,
604 														       p_rebuild_item_id           => p_eam_wo_rec.rebuild_item_id,
605 														       x_ACT_WO_Type          => l_work_order_type
606 														    );
607 
608 														  IF l_work_order_type IS NOT NULL AND
609 														     l_work_order_type <> FND_API.G_MISS_NUM AND
610 														     p_eam_wo_rec.work_order_type IS NULL
611 														  THEN
612 														    x_eam_wo_rec.work_order_type := l_work_order_type;
613 												IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
614 												 EAM_ERROR_MESSAGE_PVT.Write_Debug('EAM_WO_DEFAULT_PVT.Attribute_Defaulting : New work_order_type : ' || x_eam_wo_rec.work_order_type);
615 												 END IF;
616 														  END IF;
617 
618                                WIP_EAMWORKORDER_PVT.Get_EAM_ACT_Planner_Default
619 														      (p_api_version               => 1,
620         		                                                                                               p_init_msg_list             => FND_API.G_FALSE,
621 														       p_commit                    => FND_API.G_FALSE,
622 														       p_validation_level          => FND_API.G_VALID_LEVEL_FULL,
623 														       x_return_status             => l_return_status,
624 														       x_msg_count                 => l_msg_count,
625 														       x_msg_data                  => l_err_text,
626 														       p_primary_item_id           => p_eam_wo_rec.asset_activity_id,
627 														       p_organization_id           => p_eam_wo_rec.organization_id,
628 														       p_maintenance_object_type   => p_eam_wo_rec.maintenance_object_type,
629 														       p_maintenance_object_id     => p_eam_wo_rec.maintenance_object_id,
630 														       p_rebuild_item_id           => p_eam_wo_rec.rebuild_item_id,
631 														       x_ACT_Planner             => l_planner_maintenance
632 														    );
633 
634 														  IF l_planner_maintenance IS NOT NULL AND
635 														     l_planner_maintenance <> FND_API.G_MISS_NUM AND
636 														     p_eam_wo_rec.PLANNER_TYPE IS NULL
637 														  THEN
638 														    x_eam_wo_rec.PLANNER_TYPE := l_planner_maintenance;
639 												IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
640 												 EAM_ERROR_MESSAGE_PVT.Write_Debug('EAM_WO_DEFAULT_PVT.Attribute_Defaulting : New PLANNER_TYPE : ' || x_eam_wo_rec.PLANNER_TYPE);
641 												 END IF;
642 														  END IF;
643 
644                                WIP_EAMWORKORDER_PVT.Get_EAM_ACT_Firm_Default
645 														      (p_api_version               => 1,
646 			                                                                                               p_init_msg_list             => FND_API.G_FALSE,
647 														       p_commit                    => FND_API.G_FALSE,
648 														       p_validation_level          => FND_API.G_VALID_LEVEL_FULL,
649 														       x_return_status             => l_return_status,
650 														       x_msg_count                 => l_msg_count,
651 														       x_msg_data                  => l_err_text,
652 														       p_primary_item_id           => p_eam_wo_rec.asset_activity_id,
653 														       p_organization_id           => p_eam_wo_rec.organization_id,
654 														       p_maintenance_object_type   => p_eam_wo_rec.maintenance_object_type,
655 														       p_maintenance_object_id     => p_eam_wo_rec.maintenance_object_id,
656 														       p_rebuild_item_id           => p_eam_wo_rec.rebuild_item_id,
657 														       x_ACT_Firm                  => l_firm_flag
658 														    );
659 
660 														  IF l_firm_flag IS NOT NULL AND
661 														     l_firm_flag <> FND_API.G_MISS_NUM AND
662 														     p_eam_wo_rec.FIRM_PLANNED_FLAG IS NULL
663 														  THEN
664 														    x_eam_wo_rec.FIRM_PLANNED_FLAG := l_firm_flag;
665 												IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
666 												 EAM_ERROR_MESSAGE_PVT.Write_Debug('EAM_WO_DEFAULT_PVT.Attribute_Defaulting : New firm_flag : ' || x_eam_wo_rec.firm_planned_flag);
667 												 END IF;
668 														  END IF;
669 
670                                WIP_EAMWORKORDER_PVT.Get_EAM_ACT_Planned_Default
671 														      (p_api_version               => 1,
672 
673    p_init_msg_list             => FND_API.G_FALSE,
674 														       p_commit                    => FND_API.G_FALSE,
675 														       p_validation_level          => FND_API.G_VALID_LEVEL_FULL,
676 														       x_return_status             => l_return_status,
677 														       x_msg_count                 => l_msg_count,
678 														       x_msg_data                  => l_err_text,
679 														       p_primary_item_id           => p_eam_wo_rec.asset_activity_id,
680 														       p_organization_id           => p_eam_wo_rec.organization_id,
681 														       p_maintenance_object_type   => p_eam_wo_rec.maintenance_object_type,
682 														       p_maintenance_object_id     => p_eam_wo_rec.maintenance_object_id,
683 														       p_rebuild_item_id           => p_eam_wo_rec.rebuild_item_id,
684 														       x_ACT_Planned             => l_plan_maintenance
685 														    );
686 
687 														  IF l_plan_maintenance IS NOT NULL AND
688 														     l_plan_maintenance <> FND_API.G_MISS_CHAR AND
689 														     p_eam_wo_rec.PLAN_MAINTENANCE IS NULL
690 														  THEN
691 														    x_eam_wo_rec.PLAN_MAINTENANCE := l_plan_maintenance;
692 												IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
693 												 EAM_ERROR_MESSAGE_PVT.Write_Debug('EAM_WO_DEFAULT_PVT.Attribute_Defaulting : New PLAN_MAINTENANCE : ' || x_eam_wo_rec.PLAN_MAINTENANCE);
694 												 END IF;
695 														  END IF;
696 
697 
698 
699 
700                                   END IF;          --end of check for activity changed or workorder created
701                END IF; -- End if for 'IF asset_activity_id_id is not null'
702 
703 
704 
705 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('EAM_WO_DEFAULT_PVT.Attribute_Defaulting : Defaulting owning department, priority, etc'); END IF;
706 
707                 -- Defaulting Owning Dept, Priority.
708 
709 		IF p_eam_wo_rec.asset_activity_id IS NOT NULL AND p_eam_wo_rec.asset_activity_id <> FND_API.G_MISS_NUM
710                 THEN
711                     -- WO with Activity
712 
713 											 IF ( p_eam_wo_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_CREATE /* OR
714 												(p_eam_wo_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_UPDATE AND
715 												    NVL(p_eam_wo_rec.asset_activity_id,-1) <> NVL(l_old_eam_wo_rec.asset_activity_id,-1))Commented for BUG#5609642 */ ) THEN   --default if new workorder or activity is changed
716 											  BEGIN
717 
718 											    IF p_eam_wo_rec.maintenance_object_type = 3
719 											    THEN
720 																					    -- Asset or Serialized Rebuild with activity
721 																					    SELECT
722 																						   nvl(p_eam_wo_rec.owning_department, nvl(eomd.owning_department_id, eomd_asset.owning_department_id))
723 																						 , nvl(p_eam_wo_rec.priority, meaa.priority_code)
724 																					    INTO
725 																						   l_owning_department
726 																						 , l_priority
727 																					    FROM
728 																						   mtl_eam_asset_activities meaa
729 																						 , eam_org_maint_defaults eomd
730 																						 , eam_org_maint_defaults eomd_asset
731 																					    WHERE
732 																						   meaa.maintenance_object_type = 3
733 																					      AND  eomd.object_type (+) = 60
734 																					      AND  eomd.object_id (+) = meaa.activity_association_id
735 																					      AND  eomd_asset.object_type (+) = 50
736 																					      AND  eomd_asset.organization_id (+) = p_eam_wo_rec.organization_id
737 																					      AND  eomd_asset.object_id (+) =  meaa.maintenance_object_id
738 																					      AND  meaa.asset_activity_id = p_eam_wo_rec.asset_activity_id
739 																					      AND  eomd.organization_id (+) = p_eam_wo_rec.organization_id
740 																					      AND  meaa.maintenance_object_id = p_eam_wo_rec.maintenance_object_id;
741 
742 
743 																					    IF l_owning_department IS NOT NULL AND
744 																					       l_owning_department <> FND_API.G_MISS_NUM AND
745 																					       p_eam_wo_rec.owning_department IS NULL /* Added for BUG#5609642 */
746 																					       THEN
747 																					      x_eam_wo_rec.owning_department := l_owning_department;
748 																					    END IF;
749 
750 																					IF x_eam_wo_rec.owning_department IS NULL THEN
751 																						select default_department_id into x_eam_wo_rec.owning_department
752 																						  from WIP_EAM_PARAMETERS
753 																						  where organization_id = p_eam_wo_rec.organization_id;
754 																					    END IF;
755 
756 																					    IF l_priority IS NOT NULL AND
757 																					       l_priority <> FND_API.G_MISS_NUM AND
758 																					        p_eam_wo_rec.priority IS NULL /* Added for BUG#5609642 */
759 																					       THEN
760 																					      x_eam_wo_rec.priority := l_priority;
761 																					    END IF;
762 
763 											    ELSE
764 											    -- Rebuild with activity
765 
766 																					      IF p_eam_wo_rec.maintenance_object_type = 2 THEN
767 																					      -- Non Serialized rebuild
768 																						SELECT
769 																						   nvl(p_eam_wo_rec.owning_department, eomd.owning_department_id)
770 																						 , nvl(p_eam_wo_rec.priority, meaa.priority_code)
771 																						INTO
772 																						   l_owning_department
773 																						 , l_priority
774 																						FROM
775 																						   mtl_eam_asset_activities meaa,
776 																						   eam_org_maint_defaults eomd
777 																						WHERE
778 																						       meaa.asset_activity_id = p_eam_wo_rec.asset_activity_id
779 																						  AND  eomd.object_type (+) = 40
780 																						  and  eomd.organization_id (+) = p_eam_wo_rec.organization_id
781 																						  and  eomd.object_id (+) = meaa.activity_association_id
782 																						  AND  meaa.maintenance_object_type = 2
783 																					  and  meaa.maintenance_object_id = p_eam_wo_rec.maintenance_object_id;
784 
785 																						IF l_owning_department IS NOT NULL AND
786 																						   l_owning_department <> FND_API.G_MISS_NUM AND
787 																						   p_eam_wo_rec.owning_department IS NULL /* Added for BUG#5609642 */
788 																						   THEN
789 																						  x_eam_wo_rec.owning_department := l_owning_department;
790 																						END IF;
791 
792 																						IF x_eam_wo_rec.owning_department IS NULL THEN
793 																								select default_department_id into x_eam_wo_rec.owning_department
794 																								  from WIP_EAM_PARAMETERS
795 																								  where organization_id = p_eam_wo_rec.organization_id;
796  																					     END IF;
797 
798 																						IF l_priority IS NOT NULL AND
799 																						   l_priority <> FND_API.G_MISS_NUM AND
800 																						   p_eam_wo_rec.priority IS NULL /* Added for BUG#5609642 */
801 																						   THEN
802 																						  x_eam_wo_rec.priority := l_priority;
803 																						END IF;
804 
805 											    END IF;
806 											END IF;
807 
808 											  EXCEPTION
809 											     WHEN NO_DATA_FOUND THEN
810 
811 												  l_out_mesg_token_tbl := l_mesg_token_tbl;
812 												  EAM_ERROR_MESSAGE_PVT.Add_Error_Token
813 												  (  p_message_name  => 'EAM_WO_ASSET_ACTIVITY_ASSOC'
814 												   , p_token_tbl     => l_token_tbl
815 												   , p_mesg_token_tbl     => l_mesg_token_tbl
816 												   , x_mesg_token_tbl     => l_out_mesg_token_tbl
817 												   );
818 												  l_mesg_token_tbl := l_out_mesg_token_tbl;
819 
820 												  x_return_status := FND_API.G_RET_STS_ERROR;
821 												  x_mesg_token_tbl := l_mesg_token_tbl ;
822 
823 											     WHEN OTHERS THEN
824 												  EAM_ERROR_MESSAGE_PVT.Add_Error_Token
825 												  (  p_message_name       => NULL
826 												   , p_message_text       => G_PKG_NAME || SQLERRM
827 												   , x_mesg_token_Tbl     => x_mesg_token_tbl
828 												  );
829 
830 												x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
831 											  END;
832 										       END IF;  --end of check for activity changed/workorder created
833 
834                 ELSIF  x_eam_wo_rec.owning_department IS NULL and (p_eam_wo_rec.maintenance_object_type = 3)
835                     -- Asset/Serialized rebuild WO without Activity
836 
837                 THEN
838 							SELECT
839 							   p_eam_wo_rec.priority
840 							 , nvl(p_eam_wo_rec.owning_department, eomd.owning_department_id)
841 						    INTO
842 							   l_priority
843 							 , l_owning_department
844 						    FROM
845 							   csi_item_instances cii,
846 							   eam_org_maint_defaults eomd
847 						    WHERE
848 							   cii.instance_id = p_eam_wo_rec.maintenance_object_id
849 							   and eomd.object_type (+) = 50
850 							   and eomd.object_id (+) = cii.instance_id
851 							   and eomd.organization_id (+) = p_eam_wo_rec.organization_id;
852 
853 						    IF l_owning_department IS NOT NULL AND
854 						       l_owning_department <> FND_API.G_MISS_NUM THEN
855 						      x_eam_wo_rec.owning_department := l_owning_department;
856 						    END IF;
857 
858 						    IF l_priority IS NOT NULL AND
859 						       l_priority <> FND_API.G_MISS_NUM AND
860 						       p_eam_wo_rec.priority IS NULL /* Added for BUG#5609642 */
861 							THEN
862 						      x_eam_wo_rec.priority := l_priority;
863 						    END IF;
864 
865 						    IF x_eam_wo_rec.owning_department IS NULL THEN
866 							select default_department_id into x_eam_wo_rec.owning_department
867 							  from WIP_EAM_PARAMETERS
868 							  where organization_id = p_eam_wo_rec.organization_id;
869 						    END IF;
870 
871 							 -- added for bug 15984843
872  	               ELSIF  x_eam_wo_rec.owning_department IS NULL and (p_eam_wo_rec.maintenance_object_type = 2)
873  	                 -- Non-Serialized rebuild WO without Activity
874  	               THEN
875  	                                 BEGIN
876  	                                         SELECT
877  	                                                 p_eam_wo_rec.priority
878  	                                                 , nvl(p_eam_wo_rec.owning_department, eomd.owning_department_id)
879  	                                         INTO
880  	                                                 l_priority
881  	                                                 , l_owning_department
882  	                                         FROM
883  	                                                 csi_item_instances cii,
884  	                                                 eam_org_maint_defaults eomd
885  	                                         WHERE cii.instance_id = p_eam_wo_rec.maintenance_object_id
886  	                                           and eomd.object_type (+) = 40
887  	                                           and eomd.object_id (+) = cii.instance_id
888  	                                           and eomd.organization_id (+) = p_eam_wo_rec.organization_id;
889  	                                 EXCEPTION
890  	                                         WHEN OTHERS THEN
891  	                                                 NULL;
892  	                                 END;
893 
894  	                                 IF l_owning_department IS NOT NULL AND
895  	                                         l_owning_department <> FND_API.G_MISS_NUM
896  	                                 THEN
897  	                                         x_eam_wo_rec.owning_department := l_owning_department;
898  	                                 END IF;
899 
900  	                                 IF l_priority IS NOT NULL AND
901  	                                         l_priority <> FND_API.G_MISS_NUM AND
902  	                                         p_eam_wo_rec.priority IS NULL
903  	                                 THEN
904  	                                         x_eam_wo_rec.priority := l_priority;
905  	                                 END IF;
906 
907  	                                 IF x_eam_wo_rec.owning_department IS NULL
908  	                                 THEN
909  	                                         BEGIN
910  	                                                 select default_department_id into x_eam_wo_rec.owning_department
911  	                                                 from WIP_EAM_PARAMETERS
912  	                                                 where organization_id = p_eam_wo_rec.organization_id;
913  	                                         EXCEPTION
914  	                                                 WHEN OTHERS THEN
915  	                                                         NULL;
916  	                                         END;
917  	                 END IF;
918  	               -- end bug 15984843
919         END IF;
920 
921 
922 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('EAM_WO_DEFAULT_PVT.Attribute_Defaulting : Defaulting accounts'); END IF;
923 
924 
925                 -- Defaulting Accounts
926                 BEGIN
927                     SELECT
928                            material_account
929                          , material_overhead_account
930                          , resource_account
931                          , outside_processing_account
932                          , material_variance_account
933                          , resource_variance_account
934                          , outside_proc_variance_account
935                          , std_cost_adjustment_account
936                          , overhead_account
937                          , overhead_variance_account
938                     INTO
939                            l_material_account
940                          , l_material_overhead_account
941                          , l_resource_account
942                          , l_outside_processing_account
943                          , l_material_variance_account
944                          , l_resource_variance_account
945                          , l_osp_var_account
946                          , l_std_cost_adjustment_account
947                          , l_overhead_account
948                          , l_overhead_variance_account
949                     FROM   wip_accounting_classes
950                     WHERE
951                            class_code      = x_eam_wo_rec.class_code
952                       AND  organization_id = p_eam_wo_rec.organization_id;
953 
954                     x_eam_wo_rec.material_account := l_material_account;
955                     x_eam_wo_rec.material_overhead_account := l_material_overhead_account;
956                     x_eam_wo_rec.resource_account := l_resource_account;
957                     x_eam_wo_rec.outside_processing_account := l_outside_processing_account;
958                     x_eam_wo_rec.material_variance_account := l_material_variance_account;
959                     x_eam_wo_rec.resource_variance_account := l_resource_variance_account;
960                     x_eam_wo_rec.outside_proc_variance_account := l_osp_var_account;
961                     x_eam_wo_rec.std_cost_adjustment_account := l_std_cost_adjustment_account;
962                     x_eam_wo_rec.overhead_account := l_overhead_account;
963                     x_eam_wo_rec.overhead_variance_account := l_overhead_variance_account;
964 
965                   EXCEPTION
966                      WHEN NO_DATA_FOUND THEN
967 
968                           l_out_mesg_token_tbl := l_mesg_token_tbl;
969                           EAM_ERROR_MESSAGE_PVT.Add_Error_Token
970                           (  p_message_name  => 'EAM_WO_CLASS_CODE'
971                            , p_token_tbl     => l_token_tbl
972                            , p_mesg_token_tbl     => l_mesg_token_tbl
973                            , x_mesg_token_tbl     => l_out_mesg_token_tbl
974                            );
975                           l_mesg_token_tbl := l_out_mesg_token_tbl;
976 
977                           x_return_status := FND_API.G_RET_STS_ERROR;
978                           x_mesg_token_tbl := l_mesg_token_tbl ;
979 
980                      WHEN OTHERS THEN
981                           EAM_ERROR_MESSAGE_PVT.Add_Error_Token
982                           (  p_message_name       => NULL
983                            , p_message_text       => G_PKG_NAME || SQLERRM
984                            , x_mesg_token_Tbl     => x_mesg_token_tbl
985                           );
986 
987                         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
988                   END;
989 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('EAM_WO_DEFAULT_PVT.Attribute_Defaulting : Defaulting USER_DEFINED_STATUS_ID'); END IF;
990 
991 
992 		 --Default the User_Defined_Status_Id if it is not passed when creating a workorder. OR if system status is modified and neither the user_defined_status nor the pending flag are modfied
993 		 --Then also set the User_defined_status to the seeded status mapped to the System status
994 		 IF( p_eam_wo_rec.user_defined_status_id IS NULL  --create and user_defined_staus not provided
995 			 OR
996 			      (  p_eam_wo_rec.transaction_type=EAM_PROCESS_WO_PVT.G_OPR_UPDATE --workorder updated
997 			         AND (p_eam_wo_rec.status_type <> p_old_eam_wo_rec.status_type)   --system status updated
998 				 --netiher the user_defined_status nor the pending flag are modfied
999 				 AND NOT((p_eam_wo_rec.user_defined_status_id <> p_old_eam_wo_rec.user_defined_status_id) OR (NVL(p_eam_wo_rec.pending_flag,'N') <> NVL(p_old_eam_wo_rec.pending_flag,'N')))
1000 			      )
1001 		 )THEN
1002 			    x_eam_wo_rec.user_defined_status_id := p_eam_wo_rec.status_type;    --set the user_defined_status_id to status_type since status_id for seeded statuses will be same as status_type
1003 
1004 		 END IF; --end of check for defaulting user_defined_status
1005 
1006 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('EAM_WO_DEFAULT_PVT.Attribute_Defaulting : Defaulting ISSUE_ZERO_COST_FLAG'); END IF;
1007 
1008                 -- Defaulting ISSUE_ZERO_COST_FLAG
1009                 IF p_eam_wo_rec.issue_zero_cost_flag IS NULL OR
1010                    p_eam_wo_rec.issue_zero_cost_flag = FND_API.G_MISS_CHAR
1011                 THEN
1012                         SELECT
1013                                nvl(issue_zero_cost_flag,'N')
1014                         INTO   x_eam_wo_rec.issue_zero_cost_flag
1015                         FROM   wip_eam_parameters
1016                         WHERE  organization_id = p_eam_wo_rec.organization_id;
1017 
1018                 END IF;
1019 
1020 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('EAM_WO_DEFAULT_PVT.Attribute_Defaulting : PO creation time'); END IF;
1021 
1022                 -- Defaulting PO creation time
1023                 IF p_eam_wo_rec.po_creation_time IS NULL OR
1024                    p_eam_wo_rec.po_creation_time = FND_API.G_MISS_NUM
1025                 THEN
1026                         SELECT
1027                                po_creation_time
1028                         INTO   x_eam_wo_rec.po_creation_time
1029                         FROM   wip_parameters
1030                         WHERE  organization_id = p_eam_wo_rec.organization_id;
1031 
1032                 END IF;
1033 
1034 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('EAM_WO_DEFAULT_PVT.Attribute_Defaulting : Defaulting firm planned flag'); END IF;
1035 
1036                 -- Defaulting Firm Planned Flag
1037                 /*after WO defaults ER: firm flag defaults from activity assoc defaults: WIP_EAMWORKORDER_PVT.Get_EAM_ACT_Firm_Default
1038                   and this takes precedence hence added below x_eam_wo_rec.firm_planned_flag null check  */
1039 
1040                 IF x_eam_wo_rec.firm_planned_flag IS NULL
1041                 THEN
1042                     x_eam_wo_rec.firm_planned_flag := 2;
1043 
1044                 IF p_eam_wo_rec.firm_planned_flag IS NULL  OR
1045                    p_eam_wo_rec.firm_planned_flag = FND_API.G_MISS_NUM
1046                 THEN
1047 
1048 		   -- Defaulting Firm Planned Flag when auto firm flag on create checked.
1049 		   IF p_eam_wo_rec.transaction_type = EAM_PROCESS_WO_PUB.G_OPR_CREATE
1050 		   THEN
1051 		      select nvl(auto_firm_on_create,'N') into l_auto_firm_create_flag
1052                       from wip_eam_parameters
1053                       where organization_id = p_eam_wo_rec.organization_id;
1054                      IF l_auto_firm_create_flag = 'Y' THEN
1055                         x_eam_wo_rec.firm_planned_flag := 1;
1056                      END IF;
1057 		   END IF;
1058 
1059                 END IF;
1060 
1061                 END IF;
1062 
1063 
1064                 -- If updating a WO to relesed status and auto_firm_flag is
1065                 -- turned on, then firm the WO. Also if WO is created directly
1066                 -- in released status and auto firm is ON.
1067                 IF (p_eam_wo_rec.transaction_type = EAM_PROCESS_WO_PUB.G_OPR_UPDATE
1068                     and p_eam_wo_rec.status_type = 3 and
1069                     l_old_eam_wo_rec.status_type in (1,6,17)
1070                    )  OR
1071                    (p_eam_wo_rec.transaction_type = EAM_PROCESS_WO_PUB.G_OPR_CREATE
1072                     and p_eam_wo_rec.status_type = 3
1073                    )
1074                 THEN
1075                     select nvl(auto_firm_flag,'N') into l_auto_firm_flag
1076                       from wip_eam_parameters
1077                       where organization_id = p_eam_wo_rec.organization_id;
1078                     IF l_auto_firm_flag = 'Y' THEN
1079                       x_eam_wo_rec.firm_planned_flag := 1;
1080                     END IF;
1081                 END IF;
1082 
1083 
1084                 -- If updating a WO to relesaed status and auto_firm_flag is
1085                 -- turned on, then set the WO scheduled dates to the old values
1086                 -- . Otherwise, the date encompassment error will be thrown up.
1087                 IF (p_eam_wo_rec.transaction_type = EAM_PROCESS_WO_PUB.G_OPR_UPDATE
1088                     and p_eam_wo_rec.status_type = 3
1089                     and l_old_eam_wo_rec.status_type in (1,6,17)
1090 					and l_auto_firm_flag = 'Y'
1091                    )
1092 				THEN
1093 
1094 				  x_eam_wo_rec.scheduled_start_date := l_old_eam_wo_rec.scheduled_start_date;
1095 				  x_eam_wo_rec.scheduled_completion_date := l_old_eam_wo_rec.scheduled_completion_date;
1096 
1097 				END IF;
1098 
1099                 -- Defaulting Manual Rebuild Flag
1100 
1101                 IF p_eam_wo_rec.rebuild_item_id is not null AND
1102                    (p_eam_wo_rec.manual_rebuild_flag IS NULL OR
1103                     p_eam_wo_rec.manual_rebuild_flag = FND_API.G_MISS_CHAR)
1104                 THEN
1105                     x_eam_wo_rec.manual_rebuild_flag := 'Y';
1106 
1107                 END IF;
1108 
1109 
1110 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('EAM_WO_DEFAULT_PVT.Attribute_Defaulting : Defaulting scheduled start date and completion date from the PM Suggested Dates'); END IF;
1111 
1112                 -- Defaulting Scheduled Dates from the PM Suggested Dates
1113 
1114                 IF (p_eam_wo_rec.pm_suggested_start_date IS NOT NULL AND
1115                     p_eam_wo_rec.pm_suggested_start_date <> FND_API.G_MISS_DATE) OR
1116                    (p_eam_wo_rec.pm_suggested_end_date IS NOT NULL AND
1117                     p_eam_wo_rec.pm_suggested_end_date <> FND_API.G_MISS_DATE)
1118                 THEN
1119                         x_eam_wo_rec.requested_start_date := p_eam_wo_rec.pm_suggested_start_date;
1120                         x_eam_wo_rec.due_date := p_eam_wo_rec.pm_suggested_end_date;
1121 
1122                 END IF;
1123 
1124 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('EAM_WO_DEFAULT_PVT.Attribute_Defaulting : Defaulting scheduled start date and completion date'); END IF;
1125 
1126 
1127                 -- Defaulting Requested Start Date
1128 
1129                 IF p_eam_wo_rec.scheduled_start_date IS NOT NULL AND
1130                    p_eam_wo_rec.scheduled_start_date <> FND_API.G_MISS_DATE AND
1131                    p_eam_wo_rec.requested_start_date IS NULL AND
1132                    p_eam_wo_rec.due_date IS NULL and
1133 				   x_eam_wo_rec.requested_start_date IS NULL and
1134 				   x_eam_wo_rec.due_date IS NULL
1135                 THEN
1136                         x_eam_wo_rec.requested_start_date := p_eam_wo_rec.scheduled_start_date;
1137 
1138                 END IF;
1139 
1140 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('EAM_WO_DEFAULT_PVT.Attribute_Defaulting : Defaulting material_issue_by_mo flag'); END IF;
1141 
1142                 -- Defaulting the MATERIAL_ISSUE_BY_MO flag
1143 
1144                 IF p_eam_wo_rec.material_issue_by_mo IS NULL OR
1145                    p_eam_wo_rec.material_issue_by_mo = FND_API.G_MISS_CHAR
1146                 THEN
1147                   select nvl(material_issue_by_mo,'N')
1148                     into x_eam_wo_rec.material_issue_by_mo
1149                     from wip_eam_parameters
1150                     where organization_id = p_eam_wo_rec.organization_id;
1151                 END IF;
1152 
1153                 -- Defaulting the job_quantity
1154 
1155                 IF p_eam_wo_rec.job_quantity IS NULL OR
1156                    p_eam_wo_rec.job_quantity = FND_API.G_MISS_NUM
1157                 THEN
1158                   x_eam_wo_rec.job_quantity := 1;
1159                 END IF;
1160 
1161                 -- Defaulting the wip_supply_type
1162 
1163                 IF p_eam_wo_rec.wip_supply_type IS NULL OR
1164                    p_eam_wo_rec.wip_supply_type = FND_API.G_MISS_NUM
1165                 THEN
1166                   x_eam_wo_rec.wip_supply_type := 7;
1167                 END IF;
1168 
1169 
1170 		-- Defaulting the FAILURE_CODE_REQUIRED flag .. bug # 4709084
1171 
1172                 IF p_eam_wo_rec.failure_code_required IS NULL OR
1173                    p_eam_wo_rec.failure_code_required = FND_API.G_MISS_CHAR
1174                 THEN
1175                    x_eam_wo_rec.failure_code_required := 'N';
1176                 END IF;
1177 
1178 
1179                 l_out_eam_wo_rec := x_eam_wo_rec;
1180 
1181 		IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
1182 			EAM_ERROR_MESSAGE_PVT.Write_Debug(to_char(sysdate,'DD-MON-YY HH:MI:SS')||' EAM_WO_DEFAULT_PVT.Attribute_Defaulting :Calling get_flex_eam_wo');
1183 		END IF;
1184 
1185                 get_flex_eam_wo
1186                 (  p_eam_wo_rec => x_eam_wo_rec
1187                  , x_eam_wo_rec => l_out_eam_wo_rec
1188                  );
1189                 x_eam_wo_rec := l_out_eam_wo_rec;
1190 
1191 		IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
1192 			EAM_ERROR_MESSAGE_PVT.Write_Debug(to_char(sysdate,'DD-MON-YY HH:MI:SS')||' EAM_WO_DEFAULT_PVT.Attribute_Defaulting : End================');
1193 		END IF;
1194 
1195              EXCEPTION
1196                 WHEN OTHERS THEN
1197                      EAM_ERROR_MESSAGE_PVT.Add_Error_Token
1198                      (  p_message_name       => NULL
1199                       , p_message_text       => G_PKG_NAME || SQLERRM
1200                       , x_mesg_token_Tbl     => x_mesg_token_tbl
1201                      );
1202 
1203                     x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1204 
1205     END Attribute_Defaulting;
1206 
1207 
1208 
1209 
1210         PROCEDURE Conditional_Defaulting
1211         (  p_eam_wo_rec          IN  EAM_PROCESS_WO_PUB.eam_wo_rec_type
1212          , x_eam_wo_rec          OUT NOCOPY EAM_PROCESS_WO_PUB.eam_wo_rec_type
1213          , x_mesg_token_tbl          OUT NOCOPY EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type
1214          , x_return_status           OUT NOCOPY VARCHAR2
1215          )
1216         IS
1217 
1218              l_serial_number         varchar2(30);
1219              l_inventory_item_id     number;
1220              l_eam_item_type         number;
1221 
1222         BEGIN
1223 		IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
1224 			EAM_ERROR_MESSAGE_PVT.Write_Debug(to_char(sysdate,'DD-MON-YY HH:MI:SS')||' EAM_WO_DEFAULT_PVT.Conditional_Defaulting : Start================');
1225 		END IF;
1226 
1227                x_eam_wo_rec := p_eam_wo_rec;
1228                x_return_status := FND_API.G_RET_STS_SUCCESS;
1229 
1230 
1231                if (p_eam_wo_rec.maintenance_object_type = 3 and p_eam_wo_rec.maintenance_object_source = 1) then
1232 
1233                       select cii.serial_number
1234                            , cii.inventory_item_id
1235                            , msi.eam_item_type
1236                         into l_serial_number
1237                            , l_inventory_item_id
1238                            , l_eam_item_type
1239                         from csi_item_instances cii, mtl_system_items msi
1240                        where cii.last_vld_organization_id = msi.organization_id
1241                          and cii.inventory_item_id = msi.inventory_item_id
1242                          and cii.instance_id = p_eam_wo_rec.maintenance_object_id;
1243 
1244                        if l_eam_item_type = 1 then
1245                              x_eam_wo_rec.asset_number           := l_serial_number;
1246                        else
1247                              x_eam_wo_rec.rebuild_serial_number  := l_serial_number;
1248                        end if;
1249 
1250                elsif (p_eam_wo_rec.maintenance_object_type = 2) then
1251 
1252                       select inventory_item_id
1253                         into x_eam_wo_rec.rebuild_item_id
1254                         from mtl_system_items msi, mtl_parameters mp
1255                        where msi.organization_id = mp.organization_id
1256 					   and   mp.maint_organization_id = p_eam_wo_rec.organization_id
1257                          and msi.inventory_item_id = p_eam_wo_rec.maintenance_object_id
1258                          and rownum = 1;
1259 
1260                end if;
1261 
1262 		IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
1263 			EAM_ERROR_MESSAGE_PVT.Write_Debug(to_char(sysdate,'DD-MON-YY HH:MI:SS')||' EAM_WO_DEFAULT_PVT.Conditional_Defaulting : End================');
1264 		END IF;
1265 
1266                   EXCEPTION
1267                      WHEN OTHERS THEN
1268 
1269                           EAM_ERROR_MESSAGE_PVT.Add_Error_Token
1270                           (  p_message_name       => NULL
1271                            , p_message_text       => G_PKG_NAME || SQLERRM
1272                            , x_mesg_token_Tbl     => x_mesg_token_tbl
1273                           );
1274 
1275                         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1276 
1277         END Conditional_Defaulting;
1278 
1279 
1280 
1281         /******************************************************************
1282         * Procedure     : Populate_Null_Columns
1283         * Parameters IN : Work Order column record
1284         *                 Old Work Order Column Record
1285         * Parameters OUT NOCOPY: Work Order column record after populating
1286         * Purpose       : This procedure will look at the columns that the user
1287         *                 has not filled in and will assign those columns a
1288         *                 value from the old record.
1289         *                 This procedure is not called for CREATE
1290         ********************************************************************/
1291         PROCEDURE Populate_Null_Columns
1292         (  p_eam_wo_rec           IN  EAM_PROCESS_WO_PUB.eam_wo_rec_type
1293          , p_old_eam_wo_rec       IN  EAM_PROCESS_WO_PUB.eam_wo_rec_type
1294          , x_eam_wo_rec           OUT NOCOPY EAM_PROCESS_WO_PUB.eam_wo_rec_type
1295         )
1296         IS
1297         BEGIN
1298 		IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
1299 			EAM_ERROR_MESSAGE_PVT.Write_Debug(to_char(sysdate,'DD-MON-YY HH:MI:SS')||' EAM_WO_DEFAULT_PVT.Populate_Null_Columns : Start================');
1300 		END IF;
1301 
1302 		x_eam_wo_rec := p_eam_wo_rec;
1303                 x_eam_wo_rec := p_eam_wo_rec;
1304 
1305 IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Processing null columns prior update'); END IF;
1306 
1307 
1308                 IF p_eam_wo_rec.wip_entity_name IS NULL OR
1309                    p_eam_wo_rec.wip_entity_name = FND_API.G_MISS_CHAR
1310                 THEN
1311                         x_eam_wo_rec.wip_entity_name := p_old_eam_wo_rec.wip_entity_name;
1312                 END IF;
1313 
1314                 IF p_eam_wo_rec.description IS NULL
1315                 THEN
1316                         x_eam_wo_rec.description := p_old_eam_wo_rec.description;
1317                 END IF;
1318 
1319 		IF p_eam_wo_rec.description = FND_API.G_MISS_CHAR
1320 		THEN
1321 		    x_eam_wo_rec.description := NULL;
1322                 END IF;
1323 
1324                 IF p_eam_wo_rec.asset_number IS NULL
1325                 THEN
1326                         x_eam_wo_rec.asset_number := p_old_eam_wo_rec.asset_number;
1327                 END IF;
1328 
1329                 IF p_eam_wo_rec.asset_group_id IS NULL
1330                 THEN
1331                         x_eam_wo_rec.asset_group_id := p_old_eam_wo_rec.asset_group_id;
1332                 END IF;
1333 
1334                 IF p_eam_wo_rec.rebuild_serial_number IS NULL
1335                 THEN
1336                         x_eam_wo_rec.rebuild_serial_number := p_old_eam_wo_rec.rebuild_serial_number;
1337                 END IF;
1338 
1339                 IF p_eam_wo_rec.eam_linear_location_id IS NULL OR
1340                    p_eam_wo_rec.eam_linear_location_id = FND_API.G_MISS_NUM
1341                 THEN
1342                         x_eam_wo_rec.eam_linear_location_id := p_old_eam_wo_rec.eam_linear_location_id;
1343                 END IF;
1344 
1345                 IF p_eam_wo_rec.rebuild_item_id IS NULL
1346                 THEN
1347                         x_eam_wo_rec.rebuild_item_id := p_old_eam_wo_rec.rebuild_item_id;
1348                 END IF;
1349 
1350 		--if FND_API.G_MISS_xx is passed then set values to NULL
1351 		IF p_eam_wo_rec.asset_number = FND_API.G_MISS_CHAR
1352 		THEN
1353 		       x_eam_wo_rec.asset_number := NULL;
1354 		 END IF;
1355 
1356 		 IF p_eam_wo_rec.rebuild_serial_number = FND_API.G_MISS_CHAR
1357 		 THEN
1358 		       x_eam_wo_rec.rebuild_serial_number := NULL;
1359 		 END IF;
1360 
1361 		 IF p_eam_wo_rec.asset_group_id = FND_API.G_MISS_NUM
1362 		 THEN
1363 		      x_eam_wo_rec.asset_group_id := NULL;
1364 		  END IF;
1365 
1366 		  IF p_eam_wo_rec.rebuild_item_id = FND_API.G_MISS_NUM
1367 		  THEN
1368 		      x_eam_wo_rec.rebuild_item_id := NULL;
1369 		  END IF;
1370 
1371                 IF p_eam_wo_rec.class_code IS NULL OR
1372                    p_eam_wo_rec.class_code = FND_API.G_MISS_CHAR
1373                 THEN
1374                         x_eam_wo_rec.class_code := p_old_eam_wo_rec.class_code;
1375                 END IF;
1376 
1377             IF p_eam_wo_rec.asset_activity_id IS NULL --OR p_eam_wo_rec.asset_activity_id = FND_API.G_MISS_NUM
1378                 THEN
1379                         x_eam_wo_rec.asset_activity_id := p_old_eam_wo_rec.asset_activity_id;
1380                 END IF;
1381 
1382 		IF  p_eam_wo_rec.asset_activity_id = FND_API.G_MISS_NUM THEN
1383 			x_eam_wo_rec.asset_activity_id := NULL;
1384 		END IF;
1385 
1386 
1387                 IF p_eam_wo_rec.activity_type IS NULL
1388                 THEN
1389                         x_eam_wo_rec.activity_type := p_old_eam_wo_rec.activity_type;
1390                 END IF;
1391 
1392 		IF p_eam_wo_rec.activity_type = FND_API.G_MISS_CHAR
1393 		THEN
1394 		     x_eam_wo_rec.activity_type := NULL;
1395                 END IF;
1396 
1397                 IF p_eam_wo_rec.activity_cause IS NULL
1398                 THEN
1399                         x_eam_wo_rec.activity_cause := p_old_eam_wo_rec.activity_cause;
1400                 END IF;
1401 
1402 		IF p_eam_wo_rec.activity_cause = FND_API.G_MISS_CHAR
1403 		THEN
1404 		     x_eam_wo_rec.activity_cause := NULL;
1405                 END IF;
1406 
1407                 IF p_eam_wo_rec.activity_source IS NULL
1408                 THEN
1409                         x_eam_wo_rec.activity_source := p_old_eam_wo_rec.activity_source;
1410                 END IF;
1411 
1412 		IF p_eam_wo_rec.activity_source = FND_API.G_MISS_CHAR
1413 		THEN
1414 		     x_eam_wo_rec.activity_source := NULL;
1415                 END IF;
1416 
1417                 IF p_eam_wo_rec.status_type IS NULL OR
1418                    p_eam_wo_rec.status_type = FND_API.G_MISS_NUM
1419                 THEN
1420                         x_eam_wo_rec.status_type := p_old_eam_wo_rec.status_type;
1421                 END IF;
1422 
1423 		IF p_eam_wo_rec.user_defined_status_id IS NULL OR
1424                    p_eam_wo_rec.user_defined_status_id = FND_API.G_MISS_NUM
1425                 THEN
1426 			x_eam_wo_rec.user_defined_status_id := p_old_eam_wo_rec.user_defined_status_id;
1427                 END IF;
1428 
1429                 IF p_eam_wo_rec.job_quantity IS NULL OR
1430                    p_eam_wo_rec.job_quantity = FND_API.G_MISS_NUM
1431                 THEN
1432                         x_eam_wo_rec.job_quantity := p_old_eam_wo_rec.job_quantity;
1433                 END IF;
1434 
1435                 IF p_eam_wo_rec.date_released IS NULL OR
1436                    p_eam_wo_rec.date_released = FND_API.G_MISS_DATE
1437                 THEN
1438                         x_eam_wo_rec.date_released := p_old_eam_wo_rec.date_released;
1439                 END IF;
1440 
1441                 IF p_eam_wo_rec.owning_department IS NULL
1442                 THEN
1443                         x_eam_wo_rec.owning_department := p_old_eam_wo_rec.owning_department;
1444                 END IF;
1445 
1446                 IF p_eam_wo_rec.owning_department = FND_API.G_MISS_NUM
1447                 THEN
1448                         x_eam_wo_rec.owning_department := NULL;
1449                 END IF;
1450 
1451                 IF p_eam_wo_rec.priority IS NULL
1452                 THEN
1453                         x_eam_wo_rec.priority := p_old_eam_wo_rec.priority;
1454                 END IF;
1455 
1456 		IF p_eam_wo_rec.priority = FND_API.G_MISS_NUM
1457 		THEN
1458 		     x_eam_wo_rec.priority := NULL;
1459                 END IF;
1460 
1461 		 IF p_eam_wo_rec.work_order_type IS NULL
1462                 THEN
1463                         x_eam_wo_rec.work_order_type := p_old_eam_wo_rec.work_order_type;
1464                 END IF;
1465 
1466 		IF p_eam_wo_rec.work_order_type = FND_API.G_MISS_CHAR
1467 		THEN
1468 		     x_eam_wo_rec.work_order_type := NULL;
1469                 END IF;
1470 
1471                 -- Requested Start Date and Due date will have to be handled
1472                 -- together since only one of them can be not null
1473                 IF (p_eam_wo_rec.requested_start_date IS NULL OR
1474                     p_eam_wo_rec.requested_start_date = FND_API.G_MISS_DATE) AND
1475                    (p_eam_wo_rec.due_date IS NULL OR
1476                     p_eam_wo_rec.due_date = FND_API.G_MISS_DATE)
1477                 THEN
1478                         x_eam_wo_rec.requested_start_date := p_old_eam_wo_rec.requested_start_date;
1479                         x_eam_wo_rec.due_date := p_old_eam_wo_rec.due_date;
1480                 END IF;
1481 
1482 
1483 				/*
1484                 -- PM Suggested Start Date and PM Suggested End date will have to be handled
1485                 -- together since only one of them can be not null
1486                 IF (p_eam_wo_rec.pm_suggested_start_date IS NULL OR
1487                     p_eam_wo_rec.pm_suggested_start_date = FND_API.G_MISS_DATE) AND
1488                    (p_eam_wo_rec.pm_suggested_end_date IS NULL OR
1489                     p_eam_wo_rec.pm_suggested_end_date = FND_API.G_MISS_DATE)
1490                 THEN
1491                         x_eam_wo_rec.pm_suggested_start_date := p_old_eam_wo_rec.pm_suggested_start_date;
1492                         x_eam_wo_rec.pm_suggested_end_date := p_old_eam_wo_rec.pm_suggested_end_date;
1493                 END IF;
1494 				*/
1495 
1496 
1497                 IF p_eam_wo_rec.pm_base_meter_reading IS NULL OR
1498                    p_eam_wo_rec.pm_base_meter_reading = FND_API.G_MISS_NUM
1499                 THEN
1500                         x_eam_wo_rec.pm_base_meter_reading := p_old_eam_wo_rec.pm_base_meter_reading;
1501                 END IF;
1502 
1503                 IF p_eam_wo_rec.pm_base_meter IS NULL OR
1504                    p_eam_wo_rec.pm_base_meter = FND_API.G_MISS_NUM
1505                 THEN
1506                         x_eam_wo_rec.pm_base_meter := p_old_eam_wo_rec.pm_base_meter;
1507                 END IF;
1508 
1509 
1510                 IF p_eam_wo_rec.shutdown_type IS NULL
1511                 THEN
1512                         x_eam_wo_rec.shutdown_type := p_old_eam_wo_rec.shutdown_type;
1513                 END IF;
1514 
1515 		IF p_eam_wo_rec.shutdown_type = FND_API.G_MISS_CHAR
1516 		THEN
1517 		     x_eam_wo_rec.shutdown_type := NULL;
1518                 END IF;
1519 
1520                 IF p_eam_wo_rec.firm_planned_flag IS NULL OR
1521                    p_eam_wo_rec.firm_planned_flag = FND_API.G_MISS_NUM
1522                 THEN
1523                         x_eam_wo_rec.firm_planned_flag := p_old_eam_wo_rec.firm_planned_flag;
1524                 END IF;
1525 
1526                 IF p_eam_wo_rec.issue_zero_cost_flag IS NULL OR
1527                    p_eam_wo_rec.issue_zero_cost_flag = FND_API.G_MISS_CHAR
1528                 THEN
1529                         x_eam_wo_rec.issue_zero_cost_flag := p_old_eam_wo_rec.issue_zero_cost_flag;
1530                 END IF;
1531 
1532                 IF p_eam_wo_rec.notification_required IS NULL OR
1533                    p_eam_wo_rec.notification_required = FND_API.G_MISS_CHAR
1534                 THEN
1535                         x_eam_wo_rec.notification_required := p_old_eam_wo_rec.notification_required;
1536                 END IF;
1537 
1538                 IF p_eam_wo_rec.tagout_required IS NULL OR
1539                    p_eam_wo_rec.tagout_required = FND_API.G_MISS_CHAR
1540                 THEN
1541                         x_eam_wo_rec.tagout_required := p_old_eam_wo_rec.tagout_required;
1542                 END IF;
1543 
1544                 IF p_eam_wo_rec.plan_maintenance IS NULL OR
1545                    p_eam_wo_rec.plan_maintenance = FND_API.G_MISS_CHAR
1546                 THEN
1547                         x_eam_wo_rec.plan_maintenance := p_old_eam_wo_rec.plan_maintenance;
1548                 END IF;
1549 
1550 		/* commented for bug 5346446
1551                 IF p_eam_wo_rec.project_id IS NULL OR
1552                    p_eam_wo_rec.project_id = FND_API.G_MISS_NUM
1553                 THEN
1554                         x_eam_wo_rec.project_id := p_old_eam_wo_rec.project_id;
1555                 END IF;
1556 
1557                 IF p_eam_wo_rec.task_id IS NULL OR
1558                    p_eam_wo_rec.task_id = FND_API.G_MISS_NUM
1559                 THEN
1560                         x_eam_wo_rec.task_id := p_old_eam_wo_rec.task_id;
1561                 END IF;*/
1562 
1563 		/* Added for bug#5346446 Start */
1564 	        IF p_eam_wo_rec.project_id IS NULL THEN
1565                    x_eam_wo_rec.project_id := p_old_eam_wo_rec.project_id;
1566                 ELSIF p_eam_wo_rec.project_id = FND_API.G_MISS_NUM THEN
1567                    x_eam_wo_rec.project_id := NULL;
1568                 END IF;
1569 
1570                 IF p_eam_wo_rec.task_id IS NULL THEN
1571                    x_eam_wo_rec.task_id := p_old_eam_wo_rec.task_id;
1572                 ELSIF p_eam_wo_rec.task_id = FND_API.G_MISS_NUM THEN
1573                    x_eam_wo_rec.task_id := NULL;
1574                 END IF;
1575                 /* Added for bug#5346446 End */
1576 
1577                 IF p_eam_wo_rec.end_item_unit_number IS NULL OR
1578                    p_eam_wo_rec.end_item_unit_number = FND_API.G_MISS_NUM
1579                 THEN
1580                         x_eam_wo_rec.end_item_unit_number := p_old_eam_wo_rec.end_item_unit_number;
1581                 END IF;
1582 
1583                 IF p_eam_wo_rec.schedule_group_id IS NULL OR
1584                    p_eam_wo_rec.schedule_group_id = FND_API.G_MISS_NUM
1585                 THEN
1586 
1587                x_eam_wo_rec.schedule_group_id := p_old_eam_wo_rec.schedule_group_id;
1588                 END IF;
1589 
1590                 IF p_eam_wo_rec.bom_revision_date IS NULL OR
1591                    p_eam_wo_rec.bom_revision_date = FND_API.G_MISS_DATE
1592                 THEN
1593                         x_eam_wo_rec.bom_revision_date := p_old_eam_wo_rec.bom_revision_date;
1594                 END IF;
1595 
1596                 IF p_eam_wo_rec.routing_revision_date IS NULL OR
1597                    p_eam_wo_rec.routing_revision_date = FND_API.G_MISS_DATE
1598                 THEN
1599                         x_eam_wo_rec.routing_revision_date := p_old_eam_wo_rec.routing_revision_date;
1600                 END IF;
1601 
1602 
1603                 IF p_eam_wo_rec.alternate_routing_designator IS NULL OR
1604                    p_eam_wo_rec.alternate_routing_designator = FND_API.G_MISS_CHAR
1605                 THEN
1606                         x_eam_wo_rec.alternate_routing_designator := p_old_eam_wo_rec.alternate_routing_designator;
1607                 END IF;
1608 
1609                 IF p_eam_wo_rec.alternate_bom_designator IS NULL OR
1610                    p_eam_wo_rec.alternate_bom_designator = FND_API.G_MISS_NUM
1611                 THEN
1612                         x_eam_wo_rec.alternate_bom_designator := p_old_eam_wo_rec.alternate_bom_designator;
1613                 END IF;
1614 
1615                 IF p_eam_wo_rec.routing_revision IS NULL OR
1616                    p_eam_wo_rec.routing_revision = FND_API.G_MISS_CHAR
1617                 THEN
1618                         x_eam_wo_rec.routing_revision := p_old_eam_wo_rec.routing_revision;
1619                 END IF;
1620 
1621                 IF p_eam_wo_rec.bom_revision IS NULL OR
1622                    p_eam_wo_rec.bom_revision = FND_API.G_MISS_CHAR
1623                 THEN
1624                         x_eam_wo_rec.bom_revision := p_old_eam_wo_rec.bom_revision;
1625                 END IF;
1626 
1627                 IF p_eam_wo_rec.manual_rebuild_flag IS NULL OR
1628                    p_eam_wo_rec.manual_rebuild_flag = FND_API.G_MISS_CHAR
1629                 THEN
1630                         x_eam_wo_rec.manual_rebuild_flag := p_old_eam_wo_rec.manual_rebuild_flag;
1631                 END IF;
1632 
1633                 IF p_eam_wo_rec.material_account IS NULL OR
1634                    p_eam_wo_rec.material_account = FND_API.G_MISS_NUM
1635                 THEN
1636                         x_eam_wo_rec.material_account := p_old_eam_wo_rec.material_account;
1637                 END IF;
1638 
1639                 IF p_eam_wo_rec.material_overhead_account IS NULL OR
1640                    p_eam_wo_rec.material_overhead_account = FND_API.G_MISS_NUM
1641                 THEN
1642                         x_eam_wo_rec.material_overhead_account := p_old_eam_wo_rec.material_overhead_account;
1643                 END IF;
1644 
1645                 IF p_eam_wo_rec.resource_account IS NULL OR
1646                    p_eam_wo_rec.resource_account = FND_API.G_MISS_NUM
1647                 THEN
1648                         x_eam_wo_rec.resource_account := p_old_eam_wo_rec.resource_account;
1649                 END IF;
1650 
1651                 IF p_eam_wo_rec.outside_processing_account IS NULL OR
1652                    p_eam_wo_rec.outside_processing_account = FND_API.G_MISS_NUM
1653                 THEN
1654                         x_eam_wo_rec.outside_processing_account := p_old_eam_wo_rec.outside_processing_account;
1655                 END IF;
1656 
1657                 IF p_eam_wo_rec.material_variance_account IS NULL OR
1658                    p_eam_wo_rec.material_variance_account = FND_API.G_MISS_NUM
1659                 THEN
1660                         x_eam_wo_rec.material_variance_account := p_old_eam_wo_rec.material_variance_account;
1661                 END IF;
1662 
1663                 IF p_eam_wo_rec.resource_variance_account IS NULL OR
1664                    p_eam_wo_rec.resource_variance_account = FND_API.G_MISS_NUM
1665                 THEN
1666                         x_eam_wo_rec.resource_variance_account := p_old_eam_wo_rec.resource_variance_account;
1667                 END IF;
1668 
1669                 IF p_eam_wo_rec.outside_proc_variance_account IS NULL OR
1670                    p_eam_wo_rec.outside_proc_variance_account = FND_API.G_MISS_NUM
1671                 THEN
1672                         x_eam_wo_rec.outside_proc_variance_account := p_old_eam_wo_rec.outside_proc_variance_account;
1673                 END IF;
1674 
1675                 IF p_eam_wo_rec.std_cost_adjustment_account IS NULL OR
1676                    p_eam_wo_rec.std_cost_adjustment_account = FND_API.G_MISS_NUM
1677                 THEN
1678                         x_eam_wo_rec.std_cost_adjustment_account := p_old_eam_wo_rec.std_cost_adjustment_account;
1679                 END IF;
1680 
1681                 IF p_eam_wo_rec.overhead_account IS NULL OR
1682                    p_eam_wo_rec.overhead_account = FND_API.G_MISS_NUM
1683                 THEN
1684                         x_eam_wo_rec.overhead_account := p_old_eam_wo_rec.overhead_account;
1685                 END IF;
1686 
1687                 IF p_eam_wo_rec.overhead_variance_account IS NULL OR
1688                    p_eam_wo_rec.overhead_variance_account = FND_API.G_MISS_NUM
1689                 THEN
1690                         x_eam_wo_rec.overhead_variance_account := p_old_eam_wo_rec.overhead_variance_account;
1691                 END IF;
1692 
1693                 IF p_eam_wo_rec.scheduled_start_date IS NULL OR
1694                    p_eam_wo_rec.scheduled_start_date = FND_API.G_MISS_DATE
1695                 THEN
1696                         x_eam_wo_rec.scheduled_start_date := p_old_eam_wo_rec.scheduled_start_date;
1697                 END IF;
1698 
1699                 IF p_eam_wo_rec.scheduled_completion_date IS NULL OR
1700                    p_eam_wo_rec.scheduled_completion_date = FND_API.G_MISS_DATE
1701                 THEN
1702                         x_eam_wo_rec.scheduled_completion_date := p_old_eam_wo_rec.scheduled_completion_date;
1703                 END IF;
1704 
1705                 IF p_eam_wo_rec.common_bom_sequence_id IS NULL OR
1706                    p_eam_wo_rec.common_bom_sequence_id = FND_API.G_MISS_NUM
1707                 THEN
1708                         x_eam_wo_rec.common_bom_sequence_id := p_old_eam_wo_rec.common_bom_sequence_id;
1709                 END IF;
1710 
1711                 IF p_eam_wo_rec.common_routing_sequence_id IS NULL OR
1712                    p_eam_wo_rec.common_routing_sequence_id = FND_API.G_MISS_NUM
1713                 THEN
1714                         x_eam_wo_rec.common_routing_sequence_id := p_old_eam_wo_rec.common_routing_sequence_id;
1715                 END IF;
1716 
1717                 IF p_eam_wo_rec.source_line_id IS NULL OR
1718                    p_eam_wo_rec.source_line_id = FND_API.G_MISS_NUM
1719                 THEN
1720                         x_eam_wo_rec.source_line_id := p_old_eam_wo_rec.source_line_id;
1721                 END IF;
1722 
1723                 IF p_eam_wo_rec.source_code IS NULL OR
1724                    p_eam_wo_rec.source_code = FND_API.G_MISS_CHAR
1725                 THEN
1726                         x_eam_wo_rec.source_code := p_old_eam_wo_rec.source_code;
1727                 END IF;
1728 
1729                 IF p_eam_wo_rec.gen_object_id IS NULL OR
1730                    p_eam_wo_rec.gen_object_id = FND_API.G_MISS_NUM
1731                 THEN
1732                         x_eam_wo_rec.gen_object_id := p_old_eam_wo_rec.gen_object_id;
1733                 END IF;
1734 
1735                 IF p_eam_wo_rec.maintenance_object_id IS NULL OR
1736                    p_eam_wo_rec.maintenance_object_id = FND_API.G_MISS_NUM
1737                 THEN
1738                         x_eam_wo_rec.maintenance_object_id := p_old_eam_wo_rec.maintenance_object_id;
1739                 END IF;
1740 
1741                 IF p_eam_wo_rec.maintenance_object_type IS NULL OR
1742                    p_eam_wo_rec.maintenance_object_type = FND_API.G_MISS_NUM
1743                 THEN
1744                         x_eam_wo_rec.maintenance_object_type := p_old_eam_wo_rec.maintenance_object_type;
1745                 END IF;
1746 
1747                 IF p_eam_wo_rec.maintenance_object_source IS NULL OR
1748                    p_eam_wo_rec.maintenance_object_source = FND_API.G_MISS_NUM
1749                 THEN
1750                         x_eam_wo_rec.maintenance_object_source := p_old_eam_wo_rec.maintenance_object_source;
1751                 END IF;
1752 
1753                 --
1754                 -- Populate Null or missng flex field columns
1755                 --
1756                 IF p_eam_wo_rec.attribute_category IS NULL
1757                 THEN
1758                         x_eam_wo_rec.attribute_category := p_old_eam_wo_rec.attribute_category;
1759 
1760                 END IF;
1761 
1762 		IF p_eam_wo_rec.attribute_category = FND_API.G_MISS_CHAR
1763 		THEN
1764 		     x_eam_wo_rec.attribute_category := NULL;
1765                 END IF;
1766 
1767                 IF p_eam_wo_rec.attribute1 IS NULL
1768                 THEN
1769                         x_eam_wo_rec.attribute1  := p_old_eam_wo_rec.attribute1;
1770                 END IF;
1771 
1772 		IF p_eam_wo_rec.attribute1 = FND_API.G_MISS_CHAR
1773 		THEN
1774 		     x_eam_wo_rec.attribute1 := NULL;
1775                 END IF;
1776 
1777                 IF p_eam_wo_rec.attribute2 IS NULL
1778                 THEN
1779                         x_eam_wo_rec.attribute2  := p_old_eam_wo_rec.attribute2;
1780                 END IF;
1781 
1782 		IF p_eam_wo_rec.attribute2 = FND_API.G_MISS_CHAR
1783 		THEN
1784 		     x_eam_wo_rec.attribute2 := NULL;
1785                 END IF;
1786 
1787                 IF p_eam_wo_rec.attribute3  IS NULL
1788                 THEN
1789                         x_eam_wo_rec.attribute3  := p_old_eam_wo_rec.attribute3;
1790                 END IF;
1791 
1792 		IF p_eam_wo_rec.attribute3 = FND_API.G_MISS_CHAR
1793 		THEN
1794 		     x_eam_wo_rec.attribute3 := NULL;
1795                 END IF;
1796 
1797                 IF p_eam_wo_rec.attribute4  IS NULL
1798                 THEN
1799                         x_eam_wo_rec.attribute4  := p_old_eam_wo_rec.attribute4;
1800                 END IF;
1801 
1802 		IF p_eam_wo_rec.attribute4 = FND_API.G_MISS_CHAR
1803 		THEN
1804 		     x_eam_wo_rec.attribute4 := NULL;
1805                 END IF;
1806 
1807                 IF p_eam_wo_rec.attribute5  IS NULL
1808                 THEN
1809                         x_eam_wo_rec.attribute5  := p_old_eam_wo_rec.attribute5;
1810                 END IF;
1811 
1812 		IF p_eam_wo_rec.attribute5 = FND_API.G_MISS_CHAR
1813 		THEN
1814 		     x_eam_wo_rec.attribute5 := NULL;
1815                 END IF;
1816 
1817                 IF p_eam_wo_rec.attribute6  IS NULL
1818                 THEN
1819                         x_eam_wo_rec.attribute6  := p_old_eam_wo_rec.attribute6;
1820                 END IF;
1821 
1822 		IF p_eam_wo_rec.attribute6 = FND_API.G_MISS_CHAR
1823 		THEN
1824 		     x_eam_wo_rec.attribute6 := NULL;
1825                 END IF;
1826 
1827                 IF p_eam_wo_rec.attribute7  IS NULL
1828                 THEN
1829                         x_eam_wo_rec.attribute7  := p_old_eam_wo_rec.attribute7;
1830                 END IF;
1831 
1832 		IF p_eam_wo_rec.attribute7 = FND_API.G_MISS_CHAR
1833 		THEN
1834 		     x_eam_wo_rec.attribute7 := NULL;
1835                 END IF;
1836 
1837                 IF p_eam_wo_rec.attribute8  IS NULL
1838                 THEN
1839                         x_eam_wo_rec.attribute8  := p_old_eam_wo_rec.attribute8;
1840                 END IF;
1841 
1842 		IF p_eam_wo_rec.attribute8 = FND_API.G_MISS_CHAR
1843 		THEN
1844 		     x_eam_wo_rec.attribute8 := NULL;
1845                 END IF;
1846 
1847                 IF p_eam_wo_rec.attribute9  IS NULL
1848                 THEN
1849                         x_eam_wo_rec.attribute9  := p_old_eam_wo_rec.attribute9;
1850                 END IF;
1851 
1852 		IF p_eam_wo_rec.attribute9 = FND_API.G_MISS_CHAR
1853 		THEN
1854 		     x_eam_wo_rec.attribute9 := NULL;
1855                 END IF;
1856 
1857                 IF p_eam_wo_rec.attribute10  IS NULL
1858                 THEN
1859                         x_eam_wo_rec.attribute10 := p_old_eam_wo_rec.attribute10;
1860                 END IF;
1861 
1862 		IF p_eam_wo_rec.attribute10 = FND_API.G_MISS_CHAR
1863 		THEN
1864 		     x_eam_wo_rec.attribute10 := NULL;
1865                 END IF;
1866 
1867                 IF p_eam_wo_rec.attribute11  IS NULL
1868                 THEN
1869                         x_eam_wo_rec.attribute11 := p_old_eam_wo_rec.attribute11;
1870                 END IF;
1871 
1872 		IF p_eam_wo_rec.attribute11 = FND_API.G_MISS_CHAR
1873 		THEN
1874 		     x_eam_wo_rec.attribute11 := NULL;
1875                 END IF;
1876 
1877                 IF p_eam_wo_rec.attribute12  IS NULL
1878                 THEN
1879                         x_eam_wo_rec.attribute12 := p_old_eam_wo_rec.attribute12;
1880                 END IF;
1881 
1882 		IF p_eam_wo_rec.attribute12 = FND_API.G_MISS_CHAR
1883 		THEN
1884 		     x_eam_wo_rec.attribute12 := NULL;
1885                 END IF;
1886 
1887                 IF p_eam_wo_rec.attribute13  IS NULL
1888                 THEN
1889                         x_eam_wo_rec.attribute13 := p_old_eam_wo_rec.attribute13;
1890                 END IF;
1891 
1892 		IF p_eam_wo_rec.attribute13 = FND_API.G_MISS_CHAR
1893 		THEN
1894 		     x_eam_wo_rec.attribute13 := NULL;
1895                 END IF;
1896 
1897                 IF p_eam_wo_rec.attribute14  IS NULL
1898                 THEN
1899                         x_eam_wo_rec.attribute14 := p_old_eam_wo_rec.attribute14;
1900                 END IF;
1901 
1902 		IF p_eam_wo_rec.attribute14 = FND_API.G_MISS_CHAR
1903 		THEN
1904 		     x_eam_wo_rec.attribute14 := NULL;
1905                 END IF;
1906 
1907                 IF p_eam_wo_rec.attribute15  IS NULL
1908                 THEN
1909                         x_eam_wo_rec.attribute15 := p_old_eam_wo_rec.attribute15;
1910                 END IF;
1911 
1912 		IF p_eam_wo_rec.attribute15 = FND_API.G_MISS_CHAR
1913 		THEN
1914 		     x_eam_wo_rec.attribute15 := NULL;
1915                 END IF;
1916 
1917 		-- Added for bug 12690042
1918                 IF p_eam_wo_rec.parent_wip_entity_id = FND_API.G_MISS_NUM OR
1919                       p_eam_wo_rec.parent_wip_entity_id IS NULL
1920                 THEN
1921                       x_eam_wo_rec.parent_wip_entity_id := p_old_eam_wo_rec.parent_wip_entity_id;
1922                 END IF;
1923 
1924                 -- MATERIAL_ISSUE_BY_MO flag
1925                 IF p_eam_wo_rec.material_issue_by_mo = FND_API.G_MISS_CHAR OR
1926                    p_eam_wo_rec.material_issue_by_mo IS NULL
1927                 THEN
1928                         x_eam_wo_rec.material_issue_by_mo := p_old_eam_wo_rec.material_issue_by_mo;
1929                 END IF;
1930 
1931                 IF p_eam_wo_rec.pending_flag = FND_API.G_MISS_CHAR OR
1932                    p_eam_wo_rec.pending_flag IS NULL
1933                 THEN
1934                         x_eam_wo_rec.pending_flag := p_old_eam_wo_rec.pending_flag;
1935                 END IF;
1936 
1937 		IF p_eam_wo_rec.material_shortage_check_date = FND_API.G_MISS_DATE OR
1938                    p_eam_wo_rec.material_shortage_check_date IS NULL
1939                 THEN
1940                         x_eam_wo_rec.material_shortage_check_date := p_old_eam_wo_rec.material_shortage_check_date;
1941                 END IF;
1942 
1943 		IF p_eam_wo_rec.material_shortage_flag = FND_API.G_MISS_NUM OR
1944                    p_eam_wo_rec.material_shortage_flag IS NULL
1945                 THEN
1946                         x_eam_wo_rec.material_shortage_flag := p_old_eam_wo_rec.material_shortage_flag;
1947                 END IF;
1948 
1949 		IF p_eam_wo_rec.workflow_type = FND_API.G_MISS_NUM OR
1950                    p_eam_wo_rec.workflow_type IS NULL
1951                 THEN
1952                         x_eam_wo_rec.workflow_type := p_old_eam_wo_rec.workflow_type;
1953                 END IF;
1954 
1955 		IF p_eam_wo_rec.warranty_claim_status = FND_API.G_MISS_NUM OR
1956                    p_eam_wo_rec.warranty_claim_status IS NULL
1957                 THEN
1958                         x_eam_wo_rec.warranty_claim_status := p_old_eam_wo_rec.warranty_claim_status;
1959                 END IF;
1960 
1961 		IF p_eam_wo_rec.cycle_id = FND_API.G_MISS_NUM OR
1962                    p_eam_wo_rec.cycle_id IS NULL
1963                 THEN
1964                         x_eam_wo_rec.cycle_id := p_old_eam_wo_rec.cycle_id;
1965                 END IF;
1966 
1967 		IF p_eam_wo_rec.seq_id = FND_API.G_MISS_NUM OR
1968                    p_eam_wo_rec.seq_id IS NULL
1969                 THEN
1970                         x_eam_wo_rec.seq_id := p_old_eam_wo_rec.seq_id;
1971                 END IF;
1972 
1973 		IF p_eam_wo_rec.ds_scheduled_flag = FND_API.G_MISS_CHAR OR
1974                    p_eam_wo_rec.ds_scheduled_flag IS NULL
1975                 THEN
1976                         x_eam_wo_rec.ds_scheduled_flag := p_old_eam_wo_rec.ds_scheduled_flag;
1977                 END IF;
1978 
1979 		IF p_eam_wo_rec.assignment_complete = FND_API.G_MISS_CHAR OR
1980 		   p_eam_wo_rec.assignment_complete IS NULL
1981 		THEN
1982 			x_eam_wo_rec.assignment_complete := p_old_eam_wo_rec.assignment_complete;
1983 		END IF;
1984 
1985 		IF p_eam_wo_rec.warranty_active = FND_API.G_MISS_NUM OR
1986                    p_eam_wo_rec.warranty_active IS NULL
1987                 THEN
1988                         x_eam_wo_rec.warranty_active := p_old_eam_wo_rec.warranty_active;
1989                 END IF;
1990 
1991 		-- Bug # 4709084 : Failure Analysis project.
1992 
1993 		IF p_eam_wo_rec.failure_code_required IS NULL
1994                 THEN
1995                         x_eam_wo_rec.failure_code_required := p_old_eam_wo_rec.failure_code_required;
1996                 END IF;
1997 
1998 		IF p_eam_wo_rec.failure_code_required = FND_API.G_MISS_CHAR
1999 		THEN
2000 		     x_eam_wo_rec.failure_code_required := 'N';  -- As NULL Is same as 'N'
2001                 END IF;
2002 
2003 
2004 		IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('DEAM_WO_DEFAULT_PVT.Populate_Null_Columns : one processing null columns prior update'); END IF;
2005 
2006 		IF EAM_PROCESS_WO_PVT.Get_Debug = 'Y' THEN
2007 			EAM_ERROR_MESSAGE_PVT.Write_Debug(to_char(sysdate,'DD-MON-YY HH:MI:SS')||' EAM_WO_DEFAULT_PVT.Populate_Null_Columns : End================');
2008 		END IF;
2009 
2010 
2011         END Populate_Null_Columns;
2012 
2013 END EAM_WO_DEFAULT_PVT;