DBA Data[Home] [Help]

PACKAGE BODY: APPS.INV_MOVE_ORDER_PUB

Source


1 PACKAGE BODY INV_Move_Order_PUB AS
2 /* $Header: INVPTROB.pls 120.5.12010000.4 2009/08/12 11:07:04 asugandh ship $ */
3 
4 --  Global constant holding the package name
5 
6 G_PKG_NAME                    CONSTANT VARCHAR2(30) := 'INV_Move_Order_PUB';
7 
8 g_inventory_item_id    NUMBER := NULL;
9 g_primary_uom_code    VARCHAR2(3) := NULL;
10 g_restrict_subinventories_code NUMBER;
11 g_restrict_locators_code NUMBER;
12 
13 
14 PROCEDURE print_debug(p_message in varchar2, p_module in varchar2) IS
15 begin
16   -- dbms_output.put_line(p_message);
17   inv_trx_util_pub.trace(p_message, p_module);
18 end;
19 
20 --  Forward declaration of Procedure Id_To_Value
21 
22 PROCEDURE Id_To_Value
23 (   p_trohdr_rec                    IN  Trohdr_Rec_Type
24 ,   p_trolin_tbl                    IN  Trolin_Tbl_Type
25 ,   x_trohdr_val_rec                OUT NOCOPY Trohdr_Val_Rec_Type
26 ,   x_trolin_val_tbl                OUT NOCOPY Trolin_Val_Tbl_Type
27 );
28 
29 --  Forward declaration of procedure Value_To_Id
30 
31 PROCEDURE Value_To_Id
32 (   x_return_status                 OUT NOCOPY VARCHAR2
33 ,   p_trohdr_rec                    IN  Trohdr_Rec_Type
34 ,   p_trohdr_val_rec                IN  Trohdr_Val_Rec_Type
35 ,   p_trolin_tbl                    IN  Trolin_Tbl_Type
36 ,   p_trolin_val_tbl                IN  Trolin_Val_Tbl_Type
37 ,   x_trohdr_rec                    IN OUT NOCOPY Trohdr_Rec_Type
38 ,   x_trolin_tbl                    IN OUT NOCOPY Trolin_Tbl_Type
39 );
40 --  Start of Comments
41 --  API name    Create_Move_Order_Header
42 --  Type        Public
43 --  Function
44 --
45 --  Pre-reqs
46 --
47 --  Parameters
48 --
49 --  Version     Current version = 1.0
50 --              Initial version = 1.0
51 --
52 --  Notes
53 --
54 --  End of Comments
55 
56 PROCEDURE Create_Move_Order_Header
57 (   p_api_version_number            IN  NUMBER
58 ,   p_init_msg_list                 IN  VARCHAR2 := FND_API.G_FALSE
59 ,   p_return_values                 IN  VARCHAR2 := FND_API.G_FALSE
60 ,   p_commit                        IN  VARCHAR2 := FND_API.G_FALSE
61 ,   x_return_status                 OUT NOCOPY VARCHAR2
62 ,   x_msg_count                     OUT NOCOPY NUMBER
63 ,   x_msg_data                      OUT NOCOPY VARCHAR2
64 ,   p_trohdr_rec                    IN  Trohdr_Rec_Type := G_MISS_TROHDR_REC
65 ,   p_trohdr_val_rec                IN  Trohdr_Val_Rec_Type := G_MISS_TROHDR_VAL_REC
66 ,   x_trohdr_rec                    IN OUT NOCOPY Trohdr_Rec_Type
67 ,   x_trohdr_val_rec                IN OUT NOCOPY Trohdr_Val_Rec_Type
68 ,   p_validation_flag            IN VARCHAR2
69 ) IS
70 l_api_version_number          CONSTANT NUMBER := 1.0;
71 l_api_name                    CONSTANT VARCHAR2(30):= 'Create_Move_Order_Header';
72 l_control_rec                 INV_GLOBALS.Control_Rec_Type;
73 l_return_status               VARCHAR2(1);
74 l_trohdr_rec                  Trohdr_Rec_Type;
75 l_trolin_tbl                  Trolin_Tbl_Type := G_MISS_TROLIN_TBL;
76 l_trolin_val_tbl              Trolin_Val_Tbl_Type := G_MISS_TROLIN_VAL_TBL;
77     l_debug number := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
78 BEGIN
79     if l_debug = 1 THEN
80       print_debug('enter Create Move Order Header', l_api_name);
81     end if;
82     --  Standard call to check for call compatibility
83     IF NOT FND_API.Compatible_API_Call
84            (   l_api_version_number
85            ,   p_api_version_number
86            ,   l_api_name
87            ,   G_PKG_NAME
88            )
89     THEN
90         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
91     END IF;
92 
93   g_primary_uom_code := NULL;
94   g_inventory_item_id := NULL;
95   IF NVL(p_validation_flag,g_validation_yes) = g_validation_no THEN
96     If l_debug = 1 THEN
97       print_debug('No Validation', l_api_name);
98     End If;
99     x_trohdr_rec := p_trohdr_rec;
100     --set default values
101     x_trohdr_rec.date_required := sysdate;
102     x_trohdr_rec.description := NULL;
103     x_trohdr_rec.from_subinventory_code := NULL;
104     x_trohdr_rec.header_id := INV_TRANSFER_ORDER_PVT.get_next_header_id;
105     x_trohdr_rec.program_application_id := NULL;
106     x_trohdr_rec.program_id := NULL;
107     x_trohdr_rec.program_update_date := NULL;
108     x_trohdr_rec.request_id := NULL;
109     x_trohdr_rec.status_date := sysdate;
110     x_trohdr_rec.to_account_id := NULL;
111     x_trohdr_rec.to_subinventory_code := NULL;
112     x_trohdr_rec.ship_to_location_id := NULL;
113 
114     x_trohdr_rec.attribute_category:= NULL;
115     x_trohdr_rec.attribute1 := NULL;
116     x_trohdr_rec.attribute2 := NULL;
117     x_trohdr_rec.attribute3 := NULL;
118     x_trohdr_rec.attribute4 := NULL;
119     x_trohdr_rec.attribute5 := NULL;
120     x_trohdr_rec.attribute6 := NULL;
121     x_trohdr_rec.attribute7 := NULL;
122     x_trohdr_rec.attribute8 := NULL;
123     x_trohdr_rec.attribute9 := NULL;
124     x_trohdr_rec.attribute10 := NULL;
125     x_trohdr_rec.attribute11 := NULL;
126     x_trohdr_rec.attribute12 := NULL;
127     x_trohdr_rec.attribute13 := NULL;
128     x_trohdr_rec.attribute14 := NULL;
129     x_trohdr_rec.attribute15 := NULL;
130     inv_trohdr_util.insert_row(x_trohdr_rec);
131     x_return_status := fnd_api.g_ret_sts_success;
132 
133   ELSE
134     If l_debug = 1 THEN
135       print_debug('Validation turned on', l_api_name);
136     End If;
137     l_control_rec.controlled_operation := TRUE;
138     l_control_Rec.process_entity := INV_GLOBALS.G_ENTITY_TROHDR;
139     l_control_Rec.default_attributes := TRUE;
140     l_control_rec.change_attributes := TRUE;
141     l_control_rec.write_to_db := TRUE;
142 
143     If l_debug = 1 THEN
144       print_debug('Call to process_transfer_order', l_api_name);
145     End If;
146     --  Call INV_Transfer_Order_PVT.Process_Transfer_Order
147     INV_Transfer_Order_PVT.Process_Transfer_Order
148     (   p_api_version_number          => 1.0
149     ,   p_init_msg_list               => p_init_msg_list
150     ,   p_commit                      => p_commit
151     ,   p_validation_level            => FND_API.G_VALID_LEVEL_FULL
152     ,   p_control_rec                 => l_control_rec
153     ,   x_return_status               => x_return_status
154     ,   x_msg_count                   => x_msg_count
155     ,   x_msg_data                    => x_msg_data
156     ,   p_trohdr_rec                  => p_trohdr_rec
157     ,   p_trohdr_val_rec              => p_trohdr_val_rec
158     ,   p_trolin_tbl                  => l_trolin_tbl
159     ,   p_trolin_val_tbl              => l_trolin_val_tbl
160     ,   x_trohdr_rec                  => l_trohdr_rec
161     ,   x_trolin_tbl                  => l_trolin_tbl
162     );
163 
164     IF x_return_status = fnd_api.g_ret_sts_error THEN
165 		If l_debug = 1 THEN
166 			print_debug('Error from process_transfer_order',l_api_name);
167 		End If;
168 		RAISE fnd_api.g_exc_error;
169     ELSIF x_return_status = fnd_api.g_ret_sts_unexp_error THEN
170 		If l_debug = 1 THEN
171 			print_debug('Unexpected error from process_transfer_order',l_api_name);
172 		End If;
173 		RAISE fnd_api.g_exc_unexpected_error;
174     END IF;
175 
176     --  Load Id OUT parameters.
177 
178     x_trohdr_rec                   := l_trohdr_rec;
179     if( p_commit = FND_API.G_TRUE ) Then
180     commit;
181     end if;
182     --x_trolin_tbl                   := p_trolin_tbl;
183 
184     --  If p_return_values is TRUE then convert Ids to Values.
185 
186     IF FND_API.to_Boolean(p_return_values) THEN
187 
188         Id_To_Value
189         (   p_trohdr_rec                  => p_trohdr_rec
190         ,   p_trolin_tbl                  => l_trolin_tbl
191         ,   x_trohdr_val_rec              => x_trohdr_val_rec
192         ,   x_trolin_val_tbl              => l_trolin_val_tbl
193         );
194 
195     END IF;
196   END IF;
197 
198   If l_debug = 1 THEN
199     print_debug('End Create Move Order Header', l_api_name);
200   End If;
201 EXCEPTION
202 
203     WHEN FND_API.G_EXC_ERROR THEN
204         x_return_status := FND_API.G_RET_STS_ERROR;
205 
206         --  Get message count and data
207         FND_MSG_PUB.Count_And_Get
208         (   p_count                       => x_msg_count
209         ,   p_data                        => x_msg_data
210         );
211 
212     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
213         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
214 
215         --  Get message count and data
216         FND_MSG_PUB.Count_And_Get
217         (   p_count                       => x_msg_count
218         ,   p_data                        => x_msg_data
219         );
220 
221     WHEN OTHERS THEN
222         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
223 
224         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR) THEN
225             FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME , 'Create_Move_Order_Header');
226         END IF;
227 
228         --  Get message count and data
229         FND_MSG_PUB.Count_And_Get
230         (   p_count                       => x_msg_count
231         ,   p_data                        => x_msg_data
232         );
233 
234 END Create_Move_Order_Header;
235 
236 
237 --  Start of Comments
238 --  API name    Create_Move_Order_Lines
239 --  Type        Public
240 --  Function
241 --
242 --  Pre-reqs
243 --
244 --  Parameters
245 --
246 --  Version     Current version = 1.0
247 --              Initial version = 1.0
248 --
249 --  Notes
250 --  Changed by P lowe for bug 6689912
251 --  End of Comments
252 
253 PROCEDURE Create_Move_Order_Lines
254 (   p_api_version_number            IN  NUMBER
255 ,   p_init_msg_list                 IN  VARCHAR2 := FND_API.G_FALSE
256 ,   p_return_values                 IN  VARCHAR2 := FND_API.G_FALSE
257 ,   p_commit                        IN  VARCHAR2 := FND_API.G_FALSE
258 ,   x_return_status                 OUT NOCOPY VARCHAR2
259 ,   x_msg_count                     OUT NOCOPY NUMBER
260 ,   x_msg_data                      OUT NOCOPY VARCHAR2
261 ,   p_trolin_tbl                    IN  Trolin_Tbl_Type :=
262                                         G_MISS_TROLIN_TBL
263 ,   p_trolin_val_tbl                IN  Trolin_Val_Tbl_Type :=
264                                         G_MISS_TROLIN_VAL_TBL
265 ,   x_trolin_tbl                    IN OUT NOCOPY Trolin_Tbl_Type
266 ,   x_trolin_val_tbl                IN OUT NOCOPY Trolin_Val_Tbl_Type
267 ,   p_validation_flag            IN VARCHAR2
268 )
269 IS
270 l_api_version_number          CONSTANT NUMBER := 1.0;
271 l_api_name                    CONSTANT VARCHAR2(30):= 'Create_Move_Order_Lines';
272 l_control_rec                 INV_GLOBALS.Control_Rec_Type;
273 l_return_status               VARCHAR2(1);
274 l_trohdr_rec                  Trohdr_Rec_Type := G_MISS_TROHDR_REC;
275 l_trohdr_val_rec              Trohdr_Val_Rec_Type := G_MISS_TROHDR_VAL_REC;
276 l_trolin_tbl                  Trolin_Tbl_Type := p_trolin_tbl;
277 l_trolin_tbl_out          Trolin_Tbl_Type;
278 l_dummy                  NUMBER;
279 l_index                  NUMBER;
280 l_primary_uom_code          VARCHAR2(3);
281 l_restrict_locators_code      NUMBER := NULL;
282 l_restrict_subinventories_code NUMBER:= NULL;
283 l_result              VARCHAR2(1);
284 l_current_ship_set_id           NUMBER;
285 l_failed_ship_set_id          NUMBER;
286 l_shipset_start_index          NUMBER;
287 
288 l_batch_id            NUMBER := WSH_PICK_LIST.G_BATCH_ID;
289 l_new_trolin_tbl        trolin_new_tbl_type;
290 l_found_backorder_cache        BOOLEAN := FALSE;
291 l_return_value            BOOLEAN := TRUE;
292 l_shipping_attr            WSH_INTERFACE.ChangedAttributeTabType;
293 l_shipset_smc_backorder_rec    WSH_INTEGRATION.BackorderRecType;
294 l_reservable_type        NUMBER;
295 l_count                NUMBER;
296 
297  CURSOR get_move_order_type (V_header_id NUMBER) IS
298  select move_order_type
299  from mtl_txn_request_headers h
300  where h.header_id = V_header_id;
301 -- 6689912
302  CURSOR get_sales_order (V_line_id NUMBER) IS
303  select h.order_number , l.org_id -- 6689912 added org_id
304  from oe_order_headers_all h
305      ,oe_order_lines_all l
306  where l.header_id = h.header_id
307  and l.line_id = V_line_id;
308 
309  l_org_id number; -- 6689912
310  l_order_number       OE_ORDER_HEADERS_ALL.ORDER_NUMBER%TYPE;
311  l_move_order_type    MTL_TXN_REQUEST_HEADERS.MOVE_ORDER_TYPE%TYPE;
312  l_error_code         NUMBER;
313  l_msg_data           VARCHAR2(240);
314 
315  CURSOR get_sub_loc_ctrl(v_org_id  NUMBER, v_sub_code  VARCHAR2) IS
316  SELECT locator_type
317    FROM mtl_secondary_inventories
318   WHERE organization_id = v_org_id
319     AND secondary_inventory_name = v_sub_code;
320 
321  l_sub_loc_ctrl       NUMBER;
322 
323  CURSOR get_item_loc_ctrl(v_org_id  NUMBER, v_item_id  NUMBER) IS
324  SELECT location_control_code
325    FROM mtl_system_items
326   WHERE organization_id = v_org_id
327     AND inventory_item_id = v_item_id;
328 
329  l_item_loc_ctrl      NUMBER;
330  l_debug              NUMBER := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
331 
332  --Bug 7148749, added for ship model complete handling
333  l_current_ship_model_id NUMBER;
334  l_shipmodel_start_index NUMBER;
335 BEGIN
336 
337     --  Standard call to check for call compatibility
338 
339     IF NOT FND_API.Compatible_API_Call
340            (   l_api_version_number
341            ,   p_api_version_number
342            ,   l_api_name
343            ,   G_PKG_NAME
344            )
345     THEN
346         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
347     END IF;
348 
349 /*
350     --  Perform Value to Id conversion
351     Value_To_Id
352     (   x_return_status               => l_return_status
353     ,   p_trohdr_rec                  => l_trohdr_rec
354     ,   p_trohdr_val_rec              => l_trohdr_val_rec
355     ,   p_trolin_tbl                  => p_trolin_tbl
356     ,   p_trolin_val_tbl              => p_trolin_val_tbl
357     ,   x_trohdr_rec                  => l_trohdr_rec
358     ,   x_trolin_tbl                  => l_trolin_tbl
359     );
360 
361     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
362         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
363     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
364         RAISE FND_API.G_EXC_ERROR;
365     END IF;
366 */
367     --l_control_rec.process_entity := INV_GLOBALS.G_ENTITY_TROLIN;
368     --l_control_rec.controlled_operation := TRUE;
369     --l_control_rec.write_to_db := FND_API.to_boolean(p_commit);
370 
371   IF NVL(p_validation_flag, g_validation_yes) = g_validation_no THEN  --{ Validation No
372     l_index := p_trolin_tbl.FIRST;
373     l_count := 1;
374     Loop
375       -- print_debug('start l_index '||l_index,l_api_name);
376       x_trolin_tbl(l_index) := p_trolin_tbl(l_index);
377       x_trolin_tbl(l_Index).return_status := fnd_api.g_ret_sts_success;
378       l_found_backorder_cache := FALSE;
379       l_restrict_subinventories_code := NULL;
380       l_restrict_locators_code := NULL;
381 
382       IF x_trolin_tbl(l_index).ship_set_id IS NOT NULL AND
383         x_trolin_tbl(l_index).ship_set_id <> fnd_api.g_miss_num AND
384         x_trolin_tbl(l_index).ship_set_id <> nvl(l_current_ship_set_id, -9999) THEN
385         SAVEPOINT SHIPSET_SP;
386         l_current_ship_set_id := x_trolin_tbl(l_index).ship_set_id;
387         l_shipset_start_index := l_index;
388       ELSIF (x_trolin_tbl(l_index).ship_set_id IS NULL OR
389         x_trolin_tbl(l_index).ship_set_Id = fnd_api.g_miss_num) AND
390         l_current_ship_set_id IS NOT NULL THEN
391         l_current_ship_set_id := NULL;
392         l_shipset_start_index := NULL;
393       END IF;
394 
395       -- Bug 7148749, added for ship model complete handling
396       IF x_trolin_tbl(l_index).ship_model_id IS NOT NULL AND
397         x_trolin_tbl(l_index).ship_model_id <> fnd_api.g_miss_num AND
398         x_trolin_tbl(l_index).ship_model_id <> nvl(l_current_ship_model_id, -9999) THEN
399         SAVEPOINT SHIPMODEL_SP;
400         l_current_ship_model_id := x_trolin_tbl(l_index).ship_model_id;
401         l_shipmodel_start_index := l_index;
402       ELSIF (x_trolin_tbl(l_index).ship_model_id IS NULL OR
403         x_trolin_tbl(l_index).ship_model_Id = fnd_api.g_miss_num) AND
404         l_current_ship_model_id IS NOT NULL THEN
405         l_current_ship_model_id := NULL;
406         l_shipmodel_start_index := NULL;
407       END IF;
408       -- End Bug 7148749
409 
410       If x_trolin_tbl(l_index).transaction_type_id = 52 Then
411         x_trolin_tbl(l_index).transaction_source_type_id := 2;
412       Elsif x_trolin_tbl(l_index).transaction_type_id = 53 Then
413         x_trolin_tbl(l_index).transaction_source_type_id := 8;
414       Else
415         BEGIN
416           select transaction_source_type_id
417                 into x_trolin_tbl(l_index).transaction_source_type_id
418           from mtl_transaction_types
419           where transaction_type_id = x_trolin_tbl(l_index).transaction_type_id;
420         EXCEPTION
421           WHEN NO_DATA_FOUND THEN
422             print_debug('Error in fetching source type, Invalid transaction type', l_api_name);
423             RAISE fnd_api.g_exc_error;
424         END;
425       End If;
426 
427       IF x_trolin_tbl(l_index).primary_quantity IS NULL OR
428          x_trolin_tbl(l_index).primary_quantity = fnd_api.g_miss_num THEN
429         IF g_inventory_item_id = x_trolin_tbl(l_index).inventory_item_id THEN
430             l_primary_uom_code := g_primary_uom_code;
431         ELSE
432           -- print_debug('Selecting primary uom code', l_api_name);
433           SELECT primary_uom_code
434               ,nvl(restrict_locators_code,0)
435               ,nvl(restrict_subinventories_code,0)
436           INTO l_primary_uom_code
437               ,l_restrict_locators_code
438               ,l_restrict_subinventories_code
439           FROM mtl_system_items
440           WHERE organization_id = x_trolin_tbl(l_index).organization_id
441           AND inventory_item_id = x_trolin_tbl(l_index).inventory_item_id;
442 
443           g_inventory_item_id := x_trolin_tbl(l_index).inventory_item_id;
444           g_primary_uom_code := l_primary_uom_code;
445           g_restrict_locators_code := l_restrict_locators_code;
446           g_restrict_subinventories_code := l_restrict_subinventories_code;
447         END IF;
448 
449         IF l_primary_uom_code = x_trolin_tbl(l_index).uom_code THEN
450           x_trolin_tbl(l_index).primary_quantity := x_trolin_tbl(l_index).quantity;
451         ELSE
452           -- Bug 8597009: add org ID and lot number for lot-specific conversions
453           x_trolin_tbl(l_index).primary_quantity :=
454              inv_convert.inv_um_convert(
455                       item_id         => x_trolin_tbl(l_index).inventory_item_id
456                     , lot_number      => x_trolin_tbl(l_index).lot_number
457                     , organization_id => x_trolin_tbl(l_index).organization_id
458                     , PRECISION       => NULL
459                     , from_quantity   => x_trolin_tbl(l_index).quantity
460                     , from_unit       => x_trolin_tbl(l_index).uom_code
461                     , to_unit         => l_primary_uom_code
462                     , from_name       => NULL
463                     , to_name         => NULL);
464           --print_debug('primary_quantity = '|| x_trolin_tbl(l_index).primary_quantity, l_api_name);
465           IF x_trolin_tbl(l_index).primary_quantity < 0 THEN
466             print_debug('Error during conversion. Primary quantity less that 0', l_api_name);
467             RAISE fnd_api.g_exc_error;
468           END IF;
469         END IF; -- primary uom = txn uom
470       END IF; -- primary qty is missing
471 
472       IF x_trolin_tbl(l_index).to_subinventory_code IS NOT NULL THEN
473         IF l_restrict_subinventories_code IS NULL THEN
474           IF g_inventory_item_id = x_trolin_tbl(l_index).inventory_item_id Then
475             l_restrict_subinventories_code := g_restrict_subinventories_code;
476             l_restrict_locators_code := g_restrict_locators_code;
477           ELSE  -- item doesn't match saved item
478             SELECT primary_uom_code
479                 ,nvl(restrict_locators_code,0)
480                 ,nvl(restrict_subinventories_code,0)
481             INTO l_primary_uom_code
482                 ,l_restrict_locators_code
483                 ,l_restrict_subinventories_code
484              FROM mtl_system_items
485             WHERE organization_id = x_trolin_tbl(l_index).organization_id
486               AND inventory_item_id = x_trolin_tbl(l_index).inventory_item_id;
487 
488             g_inventory_item_id :=  x_trolin_tbl(l_index).inventory_item_id;
489             g_primary_uom_code := l_primary_uom_code;
490             g_restrict_subinventories_code := l_restrict_subinventories_code;
491             g_restrict_locators_code := l_restrict_locators_code;
492           END IF; -- inventory item matches
493         END IF; -- restrict subs is null
494         IF l_restrict_locators_code = 1 AND
495               x_trolin_tbl(l_index).to_locator_id IS NOT NULL THEN
496           BEGIN
497                SELECT 'Y'
498               INTO l_result
499                   FROM DUAL
500                  WHERE exists (
501                     SELECT secondary_locator
502                       FROM mtl_secondary_locators
503                      WHERE organization_id = x_trolin_tbl(l_index).organization_id
504                        AND secondary_locator = x_trolin_tbl(l_index).to_locator_id
505                    AND inventory_item_id = x_trolin_tbl(l_index).inventory_item_id);
506                EXCEPTION
507                  WHEN NO_DATA_FOUND THEN
508                    x_trolin_tbl(l_index).return_status := fnd_api.g_ret_sts_error;
509                END;
510 
511         ELSIF l_restrict_subinventories_code = 1 and x_trolin_tbl(l_index).to_subinventory_code is NOT NULL Then
512           BEGIN
513            SELECT 'Y'
514               INTO l_result
515                    FROM DUAL
516                  WHERE exists (
517                      SELECT secondary_inventory
518                        FROM mtl_item_sub_inventories
519                       WHERE organization_id = x_trolin_tbl(l_index).organization_id
520                       AND secondary_inventory = x_trolin_tbl(l_index).to_subinventory_code
521                       AND inventory_item_id = x_trolin_tbl(l_index).inventory_item_id);
522            EXCEPTION
523              WHEN NO_DATA_FOUND THEN
524                x_trolin_tbl(l_index).return_status := fnd_api.g_ret_sts_error;
525            END;
526         END IF;
527       END IF; -- to sub is not null
528 
529 /*Fix for bug#8608683
530   Validation for from sub inventory has been added.
531 */
532       IF x_trolin_tbl(l_index).from_subinventory_code IS NOT NULL THEN
533         IF l_restrict_subinventories_code IS NULL THEN
534           IF g_inventory_item_id = x_trolin_tbl(l_index).inventory_item_id Then
535             l_restrict_subinventories_code := g_restrict_subinventories_code;
536             l_restrict_locators_code := g_restrict_locators_code;
537           ELSE  -- item doesn't match saved item
538             SELECT primary_uom_code
539                 ,nvl(restrict_locators_code,0)
540                 ,nvl(restrict_subinventories_code,0)
541             INTO l_primary_uom_code
542                 ,l_restrict_locators_code
543                 ,l_restrict_subinventories_code
544              FROM mtl_system_items
545             WHERE organization_id = x_trolin_tbl(l_index).organization_id
546               AND inventory_item_id = x_trolin_tbl(l_index).inventory_item_id;
547 
548             g_inventory_item_id :=  x_trolin_tbl(l_index).inventory_item_id;
549             g_primary_uom_code := l_primary_uom_code;
550             g_restrict_subinventories_code := l_restrict_subinventories_code;
551             g_restrict_locators_code := l_restrict_locators_code;
552           END IF; -- inventory item matches
553         END IF; -- restrict subs is null
554 
555         IF l_restrict_subinventories_code = 1 and x_trolin_tbl(l_index).from_subinventory_code is NOT NULL Then
556           BEGIN
557            SELECT 'Y'
558               INTO l_result
559                    FROM DUAL
560                  WHERE exists (
561                      SELECT secondary_inventory
562                        FROM mtl_item_sub_inventories
563                       WHERE organization_id = x_trolin_tbl(l_index).organization_id
564                       AND secondary_inventory = x_trolin_tbl(l_index).from_subinventory_code
565                       AND inventory_item_id = x_trolin_tbl(l_index).inventory_item_id);
566            EXCEPTION
567              WHEN NO_DATA_FOUND THEN
568 	       print_debug('From Subinventory is not in list of restricted sub inventory', l_api_name);
569                x_trolin_tbl(l_index).return_status := fnd_api.g_ret_sts_error;
570            END;
571         END IF;
572       END IF; -- From sub is not null
573 --END bug#8608683
574 
575 
576       IF x_trolin_tbl(l_index).return_status = fnd_api.g_ret_sts_success THEN --{
577 
578         l_return_value := INV_CACHE.set_item_rec( p_organization_id   => x_trolin_tbl(l_index).organization_id
579                              ,p_item_id           => x_trolin_tbl(l_index).inventory_item_id);
580 
581         IF NOT l_return_value Then
582           print_debug('Error setting cache for inventory_item', l_api_name);
583           RAISE fnd_api.g_exc_unexpected_error;
584         END IF;
585 
586         l_reservable_type := INV_CACHE.item_rec.reservable_type;
587 
588         IF l_reservable_type = 2 then
589           l_found_backorder_cache := FALSE;
590         ELSE
591           l_found_backorder_cache := inv_pick_release_pvt.check_backorder_cache(
592                    p_org_id        => x_trolin_tbl(l_index).organization_id
593                   ,p_inventory_item_id    => x_trolin_tbl(l_index).inventory_item_id
594                   ,p_ignore_reservations    => FALSE
595                   ,p_demand_line_id    => x_trolin_tbl(l_index).txn_source_line_id);
596         END IF;
597 
598         IF l_found_backorder_cache THEN
599           IF l_current_ship_set_id IS NOT NULL THEN
600             BEGIN
601               l_shipset_smc_backorder_rec.delivery_detail_id := x_trolin_tbl(l_index).txn_source_line_detail_id;
602               l_shipset_smc_backorder_rec.ship_set_id := l_current_ship_set_id;
603 
604               If l_debug = 1 THEN
605                   print_debug('Calling BO SS for WDD = '||x_trolin_tbl(l_index).txn_source_line_detail_id||', SS_ID = '||l_current_ship_set_id,l_api_name);
606               End If;
607 
608               wsh_integration.ins_backorder_ss_smc_rec
609                     (p_api_version_number => 1.0,
610                      p_source_code        => 'INV',
611                      p_init_msg_list      => fnd_api.g_false,
612                      p_backorder_rec      => l_shipset_smc_backorder_rec,
613                      x_return_status      => l_return_status,
614                      x_msg_count          => x_msg_count,
615                      x_msg_data           => x_msg_data);
616 
617               IF l_return_status <> fnd_api.g_ret_sts_success THEN
618                  print_debug('Error occured while updating shipping for ' || 'failed ship set',l_api_name);
619                  print_debug('l_return_status: ' || l_return_status, l_api_name);
620               END IF;
621 
622             EXCEPTION
623               WHEN OTHERS THEN
624                   print_debug('When other exception: ' || Sqlerrm, l_api_name);
625                   print_debug('l_return_status: ' || l_return_status, l_api_name);
626             END;
627 
628           -- Bug 7148749, added for ship model complete handling
629           ELSIF l_current_ship_model_id IS NOT NULL THEN
630             BEGIN
631               l_shipset_smc_backorder_rec.delivery_detail_id := x_trolin_tbl(l_index).txn_source_line_detail_id;
632               l_shipset_smc_backorder_rec.ship_model_id := l_current_ship_model_id;
633 
634               If l_debug = 1 THEN
635                 print_debug('Calling BO SMC for WDD = '||x_trolin_tbl(l_index).txn_source_line_detail_id||', Model_ID = '||l_current_ship_model_id,l_api_name);
636               End If;
637 
638               wsh_integration.ins_backorder_ss_smc_rec
639                 (p_api_version_number => 1.0,
640                  p_source_code        => 'INV',
641                  p_init_msg_list      => fnd_api.g_false,
642                  p_backorder_rec      => l_shipset_smc_backorder_rec,
643                  x_return_status      => l_return_status,
644                  x_msg_count          => x_msg_count,
645                  x_msg_data           => x_msg_data);
646 
647               IF l_return_status <> fnd_api.g_ret_sts_success THEN
648                 print_debug('Error occured while updating shipping for ' || 'failed ship set',l_api_name);
649                 print_debug('l_return_status: ' || l_return_status, l_api_name);
650               END IF;
651 
652             EXCEPTION
653               WHEN OTHERS THEN
654                   print_debug('When other exception: ' || Sqlerrm, l_api_name);
655                   print_debug('l_return_status: ' || l_return_status, l_api_name);
656             END;
657           -- End Bug 7148749
658           END IF;
659           x_trolin_tbl(l_index).return_status:= fnd_api.g_ret_sts_error;
660         END IF;
661       END IF; -- x_trolin_tbl(l_index).return_status = fnd_api.g_ret_sts_success }
662 
663       IF x_trolin_tbl(l_index).return_status = fnd_api.g_ret_sts_error THEN --{
664         IF l_current_ship_set_id is NOT NULL THEN  --{
665           ROLLBACK to SHIPSET_SP;
666           l_index := l_shipset_start_index;
667           LOOP
668             IF not x_trolin_tbl.exists(l_index) THEN
669                  x_trolin_tbl(l_index) := p_trolin_tbl(l_index);
670             END IF;
671             IF l_found_backorder_cache THEN  --{
672 
673               l_shipping_attr(1).source_line_id := x_trolin_tbl(l_index).txn_source_line_id;
674               l_shipping_attr(1).ship_from_org_id := x_trolin_tbl(l_index).organization_id;
675               l_shipping_attr(1).delivery_detail_id := x_trolin_tbl(l_index).txn_source_line_detail_id;
676               l_shipping_attr(1).action_flag := 'B';
677 
678               WSH_INTERFACE.Update_Shipping_Attributes
679                 (p_source_code               => 'INV',
680                  p_changed_attributes        => l_shipping_attr,
681                  x_return_status             => l_return_status
682                 );
683 
684               IF l_return_status = FND_API.G_RET_STS_ERROR  THEN
685                 print_debug('return error from update shipping attributes',l_api_name);
686                 RAISE FND_API.G_EXC_ERROR;
687               ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
688                 print_debug('return error from update shipping attributes',l_api_name);
689                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
690               END IF;
691             END IF;  --} backorder_flag
692             x_trolin_tbl(l_index).return_status := fnd_api.g_ret_sts_error;
693             EXIT WHEN l_index = p_trolin_tbl.LAST;
694             l_index := p_trolin_tbl.NEXT(l_index);
695 
696             IF p_trolin_tbl(l_index).ship_set_id IS NULL OR
697               p_trolin_tbl(l_index).ship_set_id = fnd_api.g_miss_num OR
698               p_trolin_tbl(l_index).ship_set_id <> nvl(l_current_ship_set_id, -9999) THEN
699               l_index := p_trolin_tbl.prior(l_index);
700               EXIT;
701             END IF;
702           END LOOP; --loop for all records in shipset
703           l_current_ship_set_id := NULL;
704           l_shipset_start_index := NULL;
705         ELSIF l_current_ship_model_id IS NOT NULL THEN  --l_current_ship_set_id } {
706           ROLLBACK to SHIPMODEL_SP;
707           l_index := l_shipmodel_start_index;
708           LOOP
709             IF not x_trolin_tbl.exists(l_index) THEN
710               x_trolin_tbl(l_index) := p_trolin_tbl(l_index);
711             END IF;
712             IF l_found_backorder_cache THEN --{
713               l_shipping_attr(1).source_line_id := x_trolin_tbl(l_index).txn_source_line_id;
714               l_shipping_attr(1).ship_from_org_id := x_trolin_tbl(l_index).organization_id;
715               l_shipping_attr(1).delivery_detail_id := x_trolin_tbl(l_index).txn_source_line_detail_id;
716               l_shipping_attr(1).action_flag := 'B';
717 
718               If l_debug = 1 THEN
719                 print_debug('Backordering WDD = '||x_trolin_tbl(l_index).txn_source_line_detail_id||', MODEL_ID = '||l_current_ship_model_id,l_api_name);
720               End If;
721 
722               WSH_INTERFACE.Update_Shipping_Attributes
723                 (p_source_code               => 'INV',
724                  p_changed_attributes        => l_shipping_attr,
725                  x_return_status             => l_return_status
726                 );
727               IF l_return_status = FND_API.G_RET_STS_ERROR then
728                 print_debug('return error from update shipping attributes',l_api_name);
729                 RAISE FND_API.G_EXC_ERROR;
730               ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
731                 print_debug('return error from update shipping attributes',l_api_name);
732                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
733               END IF;
734             END IF; -- l_back_order_flag }
735             x_trolin_tbl(l_index).return_status := fnd_api.g_ret_sts_error;
736 
737             EXIT WHEN l_index = p_trolin_tbl.LAST;
738             l_index := p_trolin_tbl.NEXT(l_index);
739 
740             IF p_trolin_tbl(l_index).ship_model_id IS NULL OR
741               p_trolin_tbl(l_index).ship_model_id = fnd_api.g_miss_num OR
742               p_trolin_tbl(l_index).ship_model_id <> nvl(l_current_ship_model_id, -9999) THEN
743               l_index := p_trolin_tbl.prior(l_index);
744               EXIT;
745             END IF;
746           END LOOP; --loop for all records in ship model
747           l_current_ship_model_id := NULL;
748           l_shipmodel_start_index := NULL;
749 
750         ELSE -- l_current_ship_set_id } {
751 
752           IF l_found_backorder_cache THEN --{
753 
754             l_shipping_attr(1).source_line_id := x_trolin_tbl(l_index).txn_source_line_id;
755             l_shipping_attr(1).ship_from_org_id := x_trolin_tbl(l_index).organization_id;
756             l_shipping_attr(1).delivery_detail_id := x_trolin_tbl(l_index).txn_source_line_detail_id;
757             l_shipping_attr(1).action_flag := 'B';
758 
759             WSH_INTERFACE.Update_Shipping_Attributes
760               (p_source_code               => 'INV',
761                p_changed_attributes        => l_shipping_attr,
762                x_return_status             => l_return_status
763               );
764 
765             IF l_return_status = FND_API.G_RET_STS_ERROR then
766               print_debug('return error from update shipping attributes',l_api_name);
767               RAISE FND_API.G_EXC_ERROR;
768             ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
769               print_debug('return error from update shipping attributes',l_api_name);
770               RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
771             END IF;
772           END IF; -- l_back_order_flag }
773           x_trolin_tbl(l_index).return_status := fnd_api.g_ret_sts_error;
774         END IF; -- l_current_ship_set_id }
775     --Bug 7148749, moving this after the loop, so that the new move order lines table
776     --l_new_trolin_tbl gets populated only when all the lines in x_trolin_tbl are validated.
777    /* ELSE --} {
778         --print_debug('in insert',l_api_name);
779         SELECT  MTL_TXN_REQUEST_LINES_S.NEXTVAL
780          INTO  x_trolin_tbl(l_index).line_id
781         FROM  DUAL;
782         x_trolin_tbl(l_index).status_date     := SYSDATE;
783         x_trolin_tbl(l_index).creation_date      := SYSDATE;
784         x_trolin_tbl(l_index).created_by         := fnd_global.user_id;
785         x_trolin_tbl(l_index).last_update_date   := SYSDATE;
786         x_trolin_tbl(l_index).last_updated_by    := fnd_global.user_id;
787         x_trolin_tbl(l_index).last_update_login  := fnd_global.login_id;
788         x_trolin_tbl(l_index).return_status := fnd_api.g_ret_sts_success;
789         x_trolin_tbl(l_index) := inv_trolin_util.convert_miss_to_null_parallel
790                                 (p_trolin_rec => x_trolin_tbl(l_index));
791 
792             l_new_trolin_tbl(l_count).attribute1  :=  x_trolin_tbl(l_index).attribute1;
793         l_new_trolin_tbl(l_count).attribute10 := x_trolin_tbl(l_index).attribute10;
794         l_new_trolin_tbl(l_count).attribute11 := x_trolin_tbl(l_index).attribute11;
795         l_new_trolin_tbl(l_count).attribute12 := x_trolin_tbl(l_index).attribute12;
796         l_new_trolin_tbl(l_count).attribute13 := x_trolin_tbl(l_index).attribute13;
797         l_new_trolin_tbl(l_count).attribute14 := x_trolin_tbl(l_index).attribute14;
798         l_new_trolin_tbl(l_count).attribute15 := x_trolin_tbl(l_index).attribute15;
799         l_new_trolin_tbl(l_count).attribute2  := x_trolin_tbl(l_index).attribute2;
800         l_new_trolin_tbl(l_count).attribute3  := x_trolin_tbl(l_index).attribute3;
801         l_new_trolin_tbl(l_count).attribute4  := x_trolin_tbl(l_index).attribute4;
802         l_new_trolin_tbl(l_count).attribute5  := x_trolin_tbl(l_index).attribute5;
803         l_new_trolin_tbl(l_count).attribute6  := x_trolin_tbl(l_index).attribute6;
804         l_new_trolin_tbl(l_count).attribute7  := x_trolin_tbl(l_index).attribute7;
805         l_new_trolin_tbl(l_count).attribute8  := x_trolin_tbl(l_index).attribute8;
806         l_new_trolin_tbl(l_count).attribute9  := x_trolin_tbl(l_index).attribute9;
807         l_new_trolin_tbl(l_count).attribute_category  := x_trolin_tbl(l_index).attribute_category;
808         l_new_trolin_tbl(l_count).created_by      := x_trolin_tbl(l_index).created_by;
809         l_new_trolin_tbl(l_count).creation_date     := x_trolin_tbl(l_index).creation_date;
810         l_new_trolin_tbl(l_count).date_required      := x_trolin_tbl(l_index).date_required;
811         l_new_trolin_tbl(l_count).from_locator_id      := x_trolin_tbl(l_index).from_locator_id;
812         l_new_trolin_tbl(l_count).from_subinventory_code  := x_trolin_tbl(l_index).from_subinventory_code;
813         l_new_trolin_tbl(l_count).from_subinventory_id    := x_trolin_tbl(l_index).from_subinventory_id;
814         l_new_trolin_tbl(l_count).header_id          := x_trolin_tbl(l_index).header_id;
815         l_new_trolin_tbl(l_count).inventory_item_id      := x_trolin_tbl(l_index).inventory_item_id;
816         l_new_trolin_tbl(l_count).last_updated_by      := x_trolin_tbl(l_index).last_updated_by;
817         l_new_trolin_tbl(l_count).last_update_date      := x_trolin_tbl(l_index).last_update_date;
818         l_new_trolin_tbl(l_count).last_update_login      := x_trolin_tbl(l_index).last_update_login;
819         l_new_trolin_tbl(l_count).line_id          := x_trolin_tbl(l_index).line_id;
820         l_new_trolin_tbl(l_count).line_number      := x_trolin_tbl(l_index).line_number;
821         l_new_trolin_tbl(l_count).line_status      := x_trolin_tbl(l_index).line_status;
822         l_new_trolin_tbl(l_count).lot_number      := x_trolin_tbl(l_index).lot_number;
823         l_new_trolin_tbl(l_count).organization_id      := x_trolin_tbl(l_index).organization_id;
824         l_new_trolin_tbl(l_count).program_application_id  := x_trolin_tbl(l_index).program_application_id;
825         l_new_trolin_tbl(l_count).program_id      := x_trolin_tbl(l_index).program_id;
826         l_new_trolin_tbl(l_count).program_update_date := x_trolin_tbl(l_index).program_update_date;
827         l_new_trolin_tbl(l_count).project_id      := x_trolin_tbl(l_index).project_id;
828         l_new_trolin_tbl(l_count).quantity          := x_trolin_tbl(l_index).quantity;
829         l_new_trolin_tbl(l_count).quantity_delivered  := x_trolin_tbl(l_index).quantity_delivered;
830         l_new_trolin_tbl(l_count).quantity_detailed      := x_trolin_tbl(l_index).quantity_detailed;
831         l_new_trolin_tbl(l_count).reason_id          := x_trolin_tbl(l_index).reason_id;
832         l_new_trolin_tbl(l_count).REFERENCE          := x_trolin_tbl(l_index).REFERENCE;
833         l_new_trolin_tbl(l_count).reference_id      := x_trolin_tbl(l_index).reference_id;
834         l_new_trolin_tbl(l_count).reference_type_code := x_trolin_tbl(l_index).reference_type_code;
835         l_new_trolin_tbl(l_count).request_id      := x_trolin_tbl(l_index).request_id;
836         l_new_trolin_tbl(l_count).revision          := x_trolin_tbl(l_index).revision;
837         l_new_trolin_tbl(l_count).serial_number_end      := x_trolin_tbl(l_index).serial_number_end;
838         l_new_trolin_tbl(l_count).serial_number_start := x_trolin_tbl(l_index).serial_number_start;
839         l_new_trolin_tbl(l_count).status_date      := x_trolin_tbl(l_index).status_date;
840         l_new_trolin_tbl(l_count).task_id          := x_trolin_tbl(l_index).task_id;
841         l_new_trolin_tbl(l_count).to_account_id      := x_trolin_tbl(l_index).to_account_id;
842         l_new_trolin_tbl(l_count).to_locator_id      := x_trolin_tbl(l_index).to_locator_id;
843         l_new_trolin_tbl(l_count).to_subinventory_code  := x_trolin_tbl(l_index).to_subinventory_code;
844         l_new_trolin_tbl(l_count).to_subinventory_id  := x_trolin_tbl(l_index).to_subinventory_id;
845         l_new_trolin_tbl(l_count).transaction_header_id := x_trolin_tbl(l_index).transaction_header_id;
846         l_new_trolin_tbl(l_count).uom_code          := x_trolin_tbl(l_index).uom_code;
847         l_new_trolin_tbl(l_count).transaction_type_id := x_trolin_tbl(l_index).transaction_type_id;
848         l_new_trolin_tbl(l_count).transaction_source_type_id  := x_trolin_tbl(l_index).transaction_source_type_id;
849         l_new_trolin_tbl(l_count).txn_source_id      := x_trolin_tbl(l_index).txn_source_id;
850         l_new_trolin_tbl(l_count).txn_source_line_id  := x_trolin_tbl(l_index).txn_source_line_id;
851         l_new_trolin_tbl(l_count).txn_source_line_detail_id      := x_trolin_tbl(l_index).txn_source_line_detail_id;
852         l_new_trolin_tbl(l_count).to_organization_id  := x_trolin_tbl(l_index).to_organization_id;
853         l_new_trolin_tbl(l_count).primary_quantity      := x_trolin_tbl(l_index).primary_quantity;
854         l_new_trolin_tbl(l_count).pick_strategy_id      := x_trolin_tbl(l_index).pick_strategy_id;
855         l_new_trolin_tbl(l_count).put_away_strategy_id      := x_trolin_tbl(l_index).put_away_strategy_id;
856         l_new_trolin_tbl(l_count).unit_number  := x_trolin_tbl(l_index).unit_number;
857         l_new_trolin_tbl(l_count).ship_to_location_id := x_trolin_tbl(l_index).ship_to_location_id;
858         l_new_trolin_tbl(l_count).from_cost_group_id  := x_trolin_tbl(l_index).from_cost_group_id;
859         l_new_trolin_tbl(l_count).to_cost_group_id      := x_trolin_tbl(l_index).to_cost_group_id;
860         l_new_trolin_tbl(l_count).lpn_id          := x_trolin_tbl(l_index).lpn_id;
861         l_new_trolin_tbl(l_count).to_lpn_id          := x_trolin_tbl(l_index).to_lpn_id;
862         l_new_trolin_tbl(l_count).inspection_status      := x_trolin_tbl(l_index).inspection_status;
863         l_new_trolin_tbl(l_count).pick_methodology_id := x_trolin_tbl(l_index).pick_methodology_id;
864         l_new_trolin_tbl(l_count).container_item_id      := x_trolin_tbl(l_index).container_item_id;
865         l_new_trolin_tbl(l_count).carton_grouping_id  := x_trolin_tbl(l_index).carton_grouping_id;
866         l_new_trolin_tbl(l_count).wms_process_flag  := x_trolin_tbl(l_index).wms_process_flag;
867         l_new_trolin_tbl(l_count).pick_slip_number  := x_trolin_tbl(l_index).pick_slip_number;
868         l_new_trolin_tbl(l_count).pick_slip_date    := x_trolin_tbl(l_index).pick_slip_date;
869         l_new_trolin_tbl(l_count).ship_set_id      := x_trolin_tbl(l_index).ship_set_id;
870         l_new_trolin_tbl(l_count).ship_model_id      := x_trolin_tbl(l_index).ship_model_id;
871         l_new_trolin_tbl(l_count).model_quantity      := x_trolin_tbl(l_index).model_quantity;
872         l_new_trolin_tbl(l_count).required_quantity      := x_trolin_tbl(l_index).required_quantity;
873         l_new_trolin_tbl(l_count).crossdock_type     := NULL;
874         l_new_trolin_tbl(l_count).backorder_delivery_detail_id := NULL;
875         l_new_trolin_tbl(l_count).assignment_id    := NULL;
876         l_new_trolin_tbl(l_count).reference_detail_id    := NULL;
877 
878 -- Added for INVCONV BEGIN
879         l_new_trolin_tbl(l_count).secondary_quantity    := x_trolin_tbl(l_index).secondary_quantity;
880         l_new_trolin_tbl(l_count).secondary_uom_code    := x_trolin_tbl(l_index).secondary_uom;
881         l_new_trolin_tbl(l_count).secondary_quantity_detailed   := x_trolin_tbl(l_index).secondary_quantity_detailed;
882         l_new_trolin_tbl(l_count).secondary_quantity_delivered  := x_trolin_tbl(l_index).secondary_quantity_delivered;
883         l_new_trolin_tbl(l_count).secondary_required_quantity   := x_trolin_tbl(l_index).secondary_required_quantity;
884         l_new_trolin_tbl(l_count).grade_code    := x_trolin_tbl(l_index).grade_code;
885 -- INVCONV END
886 
887         l_count := l_count+1;
888       */ -- Bug 7148749
889       END IF; --  x_trolin_tbl(l_index).return_status = fnd_api.g_ret_sts_error   }
890     -- gmi_reservation_util.println('- PAL inside Create_Move_Order_Lines ');
891       /* Bug 4162173 Added the following to initate the Outbound for Third Party Integration */
892       OPEN get_move_order_type(x_trolin_tbl(l_index).header_id);
893       FETCH get_move_order_type INTO l_move_order_type;
894       CLOSE get_move_order_type;
895 
896       IF (l_move_order_type = 3) AND
897         (x_trolin_tbl(l_index).txn_source_line_id IS NOT NULL) THEN
898         OPEN get_sales_order(x_trolin_tbl(l_index).txn_source_line_id);
899         FETCH get_sales_order INTO l_order_number ,l_org_id; -- 6689912
900         CLOSE get_sales_order;
901         --          gmi_reservation_util.println('- PAL about to call GR_WF_UTIL_PUB.INITIATE_PROCESS_SALES_ORDER ');
902         GR_WF_UTIL_PUB.INITIATE_PROCESS_SALES_ORDER
903             (p_api_version         => 1.0,
904              p_init_msg_list       => p_init_msg_list,
905              p_commit              => p_commit,
906              p_sales_order_org_id  => l_org_id,  -- 6689912
907              p_orgn_id             => x_trolin_tbl(l_index).organization_id,
908              p_item_id             => x_trolin_tbl(l_index).inventory_item_id,
909              p_sales_order_no      => l_order_number,
910              x_return_status       => l_return_status,
911              x_error_code          => l_error_code,
912              x_msg_data            => l_msg_data);
913 
914          IF l_return_status <> 'S' THEN
915             WSH_Util_Core.PrintLn('Error occured on initiate the Outbound to Partner Application ' ||
916                                   'with the following error message ' || l_msg_data);
917             --gmi_reservation_util.println('- PAL - called GR_WF_UTIL_PUB.INITIATE_PROCESS_SALES_ORDER -  Error occured ');
918          ELSE
919             --gmi_reservation_util.println('- PAL - called GR_WF_UTIL_PUB.INITIATE_PROCESS_SALES_ORDER -  success ');
920             WSH_Util_Core.PrintLn('Successfully initiated the Outbound to Partner Application => ' ||
921                                    x_trolin_tbl(l_index).inventory_item_id);
922          END IF;
923       END IF;
924 
925       -- Bug 5311250: null out TO_LOCATOR_ID if TO SUB has locator control
926       -- set to item level, and item is not locator controlled
927       IF (l_move_order_type = 3) THEN
928         OPEN get_sub_loc_ctrl (x_trolin_tbl(l_index).organization_id
929                              ,x_trolin_tbl(l_index).to_subinventory_code);
930         FETCH get_sub_loc_ctrl INTO l_sub_loc_ctrl;
931         CLOSE get_sub_loc_ctrl;
932         IF l_sub_loc_ctrl = 5 THEN
933           BEGIN
934              l_item_loc_ctrl := INV_CACHE.item_rec.location_control_code;
935           EXCEPTION
936              WHEN OTHERS THEN
937                 print_debug('Exception retrieving item locator control from cache ' || sqlerrm
938                            ,'INV_Move_Order_PUB.Create_Move_Order_Lines');
939                 l_item_loc_ctrl := 0;
940           END;
941           IF l_item_loc_ctrl IS NULL OR l_item_loc_ctrl = 0 THEN
942              OPEN get_item_loc_ctrl (x_trolin_tbl(l_index).organization_id
943                                     ,x_trolin_tbl(l_index).inventory_item_id);
944              FETCH get_item_loc_ctrl INTO l_item_loc_ctrl;
945              CLOSE get_item_loc_ctrl;
946           END IF;
947           IF l_item_loc_ctrl = 1 THEN
948              x_trolin_tbl(l_index).to_locator_id := NULL;
949              -- Bug 7148749, commenting the below line, since l_new_trolin_tbl population code is moved below.
950              -- l_new_trolin_tbl(l_count - 1).to_locator_id := NULL;
951           END IF;
952         END IF;
953       END IF;
954 
955       --print_debug('return_status '|| x_trolin_tbl(l_index).return_status, l_api_name);
956       EXIT WHEN l_index = p_trolin_tbl.LAST;
957       l_index := p_trolin_tbl.NEXT(l_index);
958     END LOOP;  -- loop throUgh p_trolin_tbl
959 
960     --Bug 7148749, populating l_new_trolin_tbl only after all the records in x_trolin_tbl
961  	  --have been successfully validated, so that entire ship set can be handled.
962  	  l_index := x_trolin_tbl.FIRST;
963  	  l_count := 1;
964  	  Loop
965  	    If x_trolin_tbl(l_index).return_status = fnd_api.g_ret_sts_success THEN
966 
967         If l_debug = 1 THEN
968            print_debug('Creating MO Line for WDD = '||x_trolin_tbl(l_index).txn_source_line_detail_id,l_api_name);
969         End If;
970         SELECT  MTL_TXN_REQUEST_LINES_S.NEXTVAL
971           INTO  x_trolin_tbl(l_index).line_id
972           FROM  DUAL;
973 
974         x_trolin_tbl(l_index).status_date       := SYSDATE;
975         x_trolin_tbl(l_index).creation_date     := SYSDATE;
976         x_trolin_tbl(l_index).created_by        := fnd_global.user_id;
977         x_trolin_tbl(l_index).last_update_date  := SYSDATE;
978         x_trolin_tbl(l_index).last_updated_by   := fnd_global.user_id;
979         x_trolin_tbl(l_index).last_update_login := fnd_global.login_id;
980         x_trolin_tbl(l_index).return_status     := fnd_api.g_ret_sts_success;
981         x_trolin_tbl(l_index)                   := inv_trolin_util.convert_miss_to_null_parallel
982                                                         (p_trolin_rec => x_trolin_tbl(l_index));
983 
984         l_new_trolin_tbl(l_count).attribute1                    := x_trolin_tbl(l_index).attribute1;
985         l_new_trolin_tbl(l_count).attribute10                   := x_trolin_tbl(l_index).attribute10;
986         l_new_trolin_tbl(l_count).attribute11                   := x_trolin_tbl(l_index).attribute11;
987         l_new_trolin_tbl(l_count).attribute12                   := x_trolin_tbl(l_index).attribute12;
988         l_new_trolin_tbl(l_count).attribute13                   := x_trolin_tbl(l_index).attribute13;
989         l_new_trolin_tbl(l_count).attribute14                   := x_trolin_tbl(l_index).attribute14;
990         l_new_trolin_tbl(l_count).attribute15                   := x_trolin_tbl(l_index).attribute15;
991         l_new_trolin_tbl(l_count).attribute2                    := x_trolin_tbl(l_index).attribute2;
992         l_new_trolin_tbl(l_count).attribute3                    := x_trolin_tbl(l_index).attribute3;
993         l_new_trolin_tbl(l_count).attribute4                    := x_trolin_tbl(l_index).attribute4;
994         l_new_trolin_tbl(l_count).attribute5                    := x_trolin_tbl(l_index).attribute5;
995         l_new_trolin_tbl(l_count).attribute6                    := x_trolin_tbl(l_index).attribute6;
996         l_new_trolin_tbl(l_count).attribute7                    := x_trolin_tbl(l_index).attribute7;
997         l_new_trolin_tbl(l_count).attribute8                    := x_trolin_tbl(l_index).attribute8;
998         l_new_trolin_tbl(l_count).attribute9                    := x_trolin_tbl(l_index).attribute9;
999         l_new_trolin_tbl(l_count).attribute_category            := x_trolin_tbl(l_index).attribute_category;
1000         l_new_trolin_tbl(l_count).created_by                    := x_trolin_tbl(l_index).created_by;
1001         l_new_trolin_tbl(l_count).creation_date                 := x_trolin_tbl(l_index).creation_date;
1002         l_new_trolin_tbl(l_count).date_required                 := x_trolin_tbl(l_index).date_required;
1003         l_new_trolin_tbl(l_count).from_locator_id               := x_trolin_tbl(l_index).from_locator_id;
1004         l_new_trolin_tbl(l_count).from_subinventory_code        := x_trolin_tbl(l_index).from_subinventory_code;
1005         l_new_trolin_tbl(l_count).from_subinventory_id          := x_trolin_tbl(l_index).from_subinventory_id;
1006         l_new_trolin_tbl(l_count).header_id                     := x_trolin_tbl(l_index).header_id;
1007         l_new_trolin_tbl(l_count).inventory_item_id             := x_trolin_tbl(l_index).inventory_item_id;
1008         l_new_trolin_tbl(l_count).last_updated_by               := x_trolin_tbl(l_index).last_updated_by;
1009         l_new_trolin_tbl(l_count).last_update_date              := x_trolin_tbl(l_index).last_update_date;
1010         l_new_trolin_tbl(l_count).last_update_login             := x_trolin_tbl(l_index).last_update_login;
1011         l_new_trolin_tbl(l_count).line_id                       := x_trolin_tbl(l_index).line_id;
1012         l_new_trolin_tbl(l_count).line_number                   := x_trolin_tbl(l_index).line_number;
1013         l_new_trolin_tbl(l_count).line_status                   := x_trolin_tbl(l_index).line_status;
1014         l_new_trolin_tbl(l_count).lot_number                    := x_trolin_tbl(l_index).lot_number;
1015         l_new_trolin_tbl(l_count).organization_id               := x_trolin_tbl(l_index).organization_id;
1016         l_new_trolin_tbl(l_count).program_application_id        := x_trolin_tbl(l_index).program_application_id;
1017         l_new_trolin_tbl(l_count).program_id                    := x_trolin_tbl(l_index).program_id;
1018         l_new_trolin_tbl(l_count).program_update_date           := x_trolin_tbl(l_index).program_update_date;
1019         l_new_trolin_tbl(l_count).project_id                    := x_trolin_tbl(l_index).project_id;
1020         l_new_trolin_tbl(l_count).quantity                      := x_trolin_tbl(l_index).quantity;
1021         l_new_trolin_tbl(l_count).quantity_delivered            := x_trolin_tbl(l_index).quantity_delivered;
1022         l_new_trolin_tbl(l_count).quantity_detailed             := x_trolin_tbl(l_index).quantity_detailed;
1023         l_new_trolin_tbl(l_count).reason_id                     := x_trolin_tbl(l_index).reason_id;
1024         l_new_trolin_tbl(l_count).REFERENCE                     := x_trolin_tbl(l_index).REFERENCE;
1025         l_new_trolin_tbl(l_count).reference_id                  := x_trolin_tbl(l_index).reference_id;
1026         l_new_trolin_tbl(l_count).reference_type_code           := x_trolin_tbl(l_index).reference_type_code;
1027         l_new_trolin_tbl(l_count).request_id                    := x_trolin_tbl(l_index).request_id;
1028         l_new_trolin_tbl(l_count).revision                      := x_trolin_tbl(l_index).revision;
1029         l_new_trolin_tbl(l_count).serial_number_end             := x_trolin_tbl(l_index).serial_number_end;
1030         l_new_trolin_tbl(l_count).serial_number_start           := x_trolin_tbl(l_index).serial_number_start;
1031         l_new_trolin_tbl(l_count).status_date                   := x_trolin_tbl(l_index).status_date;
1032         l_new_trolin_tbl(l_count).task_id                       := x_trolin_tbl(l_index).task_id;
1033         l_new_trolin_tbl(l_count).to_account_id                 := x_trolin_tbl(l_index).to_account_id;
1034         l_new_trolin_tbl(l_count).to_locator_id                 := x_trolin_tbl(l_index).to_locator_id;
1035         l_new_trolin_tbl(l_count).to_subinventory_code          := x_trolin_tbl(l_index).to_subinventory_code;
1036         l_new_trolin_tbl(l_count).to_subinventory_id            := x_trolin_tbl(l_index).to_subinventory_id;
1037         l_new_trolin_tbl(l_count).transaction_header_id         := x_trolin_tbl(l_index).transaction_header_id;
1038         l_new_trolin_tbl(l_count).uom_code                      := x_trolin_tbl(l_index).uom_code;
1039         l_new_trolin_tbl(l_count).transaction_type_id           := x_trolin_tbl(l_index).transaction_type_id;
1040         l_new_trolin_tbl(l_count).transaction_source_type_id    := x_trolin_tbl(l_index).transaction_source_type_id;
1041         l_new_trolin_tbl(l_count).txn_source_id                 := x_trolin_tbl(l_index).txn_source_id;
1042         l_new_trolin_tbl(l_count).txn_source_line_id            := x_trolin_tbl(l_index).txn_source_line_id;
1043         l_new_trolin_tbl(l_count).txn_source_line_detail_id     := x_trolin_tbl(l_index).txn_source_line_detail_id;
1044         l_new_trolin_tbl(l_count).to_organization_id            := x_trolin_tbl(l_index).to_organization_id;
1045         l_new_trolin_tbl(l_count).primary_quantity              := x_trolin_tbl(l_index).primary_quantity;
1046         l_new_trolin_tbl(l_count).pick_strategy_id              := x_trolin_tbl(l_index).pick_strategy_id;
1047         l_new_trolin_tbl(l_count).put_away_strategy_id          := x_trolin_tbl(l_index).put_away_strategy_id;
1048         l_new_trolin_tbl(l_count).unit_number                   := x_trolin_tbl(l_index).unit_number;
1049         l_new_trolin_tbl(l_count).ship_to_location_id           := x_trolin_tbl(l_index).ship_to_location_id;
1050         l_new_trolin_tbl(l_count).from_cost_group_id            := x_trolin_tbl(l_index).from_cost_group_id;
1051         l_new_trolin_tbl(l_count).to_cost_group_id              := x_trolin_tbl(l_index).to_cost_group_id;
1052         l_new_trolin_tbl(l_count).lpn_id                        := x_trolin_tbl(l_index).lpn_id;
1053         l_new_trolin_tbl(l_count).to_lpn_id                     := x_trolin_tbl(l_index).to_lpn_id;
1054         l_new_trolin_tbl(l_count).inspection_status             := x_trolin_tbl(l_index).inspection_status;
1055         l_new_trolin_tbl(l_count).pick_methodology_id           := x_trolin_tbl(l_index).pick_methodology_id;
1056         l_new_trolin_tbl(l_count).container_item_id             := x_trolin_tbl(l_index).container_item_id;
1057         l_new_trolin_tbl(l_count).carton_grouping_id            := x_trolin_tbl(l_index).carton_grouping_id;
1058         l_new_trolin_tbl(l_count).wms_process_flag              := x_trolin_tbl(l_index).wms_process_flag;
1059         l_new_trolin_tbl(l_count).pick_slip_number              := x_trolin_tbl(l_index).pick_slip_number;
1060         l_new_trolin_tbl(l_count).pick_slip_date                := x_trolin_tbl(l_index).pick_slip_date;
1061         l_new_trolin_tbl(l_count).ship_set_id                   := x_trolin_tbl(l_index).ship_set_id;
1062         l_new_trolin_tbl(l_count).ship_model_id                 := x_trolin_tbl(l_index).ship_model_id;
1063         l_new_trolin_tbl(l_count).model_quantity                := x_trolin_tbl(l_index).model_quantity;
1064         l_new_trolin_tbl(l_count).required_quantity             := x_trolin_tbl(l_index).required_quantity;
1065         l_new_trolin_tbl(l_count).crossdock_type                := NULL;
1066         l_new_trolin_tbl(l_count).backorder_delivery_detail_id  := NULL;
1067         l_new_trolin_tbl(l_count).assignment_id                 := NULL;
1068         l_new_trolin_tbl(l_count).reference_detail_id           := NULL;
1069 
1070  	 -- Added for INVCONV BEGIN
1071         l_new_trolin_tbl(l_count).secondary_quantity            := x_trolin_tbl(l_index).secondary_quantity;
1072         l_new_trolin_tbl(l_count).secondary_uom_code            := x_trolin_tbl(l_index).secondary_uom;
1073         l_new_trolin_tbl(l_count).secondary_quantity_detailed   := x_trolin_tbl(l_index).secondary_quantity_detailed;
1074         l_new_trolin_tbl(l_count).secondary_quantity_delivered  := x_trolin_tbl(l_index).secondary_quantity_delivered;
1075         l_new_trolin_tbl(l_count).secondary_required_quantity   := x_trolin_tbl(l_index).secondary_required_quantity;
1076         l_new_trolin_tbl(l_count).grade_code                    := x_trolin_tbl(l_index).grade_code;
1077  	 -- INVCONV END
1078 
1079  	      l_count := l_count+1;
1080  	    End If;
1081  	    EXIT WHEN l_index = x_trolin_tbl.LAST;
1082  	    l_index := x_trolin_tbl.NEXT(l_index);
1083  	  End Loop;
1084 
1085  	  If l_debug = 1 THEN
1086  	    print_debug('l_new_trolin_tbl Count = '||l_new_trolin_tbl.count||', x_trolin_tbl Count = '||x_trolin_tbl.count
1087                   ||', p_trolin_tbl Count = '||p_trolin_tbl.count,l_api_name);
1088  	  End If;
1089     -- End bug 7148749
1090 
1091     x_return_status := fnd_api.g_ret_sts_success;
1092 
1093     inv_trolin_util.insert_mo_lines_bulk
1094                   (p_new_trolin_tbl => l_new_trolin_tbl
1095                   ,x_return_status => x_return_status);
1096 
1097     --delete the records from l_new_trolin_tbl
1098     l_new_trolin_tbl.delete;
1099 
1100     IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
1101        print_debug('return error from INSERT_MO_LINES_BULK',l_api_name);
1102        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1103     END IF;
1104 
1105   ELSE   --} Validation Yes
1106     l_control_rec.controlled_operation := TRUE;
1107     l_control_Rec.process_entity := INV_GLOBALS.G_ENTITY_TROLIN;
1108     l_control_Rec.default_attributes := TRUE;
1109     l_control_rec.change_attributes := TRUE;
1110     l_control_rec.write_to_db := TRUE;
1111     --  Call INV_Transfer_Order_PVT.Process_Transfer_Order
1112     if( l_trolin_tbl.count > 0 ) then
1113       for i in 1..l_trolin_tbl.count LOOP
1114         --inv_debug.message('trolin.line_id is ' || l_trolin_tbl(l).line_id);
1115 /* to fix bug 1402677: Also we shouldn't change the operation here
1116         if( (l_trolin_tbl(i).line_id <> FND_API.G_MISS_NUM OR l_trolin_tbl(i).line_id is NULL ) AND
1117         l_trolin_tbl(i).operation = INV_GLOBALS.G_OPR_CREATE ) then
1118         l_trolin_tbl(i).operation := INV_GLOBALS.G_OPR_UPDATE;
1119         els*/
1120             if (l_trolin_tbl(i).operation = INV_GLOBALS.G_OPR_UPDATE and
1121         (l_trolin_tbl(i).line_id = FND_API.G_MISS_NUM OR
1122          l_trolin_tbl(i).line_id is null ) ) then
1123             --inv_debug.message('update and no line id');
1124           fnd_message.set_name('INV', 'INV_ATTRIBUTE_REQUIRED');
1125         fnd_message.set_token('ATTRIBUTE', 'LINE_ID');
1126         fnd_msg_pub.add;
1127         raise fnd_api.g_exc_error;
1128         end if;
1129 
1130         if( l_trolin_tbl(i).header_id is not null
1131         and l_trolin_tbl(i).header_id <> FND_API.G_MISS_NUM ) then
1132         --inv_debug.message('check if the header_id exists');
1133             select count(*)
1134             into l_dummy
1135         from mtl_txn_request_headers
1136             where header_id = l_trolin_tbl(i).header_id
1137             and organization_id = l_trolin_tbl(i).organization_id;
1138             --inv_debug.message('l_dummy is ' || l_dummy);
1139                 if( l_dummy = 0 ) then
1140             --inv_debug.message('header id not found');
1141             FND_MESSAGE.SET_NAME('INV', 'INV_FIELD_INVALID');
1142             FND_MESSAGE.SET_TOKEN('ENTITY1', 'Header_Id');
1143             FND_MSG_PUB.ADD;
1144             raise fnd_api.g_exc_error;
1145         else
1146            l_trohdr_rec := inv_trohdr_util.query_row(p_header_id => l_trolin_tbl(i).header_id);
1147             end if;
1148         end if;
1149 
1150             /* Bug 4162173 Added the following to initate the Outbound for Third Party Integration */
1151             OPEN get_move_order_type(l_trolin_tbl(i).header_id);
1152             FETCH get_move_order_type INTO l_move_order_type;
1153             CLOSE get_move_order_type;
1154 
1155             IF (l_move_order_type = 3) AND
1156                (l_trolin_tbl(i).txn_source_line_id IS NOT NULL) THEN
1157                OPEN get_sales_order(l_trolin_tbl(i).txn_source_line_id);
1158                FETCH get_sales_order INTO l_order_number ,l_org_id;  -- 6689912
1159                CLOSE get_sales_order;
1160 
1161                GR_WF_UTIL_PUB.INITIATE_PROCESS_SALES_ORDER
1162                   (p_api_version         => 1.0,
1163                    p_init_msg_list       => p_init_msg_list,
1164                    p_commit              => p_commit,
1165                    p_sales_order_org_id  => l_org_id,  -- 6689912
1166                    p_orgn_id             => l_trolin_tbl(i).organization_id,
1167                    p_item_id             => l_trolin_tbl(i).inventory_item_id,
1168                    p_sales_order_no      => l_order_number,
1169                    x_return_status       => l_return_status,
1170                    x_error_code          => l_error_code,
1171                    x_msg_data            => l_msg_data);
1172 
1173                IF l_return_status <> 'S' THEN
1174                   WSH_Util_Core.PrintLn('Error occured on initiate the Outbound to Partner Application ' ||
1175                                         'with the following error message ' || l_msg_data);
1176                ELSE
1177                   --Jalaj Srivastava Bug 5695822
1178                   --table index used was l_index. should be i.
1179                   --table should be l_trolin_tbl instead of x_trolin_tbl
1180                   WSH_Util_Core.PrintLn('Successfully initiated the Outbound to Partner Application => ' ||
1181                                          l_trolin_tbl(i).inventory_item_id);
1182                END IF;
1183             END IF;
1184 
1185             -- Bug 5311250: null out TO_LOCATOR_ID if TO SUB has locator control
1186             -- set to item level, and item is not locator controlled
1187             IF (l_move_order_type = 3) THEN
1188                OPEN get_sub_loc_ctrl (l_trolin_tbl(i).organization_id
1189                                      ,l_trolin_tbl(i).to_subinventory_code);
1190                FETCH get_sub_loc_ctrl INTO l_sub_loc_ctrl;
1191                CLOSE get_sub_loc_ctrl;
1192                IF l_sub_loc_ctrl = 5 THEN
1193                   OPEN get_item_loc_ctrl (l_trolin_tbl(i).organization_id
1194                                          ,l_trolin_tbl(i).inventory_item_id);
1195                   FETCH get_item_loc_ctrl INTO l_item_loc_ctrl;
1196                   CLOSE get_item_loc_ctrl;
1197                   IF l_item_loc_ctrl = 1 THEN
1198                      l_trolin_tbl(i).to_locator_id := NULL;
1199                   END IF;
1200                END IF;
1201             END IF;
1202         end loop;
1203     end if;
1204 
1205     INV_Transfer_Order_PVT.Process_Transfer_Order
1206     (   p_api_version_number          => 1.0
1207     ,   p_init_msg_list               => p_init_msg_list
1208     ,   p_validation_level            => FND_API.G_VALID_LEVEL_FULL
1209     ,   p_commit                      => p_commit
1210     ,   x_return_status               => x_return_status
1211     ,   x_msg_count                   => x_msg_count
1212     ,   x_msg_data                    => x_msg_data
1213     ,   p_control_rec                 => l_control_rec
1214     ,   p_trohdr_rec                  => l_trohdr_rec
1215     ,   p_trohdr_val_rec              => l_trohdr_val_rec
1216     ,   p_trolin_tbl                  => l_trolin_tbl
1217     ,   p_trolin_val_tbl              => p_trolin_val_tbl
1218     ,   x_trohdr_rec                  => l_trohdr_rec
1219     ,   x_trolin_tbl                  => l_trolin_tbl_out
1220     );
1221 
1222     --  Load Id OUT parameters.
1223 
1224     --x_trohdr_rec                   := p_trohdr_rec;
1225     x_trolin_tbl                   := l_trolin_tbl_out;
1226 
1227     if( p_commit = FND_API.G_TRUE ) Then
1228     commit;
1229     end if;
1230     --  If p_return_values is TRUE then convert Ids to Values.
1231 
1232     IF FND_API.to_Boolean(p_return_values) THEN
1233         Id_To_Value
1234         (   p_trohdr_rec                  => l_trohdr_rec
1235         ,   p_trolin_tbl                  => p_trolin_tbl
1236         ,   x_trohdr_val_rec              => l_trohdr_val_rec
1237         ,   x_trolin_val_tbl              => x_trolin_val_tbl
1238         );
1239     END IF;
1240   END IF;
1241 EXCEPTION
1242 
1243     WHEN FND_API.G_EXC_ERROR THEN
1244     --inv_debug.message('returning error');
1245         x_return_status := FND_API.G_RET_STS_ERROR;
1246         --  Get message count and data
1247         FND_MSG_PUB.Count_And_Get
1248         (   p_count                       => x_msg_count
1249         ,   p_data                        => x_msg_data
1250         );
1251 
1252     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1253         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1254         --  Get message count and data
1255         FND_MSG_PUB.Count_And_Get
1256         (   p_count                       => x_msg_count
1257         ,   p_data                        => x_msg_data
1258         );
1259 
1260     WHEN OTHERS THEN
1261         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1262         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1263         THEN
1264             FND_MSG_PUB.Add_Exc_Msg
1265             (   G_PKG_NAME
1266             ,   'Process_Move_Order'
1267             );
1268         END IF;
1269         --  Get message count and data
1270         FND_MSG_PUB.Count_And_Get
1271         (   p_count                       => x_msg_count
1272         ,   p_data                        => x_msg_data
1273         );
1274 END Create_Move_Order_Lines;
1275 
1276 --  Start of Comments
1277 --  API name    Process_Move_Order
1278 --  Type        Public
1279 --  Function
1280 --
1281 --  Pre-reqs
1282 --
1283 --  Parameters
1284 --
1285 --  Version     Current version = 1.0
1286 --              Initial version = 1.0
1287 --
1288 --  Notes
1289 --
1290 --  End of Comments
1291 
1292 PROCEDURE Process_Move_Order
1293 (   p_api_version_number            IN  NUMBER
1294 ,   p_init_msg_list                 IN  VARCHAR2 := FND_API.G_FALSE
1295 ,   p_return_values                 IN  VARCHAR2 := FND_API.G_FALSE
1296 ,   p_commit                        IN  VARCHAR2 := FND_API.G_FALSE
1297 ,   x_return_status                 OUT NOCOPY VARCHAR2
1298 ,   x_msg_count                     OUT NOCOPY NUMBER
1299 ,   x_msg_data                      OUT NOCOPY VARCHAR2
1300 ,   p_trohdr_rec                    IN  Trohdr_Rec_Type     := G_MISS_TROHDR_REC
1301 ,   p_trohdr_val_rec                IN  Trohdr_Val_Rec_Type := G_MISS_TROHDR_VAL_REC
1302 ,   p_trolin_tbl                    IN  Trolin_Tbl_Type     := G_MISS_TROLIN_TBL
1303 ,   p_trolin_val_tbl                IN  Trolin_Val_Tbl_Type := G_MISS_TROLIN_VAL_TBL
1304 ,   x_trohdr_rec                    IN OUT NOCOPY Trohdr_Rec_Type
1305 ,   x_trohdr_val_rec                IN OUT NOCOPY Trohdr_Val_Rec_Type
1306 ,   x_trolin_tbl                    IN OUT NOCOPY Trolin_Tbl_Type
1307 ,   x_trolin_val_tbl                IN OUT NOCOPY Trolin_Val_Tbl_Type
1308 )
1309 IS
1310 l_api_version_number          CONSTANT NUMBER := 1.0;
1311 l_api_name                    CONSTANT VARCHAR2(30):= 'Process_Move_Order';
1312 l_control_rec                 INV_GLOBALS.Control_Rec_Type;
1313 l_return_status               VARCHAR2(1);
1314 l_trohdr_rec                  Trohdr_Rec_Type;
1315 l_trolin_tbl                  Trolin_Tbl_Type;
1316     l_debug number := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
1317 BEGIN
1318 
1319     --  Standard call to check for call compatibility
1320 
1321     IF NOT FND_API.Compatible_API_Call
1322            (   l_api_version_number
1323            ,   p_api_version_number
1324            ,   l_api_name
1325            ,   G_PKG_NAME
1326            )
1327     THEN
1328         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1329     END IF;
1330 
1331     l_control_Rec.process_entity := INV_GLOBALS.G_ENTITY_ALL;
1332 /*
1333     --  Perform Value to Id conversion
1334     Value_To_Id
1335     (   x_return_status               => l_return_status
1336     ,   p_trohdr_rec                  => p_trohdr_rec
1337     ,   p_trohdr_val_rec              => p_trohdr_val_rec
1338     ,   p_trolin_tbl                  => p_trolin_tbl
1339     ,   p_trolin_val_tbl              => p_trolin_val_tbl
1340     ,   x_trohdr_rec                  => l_trohdr_rec
1341     ,   x_trolin_tbl                  => l_trolin_tbl
1342     );
1343 
1344     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1345         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1346     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1347         RAISE FND_API.G_EXC_ERROR;
1348     END IF;
1349 */
1350 
1351     --  Call INV_Transfer_Order_PVT.Process_Transfer_Order
1352 
1353     INV_Transfer_Order_PVT.Process_Transfer_Order
1354     (   p_api_version_number          => 1.0
1355     ,   p_init_msg_list               => p_init_msg_list
1356     ,   p_validation_level            => FND_API.G_VALID_LEVEL_FULL
1357     ,   p_commit                      => p_commit
1358     ,   x_return_status               => x_return_status
1359     ,   x_msg_count                   => x_msg_count
1360     ,   x_msg_data                    => x_msg_data
1361     ,   p_control_rec                 => l_control_rec
1362     ,   p_trohdr_rec                  => p_trohdr_rec
1363     ,   p_trohdr_val_rec              => p_trohdr_val_rec
1364     ,   p_trolin_tbl                  => p_trolin_tbl
1365     ,   p_trolin_val_tbl              => p_trolin_val_tbl
1366     ,   x_trohdr_rec                  => l_trohdr_rec
1367     ,   x_trolin_tbl                  => l_trolin_tbl
1368     );
1369 
1370     --  Load Id OUT parameters.
1371 
1372     x_trohdr_rec                   := l_trohdr_rec;
1373     x_trolin_tbl                   := l_trolin_tbl;
1374 
1375     if p_commit = FND_API.G_TRUE then
1376     commit;
1377     end if;
1378     --  If p_return_values is TRUE then convert Ids to Values.
1379 
1380     IF FND_API.to_Boolean(p_return_values) THEN
1381         Id_To_Value
1382         (   p_trohdr_rec                  => p_trohdr_rec
1383         ,   p_trolin_tbl                  => p_trolin_tbl
1384         ,   x_trohdr_val_rec              => x_trohdr_val_rec
1385         ,   x_trolin_val_tbl              => x_trolin_val_tbl
1386         );
1387     END IF;
1388 
1389 EXCEPTION
1390     WHEN FND_API.G_EXC_ERROR THEN
1391         x_return_status := FND_API.G_RET_STS_ERROR;
1392         --  Get message count and data
1393         FND_MSG_PUB.Count_And_Get
1394         (   p_count                       => x_msg_count
1395         ,   p_data                        => x_msg_data
1396         );
1397     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1398         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1399         --  Get message count and data
1400         FND_MSG_PUB.Count_And_Get
1401         (   p_count                       => x_msg_count
1402         ,   p_data                        => x_msg_data
1403         );
1404     WHEN OTHERS THEN
1405         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1406         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1407         THEN
1408             FND_MSG_PUB.Add_Exc_Msg
1409             (   G_PKG_NAME
1410             ,   'Process_Move_Order'
1411             );
1412         END IF;
1413         --  Get message count and data
1414         FND_MSG_PUB.Count_And_Get
1415         (   p_count                       => x_msg_count
1416         ,   p_data                        => x_msg_data
1417         );
1418 END Process_Move_Order;
1419 
1420 --  Start of Comments
1421 --  API name    Lock_Move_Order
1422 --  Type        Public
1423 --  Function
1424 --
1425 --  Pre-reqs
1426 --
1427 --  Parameters
1428 --
1429 --  Version     Current version = 1.0
1430 --              Initial version = 1.0
1431 --
1432 --  Notes
1433 --
1434 --  End of Comments
1435 
1436 PROCEDURE Lock_Move_Order
1437 (   p_api_version_number            IN  NUMBER
1438 ,   p_init_msg_list                 IN  VARCHAR2 := FND_API.G_FALSE
1439 ,   p_return_values                 IN  VARCHAR2 := FND_API.G_FALSE
1440 ,   x_return_status                 OUT NOCOPY VARCHAR2
1441 ,   x_msg_count                     OUT NOCOPY NUMBER
1442 ,   x_msg_data                      OUT NOCOPY VARCHAR2
1443 ,   p_trohdr_rec                    IN  Trohdr_Rec_Type :=
1444                                         G_MISS_TROHDR_REC
1445 ,   p_trohdr_val_rec                IN  Trohdr_Val_Rec_Type :=
1446                                         G_MISS_TROHDR_VAL_REC
1447 ,   p_trolin_tbl                    IN  Trolin_Tbl_Type :=
1448                                         G_MISS_TROLIN_TBL
1449 ,   p_trolin_val_tbl                IN  Trolin_Val_Tbl_Type :=
1450                                         G_MISS_TROLIN_VAL_TBL
1451 ,   x_trohdr_rec                    IN OUT NOCOPY Trohdr_Rec_Type
1452 ,   x_trohdr_val_rec                IN OUT NOCOPY Trohdr_Val_Rec_Type
1453 ,   x_trolin_tbl                    IN OUT NOCOPY Trolin_Tbl_Type
1454 ,   x_trolin_val_tbl                IN OUT NOCOPY Trolin_Val_Tbl_Type
1455 )
1456 IS
1457 l_api_version_number          CONSTANT NUMBER := 1.0;
1458 l_api_name                    CONSTANT VARCHAR2(30):= 'Lock_Move_Order';
1459 l_return_status               VARCHAR2(1);
1460 l_trohdr_rec                  Trohdr_Rec_Type;
1461 l_trolin_tbl                  Trolin_Tbl_Type;
1462     l_debug number := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
1463 BEGIN
1464 
1465     --  Standard call to check for call compatibility
1466 
1467     IF NOT FND_API.Compatible_API_Call
1468            (   l_api_version_number
1469            ,   p_api_version_number
1470            ,   l_api_name
1471            ,   G_PKG_NAME
1472            )
1473     THEN
1474         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1475     END IF;
1476 
1477     --  Perform Value to Id conversion
1478 
1479     Value_To_Id
1480     (   x_return_status               => l_return_status
1481     ,   p_trohdr_rec                  => p_trohdr_rec
1482     ,   p_trohdr_val_rec              => p_trohdr_val_rec
1483     ,   p_trolin_tbl                  => p_trolin_tbl
1484     ,   p_trolin_val_tbl              => p_trolin_val_tbl
1485     ,   x_trohdr_rec                  => l_trohdr_rec
1486     ,   x_trolin_tbl                  => l_trolin_tbl
1487     );
1488 
1489     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1490         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1491     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1492         RAISE FND_API.G_EXC_ERROR;
1493     END IF;
1494 
1495 
1496     --  Call INV_Transfer_Order_PVT.Lock_Transfer_Order
1497 
1498     INV_Transfer_Order_PVT.Lock_Transfer_Order
1499     (   p_api_version_number          => 1.0
1500     ,   p_init_msg_list               => p_init_msg_list
1501     ,   x_return_status               => x_return_status
1502     ,   x_msg_count                   => x_msg_count
1503     ,   x_msg_data                    => x_msg_data
1504     ,   p_trohdr_rec                  => l_trohdr_rec
1505     ,   p_trolin_tbl                  => l_trolin_tbl
1506     ,   x_trohdr_rec                  => l_trohdr_rec
1507     ,   x_trolin_tbl                  => l_trolin_tbl
1508     );
1509 
1510     --  Load Id OUT parameters.
1511 
1512     x_trohdr_rec                   := l_trohdr_rec;
1513     x_trolin_tbl                   := l_trolin_tbl;
1514 
1515     --  If p_return_values is TRUE then convert Ids to Values.
1516 
1517     IF FND_API.to_Boolean(p_return_values) THEN
1518 
1519         Id_To_Value
1520         (   p_trohdr_rec                  => l_trohdr_rec
1521         ,   p_trolin_tbl                  => l_trolin_tbl
1522         ,   x_trohdr_val_rec              => x_trohdr_val_rec
1523         ,   x_trolin_val_tbl              => x_trolin_val_tbl
1524         );
1525 
1526     END IF;
1527 
1528 EXCEPTION
1529 
1530     WHEN FND_API.G_EXC_ERROR THEN
1531 
1532         x_return_status := FND_API.G_RET_STS_ERROR;
1533 
1534         --  Get message count and data
1535 
1536         FND_MSG_PUB.Count_And_Get
1537         (   p_count                       => x_msg_count
1538         ,   p_data                        => x_msg_data
1539         );
1540 
1541     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1542 
1543         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1544 
1545         --  Get message count and data
1546 
1547         FND_MSG_PUB.Count_And_Get
1548         (   p_count                       => x_msg_count
1549         ,   p_data                        => x_msg_data
1550         );
1551 
1552     WHEN OTHERS THEN
1553 
1554         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1555 
1556         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1557         THEN
1558             FND_MSG_PUB.Add_Exc_Msg
1559             (   G_PKG_NAME
1560             ,   'Lock_Move_Order'
1561             );
1562         END IF;
1563 
1564         --  Get message count and data
1565 
1566         FND_MSG_PUB.Count_And_Get
1567         (   p_count                       => x_msg_count
1568         ,   p_data                        => x_msg_data
1569         );
1570 
1571 END Lock_Move_Order;
1572 
1573 --  Start of Comments
1574 --  API name    Get_Move_Order
1575 --  Type        Public
1576 --  Function
1577 --
1578 --  Pre-reqs
1579 --
1580 --  Parameters
1581 --
1582 --  Version     Current version = 1.0
1583 --              Initial version = 1.0
1584 --
1585 --  Notes
1586 --
1587 --  End of Comments
1588 
1589 PROCEDURE Get_Move_Order
1590 (   p_api_version_number            IN  NUMBER
1591 ,   p_init_msg_list                 IN  VARCHAR2 := FND_API.G_FALSE
1592 ,   p_return_values                 IN  VARCHAR2 := FND_API.G_FALSE
1593 ,   x_return_status                 OUT NOCOPY VARCHAR2
1594 ,   x_msg_count                     OUT NOCOPY NUMBER
1595 ,   x_msg_data                      OUT NOCOPY VARCHAR2
1596 ,   p_header_id                     IN  NUMBER :=
1597                                         FND_API.G_MISS_NUM
1598 ,   p_header                        IN  VARCHAR2 :=
1599                                         FND_API.G_MISS_CHAR
1600 ,   x_trohdr_rec                    OUT NOCOPY Trohdr_Rec_Type
1601 ,   x_trohdr_val_rec                OUT NOCOPY Trohdr_Val_Rec_Type
1602 ,   x_trolin_tbl                    OUT NOCOPY Trolin_Tbl_Type
1603 ,   x_trolin_val_tbl                OUT NOCOPY Trolin_Val_Tbl_Type
1604 )
1605 IS
1606 l_api_version_number          CONSTANT NUMBER := 1.0;
1607 l_api_name                    CONSTANT VARCHAR2(30):= 'Get_Move_Order';
1608 l_header_id                   NUMBER := p_header_id;
1609 l_trohdr_rec                  INV_Move_Order_PUB.Trohdr_Rec_Type;
1610 l_trolin_tbl                  INV_Move_Order_PUB.Trolin_Tbl_Type;
1611     l_debug number := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
1612 BEGIN
1613 
1614     --  Standard call to check for call compatibility
1615 
1616     IF NOT FND_API.Compatible_API_Call
1617            (   l_api_version_number
1618            ,   p_api_version_number
1619            ,   l_api_name
1620            ,   G_PKG_NAME
1621            )
1622     THEN
1623         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1624     END IF;
1625 
1626     --  Standard check for Val/ID conversion
1627 
1628     IF  p_header = FND_API.G_MISS_CHAR
1629     THEN
1630 
1631         l_header_id := p_header_id;
1632 
1633     ELSIF p_header_id <> FND_API.G_MISS_NUM THEN
1634 
1635         l_header_id := p_header_id;
1636 
1637         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_SUCCESS)
1638         THEN
1639 
1640             FND_MESSAGE.SET_NAME('INV','FND_BOTH_VAL_AND_ID_EXIST');
1641             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','header');
1642             FND_MSG_PUB.Add;
1643 
1644         END IF;
1645 
1646     ELSE
1647 
1648         --  Convert Value to Id
1649 
1650         l_header_id := INV_Value_To_Id.header
1651         (   p_header                      => p_header
1652         );
1653 
1654         IF l_header_id = FND_API.G_MISS_NUM THEN
1655             IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
1656             THEN
1657 
1658                 FND_MESSAGE.SET_NAME('INV','Invalid Business Object Value');
1659                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','header');
1660                 FND_MSG_PUB.Add;
1661 
1662             END IF;
1663         END IF;
1664 
1665         RAISE FND_API.G_EXC_ERROR;
1666 
1667     END IF;
1668 
1669 
1670     --  Call INV_Transfer_Order_PVT.Get_Transfer_Order
1671 
1672     INV_Transfer_Order_PVT.Get_Transfer_Order
1673     (   p_api_version_number          => 1.0
1674     ,   p_init_msg_list               => p_init_msg_list
1675     ,   x_return_status               => x_return_status
1676     ,   x_msg_count                   => x_msg_count
1677     ,   x_msg_data                    => x_msg_data
1678     ,   p_header_id                   => l_header_id
1679     ,   x_trohdr_rec                  => l_trohdr_rec
1680     ,   x_trolin_tbl                  => l_trolin_tbl
1681     );
1682 
1683     --  Load Id OUT parameters.
1684 
1685     x_trohdr_rec                   := l_trohdr_rec;
1686     x_trolin_tbl                   := l_trolin_tbl;
1687 
1688     --  If p_return_values is TRUE then convert Ids to Values.
1689 
1690     IF FND_API.TO_BOOLEAN(p_return_values) THEN
1691 
1692         Id_To_Value
1693         (   p_trohdr_rec                  => l_trohdr_rec
1694         ,   p_trolin_tbl                  => l_trolin_tbl
1695         ,   x_trohdr_val_rec              => x_trohdr_val_rec
1696         ,   x_trolin_val_tbl              => x_trolin_val_tbl
1697         );
1698 
1699     END IF;
1700 
1701     --  Set return status
1702 
1703     x_return_status := FND_API.G_RET_STS_SUCCESS;
1704 
1705     --  Get message count and data
1706 
1707     FND_MSG_PUB.Count_And_Get
1708     (   p_count                       => x_msg_count
1709     ,   p_data                        => x_msg_data
1710     );
1711 
1712 
1713 EXCEPTION
1714 
1715     WHEN FND_API.G_EXC_ERROR THEN
1716 
1717         x_return_status := FND_API.G_RET_STS_ERROR;
1718 
1719         --  Get message count and data
1720 
1721         FND_MSG_PUB.Count_And_Get
1722         (   p_count                       => x_msg_count
1723         ,   p_data                        => x_msg_data
1724         );
1725 
1726     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1727 
1728         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1729 
1730         --  Get message count and data
1731 
1732         FND_MSG_PUB.Count_And_Get
1733         (   p_count                       => x_msg_count
1734         ,   p_data                        => x_msg_data
1735         );
1736 
1737     WHEN OTHERS THEN
1738 
1739         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1740 
1741         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1742         THEN
1743             FND_MSG_PUB.Add_Exc_Msg
1744             (   G_PKG_NAME
1745             ,   'Get_Move_Order'
1746             );
1747         END IF;
1748 
1749         --  Get message count and data
1750 
1751         FND_MSG_PUB.Count_And_Get
1752         (   p_count                       => x_msg_count
1753         ,   p_data                        => x_msg_data
1754         );
1755 
1756 END Get_Move_Order;
1757 
1758 --  Procedure Id_To_Value
1759 
1760 PROCEDURE Id_To_Value
1761 (   p_trohdr_rec                    IN  Trohdr_Rec_Type
1762 ,   p_trolin_tbl                    IN  Trolin_Tbl_Type
1763 ,   x_trohdr_val_rec                OUT NOCOPY Trohdr_Val_Rec_Type
1764 ,   x_trolin_val_tbl                OUT NOCOPY Trolin_Val_Tbl_Type
1765 )
1766 IS
1767     l_debug number := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
1768 BEGIN
1769 
1770     --  Convert trohdr
1771 
1772     x_trohdr_val_rec := INV_Trohdr_Util.Get_Values(p_trohdr_rec);
1773 
1774     --  Convert trolin
1775 
1776     FOR I IN 1..p_trolin_tbl.COUNT LOOP
1777         x_trolin_val_tbl(I) :=
1778             INV_Trolin_Util.Get_Values(p_trolin_tbl(I));
1779     END LOOP;
1780 
1781 EXCEPTION
1782 
1783     WHEN OTHERS THEN
1784 
1785         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1786         THEN
1787             FND_MSG_PUB.Add_Exc_Msg
1788             (   G_PKG_NAME
1789             ,   'Id_To_Value'
1790             );
1791         END IF;
1792 
1793         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1794 
1795 END Id_To_Value;
1796 
1797 --  Procedure Value_To_Id
1798 
1799 PROCEDURE Value_To_Id
1800 (   x_return_status                 OUT NOCOPY VARCHAR2
1801 ,   p_trohdr_rec                    IN  Trohdr_Rec_Type
1802 ,   p_trohdr_val_rec                IN  Trohdr_Val_Rec_Type
1803 ,   p_trolin_tbl                    IN  Trolin_Tbl_Type
1804 ,   p_trolin_val_tbl                IN  Trolin_Val_Tbl_Type
1805 ,   x_trohdr_rec                    IN OUT NOCOPY Trohdr_Rec_Type
1806 ,   x_trolin_tbl                    IN OUT NOCOPY Trolin_Tbl_Type
1807 )
1808 IS
1809 l_trohdr_rec                  Trohdr_Rec_Type;
1810 l_trolin_rec                  Trolin_Rec_Type;
1811 l_index                       BINARY_INTEGER;
1812     l_debug number := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
1813 BEGIN
1814 
1815     --  Init x_return_status.
1816 
1817     x_return_status := FND_API.G_RET_STS_SUCCESS;
1818 
1819     --  Convert trohdr
1820 
1821     l_trohdr_rec := INV_Trohdr_Util.Get_Ids
1822     (   p_trohdr_rec                  => p_trohdr_rec
1823     ,   p_trohdr_val_rec              => p_trohdr_val_rec
1824     );
1825 
1826     x_trohdr_rec                   := l_trohdr_rec;
1827 
1828     IF l_trohdr_rec.return_status = FND_API.G_RET_STS_ERROR THEN
1829         x_return_status := FND_API.G_RET_STS_ERROR;
1830     END IF;
1831 
1832     --  Convert trolin
1833 
1834     x_trolin_tbl := p_trolin_tbl;
1835 
1836     l_index := p_trolin_val_tbl.FIRST;
1837 
1838     WHILE l_index IS NOT NULL LOOP
1839 
1840         l_trolin_rec := INV_Trolin_Util.Get_Ids
1841         (   p_trolin_rec                  => p_trolin_tbl(l_index)
1842         ,   p_trolin_val_rec              => p_trolin_val_tbl(l_index)
1843         );
1844 
1845         x_trolin_tbl(l_index)          := l_trolin_rec;
1846 
1847         IF l_trolin_rec.return_status = FND_API.G_RET_STS_ERROR THEN
1848             x_return_status := FND_API.G_RET_STS_ERROR;
1849         END IF;
1850 
1851         l_index := p_trolin_val_tbl.NEXT(l_index);
1852 
1853     END LOOP;
1854 
1855 EXCEPTION
1856 
1857     WHEN OTHERS THEN
1858 
1859         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1860         THEN
1861             FND_MSG_PUB.Add_Exc_Msg
1862             (   G_PKG_NAME
1863             ,   'Value_To_Id'
1864             );
1865         END IF;
1866 
1867         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1868 
1869 END Value_To_Id;
1870 
1871 PROCEDURE Process_Move_Order_Line
1872 (
1873     p_api_version_number        IN NUMBER
1874 ,   p_init_msg_list             IN VARCHAR2 := FND_API.G_FALSE
1875 ,   p_return_values             IN VARCHAR2 := FND_API.G_FALSE
1876 ,   p_commit                    IN VARCHAR2 := FND_API.G_TRUE
1877 ,   x_return_status             OUT NOCOPY VARCHAR2
1878 ,   x_msg_count                 OUT NOCOPY NUMBER
1879 ,   x_msg_data                  OUT NOCOPY VARCHAR2
1880 ,   p_trolin_tbl                IN Trolin_Tbl_Type
1881 ,   p_trolin_old_tbl            IN Trolin_Tbl_Type
1882 ,   x_trolin_tbl                IN OUT NOCOPY Trolin_Tbl_Type
1883 ) IS
1884 l_api_version_number          CONSTANT NUMBER := 1.0;
1885 l_api_name                    CONSTANT VARCHAR2(30):= 'Update_Move_Order_line';
1886 l_control_rec                 INV_GLOBALS.Control_Rec_Type;
1887 l_return_status               VARCHAR2(1);
1888 l_trohdr_rec                  Trohdr_Rec_Type := G_MISS_TROHDR_REC;
1889 l_trohdr_val_rec              Trohdr_Val_Rec_Type := G_MISS_TROHDR_VAL_REC;
1890 l_trolin_tbl                  Trolin_Tbl_Type := p_trolin_tbl;
1891 l_trolin_val_tbl              Trolin_Val_Tbl_Type := G_MISS_TROLIN_VAL_TBL;
1892     l_debug number := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
1893 BEGIN
1894 
1895     --  Standard call to check for call compatibility
1896     IF NOT FND_API.Compatible_API_Call
1897            (   l_api_version_number
1898            ,   p_api_version_number
1899            ,   l_api_name
1900            ,   G_PKG_NAME
1901            )
1902     THEN
1903         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1904     END IF;
1905 
1906     l_control_rec.controlled_operation := TRUE;
1907     l_control_Rec.validate_entity := TRUE;
1908     l_control_Rec.process_entity := INV_GLOBALS.G_ENTITY_TROLIN;
1909     l_control_rec.write_to_db := TRUE;
1910     l_control_Rec.default_attributes := FALSE;
1911     l_control_Rec.change_attributes := FALSE;
1912     l_control_rec.process := FALSE;
1913 
1914     --  Call INV_Transfer_Order_PVT.Process_Transfer_Order
1915     -- inv_debug.message('calling inv_transfer_order_pvt.process_transfer_order');
1916     -- inv_debug.message('l_trolin_tbl count is ' || p_trolin_tbl.COUNT);
1917     /*for l_count in 1..p_trolin_tbl.COUNT LOOP
1918     -- inv_debug.message('l_trolin_tbl.line_id is ' || p_trolin_tbl(l_count).line_id);
1919         -- inv_debug.message('l_trolin_tbl.operation is ' || p_trolin_tbl(l_count).operation);
1920     end loop; */
1921     INV_Transfer_Order_PVT.Process_Transfer_Order
1922     (   p_api_version_number          => 1.0
1923     ,   p_init_msg_list               => p_init_msg_list
1924     ,   p_commit                      => p_commit
1925     ,   p_validation_level            => FND_API.G_VALID_LEVEL_FULL
1926     ,   p_control_rec                 => l_control_rec
1927     ,   x_return_status               => x_return_status
1928     ,   x_msg_count                   => x_msg_count
1929     ,   x_msg_data                    => x_msg_data
1930     ,   p_trolin_tbl                  => p_trolin_tbl
1931     ,   p_trolin_val_tbl              => l_trolin_val_tbl
1932     ,   x_trohdr_rec                  => l_trohdr_rec
1933     ,   x_trolin_tbl                  => l_trolin_tbl
1934     );
1935 
1936     --  Load Id OUT parameters.
1937 
1938     --x_trohdr_rec                   := p_trohdr_rec;
1939     x_trolin_tbl                   := l_trolin_tbl;
1940     if( p_commit = FND_API.G_TRUE ) then
1941     commit;
1942     end if;
1943     --  If p_return_values is TRUE then convert Ids to Values.
1944 
1945     IF FND_API.to_Boolean(p_return_values) THEN
1946 
1947         Id_To_Value
1948         (   p_trohdr_rec                  => l_trohdr_rec
1949         ,   p_trolin_tbl                  => l_trolin_tbl
1950         ,   x_trohdr_val_rec              => l_trohdr_val_rec
1951         ,   x_trolin_val_tbl              => l_trolin_val_tbl
1952         );
1953 
1954     END IF;
1955 
1956 EXCEPTION
1957 
1958     WHEN FND_API.G_EXC_ERROR THEN
1959 
1960         x_return_status := FND_API.G_RET_STS_ERROR;
1961 
1962         --  Get message count and data
1963 
1964         FND_MSG_PUB.Count_And_Get
1965         (   p_count                       => x_msg_count
1966         ,   p_data                        => x_msg_data
1967         );
1968 
1969     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1970 
1971         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1972 
1973         --  Get message count and data
1974 
1975         FND_MSG_PUB.Count_And_Get
1976         (   p_count                       => x_msg_count
1977         ,   p_data                        => x_msg_data
1978         );
1979 
1980         FND_MSG_PUB.Count_And_Get
1981         (   p_count                       => x_msg_count
1982         ,   p_data                        => x_msg_data
1983         );
1984 
1985     WHEN OTHERS THEN
1986 
1987         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1988 
1989         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1990         THEN
1991             FND_MSG_PUB.Add_Exc_Msg
1992             (   G_PKG_NAME
1993             ,   'Process_Move_Order'
1994             );
1995         END IF;
1996 
1997         --  Get message count and data
1998         FND_MSG_PUB.Count_And_Get
1999         (   p_count                       => x_msg_count
2000         ,   p_data                        => x_msg_data
2001         );
2002    END Process_Move_Order_Line;
2003 
2004  PROCEDURE stamp_cart_id ( p_validation_level IN NUMBER
2005             , p_carton_grouping_tbl IN inv_move_order_pub.num_tbl_type
2006             , p_move_order_line_tbl IN inv_move_order_pub.num_tbl_type
2007             ) IS
2008    BEGIN
2009     FORALL i in 1..p_move_order_line_tbl.count
2010       UPDATE mtl_txn_request_lines SET
2011        carton_grouping_id = p_carton_grouping_tbl(i)
2012       WHERE line_id = p_move_order_line_tbl(i);
2013   END stamp_cart_id;
2014 
2015 
2016 END INV_Move_Order_PUB;