[Home] [Help]
PACKAGE BODY: APPS.EAM_WO_VALIDATE_PVT
Source
1 PACKAGE BODY EAM_WO_VALIDATE_PVT AS
2 /* $Header: EAMVWOVB.pls 120.33 2006/10/20 23:22:10 anjgupta ship $ */
3 /***************************************************************************
4 --
5 -- Copyright (c) 2002 Oracle Corporation, Redwood Shores, CA, USA
6 -- All rights reserved.
7 --
8 -- FILENAME
9 --
10 -- EAMVWOVB.pls
11 --
12 -- DESCRIPTION
13 --
14 -- Body of package EAM_WO_VALIDATE_PVT
15 --
16 -- NOTES
17 --
18 -- HISTORY
19 --
20 -- 30-JUN-2002 Kenichi Nagumo Initial Creation
21 -- 02-May-2005 Anju Gupta IB/Transactable project changes for R12
22 ***************************************************************************/
23
24 G_Pkg_Name VARCHAR2(30) := 'EAM_WO_VALIDATE_PVT';
25
26 g_token_tbl EAM_ERROR_MESSAGE_PVT.Token_Tbl_Type;
27 g_dummy NUMBER;
28 g_obj_source VARCHAR2(30) := EAM_CONSTANTS.G_OBJ_SOURCE;
29 g_obj_type VARCHAR2(30) := EAM_CONSTANTS.G_OBJ_TYPE;
30 g_act_source VARCHAR2(30) := EAM_CONSTANTS.G_ACT_SOURCE;
31 g_act_cause VARCHAR2(30) := EAM_CONSTANTS.G_ACT_CAUSE;
32 g_act_type VARCHAR2(30) := EAM_CONSTANTS.G_ACT_TYPE;
33 g_wo_type VARCHAR2(30) := EAM_CONSTANTS.G_WO_TYPE;
34 g_shutdown_type VARCHAR2(30):= EAM_CONSTANTS.G_SHUTDOWN_TYPE;
35
36 /*******************************************************************
37 * Procedure : Check_Existence
38 * Returns : None
39 * Parameters IN : Work Order Record
40 * Parameters OUT NOCOPY: Old Work Order Record
41 * Mesg Token Table
42 * Return Status
43 * Purpose : Procedure will query the old EAM work order
44 * record and return it in old record variables. If the
45 * Transaction Type is Create and the record already
46 * exists the return status would be error or if the
47 * transaction type is Update and the record
48 * does not exist then the return status would be an
49 * error as well. Mesg_Token_Table will carry the
50 * error messsage and the tokens associated with the
51 * message.
52 *********************************************************************/
53
54 PROCEDURE Check_Existence
55 ( p_eam_wo_rec IN EAM_PROCESS_WO_PUB.eam_wo_rec_type
56 , x_old_eam_wo_rec OUT NOCOPY EAM_PROCESS_WO_PUB.eam_wo_rec_type
57 , x_Mesg_Token_Tbl OUT NOCOPY EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type
58 , x_return_status OUT NOCOPY VARCHAR2
59 )
60 IS
61 l_token_tbl EAM_ERROR_MESSAGE_PVT.Token_Tbl_Type;
62 l_Mesg_Token_Tbl EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type;
63 l_out_Mesg_Token_Tbl EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type;
64 l_return_status VARCHAR2(1);
65 BEGIN
66
67 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Quering Work Order'); END IF;
68
69 EAM_WO_UTILITY_PVT.Query_Row
70 ( p_wip_entity_id => p_eam_wo_rec.wip_entity_id
71 , p_organization_id => p_eam_wo_rec.organization_id
72 , x_eam_wo_rec => x_old_eam_wo_rec
73 , x_Return_status => l_return_status
74 );
75
76 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Query Row Returned with : ' || l_return_status); END IF;
77
78 IF l_return_status = EAM_PROCESS_WO_PVT.G_RECORD_FOUND AND
79 p_eam_wo_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_CREATE
80 THEN
81 l_token_tbl(1).token_name := 'WIP_ENTITY_NAME';
82 l_token_tbl(1).token_value := p_eam_wo_rec.wip_entity_name;
83
84 l_out_mesg_token_tbl := l_mesg_token_tbl;
85 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
86 ( x_Mesg_token_tbl => l_out_Mesg_Token_Tbl
87 , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
88 , p_message_name => 'EAM_WO_ALREADY_EXISTS'
89 , p_token_tbl => l_token_tbl
90 );
91 l_mesg_token_tbl := l_out_mesg_token_tbl;
92
93 l_return_status := FND_API.G_RET_STS_ERROR;
94
95 ELSIF l_return_status = EAM_PROCESS_WO_PVT.G_RECORD_NOT_FOUND AND
96 p_eam_wo_rec.transaction_type IN
97 (EAM_PROCESS_WO_PVT.G_OPR_UPDATE, EAM_PROCESS_WO_PVT.G_OPR_DELETE)
98 THEN
99 l_token_tbl(1).token_name := 'WIP_ENTITY_NAME';
100 l_token_tbl(1).token_value := p_eam_wo_rec.wip_entity_name;
101
102 l_out_mesg_token_tbl := l_mesg_token_tbl;
103 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
104 ( x_Mesg_token_tbl => l_out_Mesg_Token_Tbl
105 , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
106 , p_message_name => 'EAM_WO_DOESNOT_EXISTS'
107 , p_token_tbl => l_token_tbl
108 );
109 l_mesg_token_tbl := l_out_mesg_token_tbl;
110
111 l_return_status := FND_API.G_RET_STS_ERROR;
112
113 ELSIF l_Return_status = FND_API.G_RET_STS_UNEXP_ERROR
114 THEN
115 l_out_mesg_token_tbl := l_mesg_token_tbl;
116 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
117 ( x_Mesg_token_tbl => l_out_Mesg_Token_Tbl
118 , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
119 , p_message_name => NULL
120 , p_message_text => 'Unexpected error while existence verification of ' || 'EAM WO '|| p_eam_wo_rec.wip_entity_name , p_token_tbl => l_token_tbl
121 );
122 l_mesg_token_tbl := l_out_mesg_token_tbl;
123 l_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
124
125 ELSE /* Assign the relevant transaction type for SYNC operations */
126 IF p_eam_wo_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_SYNC THEN
127 IF l_return_status = EAM_PROCESS_WO_PVT.G_RECORD_FOUND THEN
128 x_old_eam_wo_rec.transaction_type := EAM_PROCESS_WO_PVT.G_OPR_UPDATE;
129 ELSE
130 x_old_eam_wo_rec.transaction_type := EAM_PROCESS_WO_PVT.G_OPR_CREATE;
131 END IF;
132 END IF;
133 l_return_status := FND_API.G_RET_STS_SUCCESS;
134
135 END IF;
136
137 x_return_status := l_return_status;
138 x_mesg_token_tbl := l_mesg_token_tbl;
139 END Check_Existence;
140
141
142
143 /********************************************************************
144 * Procedure : Check_Attributes_b4_Defaulting
145 * Parameters IN : Work Order Column record
146 * Parameters OUT NOCOPY: Return Status
147 * Mesg Token Table
148 * Purpose : Check_Attrbibutes_b4_Defaulting procedure will validate all item
149 * attributes that are required in defaulting other items
150
151 -- Change History
152 -- 02-May-2005 Anju Gupta IB/Transactable Asset changes for R12
153 **********************************************************************/
154
155 PROCEDURE Check_Attributes_b4_Defaulting
156 ( p_eam_wo_rec IN EAM_PROCESS_WO_PUB.eam_wo_rec_type
157 , x_Mesg_Token_Tbl OUT NOCOPY EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type
158 , x_return_status OUT NOCOPY VARCHAR2
159 )
160 IS
161 l_err_text VARCHAR2(2000) := NULL;
162 l_Mesg_Token_Tbl EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type;
163 l_out_Mesg_Token_Tbl EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type;
164 l_Token_Tbl EAM_ERROR_MESSAGE_PVT.Token_Tbl_Type;
165 l_old_eam_wo_moid NUMBER := 0;
166
167 BEGIN
168
169 x_return_status := FND_API.G_RET_STS_SUCCESS;
170
171 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Within WO Check Attributes b4 Defaulting . . . '); END IF;
172
173
174 -- organization_id
175
176 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating organization_id . . . '); END IF;
177
178 declare
179 l_disable_date date;
180 begin
181
182 select 1
183 into g_dummy
184 from mtl_parameters mp
185 where mp.organization_id = p_eam_wo_rec.organization_id;
186
187 select nvl(hou.date_to,sysdate+1)
188 into l_disable_date
189 from hr_organization_units hou
190 where organization_id = p_eam_wo_rec.organization_id;
191
192 if(l_disable_date < sysdate) then
193 raise fnd_api.g_exc_unexpected_error;
194 end if;
195
196 x_return_status := FND_API.G_RET_STS_SUCCESS;
197
198 exception
199 when others then
200
201 l_token_tbl(1).token_name := 'Organization Id';
202 l_token_tbl(1).token_value := p_eam_wo_rec.organization_id;
203
204 l_out_mesg_token_tbl := l_mesg_token_tbl;
205 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
206 ( p_message_name => 'EAM_WO_ORGANIZATION_ID'
207 , p_token_tbl => l_token_tbl
208 , p_mesg_token_tbl => l_mesg_token_tbl
209 , x_mesg_token_tbl => l_out_mesg_token_tbl
210 );
211 l_mesg_token_tbl := l_out_mesg_token_tbl;
212
213 x_return_status := FND_API.G_RET_STS_ERROR;
214 x_mesg_token_tbl := l_mesg_token_tbl ;
215 return;
216
217 end;
218
219
220 -- organization_id (EAM enabled)
221
222 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating organization_id (EAM enabled) . . . '); END IF;
223
224 begin
225
226 select 1
227 into g_dummy
228 from wip_eam_parameters wep, mtl_parameters mp
229 where wep.organization_id = mp.organization_id
230 and mp.eam_enabled_flag = 'Y'
231 and wep.organization_id = p_eam_wo_rec.organization_id;
232
233 x_return_status := FND_API.G_RET_STS_SUCCESS;
234
235 exception
236 when no_data_found then
237
238 l_token_tbl(1).token_name := 'Organization Id';
239 l_token_tbl(1).token_value := p_eam_wo_rec.organization_id;
240
241 l_out_mesg_token_tbl := l_mesg_token_tbl;
242 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
243 ( p_message_name => 'EAM_WO_ORG_EAM_ENABLED'
244 , p_token_tbl => l_token_tbl
245 , p_mesg_token_tbl => l_mesg_token_tbl
246 , x_mesg_token_tbl => l_out_mesg_token_tbl
247 );
248 l_mesg_token_tbl := l_out_mesg_token_tbl;
249
250 x_return_status := FND_API.G_RET_STS_ERROR;
251 x_mesg_token_tbl := l_mesg_token_tbl ;
252 return;
253
254 end;
255
256 -- maintenance_object_source
257
258 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating maintenance_object_source . . . '); END IF;
259
260 begin
261
262 if p_eam_wo_rec.maintenance_object_source is null or
263 p_eam_wo_rec.maintenance_object_source = fnd_api.g_miss_num
264 then
265 raise fnd_api.g_exc_error;
266 end if;
267
268 select 1 into g_dummy from
269 mfg_lookups where lookup_type = g_obj_source
270 and lookup_code = p_eam_wo_rec.maintenance_object_source;
271
272 x_return_status := FND_API.G_RET_STS_SUCCESS;
273
274 exception
275 when fnd_api.g_exc_error then
276
277 l_token_tbl(1).token_name := 'Object Source';
278 l_token_tbl(1).token_value := p_eam_wo_rec.maintenance_object_source;
279
280 l_out_mesg_token_tbl := l_mesg_token_tbl;
281 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
282 ( p_message_name => 'EAM_WO_MAINT_OBJ_SRC_REQUIRED'
283 , p_token_tbl => l_token_tbl
284 , p_mesg_token_tbl => l_mesg_token_tbl
285 , x_mesg_token_tbl => l_out_mesg_token_tbl
286 );
287 l_mesg_token_tbl := l_out_mesg_token_tbl;
288
289 x_return_status := FND_API.G_RET_STS_ERROR;
290 x_mesg_token_tbl := l_mesg_token_tbl ;
291 return;
292
293 when no_data_found then
294
295 l_token_tbl(1).token_name := 'Object Source';
296 l_token_tbl(1).token_value := p_eam_wo_rec.maintenance_object_source;
297
298 l_out_mesg_token_tbl := l_mesg_token_tbl;
299 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
300 ( p_message_name => 'EAM_WO_MAINT_OBJ_SOURCE'
301 , p_token_tbl => l_token_tbl
302 , p_mesg_token_tbl => l_mesg_token_tbl
303 , x_mesg_token_tbl => l_out_mesg_token_tbl
304 );
305 l_mesg_token_tbl := l_out_mesg_token_tbl;
306
307 x_return_status := FND_API.G_RET_STS_ERROR;
308 x_mesg_token_tbl := l_mesg_token_tbl ;
309 return;
310
311 end;
312
313 -- maintenance_object_type
314
315 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating maintenance_object_type . . . '); END IF;
316
317 begin
318
319 if p_eam_wo_rec.maintenance_object_type is null or
320 p_eam_wo_rec.maintenance_object_type = fnd_api.g_miss_num or
321 p_eam_wo_rec.maintenance_object_type = 1
322 then
323 raise fnd_api.g_exc_error;
324 end if;
325
326 select 1 into g_dummy from
327 mfg_lookups where lookup_type = g_obj_type
328 and lookup_code = p_eam_wo_rec.maintenance_object_type;
329
330 x_return_status := FND_API.G_RET_STS_SUCCESS;
331
332 exception
333 when fnd_api.g_exc_error then
334
335 l_token_tbl(1).token_name := 'Object Type';
336 l_token_tbl(1).token_value := p_eam_wo_rec.maintenance_object_type;
337
338 l_out_mesg_token_tbl := l_mesg_token_tbl;
339 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
340 ( p_message_name => 'EAM_WO_MAINT_OBJ_TYPE_REQUIRED'
341 , p_token_tbl => l_token_tbl
342 , p_mesg_token_tbl => l_mesg_token_tbl
343 , x_mesg_token_tbl => l_out_mesg_token_tbl
344 );
345 l_mesg_token_tbl := l_out_mesg_token_tbl;
346
347 x_return_status := FND_API.G_RET_STS_ERROR;
348 x_mesg_token_tbl := l_mesg_token_tbl ;
349 return;
350
351 when no_data_found then
352
353 l_token_tbl(1).token_name := 'Object Type';
354 l_token_tbl(1).token_value := p_eam_wo_rec.maintenance_object_type;
355
356 l_out_mesg_token_tbl := l_mesg_token_tbl;
357 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
358 ( p_message_name => 'EAM_WO_MAINT_OBJ_TYPE'
359 , p_token_tbl => l_token_tbl
360 , p_mesg_token_tbl => l_mesg_token_tbl
361 , x_mesg_token_tbl => l_out_mesg_token_tbl
362 );
363 l_mesg_token_tbl := l_out_mesg_token_tbl;
364
365 x_return_status := FND_API.G_RET_STS_ERROR;
366 x_mesg_token_tbl := l_mesg_token_tbl ;
367 return;
368
369 end;
370
371 -- maintenance_object_id
372
373 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating maintenance_object_id . . . '); END IF;
374
375 begin
376
377 if p_eam_wo_rec.maintenance_object_id is null or
378 p_eam_wo_rec.maintenance_object_id = fnd_api.g_miss_num
379 then
380 raise fnd_api.g_exc_error;
381 end if;
382
383 IF p_eam_wo_rec.maintenance_object_type = 3 then
384 --CMRO does not use the EAM family of maintenance orgs concept.
385 IF p_eam_wo_rec.maintenance_object_source = 1 THEN
386
387 IF p_eam_wo_rec.transaction_type <> EAM_PROCESS_WO_PVT.G_OPR_CREATE THEN
388 select maintenance_object_id into l_old_eam_wo_moid
389 from wip_discrete_jobs
390 where wip_entity_id = p_eam_wo_rec.wip_entity_id
391 and organization_id = p_eam_wo_rec.organization_id
392 and rownum = 1;
393 END IF;
394 IF p_eam_wo_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_CREATE
395 OR (p_eam_wo_rec.transaction_type <> EAM_PROCESS_WO_PVT.G_OPR_CREATE
396 AND l_old_eam_wo_moid <> p_eam_wo_rec.maintenance_object_id) THEN
397 -- Code for create validation
398 select 1 into g_dummy
399 from csi_item_instances cii, mtl_parameters mp
400 where cii.last_vld_organization_id = mp.organization_id
401 and mp.maint_organization_id = p_eam_wo_rec.organization_id
402 and cii.instance_id = p_eam_wo_rec.maintenance_object_id
403 and cii.inventory_item_id = nvl(p_eam_wo_rec.asset_group_id, p_eam_wo_rec.rebuild_item_id)
404 and rownum = 1;
405 END IF;
406 END IF;
407
408 ELSIF p_eam_wo_rec.maintenance_object_type = 2 then
409 if (p_eam_wo_rec.maintenance_object_source = 1) then
410 select 1 into g_dummy from mtl_system_items msi, mtl_parameters mp where
411 msi.organization_id = mp.organization_id
412 and mp.maint_organization_id = p_eam_wo_rec.organization_id
413 and msi.inventory_item_id = p_eam_wo_rec.maintenance_object_id
414 and rownum = 1;
415 elsif (p_eam_wo_rec.maintenance_object_source = 2) then
416 select 1 into g_dummy from mtl_system_items where
417 organization_id = p_eam_wo_rec.organization_id
418 and inventory_item_id = p_eam_wo_rec.maintenance_object_id;
419 end if;
420 END IF;
421
422 x_return_status := FND_API.G_RET_STS_SUCCESS;
423
424 exception
425 when fnd_api.g_exc_error then
426
427 l_token_tbl(1).token_name := 'Object Id';
428 l_token_tbl(1).token_value := p_eam_wo_rec.maintenance_object_id;
429
430 l_out_mesg_token_tbl := l_mesg_token_tbl;
431 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
432 ( p_message_name => 'EAM_WO_MAINT_OBJ_ID_REQUIRED'
433 , p_token_tbl => l_token_tbl
434 , p_mesg_token_tbl => l_mesg_token_tbl
435 , x_mesg_token_tbl => l_out_mesg_token_tbl
436 );
437 l_mesg_token_tbl := l_out_mesg_token_tbl;
438
439 x_return_status := FND_API.G_RET_STS_ERROR;
440 x_mesg_token_tbl := l_mesg_token_tbl ;
441 return;
442
443 when others then
444
445 l_token_tbl(1).token_name := 'Object Id';
446 l_token_tbl(1).token_value := p_eam_wo_rec.maintenance_object_id;
447
448 l_out_mesg_token_tbl := l_mesg_token_tbl;
449 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
450 ( p_message_name => 'EAM_WO_MAINT_OBJ_ID'
451 , p_token_tbl => l_token_tbl
452 , p_mesg_token_tbl => l_mesg_token_tbl
453 , x_mesg_token_tbl => l_out_mesg_token_tbl
454 );
455 l_mesg_token_tbl := l_out_mesg_token_tbl;
456
457 x_return_status := FND_API.G_RET_STS_ERROR;
458 x_mesg_token_tbl := l_mesg_token_tbl ;
459 return;
460
461 end;
462
463 -- rebuild_item_id
464
465 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating rebuild_item_id . . . '); END IF;
466
467 begin
468
469 -- for CMRO work orders, the rebuild_item_id cannot be null.
470 if p_eam_wo_rec.maintenance_object_source = 2 and
471 p_eam_wo_rec.rebuild_item_id is null
472 then
473 raise fnd_api.g_exc_error;
474 end if;
475
476 x_return_status := FND_API.G_RET_STS_SUCCESS;
477
478 exception
479
480 when fnd_api.g_exc_error then
481
482 l_token_tbl(1).token_name := 'Wip Id';
483 l_token_tbl(1).token_value := p_eam_wo_rec.wip_entity_id;
484
485 l_out_mesg_token_tbl := l_mesg_token_tbl;
486 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
487 ( p_message_name => 'EAM_WO_REBUILD_ITEM_REQUIRED'
488 , p_token_tbl => l_token_tbl
489 , p_mesg_token_tbl => l_mesg_token_tbl
490 , x_mesg_token_tbl => l_out_mesg_token_tbl
491 );
492 l_mesg_token_tbl := l_out_mesg_token_tbl;
493
494 x_return_status := FND_API.G_RET_STS_ERROR;
495 x_mesg_token_tbl := l_mesg_token_tbl ;
496 return;
497
498 end;
499
500 -- rebuild_item_id and asset_group_id
501
502 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating rebuild_item_id and asset_group_id. . . '); END IF;
503
504 begin
505
506 -- rebuild_item_id and asset_group_id cannot both be null.
507 if p_eam_wo_rec.asset_group_id is null and
508 p_eam_wo_rec.rebuild_item_id is null
509 then
510 raise fnd_api.g_exc_error;
511 end if;
512
513 x_return_status := FND_API.G_RET_STS_SUCCESS;
514
515 exception
516 when fnd_api.g_exc_error then
517
518 l_token_tbl(1).token_name := 'Wip Id';
519 l_token_tbl(1).token_value := p_eam_wo_rec.wip_entity_id;
520
521 l_out_mesg_token_tbl := l_mesg_token_tbl;
522 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
523 ( p_message_name => 'EAM_WO_AG_RB_REQUIRED'
524 , p_token_tbl => l_token_tbl
525 , p_mesg_token_tbl => l_mesg_token_tbl
526 , x_mesg_token_tbl => l_out_mesg_token_tbl
527 );
528 l_mesg_token_tbl := l_out_mesg_token_tbl;
529
530 x_return_status := FND_API.G_RET_STS_ERROR;
531 x_mesg_token_tbl := l_mesg_token_tbl ;
532 return;
533
534 end;
535
536
537 -- wip_entity_id
538
539 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating wip_entity_id . . . '); END IF;
540
541 begin
542
543 if p_eam_wo_rec.wip_entity_id is not null and
544 p_eam_wo_rec.transaction_type = EAM_PROCESS_WO_PUB.G_OPR_CREATE
545 then
546 raise fnd_api.g_exc_error;
547 end if;
548
549 x_return_status := FND_API.G_RET_STS_SUCCESS;
550
551 exception
552 when fnd_api.g_exc_error then
553
554 l_token_tbl(1).token_name := 'Wip Entity Id';
555 l_token_tbl(1).token_value := p_eam_wo_rec.wip_entity_id;
556
557 l_out_mesg_token_tbl := l_mesg_token_tbl;
558 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
559 ( p_message_name => 'EAM_WO_WIP_ENTITY_ID'
560 , p_token_tbl => l_token_tbl
561 , p_mesg_token_tbl => l_mesg_token_tbl
562 , x_mesg_token_tbl => l_out_mesg_token_tbl
563 );
564 l_mesg_token_tbl := l_out_mesg_token_tbl;
565
566 x_return_status := FND_API.G_RET_STS_ERROR;
567 x_mesg_token_tbl := l_mesg_token_tbl ;
568 return;
569
570 end;
571
572
573 EXCEPTION
574 WHEN OTHERS THEN
575
576 l_token_tbl(1).token_name := 'Validation (Check Attributes b4 defaulting)';
577 l_token_tbl(1).token_value := substrb(SQLERRM,1,200);
578
579 l_out_mesg_token_tbl := l_mesg_token_tbl;
580 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
581 ( p_message_name => NULL
582 , p_token_tbl => l_token_tbl
583 , p_mesg_token_tbl => l_mesg_token_tbl
584 , x_mesg_token_tbl => l_out_mesg_token_tbl
585 ) ;
586 l_mesg_token_tbl := l_out_mesg_token_tbl;
587
588 -- Return the status and message table.
589 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
590 x_mesg_token_tbl := l_mesg_token_tbl ;
591
592 END Check_Attributes_b4_Defaulting;
593
594 /********************************************************************
595 * Procedure : Check_Attributes
596 * Parameters IN : Work Order Column record
597 * Old Work Order Column record
598 * Parameters OUT NOCOPY: Return Status
599 * Mesg Token Table
600 * Purpose : Check_Attrbibutes procedure will validate every
601 * revised item attrbiute in its entirety.
602 -- Change History
603 -- Anju Gupta 05/03/05 IB/Transactable Asset changes for R12
604 **********************************************************************/
605
606 PROCEDURE Check_Attributes
607 ( p_eam_wo_rec IN EAM_PROCESS_WO_PUB.eam_wo_rec_type
608 , p_old_eam_wo_rec IN EAM_PROCESS_WO_PUB.eam_wo_rec_type
609 , x_return_status OUT NOCOPY VARCHAR2
610 , x_Mesg_Token_Tbl OUT NOCOPY EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type
611 )
612 IS
613 l_err_text VARCHAR2(2000) := NULL;
614 l_Mesg_Token_Tbl EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type;
615 l_out_Mesg_Token_Tbl EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type;
616 l_Token_Tbl EAM_ERROR_MESSAGE_PVT.Token_Tbl_Type;
617 l_mo_err_flag VARCHAR2(1) ;
618 l_trans_exist VARCHAR2(1);
619
620 l_rebuild_status NUMBER;
621 l_current_status NUMBER;
622 l_enabled_flag VARCHAR2(1);
623
624 l_wo_asset_activity_err EXCEPTION;
625
626 BEGIN
627 l_mo_err_flag:= '';
628 x_return_status := FND_API.G_RET_STS_SUCCESS;
629
630 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Within WO Check Attributes . . . '); END IF;
631
632
633 -- organization_id
634
635 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating organization_id . . . '); END IF;
636
637 declare
638 l_disable_date date;
639 begin
640
641 select 1
642 into g_dummy
643 from mtl_parameters mp
644 where mp.organization_id = p_eam_wo_rec.organization_id;
645
646 select nvl(hou.date_to,sysdate+1)
647 into l_disable_date
648 from hr_organization_units hou
649 where organization_id = p_eam_wo_rec.organization_id;
650
651 if(l_disable_date < sysdate) then
652 raise fnd_api.g_exc_unexpected_error;
653 end if;
654
655 x_return_status := FND_API.G_RET_STS_SUCCESS;
656
657 exception
658 when fnd_api.g_exc_unexpected_error then
659
660 l_token_tbl(1).token_name := 'Organization Id';
661 l_token_tbl(1).token_value := p_eam_wo_rec.organization_id;
662
663 l_out_mesg_token_tbl := l_mesg_token_tbl;
664 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
665 ( p_message_name => 'EAM_WO_ORGANIZATION_ID'
666 , p_token_tbl => l_token_tbl
667 , p_mesg_token_tbl => l_mesg_token_tbl
668 , x_mesg_token_tbl => l_out_mesg_token_tbl
669 );
670 l_mesg_token_tbl := l_out_mesg_token_tbl;
671
672 x_return_status := FND_API.G_RET_STS_ERROR;
673 x_mesg_token_tbl := l_mesg_token_tbl ;
674 return;
675
676 when no_data_found then
677
678 l_token_tbl(1).token_name := 'Organization Id';
679 l_token_tbl(1).token_value := p_eam_wo_rec.organization_id;
680
681 l_out_mesg_token_tbl := l_mesg_token_tbl;
682 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
683 ( p_message_name => 'EAM_WO_ORGANIZATION_ID'
684 , p_token_tbl => l_token_tbl
685 , p_mesg_token_tbl => l_mesg_token_tbl
686 , x_mesg_token_tbl => l_out_mesg_token_tbl
687 );
688 l_mesg_token_tbl := l_out_mesg_token_tbl;
689
690 x_return_status := FND_API.G_RET_STS_ERROR;
691 x_mesg_token_tbl := l_mesg_token_tbl ;
692 return;
693
694
695
696 end;
697
698 /* PJM MOAC Changes */
699 fnd_profile.put('MFG_ORGANIZATION_ID', p_eam_wo_rec.organization_id);
700
701
702 -- organization_id (EAM enabled)
703
704 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating organization_id (EAM enabled) . . . '); END IF;
705
706 begin
707
708 select 1
709 into g_dummy
710 from wip_eam_parameters wep, mtl_parameters mp
711 where wep.organization_id = mp.organization_id
712 and mp.eam_enabled_flag = 'Y'
713 and wep.organization_id = p_eam_wo_rec.organization_id;
714
715 x_return_status := FND_API.G_RET_STS_SUCCESS;
716
717 exception
718 when no_data_found then
719
720 l_token_tbl(1).token_name := 'Organization Id';
721 l_token_tbl(1).token_value := p_eam_wo_rec.organization_id;
722
723 l_out_mesg_token_tbl := l_mesg_token_tbl;
724 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
725 ( p_message_name => 'EAM_WO_ORG_EAM_ENABLED'
726 , p_token_tbl => l_token_tbl
727 , p_mesg_token_tbl => l_mesg_token_tbl
728 , x_mesg_token_tbl => l_out_mesg_token_tbl
729 );
730 l_mesg_token_tbl := l_out_mesg_token_tbl;
731
732 x_return_status := FND_API.G_RET_STS_ERROR;
733 x_mesg_token_tbl := l_mesg_token_tbl ;
734 return;
735
736 end;
737
738
739 -- maintenance_object_type
740
741 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating maintenance_object_type . . . '); END IF;
742
743 begin
744
745 if (p_eam_wo_rec.maintenance_object_type is not null) then
746
747 select 1
748 into g_dummy
749 from mfg_lookups
750 where lookup_type = g_obj_type
751 and lookup_code = p_eam_wo_rec.maintenance_object_type;
752
753 x_return_status := FND_API.G_RET_STS_SUCCESS;
754
755 end if;
756
757 exception
758 when no_data_found then
759 l_token_tbl(1).token_name := 'Maintenance Object Type';
760 l_token_tbl(1).token_value := p_eam_wo_rec.maintenance_object_type;
761
762 l_out_mesg_token_tbl := l_mesg_token_tbl;
763 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
764 ( p_message_name => 'EAM_WO_MAINT_OBJECT_TYPE'
765 , p_token_tbl => l_token_tbl
766 , p_mesg_token_tbl => l_mesg_token_tbl
767 , x_mesg_token_tbl => l_out_mesg_token_tbl
768 );
769 l_mesg_token_tbl := l_out_mesg_token_tbl;
770
771 x_return_status := FND_API.G_RET_STS_ERROR;
772 x_mesg_token_tbl := l_mesg_token_tbl ;
773 return;
774
775 end;
776
777
778 -- object_source_id
779
780 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating maintenance_object_id . . . '); END IF;
781
782 begin
783
784 if (p_eam_wo_rec.maintenance_object_type is not null) then
785
786 if (p_eam_wo_rec.maintenance_object_type = 3 and p_eam_wo_rec.maintenance_object_source = 1) then
787
788 IF p_eam_wo_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_CREATE
789 OR (p_eam_wo_rec.transaction_type <> EAM_PROCESS_WO_PVT.G_OPR_CREATE
790 AND p_eam_wo_rec.maintenance_object_id <> p_old_eam_wo_rec.maintenance_object_id) THEN
791 -- Code for creation
792 select 1 into g_dummy
793 from csi_item_instances cii, mtl_parameters mp
794 where cii.last_vld_organization_id = mp.organization_id
795 and mp.maint_organization_id = p_eam_wo_rec.organization_id
796 and cii.instance_id = p_eam_wo_rec.maintenance_object_id;
797 END IF;
798
799 x_return_status := FND_API.G_RET_STS_SUCCESS;
800
801 elsif (p_eam_wo_rec.maintenance_object_type = 2) then
802 if (p_eam_wo_rec.maintenance_object_source = 1) then
803 select 1
804 into g_dummy
805 from mtl_system_items msi, mtl_parameters mp
806 where msi.organization_id = mp.organization_id
807 and mp.maint_organization_id = p_eam_wo_rec.organization_id
808 and inventory_item_id = p_eam_wo_rec.maintenance_object_id
809 and rownum = 1;
810 elsif (p_eam_wo_rec.maintenance_object_source = 2) then
811 select 1
812 into g_dummy
813 from mtl_system_items
814 where organization_id = p_eam_wo_rec.organization_id
815 and inventory_item_id = p_eam_wo_rec.maintenance_object_id;
816 end if;
817
818 x_return_status := FND_API.G_RET_STS_SUCCESS;
819
820 end if;
821
822 end if;
823
824 exception
825 when others then
826 l_token_tbl(1).token_name := 'Maintenance Object Id';
827 l_token_tbl(1).token_value := p_eam_wo_rec.maintenance_object_id;
828
829 l_out_mesg_token_tbl := l_mesg_token_tbl;
830 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
831 ( p_message_name => 'EAM_WO_MAINT_OBJECT_ID'
832 , p_token_tbl => l_token_tbl
833 , p_mesg_token_tbl => l_mesg_token_tbl
834 , x_mesg_token_tbl => l_out_mesg_token_tbl
835 );
836 l_mesg_token_tbl := l_out_mesg_token_tbl;
837
838 x_return_status := FND_API.G_RET_STS_ERROR;
839 x_mesg_token_tbl := l_mesg_token_tbl ;
840 return;
841
842 end;
843
844
845
846 -- maintenance object
847 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating maintenance object . . . '); END IF;
848
849 begin
850
851 if (p_eam_wo_rec.asset_group_id is not null) and (p_eam_wo_rec.rebuild_item_id is not null) then
852
853 raise fnd_api.g_exc_unexpected_error;
854
855 end if;
856
857 x_return_status := FND_API.G_RET_STS_SUCCESS;
858
859 exception
860 when fnd_api.g_exc_unexpected_error then
861
862 l_token_tbl(1).token_name := 'Asset Group';
863 l_token_tbl(1).token_value := p_eam_wo_rec.asset_group_id;
864
865 l_out_mesg_token_tbl := l_mesg_token_tbl;
866 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
867 ( p_message_name => 'EAM_WO_AG_RB_DUPLICATE'
868 , p_token_tbl => l_token_tbl
869 , p_mesg_token_tbl => l_mesg_token_tbl
870 , x_mesg_token_tbl => l_out_mesg_token_tbl
871 );
872 l_mesg_token_tbl := l_out_mesg_token_tbl;
873
874 x_return_status := FND_API.G_RET_STS_ERROR;
875 x_mesg_token_tbl := l_mesg_token_tbl ;
876 return;
877
878 end;
879
880 -- asset_group_id
881 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating asset_group_id . . . '); END IF;
882
883 begin
884
885 if (p_eam_wo_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_CREATE and p_eam_wo_rec.asset_group_id is not null) then
886
887 if(p_eam_wo_rec.asset_number is null)
888 then
889 raise fnd_api.g_exc_unexpected_error;
890 end if;
891
892 select 1
893 into g_dummy
894 from mtl_system_items msi, csi_item_instances cii, mtl_parameters mp
895 where cii.inventory_item_id = p_eam_wo_rec.asset_group_id
896 and cii.inventory_item_id = msi.inventory_item_id
897 and cii.last_vld_organization_id = mp.organization_id
898 and msi.organization_id = mp.organization_id
899 and mp.maint_organization_id = p_eam_wo_rec.organization_id
900 and cii.serial_number = p_eam_wo_rec.asset_number
901 and msi.eam_item_type = 1
902 and ROWNUM =1 ;
903 end if;
904
905 x_return_status := FND_API.G_RET_STS_SUCCESS;
906
907 exception
908 when others then
909
910 l_token_tbl(1).token_name := 'Asset Group';
911 l_token_tbl(1).token_value := p_eam_wo_rec.asset_group_id;
912
913 l_out_mesg_token_tbl := l_mesg_token_tbl;
914 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
915 ( p_message_name => 'EAM_WO_ASSET_GROUP'
916 , p_token_tbl => l_token_tbl
917 , p_mesg_token_tbl => l_mesg_token_tbl
918 , x_mesg_token_tbl => l_out_mesg_token_tbl
919 );
920 l_mesg_token_tbl := l_out_mesg_token_tbl;
921
922 x_return_status := FND_API.G_RET_STS_ERROR;
923 x_mesg_token_tbl := l_mesg_token_tbl ;
924 return;
925
926 end;
927
928 -- asset_number
929 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating asset_number . . . '); END IF;
930
931 begin
932
933 if (p_eam_wo_rec.transaction_type in (EAM_PROCESS_WO_PVT.G_OPR_CREATE,EAM_PROCESS_WO_PVT.G_OPR_UPDATE) and p_eam_wo_rec.asset_number is not null) then
934
935 /* In update mode do not check the current maintenance organization*/
936 select 1
937 into g_dummy
938 from csi_item_instances cii
939 where cii.inventory_item_id = p_eam_wo_rec.asset_group_id
940 and cii.serial_number = p_eam_wo_rec.asset_number
941 and nvl(cii.maintainable_flag, 'Y') = 'Y'
942 and nvl(cii.active_start_date, sysdate-1) <= sysdate
943 and nvl(cii.active_end_date, sysdate+1) >= sysdate ;
944
945 end if;
946
947 x_return_status := FND_API.G_RET_STS_SUCCESS;
948
949 exception
950 when no_data_found then
951
952 l_token_tbl(1).token_name := 'Asset Number';
953 l_token_tbl(1).token_value := p_eam_wo_rec.asset_number;
954
955 l_out_mesg_token_tbl := l_mesg_token_tbl;
956 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
957 ( p_message_name => 'EAM_WO_ASSET_NUMBER'
958 , p_token_tbl => l_token_tbl
959 , p_mesg_token_tbl => l_mesg_token_tbl
960 , x_mesg_token_tbl => l_out_mesg_token_tbl
961 );
962 l_mesg_token_tbl := l_out_mesg_token_tbl;
963
964 x_return_status := FND_API.G_RET_STS_ERROR;
965 x_mesg_token_tbl := l_mesg_token_tbl ;
966 return;
967
968 end;
969
970
971
972 -- eam_linear_location_id
973 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating eam_linear_location_id . . . '); END IF;
974
975 begin
976
977 if (p_eam_wo_rec.transaction_type in (EAM_PROCESS_WO_PVT.G_OPR_CREATE,
978 EAM_PROCESS_WO_PVT.G_OPR_UPDATE)
979 and p_eam_wo_rec.eam_linear_location_id is not null) then
980
981 select 1
982 into g_dummy
983 from eam_linear_locations
984 where eam_linear_id = p_eam_wo_rec.eam_linear_location_id;
985
986 end if;
987
988 x_return_status := FND_API.G_RET_STS_SUCCESS;
989
990 exception
991 when no_data_found then
992
993 l_token_tbl(1).token_name := 'LIN_LOC';
994 l_token_tbl(1).token_value := p_eam_wo_rec.eam_linear_location_id;
995
996 l_out_mesg_token_tbl := l_mesg_token_tbl;
997 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
998 ( p_message_name => 'EAM_WO_LINEAR_LOCATION'
999 , p_token_tbl => l_token_tbl
1000 , p_mesg_token_tbl => l_mesg_token_tbl
1001 , x_mesg_token_tbl => l_out_mesg_token_tbl
1002 );
1003 l_mesg_token_tbl := l_out_mesg_token_tbl;
1004
1005 x_return_status := FND_API.G_RET_STS_ERROR;
1006 x_mesg_token_tbl := l_mesg_token_tbl ;
1007 return;
1008
1009 end;
1010
1011
1012 -- rebuild_item_id
1013 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating rebuild_item_id . . . '); END IF;
1014
1015 begin
1016
1017 if (p_eam_wo_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_CREATE and p_eam_wo_rec.rebuild_item_id is not null) then
1018 select 1
1019 into g_dummy
1020 from mtl_system_items msi, mtl_parameters mp
1021 where msi.inventory_item_id = p_eam_wo_rec.rebuild_item_id
1022 and msi.organization_id = mp.organization_id
1023 and mp.maint_organization_id = p_eam_wo_rec.organization_id
1024 and msi.eam_item_type = 3
1025 and rownum = 1;
1026 end if;
1027
1028 x_return_status := FND_API.G_RET_STS_SUCCESS;
1029
1030 exception
1031 when no_data_found then
1032
1033 l_token_tbl(1).token_name := 'Rebuild Item Id';
1034 l_token_tbl(1).token_value := p_eam_wo_rec.rebuild_item_id;
1035
1036 l_out_mesg_token_tbl := l_mesg_token_tbl;
1037 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
1038 ( p_message_name => 'EAM_WO_REBUILD_ITEM_ID'
1039 , p_token_tbl => l_token_tbl
1040 , p_mesg_token_tbl => l_mesg_token_tbl
1041 , x_mesg_token_tbl => l_out_mesg_token_tbl
1042 );
1043 l_mesg_token_tbl := l_out_mesg_token_tbl;
1044
1045 x_return_status := FND_API.G_RET_STS_ERROR;
1046 x_mesg_token_tbl := l_mesg_token_tbl ;
1047 return;
1048
1049 end;
1050
1051 -- rebuild_serial_number
1052 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating rebuild_serial_number . . . '); END IF;
1053
1054 begin
1055 if (p_eam_wo_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_CREATE) then
1056
1057 if(p_eam_wo_rec.rebuild_item_id is null and
1058 p_eam_wo_rec.rebuild_serial_number is not null) then
1059 raise fnd_api.g_exc_unexpected_error;
1060 end if;
1061
1062 if(p_eam_wo_rec.rebuild_item_id is not null and
1063 p_eam_wo_rec.rebuild_serial_number is not null) then
1064
1065 select 1
1066 into g_dummy
1067 from csi_item_instances cii, mtl_parameters mp
1068 where cii.inventory_item_id = p_eam_wo_rec.rebuild_item_id
1069 and cii.last_vld_organization_id = mp.organization_id
1070 and mp.maint_organization_id = p_eam_wo_rec.organization_id
1071 and cii.serial_number = p_eam_wo_rec.rebuild_serial_number
1072 and nvl(cii.maintainable_flag, 'Y') = 'Y'
1073 and nvl(cii.active_start_date, sysdate-1) <= sysdate
1074 and nvl(cii.active_end_date, sysdate+1) >= sysdate;
1075 end if;
1076
1077 /* Since serial numbers can be dynamically generated at SO issue and the
1078 condition was actually commented out, we dont have to perform this query
1079 at all*/
1080
1081 end if;
1082
1083
1084
1085 /* Validation added so that rebuild serial number is not
1086 updateable if the WO is in status Released */
1087 /***** Enahancement No. : 2943473 ******/
1088
1089 IF ( p_eam_wo_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_UPDATE
1090 and p_eam_wo_rec.rebuild_item_id is not null
1091 and p_eam_wo_rec.rebuild_serial_number is not null
1092 and nvl(p_old_eam_wo_rec.rebuild_serial_number,'null_old_serial_number') <>
1093 nvl(p_eam_wo_rec.rebuild_serial_number,'null_old_serial_number') )
1094 THEN
1095
1096 IF ( p_eam_wo_rec.status_type = WIP_CONSTANTS.RELEASED
1097 and p_old_eam_wo_rec.status_type = WIP_CONSTANTS.RELEASED )
1098 THEN
1099 EAM_WORKORDER_UTIL_PKG.CK_MATERIAL_ALLOC_ON_HOLD(X_Org_Id => p_eam_wo_rec.organization_id,
1100 X_Wip_Id => p_eam_wo_rec.wip_entity_id,
1101 X_Rep_Id => -1,
1102 X_Line_Id => -1,
1103 X_Ent_Type=> 6,
1104 X_Return_Status=>l_trans_exist);
1105
1106 IF(l_trans_exist='F') THEN
1107 raise fnd_api.g_exc_unexpected_error;
1108 END IF;
1109 END IF;
1110 END IF;
1111
1112
1113
1114 x_return_status := FND_API.G_RET_STS_SUCCESS;
1115
1116 exception
1117 when others then
1118
1119 l_token_tbl(1).token_name := 'Rebuild Serial Number';
1120 l_token_tbl(1).token_value := p_eam_wo_rec.rebuild_serial_Number;
1121
1122 l_out_mesg_token_tbl := l_mesg_token_tbl;
1123 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
1124 ( p_message_name => 'EAM_WO_REBUILD_SERIAL_NUMBER'
1125 , p_token_tbl => l_token_tbl
1126 , p_mesg_token_tbl => l_mesg_token_tbl
1127 , x_mesg_token_tbl => l_out_mesg_token_tbl
1128 );
1129 l_mesg_token_tbl := l_out_mesg_token_tbl;
1130
1131 x_return_status := FND_API.G_RET_STS_ERROR;
1132 x_mesg_token_tbl := l_mesg_token_tbl ;
1133 return;
1134
1135 end;
1136
1137 -- end if;
1138
1139 -- Serial rebuild number not instantiated status =1
1140 -- When a work order created on non instantiated rebuild serial number is released ,its must have an parent work order
1141 -- 3659469
1142
1143 -- Serial rebuild number is required while releasing the work order if Rebuild number is serial controlled
1144 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating if rebuild_serial_number is mandatory . . . '); END IF;
1145 BEGIN
1146 IF p_eam_wo_rec.status_type = 3
1147 and p_eam_wo_rec.rebuild_item_id IS NOT NULL
1148 and p_eam_wo_rec.rebuild_serial_number IS NULL
1149 and p_eam_wo_rec.maintenance_object_source = 1 THEN -- SKIP FOR CMRO
1150
1151 select serial_number_control_code
1152 into g_dummy
1153 from mtl_system_items msi, mtl_parameters mp
1154 where msi.inventory_item_id = p_eam_wo_rec.rebuild_item_id
1155 and msi.organization_id = mp.organization_id
1156 and mp.maint_organization_id = p_eam_wo_rec.organization_id and rownum = 1;
1157
1158 if g_dummy <> 1 then
1159 raise fnd_api.g_exc_unexpected_error;
1160 end if ;
1161
1162 END IF;
1163
1164 x_return_status := FND_API.G_RET_STS_SUCCESS;
1165
1166 exception
1167 when others then
1168
1169 l_token_tbl(1).token_name := 'Work_Order_Id';
1170 l_token_tbl(1).token_value := p_eam_wo_rec.wip_entity_id;
1171
1172 l_out_mesg_token_tbl := l_mesg_token_tbl;
1173 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
1174 ( p_message_name => 'EAM_REBUILD_SER_REQD'
1175 , p_token_tbl => l_token_tbl
1176 , p_mesg_token_tbl => l_mesg_token_tbl
1177 , x_mesg_token_tbl => l_out_mesg_token_tbl
1178 );
1179 l_mesg_token_tbl := l_out_mesg_token_tbl;
1180
1181 x_return_status := FND_API.G_RET_STS_ERROR;
1182 x_mesg_token_tbl := l_mesg_token_tbl ;
1183 return;
1184
1185 end ;
1186
1187 -- parent_wip_entity_id
1188 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating parent_wip_entity_id . . . '); END IF;
1189
1190 begin
1191 /* Following validation ensures that only WO of parents of serialized
1192 rebuildables can become parent work orders of rebuild WO and any
1193 WO on asset and rebuildables can become Parent WO for non-serialized rebuilds */
1194
1195 l_rebuild_status := 0;
1196 /*Currently parent_wip_entity can only be specified for a rebuildable work order */
1197 if p_eam_wo_rec.parent_wip_entity_id is not null then
1198 IF p_eam_wo_rec.manual_rebuild_flag='Y' THEN /* Added if condition for bug no 3336489 */
1199
1200 IF ( p_eam_wo_rec.maintenance_object_type = 3 and p_eam_wo_rec.maintenance_object_source = 1)
1201 THEN
1202
1203 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating parent_wip_entity_id . rebuild status=' || l_rebuild_status); END IF;
1204
1205 SELECT 1
1206 INTO g_dummy
1207 FROM mtl_object_genealogy mog, mtl_serial_numbers msn, wip_discrete_jobs wdj,
1208 mtl_serial_numbers msn1, csi_item_instances cii, mtl_parameters mp, csi_item_instances cii1
1209 WHERE p_eam_wo_rec.rebuild_item_id is not null
1210 and cii.instance_id = p_eam_wo_rec.maintenance_object_id
1211 and cii.last_vld_organization_id = mp.organization_id
1212 and mp.maint_organization_id = p_eam_wo_rec.organization_id
1213 and nvl(cii.network_asset_flag,'N') = 'N'
1214 and msn.current_organization_id = cii.last_vld_organization_id
1215 and msn.serial_number = cii.serial_number
1216 and msn.inventory_item_id = cii.inventory_item_id
1217 and mog.object_id = msn.gen_object_id
1218 and mog.parent_object_id = msn1.gen_object_id
1219 and msn1.current_organization_id = mp.organization_id
1220 and cii1.serial_number = msn1.serial_number
1221 and cii1.inventory_item_id = msn1.inventory_item_id
1222 and cii1.last_vld_organization_id = msn1.current_organization_id
1223 and cii1.instance_id = wdj.maintenance_object_id
1224 and wdj.maintenance_object_type=3
1225 and wdj.status_type not in (5,12,14)
1226 and wdj.wip_entity_id = p_eam_wo_rec.parent_wip_entity_id
1227 and wdj.organization_id = p_eam_wo_rec.organization_id
1228 and mog.genealogy_type = 5
1229 and nvl(mog.start_date_active,sysdate) <= sysdate
1230 and nvl(mog.end_date_active,sysdate+1) > sysdate ;
1231
1232 ELSE
1233 SELECT 1 INTO
1234 g_dummy
1235 FROM wip_discrete_jobs
1236 WHERE
1237 p_eam_wo_rec.rebuild_item_id is not null
1238 and organization_id = p_eam_wo_rec.organization_id
1239 and wip_entity_id = p_eam_wo_rec.parent_wip_entity_id
1240 and status_type not in (5,12,14);
1241 END IF;
1242 END IF;
1243 end if;
1244
1245 x_return_status := FND_API.G_RET_STS_SUCCESS;
1246
1247 exception
1248 when others then
1249
1250 l_token_tbl(1).token_name := 'Parent Wip Entity Id';
1251 l_token_tbl(1).token_value := p_eam_wo_rec.parent_wip_entity_id;
1252
1253 l_out_mesg_token_tbl := l_mesg_token_tbl;
1254 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
1255 ( p_message_name => 'EAM_WO_PARENT_WIP_ENTITY_ID'
1256 , p_token_tbl => l_token_tbl
1257 , p_mesg_token_tbl => l_mesg_token_tbl
1258 , x_mesg_token_tbl => l_out_mesg_token_tbl
1259 );
1260 l_mesg_token_tbl := l_out_mesg_token_tbl;
1261
1262 x_return_status := FND_API.G_RET_STS_ERROR;
1263 x_mesg_token_tbl := l_mesg_token_tbl ;
1264 return;
1265
1266 end;
1267
1268
1269 /* While updating parent_wip_entity_id check for any transactions posted on the work order */
1270
1271 begin
1272
1273 IF ( p_eam_wo_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_UPDATE
1274 AND p_old_eam_wo_rec.parent_wip_entity_id <> p_eam_wo_rec.parent_wip_entity_id )
1275 THEN
1276 EAM_WORKORDER_UTIL_PKG.CK_MATERIAL_ALLOC_ON_HOLD(X_Org_Id => p_eam_wo_rec.organization_id,
1277 X_Wip_Id => p_eam_wo_rec.wip_entity_id,
1278 X_Rep_Id => -1,
1279 X_Line_Id => -1,
1280 X_Ent_Type=> 6,
1281 X_Return_Status=>l_trans_exist);
1282
1283 IF(l_trans_exist='F') THEN
1284 raise fnd_api.g_exc_unexpected_error;
1285 END IF;
1286 END IF;
1287
1288 x_return_status := FND_API.G_RET_STS_SUCCESS;
1289
1290 exception
1291 when others then
1292
1293 l_token_tbl(1).token_name := 'Wip Entity Id';
1294 l_token_tbl(1).token_value := p_eam_wo_rec.wip_entity_id;
1295
1296 l_out_mesg_token_tbl := l_mesg_token_tbl;
1297 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
1298 ( p_message_name => 'EAM_WO_TRANSACTIONS_EXIST'
1299 , p_token_tbl => l_token_tbl
1300 , p_mesg_token_tbl => l_mesg_token_tbl
1301 , x_mesg_token_tbl => l_out_mesg_token_tbl
1302 );
1303 l_mesg_token_tbl := l_out_mesg_token_tbl;
1304
1305 x_return_status := FND_API.G_RET_STS_ERROR;
1306 x_mesg_token_tbl := l_mesg_token_tbl ;
1307 return;
1308
1309 end;
1310
1311
1312
1313
1314 -- job_name
1315 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating wip_entity_name . . . '); END IF;
1316
1317 declare
1318 l_count NUMBER;
1319 begin
1320
1321 if (p_eam_wo_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_CREATE) then
1322
1323 select count(*)
1324 into l_count
1325 from wip_entities
1326 where wip_entity_name = p_eam_wo_rec.wip_entity_name
1327 and organization_id = p_eam_wo_rec.organization_id;
1328
1329 if(l_count > 0) then
1330 raise fnd_api.g_exc_unexpected_error;
1331 end if;
1332
1333 end if;
1334
1335 x_return_status := FND_API.G_RET_STS_SUCCESS;
1336
1337 exception
1338 when fnd_api.g_exc_unexpected_error then
1339
1340 l_token_tbl(1).token_name := 'Wip Entity Name';
1341 l_token_tbl(1).token_value := p_eam_wo_rec.wip_entity_name;
1342
1343 l_out_mesg_token_tbl := l_mesg_token_tbl;
1344 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
1345 ( p_message_name => 'EAM_WO_WIP_ENTITY_NAME'
1346 , p_token_tbl => l_token_tbl
1347 , p_mesg_token_tbl => l_mesg_token_tbl
1348 , x_mesg_token_tbl => l_out_mesg_token_tbl
1349 );
1350 l_mesg_token_tbl := l_out_mesg_token_tbl;
1351
1352 x_return_status := FND_API.G_RET_STS_ERROR;
1353 x_mesg_token_tbl := l_mesg_token_tbl ;
1354 return;
1355
1356 end;
1357
1358
1359 -- job_id
1360 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating wip_entity_id . . . '); END IF;
1361
1362 declare
1363 l_count NUMBER;
1364 begin
1365
1366 if (p_eam_wo_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_CREATE) then
1367
1368 select count(*)
1369 into l_count
1370 from wip_entities
1371 where wip_entity_id = p_eam_wo_rec.wip_entity_id;
1372
1373 if(l_count > 0) then
1374 raise fnd_api.g_exc_unexpected_error;
1375 end if;
1376 end if;
1377
1378 x_return_status := FND_API.G_RET_STS_SUCCESS;
1379
1380 exception
1381 when fnd_api.g_exc_unexpected_error then
1382
1383 l_token_tbl(1).token_name := 'Wip Entity Id';
1384 l_token_tbl(1).token_value := p_eam_wo_rec.wip_entity_id;
1385
1386 l_out_mesg_token_tbl := l_mesg_token_tbl;
1387 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
1388 ( p_message_name => 'EAM_WO_WIP_ENTITY_ID'
1389 , p_token_tbl => l_token_tbl
1390 , p_mesg_token_tbl => l_mesg_token_tbl
1391 , x_mesg_token_tbl => l_out_mesg_token_tbl
1392 );
1393 l_mesg_token_tbl := l_out_mesg_token_tbl;
1394
1395 x_return_status := FND_API.G_RET_STS_ERROR;
1396 x_mesg_token_tbl := l_mesg_token_tbl ;
1397 return;
1398
1399 end;
1400
1401
1402 -- firm_planned_flag
1403 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating firm_planned_flag . . . '); END IF;
1404
1405 begin
1406
1407 if p_eam_wo_rec.firm_planned_flag not in (wip_constants.yes, wip_constants.no) then
1408
1409 raise fnd_api.g_exc_unexpected_error;
1410
1411 end if;
1412
1413 x_return_status := FND_API.G_RET_STS_SUCCESS;
1414
1415 exception
1416 when fnd_api.g_exc_unexpected_error then
1417
1418 l_token_tbl(1).token_name := 'Firm Planned Flag';
1419 l_token_tbl(1).token_value := p_eam_wo_rec.firm_planned_flag;
1420
1421 l_out_mesg_token_tbl := l_mesg_token_tbl;
1422 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
1423 ( p_message_name => 'EAM_WO_FIRM_PLANNED_FLAG'
1424 , p_token_tbl => l_token_tbl
1425 , p_mesg_token_tbl => l_mesg_token_tbl
1426 , x_mesg_token_tbl => l_out_mesg_token_tbl
1427 );
1428 l_mesg_token_tbl := l_out_mesg_token_tbl;
1429
1430 x_return_status := FND_API.G_RET_STS_ERROR;
1431 x_mesg_token_tbl := l_mesg_token_tbl ;
1432 return;
1433
1434 end;
1435
1436
1437
1438 -- issue_zero_cost_flag
1439 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating wip_entity_name . . . '); END IF;
1440
1441 declare
1442 l_count NUMBER;
1443 begin
1444
1445 if upper(p_eam_wo_rec.issue_zero_cost_flag) not in ('Y','N') then
1446
1447 raise fnd_api.g_exc_unexpected_error;
1448
1449 end if;
1450
1451 x_return_status := FND_API.G_RET_STS_SUCCESS;
1452
1453 exception
1454 when fnd_api.g_exc_unexpected_error then
1455
1456 l_token_tbl(1).token_name := 'ISSUE_ZERO_FLAG';
1457 l_token_tbl(1).token_value := p_eam_wo_rec.issue_zero_cost_flag;
1458
1459 l_out_mesg_token_tbl := l_mesg_token_tbl;
1460 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
1461 ( p_message_name => 'EAM_WO_ISSUE_ZERO_COST_FLAG'
1462 , p_token_tbl => l_token_tbl
1463 , p_mesg_token_tbl => l_mesg_token_tbl
1464 , x_mesg_token_tbl => l_out_mesg_token_tbl
1465 );
1466 l_mesg_token_tbl := l_out_mesg_token_tbl;
1467
1468 x_return_status := FND_API.G_RET_STS_ERROR;
1469 x_mesg_token_tbl := l_mesg_token_tbl ;
1470 return;
1471
1472 end;
1473
1474
1475
1476 -- schedule_group_id
1477 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating schedule_group_id . . . '); END IF;
1478 begin
1479
1480 if p_eam_wo_rec.schedule_group_id is not null then
1481
1482 select 1
1483 into g_dummy
1484 from wip_schedule_groups_val_v
1485 where schedule_group_id = p_eam_wo_rec.schedule_group_id
1486 and organization_id = p_eam_wo_rec.organization_id;
1487 end if;
1488
1489 x_return_status := FND_API.G_RET_STS_SUCCESS;
1490
1491 exception
1492 when no_data_found then
1493
1494 l_token_tbl(1).token_name := 'Schedule Group Id';
1495 l_token_tbl(1).token_value := p_eam_wo_rec.schedule_group_id;
1496
1497 l_out_mesg_token_tbl := l_mesg_token_tbl;
1498 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
1499 ( p_message_name => 'EAM_WO_SCHEDULE_GROUP'
1500 , p_token_tbl => l_token_tbl
1501 , p_mesg_token_tbl => l_mesg_token_tbl
1502 , x_mesg_token_tbl => l_out_mesg_token_tbl
1503 );
1504 l_mesg_token_tbl := l_out_mesg_token_tbl;
1505
1506 x_return_status := FND_API.G_RET_STS_ERROR;
1507 x_mesg_token_tbl := l_mesg_token_tbl ;
1508 return;
1509
1510 end;
1511
1512 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('p_eam_wo_rec.status_type ' || p_eam_wo_rec.status_type); END IF;
1513 --attribute change not allowed for comp_no_chrg,closed,pending-close,failed-close and cancelled
1514 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating attribute change for complete_no_chrg,cancelled,closed,pending-cl,failed-close statuses');END IF;
1515 --start of fix for 3389850
1516
1517 begin
1518 IF ( p_eam_wo_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_UPDATE )
1519 AND (p_eam_wo_rec.status_type IN (5,7,12,14,15)) --if status is complete-no-chrg,cancelled,closed,pending-close and failed-close
1520 AND (p_eam_wo_rec.status_type=p_old_eam_wo_rec.status_type) --status is same
1521 AND ( p_eam_wo_rec.description<>p_old_eam_wo_rec.description
1522 OR p_eam_wo_rec.asset_number<>p_old_eam_wo_rec.asset_number
1523 OR p_eam_wo_rec.asset_group_id<>p_old_eam_wo_rec.asset_group_id
1524 OR p_eam_wo_rec.rebuild_item_id<>p_old_eam_wo_rec.rebuild_item_id
1525 OR p_eam_wo_rec.rebuild_serial_number<>p_old_eam_wo_rec.rebuild_serial_number
1526 OR p_eam_wo_rec.maintenance_object_id<>p_old_eam_wo_rec.maintenance_object_id
1527 OR p_eam_wo_rec.maintenance_object_type<>p_old_eam_wo_rec.maintenance_object_type
1528 OR p_eam_wo_rec.maintenance_object_source<>p_old_eam_wo_rec.maintenance_object_source
1529 OR p_eam_wo_rec.eam_linear_location_id<>p_old_eam_wo_rec.eam_linear_location_id
1530 OR p_eam_wo_rec.notification_required<>p_old_eam_wo_rec.notification_required
1531 OR p_eam_wo_rec.class_code<>p_old_eam_wo_rec.class_code
1532 OR p_eam_wo_rec.asset_activity_id<>p_old_eam_wo_rec.asset_activity_id
1533 OR p_eam_wo_rec.activity_type<>p_old_eam_wo_rec.activity_type
1534 OR p_eam_wo_rec.activity_source<>p_old_eam_wo_rec.activity_source
1535 OR p_eam_wo_rec.activity_cause<>p_old_eam_wo_rec.activity_cause
1536 OR p_eam_wo_rec.work_order_type<>p_old_eam_wo_rec.work_order_type
1537 OR p_eam_wo_rec.status_type<>p_old_eam_wo_rec.status_type
1538 OR p_eam_wo_rec.job_quantity<>p_old_eam_wo_rec.job_quantity
1539 OR p_eam_wo_rec.date_released<>p_old_eam_wo_rec.date_released
1540 OR p_eam_wo_rec.owning_department<>p_old_eam_wo_rec.owning_department
1541 OR p_eam_wo_rec.priority<>p_old_eam_wo_rec.priority
1542 OR p_eam_wo_rec.requested_start_date<>p_old_eam_wo_rec.requested_start_date
1543 OR p_eam_wo_rec.due_date<>p_old_eam_wo_rec.due_date
1544 OR p_eam_wo_rec.shutdown_type<>p_old_eam_wo_rec.shutdown_type
1545 OR p_eam_wo_rec.firm_planned_flag<>p_old_eam_wo_rec.firm_planned_flag
1546 OR p_eam_wo_rec.tagout_required<>p_old_eam_wo_rec.tagout_required
1547 OR p_eam_wo_rec.plan_maintenance<>p_old_eam_wo_rec.plan_maintenance
1548 OR p_eam_wo_rec.project_id<>p_old_eam_wo_rec.project_id
1549 OR p_eam_wo_rec.task_id<>p_old_eam_wo_rec.task_id
1550 OR p_eam_wo_rec.end_item_unit_number<>p_old_eam_wo_rec.end_item_unit_number
1551 OR p_eam_wo_rec.schedule_group_id<>p_old_eam_wo_rec.schedule_group_id
1552 OR p_eam_wo_rec.bom_revision_date<>p_old_eam_wo_rec.bom_revision_date
1553 OR p_eam_wo_rec.routing_revision_date<>p_old_eam_wo_rec.routing_revision_date
1554 OR p_eam_wo_rec.alternate_bom_designator<>p_old_eam_wo_rec.alternate_bom_designator
1555 OR p_eam_wo_rec.alternate_routing_designator<>p_old_eam_wo_rec.alternate_routing_designator
1556 OR p_eam_wo_rec.bom_revision<>p_old_eam_wo_rec.bom_revision
1557 OR p_eam_wo_rec.routing_revision<>p_old_eam_wo_rec.routing_revision
1558 OR p_eam_wo_rec.parent_wip_entity_id<>p_old_eam_wo_rec.parent_wip_entity_id
1559 OR p_eam_wo_rec.manual_rebuild_flag<>p_old_eam_wo_rec.manual_rebuild_flag
1560 OR p_eam_wo_rec.pm_schedule_id<>p_old_eam_wo_rec.pm_schedule_id
1561 OR p_eam_wo_rec.wip_supply_type<>p_old_eam_wo_rec.wip_supply_type
1562 OR p_eam_wo_rec.material_account<>p_old_eam_wo_rec.material_account
1563 OR p_eam_wo_rec.material_overhead_account<>p_old_eam_wo_rec.material_overhead_account
1564 OR p_eam_wo_rec.resource_account<>p_old_eam_wo_rec.resource_account
1565 OR p_eam_wo_rec.outside_processing_account<>p_old_eam_wo_rec.outside_processing_account
1566 OR p_eam_wo_rec.material_variance_account<>p_old_eam_wo_rec.material_variance_account
1567 OR p_eam_wo_rec.resource_variance_account<>p_old_eam_wo_rec.resource_variance_account
1568 OR p_eam_wo_rec.outside_proc_variance_account<>p_old_eam_wo_rec.outside_proc_variance_account
1569 OR p_eam_wo_rec.std_cost_adjustment_account<>p_old_eam_wo_rec.std_cost_adjustment_account
1570 OR p_eam_wo_rec.overhead_account<>p_old_eam_wo_rec.overhead_account
1571 OR p_eam_wo_rec.overhead_variance_account<>p_old_eam_wo_rec.overhead_variance_account
1572 OR p_eam_wo_rec.scheduled_start_date<>p_old_eam_wo_rec.scheduled_start_date
1573 OR p_eam_wo_rec.scheduled_completion_date<>p_old_eam_wo_rec.scheduled_completion_date
1574 OR p_eam_wo_rec.common_bom_sequence_id<>p_old_eam_wo_rec.common_bom_sequence_id
1575 OR p_eam_wo_rec.common_routing_sequence_id<>p_old_eam_wo_rec.common_routing_sequence_id
1576 OR p_eam_wo_rec.po_creation_time<>p_old_eam_wo_rec.po_creation_time
1577 OR p_eam_wo_rec.gen_object_id<>p_old_eam_wo_rec.gen_object_id
1578 OR p_eam_wo_rec.attribute_category<>p_old_eam_wo_rec.attribute_category
1579 OR p_eam_wo_rec.attribute1<>p_old_eam_wo_rec.attribute1
1580 OR p_eam_wo_rec.attribute2<>p_old_eam_wo_rec.attribute2
1581 OR p_eam_wo_rec.attribute3<>p_old_eam_wo_rec.attribute3
1582 OR p_eam_wo_rec.attribute4<>p_old_eam_wo_rec.attribute4
1583 OR p_eam_wo_rec.attribute5<>p_old_eam_wo_rec.attribute5
1584 OR p_eam_wo_rec.attribute6<>p_old_eam_wo_rec.attribute6
1585 OR p_eam_wo_rec.attribute7<>p_old_eam_wo_rec.attribute7
1586 OR p_eam_wo_rec.attribute8<>p_old_eam_wo_rec.attribute8
1587 OR p_eam_wo_rec.attribute9<>p_old_eam_wo_rec.attribute9
1588 OR p_eam_wo_rec.attribute10<>p_old_eam_wo_rec.attribute10
1589 OR p_eam_wo_rec.attribute11<>p_old_eam_wo_rec.attribute11
1590 OR p_eam_wo_rec.attribute12<>p_old_eam_wo_rec.attribute12
1591 OR p_eam_wo_rec.attribute13<>p_old_eam_wo_rec.attribute13
1592 OR p_eam_wo_rec.attribute14<>p_old_eam_wo_rec.attribute14
1593 OR p_eam_wo_rec.attribute15<>p_old_eam_wo_rec.attribute15
1594 OR p_eam_wo_rec.material_issue_by_mo<>p_old_eam_wo_rec.material_issue_by_mo
1595 OR p_eam_wo_rec.issue_zero_cost_flag<>p_old_eam_wo_rec.issue_zero_cost_flag
1596 ) THEN
1597 raise fnd_api.g_exc_unexpected_error;
1598 END IF;
1599 exception
1600 when fnd_api.g_exc_unexpected_error then
1601 l_token_tbl(1).token_name := 'STATUS_TYPE';
1602 l_token_tbl(1).token_value := p_eam_wo_rec.status_type;
1603
1604 l_out_mesg_token_tbl := l_mesg_token_tbl;
1605 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
1606 ( p_message_name => 'EAM_WO_CH_ATTR_DISALLOWED'
1607 , p_token_tbl => l_token_tbl
1608 , p_mesg_token_tbl => l_mesg_token_tbl
1609 , x_mesg_token_tbl => l_out_mesg_token_tbl
1610 );
1611 l_mesg_token_tbl := l_out_mesg_token_tbl;
1612
1613 x_return_status := FND_API.G_RET_STS_ERROR;
1614 x_mesg_token_tbl := l_mesg_token_tbl ;
1615 return;
1616 end;
1617
1618
1619 --end of fix for 3389850
1620
1621 -- status_type
1622 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating status_type . . . '); END IF;
1623
1624 declare
1625
1626 l_count number;
1627 l_parent_status number;
1628
1629 parent_not_released exception;
1630 child_released exception;
1631 ch_rel_par_canc exception;
1632
1633 begin
1634
1635 if (p_eam_wo_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_CREATE and
1636 p_eam_wo_rec.status_type not in (wip_constants.unreleased, wip_constants.released, wip_constants.hold, wip_constants.draft)) then
1637
1638 raise fnd_api.g_exc_unexpected_error;
1639
1640 elsif (p_eam_wo_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_UPDATE) then
1641 if(p_eam_wo_rec.status_type not in (wip_constants.unreleased, wip_constants.released, wip_constants.comp_chrg,wip_constants.comp_nochrg, wip_constants.closed,
1642 wip_constants.hold, wip_constants.cancelled, wip_constants.pend_sched, wip_constants.draft)
1643 OR ( p_eam_wo_rec.status_type in (wip_constants.draft) and p_old_eam_wo_rec.status_type not in (wip_constants.draft))
1644 /* Added the check so that status will not be updated to status Draft */
1645 --fix for 3389850.cannot change status from complete_no_charges to any status other than complete,closed.cannot change to complete_no_charges from status other than
1646 --complete
1647 OR (p_old_eam_wo_rec.status_type=wip_constants.comp_nochrg AND p_eam_wo_rec.status_type NOT IN (wip_constants.comp_chrg,wip_constants.closed,wip_constants.comp_nochrg) )
1648 /* Bug 3431204 - Should be able to link a Complete No charges WO to another
1649 Complete NO Charges WO */
1650 OR (p_eam_wo_rec.status_type=wip_constants.comp_nochrg
1651 AND p_old_eam_wo_rec.status_type NOT IN
1652 (wip_constants.comp_chrg, wip_constants.comp_nochrg,wip_constants.closed,wip_constants.fail_close))) then
1653
1654 raise fnd_api.g_exc_unexpected_error;
1655
1656 end if;
1657
1658 end if;
1659
1660
1661 x_return_status := FND_API.G_RET_STS_SUCCESS;
1662
1663 exception
1664
1665 when fnd_api.g_exc_unexpected_error then
1666
1667 l_token_tbl(1).token_name := 'Status type';
1668 l_token_tbl(1).token_value := p_eam_wo_rec.status_type;
1669
1670 l_out_mesg_token_tbl := l_mesg_token_tbl;
1671 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
1672 ( p_message_name => 'EAM_WO_STATUS_TYPE'
1673 , p_token_tbl => l_token_tbl
1674 , p_mesg_token_tbl => l_mesg_token_tbl
1675 , x_mesg_token_tbl => l_out_mesg_token_tbl
1676 );
1677 l_mesg_token_tbl := l_out_mesg_token_tbl;
1678
1679 x_return_status := FND_API.G_RET_STS_ERROR;
1680 x_mesg_token_tbl := l_mesg_token_tbl ;
1681 return;
1682
1683 end;
1684
1685
1686 -- job_quantity
1687 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating job_quantity . . . '); END IF;
1688
1689 begin
1690
1691 if(p_eam_wo_rec.job_quantity <> 1) then
1692 raise fnd_api.g_exc_unexpected_error;
1693 end if;
1694
1695 x_return_status := FND_API.G_RET_STS_SUCCESS;
1696
1697 exception
1698 when fnd_api.g_exc_unexpected_error then
1699
1700 l_token_tbl(1).token_name := 'Job Quantity';
1701 l_token_tbl(1).token_value := p_eam_wo_rec.job_quantity;
1702
1703 l_out_mesg_token_tbl := l_mesg_token_tbl;
1704 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
1705 ( p_message_name => 'EAM_WO_JOB_QUANTITY'
1706 , p_token_tbl => l_token_tbl
1707 , p_mesg_token_tbl => l_mesg_token_tbl
1708 , x_mesg_token_tbl => l_out_mesg_token_tbl
1709 );
1710 l_mesg_token_tbl := l_out_mesg_token_tbl;
1711
1712 x_return_status := FND_API.G_RET_STS_ERROR;
1713 x_mesg_token_tbl := l_mesg_token_tbl ;
1714 return;
1715
1716 end;
1717
1718
1719 -- primary_item_id (asset activity)
1720 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating asset_activity_id . . . '); END IF;
1721
1722 declare
1723 l_eam_op_tbl EAM_PROCESS_WO_PUB.EAM_OP_TBL_TYPE;
1724 l_mat_req_exists number;
1725 l_serial_number_control NUMBER := 0;
1726 l_count NUMBER := 0;
1727
1728 ACTIVITY_WO_EXISTS EXCEPTION;
1729 begin
1730 -- # 3436679 code added to prevent the defaulting of the asset activity if user removes it while updating work order
1731 if p_eam_wo_rec.asset_activity_id is not null and p_eam_wo_rec.asset_activity_id <> FND_API.G_MISS_NUM then
1732
1733 select 1
1734 into g_dummy
1735 from mtl_system_items
1736 where organization_id = p_eam_wo_rec.organization_id
1737 and inventory_item_id = p_eam_wo_rec.asset_activity_id
1738 and eam_item_type = 2;
1739
1740 -- asset activity should not allowed to be updated if the wo has any ops or mat reqs.
1741 select count(*) into l_mat_req_exists from wip_requirement_operations
1742 where wip_entity_id = p_eam_wo_rec.wip_entity_id
1743 and organization_id = p_eam_wo_rec.organization_id;
1744
1745 if nvl(p_eam_wo_rec.asset_activity_id,-99999) <> nvl(p_old_eam_wo_rec.asset_activity_id,-99999)
1746 and p_eam_wo_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_UPDATE
1747 and (EAM_OP_UTILITY_PVT.NUM_OF_ROW(
1748 p_eam_op_tbl => l_eam_op_tbl
1749 ,p_wip_entity_id => p_eam_wo_rec.wip_entity_id
1750 ,p_organization_id => p_eam_wo_rec.organization_id) = false
1751 or l_mat_req_exists <> 0) then
1752 raise fnd_api.g_exc_unexpected_error;
1753 end if;
1754
1755
1756 end if;
1757
1758 x_return_status := FND_API.G_RET_STS_SUCCESS;
1759
1760 exception
1761 when fnd_api.g_exc_unexpected_error then
1762
1763 l_out_mesg_token_tbl := l_mesg_token_tbl;
1764 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
1765 ( p_message_name => 'EAM_CANT_UPDATE_ACTIVITY'
1766 , p_token_tbl => l_token_tbl
1767 , p_mesg_token_tbl => l_mesg_token_tbl
1768 , x_mesg_token_tbl => l_out_mesg_token_tbl
1769 );
1770 l_mesg_token_tbl := l_out_mesg_token_tbl;
1771
1772 x_return_status := FND_API.G_RET_STS_ERROR;
1773 x_mesg_token_tbl := l_mesg_token_tbl ;
1774 return;
1775
1776 when ACTIVITY_WO_EXISTS then
1777
1778 l_out_mesg_token_tbl := l_mesg_token_tbl;
1779 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
1780 ( p_message_name => 'EAM_ACTIVITY_WO_EXISTS'
1781 , p_token_tbl => l_token_tbl
1782 , p_mesg_token_tbl => l_mesg_token_tbl
1783 , x_mesg_token_tbl => l_out_mesg_token_tbl
1784 );
1785 l_mesg_token_tbl := l_out_mesg_token_tbl;
1786
1787 x_return_status := FND_API.G_RET_STS_ERROR;
1788 x_mesg_token_tbl := l_mesg_token_tbl ;
1789 return;
1790
1791 when others then
1792
1793 l_token_tbl(1).token_name := 'Asset Activity Id';
1794 l_token_tbl(1).token_value := p_eam_wo_rec.asset_activity_id;
1795
1796 l_out_mesg_token_tbl := l_mesg_token_tbl;
1797 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
1798 ( p_message_name => 'EAM_WO_ASSET_ACTIVITY'
1799 , p_token_tbl => l_token_tbl
1800 , p_mesg_token_tbl => l_mesg_token_tbl
1801 , x_mesg_token_tbl => l_out_mesg_token_tbl
1802 );
1803 l_mesg_token_tbl := l_out_mesg_token_tbl;
1804
1805 x_return_status := FND_API.G_RET_STS_ERROR;
1806 x_mesg_token_tbl := l_mesg_token_tbl ;
1807 return;
1808
1809 end;
1810
1811
1812
1813 -- asset activity association
1814
1815 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating asset_activity_association . . . '); END IF;
1816
1817 declare
1818 l_start_date DATE;
1819 l_end_date DATE;
1820
1821 begin
1822 -- # 3436679 code added to prevent the defaulting of the asset activity if user removes it while updating work order
1823 if (p_eam_wo_rec.asset_activity_id is not null and p_eam_wo_rec.asset_activity_id <> FND_API.G_MISS_NUM and p_eam_wo_rec.maintenance_object_source = 1) then
1824
1825 if (p_eam_wo_rec.maintenance_object_type = 3) then
1826
1827 select meaa.start_date_active, meaa.end_date_active
1828 into l_start_date, l_end_date
1829 from mtl_eam_asset_activities meaa, mtl_system_items msi
1830 where meaa.asset_activity_id = p_eam_wo_rec.asset_activity_id
1831 and meaa.maintenance_object_type = 3
1832 and nvl(meaa.tmpl_flag, 'N') = 'N'
1833 and meaa.maintenance_object_id = p_eam_wo_rec.maintenance_object_id
1834 and msi.inventory_item_id = p_eam_wo_rec.asset_activity_id
1835 and msi.organization_id = p_eam_wo_rec.organization_id;
1836
1837 else
1838
1839 if (p_eam_wo_rec.maintenance_object_type = 2) then
1840
1841 select min(meaa.start_date_active), min(meaa.end_date_active)
1842 into l_start_date, l_end_date
1843 from mtl_eam_asset_activities meaa,mtl_system_items msi
1844 where meaa.asset_activity_id = p_eam_wo_rec.asset_activity_id
1845 and meaa.maintenance_object_type = 2
1846 and meaa.maintenance_object_id = p_eam_wo_rec.maintenance_object_id
1847 and msi.organization_id = p_eam_wo_rec.organization_id
1848 and msi.inventory_item_id = p_eam_wo_rec.asset_activity_id
1849 and nvl(meaa.tmpl_flag, 'N') = 'N';
1850 end if;
1851
1852 end if;
1853
1854 if(l_start_date is not null and
1855 l_start_date > nvl(p_eam_wo_rec.requested_start_date, p_eam_wo_rec.due_date)) then
1856 raise l_wo_asset_activity_err;
1857 end if;
1858
1859 if(l_end_date is not null and
1860 l_end_date < nvl(p_eam_wo_rec.due_date, p_eam_wo_rec.requested_start_date)) then
1861 raise l_wo_asset_activity_err;
1862 end if;
1863
1864 end if;
1865
1866 x_return_status := FND_API.G_RET_STS_SUCCESS;
1867
1868 exception
1869 WHEN l_wo_asset_activity_err THEN
1870
1871 l_out_mesg_token_tbl := l_mesg_token_tbl;
1872 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
1873 ( p_message_name => 'EAM_WO_ASSET_ACTIVITY_DATES'
1874 , p_token_tbl => l_token_tbl
1875 , p_mesg_token_tbl => l_mesg_token_tbl
1876 , x_mesg_token_tbl => l_out_mesg_token_tbl
1877 );
1878 l_mesg_token_tbl := l_out_mesg_token_tbl;
1879
1880 x_return_status := FND_API.G_RET_STS_ERROR;
1881 x_mesg_token_tbl := l_mesg_token_tbl ;
1882 return;
1883
1884 when others then
1885
1886 l_token_tbl(1).token_name := 'Asset Activity Id';
1887 l_token_tbl(1).token_value := p_eam_wo_rec.asset_activity_id;
1888
1889 l_out_mesg_token_tbl := l_mesg_token_tbl;
1890 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
1891 ( p_message_name => 'EAM_WO_ASSET_ACTIVITY_ASSOC'
1892 , p_token_tbl => l_token_tbl
1893 , p_mesg_token_tbl => l_mesg_token_tbl
1894 , x_mesg_token_tbl => l_out_mesg_token_tbl
1895 );
1896 l_mesg_token_tbl := l_out_mesg_token_tbl;
1897
1898 x_return_status := FND_API.G_RET_STS_ERROR;
1899 x_mesg_token_tbl := l_mesg_token_tbl ;
1900 return;
1901
1902 end;
1903
1904
1905 -- wip_supply_type
1906 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating wip_supply_type . . . '); END IF;
1907
1908 begin
1909
1910 if(p_eam_wo_rec.wip_supply_type is not null and p_eam_wo_rec.wip_supply_type not in (wip_constants.push, wip_constants.bulk, wip_constants.based_on_bom)) then
1911 --not a valid supply type
1912
1913 raise fnd_api.g_exc_unexpected_error;
1914
1915 end if;
1916
1917 x_return_status := FND_API.G_RET_STS_SUCCESS;
1918
1919 exception
1920 when fnd_api.g_exc_unexpected_error then
1921
1922 l_token_tbl(1).token_name := 'Wip Supply Type';
1923 l_token_tbl(1).token_value := p_eam_wo_rec.wip_supply_type;
1924
1925 l_out_mesg_token_tbl := l_mesg_token_tbl;
1926 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
1927 ( p_message_name => 'EAM_WO_WIP_SUPPLY_TYPE'
1928 , p_token_tbl => l_token_tbl
1929 , p_mesg_token_tbl => l_mesg_token_tbl
1930 , x_mesg_token_tbl => l_out_mesg_token_tbl
1931 );
1932 l_mesg_token_tbl := l_out_mesg_token_tbl;
1933
1934 x_return_status := FND_API.G_RET_STS_ERROR;
1935 x_mesg_token_tbl := l_mesg_token_tbl ;
1936 return;
1937
1938 end;
1939
1940
1941 -- alternate_routing_designator
1942 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating alternate_routing_designator . . . '); END IF;
1943
1944 begin
1945
1946 if p_eam_wo_rec.alternate_routing_designator is not null then
1947
1948 select 1
1949 into g_dummy
1950 from bom_routing_alternates_v
1951 where assembly_item_id = p_eam_wo_rec.asset_activity_id
1952 and alternate_routing_designator = p_eam_wo_rec.alternate_routing_designator
1953 and organization_id = p_eam_wo_rec.organization_id
1954 and routing_type = 1;
1955
1956 end if;
1957
1958 x_return_status := FND_API.G_RET_STS_SUCCESS;
1959
1960 exception
1961 when no_data_found then
1962
1963 l_token_tbl(1).token_name := 'Alternate Routing Designator';
1964 l_token_tbl(1).token_value := p_eam_wo_rec.alternate_routing_designator;
1965
1966 l_out_mesg_token_tbl := l_mesg_token_tbl;
1967 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
1968 ( p_message_name => 'EAM_WO_ALTERNATE_ROUTING'
1969 , p_token_tbl => l_token_tbl
1970 , p_mesg_token_tbl => l_mesg_token_tbl
1971 , x_mesg_token_tbl => l_out_mesg_token_tbl
1972 );
1973 l_mesg_token_tbl := l_out_mesg_token_tbl;
1974
1975 x_return_status := FND_API.G_RET_STS_ERROR;
1976 x_mesg_token_tbl := l_mesg_token_tbl ;
1977 return;
1978
1979 end;
1980
1981 -- alternate_bom_designator
1982 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating alternate_bom_designator . . . '); END IF;
1983
1984 begin
1985
1986 if p_eam_wo_rec.alternate_bom_designator is not null then
1987
1988 select 1
1989 into g_dummy
1990 from bom_bill_alternates_v
1991 where assembly_item_id = p_eam_wo_rec.asset_activity_id
1992 and alternate_bom_designator = p_eam_wo_rec.alternate_bom_designator
1993 and organization_id = p_eam_wo_rec.organization_id
1994 and assembly_type = 1;
1995
1996 end if;
1997
1998 x_return_status := FND_API.G_RET_STS_SUCCESS;
1999
2000 exception
2001 when no_data_found then
2002
2003 l_token_tbl(1).token_name := 'Alternate BOM Designator';
2004 l_token_tbl(1).token_value := p_eam_wo_rec.alternate_bom_designator;
2005
2006 l_out_mesg_token_tbl := l_mesg_token_tbl;
2007 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
2008 ( p_message_name => 'EAM_WO_ALTERNATE_BOM'
2009 , p_token_tbl => l_token_tbl
2010 , p_mesg_token_tbl => l_mesg_token_tbl
2011 , x_mesg_token_tbl => l_out_mesg_token_tbl
2012 );
2013 l_mesg_token_tbl := l_out_mesg_token_tbl;
2014
2015 x_return_status := FND_API.G_RET_STS_ERROR;
2016 x_mesg_token_tbl := l_mesg_token_tbl ;
2017 return;
2018
2019 end;
2020
2021 -- project_id
2022 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating project_id . . . '); END IF;
2023
2024 declare
2025
2026 l_min_date DATE;
2027
2028 begin
2029
2030 IF p_eam_wo_rec.scheduled_start_date >= sysdate THEN
2031 l_min_date := sysdate;
2032 ELSE
2033 l_min_date := p_eam_wo_rec.scheduled_start_date;
2034 END IF;
2035
2036 IF ((p_eam_wo_rec.project_id IS NOT NULL AND p_old_eam_wo_rec.project_id is null) OR
2037 (p_eam_wo_rec.project_id <> p_old_eam_wo_rec.project_id) OR
2038 (p_eam_wo_rec.status_type = 3 and p_old_eam_wo_rec.status_type in (17,1,6)
2039 and p_eam_wo_rec.project_id is not null
2040 ))
2041 THEN
2042 SELECT distinct mpv.project_id --this query will return multiple rows if the project has tasks
2043 INTO g_dummy
2044 FROM mtl_project_v mpv, pjm_project_parameters_v ppp, mtl_parameters mp
2045 WHERE mpv.project_id = ppp.project_id
2046 AND mpv.project_id = p_eam_wo_rec.project_id
2047 AND ppp.organization_id = p_eam_wo_rec.organization_id
2048 AND ppp.organization_id = mp.organization_id
2049 AND nvl(mp.project_reference_enabled, 2) = wip_constants.yes
2050 /* Commented for bug#5346213 Start
2051 AND (mpv.completion_date IS NULL OR mpv.completion_date >= l_min_date)
2052 AND (ppp.end_date_active IS NULL OR ppp.end_date_active >= l_min_date);
2053 Commented for bug#5346213 End */
2054 /* Added for bug#5346213 Start */
2055 AND (mpv.completion_date IS NULL OR trunc(mpv.completion_date) >= trunc(l_min_date))
2056 AND (ppp.end_date_active IS NULL OR trunc(ppp.end_date_active) >= trunc(l_min_date));
2057 /* Added for bug#5346213 End */
2058
2059 END IF;
2060 x_return_status := FND_API.G_RET_STS_SUCCESS;
2061
2062 exception
2063 when no_data_found then
2064
2065 l_token_tbl(1).token_name := 'Project Id';
2066 l_token_tbl(1).token_value := p_eam_wo_rec.project_id;
2067
2068 l_out_mesg_token_tbl := l_mesg_token_tbl;
2069 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
2070 ( p_message_name => 'EAM_WO_PROJECT_ID'
2071 , p_token_tbl => l_token_tbl
2072 , p_mesg_token_tbl => l_mesg_token_tbl
2073 , x_mesg_token_tbl => l_out_mesg_token_tbl
2074 );
2075 l_mesg_token_tbl := l_out_mesg_token_tbl;
2076
2077 x_return_status := FND_API.G_RET_STS_ERROR;
2078 x_mesg_token_tbl := l_mesg_token_tbl ;
2079 return;
2080
2081 end;
2082
2083
2084 -- task_id
2085 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating task_id . . . '); END IF;
2086
2087 declare
2088
2089 l_min_date DATE;
2090
2091 begin
2092 IF (p_eam_wo_rec.task_id IS NOT NULL) THEN
2093 SELECT 1
2094 INTO g_dummy
2095 FROM pjm_tasks_v
2096 WHERE project_id = p_eam_wo_rec.project_id
2097 AND task_id = p_eam_wo_rec.task_id;
2098
2099 IF p_eam_wo_rec.scheduled_start_date >= sysdate THEN
2100 l_min_date := sysdate;
2101 ELSE
2102 l_min_date := p_eam_wo_rec.scheduled_start_date;
2103 END IF;
2104
2105 /* IF p_eam_wo_rec.status_type = 3 and p_old_eam_wo_rec.status_type in (17,1,6) THEN Commented for bug#5346213 */
2106 /* Added for bug#5346213 Start */
2107 IF p_eam_wo_rec.status_type = 3 and ( p_old_eam_wo_rec.status_type in (17,1,6) OR p_old_eam_wo_rec.status_type IS NULL ) THEN
2108 /* Added for bug#5346213 End */
2109 SELECT 1
2110 INTO g_dummy
2111 FROM pjm_tasks_v
2112 WHERE project_id = p_eam_wo_rec.project_id
2113 AND task_id = p_eam_wo_rec.task_id
2114 /* AND (completion_date IS NULL OR completion_date >= l_min_date); Commented for bug#5346213 */
2115 AND (completion_date IS NULL OR trunc(completion_date) >= trunc(l_min_date)); /* Added for bug#5346213 */
2116
2117 END IF;
2118
2119 END IF;
2120 x_return_status := FND_API.G_RET_STS_SUCCESS;
2121
2122 exception
2123 when no_data_found then
2124
2125 l_token_tbl(1).token_name := 'Task Id';
2126 l_token_tbl(1).token_value := p_eam_wo_rec.task_id;
2127
2128 l_out_mesg_token_tbl := l_mesg_token_tbl;
2129 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
2130 ( p_message_name => 'EAM_WO_TASK_ID'
2131 , p_token_tbl => l_token_tbl
2132 , p_mesg_token_tbl => l_mesg_token_tbl
2133 , x_mesg_token_tbl => l_out_mesg_token_tbl
2134 );
2135 l_mesg_token_tbl := l_out_mesg_token_tbl;
2136
2137 x_return_status := FND_API.G_RET_STS_ERROR;
2138 x_mesg_token_tbl := l_mesg_token_tbl ;
2139 return;
2140
2141 end;
2142
2143
2144
2145 -- schedule_dates 0
2146
2147 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating PM Suggested dates . . . '); END IF;
2148
2149 begin
2150
2151 if p_eam_wo_rec.pm_suggested_start_date is not null and
2152 p_eam_wo_rec.pm_suggested_end_date is not null then
2153
2154 raise fnd_api.g_exc_unexpected_error;
2155
2156 end if;
2157
2158 x_return_status := FND_API.G_RET_STS_SUCCESS;
2159
2160 exception
2161 when fnd_api.g_exc_unexpected_error then
2162
2163 l_token_tbl(1).token_name := 'Wip Entity Name';
2164 l_token_tbl(1).token_value := p_eam_wo_rec.wip_entity_name;
2165
2166 l_out_mesg_token_tbl := l_mesg_token_tbl;
2167 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
2168 ( p_message_name => 'EAM_WO_TOO_MANY_PM_DATE'
2169 , p_token_tbl => l_token_tbl
2170 , p_mesg_token_tbl => l_mesg_token_tbl
2171 , x_mesg_token_tbl => l_out_mesg_token_tbl
2172 );
2173 l_mesg_token_tbl := l_out_mesg_token_tbl;
2174
2175 x_return_status := FND_API.G_RET_STS_ERROR;
2176 x_mesg_token_tbl := l_mesg_token_tbl ;
2177 return;
2178
2179 end;
2180
2181
2182 -- schedule_dates 1
2183
2184 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating due_date, requested_start_date . . . '); END IF;
2185
2186 begin
2187
2188 if p_eam_wo_rec.due_date is not null and
2189 p_eam_wo_rec.requested_start_date is not null then
2190
2191 raise fnd_api.g_exc_unexpected_error;
2192
2193 end if;
2194
2195 x_return_status := FND_API.G_RET_STS_SUCCESS;
2196
2197 exception
2198 when fnd_api.g_exc_unexpected_error then
2199
2200 l_token_tbl(1).token_name := 'Wip Entity Name';
2201 l_token_tbl(1).token_value := p_eam_wo_rec.wip_entity_name;
2202
2203 l_out_mesg_token_tbl := l_mesg_token_tbl;
2204 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
2205 ( p_message_name => 'EAM_WO_TOO_MANY_DATE'
2206 , p_token_tbl => l_token_tbl
2207 , p_mesg_token_tbl => l_mesg_token_tbl
2208 , x_mesg_token_tbl => l_out_mesg_token_tbl
2209 );
2210 l_mesg_token_tbl := l_out_mesg_token_tbl;
2211
2212 x_return_status := FND_API.G_RET_STS_ERROR;
2213 x_mesg_token_tbl := l_mesg_token_tbl ;
2214 return;
2215
2216 end;
2217
2218
2219 -- schedule_dates 2
2220
2221 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating due_date, requested_start_date . . . '); END IF;
2222
2223 begin
2224
2225 if p_eam_wo_rec.due_date is null and
2226 p_eam_wo_rec.requested_start_date is null then
2227
2228 raise fnd_api.g_exc_unexpected_error;
2229
2230 end if;
2231
2232 x_return_status := FND_API.G_RET_STS_SUCCESS;
2233
2234 exception
2235 when fnd_api.g_exc_unexpected_error then
2236
2237 l_token_tbl(1).token_name := 'Wip Entity Name';
2238 l_token_tbl(1).token_value := p_eam_wo_rec.wip_entity_name;
2239
2240 l_out_mesg_token_tbl := l_mesg_token_tbl;
2241 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
2242 ( p_message_name => 'EAM_WO_NEED_DATE'
2243 , p_token_tbl => l_token_tbl
2244 , p_mesg_token_tbl => l_mesg_token_tbl
2245 , x_mesg_token_tbl => l_out_mesg_token_tbl
2246 );
2247 l_mesg_token_tbl := l_out_mesg_token_tbl;
2248
2249 x_return_status := FND_API.G_RET_STS_ERROR;
2250 x_mesg_token_tbl := l_mesg_token_tbl ;
2251 return;
2252
2253 end;
2254
2255
2256 -- schedule_dates 3
2257 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating schedule_dates . . . '); END IF;
2258
2259 declare
2260 l_rtg_count NUMBER;
2261 l_date_count NUMBER := 0;
2262 begin
2263
2264 if p_eam_wo_rec.requested_start_date is not null then
2265 l_date_count := l_date_count + 1;
2266 end if;
2267
2268 if p_eam_wo_rec.due_date is not null then
2269 l_date_count := l_date_count + 1;
2270 end if;
2271
2272 if (p_eam_wo_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_CREATE and l_date_count = 0) then
2273 --all job creations must have at least one date
2274 raise fnd_api.g_exc_unexpected_error;
2275 end if;
2276
2277 if p_eam_wo_rec.requested_start_date is not null then
2278
2279 select 1
2280 into g_dummy
2281 from bom_calendar_dates bcd, mtl_parameters mp
2282 where mp.organization_id = p_eam_wo_rec.organization_id
2283 and mp.calendar_code = bcd.calendar_code
2284 and mp.calendar_exception_set_id = bcd.exception_set_id
2285 and bcd.calendar_date = trunc(p_eam_wo_rec.requested_start_date);
2286 end if;
2287
2288 if p_eam_wo_rec.due_date is not null then
2289 select 1
2290 into g_dummy
2291 from bom_calendar_dates bcd, mtl_parameters mp
2292 where mp.organization_id = p_eam_wo_rec.organization_id
2293 and mp.calendar_code = bcd.calendar_code
2294 and mp.calendar_exception_set_id = bcd.exception_set_id
2295 and bcd.calendar_date = trunc(p_eam_wo_rec.due_date);
2296 end if;
2297
2298 x_return_status := FND_API.G_RET_STS_SUCCESS;
2299
2300 exception
2301 when others then
2302
2303 l_token_tbl(1).token_name := 'Scheduled Start Date';
2304 l_token_tbl(1).token_value := p_eam_wo_rec.scheduled_start_date;
2305
2306 l_out_mesg_token_tbl := l_mesg_token_tbl;
2307 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
2308 ( p_message_name => 'EAM_WO_SCHEDULE_DATE'
2309 , p_token_tbl => l_token_tbl
2310 , p_mesg_token_tbl => l_mesg_token_tbl
2311 , x_mesg_token_tbl => l_out_mesg_token_tbl
2312 );
2313 l_mesg_token_tbl := l_out_mesg_token_tbl;
2314
2315 x_return_status := FND_API.G_RET_STS_ERROR;
2316 x_mesg_token_tbl := l_mesg_token_tbl ;
2317 return;
2318
2319 end;
2320 --start of fix for 3396136
2321 begin
2322 IF(p_eam_wo_rec.scheduled_start_date IS NOT NULL)
2323 AND (p_eam_wo_rec.scheduled_completion_date IS NOT NULL)
2324 AND (p_eam_wo_rec.scheduled_start_date > p_eam_wo_rec.scheduled_completion_date) THEN
2325 raise fnd_api.g_exc_unexpected_error;
2326 END IF;
2327 exception
2328 when fnd_api.g_exc_unexpected_error then
2329 l_out_mesg_token_tbl := l_mesg_token_tbl;
2330 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
2331 ( p_message_name => 'EAM_WO_SCHEDULE_DATE_MORE'
2332 , p_token_tbl => l_token_tbl
2333 , p_mesg_token_tbl => l_mesg_token_tbl
2334 , x_mesg_token_tbl => l_out_mesg_token_tbl
2335 );
2336 l_mesg_token_tbl := l_out_mesg_token_tbl;
2337
2338 x_return_status := FND_API.G_RET_STS_ERROR;
2339 x_mesg_token_tbl := l_mesg_token_tbl ;
2340 return;
2341 end;
2342 --end of fix for 3396136
2343
2344
2345 -- end_item_unit_number
2346 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating end_item_unit_number . . . '); END IF;
2347
2348 declare
2349 is_unit_effective_item boolean;
2350 l_bom_item_id NUMBER;
2351 begin
2352
2353 -- Unit number is required for unit effective assemblies.
2354 if (p_eam_wo_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_CREATE) then
2355
2356 if(is_unit_effective_item and p_eam_wo_rec.end_item_unit_number is null) then
2357 fnd_message.set_name('PJM', 'UEFF-UNIT NUMBER REQUIRED');
2358 end if;
2359
2360 end if;
2361
2362 -- If the assembly item is unit effective, validate the actual
2363 -- unit number value. The unit number must exist in the same _master_
2364 -- organization as the item. (We already validate that the item
2365 -- is in the organization identified by the ORGANIZATION_ID column.)
2366 if(is_unit_effective_item and p_eam_wo_rec.end_item_unit_number is not null) then
2367 select 1
2368 into g_dummy
2369 from pjm_unit_numbers_lov_v pun,
2370 mtl_parameters mp
2371 where pun.unit_number = p_eam_wo_rec.end_item_unit_number
2372 and mp.organization_id = p_eam_wo_rec.organization_id
2373 and mp.master_organization_id = pun.master_organization_id;
2374 end if;
2375
2376 x_return_status := FND_API.G_RET_STS_SUCCESS;
2377
2378 exception
2379 when too_many_rows then
2380 null; -- the query returning multiple rows is ok
2381 when others then
2382 -- fnd_message.set_name('PJM', 'UEFF-UNIT NUMBER INVALID') ;
2383
2384 l_token_tbl(1).token_name := 'Unit Number';
2385 l_token_tbl(1).token_value := p_eam_wo_rec.end_item_unit_number;
2386
2387 l_out_mesg_token_tbl := l_mesg_token_tbl;
2388 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
2389 ( p_message_name => 'EAM_WO_UNIT_NUMBER'
2390 , p_token_tbl => l_token_tbl
2391 , p_mesg_token_tbl => l_mesg_token_tbl
2392 , x_mesg_token_tbl => l_out_mesg_token_tbl
2393 );
2394 l_mesg_token_tbl := l_out_mesg_token_tbl;
2395
2396 x_return_status := FND_API.G_RET_STS_ERROR;
2397 x_mesg_token_tbl := l_mesg_token_tbl ;
2398 return;
2399
2400 end;
2401
2402
2403 -- class_code
2404 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating class_code . . . '); END IF;
2405
2406 declare
2407 l_disable_date date;
2408 WO_CANT_CH_WIPACCT exception;
2409 begin
2410 if (p_eam_wo_rec.class_code is null) then
2411 raise fnd_api.g_exc_unexpected_error;
2412 end if;
2413
2414 if p_eam_wo_rec.class_code is not null then
2415
2416 select disable_date
2417 into l_disable_date
2418 from wip_accounting_classes
2419 where class_code = p_eam_wo_rec.class_code
2420 and class_type = wip_constants.eam
2421 and organization_id = p_eam_wo_rec.organization_id;
2422
2423 if(l_disable_date is not null and
2424 l_disable_date < nvl(p_eam_wo_rec.due_date, p_eam_wo_rec.requested_start_date)) then
2425 raise fnd_api.g_exc_unexpected_error;
2426 end if;
2427
2428 end if;
2429
2430 -- bug no 3905702
2431 if p_old_eam_wo_rec.class_code <> p_eam_wo_rec.class_code then
2432
2433 EAM_WORKORDER_UTIL_PKG.CK_MATERIAL_ALLOC_ON_HOLD(X_Org_Id => p_eam_wo_rec.organization_id,
2434 X_Wip_Id => p_eam_wo_rec.wip_entity_id,
2435 X_Rep_Id => -1,
2436 X_Line_Id => -1,
2437 X_Ent_Type=> 6,
2438 X_Return_Status=>l_trans_exist);
2439
2440 IF(l_trans_exist='F') THEN
2441 raise WO_CANT_CH_WIPACCT;
2442 END IF;
2443 end if;
2444
2445 x_return_status := FND_API.G_RET_STS_SUCCESS;
2446
2447 exception
2448
2449 when WO_CANT_CH_WIPACCT then
2450
2451 l_out_mesg_token_tbl := l_mesg_token_tbl;
2452 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
2453 ( p_message_name => 'EAM_WIPACT_CANNOT_CH'
2454 , p_token_tbl => l_token_tbl
2455 , p_mesg_token_tbl => l_mesg_token_tbl
2456 , x_mesg_token_tbl => l_out_mesg_token_tbl
2457 );
2458 l_mesg_token_tbl := l_out_mesg_token_tbl;
2459
2460 x_return_status := FND_API.G_RET_STS_ERROR;
2461 x_mesg_token_tbl := l_mesg_token_tbl ;
2462 return;
2463
2464 when others then
2465
2466 l_token_tbl(1).token_name := 'Class Code';
2467 l_token_tbl(1).token_value := p_eam_wo_rec.class_code;
2468
2469 l_out_mesg_token_tbl := l_mesg_token_tbl;
2470 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
2471 ( p_message_name => 'EAM_WO_CLASS_CODE'
2472 , p_token_tbl => l_token_tbl
2473 , p_mesg_token_tbl => l_mesg_token_tbl
2474 , x_mesg_token_tbl => l_out_mesg_token_tbl
2475 );
2476 l_mesg_token_tbl := l_out_mesg_token_tbl;
2477
2478 x_return_status := FND_API.G_RET_STS_ERROR;
2479 x_mesg_token_tbl := l_mesg_token_tbl ;
2480 return;
2481
2482 end;
2483
2484
2485 -- bom_revision
2486 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating bom_revision . . . '); END IF;
2487
2488 declare
2489 l_start_date DATE;
2490 begin
2491
2492 l_start_date := greatest(p_eam_wo_rec.requested_start_date, sysdate);
2493 /*
2494 wip_revisions.bom_revision(p_organization_id => p_eam_wo_rec.organization_id,
2495 p_item_id => p_eam_wo_rec.asset_activity_id,
2496 p_revision => p_eam_wo_rec.bom_revision,
2497 p_revision_date => p_eam_wo_rec.bom_revision_date,
2498 p_start_date => l_start_date);
2499 */
2500 x_return_status := FND_API.G_RET_STS_SUCCESS;
2501
2502 exception
2503 when others then
2504
2505 l_token_tbl(1).token_name := 'BOM Revision';
2506 l_token_tbl(1).token_value := p_eam_wo_rec.bom_revision;
2507
2508 l_out_mesg_token_tbl := l_mesg_token_tbl;
2509 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
2510 ( p_message_name => 'EAM_WO_BOM_REVISION'
2511 , p_token_tbl => l_token_tbl
2512 , p_mesg_token_tbl => l_mesg_token_tbl
2513 , x_mesg_token_tbl => l_out_mesg_token_tbl
2514 );
2515 l_mesg_token_tbl := l_out_mesg_token_tbl;
2516
2517 x_return_status := FND_API.G_RET_STS_ERROR;
2518
2519 x_mesg_token_tbl := l_mesg_token_tbl ;
2520 return;
2521
2522 end;
2523
2524
2525 -- routing_revision
2526 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating routing_revision . . . '); END IF;
2527
2528 declare
2529 l_start_date DATE;
2530 l_count NUMBER;
2531 begin
2532
2533 l_start_date := greatest(p_eam_wo_rec.requested_start_date, sysdate);
2534
2535 select count(*)
2536 into l_count
2537 from bom_operational_routings
2538 where assembly_item_id = p_eam_wo_rec.asset_activity_id
2539 and organization_id = p_eam_wo_rec.organization_id
2540 and nvl(alternate_routing_designator, '@@') = nvl(p_eam_wo_rec.alternate_routing_designator, '@@');
2541 /*
2542 if(l_count > 0) then
2543
2544 wip_revisions.routing_revision(p_organization_id => p_eam_wo_rec.organization_id,
2545 p_item_id => p_eam_wo_rec.asset_activity_id,
2546 p_revision => p_eam_wo_rec.routing_revision,
2547 p_revision_date => p_eam_wo_rec.routing_revision_date,
2548 p_start_date => l_start_date);
2549
2550 end if;
2551 */
2552 x_return_status := FND_API.G_RET_STS_SUCCESS;
2553
2554 exception
2555 when others then
2556
2557 l_token_tbl(1).token_name := 'Routing Revision';
2558 l_token_tbl(1).token_value := p_eam_wo_rec.routing_revision;
2559
2560 l_out_mesg_token_tbl := l_mesg_token_tbl;
2561 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
2562 ( p_message_name => 'EAM_WO_ROUTING_REVISION'
2563 , p_token_tbl => l_token_tbl
2564 , p_mesg_token_tbl => l_mesg_token_tbl
2565 , x_mesg_token_tbl => l_out_mesg_token_tbl
2566 );
2567 l_mesg_token_tbl := l_out_mesg_token_tbl;
2568
2569 x_return_status := FND_API.G_RET_STS_ERROR;
2570 x_mesg_token_tbl := l_mesg_token_tbl ;
2571 return;
2572
2573 end;
2574
2575
2576 -- manual_rebuild_flag
2577 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating manual_rebuild_flag . . . '); END IF;
2578
2579 begin
2580 if (p_eam_wo_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_CREATE) then
2581 if(p_eam_wo_rec.manual_rebuild_flag is not null and
2582 (p_eam_wo_rec.rebuild_item_id is null or
2583 p_eam_wo_rec.manual_rebuild_flag not in ('Y', 'N'))) then
2584 raise fnd_api.g_exc_unexpected_error;
2585 end if;
2586
2587 if(p_eam_wo_rec.manual_rebuild_flag is null and
2588 p_eam_wo_rec.rebuild_item_id is not null) then
2589 raise fnd_api.g_exc_unexpected_error;
2590 end if;
2591 end if;
2592
2593 x_return_status := FND_API.G_RET_STS_SUCCESS;
2594
2595 exception
2596 when fnd_api.g_exc_unexpected_error then
2597
2598 l_token_tbl(1).token_name := 'Manual Rebuild Flag';
2599 l_token_tbl(1).token_value := p_eam_wo_rec.manual_rebuild_flag;
2600
2601 l_out_mesg_token_tbl := l_mesg_token_tbl;
2602 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
2603 ( p_message_name => 'EAM_WO_MANUAL_REBUILD_FLAG'
2604 , p_token_tbl => l_token_tbl
2605 , p_mesg_token_tbl => l_mesg_token_tbl
2606 , x_mesg_token_tbl => l_out_mesg_token_tbl
2607 );
2608 l_mesg_token_tbl := l_out_mesg_token_tbl;
2609
2610 x_return_status := FND_API.G_RET_STS_ERROR;
2611 x_mesg_token_tbl := l_mesg_token_tbl ;
2612 return;
2613
2614 end;
2615
2616 -- owning_department
2617 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating owing_department_id . . . '); END IF;
2618
2619 declare
2620 l_job_date DATE;
2621 l_disable_date DATE;
2622 begin
2623 if p_eam_wo_rec.owning_department is not null then
2624 l_job_date := nvl(p_eam_wo_rec.due_date, nvl(p_eam_wo_rec.requested_start_date, p_eam_wo_rec.scheduled_completion_date));
2625 select disable_date
2626 into l_disable_date
2627 from bom_departments
2628 where department_id = p_eam_wo_rec.owning_department
2629 and organization_id = p_eam_wo_rec.organization_id;
2630
2631 if(l_disable_date is not null and
2632 l_disable_date < l_job_date) then
2633 raise fnd_api.g_exc_unexpected_error;
2634 end if;
2635 end if;
2636
2637 x_return_status := FND_API.G_RET_STS_SUCCESS;
2638
2639 exception
2640 when others then
2641
2642 l_token_tbl(1).token_name := 'Owning Department';
2643 -- l_token_tbl(1).token_value := p_eam_wo_rec.owning_department;
2644
2645 SELECT bd.department_code into l_token_tbl(1).token_value
2646 FROM bom_departments bd
2647 WHERE bd.DEPARTMENT_ID = p_eam_wo_rec.owning_department
2648 AND bd.organization_id = p_eam_wo_rec.organization_id;
2649
2650
2651 l_out_mesg_token_tbl := l_mesg_token_tbl;
2652 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
2653 ( p_message_name => 'EAM_WO_OWNING_DEPARTMENT'
2654 , p_token_tbl => l_token_tbl
2655 , p_mesg_token_tbl => l_mesg_token_tbl
2656 , x_mesg_token_tbl => l_out_mesg_token_tbl
2657 );
2658 l_mesg_token_tbl := l_out_mesg_token_tbl;
2659
2660 x_return_status := FND_API.G_RET_STS_ERROR;
2661 x_mesg_token_tbl := l_mesg_token_tbl ;
2662 return;
2663
2664 end;
2665
2666 -- notification_required
2667 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating notification_required . . . '); END IF;
2668
2669 begin
2670 if (p_eam_wo_rec.notification_required is not null and
2671 p_eam_wo_rec.notification_required not in ('Y', 'N')) then
2672 raise fnd_api.g_exc_unexpected_error;
2673 end if;
2674
2675 x_return_status := FND_API.G_RET_STS_SUCCESS;
2676
2677 exception
2678 when fnd_api.g_exc_unexpected_error then
2679
2680 l_token_tbl(1).token_name := 'Notification Required';
2681 l_token_tbl(1).token_value := p_eam_wo_rec.notification_required;
2682
2683 l_out_mesg_token_tbl := l_mesg_token_tbl;
2684 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
2685 ( p_message_name => 'EAM_WO_NOTIFICATION_REQUIRED'
2686 , p_token_tbl => l_token_tbl
2687 , p_mesg_token_tbl => l_mesg_token_tbl
2688 , x_mesg_token_tbl => l_out_mesg_token_tbl
2689 );
2690 l_mesg_token_tbl := l_out_mesg_token_tbl;
2691
2692 x_return_status := FND_API.G_RET_STS_ERROR;
2693 x_mesg_token_tbl := l_mesg_token_tbl ;
2694 return;
2695
2696 end;
2697
2698 -- shutdown_type
2699 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating shutdown_type . . . '); END IF;
2700
2701 begin
2702 if p_eam_wo_rec.shutdown_type is not null then
2703 select 1
2704 into g_dummy
2705 from mfg_lookups
2706 where lookup_type = g_shutdown_type
2707 and lookup_code = p_eam_wo_rec.shutdown_type
2708 and enabled_flag = 'Y';
2709 end if;
2710
2711 x_return_status := FND_API.G_RET_STS_SUCCESS;
2712
2713 exception
2714 when no_data_found then
2715
2716 l_token_tbl(1).token_name := 'Shutdown Type';
2717 l_token_tbl(1).token_value := p_eam_wo_rec.shutdown_type;
2718
2719 l_out_mesg_token_tbl := l_mesg_token_tbl;
2720 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
2721 ( p_message_name => 'EAM_WO_SHUTDOWN_TYPE'
2722 , p_token_tbl => l_token_tbl
2723 , p_mesg_token_tbl => l_mesg_token_tbl
2724 , x_mesg_token_tbl => l_out_mesg_token_tbl
2725 );
2726 l_mesg_token_tbl := l_out_mesg_token_tbl;
2727
2728 x_return_status := FND_API.G_RET_STS_ERROR;
2729 x_mesg_token_tbl := l_mesg_token_tbl ;
2730 return;
2731
2732 end;
2733
2734 -- tagout_required
2735 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating tagout_required . . . '); END IF;
2736
2737 begin
2738 if (p_eam_wo_rec.tagout_required is not null and
2739 p_eam_wo_rec.tagout_required not in ('Y', 'N')) then
2740 raise fnd_api.g_exc_unexpected_error;
2741 end if;
2742
2743 x_return_status := FND_API.G_RET_STS_SUCCESS;
2744
2745 exception
2746 when fnd_api.g_exc_unexpected_error then
2747
2748 l_token_tbl(1).token_name := 'Tagout Required';
2749 l_token_tbl(1).token_value := p_eam_wo_rec.tagout_required;
2750
2751 l_out_mesg_token_tbl := l_mesg_token_tbl;
2752 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
2753 ( p_message_name => 'EAM_WO_TAGOUT_REQUIRED'
2754 , p_token_tbl => l_token_tbl
2755 , p_mesg_token_tbl => l_mesg_token_tbl
2756 , x_mesg_token_tbl => l_out_mesg_token_tbl
2757 );
2758 l_mesg_token_tbl := l_out_mesg_token_tbl;
2759
2760 x_return_status := FND_API.G_RET_STS_ERROR;
2761 x_mesg_token_tbl := l_mesg_token_tbl ;
2762 return;
2763
2764 end;
2765
2766 -- plan_maintenance
2767 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating plan_maintenance . . . '); END IF;
2768
2769 begin
2770 if p_eam_wo_rec.plan_maintenance is not null and
2771 p_eam_wo_rec.plan_maintenance not in ('Y', 'N') then
2772 raise fnd_api.g_exc_unexpected_error;
2773 end if;
2774
2775 x_return_status := FND_API.G_RET_STS_SUCCESS;
2776
2777 exception
2778 when fnd_api.g_exc_unexpected_error then
2779
2780 l_token_tbl(1).token_name := 'Plan Maintenance';
2781 l_token_tbl(1).token_value := p_eam_wo_rec.plan_maintenance;
2782
2783 l_out_mesg_token_tbl := l_mesg_token_tbl;
2784 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
2785 ( p_message_name => 'EAM_WO_PLAN_MAINTENANCE'
2786 , p_token_tbl => l_token_tbl
2787 , p_mesg_token_tbl => l_mesg_token_tbl
2788 , x_mesg_token_tbl => l_out_mesg_token_tbl
2789 );
2790 l_mesg_token_tbl := l_out_mesg_token_tbl;
2791
2792 x_return_status := FND_API.G_RET_STS_ERROR;
2793 x_mesg_token_tbl := l_mesg_token_tbl ;
2794 return;
2795
2796 end;
2797
2798 -- work_order_type
2799 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating work_order_type . . . '); END IF;
2800
2801 begin
2802 if p_eam_wo_rec.work_order_type is not null then
2803 select 1
2804 into g_dummy
2805 from mfg_lookups
2806 where lookup_type = g_wo_type
2807 and lookup_code = p_eam_wo_rec.work_order_type
2808 and enabled_flag = 'Y';
2809 end if;
2810
2811 x_return_status := FND_API.G_RET_STS_SUCCESS;
2812
2813 exception
2814 when no_data_found then
2815
2816 l_token_tbl(1).token_name := 'Work Order Type';
2817 l_token_tbl(1).token_value := p_eam_wo_rec.work_order_type;
2818
2819 l_out_mesg_token_tbl := l_mesg_token_tbl;
2820 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
2821 ( p_message_name => 'EAM_WO_WORK_ORDER_TYPE'
2822 , p_token_tbl => l_token_tbl
2823 , p_mesg_token_tbl => l_mesg_token_tbl
2824 , x_mesg_token_tbl => l_out_mesg_token_tbl
2825 );
2826 l_mesg_token_tbl := l_out_mesg_token_tbl;
2827
2828 x_return_status := FND_API.G_RET_STS_ERROR;
2829 x_mesg_token_tbl := l_mesg_token_tbl ;
2830 return;
2831
2832 end;
2833
2834 -- activity_type
2835 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating activity_type . . . '); END IF;
2836
2837 begin
2838 if p_eam_wo_rec.activity_type is not null then
2839 select 1
2840 into g_dummy
2841 from mfg_lookups
2842 where lookup_type = g_act_type
2843 and lookup_code = p_eam_wo_rec.activity_type
2844 and enabled_flag = 'Y';
2845 end if;
2846
2847 x_return_status := FND_API.G_RET_STS_SUCCESS;
2848
2849 exception
2850 when no_data_found then
2851
2852 l_token_tbl(1).token_name := 'Activity Type';
2853 l_token_tbl(1).token_value := p_eam_wo_rec.activity_type;
2854
2855 l_out_mesg_token_tbl := l_mesg_token_tbl;
2856 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
2857 ( p_message_name => 'EAM_WO_ACTIVITY_TYPE'
2858 , p_token_tbl => l_token_tbl
2859 , p_mesg_token_tbl => l_mesg_token_tbl
2860 , x_mesg_token_tbl => l_out_mesg_token_tbl
2861 );
2862 l_mesg_token_tbl := l_out_mesg_token_tbl;
2863
2864 x_return_status := FND_API.G_RET_STS_ERROR;
2865 x_mesg_token_tbl := l_mesg_token_tbl ;
2866 return;
2867
2868 end;
2869
2870 -- activity_cause
2871 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating activity_cause . . . '); END IF;
2872
2873 begin
2874 if p_eam_wo_rec.activity_cause is not null then
2875 select 1
2876 into g_dummy
2877 from mfg_lookups
2878 where lookup_type = g_act_cause
2879 and lookup_code = p_eam_wo_rec.activity_cause
2880 and enabled_flag = 'Y';
2881 end if;
2882
2883 x_return_status := FND_API.G_RET_STS_SUCCESS;
2884
2885 exception
2886 when no_data_found then
2887
2888 l_token_tbl(1).token_name := 'Activity Cause';
2889 l_token_tbl(1).token_value := p_eam_wo_rec.activity_cause;
2890
2891 l_out_mesg_token_tbl := l_mesg_token_tbl;
2892 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
2893 ( p_message_name => 'EAM_WO_ACTIVITY_CAUSE'
2894 , p_token_tbl => l_token_tbl
2895 , p_mesg_token_tbl => l_mesg_token_tbl
2896 , x_mesg_token_tbl => l_out_mesg_token_tbl
2897 );
2898 l_mesg_token_tbl := l_out_mesg_token_tbl;
2899
2900 x_return_status := FND_API.G_RET_STS_ERROR;
2901 x_mesg_token_tbl := l_mesg_token_tbl ;
2902 return;
2903
2904 end;
2905
2906
2907
2908 -- activity_source
2909 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating activity_source . . . '); END IF;
2910
2911 begin
2912 if p_eam_wo_rec.activity_source is not null then
2913 select 1
2914 into g_dummy
2915 from mfg_lookups
2916 where lookup_type = g_act_source
2917 and lookup_code = p_eam_wo_rec.activity_source
2918 and enabled_flag = 'Y';
2919 end if;
2920
2921 x_return_status := FND_API.G_RET_STS_SUCCESS;
2922
2923 exception
2924 when no_data_found then
2925
2926 l_token_tbl(1).token_name := 'Activity Source';
2927 l_token_tbl(1).token_value := p_eam_wo_rec.activity_source;
2928
2929 l_out_mesg_token_tbl := l_mesg_token_tbl;
2930 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
2931 ( p_message_name => 'EAM_WO_ACTIVITY_SOURCE'
2932 , p_token_tbl => l_token_tbl
2933 , p_mesg_token_tbl => l_mesg_token_tbl
2934 , x_mesg_token_tbl => l_out_mesg_token_tbl
2935 );
2936 l_mesg_token_tbl := l_out_mesg_token_tbl;
2937
2938 x_return_status := FND_API.G_RET_STS_ERROR;
2939 x_mesg_token_tbl := l_mesg_token_tbl ;
2940 return;
2941
2942 end;
2943
2944
2945 -- date_released
2946 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating accounting_period . . . '); END IF;
2947
2948 --bug#4425025 - need to validate period only when releasing the first time.
2949 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Old Date_released is : '||nvl(to_char(p_old_eam_wo_rec.date_released),'NULL')); END IF;
2950
2951 declare
2952 l_date_released_calc DATE;
2953 l_min_open_period_date DATE;
2954 begin
2955
2956 if (p_eam_wo_rec.status_type in (WIP_CONSTANTS.HOLD,WIP_CONSTANTS.RELEASED) and
2957 nvl(p_old_eam_wo_rec.status_type,0) not in(WIP_CONSTANTS.RELEASED, WIP_CONSTANTS.HOLD) and
2958 p_old_eam_wo_rec.date_released is null) then
2959
2960 IF (p_eam_wo_rec.scheduled_start_date < sysdate) THEN
2961 select nvl(min(period_start_date),p_eam_wo_rec.scheduled_start_date)
2962 into l_min_open_period_date
2963 from org_acct_periods
2964 where organization_id=p_eam_wo_rec.organization_id
2965 and open_flag = 'Y'
2966 and period_close_date is null;
2967
2968 l_date_released_calc := greatest (l_min_open_period_date,p_eam_wo_rec.scheduled_start_date);
2969 ELSE
2970 l_date_released_calc := sysdate;
2971 END IF;
2972
2973 --date_released will be defaulted just before change_status procedure call in EAMVWOPB.pls.
2974 --hence if date_released is NULL, get the defaulted value but do not stamp defaulted value in work order record
2975 -- as date_released should be populated only when there is no workflow/workflow is approved
2976 IF(p_eam_wo_rec.status_type = WIP_CONSTANTS.RELEASED AND p_eam_wo_rec.date_released IS NOT NULL) THEN
2977 l_date_released_calc := TRUNC(p_eam_wo_rec.date_released);
2978 END IF;
2979
2980 select 1
2981 into g_dummy
2982 from org_acct_periods
2983 where organization_id = p_eam_wo_rec.organization_id
2984 and trunc(l_date_released_calc)
2985 between period_start_date and schedule_close_date
2986 and period_close_date is NULL;
2987
2988 x_return_status := FND_API.G_RET_STS_SUCCESS;
2989
2990 end if;
2991
2992
2993 exception
2994 when no_data_found then
2995 l_token_tbl(1).token_name := 'Date Released';
2996 l_token_tbl(1).token_value := trunc(l_date_released_calc);
2997
2998 l_out_mesg_token_tbl := l_mesg_token_tbl;
2999 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
3000 ( p_message_name => 'EAM_WO_NO_ACCT_PERIOD'
3001 , p_token_tbl => l_token_tbl
3002 , p_mesg_token_tbl => l_mesg_token_tbl
3003 , x_mesg_token_tbl => l_out_mesg_token_tbl
3004 );
3005 l_mesg_token_tbl := l_out_mesg_token_tbl;
3006
3007 x_return_status := FND_API.G_RET_STS_ERROR;
3008 x_mesg_token_tbl := l_mesg_token_tbl ;
3009 return;
3010
3011 end;
3012
3013
3014 -- maintenance_object_source
3015
3016 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating maintenance_object_source . . . '); END IF;
3017
3018 begin
3019
3020 if (p_eam_wo_rec.maintenance_object_source is not null) then
3021
3022 select 1
3023 into g_dummy
3024 from mfg_lookups
3025 where lookup_type = g_obj_source
3026 and lookup_code = p_eam_wo_rec.maintenance_object_source;
3027
3028 x_return_status := FND_API.G_RET_STS_SUCCESS;
3029
3030 end if;
3031
3032 exception
3033 when no_data_found then
3034 l_token_tbl(1).token_name := 'Maintenance Object Source';
3035 l_token_tbl(1).token_value := p_eam_wo_rec.maintenance_object_source;
3036
3037 l_out_mesg_token_tbl := l_mesg_token_tbl;
3038 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
3039 ( p_message_name => 'EAM_WO_MAINT_OBJECT_SOURCE'
3040 , p_token_tbl => l_token_tbl
3041 , p_mesg_token_tbl => l_mesg_token_tbl
3042 , x_mesg_token_tbl => l_out_mesg_token_tbl
3043 );
3044 l_mesg_token_tbl := l_out_mesg_token_tbl;
3045
3046 x_return_status := FND_API.G_RET_STS_ERROR;
3047 x_mesg_token_tbl := l_mesg_token_tbl ;
3048 return;
3049
3050 end;
3051
3052
3053 -- user_id
3054
3055 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating user_id . . . '); END IF;
3056
3057 begin
3058
3059 if (p_eam_wo_rec.user_id is not null) then
3060
3061 select 1
3062 into g_dummy
3063 from fnd_user
3064 where user_id = p_eam_wo_rec.user_id;
3065
3066 x_return_status := FND_API.G_RET_STS_SUCCESS;
3067
3068 end if;
3069
3070 exception
3071 when no_data_found then
3072 l_token_tbl(1).token_name := 'USER_ID';
3073 l_token_tbl(1).token_value := p_eam_wo_rec.user_id;
3074
3075 l_out_mesg_token_tbl := l_mesg_token_tbl;
3076 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
3077 ( p_message_name => 'EAM_WO_USER'
3078 , p_token_tbl => l_token_tbl
3079 , p_mesg_token_tbl => l_mesg_token_tbl
3080 , x_mesg_token_tbl => l_out_mesg_token_tbl
3081 );
3082 l_mesg_token_tbl := l_out_mesg_token_tbl;
3083
3084 x_return_status := FND_API.G_RET_STS_ERROR;
3085 x_mesg_token_tbl := l_mesg_token_tbl ;
3086 return;
3087
3088 end;
3089
3090
3091 -- responsibility_id
3092
3093 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating responsibility_id . . . '); END IF;
3094
3095 begin
3096
3097 if (p_eam_wo_rec.responsibility_id is not null) then
3098
3099 select 1
3100 into g_dummy
3101 from fnd_responsibility
3102 where responsibility_id = p_eam_wo_rec.responsibility_id;
3103
3104 x_return_status := FND_API.G_RET_STS_SUCCESS;
3105
3106 end if;
3107
3108 exception
3109 when no_data_found then
3110 l_token_tbl(1).token_name := 'RESPONSIBILITY_ID';
3111 l_token_tbl(1).token_value := p_eam_wo_rec.responsibility_id;
3112
3113 l_out_mesg_token_tbl := l_mesg_token_tbl;
3114 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
3115 ( p_message_name => 'EAM_WO_RESPONSIBILITY'
3116 , p_token_tbl => l_token_tbl
3117 , p_mesg_token_tbl => l_mesg_token_tbl
3118 , x_mesg_token_tbl => l_out_mesg_token_tbl
3119 );
3120 l_mesg_token_tbl := l_out_mesg_token_tbl;
3121
3122 x_return_status := FND_API.G_RET_STS_ERROR;
3123 x_mesg_token_tbl := l_mesg_token_tbl ;
3124 return;
3125
3126 end;
3127
3128 -- user_defined_status_id
3129
3130 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating user_defined_status_id . . . '); END IF;
3131
3132 begin
3133
3134 IF (p_eam_wo_rec.user_defined_status_id IS NOT NULL) AND
3135 (p_eam_wo_rec.user_defined_status_id <> p_old_eam_wo_rec.user_defined_status_id)THEN
3136
3137 SELECT enabled_flag
3138 INTO l_enabled_flag
3139 FROM EAM_WO_STATUSES_B
3140 WHERE status_id = p_eam_wo_rec.user_defined_status_id;
3141
3142 IF l_enabled_flag <> 'Y' THEN
3143 RAISE fnd_api.g_exc_error;
3144 END IF;
3145
3146 END IF;
3147
3148 exception
3149 when fnd_api.g_exc_error then
3150 l_token_tbl(1).token_name := 'USER_DEFINED_STATUS_ID';
3151 l_token_tbl(1).token_value := p_eam_wo_rec.user_defined_status_id;
3152
3153 l_out_mesg_token_tbl := l_mesg_token_tbl;
3154 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
3155 ( p_message_name => 'EAM_WO_DIS_USER_DEFINED_STATUS'
3156 , p_token_tbl => l_token_tbl
3157 , p_mesg_token_tbl => l_mesg_token_tbl
3158 , x_mesg_token_tbl => l_out_mesg_token_tbl
3159 );
3160 l_mesg_token_tbl := l_out_mesg_token_tbl;
3161
3162 x_return_status := FND_API.G_RET_STS_ERROR;
3163 x_mesg_token_tbl := l_mesg_token_tbl ;
3164 return;
3165
3166 end;
3167
3168 -- material_issue_by_mo
3169
3170 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating material_issue_by_mo flag . . . '); END IF;
3171
3172 begin
3173
3174 if (p_eam_wo_rec.material_issue_by_mo is null) then
3175 raise fnd_api.g_exc_unexpected_error;
3176 else
3177 x_return_status := FND_API.G_RET_STS_SUCCESS;
3178 end if;
3179
3180
3181
3182 if p_eam_wo_rec.transaction_type = EAM_PROCESS_WO_PVT.G_OPR_UPDATE
3183 and p_eam_wo_rec.status_type not in (WIP_CONSTANTS.DRAFT,WIP_CONSTANTS.UNRELEASED) /* Bug no 3349197 */
3184 and not(p_eam_wo_rec.status_type=WIP_CONSTANTS.RELEASED and (p_old_eam_wo_rec.status_type IN (WIP_CONSTANTS.DRAFT,WIP_CONSTANTS.UNRELEASED,WIP_CONSTANTS.CANCELLED))) /*Bug No 3476156*/
3185 and p_eam_wo_rec.material_issue_by_mo <> p_old_eam_wo_rec.material_issue_by_mo then
3186
3187 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN
3188 EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating material_issue_by_mo flag . .wip_entity_id' || p_eam_wo_rec.wip_entity_id);
3189 EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating material_issue_by_mo flag . .org_id' || p_eam_wo_rec.organization_id);
3190 END IF;
3191
3192 if ((p_eam_wo_rec.status_type = WIP_CONSTANTS.HOLD) OR (p_eam_wo_rec.status_type=WIP_CONSTANTS.RELEASED and p_old_eam_wo_rec.status_type=WIP_CONSTANTS.HOLD)) then /*Bug no 3476156*/
3193 -- If material allocation has been done then raise error
3194 EAM_WORKORDER_UTIL_PKG.CK_MATERIAL_ALLOC_ON_HOLD(X_Org_Id => p_eam_wo_rec.organization_id,
3195 X_Wip_Id => p_eam_wo_rec.wip_entity_id,
3196 X_Rep_Id => -1,
3197 X_Line_Id => -1,
3198 X_Ent_Type=> 6 ,
3199 x_return_status =>x_return_status);
3200
3201 if x_return_status<> FND_API.G_RET_STS_SUCCESS then
3202 l_mo_err_flag := '2';
3203 raise fnd_api.g_exc_error;
3204 end if;
3205 else
3206 l_mo_err_flag := '1';
3207 raise fnd_api.g_exc_error;
3208 end if;
3209 end if;
3210 exception
3211 when fnd_api.g_exc_error then
3212 l_out_mesg_token_tbl := l_mesg_token_tbl;
3213
3214 If l_mo_err_flag = '1' Then
3215 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
3216 ( p_message_name => 'EAM_WO_MTL_ISS_DISALLOWED'
3217 , p_token_tbl => l_token_tbl
3218 , p_mesg_token_tbl => l_mesg_token_tbl
3219 , x_mesg_token_tbl => l_out_mesg_token_tbl
3220 );
3221 Else
3222 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
3223 ( p_message_name => 'EAM_WO_MTL_ALRDY_ISSUED'
3224 , p_token_tbl => l_token_tbl
3225 , p_mesg_token_tbl => l_mesg_token_tbl
3226 , x_mesg_token_tbl => l_out_mesg_token_tbl
3227 );
3228 End if;
3229
3230
3231 l_mesg_token_tbl := l_out_mesg_token_tbl;
3232
3233 x_return_status := FND_API.G_RET_STS_ERROR;
3234 x_mesg_token_tbl := l_mesg_token_tbl ;
3235 return;
3236
3237 when others then
3238
3239 l_out_mesg_token_tbl := l_mesg_token_tbl;
3240 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
3241 ( p_message_name => 'EAM_WO_MTL_ISSUE_BY_MO'
3242 , p_token_tbl => l_token_tbl
3243 , p_mesg_token_tbl => l_mesg_token_tbl
3244 , x_mesg_token_tbl => l_out_mesg_token_tbl
3245 );
3246 l_mesg_token_tbl := l_out_mesg_token_tbl;
3247
3248 x_return_status := FND_API.G_RET_STS_ERROR;
3249 x_mesg_token_tbl := l_mesg_token_tbl ;
3250 return;
3251
3252 end;
3253
3254 -- Bug # 4709084 : FAILURE ANALYSIS : Check for failure_code_required..
3255 IF EAM_PROCESS_WO_PVT.GET_DEBUG = 'Y' THEN
3256 EAM_ERROR_MESSAGE_PVT.Write_Debug('Validating failure_code_required . . . ');
3257 END IF;
3258
3259 if (p_eam_wo_rec.failure_code_required is not null and p_eam_wo_rec.failure_code_required not in ('Y', 'N')) then
3260 l_token_tbl(1).token_name := 'failure_code_required';
3261 l_token_tbl(1).token_value := p_eam_wo_rec.failure_code_required;
3262 l_out_mesg_token_tbl := l_mesg_token_tbl;
3263 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
3264 ( p_message_name => 'EAM_WO_FAILURE_CODE_REQUIRED'
3265 , p_token_tbl => l_token_tbl
3266 , p_mesg_token_tbl => l_mesg_token_tbl
3267 , x_mesg_token_tbl => l_out_mesg_token_tbl
3268 );
3269 l_mesg_token_tbl := l_out_mesg_token_tbl;
3270 x_return_status := FND_API.G_RET_STS_ERROR;
3271 x_mesg_token_tbl := l_mesg_token_tbl ;
3272 return;
3273 else
3274 x_return_status := FND_API.G_RET_STS_SUCCESS;
3275 end if;
3276
3277 EXCEPTION
3278 WHEN OTHERS THEN
3279
3280 l_token_tbl(1).token_name := 'Validation (Check Attributes)';
3281 l_token_tbl(1).token_value := substrb(SQLERRM,1,200);
3282
3283 l_out_mesg_token_tbl := l_mesg_token_tbl;
3284 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
3285 ( p_message_name => NULL
3286 , p_token_tbl => l_token_tbl
3287 , p_mesg_token_tbl => l_mesg_token_tbl
3288 , x_mesg_token_tbl => l_out_mesg_token_tbl
3289 ) ;
3290 l_mesg_token_tbl := l_out_mesg_token_tbl;
3291
3292 -- Return the status and message table.
3293 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
3294 x_mesg_token_tbl := l_mesg_token_tbl ;
3295
3296 END Check_Attributes;
3297
3298 /*********************************************************************
3299 * Procedure : Check_Required
3300 * Parameters IN : Work Order column record
3301 * Parameters OUT NOCOPY: Mesg Token Table
3302 * Return_Status
3303 * Purpose :
3304 **********************************************************************/
3305
3306 PROCEDURE Check_Required
3307 ( p_eam_wo_rec IN EAM_PROCESS_WO_PUB.eam_wo_rec_type
3308 , x_return_status OUT NOCOPY VARCHAR2
3309 , x_Mesg_Token_Tbl OUT NOCOPY EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type
3310 )
3311 IS
3312 l_Mesg_Token_Tbl EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type;
3313 l_out_Mesg_Token_Tbl EAM_ERROR_MESSAGE_PVT.Mesg_Token_Tbl_Type;
3314 l_Token_Tbl EAM_ERROR_MESSAGE_PVT.Token_Tbl_Type;
3315 BEGIN
3316
3317 x_return_status := FND_API.G_RET_STS_SUCCESS;
3318
3319 IF p_eam_wo_rec.organization_id IS NULL
3320 THEN
3321 l_token_tbl(1).token_name := 'WIP_ENTITY_NAME';
3322 l_token_tbl(1).token_value := p_eam_wo_rec.wip_entity_name;
3323
3324 l_out_mesg_token_tbl := l_mesg_token_tbl;
3325 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
3326 ( p_message_name => 'EAM_WO_ORG_REQUIRED'
3327 , p_token_tbl => l_Token_tbl
3328 , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
3329 , x_Mesg_Token_Tbl => l_out_Mesg_Token_Tbl
3330 );
3331 l_mesg_token_tbl := l_out_mesg_token_tbl;
3332
3333 x_return_status := FND_API.G_RET_STS_ERROR;
3334
3335 END IF;
3336
3337 IF (p_eam_wo_rec.asset_number IS NULL) AND
3338 (p_eam_wo_rec.rebuild_item_id IS NULL) AND
3339 (p_eam_wo_rec.maintenance_object_id IS NULL)
3340 THEN
3341 l_token_tbl(1).token_name := 'WIP_ENTITY_NAME';
3342 l_token_tbl(1).token_value := p_eam_wo_rec.wip_entity_name;
3343
3344 l_out_mesg_token_tbl := l_mesg_token_tbl;
3345 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
3346 ( p_message_name => 'EAM_WO_MAINT_ASSET_REQUIRED'
3347 , p_token_tbl => l_Token_tbl
3348 , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
3349 , x_Mesg_Token_Tbl => l_out_Mesg_Token_Tbl
3350 );
3351 l_mesg_token_tbl := l_out_mesg_token_tbl;
3352
3353 x_return_status := FND_API.G_RET_STS_ERROR;
3354
3355 END IF;
3356
3357
3358 IF p_eam_wo_rec.class_code IS NULL AND p_eam_wo_rec.class_code = FND_API.G_MISS_CHAR
3359 THEN
3360 l_token_tbl(1).token_name := 'WIP_ENTITY_NAME';
3361 l_token_tbl(1).token_value := p_eam_wo_rec.wip_entity_name;
3362
3363 l_out_mesg_token_tbl := l_mesg_token_tbl;
3364 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
3365 ( p_message_name => 'EAM_WO_WAC_REQUIRED'
3366 , p_token_tbl => l_Token_tbl
3367 , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
3368 , x_Mesg_Token_Tbl => l_out_Mesg_Token_Tbl
3369 );
3370 l_mesg_token_tbl := l_out_mesg_token_tbl;
3371
3372 x_return_status := FND_API.G_RET_STS_ERROR;
3373
3374 END IF;
3375
3376
3377
3378 -- agaurav - Added the check that owning_department is not mandatory
3379 -- - in the statuses DRAFT and UNRELEASED.
3380
3381 IF p_eam_wo_rec.status_type not in (wip_constants.draft, wip_constants.unreleased,wip_constants.cancelled, wip_constants.hold)
3382 THEN
3383 IF p_eam_wo_rec.owning_department IS NULL
3384 THEN
3385 l_token_tbl(1).token_name := 'WIP_ENTITY_NAME';
3386 l_token_tbl(1).token_value := p_eam_wo_rec.wip_entity_name;
3387
3388 l_out_mesg_token_tbl := l_mesg_token_tbl;
3389 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
3390 ( p_message_name => 'EAM_WO_DEPT_REQUIRED'
3391 , p_token_tbl => l_Token_tbl
3392 , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
3393 , x_Mesg_Token_Tbl => l_out_Mesg_Token_Tbl
3394 );
3395 l_mesg_token_tbl := l_out_mesg_token_tbl;
3396
3397 x_return_status := FND_API.G_RET_STS_ERROR;
3398
3399 END IF;
3400 END IF;
3401
3402
3403 IF p_eam_wo_rec.wip_entity_id IS NULL
3404 THEN
3405 l_token_tbl(1).token_name := 'WIP_ENTITY_NAME';
3406 l_token_tbl(1).token_value := p_eam_wo_rec.wip_entity_name;
3407
3408 l_out_mesg_token_tbl := l_mesg_token_tbl;
3409 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
3410 ( p_message_name => 'EAM_WO_WIP_ENTITY_ID_REQUIRED'
3411 , p_token_tbl => l_Token_tbl
3412 , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
3413 , x_Mesg_Token_Tbl => l_out_Mesg_Token_Tbl
3414 );
3415 l_mesg_token_tbl := l_out_mesg_token_tbl;
3416
3417 x_return_status := FND_API.G_RET_STS_ERROR;
3418
3419 END IF;
3420
3421 IF p_eam_wo_rec.wip_entity_name IS NULL
3422 THEN
3423 l_token_tbl(1).token_name := 'WIP_ENTITY_NAME';
3424 l_token_tbl(1).token_value := p_eam_wo_rec.wip_entity_name;
3425
3426 l_out_mesg_token_tbl := l_mesg_token_tbl;
3427 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
3428 ( p_message_name => 'EAM_WO_WIP_NAME_REQUIRED'
3429 , p_token_tbl => l_Token_tbl
3430 , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
3431 , x_Mesg_Token_Tbl => l_out_Mesg_Token_Tbl
3432 );
3433 l_mesg_token_tbl := l_out_mesg_token_tbl;
3434
3435 x_return_status := FND_API.G_RET_STS_ERROR;
3436
3437 END IF;
3438
3439 IF p_eam_wo_rec.status_type IS NULL
3440 THEN
3441 l_token_tbl(1).token_name := 'WIP_ENTITY_NAME';
3442 l_token_tbl(1).token_value := p_eam_wo_rec.wip_entity_name;
3443
3444 l_out_mesg_token_tbl := l_mesg_token_tbl;
3445 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
3446 ( p_message_name => 'EAM_WO_STATUS_TYPE_REQUIRED'
3447 , p_token_tbl => l_Token_tbl
3448 , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
3449 , x_Mesg_Token_Tbl => l_out_Mesg_Token_Tbl
3450 );
3451 l_mesg_token_tbl := l_out_mesg_token_tbl;
3452
3453 x_return_status := FND_API.G_RET_STS_ERROR;
3454
3455 END IF;
3456
3457
3458 IF p_eam_wo_rec.job_quantity IS NULL
3459 THEN
3460 l_token_tbl(1).token_name := 'WIP_ENTITY_NAME';
3461 l_token_tbl(1).token_value := p_eam_wo_rec.wip_entity_name;
3462
3463 l_out_mesg_token_tbl := l_mesg_token_tbl;
3464 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
3465 ( p_message_name => 'EAM_WO_JOB_QTY_REQUIRED'
3466 , p_token_tbl => l_Token_tbl
3467 , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
3468 , x_Mesg_Token_Tbl => l_out_Mesg_Token_Tbl
3469 );
3470 l_mesg_token_tbl := l_out_mesg_token_tbl;
3471
3472 x_return_status := FND_API.G_RET_STS_ERROR;
3473
3474 END IF;
3475
3476
3477 IF p_eam_wo_rec.firm_planned_flag IS NULL
3478 THEN
3479 l_token_tbl(1).token_name := 'WIP_ENTITY_NAME';
3480 l_token_tbl(1).token_value := p_eam_wo_rec.wip_entity_name;
3481
3482 l_out_mesg_token_tbl := l_mesg_token_tbl;
3483 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
3484 ( p_message_name => 'EAM_WO_FIRM_FLAG_REQUIRED'
3485 , p_token_tbl => l_Token_tbl
3486 , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
3487 , x_Mesg_Token_Tbl => l_out_Mesg_Token_Tbl
3488 );
3489 l_mesg_token_tbl := l_out_mesg_token_tbl;
3490
3491 x_return_status := FND_API.G_RET_STS_ERROR;
3492
3493 END IF;
3494
3495 IF p_eam_wo_rec.wip_supply_type IS NULL
3496 THEN
3497 l_token_tbl(1).token_name := 'WIP_ENTITY_NAME';
3498 l_token_tbl(1).token_value := p_eam_wo_rec.wip_entity_name;
3499
3500 l_out_mesg_token_tbl := l_mesg_token_tbl;
3501 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
3502 ( p_message_name => 'EAM_WO_SUPPLY_TYPE_REQUIRED'
3503 , p_token_tbl => l_Token_tbl
3504 , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
3505 , x_Mesg_Token_Tbl => l_out_Mesg_Token_Tbl
3506 );
3507 l_mesg_token_tbl := l_out_mesg_token_tbl;
3508
3509 x_return_status := FND_API.G_RET_STS_ERROR;
3510
3511 END IF;
3512
3513 IF p_eam_wo_rec.scheduled_start_date IS NULL
3514 THEN
3515 l_token_tbl(1).token_name := 'WIP_ENTITY_NAME';
3516 l_token_tbl(1).token_value := p_eam_wo_rec.wip_entity_name;
3517
3518 l_out_mesg_token_tbl := l_mesg_token_tbl;
3519 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
3520 ( p_message_name => 'EAM_WO_START_DATE_REQUIRED'
3521 , p_token_tbl => l_Token_tbl
3522 , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
3523 , x_Mesg_Token_Tbl => l_out_Mesg_Token_Tbl
3524 );
3525 l_mesg_token_tbl := l_out_mesg_token_tbl;
3526
3527 x_return_status := FND_API.G_RET_STS_ERROR;
3528
3529 END IF;
3530
3531 IF p_eam_wo_rec.scheduled_completion_date IS NULL
3532 THEN
3533 l_token_tbl(1).token_name := 'WIP_ENTITY_NAME';
3534 l_token_tbl(1).token_value := p_eam_wo_rec.wip_entity_name;
3535
3536 l_out_mesg_token_tbl := l_mesg_token_tbl;
3537 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
3538 ( p_message_name => 'EAM_WO_COMPL_DATE_REQUIRED'
3539 , p_token_tbl => l_Token_tbl
3540 , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
3541 , x_Mesg_Token_Tbl => l_out_Mesg_Token_Tbl
3542 );
3543 l_mesg_token_tbl := l_out_mesg_token_tbl;
3544
3545 x_return_status := FND_API.G_RET_STS_ERROR;
3546
3547 END IF;
3548
3549 IF p_eam_wo_rec.due_date IS NULL AND p_eam_wo_rec.requested_start_date IS NULL
3550 THEN
3551 l_token_tbl(1).token_name := 'WIP_ENTITY_NAME';
3552 l_token_tbl(1).token_value := p_eam_wo_rec.wip_entity_name;
3553
3554 l_out_mesg_token_tbl := l_mesg_token_tbl;
3555 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
3556 ( p_message_name => 'EAM_WO_DATE_REQUIRED'
3557 , p_token_tbl => l_Token_tbl
3558 , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
3559 , x_Mesg_Token_Tbl => l_out_Mesg_Token_Tbl
3560 );
3561 l_mesg_token_tbl := l_out_mesg_token_tbl;
3562
3563 x_return_status := FND_API.G_RET_STS_ERROR;
3564
3565 END IF;
3566
3567 IF p_eam_wo_rec.maintenance_object_source IS NULL
3568 THEN
3569 l_token_tbl(1).token_name := 'WIP_ENTITY_NAME';
3570 l_token_tbl(1).token_value := p_eam_wo_rec.wip_entity_name;
3571
3572 l_out_mesg_token_tbl := l_mesg_token_tbl;
3573 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
3574 ( p_message_name => 'EAM_WO_MAINT_OBJ_SRC_REQUIRED'
3575 , p_token_tbl => l_Token_tbl
3576 , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
3577 , x_Mesg_Token_Tbl => l_out_Mesg_Token_Tbl
3578 );
3579 l_mesg_token_tbl := l_out_mesg_token_tbl;
3580
3581 x_return_status := FND_API.G_RET_STS_ERROR;
3582
3583 END IF;
3584
3585
3586 IF p_eam_wo_rec.maintenance_object_type IS NOT NULL and
3587 p_eam_wo_rec.maintenance_object_id IS NULL
3588 THEN
3589 l_token_tbl(1).token_name := 'WIP_ENTITY_NAME';
3590 l_token_tbl(1).token_value := p_eam_wo_rec.wip_entity_name;
3591
3592 l_out_mesg_token_tbl := l_mesg_token_tbl;
3593 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
3594 ( p_message_name => 'EAM_WO_MAINT_OBJ_ID_REQUIRED'
3595 , p_token_tbl => l_Token_tbl
3596 , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
3597 , x_Mesg_Token_Tbl => l_out_Mesg_Token_Tbl
3598 );
3599 l_mesg_token_tbl := l_out_mesg_token_tbl;
3600
3601 x_return_status := FND_API.G_RET_STS_ERROR;
3602
3603 END IF;
3604
3605
3606 IF p_eam_wo_rec.maintenance_object_type IS NULL and
3607 p_eam_wo_rec.maintenance_object_id IS NOT NULL
3608 THEN
3609 l_token_tbl(1).token_name := 'WIP_ENTITY_NAME';
3610 l_token_tbl(1).token_value := p_eam_wo_rec.wip_entity_name;
3611
3612 l_out_mesg_token_tbl := l_mesg_token_tbl;
3613 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
3614 ( p_message_name => 'EAM_WO_MAINT_OBJ_TYPE_REQUIRED'
3615 , p_token_tbl => l_Token_tbl
3616 , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
3617 , x_Mesg_Token_Tbl => l_out_Mesg_Token_Tbl
3618 );
3619 l_mesg_token_tbl := l_out_mesg_token_tbl;
3620
3621 x_return_status := FND_API.G_RET_STS_ERROR;
3622
3623 END IF;
3624
3625
3626 IF (p_eam_wo_rec.user_id IS NULL and
3627 p_eam_wo_rec.responsibility_id IS NOT NULL)
3628 or (p_eam_wo_rec.user_id IS NOT NULL and
3629 p_eam_wo_rec.responsibility_id IS NULL)
3630 THEN
3631 l_token_tbl(1).token_name := 'USER_ID';
3632 l_token_tbl(1).token_value := p_eam_wo_rec.user_id;
3633
3634 l_out_mesg_token_tbl := l_mesg_token_tbl;
3635 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
3636 ( p_message_name => 'EAM_WO_USER_RESP_REQUIRED'
3637 , p_token_tbl => l_Token_tbl
3638 , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
3639 , x_Mesg_Token_Tbl => l_out_Mesg_Token_Tbl
3640 );
3641 l_mesg_token_tbl := l_out_mesg_token_tbl;
3642
3643 x_return_status := FND_API.G_RET_STS_ERROR;
3644
3645 END IF;
3646
3647 /* Added the validation that rebuild serial number is mandatory in status Released */
3648 IF ( p_eam_wo_rec.status_type in ( WIP_CONSTANTS.RELEASED )
3649 and p_eam_wo_rec.rebuild_serial_number is NULL
3650 and p_eam_wo_rec.asset_group_id is NULL
3651 and p_eam_wo_rec.maintenance_object_type = 3
3652 and p_eam_wo_rec.maintenance_object_source = 1)
3653 THEN
3654 l_token_tbl(1).token_name := 'WIP_ENTITY_NAME';
3655 l_token_tbl(1).token_value := p_eam_wo_rec.wip_entity_name;
3656
3657 l_out_mesg_token_tbl := l_mesg_token_tbl;
3658 EAM_ERROR_MESSAGE_PVT.Add_Error_Token
3659 ( p_message_name => 'EAM_WO_REB_SR_NUM_REQUIRED'
3660 , p_token_tbl => l_Token_tbl
3661 , p_Mesg_Token_Tbl => l_Mesg_Token_Tbl
3662 , x_Mesg_Token_Tbl => l_out_Mesg_Token_Tbl
3663 );
3664 l_mesg_token_tbl := l_out_mesg_token_tbl;
3665
3666 x_return_status := FND_API.G_RET_STS_ERROR;
3667 END IF;
3668
3669
3670
3671 x_Mesg_Token_Tbl := l_Mesg_Token_Tbl;
3672
3673 END Check_Required;
3674
3675
3676 END EAM_WO_VALIDATE_PVT;