DBA Data[Home] [Help]

PACKAGE BODY: APPS.WIP_VALIDATE_SHOPFLOORMOVE

Source


1 PACKAGE BODY WIP_Validate_Shopfloormove AS
2 /* $Header: WIPLSFMB.pls 115.10 2002/11/28 11:48:15 rmahidha ship $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'WIP_Validate_Shopfloormove';
7 
8 --  Procedure Entity
9 
10 PROCEDURE Entity
11 (   x_return_status                 OUT NOCOPY VARCHAR2
12 ,   p_validation_level		    IN  NUMBER DEFAULT NULL
13 ,   p_ShopFloorMove_rec             IN  WIP_Transaction_PUB.Shopfloormove_Rec_Type
14 ,   p_old_ShopFloorMove_rec         IN  WIP_Transaction_PUB.Shopfloormove_Rec_Type
15 )
16 IS
17 l_return_status               VARCHAR2(1) := FND_API.G_RET_STS_SUCCESS;
18 BEGIN
19 
20     IF nvl(p_validation_level,WIP_Transaction_PVT.COMPLETE) = WIP_Transaction_PVT.NONE then
21 	x_return_status := FND_API.G_RET_STS_SUCCESS;
22         return;
23     END IF;
24 
25     --  Check required attributes.
26 
27     IF  p_ShopFloorMove_rec.acct_period_id IS NULL
28     THEN
29 
30         l_return_status := FND_API.G_RET_STS_ERROR;
31 
32         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
33         THEN
34 
35             FND_MESSAGE.SET_NAME('WIP','WIP_ATTRIBUTE_REQUIRED');
36             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','acct_period_id');
37             FND_MSG_PUB.Add;
38 
39         END IF;
40 
41     END IF;
42 
43     IF  p_ShopFloorMove_rec.created_by_name IS NULL
44     THEN
45 
46         l_return_status := FND_API.G_RET_STS_ERROR;
47 
48         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
49         THEN
50 
51             FND_MESSAGE.SET_NAME('WIP','WIP_ATTRIBUTE_REQUIRED');
52             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','created_by_name');
53             FND_MSG_PUB.Add;
54 
55         END IF;
56 
57     END IF;
58 
59     IF  p_ShopFloorMove_rec.entity_type IS NULL
60     THEN
61 
62         l_return_status := FND_API.G_RET_STS_ERROR;
63 
64         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
65         THEN
66 
67             FND_MESSAGE.SET_NAME('WIP','WIP_ATTRIBUTE_REQUIRED');
68             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','entity_type');
69             FND_MSG_PUB.Add;
70 
71         END IF;
72 
73     END IF;
74 
75     IF  p_ShopFloorMove_rec.fm_department_code IS NULL
76     THEN
77 
78         l_return_status := FND_API.G_RET_STS_ERROR;
79 
80         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
81         THEN
82 
83             FND_MESSAGE.SET_NAME('WIP','WIP_ATTRIBUTE_REQUIRED');
84             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','fm_department_code');
85             FND_MSG_PUB.Add;
86 
87         END IF;
88 
89     END IF;
90 
91     IF  p_ShopFloorMove_rec.fm_department_id IS NULL
92     THEN
93 
94         l_return_status := FND_API.G_RET_STS_ERROR;
95 
96         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
97         THEN
98 
99             FND_MESSAGE.SET_NAME('WIP','WIP_ATTRIBUTE_REQUIRED');
100             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','fm_department_id');
101             FND_MSG_PUB.Add;
102 
103         END IF;
104 
105     END IF;
106 
107     IF  p_ShopFloorMove_rec.fm_intraop_step_type IS NULL
108     THEN
109 
110         l_return_status := FND_API.G_RET_STS_ERROR;
111 
112         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
113         THEN
114 
115             FND_MESSAGE.SET_NAME('WIP','WIP_ATTRIBUTE_REQUIRED');
116             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','fm_intraop_step_type');
117             FND_MSG_PUB.Add;
118 
119         END IF;
120 
121     END IF;
122 
123     IF  p_ShopFloorMove_rec.fm_operation_seq_num IS NULL
124     THEN
125 
126         l_return_status := FND_API.G_RET_STS_ERROR;
127 
128         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
129         THEN
130 
131             FND_MESSAGE.SET_NAME('WIP','WIP_ATTRIBUTE_REQUIRED');
132             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','fm_operation_seq_num');
133             FND_MSG_PUB.Add;
134 
135         END IF;
136 
137     END IF;
138 
139     IF  p_ShopFloorMove_rec.organization_code IS NULL
140     THEN
141 
142         l_return_status := FND_API.G_RET_STS_ERROR;
143 
144         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
145         THEN
146 
147             FND_MESSAGE.SET_NAME('WIP','WIP_ATTRIBUTE_REQUIRED');
148             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','organization_code');
149             FND_MSG_PUB.Add;
150 
151         END IF;
152 
153     END IF;
154 
155     IF  p_ShopFloorMove_rec.last_updated_by_name IS NULL
156     THEN
157 
158         l_return_status := FND_API.G_RET_STS_ERROR;
159 
160         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
161         THEN
162 
163             FND_MESSAGE.SET_NAME('WIP','WIP_ATTRIBUTE_REQUIRED');
164             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','last_updated_by_name');
165             FND_MSG_PUB.Add;
166 
167         END IF;
168 
169     END IF;
170     IF  p_ShopFloorMove_rec.organization_id IS NULL
171     THEN
172 
173         l_return_status := FND_API.G_RET_STS_ERROR;
174 
175         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
176         THEN
177 
178             FND_MESSAGE.SET_NAME('WIP','WIP_ATTRIBUTE_REQUIRED');
179             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','organization_id');
180             FND_MSG_PUB.Add;
181 
182         END IF;
183 
184     END IF;
185 
186     IF  p_ShopFloorMove_rec.primary_item_id IS NULL
187     THEN
188 
189         l_return_status := FND_API.G_RET_STS_ERROR;
190 
191         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
192         THEN
193 
194             FND_MESSAGE.SET_NAME('WIP','WIP_ATTRIBUTE_REQUIRED');
195             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','primary_item_id');
196             FND_MSG_PUB.Add;
197 
198         END IF;
199 
200     END IF;
201 
202     IF  p_ShopFloorMove_rec.primary_quantity IS NULL
203     THEN
204 
205         l_return_status := FND_API.G_RET_STS_ERROR;
206 
207         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
208         THEN
209 
210             FND_MESSAGE.SET_NAME('WIP','WIP_ATTRIBUTE_REQUIRED');
211             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','primary_quantity');
212             FND_MSG_PUB.Add;
213 
214         END IF;
215 
216     END IF;
217 
218     IF  p_ShopFloorMove_rec.primary_uom IS NULL
219     THEN
220 
221         l_return_status := FND_API.G_RET_STS_ERROR;
222 
223         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
224         THEN
225 
226             FND_MESSAGE.SET_NAME('WIP','WIP_ATTRIBUTE_REQUIRED');
227             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','primary_uom');
228             FND_MSG_PUB.Add;
229 
230         END IF;
231 
232     END IF;
233 
234     IF  p_ShopFloorMove_rec.process_phase IS NULL
235     THEN
236 
237         l_return_status := FND_API.G_RET_STS_ERROR;
238 
239         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
240         THEN
241 
242             FND_MESSAGE.SET_NAME('WIP','WIP_ATTRIBUTE_REQUIRED');
243             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','process_phase');
244             FND_MSG_PUB.Add;
245 
246         END IF;
247 
248     END IF;
249 
250     IF  p_ShopFloorMove_rec.process_status IS NULL
251     THEN
252 
253         l_return_status := FND_API.G_RET_STS_ERROR;
254 
255         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
256         THEN
257 
258             FND_MESSAGE.SET_NAME('WIP','WIP_ATTRIBUTE_REQUIRED');
259             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','process_status');
260             FND_MSG_PUB.Add;
261 
262         END IF;
263 
264     END IF;
265 
266     IF  p_ShopFloorMove_rec.to_department_code IS NULL
267     THEN
268 
269         l_return_status := FND_API.G_RET_STS_ERROR;
270 
271         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
272         THEN
273 
274             FND_MESSAGE.SET_NAME('WIP','WIP_ATTRIBUTE_REQUIRED');
275             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','to_department_code');
276             FND_MSG_PUB.Add;
277 
278         END IF;
279 
280     END IF;
281 
282     IF  p_ShopFloorMove_rec.to_department_id IS NULL
283     THEN
284 
285         l_return_status := FND_API.G_RET_STS_ERROR;
286 
287         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
288         THEN
289 
290             FND_MESSAGE.SET_NAME('WIP','WIP_ATTRIBUTE_REQUIRED');
291             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','to_department_id');
292             FND_MSG_PUB.Add;
293 
294         END IF;
295 
296     END IF;
297 
298     IF  p_ShopFloorMove_rec.to_intraop_step_type IS NULL
299     THEN
300 
301         l_return_status := FND_API.G_RET_STS_ERROR;
302 
303         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
304         THEN
305 
306             FND_MESSAGE.SET_NAME('WIP','WIP_ATTRIBUTE_REQUIRED');
307             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','to_intraop_step_type');
308             FND_MSG_PUB.Add;
309 
310         END IF;
311 
312     END IF;
313 
314     IF  p_ShopFloorMove_rec.to_operation_seq_num IS NULL
315     THEN
316 
317         l_return_status := FND_API.G_RET_STS_ERROR;
318 
319         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
320         THEN
321 
322             FND_MESSAGE.SET_NAME('WIP','WIP_ATTRIBUTE_REQUIRED');
323             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','to_operation_seq_num');
324             FND_MSG_PUB.Add;
325 
326         END IF;
327 
328     END IF;
329 
330     IF  p_ShopFloorMove_rec.transaction_date IS NULL
331     THEN
332 
333         l_return_status := FND_API.G_RET_STS_ERROR;
334 
335         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
336         THEN
337 
338             FND_MESSAGE.SET_NAME('WIP','WIP_ATTRIBUTE_REQUIRED');
339             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','transaction_date');
340             FND_MSG_PUB.Add;
341 
342         END IF;
343 
344     END IF;
345 
346     IF  p_ShopFloorMove_rec.transaction_quantity IS NULL
347     THEN
348 
349         l_return_status := FND_API.G_RET_STS_ERROR;
350 
351         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
352         THEN
353 
354             FND_MESSAGE.SET_NAME('WIP','WIP_ATTRIBUTE_REQUIRED');
355             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','transaction_quantity');
356             FND_MSG_PUB.Add;
357 
358         END IF;
359 
360     END IF;
361 
362     IF  p_ShopFloorMove_rec.transaction_type IS NULL
363     THEN
364 
365         l_return_status := FND_API.G_RET_STS_ERROR;
366 
367         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
368         THEN
369 
370             FND_MESSAGE.SET_NAME('WIP','WIP_ATTRIBUTE_REQUIRED');
371             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','transaction_type');
372             FND_MSG_PUB.Add;
373 
374         END IF;
375 
376     END IF;
377 
378     IF  p_ShopFloorMove_rec.transaction_uom IS NULL
379     THEN
380 
381         l_return_status := FND_API.G_RET_STS_ERROR;
382 
383         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
384         THEN
385 
386             FND_MESSAGE.SET_NAME('WIP','WIP_ATTRIBUTE_REQUIRED');
387             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','transaction_uom');
388             FND_MSG_PUB.Add;
389 
390         END IF;
391 
392     END IF;
393 
394     IF  p_ShopFloorMove_rec.wip_entity_id IS NULL
395     THEN
396 
397         l_return_status := FND_API.G_RET_STS_ERROR;
398 
399         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
400         THEN
401 
402             FND_MESSAGE.SET_NAME('WIP','WIP_ATTRIBUTE_REQUIRED');
403             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','wip_entity_id');
404             FND_MSG_PUB.Add;
405 
406         END IF;
407 
408     END IF;
409 
410     IF  p_ShopFloorMove_rec.wip_entity_name IS NULL
411     THEN
412 
413         l_return_status := FND_API.G_RET_STS_ERROR;
414 
415         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
416         THEN
417 
418             FND_MESSAGE.SET_NAME('WIP','WIP_ATTRIBUTE_REQUIRED');
419             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','wip_entity_name');
420             FND_MSG_PUB.Add;
421 
422         END IF;
423 
424     END IF;
425 
426     --  Return Error if a required attribute is missing.
427 
428 
429     IF nvl(p_validation_level,WIP_Transaction_PVT.COMPLETE) <= WIP_Transaction_PVT.REQUIRED THEN
430         x_return_status := l_return_status;
431         return;
432     END IF;
433 
434     --
435     --  Check conditionally required attributes here.
436     --
437     IF  p_ShopFloorMove_rec.repetitive_schedule_id IS NOT NULL
438       AND p_ShopFloorMove_rec.line_id IS NULL
439     THEN
440         l_return_status := FND_API.G_RET_STS_ERROR;
441 
442 	WIP_Globals.Add_Error_Message(
443 				      p_message_name   => 'WIP_ATTRIBUTE_REQUIRED',
444 				      p_token1_name    => 'ATTRIBUTE',
445 				      p_token1_value   => 'line_id');
446     END IF;
447 
448 
449     IF  p_ShopFloorMove_rec.repetitive_schedule_id IS NOT NULL
450       AND p_ShopFloorMove_rec.line_code IS NULL
451     THEN
452         l_return_status := FND_API.G_RET_STS_ERROR;
453 
454 	WIP_Globals.Add_Error_Message(
455 				      p_message_name   => 'WIP_ATTRIBUTE_REQUIRED',
456 				      p_token1_name    => 'ATTRIBUTE',
457 				      p_token1_value   => 'line_code');
458     END IF;
459 
460     IF l_return_status = FND_API.G_RET_STS_ERROR THEN
461 
462         RAISE FND_API.G_EXC_ERROR;
463 
464     END IF;
465 
466 
467 
468     --
469     --  Validate attribute dependencies here.
470     --
471 
472 
473     --  Done validating entity
474 
475     x_return_status := l_return_status;
476 
477 EXCEPTION
478 
479     WHEN FND_API.G_EXC_ERROR THEN
480 
481         x_return_status := FND_API.G_RET_STS_ERROR;
482 
483     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
484 
485         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
486 
487     WHEN OTHERS THEN
488 
489         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
490 
491         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
492         THEN
493             FND_MSG_PUB.Add_Exc_Msg
494             (   G_PKG_NAME
495             ,   'Entity'
496             );
497         END IF;
498 
499 END Entity;
500 
501 --  Procedure Attributes
502 
503 PROCEDURE Attributes
504 (   x_return_status                 OUT NOCOPY VARCHAR2
505 ,   p_validation_level              IN  NUMBER DEFAULT NULL
506 ,   p_ShopFloorMove_rec             IN  WIP_Transaction_PUB.Shopfloormove_Rec_Type
507 ,   p_old_ShopFloorMove_rec         IN  WIP_Transaction_PUB.Shopfloormove_Rec_Type
508 )
509 IS
510 BEGIN
511 
512     x_return_status := FND_API.G_RET_STS_SUCCESS;
513 
514     IF nvl(p_validation_level,WIP_Transaction_PVT.COMPLETE) = WIP_Transaction_PVT.NONE then
515         return;
516     END IF;
517 
518     --  Validate ShopFloorMove attributes
519 
520     IF  p_ShopFloorMove_rec.acct_period_id IS NOT NULL AND
521         (   p_ShopFloorMove_rec.acct_period_id <>
522             p_old_ShopFloorMove_rec.acct_period_id OR
523             p_old_ShopFloorMove_rec.acct_period_id IS NULL )
524     THEN
525        IF NOT WIP_Validate.Acct_Period(p_ShopFloorMove_rec.acct_period_id,
526 				       p_ShopFloorMove_rec.organization_id) THEN
527             x_return_status := FND_API.G_RET_STS_ERROR;
528         END IF;
529     END IF;
530 
531     IF  p_ShopFloorMove_rec.created_by_name IS NOT NULL AND
532         (   p_ShopFloorMove_rec.created_by_name <>
533             p_old_ShopFloorMove_rec.created_by_name OR
534             p_old_ShopFloorMove_rec.created_by_name IS NULL )
535     THEN
536         IF NOT WIP_Validate.Created_By_Name(p_ShopFloorMove_rec.created_by_name) THEN
537             x_return_status := FND_API.G_RET_STS_ERROR;
538         END IF;
539     END IF;
540 
541     IF  p_ShopFloorMove_rec.entity_type IS NOT NULL AND
542         (   p_ShopFloorMove_rec.entity_type <>
543             p_old_ShopFloorMove_rec.entity_type OR
544             p_old_ShopFloorMove_rec.entity_type IS NULL )
545     THEN
546         IF NOT WIP_Validate.Entity_Type(p_ShopFloorMove_rec.entity_type) THEN
547             x_return_status := FND_API.G_RET_STS_ERROR;
548         END IF;
549     END IF;
550 
551     IF  p_ShopFloorMove_rec.fm_department_code IS NOT NULL AND
552         (   p_ShopFloorMove_rec.fm_department_code <>
553             p_old_ShopFloorMove_rec.fm_department_code OR
554             p_old_ShopFloorMove_rec.fm_department_code IS NULL )
555     THEN
556         IF NOT WIP_Validate.Department_Code(p_ShopFloorMove_rec.fm_department_code,
557 					    p_ShopFloorMove_rec.organization_id,
558 					    'fm_department_code') THEN
559             x_return_status := FND_API.G_RET_STS_ERROR;
560         END IF;
561     END IF;
562 
563     IF  p_ShopFloorMove_rec.fm_department_id IS NOT NULL AND
564         (   p_ShopFloorMove_rec.fm_department_id <>
565             p_old_ShopFloorMove_rec.fm_department_id OR
566             p_old_ShopFloorMove_rec.fm_department_id IS NULL )
567     THEN
568         IF NOT WIP_Validate.Department_Id(p_ShopFloorMove_rec.fm_department_id,
569 					  'fm_department_id') THEN
570             x_return_status := FND_API.G_RET_STS_ERROR;
571         END IF;
572     END IF;
573 
574     IF  p_ShopFloorMove_rec.fm_intraop_step_type IS NOT NULL AND
575         (   p_ShopFloorMove_rec.fm_intraop_step_type <>
576             p_old_ShopFloorMove_rec.fm_intraop_step_type OR
577             p_old_ShopFloorMove_rec.fm_intraop_step_type IS NULL )
578     THEN
579         IF NOT WIP_Validate.Intraop_Step_Type(p_ShopFloorMove_rec.fm_intraop_step_type,
580 					      'fm_intraop_step_type') THEN
581             x_return_status := FND_API.G_RET_STS_ERROR;
582         END IF;
583     END IF;
584 
585     IF  p_ShopFloorMove_rec.fm_operation_code IS NOT NULL AND
586         (   p_ShopFloorMove_rec.fm_operation_code <>
587             p_old_ShopFloorMove_rec.fm_operation_code OR
588             p_old_ShopFloorMove_rec.fm_operation_code IS NULL )
589     THEN
590         IF NOT WIP_Validate.Operation_Code(p_ShopFloorMove_rec.fm_operation_code,
591 				      'fm_operation_code') THEN
592             x_return_status := FND_API.G_RET_STS_ERROR;
593         END IF;
594     END IF;
595 
596     IF  p_ShopFloorMove_rec.fm_operation_seq_num IS NOT NULL AND
597         (   p_ShopFloorMove_rec.fm_operation_seq_num <>
598             p_old_ShopFloorMove_rec.fm_operation_seq_num OR
599             p_old_ShopFloorMove_rec.fm_operation_seq_num IS NULL )
600     THEN
601         IF NOT WIP_Validate.Operation_Seq_Num(p_ShopFloorMove_rec.fm_operation_seq_num,
602 					      'fm_operation_seq_num') THEN
603             x_return_status := FND_API.G_RET_STS_ERROR;
604         END IF;
605     END IF;
606 
607     IF  p_ShopFloorMove_rec.kanban_card_id IS NOT NULL AND
608         (   p_ShopFloorMove_rec.kanban_card_id <>
609             p_old_ShopFloorMove_rec.kanban_card_id OR
610             p_old_ShopFloorMove_rec.kanban_card_id IS NULL )
611     THEN
612        IF NOT WIP_Validate.Kanban_Card(p_ShopFloorMove_rec.kanban_card_id,
613 				       p_ShopFloorMove_rec.organization_id) THEN
614             x_return_status := FND_API.G_RET_STS_ERROR;
615         END IF;
616     END IF;
617 
618     IF  p_ShopFloorMove_rec.last_updated_by_name IS NOT NULL AND
619         (   p_ShopFloorMove_rec.last_updated_by_name <>
620             p_old_ShopFloorMove_rec.last_updated_by_name OR
621             p_old_ShopFloorMove_rec.last_updated_by_name IS NULL )
622     THEN
623         IF NOT WIP_Validate.Last_Updated_By_Name(p_ShopFloorMove_rec.last_updated_by_name) THEN
624             x_return_status := FND_API.G_RET_STS_ERROR;
625         END IF;
626     END IF;
627 
628     IF  p_ShopFloorMove_rec.line_code IS NOT NULL AND
629         (   p_ShopFloorMove_rec.line_code <>
630             p_old_ShopFloorMove_rec.line_code OR
631             p_old_ShopFloorMove_rec.line_code IS NULL )
632     THEN
633         IF NOT WIP_Validate.Line(p_ShopFloorMove_rec.line_code) THEN
634             x_return_status := FND_API.G_RET_STS_ERROR;
635         END IF;
636     END IF;
637 
638     IF  p_ShopFloorMove_rec.line_id IS NOT NULL AND
639         (   p_ShopFloorMove_rec.line_id <>
640             p_old_ShopFloorMove_rec.line_id OR
641             p_old_ShopFloorMove_rec.line_id IS NULL )
642     THEN
643         IF NOT WIP_Validate.Line(p_ShopFloorMove_rec.line_id) THEN
644             x_return_status := FND_API.G_RET_STS_ERROR;
645         END IF;
646     END IF;
647 
648     IF  p_ShopFloorMove_rec.organization_code IS NOT NULL AND
649         (   p_ShopFloorMove_rec.organization_code <>
650             p_old_ShopFloorMove_rec.organization_code OR
651             p_old_ShopFloorMove_rec.organization_code IS NULL )
652     THEN
653         IF NOT WIP_Validate.Organization(p_ShopFloorMove_rec.organization_id) THEN
654             x_return_status := FND_API.G_RET_STS_ERROR;
655         END IF;
656     END IF;
657 
658     IF  p_ShopFloorMove_rec.organization_id IS NOT NULL AND
659         (   p_ShopFloorMove_rec.organization_id <>
660             p_old_ShopFloorMove_rec.organization_id OR
661             p_old_ShopFloorMove_rec.organization_id IS NULL )
662     THEN
663         IF NOT WIP_Validate.Organization(p_ShopFloorMove_rec.organization_id) THEN
664             x_return_status := FND_API.G_RET_STS_ERROR;
665         END IF;
666     END IF;
667 
668     IF  p_ShopFloorMove_rec.primary_item_id IS NOT NULL AND
669         (   p_ShopFloorMove_rec.primary_item_id <>
670             p_old_ShopFloorMove_rec.primary_item_id OR
671             p_old_ShopFloorMove_rec.primary_item_id IS NULL )
672     THEN
673        IF NOT WIP_Validate.Primary_Item(p_ShopFloorMove_rec.primary_item_id,
674 					p_ShopFloorMove_rec.organization_id) THEN
675             x_return_status := FND_API.G_RET_STS_ERROR;
676         END IF;
677     END IF;
678 
679     IF  p_ShopFloorMove_rec.primary_uom IS NOT NULL AND
680         (   p_ShopFloorMove_rec.primary_uom <>
681             p_old_ShopFloorMove_rec.primary_uom OR
682             p_old_ShopFloorMove_rec.primary_uom IS NULL )
683     THEN
684         IF NOT WIP_Validate.Primary_Uom(p_ShopFloorMove_rec.primary_uom) THEN
685             x_return_status := FND_API.G_RET_STS_ERROR;
686         END IF;
687     END IF;
688 
689     IF  p_ShopFloorMove_rec.process_phase IS NOT NULL AND
690         (   p_ShopFloorMove_rec.process_phase <>
691             p_old_ShopFloorMove_rec.process_phase OR
692             p_old_ShopFloorMove_rec.process_phase IS NULL )
693     THEN
694         IF NOT WIP_Validate.Process_Phase(p_ShopFloorMove_rec.process_phase,
695 					  'WIP_MOVE_PROCESS_PHASE') THEN
696             x_return_status := FND_API.G_RET_STS_ERROR;
697         END IF;
698     END IF;
699 
700     IF  p_ShopFloorMove_rec.process_status IS NOT NULL AND
701         (   p_ShopFloorMove_rec.process_status <>
702             p_old_ShopFloorMove_rec.process_status OR
703             p_old_ShopFloorMove_rec.process_status IS NULL )
704     THEN
705         IF NOT WIP_Validate.Process_Status(p_ShopFloorMove_rec.process_status) THEN
706             x_return_status := FND_API.G_RET_STS_ERROR;
707         END IF;
708     END IF;
709 
710     IF  p_ShopFloorMove_rec.reason_id IS NOT NULL AND
711         (   p_ShopFloorMove_rec.reason_id <>
712             p_old_ShopFloorMove_rec.reason_id OR
713             p_old_ShopFloorMove_rec.reason_id IS NULL )
714     THEN
715         IF NOT WIP_Validate.Reason(p_ShopFloorMove_rec.reason_id) THEN
716             x_return_status := FND_API.G_RET_STS_ERROR;
717         END IF;
718     END IF;
719 
720     IF  p_ShopFloorMove_rec.reason_name IS NOT NULL AND
721         (   p_ShopFloorMove_rec.reason_name <>
722             p_old_ShopFloorMove_rec.reason_name OR
723             p_old_ShopFloorMove_rec.reason_name IS NULL )
724     THEN
725         IF NOT WIP_Validate.Reason_Name(p_ShopFloorMove_rec.reason_name) THEN
726             x_return_status := FND_API.G_RET_STS_ERROR;
727         END IF;
728     END IF;
729 
730     IF  p_ShopFloorMove_rec.repetitive_schedule_id IS NOT NULL AND
731         (   p_ShopFloorMove_rec.repetitive_schedule_id <>
732             p_old_ShopFloorMove_rec.repetitive_schedule_id OR
733             p_old_ShopFloorMove_rec.repetitive_schedule_id IS NULL )
734     THEN
735         IF NOT WIP_Validate.Repetitive_Schedule(p_ShopFloorMove_rec.repetitive_schedule_id) THEN
736             x_return_status := FND_API.G_RET_STS_ERROR;
737         END IF;
738     END IF;
739 
740     IF  p_ShopFloorMove_rec.scrap_account_id IS NOT NULL AND
741         (   p_ShopFloorMove_rec.scrap_account_id <>
742             p_old_ShopFloorMove_rec.scrap_account_id OR
743             p_old_ShopFloorMove_rec.scrap_account_id IS NULL )
744     THEN
745         IF NOT WIP_Validate.Scrap_Account(p_ShopFloorMove_rec.scrap_account_id) THEN
746             x_return_status := FND_API.G_RET_STS_ERROR;
747         END IF;
748     END IF;
749 
750     IF  p_ShopFloorMove_rec.to_department_code IS NOT NULL AND
751         (   p_ShopFloorMove_rec.to_department_code <>
752             p_old_ShopFloorMove_rec.to_department_code OR
753             p_old_ShopFloorMove_rec.to_department_code IS NULL )
754     THEN
755         IF NOT WIP_Validate.Department_Code(p_ShopFloorMove_rec.to_department_code,
756 					    p_ShopFloorMove_rec.organization_id,
757 					    'to_department_code') THEN
758             x_return_status := FND_API.G_RET_STS_ERROR;
759         END IF;
760     END IF;
761 
762     IF  p_ShopFloorMove_rec.to_department_id IS NOT NULL AND
763         (   p_ShopFloorMove_rec.to_department_id <>
764             p_old_ShopFloorMove_rec.to_department_id OR
765             p_old_ShopFloorMove_rec.to_department_id IS NULL )
766     THEN
767         IF NOT WIP_Validate.Department_Id(p_ShopFloorMove_rec.to_department_id,
768 					  'to_department_id') THEN
769             x_return_status := FND_API.G_RET_STS_ERROR;
770         END IF;
771     END IF;
772 
773     IF  p_ShopFloorMove_rec.to_intraop_step_type IS NOT NULL AND
774         (   p_ShopFloorMove_rec.to_intraop_step_type <>
775             p_old_ShopFloorMove_rec.to_intraop_step_type OR
776             p_old_ShopFloorMove_rec.to_intraop_step_type IS NULL )
777     THEN
778         IF NOT WIP_Validate.Intraop_Step_Type(p_ShopFloorMove_rec.to_intraop_step_type,
779 					      'to_intraop_step_type') THEN
780             x_return_status := FND_API.G_RET_STS_ERROR;
781         END IF;
782     END IF;
783 
784     IF  p_ShopFloorMove_rec.to_operation_code IS NOT NULL AND
785         (   p_ShopFloorMove_rec.to_operation_code <>
786             p_old_ShopFloorMove_rec.to_operation_code OR
787             p_old_ShopFloorMove_rec.to_operation_code IS NULL )
788     THEN
789         IF NOT WIP_Validate.Operation_Code(p_ShopFloorMove_rec.to_operation_code,
790 					   'to_operation_code') THEN
791             x_return_status := FND_API.G_RET_STS_ERROR;
792         END IF;
793     END IF;
794 
795     IF  p_ShopFloorMove_rec.to_operation_seq_num IS NOT NULL AND
796         (   p_ShopFloorMove_rec.to_operation_seq_num <>
797             p_old_ShopFloorMove_rec.to_operation_seq_num OR
798             p_old_ShopFloorMove_rec.to_operation_seq_num IS NULL )
799     THEN
800         IF NOT WIP_Validate.Operation_Seq_Num(p_ShopFloorMove_rec.to_operation_seq_num,
801 						 'to_operation_seq_num') THEN
802             x_return_status := FND_API.G_RET_STS_ERROR;
803         END IF;
804     END IF;
805 
806     IF  p_ShopFloorMove_rec.transaction_type IS NOT NULL AND
807         (   p_ShopFloorMove_rec.transaction_type <>
808             p_old_ShopFloorMove_rec.transaction_type OR
809             p_old_ShopFloorMove_rec.transaction_type IS NULL )
810     THEN
811         IF NOT WIP_Validate.Transaction_Type(p_ShopFloorMove_rec.transaction_type, 'WIP_MOVE_TRANSACTION_TYPE') THEN
812             x_return_status := FND_API.G_RET_STS_ERROR;
813         END IF;
814     END IF;
815 
816     IF  p_ShopFloorMove_rec.transaction_uom IS NOT NULL AND
817         (   p_ShopFloorMove_rec.transaction_uom <>
818             p_old_ShopFloorMove_rec.transaction_uom OR
819             p_old_ShopFloorMove_rec.transaction_uom IS NULL )
820     THEN
821         IF NOT WIP_Validate.Transaction_Uom(p_ShopFloorMove_rec.transaction_uom) THEN
822             x_return_status := FND_API.G_RET_STS_ERROR;
823         END IF;
824     END IF;
825 
826     IF  p_ShopFloorMove_rec.wip_entity_id IS NOT NULL AND
827         (   p_ShopFloorMove_rec.wip_entity_id <>
828             p_old_ShopFloorMove_rec.wip_entity_id OR
829             p_old_ShopFloorMove_rec.wip_entity_id IS NULL )
830     THEN
831         IF NOT WIP_Validate.Wip_Entity(p_ShopFloorMove_rec.wip_entity_id) THEN
832             x_return_status := FND_API.G_RET_STS_ERROR;
833         END IF;
834     END IF;
835 
836     IF  p_ShopFloorMove_rec.wip_entity_name IS NOT NULL AND
837         (   p_ShopFloorMove_rec.wip_entity_name <>
838             p_old_ShopFloorMove_rec.wip_entity_name OR
839             p_old_ShopFloorMove_rec.wip_entity_name IS NULL )
840     THEN
841        IF NOT WIP_Validate.Wip_Entity_Name(p_ShopFloorMove_rec.wip_entity_name,
842 					   p_ShopFloorMove_rec.organization_id) THEN
843             x_return_status := FND_API.G_RET_STS_ERROR;
844         END IF;
845     END IF;
846 
847 
848     --  Done validating attributes
849 
850 EXCEPTION
851 
852     WHEN FND_API.G_EXC_ERROR THEN
853 
854         x_return_status := FND_API.G_RET_STS_ERROR;
855 
856     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
857 
858         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
859 
860     WHEN OTHERS THEN
861 
862         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
863 
864         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
865         THEN
866             FND_MSG_PUB.Add_Exc_Msg
867             (   G_PKG_NAME
868             ,   'Attributes'
869             );
870         END IF;
871 
872 END Attributes;
873 
874 
875 END WIP_Validate_Shopfloormove;