DBA Data[Home] [Help]

PACKAGE BODY: APPS.WSH_CONTAINER_GRP

Source


1 PACKAGE BODY WSH_CONTAINER_GRP AS
2 /* $Header: WSHCOGPB.pls 120.7.12020000.2 2013/03/01 00:34:31 adagur ship $ */
3 
4   -- standard global constants
5   G_PKG_NAME CONSTANT VARCHAR2(30)    := 'WSH_CONTAINER_GRP';
6   p_message_type  CONSTANT VARCHAR2(1)  := 'E';
7 
8 
9 ------------------------------------------------------------------------------
10 -- Procedure: Create_Containers
11 --
12 -- Parameters:  1) container_item_id (key flex id)
13 --    2) container_item_name (concatinated name for container item)
14 --    3) container_item_seg (flex field seg array for item name)
15 --    4) organization_id - organization id for container
16 --    5) organization_code - organization code for container
17 --    6) name_prefix - container name prefix
18 --    7) name_suffix - container name suffix
19 --    8) base_number - starting number for numeric portion of name
20 --    9) num_digits - precision for number of digits
21 --    10) quantity - number of containers
22 --    11) container_name - container name if creating 1 container
23 --    12) table of container ids - out table of ids
24 --    13) other standard parameters
25 --
26 -- Description: This procedure takes in a container item id or container item
27 -- name and other necessary parameters to create one or more containers and
28 -- creates the required containers. It returns a table of container instance
29 -- ids (delivery detail ids) along with the standard out parameters.
30 --
31 -- THIS PROCEDURE SHOULD NOT BE USED ANYMORE, IT IS USED ONLY FOR BACKWARD
32 -- COMPATIBILITY.
33 --
34 ------------------------------------------------------------------------------
35 
36 PROCEDURE Create_Containers (
37   -- Standard parameters
38   p_api_version   IN  NUMBER,
39   p_init_msg_list   IN  VARCHAR2  DEFAULT FND_API.G_FALSE,
40   p_commit    IN  VARCHAR2  DEFAULT FND_API.G_FALSE,
41   p_validation_level  IN  NUMBER    DEFAULT FND_API.G_VALID_LEVEL_FULL,
42   x_return_status     OUT NOCOPY  VARCHAR2,
43   x_msg_count     OUT NOCOPY  NUMBER,
44   x_msg_data    OUT NOCOPY  VARCHAR2,
45 
46   -- program specific parameters
47   p_container_item_id IN  NUMBER,
48   p_container_item_name   IN  VARCHAR2,
49   p_container_item_seg  IN  FND_FLEX_EXT.SegmentArray,
50   p_organization_id IN  NUMBER,
51   p_organization_code IN  VARCHAR2,
52   p_name_prefix   IN  VARCHAR2,
53   p_name_suffix   IN  VARCHAR2,
54   p_base_number   IN  NUMBER,
55   p_num_digits    IN  NUMBER,
56   p_quantity    IN  NUMBER,
57   p_container_name  IN  VARCHAR2,
58         p_lpn_ids               IN      WSH_UTIL_CORE.ID_TAB_TYPE,
59 
60   -- program specific out parameters
61   x_container_ids   OUT NOCOPY  WSH_UTIL_CORE.ID_TAB_TYPE,
62         p_caller                IN  VARCHAR2  -- Has default 'WMS' in spec
63 ) IS
64 
65 
66 -- Standard call to check for call compatibility
67 l_api_version   CONSTANT  NUMBER    := 1.0;
68 l_api_name    CONSTANT  VARCHAR2(30):= 'Create_Containers';
69 
70 l_return_status   VARCHAR2(30)  := NULL;
71 l_cont_item_id    NUMBER    := NULL;
72 l_cont_item_seg   FND_FLEX_EXT.SegmentArray;
73 l_cont_item_name  VARCHAR2(30)  := NULL;
74 l_cont_name   VARCHAR2(30)  := NULL;
75 
76 l_cont_inst_tab   WSH_UTIL_CORE.ID_TAB_TYPE;
77 l_msg_summary     VARCHAR2(2000)  := NULL;
78 l_msg_details     VARCHAR2(4000)  := NULL;
79 
80 l_organization_id NUMBER    := NULL;
81 l_organization_code VARCHAR2(240) := NULL;
82 
83 -- Bug fix 2657429
84 l_verify_org_level     NUMBER;
85 l_verify_cont_item     NUMBER;
86 -- Bug fix 2657429
87 
88 /*  wms changes begin   */
89 wms_return_status       VARCHAR2(10);
90 wms_msg_count           NUMBER;
91 wms_msg_data            VARCHAR2(2000);
92 wms_organization_id     NUMBER;
93 wms_enabled             BOOLEAN;
94 /* -- wms changes end  */
95 
96 --lpn conv
97 l_detail_info_tab       WSH_GLBL_VAR_STRCT_GRP.delivery_details_Attr_tbl_Type;
98 l_IN_rec                WSH_GLBL_VAR_STRCT_GRP.detailInRecType;
99 l_OUT_rec               WSH_GLBL_VAR_STRCT_GRP.detailOutRecType;
100 
101 l_msg_count           NUMBER;
102 l_msg_data            VARCHAR2(2000);
103 
104 WSH_NO_INV_ITEM     EXCEPTION;
105 WSH_INVALID_QTY     EXCEPTION;
106 WSH_FAIL_CONT_CREATION    EXCEPTION;
107 WSH_LPN_COUNT_INVALID           EXCEPTION;
108 
109 --
110 l_debug_on BOOLEAN;
111 --
112 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CREATE_CONTAINERS';
113 --
114 BEGIN
115 
116   -- Standard begin of API savepoint
117   --
118   -- Debug Statements
119   --
120   --
121   l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
122   --
123   IF l_debug_on IS NULL
124   THEN
125       l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
126   END IF;
127   --
128   IF l_debug_on THEN
129       WSH_DEBUG_SV.push(l_module_name);
130       --
131       WSH_DEBUG_SV.log(l_module_name,'P_API_VERSION',P_API_VERSION);
132       WSH_DEBUG_SV.log(l_module_name,'P_INIT_MSG_LIST',P_INIT_MSG_LIST);
133       WSH_DEBUG_SV.log(l_module_name,'P_COMMIT',P_COMMIT);
134       WSH_DEBUG_SV.log(l_module_name,'P_VALIDATION_LEVEL',P_VALIDATION_LEVEL);
135       WSH_DEBUG_SV.log(l_module_name,'P_CONTAINER_ITEM_ID',P_CONTAINER_ITEM_ID);
136       WSH_DEBUG_SV.log(l_module_name,'P_CONTAINER_ITEM_NAME',P_CONTAINER_ITEM_NAME);
137       WSH_DEBUG_SV.log(l_module_name,'P_ORGANIZATION_ID',P_ORGANIZATION_ID);
138       WSH_DEBUG_SV.log(l_module_name,'P_ORGANIZATION_CODE',P_ORGANIZATION_CODE);
139       WSH_DEBUG_SV.log(l_module_name,'P_NAME_PREFIX',P_NAME_PREFIX);
140       WSH_DEBUG_SV.log(l_module_name,'P_NAME_SUFFIX',P_NAME_SUFFIX);
141       WSH_DEBUG_SV.log(l_module_name,'P_BASE_NUMBER',P_BASE_NUMBER);
142       WSH_DEBUG_SV.log(l_module_name,'P_NUM_DIGITS',P_NUM_DIGITS);
143       WSH_DEBUG_SV.log(l_module_name,'P_QUANTITY',P_QUANTITY);
144       WSH_DEBUG_SV.log(l_module_name,'P_CONTAINER_NAME',P_CONTAINER_NAME);
145   END IF;
146   --
147   SAVEPOINT Create_Containers_SP_GRP;
148 
149   IF NOT FND_API.compatible_api_call (
150         l_api_version,
151         p_api_version,
152         l_api_name,
153         G_PKG_NAME) THEN
154     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
155   END IF;
156 
157   -- Check p_init_msg_list
158   IF FND_API.to_boolean(p_init_msg_list) THEN
159     FND_MSG_PUB.initialize;
160   END IF;
161 
162   x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
163 
164    --lpn conv
165    -- validate quantity
166   IF NVL(p_quantity,0) <> 1  THEN
167         RAISE WSH_INVALID_QTY;
168   END IF;
169 
170   IF p_caller NOT LIKE 'WMS%' THEN
171      IF l_debug_on THEN
172          WSH_DEBUG_SV.log(l_module_name,'Invalid caller',p_caller);
173      END IF;
174      RAISE FND_API.G_EXC_ERROR;
175   END IF;
176 
177   IF p_lpn_ids.COUNT = 0 THEN
178      IF l_debug_on THEN
179         wsh_debug_sv.logmsg(l_module_name,'lpn_id cannot be null');
180      END IF;
181      FND_MESSAGE.SET_NAME('WSH','WSH_REQUIRED_FIELD_NULL');
182      FND_MESSAGE.SET_TOKEN('FIELD_NAME','LPN_ID');
183      WSH_UTIL_CORE.Add_Message(WSH_UTIL_CORE.G_RET_STS_ERROR,l_module_name);
184      RAISE FND_API.G_EXC_ERROR;
185   ELSIF p_lpn_ids(1) = NULL THEN
186      FND_MESSAGE.SET_NAME('WSH','WSH_REQUIRED_FIELD_NULL');
187      FND_MESSAGE.SET_TOKEN('FIELD_NAME','LPN_ID');
188      WSH_UTIL_CORE.Add_Message(WSH_UTIL_CORE.G_RET_STS_ERROR,l_module_name);
189      RAISE FND_API.G_EXC_ERROR;
190   END IF;
191 
192    -- Bug fix 2657429
193    IF p_validation_level <> C_DELIVERY_DETAIL_CALL THEN
194       WSH_ACTIONS_LEVELS.set_validation_level (
195                                   p_entity   =>  'DLVB',
196                                   p_caller   =>  p_caller,
197                                   p_phase    =>  1,
198                                   p_action   => 'CREATE',
199                                   x_return_status => l_return_status);
200 
201    END IF;
202 
203       l_verify_org_level := WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_CONTAINER_ORG_LVL);
204       l_verify_cont_item := WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_CONT_ITEM_LVL);
205    -- Bug fix 2657429
206   -- validate the organization id and organization code
207 
208   l_organization_id := p_organization_id;
209   l_organization_code := p_organization_code;
210 
211       IF l_verify_org_level = 1 THEN
212   IF l_debug_on THEN
213       WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_VALIDATE.VALIDATE_ORG',WSH_DEBUG_SV.C_PROC_LEVEL);
214   END IF;
215   --
216   WSH_UTIL_VALIDATE.Validate_Org (l_organization_id,
217              l_organization_code,
218              x_return_status);
219            IF x_return_status <> wsh_util_core.g_ret_sts_success THEN
220               fnd_message.set_name('WSH', 'WSH_OI_INVALID_ORG');
221               wsh_util_core.add_message(wsh_util_core.g_ret_sts_error, l_module_name);
222               raise fnd_api.g_exc_error;
223            END IF;
224 
225       END IF;
226 
227   -- validate the key flex valaues (item id and item name)
228 
229   l_cont_item_id := p_container_item_id;
230   l_cont_item_seg := p_container_item_seg;
231   l_cont_item_name := p_container_item_name;
232      --
233     IF l_verify_cont_item = 1 THEN
234      /*  wms change:  Validate Item check is to be skipped if the Org. is WMS enabled */
235 
236      IF l_debug_on THEN
237          WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WMS_INSTALL.CHECK_INSTALL',WSH_DEBUG_SV.C_PROC_LEVEL);
238      END IF;
239 
240        wms_enabled := WMS_INSTALL.check_install(
241                            wms_return_status,
242                            wms_msg_count,
243                            wms_msg_data,
244                            l_organization_id);
245 
246      IF l_debug_on THEN
247         wsh_debug_sv.log(l_module_name, 'wms enabled', wms_enabled);
248      END IF;
249 
250      IF (wms_enabled = FALSE) THEN
251           IF (l_cont_item_id IS NULL
252              AND l_cont_item_name IS NULL
253              AND l_cont_item_seg.count = 0) then
254     fnd_message.set_name('WSH', 'WSH_CONT_INVALID_ITEM');
255     WSH_UTIL_CORE.ADD_MESSAGE(wsh_util_core.g_ret_sts_error, l_module_name);
256             RAISE WSH_NO_INV_ITEM;
257           ELSE
258       IF l_debug_on THEN
259           WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_VALIDATE.VALIDATE_ITEM',WSH_DEBUG_SV.C_PROC_LEVEL);
260       END IF;
261       --
262            WSH_UTIL_VALIDATE.Validate_Item
263               (p_inventory_item_id => l_cont_item_id,
264                p_inventory_item   => l_cont_item_name,
265                p_organization_id   => l_organization_id,
266                p_seg_array      => l_cont_item_seg,
267                x_return_status     => x_return_status,
268                p_item_type      => 'CONT_ITEM');
269 
270             IF x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS THEN
271     fnd_message.set_name('WSH', 'WSH_CONT_INVALID_ITEM');
272     WSH_UTIL_CORE.ADD_MESSAGE(wsh_util_core.g_ret_sts_error, l_module_name);
273               RAISE WSH_NO_INV_ITEM;
274             END IF;
275           END IF;
276       ELSE
277           fnd_message.set_name('WSH', 'WSH_INCORRECT_ORG');
278           fnd_message.set_token('ORG_CODE', l_organization_code);
279           wsh_util_core.add_message(wsh_util_core.g_ret_sts_error, l_module_name);
280           RAISE FND_API.G_EXC_ERROR;
281      END IF;  -- wms_enabled
282    END IF;
283 
284 
285       l_IN_rec.caller := p_caller;
286       l_IN_rec.action_code := 'CREATE';
287       l_IN_rec.quantity := 1;
288       l_detail_info_tab(1).organization_id := l_organization_id;
289       l_detail_info_tab(1).inventory_item_id := l_cont_item_id;
290       l_detail_info_tab(1).container_name  := p_container_name;
291       l_detail_info_tab(1).lpn_id  := p_lpn_ids(1);
292 
293       WSH_WMS_LPN_GRP.create_update_containers
294         ( p_api_version            => p_api_version,
295           p_init_msg_list          => p_init_msg_list,
296           p_commit                 => p_commit,
297           x_return_status          => l_return_status,
298           x_msg_count              => l_msg_count,
299           x_msg_data               => l_msg_data,
300           p_detail_info_tab        => l_detail_info_tab,
301           p_IN_rec                 => l_IN_rec,
302           x_OUT_rec                => l_OUT_rec
303         );
304   IF l_return_status NOT IN ( WSH_UTIL_CORE.G_RET_STS_SUCCESS,WSH_UTIL_CORE.G_RET_STS_WARNING)
305   THEN
306     RAISE WSH_FAIL_CONT_CREATION;
307   END IF;
308 
309   x_return_status := l_return_status;
310 
311   x_container_ids := l_OUT_rec.detail_ids;
312 
313 
314 
315   IF FND_API.TO_BOOLEAN(p_commit) THEN
316     -- dbms_output.put_line('commit');
317     COMMIT;
318   END IF;
319 
320         FND_MSG_PUB.Count_And_Get
321         ( p_count => x_msg_count
322         , p_data  => x_msg_data
323         , p_encoded => FND_API.G_FALSE
324         );
325 
326 
327      IF l_debug_on THEN
328         WSH_DEBUG_SV.pop(l_module_name);
329      END IF;
330 --
331  EXCEPTION
332         WHEN FND_API.G_EXC_ERROR THEN
333                 ROLLBACK TO Create_Containers_SP_GRP;
334                 x_return_status := FND_API.G_RET_STS_ERROR ;
335                 FND_MSG_PUB.Count_And_Get
336                   (
337                      p_count  => x_msg_count,
338                      p_data  =>  x_msg_data,
339                p_encoded => FND_API.G_FALSE
340                   );
341                   --
342               IF l_debug_on THEN
343                 WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_ERROR exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
344                 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_ERROR');
345               END IF;
346 
347   WHEN WSH_NO_INV_ITEM then
348                 rollback to Create_Containers_SP_GRP;
349     x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
350 
351                 FND_MSG_PUB.Count_And_Get
352                 ( p_count => x_msg_count
353                 , p_data  => x_msg_data
354                 , p_encoded => FND_API.G_FALSE
355                 );
356 
357 
358                IF l_debug_on THEN
359                   WSH_DEBUG_SV.logmsg(l_module_name,'WSH_NO_INV_ITEM exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
360                  WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_NO_INV_ITEM');
361               END IF;
362 --
363   WHEN WSH_INVALID_QTY then
364     rollback to Create_Containers_SP_GRP;
365     x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
366     fnd_message.set_name('WSH', 'WSH_CONT_INVALID_QTY');
367     WSH_UTIL_CORE.ADD_MESSAGE(x_return_status);
368 
369                 FND_MSG_PUB.Count_And_Get
370                 ( p_count => x_msg_count
371                 , p_data  => x_msg_data
372                 , p_encoded => FND_API.G_FALSE
373                 );
374 
375               IF l_debug_on THEN
376                  WSH_DEBUG_SV.logmsg(l_module_name,'WSH_INVALID_QTY exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
377                 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_INVALID_QTY');
378              END IF;
379 --
380   WHEN WSH_FAIL_CONT_CREATION then
381                 rollback to Create_Containers_SP_GRP;
382     x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
383     fnd_message.set_name('WSH', 'WSH_CONT_CREATE_ERROR');
384     WSH_UTIL_CORE.ADD_MESSAGE(x_return_status);
385 
386                 FND_MSG_PUB.Count_And_Get
387                 ( p_count => x_msg_count
388                 , p_data  => x_msg_data
389                 , p_encoded => FND_API.G_FALSE
390                 );
391 
392                IF l_debug_on THEN
393                   WSH_DEBUG_SV.logmsg(l_module_name,'WSH_FAIL_CONT_CREATION exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
394                   WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_FAIL_CONT_CREATION');
395               END IF;
396 --
397   WHEN WSH_LPN_COUNT_INVALID then
398     rollback to Create_Containers_SP_GRP;
399     x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
400     fnd_message.set_name('WSH', 'WSH_LPN_COUNT_INVALID');
401     WSH_UTIL_CORE.ADD_MESSAGE(x_return_status);
402 
403                 FND_MSG_PUB.Count_And_Get
404                 ( p_count => x_msg_count
405                 , p_data  => x_msg_data
406                 , p_encoded => FND_API.G_FALSE
407                 );
408 
409     IF l_debug_on THEN
410         WSH_DEBUG_SV.logmsg(l_module_name,'WSH_LPN_COUNT_INVALID exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
411         WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_LPN_COUNT_INVALID');
412     END IF;
413     --
414   WHEN OTHERS then
415     rollback to Create_Containers_SP_GRP;
416     wsh_util_core.default_handler('WSH_CONTAINER_GRP.Create_Containers');
417     x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
418                 FND_MSG_PUB.Count_And_Get
419                 ( p_count => x_msg_count
420                 , p_data  => x_msg_data
421                 , p_encoded => FND_API.G_FALSE
422                 );
423 
424   IF l_debug_on THEN
425       WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
426       WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
427   END IF;
428   --
429 END Create_Containers;
430 
431 
432 ------------------------------------------------------------------------------
433 -- Procedure: Update_Container
434 --
435 -- Parameters:  1) container_rec - container record of type
436 --    wsh_interface.changedattributerectype
437 --    2) other standard parameters
438 --
439 -- Description: This procedure takes in a record of container attributes that
440 -- contains the name and delivery detail id of container to update the
441 -- container record in WSH_DELIVERY_DETAILS with the attributes input in the
442 -- container rec type. The API validates the container name and detail id and
443 -- calls the wsh_delivery_details_grp.update_shipping_attributes public API.
444 
445 -- THIS PROCEDURE SHOULD NOT BE USED ANYMORE, IT IS USED ONLY FOR BACKWARD
446 -- COMPATIBILITY.
447 ------------------------------------------------------------------------------
448 
449 PROCEDURE Update_Container (
450   -- Standard parameters
451   p_api_version   IN  NUMBER,
452   p_init_msg_list   IN  VARCHAR2  DEFAULT FND_API.G_FALSE,
453   p_commit    IN  VARCHAR2  DEFAULT FND_API.G_FALSE,
454   p_validation_level  IN  NUMBER    DEFAULT FND_API.G_VALID_LEVEL_FULL,
455   x_return_status     OUT NOCOPY  VARCHAR2,
456   x_msg_count     OUT NOCOPY  NUMBER,
457   x_msg_data    OUT NOCOPY  VARCHAR2,
458 
459   -- program specific parameters
460   p_container_rec   IN  WSH_CONTAINER_GRP.CHANGEDATTRIBUTETABTYPE
461 
462 ) IS
463 
464  -- Standard call to check for call compatibility
465  l_api_version    CONSTANT  NUMBER  := 1.0;
466  l_api_name   CONSTANT  VARCHAR2(30):= 'Update_Containers';
467 
468  l_return_status  VARCHAR2(30)  := NULL;
469 
470  l_cont_name    VARCHAR2(30)  := NULL;
471  l_cont_flag    VARCHAR2(1);
472  l_cont_instance_id NUMBER;
473 
474  l_old_cont_name  VARCHAR2(30);
475  l_old_cont_instance_id NUMBER;
476  l_old_lpn_id           NUMBER;
477  l_old_rel_status       VARCHAR2(1);
478 
479 
480  l_cont_tab   WSH_INTERFACE.CHANGEDATTRIBUTETABTYPE;
481 
482  l_msg_summary    VARCHAR2(2000)  := NULL;
483  l_msg_details    VARCHAR2(4000)  := NULL;
484 
485  l_delivery_id    NUMBER;
486  l_del_status   VARCHAR2(10);
487  l_detail_info_tab       WSH_GLBL_VAR_STRCT_GRP.delivery_details_Attr_tbl_Type;
488  l_IN_rec                WSH_GLBL_VAR_STRCT_GRP.detailInRecType;
489  l_OUT_rec               WSH_GLBL_VAR_STRCT_GRP.detailOutRecType;
490 
491  l_msg_count           NUMBER;
492  l_msg_data            VARCHAR2(2000);
493 
494  WSH_INVALID_CONT     EXCEPTION;
495  WSH_INVALID_CONT_UPDATE    EXCEPTION;
496  WSH_FAIL_CONT_UPDATE     EXCEPTION;
497 
498 --lpn conv
499  CURSOR Check_Cont (v_cont_id NUMBER ) IS
500  SELECT container_flag, delivery_detail_id, lpn_id, released_status
501  FROM WSH_DELIVERY_DETAILS
502  WHERE delivery_detail_id = v_cont_id
503  AND nvl(LINE_DIRECTION , 'O') IN ('O', 'IO');
504 
505  CURSOR Check_Cont_Name (v_cont_name VARCHAR2) IS
506  SELECT delivery_detail_id, container_name
507  FROM WSH_DELIVERY_DETAILS
508  WHERE container_name = v_cont_name
509  AND nvl(LINE_DIRECTION , 'O') IN ('O', 'IO');
510 
511  CURSOR c_get_lpn (l_delivery_detail_id NUMBER) IS
512  SELECT lpn_id
513  FROM wsh_delivery_details
514  WHERE delivery_detail_id = l_delivery_detail_id;
515 
516 
517   --
518 l_debug_on BOOLEAN;
519   --
520   l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'UPDATE_CONTAINER';
521   --
522 BEGIN
523 
524   -- Standard begin of API savepoint
525   --
526   -- Debug Statements
527   --
528   --
529   l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
530   --
531   IF l_debug_on IS NULL
532   THEN
533       l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
534   END IF;
535   --
536   IF l_debug_on THEN
537       WSH_DEBUG_SV.push(l_module_name);
538       --
539       WSH_DEBUG_SV.log(l_module_name,'P_API_VERSION',P_API_VERSION);
540       WSH_DEBUG_SV.log(l_module_name,'P_INIT_MSG_LIST',P_INIT_MSG_LIST);
541       WSH_DEBUG_SV.log(l_module_name,'P_COMMIT',P_COMMIT);
542       WSH_DEBUG_SV.log(l_module_name,'P_VALIDATION_LEVEL',P_VALIDATION_LEVEL);
543   END IF;
544   --
545   SAVEPOINT Update_Containers_SP_Grp;
546 
547   IF NOT FND_API.compatible_api_call (
548         l_api_version,
549         p_api_version,
550         l_api_name,
551         G_PKG_NAME) THEN
552     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
553   END IF;
554 
555   -- Check p_init_msg_list
556   IF FND_API.to_boolean(p_init_msg_list) THEN
557     FND_MSG_PUB.initialize;
558   END IF;
559 
560 /*
561   IF p_caller NOT LIKE 'WMS%' THEN
562      IF l_debug_on THEN
563          WSH_DEBUG_SV.log(l_module_name,'Invalid caller',p_caller);
564      END IF;
565      RAISE FND_API.G_EXC_ERROR;
566   END IF;
567 p_caller does not exist
568 */
569 
570   x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
571 
572   -- check to make sure that the container record being input for update
573   -- does not have null delivery detail ids or container name or the
574   -- container flag is null or 'N'
575   IF p_container_rec(1).delivery_detail_id IS NULL OR p_container_rec(1).container_name IS NULL OR nvl(p_container_rec(1).container_flag,'N') = 'N' THEN
576     RAISE WSH_INVALID_CONT_UPDATE;
577   END IF;
578 
579   -- Now check for valid container based on the information in the
580   -- container rec.
581 
582 
583   IF p_container_rec(1).delivery_detail_id IS NOT NULL AND p_container_rec(1).container_name IS NOT NULL THEN
584 
585     l_cont_instance_id := p_container_rec(1).delivery_detail_id;
586     l_cont_name := p_container_rec(1).container_name;
587 
588     OPEN Check_Cont (l_cont_instance_id );
589 
590     FETCH Check_Cont INTO
591       l_cont_flag,
592       l_old_cont_instance_id,
593                         l_old_lpn_id,
594                         l_old_rel_status;
595 
596     IF Check_Cont%NOTFOUND OR Check_Cont%ROWCOUNT > 1 THEN
597       CLOSE Check_Cont;
598       RAISE WSH_INVALID_CONT;
599     END IF;
600 
601     IF Check_Cont%ISOPEN THEN
602       CLOSE Check_Cont;
603     END IF;
604 
605     -- if the input container instance id does not match the
606     -- delivery detail id in the database (for the given container
607     -- name) then error out..
608 
609     IF l_old_cont_instance_id <> l_cont_instance_id OR l_cont_flag <> 'Y' THEN
610       RAISE WSH_INVALID_CONT;
611     END IF;
612                 -- Bug 2657803/2911387, Let WMS update container name and null out LPN ID if container has been shipped,
613                 -- and LPN id is not null.
614                 -- If not, validate delivery status and container name
615                 IF l_old_lpn_id IS NULL or l_old_rel_status <> 'C' or p_container_rec(1).lpn_id is NOT NULL THEN
616 
617 
618 /* lpn conv
619                   OPEN Check_Cont_Name (l_cont_name);
620 
621                   FETCH Check_Cont_Name INTO
622                         l_old_cont_instance_id,
623                         l_old_cont_name;
624 
625                   IF Check_Cont_Name%FOUND AND l_old_cont_instance_id <> l_cont_instance_id THEN
626                         CLOSE Check_Cont_Name;
627                         RAISE WSH_INVALID_CONT_UPDATE;
628                   END IF;
629 
630                   IF Check_Cont_Name%ISOPEN THEN
631                         CLOSE Check_Cont_Name;
632                   END IF;
633 */
634 
635                   WSH_CONTAINER_UTILITIES.Get_Delivery_Status (
636                                                 l_old_cont_instance_id,
637                                                 l_delivery_id,
638                                                 l_del_status,
639                                                 x_return_status);
640 
641                   IF x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS THEN
642                         RAISE WSH_FAIL_CONT_UPDATE;
643                   END IF;
644 
645                 -- Bug: 1577876.
646                 -- 1. Update is allowed even if Container is not assigned to a Delivery.
647           -- 2. if Assigned then Updateable only if Delivery Status not in 'IT', 'CL', 'CO'
648                   IF (l_delivery_id <> -99  AND l_del_status in ('IT', 'CL', 'CO', 'SR', 'SC') ) THEN
649                         RAISE WSH_FAIL_CONT_UPDATE;
650                   END IF;
651 
652 
653                 END IF;
654 
655 
656     -- call update delivery details public API to update entire
657     -- container record with all validations..
658 
659 
660     --l_cont_tab(1) := p_container_rec(1);
661 
662     --
663     l_IN_rec.caller := WSH_GLBL_VAR_STRCT_GRP.c_skip_miss_info;
664     l_IN_rec.action_code := 'UPDATE';
665     l_detail_info_tab(1).delivery_detail_id  := p_container_rec(1).delivery_detail_id  ;
666     l_detail_info_tab(1).source_code  := p_container_rec(1).source_code  ;
667     l_detail_info_tab(1).source_header_id  := p_container_rec(1).source_header_id  ;
668     l_detail_info_tab(1).source_line_id  := p_container_rec(1).source_line_id  ;
669     l_detail_info_tab(1).customer_id  := p_container_rec(1).customer_id  ;
670     l_detail_info_tab(1).sold_to_contact_id  := p_container_rec(1).sold_to_contact_id  ;
671     l_detail_info_tab(1).inventory_item_id  := p_container_rec(1).inventory_item_id  ;
672     l_detail_info_tab(1).item_description  := p_container_rec(1).item_description  ;
673     l_detail_info_tab(1).hazard_class_id  := p_container_rec(1).hazard_class_id  ;
674     l_detail_info_tab(1).country_of_origin  := p_container_rec(1).country_of_origin  ;
675     l_detail_info_tab(1).classification  := p_container_rec(1).classification  ;
676     l_detail_info_tab(1).ship_to_contact_id  := p_container_rec(1).ship_to_contact_id  ;
677     l_detail_info_tab(1).ship_to_site_use_id  := p_container_rec(1).ship_to_site_use_id  ;
678     l_detail_info_tab(1).deliver_to_contact_id  := p_container_rec(1).deliver_to_contact_id  ;
679     l_detail_info_tab(1).intmed_ship_to_contact_id  := p_container_rec(1).intmed_ship_to_contact_id  ;
680     l_detail_info_tab(1).hold_code  := p_container_rec(1).hold_code  ;
681     l_detail_info_tab(1).ship_tolerance_above  := p_container_rec(1).ship_tolerance_above  ;
682     l_detail_info_tab(1).ship_tolerance_below  := p_container_rec(1).ship_tolerance_below  ;
683     l_detail_info_tab(1).shipped_quantity  := p_container_rec(1).shipped_quantity  ;
684     l_detail_info_tab(1).delivered_quantity  := p_container_rec(1).delivered_quantity  ;
685     l_detail_info_tab(1).subinventory  := p_container_rec(1).subinventory  ;
686     l_detail_info_tab(1).revision  := p_container_rec(1).revision  ;
687     l_detail_info_tab(1).lot_number  := p_container_rec(1).lot_number  ;
688     l_detail_info_tab(1).customer_requested_lot_flag  := p_container_rec(1).customer_requested_lot_flag  ;
689     l_detail_info_tab(1).serial_number  := p_container_rec(1).serial_number  ;
690     l_detail_info_tab(1).locator_id  := p_container_rec(1).locator_id  ;
691     l_detail_info_tab(1).date_requested  := p_container_rec(1).date_requested  ;
692     l_detail_info_tab(1).date_scheduled  := p_container_rec(1).date_scheduled  ;
693     l_detail_info_tab(1).master_container_item_id  := p_container_rec(1).master_container_item_id  ;
694     l_detail_info_tab(1).detail_container_item_id  := p_container_rec(1).detail_container_item_id  ;
695     l_detail_info_tab(1).load_seq_number  := p_container_rec(1).load_seq_number  ;
696     l_detail_info_tab(1).carrier_id  := p_container_rec(1).carrier_id  ;
697     l_detail_info_tab(1).freight_terms_code  := p_container_rec(1).freight_terms_code  ;
698     l_detail_info_tab(1).shipment_priority_code  := p_container_rec(1).shipment_priority_code  ;
699     l_detail_info_tab(1).fob_code  := p_container_rec(1).fob_code  ;
700     l_detail_info_tab(1).customer_item_id  := p_container_rec(1).customer_item_id  ;
701     l_detail_info_tab(1).dep_plan_required_flag  := p_container_rec(1).dep_plan_required_flag  ;
702     l_detail_info_tab(1).customer_prod_seq  := p_container_rec(1).customer_prod_seq  ;
703     l_detail_info_tab(1).customer_dock_code  := p_container_rec(1).customer_dock_code  ;
704     l_detail_info_tab(1).cust_model_serial_number  := p_container_rec(1).cust_model_serial_number  ;
705     l_detail_info_tab(1).customer_job   := p_container_rec(1).customer_job   ;
706     l_detail_info_tab(1).customer_production_line  := p_container_rec(1).customer_production_line  ;
707     l_detail_info_tab(1).net_weight  := p_container_rec(1).net_weight  ;
708     l_detail_info_tab(1).weight_uom_code  := p_container_rec(1).weight_uom_code  ;
709     l_detail_info_tab(1).volume  := p_container_rec(1).volume  ;
710     l_detail_info_tab(1).volume_uom_code  := p_container_rec(1).volume_uom_code  ;
711     l_detail_info_tab(1).tp_attribute_category  := p_container_rec(1).tp_attribute_category  ;
712     l_detail_info_tab(1).tp_attribute1  := p_container_rec(1).tp_attribute1  ;
713     l_detail_info_tab(1).tp_attribute2  := p_container_rec(1).tp_attribute2  ;
714     l_detail_info_tab(1).tp_attribute3  := p_container_rec(1).tp_attribute3  ;
715     l_detail_info_tab(1).tp_attribute4  := p_container_rec(1).tp_attribute4  ;
716     l_detail_info_tab(1).tp_attribute5  := p_container_rec(1).tp_attribute5  ;
717     l_detail_info_tab(1).tp_attribute6  := p_container_rec(1).tp_attribute6  ;
718     l_detail_info_tab(1).tp_attribute7  := p_container_rec(1).tp_attribute7  ;
719     l_detail_info_tab(1).tp_attribute8  := p_container_rec(1).tp_attribute8  ;
720     l_detail_info_tab(1).tp_attribute9  := p_container_rec(1).tp_attribute9  ;
721     l_detail_info_tab(1).tp_attribute10  := p_container_rec(1).tp_attribute10  ;
722     l_detail_info_tab(1).tp_attribute11  := p_container_rec(1).tp_attribute11  ;
723     l_detail_info_tab(1).tp_attribute12  := p_container_rec(1).tp_attribute12  ;
724     l_detail_info_tab(1).tp_attribute13  := p_container_rec(1).tp_attribute13  ;
725     l_detail_info_tab(1).tp_attribute14  := p_container_rec(1).tp_attribute14  ;
726     l_detail_info_tab(1).tp_attribute15  := p_container_rec(1).tp_attribute15  ;
727     l_detail_info_tab(1).attribute_category  := p_container_rec(1).attribute_category  ;
728     l_detail_info_tab(1).attribute1  := p_container_rec(1).attribute1  ;
729     l_detail_info_tab(1).attribute2  := p_container_rec(1).attribute2  ;
730     l_detail_info_tab(1).attribute3  := p_container_rec(1).attribute3  ;
731     l_detail_info_tab(1).attribute4  := p_container_rec(1).attribute4  ;
732     l_detail_info_tab(1).attribute5  := p_container_rec(1).attribute5  ;
733     l_detail_info_tab(1).attribute6  := p_container_rec(1).attribute6  ;
734     l_detail_info_tab(1).attribute7  := p_container_rec(1).attribute7  ;
735     l_detail_info_tab(1).attribute8  := p_container_rec(1).attribute8  ;
736     l_detail_info_tab(1).attribute9  := p_container_rec(1).attribute9  ;
737     l_detail_info_tab(1).attribute10  := p_container_rec(1).attribute10  ;
738     l_detail_info_tab(1).attribute11  := p_container_rec(1).attribute11  ;
739     l_detail_info_tab(1).attribute12  := p_container_rec(1).attribute12  ;
740     l_detail_info_tab(1).attribute13  := p_container_rec(1).attribute13  ;
741     l_detail_info_tab(1).attribute14  := p_container_rec(1).attribute14  ;
742     l_detail_info_tab(1).attribute15  := p_container_rec(1).attribute15  ;
743     l_detail_info_tab(1).request_id  := p_container_rec(1).request_id  ;
744     l_detail_info_tab(1).mvt_stat_status  := p_container_rec(1).mvt_stat_status  ;
745     l_detail_info_tab(1).organization_id  := p_container_rec(1).organization_id  ;
746     l_detail_info_tab(1).transaction_temp_id  := p_container_rec(1).transaction_temp_id  ;
747     l_detail_info_tab(1).ship_set_id  := p_container_rec(1).ship_set_id  ;
748     l_detail_info_tab(1).arrival_set_id  := p_container_rec(1).arrival_set_id  ;
749     l_detail_info_tab(1).ship_model_complete_flag  := p_container_rec(1).ship_model_complete_flag  ;
750     l_detail_info_tab(1).top_model_line_id  := p_container_rec(1).top_model_line_id  ;
751     l_detail_info_tab(1).source_header_number  := p_container_rec(1).source_header_number  ;
752     l_detail_info_tab(1).source_header_type_id  := p_container_rec(1).source_header_type_id  ;
753     l_detail_info_tab(1).source_header_type_name  := p_container_rec(1).source_header_type_name  ;
754     l_detail_info_tab(1).cust_po_number  := p_container_rec(1).cust_po_number  ;
755     l_detail_info_tab(1).ato_line_id  := p_container_rec(1).ato_line_id  ;
756     l_detail_info_tab(1).src_requested_quantity  := p_container_rec(1).src_requested_quantity  ;
757     l_detail_info_tab(1).src_requested_quantity_uom  := p_container_rec(1).src_requested_quantity_uom  ;
758     l_detail_info_tab(1).move_order_line_id  := p_container_rec(1).move_order_line_id  ;
759     l_detail_info_tab(1).cancelled_quantity  := p_container_rec(1).cancelled_quantity  ;
760     l_detail_info_tab(1).quality_control_quantity  := p_container_rec(1).quality_control_quantity  ;
761     l_detail_info_tab(1).cycle_count_quantity  := p_container_rec(1).cycle_count_quantity  ;
762     l_detail_info_tab(1).tracking_number  := p_container_rec(1).tracking_number  ;
763     l_detail_info_tab(1).movement_id  := p_container_rec(1).movement_id  ;
764     l_detail_info_tab(1).shipping_instructions  := p_container_rec(1).shipping_instructions  ;
765     l_detail_info_tab(1).packing_instructions  := p_container_rec(1).packing_instructions  ;
766     l_detail_info_tab(1).project_id  := p_container_rec(1).project_id  ;
767     l_detail_info_tab(1).task_id  := p_container_rec(1).task_id  ;
768     l_detail_info_tab(1).org_id  := p_container_rec(1).org_id  ;
769     l_detail_info_tab(1).oe_interfaced_flag  := p_container_rec(1).oe_interfaced_flag  ;
770     l_detail_info_tab(1).inv_interfaced_flag  := p_container_rec(1).inv_interfaced_flag  ;
771     l_detail_info_tab(1).inspection_flag  := p_container_rec(1).inspection_flag  ;
772     l_detail_info_tab(1).released_status  := p_container_rec(1).released_status  ;
773     l_detail_info_tab(1).container_flag  := p_container_rec(1).container_flag  ;
774     l_detail_info_tab(1).container_type_code  := p_container_rec(1).container_type_code  ;
775     l_detail_info_tab(1).container_name  := p_container_rec(1).container_name  ;
776     l_detail_info_tab(1).fill_percent  := p_container_rec(1).fill_percent  ;
777     l_detail_info_tab(1).gross_weight  := p_container_rec(1).gross_weight  ;
778     l_detail_info_tab(1).master_serial_number  := p_container_rec(1).master_serial_number  ;
779     l_detail_info_tab(1).maximum_load_weight  := p_container_rec(1).maximum_load_weight  ;
780     l_detail_info_tab(1).maximum_volume  := p_container_rec(1).maximum_volume  ;
781     l_detail_info_tab(1).minimum_fill_percent  := p_container_rec(1).minimum_fill_percent  ;
782     l_detail_info_tab(1).seal_code  := p_container_rec(1).seal_code  ;
783     l_detail_info_tab(1).unit_number  := p_container_rec(1).unit_number  ;
784     l_detail_info_tab(1).unit_price  := p_container_rec(1).unit_price  ;
785     l_detail_info_tab(1).currency_code  := p_container_rec(1).currency_code  ;
786     l_detail_info_tab(1).freight_class_cat_id  := p_container_rec(1).freight_class_cat_id  ;
787     l_detail_info_tab(1).commodity_code_cat_id  := p_container_rec(1).commodity_code_cat_id  ;
788     l_detail_info_tab(1).preferred_grade       := p_container_rec(1).preferred_grade       ;
789     l_detail_info_tab(1).shipped_quantity2         := p_container_rec(1).shipped_quantity2         ;
790     l_detail_info_tab(1).delivered_quantity2  := p_container_rec(1).delivered_quantity2  ;
791     l_detail_info_tab(1).cancelled_quantity2  := p_container_rec(1).cancelled_quantity2  ;
792     l_detail_info_tab(1).quality_control_quantity2  := p_container_rec(1).quality_control_quantity2  ;
793     l_detail_info_tab(1).cycle_count_quantity2  := p_container_rec(1).cycle_count_quantity2  ;
794 
795     l_detail_info_tab(1).lpn_id  := p_container_rec(1).lpn_id  ;
796 
797     IF( p_container_rec(1).lpn_id IS NULL )  OR
798                         (p_container_rec(1).lpn_id = FND_API.G_MISS_NUM)
799     THEN
800        IF p_container_rec(1).lpn_id IS NULL THEN
801           l_IN_rec.action_code := 'UPDATE_NULL';
802        END IF;
803        OPEN c_get_lpn(p_container_rec(1).delivery_detail_id);
804        FETCH c_get_lpn INTO l_detail_info_tab(1).lpn_id;
805        CLOSE c_get_lpn;
806     END IF;
807 
808     l_detail_info_tab(1).pickable_flag  := p_container_rec(1).pickable_flag  ;
809     l_detail_info_tab(1).original_subinventory  := p_container_rec(1).original_subinventory  ;
810     l_detail_info_tab(1).to_serial_number    := p_container_rec(1).to_serial_number    ;
811     l_detail_info_tab(1).picked_quantity  := p_container_rec(1).picked_quantity  ;
812     l_detail_info_tab(1).picked_quantity2  := p_container_rec(1).picked_quantity2  ;
813     l_detail_info_tab(1).received_quantity  := p_container_rec(1).received_quantity  ;
814     l_detail_info_tab(1).received_quantity2  := p_container_rec(1).received_quantity2  ;
815     l_detail_info_tab(1).source_line_set_id  := p_container_rec(1).source_line_set_id  ;
816     l_detail_info_tab(1).ship_from_location_id  := FND_API.G_MISS_NUM;
817     l_detail_info_tab(1).ship_to_location_id  := FND_API.G_MISS_NUM;
818     l_detail_info_tab(1).deliver_to_location_id  := FND_API.G_MISS_NUM;
819     l_detail_info_tab(1).deliver_to_site_use_id  := p_container_rec(1).deliver_to_org_id;
820     l_detail_info_tab(1).intmed_ship_to_location_id  := FND_API.G_MISS_NUM;
821     l_detail_info_tab(1).requested_quantity  := FND_API.G_MISS_NUM;
822     l_detail_info_tab(1).requested_quantity_uom  := FND_API.G_MISS_CHAR;
823     l_detail_info_tab(1).ship_method_code  := p_container_rec(1).shipping_method_code;
824     l_detail_info_tab(1).created_by  := FND_API.G_MISS_NUM;
825     l_detail_info_tab(1).creation_date  := FND_API.G_MISS_DATE;
826     l_detail_info_tab(1).last_update_date  := FND_API.G_MISS_DATE;
827     l_detail_info_tab(1).last_update_login  := FND_API.G_MISS_NUM;
828     l_detail_info_tab(1).last_updated_by  := FND_API.G_MISS_NUM;
829     l_detail_info_tab(1).program_application_id  := FND_API.G_MISS_NUM;
830     l_detail_info_tab(1).program_id  := FND_API.G_MISS_NUM;
831     l_detail_info_tab(1).program_update_date  := FND_API.G_MISS_DATE;
832     l_detail_info_tab(1).released_flag  := FND_API.G_MISS_CHAR;
833     l_detail_info_tab(1).split_from_detail_id  := p_container_rec(1).split_from_delivery_detail_id;
834     l_detail_info_tab(1).source_line_number  := FND_API.G_MISS_CHAR;
835     l_detail_info_tab(1).src_requested_quantity2  := FND_API.G_MISS_NUM;
836     l_detail_info_tab(1).src_requested_quantity_uom2  := FND_API.G_MISS_CHAR;
837     l_detail_info_tab(1).requested_quantity2  := FND_API.G_MISS_NUM;
838     l_detail_info_tab(1).requested_quantity_uom2  := FND_API.G_MISS_CHAR;
839     l_detail_info_tab(1).batch_id  := FND_API.G_MISS_NUM;
840     --l_detail_info_tab(1).ROWID  := FND_API.G_MISS_CHAR;
841     l_detail_info_tab(1).transaction_id  := FND_API.G_MISS_NUM;
842     l_detail_info_tab(1).VENDOR_ID  := FND_API.G_MISS_NUM;
843     l_detail_info_tab(1).SHIP_FROM_SITE_ID  := FND_API.G_MISS_NUM;
844     l_detail_info_tab(1).LINE_DIRECTION  := FND_API.G_MISS_CHAR;
845     l_detail_info_tab(1).PARTY_ID  := FND_API.G_MISS_NUM;
846     l_detail_info_tab(1).ROUTING_REQ_ID  := FND_API.G_MISS_NUM;
847     l_detail_info_tab(1).SHIPPING_CONTROL  := FND_API.G_MISS_CHAR;
848     l_detail_info_tab(1).SOURCE_BLANKET_REFERENCE_ID  := FND_API.G_MISS_NUM;
849     l_detail_info_tab(1).SOURCE_BLANKET_REFERENCE_NUM  := FND_API.G_MISS_NUM;
850     l_detail_info_tab(1).PO_SHIPMENT_LINE_ID  := FND_API.G_MISS_NUM;
851     l_detail_info_tab(1).PO_SHIPMENT_LINE_NUMBER  := FND_API.G_MISS_NUM;
852     l_detail_info_tab(1).RETURNED_QUANTITY  := FND_API.G_MISS_NUM;
853     l_detail_info_tab(1).RETURNED_QUANTITY2  := FND_API.G_MISS_NUM;
854     l_detail_info_tab(1).RCV_SHIPMENT_LINE_ID  := FND_API.G_MISS_NUM;
855     l_detail_info_tab(1).SOURCE_LINE_TYPE_CODE  := FND_API.G_MISS_CHAR;
856     l_detail_info_tab(1).SUPPLIER_ITEM_NUMBER  := FND_API.G_MISS_CHAR;
857     l_detail_info_tab(1).IGNORE_FOR_PLANNING  := FND_API.G_MISS_CHAR;
858     l_detail_info_tab(1).EARLIEST_PICKUP_DATE  := FND_API.G_MISS_DATE;
859     l_detail_info_tab(1).LATEST_PICKUP_DATE  := FND_API.G_MISS_DATE;
860     l_detail_info_tab(1).EARLIEST_DROPOFF_DATE  := FND_API.G_MISS_DATE;
861     l_detail_info_tab(1).LATEST_DROPOFF_DATE  := FND_API.G_MISS_DATE;
862     l_detail_info_tab(1).REQUEST_DATE_TYPE_CODE  := FND_API.G_MISS_CHAR;
863     l_detail_info_tab(1).tp_delivery_detail_id  := FND_API.G_MISS_NUM;
864     l_detail_info_tab(1).source_document_type_id  := FND_API.G_MISS_NUM;
865     l_detail_info_tab(1).unit_weight  := FND_API.G_MISS_NUM;
866     l_detail_info_tab(1).unit_volume  := FND_API.G_MISS_NUM;
867     l_detail_info_tab(1).filled_volume  := FND_API.G_MISS_NUM;
868     l_detail_info_tab(1).wv_frozen_flag  := FND_API.G_MISS_CHAR;
869     l_detail_info_tab(1).mode_of_transport  := FND_API.G_MISS_CHAR;
870     l_detail_info_tab(1).service_level  := FND_API.G_MISS_CHAR;
871     l_detail_info_tab(1).po_revision_number  := FND_API.G_MISS_NUM;
872     l_detail_info_tab(1).release_revision_number  := FND_API.G_MISS_NUM;
873 
874     WSH_WMS_LPN_GRP.create_update_containers
875       ( p_api_version            => p_api_version,
876         p_init_msg_list          => p_init_msg_list,
877         p_commit                 => p_commit,
878         x_return_status          => l_return_status,
879         x_msg_count              => l_msg_count,
880         x_msg_data               => l_msg_data,
881         p_detail_info_tab        => l_detail_info_tab,
882         p_IN_rec                 => l_IN_rec,
883         x_OUT_rec                => l_OUT_rec
884       );
885 
886 
887     IF x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS THEN
888       RAISE WSH_FAIL_CONT_UPDATE;
889     END IF;
890 
891   END IF; -- if p_container_rec is not null
892 
893 
894   IF FND_API.TO_BOOLEAN(p_commit) THEN
895     -- dbms_output.put_line('commit');
896     COMMIT;
897   END IF;
898 
899         FND_MSG_PUB.Count_And_Get
900         ( p_count => x_msg_count
901         , p_data  => x_msg_data
902         , p_encoded => FND_API.G_FALSE
903         );
904 
905 
906   x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
907 
908 --
909 -- Debug Statements
910 --
911 IF l_debug_on THEN
912     WSH_DEBUG_SV.pop(l_module_name);
913 END IF;
914 --
915 EXCEPTION
916 
917   WHEN WSH_INVALID_CONT_UPDATE then
918     x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
919     rollback to Update_Containers_SP_Grp;
920     fnd_message.set_name('WSH', 'WSH_CONT_INVALID_UPDATE');
921     WSH_UTIL_CORE.ADD_MESSAGE(x_return_status);
922 /*
923                 WSH_UTIL_CORE.get_messages('Y', l_msg_summary, l_msg_details, x_msg_count);
924     if x_msg_count > 1 then
925       x_msg_data := l_msg_summary || l_msg_details;
926     else
927       x_msg_data := l_msg_summary;
928     end if;
929 */
930                 FND_MSG_PUB.Count_And_Get
931                 ( p_count => x_msg_count
932                 , p_data  => x_msg_data
933                 , p_encoded => FND_API.G_FALSE
934                 );
935 
936 --
937 -- Debug Statements
938 --
939 IF l_debug_on THEN
940     WSH_DEBUG_SV.logmsg(l_module_name,'WSH_INVALID_CONT_UPDATE exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
941     WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_INVALID_CONT_UPDATE');
942 END IF;
943 --
944   WHEN WSH_INVALID_CONT then
945     x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
946     rollback to Update_Containers_SP_Grp;
947     fnd_message.set_name('WSH', 'WSH_CONT_INVALID_NAME');
948     WSH_UTIL_CORE.ADD_MESSAGE(x_return_status);
949 /*
950                 WSH_UTIL_CORE.get_messages('Y', l_msg_summary, l_msg_details, x_msg_count);
951     if x_msg_count > 1 then
952       x_msg_data := l_msg_summary || l_msg_details;
953     else
954       x_msg_data := l_msg_summary;
955     end if;
956 */
957                 FND_MSG_PUB.Count_And_Get
958                 ( p_count => x_msg_count
959                 , p_data  => x_msg_data
960                 , p_encoded => FND_API.G_FALSE
961                 );
962 --
963 -- Debug Statements
964 --
965 IF l_debug_on THEN
966     WSH_DEBUG_SV.logmsg(l_module_name,'WSH_INVALID_CONT exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
967     WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_INVALID_CONT');
968 END IF;
969 --
970   WHEN WSH_FAIL_CONT_UPDATE then
971     x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
972     rollback to Update_Containers_SP_Grp;
973     fnd_message.set_name('WSH', 'WSH_CONT_UPDATE_ERROR');
974     WSH_UTIL_CORE.ADD_MESSAGE(x_return_status);
975     /*
976                 WSH_UTIL_CORE.get_messages('Y', l_msg_summary, l_msg_details, x_msg_count);
977     if x_msg_count > 1 then
978       x_msg_data := l_msg_summary || l_msg_details;
979     else
980       x_msg_data := l_msg_summary;
981     end if;
982                */
983                 FND_MSG_PUB.Count_And_Get
984                 ( p_count => x_msg_count
985                 , p_data  => x_msg_data
986                 , p_encoded => FND_API.G_FALSE
987                 );
988 
989 --
990 -- Debug Statements
991 --
992 IF l_debug_on THEN
993     WSH_DEBUG_SV.logmsg(l_module_name,'WSH_FAIL_CONT_UPDATE exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
994     WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_FAIL_CONT_UPDATE');
995 END IF;
996 --
997   WHEN OTHERS then
998     wsh_util_core.default_handler('WSH_CONTAINER_GRP.Update_Container');
999     x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
1000     rollback to Update_Containers_SP_Grp;
1001 /*
1002 
1003     WSH_UTIL_CORE.get_messages('Y', l_msg_summary, l_msg_details, x_msg_count);
1004     if x_msg_count > 1 then
1005       x_msg_data := l_msg_summary || l_msg_details;
1006     else
1007       x_msg_data := l_msg_summary;
1008       end if;
1009 
1010 */
1011                 FND_MSG_PUB.Count_And_Get
1012                 ( p_count => x_msg_count
1013                 , p_data  => x_msg_data
1014                 , p_encoded => FND_API.G_FALSE
1015                 );
1016 
1017 
1018 --
1019 -- Debug Statements
1020 --
1021 IF l_debug_on THEN
1022     WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
1023     WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
1024 END IF;
1025 --
1026 END Update_Container;
1027 
1028 
1029 ------------------------------------------------------------------------------
1030 -- Procedure: Auto_Pack
1031 --
1032 -- Parameters:  1) entity_tab - table of ids of either lines or containers or
1033 --      deliveries that need to be autopacked
1034 --    2) entity_type - type of entity id contained in the entity_tab
1035 --      that needs to be autopacked ('L' - lines,
1036 --      'C' - containers OR 'D' - deliveries)
1037 --    3) group_id_tab - table of ids (numbers that determine
1038 --      the grouping of lines for packing into containers)
1039 --    4) container_instance_tab - table of delivery detail ids of
1040 --      containers that are created during the autopacking
1041 --    5) pack cont flag - a 'Y' or 'N' value to determine whether to
1042 --      to autopack the detail containers that are created into
1043 --      parent containers.
1044 --    6) other standard parameters
1045 --
1046 -- Description: This procedure takes in a table of ids of either delivery lines
1047 -- or container or deliveries and autopacks the lines/containers/deliveries
1048 -- into detail containers. The grouping id table is used only if the input
1049 -- table of entities are lines or containers only. The packing of lines and
1050 -- containers into parent containers is determined by the grouping id for each
1051 -- line/container. If the grouping id table is not input, the API determines
1052 -- the grouping ids for the lines/containers based on the grouping attributes
1053 -- of the lines/containers. The lines/containers are then autopacked into
1054 -- detail containers and the detail containers are packed into parent/master
1055 -- containers based on whether the pack cont flag is set to 'Y' or 'N'. The
1056 -- API returns a table of container instance ids created during the autopacking
1057 -- operation. If the detail containers are packed into parent containers, the
1058 -- output table of ids will contain both the detail and parent containers'
1059 -- delivery detail ids.
1060 ------------------------------------------------------------------------------
1061 
1062 PROCEDURE Auto_Pack (
1063   -- Standard parameters
1064   p_api_version   IN  NUMBER,
1065   p_init_msg_list   IN  VARCHAR2  DEFAULT FND_API.G_FALSE,
1066   p_commit    IN  VARCHAR2  DEFAULT FND_API.G_FALSE,
1067   p_validation_level  IN  NUMBER    DEFAULT FND_API.G_VALID_LEVEL_FULL,
1068   x_return_status     OUT NOCOPY  VARCHAR2,
1069   x_msg_count     OUT NOCOPY  NUMBER,
1070   x_msg_data    OUT NOCOPY  VARCHAR2,
1071 
1072   -- program specific parameters
1073   p_entity_tab    IN  WSH_UTIL_CORE.ID_TAB_TYPE,
1074   p_entity_type   IN  VARCHAR2,
1075   p_group_id_tab    IN  WSH_UTIL_CORE.ID_TAB_TYPE,
1076   p_pack_cont_flag  IN  VARCHAR2,
1077 
1078   -- program specific out parameters
1079   x_cont_inst_tab   OUT NOCOPY    WSH_UTIL_CORE.ID_TAB_TYPE
1080 
1081 ) IS
1082 
1083  -- Standard call to check for call compatibility
1084  l_api_version    CONSTANT  NUMBER  := 1.0;
1085  l_api_name   CONSTANT  VARCHAR2(30):= 'Update_Containers';
1086 
1087  l_return_status  VARCHAR2(30)  := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
1088 
1089  l_det_tab    WSH_UTIL_CORE.ID_TAB_TYPE;
1090  l_cont_tab   WSH_UTIL_CORE.ID_TAB_TYPE;
1091  l_del_tab    WSH_UTIL_CORE.ID_TAB_TYPE;
1092 
1093  l_delivery_detail_id NUMBER;
1094  l_delivery_id    NUMBER;
1095  l_del_status   VARCHAR2(10);
1096  l_delivery_name  VARCHAR2(30);
1097 
1098  l_cont_name    VARCHAR2(30)  := NULL;
1099  l_cont_flag    VARCHAR2(1);
1100  l_cont_instance_id NUMBER;
1101 
1102  l_old_cont_name  VARCHAR2(30);
1103  l_old_cont_instance_id NUMBER;
1104 
1105  l_det_cnt    NUMBER := 0;
1106  l_cont_cnt   NUMBER := 0;
1107  l_del_cnt    NUMBER := 0;
1108 
1109  l_msg_summary    VARCHAR2(2000)  := NULL;
1110  l_msg_details    VARCHAR2(4000)  := NULL;
1111  l_ret_status           VARCHAR2(30)  := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
1112 
1113 
1114 
1115  WSH_INVALID_CONT     EXCEPTION;
1116  WSH_INVALID_DETAIL     EXCEPTION;
1117  WSH_INVALID_DELIVERY     EXCEPTION;
1118  WSH_INVALID_ENTITY_TYPE    EXCEPTION;
1119  WSH_FAIL_AUTOPACK      EXCEPTION;
1120 
1121  CURSOR Check_Detail (v_detail_id NUMBER)
1122  IS
1123  SELECT delivery_detail_id
1124       , container_flag
1125    FROM wsh_delivery_details
1126   WHERE delivery_detail_id = v_detail_id
1127     AND NVL(line_direction,'O') IN ('O','IO');   -- J-IB-NPARIKH;
1128 
1129  CURSOR Check_Delivery (v_del_id NUMBER)
1130  IS
1131  SELECT delivery_id
1132       , name
1133       , status_code
1134    FROM wsh_new_deliveries
1135   WHERE delivery_id = v_del_id
1136     AND NVL(shipment_direction,'O') IN ('O','IO');   -- J-IB-NPARIKH;
1137 
1138 --added by adagur for bug 16397445
1139  CURSOR Get_cont_Detail_Id (v_delivery_detail_id VARCHAR2)
1140  IS
1141  SELECT wdd.delivery_detail_id
1142       , wdd.container_flag
1143       , wdacnt.delivery_id
1144    FROM wsh_delivery_details wdd
1145       , wsh_delivery_assignments wda
1146       , wsh_delivery_assignments wdacnt
1147   WHERE wda.delivery_id IS NULL
1148     AND wda.delivery_detail_id = v_delivery_detail_id
1149     AND wda.parent_delivery_detail_id = wdd.delivery_detail_id
1150     AND wdacnt.parent_delivery_detail_id =  wda.parent_delivery_detail_id
1151     AND wdacnt.delivery_id IS NOT NULL
1152 UNION
1153  SELECT wdd.delivery_detail_id
1154       , wdd.container_flag
1155       , wda.delivery_id
1156   FROM  wsh_delivery_details wdd
1157       , wsh_delivery_assignments wda
1158       , wsh_delivery_assignments wdacnt
1159   WHERE wda.delivery_detail_id = v_delivery_detail_id
1160     AND wda.parent_delivery_detail_id = wdd.delivery_detail_id
1161     AND wda.delivery_id IS NOT NULL
1162     AND wdacnt.delivery_id IS NULL
1163     AND wdacnt.delivery_detail_id =  wdd.delivery_detail_id
1164     AND wdacnt.parent_delivery_detail_id IS NULL;
1165 --End by adagur for bug 16397445
1166 
1167 
1168  -- K LPN CONV. rv
1169  l_lpn_in_sync_comm_rec WSH_GLBL_VAR_STRCT_GRP.lpn_sync_comm_in_rec_type;
1170  l_lpn_out_sync_comm_rec WSH_GLBL_VAR_STRCT_GRP.lpn_sync_comm_out_rec_type;
1171  l_msg_count NUMBER;
1172  l_msg_data VARCHAR2(32767);
1173  -- K LPN CONV. rv
1174 
1175 --
1176 l_debug_on BOOLEAN;
1177 --
1178 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'AUTO_PACK';
1179 --
1180 --Bugfix 4070732
1181 l_api_session_name CONSTANT VARCHAR2(150) := G_PKG_NAME ||'.' || l_module_name;
1182 l_reset_flags BOOLEAN;
1183 l_num_warnings NUMBER;
1184 l_num_errors   NUMBER;
1185 
1186 BEGIN
1187   --Bugfix 4070732
1188 
1189   l_num_warnings := 0;
1190   l_num_errors   := 0;
1191 
1192   IF WSH_UTIL_CORE.G_START_OF_SESSION_API is null THEN
1193     WSH_UTIL_CORE.G_START_OF_SESSION_API     := l_api_session_name;
1194     WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API := FALSE;
1195   END IF;
1196 
1197   -- Standard begin of API savepoint
1198   --
1199   -- Debug Statements
1200   --
1201   --
1202   l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
1203   --
1204   IF l_debug_on IS NULL
1205   THEN
1206       l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
1207   END IF;
1208   --
1209   IF l_debug_on THEN
1210       WSH_DEBUG_SV.push(l_module_name);
1211       --
1212       WSH_DEBUG_SV.log(l_module_name,'P_API_VERSION',P_API_VERSION);
1213       WSH_DEBUG_SV.log(l_module_name,'P_INIT_MSG_LIST',P_INIT_MSG_LIST);
1214       WSH_DEBUG_SV.log(l_module_name,'P_COMMIT',P_COMMIT);
1215       WSH_DEBUG_SV.log(l_module_name,'P_VALIDATION_LEVEL',P_VALIDATION_LEVEL);
1216       WSH_DEBUG_SV.log(l_module_name,'P_ENTITY_TYPE',P_ENTITY_TYPE);
1217       WSH_DEBUG_SV.log(l_module_name,'P_PACK_CONT_FLAG',P_PACK_CONT_FLAG);
1218   END IF;
1219   --
1220   SAVEPOINT Autopack_SP_Grp;
1221 
1222   IF NOT FND_API.compatible_api_call (
1223         l_api_version,
1224         p_api_version,
1225         l_api_name,
1226         G_PKG_NAME) THEN
1227     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1228   END IF;
1229 
1230   -- Check p_init_msg_list
1231   IF FND_API.to_boolean(p_init_msg_list) THEN
1232     FND_MSG_PUB.initialize;
1233   END IF;
1234 
1235   x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
1236 
1237   -- first decide which entity it is by checking entity type..
1238   -- based on entity type validate all the entity ids..
1239 
1240   IF p_entity_type = 'L' OR p_entity_type = 'C' THEN
1241 
1242     FOR i IN 1..p_entity_tab.count LOOP
1243 
1244       IF p_entity_tab(i) IS NOT NULL THEN
1245 
1246         OPEN Check_Detail(p_entity_tab(i));
1247 
1248         FETCH Check_Detail INTO
1249           l_delivery_detail_id,
1250           l_cont_flag;
1251 
1252         IF Check_Detail%NOTFOUND THEN
1253           CLOSE Check_Detail;
1254           l_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1255         END IF;
1256 
1257         IF Check_Detail%ISOPEN THEN
1258           CLOSE Check_Detail;
1259         END IF;
1260 
1261         l_det_cnt := l_det_cnt + 1;
1262         l_det_tab(l_det_cnt) := p_entity_tab(i);
1263 
1264       ELSE
1265         IF l_return_status = WSH_UTIL_CORE.G_RET_STS_SUCCESS THEN
1266           l_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
1267         END IF;
1268       END IF;
1269     END LOOP;
1270 
1271     IF l_det_tab.count > 0 THEN
1272 
1273       --
1274       -- Debug Statements
1275       --
1276       IF l_debug_on THEN
1277           WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_DLVB_COMMON_ACTIONS.AUTO_PACK_LINES',WSH_DEBUG_SV.C_PROC_LEVEL);
1278       END IF;
1279       --
1280       WSH_DLVB_COMMON_ACTIONS.Auto_Pack_Lines (
1281           p_group_id_tab => p_group_id_tab,
1282           p_detail_tab => l_det_tab,
1283           p_pack_cont_flag => p_pack_cont_flag,
1284                                         p_group_api_flag => 'Y',
1285           x_cont_inst_tab => x_cont_inst_tab,
1286           x_return_status => l_ret_status);
1287 
1288       IF l_ret_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS THEN
1289         IF l_ret_status = WSH_UTIL_CORE.G_RET_STS_WARNING THEN
1290           -- Bug#4280365 Start
1291           If p_pack_cont_flag = 'Y' then
1292              fnd_message.set_name('WSH', 'WSH_AUTO_PACK_MASTER_MSG');
1293           -- Bug#4280365 End
1294           Else
1295              fnd_message.set_name('WSH', 'WSH_AUTOPACK_ERROR');
1296           End If;
1297           WSH_UTIL_CORE.ADD_MESSAGE(l_return_status);
1298           RAISE WSH_UTIL_CORE.G_EXC_WARNING;
1299         ELSE
1300           RAISE WSH_FAIL_AUTOPACK;
1301         END IF;
1302       ELSE
1303         x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
1304         IF l_debug_on THEN
1305           WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_TP_RELEASE.CALCULATE_CONT_DEL_TPDATES',WSH_DEBUG_SV.C_PROC_LEVEL);
1306         END IF;
1307         WSH_TP_RELEASE.calculate_cont_del_tpdates(
1308             p_entity => 'DLVB',
1309             p_entity_ids =>x_cont_inst_tab,
1310             x_return_status => x_return_status);
1311       END IF;
1312     ELSE
1313       RAISE WSH_INVALID_DETAIL;
1314     END IF;
1315 
1316 
1317 
1318   ELSIF p_entity_type = 'D' THEN
1319 
1320     FOR i IN 1..p_entity_tab.count LOOP
1321 
1322       IF p_entity_tab(i) IS NOT NULL THEN
1323 
1324         OPEN Check_Delivery(p_entity_tab(i));
1325 
1326         FETCH Check_Delivery INTO
1327           l_delivery_id,
1328           l_delivery_name,
1329           l_del_status;
1330 
1331         IF Check_Delivery%NOTFOUND THEN
1332           CLOSE Check_Delivery;
1333           l_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1334         END IF;
1335 
1336         IF Check_Delivery%ISOPEN THEN
1337           CLOSE Check_Delivery;
1338         END IF;
1339 
1340         IF nvl(l_del_status,'OP') IN ('OP', 'SA') THEN
1341           l_del_cnt := l_del_cnt + 1;
1342           l_del_tab(l_del_cnt) := p_entity_tab(i);
1343         ELSE
1344           IF l_return_status = WSH_UTIL_CORE.G_RET_STS_SUCCESS THEN
1345             l_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
1346           END IF;
1347         END IF;
1348 
1349       ELSE
1350         IF l_return_status = WSH_UTIL_CORE.G_RET_STS_SUCCESS THEN
1351           l_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
1352         END IF;
1353       END IF;
1354 
1355     END LOOP;
1356 
1357     IF l_del_tab.count > 0 THEN
1358 
1359       --
1360       -- Debug Statements
1361       --
1362       IF l_debug_on THEN
1363           WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_CONTAINER_ACTIONS.AUTO_PACK_DELIVERY',WSH_DEBUG_SV.C_PROC_LEVEL);
1364       END IF;
1365       --
1366       WSH_CONTAINER_ACTIONS.Auto_Pack_Delivery (
1367           l_del_tab,
1368           p_pack_cont_flag,
1369           x_cont_inst_tab,
1370           x_return_status);
1371 
1372       IF x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS THEN
1373         IF x_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING THEN
1374           -- Bug#4280365 Start
1375           If p_pack_cont_flag = 'Y' then
1376              fnd_message.set_name('WSH', 'WSH_AUTO_PACK_MASTER_MSG');
1377           -- Bug#4280365 End
1378           Else
1379              fnd_message.set_name('WSH', 'WSH_AUTOPACK_ERROR');
1380           End If;
1381           WSH_UTIL_CORE.ADD_MESSAGE(l_return_status);
1382           RAISE WSH_UTIL_CORE.G_EXC_WARNING;
1383         ELSE
1384           RAISE WSH_FAIL_AUTOPACK;
1385         END IF;
1386       ELSE
1387         IF l_debug_on THEN
1388           WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_TP_RELEASE.CALCULATE_CONT_DEL_TPDATES',WSH_DEBUG_SV.C_PROC_LEVEL);
1389         END IF;
1390         WSH_TP_RELEASE.calculate_cont_del_tpdates(
1391             p_entity => 'DLVY',
1392             p_entity_ids =>l_del_tab,
1393             x_return_status => x_return_status);
1394 
1395       END IF;
1396 
1397     ELSE
1398       RAISE WSH_INVALID_DELIVERY;
1399     END IF;
1400 
1401   ELSE
1402     RAISE WSH_INVALID_ENTITY_TYPE;
1403   END IF;
1404 
1405   --added by adagur for bug 16397445
1406   -- L is for auto-pack
1407   IF p_entity_type = 'L'
1408   THEN
1409      IF l_det_tab.count > 0
1410      THEN
1411         FOR i IN 1..l_det_tab.count
1412         LOOP
1413            OPEN Get_cont_Detail_Id (l_det_tab(i));
1414           FETCH Get_cont_Detail_Id
1415            INTO l_cont_instance_id
1416               , l_cont_flag
1417               , l_delivery_id;
1418 
1419            IF Get_cont_Detail_Id%FOUND
1420            THEN
1421               wsh_delivery_details_actions.Assign_Detail_to_Delivery
1422                                          ( p_detail_id => l_det_tab(i)
1423                                          , p_delivery_id => l_delivery_id
1424                                          , x_return_status => x_return_status) ;
1425               CLOSE Get_cont_Detail_Id;
1426            ELSE
1427               CLOSE Get_cont_Detail_Id;
1428            END IF;
1429         END LOOP;
1430      END IF;
1431   END IF;
1432   --End by adagur for bug 16397445
1433   --
1434   -- K LPN CONV. rv
1435   --
1436   IF WSH_WMS_LPN_GRP.G_CALLBACK_REQUIRED = 'Y'
1437   THEN
1438   --{
1439       WSH_LPN_SYNC_COMM_PKG.SYNC_LPNS_TO_WMS
1440         (
1441           p_in_rec             => l_lpn_in_sync_comm_rec,
1442           x_return_status      => l_return_status,
1443           x_out_rec            => l_lpn_out_sync_comm_rec
1444         );
1445       --
1446       --
1447       IF l_debug_on THEN
1448         WSH_DEBUG_SV.log(l_module_name,'Return status after calling WSH_LPN_SYNC_COMM_PKG.SYNC_LPNS_TO_WMS',l_return_status);
1449       END IF;
1450       --
1451       --
1452       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS THEN
1453         IF l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING THEN
1454           RAISE WSH_UTIL_CORE.G_EXC_WARNING;
1455         ELSIF l_return_status = WSH_UTIL_CORE.G_RET_STS_ERROR THEN
1456           RAISE WSH_FAIL_AUTOPACK;
1457         ELSE
1458           RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1459         END IF;
1460       END IF;
1461   --}
1462   END IF;
1463   --
1464   -- K LPN CONV. rv
1465   --
1466   --Bugfix 4070732 {
1467   IF FND_API.TO_BOOLEAN(p_commit) THEN
1468 
1469     l_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
1470 
1471     -- dbms_output.put_line('commit');
1472     IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN --{
1473        WSH_UTIL_CORE.Process_stops_for_load_tender(
1474                                     p_reset_flags   => FALSE,
1475                                     x_return_status => l_return_status);
1476 
1477        IF l_debug_on THEN
1478           WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
1479        END IF;
1480     END IF; --}
1481     IF (l_return_status = WSH_UTIL_CORE.G_RET_STS_SUCCESS)
1482      OR (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING) THEN --{
1483 
1484        COMMIT;
1485 
1486     END IF; --}
1487 
1488     wsh_util_core.api_post_call(p_return_status  =>l_return_status,
1489                                  x_num_warnings     =>l_num_warnings,
1490                                  x_num_errors       =>l_num_errors);
1491   END IF;
1492   --Bugfix 4070732 }
1493 
1494 /*
1495 
1496   WSH_UTIL_CORE.get_messages('Y', l_msg_summary, l_msg_details, x_msg_count);
1497   if x_msg_count > 1 then
1498     x_msg_data := l_msg_summary || l_msg_details;
1499   else
1500     x_msg_data := l_msg_summary;
1501   end if;
1502 */
1503   x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
1504 
1505   --Bugfix 4070732 {
1506   IF  upper(WSH_UTIL_CORE.G_START_OF_SESSION_API)  = upper(l_api_session_name) THEN --{
1507     IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
1508 
1509      IF FND_API.TO_BOOLEAN(p_commit) THEN
1510 
1511        IF l_debug_on THEN
1512             WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.reset_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
1513        END IF;
1514        WSH_UTIL_CORE.reset_stops_for_load_tender(
1515                                      p_reset_flags   => TRUE,
1516                                      x_return_status => l_return_status);
1517      ELSE
1518 
1519        IF l_debug_on THEN
1520             WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Process_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
1521        END IF;
1522        WSH_UTIL_CORE.Process_stops_for_load_tender(
1523                                      p_reset_flags   => TRUE,
1524                                      x_return_status => l_return_status);
1525      END IF;
1526 
1527        IF l_debug_on THEN
1528            WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
1529        END IF;
1530 
1531               IF l_return_status IN (WSH_UTIL_CORE.G_RET_STS_ERROR,
1532                                    WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR) THEN
1533                 IF NOT(FND_API.TO_BOOLEAN(p_commit)) THEN
1534                    rollback to Autopack_SP_Grp;
1535 	        end if;
1536               END IF;
1537 
1538        --x_return_status is set to success before the call to fte load tender
1539        -- setting the return status to l_return_status
1540        x_return_status := l_return_status;
1541 
1542     END IF;
1543   END IF; --}
1544 
1545   --}
1546   --End of bug 4070732
1547 
1548         FND_MSG_PUB.Count_And_Get
1549         ( p_count => x_msg_count
1550         , p_data  => x_msg_data
1551         , p_encoded => FND_API.G_FALSE
1552         );
1553 
1554 
1555 --
1556 -- Debug Statements
1557 --
1558 IF l_debug_on THEN
1559     WSH_DEBUG_SV.pop(l_module_name);
1560 END IF;
1561 --
1562 EXCEPTION
1563 
1564   WHEN WSH_INVALID_DETAIL then
1565     x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1566     rollback to Autopack_SP_Grp;
1567     fnd_message.set_name('WSH', 'WSH_DET_INVALID_DETAIL');
1568     WSH_UTIL_CORE.ADD_MESSAGE(x_return_status);
1569 /*
1570 
1571     WSH_UTIL_CORE.get_messages('Y', l_msg_summary, l_msg_details, x_msg_count);
1572     if x_msg_count > 1 then
1573       x_msg_data := l_msg_summary || l_msg_details;
1574     else
1575       x_msg_data := l_msg_summary;
1576     end if;
1577 */
1578    --Bugfix 4070732 {
1579    IF  upper(WSH_UTIL_CORE.G_START_OF_SESSION_API)  = upper(l_api_session_name) THEN
1580       IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
1581          IF l_debug_on THEN
1582                WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Reset_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
1583          END IF;
1584 
1585          WSH_UTIL_CORE.Reset_stops_for_load_tender(p_reset_flags   => TRUE,
1586                                                    x_return_status => l_return_status);
1587 
1588 
1589          IF l_debug_on THEN
1590               WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
1591          END IF;
1592 
1593          IF l_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR THEN
1594              x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
1595          END IF;
1596       END IF;
1597    END IF;
1598    --}
1599    --End of bug 4070732
1600 
1601 
1602                 FND_MSG_PUB.Count_And_Get
1603                 ( p_count => x_msg_count
1604                 , p_data  => x_msg_data
1605                 , p_encoded => FND_API.G_FALSE
1606                 );
1607 
1608 --
1609 -- Debug Statements
1610 --
1611 IF l_debug_on THEN
1612     WSH_DEBUG_SV.logmsg(l_module_name,'WSH_INVALID_DETAIL exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
1613     WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_INVALID_DETAIL');
1614 END IF;
1615 --
1616 
1617   WHEN FND_API.G_EXC_ERROR then
1618     x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1619     rollback to Autopack_SP_Grp;
1620 
1621    IF  upper(WSH_UTIL_CORE.G_START_OF_SESSION_API)  = upper(l_api_session_name) THEN
1622       IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
1623          IF l_debug_on THEN
1624                WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Reset_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
1625          END IF;
1626 
1627          WSH_UTIL_CORE.Reset_stops_for_load_tender(p_reset_flags   => TRUE,
1628                                                    x_return_status => l_return_status);
1629 
1630 
1631          IF l_debug_on THEN
1632               WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
1633          END IF;
1634 
1635          IF l_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR THEN
1636              x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
1637          END IF;
1638       END IF;
1639    END IF;
1640    --}
1641    --End of bug 4070732
1642 
1643                 FND_MSG_PUB.Count_And_Get
1644                 ( p_count => x_msg_count
1645                 , p_data  => x_msg_data
1646                 , p_encoded => FND_API.G_FALSE
1647                 );
1648    --Bugfix 4070732 {
1649 
1650 --
1651 -- Debug Statements
1652 --
1653 IF l_debug_on THEN
1654     WSH_DEBUG_SV.logmsg(l_module_name,'WSH_INVALID_DETAIL exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
1655     WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:G_EXC_ERROR');
1656 END IF;
1657 --
1658   WHEN WSH_INVALID_CONT then
1659     x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1660     rollback to Autopack_SP_Grp;
1661     fnd_message.set_name('WSH', 'WSH_CONT_INVALID_NAME');
1662     WSH_UTIL_CORE.ADD_MESSAGE(x_return_status);
1663 /*
1664 
1665     WSH_UTIL_CORE.get_messages('Y', l_msg_summary, l_msg_details, x_msg_count);
1666     if x_msg_count > 1 then
1667       x_msg_data := l_msg_summary || l_msg_details;
1668     else
1669       x_msg_data := l_msg_summary;
1670     end if;
1671 */
1672    --Bugfix 4070732 {
1673    IF  upper(WSH_UTIL_CORE.G_START_OF_SESSION_API)  = upper(l_api_session_name) THEN
1674       IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
1675          IF l_debug_on THEN
1676                WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Reset_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
1677          END IF;
1678 
1679          WSH_UTIL_CORE.Reset_stops_for_load_tender(p_reset_flags   => TRUE,
1680                                                    x_return_status => l_return_status);
1681 
1682 
1683          IF l_debug_on THEN
1684               WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
1685          END IF;
1686          IF l_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR THEN
1687              x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
1688          END IF;
1689 
1690       END IF;
1691    END IF;
1692    --}
1693    --End of bug 4070732
1694 
1695 
1696                 FND_MSG_PUB.Count_And_Get
1697                 ( p_count => x_msg_count
1698                 , p_data  => x_msg_data
1699                 , p_encoded => FND_API.G_FALSE
1700                 );
1701 --
1702 -- Debug Statements
1703 --
1704 IF l_debug_on THEN
1705     WSH_DEBUG_SV.logmsg(l_module_name,'WSH_INVALID_CONT exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
1706     WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_INVALID_CONT');
1707 END IF;
1708 --
1709   WHEN WSH_INVALID_DELIVERY then
1710     x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1711     rollback to Autopack_SP_Grp;
1712     fnd_message.set_name('WSH', 'WSH_DET_INVALID_DEL');
1713     WSH_UTIL_CORE.ADD_MESSAGE(x_return_status);
1714 /*
1715 
1716     WSH_UTIL_CORE.get_messages('Y', l_msg_summary, l_msg_details, x_msg_count);
1717     if x_msg_count > 1 then
1718       x_msg_data := l_msg_summary || l_msg_details;
1719     else
1720       x_msg_data := l_msg_summary;
1721     end if;
1722 */
1723 
1724    --Bugfix 4070732 {
1725    IF  upper(WSH_UTIL_CORE.G_START_OF_SESSION_API)  = upper(l_api_session_name) THEN
1726       IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
1727          IF l_debug_on THEN
1728                WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Reset_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
1729          END IF;
1730 
1731          WSH_UTIL_CORE.Reset_stops_for_load_tender(p_reset_flags   => TRUE,
1732                                                    x_return_status => l_return_status);
1733 
1734 
1735          IF l_debug_on THEN
1736               WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
1737          END IF;
1738          IF l_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR THEN
1739              x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
1740          END IF;
1741 
1742       END IF;
1743    END IF;
1744    --}
1745    --End of bug 4070732
1746 
1747 
1748                 FND_MSG_PUB.Count_And_Get
1749                 ( p_count => x_msg_count
1750                 , p_data  => x_msg_data
1751                 , p_encoded => FND_API.G_FALSE
1752                 );
1753 --
1754 -- Debug Statements
1755 --
1756 IF l_debug_on THEN
1757     WSH_DEBUG_SV.logmsg(l_module_name,'WSH_INVALID_DELIVERY exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
1758     WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_INVALID_DELIVERY');
1759 END IF;
1760 --
1761   WHEN WSH_UTIL_CORE.G_EXC_WARNING then
1762     x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
1763     --
1764     -- K LPN CONV. rv
1765     --
1766     IF WSH_WMS_LPN_GRP.G_CALLBACK_REQUIRED = 'Y'
1767     THEN
1768     --{
1769         WSH_LPN_SYNC_COMM_PKG.SYNC_LPNS_TO_WMS
1770           (
1771             p_in_rec             => l_lpn_in_sync_comm_rec,
1772             x_return_status      => l_return_status,
1773             x_out_rec            => l_lpn_out_sync_comm_rec
1774           );
1775         --
1776         --
1777         IF l_debug_on THEN
1778           WSH_DEBUG_SV.log(l_module_name,'Return status after calling WSH_LPN_SYNC_COMM_PKG.SYNC_LPNS_TO_WMS',l_return_status);
1779         END IF;
1780         --
1781         --
1782         IF (l_return_status IN (WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR, WSH_UTIL_CORE.G_RET_STS_ERROR)) THEN
1783           x_return_status := l_return_status;
1784         END IF;
1785         --
1786     --}
1787     END IF;
1788     --
1789     -- K LPN CONV. rv
1790     --
1791 
1792    --Bugfix 4070732 {
1793    IF  upper(WSH_UTIL_CORE.G_START_OF_SESSION_API)  = upper(l_api_session_name) THEN
1794       IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
1795          IF l_debug_on THEN
1796                WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Process_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
1797          END IF;
1798 
1799          WSH_UTIL_CORE.Process_stops_for_load_tender(p_reset_flags   => TRUE,
1800                                                      x_return_status => l_return_status);
1801 
1802          IF l_debug_on THEN
1803               WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
1804          END IF;
1805 
1806          IF l_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR
1807           OR l_return_status = WSH_UTIL_CORE.G_RET_STS_ERROR THEN
1808             rollback to Autopack_SP_Grp;
1809             X_return_status := l_return_status;
1810          END IF;
1811 
1812       END IF;
1813    END IF;
1814    --}
1815    -- End of bug 4070732
1816 
1817 
1818                 FND_MSG_PUB.Count_And_Get
1819                 ( p_count => x_msg_count
1820                 , p_data  => x_msg_data
1821                 , p_encoded => FND_API.G_FALSE
1822                 );
1823                 IF l_debug_on THEN
1824                     WSH_DEBUG_SV.logmsg(l_module_name,'G_RET_STS_WARNING exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
1825                     WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:G_RET_STS_WARNING');
1826                 END IF;
1827                 --
1828   WHEN WSH_FAIL_AUTOPACK then
1829     x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1830     rollback to Autopack_SP_Grp;
1831     fnd_message.set_name('WSH', 'WSH_AUTOPACK_ERROR');
1832     WSH_UTIL_CORE.ADD_MESSAGE(x_return_status);
1833     --Bugfix 4070732 {
1834     IF  upper(WSH_UTIL_CORE.G_START_OF_SESSION_API)  = upper(l_api_session_name) THEN
1835       IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
1836          IF l_debug_on THEN
1837                WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Reset_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
1838          END IF;
1839 
1840          WSH_UTIL_CORE.Reset_stops_for_load_tender(p_reset_flags   => TRUE,
1841                                                    x_return_status => l_return_status);
1842 
1843 
1844          IF l_debug_on THEN
1845               WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
1846          END IF;
1847 
1848          IF l_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR THEN
1849             X_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
1850          END IF;
1851       END IF;
1852    END IF;
1853    --}
1854    --End of bug 4070732
1855 
1856 		FND_MSG_PUB.Count_And_Get
1857                 ( p_count => x_msg_count
1858                 , p_data  => x_msg_data
1859                 , p_encoded => FND_API.G_FALSE
1860                 );
1861                 IF l_debug_on THEN
1862                     WSH_DEBUG_SV.logmsg(l_module_name,'WSH_FAIL_AUTOPACK exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
1863                     WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_FAIL_AUTOPACK');
1864                 END IF;
1865                 --
1866   WHEN WSH_INVALID_ENTITY_TYPE then
1867     x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1868     rollback to Autopack_SP_Grp;
1869     fnd_message.set_name('WSH', 'WSH_PUB_CONT_TYPE_ERR');
1870     WSH_UTIL_CORE.ADD_MESSAGE(x_return_status);
1871 /*
1872 
1873     WSH_UTIL_CORE.get_messages('Y', l_msg_summary, l_msg_details, x_msg_count);
1874     if x_msg_count > 1 then
1875       x_msg_data := l_msg_summary || l_msg_details;
1876     else
1877       x_msg_data := l_msg_summary;
1878     end if;
1879 */
1880    --Bugfix 4070732 {
1881    IF  upper(WSH_UTIL_CORE.G_START_OF_SESSION_API)  = upper(l_api_session_name) THEN
1882       IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
1883          IF l_debug_on THEN
1884                WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Reset_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
1885          END IF;
1886 
1887          WSH_UTIL_CORE.Reset_stops_for_load_tender(p_reset_flags   => TRUE,
1888                                                    x_return_status => l_return_status);
1889 
1890 
1891          IF l_debug_on THEN
1892               WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
1893          END IF;
1894          IF l_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR THEN
1895             X_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
1896          END IF;
1897 
1898       END IF;
1899    END IF;
1900    --}
1901    --End of bug 4070732
1902 
1903 
1904                 FND_MSG_PUB.Count_And_Get
1905                 ( p_count => x_msg_count
1906                 , p_data  => x_msg_data
1907                 , p_encoded => FND_API.G_FALSE
1908                 );
1909 
1910 --
1911 -- Debug Statements
1912 --
1913 IF l_debug_on THEN
1914     WSH_DEBUG_SV.logmsg(l_module_name,'WSH_INVALID_ENTITY_TYPE exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
1915     WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_INVALID_ENTITY_TYPE');
1916 END IF;
1917 --
1918   WHEN OTHERS then
1919     wsh_util_core.default_handler('WSH_CONTAINER_PUB.Auto_Pack');
1920     x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
1921     rollback to Autopack_SP_Grp;
1922 
1923 /*
1924 
1925     WSH_UTIL_CORE.get_messages('Y', l_msg_summary, l_msg_details, x_msg_count);
1926     if x_msg_count > 1 then
1927       x_msg_data := l_msg_summary || l_msg_details;
1928     else
1929       x_msg_data := l_msg_summary;
1930       end if;
1931 
1932 */
1933    --Bugfix 4070732 {
1934    IF  upper(WSH_UTIL_CORE.G_START_OF_SESSION_API)  = upper(l_api_session_name) THEN
1935       IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
1936          IF l_debug_on THEN
1937                WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Reset_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
1938          END IF;
1939 
1940          WSH_UTIL_CORE.Reset_stops_for_load_tender(p_reset_flags   => TRUE,
1941                                                    x_return_status => l_return_status);
1942 
1943 
1944          IF l_debug_on THEN
1945               WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
1946          END IF;
1947 
1948       END IF;
1949    END IF;
1950    --}
1951    --End of bug 4070732
1952 
1953 
1954                 FND_MSG_PUB.Count_And_Get
1955                 ( p_count => x_msg_count
1956                 , p_data  => x_msg_data
1957                 , p_encoded => FND_API.G_FALSE
1958                 );
1959 
1960 --
1961 -- Debug Statements
1962 --
1963 IF l_debug_on THEN
1964     WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
1965     WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
1966 END IF;
1967 --
1968 END Auto_Pack;
1969 
1970 
1971 ------------------------------------------------------------------------------
1972 -- Procedure: Container_Actions
1973 --
1974 -- Parameters:  1) detail_tab - input table of delivery detail ids
1975 --    2) container_instance_id - delivery detail id of parent
1976 --      container that is being packed.
1977 --    3) container_name - container name if id is not known
1978 --    4) container_flag - 'Y' or 'N' depending on whether to unpack
1979 --      or not. ('Y' is unpack)
1980 --    5) delivery_flag - 'Y' or 'N' if container needs to be
1981 --      unassigned from delivery. ('Y' if unassign from del)
1982 --    6) delivery_id - delivery id to assign container to.
1983 --    7) delivery_name - name of delivery that container is being
1984 --      assigned to.
1985 --    8) action_code - action code 'Pack', 'Assign', 'Unpack' or
1986 --      'Unassign' to specify what action to perform.
1987 --    9) other standard parameters
1988 --
1989 -- Description: This procedure takes in a table of delivery detail ids and
1990 -- name and/or delivery detail id of container to pack. If the action code is
1991 -- is assign then delivery id and delivery name must be specified. The API
1992 -- determines what action to perform based on the action code and then calls
1993 -- appropriate private pack/assign/unpack/unassign API.
1994 -- The input table of ids could be lines or containers. The delivery lines and
1995 -- containers are separated from the input table and validated before the
1996 -- appropriate private APIs are called
1997 -- THIS PROCEDURE IS ONLY TO BE CALLED FROM
1998 -- WSH_DELIVERY_DETAIL_GRP.Delivery_Detail_Action
1999 
2000 ------------------------------------------------------------------------------
2001 
2002 
2003 
2004 
2005 PROCEDURE Container_Actions (
2006   -- Standard parameters
2007   p_api_version   IN  NUMBER,
2008   p_init_msg_list   IN  VARCHAR2  DEFAULT FND_API.G_FALSE,
2009   p_commit    IN  VARCHAR2  DEFAULT FND_API.G_FALSE,
2010   p_validation_level  IN  NUMBER    DEFAULT FND_API.G_VALID_LEVEL_FULL,
2011   x_return_status     OUT NOCOPY  VARCHAR2,
2012   x_msg_count     OUT NOCOPY  NUMBER,
2013   x_msg_data    OUT NOCOPY  VARCHAR2,
2014   -- program specific parameters
2015   p_detail_tab    IN  WSH_UTIL_CORE.ID_TAB_TYPE,
2016   p_container_name  IN  VARCHAR2 DEFAULT NULL,
2017   p_cont_instance_id  IN  NUMBER DEFAULT NULL,
2018   p_container_flag  IN  VARCHAR2  DEFAULT 'N',
2019   p_delivery_flag   IN  VARCHAR2  DEFAULT 'N',
2020   p_delivery_id   IN  NUMBER DEFAULT NULL,
2021   p_delivery_name   IN  VARCHAR2 DEFAULT NULL,
2022   p_action_code   IN  VARCHAR2 ,
2023         p_caller                IN      VARCHAR2 DEFAULT 'WMS'
2024 
2025 ) IS
2026  -- Standard call to check for call compatibility
2027  l_api_version    CONSTANT  NUMBER  := 1.0;
2028  l_api_name   CONSTANT  VARCHAR2(30):= 'Update_Containers';
2029 
2030  l_detail_tab   WSH_UTIL_CORE.ID_TAB_TYPE;
2031  l_cont_tab   WSH_UTIL_CORE.ID_TAB_TYPE;
2032 
2033  l_delivery_detail_id NUMBER;
2034  l_delivery_id    NUMBER;
2035  l_del_sts    VARCHAR2(10);
2036  l_delivery_name  VARCHAR2(30);
2037 
2038  l_cont_name    VARCHAR2(30)  := NULL;
2039  l_cont_flag    VARCHAR2(1);
2040  l_cont_instance_id NUMBER;
2041 
2042  l_old_cont_name  VARCHAR2(30);
2043  l_old_cont_instance_id NUMBER;
2044 
2045  l_det_cnt    NUMBER := 0;
2046  l_cont_cnt   NUMBER := 0;
2047  l_del_cnt    NUMBER := 0;
2048 
2049  i      NUMBER;
2050 
2051  l_msg_summary    VARCHAR2(32000) := NULL;
2052  l_msg_details    VARCHAR2(32000) := NULL;
2053 
2054  l_pack_status    VARCHAR2(30);
2055  l_group_api_flag       VARCHAR2(1);
2056  l_verify_status_lvl    NUMBER ;
2057  l_verify_org           NUMBER ;
2058  l_verify_dlvy          NUMBER ;
2059  l_wms_enabled_flag     VARCHAR2(10);
2060  l_dlvy_status_code     wsh_new_deliveries.status_code%TYPE;
2061  l_cont_org_id          NUMBER;
2062  l_cont_released_status wsh_delivery_details.released_status%TYPE;
2063  l_return_status  VARCHAR2(1) := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
2064  l_num_warning          NUMBER := 0;
2065  l_num_errors           NUMBER := 0;
2066  l_next                 NUMBER ;
2067 
2068  WSH_INVALID_CONT     EXCEPTION;
2069  WSH_INVALID_DETAIL     EXCEPTION;
2070  WSH_INVALID_DELIVERY     EXCEPTION;
2071  WSH_INVALID_ACTION     EXCEPTION;
2072  WSH_FAIL_CONT_ACTION     EXCEPTION;
2073  WSH_INVALID_ENTITY_TYPE    EXCEPTION;
2074 
2075  --Bug 4329611. Perf Fix .
2076  CURSOR Get_Detail_Id (v_cont_name VARCHAR2) IS
2077  SELECT delivery_detail_id, container_flag
2078  FROM WSH_DELIVERY_DETAILS
2079  WHERE container_name = v_cont_name
2080  --LPN reuse project
2081  AND released_status = 'X'
2082  AND container_flag = 'Y';
2083 
2084  CURSOR Check_Detail (v_detail_id NUMBER) IS
2085  SELECT wdd.delivery_detail_id, wdd.container_flag,wdd.released_status,
2086         wdd.organization_id ,wda.delivery_id
2087  FROM WSH_DELIVERY_DETAILS wdd, wsh_delivery_assignments_v wda
2088  WHERE wdd.delivery_detail_id = v_detail_id
2089        AND wdd.delivery_detail_id = wda.delivery_detail_id
2090        AND nvl(wdd.line_direction,'O') in ('O','IO');   -- J-IB-NPARIKH
2091 
2092  CURSOR Check_Delivery_by_id (v_del_id NUMBER) IS
2093  SELECT delivery_id, name, status_code
2094  FROM WSH_NEW_DELIVERIES
2095  WHERE delivery_id = v_del_id;
2096 
2097  CURSOR Check_Delivery_by_Name ( v_del_name VARCHAR2) IS
2098  SELECT delivery_id, name, status_code
2099  FROM WSH_NEW_DELIVERIES
2100  WHERE  name = v_del_name;
2101 
2102  CURSOR c_dlvy(l_delivery_id number) IS
2103    SELECT status_code
2104    FROM wsh_new_deliveries
2105    WHERE delivery_id = l_delivery_id;
2106 
2107  -- K LPN CONV. rv
2108  l_lpn_in_sync_comm_rec WSH_GLBL_VAR_STRCT_GRP.lpn_sync_comm_in_rec_type;
2109  l_lpn_out_sync_comm_rec WSH_GLBL_VAR_STRCT_GRP.lpn_sync_comm_out_rec_type;
2110  l_msg_count NUMBER;
2111  l_msg_data VARCHAR2(32767);
2112  -- K LPN CONV. rv
2113 
2114 l_debug_on BOOLEAN;
2115 --
2116 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CONTAINER_ACTIONS';
2117 --
2118 --Bugfix 4070732
2119 l_api_session_name CONSTANT VARCHAR2(150) := G_PKG_NAME ||'.' || l_module_name;
2120 l_reset_flags BOOLEAN;
2121 
2122 BEGIN
2123    --
2124    --Bugfix 4070732
2125    IF WSH_UTIL_CORE.G_START_OF_SESSION_API is null THEN
2126     WSH_UTIL_CORE.G_START_OF_SESSION_API     := l_api_session_name;
2127     WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API := FALSE;
2128    END IF;
2129    --
2130    l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
2131    --
2132    IF l_debug_on IS NULL
2133    THEN
2134        l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
2135    END IF;
2136    --
2137    SAVEPOINT Container_Action_SP_Grp;
2138    --
2139    IF l_debug_on THEN
2140       WSH_DEBUG_SV.push(l_module_name);
2141       --
2142       WSH_DEBUG_SV.log(l_module_name,'P_API_VERSION',P_API_VERSION);
2143       WSH_DEBUG_SV.log(l_module_name,'P_INIT_MSG_LIST',P_INIT_MSG_LIST);
2144       WSH_DEBUG_SV.log(l_module_name,'P_COMMIT',P_COMMIT);
2145       WSH_DEBUG_SV.log(l_module_name,'P_VALIDATION_LEVEL',P_VALIDATION_LEVEL);
2146       WSH_DEBUG_SV.log(l_module_name,'P_CONTAINER_NAME',P_CONTAINER_NAME);
2147       WSH_DEBUG_SV.log(l_module_name,'P_CONT_INSTANCE_ID',P_CONT_INSTANCE_ID);
2148       WSH_DEBUG_SV.log(l_module_name,'P_CONTAINER_FLAG',P_CONTAINER_FLAG);
2149       WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_FLAG',P_DELIVERY_FLAG);
2150       WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_ID',P_DELIVERY_ID);
2151       WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_NAME',P_DELIVERY_NAME);
2152       WSH_DEBUG_SV.log(l_module_name,'P_ACTION_CODE',P_ACTION_CODE);
2153       WSH_DEBUG_SV.log(l_module_name,'p_caller',p_caller);
2154    END IF;
2155    --
2156    -- Check p_init_msg_list
2157    IF FND_API.to_boolean(p_init_msg_list) THEN
2158       FND_MSG_PUB.initialize;
2159    END IF;
2160 
2161    IF NOT FND_API.compatible_api_call (
2162     l_api_version,
2163     p_api_version,
2164     l_api_name,
2165     G_PKG_NAME) THEN
2166       RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2167 
2168    END IF;
2169 
2170    x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
2171 
2172    IF p_caller LIKE 'WMS%' THEN
2173       l_group_api_flag := 'Y';
2174    END IF;
2175 
2176 
2177 
2178    IF nvl(p_detail_tab.COUNT,0) <= 0 THEN
2179       RAISE WSH_INVALID_DETAIL;
2180    END IF;
2181 
2182    IF p_validation_level <> C_DELIVERY_DETAIL_CALL THEN
2183       WSH_ACTIONS_LEVELS.set_validation_level (
2184                                   p_entity   =>  'DLVB',
2185                                   p_caller   =>  p_caller,
2186                                   p_phase    =>  1,
2187                                   p_action   =>p_action_code ,
2188                                   x_return_status => l_return_status);
2189 
2190       wsh_util_core.api_post_call(p_return_status  =>l_return_status,
2191                                  x_num_warnings     =>l_num_warning,
2192                                  x_num_errors       =>l_num_errors);
2193    END IF;
2194 
2195    l_verify_status_lvl := WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_CONTAINER_STATUS_LVL);
2196  l_verify_org  := WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_CONTAINER_ORG_LVL);
2197  l_verify_dlvy  := WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_CONT_DLVY_LVL);
2198 
2199    IF l_debug_on THEN
2200       WSH_DEBUG_SV.log(l_module_name,'l_verify_status_lvl'
2201                                                   ,l_verify_status_lvl);
2202       WSH_DEBUG_SV.log(l_module_name,'l_verify_org',l_verify_org);
2203       WSH_DEBUG_SV.log(l_module_name,'l_verify_dlvy',l_verify_dlvy);
2204    END IF;
2205 
2206    l_next := p_detail_tab.first;
2207    WHILE l_next IS NOT NULL LOOP
2208 
2209       OPEN Check_Detail (p_detail_tab(l_next));
2210       Fetch Check_Detail INTO
2211         l_delivery_detail_id,
2212         l_cont_flag,
2213         l_cont_released_status,
2214         l_cont_org_id,
2215         l_delivery_id;
2216         IF Check_Detail%NOTFOUND THEN
2217           CLOSE Check_Detail;
2218           FND_MESSAGE.SET_NAME('WSH','WSH_DET_INVALID_DETAIL');
2219           l_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
2220           WSH_UTIL_CORE.Add_Message(l_return_status,l_module_name);
2221         ELSE
2222            l_det_cnt := l_det_cnt + 1;
2223            l_detail_tab(l_det_cnt) := l_delivery_detail_id;
2224 
2225         END IF;
2226 
2227         IF Check_Detail%ISOPEN THEN
2228             CLOSE Check_Detail;
2229         END IF;
2230 
2231         l_next := p_detail_tab.NEXT(l_next);
2232 
2233    END LOOP;
2234 
2235 
2236    IF UPPER(p_action_code) = 'ASSIGN' THEN
2237       IF p_delivery_id IS NULL THEN --{
2238          IF p_delivery_name IS NULL THEN
2239             RAISE WSH_INVALID_DELIVERY;
2240          END IF;
2241          OPEN Check_Delivery_by_Name ( p_delivery_name);
2242          FETCH Check_Delivery_by_Name INTO
2243             l_delivery_id,
2244             l_delivery_name,
2245             l_del_sts;
2246 
2247             IF Check_Delivery_by_Name%NOTFOUND OR SQL%ROWCOUNT > 1 OR (nvl(l_del_sts,'OP') NOT IN ('OP', 'SA')) THEN
2248                CLOSE Check_Delivery_by_Name;
2249                RAISE WSH_INVALID_DELIVERY;
2250             END IF;
2251 
2252             IF Check_Delivery_by_Name%ISOPEN THEN
2253                CLOSE Check_Delivery_by_Name;
2254             END IF;
2255       ELSE --}{
2256          OPEN Check_Delivery_by_id (p_delivery_id);
2257 
2258          Fetch Check_Delivery_by_id INTO
2259             l_delivery_id,
2260             l_delivery_name,
2261             l_del_sts;
2262 
2263             IF Check_Delivery_by_id%NOTFOUND OR SQL%ROWCOUNT > 1 OR (nvl(l_del_sts,'OP') NOT IN  ('OP', 'SA') )THEN
2264                CLOSE Check_Delivery_by_id;
2265                RAISE WSH_INVALID_DELIVERY;
2266             END IF;
2267          -- close the cursor
2268             IF Check_Delivery_by_id%ISOPEN THEN
2269                CLOSE Check_Delivery_by_id;
2270             END IF;
2271       END IF; --}
2272 
2273    END IF;
2274    IF UPPER(p_action_code) in ('PACK','UNPACK') THEN
2275       IF l_verify_org=1 THEN
2276          l_wms_enabled_flag := WSH_UTIL_VALIDATE.check_wms_org(l_cont_org_id);
2277          IF l_debug_on THEN
2278            WSH_DEBUG_SV.log(l_module_name,'l_wms_enabled_flag'
2279                                                ,l_wms_enabled_flag);
2280          END IF;
2281 
2282          IF NVL(l_wms_enabled_flag,'N') = 'Y' THEN
2283             RAISE WSH_INVALID_CONT;
2284          END IF;
2285       END IF;
2286    END IF;
2287 
2288    IF UPPER(p_action_code) = 'PACK' THEN
2289 
2290       IF p_cont_instance_id IS NULL THEN
2291 
2292          OPEN Get_Detail_Id (p_container_name);
2293 
2294          FETCH Get_Detail_Id INTO
2295             l_cont_instance_id,
2296             l_cont_flag;
2297 
2298             IF Get_Detail_Id%NOTFOUND OR SQL%ROWCOUNT > 1 OR (nvl(l_cont_flag,'N') = 'N') THEN
2299                CLOSE Get_Detail_Id;
2300                RAISE WSH_INVALID_CONT;
2301 
2302             ELSE
2303                CLOSE Get_Detail_Id;
2304             END IF;
2305       ELSE l_cont_instance_id := p_cont_instance_id;
2306       END IF;
2307          IF l_debug_on THEN
2308             WSH_DEBUG_SV.log(l_module_name,'l_verify_status_lvl'
2309                                                         ,l_verify_status_lvl);
2310             WSH_DEBUG_SV.log(l_module_name,'l_verify_org',l_verify_org);
2311             WSH_DEBUG_SV.log(l_module_name,'l_verify_dlvy',l_verify_dlvy);
2312             WSH_DEBUG_SV.log(l_module_name,'l_cont_instance_id'
2313                                                          ,l_cont_instance_id);
2314          END IF;
2315          IF l_verify_status_lvl =1 OR l_verify_org=1 OR l_verify_dlvy=1 THEN
2316 
2317             OPEN Check_Detail (l_cont_instance_id);
2318             Fetch Check_Detail INTO
2319                l_cont_instance_id,
2320                l_cont_flag,
2321                l_cont_released_status,
2322                l_cont_org_id,
2323                l_delivery_id;
2324 
2325                IF Check_Detail%NOTFOUND THEN
2326                   CLOSE Check_Detail;
2327                   RAISE WSH_INVALID_CONT;
2328                ELSE
2329                   CLOSE Check_Detail;
2330                END IF;
2331                IF l_debug_on THEN
2332                  WSH_DEBUG_SV.log(l_module_name,'l_cont_instance_id'
2333                                                         ,l_cont_instance_id);
2334                  WSH_DEBUG_SV.log(l_module_name,'l_cont_flag',l_cont_flag);
2335                  WSH_DEBUG_SV.log(l_module_name,'l_cont_released_status'
2336                                                       ,l_cont_released_status);
2337                  WSH_DEBUG_SV.log(l_module_name,'l_cont_org_id',l_cont_org_id);
2338                  WSH_DEBUG_SV.log(l_module_name,'l_delivery_id',l_delivery_id);
2339                END IF;
2340 
2341                IF l_verify_status_lvl=1 THEN
2342                   IF (nvl(l_cont_flag,'N') = 'N')
2343                     OR (NVL(l_cont_released_status,'Z') <> 'X')  THEN
2344                     RAISE WSH_INVALID_CONT;
2345                   END IF;
2346                END IF;
2347                IF (l_verify_dlvy =1) AND (l_delivery_id IS NOT NULL )THEN
2348                   OPEN c_dlvy(l_delivery_id);
2349                   FETCH c_dlvy INTO l_dlvy_status_code;
2350                   IF c_dlvy%NOTFOUND THEN
2351                      CLOSE c_dlvy;
2352                      RAISE WSH_INVALID_DELIVERY;
2353                   ELSE
2354                      CLOSE c_dlvy;
2355                   END IF;
2356                   IF l_debug_on THEN
2357                     WSH_DEBUG_SV.log(l_module_name,'l_dlvy_status_code'
2358                                                         ,l_dlvy_status_code);
2359                   END IF;
2360                   IF l_dlvy_status_code <> 'OP' THEN
2361                      RAISE WSH_INVALID_DELIVERY ;
2362                   END IF;
2363                END IF;
2364          END IF;
2365          -- verified call the private APIs to pack..
2366     END IF;
2367 
2368     IF UPPER(p_action_code) = 'UNPACK' THEN
2369       IF nvl(p_container_flag,'N') = 'N' THEN
2370          RAISE WSH_INVALID_ACTION;
2371       END IF;
2372    ELSIF UPPER(p_action_code) = 'UNASSIGN' THEN
2373       IF nvl(p_delivery_flag,'N') = 'N' THEN
2374          RAISE WSH_INVALID_ACTION;
2375       END IF;
2376    END IF;
2377    -- call the private APIs to assign/unassign..
2378 
2379    IF (UPPER(p_action_code) = 'PACK') OR (UPPER(p_action_code) = 'ASSIGN') THEN
2380       IF l_debug_on THEN
2381             WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_DLVB_COMMON_ACTIONS.ASSIGN_DETAILS',WSH_DEBUG_SV.C_PROC_LEVEL);
2382       END IF;
2383       --
2384       WSH_DLVB_COMMON_ACTIONS.Assign_Details (
2385                p_detail_tab => l_detail_tab,
2386                p_parent_detail_id => l_cont_instance_id,
2387                p_delivery_id => l_delivery_id,
2388                p_group_api_flag => l_group_api_flag,
2389                x_pack_status => l_pack_status,
2390                x_return_status => x_return_status);
2391 
2392       IF x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS THEN
2393          IF x_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING THEN
2394             RAISE WSH_UTIL_CORE.G_EXC_WARNING;
2395          ELSE
2396             RAISE WSH_FAIL_CONT_ACTION;
2397          END IF;
2398       ELSE
2399        --Start of fix for bug 5234326/5282496
2400         IF ( l_cont_instance_id IS NOT NULL ) THEN
2401           IF l_debug_on THEN
2402             WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_TP_RELEASE.CALCULATE_CONT_DEL_TPDATES for entity LPN',WSH_DEBUG_SV.C_PROC_LEVEL);
2403           END IF;
2404 
2405           l_cont_tab(1) := l_cont_instance_id;
2406           WSH_TP_RELEASE.calculate_cont_del_tpdates(
2407               p_entity => 'LPN',
2408               p_entity_ids =>l_cont_tab,
2409               x_return_status => x_return_status);
2410         ELSE
2411           IF l_debug_on THEN
2412             WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_TP_RELEASE.CALCULATE_CONT_DEL_TPDATES for entity DLVB',WSH_DEBUG_SV.C_PROC_LEVEL);
2413           END IF;
2414           WSH_TP_RELEASE.calculate_cont_del_tpdates(
2415               p_entity => 'DLVB',
2416               p_entity_ids =>l_detail_tab,
2417               x_return_status => x_return_status);
2418         END IF;
2419         --End of fix for bug 5234326/5282496
2420 
2421       END IF;
2422    ELSIF (UPPER(p_action_code) = 'UNPACK') OR (UPPER(p_action_code) = 'UNASSIGN') THEN
2423       IF l_debug_on THEN
2424          WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_DLVB_COMMON_ACTIONS.UNASSIGN_DETAILS',WSH_DEBUG_SV.C_PROC_LEVEL);
2425       END IF;
2426       WSH_DLVB_COMMON_ACTIONS.Unassign_Details (
2427                p_detail_tab => l_detail_tab,
2428                p_parent_detail_flag => p_container_flag,
2429                p_delivery_flag => p_delivery_flag,
2430                p_group_api_flag => l_group_api_flag,
2431                x_return_status => x_return_status);
2432 
2433       IF x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS THEN
2434          IF x_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING THEN
2435             RAISE WSH_UTIL_CORE.G_EXC_WARNING;
2436          ELSE
2437             RAISE WSH_FAIL_CONT_ACTION;
2438          END IF;
2439       END IF;
2440    ELSE
2441       RAISE WSH_INVALID_ACTION;
2442    END IF;
2443 
2444    --
2445    -- K LPN CONV. rv
2446    --
2447    IF WSH_WMS_LPN_GRP.G_CALLBACK_REQUIRED = 'Y'
2448    THEN
2449    --{
2450        WSH_LPN_SYNC_COMM_PKG.SYNC_LPNS_TO_WMS
2451          (
2452            p_in_rec             => l_lpn_in_sync_comm_rec,
2453            x_return_status      => l_return_status,
2454            x_out_rec            => l_lpn_out_sync_comm_rec
2455          );
2456        --
2457        --
2458        IF l_debug_on THEN
2459          WSH_DEBUG_SV.log(l_module_name,'Return status after calling WSH_LPN_SYNC_COMM_PKG.SYNC_LPNS_TO_WMS',l_return_status);
2460          WSH_DEBUG_SV.log(l_module_name,'Msg Count after calling WSH_LPN_SYNC_COMM_PKG.SYNC_LPNS_TO_WMS',l_msg_count);
2461        END IF;
2462        --
2463        --
2464        IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS THEN
2465          IF l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING THEN
2466            RAISE WSH_UTIL_CORE.G_EXC_WARNING;
2467          ELSIF l_return_status = WSH_UTIL_CORE.G_RET_STS_ERROR THEN
2468            RAISE WSH_FAIL_CONT_ACTION;
2469          ELSE
2470            RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2471          END IF;
2472        END IF;
2473    --}
2474    END IF;
2475    --
2476    -- K LPN CONV. rv
2477    --
2478 
2479 
2480    --Bugfix 4070732 {
2481    IF FND_API.TO_BOOLEAN(p_commit) THEN
2482       l_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
2483       IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
2484          WSH_UTIL_CORE.Process_stops_for_load_tender(
2485                                     p_reset_flags   => FALSE,
2486                                     x_return_status => l_return_status);
2487       END IF;
2488       IF (l_return_status = WSH_UTIL_CORE.G_RET_STS_SUCCESS)
2489        OR (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING) THEN --{
2490 
2491          COMMIT;
2492 
2493       END IF; --}
2494 
2495       wsh_util_core.api_post_call(p_return_status  =>l_return_status,
2496                                  x_num_warnings     =>l_num_warning,
2497                                  x_num_errors       =>l_num_errors);
2498    END IF;
2499    --Bugfix 4070732 }
2500 
2501 /*
2502    WSH_UTIL_CORE.get_messages('Y', l_msg_summary, l_msg_details, x_msg_count);
2503    if x_msg_count > 1 then
2504       x_msg_data := l_msg_summary || l_msg_details;
2505    else
2506       x_msg_data := l_msg_summary;
2507    end if;
2508 */
2509 
2510    x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
2511   --Bugfix 4070732 {
2512   IF  upper(WSH_UTIL_CORE.G_START_OF_SESSION_API)  <> upper(l_api_session_name)
2513   THEN --{
2514     IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
2515      IF FND_API.TO_BOOLEAN(p_commit) THEN
2516 
2517        IF l_debug_on THEN
2518             WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.reset_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
2519        END IF;
2520        WSH_UTIL_CORE.reset_stops_for_load_tender(
2521                                      p_reset_flags   => TRUE,
2522                                      x_return_status => l_return_status);
2523 
2524      ELSE
2525 
2526 
2527        IF l_debug_on THEN
2528             WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Process_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
2529        END IF;
2530        WSH_UTIL_CORE.Process_stops_for_load_tender(
2531                                      p_reset_flags   => TRUE,
2532                                      x_return_status => l_return_status);
2533      END IF;
2534 
2535        IF l_debug_on THEN
2536            WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
2537        END IF;
2538 
2539               IF l_return_status IN (WSH_UTIL_CORE.G_RET_STS_ERROR,
2540                                    WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR) THEN
2541                 IF NOT(FND_API.TO_BOOLEAN(p_commit)) THEN
2542                    rollback to Container_Action_SP_Grp;
2543 	        end if;
2544               END IF;
2545        --x_return_status is set to success before the call to fte load tender
2546        -- setting the return status to l_return_status
2547        x_return_status := l_return_status;
2548 
2549     END IF;
2550   END IF; --}
2551 
2552   --}
2553   --End of bug 4070732
2554 
2555 
2556    FND_MSG_PUB.Count_And_Get
2557    ( p_count => x_msg_count
2558    , p_data  => x_msg_data
2559    , p_encoded => FND_API.G_FALSE
2560    );
2561    --
2562    IF l_debug_on THEN
2563        WSH_DEBUG_SV.pop(l_module_name);
2564    END IF;
2565    --
2566 EXCEPTION
2567 
2568   WHEN WSH_UTIL_CORE.G_EXC_WARNING then
2569     x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
2570     --
2571     -- K LPN CONV. rv
2572     --
2573     IF WSH_WMS_LPN_GRP.G_CALLBACK_REQUIRED = 'Y'
2574     THEN
2575     --{
2576         WSH_LPN_SYNC_COMM_PKG.SYNC_LPNS_TO_WMS
2577           (
2578             p_in_rec             => l_lpn_in_sync_comm_rec,
2579             x_return_status      => l_return_status,
2580             x_out_rec            => l_lpn_out_sync_comm_rec
2581           );
2582         --
2583         --
2584         IF l_debug_on THEN
2585           WSH_DEBUG_SV.log(l_module_name,'Return status after calling WSH_LPN_SYNC_COMM_PKG.SYNC_LPNS_TO_WMS',l_return_status);
2586           WSH_DEBUG_SV.log(l_module_name,'Msg Count after calling WSH_LPN_SYNC_COMM_PKG.SYNC_LPNS_TO_WMS',l_msg_count);
2587         END IF;
2588         --
2589         --
2590         IF (l_return_status IN (WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR, WSH_UTIL_CORE.G_RET_STS_ERROR)) THEN
2591           x_return_status := l_return_status;
2592         END IF;
2593         --
2594     --}
2595     END IF;
2596     --
2597     -- K LPN CONV. rv
2598     --
2599 
2600     --Bugfix 4070732 {
2601     IF  upper(WSH_UTIL_CORE.G_START_OF_SESSION_API)  = upper(l_api_session_name) THEN
2602       IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
2603          IF l_debug_on THEN
2604                WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Process_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
2605          END IF;
2606 
2607          WSH_UTIL_CORE.Process_stops_for_load_tender(p_reset_flags   => TRUE,
2608                                                      x_return_status => l_return_status);
2609 
2610          IF l_debug_on THEN
2611               WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
2612          END IF;
2613 
2614          IF (l_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR)
2615            OR (l_return_status = WSH_UTIL_CORE.G_RET_STS_ERROR) THEN
2616            rollback to Container_Action_SP_Grp;
2617            x_return_status := l_return_status;
2618          END IF;
2619       END IF;
2620     END IF;
2621     --}
2622 
2623     FND_MSG_PUB.Count_And_Get
2624            ( p_count => x_msg_count
2625            , p_data  => x_msg_data
2626            , p_encoded => FND_API.G_FALSE
2627            );
2628     IF l_debug_on THEN
2629        WSH_DEBUG_SV.logmsg(l_module_name,'G_RET_STS_WARNING exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
2630        WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:G_RET_STS_WARNING');
2631     END IF;
2632 
2633    WHEN WSH_INVALID_DETAIL then
2634       x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
2635       rollback to Container_Action_SP_Grp;
2636       fnd_message.set_name('WSH', 'WSH_DET_INVALID_DETAIL');
2637       WSH_UTIL_CORE.ADD_MESSAGE(x_return_status);
2638 /*
2639       WSH_UTIL_CORE.get_messages('Y', l_msg_summary, l_msg_details, x_msg_count);
2640       if x_msg_count > 1 then
2641          x_msg_data := l_msg_summary || l_msg_details;
2642       else
2643          x_msg_data := l_msg_summary;
2644       end if;
2645 */
2646 
2647      --Bugfix 4070732 {
2648      IF  upper(WSH_UTIL_CORE.G_START_OF_SESSION_API)  = upper(l_api_session_name) THEN
2649         IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
2650            IF l_debug_on THEN
2651                WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Reset_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
2652            END IF;
2653 
2654            WSH_UTIL_CORE.Reset_stops_for_load_tender(p_reset_flags   => TRUE,
2655                                                      x_return_status => l_return_status);
2656 
2657 
2658            IF l_debug_on THEN
2659               WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
2660            END IF;
2661 
2662            IF (l_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR) THEN
2663              x_return_status := l_return_status;
2664            END IF;
2665 
2666         END IF;
2667      END IF;
2668      --}
2669      --End of bug 4070732
2670 
2671       FND_MSG_PUB.Count_And_Get
2672       ( p_count => x_msg_count
2673       , p_data  => x_msg_data
2674       , p_encoded => FND_API.G_FALSE
2675       );
2676       IF l_debug_on THEN
2677          WSH_DEBUG_SV.logmsg(l_module_name,'WSH_INVALID_DETAIL exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
2678          WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_INVALID_DETAIL');
2679       END IF;
2680 
2681    WHEN WSH_INVALID_CONT then
2682       x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
2683       rollback to Container_Action_SP_Grp;
2684       fnd_message.set_name('WSH', 'WSH_CONT_INVALID_NAME');
2685       WSH_UTIL_CORE.ADD_MESSAGE(x_return_status);
2686 /*
2687       WSH_UTIL_CORE.get_messages('Y', l_msg_summary, l_msg_details, x_msg_count);
2688       if x_msg_count > 1 then
2689          x_msg_data := l_msg_summary || l_msg_details;
2690       else
2691          x_msg_data := l_msg_summary;
2692       end if;
2693 */
2694 
2695      --Bugfix 4070732 {
2696      IF  upper(WSH_UTIL_CORE.G_START_OF_SESSION_API)  = upper(l_api_session_name) THEN
2697         IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
2698            IF l_debug_on THEN
2699                WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Reset_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
2700            END IF;
2701 
2702            WSH_UTIL_CORE.Reset_stops_for_load_tender(p_reset_flags   => TRUE,
2703                                                      x_return_status => l_return_status);
2704 
2705 
2706            IF l_debug_on THEN
2707               WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
2708            END IF;
2709 
2710            IF (l_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR) THEN
2711              x_return_status := l_return_status;
2712            END IF;
2713         END IF;
2714      END IF;
2715      --}
2716      --End of bug 4070732
2717 
2718       FND_MSG_PUB.Count_And_Get
2719       ( p_count => x_msg_count
2720       , p_data  => x_msg_data
2721       , p_encoded => FND_API.G_FALSE
2722       );
2723       IF l_debug_on THEN
2724          WSH_DEBUG_SV.logmsg(l_module_name,'WSH_INVALID_CONT exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
2725          WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_INVALID_CONT');
2726       END IF;
2727       --
2728    WHEN WSH_INVALID_DELIVERY then
2729       x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
2730       rollback to Container_Action_SP_Grp;
2731       fnd_message.set_name('WSH', 'WSH_DET_INVALID_DEL');
2732       WSH_UTIL_CORE.ADD_MESSAGE(x_return_status);
2733 /*
2734       WSH_UTIL_CORE.get_messages('Y', l_msg_summary, l_msg_details, x_msg_count);
2735       if x_msg_count > 1 then
2736          x_msg_data := l_msg_summary || l_msg_details;
2737       else
2738          x_msg_data := l_msg_summary;
2739       end if;
2740 */
2741 
2742      --Bugfix 4070732 {
2743      IF  upper(WSH_UTIL_CORE.G_START_OF_SESSION_API)  = upper(l_api_session_name) THEN
2744         IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
2745            IF l_debug_on THEN
2746                WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Reset_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
2747            END IF;
2748 
2749            WSH_UTIL_CORE.Reset_stops_for_load_tender(p_reset_flags   => TRUE,
2750                                                      x_return_status => l_return_status);
2751 
2752 
2753            IF l_debug_on THEN
2754               WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
2755            END IF;
2756 
2757            IF (l_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR) THEN
2758              x_return_status := l_return_status;
2759            END IF;
2760         END IF;
2761      END IF;
2762      --}
2763      --End of bug 4070732
2764 
2765       FND_MSG_PUB.Count_And_Get
2766       ( p_count => x_msg_count
2767       , p_data  => x_msg_data
2768       , p_encoded => FND_API.G_FALSE
2769       );
2770       IF l_debug_on THEN
2771          WSH_DEBUG_SV.logmsg(l_module_name,'WSH_INVALID_DELIVERY exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
2772          WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_INVALID_DELIVERY');
2773       END IF;
2774       --
2775    WHEN WSH_FAIL_CONT_ACTION then
2776       x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
2777       rollback to Container_Action_SP_Grp;
2778       fnd_message.set_name('WSH', 'WSH_CONT_ACTION_ERROR');
2779       WSH_UTIL_CORE.ADD_MESSAGE(x_return_status);
2780 /*
2781       WSH_UTIL_CORE.get_messages('Y', l_msg_summary, l_msg_details, x_msg_count);
2782       if x_msg_count > 1 then
2783          x_msg_data := l_msg_summary || l_msg_details;
2784       else
2785          x_msg_data := l_msg_summary;
2786       end if;
2787 */
2788 
2789      --Bugfix 4070732 {
2790      IF  upper(WSH_UTIL_CORE.G_START_OF_SESSION_API)  = upper(l_api_session_name) THEN
2791         IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
2792            IF l_debug_on THEN
2793                WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Reset_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
2794            END IF;
2795 
2796            WSH_UTIL_CORE.Reset_stops_for_load_tender(p_reset_flags   => TRUE,
2797                                                      x_return_status => l_return_status);
2798 
2799 
2800            IF l_debug_on THEN
2801               WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
2802            END IF;
2803 
2804            IF (l_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR) THEN
2805              x_return_status := l_return_status;
2806            END IF;
2807         END IF;
2808      END IF;
2809      --}
2810      --End of bug 4070732
2811 
2812       FND_MSG_PUB.Count_And_Get
2813       ( p_count => x_msg_count
2814       , p_data  => x_msg_data
2815       , p_encoded => FND_API.G_FALSE
2816       );
2817       IF l_debug_on THEN
2818          WSH_DEBUG_SV.logmsg(l_module_name,'WSH_FAIL_CONT_ACTION exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
2819          WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_FAIL_CONT_ACTION');
2820       END IF;
2821       --
2822    WHEN WSH_INVALID_ENTITY_TYPE then
2823       x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
2824       rollback to Container_Action_SP_Grp;
2825       fnd_message.set_name('WSH', 'WSH_PUB_CONT_TYPE_ERR');
2826       WSH_UTIL_CORE.ADD_MESSAGE(x_return_status);
2827 /*
2828       WSH_UTIL_CORE.get_messages('Y', l_msg_summary, l_msg_details, x_msg_count);
2829       if x_msg_count > 1 then
2830          x_msg_data := l_msg_summary || l_msg_details;
2831       else
2832          x_msg_data := l_msg_summary;
2833       end if;
2834 */
2835      --Bugfix 4070732 {
2836      IF  upper(WSH_UTIL_CORE.G_START_OF_SESSION_API)  = upper(l_api_session_name) THEN
2837         IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
2838            IF l_debug_on THEN
2839                WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Reset_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
2840            END IF;
2841 
2842            WSH_UTIL_CORE.Reset_stops_for_load_tender(p_reset_flags   => TRUE,
2843                                                      x_return_status => l_return_status);
2844 
2845 
2846            IF l_debug_on THEN
2847               WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
2848            END IF;
2849 
2850            IF (l_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR) THEN
2851              x_return_status := l_return_status;
2852            END IF;
2853         END IF;
2854      END IF;
2855      --}
2856      --End of bug 4070732
2857 
2858       FND_MSG_PUB.Count_And_Get
2859       ( p_count => x_msg_count
2860       , p_data  => x_msg_data
2861       , p_encoded => FND_API.G_FALSE
2862       );
2863       IF l_debug_on THEN
2864          WSH_DEBUG_SV.logmsg(l_module_name,'WSH_INVALID_ENTITY_TYPE exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
2865          WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_INVALID_ENTITY_TYPE');
2866       END IF;
2867       --
2868    WHEN FND_API.G_EXC_ERROR THEN
2869       x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
2870       rollback to Container_Action_SP_Grp;
2871      --Bugfix 4070732 {
2872      IF  upper(WSH_UTIL_CORE.G_START_OF_SESSION_API)  = upper(l_api_session_name) THEN
2873         IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
2874            IF l_debug_on THEN
2875                WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Reset_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
2876            END IF;
2877 
2878            WSH_UTIL_CORE.Reset_stops_for_load_tender(p_reset_flags   => TRUE,
2879                                                    x_return_status => l_return_status);
2880 
2881 
2882            IF l_debug_on THEN
2883               WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
2884            END IF;
2885            IF l_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR THEN
2886               x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
2887            END IF;
2888 
2889         END IF;
2890      END IF;
2891      --}
2892      --End of bug 4070732
2893 
2894       FND_MSG_PUB.Count_And_Get
2895       ( p_count => x_msg_count
2896       , p_data  => x_msg_data
2897       , p_encoded => FND_API.G_FALSE
2898       );
2899 
2900       IF l_debug_on THEN
2901          WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
2902          WSH_DEBUG_SV.pop(l_module_name);
2903       END IF;
2904    WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2905       x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
2906       rollback to Container_Action_SP_Grp;
2907      --Bugfix 4070732 {
2908      IF  upper(WSH_UTIL_CORE.G_START_OF_SESSION_API)  = upper(l_api_session_name) THEN
2909         IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
2910            IF l_debug_on THEN
2911                WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Reset_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
2912            END IF;
2913 
2914            WSH_UTIL_CORE.Reset_stops_for_load_tender(p_reset_flags   => TRUE,
2915                                                    x_return_status => l_return_status);
2916 
2917 
2918            IF l_debug_on THEN
2919               WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
2920            END IF;
2921 
2922         END IF;
2923      END IF;
2924      --}
2925      --End of bug 4070732
2926 
2927       FND_MSG_PUB.Count_And_Get
2928       ( p_count => x_msg_count
2929       , p_data  => x_msg_data
2930       , p_encoded => FND_API.G_FALSE
2931       );
2932 
2933       IF l_debug_on THEN
2934          WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
2935          WSH_DEBUG_SV.pop(l_module_name);
2936       END IF;
2937    WHEN OTHERS then
2938       wsh_util_core.default_handler('WSH_CONTAINER_GRP.Container_Actions');
2939       x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
2940       rollback to Container_Action_SP_Grp;
2941 /*
2942       WSH_UTIL_CORE.get_messages('Y', l_msg_summary, l_msg_details, x_msg_count);
2943       if x_msg_count > 1 then
2944          x_msg_data := l_msg_summary || l_msg_details;
2945       else
2946          x_msg_data := l_msg_summary;
2947       end if;
2948 */
2949      --Bugfix 4070732 {
2950      IF  upper(WSH_UTIL_CORE.G_START_OF_SESSION_API)  = upper(l_api_session_name) THEN
2951         IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
2952            IF l_debug_on THEN
2953                WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Reset_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
2954            END IF;
2955 
2956            WSH_UTIL_CORE.Reset_stops_for_load_tender(p_reset_flags   => TRUE,
2957                                                    x_return_status => l_return_status);
2958 
2959 
2960            IF l_debug_on THEN
2961               WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
2962            END IF;
2963 
2964         END IF;
2965      END IF;
2966      --}
2967      --End of bug 4070732
2968 
2969       FND_MSG_PUB.Count_And_Get
2970       ( p_count => x_msg_count
2971       , p_data  => x_msg_data
2972       , p_encoded => FND_API.G_FALSE
2973       );
2974 
2975       IF l_debug_on THEN
2976          WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
2977          WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
2978       END IF;
2979       --
2980 END Container_Actions;
2981 
2982 
2983 END WSH_CONTAINER_GRP;