DBA Data[Home] [Help]

PACKAGE BODY: APPS.EAM_WORKORDER_PKG

Source


1 PACKAGE BODY EAM_WORKORDER_PKG as
2 /* $Header: EAMWOTHB.pls 120.10.12020000.2 2013/01/18 10:14:56 fqu ship $ */
3 
4 
5 
6 
7 PROCEDURE Update_Genealogy(       X_wip_entity_id            IN  NUMBER,
8                                   X_organization_id          IN  NUMBER,
9                                   X_parent_wip_entity_id     IN	 NUMBER,
10 	           	                  X_rebuild_item_id		     IN  NUMBER,
11 	           	                  X_rebuild_serial_number    IN	 VARCHAR2,
12 	           	                  X_manual_rebuild_flag	     IN	 VARCHAR2,
13 								  x_maintenance_object_type  IN  NUMBER,
14 								  x_maintenance_object_id    IN  Number ) IS
15                 l_serial_status    NUMBER;
16 
17 x_returnStatus   varchar2(5);
18 l_msgCount Number;
19 l_msgData   varchar2(100);
20 l_error_message varchar2(4000);
21 l_status WIP_DISCRETE_JOBS.status_type%TYPE;
22 
23 BEGIN
24 
25 --added the following procedure to fix bug number 2899984. This procedure checks to see if
26 -- the rebuild serial number is provided on creating a new rebuild work order for serialized
27 --rebuild item. If so then it will update the genealogy of the parent asset or rebuild item.
28 
29 
30 /* It will no longer be possible to define work orders on rebuilds in
31    Pre-defined status (Current Status = 1). Hence, the following check
32    is unnecessry. Commenting the code below */
33 
34 /* IB Component of Configuration should be updated as well */
35 
36 if ((X_parent_wip_entity_id is not null) and (X_manual_rebuild_flag= 'N'))  then
37 
38 Begin
39 
40 wip_eam_genealogy_pvt.update_eam_genealogy(
41 p_api_version => 1.0,
42 p_object_type => 2, -- serial number
43 p_serial_number => X_rebuild_serial_number,
44 p_inventory_item_id => X_rebuild_item_id,
45 p_organization_id => X_Organization_Id,
46 p_genealogy_type => 5, -- asset item relationship
47 p_end_date_active => sysdate,
48 x_return_status => x_returnStatus,
49 x_msg_count => l_msgCount,
50 x_msg_data => l_msgData);
51 
52 if (x_maintenance_object_type = 3) then
53 
54 select status_type
55 into l_status
56 from wip_discrete_jobs
57 where wip_entity_id = X_parent_wip_entity_id
58 and organization_id = X_organization_id;
59 
60 if (l_status in (12, 14, 15, 4, 5, 7)) then
61 
62 csi_eam_interface_grp.rebuildable_return(
63 p_wip_entity_id => X_parent_wip_entity_id,
64 p_organization_id => X_organization_id,
65 p_instance_id => x_maintenance_object_id,
66 x_return_status => x_returnStatus,
67 x_error_message => l_error_message
68 );
69 end if;
70 
71 end if;
72 
73 EXCEPTION
74 
75    WHEN OTHERS THEN
76       FND_MESSAGE.SET_NAME('EAM','EAM_UPDATE_GENEALOGY_FAIL');
77       FND_MESSAGE.RAISE_ERROR;
78       APP_EXCEPTION.RAISE_EXCEPTION;
79 
80 END;
81 
82 end if; -- if clause to update the genealogy of the asset
83 
84 
85 
86 END Update_Genealogy;
87 
88 /*cboppana --Added this function to create a work order.This calls the Work Order api */
89 PROCEDURE Create_Workorder(X_Rowid            IN OUT NOCOPY VARCHAR2,
90                 X_wip_entity_id         IN OUT NOCOPY NUMBER,
91                 X_organization_id               NUMBER,
92                 X_last_update_date            DATE,
93                 X_last_updated_by                NUMBER,
94                 X_creation_date                 DATE,
95                 X_created_by                    NUMBER,
96                 X_last_update_login             NUMBER,
97                 X_description           IN OUT  NOCOPY  VARCHAR2,
98                 X_status_type           IN OUT NOCOPY        NUMBER,
99 		X_user_defined_status_id IN OUT NOCOPY	NUMBER,
100 		X_pending_flag		IN OUT NOCOPY	VARCHAR2,
101 		X_workflow_type		IN OUT NOCOPY	NUMBER ,
102 		X_warranty_claim_status	IN OUT NOCOPY	NUMBER,
103 
104 		X_material_shortage_flag	IN OUT NOCOPY	NUMBER,
105 		X_material_shortage_check_date	IN OUT NOCOPY	DATE,
106 
107 		X_primary_item_id               NUMBER,
108 		X_parent_wip_entity_id		NUMBER,
109 		X_asset_number			VARCHAR2,
110 		X_asset_group_id		NUMBER,
111 		X_pm_schedule_id		NUMBER,
112 		X_rebuild_item_id		NUMBER,
113 		X_rebuild_serial_number		VARCHAR2,
114 		X_manual_rebuild_flag	IN OUT NOCOPY	VARCHAR2,
115 		X_shutdown_type		IN OUT NOCOPY	VARCHAR2,
116 		X_tagout_required	IN OUT NOCOPY	VARCHAR2,
117 		X_plan_maintenance	IN OUT NOCOPY	VARCHAR2,
118 		X_estimation_status		VARCHAR2,
119 		X_requested_start_date	IN OUT NOCOPY	DATE,
120 		X_requested_due_date	IN OUT NOCOPY	DATE,
121 		X_notification_required	IN OUT NOCOPY	VARCHAR2,
122 		X_work_order_type	IN OUT NOCOPY	VARCHAR2,
123 		X_owning_department	IN OUT NOCOPY	NUMBER,
124 		X_planner_maintenance IN OUT NOCOPY NUMBER,
125 		X_activity_type		IN OUT NOCOPY	VARCHAR2,
126 		X_activity_cause	IN OUT NOCOPY	VARCHAR2,
127                 X_firm_planned_flag     IN OUT NOCOPY        NUMBER,
128                 X_job_type                    NUMBER:= 3,
129                 X_wip_supply_type              NUMBER := 7,
130                 X_class_code            IN OUT NOCOPY      VARCHAR2,
131                 X_material_account       IN OUT NOCOPY       NUMBER,
132                 X_material_overhead_account IN OUT NOCOPY    NUMBER,
133                 X_resource_account        IN OUT NOCOPY      NUMBER,
134                 X_outside_processing_account IN OUT NOCOPY   NUMBER,
135                 X_material_variance_account  IN OUT NOCOPY   NUMBER,
136                 X_resource_variance_account  IN OUT NOCOPY   NUMBER,
137                 X_outside_proc_var_account IN OUT NOCOPY	NUMBER,
138                 X_std_cost_adjustment_account IN OUT NOCOPY  NUMBER,
139                 X_overhead_account    IN OUT NOCOPY         NUMBER,
140                 X_overhead_variance_account  IN OUT NOCOPY   NUMBER,
141                 X_scheduled_start_date   IN OUT NOCOPY      DATE,
142                 X_date_released                DATE,
143                 X_scheduled_completion_date  IN OUT NOCOPY   DATE,
144                 X_date_completed               DATE,
145                 X_date_closed                  DATE,
146                 X_start_quantity	  NUMBER := 1,
147 		X_overcompletion_toleran_type 	NUMBER	:= null,
148 		X_overcompletion_toleran_value  NUMBER	:= null,
149 		X_quantity_completed		NUMBER	:= 0,
150 		X_quantity_scrapped		NUMBER	:= 0,
151 		X_net_quantity			NUMBER	:= 1,
152                 X_bom_reference_id             NUMBER,
153                 X_routing_reference_id         NUMBER,
154                 X_common_bom_sequence_id    IN OUT NOCOPY    NUMBER,
155                 X_common_routing_sequence_id  IN OUT NOCOPY NUMBER,
156                 X_bom_revision        IN OUT NOCOPY        VARCHAR2,
157                 X_routing_revision      IN OUT NOCOPY       VARCHAR2,
158                 X_bom_revision_date      IN OUT NOCOPY      DATE,
159                 X_routing_revision_date   IN OUT NOCOPY  DATE,
160                 X_lot_number                    VARCHAR2,
161                 X_alternate_bom_designator   IN OUT NOCOPY  VARCHAR2,
162                 X_alternate_routing_designator IN OUT NOCOPY VARCHAR2,
163                 X_completion_subinventory      VARCHAR2,
164                 X_completion_locator_id        NUMBER,
165                 X_demand_class               VARCHAR2,
166                 X_attribute_category    IN OUT NOCOPY      VARCHAR2,
167                 X_attribute1        IN OUT NOCOPY          VARCHAR2,
168                 X_attribute2      IN OUT NOCOPY          VARCHAR2,
169                 X_attribute3       IN OUT NOCOPY             VARCHAR2,
170                 X_attribute4      IN OUT NOCOPY            VARCHAR2,
171                 X_attribute5      IN OUT NOCOPY              VARCHAR2,
172                 X_attribute6       IN OUT NOCOPY       VARCHAR2,
173                 X_attribute7       IN OUT NOCOPY            VARCHAR2,
174                 X_attribute8      IN OUT NOCOPY             VARCHAR2,
175                 X_attribute9       IN OUT NOCOPY             VARCHAR2,
176                 X_attribute10      IN OUT NOCOPY            VARCHAR2,
177                 X_attribute11       IN OUT NOCOPY           VARCHAR2,
178                 X_attribute12      IN OUT NOCOPY            VARCHAR2,
179                 X_attribute13      IN OUT NOCOPY           VARCHAR2,
180                 X_attribute14     IN OUT NOCOPY             VARCHAR2,
181                 X_attribute15     IN OUT NOCOPY            VARCHAR2,
182 		X_We_Rowid		IN OUT NOCOPY  VARCHAR2,
183 		X_Entity_Type			NUMBER,
184 		X_Wip_Entity_Name		VARCHAR2,
185                 X_Schedule_Group_Id         NUMBER default null,
186                 X_Build_Sequence                NUMBER default null,
187                 X_Line_Id                       NUMBER default null,
188 		X_Project_Id			NUMBER,
189 		X_Task_Id			NUMBER,
190                 X_end_item_unit_number       VARCHAR2 default null,
191 		X_po_creation_time		NUMBER default 1,
192                 X_priority          IN OUT NOCOPY            NUMBER ,
193                 X_due_date                     DATE default null,
194                 X_maintenance_object_id         NUMBER,
195 		X_maintenance_object_source     NUMBER,
196 		X_maintenance_object_type       NUMBER,
197 		X_material_issue_by_mo     IN OUT NOCOPY     VARCHAR2,
198 		X_activity_source       IN OUT NOCOPY        VARCHAR2,
199                 X_Parent_Wip_Name                 VARCHAR2 := null,
200                 X_Relationship_Type              NUMBER := null,
201                 X_Relation_Status        IN OUT NOCOPY VARCHAR2,
202 		x_failure_code_required  IN OUT NOCOPY VARCHAR2,
203                 x_eam_failure_entry_record IN OUT NOCOPY eam_process_failure_entry_pub.eam_failure_entry_record_typ ,
204                 x_eam_failure_codes_tbl    IN OUT NOCOPY eam_process_failure_entry_pub.eam_failure_codes_tbl_typ
205 		) IS
206 
207                 -- Bug # 2251186
208                 l_errbuf        VARCHAR2(1000) ;
209                 l_retcode       NUMBER := 0;
210                 l_return_status  VARCHAR2(80) :='';
211                 l_msg_data       VARCHAR2(2000) := '';
212                 l_msg_count      NUMBER;
213 
214 
215 	l_workorder_rec		EAM_PROCESS_WO_PUB.eam_wo_rec_type;
216 	l_workorder_rec1	EAM_PROCESS_WO_PUB.eam_wo_rec_type;
217 	l_eam_op_tbl		EAM_PROCESS_WO_PUB.eam_op_tbl_type;
218 	l_eam_op_tbl1		EAM_PROCESS_WO_PUB.eam_op_tbl_type;
219 	l_eam_op_tbl2		EAM_PROCESS_WO_PUB.eam_op_tbl_type;
220 	l_eam_op_network_tbl	EAM_PROCESS_WO_PUB.eam_op_network_tbl_type;
221 	l_eam_op_network_tbl1	EAM_PROCESS_WO_PUB.eam_op_network_tbl_type;
222 	l_eam_op_network_tbl2	EAM_PROCESS_WO_PUB.eam_op_network_tbl_type;
223 	l_eam_res_tbl		EAM_PROCESS_WO_PUB.eam_res_tbl_type;
224 	l_eam_res_tbl1		EAM_PROCESS_WO_PUB.eam_res_tbl_type;
225 	l_eam_res_tbl2		EAM_PROCESS_WO_PUB.eam_res_tbl_type;
226 	l_eam_res_inst_tbl	EAM_PROCESS_WO_PUB.eam_res_inst_tbl_type;
227 	l_eam_res_inst_tbl1	EAM_PROCESS_WO_PUB.eam_res_inst_tbl_type;
228 	l_eam_res_inst_tbl2	EAM_PROCESS_WO_PUB.eam_res_inst_tbl_type;
229 	l_eam_sub_res_tbl	EAM_PROCESS_WO_PUB.eam_sub_res_tbl_type;
230 	l_eam_sub_res_tbl1	EAM_PROCESS_WO_PUB.eam_sub_res_tbl_type;
231 	l_eam_sub_res_tbl2	EAM_PROCESS_WO_PUB.eam_sub_res_tbl_type;
232 	l_eam_res_usage_tbl	EAM_PROCESS_WO_PUB.eam_res_usage_tbl_type;
233 	l_eam_res_usage_tbl1	EAM_PROCESS_WO_PUB.eam_res_usage_tbl_type;
234 	l_eam_res_usage_tbl2	EAM_PROCESS_WO_PUB.eam_res_usage_tbl_type;
235 	l_eam_mat_req_tbl	EAM_PROCESS_WO_PUB.eam_mat_req_tbl_type;
236 	l_eam_mat_req_tbl1	EAM_PROCESS_WO_PUB.eam_mat_req_tbl_type;
237 	l_eam_mat_req_tbl2	EAM_PROCESS_WO_PUB.eam_mat_req_tbl_type;
238 	l_eam_wo_comp_tbl         EAM_PROCESS_WO_PUB.eam_wo_comp_tbl_type;
239         l_eam_wo_quality_tbl      EAM_PROCESS_WO_PUB.eam_wo_quality_tbl_type;
240         l_eam_meter_reading_tbl   EAM_PROCESS_WO_PUB.eam_meter_reading_tbl_type;
241         l_eam_wo_comp_rebuild_tbl EAM_PROCESS_WO_PUB.eam_wo_comp_rebuild_tbl_type;
242         l_eam_wo_comp_mr_read_tbl EAM_PROCESS_WO_PUB.eam_wo_comp_mr_read_tbl_type;
243         l_eam_op_comp_tbl         EAM_PROCESS_WO_PUB.eam_op_comp_tbl_type;
244 	l_eam_request_tbl         EAM_PROCESS_WO_PUB.eam_request_tbl_type;
245 
246 	l_eam_direct_items_tbl	    EAM_PROCESS_WO_PUB.eam_direct_items_tbl_type;
247 	l_eam_direct_items_tbl_1    EAM_PROCESS_WO_PUB.eam_direct_items_tbl_type;
248 
249 	l_eam_wo_relations_tbl      EAM_PROCESS_WO_PUB.eam_wo_relations_tbl_type;
250 	l_eam_wo_relations_tbl1     EAM_PROCESS_WO_PUB.eam_wo_relations_tbl_type;
251 	l_eam_wo_relations_tbl2     EAM_PROCESS_WO_PUB.eam_wo_relations_tbl_type;
252 	l_eam_wo_relations_rec1     EAM_PROCESS_WO_PUB.eam_wo_relations_rec_type;
253 	l_eam_wo_relations_rec2     EAM_PROCESS_WO_PUB.eam_wo_relations_rec_type;
254 	l_eam_wo_relations_rec3     EAM_PROCESS_WO_PUB.eam_wo_relations_rec_type;
255 	l_eam_wo_relations_rec4     EAM_PROCESS_WO_PUB.eam_wo_relations_rec_type;
256 	l_eam_wo_tbl                EAM_PROCESS_WO_PUB.eam_wo_tbl_type;
257 	l_eam_wo_tbl1               EAM_PROCESS_WO_PUB.eam_wo_tbl_type;
258 	l_eam_wo_tbl2               EAM_PROCESS_WO_PUB.eam_wo_tbl_type;
259 
260 	l_eam_wo_comp_tbl_1         EAM_PROCESS_WO_PUB.eam_wo_comp_tbl_type;
261         l_eam_wo_quality_tbl_1      EAM_PROCESS_WO_PUB.eam_wo_quality_tbl_type;
262         l_eam_meter_reading_tbl_1   EAM_PROCESS_WO_PUB.eam_meter_reading_tbl_type;
263         l_eam_wo_comp_rebuild_tbl_1 EAM_PROCESS_WO_PUB.eam_wo_comp_rebuild_tbl_type;
264         l_eam_wo_comp_mr_read_tbl_1 EAM_PROCESS_WO_PUB.eam_wo_comp_mr_read_tbl_type;
265         l_eam_op_comp_tbl_1         EAM_PROCESS_WO_PUB.eam_op_comp_tbl_type;
266 	l_eam_request_tbl_1         EAM_PROCESS_WO_PUB.eam_request_tbl_type;
267         l_eam_counter_prop_tbl     EAM_PROCESS_WO_PUB.eam_counter_prop_tbl_type;
268 	l_out_eam_counter_prop_tbl    EAM_PROCESS_WO_PUB.eam_counter_prop_tbl_type;
269 
270 	l_eam_msg_tbl  EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type;
271 
272 	l_user_id NUMBER;
273 	l_responsibility_id NUMBER;
274 
275 	l_message_text  VARCHAR2(1000);
276 	l_entity_index      NUMBER;
277 	l_entity_id         VARCHAR2(100);
278 	l_message_type      VARCHAR2(100);
279 	l_description       VARCHAR2(240);
280 	l_Expand_Parent       VARCHAR2(100);
281 	temp NUMBER;
282 	l_output_dir  VARCHAR2(512);
283         l_err_text      VARCHAR2(2000);
284         l_eam_failure_entry_record eam_process_failure_entry_pub.eam_failure_entry_record_typ ;
285         l_eam_failure_codes_tbl    eam_process_failure_entry_pub.eam_failure_codes_tbl_typ;
286 
287 
288 BEGIN
289 
290  SAVEPOINT CREATE_WO;
291 
292   l_eam_failure_entry_record := x_eam_failure_entry_record;
293   l_eam_failure_codes_tbl    := x_eam_failure_codes_tbl;
294 
295 
296   /* get output directory path from database */
297    EAM_WORKORDER_UTIL_PKG.log_path(l_output_dir);
298 
299               l_user_id := fnd_global.user_id;
300               l_workorder_rec.user_id := l_user_id;
301               l_responsibility_id := fnd_global.resp_id;
302               l_workorder_rec.responsibility_id := l_responsibility_id;
303               l_workorder_rec.header_id  := 1;
304               l_workorder_rec.batch_id   := 1;
305               --l_workorder_rec.p_commit := FND_API.G_TRUE;
306 
307               l_workorder_rec.return_status := null;
308               l_workorder_rec.wip_entity_name := X_Wip_Entity_Name;
309               l_workorder_rec.wip_entity_id := null;
310               l_workorder_rec.organization_id := X_organization_id;
311               l_workorder_rec.description := X_description;
312               l_workorder_rec.asset_number := X_asset_number;
313               l_workorder_rec.asset_group_id := X_asset_group_id;
314               l_workorder_rec.rebuild_serial_number := X_rebuild_serial_number;
315               l_workorder_rec.rebuild_item_id := X_rebuild_item_id;
316               l_workorder_rec.parent_wip_entity_id := X_parent_wip_entity_id;
317 
318 
319 
320               l_workorder_rec.firm_planned_flag := X_firm_planned_flag;
321 
322               l_workorder_rec.owning_department := X_owning_department;
323 			  l_workorder_rec.planner_type := X_planner_maintenance;  --vardha
324               l_workorder_rec.scheduled_start_date := X_scheduled_start_date;
325               l_workorder_rec.scheduled_completion_date := X_scheduled_completion_date;
326               l_workorder_rec.status_type := X_status_type;
327 
328               l_workorder_rec.user_defined_status_id := X_user_defined_status_id;
329               l_workorder_rec.pending_flag := X_pending_flag;
330               l_workorder_rec.workflow_type := X_workflow_type;
331               l_workorder_rec.warranty_claim_status := X_warranty_claim_status;
332               l_workorder_rec.material_shortage_flag := X_material_shortage_flag;
333               l_workorder_rec.material_shortage_check_date := X_material_shortage_check_date;
334 
335 	      l_workorder_rec.transaction_type := EAM_PROCESS_WO_PUB.G_OPR_CREATE;
336               l_workorder_rec.maintenance_object_id := X_maintenance_object_id;
337       	      l_workorder_rec.maintenance_object_type := X_maintenance_object_type;
338       	      l_workorder_rec.maintenance_object_source := X_maintenance_object_source;
339 
340                l_workorder_rec.asset_activity_id := X_primary_item_id;
341       	      l_workorder_rec.activity_type := X_activity_type;
342       	      l_workorder_rec.activity_cause := X_activity_cause;
343       	      l_workorder_rec.activity_source := X_activity_source;
344       	      l_workorder_rec.shutdown_type:=X_shutdown_type;
345       	      l_workorder_rec.work_order_type := X_work_order_type;
346               l_workorder_rec.priority := X_priority;
347               l_workorder_rec.project_id := X_Project_Id;
348               l_workorder_rec.task_id := X_Task_Id;
349               l_workorder_rec.material_issue_by_mo := X_material_issue_by_mo;
350               l_workorder_rec.manual_rebuild_flag  := X_manual_rebuild_flag;
351 	      l_workorder_rec.requested_start_date :=   X_requested_start_date;
352               l_workorder_rec.due_date   :=  X_requested_due_date;
353               l_workorder_rec.notification_required := X_notification_required;
354               l_workorder_rec.tagout_required      := X_tagout_required;
355               l_workorder_rec.plan_maintenance     := X_plan_maintenance;
356               l_workorder_rec.pm_schedule_id       := X_pm_schedule_id;
357               l_workorder_rec.wip_supply_type    := X_wip_supply_type;
358               l_workorder_rec.class_code        :=  X_class_code;
359               l_workorder_rec.material_account := X_material_account;
360   	      l_workorder_rec.material_overhead_account:= X_material_overhead_account;
361               l_workorder_rec.resource_account  := X_resource_account;
362               l_workorder_rec.outside_processing_account := X_outside_processing_account;
363               l_workorder_rec.material_variance_account  :=  X_material_variance_account;
364               l_workorder_rec.resource_variance_account  := X_resource_variance_account;
365               l_workorder_rec.outside_proc_variance_account  :=  X_outside_proc_var_account;
366               l_workorder_rec.std_cost_adjustment_account  := X_std_cost_adjustment_account;
367                l_workorder_rec.overhead_account   :=  X_overhead_account;
368               l_workorder_rec.overhead_variance_account  := X_overhead_variance_account;
369              -- l_workorder_rec.common_routing_reference_id   := X_routing_reference_id;
370               l_workorder_rec.common_bom_sequence_id  := X_common_bom_sequence_id;
371               l_workorder_rec.common_routing_sequence_id  := X_common_routing_sequence_id;
372               l_workorder_rec.bom_revision   := X_bom_revision;
373               l_workorder_rec.routing_revision   := X_routing_revision;
374               l_workorder_rec.bom_revision_date   :=   X_bom_revision_date;
375               l_workorder_rec.routing_revision_date   :=   X_routing_revision_date;
376 	      l_workorder_rec.alternate_bom_designator  :=  X_alternate_bom_designator;
377  	      l_workorder_rec.alternate_routing_designator  :=   X_alternate_routing_designator;
378                l_workorder_rec.Schedule_Group_Id   :=  X_Schedule_Group_Id;
379               l_workorder_rec.attribute_category :=  X_attribute_category;
380               l_workorder_rec.attribute1 :=  X_attribute1;
381               l_workorder_rec.attribute2 :=  X_attribute2;
382 	      l_workorder_rec.attribute3 :=  X_attribute3;
383               l_workorder_rec.attribute4 :=  X_attribute4;
384               l_workorder_rec.attribute5 :=  X_attribute5;
385               l_workorder_rec.attribute6 :=  X_attribute6;
386               l_workorder_rec.attribute7 :=  X_attribute7;
387               l_workorder_rec.attribute8 :=  X_attribute8;
388               l_workorder_rec.attribute9 :=  X_attribute9;
389               l_workorder_rec.attribute10 :=  X_attribute10;
390               l_workorder_rec.attribute11 :=  X_attribute11;
391               l_workorder_rec.attribute12 :=  X_attribute12;
392               l_workorder_rec.attribute13 :=  X_attribute13;
393               l_workorder_rec.attribute14 :=  X_attribute14;
394               l_workorder_rec.attribute15 :=  X_attribute15;
395               l_workorder_rec.end_item_unit_number   :=   X_end_item_unit_number;
396               l_workorder_rec.po_creation_time  :=   X_po_creation_time;
397 	      l_workorder_rec.failure_code_required := x_failure_code_required;
398               IF l_eam_failure_entry_record.failure_date IS NULL THEN
399 			l_eam_failure_entry_record.transaction_type := NULL;
400               ELSE
401 			l_eam_failure_entry_record.transaction_type := EAM_Process_Failure_Entry_PUB.G_FE_CREATE ;
402               END IF;
403              l_workorder_rec.eam_failure_entry_record := l_eam_failure_entry_record;
404              FOR i in 1..l_eam_failure_codes_tbl.count
405 	     LOOP
406 	             IF( NOT( l_eam_failure_codes_tbl(i).failure_code IS NULL
407 		              AND l_eam_failure_codes_tbl(i).cause_code IS NULL
408 			      AND l_eam_failure_codes_tbl(i).resolution_code IS NULL
409 	                      AND l_eam_failure_codes_tbl(i).comments IS NULL
410 		             )) THEN
411 					     l_eam_failure_codes_tbl(i).transaction_type := EAM_Process_Failure_Entry_PUB.G_FE_CREATE;
412 					     l_workorder_rec.eam_failure_codes_tbl(i) := l_eam_failure_codes_tbl(i);
413 		     ELSE
414 					     l_workorder_rec.eam_failure_codes_tbl(i) := l_eam_failure_codes_tbl(i);
415 					     l_workorder_rec.eam_failure_codes_tbl.delete(i);
416 		     END IF;
417              END LOOP;
418      l_eam_wo_tbl(1) := l_workorder_rec;
419 
420 /*--Construct table for relationships if X_Parent_Wip_Id is not null*/
421 if(X_parent_wip_entity_id is not null) then
422     l_eam_wo_relations_rec1.batch_id  :=  1;
423      l_eam_wo_relations_rec1.parent_object_id := X_parent_wip_entity_id;
424      l_eam_wo_relations_rec1.parent_object_type_id := 1;
425      l_eam_wo_relations_rec1.parent_header_id := X_parent_wip_entity_id;
426      l_eam_wo_relations_rec1.child_object_type_id := 1;
427      l_eam_wo_relations_rec1.child_header_id    :=1;
428      l_eam_wo_relations_rec1.child_object_id := 1;
429      l_eam_wo_relations_rec1.parent_relationship_type  := 1;
430      l_eam_wo_relations_rec1.transaction_type := EAM_PROCESS_WO_PUB.G_OPR_CREATE;
431      l_eam_wo_relations_tbl(1) := l_eam_wo_relations_rec1;
432 
433      l_eam_wo_relations_rec2.batch_id  :=  1;
434      l_eam_wo_relations_rec2.parent_object_id :=X_parent_wip_entity_id;
435      l_eam_wo_relations_rec2.parent_object_type_id := 1;
436      l_eam_wo_relations_rec2.parent_header_id := X_parent_wip_entity_id;
437      l_eam_wo_relations_rec2.child_object_type_id := 1;
438      l_eam_wo_relations_rec2.child_header_id    :=1;
439      l_eam_wo_relations_rec2.child_object_id := 1;
440      l_eam_wo_relations_rec2.parent_relationship_type  := 4;
441      l_eam_wo_relations_rec2.transaction_type := EAM_PROCESS_WO_PUB.G_OPR_CREATE;
442      l_eam_wo_relations_tbl(2) := l_eam_wo_relations_rec2;
443 end if;
444 
445 begin
446       EAM_PROCESS_WO_PUB.Process_Master_Child_WO
447   	         ( p_bo_identifier           => 'EAM'
448   	         , p_init_msg_list           => TRUE
449   	         , p_api_version_number      => 1.0
450   	         , p_eam_wo_tbl              => l_eam_wo_tbl
451                  , p_eam_wo_relations_tbl    => l_eam_wo_relations_tbl
452   	         , p_eam_op_tbl              => l_eam_op_tbl
453   	         , p_eam_op_network_tbl      => l_eam_op_network_tbl
454   	         , p_eam_res_tbl             => l_eam_res_tbl
455   	         , p_eam_res_inst_tbl        => l_eam_res_inst_tbl
456   	         , p_eam_sub_res_tbl         => l_eam_sub_res_tbl
457 		 , p_eam_res_usage_tbl       => l_eam_res_usage_tbl
458     	         , p_eam_mat_req_tbl         => l_eam_mat_req_tbl
459                  , p_eam_direct_items_tbl    => l_eam_direct_items_tbl
460 
461 		 , p_eam_wo_comp_tbl         => l_eam_wo_comp_tbl
462 		 , p_eam_wo_quality_tbl      => l_eam_wo_quality_tbl
463 		 , p_eam_meter_reading_tbl   => l_eam_meter_reading_tbl
464 		 , p_eam_counter_prop_tbl    => l_eam_counter_prop_tbl
465 		 , p_eam_wo_comp_rebuild_tbl => l_eam_wo_comp_rebuild_tbl
466 		 , p_eam_wo_comp_mr_read_tbl => l_eam_wo_comp_mr_read_tbl
467 		 , p_eam_op_comp_tbl         => l_eam_op_comp_tbl
468 		 , p_eam_request_tbl         => l_eam_request_tbl
469 
470   	         , x_eam_wo_tbl              => l_eam_wo_tbl1
471                  , x_eam_wo_relations_tbl    => l_eam_wo_relations_tbl1
472   	         , x_eam_op_tbl              => l_eam_op_tbl1
473   	         , x_eam_op_network_tbl      => l_eam_op_network_tbl1
474   	         , x_eam_res_tbl             => l_eam_res_tbl1
475   	         , x_eam_res_inst_tbl        => l_eam_res_inst_tbl1
476   	         , x_eam_sub_res_tbl         => l_eam_sub_res_tbl1
477 		 , x_eam_res_usage_tbl       => l_eam_res_usage_tbl
478   	         , x_eam_mat_req_tbl         => l_eam_mat_req_tbl1
479                  , x_eam_direct_items_tbl =>   l_eam_direct_items_tbl_1
480 
481 		 , x_eam_wo_comp_tbl         => l_eam_wo_comp_tbl_1
482 		 , x_eam_wo_quality_tbl      => l_eam_wo_quality_tbl_1
483 		 , x_eam_meter_reading_tbl   => l_eam_meter_reading_tbl_1
484 		 , x_eam_counter_prop_tbl    => l_out_eam_counter_prop_tbl
485 		 , x_eam_wo_comp_rebuild_tbl => l_eam_wo_comp_rebuild_tbl_1
486 		 , x_eam_wo_comp_mr_read_tbl => l_eam_wo_comp_mr_read_tbl_1
487 		 , x_eam_op_comp_tbl         => l_eam_op_comp_tbl_1
488 		 , x_eam_request_tbl         => l_eam_request_tbl_1
489 
490   	         , x_return_status           => l_return_status
491   	         , x_msg_count               => l_msg_count
492   	         , p_debug                   => NVL(fnd_profile.value('EAM_DEBUG'), 'N')
493   	         , p_debug_filename          => 'createwo.log'
494   	         , p_output_dir              => l_output_dir
495                  , p_commit                    => FND_API.G_FALSE
496                  , p_debug_file_mode         => 'W'
497            );
498  exception
499     when others then
500                  rollback to CREATE_WO;
501                 l_msg_count := fnd_msg_pub.count_msg;
502                    if(l_msg_count>0) then
503  			  get_all_mesg(mesg=>l_message_text);
504                    end if;
505            	          fnd_message.set_name('EAM','EAM_ERROR_CREATE_WO');
506 
507            		fnd_message.set_token(token => 'MESG',
508 			  	  value => l_message_text,
509 			  	  translate => FALSE);
510            		APP_EXCEPTION.RAISE_EXCEPTION;
511  end;
512 
513    l_workorder_rec1 := l_eam_wo_tbl1(l_eam_wo_tbl1.first);
514 
515 
516   if((nvl(l_return_status,'S'))='S') then
517 
518        X_wip_entity_id := l_workorder_rec1.wip_entity_id;
519 
520        select rowid into X_We_Rowid from WIP_ENTITIES where wip_entity_id=X_wip_entity_id;
521        select rowid into X_Rowid from WIP_DISCRETE_JOBS where wip_entity_id=X_wip_entity_id;
522        COMMIT;
523 
524    else
525         X_wip_entity_id := 0;
526         rollback to CREATE_WO;
527 
528                     l_msg_count := fnd_msg_pub.count_msg;
529                    if(l_msg_count>0) then
530  			  get_all_mesg(mesg=>l_message_text);
531                    end if;
532            	          fnd_message.set_name('EAM','EAM_ERROR_CREATE_WO');
533 
534            		fnd_message.set_token(token => 'MESG',
535 			  	  value => l_message_text,
536 			  	  translate => FALSE);
537            		APP_EXCEPTION.RAISE_EXCEPTION;
538    end if;
539 
540 
541 if(X_Parent_Wip_Name is not null and X_parent_wip_entity_id is null) then
542  savepoint create_relation;
543 
544     select wip_entity_id
545     into temp
546     from wip_entities
547     where wip_entity_name = X_Parent_Wip_Name AND organization_id=X_organization_id ;
548 
549 
550      l_eam_wo_relations_rec3.batch_id  :=  1;
551      l_eam_wo_relations_rec3.parent_object_id := temp;
552      l_eam_wo_relations_rec3.parent_object_type_id := 1;
553      l_eam_wo_relations_rec3.parent_header_id := temp;
554      l_eam_wo_relations_rec3.child_object_type_id := 1;
555      l_eam_wo_relations_rec3.child_header_id    :=X_wip_entity_id;
556      l_eam_wo_relations_rec3.child_object_id := X_wip_entity_id;
557      l_eam_wo_relations_rec3.parent_relationship_type  := 1;
558      l_eam_wo_relations_rec3.transaction_type := EAM_PROCESS_WO_PUB.G_OPR_CREATE;
559 
560 
561       l_eam_wo_relations_tbl2(1) := l_eam_wo_relations_rec3;
562 
563        EAM_PROCESS_WO_PUB.Process_Master_Child_WO
564   	         ( p_bo_identifier           => 'EAM'
565   	         , p_init_msg_list           => TRUE
566   	         , p_api_version_number      => 1.0
567   	         , p_eam_wo_tbl              => l_eam_wo_tbl2
568                  , p_eam_wo_relations_tbl    => l_eam_wo_relations_tbl2
569   	         , p_eam_op_tbl              => l_eam_op_tbl
570   	         , p_eam_op_network_tbl      => l_eam_op_network_tbl
571   	         , p_eam_res_tbl             => l_eam_res_tbl
572   	         , p_eam_res_inst_tbl        => l_eam_res_inst_tbl
573   	         , p_eam_sub_res_tbl         => l_eam_sub_res_tbl
574 		 , p_eam_res_usage_tbl       => l_eam_res_usage_tbl
575     	         , p_eam_mat_req_tbl         => l_eam_mat_req_tbl
576                  , p_eam_direct_items_tbl  =>   l_eam_direct_items_tbl
577 
578 	 	 , p_eam_wo_comp_tbl         => l_eam_wo_comp_tbl
579 		 , p_eam_wo_quality_tbl      => l_eam_wo_quality_tbl
580 		 , p_eam_meter_reading_tbl   => l_eam_meter_reading_tbl
581 		 , p_eam_counter_prop_tbl    => l_eam_counter_prop_tbl
582 		 , p_eam_wo_comp_rebuild_tbl => l_eam_wo_comp_rebuild_tbl
583 		 , p_eam_wo_comp_mr_read_tbl => l_eam_wo_comp_mr_read_tbl
584 		 , p_eam_op_comp_tbl         => l_eam_op_comp_tbl
585 		 , p_eam_request_tbl         => l_eam_request_tbl
586 
587   	         , x_eam_wo_tbl              => l_eam_wo_tbl1
588                  , x_eam_wo_relations_tbl    => l_eam_wo_relations_tbl1
589   	         , x_eam_op_tbl              => l_eam_op_tbl1
590   	         , x_eam_op_network_tbl      => l_eam_op_network_tbl1
591   	         , x_eam_res_tbl             => l_eam_res_tbl1
592   	         , x_eam_res_inst_tbl        => l_eam_res_inst_tbl1
593   	         , x_eam_sub_res_tbl         => l_eam_sub_res_tbl1
594 		 , x_eam_res_usage_tbl       => l_eam_res_usage_tbl
595   	         , x_eam_mat_req_tbl         => l_eam_mat_req_tbl1
596                  , x_eam_direct_items_tbl =>   l_eam_direct_items_tbl_1
597 
598 		 , x_eam_wo_comp_tbl         => l_eam_wo_comp_tbl_1
599 		 , x_eam_wo_quality_tbl      => l_eam_wo_quality_tbl_1
600 		 , x_eam_meter_reading_tbl   => l_eam_meter_reading_tbl_1
601 		 , x_eam_counter_prop_tbl    => l_out_eam_counter_prop_tbl
602 		 , x_eam_wo_comp_rebuild_tbl => l_eam_wo_comp_rebuild_tbl_1
603 		 , x_eam_wo_comp_mr_read_tbl => l_eam_wo_comp_mr_read_tbl_1
604 		 , x_eam_op_comp_tbl         => l_eam_op_comp_tbl_1
605 		 , x_eam_request_tbl         => l_eam_request_tbl_1
606 
607   	         , x_return_status           => l_return_status
608   	         , x_msg_count               => l_msg_count
609   	         , p_debug                   => NVL(fnd_profile.value('EAM_DEBUG'), 'N')
610   	         , p_debug_filename          => 'createrel.log'
611   	         , p_output_dir              => l_output_dir
612                  , p_commit                    => FND_API.G_FALSE
613                  , p_debug_file_mode         => 'W'
614            );
615     X_Relation_Status := l_return_status;
616      if((nvl(l_return_status,'S'))='S') then
617        commit;
618      else
619        rollback to create_relation;
620      end if;
621 
622 
623 end if;
624 
625 
626 /*copy the values from the wo api back to the out parameters */
627 
628 		X_description:=l_workorder_rec1.description ;
629 		X_firm_planned_flag :=l_workorder_rec1.firm_planned_flag;
630 		X_owning_department :=l_workorder_rec1.owning_department ;
631 		X_planner_maintenance := l_workorder_rec1.planner_type ; --vardha
632 		X_scheduled_start_date := l_workorder_rec1.scheduled_start_date ;
633 		X_scheduled_completion_date := l_workorder_rec1.scheduled_completion_date;
634 		X_status_type := l_workorder_rec1.status_type;
635 		X_user_defined_status_id :=l_workorder_rec1.user_defined_status_id ;
636 		X_pending_flag:= l_workorder_rec1.pending_flag ;
637 		X_workflow_type := l_workorder_rec1.workflow_type ;
638 		X_warranty_claim_status := l_workorder_rec1.warranty_claim_status ;
639 		X_material_shortage_flag := l_workorder_rec1.material_shortage_flag ;
640 		X_material_shortage_check_date := l_workorder_rec1.material_shortage_check_date ;
641 
642 		X_activity_type:= l_workorder_rec1.activity_type;
643 		X_activity_cause:= l_workorder_rec1.activity_cause;
644 		X_activity_source := l_workorder_rec1.activity_source;
645 		X_shutdown_type := l_workorder_rec1.shutdown_type;
646 		X_work_order_type := l_workorder_rec1.work_order_type;
647 		X_priority := l_workorder_rec1.priority;
648 		X_material_issue_by_mo := l_workorder_rec1.material_issue_by_mo;
649 		X_manual_rebuild_flag :=  l_workorder_rec1.manual_rebuild_flag ;
650 		X_requested_start_date := l_workorder_rec1.requested_start_date;
651 		X_requested_due_date := l_workorder_rec1.due_date  ;
652 		X_notification_required := l_workorder_rec1.notification_required;
653 		X_tagout_required := l_workorder_rec1.tagout_required     ;
654 		X_plan_maintenance := l_workorder_rec1.plan_maintenance     ;
655 		X_class_code := l_workorder_rec1.class_code       ;
656 		X_material_account := l_workorder_rec1.material_account;
657 		X_material_overhead_account := l_workorder_rec1.material_overhead_account;
658 		X_resource_account := l_workorder_rec1.resource_account ;
659 		X_outside_processing_account := l_workorder_rec1.outside_processing_account;
660 		X_material_variance_account := l_workorder_rec1.material_variance_account  ;
661 		X_resource_variance_account := l_workorder_rec1.resource_variance_account  ;
662 		X_outside_proc_var_account := l_workorder_rec1.outside_proc_variance_account  ;
663 		X_std_cost_adjustment_account := l_workorder_rec1.std_cost_adjustment_account ;
664 		X_overhead_account :=  l_workorder_rec1.overhead_account  ;
665 		X_overhead_variance_account := l_workorder_rec1.overhead_variance_account  ;
666 		X_common_bom_sequence_id := l_workorder_rec1.common_bom_sequence_id  ;
667 		X_common_routing_sequence_id := l_workorder_rec1.common_routing_sequence_id  ;
668 		X_bom_revision := l_workorder_rec1.bom_revision   ;
669 		X_routing_revision:=  l_workorder_rec1.routing_revision  ;
670 		X_bom_revision_date := l_workorder_rec1.bom_revision_date  ;
671 		X_routing_revision_date := l_workorder_rec1.routing_revision_date  ;
672 		X_alternate_bom_designator := l_workorder_rec1.alternate_bom_designator ;
673 		X_alternate_routing_designator := l_workorder_rec1.alternate_routing_designator  ;
674 		X_attribute_category := l_workorder_rec1.attribute_category ;
675 		X_attribute1 := l_workorder_rec1.attribute1;
676 		X_attribute2 := l_workorder_rec1.attribute2;
677 		X_attribute3 := l_workorder_rec1.attribute3 ;
678 		X_attribute4 := l_workorder_rec1.attribute4;
679 		X_attribute5 := l_workorder_rec1.attribute5 ;
680 		X_attribute6 := l_workorder_rec1.attribute6 ;
681 		X_attribute7 := l_workorder_rec1.attribute7 ;
682 		X_attribute8 := l_workorder_rec1.attribute8;
683 		X_attribute9 := l_workorder_rec1.attribute9 ;
684 		X_attribute10 := l_workorder_rec1.attribute10;
685 		X_attribute11 := l_workorder_rec1.attribute11;
686 		X_attribute12 := l_workorder_rec1.attribute12;
687 		X_attribute13 := l_workorder_rec1.attribute13;
688 		X_attribute14 := l_workorder_rec1.attribute14 ;
689 		X_attribute15 := l_workorder_rec1.attribute15 ;
690 		x_failure_code_required  := l_workorder_rec1.failure_code_required;
691                 x_eam_failure_entry_record := l_workorder_rec1.eam_failure_entry_record;
692                 x_eam_failure_codes_tbl    := l_workorder_rec1.eam_failure_codes_tbl;
693 
694 
695 
696 /*end of copy params */
697 
698 
699     -- asset genealogy is updated when a automatic work order is created for a a rebuild serial number
700     -- which is part of an asset hierarchy. bug number  2899984
701  if (X_rebuild_serial_number is not null) then
702 
703  Update_Genealogy(    X_wip_entity_id               => X_wip_entity_id,
704                                          X_organization_id             =>X_Organization_id,
705                                          X_parent_wip_entity_id	       =>X_parent_wip_entity_id,
706  		                                 X_rebuild_item_id	           => X_rebuild_item_id,
707  		                                 X_rebuild_serial_number       =>X_rebuild_serial_number,
708  		                                 X_manual_rebuild_flag	       =>X_manual_rebuild_flag,
709 										 x_maintenance_object_type     => x_maintenance_object_type ,
710 										 x_maintenance_object_id       => x_maintenance_object_id);
711 
712  end if;
713 
714 
715 -- Bug # 2251186
716 
717 IF ( X_primary_item_id IS NOT NULL ) THEN
718 
719          CSTPECEP.Estimate_WorkOrder_Grp(
720         p_api_version => 1.0,
721         p_init_msg_list => fnd_api.g_false,
722         p_commit  =>  fnd_api.g_false,
723         p_validation_level  => fnd_api.g_valid_level_full,
724         p_wip_entity_id => X_wip_entity_id,
725         p_organization_id => X_Organization_Id,
726         x_return_status      => l_return_status,
727         x_msg_data           => l_err_text,
728         x_msg_count          => l_msg_count );
729 
730 END IF;
731 
732 END Create_Workorder;
733 
734 
735 /*cboppana ----Added this function to update a work order.This calls the Work Order api */
736 
737 PROCEDURE Update_Workorder( X_Rowid 			VARCHAR2,
738 		X_wip_entity_id			NUMBER,
739 		X_organization_id		NUMBER,
740 		X_last_update_date		DATE,
741 		X_last_updated_by		NUMBER,
742 		X_creation_date			DATE,
743 		X_created_by			NUMBER,
744 		X_last_update_login		NUMBER,
745 		X_description		IN OUT NOCOPY 	VARCHAR2,
746 		X_status_type		IN OUT NOCOPY	NUMBER,
747 
748 		X_user_defined_status_id IN OUT NOCOPY	NUMBER,
749 		X_pending_flag		IN OUT NOCOPY	VARCHAR2,
750 		X_workflow_type		IN OUT NOCOPY	NUMBER ,
751 		X_warranty_claim_status	IN OUT NOCOPY	NUMBER,
752 
753 		X_material_shortage_flag	IN OUT NOCOPY	NUMBER,
754 		X_material_shortage_check_date	IN OUT NOCOPY	DATE,
755 
756 		X_primary_item_id		NUMBER,
757 		X_parent_wip_entity_id		NUMBER,
758 		X_asset_number			VARCHAR2,
759 		X_asset_group_id		NUMBER,
760 		X_pm_schedule_id		NUMBER,
761 		X_rebuild_item_id		NUMBER,
762 		X_rebuild_serial_number		VARCHAR2,
763 		X_manual_rebuild_flag	IN OUT NOCOPY	VARCHAR2,
764 		X_shutdown_type		IN OUT NOCOPY	VARCHAR2,
765 		X_tagout_required	IN OUT NOCOPY	VARCHAR2,
766 		X_plan_maintenance	IN OUT NOCOPY	VARCHAR2,
767 		X_estimation_status		VARCHAR2,
768 		X_requested_start_date	IN OUT NOCOPY	DATE,
769 		X_requested_due_date	IN OUT NOCOPY	DATE,
770 		X_notification_required	IN OUT NOCOPY	VARCHAR2,
771 		X_work_order_type	IN OUT NOCOPY	VARCHAR2,
772 		X_owning_department	IN OUT NOCOPY	NUMBER,
773 		X_planner_maintenance IN OUT NOCOPY NUMBER,
774 		X_activity_type		IN OUT NOCOPY	VARCHAR2,
775 		X_activity_cause	IN OUT NOCOPY	VARCHAR2,
776 		X_firm_planned_flag	IN OUT NOCOPY	NUMBER,
777 		X_class_code		IN OUT NOCOPY	VARCHAR2,
778 		X_material_account	IN OUT NOCOPY	NUMBER,
779 		X_material_overhead_account IN OUT NOCOPY	NUMBER,
780 		X_resource_account	IN OUT NOCOPY	NUMBER,
781 		X_outside_processing_account IN OUT NOCOPY	NUMBER,
782 		X_material_variance_account IN OUT NOCOPY	NUMBER,
783 		X_resource_variance_account IN OUT NOCOPY	NUMBER,
784 		X_outside_proc_var_account IN OUT NOCOPY	NUMBER,
785 		X_std_cost_adjustment_account IN OUT NOCOPY	NUMBER,
786 		X_overhead_account	IN OUT NOCOPY	NUMBER,
787 		X_overhead_variance_account IN OUT NOCOPY	NUMBER,
788 		X_scheduled_start_date	IN OUT NOCOPY	DATE,
789 		X_date_released			DATE,
790 		X_scheduled_completion_date IN OUT NOCOPY	DATE,
791 		X_date_completed		DATE,
792 		X_date_closed			DATE,
793 		X_bom_reference_id	NUMBER,
794 		X_routing_reference_id	 	NUMBER,
795 		X_common_bom_sequence_id IN OUT NOCOPY	NUMBER,
796 		X_common_routing_sequence_id IN OUT NOCOPY	NUMBER,
797 		X_bom_revision		IN OUT NOCOPY	VARCHAR2,
798 		X_routing_revision	IN OUT NOCOPY	VARCHAR2,
799 		X_bom_revision_date	IN OUT NOCOPY	DATE,
800 		X_routing_revision_date	IN OUT NOCOPY	DATE,
801 		X_lot_number			VARCHAR2,
802 		X_alternate_bom_designator IN OUT NOCOPY	VARCHAR2,
803 		X_alternate_routing_designator IN OUT NOCOPY	VARCHAR2,
804 		X_completion_subinventory 	VARCHAR2,
805 		X_completion_locator_id	 	NUMBER,
806 		X_demand_class			VARCHAR2,
807 		X_attribute_category	IN OUT NOCOPY	VARCHAR2,
808 		X_attribute1	IN OUT NOCOPY		VARCHAR2,
809 		X_attribute2	IN OUT NOCOPY		VARCHAR2,
810 		X_attribute3	IN OUT NOCOPY		VARCHAR2,
811 		X_attribute4	IN OUT NOCOPY		VARCHAR2,
812 		X_attribute5	IN OUT NOCOPY		VARCHAR2,
813 		X_attribute6	IN OUT NOCOPY		VARCHAR2,
814 		X_attribute7	IN OUT NOCOPY		VARCHAR2,
815 		X_attribute8	IN OUT NOCOPY		VARCHAR2,
816 		X_attribute9	IN OUT NOCOPY		VARCHAR2,
817 		X_attribute10	IN OUT NOCOPY		VARCHAR2,
818 		X_attribute11	IN OUT NOCOPY		VARCHAR2,
819 		X_attribute12	IN OUT NOCOPY		VARCHAR2,
820 		X_attribute13	IN OUT NOCOPY		VARCHAR2,
821 		X_attribute14	IN OUT NOCOPY		VARCHAR2,
822 		X_attribute15	IN OUT NOCOPY		VARCHAR2,
823 		X_We_Rowid		IN OUT NOCOPY	VARCHAR2,
824 		X_Entity_Type			NUMBER,
825 		X_Wip_Entity_Name		VARCHAR2,
826 		X_Update_Wip_Entities		VARCHAR2,
827                 X_Schedule_Group_Id             NUMBER,
828 		X_Project_Id			NUMBER,
829 		X_Task_Id			NUMBER,
830                 X_priority        IN OUT NOCOPY        NUMBER,
831                 X_maintenance_object_id         NUMBER,
832 		X_maintenance_object_source     NUMBER,
833 		X_maintenance_object_type      NUMBER,
834 		X_material_issue_by_mo  IN OUT NOCOPY        VARCHAR2,
835 		X_activity_source      IN OUT NOCOPY         VARCHAR2,
836                 X_old_rebuild_source            NUMBER := NULL,
837 		x_failure_code_required  IN OUT NOCOPY VARCHAR2,
838                 x_eam_failure_entry_record IN OUT NOCOPY eam_process_failure_entry_pub.eam_failure_entry_record_typ,
839                 x_eam_failure_codes_tbl    IN OUT NOCOPY eam_process_failure_entry_pub.eam_failure_codes_tbl_typ,
840                 x_return_status IN OUT NOCOPY VARCHAR2 /*7003588*/
841                 ) IS
842 
843 
844 	dummy NUMBER;
845 	l_return_status  VARCHAR2(80) :='';
846 	l_msg_data       VARCHAR2(2000) := '';
847         l_msg_count      NUMBER;
848 
849 
850 	l_workorder_rec		EAM_PROCESS_WO_PUB.eam_wo_rec_type;
851 	l_workorder_rec1	EAM_PROCESS_WO_PUB.eam_wo_rec_type;
852 	l_eam_op_tbl		EAM_PROCESS_WO_PUB.eam_op_tbl_type;
853 	l_eam_op_tbl1		EAM_PROCESS_WO_PUB.eam_op_tbl_type;
854 	l_eam_op_tbl2		EAM_PROCESS_WO_PUB.eam_op_tbl_type;
855 	l_eam_op_network_tbl	EAM_PROCESS_WO_PUB.eam_op_network_tbl_type;
856 	l_eam_op_network_tbl1	EAM_PROCESS_WO_PUB.eam_op_network_tbl_type;
857 	l_eam_op_network_tbl2	EAM_PROCESS_WO_PUB.eam_op_network_tbl_type;
858 	l_eam_res_tbl		EAM_PROCESS_WO_PUB.eam_res_tbl_type;
859 	l_eam_res_tbl1		EAM_PROCESS_WO_PUB.eam_res_tbl_type;
860 	l_eam_res_tbl2		EAM_PROCESS_WO_PUB.eam_res_tbl_type;
861 	l_eam_res_inst_tbl	EAM_PROCESS_WO_PUB.eam_res_inst_tbl_type;
862 	l_eam_res_inst_tbl1	EAM_PROCESS_WO_PUB.eam_res_inst_tbl_type;
863 	l_eam_res_inst_tbl2	EAM_PROCESS_WO_PUB.eam_res_inst_tbl_type;
864 	l_eam_sub_res_tbl	EAM_PROCESS_WO_PUB.eam_sub_res_tbl_type;
865 	l_eam_sub_res_tbl1	EAM_PROCESS_WO_PUB.eam_sub_res_tbl_type;
866 	l_eam_sub_res_tbl2	EAM_PROCESS_WO_PUB.eam_sub_res_tbl_type;
867 	l_eam_res_usage_tbl	EAM_PROCESS_WO_PUB.eam_res_usage_tbl_type;
868 	l_eam_res_usage_tbl1	EAM_PROCESS_WO_PUB.eam_res_usage_tbl_type;
869 	l_eam_res_usage_tbl2	EAM_PROCESS_WO_PUB.eam_res_usage_tbl_type;
870 	l_eam_mat_req_tbl	EAM_PROCESS_WO_PUB.eam_mat_req_tbl_type;
871 	l_eam_mat_req_tbl1	EAM_PROCESS_WO_PUB.eam_mat_req_tbl_type;
872 	l_eam_mat_req_tbl2	EAM_PROCESS_WO_PUB.eam_mat_req_tbl_type;
873 	l_eam_wo_comp_tbl         EAM_PROCESS_WO_PUB.eam_wo_comp_tbl_type;
874         l_eam_wo_quality_tbl      EAM_PROCESS_WO_PUB.eam_wo_quality_tbl_type;
875         l_eam_meter_reading_tbl   EAM_PROCESS_WO_PUB.eam_meter_reading_tbl_type;
876         l_eam_wo_comp_rebuild_tbl EAM_PROCESS_WO_PUB.eam_wo_comp_rebuild_tbl_type;
877         l_eam_wo_comp_mr_read_tbl EAM_PROCESS_WO_PUB.eam_wo_comp_mr_read_tbl_type;
878         l_eam_op_comp_tbl         EAM_PROCESS_WO_PUB.eam_op_comp_tbl_type;
879 	l_eam_request_tbl         EAM_PROCESS_WO_PUB.eam_request_tbl_type;
880 
881 	l_eam_direct_items_tbl	    EAM_PROCESS_WO_PUB.eam_direct_items_tbl_type;
882 	l_eam_direct_items_tbl_1    EAM_PROCESS_WO_PUB.eam_direct_items_tbl_type;
883 
884 	l_eam_wo_relations_tbl      EAM_PROCESS_WO_PUB.eam_wo_relations_tbl_type;
885 	l_eam_wo_relations_tbl1     EAM_PROCESS_WO_PUB.eam_wo_relations_tbl_type;
886 	l_eam_wo_relations_rec1     EAM_PROCESS_WO_PUB.eam_wo_relations_rec_type;
887 	l_eam_wo_relations_rec2     EAM_PROCESS_WO_PUB.eam_wo_relations_rec_type;
888 	l_eam_wo_relations_rec3     EAM_PROCESS_WO_PUB.eam_wo_relations_rec_type;
889 	l_eam_wo_relations_rec4     EAM_PROCESS_WO_PUB.eam_wo_relations_rec_type;
890 	l_eam_wo_relations_rec5     EAM_PROCESS_WO_PUB.eam_wo_relations_rec_type;
891 	l_eam_wo_tbl                EAM_PROCESS_WO_PUB.eam_wo_tbl_type;
892 	l_eam_wo_tbl1               EAM_PROCESS_WO_PUB.eam_wo_tbl_type;
893 	l_eam_wo_tbl2               EAM_PROCESS_WO_PUB.eam_wo_tbl_type;
894 	l_eam_wo_tbl3               EAM_PROCESS_WO_PUB.eam_wo_tbl_type;
895 	l_eam_wo_comp_tbl_1         EAM_PROCESS_WO_PUB.eam_wo_comp_tbl_type;
896         l_eam_wo_quality_tbl_1      EAM_PROCESS_WO_PUB.eam_wo_quality_tbl_type;
897         l_eam_meter_reading_tbl_1   EAM_PROCESS_WO_PUB.eam_meter_reading_tbl_type;
898         l_eam_wo_comp_rebuild_tbl_1 EAM_PROCESS_WO_PUB.eam_wo_comp_rebuild_tbl_type;
899         l_eam_wo_comp_mr_read_tbl_1 EAM_PROCESS_WO_PUB.eam_wo_comp_mr_read_tbl_type;
900         l_eam_op_comp_tbl_1         EAM_PROCESS_WO_PUB.eam_op_comp_tbl_type;
901 	l_eam_request_tbl_1         EAM_PROCESS_WO_PUB.eam_request_tbl_type;
902 	l_eam_counter_prop_tbl     EAM_PROCESS_WO_PUB.eam_counter_prop_tbl_type;
903 	l_out_eam_counter_prop_tbl    EAM_PROCESS_WO_PUB.eam_counter_prop_tbl_type;
904 
905 
906 	l_eam_msg_tbl  EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type;
907 
908 	l_user_id NUMBER;
909 	l_responsibility_id NUMBER;
910 
911 	l_message_text  VARCHAR2(1000);
912 	l_entity_index      NUMBER;
913 	l_entity_id         VARCHAR2(100);
914 	l_message_type      VARCHAR2(100);
915 	l_description       VARCHAR2(100);
916 	l_Expand_Parent       VARCHAR2(100);
917 	constraining_rel NUMBER;
918 	followup_rel  NUMBER;
919 	l_old_rebuild_source NUMBER := null;
920 	record_count number :=1;
921 	l_output_dir  VARCHAR2(512);
922 	l_prev_activity_id NUMBER := null;
923 
924 	/* Added for bug#4555609 */
925     l_prev_description VARCHAR2(240);
926     l_prev_priority NUMBER;
927     l_prev_work_order_type  VARCHAR2(30);
928     l_prev_shutdown_type VARCHAR2(30);
929     l_prev_activity_type VARCHAR2(30);
930     l_prev_activity_cause VARCHAR2(30);
931     l_prev_activity_source VARCHAR2(30);
932     l_prev_attribute_category VARCHAR2(30);
933     l_prev_attribute1 VARCHAR2(150);
934     l_prev_attribute2 VARCHAR2(150);
935     l_prev_attribute3 VARCHAR2(150);
936     l_prev_attribute4 VARCHAR2(150);
937     l_prev_attribute5 VARCHAR2(150);
938     l_prev_attribute6 VARCHAR2(150);
939     l_prev_attribute7 VARCHAR2(150);
940     l_prev_attribute8 VARCHAR2(150);
941     l_prev_attribute9 VARCHAR2(150);
942     l_prev_attribute10 VARCHAR2(150);
943     l_prev_attribute11 VARCHAR2(150);
944     l_prev_attribute12 VARCHAR2(150);
945     l_prev_attribute13 VARCHAR2(150);
946     l_prev_attribute14 VARCHAR2(150);
947     l_prev_attribute15 VARCHAR2(150);
948     l_eam_failure_entry_record eam_process_failure_entry_pub.eam_failure_entry_record_typ;
949     l_eam_failure_codes_tbl eam_process_failure_entry_pub.eam_failure_codes_tbl_typ;
950 
951     /* Added for bug#5346446 Start */
952     l_prev_project_id  NUMBER;
953     l_prev_task_id     NUMBER;
954     /* Added for bug#5346446 End */
955 
956 
957 BEGIN
958    l_eam_failure_entry_record := x_eam_failure_entry_record;
959    l_eam_failure_codes_tbl := x_eam_failure_codes_tbl;
960 
961 
962 /* get output directory path from database */
963     EAM_WORKORDER_UTIL_PKG.log_path(l_output_dir);
964 
965 
966               l_user_id := fnd_global.user_id;
967               l_responsibility_id := fnd_global.resp_id;
968 
969               l_workorder_rec.header_id  := X_wip_Entity_Id;
970               l_workorder_rec.batch_id   := 1;
971               --l_workorder_rec.p_commit := FND_API.G_TRUE;
972 
973               l_workorder_rec.return_status := null;
974               l_workorder_rec.wip_entity_name := X_Wip_Entity_Name;
975               l_workorder_rec.wip_entity_id := X_wip_Entity_Id;
976               l_workorder_rec.organization_id := X_organization_id;
977               l_workorder_rec.asset_number := X_asset_number;
978               l_workorder_rec.asset_group_id := X_asset_group_id;
979               l_workorder_rec.rebuild_serial_number := X_rebuild_serial_number;
980               l_workorder_rec.rebuild_item_id := X_rebuild_item_id;
981               l_workorder_rec.parent_wip_entity_id := X_parent_wip_entity_id;
982               l_workorder_rec.firm_planned_flag := X_firm_planned_flag;
983               l_workorder_rec.owning_department := X_owning_department;
984 			  l_workorder_rec.planner_type := X_planner_maintenance; --vardha
985               l_workorder_rec.scheduled_start_date := X_scheduled_start_date;
986               l_workorder_rec.scheduled_completion_date := X_scheduled_completion_date;
987               l_workorder_rec.status_type := X_status_type;
988 
989               l_workorder_rec.user_defined_status_id := X_user_defined_status_id;
990               l_workorder_rec.pending_flag := X_pending_flag;
991               l_workorder_rec.workflow_type := X_workflow_type;
992               l_workorder_rec.warranty_claim_status := X_warranty_claim_status;
993               l_workorder_rec.material_shortage_flag := X_material_shortage_flag;
994               l_workorder_rec.material_shortage_check_date := X_material_shortage_check_date;
995 
996 	      l_workorder_rec.transaction_type := EAM_PROCESS_WO_PUB.G_OPR_UPDATE;
997               l_workorder_rec.maintenance_object_id := X_maintenance_object_id;
998       	      l_workorder_rec.maintenance_object_type := X_maintenance_object_type;
999       	      l_workorder_rec.maintenance_object_source := X_maintenance_object_source;
1000 
1001              -- # 3436679   code added to prevent the defaulting of the asset activity if user removes it while updating work order
1002 
1003 	      BEGIN
1004 								select primary_item_id
1005 								,description
1006 								,priority
1007 								,work_order_type
1008 								,shutdown_type
1009 								,activity_type
1010 								,activity_cause
1011 								,activity_source
1012 								,attribute_category
1013 								,attribute1
1014 								,attribute2
1015 								,attribute3
1016 								,attribute4
1017 								,attribute5
1018 								,attribute6
1019 								,attribute7
1020 								,attribute8
1021 								,attribute9
1022 								,attribute10
1023 								,attribute11
1024 								,attribute12
1025 								,attribute13
1026 								,attribute14
1027 								,attribute15
1028 								,project_id -- added for bug 5346446
1029 								,task_id
1030 								into l_prev_activity_id
1031 								,l_prev_description
1032 								,l_prev_priority
1033 								,l_prev_work_order_type
1034 								,l_prev_shutdown_type
1035 								,l_prev_activity_type
1036 								,l_prev_activity_cause
1037 								,l_prev_activity_source
1038 								,l_prev_attribute_category
1039 								,l_prev_attribute1
1040 								,l_prev_attribute2
1041 								,l_prev_attribute3
1042 								,l_prev_attribute4
1043 								,l_prev_attribute5
1044 								,l_prev_attribute6
1045 								,l_prev_attribute7
1046 								,l_prev_attribute8
1047 								,l_prev_attribute9
1048 								,l_prev_attribute10
1049 								,l_prev_attribute11
1050 								,l_prev_attribute12
1051 								,l_prev_attribute13
1052 								,l_prev_attribute14
1053 								,l_prev_attribute15
1054 								,l_prev_project_id  --added for bug 5346446
1055 								,l_prev_task_id
1056 								from wip_discrete_jobs
1057 								where wip_entity_id =X_wip_Entity_Id
1058 								and organization_id = X_organization_id;
1059 
1060                 EXCEPTION
1061                   WHEN NO_DATA_FOUND THEN
1062                   null;
1063 
1064 	      END;
1065 
1066 	      IF l_prev_activity_id is not null and X_primary_item_id is null THEN
1067 			l_workorder_rec.asset_activity_id  := FND_API.G_MISS_NUM;
1068 		ELSE
1069 			l_workorder_rec.asset_activity_id := X_primary_item_id;
1070 	       END IF;
1071 
1072 	      IF l_prev_description is not null and X_description is null THEN
1073                         l_workorder_rec.description := FND_API.G_MISS_CHAR;
1074               ELSE
1075                         l_workorder_rec.description := X_description;
1076               END IF;
1077 
1078               IF l_prev_activity_type is not null and X_activity_type is null THEN
1079                         l_workorder_rec.activity_type  := FND_API.G_MISS_CHAR;
1080               ELSE
1081                         l_workorder_rec.activity_type := X_activity_type;
1082               END IF;
1083 
1084               IF l_prev_activity_cause is not null and X_activity_cause is null THEN
1085                         l_workorder_rec.activity_cause  := FND_API.G_MISS_CHAR;
1086               ELSE
1087                         l_workorder_rec.activity_cause := X_activity_cause;
1088               END IF;
1089 
1090               IF l_prev_activity_source is not null and X_activity_source is null THEN
1091                         l_workorder_rec.activity_source  := FND_API.G_MISS_CHAR;
1092               ELSE
1093                         l_workorder_rec.activity_source := X_activity_source;
1094               END IF;
1095 
1096               IF l_prev_shutdown_type is not null and X_shutdown_type is null THEN
1097                         l_workorder_rec.shutdown_type  := FND_API.G_MISS_CHAR;
1098               ELSE
1099                         l_workorder_rec.shutdown_type := X_shutdown_type;
1100               END IF;
1101 
1102               IF l_prev_priority is not null and X_priority is null THEN
1103                         l_workorder_rec.priority  := FND_API.G_MISS_NUM;
1104               ELSE
1105                         l_workorder_rec.priority := X_priority;
1106               END IF;
1107 
1108               IF l_prev_work_order_type is not null and X_work_order_type is null THEN
1109                         l_workorder_rec.work_order_type  := FND_API.G_MISS_CHAR;
1110               ELSE
1111                         l_workorder_rec.work_order_type := X_work_order_type;
1112               END IF;
1113 
1114               /* Added for bug#5346446 Start */
1115               IF l_prev_project_id is not null AND X_Project_Id is null THEN
1116                  l_workorder_rec.project_id := FND_API.G_MISS_NUM;
1117               ELSE
1118                  l_workorder_rec.project_id := X_Project_Id;
1119               END IF;
1120 
1121               IF l_prev_task_id is not null AND X_Task_Id is null THEN
1122                  l_workorder_rec.task_id := FND_API.G_MISS_NUM;
1123               ELSE
1124                  l_workorder_rec.task_id := X_Task_Id;
1125               END IF;
1126 
1127               /* Added for bug#5346446 End */
1128 
1129               /* Commented for bug#5346446 Start
1130               l_workorder_rec.project_id := X_Project_Id;
1131               l_workorder_rec.task_id := X_Task_Id;
1132               Commented for bug#5346446 End */
1133 
1134               l_workorder_rec.material_issue_by_mo := X_material_issue_by_mo;
1135 
1136               -- Set user id and responsibility id so that we can set apps context
1137               -- before calling any concurrent program
1138               l_workorder_rec.user_id := l_user_id;
1139               l_workorder_rec.responsibility_id := l_responsibility_id;
1140 
1141               l_workorder_rec.manual_rebuild_flag  := X_manual_rebuild_flag;
1142 	      l_workorder_rec.requested_start_date :=   X_requested_start_date;
1143               l_workorder_rec.due_date   :=  X_requested_due_date;
1144               l_workorder_rec.notification_required := X_notification_required;
1145               l_workorder_rec.tagout_required      := X_tagout_required;
1146               l_workorder_rec.plan_maintenance     := X_plan_maintenance;
1147               l_workorder_rec.pm_schedule_id       := X_pm_schedule_id;
1148 
1149               l_workorder_rec.class_code        :=  X_class_code;
1150               l_workorder_rec.material_account := X_material_account;
1151   	      l_workorder_rec.material_overhead_account:= X_material_overhead_account;
1152               l_workorder_rec.resource_account  := X_resource_account;
1153               l_workorder_rec.outside_processing_account := X_outside_processing_account;
1154               l_workorder_rec.material_variance_account  :=  X_material_variance_account;
1155               l_workorder_rec.resource_variance_account  := X_resource_variance_account;
1156               l_workorder_rec.outside_proc_variance_account  :=  X_outside_proc_var_account;
1157               l_workorder_rec.std_cost_adjustment_account  := X_std_cost_adjustment_account;
1158                l_workorder_rec.overhead_account   :=  X_overhead_account;
1159               l_workorder_rec.overhead_variance_account  := X_overhead_variance_account;
1160                l_workorder_rec.common_bom_sequence_id  := X_common_bom_sequence_id;
1161               l_workorder_rec.common_routing_sequence_id  := X_common_routing_sequence_id;
1162               l_workorder_rec.bom_revision   := X_bom_revision;
1163               l_workorder_rec.routing_revision   := X_routing_revision;
1164               l_workorder_rec.bom_revision_date   :=   X_bom_revision_date;
1165               l_workorder_rec.routing_revision_date   :=   X_routing_revision_date;
1166 	      l_workorder_rec.alternate_bom_designator  :=  X_alternate_bom_designator;
1167  	      l_workorder_rec.alternate_routing_designator  :=   X_alternate_routing_designator;
1168                l_workorder_rec.Schedule_Group_Id   :=  X_Schedule_Group_Id;
1169 
1170               IF l_prev_attribute_category is not null and X_attribute_category is null THEN
1171                         l_workorder_rec.attribute_category  := FND_API.G_MISS_CHAR;
1172               ELSE
1173                         l_workorder_rec.attribute_category := X_attribute_category;
1174               END IF;
1175 
1176               IF l_prev_attribute1 is not null and X_attribute1 is null THEN
1177                         l_workorder_rec.attribute1  := FND_API.G_MISS_CHAR;
1178               ELSE
1179                         l_workorder_rec.attribute1 := X_attribute1;
1180               END IF;
1181 
1182               IF l_prev_attribute2 is not null and X_attribute2 is null THEN
1183                         l_workorder_rec.attribute2  := FND_API.G_MISS_CHAR;
1184               ELSE
1185                         l_workorder_rec.attribute2 := X_attribute2;
1186               END IF;
1187 
1188               IF l_prev_attribute3 is not null and X_attribute3 is null THEN
1189                         l_workorder_rec.attribute3  := FND_API.G_MISS_CHAR;
1190               ELSE
1191                         l_workorder_rec.attribute3 := X_attribute3;
1192               END IF;
1193 
1194               IF l_prev_attribute4 is not null and X_attribute4 is null THEN
1195                         l_workorder_rec.attribute4  := FND_API.G_MISS_CHAR;
1196               ELSE
1197                         l_workorder_rec.attribute4 := X_attribute4;
1198               END IF;
1199 
1200               IF l_prev_attribute5 is not null and X_attribute5 is null THEN
1201                         l_workorder_rec.attribute5  := FND_API.G_MISS_CHAR;
1202               ELSE
1203                         l_workorder_rec.attribute5 := X_attribute5;
1204               END IF;
1205 
1206               IF l_prev_attribute6 is not null and X_attribute6 is null THEN
1207                         l_workorder_rec.attribute6  := FND_API.G_MISS_CHAR;
1208               ELSE
1209                         l_workorder_rec.attribute6 := X_attribute6;
1210               END IF;
1211 
1212               IF l_prev_attribute7 is not null and X_attribute7 is null THEN
1213                         l_workorder_rec.attribute7  := FND_API.G_MISS_CHAR;
1214               ELSE
1215                         l_workorder_rec.attribute7 := X_attribute7;
1216               END IF;
1217 
1218               IF l_prev_attribute8 is not null and X_attribute8 is null THEN
1219                         l_workorder_rec.attribute8  := FND_API.G_MISS_CHAR;
1220               ELSE
1221                         l_workorder_rec.attribute8 := X_attribute8;
1222               END IF;
1223 
1224               IF l_prev_attribute9 is not null and X_attribute9 is null THEN
1225                         l_workorder_rec.attribute9  := FND_API.G_MISS_CHAR;
1226               ELSE
1227                         l_workorder_rec.attribute9 := X_attribute9;
1228               END IF;
1229 
1230               IF l_prev_attribute10 is not null and X_attribute10 is null THEN
1231                         l_workorder_rec.attribute10  := FND_API.G_MISS_CHAR;
1232               ELSE
1233                         l_workorder_rec.attribute10 := X_attribute10;
1234               END IF;
1235 
1236               IF l_prev_attribute11 is not null and X_attribute11 is null THEN
1237                         l_workorder_rec.attribute11  := FND_API.G_MISS_CHAR;
1238               ELSE
1239                         l_workorder_rec.attribute11 := X_attribute11;
1240               END IF;
1241 
1242               IF l_prev_attribute12 is not null and X_attribute12 is null THEN
1243                         l_workorder_rec.attribute12  := FND_API.G_MISS_CHAR;
1244               ELSE
1245                         l_workorder_rec.attribute12 := X_attribute12;
1246               END IF;
1247 
1248               IF l_prev_attribute13 is not null and X_attribute13 is null THEN
1249                         l_workorder_rec.attribute13  := FND_API.G_MISS_CHAR;
1250               ELSE
1251                         l_workorder_rec.attribute13 := X_attribute13;
1252               END IF;
1253 
1254               IF l_prev_attribute14 is not null and X_attribute14 is null THEN
1255                         l_workorder_rec.attribute14  := FND_API.G_MISS_CHAR;
1256               ELSE
1257                         l_workorder_rec.attribute14 := X_attribute14;
1258               END IF;
1259 
1260               IF l_prev_attribute15 is not null and X_attribute15 is null THEN
1261                         l_workorder_rec.attribute15  := FND_API.G_MISS_CHAR;
1262               ELSE
1263                         l_workorder_rec.attribute15 := X_attribute15;
1264               END IF;
1265 
1266 	      IF x_failure_code_required is NULL THEN
1267                  l_workorder_rec.failure_code_required := FND_API.G_MISS_CHAR;
1268               ELSE
1269                  l_workorder_rec.failure_code_required := x_failure_code_required;
1270               END IF;
1271               IF (l_eam_failure_entry_record.failure_date IS NULL) THEN
1272                  l_eam_failure_entry_record.failure_date := FND_API.G_MISS_DATE;
1273               END IF;
1274               FOR  i IN 1..l_eam_failure_codes_tbl.count
1275 	      LOOP
1276 		      IF l_eam_failure_codes_tbl(i).failure_code IS NULL THEN
1277 			  l_eam_failure_codes_tbl(i).failure_code := FND_API.G_MISS_CHAR;
1278 		      END IF;
1279 		      IF l_eam_failure_codes_tbl(i).cause_code IS NULL THEN
1280 			 l_eam_failure_codes_tbl(i).cause_code := FND_API.G_MISS_CHAR;
1281 		      END IF;
1282 		      IF l_eam_failure_codes_tbl(i).resolution_code IS NULL THEN
1283 			 l_eam_failure_codes_tbl(i).resolution_code := FND_API.G_MISS_CHAR;
1284 		      END IF;
1285 		      IF l_eam_failure_codes_tbl(i).comments IS NULL THEN
1286 			 l_eam_failure_codes_tbl(i).comments := FND_API.G_MISS_CHAR;
1287 		      END IF;
1288               END LOOP;
1289 
1290               IF l_eam_failure_entry_record.failure_id IS NOT NULL THEN
1291                       l_eam_failure_entry_record.transaction_type := EAM_Process_Failure_Entry_PUB.G_FE_UPDATE;
1292               ELSIF l_eam_failure_entry_record.failure_date = FND_API.G_MISS_DATE THEN
1293                    l_eam_failure_entry_record.transaction_type :=null;
1294               ELSE
1295                    l_eam_failure_entry_record.transaction_type := EAM_Process_Failure_Entry_PUB.G_FE_CREATE ;
1296               END IF;
1297 
1298 	      FOR  i in 1..l_eam_failure_codes_tbl.count
1299 	      LOOP
1300 		      IF l_eam_failure_codes_tbl(i).failure_entry_id IS NOT NULL THEN
1301 			    l_eam_failure_codes_tbl(i).transaction_type := EAM_Process_Failure_Entry_PUB.G_FE_UPDATE;
1302 			    l_workorder_rec.eam_failure_codes_tbl(i) := l_eam_failure_codes_tbl(i);
1303 		      ELSE
1304 			IF  (not( (l_eam_failure_codes_tbl(i).failure_code = FND_API.G_MISS_CHAR)
1305 			      and (l_eam_failure_codes_tbl(i).cause_code = FND_API.G_MISS_CHAR)
1306 			      and (l_eam_failure_codes_tbl(i).resolution_code = FND_API.G_MISS_CHAR)
1307 			      and (l_eam_failure_codes_tbl(i).comments = FND_API.G_MISS_CHAR)
1308 			     )) THEN
1309 				  l_eam_failure_codes_tbl(i).transaction_type := EAM_Process_Failure_Entry_PUB.G_FE_CREATE;
1310 				  if l_eam_failure_codes_tbl(i).failure_code = FND_API.G_MISS_CHAR THEN
1311 				     l_eam_failure_codes_tbl(i).failure_code := NULL;
1312 				  END IF;
1313 				  IF l_eam_failure_codes_tbl(i).cause_code = FND_API.G_MISS_CHAR THEN
1314 				     l_eam_failure_codes_tbl(i).cause_code := NULL;
1315 				  END IF;
1316 				  IF l_eam_failure_codes_tbl(i).resolution_code = FND_API.G_MISS_CHAR THEN
1317 				     l_eam_failure_codes_tbl(i).resolution_code := NULL;
1318 				  END IF;
1319 				  IF l_eam_failure_codes_tbl(i).comments = FND_API.G_MISS_CHAR THEN
1320 				     l_eam_failure_codes_tbl(i).comments := NULL;
1321 				  END IF;
1322 				  l_workorder_rec.eam_failure_codes_tbl(i) := l_eam_failure_codes_tbl(i);
1323 		       ELSE
1324 				  l_workorder_rec.eam_failure_codes_tbl(i) := l_eam_failure_codes_tbl(i);
1325 				  l_workorder_rec.eam_failure_codes_tbl.delete(i);
1326 		       END IF;
1327 		      END IF;
1328               END LOOP;
1329               l_workorder_rec.eam_failure_entry_record := l_eam_failure_entry_record;
1330 
1331  SAVEPOINT UPDATE_WO;
1332 
1333      select parent_wip_entity_id
1334      into l_old_rebuild_source
1335      from wip_discrete_jobs
1336      where wip_entity_id=X_wip_Entity_Id;
1337 
1338        l_eam_wo_tbl(1) := l_workorder_rec;
1339        l_eam_wo_tbl1(1) := l_workorder_rec1;
1340 
1341 
1342 
1343 
1344 /*Delink child from the old rebuild source and attach to the new rebuild source */
1345 if(X_manual_rebuild_flag='Y') then
1346 
1347 
1348 if(((l_old_rebuild_source  is not null)  and (X_parent_wip_entity_id is null))
1349     or ((l_old_rebuild_source is null )  and  (X_parent_wip_entity_id is not null))
1350     or (l_old_rebuild_source  <> X_parent_wip_entity_id)
1351     )then
1352 
1353 
1354     if(l_old_rebuild_source is not null) then
1355 
1356 
1357    ----If constraining relationship exists with rebuild source delete it
1358      select count(*)
1359      into constraining_rel
1360      from eam_wo_relationships
1361      where parent_object_id=l_old_rebuild_source
1362      and child_object_id=X_wip_Entity_Id
1363      and parent_relationship_type=1;
1364 
1365    if(constraining_rel=1) then
1366      l_eam_wo_relations_rec1.batch_id  :=  1;
1367      l_eam_wo_relations_rec1.parent_object_id := l_old_rebuild_source;
1368      l_eam_wo_relations_rec1.parent_object_type_id := 1;
1369      l_eam_wo_relations_rec1.parent_header_id := l_old_rebuild_source;
1370      l_eam_wo_relations_rec1.child_object_type_id := 1;
1371      l_eam_wo_relations_rec1.child_header_id    :=X_wip_Entity_Id;
1372      l_eam_wo_relations_rec1.child_object_id    :=X_wip_Entity_Id;
1373      l_eam_wo_relations_rec1.parent_relationship_type  := 1;
1374      l_eam_wo_relations_rec1.transaction_type := EAM_PROCESS_WO_PUB.G_OPR_DELETE;
1375 
1376          l_eam_wo_relations_tbl(record_count) := l_eam_wo_relations_rec1;
1377           record_count := record_count +1;
1378 
1379     end if;
1380 
1381 
1382   ----If followup relationship exists with rebuild source delete it
1383 
1384      select count(*)
1385      into followup_rel
1386      from eam_wo_relationships
1387      where parent_object_id=l_old_rebuild_source
1388      and child_object_id=X_wip_Entity_Id
1389      and parent_relationship_type=4;
1390 
1391    if(followup_rel=1) then
1392                  l_eam_wo_relations_rec2.batch_id  :=  1;
1393     		 l_eam_wo_relations_rec2.parent_object_id := l_old_rebuild_source;
1394    		  l_eam_wo_relations_rec2.parent_object_type_id := 1;
1395    		  l_eam_wo_relations_rec2.parent_header_id := l_old_rebuild_source;
1396    		  l_eam_wo_relations_rec2.child_object_type_id := 1;
1397    		  l_eam_wo_relations_rec2.child_header_id    :=X_wip_Entity_Id;
1398     		 l_eam_wo_relations_rec2.child_object_id    :=X_wip_Entity_Id;
1399    		  l_eam_wo_relations_rec2.parent_relationship_type  := 4;
1400     		 l_eam_wo_relations_rec2.transaction_type := EAM_PROCESS_WO_PUB.G_OPR_DELETE;
1401 
1402          l_eam_wo_relations_tbl(record_count) := l_eam_wo_relations_rec2;
1403          record_count := record_count +1;
1404 
1405 
1406 
1407    end if;
1408 
1409    end if;
1410 
1411 
1412 
1413   if(X_parent_wip_entity_id is not null) then
1414 
1415      l_eam_wo_relations_rec3.batch_id  :=  1;
1416      l_eam_wo_relations_rec3.parent_object_id := X_parent_wip_entity_id;
1417      l_eam_wo_relations_rec3.parent_object_type_id := 1;
1418      l_eam_wo_relations_rec3.parent_header_id := X_parent_wip_entity_id;
1419      l_eam_wo_relations_rec3.child_object_type_id := 1;
1420      l_eam_wo_relations_rec3.child_header_id    :=X_wip_Entity_Id;
1421      l_eam_wo_relations_rec3.child_object_id    :=X_wip_Entity_Id;
1422      l_eam_wo_relations_rec3.parent_relationship_type  := 1;
1423      l_eam_wo_relations_rec3.adjust_parent   := FND_API.G_FALSE;
1424      l_eam_wo_relations_rec3.transaction_type := EAM_PROCESS_WO_PUB.G_OPR_CREATE;
1425 
1426          l_eam_wo_relations_tbl(record_count) := l_eam_wo_relations_rec3;
1427          record_count := record_count +1;
1428 
1429 
1430      l_eam_wo_relations_rec4.batch_id  :=  1;
1431      l_eam_wo_relations_rec4.parent_object_id := X_parent_wip_entity_id;
1432      l_eam_wo_relations_rec4.parent_object_type_id := 1;
1433      l_eam_wo_relations_rec4.parent_header_id := X_parent_wip_entity_id;
1434      l_eam_wo_relations_rec4.child_object_type_id := 1;
1435      l_eam_wo_relations_rec4.child_header_id    :=X_wip_Entity_Id;
1436      l_eam_wo_relations_rec4.child_object_id    :=X_wip_Entity_Id;
1437      l_eam_wo_relations_rec4.parent_relationship_type  := 4;
1438      l_eam_wo_relations_rec4.adjust_parent   := FND_API.G_FALSE;
1439      l_eam_wo_relations_rec4.transaction_type := EAM_PROCESS_WO_PUB.G_OPR_CREATE;
1440 
1441          l_eam_wo_relations_tbl(record_count) := l_eam_wo_relations_rec4;
1442           record_count := record_count +1;
1443 
1444 
1445     end if;
1446 end if;
1447 end if;
1448 
1449 begin
1450 
1451       EAM_PROCESS_WO_PUB.Process_Master_Child_WO
1452   	         ( p_bo_identifier           => 'EAM'
1453   	         , p_init_msg_list           => TRUE
1454   	         , p_api_version_number      => 1.0
1455   	         , p_eam_wo_tbl              => l_eam_wo_tbl
1456                  , p_eam_wo_relations_tbl   => l_eam_wo_relations_tbl
1457   	         , p_eam_op_tbl              => l_eam_op_tbl
1458   	         , p_eam_op_network_tbl      => l_eam_op_network_tbl
1459   	         , p_eam_res_tbl             => l_eam_res_tbl
1460   	         , p_eam_res_inst_tbl        => l_eam_res_inst_tbl
1461   	         , p_eam_sub_res_tbl         => l_eam_sub_res_tbl
1462 		 , p_eam_res_usage_tbl       => l_eam_res_usage_tbl
1463     	         , p_eam_mat_req_tbl         => l_eam_mat_req_tbl
1464                  , p_eam_direct_items_tbl =>   l_eam_direct_items_tbl
1465 
1466 		 , p_eam_wo_comp_tbl         => l_eam_wo_comp_tbl
1467 		 , p_eam_wo_quality_tbl      => l_eam_wo_quality_tbl
1468 		 , p_eam_meter_reading_tbl   => l_eam_meter_reading_tbl
1469 		 , p_eam_counter_prop_tbl    => l_eam_counter_prop_tbl
1470 		 , p_eam_wo_comp_rebuild_tbl => l_eam_wo_comp_rebuild_tbl
1471 		 , p_eam_wo_comp_mr_read_tbl => l_eam_wo_comp_mr_read_tbl
1472 		 , p_eam_op_comp_tbl         => l_eam_op_comp_tbl
1473 		 , p_eam_request_tbl         => l_eam_request_tbl
1474 
1475   	         , x_eam_wo_tbl              => l_eam_wo_tbl1
1476                  , x_eam_wo_relations_tbl    => l_eam_wo_relations_tbl1
1477   	         , x_eam_op_tbl              => l_eam_op_tbl1
1478   	         , x_eam_op_network_tbl      => l_eam_op_network_tbl1
1479   	         , x_eam_res_tbl             => l_eam_res_tbl1
1480   	         , x_eam_res_inst_tbl        => l_eam_res_inst_tbl1
1481   	         , x_eam_sub_res_tbl         => l_eam_sub_res_tbl1
1482 		 , x_eam_res_usage_tbl       => l_eam_res_usage_tbl
1483   	         , x_eam_mat_req_tbl         => l_eam_mat_req_tbl1
1484                 , x_eam_direct_items_tbl =>   l_eam_direct_items_tbl_1
1485 
1486 		, x_eam_wo_comp_tbl         => l_eam_wo_comp_tbl_1
1487 		 , x_eam_wo_quality_tbl      => l_eam_wo_quality_tbl_1
1488 		 , x_eam_meter_reading_tbl   => l_eam_meter_reading_tbl_1
1489 		 , x_eam_counter_prop_tbl    => l_out_eam_counter_prop_tbl
1490 		 , x_eam_wo_comp_rebuild_tbl => l_eam_wo_comp_rebuild_tbl_1
1491 		 , x_eam_wo_comp_mr_read_tbl => l_eam_wo_comp_mr_read_tbl_1
1492 		 , x_eam_op_comp_tbl         => l_eam_op_comp_tbl_1
1493 		 , x_eam_request_tbl         => l_eam_request_tbl_1
1494 
1495   	         , x_return_status           => l_return_status
1496   	         , x_msg_count               => l_msg_count
1497   	         , p_debug                   => NVL(fnd_profile.value('EAM_DEBUG'), 'N')
1498   	         , p_debug_filename          => 'updatewo.log'
1499   	         , p_output_dir              => l_output_dir
1500                  , p_commit                  => 'N'
1501                  , p_debug_file_mode         => 'w'
1502            );
1503     x_return_status := l_return_status; /*7003588*/
1504  exception
1505    when others then
1506       ROLLBACK TO UPDATE_WO;
1507         l_msg_count := FND_MSG_PUB.count_msg;
1508          l_message_text :=' ';
1509         if(l_msg_count>0) then
1510            get_all_mesg(mesg=>l_message_text);
1511         end if;
1512            fnd_message.set_name('EAM','EAM_ERROR_UPDATE_WO');
1513 
1514            fnd_message.set_token(token => 'MESG',
1515 			    value => l_message_text,
1516 			    translate => FALSE);
1517 
1518 
1519         APP_EXCEPTION.RAISE_EXCEPTION;
1520 end;
1521 
1522 
1523    l_workorder_rec1 := l_eam_wo_tbl1(l_eam_wo_tbl1.first);
1524 
1525 
1526 
1527    if((nvl(l_return_status,'S'))='S') then
1528 
1529            select rowid into X_We_Rowid from WIP_ENTITIES where wip_entity_id=X_wip_entity_id;
1530 
1531    else
1532         ROLLBACK TO UPDATE_WO;
1533         l_msg_count := FND_MSG_PUB.count_msg;
1534          l_message_text :=' ';
1535         if(l_msg_count>0) then
1536            get_all_mesg(mesg=>l_message_text);
1537         end if;
1538            fnd_message.set_name('EAM','EAM_ERROR_UPDATE_WO');
1539 
1540            fnd_message.set_token(token => 'MESG',
1541 			    value => l_message_text,
1542 			    translate => FALSE);
1543 
1544 
1545         APP_EXCEPTION.RAISE_EXCEPTION;
1546 
1547    end if;
1548 
1549 
1550 COMMIT;
1551 
1552 
1553 /*copy the values from the wo api back to the out parameters */
1554 
1555 
1556 		X_description:=l_workorder_rec1.description ;
1557 
1558 		X_firm_planned_flag :=l_workorder_rec1.firm_planned_flag;
1559 
1560 		X_owning_department :=l_workorder_rec1.owning_department ;
1561 		X_planner_maintenance := l_workorder_rec1.planner_type ; --vardha
1562 		X_scheduled_start_date := l_workorder_rec1.scheduled_start_date ;
1563 		X_scheduled_completion_date := l_workorder_rec1.scheduled_completion_date;
1564 		X_status_type := l_workorder_rec1.status_type;
1565 
1566 		X_user_defined_status_id := l_workorder_rec1.user_defined_status_id;
1567 		X_pending_flag := l_workorder_rec1.pending_flag;
1568 		X_workflow_type := l_workorder_rec1.workflow_type;
1569 		X_warranty_claim_status := l_workorder_rec1.warranty_claim_status;
1570 		X_material_shortage_flag := l_workorder_rec1.material_shortage_flag;
1571 		X_material_shortage_check_date := l_workorder_rec1.material_shortage_check_date;
1572 
1573 
1574 		X_activity_type:= l_workorder_rec1.activity_type;
1575 		X_activity_cause:= l_workorder_rec1.activity_cause;
1576 		X_activity_source := l_workorder_rec1.activity_source;
1577 		X_shutdown_type := l_workorder_rec1.shutdown_type;
1578 		X_work_order_type := l_workorder_rec1.work_order_type;
1579 		X_priority := l_workorder_rec1.priority;
1580 		X_material_issue_by_mo := l_workorder_rec1.material_issue_by_mo;
1581 
1582 
1583 		X_manual_rebuild_flag :=  l_workorder_rec1.manual_rebuild_flag ;
1584 		X_requested_start_date := l_workorder_rec1.requested_start_date;
1585 		X_requested_due_date := l_workorder_rec1.due_date  ;
1586 		X_notification_required := l_workorder_rec1.notification_required;
1587 		X_tagout_required := l_workorder_rec1.tagout_required     ;
1588 		X_plan_maintenance := l_workorder_rec1.plan_maintenance     ;
1589 		X_class_code := l_workorder_rec1.class_code       ;
1590 		X_material_account := l_workorder_rec1.material_account;
1591 		X_material_overhead_account := l_workorder_rec1.material_overhead_account;
1592 		X_resource_account := l_workorder_rec1.resource_account ;
1593 		X_outside_processing_account := l_workorder_rec1.outside_processing_account;
1594 		X_material_variance_account := l_workorder_rec1.material_variance_account  ;
1595 		X_resource_variance_account := l_workorder_rec1.resource_variance_account  ;
1596 		X_outside_proc_var_account := l_workorder_rec1.outside_proc_variance_account  ;
1597 		X_std_cost_adjustment_account := l_workorder_rec1.std_cost_adjustment_account ;
1598 		X_overhead_account :=  l_workorder_rec1.overhead_account  ;
1599 		X_overhead_variance_account := l_workorder_rec1.overhead_variance_account  ;
1600 		-- l_workorder_rec.common_routing_reference_id   := X_routing_reference_id;
1601 		X_common_bom_sequence_id := l_workorder_rec1.common_bom_sequence_id  ;
1602 		X_common_routing_sequence_id := l_workorder_rec1.common_routing_sequence_id  ;
1603 		X_bom_revision := l_workorder_rec1.bom_revision   ;
1604 		X_routing_revision:=  l_workorder_rec1.routing_revision  ;
1605 		X_bom_revision_date := l_workorder_rec1.bom_revision_date  ;
1606 		X_routing_revision_date := l_workorder_rec1.routing_revision_date  ;
1607 		X_alternate_bom_designator := l_workorder_rec1.alternate_bom_designator ;
1608 		X_alternate_routing_designator := l_workorder_rec1.alternate_routing_designator  ;
1609 		X_attribute_category := l_workorder_rec1.attribute_category ;
1610 		X_attribute1 := l_workorder_rec1.attribute1;
1611 		X_attribute2 := l_workorder_rec1.attribute2;
1612 		X_attribute3 := l_workorder_rec1.attribute3 ;
1613 		X_attribute4 := l_workorder_rec1.attribute4;
1614 		X_attribute5 := l_workorder_rec1.attribute5 ;
1615 		X_attribute6 := l_workorder_rec1.attribute6 ;
1616 		X_attribute7 := l_workorder_rec1.attribute7 ;
1617 		X_attribute8 := l_workorder_rec1.attribute8;
1618 		X_attribute9 := l_workorder_rec1.attribute9 ;
1619 		X_attribute10 := l_workorder_rec1.attribute10;
1620 		X_attribute11 := l_workorder_rec1.attribute11;
1621 		X_attribute12 := l_workorder_rec1.attribute12;
1622 		X_attribute13 := l_workorder_rec1.attribute13;
1623 		X_attribute14 := l_workorder_rec1.attribute14 ;
1624 		X_attribute15 := l_workorder_rec1.attribute15 ;
1625 		x_failure_code_required := l_workorder_rec1.failure_code_required;
1626                 x_eam_failure_entry_record := l_workorder_rec1.eam_failure_entry_record;
1627                 x_eam_failure_codes_tbl    := l_workorder_rec1.eam_failure_codes_tbl;
1628 
1629 
1630 /*end of copy params */
1631 
1632 
1633 
1634     -- asset genealogy is updated when a automatic work order is created for a a rebuild serial number
1635     -- which is part of an asset hierarchy. bug number  2899984
1636  if (X_rebuild_serial_number is not null) then
1637 
1638  Update_Genealogy(   X_wip_entity_id        => X_Wip_Entity_Id,
1639                                          X_organization_id      =>X_Organization_Id,
1640                                          X_parent_wip_entity_id	=>X_parent_wip_entity_id,
1641  		                          X_rebuild_item_id	    => X_rebuild_item_id,
1642  		                          X_rebuild_serial_number=>X_rebuild_serial_number,
1643  		                           X_manual_rebuild_flag	=>X_manual_rebuild_flag,
1644 									x_maintenance_object_type     => x_maintenance_object_type ,
1645 										 x_maintenance_object_id       => x_maintenance_object_id);
1646 
1647  end if;
1648 
1649 
1650 
1651 END Update_Workorder;
1652 
1653 PROCEDURE Lock_Row( X_Rowid 			VARCHAR2,
1654 		X_wip_entity_id			NUMBER,
1655 		X_organization_id		NUMBER,
1656 		X_description			VARCHAR2,
1657 		X_status_type			NUMBER,
1658 
1659 		X_user_defined_status_id	NUMBER,
1660 		X_pending_flag			VARCHAR2,
1661 		X_workflow_type			NUMBER ,
1662 		X_warranty_claim_status		NUMBER,
1663 		X_material_shortage_flag        NUMBER,
1664 		X_material_shortage_check_date  DATE,
1665 
1666 		X_primary_item_id		NUMBER,
1667 		X_parent_wip_entity_id		NUMBER,
1668 		X_asset_number			VARCHAR2,
1669 		X_asset_group_id		NUMBER,
1670 		X_pm_schedule_id		NUMBER,
1671 		X_rebuild_item_id		NUMBER,
1672 		X_rebuild_serial_number		VARCHAR2,
1673 		X_manual_rebuild_flag		VARCHAR2,
1674 		X_shutdown_type			VARCHAR2,
1675 		X_tagout_required		VARCHAR2,
1676 		X_plan_maintenance		VARCHAR2,
1677 		X_estimation_status		VARCHAR2,
1678 		X_requested_start_date		DATE,
1679 		X_requested_due_date		DATE,
1680 		X_notification_required		VARCHAR2,
1681 		X_work_order_type		VARCHAR2,
1682 		X_owning_department		NUMBER,
1683 		X_activity_type			VARCHAR2,
1684 		X_activity_cause		VARCHAR2,
1685 		X_firm_planned_flag		NUMBER,
1686 		X_class_code			VARCHAR2,
1687 		X_material_account		NUMBER,
1688 		X_material_overhead_account	NUMBER,
1689 		X_resource_account		NUMBER,
1690 		X_outside_processing_account	NUMBER,
1691 		X_material_variance_account	NUMBER,
1692 		X_resource_variance_account	NUMBER,
1693 		X_outside_proc_var_account	NUMBER,
1694 		X_std_cost_adjustment_account	NUMBER,
1695 		X_overhead_account		NUMBER,
1696 		X_overhead_variance_account	NUMBER,
1697 		X_scheduled_start_date		DATE,
1698 		X_date_released			DATE,
1699 		X_scheduled_completion_date	DATE,
1700 		X_date_completed		DATE,
1701 		X_date_closed			DATE,
1702 		X_bom_reference_id		NUMBER,
1703 		X_routing_reference_id		NUMBER,
1704 		X_common_bom_sequence_id	NUMBER,
1705 		X_common_routing_sequence_id	NUMBER,
1706 		X_bom_revision			VARCHAR2,
1707 		X_routing_revision		VARCHAR2,
1708 		X_bom_revision_date		DATE,
1709 		X_routing_revision_date		DATE,
1710 		X_lot_number			VARCHAR2,
1711 		X_alternate_bom_designator	VARCHAR2,
1712 		X_alternate_routing_designator	VARCHAR2,
1713 		X_completion_subinventory	VARCHAR2,
1714 		X_completion_locator_id		NUMBER,
1715 		X_demand_class			VARCHAR2,
1716 		X_attribute_category		VARCHAR2,
1717 		X_attribute1			VARCHAR2,
1718 		X_attribute2			VARCHAR2,
1719 		X_attribute3			VARCHAR2,
1720 		X_attribute4			VARCHAR2,
1721 		X_attribute5			VARCHAR2,
1722 		X_attribute6			VARCHAR2,
1723 		X_attribute7			VARCHAR2,
1724 		X_attribute8			VARCHAR2,
1725 		X_attribute9			VARCHAR2,
1726 		X_attribute10			VARCHAR2,
1727 		X_attribute11			VARCHAR2,
1728 		X_attribute12			VARCHAR2,
1729 		X_attribute13			VARCHAR2,
1730 		X_attribute14			VARCHAR2,
1731 		X_attribute15			VARCHAR2,
1732 		X_We_Rowid			VARCHAR2,
1733 		X_Entity_Type			NUMBER,
1734 		X_Wip_Entity_Name		VARCHAR2,
1735 		X_Update_Wip_Entities		VARCHAR2,
1736 		X_Schedule_Group_Id		NUMBER,
1737 		X_Project_Id			NUMBER,
1738 		X_Task_Id			NUMBER,
1739                 X_priority                      NUMBER,
1740                 X_maintenance_object_id         NUMBER,
1741 		X_maintenance_object_source     NUMBER,
1742 		X_maintenance_object_type       NUMBER,
1743 		X_material_issue_by_mo          VARCHAR2,
1744 		X_activity_source               VARCHAR2) IS
1745 
1746   CURSOR C_WDJ IS
1747     SELECT *
1748     FROM   WIP_DISCRETE_JOBS
1749     WHERE  rowid = X_Rowid
1750     FOR UPDATE of Wip_Entity_Id NOWAIT;
1751 
1752   CURSOR C_WE IS
1753     SELECT *
1754     FROM WIP_ENTITIES
1755     WHERE rowid = X_We_Rowid
1756     FOR UPDATE of Wip_Entity_Id NOWAIT;
1757 
1758   CURSOR C_ewod IS
1759     SELECT *
1760     FROM eam_work_order_details
1761     WHERE wip_entity_id = X_wip_entity_id
1762     FOR UPDATE of Wip_Entity_Id NOWAIT;
1763 
1764   Recinfo1 C_WDJ%ROWTYPE;
1765   Recinfo2 C_WE%ROWTYPE;
1766   Recinfo3 C_EWOD%ROWTYPE;
1767 
1768 BEGIN
1769 	-- Wip Discrete Jobs
1770 	OPEN C_WDJ;
1771 	FETCH C_WDJ INTO Recinfo1;
1772 	if (C_WDJ%NOTFOUND) then
1773 		CLOSE C_WDJ;
1774 	  	FND_MESSAGE.Set_Name('FND', 'FORM_RECORD_DELETED');
1775 	  	APP_EXCEPTION.Raise_Exception;
1776 	end if;
1777 	CLOSE C_WDJ;
1778 
1779 	if 	(Recinfo1.wip_entity_id =  X_Wip_Entity_Id)
1780 	   AND 	(Recinfo1.organization_id =  X_Organization_Id)
1781 	   AND 	(ltrim(rtrim(nvl(Recinfo1.description, 'xxxx'))) =
1782 		 ltrim(rtrim(nvl(X_Description, 'xxxx'))))
1783 	   AND 	(Recinfo1.status_type =  X_Status_Type)
1784 
1785 	   AND 	(nvl(Recinfo1.primary_item_id, 0) =
1786 		 nvl(X_Primary_Item_Id, 0))
1787 	   AND 	(Recinfo1.firm_planned_flag =  X_Firm_Planned_Flag)
1788 	   AND 	(Recinfo1.class_code =  X_Class_Code)
1789 	   AND 	(nvl(Recinfo1.material_account, 0) =
1790 		 nvl(X_Material_Account, 0))
1791 	   AND	(nvl(Recinfo1.material_overhead_account, 0) =
1792 		 nvl(X_Material_Overhead_Account, 0))
1793 	   AND	(nvl(Recinfo1.resource_account, 0) =
1794 		 nvl(X_Resource_Account, 0))
1795 	   AND	(nvl(Recinfo1.outside_processing_account, 0) =
1796 		 nvl(X_Outside_Processing_Account, 0))
1797 	   AND	(nvl(Recinfo1.material_variance_account, 0) =
1798 		 nvl(X_Material_Variance_Account, 0))
1799 	   AND	(nvl(Recinfo1.resource_variance_account, 0) =
1800 		 nvl(X_Resource_Variance_Account, 0))
1801 	   AND	(nvl(Recinfo1.outside_proc_variance_account, 0) =
1802 		 nvl(X_Outside_Proc_Var_Account, 0))
1803 	   AND	(nvl(Recinfo1.std_cost_adjustment_account, 0) =
1804 		 nvl(X_Std_Cost_Adjustment_Account, 0))
1805 	   AND	(nvl(Recinfo1.overhead_account, 0) =
1806 		 nvl(X_Overhead_Account, 0))
1807 	   AND	(nvl(Recinfo1.overhead_variance_account, 0) =
1808 		 nvl(X_Overhead_Variance_Account, 0))
1809 	   AND	(Recinfo1.scheduled_start_date =  X_Scheduled_Start_Date)
1810 	   AND	((Recinfo1.date_released =  X_Date_Released) OR
1811 		 ((Recinfo1.date_released IS NULL) AND
1812 		  (X_Date_Released IS NULL)))
1813 	   AND 	(Recinfo1.scheduled_completion_date =  X_Scheduled_Completion_Date)
1814 	   AND	((Recinfo1.date_completed =  X_Date_Completed) OR
1815 		 ((Recinfo1.date_completed IS NULL) AND
1816 		  (X_Date_Completed IS NULL)))
1817 	   AND	((Recinfo1.date_closed =  X_Date_Closed) OR
1818 		 ((Recinfo1.date_closed IS NULL) AND
1819 		  (X_Date_Closed IS NULL)))
1820   	then
1821 	  if 	(nvl(Recinfo1.bom_reference_id, 0) =
1822 		 nvl(X_Bom_Reference_Id, 0))
1823 	   AND	(nvl(Recinfo1.common_bom_sequence_id, 0) =
1824 		 nvl(X_Common_Bom_Sequence_Id, 0))
1825 	   AND	(nvl(Recinfo1.common_routing_sequence_id, 0) =
1826 		 nvl(X_Common_Routing_Sequence_Id, 0))
1827 	   AND	(nvl(Recinfo1.bom_revision, 'xxxx') =
1828 		 nvl(X_Bom_Revision, 'xxxx'))
1829 	   AND	(nvl(Recinfo1.routing_revision, 'xxxx') =
1830 		 nvl(X_Routing_Revision, 'xxxx'))
1831 	   AND	((Recinfo1.bom_revision_date =  X_Bom_Revision_Date) OR
1832 		 ((Recinfo1.bom_revision_date IS NULL) AND
1833 		  (X_Bom_Revision_Date IS NULL)))
1834 	   AND	((Recinfo1.routing_revision_date =  X_Routing_Revision_Date) OR
1835 		 ((Recinfo1.routing_revision_date IS NULL) AND
1836 		  (X_Routing_Revision_Date IS NULL)))
1837 	   AND	(nvl(Recinfo1.alternate_bom_designator, 'xxxx') =
1838 		 nvl(X_Alternate_Bom_Designator, 'xxxx'))
1839 	   AND	(nvl(Recinfo1.alternate_routing_designator, 'xxxx') =
1840 		 nvl(X_Alternate_Routing_Designator, 'xxxx'))
1841 	   AND  (nvl(Recinfo1.attribute_category, 'xxxx') =
1842 		 nvl(X_Attribute_Category, 'xxxx'))
1843 	   AND	(nvl(Recinfo1.attribute1, 'xxxx') =
1844 		 nvl(X_Attribute1, 'xxxx'))
1845 	   AND	(nvl(Recinfo1.attribute2, 'xxxx') =
1846 		 nvl(X_Attribute2, 'xxxx'))
1847 	   AND	(nvl(Recinfo1.attribute3, 'xxxx') =
1848 		 nvl(X_Attribute3, 'xxxx'))
1849 	   AND	(nvl(Recinfo1.attribute4, 'xxxx') =
1850 		 nvl(X_Attribute4, 'xxxx'))
1851 	   AND	(nvl(Recinfo1.attribute5, 'xxxx') =
1852 		 nvl(X_Attribute5, 'xxxx'))
1853 	   AND	(nvl(Recinfo1.attribute6, 'xxxx') =
1854 		 nvl(X_Attribute6, 'xxxx'))
1855 	   AND	(nvl(Recinfo1.attribute7, 'xxxx') =
1856 		 nvl(X_Attribute7, 'xxxx'))
1857 	   AND	(nvl(Recinfo1.attribute8, 'xxxx') =
1858 		 nvl(X_Attribute8, 'xxxx'))
1859 	   AND	(nvl(Recinfo1.attribute9, 'xxxx') =
1860 		 nvl(X_Attribute9, 'xxxx'))
1861 	   AND	(nvl(Recinfo1.attribute10, 'xxxx') =
1862 		 nvl(X_Attribute10, 'xxxx'))
1863 	   AND	(nvl(Recinfo1.attribute11, 'xxxx') =
1864 		 nvl(X_Attribute11, 'xxxx'))
1865 	   AND	(nvl(Recinfo1.attribute12, 'xxxx') =
1866 		 nvl(X_Attribute12, 'xxxx'))
1867 	   AND	(nvl(Recinfo1.attribute13, 'xxxx') =
1868 		 nvl(X_Attribute13, 'xxxx'))
1869 	   AND	(nvl(Recinfo1.attribute14, 'xxxx') =
1870 		 nvl(X_Attribute14, 'xxxx'))
1871 	   AND	(nvl(Recinfo1.attribute15, 'xxxx') =
1872 		 nvl(X_Attribute15, 'xxxx'))
1873 	   AND	(nvl(Recinfo1.Project_Id, 0) =
1874 		 nvl(X_Project_Id, 0))
1875 --	   AND  (nvl(Recinfo1.schedule_group_id, 0) =
1876 	--	 nvl(X_Schedule_Group_Id, 0))
1877 	   AND	(nvl(Recinfo1.task_id, 0) =
1878 		 nvl(X_Task_Id, 0))
1879 	   AND	(nvl(Recinfo1.priority, 0) =
1880 		 nvl(X_priority, 0))
1881            AND	(nvl(Recinfo1.maintenance_object_id, 0) =
1882 		 nvl(X_maintenance_object_id, 0))
1883 	   AND	(nvl(Recinfo1.maintenance_object_source, 0) =
1884 		 nvl(X_maintenance_object_source, 0))
1885 	   AND	(nvl(Recinfo1.maintenance_object_type, 0) =
1886 		 nvl(X_maintenance_object_type, 0))
1887            AND	(nvl(Recinfo1.material_issue_by_mo, 'XXXX') =
1888 		 nvl(X_material_issue_by_mo, 'XXXX'))
1889            AND	(nvl(Recinfo1.activity_source, 'XXXX') =
1890 		 nvl(X_activity_source, 'XXXX'))
1891 	  then
1892 	    null;
1893 	  else
1894 		FND_MESSAGE.Set_Name('FND', 'FORM_RECORD_CHANGED');
1895 		APP_EXCEPTION.Raise_Exception;
1896                 null;
1897 	  end if;
1898 	else
1899 		FND_MESSAGE.Set_Name('FND', 'FORM_RECORD_CHANGED');
1900 		APP_EXCEPTION.Raise_Exception;
1901                 null;
1902 	end if;
1903 
1904         -- Wip Entities
1905 	-- Wip Discrete Jobs
1906 	OPEN C_WE;
1907 	FETCH C_WE INTO Recinfo2;
1908 	if (C_WE%NOTFOUND) then
1909 		CLOSE C_WE;
1910 	  	FND_MESSAGE.Set_Name('FND', 'FORM_RECORD_DELETED');
1911 	  	APP_EXCEPTION.Raise_Exception;
1912 	end if;
1913 	CLOSE C_WE;
1914 	if 	(Recinfo2.wip_entity_id = X_Wip_Entity_Id)
1915 	    AND	(Recinfo2.organization_id = X_Organization_Id)
1916 	    AND	(Recinfo2.wip_entity_name = X_Wip_Entity_Name)
1917 	    AND	(Recinfo2.entity_type = X_Entity_Type)
1918 	    AND	(rtrim(nvl(Recinfo2.description, 'xxxx')) =
1919 		 rtrim(nvl(X_Description, 'xxxx')))
1920 	    AND	(nvl(Recinfo2.primary_item_id, 0) =
1921 		 nvl(X_Primary_Item_Id, 0))
1922 	then
1923 	  return;
1924 	else
1925 		FND_MESSAGE.Set_Name('FND', 'FORM_RECORD_CHANGED');
1926 		APP_EXCEPTION.Raise_Exception;
1927 	end if;
1928 
1929 	-- eam_work_order_details
1930 	OPEN C_EWOD;
1931 	FETCH C_EWOD INTO Recinfo3;
1932 	IF (C_EWOD%NOTFOUND) THEN
1933 		CLOSE C_EWOD;
1934 	  	FND_MESSAGE.Set_Name('FND', 'FORM_RECORD_DELETED');
1935 	  	APP_EXCEPTION.Raise_Exception;
1936 	END IF;
1937 	CLOSE C_EWOD;
1938 	IF (Recinfo3.wip_entity_id = X_Wip_Entity_Id)
1939 	    AND	(Recinfo3.organization_id = X_Organization_Id)
1940 	   AND 	(NVL(Recinfo3.user_defined_status_id,0) =  NVL(X_user_defined_status_id,0))
1941 	   AND 	(NVL(Recinfo3.pending_flag,0) =  NVL(X_pending_flag,0))
1942 	   AND 	(NVL(Recinfo3.workflow_type,0) =  NVL(X_workflow_type,0))
1943 	   AND 	(NVL(Recinfo3.warranty_claim_status,0) =  NVL(X_warranty_claim_status,0))
1944 	   AND 	(NVL(Recinfo3.material_shortage_flag,0) =  NVL(X_material_shortage_flag,0))
1945 	   AND 	(NVL(Recinfo3.material_shortage_check_date,sysdate) =  NVL(X_material_shortage_check_date,sysdate))
1946 	THEN
1947 	  return;
1948 	ELSE
1949 		FND_MESSAGE.Set_Name('FND', 'FORM_RECORD_CHANGED');
1950 		APP_EXCEPTION.Raise_Exception;
1951 	END IF;
1952 END Lock_Row;
1953 
1954 
1955 PROCEDURE Get_All_Mesg(mesg IN OUT NOCOPY VARCHAR2)
1956 IS
1957    l_msg_count NUMBER;
1958    temp varchar2(2000);
1959    i NUMBER;
1960    msg_index number;
1961 BEGIN
1962     mesg := '';
1963 
1964 
1965    l_msg_count := fnd_msg_pub.count_msg;
1966      msg_index := l_msg_count;
1967 
1968     for i in 1..l_msg_count loop
1969       fnd_msg_pub.get(p_msg_index => FND_MSG_PUB.G_NEXT,
1970                     p_encoded   => 'F',
1971                     p_data      => temp,
1972                     p_msg_index_out => msg_index);
1973       msg_index := msg_index-1;
1974      mesg := mesg || '    ' ||  to_char(i) || ' . '||temp ;
1975     end loop;
1976 
1977 END GET_ALL_MESG;
1978 
1979 
1980 
1981 END EAM_WORKORDER_PKG;