DBA Data[Home] [Help]

PACKAGE BODY: APPS.GMI_TO_FORM_TROLIN

Source


1 PACKAGE BODY GMI_TO_Form_Trolin AS
2 /*  $Header: GMIFTRLB.pls 115.7 2002/10/29 15:19:48 jdiiorio ship $  */
3 /* +=========================================================================+
4  |                Copyright (c) 2000 Oracle Corporation                    |
5  |                        TVP, Reading, England                            |
6  |                         All rights reserved                             |
7  +=========================================================================+
8  | FILENAME                                                                |
9  |    GMIFTRLB.pls                                                         |
10  |                                                                         |
11  | DESCRIPTION                                                             |
12  |     This package contains private utilities interface procedures        |
13  |     to forms ICTOTRX.fmb                                                |
14  |                                                                         |
15  | - Need to be cleaned                                                    |
16  |                                                                         |
17  | HISTORY                                                                 |
18  |     07-MAR-2000  odaboval        Created                                |
19  |     29-OCT-2002  jdiiorio        Bug#2643440 11.5.1J - added nocopy.    |
20  +=========================================================================+
21 */
22 /*   Global constant holding the package name */
23 
24 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'GMI_TO_Form_Trolin';
25 
26 /*   Global variables holding cached record. */
27 
28 g_trolin_rec                  GMI_Move_Order_Global.mo_line_rec;
29 g_db_trolin_rec               GMI_Move_Order_Global.mo_line_rec;
30 
31 /*   Forward declaration of procedures maintaining entity record cache. */
32 
33 PROCEDURE Write_trolin
34 (   p_mo_line_rec                   IN  GMI_MOVE_ORDER_GLOBAL.mo_line_rec
35 ,   p_db_record                     IN  BOOLEAN := FALSE
36 );
37 
38 FUNCTION Get_trolin
39 (   p_db_record                     IN  BOOLEAN := FALSE
40 ,   p_line_id                       IN  NUMBER
41 )
42 RETURN GMI_MOVE_ORDER_GLOBAL.mo_line_rec;
43 
44 PROCEDURE Clear_trolin;
45 
46 /*   Global variable holding performed operations. */
47 
48 g_opr__tbl                    GMI_MOVE_ORDER_GLOBAL.mo_line_rec;
49 
50 /*   Procedure : Default_Attributes */
51 /* odab
52 PROCEDURE Default_Attributes
53 (   x_return_status                 OUT NOCOPY VARCHAR2
54 ,   x_msg_count                     OUT NOCOPY NUMBER
55 ,   x_msg_data                      OUT NOCOPY VARCHAR2
56 ,   p_header_id              	    IN  NUMBER
57 ,   x_attribute1                    OUT NOCOPY VARCHAR2
58 ,   x_attribute10                   OUT NOCOPY VARCHAR2
59 ,   x_attribute11                   OUT NOCOPY VARCHAR2
60 ,   x_attribute12                   OUT NOCOPY VARCHAR2
61 ,   x_attribute13                   OUT NOCOPY VARCHAR2
62 ,   x_attribute14                   OUT NOCOPY VARCHAR2
63 ,   x_attribute15                   OUT NOCOPY VARCHAR2
64 ,   x_attribute2                    OUT NOCOPY VARCHAR2
65 ,   x_attribute3                    OUT NOCOPY VARCHAR2
66 ,   x_attribute4                    OUT NOCOPY VARCHAR2
67 ,   x_attribute5                    OUT NOCOPY VARCHAR2
68 ,   x_attribute6                    OUT NOCOPY VARCHAR2
69 ,   x_attribute7                    OUT NOCOPY VARCHAR2
70 ,   x_attribute8                    OUT NOCOPY VARCHAR2
71 ,   x_attribute9                    OUT NOCOPY VARCHAR2
72 ,   x_attribute_category            OUT NOCOPY VARCHAR2
73 ,   x_date_required                 OUT NOCOPY DATE
74 ,   x_from_locator_id               OUT NOCOPY NUMBER
75 ,   x_from_subinventory_code        OUT NOCOPY VARCHAR2
76 ,   x_from_subinventory_id          OUT NOCOPY NUMBER
77 ,   x_header_id                     OUT NOCOPY NUMBER
78 ,   x_inventory_item_id             OUT NOCOPY NUMBER
79 ,   x_line_id                       OUT NOCOPY NUMBER
80 ,   x_line_number                   OUT NOCOPY NUMBER
81 ,   x_line_status                   OUT NOCOPY NUMBER
82 ,   x_lot_number                    OUT NOCOPY VARCHAR2
83 ,   x_organization_id               OUT NOCOPY NUMBER
84 ,   x_project_id                    OUT NOCOPY NUMBER
85 ,   x_quantity                      OUT NOCOPY NUMBER
86 ,   x_quantity_delivered            OUT NOCOPY NUMBER
87 ,   x_quantity_detailed             OUT NOCOPY NUMBER
88 ,   x_reason_id                     OUT NOCOPY NUMBER
89 ,   x_reference                     OUT NOCOPY VARCHAR2
90 ,   x_reference_id                  OUT NOCOPY NUMBER
91 ,   x_reference_type_code           OUT NOCOPY NUMBER
92 ,   x_revision                      OUT NOCOPY VARCHAR2
93 ,   x_serial_number_end             OUT NOCOPY VARCHAR2
94 ,   x_serial_number_start           OUT NOCOPY VARCHAR2
95 ,   x_status_date                   OUT NOCOPY DATE
96 ,   x_task_id                       OUT NOCOPY NUMBER
97 ,   x_to_account_id                 OUT NOCOPY NUMBER
98 ,   x_to_locator_id                 OUT NOCOPY NUMBER
99 ,   x_to_subinventory_code          OUT NOCOPY VARCHAR2
100 ,   x_to_subinventory_id            OUT NOCOPY NUMBER
101 ,   x_transaction_header_id         OUT NOCOPY NUMBER
102 ,   x_uom_code                      OUT NOCOPY VARCHAR2
103 ,   x_from_locator                  OUT NOCOPY VARCHAR2
104 ,   x_inventory_item                OUT NOCOPY VARCHAR2
105 ,   x_project                       OUT NOCOPY VARCHAR2
106 ,   x_reason                        OUT NOCOPY VARCHAR2
107 ,   x_reference_type                OUT NOCOPY VARCHAR2
108 ,   x_task                          OUT NOCOPY VARCHAR2
109 ,   x_to_account                    OUT NOCOPY VARCHAR2
110 ,   x_to_locator                    OUT NOCOPY VARCHAR2
111 ,   x_transaction_type_id           OUT NOCOPY NUMBER
112 ,   x_transaction_source_type_id    OUT NOCOPY NUMBER
113 ,   x_txn_source_id                 OUT NOCOPY NUMBER
114 ,   x_txn_source_line_id            OUT NOCOPY NUMBER
115 ,   x_txn_source_line_detail_id     OUT NOCOPY NUMBER
116 ,   x_primary_quantity              OUT NOCOPY NUMBER
117 ,   x_to_organization_id            OUT NOCOPY NUMBER
118 ,   x_pick_strategy_id              OUT NOCOPY NUMBER
119 ,   x_put_away_strategy_id          OUT NOCOPY NUMBER
120 ,   x_unit_number          	    OUT NOCOPY VARCHAR2
121 */
122 /*  ,   x_ship_to_location_id           OUT NOCOPY NUMBER -- NL MERGE  */
123 /*
124 ,   x_transaction_type		    OUT NOCOPY VARCHAR2
125 )
126 IS
127 l_trolin_rec                  GMI_MOVE_ORDER_GLOBAL.mo_line_rec;
128 l_trolin_val_rec              GMI_Move_Order_PUB.Trolin_Val_Rec_Type;
129 l_trolin_tbl                  GMI_Move_Order_PUB.Trolin_Tbl_Type;
130 l_control_rec                 INV_GLOBALS.Control_Rec_Type;
131 l_return_status               VARCHAR2(1);
132 l_x_trohdr_rec                GMI_Move_Order_PUB.Trohdr_Rec_Type;
133 l_x_trolin_rec                GMI_Move_Order_PUB.Trolin_Rec_Type;
134 l_x_trolin_tbl                GMI_Move_Order_PUB.Trolin_Tbl_Type;
135 BEGIN
136 
137     *//*   Set control flags.  *//*
138 
139     l_control_rec.controlled_operation := TRUE;
140     l_control_rec.default_attributes   := TRUE;
141 
142     l_control_rec.change_attributes    := FALSE;
143     l_control_rec.validate_entity      := FALSE;
144     l_control_rec.write_to_DB          := FALSE;
145     l_control_rec.process              := FALSE;
146 
147     *//*   Instruct API to retain its caches  *//*
148 
149     l_control_rec.clear_api_cache      := FALSE;
150     l_control_rec.clear_api_requests   := FALSE;
151 
152     *//*   Load IN parameters if any exist   *//*
153     l_trolin_rec.header_id 	       := p_header_id;
154 
155 
156     *//*   Defaulting of flex values is currently done by the form.  *//*
157     *//*   Set flex attributes to NULL in order to avoid defaulting them.  *//*
158 
159     l_trolin_rec.attribute1                       := NULL;
160     l_trolin_rec.attribute10                      := NULL;
161     l_trolin_rec.attribute11                      := NULL;
162     l_trolin_rec.attribute12                      := NULL;
163     l_trolin_rec.attribute13                      := NULL;
164     l_trolin_rec.attribute14                      := NULL;
165     l_trolin_rec.attribute15                      := NULL;
166     l_trolin_rec.attribute2                       := NULL;
167     l_trolin_rec.attribute3                       := NULL;
168     l_trolin_rec.attribute4                       := NULL;
169     l_trolin_rec.attribute5                       := NULL;
170     l_trolin_rec.attribute6                       := NULL;
171     l_trolin_rec.attribute7                       := NULL;
172     l_trolin_rec.attribute8                       := NULL;
173     l_trolin_rec.attribute9                       := NULL;
174     l_trolin_rec.attribute_category               := NULL;
175 
176     *//*   Set Operation to Create  *//*
177 
178     l_trolin_rec.operation := INV_GLOBALS.G_OPR_CREATE;
179 
180     *//*   Populate trolin table  *//*
181 
182     l_trolin_tbl(1) := l_trolin_rec;
183 
184     *//*   Call INV_Transfer_Order_PVT.Process_Transfer_Order   *//*
185 
186     INV_Transfer_Order_PVT.Process_Transfer_Order
187     (   p_api_version_number          => 1.0
188     ,   p_init_msg_list               => FND_API.G_TRUE
189     ,   x_return_status               => l_return_status
190     ,   x_msg_count                   => x_msg_count
191     ,   x_msg_data                    => x_msg_data
192     ,   p_control_rec                 => l_control_rec
193     ,   p_trolin_tbl                  => l_trolin_tbl
194     ,   x_trohdr_rec                  => l_x_trohdr_rec
195     ,   x_trolin_tbl                  => l_x_trolin_tbl
196     );
197 
198     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
199         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
200     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
201         RAISE FND_API.G_EXC_ERROR;
202     END IF;
203 
204 
205     *//*   Unload out tbl  *//*
206 
207     l_x_trolin_rec := l_x_trolin_tbl(1);
208 
209     *//*   Load OUT parameters.   *//*
210 
211     x_attribute1                   := l_x_trolin_rec.attribute1;
212     x_attribute10                  := l_x_trolin_rec.attribute10;
213     x_attribute11                  := l_x_trolin_rec.attribute11;
214     x_attribute12                  := l_x_trolin_rec.attribute12;
215     x_attribute13                  := l_x_trolin_rec.attribute13;
216     x_attribute14                  := l_x_trolin_rec.attribute14;
217     x_attribute15                  := l_x_trolin_rec.attribute15;
218     x_attribute2                   := l_x_trolin_rec.attribute2;
219     x_attribute3                   := l_x_trolin_rec.attribute3;
220     x_attribute4                   := l_x_trolin_rec.attribute4;
221     x_attribute5                   := l_x_trolin_rec.attribute5;
222     x_attribute6                   := l_x_trolin_rec.attribute6;
223     x_attribute7                   := l_x_trolin_rec.attribute7;
224     x_attribute8                   := l_x_trolin_rec.attribute8;
225     x_attribute9                   := l_x_trolin_rec.attribute9;
226     x_attribute_category           := l_x_trolin_rec.attribute_category;
227     x_date_required                := l_x_trolin_rec.date_required;
228     x_from_locator_id              := l_x_trolin_rec.from_locator_id;
229     x_from_subinventory_code       := l_x_trolin_rec.from_subinventory_code;
230     x_from_subinventory_id         := l_x_trolin_rec.from_subinventory_id;
231     x_header_id                    := l_x_trolin_rec.header_id;
232     x_inventory_item_id            := l_x_trolin_rec.inventory_item_id;
233     x_line_id                      := l_x_trolin_rec.line_id;
234     x_line_number                  := l_x_trolin_rec.line_number;
235     x_line_status                  := l_x_trolin_rec.line_status;
236     x_lot_number                   := l_x_trolin_rec.lot_number;
237     x_organization_id              := l_x_trolin_rec.organization_id;
238     x_project_id                   := l_x_trolin_rec.project_id;
239     x_quantity                     := l_x_trolin_rec.quantity;
240     x_quantity_delivered           := l_x_trolin_rec.quantity_delivered;
241     x_quantity_detailed            := l_x_trolin_rec.quantity_detailed;
242     x_reason_id                    := l_x_trolin_rec.reason_id;
243     x_reference                    := l_x_trolin_rec.reference;
244     x_reference_id                 := l_x_trolin_rec.reference_id;
245     x_reference_type_code          := l_x_trolin_rec.reference_type_code;
246     x_revision                     := l_x_trolin_rec.revision;
247     x_serial_number_end            := l_x_trolin_rec.serial_number_end;
248     x_serial_number_start          := l_x_trolin_rec.serial_number_start;
249     x_status_date                  := l_x_trolin_rec.status_date;
250     x_task_id                      := l_x_trolin_rec.task_id;
251     x_to_account_id                := l_x_trolin_rec.to_account_id;
252     x_to_locator_id                := l_x_trolin_rec.to_locator_id;
253     x_to_subinventory_code         := l_x_trolin_rec.to_subinventory_code;
254     x_to_subinventory_id           := l_x_trolin_rec.to_subinventory_id;
255     x_transaction_header_id        := l_x_trolin_rec.transaction_header_id;
256     x_uom_code                     := l_x_trolin_rec.uom_code;
257 *//*  ssia added for move order enhancement   *//*
258     x_transaction_type_id          := l_x_trolin_rec.transaction_type_id;
259     x_transaction_source_type_id   := l_x_trolin_rec.transaction_source_type_id;
260     x_txn_source_id                := l_x_trolin_rec.txn_source_id;
261     x_txn_source_line_id           := l_x_trolin_rec.txn_source_line_id;
262     x_txn_source_line_detail_id    := l_x_trolin_rec.txn_source_line_detail_id;
263     x_primary_quantity             := l_x_trolin_rec.primary_quantity;
264     x_to_organization_id           := l_x_trolin_rec.to_organization_id;
265     x_pick_strategy_id             := l_x_trolin_rec.pick_strategy_id;
266     x_put_away_strategy_id         := l_x_trolin_rec.put_away_strategy_id;
267     x_unit_number                  := l_x_trolin_rec.unit_number;
268 *//*    x_ship_to_location_id          := l_x_trolin_rec.ship_to_location_id; NL MERGE  *//*
269 *//*  ssia end of move order enhancement changes   *//*
270     *//*  Load display out parameters if any  *//*
271 
272     l_trolin_val_rec := INV_Trolin_Util.Get_Values
273     (   p_trolin_rec                  => l_x_trolin_rec
274     );
275     x_from_locator                 := l_trolin_val_rec.from_locator;
276     x_inventory_item               := l_trolin_val_rec.inventory_item;
277     x_project                      := l_trolin_val_rec.project;
278     x_reason                       := l_trolin_val_rec.reason;
279     x_reference_type               := l_trolin_val_rec.reference_type;
280     x_task                         := l_trolin_val_rec.task;
281     x_to_account                   := l_trolin_val_rec.to_account;
282     x_to_locator                   := l_trolin_val_rec.to_locator;
283     x_transaction_type		   := l_trolin_val_rec.transaction_type;
284 
285 *//*  Write to cache.  *//*
286 *//*  Set db_flag to False before writing to cache   *//*
287 
288     l_x_trolin_rec.db_flag := FND_API.G_FALSE;
289 
290     Write_trolin
291     (   p_trolin_rec                  => l_x_trolin_rec
292     );
293 
294     *//*   Set return status.  *//*
295 
296     x_return_status := FND_API.G_RET_STS_SUCCESS;
297 
298     *//*   Get message count and data  *//*
299 
300     FND_MSG_PUB.Count_And_Get
301     (   p_count                       => x_msg_count
302     ,   p_data                        => x_msg_data
303     );
304 
305 
306 EXCEPTION
307 
308     WHEN FND_API.G_EXC_ERROR THEN
309 
310         x_return_status := FND_API.G_RET_STS_ERROR;
311 
312         *//*   Get message count and data  *//*
313 
314         FND_MSG_PUB.Count_And_Get
315         (   p_count                       => x_msg_count
316         ,   p_data                        => x_msg_data
317         );
318 
319     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
320 
321         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
322 
323         *//*   Get message count and data  *//*
324 
325         FND_MSG_PUB.Count_And_Get
326         (   p_count                       => x_msg_count
327         ,   p_data                        => x_msg_data
328         );
329 
330     WHEN OTHERS THEN
331 
332         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
333 
334         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
335         THEN
336             FND_MSG_PUB.Add_Exc_Msg
337             (   G_PKG_NAME
338             ,   'Default_Attributes'
339             );
340         END IF;
341 
342         *//*   Get message count and data  *//*
343 
344         FND_MSG_PUB.Count_And_Get
345         (   p_count                       => x_msg_count
346         ,   p_data                        => x_msg_data
347         );
348 
349 END Default_Attributes;
350 
351 *//*   Procedure   :   Validate_Record  *//*
352 PROCEDURE Validate_Record
353 (   x_return_status                 OUT NOCOPY VARCHAR2
354 ,   x_msg_count                     OUT NOCOPY NUMBER
355 ,   x_msg_data                      OUT NOCOPY VARCHAR2
356 ,   p_attribute1                    IN  VARCHAR2
357 ,   p_attribute10                   IN  VARCHAR2
358 ,   p_attribute11                   IN  VARCHAR2
359 ,   p_attribute12                   IN  VARCHAR2
360 ,   p_attribute13                   IN  VARCHAR2
361 ,   p_attribute14                   IN  VARCHAR2
362 ,   p_attribute15                   IN  VARCHAR2
363 ,   p_attribute2                    IN  VARCHAR2
364 ,   p_attribute3                    IN  VARCHAR2
365 ,   p_attribute4                    IN  VARCHAR2
366 ,   p_attribute5                    IN  VARCHAR2
367 ,   p_attribute6                    IN  VARCHAR2
368 ,   p_attribute7                    IN  VARCHAR2
369 ,   p_attribute8                    IN  VARCHAR2
370 ,   p_attribute9                    IN  VARCHAR2
371 ,   p_attribute_category            IN  VARCHAR2
372 ,   p_date_required                 IN  DATE
373 ,   p_from_locator_id               IN  NUMBER
374 ,   p_from_subinventory_code        IN  VARCHAR2
375 ,   p_from_subinventory_id          IN  NUMBER
376 ,   p_header_id                     IN  NUMBER
377 ,   p_inventory_item_id             IN  NUMBER
378 ,   p_line_id                       IN  NUMBER
379 ,   p_line_number                   IN  NUMBER
380 ,   p_line_status                   IN  NUMBER
381 ,   p_lot_number                    IN  VARCHAR2
382 ,   p_organization_id               IN  NUMBER
383 ,   p_project_id                    IN  NUMBER
384 ,   p_quantity                      IN  NUMBER
385 ,   p_quantity_delivered            IN  NUMBER
386 ,   p_quantity_detailed             IN  NUMBER
387 ,   p_reason_id                     IN  NUMBER
388 ,   p_reference                     IN  VARCHAR2
389 ,   p_reference_id                  IN  NUMBER
390 ,   p_reference_type_code           IN  NUMBER
391 ,   p_revision                      IN  VARCHAR2
392 ,   p_serial_number_end             IN  VARCHAR2
393 ,   p_serial_number_start           IN  VARCHAR2
394 ,   p_status_date                   IN  DATE
395 ,   p_task_id                       IN  NUMBER
396 ,   p_to_account_id                 IN  NUMBER
397 ,   p_to_locator_id                 IN  NUMBER
398 ,   p_to_subinventory_code          IN  VARCHAR2
399 ,   p_to_subinventory_id            IN  NUMBER
400 ,   p_transaction_header_id         IN  NUMBER
401 ,   p_uom_code                      IN  VARCHAR2
402 ,   p_transaction_type_id           IN  NUMBER
403 ,   p_transaction_source_type_id    IN  NUMBER
404 ,   p_txn_source_id                 IN  NUMBER
405 ,   p_txn_source_line_id            IN  NUMBER
406 ,   p_txn_source_line_detail_id     IN  NUMBER
407 ,   p_primary_quantity              IN  NUMBER
408 ,   p_to_organization_id            IN  NUMBER
409 ,   p_pick_strategy_id              IN  NUMBER
410 ,   p_put_away_strategy_id          IN  NUMBER
411 ,   p_unit_number                   IN  VARCHAR2
412 ,   p_ship_to_location_id           IN  NUMBER
413 ,   p_db_flag                       IN  VARCHAR2
414 )
415 IS
416 l_trolin_rec                  INV_Move_Order_PUB.Trolin_Rec_Type;
417 l_old_trolin_rec              INV_Move_Order_PUB.Trolin_Rec_Type;
418 l_trolin_val_rec              INV_Move_Order_PUB.Trolin_Val_Rec_Type;
419 l_trolin_tbl                  INV_Move_Order_PUB.Trolin_Tbl_Type;
420 l_old_trolin_tbl              INV_Move_Order_PUB.Trolin_Tbl_Type;
421 l_control_rec                 INV_GLOBALS.Control_Rec_Type;
422 l_return_status               VARCHAR2(1);
423 l_x_trohdr_rec                INV_Move_Order_PUB.Trohdr_Rec_Type;
424 l_x_trolin_rec                INV_Move_Order_PUB.Trolin_Rec_Type;
425 l_x_trolin_tbl                INV_Move_Order_PUB.Trolin_Tbl_Type;
426 BEGIN
427 
428     *//*   Set control flags.  *//*
429 
430     l_control_rec.controlled_operation := TRUE;
431     l_control_rec.change_attributes    := TRUE;
432 
433     l_control_rec.default_attributes   := FALSE;
434     l_control_rec.validate_entity      := TRUE;
435     l_control_rec.write_to_DB          := FALSE;
436     l_control_rec.process              := FALSE;
437 
438     *//*   Instruct API to retain its caches  *//*
439 
440     l_control_rec.clear_api_cache      := FALSE;
441     l_control_rec.clear_api_requests   := FALSE;
442 
443     l_trolin_rec.db_flag               := p_db_flag;
444 
445     *//*   Read trolin from cache  *//*
446 
447     IF FND_API.To_Boolean(l_trolin_rec.db_flag) THEN
448 
449     l_trolin_rec := Get_trolin
450     (   p_db_record                   => FALSE
451     ,   p_line_id                     => p_line_id
452     );
453     End If;
454 
455     l_old_trolin_rec               := l_trolin_rec;
456 
457         l_trolin_rec.date_required      := p_date_required;
458         l_trolin_rec.from_locator_id    := p_from_locator_id;
459         l_trolin_rec.from_subinventory_code     := p_from_subinventory_code;
460         l_trolin_rec.from_subinventory_id       := p_from_subinventory_id;
461         l_trolin_rec.header_id                  := p_header_id;
462         l_trolin_rec.inventory_item_id          := p_inventory_item_id;
463         l_trolin_rec.line_id                    := p_line_id;
464         l_trolin_rec.line_number                := p_line_number;
465         l_trolin_rec.line_status                := p_line_status;
466         l_trolin_rec.lot_number                 := p_lot_number;
467         l_trolin_rec.organization_id            := p_organization_id;
468         l_trolin_rec.project_id                 := p_project_id;
469         l_trolin_rec.quantity                   := p_quantity;
470         l_trolin_rec.quantity_delivered         := p_quantity_delivered;
471         l_trolin_rec.quantity_detailed          := p_quantity_detailed;
472         l_trolin_rec.reason_id                  := p_reason_id;
473         l_trolin_rec.reference                  := p_reference;
474         l_trolin_rec.reference_id               := p_reference_id;
475         l_trolin_rec.reference_type_code        := p_reference_type_code;
476         l_trolin_rec.revision                   := p_revision;
477         l_trolin_rec.serial_number_end          := p_serial_number_end;
478         l_trolin_rec.serial_number_start        := p_serial_number_start;
479         l_trolin_rec.status_date                := p_status_date;
480         l_trolin_rec.task_id                    := p_task_id;
481         l_trolin_rec.to_account_id              := p_to_account_id;
482         l_trolin_rec.to_locator_id              := p_to_locator_id;
483         l_trolin_rec.to_subinventory_code       := p_to_subinventory_code;
484         l_trolin_rec.to_subinventory_id         := p_to_subinventory_id;
485         l_trolin_rec.transaction_header_id      := p_transaction_header_id;
486         l_trolin_rec.uom_code                   := p_uom_code;
487         l_trolin_rec.attribute1                 := p_attribute1;
488         l_trolin_rec.attribute10                := p_attribute10;
489         l_trolin_rec.attribute11                := p_attribute11;
490         l_trolin_rec.attribute12                := p_attribute12;
491         l_trolin_rec.attribute13                := p_attribute13;
492         l_trolin_rec.attribute14                := p_attribute14;
493         l_trolin_rec.attribute15                := p_attribute15;
494         l_trolin_rec.attribute2                 := p_attribute2;
495         l_trolin_rec.attribute3                 := p_attribute3;
496         l_trolin_rec.attribute4                 := p_attribute4;
497         l_trolin_rec.attribute5                 := p_attribute5;
498         l_trolin_rec.attribute6                 := p_attribute6;
499         l_trolin_rec.attribute7                 := p_attribute7;
500         l_trolin_rec.attribute8                 := p_attribute8;
501         l_trolin_rec.attribute9                 := p_attribute9;
502         l_trolin_rec.attribute_category         := p_attribute_category;
503 *//*  ssia added for move order enhancement  *//*
504 	l_trolin_rec.transaction_type_id 	:= p_transaction_type_id;
505 	l_trolin_rec.transaction_source_type_id := p_transaction_source_type_id;
506 	l_trolin_rec.txn_source_id		:= p_txn_source_id;
507 	l_trolin_rec.txn_source_line_id		:= p_txn_source_line_id;
508 	l_trolin_rec.txn_source_line_detail_id  := p_txn_source_line_detail_id;
509 	l_trolin_rec.primary_quantity		:= p_primary_quantity;
510 	l_trolin_rec.to_organization_id		:= p_to_organization_id;
511 	l_trolin_rec.pick_strategy_id		:= p_pick_strategy_id;
512 	l_trolin_rec.put_away_strategy_id	:= p_put_away_strategy_id;
513 	l_trolin_rec.unit_number		:= p_unit_number;
514         l_trolin_rec.ship_to_location_id        := p_ship_to_location_id;
515 *//*  ssia end of move order enhancement changes   *//*
516     *//*   Set Operation.  *//*
517 
518     IF FND_API.To_Boolean(l_trolin_rec.db_flag) THEN
519         l_trolin_rec.operation := INV_GLOBALS.G_OPR_UPDATE;
520     ELSE
521         l_trolin_rec.operation := INV_GLOBALS.G_OPR_CREATE;
522     END IF;
523 
524     *//*   Populate trolin table  *//*
525 
526     l_trolin_tbl(1) := l_trolin_rec;
527     l_old_trolin_tbl(1) := l_old_trolin_rec;
528 
529     *//*   Call INV_Transfer_Order_PVT.Process_Transfer_Order   *//*
530 
531     INV_Transfer_Order_PVT.Process_Transfer_Order
532     (   p_api_version_number          => 1.0
533     ,   p_init_msg_list               => FND_API.G_TRUE
534     ,   p_validation_level            => FND_API.G_VALID_LEVEL_NONE
535     ,   x_return_status               => l_return_status
536     ,   x_msg_count                   => x_msg_count
537     ,   x_msg_data                    => x_msg_data
538     ,   p_control_rec                 => l_control_rec
539     ,   p_trolin_tbl                  => l_trolin_tbl
540     ,   p_old_trolin_tbl              => l_old_trolin_tbl
541     ,   x_trohdr_rec                  => l_x_trohdr_rec
542     ,   x_trolin_tbl                  => l_x_trolin_tbl
543     );
544 
545     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
546         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
547     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
548         RAISE FND_API.G_EXC_ERROR;
549     END IF;
550 
551 
552     *//*   Unload out tbl  *//*
553 
554     l_x_trolin_rec := l_x_trolin_tbl(1);
555 
556 
557     *//*   Write to cache.  *//*
558 
559     Write_trolin
560     (   p_trolin_rec                  => l_x_trolin_rec
561     );
562 
563     *//*   Set return status.  *//*
564 
565     x_return_status := FND_API.G_RET_STS_SUCCESS;
566 
567     *//*   Get message count and data   *//*
568 
569     FND_MSG_PUB.Count_And_Get
570     (   p_count                       => x_msg_count
571     ,   p_data                        => x_msg_data
572     );
573 
574 
575 EXCEPTION
576 
577     WHEN FND_API.G_EXC_ERROR THEN
578 
579         x_return_status := FND_API.G_RET_STS_ERROR;
580 
581         *//*   Get message count and data  *//*
582 
583         FND_MSG_PUB.Count_And_Get
584         (   p_count                       => x_msg_count
585         ,   p_data                        => x_msg_data
586         );
587 
588     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
589 
590         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
591 
592         *//*   Get message count and data  *//*
593 
594         FND_MSG_PUB.Count_And_Get
595         (   p_count                       => x_msg_count
596         ,   p_data                        => x_msg_data
597         );
598 
599     WHEN OTHERS THEN
600 
601         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
602 
603         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
604         THEN
605             FND_MSG_PUB.Add_Exc_Msg
606             (   G_PKG_NAME
607             ,   'Change_Attribute'
608             );
609         END IF;
610 
611         *//*   Get message count and data  *//*
612 
613         FND_MSG_PUB.Count_And_Get
614         (   p_count                       => x_msg_count
615         ,   p_data                        => x_msg_data
616         );
617 
618 END Validate_Record;
619 odab */
620 
621 /*   Procedure       Validate_And_Write */
622 PROCEDURE Validate_And_Write
623 (   p_mo_line_rec                   IN  GMI_Move_Order_Global.mo_line_rec
624 ,   x_return_status                 OUT NOCOPY VARCHAR2
625 ,   x_msg_count                     OUT NOCOPY NUMBER
626 ,   x_msg_data                      OUT NOCOPY VARCHAR2
627 )
628 IS
629 l_return_status               VARCHAR2(1);
630 BEGIN
631 
632     /*   Populate trolin table */
633     GMI_Move_Order_Line_Util.Update_Row(p_mo_line_rec);
634 
635     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
636         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
637     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
638         RAISE FND_API.G_EXC_ERROR;
639     END IF;
640 
641 
642 
643 
644     /*   Clear trolin record cache */
645 
646     Clear_trolin;
647 
648     /*   Set return status. */
649 
650     x_return_status := FND_API.G_RET_STS_SUCCESS;
651 
652     /*   Get message count and data */
653 
654     FND_MSG_PUB.Count_And_Get
655     (   p_count                       => x_msg_count
656     ,   p_data                        => x_msg_data
657     );
658 
659 
660 EXCEPTION
661 
662     WHEN FND_API.G_EXC_ERROR THEN
663 
664         x_return_status := FND_API.G_RET_STS_ERROR;
665 
666         /*   Get message count and data */
667 
668         FND_MSG_PUB.Count_And_Get
669         (   p_count                       => x_msg_count
670         ,   p_data                        => x_msg_data
671         );
672 
673     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
674 
675         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
676 
677         /*   Get message count and data */
678 
679         FND_MSG_PUB.Count_And_Get
680         (   p_count                       => x_msg_count
681         ,   p_data                        => x_msg_data
682         );
683 
684     WHEN OTHERS THEN
685 
686         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
687 
688         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
689         THEN
690             FND_MSG_PUB.Add_Exc_Msg
691             (   G_PKG_NAME
692             ,   'Validate_And_Write'
693             );
694         END IF;
695 
696         /*   Get message count and data */
697 
698         FND_MSG_PUB.Count_And_Get
699         (   p_count                       => x_msg_count
700         ,   p_data                        => x_msg_data
701         );
702 
703 END Validate_And_Write;
704 
705 
706 /*   Procedure       Delete_Row */
707 /* odab
708 PROCEDURE Delete_Row
709 (   x_return_status                 OUT NOCOPY VARCHAR2
710 ,   x_msg_count                     OUT NOCOPY NUMBER
711 ,   x_msg_data                      OUT NOCOPY VARCHAR2
712 ,   p_line_id                       IN  NUMBER
713 )
714 IS
715 l_trolin_rec                  INV_Move_Order_PUB.Trolin_Rec_Type;
716 l_trolin_tbl                  INV_Move_Order_PUB.Trolin_Tbl_Type;
717 l_control_rec                 INV_GLOBALS.Control_Rec_Type;
718 l_return_status               VARCHAR2(1);
719 l_x_trohdr_rec                INV_Move_Order_PUB.Trohdr_Rec_Type;
720 l_x_trolin_rec                INV_Move_Order_PUB.Trolin_Rec_Type;
721 l_x_trolin_tbl                INV_Move_Order_PUB.Trolin_Tbl_Type;
722 BEGIN
723 
724     *//*   Set control flags.  *//*
725 
726     l_control_rec.controlled_operation := TRUE;
727     l_control_rec.validate_entity      := TRUE;
728     l_control_rec.write_to_DB          := TRUE;
729 
730     l_control_rec.default_attributes   := FALSE;
731     l_control_rec.change_attributes    := FALSE;
732     l_control_rec.process              := FALSE;
733 
734     *//* Instruct API to retain its caches *//*
735 
736     l_control_rec.clear_api_cache      := FALSE;
737     l_control_rec.clear_api_requests   := FALSE;
738 
739     *//*   Read DB record from cache   *//*
740 
741     l_trolin_rec := Get_trolin
742     (   p_db_record                   => TRUE
743     ,   p_line_id                     => p_line_id
744     );
745 
746     *//*   Set Operation.   *//*
747 
748     l_trolin_rec.operation := INV_GLOBALS.G_OPR_DELETE;
749 
750     *//*  Populate trolin table  *//*
751 
752     l_trolin_tbl(1) := l_trolin_rec;
753 
754     *//*  Call INV_Transfer_Order_PVT.Process_Transfer_Order   *//*
755 
756     INV_Transfer_Order_PVT.Process_Transfer_Order
757     (   p_api_version_number          => 1.0
758     ,   p_init_msg_list               => FND_API.G_TRUE
759     ,   x_return_status               => l_return_status
760     ,   x_msg_count                   => x_msg_count
761     ,   x_msg_data                    => x_msg_data
762     ,   p_control_rec                 => l_control_rec
763     ,   p_trolin_tbl                  => l_trolin_tbl
764     ,   x_trohdr_rec                  => l_x_trohdr_rec
765     ,   x_trolin_tbl                  => l_x_trolin_tbl
766     );
767 
768     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
769         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
770     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
771         RAISE FND_API.G_EXC_ERROR;
772     END IF;
773 
774 
775     *//*   Clear trolin record cache  *//*
776 
777     Clear_trolin;
778 
779     *//*   Set return status.  *//*
780 
781     x_return_status := FND_API.G_RET_STS_SUCCESS;
782 
783     *//*   Get message count and data  *//*
784 
785     FND_MSG_PUB.Count_And_Get
786     (   p_count                       => x_msg_count
787     ,   p_data                        => x_msg_data
788     );
789 
790 
791 EXCEPTION
792 
793     WHEN FND_API.G_EXC_ERROR THEN
794 
795         x_return_status := FND_API.G_RET_STS_ERROR;
796 
797         *//*   Get message count and data   *//*
798 
799         FND_MSG_PUB.Count_And_Get
800         (   p_count                       => x_msg_count
801         ,   p_data                        => x_msg_data
802         );
803 
804     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
805 
806         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
807 
808         *//*   Get message count and data   *//*
809 
810         FND_MSG_PUB.Count_And_Get
811         (   p_count                       => x_msg_count
812         ,   p_data                        => x_msg_data
813         );
814 
815     WHEN OTHERS THEN
816 
817         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
818 
819         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
820         THEN
821             FND_MSG_PUB.Add_Exc_Msg
822             (   G_PKG_NAME
823             ,   'Delete_Row'
824             );
825         END IF;
826 
827         *//*   Get message count and data  *//*
828 
829         FND_MSG_PUB.Count_And_Get
830         (   p_count                       => x_msg_count
831         ,   p_data                        => x_msg_data
832         );
833 
834 END Delete_Row;
835 odab */
836 /*   Procedure       Process_Entity */
837 /* odab
838 PROCEDURE Process_Entity
839 (   x_return_status                 OUT NOCOPY VARCHAR2
840 ,   x_msg_count                     OUT NOCOPY NUMBER
841 ,   x_msg_data                      OUT NOCOPY VARCHAR2
842 )
843 IS
844 l_control_rec                 INV_GLOBALS.Control_Rec_Type;
845 l_return_status               VARCHAR2(1);
846 l_x_trohdr_rec                INV_Move_Order_PUB.Trohdr_Rec_Type;
847 l_x_trolin_rec                INV_Move_Order_PUB.Trolin_Rec_Type;
848 l_x_trolin_tbl                INV_Move_Order_PUB.Trolin_Tbl_Type;
849 BEGIN
850 
851     *//*   Set control flags.   *//*
852 
853     l_control_rec.controlled_operation := TRUE;
854     l_control_rec.process              := TRUE;
855     l_control_rec.process_entity       := INV_GLOBALS.G_ENTITY_TROLIN;
856 
857     l_control_rec.default_attributes   := FALSE;
858     l_control_rec.change_attributes    := FALSE;
859     l_control_rec.validate_entity      := FALSE;
860     l_control_rec.write_to_DB          := FALSE;
861 
862     *//*   Instruct API to clear its request table  *//*
863 
864     l_control_rec.clear_api_cache      := FALSE;
865     l_control_rec.clear_api_requests   := FALSE;
866 
867     *//*   Call INV_Transfer_Order_PVT.Process_Transfer_Order   *//*
868 
869     INV_Transfer_Order_PVT.Process_Transfer_Order
870     (   p_api_version_number          => 1.0
871     ,   p_init_msg_list               => FND_API.G_TRUE
872     ,   x_return_status               => l_return_status
873     ,   x_msg_count                   => x_msg_count
874     ,   x_msg_data                    => x_msg_data
875     ,   p_control_rec                 => l_control_rec
876     ,   x_trohdr_rec                  => l_x_trohdr_rec
877     ,   x_trolin_tbl                  => l_x_trolin_tbl
878     );
879 
880     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
881         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
882     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
883         RAISE FND_API.G_EXC_ERROR;
884     END IF;
885 
886 
887     *//*   Set return status.  *//*
888 
889     x_return_status := FND_API.G_RET_STS_SUCCESS;
890 
891     *//*   Get message count and data  *//*
892 
893     FND_MSG_PUB.Count_And_Get
894     (   p_count                       => x_msg_count
895     ,   p_data                        => x_msg_data
896     );
897 
898 
899 EXCEPTION
900 
901     WHEN FND_API.G_EXC_ERROR THEN
902 
903         x_return_status := FND_API.G_RET_STS_ERROR;
904 
905         *//*   Get message count and data   *//*
906 
907         FND_MSG_PUB.Count_And_Get
908         (   p_count                       => x_msg_count
909         ,   p_data                        => x_msg_data
910         );
911 
912     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
913 
914         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
915 
916         *//*  Get message count and data   *//*
917 
918         FND_MSG_PUB.Count_And_Get
919         (   p_count                       => x_msg_count
920         ,   p_data                        => x_msg_data
921         );
922 
923     WHEN OTHERS THEN
924 
925         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
926 
927         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
928         THEN
929             FND_MSG_PUB.Add_Exc_Msg
930             (   G_PKG_NAME
931             ,   'Process_Entity'
932             );
933         END IF;
934 
935         *//*   Get message count and data   *//*
936 
937         FND_MSG_PUB.Count_And_Get
938         (   p_count                       => x_msg_count
939         ,   p_data                        => x_msg_data
940         );
941 
942 END Process_Entity;
943 odab */
944 /*   Procedure       lock_Row */
945 
946 PROCEDURE Lock_Row
947 (   p_mo_line_rec                   IN  GMI_Move_Order_Global.mo_line_rec
948 ,   p_init_msg_list                 IN  NUMBER
949 ,   x_return_status                 OUT NOCOPY VARCHAR2
950 ,   x_msg_count                     OUT NOCOPY NUMBER
951 ,   x_msg_data                      OUT NOCOPY VARCHAR2
952 )
953 IS
954 l_return_status               VARCHAR2(1);
955 l_mo_line_rec                 GMI_MOVE_ORDER_GLOBAL.mo_line_rec;
956 BEGIN
957 
958     IF (p_init_msg_list = 1)
959     THEN
960        FND_MSG_PUB.Initialize;
961     END IF;
962 
963     savepoint Lock_Row_SP;
964 
965     l_mo_line_rec := p_mo_line_rec;
966 
967     /*   Call the relevant procedure */
968     GMI_Move_Order_Line_Util.Lock_Row
969     (   p_mo_line_rec                 => l_mo_line_rec
970     ,   x_mo_line_rec                 => l_mo_line_rec
971     ,   x_return_status               => l_return_status
972     );
973 
974 /* odab
975     IF l_return_status = FND_API.G_RET_STS_SUCCESS THEN
976 
977         *//*   Set DB flag and write record to cache.  *//*
978         Write_trolin
979         (   p_mo_line_rec                 => p_mo_line_rec
980         ,   p_db_record                   => TRUE
981         );
982 
983     END IF;
984 odab */
985        /* Set return status.    */
986 
987     x_return_status := l_return_status;
988 
989     /*   Get message count and data */
990 
991     FND_MSG_PUB.Count_And_Get
992     (   p_count                       => x_msg_count
993     ,   p_data                        => x_msg_data
994     );
995 
996     IF (x_return_status <>  FND_API.G_RET_STS_SUCCESS)
997     THEN
998        ROLLBACK TO SAVEPOINT Lock_Row_SP;
999     END IF;
1000 
1001 EXCEPTION
1002 
1003     WHEN OTHERS THEN
1004        ROLLBACK TO SAVEPOINT Lock_Row_SP;
1005 
1006         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1007         THEN
1008             FND_MSG_PUB.Add_Exc_Msg
1009             (   G_PKG_NAME
1010             ,   'Lock_Row'
1011             );
1012         END IF;
1013 
1014         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1015 
1016         /*   Get message count and data   */
1017 
1018         FND_MSG_PUB.Count_And_Get
1019         (   p_count                       => x_msg_count
1020         ,   p_data                        => x_msg_data
1021         );
1022 
1023 
1024 
1025 END Lock_Row;
1026 
1027 /*   Procedures maintaining trolin record cache.  */
1028 
1029 PROCEDURE Write_trolin
1030 (   p_mo_line_rec                   IN  GMI_MOVE_ORDER_GLOBAL.mo_line_rec
1031 ,   p_db_record                     IN  BOOLEAN := FALSE
1032 )
1033 IS
1034 BEGIN
1035 
1036     g_trolin_rec := p_mo_line_rec;
1037 
1038     IF p_db_record THEN
1039 
1040         g_db_trolin_rec := p_mo_line_rec;
1041 
1042     END IF;
1043 
1044 END Write_Trolin;
1045 
1046 FUNCTION Get_trolin
1047 (   p_db_record                     IN  BOOLEAN := FALSE
1048 ,   p_line_id                       IN  NUMBER
1049 )
1050 RETURN GMI_MOVE_ORDER_GLOBAL.mo_line_rec
1051 IS
1052 BEGIN
1053 
1054     IF  p_line_id <> g_trolin_rec.line_id
1055     THEN
1056 
1057         /*   Query row from DB   */
1058 
1059         g_trolin_rec := GMI_Move_Order_Line_Util.Query_Row
1060         (   p_line_id                     => p_line_id
1061         );
1062 
1063 /* odab        g_trolin_rec.db_flag           := FND_API.G_TRUE; */
1064 
1065         /*   Load DB record */
1066 
1067         g_db_trolin_rec                := g_trolin_rec;
1068 
1069     END IF;
1070 
1071     IF p_db_record THEN
1072 
1073         RETURN g_db_trolin_rec;
1074 
1075     ELSE
1076 
1077         RETURN g_trolin_rec;
1078 
1079     END IF;
1080 
1081 END Get_Trolin;
1082 
1083 PROCEDURE Clear_Trolin
1084 IS
1085 
1086 l_mo_line_rec      GMI_MOVE_ORDER_GLOBAL.mo_line_rec;
1087 
1088 BEGIN
1089 
1090     g_trolin_rec                   := l_mo_line_rec;
1091     g_db_trolin_rec                := l_mo_line_rec;
1092 
1093 END Clear_Trolin;
1094 
1095 END GMI_TO_Form_Trolin;