DBA Data[Home] [Help]

PACKAGE BODY: APPS.GMI_ITEM_LOT_CONV_PUB

Source


1 PACKAGE BODY GMI_ITEM_LOT_CONV_PUB AS
2 -- $Header: GMIPILCB.pls 115.6 2002/11/04 20:14:17 jdiiorio gmigapib.pls $
3 -- Body start of comments
4 --+==========================================================================+
5 --|                   Copyright (c) 1998 Oracle Corporation                  |
6 --|                          Redwood Shores, CA, USA                         |
7 --|                            All rights reserved.                          |
8 --+==========================================================================+
9 --| FILE NAME                                                                |
10 --|    GMIPILCB.pls                                                          |
11 --|                                                                          |
12 --| PACKAGE NAME                                                             |
13 --|    GMI_ITEM_LOT_CONV_PUB                                                 |
14 --|                                                                          |
15 --| DESCRIPTION                                                              |
16 --|    This package defines all APIs related to Item/Lot/Sublot Uom          |
17 --|    conversion                                                            |
18 --|                                                                          |
19 --| CONTENTS                                                                 |
20 --|    Create_Item_Lot_Uom_Conv                                              |
21 --|                                                                          |
22 --| HISTORY                                                                  |
23 --|    25-FEB-1999  M.Godfrey    Upgrade to R11                              |
24 --|    20/AUG/99    Bug 951828 Change GMS package Calls to GMA               |
25 --|                 H.Verdding  				             |
26 --|    25-OCT-2002  J. DiIorio   Bug#2643440 - nocopy added.                 |
27 --|                                                                          |
28 --+==========================================================================+
29 -- Body end of comments
30 -- Global variables
31 G_PKG_NAME  CONSTANT  VARCHAR2(30):='GMI_ITEM_LOT_CONV_PUB';
32 
33 -- Api start of comments
34 --+==========================================================================+
35 --| PROCEDURE NAME                                                           |
36 --|    Create_Item_Lot_Uom_Conv                                              |
37 --|                                                                          |
38 --| TYPE                                                                     |
39 --|    Public                                                                |
40 --|                                                                          |
41 --| USAGE                                                                    |
42 --|    Create an Item/Lot/Sublot UoM conversion                              |
43 --|                                                                          |
44 --| DESCRIPTION                                                              |
45 --|    This procedure creates an Item/Lot/Sublot UoM conversion              |
46 --|                                                                          |
47 --| PARAMETERS                                                               |
48 --|    p_api_version      IN NUMBER           - API Version                  |
49 --|    p_init_msg_list    IN VARCHAR2         - Msg List initialization Ind  |
50 --|    p_commit           IN VARCHAR2         - Commit Indicator             |
51 --|    p_validation_level IN VARCHAR2         - Validation Level indicator   |
52 --|    x_return_status    OUT NOCOPY VARCHAR2  - return Status                |
53 --|    x_msg_count        OUT NOCOPY NUMBER    - Number of Messages returned  |
54 --|    x_msg_data         OUT NOCOPY VARCHAR2  - Messages in encoded format   |
55 --|    p_item_cnv_rec     IN item_cnv_rec_typ - Item Conversion details      |
56 --|                                                                          |
57 --| RETURNS                                                                  |
58 --|    None                                                                  |
59 --|                                                                          |
60 --| HISTORY                                                                  |
61 --|                                                                          |
62 --+==========================================================================+
63 -- Api end of comments
64 PROCEDURE Create_Item_Lot_Uom_Conv
65 ( p_api_version      IN  NUMBER
66 , p_init_msg_list    IN  VARCHAR2 :=FND_API.G_FALSE
67 , p_commit           IN  VARCHAR2 :=FND_API.G_FALSE
68 , p_validation_level IN  VARCHAR2 :=FND_API.G_VALID_LEVEL_FULL
69 , p_item_cnv_rec     IN  item_cnv_rec_typ
70 , x_return_status    OUT NOCOPY VARCHAR2
71 , x_msg_count        OUT NOCOPY NUMBER
72 , x_msg_data         OUT NOCOPY VARCHAR2
73 )
74 IS
75 l_api_name    CONSTANT VARCHAR2 (30) :='Create_Item_Lot_Uom_Conv';
76 l_api_version CONSTANT NUMBER        :=2.0;
77 l_msg_count            NUMBER;
78 l_msg_data             VARCHAR2(2000);
79 l_return_status        VARCHAR2(1);
80 l_error_code           NUMBER;
81 l_factor               NUMBER;
82 l_type_factorrev       NUMBER;
83 l_ic_item_cnv_rec      ic_item_cnv%ROWTYPE;
84 l_ic_item_mst_rec      ic_item_mst%ROWTYPE;
85 l_ic_lots_mst_rec      ic_lots_mst%ROWTYPE;
86 l_item_cnv_rec         item_cnv_rec_typ;
87 l_ic_item_cpg_rec      ic_item_cpg%ROWTYPE;
88 l_ic_lots_cpg_rec      ic_lots_cpg%ROWTYPE;
89 l_sy_uoms_mst_rec_um1  sy_uoms_mst%ROWTYPE;
90 l_sy_uoms_typ_rec_um1  sy_uoms_typ%ROWTYPE;
91 l_sy_uoms_mst_rec_from sy_uoms_mst%ROWTYPE;
92 l_sy_uoms_typ_rec_from sy_uoms_typ%ROWTYPE;
93 l_sy_uoms_mst_rec_to   sy_uoms_mst%ROWTYPE;
94 l_sy_uoms_typ_rec_to   sy_uoms_typ%ROWTYPE;
95 l_um_type              sy_uoms_mst.um_type%TYPE;
96 l_from_um              sy_uoms_mst.um_code%TYPE;
97 l_to_um                sy_uoms_mst.um_code%TYPE;
98 l_from_std_um          sy_uoms_mst.um_code%TYPE;
99 l_to_std_um            sy_uoms_mst.um_code%TYPE;
100 l_user_name            fnd_user.user_name%TYPE;
101 l_user_id              fnd_user.user_id%TYPE;
102 
103 BEGIN
104 
105 -- Standard Start OF API savepoint
106   SAVEPOINT Create_Item_Lot_Uom_Conv;
107 -- Standard call to check for call compatibility.
108   IF NOT FND_API.Compatible_API_CALL (  l_api_version
109                                       , p_api_version
110                                       , l_api_name
111                                       , G_PKG_NAME
112 				     )
113   THEN
114     Raise FND_API.G_EXC_UNEXPECTED_ERROR;
115   END IF;
116 
117 -- Initialize message list if p_int_msg_list is set TRUE.
118   IF FND_API.to_boolean(p_init_msg_list)
119   THEN
120     FND_MSG_PUB.Initialize;
121   END IF;
122 -- Initialize API return status to sucess
123   x_return_status :=FND_API.G_RET_STS_SUCCESS;
124 
125 -- Populate WHO columns
126   l_user_name :=p_item_cnv_rec.user_name;
127   GMA_GLOBAL_GRP.Get_who( p_user_name  => l_user_name
128                         , x_user_id    => l_user_id
129                         );
130 
131   IF l_user_id = 0
132   THEN
133     FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_USER_NAME');
134     FND_MESSAGE.SET_TOKEN('USER_NAME',l_user_name);
135     FND_MSG_PUB.Add;
136     RAISE FND_API.G_EXC_ERROR;
137   END IF;
138 
139 -- Ensure Upper-case columns are converted
140 
141   l_item_cnv_rec          :=p_item_cnv_rec;
142   l_item_cnv_rec.to_uom   :=l_item_cnv_rec.to_uom;
143   l_item_cnv_rec.from_uom :=l_item_cnv_rec.from_uom;
144 
145 -- Get the item details ensuring that the item is active and not deleted
146 
147   GMI_GLOBAL_GRP.Get_Item (  p_item_no      => l_item_cnv_rec.item_no
148                            , x_ic_item_mst  => l_ic_item_mst_rec
149                            , x_ic_item_cpg  => l_ic_item_cpg_rec
150                           );
151 
152   IF (l_ic_item_mst_rec.item_id < 0)
153   THEN
154     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
155   ELSIF (l_ic_item_mst_rec.item_id = 0) OR
156 	(l_ic_item_mst_rec.delete_mark = 1)
157   THEN
158     FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_ITEM_NO');
159     FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_cnv_rec.item_no);
160     FND_MSG_PUB.Add;
161     RAISE FND_API.G_EXC_ERROR;
162   ELSIF (l_ic_item_mst_rec.noninv_ind = 1)
163   THEN
164     FND_MESSAGE.SET_NAME('GMI','IC_API_NONINV_ITEM_NO');
165     FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_cnv_rec.item_no);
166     FND_MSG_PUB.Add;
167     RAISE FND_API.G_EXC_ERROR;
168   ELSIF (l_ic_item_mst_rec.inactive_ind = 1)
169   THEN
170     FND_MESSAGE.SET_NAME('GMI','IC_API_INACTIVE_ITEM_NO');
171     FND_MESSAGE.SET_TOKEN('ITEM_NO',l_item_cnv_rec.item_no);
172     FND_MSG_PUB.Add;
173 --    x_return_status  :=FND_API.G_RET_STS_ERROR;
174 --    RAISE FND_API.G_EXC_ERROR;
175   END IF;
176 
177 -- If blank or null lot_no then get default lot
178 
179   IF (l_item_cnv_rec.lot_no = ' ' OR l_item_cnv_rec.lot_no IS NULL)
180   THEN
181     l_item_cnv_rec.lot_no :=FND_PROFILE.Value_Specific
182 			    ( name    => 'IC$DEFAULT_LOT'
183 			    , user_id => l_user_id
184 			    );
185     IF (l_item_cnv_rec.lot_no IS NULL)
186     THEN
187       FND_MESSAGE.SET_NAME('GMI','IC_API_UNABLE_TO_GET_CONSTANT');
188       FND_MESSAGE.SET_TOKEN('CONSTANT_NAME','IC$DEFAULT_LOT');
189       FND_MSG_PUB.Add;
190       RAISE FND_API.G_EXC_ERROR;
191     END IF;
192   END IF;
193 
194 
195 -- Get the lot details ensuring that the lot is not deleted.
196 -- This may be the default lot for the item.
197 
198 
199   GMI_GLOBAL_GRP.Get_Lot (  p_item_id      => l_ic_item_mst_rec.item_id
200                           , p_lot_no       => l_item_cnv_rec.lot_no
201                           , p_sublot_no    => l_item_cnv_rec.sublot_no
202                           , x_ic_lots_mst  => l_ic_lots_mst_rec
203                           , x_ic_lots_cpg  => l_ic_lots_cpg_rec
204                          );
205 
206   IF (l_ic_lots_mst_rec.lot_id = -1) OR
207      (l_ic_lots_mst_rec.delete_mark = 1) OR
208      (l_ic_lots_mst_rec.inactive_ind = 1)
209   THEN
210     FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_LOT_NO');
211     FND_MESSAGE.SET_TOKEN('ITEM_NO', l_item_cnv_rec.item_no);
212     FND_MESSAGE.SET_TOKEN('LOT_NO', l_item_cnv_rec.lot_no);
213     FND_MESSAGE.SET_TOKEN('SUBLOT_NO', l_item_cnv_rec.sublot_no);
214     FND_MSG_PUB.Add;
215     RAISE FND_API.G_EXC_ERROR;
216   END IF;
217 
218 -- Get UOM details of the from Unit of Measure
219 
220 
221   GMI_GLOBAL_GRP.Get_Um (  p_um_code      => l_item_cnv_rec.from_uom
222                          , x_sy_uoms_mst  => l_sy_uoms_mst_rec_from
223                          , x_sy_uoms_typ  => l_sy_uoms_typ_rec_from
224                          , x_error_code   => l_error_code
225                         );
226 
227    IF (l_error_code = -1)
228    THEN
229      FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_LOT_UOM');
230      FND_MESSAGE.SET_TOKEN('UOM', l_item_cnv_rec.from_uom);
231      FND_MESSAGE.SET_TOKEN('ITEM_NO', l_item_cnv_rec.item_no);
232      FND_MESSAGE.SET_TOKEN('LOT_NO', l_item_cnv_rec.lot_no);
233      FND_MESSAGE.SET_TOKEN('SUBLOT_NO', l_item_cnv_rec.sublot_no);
234      FND_MSG_PUB.Add;
235      RAISE FND_API.G_EXC_ERROR;
236    ELSIF (l_error_code = -2)
237    THEN
238      FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_LOT_UOM_TYPE');
239      FND_MESSAGE.SET_TOKEN('UOM', l_item_cnv_rec.from_uom);
240      FND_MESSAGE.SET_TOKEN('ITEM_NO', l_item_cnv_rec.item_no);
241      FND_MESSAGE.SET_TOKEN('LOT_NO', l_item_cnv_rec.lot_no);
242      FND_MESSAGE.SET_TOKEN('SUBLOT_NO', l_item_cnv_rec.sublot_no);
243      FND_MSG_PUB.Add;
244      RAISE FND_API.G_EXC_ERROR;
245    END IF;
246 
247 -- Get UOM details of the to Unit of Measure
248 
249   GMI_GLOBAL_GRP.Get_Um (  p_um_code      => l_item_cnv_rec.to_uom
250                          , x_sy_uoms_mst  => l_sy_uoms_mst_rec_to
251                          , x_sy_uoms_typ  => l_sy_uoms_typ_rec_to
252                          , x_error_code   => l_error_code
253                         );
254 
255   IF (l_error_code = -1)
256   THEN
257     FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_LOT_UOM');
258     FND_MESSAGE.SET_TOKEN('UOM', l_item_cnv_rec.to_uom);
259     FND_MESSAGE.SET_TOKEN('ITEM_NO', l_item_cnv_rec.item_no);
260     FND_MESSAGE.SET_TOKEN('LOT_NO', l_item_cnv_rec.lot_no);
261     FND_MESSAGE.SET_TOKEN('SUBLOT_NO', l_item_cnv_rec.sublot_no);
262     FND_MSG_PUB.Add;
263     RAISE FND_API.G_EXC_ERROR;
264   ELSIF (l_error_code = -2)
265   THEN
266     FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_LOT_UOM_TYPE');
267     FND_MESSAGE.SET_TOKEN('ITEM_NO', l_item_cnv_rec.item_no);
268     FND_MESSAGE.SET_TOKEN('LOT_NO', l_item_cnv_rec.lot_no);
269     FND_MESSAGE.SET_TOKEN('SUBLOT_NO', l_item_cnv_rec.sublot_no);
270     FND_MESSAGE.SET_TOKEN('UOM', l_item_cnv_rec.to_uom);
271     FND_MSG_PUB.Add;
272     RAISE FND_API.G_EXC_ERROR;
273   END IF;
274 
275 -- Check that the from UoM type differs from the to UoM type. If not then
276 -- error and exit
277   IF l_sy_uoms_typ_rec_from.um_type = l_sy_uoms_typ_rec_to.um_type
278   THEN
279     FND_MESSAGE.SET_NAME('GMI','IC_API_LOT_ITEM_UOM_MISMATCH');
280     FND_MESSAGE.SET_TOKEN('ITEM_NO', l_item_cnv_rec.item_no);
281     FND_MESSAGE.SET_TOKEN('LOT_NO', l_item_cnv_rec.lot_no);
282     FND_MESSAGE.SET_TOKEN('SUBLOT_NO', l_item_cnv_rec.sublot_no);
283     FND_MSG_PUB.Add;
284     RAISE FND_API.G_EXC_ERROR;
285   END IF;
286 
287 -- Get UOM details of the item primary Unit of Measure
288 -- This should not produce any errors but we'll check for them anyway.
289 
290   GMI_GLOBAL_GRP.Get_Um (  p_um_code      => l_ic_item_mst_rec.item_um
291                          , x_sy_uoms_mst  => l_sy_uoms_mst_rec_um1
292                          , x_sy_uoms_typ  => l_sy_uoms_typ_rec_um1
293                          , x_error_code   => l_error_code
294                         );
295 
296   IF (l_error_code = -1)
297   THEN
298     FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_LOT_UOM');
299     FND_MESSAGE.SET_TOKEN('ITEM_NO', l_item_cnv_rec.item_no);
300     FND_MESSAGE.SET_TOKEN('LOT_NO', l_item_cnv_rec.lot_no);
301     FND_MESSAGE.SET_TOKEN('SUBLOT_NO', l_item_cnv_rec.sublot_no);
302     FND_MESSAGE.SET_TOKEN('UOM', l_ic_item_mst_rec.item_um);
303     FND_MSG_PUB.Add;
304     RAISE FND_API.G_EXC_ERROR;
305   ELSIF (l_error_code = -2)
306   THEN
307     FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_LOT_UOM_TYPE');
308     FND_MESSAGE.SET_TOKEN('ITEM_NO', l_item_cnv_rec.item_no);
309     FND_MESSAGE.SET_TOKEN('LOT_NO', l_item_cnv_rec.lot_no);
310     FND_MESSAGE.SET_TOKEN('SUBLOT_NO', l_item_cnv_rec.sublot_no);
311     FND_MESSAGE.SET_TOKEN('UOM', l_ic_item_mst_rec.item_um);
312     FND_MSG_PUB.Add;
313     RAISE FND_API.G_EXC_ERROR;
314   END IF;
315 
316 -- Check that the unit of measure type of the from_uom or the to_uom
317 -- is the same as the unit of measure type of the item primary uom.
318 -- Adjust conversion factor as appropriate.
319 
320   IF (l_sy_uoms_typ_rec_um1.std_um = l_sy_uoms_typ_rec_from.std_um)
321   THEN
322     l_factor      := 1 / l_item_cnv_rec.type_factor;
323     l_um_type     := l_sy_uoms_mst_rec_to.um_type;
324     l_from_um     := l_item_cnv_rec.from_uom;
325     l_from_std_um := l_sy_uoms_typ_rec_from.std_um;
326     l_to_um       := l_item_cnv_rec.to_uom;
327     l_to_std_um   := l_sy_uoms_typ_rec_to.std_um;
328   ELSIF (l_sy_uoms_typ_rec_um1.std_um = l_sy_uoms_typ_rec_to.std_um)
329   THEN
330     l_factor      := l_item_cnv_rec.type_factor;
331     l_um_type     := l_sy_uoms_mst_rec_from.um_type;
332     l_from_um     := l_item_cnv_rec.to_uom;
333     l_from_std_um := l_sy_uoms_typ_rec_to.std_um;
334     l_to_um       := l_item_cnv_rec.from_uom;
335     l_to_std_um   := l_sy_uoms_typ_rec_from.std_um;
336   ELSE
337     FND_MESSAGE.SET_NAME('GMI','IC_API_LOT_ITEM_UOM_MISMATCH');
338     FND_MESSAGE.SET_TOKEN('ITEM_NO', l_item_cnv_rec.item_no);
339     FND_MESSAGE.SET_TOKEN('LOT_NO', l_item_cnv_rec.lot_no);
340     FND_MESSAGE.SET_TOKEN('SUBLOT_NO', l_item_cnv_rec.sublot_no);
341     FND_MSG_PUB.Add;
342     RAISE FND_API.G_EXC_ERROR;
343   END IF;
344 
345 -- Check that item/lot conversion does not already exist
346 
347   IF GMI_VALID_GRP.Validate_item_cnv (  l_item_cnv_rec.item_no
348                                       , l_item_cnv_rec.lot_no
349                                       , l_item_cnv_rec.sublot_no
350                                       , l_um_type
351                                      )
352   THEN
353     FND_MESSAGE.SET_NAME('GMI','IC_API_ITEM_CNV_ALREADY_EXISTS');
354     FND_MESSAGE.SET_TOKEN('ITEM_NO', l_item_cnv_rec.item_no);
355     FND_MESSAGE.SET_TOKEN('LOT_NO', l_item_cnv_rec.lot_no);
356     FND_MESSAGE.SET_TOKEN('SUBLOT_NO', l_item_cnv_rec.sublot_no);
357     FND_MESSAGE.SET_TOKEN('UM_TYPE', l_um_type);
358     FND_MSG_PUB.Add;
359     RAISE FND_API.G_EXC_ERROR;
360   END IF;
361 
362 -- Check that conversion factor is positive value
363 
364   IF (l_factor <= 0)
365   THEN
366     FND_MESSAGE.SET_NAME('GMI','IC_API_INVALID_LOT_TYPE_FACTOR');
367     FND_MESSAGE.SET_TOKEN('ITEM_NO', l_item_cnv_rec.item_no);
368     FND_MESSAGE.SET_TOKEN('LOT_NO', l_item_cnv_rec.lot_no);
369     FND_MESSAGE.SET_TOKEN('SUBLOT_NO', l_item_cnv_rec.sublot_no);
370     FND_MSG_PUB.Add;
371     RAISE FND_API.G_EXC_ERROR;
372   END IF;
373 
374 -- Now we have all the data required to calculate the conversion
375 -- factor from the standard unit of measure of the unit of measure
376 -- type of the item primary unit of measure to the standard unit
377 -- of measure of the unit of measure type of the from_uom.
378 
379 -- First convert from from_uom to std_um for item_um uom type
380 -- if required
381 
382   IF (l_from_um <> l_sy_uoms_typ_rec_from.std_um)
383   THEN
384     l_factor := GMICUOM.uom_conversion(pitem_id     => l_ic_item_mst_rec.item_id
385                                        ,plot_id     => l_ic_lots_mst_rec.lot_id
386                                        ,pcur_qty    => l_factor
387                                        ,pcur_uom    => l_from_um
388                                        ,pnew_uom    => l_from_std_um
389                                        ,patomic     => 0
390                                       );
391      IF (l_factor < 0)
392      THEN
393        FND_MESSAGE.SET_NAME('GMI','IC_API_ITEM_LOT_UOM_FAILED');
394        FND_MESSAGE.SET_TOKEN('ITEM_NO', l_item_cnv_rec.item_no);
395        FND_MESSAGE.SET_TOKEN('LOT_NO', l_item_cnv_rec.lot_no);
396        FND_MESSAGE.SET_TOKEN('SUBLOT_NO', l_item_cnv_rec.sublot_no);
397        FND_MESSAGE.SET_TOKEN('UM1', l_from_um);
398        FND_MESSAGE.SET_TOKEN('UM2', l_sy_uoms_typ_rec_from.std_um);
399        FND_MSG_PUB.Add;
400        RAISE FND_API.G_EXC_ERROR;
401      END IF;
402    END IF;
403 
404 -- Next convert from to_uom to std_um for to_uom uom type
405 -- if required
406 
407   IF (l_item_cnv_rec.to_uom <> l_sy_uoms_typ_rec_to.std_um)
408   THEN
409     l_factor := GMICUOM.uom_conversion(pitem_id     => l_ic_item_mst_rec.item_id
410                                        ,plot_id     => l_ic_lots_mst_rec.lot_id
411                                        ,pcur_qty    => l_factor
412                                        ,pcur_uom    => l_to_std_um
413                                        ,pnew_uom    => l_to_um
414                                        ,patomic     => 0
415                                       );
416     IF (l_factor < 0)
417     THEN
418       FND_MESSAGE.SET_NAME('GMI','IC_API_ITEM_LOT_UOM_FAILED');
419       FND_MESSAGE.SET_TOKEN('ITEM_NO', l_item_cnv_rec.item_no);
420       FND_MESSAGE.SET_TOKEN('LOT_NO', l_item_cnv_rec.lot_no);
421       FND_MESSAGE.SET_TOKEN('SUBLOT_NO', l_item_cnv_rec.sublot_no);
422       FND_MESSAGE.SET_TOKEN('UM1', l_to_um);
423       FND_MESSAGE.SET_TOKEN('UM2', l_sy_uoms_typ_rec_to.std_um);
424       FND_MSG_PUB.Add;
425       RAISE FND_API.G_EXC_ERROR;
426     END IF;
427   END IF;
428 
429 -- Now calculate the inverse value of the conversion factor
430 
431   l_type_factorrev := 1 / l_factor;
432 
433 -- Set up PL/SQL record and insert item/lot conversion into IC_ITEM_CNV
434 
435   l_ic_item_cnv_rec.item_id          := l_ic_item_mst_rec.item_id;
436   l_ic_item_cnv_rec.lot_id           := l_ic_lots_mst_rec.lot_id;
437   l_ic_item_cnv_rec.um_type          := l_um_type;
438   l_ic_item_cnv_rec.type_factor      := l_factor;
439   l_ic_item_cnv_rec.last_update_date := SYSDATE;
440   l_ic_item_cnv_rec.last_updated_by  := l_user_id;
441   l_ic_item_cnv_rec.trans_cnt        := 1;
442   l_ic_item_cnv_rec.delete_mark      := 0;
443   l_ic_item_cnv_rec.text_code        := NULL;
444   l_ic_item_cnv_rec.creation_date    := SYSDATE;
445   l_ic_item_cnv_rec.created_by       := l_user_id;
446   l_ic_item_cnv_rec.type_factorrev   := l_type_factorrev;
447   l_ic_item_cnv_rec.last_update_login :=TO_NUMBER(FND_PROFILE.Value(
448 					'LOGIN_ID'));
449 
450 
451   IF NOT GMI_ITEM_LOT_CONV_PVT.insert_IC_ITEM_CNV(l_ic_item_cnv_rec)
452   THEN
453     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
454   END IF;
455 
456 -- END of API Body
457 
458 -- Standard Check of p_commit.
459   IF FND_API.to_boolean(p_commit)
460   THEN
461     COMMIT WORK;
462   END IF;
463 -- Success message
464   FND_MESSAGE.SET_NAME('GMI','IC_API_ILC_CREATED');
465   FND_MESSAGE.SET_TOKEN('ITEM_NO', l_item_cnv_rec.item_no);
466   FND_MESSAGE.SET_TOKEN('LOT_NO', l_item_cnv_rec.lot_no);
467   FND_MESSAGE.SET_TOKEN('SUBLOT_NO', l_item_cnv_rec.sublot_no);
468   FND_MESSAGE.SET_TOKEN('UM_TYPE', l_um_type);
469   FND_MSG_PUB.Add;
470 -- Standard Call to get message count and if count is 1,
471 -- get message info.
472   FND_MSG_PUB.Count_AND_GET (  p_count => x_msg_count
473                              , p_data  => x_msg_data
474                             );
475 
476   EXCEPTION
477     WHEN FND_API.G_EXC_ERROR THEN
478       ROLLBACK TO Create_Item_Lot_Uom_Conv;
479       x_return_status := FND_API.G_RET_STS_ERROR;
480       FND_MSG_PUB.Count_AND_GET (  p_count => x_msg_count
481                                  , p_data  => x_msg_data
482                                 );
483     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
484       ROLLBACK TO Create_Item_Lot_Uom_Conv;
485       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
486       FND_MSG_PUB.Count_AND_GET (  p_count => x_msg_count
487                                  , p_data  => x_msg_data
488                                 );
489     WHEN OTHERS THEN
490       ROLLBACK TO Create_Item_Lot_Uom_Conv;
491       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
492 --    IF FND_MSG_PUB.check_msg_level
493 --           (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
494 --    THEN
495 
496       FND_MSG_PUB.Add_Exc_Msg ( G_PKG_NAME
497                                , l_api_name
498                               );
499 --   END IF;
500      FND_MSG_PUB.Count_AND_GET (  p_count => x_msg_count
501                                 , p_data  => x_msg_data
502                                );
503 END Create_Item_Lot_Uom_Conv;
504 
505 -- END of API Body
506 END GMI_ITEM_LOT_CONV_PUB;