DBA Data[Home] [Help]

PACKAGE BODY: APPS.EAM_WORKORDER_PKG

Source


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