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.2 2008/10/20 13:21:25 mporecha 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;
396       IF x_trolin_tbl(l_index).ship_model_id IS NOT NULL AND
393       END IF;
394 
395       -- Bug 7148749, added for ship model complete handling
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           x_trolin_tbl(l_index).primary_quantity :=
453           inv_convert.inv_um_convert(
454                       item_id =>  x_trolin_tbl(l_index).inventory_item_id
455                       , PRECISION => NULL
456                   , from_quantity => x_trolin_tbl(l_index).quantity
457                             , from_unit => x_trolin_tbl(l_index).uom_code
458                       , to_unit => l_primary_uom_code
459                       , from_name => NULL
460                       , to_name => NULL);
461           --print_debug('primary_quantity = '|| x_trolin_tbl(l_index).primary_quantity, l_api_name);
462           IF x_trolin_tbl(l_index).primary_quantity < 0 THEN
463             print_debug('Error during conversion. Primary quantity less that 0', l_api_name);
464             RAISE fnd_api.g_exc_error;
465           END IF;
466         END IF; -- primary uom = txn uom
467       END IF; -- primary qty is missing
468 
469       IF x_trolin_tbl(l_index).to_subinventory_code IS NOT NULL THEN
470         IF l_restrict_subinventories_code IS NULL THEN
471           IF g_inventory_item_id = x_trolin_tbl(l_index).inventory_item_id Then
472             l_restrict_subinventories_code := g_restrict_subinventories_code;
473             l_restrict_locators_code := g_restrict_locators_code;
474           ELSE  -- item doesn't match saved item
475             SELECT primary_uom_code
476                 ,nvl(restrict_locators_code,0)
477                 ,nvl(restrict_subinventories_code,0)
478             INTO l_primary_uom_code
479                 ,l_restrict_locators_code
480                 ,l_restrict_subinventories_code
481              FROM mtl_system_items
482             WHERE organization_id = x_trolin_tbl(l_index).organization_id
483               AND inventory_item_id = x_trolin_tbl(l_index).inventory_item_id;
484 
485             g_inventory_item_id :=  x_trolin_tbl(l_index).inventory_item_id;
486             g_primary_uom_code := l_primary_uom_code;
487             g_restrict_subinventories_code := l_restrict_subinventories_code;
488             g_restrict_locators_code := l_restrict_locators_code;
489           END IF; -- inventory item matches
490         END IF; -- restrict subs is null
491         IF l_restrict_locators_code = 1 AND
492               x_trolin_tbl(l_index).to_locator_id IS NOT NULL THEN
493           BEGIN
494                SELECT 'Y'
495               INTO l_result
496                   FROM DUAL
497                  WHERE exists (
498                     SELECT secondary_locator
502                    AND inventory_item_id = x_trolin_tbl(l_index).inventory_item_id);
499                       FROM mtl_secondary_locators
500                      WHERE organization_id = x_trolin_tbl(l_index).organization_id
501                        AND secondary_locator = x_trolin_tbl(l_index).to_locator_id
503                EXCEPTION
504                  WHEN NO_DATA_FOUND THEN
505                    x_trolin_tbl(l_index).return_status := fnd_api.g_ret_sts_error;
506                END;
507 
508         ELSIF l_restrict_subinventories_code = 1 and x_trolin_tbl(l_index).to_subinventory_code is NOT NULL Then
509           BEGIN
510            SELECT 'Y'
511               INTO l_result
512                    FROM DUAL
513                  WHERE exists (
514                      SELECT secondary_inventory
515                        FROM mtl_item_sub_inventories
516                       WHERE organization_id = x_trolin_tbl(l_index).organization_id
517                       AND secondary_inventory = x_trolin_tbl(l_index).to_subinventory_code
518                       AND inventory_item_id = x_trolin_tbl(l_index).inventory_item_id);
519            EXCEPTION
520              WHEN NO_DATA_FOUND THEN
521                x_trolin_tbl(l_index).return_status := fnd_api.g_ret_sts_error;
522            END;
523         END IF;
524       END IF; -- to sub is not null
525 
526       IF x_trolin_tbl(l_index).return_status = fnd_api.g_ret_sts_success THEN --{
527 
528         l_return_value := INV_CACHE.set_item_rec( p_organization_id   => x_trolin_tbl(l_index).organization_id
529                              ,p_item_id           => x_trolin_tbl(l_index).inventory_item_id);
530 
531         IF NOT l_return_value Then
532           print_debug('Error setting cache for inventory_item', l_api_name);
533           RAISE fnd_api.g_exc_unexpected_error;
534         END IF;
535 
536         l_reservable_type := INV_CACHE.item_rec.reservable_type;
537 
538         IF l_reservable_type = 2 then
539           l_found_backorder_cache := FALSE;
540         ELSE
541           l_found_backorder_cache := inv_pick_release_pvt.check_backorder_cache(
542                    p_org_id        => x_trolin_tbl(l_index).organization_id
543                   ,p_inventory_item_id    => x_trolin_tbl(l_index).inventory_item_id
544                   ,p_ignore_reservations    => FALSE
545                   ,p_demand_line_id    => x_trolin_tbl(l_index).txn_source_line_id);
546         END IF;
547 
548         IF l_found_backorder_cache THEN
549           IF l_current_ship_set_id IS NOT NULL THEN
550             BEGIN
551               l_shipset_smc_backorder_rec.delivery_detail_id := x_trolin_tbl(l_index).txn_source_line_detail_id;
552               l_shipset_smc_backorder_rec.ship_set_id := l_current_ship_set_id;
553 
554               If l_debug = 1 THEN
555                   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);
556               End If;
557 
558               wsh_integration.ins_backorder_ss_smc_rec
559                     (p_api_version_number => 1.0,
560                      p_source_code        => 'INV',
561                      p_init_msg_list      => fnd_api.g_false,
562                      p_backorder_rec      => l_shipset_smc_backorder_rec,
563                      x_return_status      => l_return_status,
564                      x_msg_count          => x_msg_count,
565                      x_msg_data           => x_msg_data);
566 
567               IF l_return_status <> fnd_api.g_ret_sts_success THEN
568                  print_debug('Error occured while updating shipping for ' || 'failed ship set',l_api_name);
569                  print_debug('l_return_status: ' || l_return_status, l_api_name);
570               END IF;
571 
572             EXCEPTION
573               WHEN OTHERS THEN
574                   print_debug('When other exception: ' || Sqlerrm, l_api_name);
575                   print_debug('l_return_status: ' || l_return_status, l_api_name);
576             END;
577 
578           -- Bug 7148749, added for ship model complete handling
579           ELSIF l_current_ship_model_id IS NOT NULL THEN
580             BEGIN
581               l_shipset_smc_backorder_rec.delivery_detail_id := x_trolin_tbl(l_index).txn_source_line_detail_id;
582               l_shipset_smc_backorder_rec.ship_model_id := l_current_ship_model_id;
583 
584               If l_debug = 1 THEN
585                 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);
586               End If;
587 
588               wsh_integration.ins_backorder_ss_smc_rec
589                 (p_api_version_number => 1.0,
590                  p_source_code        => 'INV',
591                  p_init_msg_list      => fnd_api.g_false,
592                  p_backorder_rec      => l_shipset_smc_backorder_rec,
593                  x_return_status      => l_return_status,
594                  x_msg_count          => x_msg_count,
595                  x_msg_data           => x_msg_data);
596 
597               IF l_return_status <> fnd_api.g_ret_sts_success THEN
598                 print_debug('Error occured while updating shipping for ' || 'failed ship set',l_api_name);
599                 print_debug('l_return_status: ' || l_return_status, l_api_name);
600               END IF;
601 
602             EXCEPTION
603               WHEN OTHERS THEN
607           -- End Bug 7148749
604                   print_debug('When other exception: ' || Sqlerrm, l_api_name);
605                   print_debug('l_return_status: ' || l_return_status, l_api_name);
606             END;
608           END IF;
609           x_trolin_tbl(l_index).return_status:= fnd_api.g_ret_sts_error;
610         END IF;
611       END IF; -- x_trolin_tbl(l_index).return_status = fnd_api.g_ret_sts_success }
612 
613       IF x_trolin_tbl(l_index).return_status = fnd_api.g_ret_sts_error THEN --{
614         IF l_current_ship_set_id is NOT NULL THEN  --{
615           ROLLBACK to SHIPSET_SP;
616           l_index := l_shipset_start_index;
617           LOOP
618             IF not x_trolin_tbl.exists(l_index) THEN
619                  x_trolin_tbl(l_index) := p_trolin_tbl(l_index);
620             END IF;
621             IF l_found_backorder_cache THEN  --{
622 
623               l_shipping_attr(1).source_line_id := x_trolin_tbl(l_index).txn_source_line_id;
624               l_shipping_attr(1).ship_from_org_id := x_trolin_tbl(l_index).organization_id;
625               l_shipping_attr(1).delivery_detail_id := x_trolin_tbl(l_index).txn_source_line_detail_id;
626               l_shipping_attr(1).action_flag := 'B';
627 
628               WSH_INTERFACE.Update_Shipping_Attributes
629                 (p_source_code               => 'INV',
630                  p_changed_attributes        => l_shipping_attr,
631                  x_return_status             => l_return_status
632                 );
633 
634               IF l_return_status = FND_API.G_RET_STS_ERROR  THEN
635                 print_debug('return error from update shipping attributes',l_api_name);
636                 RAISE FND_API.G_EXC_ERROR;
637               ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
638                 print_debug('return error from update shipping attributes',l_api_name);
639                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
640               END IF;
641             END IF;  --} backorder_flag
642             x_trolin_tbl(l_index).return_status := fnd_api.g_ret_sts_error;
643             EXIT WHEN l_index = p_trolin_tbl.LAST;
644             l_index := p_trolin_tbl.NEXT(l_index);
645 
646             IF p_trolin_tbl(l_index).ship_set_id IS NULL OR
647               p_trolin_tbl(l_index).ship_set_id = fnd_api.g_miss_num OR
648               p_trolin_tbl(l_index).ship_set_id <> nvl(l_current_ship_set_id, -9999) THEN
649               l_index := p_trolin_tbl.prior(l_index);
650               EXIT;
651             END IF;
652           END LOOP; --loop for all records in shipset
653           l_current_ship_set_id := NULL;
654           l_shipset_start_index := NULL;
655         ELSIF l_current_ship_model_id IS NOT NULL THEN  --l_current_ship_set_id } {
656           ROLLBACK to SHIPMODEL_SP;
657           l_index := l_shipmodel_start_index;
658           LOOP
659             IF not x_trolin_tbl.exists(l_index) THEN
660               x_trolin_tbl(l_index) := p_trolin_tbl(l_index);
661             END IF;
662             IF l_found_backorder_cache THEN --{
663               l_shipping_attr(1).source_line_id := x_trolin_tbl(l_index).txn_source_line_id;
664               l_shipping_attr(1).ship_from_org_id := x_trolin_tbl(l_index).organization_id;
665               l_shipping_attr(1).delivery_detail_id := x_trolin_tbl(l_index).txn_source_line_detail_id;
666               l_shipping_attr(1).action_flag := 'B';
667 
668               If l_debug = 1 THEN
669                 print_debug('Backordering WDD = '||x_trolin_tbl(l_index).txn_source_line_detail_id||', MODEL_ID = '||l_current_ship_model_id,l_api_name);
670               End If;
671 
672               WSH_INTERFACE.Update_Shipping_Attributes
673                 (p_source_code               => 'INV',
674                  p_changed_attributes        => l_shipping_attr,
675                  x_return_status             => l_return_status
676                 );
677               IF l_return_status = FND_API.G_RET_STS_ERROR then
678                 print_debug('return error from update shipping attributes',l_api_name);
679                 RAISE FND_API.G_EXC_ERROR;
680               ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
681                 print_debug('return error from update shipping attributes',l_api_name);
682                 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
683               END IF;
684             END IF; -- l_back_order_flag }
685             x_trolin_tbl(l_index).return_status := fnd_api.g_ret_sts_error;
686 
687             EXIT WHEN l_index = p_trolin_tbl.LAST;
688             l_index := p_trolin_tbl.NEXT(l_index);
689 
690             IF p_trolin_tbl(l_index).ship_model_id IS NULL OR
691               p_trolin_tbl(l_index).ship_model_id = fnd_api.g_miss_num OR
692               p_trolin_tbl(l_index).ship_model_id <> nvl(l_current_ship_model_id, -9999) THEN
693               l_index := p_trolin_tbl.prior(l_index);
694               EXIT;
695             END IF;
696           END LOOP; --loop for all records in ship model
697           l_current_ship_model_id := NULL;
698           l_shipmodel_start_index := NULL;
699 
700         ELSE -- l_current_ship_set_id } {
701 
702           IF l_found_backorder_cache THEN --{
703 
704             l_shipping_attr(1).source_line_id := x_trolin_tbl(l_index).txn_source_line_id;
705             l_shipping_attr(1).ship_from_org_id := x_trolin_tbl(l_index).organization_id;
706             l_shipping_attr(1).delivery_detail_id := x_trolin_tbl(l_index).txn_source_line_detail_id;
710               (p_source_code               => 'INV',
707             l_shipping_attr(1).action_flag := 'B';
708 
709             WSH_INTERFACE.Update_Shipping_Attributes
711                p_changed_attributes        => l_shipping_attr,
712                x_return_status             => l_return_status
713               );
714 
715             IF l_return_status = FND_API.G_RET_STS_ERROR then
716               print_debug('return error from update shipping attributes',l_api_name);
717               RAISE FND_API.G_EXC_ERROR;
718             ELSIF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
719               print_debug('return error from update shipping attributes',l_api_name);
720               RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
721             END IF;
722           END IF; -- l_back_order_flag }
723           x_trolin_tbl(l_index).return_status := fnd_api.g_ret_sts_error;
724         END IF; -- l_current_ship_set_id }
725     --Bug 7148749, moving this after the loop, so that the new move order lines table
726     --l_new_trolin_tbl gets populated only when all the lines in x_trolin_tbl are validated.
727    /* ELSE --} {
728         --print_debug('in insert',l_api_name);
729         SELECT  MTL_TXN_REQUEST_LINES_S.NEXTVAL
730          INTO  x_trolin_tbl(l_index).line_id
731         FROM  DUAL;
732         x_trolin_tbl(l_index).status_date     := SYSDATE;
733         x_trolin_tbl(l_index).creation_date      := SYSDATE;
734         x_trolin_tbl(l_index).created_by         := fnd_global.user_id;
735         x_trolin_tbl(l_index).last_update_date   := SYSDATE;
736         x_trolin_tbl(l_index).last_updated_by    := fnd_global.user_id;
737         x_trolin_tbl(l_index).last_update_login  := fnd_global.login_id;
738         x_trolin_tbl(l_index).return_status := fnd_api.g_ret_sts_success;
739         x_trolin_tbl(l_index) := inv_trolin_util.convert_miss_to_null_parallel
740                                 (p_trolin_rec => x_trolin_tbl(l_index));
741 
742             l_new_trolin_tbl(l_count).attribute1  :=  x_trolin_tbl(l_index).attribute1;
743         l_new_trolin_tbl(l_count).attribute10 := x_trolin_tbl(l_index).attribute10;
744         l_new_trolin_tbl(l_count).attribute11 := x_trolin_tbl(l_index).attribute11;
745         l_new_trolin_tbl(l_count).attribute12 := x_trolin_tbl(l_index).attribute12;
746         l_new_trolin_tbl(l_count).attribute13 := x_trolin_tbl(l_index).attribute13;
747         l_new_trolin_tbl(l_count).attribute14 := x_trolin_tbl(l_index).attribute14;
748         l_new_trolin_tbl(l_count).attribute15 := x_trolin_tbl(l_index).attribute15;
749         l_new_trolin_tbl(l_count).attribute2  := x_trolin_tbl(l_index).attribute2;
750         l_new_trolin_tbl(l_count).attribute3  := x_trolin_tbl(l_index).attribute3;
751         l_new_trolin_tbl(l_count).attribute4  := x_trolin_tbl(l_index).attribute4;
752         l_new_trolin_tbl(l_count).attribute5  := x_trolin_tbl(l_index).attribute5;
753         l_new_trolin_tbl(l_count).attribute6  := x_trolin_tbl(l_index).attribute6;
754         l_new_trolin_tbl(l_count).attribute7  := x_trolin_tbl(l_index).attribute7;
755         l_new_trolin_tbl(l_count).attribute8  := x_trolin_tbl(l_index).attribute8;
756         l_new_trolin_tbl(l_count).attribute9  := x_trolin_tbl(l_index).attribute9;
757         l_new_trolin_tbl(l_count).attribute_category  := x_trolin_tbl(l_index).attribute_category;
758         l_new_trolin_tbl(l_count).created_by      := x_trolin_tbl(l_index).created_by;
759         l_new_trolin_tbl(l_count).creation_date     := x_trolin_tbl(l_index).creation_date;
760         l_new_trolin_tbl(l_count).date_required      := x_trolin_tbl(l_index).date_required;
761         l_new_trolin_tbl(l_count).from_locator_id      := x_trolin_tbl(l_index).from_locator_id;
762         l_new_trolin_tbl(l_count).from_subinventory_code  := x_trolin_tbl(l_index).from_subinventory_code;
763         l_new_trolin_tbl(l_count).from_subinventory_id    := x_trolin_tbl(l_index).from_subinventory_id;
764         l_new_trolin_tbl(l_count).header_id          := x_trolin_tbl(l_index).header_id;
765         l_new_trolin_tbl(l_count).inventory_item_id      := x_trolin_tbl(l_index).inventory_item_id;
766         l_new_trolin_tbl(l_count).last_updated_by      := x_trolin_tbl(l_index).last_updated_by;
767         l_new_trolin_tbl(l_count).last_update_date      := x_trolin_tbl(l_index).last_update_date;
768         l_new_trolin_tbl(l_count).last_update_login      := x_trolin_tbl(l_index).last_update_login;
769         l_new_trolin_tbl(l_count).line_id          := x_trolin_tbl(l_index).line_id;
770         l_new_trolin_tbl(l_count).line_number      := x_trolin_tbl(l_index).line_number;
771         l_new_trolin_tbl(l_count).line_status      := x_trolin_tbl(l_index).line_status;
772         l_new_trolin_tbl(l_count).lot_number      := x_trolin_tbl(l_index).lot_number;
773         l_new_trolin_tbl(l_count).organization_id      := x_trolin_tbl(l_index).organization_id;
774         l_new_trolin_tbl(l_count).program_application_id  := x_trolin_tbl(l_index).program_application_id;
775         l_new_trolin_tbl(l_count).program_id      := x_trolin_tbl(l_index).program_id;
776         l_new_trolin_tbl(l_count).program_update_date := x_trolin_tbl(l_index).program_update_date;
777         l_new_trolin_tbl(l_count).project_id      := x_trolin_tbl(l_index).project_id;
778         l_new_trolin_tbl(l_count).quantity          := x_trolin_tbl(l_index).quantity;
779         l_new_trolin_tbl(l_count).quantity_delivered  := x_trolin_tbl(l_index).quantity_delivered;
780         l_new_trolin_tbl(l_count).quantity_detailed      := x_trolin_tbl(l_index).quantity_detailed;
781         l_new_trolin_tbl(l_count).reason_id          := x_trolin_tbl(l_index).reason_id;
782         l_new_trolin_tbl(l_count).REFERENCE          := x_trolin_tbl(l_index).REFERENCE;
783         l_new_trolin_tbl(l_count).reference_id      := x_trolin_tbl(l_index).reference_id;
787         l_new_trolin_tbl(l_count).serial_number_end      := x_trolin_tbl(l_index).serial_number_end;
784         l_new_trolin_tbl(l_count).reference_type_code := x_trolin_tbl(l_index).reference_type_code;
785         l_new_trolin_tbl(l_count).request_id      := x_trolin_tbl(l_index).request_id;
786         l_new_trolin_tbl(l_count).revision          := x_trolin_tbl(l_index).revision;
788         l_new_trolin_tbl(l_count).serial_number_start := x_trolin_tbl(l_index).serial_number_start;
789         l_new_trolin_tbl(l_count).status_date      := x_trolin_tbl(l_index).status_date;
790         l_new_trolin_tbl(l_count).task_id          := x_trolin_tbl(l_index).task_id;
791         l_new_trolin_tbl(l_count).to_account_id      := x_trolin_tbl(l_index).to_account_id;
792         l_new_trolin_tbl(l_count).to_locator_id      := x_trolin_tbl(l_index).to_locator_id;
793         l_new_trolin_tbl(l_count).to_subinventory_code  := x_trolin_tbl(l_index).to_subinventory_code;
794         l_new_trolin_tbl(l_count).to_subinventory_id  := x_trolin_tbl(l_index).to_subinventory_id;
795         l_new_trolin_tbl(l_count).transaction_header_id := x_trolin_tbl(l_index).transaction_header_id;
796         l_new_trolin_tbl(l_count).uom_code          := x_trolin_tbl(l_index).uom_code;
797         l_new_trolin_tbl(l_count).transaction_type_id := x_trolin_tbl(l_index).transaction_type_id;
798         l_new_trolin_tbl(l_count).transaction_source_type_id  := x_trolin_tbl(l_index).transaction_source_type_id;
799         l_new_trolin_tbl(l_count).txn_source_id      := x_trolin_tbl(l_index).txn_source_id;
800         l_new_trolin_tbl(l_count).txn_source_line_id  := x_trolin_tbl(l_index).txn_source_line_id;
801         l_new_trolin_tbl(l_count).txn_source_line_detail_id      := x_trolin_tbl(l_index).txn_source_line_detail_id;
802         l_new_trolin_tbl(l_count).to_organization_id  := x_trolin_tbl(l_index).to_organization_id;
803         l_new_trolin_tbl(l_count).primary_quantity      := x_trolin_tbl(l_index).primary_quantity;
804         l_new_trolin_tbl(l_count).pick_strategy_id      := x_trolin_tbl(l_index).pick_strategy_id;
805         l_new_trolin_tbl(l_count).put_away_strategy_id      := x_trolin_tbl(l_index).put_away_strategy_id;
806         l_new_trolin_tbl(l_count).unit_number  := x_trolin_tbl(l_index).unit_number;
807         l_new_trolin_tbl(l_count).ship_to_location_id := x_trolin_tbl(l_index).ship_to_location_id;
808         l_new_trolin_tbl(l_count).from_cost_group_id  := x_trolin_tbl(l_index).from_cost_group_id;
809         l_new_trolin_tbl(l_count).to_cost_group_id      := x_trolin_tbl(l_index).to_cost_group_id;
810         l_new_trolin_tbl(l_count).lpn_id          := x_trolin_tbl(l_index).lpn_id;
811         l_new_trolin_tbl(l_count).to_lpn_id          := x_trolin_tbl(l_index).to_lpn_id;
812         l_new_trolin_tbl(l_count).inspection_status      := x_trolin_tbl(l_index).inspection_status;
813         l_new_trolin_tbl(l_count).pick_methodology_id := x_trolin_tbl(l_index).pick_methodology_id;
814         l_new_trolin_tbl(l_count).container_item_id      := x_trolin_tbl(l_index).container_item_id;
815         l_new_trolin_tbl(l_count).carton_grouping_id  := x_trolin_tbl(l_index).carton_grouping_id;
816         l_new_trolin_tbl(l_count).wms_process_flag  := x_trolin_tbl(l_index).wms_process_flag;
817         l_new_trolin_tbl(l_count).pick_slip_number  := x_trolin_tbl(l_index).pick_slip_number;
818         l_new_trolin_tbl(l_count).pick_slip_date    := x_trolin_tbl(l_index).pick_slip_date;
819         l_new_trolin_tbl(l_count).ship_set_id      := x_trolin_tbl(l_index).ship_set_id;
820         l_new_trolin_tbl(l_count).ship_model_id      := x_trolin_tbl(l_index).ship_model_id;
821         l_new_trolin_tbl(l_count).model_quantity      := x_trolin_tbl(l_index).model_quantity;
822         l_new_trolin_tbl(l_count).required_quantity      := x_trolin_tbl(l_index).required_quantity;
823         l_new_trolin_tbl(l_count).crossdock_type     := NULL;
824         l_new_trolin_tbl(l_count).backorder_delivery_detail_id := NULL;
825         l_new_trolin_tbl(l_count).assignment_id    := NULL;
826         l_new_trolin_tbl(l_count).reference_detail_id    := NULL;
827 
828 -- Added for INVCONV BEGIN
829         l_new_trolin_tbl(l_count).secondary_quantity    := x_trolin_tbl(l_index).secondary_quantity;
830         l_new_trolin_tbl(l_count).secondary_uom_code    := x_trolin_tbl(l_index).secondary_uom;
831         l_new_trolin_tbl(l_count).secondary_quantity_detailed   := x_trolin_tbl(l_index).secondary_quantity_detailed;
832         l_new_trolin_tbl(l_count).secondary_quantity_delivered  := x_trolin_tbl(l_index).secondary_quantity_delivered;
833         l_new_trolin_tbl(l_count).secondary_required_quantity   := x_trolin_tbl(l_index).secondary_required_quantity;
834         l_new_trolin_tbl(l_count).grade_code    := x_trolin_tbl(l_index).grade_code;
835 -- INVCONV END
836 
837         l_count := l_count+1;
838       */ -- Bug 7148749
839       END IF; --  x_trolin_tbl(l_index).return_status = fnd_api.g_ret_sts_error   }
840     -- gmi_reservation_util.println('- PAL inside Create_Move_Order_Lines ');
841       /* Bug 4162173 Added the following to initate the Outbound for Third Party Integration */
842       OPEN get_move_order_type(x_trolin_tbl(l_index).header_id);
843       FETCH get_move_order_type INTO l_move_order_type;
844       CLOSE get_move_order_type;
845 
846       IF (l_move_order_type = 3) AND
847         (x_trolin_tbl(l_index).txn_source_line_id IS NOT NULL) THEN
848         OPEN get_sales_order(x_trolin_tbl(l_index).txn_source_line_id);
849         FETCH get_sales_order INTO l_order_number ,l_org_id; -- 6689912
850         CLOSE get_sales_order;
851         --          gmi_reservation_util.println('- PAL about to call GR_WF_UTIL_PUB.INITIATE_PROCESS_SALES_ORDER ');
852         GR_WF_UTIL_PUB.INITIATE_PROCESS_SALES_ORDER
853             (p_api_version         => 1.0,
854              p_init_msg_list       => p_init_msg_list,
855              p_commit              => p_commit,
856              p_sales_order_org_id  => l_org_id,  -- 6689912
860              x_return_status       => l_return_status,
857              p_orgn_id             => x_trolin_tbl(l_index).organization_id,
858              p_item_id             => x_trolin_tbl(l_index).inventory_item_id,
859              p_sales_order_no      => l_order_number,
861              x_error_code          => l_error_code,
862              x_msg_data            => l_msg_data);
863 
864          IF l_return_status <> 'S' THEN
865             WSH_Util_Core.PrintLn('Error occured on initiate the Outbound to Partner Application ' ||
866                                   'with the following error message ' || l_msg_data);
867             --gmi_reservation_util.println('- PAL - called GR_WF_UTIL_PUB.INITIATE_PROCESS_SALES_ORDER -  Error occured ');
868          ELSE
869             --gmi_reservation_util.println('- PAL - called GR_WF_UTIL_PUB.INITIATE_PROCESS_SALES_ORDER -  success ');
870             WSH_Util_Core.PrintLn('Successfully initiated the Outbound to Partner Application => ' ||
871                                    x_trolin_tbl(l_index).inventory_item_id);
872          END IF;
873       END IF;
874 
875       -- Bug 5311250: null out TO_LOCATOR_ID if TO SUB has locator control
876       -- set to item level, and item is not locator controlled
877       IF (l_move_order_type = 3) THEN
878         OPEN get_sub_loc_ctrl (x_trolin_tbl(l_index).organization_id
879                              ,x_trolin_tbl(l_index).to_subinventory_code);
880         FETCH get_sub_loc_ctrl INTO l_sub_loc_ctrl;
881         CLOSE get_sub_loc_ctrl;
882         IF l_sub_loc_ctrl = 5 THEN
883           BEGIN
884              l_item_loc_ctrl := INV_CACHE.item_rec.location_control_code;
885           EXCEPTION
886              WHEN OTHERS THEN
887                 print_debug('Exception retrieving item locator control from cache ' || sqlerrm
888                            ,'INV_Move_Order_PUB.Create_Move_Order_Lines');
889                 l_item_loc_ctrl := 0;
890           END;
891           IF l_item_loc_ctrl IS NULL OR l_item_loc_ctrl = 0 THEN
892              OPEN get_item_loc_ctrl (x_trolin_tbl(l_index).organization_id
893                                     ,x_trolin_tbl(l_index).inventory_item_id);
894              FETCH get_item_loc_ctrl INTO l_item_loc_ctrl;
895              CLOSE get_item_loc_ctrl;
896           END IF;
897           IF l_item_loc_ctrl = 1 THEN
898              x_trolin_tbl(l_index).to_locator_id := NULL;
899              -- Bug 7148749, commenting the below line, since l_new_trolin_tbl population code is moved below.
900              -- l_new_trolin_tbl(l_count - 1).to_locator_id := NULL;
901           END IF;
902         END IF;
903       END IF;
904 
905       --print_debug('return_status '|| x_trolin_tbl(l_index).return_status, l_api_name);
906       EXIT WHEN l_index = p_trolin_tbl.LAST;
907       l_index := p_trolin_tbl.NEXT(l_index);
908     END LOOP;  -- loop throUgh p_trolin_tbl
909 
910     --Bug 7148749, populating l_new_trolin_tbl only after all the records in x_trolin_tbl
911  	  --have been successfully validated, so that entire ship set can be handled.
912  	  l_index := x_trolin_tbl.FIRST;
913  	  l_count := 1;
914  	  Loop
915  	    If x_trolin_tbl(l_index).return_status = fnd_api.g_ret_sts_success THEN
916 
917         If l_debug = 1 THEN
918            print_debug('Creating MO Line for WDD = '||x_trolin_tbl(l_index).txn_source_line_detail_id,l_api_name);
919         End If;
920         SELECT  MTL_TXN_REQUEST_LINES_S.NEXTVAL
921           INTO  x_trolin_tbl(l_index).line_id
922           FROM  DUAL;
923 
924         x_trolin_tbl(l_index).status_date       := SYSDATE;
925         x_trolin_tbl(l_index).creation_date     := SYSDATE;
926         x_trolin_tbl(l_index).created_by        := fnd_global.user_id;
927         x_trolin_tbl(l_index).last_update_date  := SYSDATE;
928         x_trolin_tbl(l_index).last_updated_by   := fnd_global.user_id;
929         x_trolin_tbl(l_index).last_update_login := fnd_global.login_id;
930         x_trolin_tbl(l_index).return_status     := fnd_api.g_ret_sts_success;
931         x_trolin_tbl(l_index)                   := inv_trolin_util.convert_miss_to_null_parallel
932                                                         (p_trolin_rec => x_trolin_tbl(l_index));
933 
934         l_new_trolin_tbl(l_count).attribute1                    := x_trolin_tbl(l_index).attribute1;
935         l_new_trolin_tbl(l_count).attribute10                   := x_trolin_tbl(l_index).attribute10;
936         l_new_trolin_tbl(l_count).attribute11                   := x_trolin_tbl(l_index).attribute11;
937         l_new_trolin_tbl(l_count).attribute12                   := x_trolin_tbl(l_index).attribute12;
938         l_new_trolin_tbl(l_count).attribute13                   := x_trolin_tbl(l_index).attribute13;
939         l_new_trolin_tbl(l_count).attribute14                   := x_trolin_tbl(l_index).attribute14;
940         l_new_trolin_tbl(l_count).attribute15                   := x_trolin_tbl(l_index).attribute15;
941         l_new_trolin_tbl(l_count).attribute2                    := x_trolin_tbl(l_index).attribute2;
942         l_new_trolin_tbl(l_count).attribute3                    := x_trolin_tbl(l_index).attribute3;
943         l_new_trolin_tbl(l_count).attribute4                    := x_trolin_tbl(l_index).attribute4;
944         l_new_trolin_tbl(l_count).attribute5                    := x_trolin_tbl(l_index).attribute5;
945         l_new_trolin_tbl(l_count).attribute6                    := x_trolin_tbl(l_index).attribute6;
946         l_new_trolin_tbl(l_count).attribute7                    := x_trolin_tbl(l_index).attribute7;
947         l_new_trolin_tbl(l_count).attribute8                    := x_trolin_tbl(l_index).attribute8;
951         l_new_trolin_tbl(l_count).creation_date                 := x_trolin_tbl(l_index).creation_date;
948         l_new_trolin_tbl(l_count).attribute9                    := x_trolin_tbl(l_index).attribute9;
949         l_new_trolin_tbl(l_count).attribute_category            := x_trolin_tbl(l_index).attribute_category;
950         l_new_trolin_tbl(l_count).created_by                    := x_trolin_tbl(l_index).created_by;
952         l_new_trolin_tbl(l_count).date_required                 := x_trolin_tbl(l_index).date_required;
953         l_new_trolin_tbl(l_count).from_locator_id               := x_trolin_tbl(l_index).from_locator_id;
954         l_new_trolin_tbl(l_count).from_subinventory_code        := x_trolin_tbl(l_index).from_subinventory_code;
955         l_new_trolin_tbl(l_count).from_subinventory_id          := x_trolin_tbl(l_index).from_subinventory_id;
956         l_new_trolin_tbl(l_count).header_id                     := x_trolin_tbl(l_index).header_id;
957         l_new_trolin_tbl(l_count).inventory_item_id             := x_trolin_tbl(l_index).inventory_item_id;
958         l_new_trolin_tbl(l_count).last_updated_by               := x_trolin_tbl(l_index).last_updated_by;
959         l_new_trolin_tbl(l_count).last_update_date              := x_trolin_tbl(l_index).last_update_date;
960         l_new_trolin_tbl(l_count).last_update_login             := x_trolin_tbl(l_index).last_update_login;
961         l_new_trolin_tbl(l_count).line_id                       := x_trolin_tbl(l_index).line_id;
962         l_new_trolin_tbl(l_count).line_number                   := x_trolin_tbl(l_index).line_number;
963         l_new_trolin_tbl(l_count).line_status                   := x_trolin_tbl(l_index).line_status;
964         l_new_trolin_tbl(l_count).lot_number                    := x_trolin_tbl(l_index).lot_number;
965         l_new_trolin_tbl(l_count).organization_id               := x_trolin_tbl(l_index).organization_id;
966         l_new_trolin_tbl(l_count).program_application_id        := x_trolin_tbl(l_index).program_application_id;
967         l_new_trolin_tbl(l_count).program_id                    := x_trolin_tbl(l_index).program_id;
968         l_new_trolin_tbl(l_count).program_update_date           := x_trolin_tbl(l_index).program_update_date;
969         l_new_trolin_tbl(l_count).project_id                    := x_trolin_tbl(l_index).project_id;
970         l_new_trolin_tbl(l_count).quantity                      := x_trolin_tbl(l_index).quantity;
971         l_new_trolin_tbl(l_count).quantity_delivered            := x_trolin_tbl(l_index).quantity_delivered;
972         l_new_trolin_tbl(l_count).quantity_detailed             := x_trolin_tbl(l_index).quantity_detailed;
973         l_new_trolin_tbl(l_count).reason_id                     := x_trolin_tbl(l_index).reason_id;
974         l_new_trolin_tbl(l_count).REFERENCE                     := x_trolin_tbl(l_index).REFERENCE;
975         l_new_trolin_tbl(l_count).reference_id                  := x_trolin_tbl(l_index).reference_id;
976         l_new_trolin_tbl(l_count).reference_type_code           := x_trolin_tbl(l_index).reference_type_code;
977         l_new_trolin_tbl(l_count).request_id                    := x_trolin_tbl(l_index).request_id;
978         l_new_trolin_tbl(l_count).revision                      := x_trolin_tbl(l_index).revision;
979         l_new_trolin_tbl(l_count).serial_number_end             := x_trolin_tbl(l_index).serial_number_end;
980         l_new_trolin_tbl(l_count).serial_number_start           := x_trolin_tbl(l_index).serial_number_start;
981         l_new_trolin_tbl(l_count).status_date                   := x_trolin_tbl(l_index).status_date;
982         l_new_trolin_tbl(l_count).task_id                       := x_trolin_tbl(l_index).task_id;
983         l_new_trolin_tbl(l_count).to_account_id                 := x_trolin_tbl(l_index).to_account_id;
984         l_new_trolin_tbl(l_count).to_locator_id                 := x_trolin_tbl(l_index).to_locator_id;
985         l_new_trolin_tbl(l_count).to_subinventory_code          := x_trolin_tbl(l_index).to_subinventory_code;
986         l_new_trolin_tbl(l_count).to_subinventory_id            := x_trolin_tbl(l_index).to_subinventory_id;
987         l_new_trolin_tbl(l_count).transaction_header_id         := x_trolin_tbl(l_index).transaction_header_id;
988         l_new_trolin_tbl(l_count).uom_code                      := x_trolin_tbl(l_index).uom_code;
989         l_new_trolin_tbl(l_count).transaction_type_id           := x_trolin_tbl(l_index).transaction_type_id;
990         l_new_trolin_tbl(l_count).transaction_source_type_id    := x_trolin_tbl(l_index).transaction_source_type_id;
991         l_new_trolin_tbl(l_count).txn_source_id                 := x_trolin_tbl(l_index).txn_source_id;
992         l_new_trolin_tbl(l_count).txn_source_line_id            := x_trolin_tbl(l_index).txn_source_line_id;
993         l_new_trolin_tbl(l_count).txn_source_line_detail_id     := x_trolin_tbl(l_index).txn_source_line_detail_id;
994         l_new_trolin_tbl(l_count).to_organization_id            := x_trolin_tbl(l_index).to_organization_id;
995         l_new_trolin_tbl(l_count).primary_quantity              := x_trolin_tbl(l_index).primary_quantity;
996         l_new_trolin_tbl(l_count).pick_strategy_id              := x_trolin_tbl(l_index).pick_strategy_id;
997         l_new_trolin_tbl(l_count).put_away_strategy_id          := x_trolin_tbl(l_index).put_away_strategy_id;
998         l_new_trolin_tbl(l_count).unit_number                   := x_trolin_tbl(l_index).unit_number;
999         l_new_trolin_tbl(l_count).ship_to_location_id           := x_trolin_tbl(l_index).ship_to_location_id;
1000         l_new_trolin_tbl(l_count).from_cost_group_id            := x_trolin_tbl(l_index).from_cost_group_id;
1001         l_new_trolin_tbl(l_count).to_cost_group_id              := x_trolin_tbl(l_index).to_cost_group_id;
1002         l_new_trolin_tbl(l_count).lpn_id                        := x_trolin_tbl(l_index).lpn_id;
1006         l_new_trolin_tbl(l_count).container_item_id             := x_trolin_tbl(l_index).container_item_id;
1003         l_new_trolin_tbl(l_count).to_lpn_id                     := x_trolin_tbl(l_index).to_lpn_id;
1004         l_new_trolin_tbl(l_count).inspection_status             := x_trolin_tbl(l_index).inspection_status;
1005         l_new_trolin_tbl(l_count).pick_methodology_id           := x_trolin_tbl(l_index).pick_methodology_id;
1007         l_new_trolin_tbl(l_count).carton_grouping_id            := x_trolin_tbl(l_index).carton_grouping_id;
1008         l_new_trolin_tbl(l_count).wms_process_flag              := x_trolin_tbl(l_index).wms_process_flag;
1009         l_new_trolin_tbl(l_count).pick_slip_number              := x_trolin_tbl(l_index).pick_slip_number;
1010         l_new_trolin_tbl(l_count).pick_slip_date                := x_trolin_tbl(l_index).pick_slip_date;
1011         l_new_trolin_tbl(l_count).ship_set_id                   := x_trolin_tbl(l_index).ship_set_id;
1012         l_new_trolin_tbl(l_count).ship_model_id                 := x_trolin_tbl(l_index).ship_model_id;
1013         l_new_trolin_tbl(l_count).model_quantity                := x_trolin_tbl(l_index).model_quantity;
1014         l_new_trolin_tbl(l_count).required_quantity             := x_trolin_tbl(l_index).required_quantity;
1015         l_new_trolin_tbl(l_count).crossdock_type                := NULL;
1016         l_new_trolin_tbl(l_count).backorder_delivery_detail_id  := NULL;
1017         l_new_trolin_tbl(l_count).assignment_id                 := NULL;
1018         l_new_trolin_tbl(l_count).reference_detail_id           := NULL;
1019 
1020  	 -- Added for INVCONV BEGIN
1021         l_new_trolin_tbl(l_count).secondary_quantity            := x_trolin_tbl(l_index).secondary_quantity;
1022         l_new_trolin_tbl(l_count).secondary_uom_code            := x_trolin_tbl(l_index).secondary_uom;
1023         l_new_trolin_tbl(l_count).secondary_quantity_detailed   := x_trolin_tbl(l_index).secondary_quantity_detailed;
1024         l_new_trolin_tbl(l_count).secondary_quantity_delivered  := x_trolin_tbl(l_index).secondary_quantity_delivered;
1025         l_new_trolin_tbl(l_count).secondary_required_quantity   := x_trolin_tbl(l_index).secondary_required_quantity;
1026         l_new_trolin_tbl(l_count).grade_code                    := x_trolin_tbl(l_index).grade_code;
1027  	 -- INVCONV END
1028 
1029  	      l_count := l_count+1;
1030  	    End If;
1031  	    EXIT WHEN l_index = x_trolin_tbl.LAST;
1032  	    l_index := x_trolin_tbl.NEXT(l_index);
1033  	  End Loop;
1034 
1035  	  If l_debug = 1 THEN
1036  	    print_debug('l_new_trolin_tbl Count = '||l_new_trolin_tbl.count||', x_trolin_tbl Count = '||x_trolin_tbl.count
1037                   ||', p_trolin_tbl Count = '||p_trolin_tbl.count,l_api_name);
1038  	  End If;
1039     -- End bug 7148749
1040 
1041     x_return_status := fnd_api.g_ret_sts_success;
1042 
1043     inv_trolin_util.insert_mo_lines_bulk
1044                   (p_new_trolin_tbl => l_new_trolin_tbl
1045                   ,x_return_status => x_return_status);
1046 
1047     --delete the records from l_new_trolin_tbl
1048     l_new_trolin_tbl.delete;
1049 
1050     IF x_return_status = FND_API.G_RET_STS_UNEXP_ERROR then
1051        print_debug('return error from INSERT_MO_LINES_BULK',l_api_name);
1052        RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1053     END IF;
1054 
1055   ELSE   --} Validation Yes
1056     l_control_rec.controlled_operation := TRUE;
1057     l_control_Rec.process_entity := INV_GLOBALS.G_ENTITY_TROLIN;
1058     l_control_Rec.default_attributes := TRUE;
1059     l_control_rec.change_attributes := TRUE;
1060     l_control_rec.write_to_db := TRUE;
1061     --  Call INV_Transfer_Order_PVT.Process_Transfer_Order
1062     if( l_trolin_tbl.count > 0 ) then
1063       for i in 1..l_trolin_tbl.count LOOP
1064         --inv_debug.message('trolin.line_id is ' || l_trolin_tbl(l).line_id);
1065 /* to fix bug 1402677: Also we shouldn't change the operation here
1066         if( (l_trolin_tbl(i).line_id <> FND_API.G_MISS_NUM OR l_trolin_tbl(i).line_id is NULL ) AND
1067         l_trolin_tbl(i).operation = INV_GLOBALS.G_OPR_CREATE ) then
1068         l_trolin_tbl(i).operation := INV_GLOBALS.G_OPR_UPDATE;
1069         els*/
1070             if (l_trolin_tbl(i).operation = INV_GLOBALS.G_OPR_UPDATE and
1071         (l_trolin_tbl(i).line_id = FND_API.G_MISS_NUM OR
1072          l_trolin_tbl(i).line_id is null ) ) then
1073             --inv_debug.message('update and no line id');
1074           fnd_message.set_name('INV', 'INV_ATTRIBUTE_REQUIRED');
1075         fnd_message.set_token('ATTRIBUTE', 'LINE_ID');
1076         fnd_msg_pub.add;
1077         raise fnd_api.g_exc_error;
1078         end if;
1079 
1080         if( l_trolin_tbl(i).header_id is not null
1081         and l_trolin_tbl(i).header_id <> FND_API.G_MISS_NUM ) then
1082         --inv_debug.message('check if the header_id exists');
1083             select count(*)
1084             into l_dummy
1085         from mtl_txn_request_headers
1086             where header_id = l_trolin_tbl(i).header_id
1087             and organization_id = l_trolin_tbl(i).organization_id;
1088             --inv_debug.message('l_dummy is ' || l_dummy);
1089                 if( l_dummy = 0 ) then
1090             --inv_debug.message('header id not found');
1091             FND_MESSAGE.SET_NAME('INV', 'INV_FIELD_INVALID');
1092             FND_MESSAGE.SET_TOKEN('ENTITY1', 'Header_Id');
1093             FND_MSG_PUB.ADD;
1094             raise fnd_api.g_exc_error;
1095         else
1096            l_trohdr_rec := inv_trohdr_util.query_row(p_header_id => l_trolin_tbl(i).header_id);
1097             end if;
1098         end if;
1102             FETCH get_move_order_type INTO l_move_order_type;
1099 
1100             /* Bug 4162173 Added the following to initate the Outbound for Third Party Integration */
1101             OPEN get_move_order_type(l_trolin_tbl(i).header_id);
1103             CLOSE get_move_order_type;
1104 
1105             IF (l_move_order_type = 3) AND
1106                (l_trolin_tbl(i).txn_source_line_id IS NOT NULL) THEN
1107                OPEN get_sales_order(l_trolin_tbl(i).txn_source_line_id);
1108                FETCH get_sales_order INTO l_order_number ,l_org_id;  -- 6689912
1109                CLOSE get_sales_order;
1110 
1111                GR_WF_UTIL_PUB.INITIATE_PROCESS_SALES_ORDER
1112                   (p_api_version         => 1.0,
1113                    p_init_msg_list       => p_init_msg_list,
1114                    p_commit              => p_commit,
1115                    p_sales_order_org_id  => l_org_id,  -- 6689912
1116                    p_orgn_id             => l_trolin_tbl(i).organization_id,
1117                    p_item_id             => l_trolin_tbl(i).inventory_item_id,
1118                    p_sales_order_no      => l_order_number,
1119                    x_return_status       => l_return_status,
1120                    x_error_code          => l_error_code,
1121                    x_msg_data            => l_msg_data);
1122 
1123                IF l_return_status <> 'S' THEN
1124                   WSH_Util_Core.PrintLn('Error occured on initiate the Outbound to Partner Application ' ||
1125                                         'with the following error message ' || l_msg_data);
1126                ELSE
1127                   --Jalaj Srivastava Bug 5695822
1128                   --table index used was l_index. should be i.
1129                   --table should be l_trolin_tbl instead of x_trolin_tbl
1130                   WSH_Util_Core.PrintLn('Successfully initiated the Outbound to Partner Application => ' ||
1131                                          l_trolin_tbl(i).inventory_item_id);
1132                END IF;
1133             END IF;
1134 
1135             -- Bug 5311250: null out TO_LOCATOR_ID if TO SUB has locator control
1136             -- set to item level, and item is not locator controlled
1137             IF (l_move_order_type = 3) THEN
1138                OPEN get_sub_loc_ctrl (l_trolin_tbl(i).organization_id
1139                                      ,l_trolin_tbl(i).to_subinventory_code);
1140                FETCH get_sub_loc_ctrl INTO l_sub_loc_ctrl;
1141                CLOSE get_sub_loc_ctrl;
1142                IF l_sub_loc_ctrl = 5 THEN
1143                   OPEN get_item_loc_ctrl (l_trolin_tbl(i).organization_id
1144                                          ,l_trolin_tbl(i).inventory_item_id);
1145                   FETCH get_item_loc_ctrl INTO l_item_loc_ctrl;
1146                   CLOSE get_item_loc_ctrl;
1147                   IF l_item_loc_ctrl = 1 THEN
1148                      l_trolin_tbl(i).to_locator_id := NULL;
1149                   END IF;
1150                END IF;
1151             END IF;
1152         end loop;
1153     end if;
1154 
1155     INV_Transfer_Order_PVT.Process_Transfer_Order
1156     (   p_api_version_number          => 1.0
1157     ,   p_init_msg_list               => p_init_msg_list
1158     ,   p_validation_level            => FND_API.G_VALID_LEVEL_FULL
1159     ,   p_commit                      => p_commit
1160     ,   x_return_status               => x_return_status
1161     ,   x_msg_count                   => x_msg_count
1162     ,   x_msg_data                    => x_msg_data
1163     ,   p_control_rec                 => l_control_rec
1164     ,   p_trohdr_rec                  => l_trohdr_rec
1165     ,   p_trohdr_val_rec              => l_trohdr_val_rec
1166     ,   p_trolin_tbl                  => l_trolin_tbl
1167     ,   p_trolin_val_tbl              => p_trolin_val_tbl
1168     ,   x_trohdr_rec                  => l_trohdr_rec
1169     ,   x_trolin_tbl                  => l_trolin_tbl_out
1170     );
1171 
1172     --  Load Id OUT parameters.
1173 
1174     --x_trohdr_rec                   := p_trohdr_rec;
1175     x_trolin_tbl                   := l_trolin_tbl_out;
1176 
1177     if( p_commit = FND_API.G_TRUE ) Then
1178     commit;
1179     end if;
1180     --  If p_return_values is TRUE then convert Ids to Values.
1181 
1182     IF FND_API.to_Boolean(p_return_values) THEN
1183         Id_To_Value
1184         (   p_trohdr_rec                  => l_trohdr_rec
1185         ,   p_trolin_tbl                  => p_trolin_tbl
1186         ,   x_trohdr_val_rec              => l_trohdr_val_rec
1187         ,   x_trolin_val_tbl              => x_trolin_val_tbl
1188         );
1189     END IF;
1190   END IF;
1191 EXCEPTION
1192 
1193     WHEN FND_API.G_EXC_ERROR THEN
1194     --inv_debug.message('returning error');
1195         x_return_status := FND_API.G_RET_STS_ERROR;
1196         --  Get message count and data
1197         FND_MSG_PUB.Count_And_Get
1198         (   p_count                       => x_msg_count
1199         ,   p_data                        => x_msg_data
1200         );
1201 
1202     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1203         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1204         --  Get message count and data
1205         FND_MSG_PUB.Count_And_Get
1206         (   p_count                       => x_msg_count
1207         ,   p_data                        => x_msg_data
1208         );
1209 
1210     WHEN OTHERS THEN
1214             FND_MSG_PUB.Add_Exc_Msg
1211         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1212         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1213         THEN
1215             (   G_PKG_NAME
1216             ,   'Process_Move_Order'
1217             );
1218         END IF;
1219         --  Get message count and data
1220         FND_MSG_PUB.Count_And_Get
1221         (   p_count                       => x_msg_count
1222         ,   p_data                        => x_msg_data
1223         );
1224 END Create_Move_Order_Lines;
1225 
1226 --  Start of Comments
1227 --  API name    Process_Move_Order
1228 --  Type        Public
1229 --  Function
1230 --
1231 --  Pre-reqs
1232 --
1233 --  Parameters
1234 --
1235 --  Version     Current version = 1.0
1236 --              Initial version = 1.0
1237 --
1238 --  Notes
1239 --
1240 --  End of Comments
1241 
1242 PROCEDURE Process_Move_Order
1243 (   p_api_version_number            IN  NUMBER
1244 ,   p_init_msg_list                 IN  VARCHAR2 := FND_API.G_FALSE
1245 ,   p_return_values                 IN  VARCHAR2 := FND_API.G_FALSE
1246 ,   p_commit                        IN  VARCHAR2 := FND_API.G_FALSE
1247 ,   x_return_status                 OUT NOCOPY VARCHAR2
1248 ,   x_msg_count                     OUT NOCOPY NUMBER
1249 ,   x_msg_data                      OUT NOCOPY VARCHAR2
1250 ,   p_trohdr_rec                    IN  Trohdr_Rec_Type     := G_MISS_TROHDR_REC
1251 ,   p_trohdr_val_rec                IN  Trohdr_Val_Rec_Type := G_MISS_TROHDR_VAL_REC
1252 ,   p_trolin_tbl                    IN  Trolin_Tbl_Type     := G_MISS_TROLIN_TBL
1253 ,   p_trolin_val_tbl                IN  Trolin_Val_Tbl_Type := G_MISS_TROLIN_VAL_TBL
1254 ,   x_trohdr_rec                    IN OUT NOCOPY Trohdr_Rec_Type
1255 ,   x_trohdr_val_rec                IN OUT NOCOPY Trohdr_Val_Rec_Type
1256 ,   x_trolin_tbl                    IN OUT NOCOPY Trolin_Tbl_Type
1257 ,   x_trolin_val_tbl                IN OUT NOCOPY Trolin_Val_Tbl_Type
1258 )
1259 IS
1260 l_api_version_number          CONSTANT NUMBER := 1.0;
1261 l_api_name                    CONSTANT VARCHAR2(30):= 'Process_Move_Order';
1262 l_control_rec                 INV_GLOBALS.Control_Rec_Type;
1263 l_return_status               VARCHAR2(1);
1264 l_trohdr_rec                  Trohdr_Rec_Type;
1265 l_trolin_tbl                  Trolin_Tbl_Type;
1266     l_debug number := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
1267 BEGIN
1268 
1269     --  Standard call to check for call compatibility
1270 
1271     IF NOT FND_API.Compatible_API_Call
1272            (   l_api_version_number
1273            ,   p_api_version_number
1274            ,   l_api_name
1275            ,   G_PKG_NAME
1276            )
1277     THEN
1278         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1279     END IF;
1280 
1281     l_control_Rec.process_entity := INV_GLOBALS.G_ENTITY_ALL;
1282 /*
1283     --  Perform Value to Id conversion
1284     Value_To_Id
1285     (   x_return_status               => l_return_status
1286     ,   p_trohdr_rec                  => p_trohdr_rec
1287     ,   p_trohdr_val_rec              => p_trohdr_val_rec
1288     ,   p_trolin_tbl                  => p_trolin_tbl
1289     ,   p_trolin_val_tbl              => p_trolin_val_tbl
1290     ,   x_trohdr_rec                  => l_trohdr_rec
1291     ,   x_trolin_tbl                  => l_trolin_tbl
1292     );
1293 
1294     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1295         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1296     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1297         RAISE FND_API.G_EXC_ERROR;
1298     END IF;
1299 */
1300 
1301     --  Call INV_Transfer_Order_PVT.Process_Transfer_Order
1302 
1303     INV_Transfer_Order_PVT.Process_Transfer_Order
1304     (   p_api_version_number          => 1.0
1305     ,   p_init_msg_list               => p_init_msg_list
1306     ,   p_validation_level            => FND_API.G_VALID_LEVEL_FULL
1307     ,   p_commit                      => p_commit
1308     ,   x_return_status               => x_return_status
1309     ,   x_msg_count                   => x_msg_count
1310     ,   x_msg_data                    => x_msg_data
1311     ,   p_control_rec                 => l_control_rec
1312     ,   p_trohdr_rec                  => p_trohdr_rec
1313     ,   p_trohdr_val_rec              => p_trohdr_val_rec
1314     ,   p_trolin_tbl                  => p_trolin_tbl
1315     ,   p_trolin_val_tbl              => p_trolin_val_tbl
1316     ,   x_trohdr_rec                  => l_trohdr_rec
1317     ,   x_trolin_tbl                  => l_trolin_tbl
1318     );
1319 
1320     --  Load Id OUT parameters.
1321 
1322     x_trohdr_rec                   := l_trohdr_rec;
1323     x_trolin_tbl                   := l_trolin_tbl;
1324 
1325     if p_commit = FND_API.G_TRUE then
1326     commit;
1327     end if;
1328     --  If p_return_values is TRUE then convert Ids to Values.
1329 
1330     IF FND_API.to_Boolean(p_return_values) THEN
1331         Id_To_Value
1332         (   p_trohdr_rec                  => p_trohdr_rec
1333         ,   p_trolin_tbl                  => p_trolin_tbl
1334         ,   x_trohdr_val_rec              => x_trohdr_val_rec
1335         ,   x_trolin_val_tbl              => x_trolin_val_tbl
1336         );
1337     END IF;
1338 
1339 EXCEPTION
1343         FND_MSG_PUB.Count_And_Get
1340     WHEN FND_API.G_EXC_ERROR THEN
1341         x_return_status := FND_API.G_RET_STS_ERROR;
1342         --  Get message count and data
1344         (   p_count                       => x_msg_count
1345         ,   p_data                        => x_msg_data
1346         );
1347     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1348         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1349         --  Get message count and data
1350         FND_MSG_PUB.Count_And_Get
1351         (   p_count                       => x_msg_count
1352         ,   p_data                        => x_msg_data
1353         );
1354     WHEN OTHERS THEN
1355         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1356         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1357         THEN
1358             FND_MSG_PUB.Add_Exc_Msg
1359             (   G_PKG_NAME
1360             ,   'Process_Move_Order'
1361             );
1362         END IF;
1363         --  Get message count and data
1364         FND_MSG_PUB.Count_And_Get
1365         (   p_count                       => x_msg_count
1366         ,   p_data                        => x_msg_data
1367         );
1368 END Process_Move_Order;
1369 
1370 --  Start of Comments
1371 --  API name    Lock_Move_Order
1372 --  Type        Public
1373 --  Function
1374 --
1375 --  Pre-reqs
1376 --
1377 --  Parameters
1378 --
1379 --  Version     Current version = 1.0
1380 --              Initial version = 1.0
1381 --
1382 --  Notes
1383 --
1384 --  End of Comments
1385 
1386 PROCEDURE Lock_Move_Order
1387 (   p_api_version_number            IN  NUMBER
1388 ,   p_init_msg_list                 IN  VARCHAR2 := FND_API.G_FALSE
1389 ,   p_return_values                 IN  VARCHAR2 := FND_API.G_FALSE
1390 ,   x_return_status                 OUT NOCOPY VARCHAR2
1391 ,   x_msg_count                     OUT NOCOPY NUMBER
1392 ,   x_msg_data                      OUT NOCOPY VARCHAR2
1393 ,   p_trohdr_rec                    IN  Trohdr_Rec_Type :=
1394                                         G_MISS_TROHDR_REC
1395 ,   p_trohdr_val_rec                IN  Trohdr_Val_Rec_Type :=
1396                                         G_MISS_TROHDR_VAL_REC
1397 ,   p_trolin_tbl                    IN  Trolin_Tbl_Type :=
1398                                         G_MISS_TROLIN_TBL
1399 ,   p_trolin_val_tbl                IN  Trolin_Val_Tbl_Type :=
1400                                         G_MISS_TROLIN_VAL_TBL
1401 ,   x_trohdr_rec                    IN OUT NOCOPY Trohdr_Rec_Type
1402 ,   x_trohdr_val_rec                IN OUT NOCOPY Trohdr_Val_Rec_Type
1403 ,   x_trolin_tbl                    IN OUT NOCOPY Trolin_Tbl_Type
1404 ,   x_trolin_val_tbl                IN OUT NOCOPY Trolin_Val_Tbl_Type
1405 )
1406 IS
1407 l_api_version_number          CONSTANT NUMBER := 1.0;
1408 l_api_name                    CONSTANT VARCHAR2(30):= 'Lock_Move_Order';
1409 l_return_status               VARCHAR2(1);
1410 l_trohdr_rec                  Trohdr_Rec_Type;
1411 l_trolin_tbl                  Trolin_Tbl_Type;
1412     l_debug number := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
1413 BEGIN
1414 
1415     --  Standard call to check for call compatibility
1416 
1417     IF NOT FND_API.Compatible_API_Call
1418            (   l_api_version_number
1419            ,   p_api_version_number
1420            ,   l_api_name
1421            ,   G_PKG_NAME
1422            )
1423     THEN
1424         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1425     END IF;
1426 
1427     --  Perform Value to Id conversion
1428 
1429     Value_To_Id
1430     (   x_return_status               => l_return_status
1431     ,   p_trohdr_rec                  => p_trohdr_rec
1432     ,   p_trohdr_val_rec              => p_trohdr_val_rec
1433     ,   p_trolin_tbl                  => p_trolin_tbl
1434     ,   p_trolin_val_tbl              => p_trolin_val_tbl
1435     ,   x_trohdr_rec                  => l_trohdr_rec
1436     ,   x_trolin_tbl                  => l_trolin_tbl
1437     );
1438 
1439     IF l_return_status = FND_API.G_RET_STS_UNEXP_ERROR THEN
1440         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1441     ELSIF l_return_status = FND_API.G_RET_STS_ERROR THEN
1442         RAISE FND_API.G_EXC_ERROR;
1443     END IF;
1444 
1445 
1446     --  Call INV_Transfer_Order_PVT.Lock_Transfer_Order
1447 
1448     INV_Transfer_Order_PVT.Lock_Transfer_Order
1449     (   p_api_version_number          => 1.0
1450     ,   p_init_msg_list               => p_init_msg_list
1451     ,   x_return_status               => x_return_status
1452     ,   x_msg_count                   => x_msg_count
1453     ,   x_msg_data                    => x_msg_data
1454     ,   p_trohdr_rec                  => l_trohdr_rec
1455     ,   p_trolin_tbl                  => l_trolin_tbl
1456     ,   x_trohdr_rec                  => l_trohdr_rec
1457     ,   x_trolin_tbl                  => l_trolin_tbl
1458     );
1459 
1460     --  Load Id OUT parameters.
1461 
1462     x_trohdr_rec                   := l_trohdr_rec;
1463     x_trolin_tbl                   := l_trolin_tbl;
1464 
1465     --  If p_return_values is TRUE then convert Ids to Values.
1466 
1467     IF FND_API.to_Boolean(p_return_values) THEN
1468 
1469         Id_To_Value
1470         (   p_trohdr_rec                  => l_trohdr_rec
1471         ,   p_trolin_tbl                  => l_trolin_tbl
1472         ,   x_trohdr_val_rec              => x_trohdr_val_rec
1473         ,   x_trolin_val_tbl              => x_trolin_val_tbl
1474         );
1475 
1476     END IF;
1477 
1478 EXCEPTION
1479 
1480     WHEN FND_API.G_EXC_ERROR THEN
1481 
1482         x_return_status := FND_API.G_RET_STS_ERROR;
1483 
1484         --  Get message count and data
1485 
1486         FND_MSG_PUB.Count_And_Get
1487         (   p_count                       => x_msg_count
1488         ,   p_data                        => x_msg_data
1489         );
1490 
1491     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1492 
1493         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1494 
1495         --  Get message count and data
1496 
1497         FND_MSG_PUB.Count_And_Get
1498         (   p_count                       => x_msg_count
1499         ,   p_data                        => x_msg_data
1500         );
1501 
1502     WHEN OTHERS THEN
1503 
1504         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1505 
1506         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1507         THEN
1508             FND_MSG_PUB.Add_Exc_Msg
1509             (   G_PKG_NAME
1510             ,   'Lock_Move_Order'
1511             );
1512         END IF;
1513 
1514         --  Get message count and data
1515 
1516         FND_MSG_PUB.Count_And_Get
1517         (   p_count                       => x_msg_count
1518         ,   p_data                        => x_msg_data
1519         );
1520 
1521 END Lock_Move_Order;
1522 
1523 --  Start of Comments
1524 --  API name    Get_Move_Order
1525 --  Type        Public
1526 --  Function
1527 --
1528 --  Pre-reqs
1529 --
1530 --  Parameters
1531 --
1532 --  Version     Current version = 1.0
1533 --              Initial version = 1.0
1534 --
1535 --  Notes
1536 --
1537 --  End of Comments
1538 
1539 PROCEDURE Get_Move_Order
1540 (   p_api_version_number            IN  NUMBER
1541 ,   p_init_msg_list                 IN  VARCHAR2 := FND_API.G_FALSE
1542 ,   p_return_values                 IN  VARCHAR2 := FND_API.G_FALSE
1543 ,   x_return_status                 OUT NOCOPY VARCHAR2
1544 ,   x_msg_count                     OUT NOCOPY NUMBER
1545 ,   x_msg_data                      OUT NOCOPY VARCHAR2
1546 ,   p_header_id                     IN  NUMBER :=
1547                                         FND_API.G_MISS_NUM
1548 ,   p_header                        IN  VARCHAR2 :=
1549                                         FND_API.G_MISS_CHAR
1550 ,   x_trohdr_rec                    OUT NOCOPY Trohdr_Rec_Type
1551 ,   x_trohdr_val_rec                OUT NOCOPY Trohdr_Val_Rec_Type
1552 ,   x_trolin_tbl                    OUT NOCOPY Trolin_Tbl_Type
1553 ,   x_trolin_val_tbl                OUT NOCOPY Trolin_Val_Tbl_Type
1554 )
1555 IS
1556 l_api_version_number          CONSTANT NUMBER := 1.0;
1557 l_api_name                    CONSTANT VARCHAR2(30):= 'Get_Move_Order';
1558 l_header_id                   NUMBER := p_header_id;
1559 l_trohdr_rec                  INV_Move_Order_PUB.Trohdr_Rec_Type;
1560 l_trolin_tbl                  INV_Move_Order_PUB.Trolin_Tbl_Type;
1561     l_debug number := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
1562 BEGIN
1563 
1564     --  Standard call to check for call compatibility
1565 
1566     IF NOT FND_API.Compatible_API_Call
1570            ,   G_PKG_NAME
1567            (   l_api_version_number
1568            ,   p_api_version_number
1569            ,   l_api_name
1571            )
1572     THEN
1573         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1574     END IF;
1575 
1576     --  Standard check for Val/ID conversion
1577 
1578     IF  p_header = FND_API.G_MISS_CHAR
1579     THEN
1580 
1581         l_header_id := p_header_id;
1582 
1583     ELSIF p_header_id <> FND_API.G_MISS_NUM THEN
1584 
1585         l_header_id := p_header_id;
1586 
1587         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_SUCCESS)
1588         THEN
1589 
1590             FND_MESSAGE.SET_NAME('INV','FND_BOTH_VAL_AND_ID_EXIST');
1591             FND_MESSAGE.SET_TOKEN('ATTRIBUTE','header');
1592             FND_MSG_PUB.Add;
1593 
1594         END IF;
1595 
1596     ELSE
1597 
1598         --  Convert Value to Id
1599 
1600         l_header_id := INV_Value_To_Id.header
1601         (   p_header                      => p_header
1602         );
1603 
1604         IF l_header_id = FND_API.G_MISS_NUM THEN
1605             IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_ERROR)
1606             THEN
1607 
1608                 FND_MESSAGE.SET_NAME('INV','Invalid Business Object Value');
1609                 FND_MESSAGE.SET_TOKEN('ATTRIBUTE','header');
1610                 FND_MSG_PUB.Add;
1611 
1612             END IF;
1613         END IF;
1614 
1615         RAISE FND_API.G_EXC_ERROR;
1616 
1617     END IF;
1618 
1619 
1620     --  Call INV_Transfer_Order_PVT.Get_Transfer_Order
1621 
1622     INV_Transfer_Order_PVT.Get_Transfer_Order
1623     (   p_api_version_number          => 1.0
1624     ,   p_init_msg_list               => p_init_msg_list
1625     ,   x_return_status               => x_return_status
1626     ,   x_msg_count                   => x_msg_count
1627     ,   x_msg_data                    => x_msg_data
1628     ,   p_header_id                   => l_header_id
1629     ,   x_trohdr_rec                  => l_trohdr_rec
1630     ,   x_trolin_tbl                  => l_trolin_tbl
1631     );
1632 
1633     --  Load Id OUT parameters.
1634 
1635     x_trohdr_rec                   := l_trohdr_rec;
1636     x_trolin_tbl                   := l_trolin_tbl;
1637 
1638     --  If p_return_values is TRUE then convert Ids to Values.
1639 
1640     IF FND_API.TO_BOOLEAN(p_return_values) THEN
1641 
1642         Id_To_Value
1643         (   p_trohdr_rec                  => l_trohdr_rec
1644         ,   p_trolin_tbl                  => l_trolin_tbl
1645         ,   x_trohdr_val_rec              => x_trohdr_val_rec
1646         ,   x_trolin_val_tbl              => x_trolin_val_tbl
1647         );
1648 
1649     END IF;
1650 
1651     --  Set return status
1652 
1653     x_return_status := FND_API.G_RET_STS_SUCCESS;
1654 
1655     --  Get message count and data
1656 
1657     FND_MSG_PUB.Count_And_Get
1658     (   p_count                       => x_msg_count
1659     ,   p_data                        => x_msg_data
1660     );
1661 
1662 
1663 EXCEPTION
1664 
1665     WHEN FND_API.G_EXC_ERROR THEN
1666 
1667         x_return_status := FND_API.G_RET_STS_ERROR;
1668 
1669         --  Get message count and data
1670 
1671         FND_MSG_PUB.Count_And_Get
1672         (   p_count                       => x_msg_count
1673         ,   p_data                        => x_msg_data
1674         );
1675 
1676     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1677 
1678         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1679 
1680         --  Get message count and data
1681 
1682         FND_MSG_PUB.Count_And_Get
1683         (   p_count                       => x_msg_count
1684         ,   p_data                        => x_msg_data
1685         );
1686 
1687     WHEN OTHERS THEN
1688 
1689         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1690 
1691         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1692         THEN
1693             FND_MSG_PUB.Add_Exc_Msg
1694             (   G_PKG_NAME
1695             ,   'Get_Move_Order'
1696             );
1697         END IF;
1698 
1699         --  Get message count and data
1700 
1701         FND_MSG_PUB.Count_And_Get
1702         (   p_count                       => x_msg_count
1703         ,   p_data                        => x_msg_data
1704         );
1705 
1706 END Get_Move_Order;
1707 
1708 --  Procedure Id_To_Value
1709 
1710 PROCEDURE Id_To_Value
1711 (   p_trohdr_rec                    IN  Trohdr_Rec_Type
1712 ,   p_trolin_tbl                    IN  Trolin_Tbl_Type
1713 ,   x_trohdr_val_rec                OUT NOCOPY Trohdr_Val_Rec_Type
1714 ,   x_trolin_val_tbl                OUT NOCOPY Trolin_Val_Tbl_Type
1715 )
1716 IS
1717     l_debug number := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
1718 BEGIN
1719 
1720     --  Convert trohdr
1721 
1722     x_trohdr_val_rec := INV_Trohdr_Util.Get_Values(p_trohdr_rec);
1723 
1724     --  Convert trolin
1725 
1726     FOR I IN 1..p_trolin_tbl.COUNT LOOP
1727         x_trolin_val_tbl(I) :=
1728             INV_Trolin_Util.Get_Values(p_trolin_tbl(I));
1729     END LOOP;
1730 
1731 EXCEPTION
1732 
1733     WHEN OTHERS THEN
1734 
1735         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1736         THEN
1737             FND_MSG_PUB.Add_Exc_Msg
1738             (   G_PKG_NAME
1739             ,   'Id_To_Value'
1740             );
1741         END IF;
1742 
1743         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1744 
1745 END Id_To_Value;
1746 
1747 --  Procedure Value_To_Id
1748 
1749 PROCEDURE Value_To_Id
1750 (   x_return_status                 OUT NOCOPY VARCHAR2
1751 ,   p_trohdr_rec                    IN  Trohdr_Rec_Type
1752 ,   p_trohdr_val_rec                IN  Trohdr_Val_Rec_Type
1753 ,   p_trolin_tbl                    IN  Trolin_Tbl_Type
1754 ,   p_trolin_val_tbl                IN  Trolin_Val_Tbl_Type
1755 ,   x_trohdr_rec                    IN OUT NOCOPY Trohdr_Rec_Type
1756 ,   x_trolin_tbl                    IN OUT NOCOPY Trolin_Tbl_Type
1757 )
1758 IS
1759 l_trohdr_rec                  Trohdr_Rec_Type;
1760 l_trolin_rec                  Trolin_Rec_Type;
1761 l_index                       BINARY_INTEGER;
1762     l_debug number := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
1763 BEGIN
1764 
1765     --  Init x_return_status.
1766 
1767     x_return_status := FND_API.G_RET_STS_SUCCESS;
1768 
1769     --  Convert trohdr
1770 
1771     l_trohdr_rec := INV_Trohdr_Util.Get_Ids
1772     (   p_trohdr_rec                  => p_trohdr_rec
1773     ,   p_trohdr_val_rec              => p_trohdr_val_rec
1774     );
1775 
1776     x_trohdr_rec                   := l_trohdr_rec;
1777 
1778     IF l_trohdr_rec.return_status = FND_API.G_RET_STS_ERROR THEN
1779         x_return_status := FND_API.G_RET_STS_ERROR;
1780     END IF;
1781 
1782     --  Convert trolin
1783 
1784     x_trolin_tbl := p_trolin_tbl;
1785 
1786     l_index := p_trolin_val_tbl.FIRST;
1787 
1788     WHILE l_index IS NOT NULL LOOP
1789 
1790         l_trolin_rec := INV_Trolin_Util.Get_Ids
1791         (   p_trolin_rec                  => p_trolin_tbl(l_index)
1792         ,   p_trolin_val_rec              => p_trolin_val_tbl(l_index)
1793         );
1794 
1795         x_trolin_tbl(l_index)          := l_trolin_rec;
1796 
1797         IF l_trolin_rec.return_status = FND_API.G_RET_STS_ERROR THEN
1798             x_return_status := FND_API.G_RET_STS_ERROR;
1799         END IF;
1800 
1801         l_index := p_trolin_val_tbl.NEXT(l_index);
1802 
1803     END LOOP;
1804 
1805 EXCEPTION
1806 
1807     WHEN OTHERS THEN
1808 
1809         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1810         THEN
1811             FND_MSG_PUB.Add_Exc_Msg
1812             (   G_PKG_NAME
1813             ,   'Value_To_Id'
1814             );
1815         END IF;
1816 
1817         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1818 
1819 END Value_To_Id;
1820 
1821 PROCEDURE Process_Move_Order_Line
1822 (
1823     p_api_version_number        IN NUMBER
1824 ,   p_init_msg_list             IN VARCHAR2 := FND_API.G_FALSE
1825 ,   p_return_values             IN VARCHAR2 := FND_API.G_FALSE
1826 ,   p_commit                    IN VARCHAR2 := FND_API.G_TRUE
1827 ,   x_return_status             OUT NOCOPY VARCHAR2
1828 ,   x_msg_count                 OUT NOCOPY NUMBER
1829 ,   x_msg_data                  OUT NOCOPY VARCHAR2
1830 ,   p_trolin_tbl                IN Trolin_Tbl_Type
1831 ,   p_trolin_old_tbl            IN Trolin_Tbl_Type
1832 ,   x_trolin_tbl                IN OUT NOCOPY Trolin_Tbl_Type
1833 ) IS
1834 l_api_version_number          CONSTANT NUMBER := 1.0;
1835 l_api_name                    CONSTANT VARCHAR2(30):= 'Update_Move_Order_line';
1836 l_control_rec                 INV_GLOBALS.Control_Rec_Type;
1837 l_return_status               VARCHAR2(1);
1838 l_trohdr_rec                  Trohdr_Rec_Type := G_MISS_TROHDR_REC;
1839 l_trohdr_val_rec              Trohdr_Val_Rec_Type := G_MISS_TROHDR_VAL_REC;
1840 l_trolin_tbl                  Trolin_Tbl_Type := p_trolin_tbl;
1841 l_trolin_val_tbl              Trolin_Val_Tbl_Type := G_MISS_TROLIN_VAL_TBL;
1842     l_debug number := NVL(FND_PROFILE.VALUE('INV_DEBUG_TRACE'),0);
1843 BEGIN
1844 
1845     --  Standard call to check for call compatibility
1846     IF NOT FND_API.Compatible_API_Call
1847            (   l_api_version_number
1848            ,   p_api_version_number
1849            ,   l_api_name
1850            ,   G_PKG_NAME
1851            )
1852     THEN
1853         RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1854     END IF;
1855 
1856     l_control_rec.controlled_operation := TRUE;
1857     l_control_Rec.validate_entity := TRUE;
1858     l_control_Rec.process_entity := INV_GLOBALS.G_ENTITY_TROLIN;
1859     l_control_rec.write_to_db := TRUE;
1860     l_control_Rec.default_attributes := FALSE;
1861     l_control_Rec.change_attributes := FALSE;
1862     l_control_rec.process := FALSE;
1863 
1864     --  Call INV_Transfer_Order_PVT.Process_Transfer_Order
1865     -- inv_debug.message('calling inv_transfer_order_pvt.process_transfer_order');
1866     -- inv_debug.message('l_trolin_tbl count is ' || p_trolin_tbl.COUNT);
1867     /*for l_count in 1..p_trolin_tbl.COUNT LOOP
1868     -- inv_debug.message('l_trolin_tbl.line_id is ' || p_trolin_tbl(l_count).line_id);
1869         -- inv_debug.message('l_trolin_tbl.operation is ' || p_trolin_tbl(l_count).operation);
1870     end loop; */
1871     INV_Transfer_Order_PVT.Process_Transfer_Order
1872     (   p_api_version_number          => 1.0
1873     ,   p_init_msg_list               => p_init_msg_list
1874     ,   p_commit                      => p_commit
1875     ,   p_validation_level            => FND_API.G_VALID_LEVEL_FULL
1876     ,   p_control_rec                 => l_control_rec
1877     ,   x_return_status               => x_return_status
1878     ,   x_msg_count                   => x_msg_count
1879     ,   x_msg_data                    => x_msg_data
1880     ,   p_trolin_tbl                  => p_trolin_tbl
1881     ,   p_trolin_val_tbl              => l_trolin_val_tbl
1882     ,   x_trohdr_rec                  => l_trohdr_rec
1883     ,   x_trolin_tbl                  => l_trolin_tbl
1884     );
1885 
1886     --  Load Id OUT parameters.
1887 
1888     --x_trohdr_rec                   := p_trohdr_rec;
1889     x_trolin_tbl                   := l_trolin_tbl;
1890     if( p_commit = FND_API.G_TRUE ) then
1891     commit;
1892     end if;
1893     --  If p_return_values is TRUE then convert Ids to Values.
1894 
1895     IF FND_API.to_Boolean(p_return_values) THEN
1896 
1897         Id_To_Value
1898         (   p_trohdr_rec                  => l_trohdr_rec
1899         ,   p_trolin_tbl                  => l_trolin_tbl
1900         ,   x_trohdr_val_rec              => l_trohdr_val_rec
1901         ,   x_trolin_val_tbl              => l_trolin_val_tbl
1902         );
1903 
1904     END IF;
1905 
1906 EXCEPTION
1907 
1908     WHEN FND_API.G_EXC_ERROR THEN
1909 
1910         x_return_status := FND_API.G_RET_STS_ERROR;
1911 
1912         --  Get message count and data
1913 
1914         FND_MSG_PUB.Count_And_Get
1915         (   p_count                       => x_msg_count
1916         ,   p_data                        => x_msg_data
1917         );
1918 
1919     WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1920 
1921         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1922 
1923         --  Get message count and data
1924 
1925         FND_MSG_PUB.Count_And_Get
1926         (   p_count                       => x_msg_count
1927         ,   p_data                        => x_msg_data
1928         );
1929 
1930         FND_MSG_PUB.Count_And_Get
1931         (   p_count                       => x_msg_count
1932         ,   p_data                        => x_msg_data
1933         );
1934 
1935     WHEN OTHERS THEN
1936 
1937         x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1938 
1939         IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
1940         THEN
1941             FND_MSG_PUB.Add_Exc_Msg
1942             (   G_PKG_NAME
1943             ,   'Process_Move_Order'
1944             );
1945         END IF;
1946 
1947         --  Get message count and data
1948         FND_MSG_PUB.Count_And_Get
1949         (   p_count                       => x_msg_count
1950         ,   p_data                        => x_msg_data
1951         );
1952    END Process_Move_Order_Line;
1953 
1954  PROCEDURE stamp_cart_id ( p_validation_level IN NUMBER
1955             , p_carton_grouping_tbl IN inv_move_order_pub.num_tbl_type
1956             , p_move_order_line_tbl IN inv_move_order_pub.num_tbl_type
1957             ) IS
1958    BEGIN
1959     FORALL i in 1..p_move_order_line_tbl.count
1960       UPDATE mtl_txn_request_lines SET
1961        carton_grouping_id = p_carton_grouping_tbl(i)
1962       WHERE line_id = p_move_order_line_tbl(i);
1963   END stamp_cart_id;
1964 
1965 
1966 END INV_Move_Order_PUB;