DBA Data[Home] [Help]

PACKAGE BODY: APPS.OE_OE_FORM_LOT_SERIAL

Source


1 PACKAGE BODY OE_OE_Form_Lot_Serial AS
2 /* $Header: OEXFSRLB.pls 120.0 2005/05/31 22:34:38 appldev noship $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'OE_OE_Form_Lot_Serial';
7 
8 --  Global variables holding cached record.
9 
10 g_Lot_Serial_rec              OE_Order_PUB.Lot_Serial_Rec_Type;
11 g_db_Lot_Serial_rec           OE_Order_PUB.Lot_Serial_Rec_Type;
12 
13 --  Forward declaration of procedures maintaining entity record cache.
14 
15 PROCEDURE Write_Lot_Serial
16 (   p_Lot_Serial_rec                IN  OE_Order_PUB.Lot_Serial_Rec_Type
17 ,   p_db_record                     IN  BOOLEAN := FALSE
18 );
19 
20 PROCEDURE Get_Lot_Serial
21 (   p_db_record                     IN  BOOLEAN := FALSE
22 ,   p_lot_serial_id                 IN  NUMBER
23 ,   x_lot_serial_rec                IN OUT NOCOPY OE_Order_PUB.Lot_Serial_Rec_Type
24 );
25 
26 PROCEDURE Clear_Lot_Serial;
27 
28 --  Global variable holding performed operations.
29 
30 g_opr__tbl                    OE_Order_PUB.Lot_Serial_Tbl_Type;
31 
32 --  Procedure : Default_Attributes
33 --
34 
35 PROCEDURE Default_Attributes
36 ( x_return_status OUT NOCOPY VARCHAR2
37 
38 , x_msg_count OUT NOCOPY NUMBER
39 
40 , x_msg_data OUT NOCOPY VARCHAR2
41 
42 ,   p_line_id                       IN  NUMBER
43 , x_attribute1 OUT NOCOPY VARCHAR2
44 
45 , x_attribute10 OUT NOCOPY VARCHAR2
46 
47 , x_attribute11 OUT NOCOPY VARCHAR2
48 
49 , x_attribute12 OUT NOCOPY VARCHAR2
50 
51 , x_attribute13 OUT NOCOPY VARCHAR2
52 
53 , x_attribute14 OUT NOCOPY VARCHAR2
54 
55 , x_attribute15 OUT NOCOPY VARCHAR2
56 
57 , x_attribute2 OUT NOCOPY VARCHAR2
58 
59 , x_attribute3 OUT NOCOPY VARCHAR2
60 
61 , x_attribute4 OUT NOCOPY VARCHAR2
62 
63 , x_attribute5 OUT NOCOPY VARCHAR2
64 
65 , x_attribute6 OUT NOCOPY VARCHAR2
66 
67 , x_attribute7 OUT NOCOPY VARCHAR2
68 
69 , x_attribute8 OUT NOCOPY VARCHAR2
70 
71 , x_attribute9 OUT NOCOPY VARCHAR2
72 
73 , x_context OUT NOCOPY VARCHAR2
74 
75 , x_from_serial_number OUT NOCOPY VARCHAR2
76 
77 , x_line_id OUT NOCOPY NUMBER
78 
79 , x_lot_number OUT NOCOPY VARCHAR2
80 
81 -- , x_sublot_number OUT NOCOPY VARCHAR2 --OPM 2380194 INVCONV
82 
83 , x_lot_serial_id OUT NOCOPY NUMBER
84 
85 , x_quantity OUT NOCOPY NUMBER
86 
87 , x_quantity2 OUT NOCOPY NUMBER --OPM 2380194
88 
89 , x_to_serial_number OUT NOCOPY VARCHAR2
90 
91 , x_line OUT NOCOPY VARCHAR2
92 
93 , x_lot_serial OUT NOCOPY VARCHAR2
94 
95 )
96 IS
97 l_x_Lot_Serial_rec              OE_Order_PUB.Lot_Serial_Rec_Type;
98 l_Lot_Serial_val_rec          OE_Order_PUB.Lot_Serial_Val_Rec_Type;
99 l_x_Lot_Serial_tbl            OE_Order_PUB.Lot_Serial_Tbl_Type;
100 l_x_old_Lot_Serial_tbl            OE_Order_PUB.Lot_Serial_Tbl_Type;
101 l_x_Lot_Serial_val_tbl        OE_Order_PUB.Lot_Serial_Tbl_Type;
102 l_control_rec                 OE_GLOBALS.Control_Rec_Type;
103 l_return_status               VARCHAR2(1);
104 --
105 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
106 --
107 BEGIN
108 
109     -- Set the UI flag
110     OE_GLOBALS.G_UI_FLAG := TRUE;
111 
112     --  Set control flags.
113 
114     l_control_rec.controlled_operation := TRUE;
115     l_control_rec.check_security       := TRUE;
116     l_control_rec.default_attributes   := TRUE;
117     l_control_rec.change_attributes    := TRUE;
118 
119     l_control_rec.clear_dependents     := FALSE;
120     l_control_rec.validate_entity      := FALSE;
121     l_control_rec.write_to_DB          := FALSE;
122     l_control_rec.process              := FALSE;
123 
124     --  Instruct API to retain its caches
125 
126     l_control_rec.clear_api_cache      := FALSE;
127     l_control_rec.clear_api_requests   := FALSE;
128 
129     --  Load IN parameters if any exist
130     IF l_debug_level  > 0 THEN
131         oe_debug_pub.add(  'LOT_SERIAL LINE_ID'||P_LINE_ID , 1 ) ;
132     END IF;
133     l_x_Lot_Serial_rec:=OE_ORDER_PUB.G_MISS_LOT_SERIAL_REC;
134     l_x_Old_Lot_Serial_Tbl(1):=OE_ORDER_PUB.G_MISS_LOT_SERIAL_REC;
135     l_x_Lot_Serial_rec.line_id := p_line_id;
136 
137     --  Defaulting of flex values is currently done by the form.
138     --  Set flex attributes to NULL in order to avoid defaulting them.
139 
140     l_x_lot_serial_rec.attribute1                   := NULL;
141     l_x_lot_serial_rec.attribute10                  := NULL;
142     l_x_lot_serial_rec.attribute11                  := NULL;
143     l_x_lot_serial_rec.attribute12                  := NULL;
144     l_x_lot_serial_rec.attribute13                  := NULL;
145     l_x_lot_serial_rec.attribute14                  := NULL;
146     l_x_lot_serial_rec.attribute15                  := NULL;
147     l_x_lot_serial_rec.attribute2                   := NULL;
148     l_x_lot_serial_rec.attribute3                   := NULL;
149     l_x_lot_serial_rec.attribute4                   := NULL;
150     l_x_lot_serial_rec.attribute5                   := NULL;
151     l_x_lot_serial_rec.attribute6                   := NULL;
152     l_x_lot_serial_rec.attribute7                   := NULL;
153     l_x_lot_serial_rec.attribute8                   := NULL;
154     l_x_lot_serial_rec.attribute9                   := NULL;
155     l_x_lot_serial_rec.context                      := NULL;
156 
157     --  Set Operation to Create
158 
159     l_x_Lot_Serial_rec.operation := OE_GLOBALS.G_OPR_CREATE;
160 
161     --  Populate Lot_Serial table
162 
163     l_x_Lot_Serial_tbl(1) := l_x_Lot_Serial_rec;
164 
165     IF l_debug_level  > 0 THEN
166         oe_debug_pub.add(  'LOT_SERIAL CONTROLLER - DEFAULT ATTRIBUTES - CALLING PROCESS' , 2 ) ;
167     END IF;
168 
169     --  Call OE_Order_PVT.Process_order
170 
171     OE_Order_PVT.Lot_Serials
172     (   p_validation_level            => FND_API.G_VALID_LEVEL_FULL
173      ,   p_init_msg_list               => FND_API.G_TRUE
174     ,   p_control_rec                 => l_control_rec
175     ,   p_x_Lot_Serial_tbl            => l_x_Lot_Serial_tbl
176     ,   p_x_old_Lot_Serial_tbl        => l_x_old_Lot_Serial_tbl
177     ,   x_return_status               => l_return_status
178     );
179 
180     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
181         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
182     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
183         RAISE FND_API.G_EXC_ERROR;
184     END IF;
185 
186 
187     --  Unload out tbl
188 
189     l_x_Lot_Serial_rec := l_x_Lot_Serial_tbl(1);
190 
191     --  Load OUT parameters.
192 
193     x_attribute1                   := l_x_Lot_Serial_rec.attribute1;
194     x_attribute10                  := l_x_Lot_Serial_rec.attribute10;
195     x_attribute11                  := l_x_Lot_Serial_rec.attribute11;
196     x_attribute12                  := l_x_Lot_Serial_rec.attribute12;
197     x_attribute13                  := l_x_Lot_Serial_rec.attribute13;
198     x_attribute14                  := l_x_Lot_Serial_rec.attribute14;
199     x_attribute15                  := l_x_Lot_Serial_rec.attribute15;
200     x_attribute2                   := l_x_Lot_Serial_rec.attribute2;
201     x_attribute3                   := l_x_Lot_Serial_rec.attribute3;
202     x_attribute4                   := l_x_Lot_Serial_rec.attribute4;
203     x_attribute5                   := l_x_Lot_Serial_rec.attribute5;
204     x_attribute6                   := l_x_Lot_Serial_rec.attribute6;
205     x_attribute7                   := l_x_Lot_Serial_rec.attribute7;
206     x_attribute8                   := l_x_Lot_Serial_rec.attribute8;
207     x_attribute9                   := l_x_Lot_Serial_rec.attribute9;
208     x_context                      := l_x_Lot_Serial_rec.context;
209     x_from_serial_number           := l_x_Lot_Serial_rec.from_serial_number;
210     x_line_id                      := l_x_Lot_Serial_rec.line_id;
211     x_lot_number                   := l_x_Lot_Serial_rec.lot_number;
212 --    x_sublot_number                := l_x_Lot_Serial_rec.sublot_number; --OPM 2380194  INVCONV
213     x_lot_serial_id                := l_x_Lot_Serial_rec.lot_serial_id;
214     x_quantity                     := l_x_Lot_Serial_rec.quantity;
215     x_quantity2                    := l_x_Lot_Serial_rec.quantity2; -- OPM 2380194
216     x_to_serial_number             := l_x_Lot_Serial_rec.to_serial_number;
217 
218     --  Load display out parameters if any
219 
220     l_Lot_Serial_val_rec := OE_Lot_Serial_Util.Get_Values
221     (   p_Lot_Serial_rec              => l_x_Lot_Serial_rec
222     );
223     x_line                         := l_Lot_Serial_val_rec.line;
224     x_lot_serial                   := l_Lot_Serial_val_rec.lot_serial;
225 
226     --  Write to cache.
227     --  Set db_flag to False before writing to cache
228 
229     l_x_Lot_Serial_rec.db_flag := FND_API.G_FALSE;
230 
231     Write_Lot_Serial
232     (   p_Lot_Serial_rec              => l_x_Lot_Serial_rec
233     );
234 
235     -- Re-set the UI flag to FALSE
236     OE_GLOBALS.G_UI_FLAG := FALSE;
237 
238     --  Set return status.
239 
240     x_return_status := FND_API.G_RET_STS_SUCCESS;
241 
242     --  Get message count and data
243 
244     OE_MSG_PUB.Count_And_Get
245     (   p_count                       => x_msg_count
246     ,   p_data                        => x_msg_data
247     );
248 
249     IF l_debug_level  > 0 THEN
250         oe_debug_pub.add(  'EXITING OE_OE_FORM_LOT_SERIAL.DEFAULT_ATTRIBUTES' , 1 ) ;
251     END IF;
252 
253 EXCEPTION
254 
255     WHEN FND_API.G_EXC_ERROR THEN
256 
257 	   OE_GLOBALS.G_UI_FLAG := FALSE;
258 
259         x_return_status := FND_API.G_RET_STS_ERROR;
260 
261         --  Get message count and data
262 
263         OE_MSG_PUB.Count_And_Get
264         (   p_count                       => x_msg_count
265         ,   p_data                        => x_msg_data
266         );
267 
268     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
269 
270 	   OE_GLOBALS.G_UI_FLAG := FALSE;
271 
272         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
273 
274         --  Get message count and data
275 
276         OE_MSG_PUB.Count_And_Get
277         (   p_count                       => x_msg_count
278         ,   p_data                        => x_msg_data
279         );
280 
281     WHEN OTHERS THEN
282 
283 	   OE_GLOBALS.G_UI_FLAG := FALSE;
284 
285         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
286 
287         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
288         THEN
289             OE_MSG_PUB.Add_Exc_Msg
290             (   G_PKG_NAME
291             ,   'Default_Attributes'
292             );
293         END IF;
294 
295         --  Get message count and data
296 
297         OE_MSG_PUB.Count_And_Get
298         (   p_count                       => x_msg_count
299         ,   p_data                        => x_msg_data
300         );
301 
302 END Default_Attributes;
303 
304 --  Procedure   :   Change_Attribute
305 --
306 
307 PROCEDURE Change_Attribute
308 ( x_return_status OUT NOCOPY VARCHAR2
309 
310 , x_msg_count OUT NOCOPY NUMBER
311 
312 , x_msg_data OUT NOCOPY VARCHAR2
313 
314 ,   p_lot_serial_id                 IN  NUMBER
315 ,   p_attr_id                       IN  NUMBER
316 ,   p_attr_value                    IN  VARCHAR2
317 ,   p_attribute1                    IN  VARCHAR2
318 ,   p_attribute10                   IN  VARCHAR2
319 ,   p_attribute11                   IN  VARCHAR2
320 ,   p_attribute12                   IN  VARCHAR2
321 ,   p_attribute13                   IN  VARCHAR2
322 ,   p_attribute14                   IN  VARCHAR2
323 ,   p_attribute15                   IN  VARCHAR2
324 ,   p_attribute2                    IN  VARCHAR2
325 ,   p_attribute3                    IN  VARCHAR2
326 ,   p_attribute4                    IN  VARCHAR2
327 ,   p_attribute5                    IN  VARCHAR2
328 ,   p_attribute6                    IN  VARCHAR2
329 ,   p_attribute7                    IN  VARCHAR2
330 ,   p_attribute8                    IN  VARCHAR2
331 ,   p_attribute9                    IN  VARCHAR2
332 ,   p_context                       IN  VARCHAR2
333 , x_attribute1 OUT NOCOPY VARCHAR2
334 
335 , x_attribute10 OUT NOCOPY VARCHAR2
336 
337 , x_attribute11 OUT NOCOPY VARCHAR2
338 
339 , x_attribute12 OUT NOCOPY VARCHAR2
340 
341 , x_attribute13 OUT NOCOPY VARCHAR2
342 
343 , x_attribute14 OUT NOCOPY VARCHAR2
344 
345 , x_attribute15 OUT NOCOPY VARCHAR2
346 
347 , x_attribute2 OUT NOCOPY VARCHAR2
348 
349 , x_attribute3 OUT NOCOPY VARCHAR2
350 
351 , x_attribute4 OUT NOCOPY VARCHAR2
352 
353 , x_attribute5 OUT NOCOPY VARCHAR2
354 
355 , x_attribute6 OUT NOCOPY VARCHAR2
356 
357 , x_attribute7 OUT NOCOPY VARCHAR2
358 
359 , x_attribute8 OUT NOCOPY VARCHAR2
360 
361 , x_attribute9 OUT NOCOPY VARCHAR2
362 
363 , x_context OUT NOCOPY VARCHAR2
364 
365 , x_from_serial_number OUT NOCOPY VARCHAR2
366 
367 , x_line_id OUT NOCOPY NUMBER
368 
369 , x_lot_number OUT NOCOPY VARCHAR2
370 
371 -- , x_sublot_number OUT NOCOPY VARCHAR2 --OPM 2380194  invconv
372 
373 , x_lot_serial_id OUT NOCOPY NUMBER
374 
375 , x_quantity OUT NOCOPY NUMBER
376 
377 , x_quantity2 OUT NOCOPY NUMBER   --OPM 2380194
378 
379 , x_to_serial_number OUT NOCOPY VARCHAR2
380 
381 , x_line OUT NOCOPY VARCHAR2
382 
383 , x_lot_serial OUT NOCOPY VARCHAR2
384 
385 )
386 IS
387 l_old_Lot_Serial_rec          OE_Order_PUB.Lot_Serial_Rec_Type;
388 l_Lot_Serial_val_rec          OE_Order_PUB.Lot_Serial_Val_Rec_Type;
389 l_x_old_Lot_Serial_tbl          OE_Order_PUB.Lot_Serial_Tbl_Type;
390 l_control_rec                 OE_GLOBALS.Control_Rec_Type;
391 l_return_status               VARCHAR2(1);
392 l_x_Lot_Serial_rec            OE_Order_PUB.Lot_Serial_Rec_Type;
393 l_x_Lot_Serial_tbl            OE_Order_PUB.Lot_Serial_Tbl_Type;
394 --
395 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
396 --
397 BEGIN
398 
399     IF l_debug_level  > 0 THEN
400         oe_debug_pub.add(  'ENTERING OE_OE_FORM_LOT_SERIAL.CHANGE_ATTRIBUTES' , 1 ) ;
401     END IF;
402     -- Set the UI flag
403     OE_GLOBALS.G_UI_FLAG := TRUE;
404 
405     --  Set control flags.
406 
407     l_control_rec.controlled_operation := TRUE;
408     l_control_rec.check_security       := TRUE;
409     l_control_rec.clear_dependents     := TRUE;
410     l_control_rec.default_attributes   := TRUE;
411     l_control_rec.change_attributes    := TRUE;
412 
413     l_control_rec.validate_entity      := FALSE;
414     l_control_rec.write_to_DB          := FALSE;
415     l_control_rec.process              := FALSE;
416     l_control_rec.process_entity       := OE_GLOBALS.G_ENTITY_LOT_SERIAL;
417 
418     --  Instruct API to retain its caches
419 
420     l_control_rec.clear_api_cache      := FALSE;
421     l_control_rec.clear_api_requests   := FALSE;
422 
423     --  Read Lot_Serial from cache
424 
425      Get_Lot_Serial
426     (   p_db_record                   => FALSE
427     ,   p_lot_serial_id               => p_lot_serial_id
428     ,   x_lot_serial_rec              => l_x_Lot_Serial_rec
429     );
430 
431     IF l_debug_level  > 0 THEN
432         oe_debug_pub.add(  'CHANGE_ATTRIBUTES ATTR VALUE'||P_ATTR_VALUE , 1 ) ;
433     END IF;
434 
435     l_old_Lot_Serial_rec := l_x_Lot_Serial_rec;
436 
437     IF p_attr_id = OE_Lot_Serial_Util.G_FROM_SERIAL_NUMBER THEN
438         l_x_lot_serial_rec.from_serial_number := p_attr_value;
439     ELSIF p_attr_id = OE_Lot_Serial_Util.G_LINE THEN
440         l_x_lot_serial_rec.line_id := TO_NUMBER(p_attr_value);
441     ELSIF p_attr_id = OE_Lot_Serial_Util.G_LOT_NUMBER THEN
442         l_x_lot_serial_rec.lot_number := p_attr_value;
443     /*ELSIF p_attr_id = OE_Lot_Serial_Util.G_SUBLOT_NUMBER THEN --OPM 2380194 INVCONV
444         IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510'
445    	 THEN
446             l_x_lot_serial_rec.sublot_number := p_attr_value;
447          END IF;    */
448     ELSIF p_attr_id = OE_Lot_Serial_Util.G_LOT_SERIAL THEN
449         l_x_lot_serial_rec.lot_serial_id := TO_NUMBER(p_attr_value);
450     ELSIF p_attr_id = OE_Lot_Serial_Util.G_QUANTITY THEN
451     IF l_debug_level  > 0 THEN
452         oe_debug_pub.add(  'IN QUANTITY CHANGE' , 1 ) ;
453     END IF;
454         l_x_lot_serial_rec.quantity := TO_NUMBER(p_attr_value);
455     ELSIF p_attr_id = OE_Lot_Serial_Util.G_QUANTITY2 THEN     --OPM 2380194
456     	IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510'
457    	 THEN
458     		l_x_lot_serial_rec.quantity2 := TO_NUMBER(p_attr_value);
459     	END IF;
460     ELSIF p_attr_id = OE_Lot_Serial_Util.G_TO_SERIAL_NUMBER THEN
461         l_x_lot_serial_rec.to_serial_number := p_attr_value;
462     ELSIF p_attr_id = OE_Lot_Serial_Util.G_ATTRIBUTE1
463     OR     p_attr_id = OE_Lot_Serial_Util.G_ATTRIBUTE10
464     OR     p_attr_id = OE_Lot_Serial_Util.G_ATTRIBUTE12
465     OR     p_attr_id = OE_Lot_Serial_Util.G_ATTRIBUTE13
466     OR     p_attr_id = OE_Lot_Serial_Util.G_ATTRIBUTE14
467     OR     p_attr_id = OE_Lot_Serial_Util.G_ATTRIBUTE15
468     OR     p_attr_id = OE_Lot_Serial_Util.G_ATTRIBUTE2
469     OR     p_attr_id = OE_Lot_Serial_Util.G_ATTRIBUTE3
470     OR     p_attr_id = OE_Lot_Serial_Util.G_ATTRIBUTE4
471     OR     p_attr_id = OE_Lot_Serial_Util.G_ATTRIBUTE5
472     OR     p_attr_id = OE_Lot_Serial_Util.G_ATTRIBUTE6
473     OR     p_attr_id = OE_Lot_Serial_Util.G_ATTRIBUTE7
474     OR     p_attr_id = OE_Lot_Serial_Util.G_ATTRIBUTE8
475     OR     p_attr_id = OE_Lot_Serial_Util.G_ATTRIBUTE9
476     OR     p_attr_id = OE_Lot_Serial_Util.G_CONTEXT
477     THEN
478 
479         l_x_lot_serial_rec.attribute1    := p_attribute1;
480         l_x_lot_serial_rec.attribute10   := p_attribute10;
481         l_x_lot_serial_rec.attribute12   := p_attribute12;
482         l_x_lot_serial_rec.attribute13   := p_attribute13;
483         l_x_lot_serial_rec.attribute14   := p_attribute14;
484         l_x_lot_serial_rec.attribute15   := p_attribute15;
485         l_x_lot_serial_rec.attribute2    := p_attribute2;
486         l_x_lot_serial_rec.attribute3    := p_attribute3;
487         l_x_lot_serial_rec.attribute4    := p_attribute4;
488         l_x_lot_serial_rec.attribute5    := p_attribute5;
489         l_x_lot_serial_rec.attribute6    := p_attribute6;
490         l_x_lot_serial_rec.attribute7    := p_attribute7;
491         l_x_lot_serial_rec.attribute8    := p_attribute8;
492         l_x_lot_serial_rec.attribute9    := p_attribute9;
493         l_x_lot_serial_rec.context       := p_context;
494 
495     ELSE
496         --  Unexpected error, unrecognized attribute
497 
498         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
499         THEN
500             OE_MSG_PUB.Add_Exc_Msg
501             (   G_PKG_NAME
502             ,   'Change_Attribute'
503             ,   'Unrecognized attribute'
504             );
505         END IF;
506 
507 
508         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
509 
510     END IF;
511 
512     --  Set Operation.
513     IF FND_API.To_Boolean(l_x_Lot_Serial_rec.db_flag) THEN
514         l_x_Lot_Serial_rec.operation := OE_GLOBALS.G_OPR_UPDATE;
515     ELSE
516         l_x_Lot_Serial_rec.operation := OE_GLOBALS.G_OPR_CREATE;
517     END IF;
518 
519     --  Populate Lot_Serial table
520     l_x_Lot_Serial_tbl(1) := l_x_Lot_Serial_rec;
521     l_x_old_Lot_Serial_tbl(1) := l_old_Lot_Serial_rec;
522 
523     --  Call OE_Order_PVT.Process_order
524 
525   IF l_debug_level  > 0 THEN
526       oe_debug_pub.add(  'BEFORE CALLING OE_ORDER_PVT.LOT_SERIALS'||TO_CHAR ( L_X_LOT_SERIAL_TBL ( 1 ) .QUANTITY ) , 1 ) ;
527   END IF;
528     OE_Order_PVT.Lot_Serials
529     (
530         p_validation_level            => FND_API.G_VALID_LEVEL_NONE
531     ,   p_init_msg_list               => FND_API.G_TRUE
532     ,   p_control_rec                 => l_control_rec
533     ,   p_x_Lot_Serial_tbl            => l_x_Lot_Serial_tbl
534     ,   p_x_old_Lot_Serial_tbl        => l_x_old_Lot_Serial_tbl
535     ,   x_return_status               => l_return_status
536     );
537 
538     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
539         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
540     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
541         RAISE FND_API.G_EXC_ERROR;
542     END IF;
543 
544   IF l_debug_level  > 0 THEN
545       oe_debug_pub.add(  'AFTER CALLING OE_ORDER_PVT.LOT_SERIALS'||TO_CHAR ( L_X_LOT_SERIAL_TBL ( 1 ) .QUANTITY ) , 1 ) ;
546   END IF;
547 
548     --  Unload out tbl
549 
550     l_x_Lot_Serial_rec := l_x_Lot_Serial_tbl(1);
551 
552     --  Init OUT parameters to missing.
553 
554     x_attribute1                   := FND_API.G_MISS_CHAR;
555     x_attribute10                  := FND_API.G_MISS_CHAR;
556     x_attribute11                  := FND_API.G_MISS_CHAR;
557     x_attribute12                  := FND_API.G_MISS_CHAR;
558     x_attribute13                  := FND_API.G_MISS_CHAR;
559     x_attribute14                  := FND_API.G_MISS_CHAR;
560     x_attribute15                  := FND_API.G_MISS_CHAR;
561     x_attribute2                   := FND_API.G_MISS_CHAR;
562     x_attribute3                   := FND_API.G_MISS_CHAR;
563     x_attribute4                   := FND_API.G_MISS_CHAR;
564     x_attribute5                   := FND_API.G_MISS_CHAR;
565     x_attribute6                   := FND_API.G_MISS_CHAR;
566     x_attribute7                   := FND_API.G_MISS_CHAR;
567     x_attribute8                   := FND_API.G_MISS_CHAR;
568     x_attribute9                   := FND_API.G_MISS_CHAR;
569     x_context                      := FND_API.G_MISS_CHAR;
570     x_from_serial_number           := FND_API.G_MISS_CHAR;
571     x_line_id                      := FND_API.G_MISS_NUM;
572     x_lot_number                   := FND_API.G_MISS_CHAR;
573 --    x_sublot_number                := FND_API.G_MISS_CHAR; --OPM 2380194     INVCONV
574     x_lot_serial_id                := FND_API.G_MISS_NUM;
575     x_quantity                     := FND_API.G_MISS_NUM;
576     x_quantity2                    := FND_API.G_MISS_NUM;  --OPM 2380194
577     x_to_serial_number             := FND_API.G_MISS_CHAR;
578     x_line                         := FND_API.G_MISS_CHAR;
579     x_lot_serial                   := FND_API.G_MISS_CHAR;
580 
581     --  Load display out parameters if any
582 
583     l_Lot_Serial_val_rec := OE_Lot_Serial_Util.Get_Values
584     (   p_Lot_Serial_rec              => l_x_Lot_Serial_rec
585     ,   p_old_Lot_Serial_rec          => l_old_Lot_Serial_rec
586     );
587   IF l_debug_level  > 0 THEN
588       oe_debug_pub.add(  'AFTER CALLING OE_LOT_SERIAL_UTIL.GET_VALUES' , 1 ) ;
589   END IF;
590 
591   IF l_debug_level  > 0 THEN
592       oe_debug_pub.add(  'QUANTITY '||TO_CHAR ( L_X_LOT_SERIAL_REC.QUANTITY ) , 1 ) ;
593   END IF;
594   IF l_debug_level  > 0 THEN
595       oe_debug_pub.add(  'OLD QUANTITY '||TO_CHAR ( L_OLD_LOT_SERIAL_REC.QUANTITY ) , 1 ) ;
596   END IF;
597     --  Return changed attributes.
598 
599     IF NOT OE_GLOBALS.Equal(l_x_Lot_Serial_rec.attribute1,
600                             l_old_lot_serial_rec.attribute1)
601     THEN
602         x_attribute1 := l_x_Lot_Serial_rec.attribute1;
603     END IF;
604 
605     IF NOT OE_GLOBALS.Equal(l_x_Lot_Serial_rec.attribute10,
606                             l_old_lot_serial_rec.attribute10)
607     THEN
608         x_attribute10 := l_x_Lot_Serial_rec.attribute10;
609     END IF;
610 
611     IF NOT OE_GLOBALS.Equal(l_x_Lot_Serial_rec.attribute11,
612                             l_old_lot_serial_rec.attribute11)
613     THEN
614         x_attribute11 := l_x_Lot_Serial_rec.attribute11;
615     END IF;
616 
617     IF NOT OE_GLOBALS.Equal(l_x_Lot_Serial_rec.attribute12,
618                             l_old_lot_serial_rec.attribute12)
619     THEN
620         x_attribute12 := l_x_Lot_Serial_rec.attribute12;
621     END IF;
622 
623     IF NOT OE_GLOBALS.Equal(l_x_Lot_Serial_rec.attribute13,
624                             l_old_lot_serial_rec.attribute13)
625     THEN
626         x_attribute13 := l_x_Lot_Serial_rec.attribute13;
627     END IF;
628 
629     IF NOT OE_GLOBALS.Equal(l_x_Lot_Serial_rec.attribute14,
630                             l_old_lot_serial_rec.attribute14)
631     THEN
632         x_attribute14 := l_x_Lot_Serial_rec.attribute14;
633     END IF;
634 
635     IF NOT OE_GLOBALS.Equal(l_x_Lot_Serial_rec.attribute15,
636                             l_old_lot_serial_rec.attribute15)
637     THEN
638         x_attribute15 := l_x_Lot_Serial_rec.attribute15;
639     END IF;
640 
641     IF NOT OE_GLOBALS.Equal(l_x_Lot_Serial_rec.attribute2,
642                             l_old_lot_serial_rec.attribute2)
643     THEN
644         x_attribute2 := l_x_Lot_Serial_rec.attribute2;
645     END IF;
646 
647     IF NOT OE_GLOBALS.Equal(l_x_Lot_Serial_rec.attribute3,
648                             l_old_lot_serial_rec.attribute3)
649     THEN
650         x_attribute3 := l_x_Lot_Serial_rec.attribute3;
651     END IF;
652 
653     IF NOT OE_GLOBALS.Equal(l_x_Lot_Serial_rec.attribute4,
654                             l_old_lot_serial_rec.attribute4)
655     THEN
656         x_attribute4 := l_x_Lot_Serial_rec.attribute4;
657     END IF;
658 
659     IF NOT OE_GLOBALS.Equal(l_x_Lot_Serial_rec.attribute5,
660                             l_old_lot_serial_rec.attribute5)
661     THEN
662         x_attribute5 := l_x_Lot_Serial_rec.attribute5;
663     END IF;
664 
665     IF NOT OE_GLOBALS.Equal(l_x_Lot_Serial_rec.attribute6,
666                             l_old_lot_serial_rec.attribute6)
667     THEN
668         x_attribute6 := l_x_Lot_Serial_rec.attribute6;
669     END IF;
670 
671     IF NOT OE_GLOBALS.Equal(l_x_Lot_Serial_rec.attribute7,
672                             l_old_lot_serial_rec.attribute7)
673     THEN
674         x_attribute7 := l_x_Lot_Serial_rec.attribute7;
675     END IF;
676 
677     IF NOT OE_GLOBALS.Equal(l_x_Lot_Serial_rec.attribute8,
678                             l_old_lot_serial_rec.attribute8)
679     THEN
680         x_attribute8 := l_x_Lot_Serial_rec.attribute8;
681     END IF;
682 
683     IF NOT OE_GLOBALS.Equal(l_x_Lot_Serial_rec.attribute9,
684                             l_old_lot_serial_rec.attribute9)
685     THEN
686         x_attribute9 := l_x_Lot_Serial_rec.attribute9;
687     END IF;
688 
689     IF NOT OE_GLOBALS.Equal(l_x_Lot_Serial_rec.context,
690                             l_old_lot_serial_rec.context)
691     THEN
692         x_context := l_x_Lot_Serial_rec.context;
693     END IF;
694 
695     IF NOT OE_GLOBALS.Equal(l_x_Lot_Serial_rec.from_serial_number,
696                             l_old_lot_serial_rec.from_serial_number)
697     THEN
698         x_from_serial_number := l_x_Lot_Serial_rec.from_serial_number;
699     END IF;
700 
701     IF NOT OE_GLOBALS.Equal(l_x_Lot_Serial_rec.line_id,
702                             l_old_lot_serial_rec.line_id)
703     THEN
704         x_line_id := l_x_Lot_Serial_rec.line_id;
705         x_line := l_Lot_Serial_val_rec.line;
706     END IF;
707 
708     IF NOT OE_GLOBALS.Equal(l_x_Lot_Serial_rec.lot_number,
709                             l_old_lot_serial_rec.lot_number)
710     THEN
711         x_lot_number := l_x_Lot_Serial_rec.lot_number;
712     END IF;
713 
714     IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL >= '110510'
715    	 THEN
716 
717     		/*IF NOT OE_GLOBALS.Equal(l_x_Lot_Serial_rec.sublot_number,  --OPM 2380194 INVCONV
718                 	            l_old_lot_serial_rec.sublot_number)
719     		THEN
720         		x_sublot_number := l_x_Lot_Serial_rec.sublot_number;
721     		END IF; */
722 
723                 IF NOT OE_GLOBALS.Equal(l_x_Lot_Serial_rec.quantity2,   --OPM 2380194
724                             l_old_lot_serial_rec.quantity2)
725     			THEN
726         			IF l_debug_level  > 0 THEN
727 	   				oe_debug_pub.add('The Quantity2 Has Changed', 1);
728 				END IF;
729         		        x_quantity2 := l_x_Lot_Serial_rec.quantity2;
730     		END IF;
731 
732     END IF;
733 
734 
735     IF NOT OE_GLOBALS.Equal(l_x_Lot_Serial_rec.lot_serial_id,
736                             l_old_lot_serial_rec.lot_serial_id)
737     THEN
738         x_lot_serial_id := l_x_Lot_Serial_rec.lot_serial_id;
739         x_lot_serial := l_Lot_Serial_val_rec.lot_serial;
740     END IF;
741 
742     IF NOT OE_GLOBALS.Equal(l_x_Lot_Serial_rec.quantity,
743                             l_old_lot_serial_rec.quantity)
744     THEN
745 	   IF l_debug_level  > 0 THEN
746 	       oe_debug_pub.add(  'THE QUANTITY HAS CHANGED' , 1 ) ;
747 	   END IF;
748         x_quantity := l_x_Lot_Serial_rec.quantity;
749     END IF;
750 
751     IF NOT OE_GLOBALS.Equal(l_x_Lot_Serial_rec.to_serial_number,
752                             l_old_lot_serial_rec.to_serial_number)
753     THEN
754         x_to_serial_number := l_x_Lot_Serial_rec.to_serial_number;
755     END IF;
756 
757 
758     --  Write to cache.
759 
760     Write_Lot_Serial
761     (   p_Lot_Serial_rec              => l_x_Lot_Serial_rec
762     );
763 
764     -- Re-set the UI flag to FALSE
765     OE_GLOBALS.G_UI_FLAG := FALSE;
766 
767     --  Set return status.
768 
769     x_return_status := FND_API.G_RET_STS_SUCCESS;
770 
771     --  Get message count and data
772 
773     OE_MSG_PUB.Count_And_Get
774     (   p_count                       => x_msg_count
775     ,   p_data                        => x_msg_data
776     );
777     IF l_debug_level  > 0 THEN
778         oe_debug_pub.add(  'EXITING OE_OE_FORM_LOT_SERIAL.CHANGE_ATTRIBUTES' , 1 ) ;
779     END IF;
780 
781 
782 EXCEPTION
783 
784     WHEN FND_API.G_EXC_ERROR THEN
785 
786 	   OE_GLOBALS.G_UI_FLAG := FALSE;
787 
788         x_return_status := FND_API.G_RET_STS_ERROR;
789 
790         --  Get message count and data
791 
792         OE_MSG_PUB.Count_And_Get
793         (   p_count                       => x_msg_count
794         ,   p_data                        => x_msg_data
795         );
796 
797     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
798 
799 	   OE_GLOBALS.G_UI_FLAG := FALSE;
800 
801         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
802 
803         --  Get message count and data
804 
805         OE_MSG_PUB.Count_And_Get
806         (   p_count                       => x_msg_count
807         ,   p_data                        => x_msg_data
808         );
809 
810     WHEN OTHERS THEN
811 
812 	   OE_GLOBALS.G_UI_FLAG := FALSE;
813 
814         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
815 
816         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
817         THEN
818             OE_MSG_PUB.Add_Exc_Msg
819             (   G_PKG_NAME
820             ,   'Change_Attribute'
821             );
822         END IF;
823 
824         --  Get message count and data
825 
826         OE_MSG_PUB.Count_And_Get
827         (   p_count                       => x_msg_count
828         ,   p_data                        => x_msg_data
829         );
830 
831 END Change_Attribute;
832 
833 --  Procedure       Validate_And_Write
834 --
835 
836 PROCEDURE Validate_And_Write
837 ( x_return_status OUT NOCOPY VARCHAR2
838 
839 , x_msg_count OUT NOCOPY NUMBER
840 
841 , x_msg_data OUT NOCOPY VARCHAR2
842 
843 ,   p_lot_serial_id                 IN  NUMBER
844 , x_creation_date OUT NOCOPY DATE
845 
846 , x_created_by OUT NOCOPY NUMBER
847 
848 , x_last_update_date OUT NOCOPY DATE
849 
850 , x_last_updated_by OUT NOCOPY NUMBER
851 
852 , x_last_update_login OUT NOCOPY NUMBER
853 
854 , x_lock_control OUT NOCOPY NUMBER
855 
856 )
857 IS
858 l_x_old_Lot_Serial_rec          OE_Order_PUB.Lot_Serial_Rec_Type;
859 l_x_old_Lot_Serial_tbl          OE_Order_PUB.Lot_Serial_Tbl_Type;
860 l_control_rec                 OE_GLOBALS.Control_Rec_Type;
861 l_return_status               VARCHAR2(1);
862 l_x_Lot_Serial_rec            OE_Order_PUB.Lot_Serial_Rec_Type;
863 l_x_Lot_Serial_tbl            OE_Order_PUB.Lot_Serial_Tbl_Type;
864 --
865 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
866 --
867 BEGIN
868 
869     IF l_debug_level  > 0 THEN
870         oe_debug_pub.add(  'ENTERING OE_OE_FORM_LOT_SERIAL.VALIDATE_AND_WRITE' , 1 ) ;
871     END IF;
872     -- Set the UI flag
873     OE_GLOBALS.G_UI_FLAG := TRUE;
874 
875     --  Set control flags.
876 
877     l_control_rec.controlled_operation := TRUE;
878     l_control_rec.validate_entity      := TRUE;
879     l_control_rec.write_to_DB          := TRUE;
880 
881     l_control_rec.check_security       := FALSE;
882     l_control_rec.clear_dependents     := FALSE;
883     l_control_rec.default_attributes   := FALSE;
884     l_control_rec.change_attributes    := FALSE;
885     l_control_rec.process              := FALSE;
886     l_control_rec.process_entity       := OE_GLOBALS.G_ENTITY_LOT_SERIAL;
887 
888     --  Instruct API to retain its caches
889 
890     l_control_rec.clear_api_cache      := FALSE;
891     l_control_rec.clear_api_requests   := FALSE;
892 
893     --  Read Lot_Serial from cache
894 
895     Get_Lot_Serial
896     (   p_db_record                   => TRUE
897     ,   p_lot_serial_id               => p_lot_serial_id
898     ,   x_lot_serial_rec              => l_x_old_Lot_Serial_rec
899     );
900 
901     Get_Lot_Serial
902     (   p_db_record                   => FALSE
903     ,   p_lot_serial_id               => p_lot_serial_id
904     ,   x_lot_serial_rec              => l_x_Lot_Serial_rec
905     );
906 
907     --  Set Operation.
908 
909     IF FND_API.To_Boolean(l_x_Lot_Serial_rec.db_flag) THEN
910         l_x_Lot_Serial_rec.operation := OE_GLOBALS.G_OPR_UPDATE;
911     ELSE
912         l_x_Lot_Serial_rec.operation := OE_GLOBALS.G_OPR_CREATE;
913     END IF;
914 
915     --  Populate Lot_Serial table
916 
917     l_x_Lot_Serial_tbl(1) := l_x_Lot_Serial_rec;
918     l_x_old_Lot_Serial_tbl(1) := l_x_old_Lot_Serial_rec;
919 
920     --  Call OE_Order_PVT.Process_order
921 
922     OE_Order_PVT.Lot_Serials
923     (   p_validation_level              =>FND_API.G_VALID_LEVEL_FULL
924     ,   p_init_msg_list               => FND_API.G_TRUE
925     ,   p_control_rec                   => l_control_rec
926     ,   p_x_Lot_Serial_tbl              => l_x_Lot_Serial_tbl
927     ,   p_x_old_Lot_Serial_tbl          => l_x_old_Lot_Serial_tbl
928     ,   x_return_status                 => l_return_status
929     );
930 
931     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
932         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
933     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
934         RAISE FND_API.G_EXC_ERROR;
935     END IF;
936 /* The Process Requests and Notify call should be there for */
937 /* Pre-Pack code level */
938 
939     IF OE_CODE_CONTROL.CODE_RELEASE_LEVEL < '110508' THEN
940 
941     Oe_Order_Pvt.Process_Requests_And_Notify
942     (   p_process_requests           => FALSE
943 	,   p_init_msg_list               => FND_API.G_FALSE
944      ,  p_notify                     => TRUE
945      ,  x_return_status              => l_return_status
946      ,  p_Lot_Serial_Tbl             => l_x_Lot_Serial_Tbl
947      ,  p_Old_Lot_Serial_Tbl         => l_x_old_Lot_Serial_Tbl
948     );
949 
950     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
951         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
952     ELSIF l_return_status  = FND_API.G_RET_STS_ERROR THEN
953         RAISE FND_API.G_EXC_ERROR;
954     END IF;
955 
956    END IF;
957 
958     --  Load OUT parameters.
959 
960     l_x_Lot_Serial_rec := l_x_Lot_Serial_tbl(1);
961 
962     x_creation_date                := l_x_Lot_Serial_rec.creation_date;
963     x_created_by                   := l_x_Lot_Serial_rec.created_by;
964     x_last_update_date             := l_x_Lot_Serial_rec.last_update_date;
965     x_last_updated_by              := l_x_Lot_Serial_rec.last_updated_by;
966     x_last_update_login            := l_x_Lot_Serial_rec.last_update_login;
967     x_lock_control                 :=  l_x_Lot_Serial_rec.lock_control;
968 
969     --  Clear Lot_Serial record cache
970 
971     Clear_Lot_Serial;
972 
973     --  Keep track of performed operations.
974 
975     l_x_old_Lot_Serial_rec.operation := l_x_Lot_Serial_rec.operation;
976 
977 
978     -- Re-set the UI flag to FALSE
979     OE_GLOBALS.G_UI_FLAG := FALSE;
980 
981     --  Set return status.
982 
983     x_return_status := FND_API.G_RET_STS_SUCCESS;
984 
985     --  Get message count and data
986 
987     OE_MSG_PUB.Count_And_Get
988     (   p_count                       => x_msg_count
989     ,   p_data                        => x_msg_data
990     );
991 
992     IF l_debug_level  > 0 THEN
993         oe_debug_pub.add(  'EXITING OE_OE_FORM_LOT_SERIAL.VALIDATE_AND_WRITE' , 1 ) ;
994     END IF;
995 
996 EXCEPTION
997 
998     WHEN FND_API.G_EXC_ERROR THEN
999 
1000 	   OE_GLOBALS.G_UI_FLAG := FALSE;
1001 
1002         x_return_status := FND_API.G_RET_STS_ERROR;
1003 
1004         --  Get message count and data
1005 
1006         OE_MSG_PUB.Count_And_Get
1007         (   p_count                       => x_msg_count
1008         ,   p_data                        => x_msg_data
1009         );
1010     IF l_debug_level  > 0 THEN
1011         oe_debug_pub.add(  'ERROR IN OE_OE_FORM_LOT_SERIAL.VALIDATE_AND_WRITE '|| TO_CHAR ( X_MSG_COUNT ) , 1 ) ;
1012     END IF;
1013     IF l_debug_level  > 0 THEN
1014         oe_debug_pub.add(  'ERROR IN OE_OE_FORM_LOT_SERIAL.VALIDATE_AND_WRITE '|| X_MSG_DATA , 1 ) ;
1015     END IF;
1016 
1017     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1018 
1019 	   OE_GLOBALS.G_UI_FLAG := FALSE;
1020 
1021         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1022 
1023         --  Get message count and data
1024 
1025         OE_MSG_PUB.Count_And_Get
1026         (   p_count                       => x_msg_count
1027         ,   p_data                        => x_msg_data
1028         );
1029 
1030     WHEN OTHERS THEN
1031 
1032 	   OE_GLOBALS.G_UI_FLAG := FALSE;
1033 
1034         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1035 
1036         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1037         THEN
1038             OE_MSG_PUB.Add_Exc_Msg
1039             (   G_PKG_NAME
1040             ,   'Validate_And_Write'
1041             );
1042         END IF;
1043 
1044         --  Get message count and data
1045 
1046         OE_MSG_PUB.Count_And_Get
1047         (   p_count                       => x_msg_count
1048         ,   p_data                        => x_msg_data
1049         );
1050 
1051 END Validate_And_Write;
1052 
1053 --  Procedure       Delete_Row
1054 --
1055 
1056 PROCEDURE Delete_Row
1057 ( x_return_status OUT NOCOPY VARCHAR2
1058 
1059 , x_msg_count OUT NOCOPY NUMBER
1060 
1061 , x_msg_data OUT NOCOPY VARCHAR2
1062 
1063 ,   p_lot_serial_id                 IN  NUMBER
1064 )
1065 IS
1066 l_x_Lot_Serial_rec              OE_Order_PUB.Lot_Serial_Rec_Type;
1067 l_x_Lot_Serial_tbl              OE_Order_PUB.Lot_Serial_Tbl_Type;
1068 l_x_old_Lot_Serial_tbl              OE_Order_PUB.Lot_Serial_Tbl_Type;
1069 l_control_rec                 OE_GLOBALS.Control_Rec_Type;
1070 l_return_status               VARCHAR2(1);
1071 --
1072 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1073 --
1074 BEGIN
1075 
1076     -- Set the UI flag
1077     OE_GLOBALS.G_UI_FLAG := TRUE;
1078 
1079     --  Set control flags.
1080 
1081     l_control_rec.controlled_operation := TRUE;
1082     l_control_rec.check_security       := TRUE;
1083     l_control_rec.validate_entity      := TRUE;
1084     l_control_rec.write_to_DB          := TRUE;
1085 
1086     l_control_rec.clear_dependents     := FALSE;
1087     l_control_rec.default_attributes   := FALSE;
1088     l_control_rec.change_attributes    := FALSE;
1089     l_control_rec.process              := FALSE;
1090 
1091     --  Instruct API to retain its caches
1092 
1093     l_control_rec.clear_api_cache      := FALSE;
1094     l_control_rec.clear_api_requests   := FALSE;
1095 
1096     --  Read DB record from cache
1097 
1098     Get_Lot_Serial
1099     (   p_db_record                   => TRUE
1100     ,   p_lot_serial_id               => p_lot_serial_id
1101     ,   x_lot_serial_rec              => l_x_Lot_Serial_rec
1102     );
1103 
1104     --  Set Operation.
1105 
1106     l_x_Lot_Serial_rec.operation := OE_GLOBALS.G_OPR_DELETE;
1107 
1108     --  Populate Lot_Serial table
1109 
1110     l_x_Lot_Serial_tbl(1) := l_x_Lot_Serial_rec;
1111 
1112     --  Call OE_Order_PVT.Process_order
1113 
1114     OE_Order_PVT.Lot_Serials
1115     (   p_validation_level            => FND_API.G_VALID_LEVEL_FULL
1116     ,   p_init_msg_list               => FND_API.G_TRUE
1117     ,   p_control_rec                 => l_control_rec
1118     ,   p_x_Lot_Serial_tbl            => l_x_Lot_Serial_tbl
1119     ,   p_x_old_Lot_Serial_tbl        => l_x_old_Lot_Serial_tbl
1120     ,   x_return_status               => l_return_status
1121     );
1122 
1123     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1124         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1125     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1126         RAISE FND_API.G_EXC_ERROR;
1127     END IF;
1128 
1129 
1130     --  Clear Lot_Serial record cache
1131 
1132     Clear_Lot_Serial;
1133 
1134     -- Re-set the UI flag to FALSE
1135     OE_GLOBALS.G_UI_FLAG := FALSE;
1136 
1137     --  Set return status.
1138 
1139     x_return_status := FND_API.G_RET_STS_SUCCESS;
1140 
1141     --  Get message count and data
1142 
1143     OE_MSG_PUB.Count_And_Get
1144     (   p_count                       => x_msg_count
1145     ,   p_data                        => x_msg_data
1146     );
1147 
1148 
1149 EXCEPTION
1150 
1151     WHEN FND_API.G_EXC_ERROR THEN
1152 
1153 	   OE_GLOBALS.G_UI_FLAG := FALSE;
1154 
1155         x_return_status := FND_API.G_RET_STS_ERROR;
1156 
1157         --  Get message count and data
1158 
1159         OE_MSG_PUB.Count_And_Get
1160         (   p_count                       => x_msg_count
1161         ,   p_data                        => x_msg_data
1162         );
1163 
1164     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1165 
1166 	   OE_GLOBALS.G_UI_FLAG := FALSE;
1167 
1168         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1169 
1170         --  Get message count and data
1171 
1172         OE_MSG_PUB.Count_And_Get
1173         (   p_count                       => x_msg_count
1174         ,   p_data                        => x_msg_data
1175         );
1176 
1177     WHEN OTHERS THEN
1178 
1179 	   OE_GLOBALS.G_UI_FLAG := FALSE;
1180 
1181         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1182 
1183         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1184         THEN
1185             OE_MSG_PUB.Add_Exc_Msg
1186             (   G_PKG_NAME
1187             ,   'Delete_Row'
1188             );
1189         END IF;
1190 
1191         --  Get message count and data
1192 
1193         OE_MSG_PUB.Count_And_Get
1194         (   p_count                       => x_msg_count
1195         ,   p_data                        => x_msg_data
1196         );
1197 
1198 END Delete_Row;
1199 
1200 --  Procedure       Process_Entity
1201 --
1202 
1203 PROCEDURE Process_Entity
1204 ( x_return_status OUT NOCOPY VARCHAR2
1205 
1206 , x_msg_count OUT NOCOPY NUMBER
1207 
1208 , x_msg_data OUT NOCOPY VARCHAR2
1209 
1210 )
1211 IS
1212 l_return_status               VARCHAR2(1);
1213 /*l_action_request_tbl	      OE_Order_PUB.Request_Tbl_Type;
1214 l_control_rec                 OE_GLOBALS.Control_Rec_Type;
1215 l_x_header_rec                OE_Order_PUB.Header_Rec_Type;
1216 l_x_Header_Adj_rec            OE_Order_PUB.Header_Adj_Rec_Type;
1217 l_x_Header_Adj_tbl            OE_Order_PUB.Header_Adj_Tbl_Type;
1218 l_x_Header_Scredit_rec        OE_Order_PUB.Header_Scredit_Rec_Type;
1219 l_x_Header_Scredit_tbl        OE_Order_PUB.Header_Scredit_Tbl_Type;
1220 l_x_line_rec                  OE_Order_PUB.Line_Rec_Type;
1221 l_x_line_tbl                  OE_Order_PUB.Line_Tbl_Type;
1222 l_x_Line_Adj_rec              OE_Order_PUB.Line_Adj_Rec_Type;
1223 l_x_Line_Adj_tbl              OE_Order_PUB.Line_Adj_Tbl_Type;
1224 l_x_Line_Scredit_rec          OE_Order_PUB.Line_Scredit_Rec_Type;
1225 l_x_Line_Scredit_tbl          OE_Order_PUB.Line_Scredit_Tbl_Type;
1226 l_x_Lot_Serial_rec            OE_Order_PUB.Lot_Serial_Rec_Type;
1227 l_x_Lot_Serial_tbl            OE_Order_PUB.Lot_Serial_Tbl_Type;
1228 l_x_Header_price_Att_tbl      OE_Order_PUB.Header_Price_Att_Tbl_Type;
1229 l_x_Header_Adj_Att_tbl        OE_Order_PUB.Header_Adj_Att_Tbl_Type;
1230 l_x_Header_Adj_Assoc_tbl      OE_Order_PUB.Header_Adj_Assoc_Tbl_Type;
1231 l_x_Line_price_Att_tbl        OE_Order_PUB.Line_Price_Att_Tbl_Type;
1232 l_x_Line_Adj_Att_tbl          OE_Order_PUB.Line_Adj_Att_Tbl_Type;
1233 l_x_Line_Adj_Assoc_tbl        OE_Order_PUB.Line_Adj_Assoc_Tbl_Type; */
1234 --
1235 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1236 --
1237 BEGIN
1238 
1239     -- Set the UI flag
1240     OE_GLOBALS.G_UI_FLAG := TRUE;
1241 
1242     --  Set control flags.
1243 /*
1244     l_control_rec.controlled_operation := TRUE;
1245     l_control_rec.process              := TRUE;
1246     l_control_rec.process_entity       := OE_GLOBALS.G_ENTITY_LOT_SERIAL;
1247 
1248     l_control_rec.check_security       := FALSE;
1249     l_control_rec.clear_dependents     := FALSE;
1250     l_control_rec.default_attributes   := FALSE;
1251     l_control_rec.change_attributes    := FALSE;
1252     l_control_rec.validate_entity      := FALSE;
1253     l_control_rec.write_to_DB          := FALSE;
1254 
1255     --  Instruct API to clear its request table
1256 
1257     l_control_rec.clear_api_cache      := FALSE;
1258     l_control_rec.clear_api_requests   := FALSE;
1259 
1260     --  Call OE_Order_PVT.Process_order
1261 
1262     OE_Order_PVT.Process_order
1263     (   p_api_version_number          => 1.0
1264     ,   p_init_msg_list               => FND_API.G_TRUE
1265     ,   x_return_status               => l_return_status
1266     ,   x_msg_count                   => x_msg_count
1267     ,   x_msg_data                    => x_msg_data
1268     ,   p_control_rec                 => l_control_rec
1269     ,   p_x_header_rec                  => l_x_header_rec
1270     ,   p_x_Header_Adj_tbl              => l_x_Header_Adj_tbl
1271     ,   p_x_header_price_att_tbl        => l_x_header_price_att_tbl
1272     ,   p_x_Header_Adj_att_tbl          => l_x_Header_Adj_att_tbl
1273     ,   p_x_Header_Adj_Assoc_tbl        => l_x_Header_Adj_Assoc_tbl
1274     ,   p_x_Header_Scredit_tbl          => l_x_Header_Scredit_tbl
1275     ,   p_x_line_tbl                    => l_x_line_tbl
1276     ,   p_x_Line_Adj_tbl                => l_x_Line_Adj_tbl
1277     ,   p_x_Line_Price_att_tbl          => l_x_Line_Price_att_tbl
1278     ,   p_x_Line_Adj_att_tbl            => l_x_Line_Adj_att_tbl
1279     ,   p_x_Line_Adj_Assoc_tbl          => l_x_Line_Adj_Assoc_tbl
1280     ,   p_x_Line_Scredit_tbl            => l_x_Line_Scredit_tbl
1281     ,   p_x_Lot_Serial_tbl              => l_x_Lot_Serial_tbl
1282     ,   p_x_action_request_tbl	      => l_action_request_tbl
1283     );
1284 */
1285 
1286      Oe_Order_Pvt.Process_Requests_And_Notify
1287     (   p_process_requests           => TRUE
1288 	,   p_init_msg_list               => FND_API.G_TRUE
1289      ,  p_notify                     => TRUE
1290      ,  x_return_status              => l_return_status
1291     );
1292 
1293     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1294         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1295     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1296         RAISE FND_API.G_EXC_ERROR;
1297     END IF;
1298 
1299 
1300     -- Re-set the UI flag to FALSE
1301     OE_GLOBALS.G_UI_FLAG := FALSE;
1302 
1303     --  Set return status.
1304 
1305     x_return_status := FND_API.G_RET_STS_SUCCESS;
1306 
1307     --  Get message count and data
1308 
1309     OE_MSG_PUB.Count_And_Get
1310     (   p_count                       => x_msg_count
1311     ,   p_data                        => x_msg_data
1312     );
1313 
1314 
1315 EXCEPTION
1316 
1317     WHEN FND_API.G_EXC_ERROR THEN
1318 
1319 	   OE_GLOBALS.G_UI_FLAG := FALSE;
1320 
1321         x_return_status := FND_API.G_RET_STS_ERROR;
1322 
1323         --  Get message count and data
1324 
1325         OE_MSG_PUB.Count_And_Get
1326         (   p_count                       => x_msg_count
1327         ,   p_data                        => x_msg_data
1328         );
1329 
1330     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1331 
1332 	   OE_GLOBALS.G_UI_FLAG := FALSE;
1333 
1334         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1335 
1336         --  Get message count and data
1337 
1338         OE_MSG_PUB.Count_And_Get
1339         (   p_count                       => x_msg_count
1340         ,   p_data                        => x_msg_data
1341         );
1342 
1343     WHEN OTHERS THEN
1344 
1345 	   OE_GLOBALS.G_UI_FLAG := FALSE;
1346 
1347         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1348 
1349         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1350         THEN
1351             OE_MSG_PUB.Add_Exc_Msg
1352             (   G_PKG_NAME
1353             ,   'Process_Entity'
1354             );
1355         END IF;
1356 
1357         --  Get message count and data
1358 
1359         OE_MSG_PUB.Count_And_Get
1360         (   p_count                       => x_msg_count
1361         ,   p_data                        => x_msg_data
1362         );
1363 
1364 END Process_Entity;
1365 
1366 --  Procedure       lock_Row
1367 --
1368 
1369 PROCEDURE Lock_Row
1370 ( x_return_status OUT NOCOPY VARCHAR2
1371 
1372 , x_msg_count OUT NOCOPY NUMBER
1373 
1374 , x_msg_data OUT NOCOPY VARCHAR2
1375 
1376 ,   p_lot_serial_id                 IN  NUMBER
1377 ,   p_lock_control                  IN  NUMBER
1378 )
1379 IS
1380 l_return_status               VARCHAR2(1);
1381 l_x_Lot_Serial_rec            OE_Order_PUB.Lot_Serial_Rec_Type;
1382 --
1383 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1384 --
1385 BEGIN
1386 
1387     --  Load Lot_Serial record
1388 
1389     l_x_Lot_Serial_rec.operation        := OE_GLOBALS.G_OPR_LOCK;
1390     l_x_Lot_Serial_rec.lot_serial_id    := p_lot_serial_id;
1391     l_x_Lot_Serial_rec.lock_control     := p_lock_control;
1392 
1393     --  Call OE_Lot_Serial_Util.lock_row instead of OE_Order_PVT.Lock_order
1394 
1395     OE_Lot_Serial_Util.Lock_Row
1396     (   x_return_status          => l_return_status
1397     ,   p_x_Lot_Serial_rec       =>  l_x_Lot_Serial_rec );
1398 
1399     IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
1400 
1401         --  Set DB flag and write record to cache.
1402 
1403         l_x_Lot_Serial_rec.db_flag := FND_API.G_TRUE;
1404 
1405         Write_Lot_Serial
1406         (   p_Lot_Serial_rec              => l_x_Lot_Serial_rec
1407         ,   p_db_record                   => TRUE
1408         );
1409 
1410     END IF;
1411 
1412     --  Set return status.
1413 
1414     x_return_status := l_return_status;
1415 
1416     --  Get message count and data
1417 
1418     OE_MSG_PUB.Count_And_Get
1419     (   p_count                       => x_msg_count
1420     ,   p_data                        => x_msg_data
1421     );
1422 
1423 
1424 EXCEPTION
1425 
1426     WHEN OTHERS THEN
1427 
1428         IF OE_MSG_PUB.Check_Msg_Level(OE_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1429         THEN
1430             OE_MSG_PUB.Add_Exc_Msg
1431             (   G_PKG_NAME
1432             ,   'Lock_Row'
1433             );
1434         END IF;
1435 
1436         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1437 
1438         --  Get message count and data
1439 
1440         OE_MSG_PUB.Count_And_Get
1441         (   p_count                       => x_msg_count
1442         ,   p_data                        => x_msg_data
1443         );
1444 
1445 
1446 
1447 END Lock_Row;
1448 
1449 --  Procedures maintaining Lot_Serial record cache.
1450 
1451 PROCEDURE Write_Lot_Serial
1452 (   p_Lot_Serial_rec                IN  OE_Order_PUB.Lot_Serial_Rec_Type
1453 ,   p_db_record                     IN  BOOLEAN := FALSE
1454 )
1455 IS
1456 --
1457 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1458 --
1459 BEGIN
1460 
1461     IF l_debug_level  > 0 THEN
1462         oe_debug_pub.add(  'ENTERING OE_OE_FORM_LOT_SERIAL.WRITE_LOT_SERIAL' , 1 ) ;
1463     END IF;
1464 
1465     g_Lot_Serial_rec := p_Lot_Serial_rec;
1466 
1467     IF p_db_record THEN
1468 
1469         g_db_Lot_Serial_rec := p_Lot_Serial_rec;
1470 
1471     END IF;
1472 
1473     IF l_debug_level  > 0 THEN
1474         oe_debug_pub.add(  'EXITING OE_OE_FORM_LOT_SERIAL.WRITE_LOT_SERIAL' , 1 ) ;
1475     END IF;
1476 
1477 END Write_Lot_Serial;
1478 
1479 PROCEDURE Get_Lot_Serial
1480 (   p_db_record                     IN  BOOLEAN := FALSE
1481 ,   p_lot_serial_id                 IN  NUMBER
1482 ,   x_lot_serial_rec                IN OUT NOCOPY OE_Order_PUB.Lot_Serial_Rec_Type
1483 )
1484 IS
1485 --
1486 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1487 --
1488 BEGIN
1489 
1490     IF l_debug_level  > 0 THEN
1491         oe_debug_pub.add(  'ENTERING OE_OE_FORM_LOT_SERIAL.GET_LOT_SERIAL' , 1 ) ;
1492     END IF;
1493 
1494     IF  p_lot_serial_id <> g_Lot_Serial_rec.lot_serial_id
1495     THEN
1496 
1497         --  Query row from DB
1498 
1499         OE_Lot_Serial_Util.Query_Row
1500         (   p_lot_serial_id               => p_lot_serial_id
1501          ,  x_lot_serial_rec              => g_Lot_Serial_rec
1502         );
1503 
1504         g_Lot_Serial_rec.db_flag       := FND_API.G_TRUE;
1505 
1506         --  Load DB record
1507 
1508         g_db_Lot_Serial_rec            := g_Lot_Serial_rec;
1509 
1510     END IF;
1511 
1512     IF l_debug_level  > 0 THEN
1513         oe_debug_pub.add(  'EXITING OE_OE_FORM_LOT_SERIAL.GET_LOT_SERIAL' , 1 ) ;
1514     END IF;
1515     IF p_db_record THEN
1516 
1517         x_lot_serial_rec:= g_db_Lot_Serial_rec;
1518 
1519     ELSE
1520 
1521         x_lot_serial_rec:= g_Lot_Serial_rec;
1522 
1523     END IF;
1524 
1525 END Get_Lot_Serial;
1526 
1527 PROCEDURE Clear_Lot_Serial
1528 IS
1529 --
1530 l_debug_level CONSTANT NUMBER := oe_debug_pub.g_debug_level;
1531 --
1532 BEGIN
1533 
1534     g_Lot_Serial_rec               := OE_Order_PUB.G_MISS_LOT_SERIAL_REC;
1535     g_db_Lot_Serial_rec            := OE_Order_PUB.G_MISS_LOT_SERIAL_REC;
1536 
1537 END Clear_Lot_Serial;
1538 
1539 END OE_OE_Form_Lot_Serial;