DBA Data[Home] [Help]

PACKAGE BODY: APPS.WIP_EAMWORKORDER_PVT

Source


1 PACKAGE BODY WIP_EAMWORKORDER_PVT AS
2 /* $Header: WIPVEWOB.pls 120.8.12020000.2 2013/01/30 13:38:32 srkotika ship $ */
3 
4 G_PKG_NAME     CONSTANT VARCHAR2(30):='WIP_EAMWORKORDER_PVT';
5 
6 PROCEDURE Create_EAM_Work_Order
7 (   p_api_version               IN  NUMBER,
8     p_init_msg_list             IN  VARCHAR2 := FND_API.G_FALSE,
9     p_commit                    IN  VARCHAR2 := FND_API.G_FALSE,
10     p_validation_level          IN  NUMBER   := FND_API.G_VALID_LEVEL_FULL,
11     x_return_status             OUT NOCOPY VARCHAR2,
12     x_msg_count                 OUT NOCOPY NUMBER,
13     x_msg_data                  OUT NOCOPY VARCHAR2,
14     p_work_order_rec            IN  work_order_interface_rec_type,
15     x_group_id                  OUT NOCOPY NUMBER,
16     x_request_id                OUT NOCOPY NUMBER
17 )
18 IS
19 l_api_name          CONSTANT VARCHAR2(30)  := 'Create_EAM_Work_Order';
20 l_api_version       CONSTANT NUMBER        := 1.0;
21 l_full_name               CONSTANT VARCHAR2(60) := g_pkg_name || '.' || l_api_name;
22 l_module                  CONSTANT VARCHAR2(60) := 'wip.plsql.'||l_full_name;
23 l_log            boolean := FND_LOG.TEST(FND_LOG.LEVEL_UNEXPECTED, l_module);
24 l_request_id        NUMBER := 0;
25 l_debug             VARCHAR2(1);
26 l_scheduled_start_date      DATE;
27 l_scheduled_completion_date DATE;
28 l_gen_object_id             NUMBER ;
29 l_return_status             VARCHAR2(1);
30 l_msg_count                 NUMBER;
31 l_message_text              VARCHAR2(2000);
32 l_maintenance_object_type   NUMBER;
33 l_maint_obj_fnd             VARCHAR2(1);
34 l_dept_id                   NUMBER;
35 l_def_return_status         VARCHAR2(1);
36 l_def_msg_count             NUMBER;
37 l_def_msg_data              VARCHAR2(1000);
38 l_maintenance_object_id     NUMBER;
39 l_output_dir		VARCHAR2(512);
40 l_asset_group_id	NUMBER	:= NULL;
41 l_asset_number		VARCHAR2(255)	:= NULL;
42 l_rebuild_item_id	NUMBER	:= NULL;
43 l_rebuild_serial_number	VARCHAR2(255)	:= NULL;
44 l_eam_item_type NUMBER;
45 
46     /* added for calling WO API */
47 
48         l_eam_wo_rec EAM_PROCESS_WO_PUB.eam_wo_rec_type;
49         l_eam_op_rec  EAM_PROCESS_WO_PUB.eam_op_rec_type;
50         l_eam_op_tbl  EAM_PROCESS_WO_PUB.eam_op_tbl_type;
51         l_eam_op_network_tbl  EAM_PROCESS_WO_PUB.eam_op_network_tbl_type;
52         l_eam_res_tbl  EAM_PROCESS_WO_PUB.eam_res_tbl_type;
53         l_eam_res_inst_tbl  EAM_PROCESS_WO_PUB.eam_res_inst_tbl_type;
54         l_eam_sub_res_tbl   EAM_PROCESS_WO_PUB.eam_sub_res_tbl_type;
55         l_eam_res_usage_tbl  EAM_PROCESS_WO_PUB.eam_res_usage_tbl_type;
56         l_eam_mat_req_tbl   EAM_PROCESS_WO_PUB.eam_mat_req_tbl_type;
57         l_eam_di_tbl   EAM_PROCESS_WO_PUB.eam_direct_items_tbl_type;
58 
59         l_out_eam_wo_rec EAM_PROCESS_WO_PUB.eam_wo_rec_type;
60         l_out_eam_op_tbl  EAM_PROCESS_WO_PUB.eam_op_tbl_type;
61         l_out_eam_op_network_tbl  EAM_PROCESS_WO_PUB.eam_op_network_tbl_type;
62         l_out_eam_res_tbl  EAM_PROCESS_WO_PUB.eam_res_tbl_type;
63         l_out_eam_res_inst_tbl  EAM_PROCESS_WO_PUB.eam_res_inst_tbl_type;
64         l_out_eam_sub_res_tbl   EAM_PROCESS_WO_PUB.eam_sub_res_tbl_type;
65         l_out_eam_res_usage_tbl  EAM_PROCESS_WO_PUB.eam_res_usage_tbl_type;
66         l_out_eam_mat_req_tbl   EAM_PROCESS_WO_PUB.eam_mat_req_tbl_type;
67         l_out_eam_di_tbl   EAM_PROCESS_WO_PUB.eam_direct_items_tbl_type;
68 
69 BEGIN
70     if (l_log and (FND_LOG.LEVEL_PROCEDURE >= FND_LOG.G_CURRENT_RUNTIME_LEVEL)) then
71       FND_LOG.STRING(FND_LOG.LEVEL_PROCEDURE, l_module, 'Start of ' || l_module);
72     end if;
73     l_maint_obj_fnd :='N';
74     l_eam_wo_rec.asset_activity_id := p_work_order_rec.primary_item_id;
75 
76     -- Standard Start of API savepoint
77     SAVEPOINT    Create_EAM_Work_Order_PVT;
78     -- Standard call to check for call compatibility.
79     IF NOT FND_API.Compatible_API_Call (l_api_version,
80                                         p_api_version,
81                                         l_api_name,
82                                         G_PKG_NAME )
83     THEN
84         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
85     END IF;
86     -- Initialize message list if p_init_msg_list is set to TRUE.
87     IF FND_API.to_Boolean( p_init_msg_list ) THEN
88         FND_MSG_PUB.initialize;
89     END IF;
90     --  Initialize API return status to success
91     x_return_status := FND_API.G_RET_STS_SUCCESS;
92     -- API body
93 
94    -- EAM Specific Validation
95    IF (NVL(p_work_order_rec.load_type,7) <> 7) THEN
96         FND_MESSAGE.SET_NAME('EAM','Incorrect Value of Load Type: '||p_work_order_rec.load_type);
97         FND_MSG_PUB.ADD();
98         RAISE FND_API.G_EXC_ERROR;
99    END IF;
100 
101 /*
102 	For maintenance_object_type, use the following criteria
103 	1. For asset work orders and serialized rebuild work order, pass value of 3
104 	2. For non-serialized rebuild work orders, pass value of 2
105 	*/
106 
107 	 l_asset_group_id := p_work_order_rec.asset_group_id;
108 	 l_asset_number := p_work_order_rec.asset_number;
109          l_rebuild_item_id := p_work_order_rec.rebuild_item_id;
110 	 l_rebuild_serial_number := p_work_order_rec.rebuild_serial_number;
111 
112          IF(p_work_order_rec.maintenance_object_id IS NOT NULL) THEN
113 	 BEGIN
114 
115 	 SELECT msib.eam_item_type into l_eam_item_type
116          FROM
117 	 csi_item_instances cii, mtl_system_items_b msib, mtl_parameters mp
118 	 WHERE
119 	 msib.organization_id = mp.organization_id and
120 	 msib.organization_id = cii.last_vld_organization_id and
121          msib.inventory_item_id = cii.inventory_item_id and
122          msib.eam_item_type in (1,3) and
123          msib.serial_number_control_code <> 1 and
124          sysdate between nvl(cii.active_start_date, sysdate-1)
125                 and nvl(cii.active_end_date, sysdate+1) and
126          mp.maint_organization_id = p_work_order_rec.organization_id and
127          cii.instance_id = p_work_order_rec.maintenance_object_id;
128 
129 	 EXCEPTION
130 	    WHEN NO_DATA_FOUND THEN
131 	    NULL;
132 	  END;
133 
134 	  END IF;
135 
136 	 IF  (p_work_order_rec.maintenance_object_id IS NOT NULL  AND
137 	 p_work_order_rec.maintenance_object_type  = 3)  THEN
138 	  BEGIN
139 	     IF(l_eam_item_type = 1) THEN
140 		SELECT   cii.inventory_item_id,
141 		cii.serial_number
142 		INTO
143 		l_asset_group_id,
144 		l_asset_number
145 		FROM
146 		csi_item_instances cii
147 		WHERE
148 		cii.instance_id = p_work_order_rec.maintenance_object_id;
149 		l_maintenance_object_type := 3;
150 		l_gen_object_id := p_work_order_rec.maintenance_object_id;
151              ELSIF (l_eam_item_type = 3) THEN
152 	        SELECT   cii.inventory_item_id,
153 		cii.serial_number
154 		INTO
155 		l_rebuild_item_id,
156 		l_rebuild_serial_number
157 		FROM
158 		csi_item_instances cii
159 		WHERE
160 		cii.instance_id = p_work_order_rec.maintenance_object_id;
161 		l_maintenance_object_type := 3;
162 		l_gen_object_id := p_work_order_rec.maintenance_object_id;
163              END IF;
164 	  l_maint_obj_fnd :='Y';
165 
166 	  EXCEPTION
167 	    WHEN NO_DATA_FOUND THEN
168 	    NULL;
169 	  END;
170 	 END IF;
171 
172 	IF (l_maint_obj_fnd<>'Y' AND p_work_order_rec.asset_group_id IS NOT NULL AND p_work_order_rec.asset_number IS NOT NULL ) THEN
173 	  BEGIN
174 
175            SELECT instance_id into l_gen_object_id
176 	     FROM csi_item_instances
177 	      WHERE inventory_item_id = p_work_order_rec.asset_group_id and serial_number = p_work_order_rec.asset_number and last_vld_organization_id =p_work_order_rec.organization_id  ;
178 	    l_maintenance_object_type := 3;
179 	    l_maintenance_object_id := l_gen_object_id;
180 	    l_maint_obj_fnd :='Y';
181 	 EXCEPTION
182 	  WHEN NO_DATA_FOUND THEN
183 	  NULL;
184 	 END;
185 	END IF;
186 
187 	IF (l_maint_obj_fnd<>'Y' AND p_work_order_rec.rebuild_item_id IS NOT NULL
188 	AND p_work_order_rec.rebuild_serial_number IS NOT NULL ) THEN
189           BEGIN
190 	     select instance_id into l_gen_object_id
191 	       from csi_item_instances
192 	        where inventory_item_id = p_work_order_rec.rebuild_item_id and serial_number = p_work_order_rec.rebuild_serial_number and last_vld_organization_id =p_work_order_rec.organization_id;
193 	     l_maintenance_object_type := 3;
194 	     l_maintenance_object_id := l_gen_object_id;
195 	     l_maint_obj_fnd :='Y';
196 	  EXCEPTION
197 	    WHEN NO_DATA_FOUND THEN
198 	    NULL;
199 	  END;
200 	END IF ;
201 
202 	IF (l_maint_obj_fnd<>'Y' AND  p_work_order_rec.rebuild_item_id IS NOT NULL) THEN
203            BEGIN
204 		SELECT inventory_item_id into l_gen_object_id
205 		  FROM mtl_system_items
206 	             WHERE inventory_item_id = p_work_order_rec.rebuild_item_id  and organization_id =p_work_order_rec.organization_id;
207            l_maintenance_object_type := 2;
208 	   l_maintenance_object_id := l_gen_object_id;
209 	   EXCEPTION
210   	     WHEN NO_DATA_FOUND THEN
211 	     NULL;
212 	   END;
213 	END IF;
214 
215   if (l_log and (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL)) then
216     FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, l_module,
217     'l_gen_object_id: ' || l_gen_object_id);
218   end if;
219        l_eam_wo_rec.status_type := p_work_order_rec.status_type;
220 
221         /* get output directory path from database */
222      log_path(l_output_dir);
223 
224 	l_eam_wo_rec.header_id := null;
225 	l_eam_wo_rec.batch_id :=  null;
226 	l_eam_wo_rec.row_id := null;
227 	l_eam_wo_rec.wip_entity_name := null ;
228 	l_eam_wo_rec.wip_entity_id := null;
229 	l_eam_wo_rec.organization_id := p_work_order_rec.organization_id;
230 	l_eam_wo_rec.description := null;
231 	l_eam_wo_rec.asset_number := l_asset_number;
232 	l_eam_wo_rec.asset_group_id := l_asset_group_id;
233 	l_eam_wo_rec.rebuild_item_id := l_rebuild_item_id;
234 	l_eam_wo_rec.rebuild_serial_number := l_rebuild_serial_number;
235 	l_eam_wo_rec.maintenance_object_id := l_gen_object_id;
236 	l_eam_wo_rec.maintenance_object_type := l_maintenance_object_type;
237 	l_eam_wo_rec.maintenance_object_source := 1;
238 	l_eam_wo_rec.class_code := p_work_order_rec.class_code;
239 	l_eam_wo_rec.activity_type := p_work_order_rec.activity_type;
240 	l_eam_wo_rec.activity_cause :=p_work_order_rec.activity_cause;
241 	l_eam_wo_rec.activity_source := p_work_order_rec.activity_source;
242 	l_eam_wo_rec.work_order_type := p_work_order_rec.work_order_type;
243 
244   if (l_log and (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL)) then
245     FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, l_module, 'Fetching default owning dept');
246   end if;
247   IF p_work_order_rec.owning_department is not null THEN
248   l_dept_id := p_work_order_rec.owning_department;
249   ELSE if p_work_order_rec.owning_department_code is not null THEN
250   	  SELECT department_id into l_dept_id
251    FROM bom_departments
252    WHERE department_code =  p_work_order_rec.owning_department_code and organization_id= p_work_order_rec.organization_id;
253       ELSE
254        WIP_EAMWORKORDER_PVT.Get_EAM_Owning_Dept_Default
255          (   p_api_version               => 1.0,
256             p_init_msg_list             => FND_API.G_FALSE,
257             p_commit                    => FND_API.G_FALSE,
258             p_validation_level          => FND_API.G_VALID_LEVEL_FULL,
259             x_return_status             => l_def_return_status,
260             x_msg_count                 => l_def_msg_count,
261             x_msg_data                  => l_def_msg_data,
262             p_primary_item_id           => l_eam_wo_rec.asset_activity_id,
263             p_organization_id           => l_eam_wo_rec.organization_id,
264             p_maintenance_object_type   => l_maintenance_object_type,
265             p_maintenance_object_id     => l_maintenance_object_id,
266             p_rebuild_item_id           => l_eam_wo_rec.rebuild_item_id,
267             x_owning_department_id      => l_dept_id
268          );
269      END IF ;
270   END IF ;
271 
272     /* If the Department of Work Order cannot be set then change the status of Work Order to Unrelease */
273   IF l_dept_id is null and p_work_order_rec.status_type not in (1,6,17) THEN
274       l_eam_wo_rec.status_type:=1;
275    END IF ;
276   if (l_log and (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL)) then
277     FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, l_module, 'default owning dept id:'
278     || l_dept_id);
279   end if;
280 
281 	l_eam_wo_rec.job_quantity := null;
282 	l_eam_wo_rec.date_released := p_work_order_rec.date_released;
283 	l_eam_wo_rec.owning_department := l_dept_id;
284 	l_eam_wo_rec.priority := p_work_order_rec.priority;
285 	l_eam_wo_rec.requested_start_date := p_work_order_rec.requested_start_date;
286 	l_eam_wo_rec.due_date := p_work_order_rec.due_date;
287 	l_eam_wo_rec.shutdown_type := p_work_order_rec.shutdown_type;
288 	l_eam_wo_rec.firm_planned_flag := p_work_order_rec.firm_planned_flag;
289 	l_eam_wo_rec.notification_required := p_work_order_rec.notification_required;
290 	l_eam_wo_rec.tagout_required := p_work_order_rec.tagout_required;
291 	l_eam_wo_rec.plan_maintenance := p_work_order_rec.plan_maintenance;
292 	l_eam_wo_rec.project_id := p_work_order_rec.project_id;
293 	l_eam_wo_rec.task_id := p_work_order_rec.task_id;
294 	--project_costed
295 	l_eam_wo_rec.end_item_unit_number := p_work_order_rec.end_item_unit_number;
296 	l_eam_wo_rec.schedule_group_id := p_work_order_rec.schedule_group_id;
297 	l_eam_wo_rec.bom_revision_date := p_work_order_rec.bom_revision_date;
298 	l_eam_wo_rec.routing_revision_date := p_work_order_rec.routing_revision_date;
299 	l_eam_wo_rec.alternate_routing_designator := p_work_order_rec.alternate_routing_designator;
300 	l_eam_wo_rec.alternate_bom_designator := p_work_order_rec.alternate_bom_designator;
301 	l_eam_wo_rec.routing_revision := p_work_order_rec.routing_revision;
302 	l_eam_wo_rec.bom_revision := p_work_order_rec.bom_revision;
303 	l_eam_wo_rec.parent_wip_entity_id := p_work_order_rec.parent_wip_entity_id;
304 	l_eam_wo_rec.manual_rebuild_flag := p_work_order_rec.manual_rebuild_flag;
305 	l_eam_wo_rec.pm_schedule_id := p_work_order_rec.pm_schedule_id;
306 	l_eam_wo_rec.wip_supply_type := p_work_order_rec.wip_supply_type;
307 	l_eam_wo_rec.material_account := null;
308 	l_eam_wo_rec.material_overhead_account := null ;
309 	l_eam_wo_rec.resource_account := null;
310 	l_eam_wo_rec.outside_processing_account := null;
311 	l_eam_wo_rec.material_variance_account := null;
312 	l_eam_wo_rec.resource_variance_account := null;
313 	l_eam_wo_rec.outside_proc_variance_account := null;
314 	l_eam_wo_rec.std_cost_adjustment_account := null;
315 	l_eam_wo_rec.overhead_account := null;
316 	l_eam_wo_rec.overhead_variance_account := null;
317 	l_eam_wo_rec.scheduled_start_date := sysdate;
318 	l_eam_wo_rec.scheduled_completion_date := sysdate;
319 	l_eam_wo_rec.common_bom_sequence_id := null;
320 	l_eam_wo_rec.common_routing_sequence_id := null;
321 	l_eam_wo_rec.po_creation_time := null;
322 	l_eam_wo_rec.gen_object_id := l_gen_object_id;
323 	l_eam_wo_rec.attribute_category := p_work_order_rec.attribute_category;
324 	l_eam_wo_rec.attribute1 := p_work_order_rec.attribute1;
325 	l_eam_wo_rec.attribute2 := p_work_order_rec.attribute2;
326 	l_eam_wo_rec.attribute3 := p_work_order_rec.attribute3;
327 	l_eam_wo_rec.attribute4 := p_work_order_rec.attribute4;
328 	l_eam_wo_rec.attribute5 := p_work_order_rec.attribute5;
329 	l_eam_wo_rec.attribute6 := p_work_order_rec.attribute6;
330 	l_eam_wo_rec.attribute7 := p_work_order_rec.attribute7;
331 	l_eam_wo_rec.attribute8 := p_work_order_rec.attribute8;
332 	l_eam_wo_rec.attribute9 := p_work_order_rec.attribute9;
333 	l_eam_wo_rec.attribute10 := p_work_order_rec.attribute10;
334 	l_eam_wo_rec.attribute11 := p_work_order_rec.attribute11;
335 	l_eam_wo_rec.attribute12 := p_work_order_rec.attribute12;
336 	l_eam_wo_rec.attribute13 := p_work_order_rec.attribute13;
337 	l_eam_wo_rec.attribute14 := p_work_order_rec.attribute14;
338 	l_eam_wo_rec.attribute15 := p_work_order_rec.attribute15;
339 	l_eam_wo_rec.material_issue_by_mo := null;
340 	l_eam_wo_rec.issue_zero_cost_flag := null;
341 	l_eam_wo_rec.user_id := fnd_global.user_id;
342 	l_eam_wo_rec.responsibility_id :=  fnd_global.resp_id;
343 	l_eam_wo_rec.request_id := p_work_order_rec.request_id;
344 	l_eam_wo_rec.program_id := p_work_order_rec.program_id;
345 	l_eam_wo_rec.program_application_id := p_work_order_rec.program_application_id;
346 	l_eam_wo_rec.source_line_id := p_work_order_rec.source_line_id;
347 	l_eam_wo_rec.source_code := p_work_order_rec.source_code;
348 --	l_eam_wo_rec.return_status :=
349 	l_eam_wo_rec.transaction_type := EAM_PROCESS_WO_PUB.G_OPR_CREATE;
350 
351   if (l_log and (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL)) then
352     FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, l_module, 'Calling work order API');
353   end if;
354        EAM_PROCESS_WO_PUB.Process_WO
355 	  		         ( p_bo_identifier           => 'EAM'
356 	  		         , p_init_msg_list           => TRUE
357 	  		         , p_api_version_number      => 1.0
358 	                         , p_commit                  => 'N'
359 	  		         , p_eam_wo_rec              => l_eam_wo_rec
360 	  		         , p_eam_op_tbl              => l_eam_op_tbl
361 	  		         , p_eam_op_network_tbl      => l_eam_op_network_tbl
362 	  		         , p_eam_res_tbl             => l_eam_res_tbl
363 	  		         , p_eam_res_inst_tbl        => l_eam_res_inst_tbl
364 	  		         , p_eam_sub_res_tbl         => l_eam_sub_res_tbl
365 	  		         , p_eam_res_usage_tbl       => l_eam_res_usage_tbl
366 	  		         , p_eam_mat_req_tbl         => l_eam_mat_req_tbl
367 	                         , p_eam_direct_items_tbl    => l_eam_di_tbl
368 	  		         , x_eam_wo_rec              => l_out_eam_wo_rec
369 	  		         , x_eam_op_tbl              => l_out_eam_op_tbl
370 	  		         , x_eam_op_network_tbl      => l_out_eam_op_network_tbl
371 	  		         , x_eam_res_tbl             => l_out_eam_res_tbl
372 	  		         , x_eam_res_inst_tbl        => l_out_eam_res_inst_tbl
373 	  		         , x_eam_sub_res_tbl         => l_out_eam_sub_res_tbl
374 	  		         , x_eam_res_usage_tbl       => l_out_eam_res_usage_tbl
375 	  		         , x_eam_mat_req_tbl         => l_out_eam_mat_req_tbl
376 	                         , x_eam_direct_items_tbl    => l_out_eam_di_tbl
377 	  		         , x_return_status           => l_return_status
378 	  		         , x_msg_count               => l_msg_count
379 	  		         , p_debug                   => NVL(fnd_profile.value('EAM_DEBUG'), 'N')
380 	  		         , p_debug_filename          => 'wipvewob.log'
381 	  		         , p_output_dir              => l_output_dir
382 	                         , p_debug_file_mode         => 'W'
383 	                       );
384       if (l_log and (FND_LOG.LEVEL_STATEMENT >= FND_LOG.G_CURRENT_RUNTIME_LEVEL)) then
385         FND_LOG.STRING(FND_LOG.LEVEL_STATEMENT, l_module,
386         'work order API returned status: '|| l_return_status);
387       end if;
388 
389        if(l_return_status <> FND_API.G_RET_STS_SUCCESS) then
390 	      fnd_message.set_name('EAM','EAM_CANNOT_CREAT_WRK');
391 	      fnd_msg_pub.add();
392 	      RAISE FND_API.G_EXC_ERROR;
393        end if ;
394 
395       IF FND_API.To_Boolean( p_commit ) THEN
396         COMMIT WORK;
397       END IF;
398 
399     -- End of API body.
400     -- Standard call to get message count and if count is 1, get message info.
401     FND_MSG_PUB.Count_And_Get
402         (p_count       =>      x_msg_count,
403          p_data        =>      x_msg_data
404         );
405 EXCEPTION
406     WHEN FND_API.G_EXC_ERROR THEN
407         ROLLBACK TO Create_EAM_Work_Order_PVT;
408         x_return_status := FND_API.G_RET_STS_ERROR ;
409         x_request_id := l_request_id;
410         FND_MSG_PUB.Count_And_Get
411             (p_count       =>      x_msg_count,
412              p_data        =>      x_msg_data
413             );
414     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
415     	 ROLLBACK TO Create_EAM_Work_Order_PVT;
416         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
417         x_request_id := l_request_id;
418         FND_MSG_PUB.Count_And_Get
419             (p_count       =>      x_msg_count,
420              p_data        =>      x_msg_data
421             );
422     WHEN OTHERS THEN
423 	ROLLBACK TO Create_EAM_Work_Order_PVT;
424         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
425         x_request_id := l_request_id;
426           IF     FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
427           THEN
428                 FND_MSG_PUB.Add_Exc_Msg
429                     (G_PKG_NAME,
430                      l_api_name
431                 );
432         END IF;
433         FND_MSG_PUB.Count_And_Get
434             (p_count       =>      x_msg_count,
435              p_data        =>      x_msg_data
436             );
437 END Create_EAM_Work_Order;
438 
439 
440 /********************************************************************/
441 -- API to obtain eAM Mass Load Defaults
442 /********************************************************************/
443 
444 
445 PROCEDURE Get_EAM_Act_Cause_Default
446 (   p_api_version               IN  NUMBER,
447     p_init_msg_list             IN  VARCHAR2 := FND_API.G_FALSE,
448     p_commit                    IN  VARCHAR2 := FND_API.G_FALSE,
449     p_validation_level          IN  NUMBER   := FND_API.G_VALID_LEVEL_FULL,
450     x_return_status             OUT NOCOPY VARCHAR2,
451     x_msg_count                 OUT NOCOPY NUMBER,
452     x_msg_data                  OUT NOCOPY VARCHAR2,
453     p_primary_item_id           IN  NUMBER,
454     p_organization_id           IN  NUMBER,
455     p_maintenance_object_type   IN  NUMBER,
456     p_maintenance_object_id     IN  NUMBER,
457     p_rebuild_item_id           IN  NUMBER,
458     x_activity_cause_code       OUT NOCOPY NUMBER
459 )
460 IS
461 l_api_name          CONSTANT VARCHAR2(30)     := 'Get_EAM_Act_Cause_Default';
462 l_api_version       CONSTANT NUMBER           := 1.0;
463 
464 
465 BEGIN
466     -- Standard Start of API savepoint
467     SAVEPOINT    Get_EAM_Act_Cause_Default_PVT;
468     -- Standard call to check for call compatibility.
469     IF NOT FND_API.Compatible_API_Call (l_api_version,
470                                         p_api_version,
471                                         l_api_name,
472                                         G_PKG_NAME )
473     THEN
474         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
475     END IF;
476     -- Initialize message list if p_init_msg_list is set to TRUE.
477     IF FND_API.to_Boolean( p_init_msg_list ) THEN
478         FND_MSG_PUB.initialize;
479     END IF;
480     --  Initialize API return status to success
481     x_return_status := FND_API.G_RET_STS_SUCCESS;
482     -- API body
483 
484     -- Find the Activity Cause from the Association Table
485      IF (p_maintenance_object_type IN (1,2) ) THEN -- 'MSN', 'MSI'
486         BEGIN
487             SELECT  MEAA.activity_cause_code
488             INTO    x_activity_cause_code
489             FROM    MTL_EAM_ASSET_ACTIVITIES MEAA
490             WHERE   MEAA.organization_id    = p_organization_id
491             AND     MEAA.asset_activity_id        = p_primary_item_id
492             AND     MEAA.maintenance_object_id = p_maintenance_object_id
493             AND     MEAA.maintenance_object_type = p_maintenance_object_type
494             AND     NVL(MEAA.tmpl_flag,'N') = 'N';
495         EXCEPTION
496             WHEN OTHERS THEN
497                     x_activity_cause_code := NULL;
498         END;
499     END IF;
500 
501     IF (p_maintenance_object_type = 3) THEN -- 'CII'
502         BEGIN
503         --Begin bug fix 7343758
504             /*SELECT  MEAA.activity_cause_code
505             INTO    x_activity_cause_code
506             FROM    MTL_EAM_ASSET_ACTIVITIES MEAA
507             WHERE   MEAA.organization_id    = p_organization_id
508             AND     MEAA.asset_activity_id  = p_primary_item_id
509             AND     MEAA.maintenance_object_id = p_rebuild_item_id
510             AND     MEAA.maintenance_object_type = 2 ;-- 'MSI'*/
511             SELECT eomd.activity_cause_code
512             INTO    x_activity_cause_code
513             FROM eam_org_maint_defaults eomd, mtl_eam_asset_activities MEAA
514             WHERE eomd.organization_id=p_organization_id
515             AND eomd.object_type = 60
516             AND eomd.object_id = meaa.activity_association_id
517             AND MEAA.asset_activity_id  = p_primary_item_id
518             AND MEAA.maintenance_object_id = p_maintenance_object_id
519             AND MEAA.maintenance_object_type = 3 ;
520           --End bug fix 7343758
521         EXCEPTION
522             WHEN OTHERS THEN
523                     x_activity_cause_code := NULL;
524         END;
525 
526     END IF;
527 
528     -- Find the Activity Cause from the MSI or MSN Tables based on maintenance_object_type
529 
530     IF (x_activity_cause_code IS NULL) THEN
531         BEGIN
532             SELECT  MSI.eam_activity_cause_code
533             INTO    x_activity_cause_code
534             FROM    MTL_SYSTEM_ITEMS MSI
535             WHERE   MSI.inventory_item_id = p_primary_item_id
536             AND     MSI.organization_id = p_organization_id;
537         EXCEPTION
538             WHEN OTHERS THEN
539                     x_activity_cause_code := NULL;
540         END;
541 
542     END IF;
543 
544 
545     -- End of API body.
546     -- Standard check of p_commit.
547     IF FND_API.To_Boolean( p_commit ) THEN
548         COMMIT WORK;
549     END IF;
550     -- Standard call to get message count and if count is 1, get message info.
551     FND_MSG_PUB.Count_And_Get
552         (p_count       =>      x_msg_count,
553          p_data        =>      x_msg_data
554         );
555 EXCEPTION
556     WHEN FND_API.G_EXC_ERROR THEN
557         ROLLBACK TO Get_EAM_Act_Cause_Default_PVT;
558         x_return_status := FND_API.G_RET_STS_ERROR ;
559 
560         FND_MSG_PUB.Count_And_Get
561             (p_count       =>      x_msg_count,
562              p_data        =>      x_msg_data
563             );
564     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
565         ROLLBACK TO Get_EAM_Act_Cause_Default_PVT;
566         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
567 
568         FND_MSG_PUB.Count_And_Get
569             (p_count       =>      x_msg_count,
570              p_data        =>      x_msg_data
571             );
572     WHEN OTHERS THEN
573         ROLLBACK TO Get_EAM_Act_Cause_Default_PVT;
574         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
575 
576           IF     FND_MSG_PUB.Check_Msg_Level
577             (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
578         THEN
579                 FND_MSG_PUB.Add_Exc_Msg
580                     (G_PKG_NAME,
581                      l_api_name
582                     );
583         END IF;
584         FND_MSG_PUB.Count_And_Get
585             (p_count       =>      x_msg_count,
586              p_data        =>      x_msg_data
587             );
588 END Get_EAM_Act_Cause_Default;
589 
590 /*Procedure to find the log directory path to write debug messages for EAM workorder API*/
591 
592       PROCEDURE log_path(
593 	    x_output_dir   OUT NOCOPY VARCHAR2
594 	  )
595 	IS
596 		        l_full_path     VARCHAR2(512);
597 			l_new_full_path         VARCHAR2(512);
598 			l_file_dir      VARCHAR2(512);
599 
600 			fileHandler     UTL_FILE.FILE_TYPE;
601 			fileName        VARCHAR2(50);
602 
603 			l_flag          NUMBER;
604 	BEGIN
605 	           fileName:='test.log';--this is only a dummy filename to check if directory is valid or not
606 
607         	   /* get output directory path from database */
608 			SELECT value
609 			INTO   l_full_path
610 			FROM   v$parameter
611 			WHERE  name = 'utl_file_dir';
612 
613 			l_flag := 0;
614 			--l_full_path contains a list of comma-separated directories
615 			WHILE(TRUE)
616 			LOOP
617 					    --get the first dir in the list
618 					    SELECT trim(substr(l_full_path, 1, decode(instr(l_full_path,',')-1,
619 											  -1, length(l_full_path),
620 											  instr(l_full_path, ',')-1
621 											 )
622 								  )
623 							   )
624 					    INTO  l_file_dir
625 					    FROM  dual;
626 
627 					    -- check if the dir is valid
628 					    BEGIN
629 						    fileHandler := UTL_FILE.FOPEN(l_file_dir , filename, 'w');
630 						    l_flag := 1;
631 					    EXCEPTION
632 						    WHEN utl_file.invalid_path THEN
633 							l_flag := 0;
634 						    WHEN utl_file.invalid_operation THEN
635 							l_flag := 0;
636 					    END;
637 
638 					    IF l_flag = 1 THEN --got a valid directory
639 						utl_file.fclose(fileHandler);
640 						EXIT;
641 					    END IF;
642 
643 					    --earlier found dir was not a valid dir,
644 					    --so remove that from the list, and get the new list
645 					    l_new_full_path := trim(substr(l_full_path, instr(l_full_path, ',')+1, length(l_full_path)));
646 
647 					    --if the new list has not changed, there are no more valid dirs left
648 					    IF l_full_path = l_new_full_path THEN
649 						    l_flag:=0;
650 						    EXIT;
651 					    END IF;
652 					     l_full_path := l_new_full_path;
653 			 END LOOP;
654 
655 			 IF(l_flag=1) THEN --found a valid directory
656 			     x_output_dir := l_file_dir;
657 			  ELSE
658 			      x_output_dir:= null;
659 
660 			  END IF;
661          EXCEPTION
662               WHEN OTHERS THEN
663                   x_output_dir := null;
664 
665 	END log_path;
666 
667 /********************************************************************/
668 -- API to obtain eAM Mass Load Defaults
669 /********************************************************************/
670 
671 
672 PROCEDURE Get_EAM_Act_Type_Default
673 (   p_api_version               IN  NUMBER,
674     p_init_msg_list             IN  VARCHAR2 := FND_API.G_FALSE,
675     p_commit                    IN  VARCHAR2 := FND_API.G_FALSE,
676     p_validation_level          IN  NUMBER   := FND_API.G_VALID_LEVEL_FULL,
677     x_return_status             OUT NOCOPY VARCHAR2,
678     x_msg_count                 OUT NOCOPY NUMBER,
679     x_msg_data                  OUT NOCOPY VARCHAR2,
680     p_primary_item_id           IN  NUMBER,
681     p_organization_id           IN  NUMBER,
682     p_maintenance_object_type   IN  NUMBER,
683     p_maintenance_object_id     IN  NUMBER,
684     p_rebuild_item_id           IN  NUMBER,
685     x_activity_type_code        OUT NOCOPY NUMBER
686 )
687 IS
688 l_api_name            CONSTANT VARCHAR2(30)     := 'Get_EAM_Act_Type_Default';
689 l_api_version       CONSTANT NUMBER             := 1.0;
690 
691 
692 BEGIN
693     -- Standard Start of API savepoint
694     SAVEPOINT    Get_EAM_Act_Type_Default_PVT;
695     -- Standard call to check for call compatibility.
696     IF NOT FND_API.Compatible_API_Call (l_api_version,
697                                         p_api_version,
698                                         l_api_name,
699                                         G_PKG_NAME)
700     THEN
701         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
702     END IF;
703     -- Initialize message list if p_init_msg_list is set to TRUE.
704     IF FND_API.to_Boolean( p_init_msg_list ) THEN
705         FND_MSG_PUB.initialize;
706     END IF;
707     --  Initialize API return status to success
708     x_return_status := FND_API.G_RET_STS_SUCCESS;
709     -- API body
710 
711     -- Find the Activity type from the Association Table
712      IF (p_maintenance_object_type IN (1,2) ) THEN -- 'MSN', 'MSI'
713         BEGIN
714             SELECT  MEAA.activity_type_code
715             INTO    x_activity_type_code
716             FROM    MTL_EAM_ASSET_ACTIVITIES MEAA
717             WHERE   MEAA.organization_id    = p_organization_id
718             AND     MEAA.asset_activity_id        = p_primary_item_id
719             AND     MEAA.maintenance_object_id = p_maintenance_object_id
720             AND     MEAA.maintenance_object_type = p_maintenance_object_type
721             AND     NVL(MEAA.tmpl_flag,'N') = 'N';
722         EXCEPTION
723             WHEN OTHERS THEN
724                     x_activity_type_code := NULL;
725         END;
726     END IF;
727 
728     IF (p_maintenance_object_type = 3) THEN -- 'CII'
729         BEGIN
730          --Begin bug fix 7343758
731             /*SELECT  MEAA.activity_type_code
732             INTO    x_activity_type_code
733             FROM    MTL_EAM_ASSET_ACTIVITIES MEAA
734             WHERE   MEAA.organization_id    = p_organization_id
735             AND     MEAA.asset_activity_id  = p_primary_item_id
736             AND     MEAA.maintenance_object_id = p_rebuild_item_id
737             AND     MEAA.maintenance_object_type = 2 ;-- 'MSI'*/
738              SELECT eomd.activity_type_code
739             INTO    x_activity_type_code
740             FROM eam_org_maint_defaults eomd, mtl_eam_asset_activities MEAA
741             WHERE eomd.organization_id=p_organization_id
742             AND eomd.object_type = 60
743             AND eomd.object_id = meaa.activity_association_id
744             AND MEAA.asset_activity_id  = p_primary_item_id
745             AND MEAA.maintenance_object_id = p_maintenance_object_id
746             AND MEAA.maintenance_object_type = 3 ;
747           --End bug fix 7343758
748         EXCEPTION
749             WHEN OTHERS THEN
750                     x_activity_type_code := NULL;
751         END;
752 
753     END IF;
754 
755     -- Find the Activity type from the MSI or MSN Tables based on maintenance_object_type
756 
757     IF (x_activity_type_code IS NULL) THEN
758         BEGIN
759             SELECT  MSI.eam_activity_type_code
760             INTO    x_activity_type_code
761             FROM    MTL_SYSTEM_ITEMS MSI
762             WHERE   MSI.inventory_item_id = p_primary_item_id
763             AND     MSI.organization_id = p_organization_id;
764         EXCEPTION
765             WHEN OTHERS THEN
766                     x_activity_type_code := NULL;
767         END;
768 
769     END IF;
770 
771     -- End of API body.
772     -- Standard check of p_commit.
773     IF FND_API.To_Boolean( p_commit ) THEN
774         COMMIT WORK;
775     END IF;
776     -- Standard call to get message count and if count is 1, get message info.
777     FND_MSG_PUB.Count_And_Get
778         (p_count       =>      x_msg_count,
779          p_data        =>      x_msg_data
780         );
781 EXCEPTION
782     WHEN FND_API.G_EXC_ERROR THEN
783         ROLLBACK TO Get_EAM_Act_Type_Default_PVT;
784         x_return_status := FND_API.G_RET_STS_ERROR ;
785 
786         FND_MSG_PUB.Count_And_Get
787             (p_count       =>      x_msg_count,
788              p_data        =>      x_msg_data
789             );
790     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
791         ROLLBACK TO Get_EAM_Act_Type_Default_PVT;
792         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
793 
794         FND_MSG_PUB.Count_And_Get
795             (p_count       =>      x_msg_count,
796              p_data        =>      x_msg_data
797             );
798     WHEN OTHERS THEN
799         ROLLBACK TO Get_EAM_Act_Type_Default_PVT;
800         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
801 
802           IF     FND_MSG_PUB.Check_Msg_Level
803             (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
804         THEN
805                 FND_MSG_PUB.Add_Exc_Msg
806                     (G_PKG_NAME,
807                      l_api_name
808                     );
809         END IF;
810         FND_MSG_PUB.Count_And_Get
811             (p_count       =>      x_msg_count,
812              p_data        =>      x_msg_data
813             );
814 END Get_EAM_Act_type_Default;
815 
816 
817 
818 /********************************************************************/
819 -- API to obtain eAM Mass Load Defaults
820 /********************************************************************/
821 
822 
823 PROCEDURE Get_EAM_Act_Source_Default
824 (   p_api_version               IN  NUMBER,
825     p_init_msg_list             IN  VARCHAR2 := FND_API.G_FALSE,
826     p_commit                    IN  VARCHAR2 := FND_API.G_FALSE,
827     p_validation_level          IN  NUMBER   := FND_API.G_VALID_LEVEL_FULL,
828     x_return_status             OUT NOCOPY VARCHAR2,
829     x_msg_count                 OUT NOCOPY NUMBER,
830     x_msg_data                  OUT NOCOPY VARCHAR2,
831     p_primary_item_id           IN  NUMBER,
832     p_organization_id           IN  NUMBER,
833     p_maintenance_object_type   IN  NUMBER,
834     p_maintenance_object_id     IN  NUMBER,
835     p_rebuild_item_id           IN  NUMBER,
836     x_activity_Source_code      OUT NOCOPY NUMBER
837 )
838 IS
839 l_api_name          CONSTANT VARCHAR2(30)     := 'Get_EAM_Act_Source_Default';
840 l_api_version       CONSTANT NUMBER           := 1.0;
841 
842 
843 BEGIN
844     -- Standard Start of API savepoint
845     SAVEPOINT    Get_EAM_Act_Source_Default_PVT;
846     -- Standard call to check for call compatibility.
847     IF NOT FND_API.Compatible_API_Call (l_api_version,
848                                         p_api_version,
849                                         l_api_name,
850                                         G_PKG_NAME)
851     THEN
852         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
853     END IF;
854     -- Initialize message list if p_init_msg_list is set to TRUE.
855     IF FND_API.to_Boolean( p_init_msg_list ) THEN
856         FND_MSG_PUB.initialize;
857     END IF;
858     --  Initialize API return status to success
859     x_return_status := FND_API.G_RET_STS_SUCCESS;
860     -- API body
861 
862     -- Find the Activity Source from the Association Table
863      IF (p_maintenance_object_type IN (1, 2) ) THEN -- 'MSN', 'MSI'
864         BEGIN
865             SELECT  MEAA.activity_source_code
866             INTO    x_activity_source_code
867             FROM    MTL_EAM_ASSET_ACTIVITIES MEAA
868             WHERE   MEAA.organization_id    = p_organization_id
869             AND     MEAA.asset_activity_id        = p_primary_item_id
870             AND     MEAA.maintenance_object_id = p_maintenance_object_id
871             AND     MEAA.maintenance_object_type = p_maintenance_object_type
872             AND     NVL(MEAA.tmpl_flag,'N') = 'N';
873         EXCEPTION
874             WHEN OTHERS THEN
875                     x_activity_source_code := NULL;
876         END;
877     END IF;
878 
879     IF (p_maintenance_object_type = 3) THEN -- 'CII'
880         BEGIN
881          --Begin bug fix 7343758
882            /* SELECT  MEAA.activity_source_code
883             INTO    x_activity_source_code
884             FROM    MTL_EAM_ASSET_ACTIVITIES MEAA
885             WHERE   MEAA.organization_id    = p_organization_id
886             AND     MEAA.asset_activity_id  = p_primary_item_id
887             AND     MEAA.maintenance_object_id = p_rebuild_item_id
888             AND     MEAA.maintenance_object_type = 2 ;-- 'MSI'*/
889             SELECT eomd.activity_source_code
890             INTO    x_activity_source_code
891             FROM eam_org_maint_defaults eomd, mtl_eam_asset_activities MEAA
892             WHERE eomd.organization_id=p_organization_id
893             AND eomd.object_type = 60
894             AND eomd.object_id = meaa.activity_association_id
895             AND MEAA.asset_activity_id  = p_primary_item_id
896             AND MEAA.maintenance_object_id = p_maintenance_object_id
897             AND MEAA.maintenance_object_type = 3 ;
898             --End bug fix 7343758
899         EXCEPTION
900             WHEN OTHERS THEN
901                     x_activity_source_code := NULL;
902         END;
903 
904     END IF;
905 
906     -- Find the Activity Source from the MSI or MSN Tables based on maintenance_object_type
907 
908     IF (x_activity_source_code IS NULL) THEN
909         BEGIN
910             SELECT  MSI.eam_activity_source_code
911             INTO    x_activity_source_code
912             FROM    MTL_SYSTEM_ITEMS MSI
913             WHERE   MSI.inventory_item_id = p_primary_item_id
914             AND     MSI.organization_id = p_organization_id;
915         EXCEPTION
916             WHEN OTHERS THEN
917                     x_activity_source_code := NULL;
918         END;
919 
920     END IF;
921 
922     -- End of API body.
923     -- Standard check of p_commit.
924     IF FND_API.To_Boolean( p_commit ) THEN
925         COMMIT WORK;
926     END IF;
927     -- Standard call to get message count and if count is 1, get message info.
928     FND_MSG_PUB.Count_And_Get
929         (p_count       =>      x_msg_count,
930          p_data        =>      x_msg_data
931         );
932 EXCEPTION
933     WHEN FND_API.G_EXC_ERROR THEN
934         ROLLBACK TO Get_EAM_Act_Source_Default_PVT;
935         x_return_status := FND_API.G_RET_STS_ERROR ;
936 
937         FND_MSG_PUB.Count_And_Get
938             (p_count       =>      x_msg_count,
939              p_data        =>      x_msg_data
940             );
941     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
942         ROLLBACK TO Get_EAM_Act_Source_Default_PVT;
943         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
944 
945         FND_MSG_PUB.Count_And_Get
946             (p_count       =>      x_msg_count,
947              p_data        =>      x_msg_data
948             );
949     WHEN OTHERS THEN
950         ROLLBACK TO Get_EAM_Act_Source_Default_PVT;
951         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
952 
953           IF     FND_MSG_PUB.Check_Msg_Level
954             (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
955         THEN
956                 FND_MSG_PUB.Add_Exc_Msg
957                     (G_PKG_NAME,
958                      l_api_name
959                     );
960         END IF;
961         FND_MSG_PUB.Count_And_Get
962             (p_count       =>      x_msg_count,
963              p_data        =>      x_msg_data
964             );
965 END Get_EAM_Act_Source_Default;
966 
967 
968 
969 /********************************************************************/
970 -- API to obtain eAM Mass Load Defaults
971 /********************************************************************/
972 
973 
974 PROCEDURE Get_EAM_Shutdown_Default
975 (   p_api_version               IN  NUMBER,
976     p_init_msg_list             IN  VARCHAR2 := FND_API.G_FALSE,
977     p_commit                    IN  VARCHAR2 := FND_API.G_FALSE,
978     p_validation_level          IN  NUMBER   := FND_API.G_VALID_LEVEL_FULL,
979     x_return_status             OUT NOCOPY VARCHAR2,
980     x_msg_count                 OUT NOCOPY NUMBER,
981     x_msg_data                  OUT NOCOPY VARCHAR2,
982     p_primary_item_id           IN  NUMBER,
983     p_organization_id           IN  NUMBER,
984     p_maintenance_object_type   IN  NUMBER,
985     p_maintenance_object_id     IN  NUMBER,
986     p_rebuild_item_id           IN  NUMBER,
987     x_shutdown_type_code        OUT NOCOPY NUMBER
988 )
989 IS
990 l_api_name          CONSTANT VARCHAR2(30)     := 'Get_EAM_Shutdown_Default';
991 l_api_version       CONSTANT NUMBER           := 1.0;
992 
993 BEGIN
994     -- Standard Start of API savepoint
995     SAVEPOINT    Get_EAM_Shutdown_Default_PVT;
996     -- Standard call to check for call compatibility.
997     IF NOT FND_API.Compatible_API_Call (l_api_version,
998                                         p_api_version,
999                                         l_api_name,
1000                                         G_PKG_NAME)
1001     THEN
1002         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1003     END IF;
1004     -- Initialize message list if p_init_msg_list is set to TRUE.
1005     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1006         FND_MSG_PUB.initialize;
1007     END IF;
1008     --  Initialize API return status to success
1009     x_return_status := FND_API.G_RET_STS_SUCCESS;
1010     -- API body
1011 
1012     -- Find the Shutdown Type from the Association Table
1013      IF (p_maintenance_object_type IN (1,2) ) THEN -- 'MSN', 'MSI'
1014         BEGIN
1015             SELECT  MEAA.shutdown_type_code
1016             INTO    x_shutdown_type_code
1017             FROM    MTL_EAM_ASSET_ACTIVITIES MEAA
1018             WHERE   MEAA.organization_id    = p_organization_id
1019             AND     MEAA.asset_activity_id        = p_primary_item_id
1020             AND     MEAA.maintenance_object_id = p_maintenance_object_id
1021             AND     MEAA.maintenance_object_type = p_maintenance_object_type
1022             AND     NVL(MEAA.tmpl_flag,'N') = 'N';
1023         EXCEPTION
1024             WHEN OTHERS THEN
1025                     x_shutdown_type_code := NULL;
1026         END;
1027     END IF;
1028 
1029     IF (p_maintenance_object_type = 3) THEN -- 'CII'
1030         BEGIN
1031          --Begin bug fix 7343758
1032            /* SELECT  MEAA.shutdown_type_code
1033             INTO    x_shutdown_type_code
1034             FROM    MTL_EAM_ASSET_ACTIVITIES MEAA
1035             WHERE   MEAA.organization_id    = p_organization_id
1036             AND     MEAA.asset_activity_id  = p_primary_item_id
1037             AND     MEAA.maintenance_object_id = p_rebuild_item_id
1038             AND     MEAA.maintenance_object_type = 2 ;-- 'MSI'*/
1039 
1040             SELECT eomd.shutdown_type_code
1041             INTO    x_shutdown_type_code
1042             FROM eam_org_maint_defaults eomd, mtl_eam_asset_activities MEAA
1043             WHERE eomd.organization_id=p_organization_id
1044             AND eomd.object_type = 60
1045             AND eomd.object_id = meaa.activity_association_id
1046             AND MEAA.asset_activity_id  = p_primary_item_id
1047             AND MEAA.maintenance_object_id = p_maintenance_object_id
1048             AND MEAA.maintenance_object_type = 3 ;
1049 
1050             --End bug fix 7343758
1051         EXCEPTION
1052             WHEN OTHERS THEN
1053                     x_shutdown_type_code := NULL;
1054         END;
1055 
1056     END IF;
1057 
1058     -- Find the Activity source from the MSI or MSN Tables based on maintenance_object_source
1059 
1060     IF (x_shutdown_type_code IS NULL) THEN
1061         BEGIN
1062             SELECT  MSI.eam_act_shutdown_status
1063             INTO    x_shutdown_type_code
1064             FROM    MTL_SYSTEM_ITEMS MSI
1065             WHERE   MSI.inventory_item_id = p_primary_item_id
1066             AND     MSI.organization_id = p_organization_id;
1067         EXCEPTION
1068             WHEN OTHERS THEN
1069                     x_shutdown_type_code := NULL;
1070         END;
1071 
1072     END IF;
1073 
1074     -- End of API body.
1075     -- Standard check of p_commit.
1076     IF FND_API.To_Boolean( p_commit ) THEN
1077         COMMIT WORK;
1078     END IF;
1079     -- Standard call to get message count and if count is 1, get message info.
1080     FND_MSG_PUB.Count_And_Get
1081         (p_count       =>      x_msg_count,
1082          p_data        =>      x_msg_data
1083         );
1084 EXCEPTION
1085     WHEN FND_API.G_EXC_ERROR THEN
1086         ROLLBACK TO Get_EAM_Shutdown_Default_PVT;
1087         x_return_status := FND_API.G_RET_STS_ERROR ;
1088 
1089         FND_MSG_PUB.Count_And_Get
1090             (p_count       =>      x_msg_count,
1091              p_data        =>      x_msg_data
1092             );
1093     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1094         ROLLBACK TO Get_EAM_Shutdown_Default_PVT;
1095         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1096 
1097         FND_MSG_PUB.Count_And_Get
1098             (p_count       =>      x_msg_count,
1099              p_data        =>      x_msg_data
1100             );
1101     WHEN OTHERS THEN
1102         ROLLBACK TO Get_EAM_Shutdown_Default_PVT;
1103         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1104 
1105           IF     FND_MSG_PUB.Check_Msg_Level
1106             (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1107         THEN
1108                 FND_MSG_PUB.Add_Exc_Msg
1109                     (G_PKG_NAME,
1110                      l_api_name
1111                     );
1112         END IF;
1113         FND_MSG_PUB.Count_And_Get
1114             (p_count       =>      x_msg_count,
1115              p_data        =>      x_msg_data
1116             );
1117 END Get_EAM_Shutdown_Default;
1118 
1119 
1120 
1121 /********************************************************************/
1122 -- API to obtain eAM Mass Load Defaults
1123 /********************************************************************/
1124 
1125 
1126 PROCEDURE Get_EAM_Notification_Default
1127 (   p_api_version               IN  NUMBER,
1128     p_init_msg_list             IN  VARCHAR2 := FND_API.G_FALSE,
1129     p_commit                    IN  VARCHAR2 := FND_API.G_FALSE,
1130     p_validation_level          IN  NUMBER   := FND_API.G_VALID_LEVEL_FULL,
1131     x_return_status             OUT NOCOPY VARCHAR2,
1132     x_msg_count                 OUT NOCOPY NUMBER,
1133     x_msg_data                  OUT NOCOPY VARCHAR2,
1134     p_primary_item_id           IN  NUMBER,
1135     p_organization_id           IN  NUMBER,
1136     p_maintenance_object_type   IN  NUMBER,
1137     p_maintenance_object_id     IN  NUMBER,
1138     p_rebuild_item_id           IN  NUMBER,
1139     x_notification_flag         OUT NOCOPY VARCHAr2
1140 )
1141 IS
1142 l_api_name          CONSTANT VARCHAR2(30)     := 'Get_EAM_Notification_Default';
1143 l_api_version       CONSTANT NUMBER           := 1.0;
1144 
1145 
1146 BEGIN
1147     -- Standard Start of API savepoint
1148     SAVEPOINT    Get_EAM_Notification_Def_PVT;
1149     -- Standard call to check for call compatibility.
1150     IF NOT FND_API.Compatible_API_Call (l_api_version,
1151                                         p_api_version,
1152                                         l_api_name,
1153                                         G_PKG_NAME)
1154     THEN
1155         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1156     END IF;
1157     -- Initialize message list if p_init_msg_list is set to TRUE.
1158     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1159         FND_MSG_PUB.initialize;
1160     END IF;
1161     --  Initialize API return status to success
1162     x_return_status := FND_API.G_RET_STS_SUCCESS;
1163     -- API body
1164 /*
1165     -- Find the Shutdown Type from the Association Table
1166      IF (p_maintenance_object_type IN (1,2) ) THEN -- 'MSN', 'MSI'
1167         BEGIN
1168             SELECT  MEAA.notification_required
1169             INTO    x_notification_flag
1170             FROM    MTL_EAM_ASSET_ACTIVITIES MEAA
1171             WHERE   MEAA.organization_id    = p_organization_id
1172             AND     MEAA.asset_activity_id        = p_primary_item_id
1173             AND     MEAA.maintenance_object_id = p_maintenance_object_id
1174             AND     MEAA.maintenance_object_type = p_maintenance_object_type
1175             AND     NVL(MEAA.tmpl_flag,'N') = 'N';
1176         EXCEPTION
1177             WHEN OTHERS THEN
1178                     x_notification_flag := NULL;
1179         END;
1180     END IF;
1181 
1182     IF (p_maintenance_object_type = 3) THEN -- 'CII'
1183         BEGIN
1184             SELECT  MEAA.notification_required
1185             INTO    x_notification_flag
1186             FROM    MTL_EAM_ASSET_ACTIVITIES MEAA
1187             WHERE   MEAA.organization_id    = p_organization_id
1188             AND     MEAA.asset_activity_id  = p_primary_item_id
1189             AND     MEAA.maintenance_object_id = p_rebuild_item_id
1190             AND     MEAA.maintenance_object_type = 2 ;-- 'MSI'
1191 
1192         EXCEPTION
1193             WHEN OTHERS THEN
1194                     x_notification_flag := NULL;
1195         END;
1196 
1197     END IF;
1198 */
1199 
1200    /*WO Defaults ER*/
1201     BEGIN
1202       SELECT eomd.notification_required
1203             INTO    x_notification_flag
1204             FROM eam_org_maint_defaults eomd, mtl_eam_asset_activities MEAA
1205             WHERE eomd.organization_id=p_organization_id
1206             AND eomd.object_type = 60
1207             AND eomd.object_id = meaa.activity_association_id
1208             AND MEAA.asset_activity_id  = p_primary_item_id
1209             AND MEAA.maintenance_object_id = p_maintenance_object_id
1210             AND MEAA.maintenance_object_type = 3 ;
1211     EXCEPTION
1212       WHEN OTHERS Then
1213          x_notification_flag := null;
1214     END;
1215 
1216     -- Find the Activity source from the MSI or MSN Tables based on maintenance_object_source
1217 
1218     IF (x_notification_flag IS NULL) THEN
1219         BEGIN
1220             SELECT  MSI.eam_act_notification_flag
1221             INTO    x_notification_flag
1222             FROM    MTL_SYSTEM_ITEMS MSI
1223             WHERE   MSI.inventory_item_id = p_primary_item_id
1224             AND     MSI.organization_id = p_organization_id;
1225         EXCEPTION
1226             WHEN OTHERS THEN
1227                     x_notification_flag := NULL;
1228         END;
1229 
1230     END IF;
1231 
1232     -- End of API body.
1233     -- Standard check of p_commit.
1234     IF FND_API.To_Boolean( p_commit ) THEN
1235         COMMIT WORK;
1236     END IF;
1237     -- Standard call to get message count and if count is 1, get message info.
1238     FND_MSG_PUB.Count_And_Get
1239         (p_count       =>      x_msg_count,
1240          p_data        =>      x_msg_data
1241         );
1242 EXCEPTION
1243     WHEN FND_API.G_EXC_ERROR THEN
1244         ROLLBACK TO Get_EAM_Notification_Def_PVT;
1245         x_return_status := FND_API.G_RET_STS_ERROR ;
1246 
1247         FND_MSG_PUB.Count_And_Get
1248             (p_count       =>      x_msg_count,
1249              p_data        =>      x_msg_data
1250             );
1251     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1252         ROLLBACK TO Get_EAM_Notification_Def_PVT;
1253         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1254 
1255         FND_MSG_PUB.Count_And_Get
1256             (p_count       =>      x_msg_count,
1257              p_data        =>      x_msg_data
1258             );
1259     WHEN OTHERS THEN
1260         ROLLBACK TO Get_EAM_Notification_Def_PVT;
1261         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1262 
1263           IF     FND_MSG_PUB.Check_Msg_Level
1264             (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1265         THEN
1266                 FND_MSG_PUB.Add_Exc_Msg
1267                     (G_PKG_NAME,
1268                      l_api_name
1269                     );
1270         END IF;
1271         FND_MSG_PUB.Count_And_Get
1272             (p_count       =>      x_msg_count,
1273              p_data        =>      x_msg_data
1274             );
1275 END Get_EAM_Notification_Default;
1276 
1277 
1278 
1279 /********************************************************************/
1280 -- API to obtain eAM Mass Load Defaults
1281 /********************************************************************/
1282 
1283 
1284 PROCEDURE Get_EAM_Tagout_Default
1285 (   p_api_version               IN  NUMBER,
1286     p_init_msg_list             IN  VARCHAR2 := FND_API.G_FALSE,
1287     p_commit                    IN  VARCHAR2 := FND_API.G_FALSE,
1288     p_validation_level          IN  NUMBER   := FND_API.G_VALID_LEVEL_FULL,
1289     x_return_status             OUT NOCOPY VARCHAR2,
1290     x_msg_count                 OUT NOCOPY NUMBER,
1291     x_msg_data                  OUT NOCOPY VARCHAR2,
1292     p_primary_item_id           IN  NUMBER,
1293     p_organization_id           IN  NUMBER,
1294     p_maintenance_object_type   IN  NUMBER,
1295     p_maintenance_object_id     IN  NUMBER,
1296     p_rebuild_item_id           IN  NUMBER,
1297     x_tagout_required           OUT NOCOPY VARCHAR2
1298 )
1299 IS
1300 l_api_name          CONSTANT VARCHAR2(30)     := 'Get_EAM_Tagout_Default';
1301 l_api_version       CONSTANT NUMBER           := 1.0;
1302 
1303 
1304 BEGIN
1305     -- Standard Start of API savepoint
1306     SAVEPOINT    Get_EAM_Tagout_Default_PVT;
1307     -- Standard call to check for call compatibility.
1308     IF NOT FND_API.Compatible_API_Call (l_api_version,
1309                                         p_api_version,
1310                                         l_api_name,
1311                                         G_PKG_NAME)
1312     THEN
1313         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1314     END IF;
1315     -- Initialize message list if p_init_msg_list is set to TRUE.
1316     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1317         FND_MSG_PUB.initialize;
1318     END IF;
1319     --  Initialize API return status to success
1320     x_return_status := FND_API.G_RET_STS_SUCCESS;
1321     -- API body
1322 
1323     -- Find the Shutdown Type from the Association Table
1324      IF (p_maintenance_object_type IN (1,2) ) THEN -- 'MSN', 'MSI'
1325         BEGIN
1326             SELECT  MEAA.tagging_required_flag
1327             INTO    x_tagout_required
1328             FROM    MTL_EAM_ASSET_ACTIVITIES MEAA
1329             WHERE   MEAA.organization_id    = p_organization_id
1330             AND     MEAA.asset_activity_id        = p_primary_item_id
1331             AND     MEAA.maintenance_object_id = p_maintenance_object_id
1332             AND     MEAA.maintenance_object_type = p_maintenance_object_type
1333             AND     NVL(MEAA.tmpl_flag,'N') = 'N';
1334         EXCEPTION
1335             WHEN OTHERS THEN
1336                     x_tagout_required := NULL;
1337         END;
1338     END IF;
1339 
1340     IF (p_maintenance_object_type = 3) THEN -- 'CII'
1341         BEGIN
1342         /*Begin fix for 8287895*
1343             SELECT  MEAA.tagging_required_flag
1344             INTO    x_tagout_required
1345             FROM    MTL_EAM_ASSET_ACTIVITIES MEAA
1346             WHERE   MEAA.organization_id    = p_organization_id
1347             AND     MEAA.asset_activity_id  = p_primary_item_id
1348             AND     MEAA.maintenance_object_id = p_rebuild_item_id
1349             AND     MEAA.maintenance_object_type = 2 ;-- 'MSI'*/
1350 
1351             SELECT eomd.tagging_required_flag
1352             INTO    x_tagout_required
1353             FROM eam_org_maint_defaults eomd, mtl_eam_asset_activities MEAA
1354             WHERE eomd.organization_id=p_organization_id
1355             AND eomd.object_type = 60
1356             AND eomd.object_id = meaa.activity_association_id
1357             AND MEAA.asset_activity_id  = p_primary_item_id
1358             AND MEAA.maintenance_object_id = p_maintenance_object_id
1359             AND MEAA.maintenance_object_type = 3 ;
1360 
1361             /*End fix for 8287895*/
1362         EXCEPTION
1363             WHEN OTHERS THEN
1364                     x_tagout_required := NULL;
1365         END;
1366 
1367     END IF;
1368 
1369     -- End of API body.
1370     -- Standard check of p_commit.
1371     IF FND_API.To_Boolean( p_commit ) THEN
1372         COMMIT WORK;
1373     END IF;
1374     -- Standard call to get message count and if count is 1, get message info.
1375     FND_MSG_PUB.Count_And_Get
1376         (p_count       =>      x_msg_count,
1377          p_data        =>      x_msg_data
1378         );
1379 EXCEPTION
1380     WHEN FND_API.G_EXC_ERROR THEN
1381         ROLLBACK TO Get_EAM_Tagout_Default_PVT;
1382         x_return_status := FND_API.G_RET_STS_ERROR ;
1383 
1384         FND_MSG_PUB.Count_And_Get
1385             (p_count       =>      x_msg_count,
1386              p_data        =>      x_msg_data
1387             );
1388     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1389         ROLLBACK TO Get_EAM_Tagout_Default_PVT;
1390         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1391 
1392         FND_MSG_PUB.Count_And_Get
1393             (p_count       =>      x_msg_count,
1394              p_data        =>      x_msg_data
1395             );
1396     WHEN OTHERS THEN
1397         ROLLBACK TO Get_EAM_Tagout_Default_PVT;
1398         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1399 
1400           IF     FND_MSG_PUB.Check_Msg_Level
1401             (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1402         THEN
1403                 FND_MSG_PUB.Add_Exc_Msg
1404                     (G_PKG_NAME,
1405                      l_api_name
1406                     );
1407         END IF;
1408         FND_MSG_PUB.Count_And_Get
1409             (p_count       =>      x_msg_count,
1410              p_data        =>      x_msg_data
1411             );
1412 END Get_EAM_Tagout_Default;
1413 
1414 
1415 
1416 /********************************************************************/
1417 -- API to obtain eAM Mass Load Defaults
1418 /********************************************************************/
1419 
1420 
1421 
1422 PROCEDURE Get_EAM_Owning_Dept_Default
1423 (   p_api_version               IN  NUMBER,
1424     p_init_msg_list             IN  VARCHAR2 := FND_API.G_FALSE,
1425     p_commit                    IN  VARCHAR2 := FND_API.G_FALSE,
1426     p_validation_level          IN  NUMBER   := FND_API.G_VALID_LEVEL_FULL,
1427     x_return_status             OUT NOCOPY VARCHAR2,
1428     x_msg_count                 OUT NOCOPY NUMBER,
1429     x_msg_data                  OUT NOCOPY VARCHAR2,
1430     p_primary_item_id           IN  NUMBER,
1431     p_organization_id           IN  NUMBER,
1432     p_maintenance_object_type   IN  NUMBER,
1433     p_maintenance_object_id     IN  NUMBER,
1434     p_rebuild_item_id           IN  NUMBER,
1435     x_owning_department_id      OUT NOCOPY NUMBER
1436 )
1437 IS
1438 l_api_name          CONSTANT VARCHAR2(30)     := 'Get_EAM_Owning_Dept_Default';
1439 l_api_version       CONSTANT NUMBER           := 1.0;
1440 l_act_assoc_id               NUMBER;
1441 
1442 BEGIN
1443     -- Standard Start of API savepoint
1444     SAVEPOINT    Get_EAM_Owning_Dept_Def_PVT;
1445     -- Standard call to check for call compatibility.
1446     IF NOT FND_API.Compatible_API_Call (l_api_version,
1447                                         p_api_version,
1448                                         l_api_name,
1449                                         G_PKG_NAME)
1450     THEN
1451         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1452     END IF;
1453     -- Initialize message list if p_init_msg_list is set to TRUE.
1454     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1455         FND_MSG_PUB.initialize;
1456     END IF;
1457     --  Initialize API return status to success
1458     x_return_status := FND_API.G_RET_STS_SUCCESS;
1459     -- API body
1460 
1461     -- Find the Shutdown Type from the Association Table
1462      IF (p_maintenance_object_type = 1 ) THEN -- 'MSN', 'MSI'
1463         BEGIN
1464             SELECT  MEAA.owning_department_id
1465             INTO    x_owning_department_id
1466             FROM    MTL_EAM_ASSET_ACTIVITIES MEAA
1467             WHERE   MEAA.asset_activity_id        = p_primary_item_id
1468             AND     MEAA.maintenance_object_id = p_maintenance_object_id
1469             AND     MEAA.maintenance_object_type = p_maintenance_object_type
1470             AND     NVL(MEAA.tmpl_flag,'N') = 'N';
1471         EXCEPTION
1472             WHEN OTHERS THEN
1473                     x_owning_department_id := NULL;
1474         END;
1475     END IF;
1476 
1477     IF (p_maintenance_object_type IN( 2,3) ) THEN -- 'CII'
1478         BEGIN
1479 	    SELECT  MEAA.activity_association_id
1480             INTO    l_act_assoc_id
1481             FROM    MTL_EAM_ASSET_ACTIVITIES MEAA
1482             WHERE   MEAA.asset_activity_id     = p_primary_item_id
1483             AND     MEAA.maintenance_object_id = p_maintenance_object_id
1484             AND     MEAA.maintenance_object_type = p_maintenance_object_type
1485             AND     NVL(MEAA.tmpl_flag,'N') = 'N';
1486 
1487 	    SELECT  EOMD.OWNING_DEPARTMENT_ID
1488             INTO    x_owning_department_id
1489             FROM    EAM_ORG_MAINT_DEFAULTS EOMD
1490             WHERE   EOMD.organization_id    = p_organization_id
1491             AND     EOMD.OBJECT_ID  = l_act_assoc_id
1492             AND     EOMD.OBJECT_TYPE IN (40,60) ;
1493         EXCEPTION
1494             WHEN OTHERS THEN
1495                     x_owning_department_id := NULL;
1496         END;
1497 
1498     END IF;
1499 
1500        -- Find the Activity source from the MSI or MSN Tables based on maintenance_object_source
1501 
1502     IF (x_owning_department_id IS NULL AND p_maintenance_object_type = 3) THEN
1503         BEGIN
1504             SELECT  EOMD.OWNING_DEPARTMENT_ID
1505             INTO    x_owning_department_id
1506             FROM    EAM_ORG_MAINT_DEFAULTS EOMD
1507             WHERE   EOMD.organization_id  = p_organization_id
1508             AND     EOMD.OBJECT_ID  = p_maintenance_object_id
1509             AND     EOMD.OBJECT_TYPE = 50 ;
1510         EXCEPTION
1511             WHEN OTHERS THEN
1512                     x_owning_department_id := NULL;
1513         END;
1514 
1515     END IF;
1516 
1517        -- Find the Activity source from the EAM Parameters Tables based on maintenance_object_source
1518 
1519     IF (x_owning_department_id IS NULL AND p_maintenance_object_type IN (2,3) ) THEN
1520         BEGIN
1521             SELECT  WEP.default_department_id
1522             INTO    x_owning_department_id
1523             FROM    WIP_EAM_PARAMETERS WEP
1524             WHERE   WEP.organization_id = p_organization_id;
1525         EXCEPTION
1526             WHEN OTHERS THEN
1527                     x_owning_department_id := NULL;
1528         END;
1529 
1530     END IF;
1531 
1532     -- End of API body.
1533     -- Standard check of p_commit.
1534     IF FND_API.To_Boolean( p_commit ) THEN
1535         COMMIT WORK;
1536     END IF;
1537     -- Standard call to get message count and if count is 1, get message info.
1538     FND_MSG_PUB.Count_And_Get
1539         (p_count       =>      x_msg_count,
1540          p_data        =>      x_msg_data
1541         );
1542 EXCEPTION
1543     WHEN FND_API.G_EXC_ERROR THEN
1544         ROLLBACK TO Get_EAM_Owning_Dept_Def_PVT;
1545         x_return_status := FND_API.G_RET_STS_ERROR ;
1546 
1547         FND_MSG_PUB.Count_And_Get
1548             (p_count       =>      x_msg_count,
1549              p_data        =>      x_msg_data
1550             );
1551     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1552         ROLLBACK TO Get_EAM_Owning_Dept_Def_PVT;
1553         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1554 
1555         FND_MSG_PUB.Count_And_Get
1556             (p_count       =>      x_msg_count,
1557              p_data        =>      x_msg_data
1558             );
1559     WHEN OTHERS THEN
1560         ROLLBACK TO Get_EAM_Owning_Dept_Def_PVT;
1561         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1562 
1563           IF     FND_MSG_PUB.Check_Msg_Level
1564             (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1565         THEN
1566                 FND_MSG_PUB.Add_Exc_Msg
1567                     (G_PKG_NAME,
1568                      l_api_name
1569                     );
1570         END IF;
1571         FND_MSG_PUB.Count_And_Get
1572             (p_count       =>      x_msg_count,
1573              p_data        =>      x_msg_data
1574             );
1575 END Get_EAM_Owning_Dept_Default;
1576 
1577 /********************************************************************/
1578 -- WO Defaults ER 16094794
1579 /********************************************************************/
1580 
1581 
1582 PROCEDURE Get_EAM_ACT_WO_Type_Default
1583 (   p_api_version               IN  NUMBER,
1584     p_init_msg_list             IN  VARCHAR2 := FND_API.G_FALSE,
1585     p_commit                    IN  VARCHAR2 := FND_API.G_FALSE,
1586     p_validation_level          IN  NUMBER   := FND_API.G_VALID_LEVEL_FULL,
1587     x_return_status             OUT NOCOPY VARCHAR2,
1588     x_msg_count                 OUT NOCOPY NUMBER,
1589     x_msg_data                  OUT NOCOPY VARCHAR2,
1590     p_primary_item_id           IN  NUMBER,
1591     p_organization_id           IN  NUMBER,
1592     p_maintenance_object_type   IN  NUMBER,
1593     p_maintenance_object_id     IN  NUMBER,
1594     p_rebuild_item_id           IN  NUMBER,
1595     x_ACT_WO_Type      OUT NOCOPY NUMBER
1596 )
1597 IS
1598 l_api_name          CONSTANT VARCHAR2(30)     := 'Get_EAM_Owning_Dept_Default';
1599 l_api_version       CONSTANT NUMBER           := 1.0;
1600 l_act_assoc_id               NUMBER;
1601 
1602 BEGIN
1603     -- Standard Start of API savepoint
1604     SAVEPOINT    Get_EAM_ACT_WO_Type_Def_PVT;
1605     -- Standard call to check for call compatibility.
1606     IF NOT FND_API.Compatible_API_Call (l_api_version,
1607                                         p_api_version,
1608                                         l_api_name,
1609                                         G_PKG_NAME)
1610     THEN
1611         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1612     END IF;
1613     -- Initialize message list if p_init_msg_list is set to TRUE.
1614     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1615         FND_MSG_PUB.initialize;
1616     END IF;
1617     --  Initialize API return status to success
1618     x_return_status := FND_API.G_RET_STS_SUCCESS;
1619     -- API body
1620 
1621      --  IF (p_maintenance_object_type IN( 2,3) ) THEN -- 'CII'
1622         BEGIN
1623             SELECT eomd.work_order_type
1624             INTO   x_ACT_WO_Type
1625             FROM eam_org_maint_defaults eomd, mtl_eam_asset_activities MEAA
1626             WHERE eomd.organization_id=p_organization_id
1627             AND eomd.object_type = 60
1628             AND eomd.object_id = meaa.activity_association_id
1629             AND MEAA.asset_activity_id  = p_primary_item_id
1630             AND MEAA.maintenance_object_id = p_maintenance_object_id
1631             AND MEAA.maintenance_object_type = 3 ;
1632 
1633         EXCEPTION
1634             WHEN OTHERS THEN
1635                   x_ACT_WO_Type := NULL;
1636         END;
1637 
1638   --  END IF;
1639     -- End of API body.
1640     -- Standard check of p_commit.
1641     IF FND_API.To_Boolean( p_commit ) THEN
1642         COMMIT WORK;
1643     END IF;
1644     -- Standard call to get message count and if count is 1, get message info.
1645     FND_MSG_PUB.Count_And_Get
1646         (p_count       =>      x_msg_count,
1647          p_data        =>      x_msg_data
1648         );
1649 EXCEPTION
1650     WHEN FND_API.G_EXC_ERROR THEN
1651         ROLLBACK TO Get_EAM_ACT_WO_Type_Def_PVT;
1652         x_return_status := FND_API.G_RET_STS_ERROR ;
1653 
1654         FND_MSG_PUB.Count_And_Get
1655             (p_count       =>      x_msg_count,
1656              p_data        =>      x_msg_data
1657             );
1658     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1659         ROLLBACK TO Get_EAM_ACT_WO_Type_Def_PVT;
1660         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1661 
1662         FND_MSG_PUB.Count_And_Get
1663             (p_count       =>      x_msg_count,
1664              p_data        =>      x_msg_data
1665             );
1666     WHEN OTHERS THEN
1667         ROLLBACK TO Get_EAM_ACT_WO_Type_Def_PVT;
1668       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1669 
1670           IF     FND_MSG_PUB.Check_Msg_Level
1671             (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1672         THEN
1673                 FND_MSG_PUB.Add_Exc_Msg
1674                     (G_PKG_NAME,
1675                      l_api_name
1676                     );
1677         END IF;
1678         FND_MSG_PUB.Count_And_Get
1679             (p_count       =>      x_msg_count,
1680              p_data        =>      x_msg_data
1681             );
1682 
1683 END Get_EAM_ACT_WO_Type_Default;
1684 
1685 PROCEDURE Get_EAM_ACT_Planner_Default
1686 (   p_api_version               IN  NUMBER,
1687     p_init_msg_list             IN  VARCHAR2 := FND_API.G_FALSE,
1688     p_commit                    IN  VARCHAR2 := FND_API.G_FALSE,
1689     p_validation_level          IN  NUMBER   := FND_API.G_VALID_LEVEL_FULL,
1690     x_return_status             OUT NOCOPY VARCHAR2,
1691     x_msg_count                 OUT NOCOPY NUMBER,
1692     x_msg_data                  OUT NOCOPY VARCHAR2,
1693     p_primary_item_id           IN  NUMBER,
1694     p_organization_id           IN  NUMBER,
1695     p_maintenance_object_type   IN  NUMBER,
1696     p_maintenance_object_id     IN  NUMBER,
1697     p_rebuild_item_id           IN  NUMBER,
1698     x_ACT_Planner      OUT NOCOPY NUMBER
1699 )
1700 IS
1701 l_api_name          CONSTANT VARCHAR2(30)     := 'Get_EAM_Owning_Dept_Default';
1702 l_api_version       CONSTANT NUMBER           := 1.0;
1703 l_act_assoc_id               NUMBER;
1704 
1705 BEGIN
1706     -- Standard Start of API savepoint
1707     SAVEPOINT    Get_EAM_ACT_Planner_Def_PVT;
1708     -- Standard call to check for call compatibility.
1709     IF NOT FND_API.Compatible_API_Call (l_api_version,
1710                                         p_api_version,
1711                                         l_api_name,
1712                                         G_PKG_NAME)
1713     THEN
1714         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1715     END IF;
1716     -- Initialize message list if p_init_msg_list is set to TRUE.
1717     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1718         FND_MSG_PUB.initialize;
1719     END IF;
1720     --  Initialize API return status to success
1721     x_return_status := FND_API.G_RET_STS_SUCCESS;
1722     -- API body
1723 
1724          BEGIN
1725             SELECT eomd.planner_maintenance
1726             INTO   x_ACT_Planner
1727             FROM eam_org_maint_defaults eomd, mtl_eam_asset_activities MEAA
1728             WHERE eomd.organization_id=p_organization_id
1729             AND eomd.object_type = 60
1730             AND eomd.object_id = meaa.activity_association_id
1731             AND MEAA.asset_activity_id  = p_primary_item_id
1732             AND MEAA.maintenance_object_id = p_maintenance_object_id
1733             AND MEAA.maintenance_object_type = 3 ;
1734 
1735         EXCEPTION
1736             WHEN OTHERS THEN
1737                  x_ACT_Planner := NULL;
1738         END;
1739 
1740   --  END IF;
1741     -- End of API body.
1742     -- Standard check of p_commit.
1743     IF FND_API.To_Boolean( p_commit ) THEN
1744         COMMIT WORK;
1745     END IF;
1746     -- Standard call to get message count and if count is 1, get message info.
1747     FND_MSG_PUB.Count_And_Get
1748         (p_count       =>      x_msg_count,
1749          p_data        =>      x_msg_data
1750         );
1751 EXCEPTION
1752     WHEN FND_API.G_EXC_ERROR THEN
1753         ROLLBACK TO Get_EAM_ACT_Planner_Def_PVT;
1754         x_return_status := FND_API.G_RET_STS_ERROR ;
1755 
1756         FND_MSG_PUB.Count_And_Get
1757             (p_count       =>      x_msg_count,
1758              p_data        =>      x_msg_data
1759             );
1760     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1761         ROLLBACK TO Get_EAM_ACT_Planner_Def_PVT;
1762         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1763 
1764         FND_MSG_PUB.Count_And_Get
1765             (p_count       =>      x_msg_count,
1766              p_data        =>      x_msg_data
1767             );
1768     WHEN OTHERS THEN
1769         ROLLBACK TO Get_EAM_ACT_Planner_Def_PVT;
1770       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1771 
1772           IF     FND_MSG_PUB.Check_Msg_Level
1773             (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1774         THEN
1775                 FND_MSG_PUB.Add_Exc_Msg
1776                     (G_PKG_NAME,
1777                      l_api_name
1778                     );
1779         END IF;
1780         FND_MSG_PUB.Count_And_Get
1781             (p_count       =>      x_msg_count,
1782              p_data        =>      x_msg_data
1783             );
1784 END Get_EAM_ACT_Planner_Default;
1785 
1786 PROCEDURE Get_EAM_ACT_Firm_Default
1787 (   p_api_version               IN  NUMBER,
1788     p_init_msg_list             IN  VARCHAR2 := FND_API.G_FALSE,
1789     p_commit                    IN  VARCHAR2 := FND_API.G_FALSE,
1790     p_validation_level          IN  NUMBER   := FND_API.G_VALID_LEVEL_FULL,
1791     x_return_status             OUT NOCOPY VARCHAR2,
1792     x_msg_count                 OUT NOCOPY NUMBER,
1793     x_msg_data                  OUT NOCOPY VARCHAR2,
1794     p_primary_item_id           IN  NUMBER,
1795     p_organization_id           IN  NUMBER,
1796     p_maintenance_object_type   IN  NUMBER,
1797     p_maintenance_object_id     IN  NUMBER,
1798     p_rebuild_item_id           IN  NUMBER,
1799     x_ACT_Firm      OUT NOCOPY NUMBER
1800 )
1801 IS
1802 l_api_name          CONSTANT VARCHAR2(30)     := 'Get_EAM_ACT_Firm_Default';
1803 l_api_version       CONSTANT NUMBER           := 1.0;
1804 l_act_assoc_id               NUMBER;
1805 
1806 BEGIN
1807     -- Standard Start of API savepoint
1808     SAVEPOINT    Get_EAM_ACT_Firm_Def_PVT;
1809     -- Standard call to check for call compatibility.
1810     IF NOT FND_API.Compatible_API_Call (l_api_version,
1811                                         p_api_version,
1812                                         l_api_name,
1813                                         G_PKG_NAME)
1814     THEN
1815         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1816     END IF;
1817     -- Initialize message list if p_init_msg_list is set to TRUE.
1818     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1819         FND_MSG_PUB.initialize;
1820     END IF;
1821     --  Initialize API return status to success
1822     x_return_status := FND_API.G_RET_STS_SUCCESS;
1823     -- API body
1824 
1825          BEGIN
1826             SELECT eomd.firm_planned_flag
1827             INTO   x_ACT_Firm
1828             FROM eam_org_maint_defaults eomd, mtl_eam_asset_activities MEAA
1829             WHERE eomd.organization_id=p_organization_id
1830             AND eomd.object_type = 60
1831             AND eomd.object_id = meaa.activity_association_id
1832             AND MEAA.asset_activity_id  = p_primary_item_id
1833             AND MEAA.maintenance_object_id = p_maintenance_object_id
1834             AND MEAA.maintenance_object_type = 3 ;
1835 
1836         EXCEPTION
1837             WHEN OTHERS THEN
1838                  x_ACT_Firm := NULL;
1839         END;
1840 
1841   --  END IF;
1842     -- End of API body.
1843     -- Standard check of p_commit.
1844     IF FND_API.To_Boolean( p_commit ) THEN
1845         COMMIT WORK;
1846     END IF;
1847     -- Standard call to get message count and if count is 1, get message info.
1848     FND_MSG_PUB.Count_And_Get
1849         (p_count       =>      x_msg_count,
1850          p_data        =>      x_msg_data
1851         );
1852 EXCEPTION
1853     WHEN FND_API.G_EXC_ERROR THEN
1854         ROLLBACK TO Get_EAM_ACT_Firm_Def_PVT;
1855         x_return_status := FND_API.G_RET_STS_ERROR ;
1856 
1857         FND_MSG_PUB.Count_And_Get
1858             (p_count       =>      x_msg_count,
1859              p_data        =>      x_msg_data
1860             );
1861     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1862         ROLLBACK TO Get_EAM_ACT_Firm_Def_PVT;
1863         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1864 
1865         FND_MSG_PUB.Count_And_Get
1866             (p_count       =>      x_msg_count,
1867              p_data        =>      x_msg_data
1868             );
1869     WHEN OTHERS THEN
1870         ROLLBACK TO Get_EAM_ACT_Firm_Def_PVT;
1871       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1872 
1873           IF     FND_MSG_PUB.Check_Msg_Level
1874             (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1875         THEN
1876                 FND_MSG_PUB.Add_Exc_Msg
1877                     (G_PKG_NAME,
1878                      l_api_name
1879                     );
1880         END IF;
1881         FND_MSG_PUB.Count_And_Get
1882             (p_count       =>      x_msg_count,
1883              p_data        =>      x_msg_data
1884             );
1885 END Get_EAM_ACT_Firm_Default;
1886 
1887 PROCEDURE Get_EAM_ACT_Planned_Default
1888 (   p_api_version               IN  NUMBER,
1889     p_init_msg_list             IN  VARCHAR2 := FND_API.G_FALSE,
1890     p_commit                    IN  VARCHAR2 := FND_API.G_FALSE,
1891     p_validation_level          IN  NUMBER   := FND_API.G_VALID_LEVEL_FULL,
1892     x_return_status             OUT NOCOPY VARCHAR2,
1893     x_msg_count                 OUT NOCOPY NUMBER,
1894     x_msg_data                  OUT NOCOPY VARCHAR2,
1895     p_primary_item_id           IN  NUMBER,
1896     p_organization_id           IN  NUMBER,
1897     p_maintenance_object_type   IN  NUMBER,
1898     p_maintenance_object_id     IN  NUMBER,
1899     p_rebuild_item_id           IN  NUMBER,
1900     x_ACT_Planned       OUT NOCOPY VARCHAR2
1901 )
1902 IS
1903 l_api_name          CONSTANT VARCHAR2(30)     := 'Get_EAM_Owning_Dept_Default';
1904 l_api_version       CONSTANT NUMBER           := 1.0;
1905 l_act_assoc_id               NUMBER;
1906 
1907 BEGIN
1908     -- Standard Start of API savepoint
1909     SAVEPOINT    Get_EAM_ACT_Planned_Def_PVT;
1910     -- Standard call to check for call compatibility.
1911     IF NOT FND_API.Compatible_API_Call (l_api_version,
1912                                         p_api_version,
1913                                         l_api_name,
1914                                         G_PKG_NAME)
1915     THEN
1916         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1917     END IF;
1918     -- Initialize message list if p_init_msg_list is set to TRUE.
1919     IF FND_API.to_Boolean( p_init_msg_list ) THEN
1920         FND_MSG_PUB.initialize;
1921     END IF;
1922     --  Initialize API return status to success
1923     x_return_status := FND_API.G_RET_STS_SUCCESS;
1924     -- API body
1925 
1926          BEGIN
1927             SELECT eomd.plan_maintenance
1928             INTO   x_ACT_Planned
1929             FROM eam_org_maint_defaults eomd, mtl_eam_asset_activities MEAA
1930             WHERE eomd.organization_id=p_organization_id
1931             AND eomd.object_type = 60
1932             AND eomd.object_id = meaa.activity_association_id
1933             AND MEAA.asset_activity_id  = p_primary_item_id
1934             AND MEAA.maintenance_object_id = p_maintenance_object_id
1935             AND MEAA.maintenance_object_type = 3 ;
1936 
1937         EXCEPTION
1938             WHEN OTHERS THEN
1939                  x_ACT_Planned := NULL;
1940         END;
1941 
1942   --  END IF;
1943     -- End of API body.
1944     -- Standard check of p_commit.
1945     IF FND_API.To_Boolean( p_commit ) THEN
1946         COMMIT WORK;
1947     END IF;
1948     -- Standard call to get message count and if count is 1, get message info.
1949     FND_MSG_PUB.Count_And_Get
1950         (p_count       =>      x_msg_count,
1951          p_data        =>      x_msg_data
1952         );
1953 EXCEPTION
1954     WHEN FND_API.G_EXC_ERROR THEN
1955         ROLLBACK TO Get_EAM_ACT_Planned_Def_PVT;
1956         x_return_status := FND_API.G_RET_STS_ERROR ;
1957 
1958         FND_MSG_PUB.Count_And_Get
1959             (p_count       =>      x_msg_count,
1960              p_data        =>      x_msg_data
1961             );
1962     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1963         ROLLBACK TO Get_EAM_ACT_Planned_Def_PVT;
1964         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1965 
1966         FND_MSG_PUB.Count_And_Get
1967             (p_count       =>      x_msg_count,
1968              p_data        =>      x_msg_data
1969             );
1970     WHEN OTHERS THEN
1971         ROLLBACK TO Get_EAM_ACT_Planned_Def_PVT;
1972       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1973 
1974           IF     FND_MSG_PUB.Check_Msg_Level
1975             (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1976         THEN
1977                 FND_MSG_PUB.Add_Exc_Msg
1978                     (G_PKG_NAME,
1979                      l_api_name
1980                     );
1981         END IF;
1982         FND_MSG_PUB.Count_And_Get
1983             (p_count       =>      x_msg_count,
1984              p_data        =>      x_msg_data
1985             );
1986 END Get_EAM_ACT_Planned_Default;
1987 
1988 
1989 END WIP_EAMWORKORDER_PVT;