DBA Data[Home] [Help]

PACKAGE BODY: APPS.WSH_DELIVERY_DETAILS_PUB

Source


1 PACKAGE BODY WSH_DELIVERY_DETAILS_PUB as
2 /* $Header: WSHDDPBB.pls 120.3 2006/03/21 12:57:11 wrudge ship $ */
3 
4   -- standard global constants
5   G_PKG_NAME CONSTANT VARCHAR2(30)    := 'WSH_DELIVERY_DETAILS_PUB';
6   p_message_type  CONSTANT VARCHAR2(1)  := 'E';
7 
8 
9 PROCEDURE Copy_Attributes(
10   x_detail_info_tab OUT NOCOPY WSH_GLBL_VAR_STRCT_GRP.Delivery_Details_Attr_Tbl_Type
11 , x_changed_attributes IN WSH_DELIVERY_DETAILS_PUB.ChangedAttributeTabType);
12 
13 
14 -- -----------------------------------------------------------------------
15 -- Procedure: detail_to_delivery
16 --
17 -- Parameters:    1) table of delivery_detail_ids
18 --            2) action: assign/unassign
19 --            3) delivery_id: need to specify delivery id or delivery name
20 --              if the action is 'ASSIGN'
21 --            4) delivery_name: need to specify delivery id or delivery
22 --              name if the action is 'ASSIGN'
23 --            5) other standard parameters
24 --
25 --
26 -- Description:  This procedure assign/unassign delivery_details to
27 --            a delivery.
28 -- Parameters: p_TabOfDelDets: required
29 --          p_action: required
30 --          p_delivery_id: required if action='ASSIGN'
31 -- -----------------------------------------------------------------------
32 
33 PROCEDURE detail_to_delivery(
34   -- Standard parameters
35   p_api_version         IN NUMBER,
36   p_init_msg_list       IN VARCHAR2,
37   p_commit              IN VARCHAR2,
38   p_validation_level      IN NUMBER,
39   x_return_status       OUT NOCOPY  VARCHAR2,
40   x_msg_count           OUT NOCOPY  NUMBER,
41   x_msg_data            OUT NOCOPY  VARCHAR2,
42 
43   -- procedure specific parameters
44   p_TabOfDelDets          IN ID_TAB_TYPE,
45   p_action              IN VARCHAR2,
46   p_delivery_id         IN NUMBER,
47   p_delivery_name       IN VARCHAR2
48   ) IS
49 
50 -- Standard call to check for call compatibility
51 l_api_version CONSTANT  NUMBER    := 1.0;
52 l_api_name    CONSTANT  VARCHAR2(30):= 'delivery_detail_to_delivery';
53 
54 l_return_status VARCHAR2(30)  := NULL;
55 l_delivery_id number        := NULL;
56 l_cont_ins_id number        := NULL;
57 l_TabOfDelDets WSH_UTIL_CORE.ID_TAB_TYPE;
58 l_msg_summary varchar2(2000)  := NULL;
59 l_msg_details varchar2(4000)  := NULL;
60 
61 -- Harmonization Project
62       l_action_prms             WSH_GLBL_VAR_STRCT_GRP.dd_action_parameters_rec_type;
63       l_action_out_rec         WSH_GLBL_VAR_STRCT_GRP.dd_action_out_rec_type;
64       l_dummy_qty               NUMBER;
65       l_dummy_qty2              NUMBER;
66       l_dummy_ids               wsh_util_core.id_tab_type;
67 
68   l_msg_count                 NUMBER;
69   l_msg_data                  VARCHAR2(32767);
70   l_number_of_errors    NUMBER := 0;
71   l_number_of_warnings  NUMBER := 0;
72 
73 -- Harmonization Project
74 
75 WSH_NO_DEL_DET_TBL        exception;
76 --
77 l_debug_on BOOLEAN;
78 --
79 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'DETAIL_TO_DELIVERY';
80 --
81 begin
82 
83     -- Standard begin of API savepoint
84   --
85   l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
86   --
87   IF l_debug_on IS NULL
88   THEN
89       l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
90   END IF;
91   --
92   SAVEPOINT DETAIL_TO_DELIVERY_PUB;
93   IF l_debug_on THEN
94       WSH_DEBUG_SV.push(l_module_name);
95       --
96       WSH_DEBUG_SV.log(l_module_name,'P_API_VERSION',P_API_VERSION);
97       WSH_DEBUG_SV.log(l_module_name,'P_INIT_MSG_LIST',P_INIT_MSG_LIST);
98       WSH_DEBUG_SV.log(l_module_name,'P_COMMIT',P_COMMIT);
99       WSH_DEBUG_SV.log(l_module_name,'P_VALIDATION_LEVEL',P_VALIDATION_LEVEL);
100       WSH_DEBUG_SV.log(l_module_name,'P_ACTION',P_ACTION);
101       WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_ID',P_DELIVERY_ID);
102       WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_NAME',P_DELIVERY_NAME);
103   END IF;
104   --
105 
106   IF NOT FND_API.compatible_api_call( l_api_version,
107                  p_api_version,
108                              l_api_name,
109                              G_PKG_NAME) THEN
110     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
111   END IF;
112 
113   -- Check p_init_msg_list
114   IF FND_API.to_boolean(p_init_msg_list)  THEN
115     FND_MSG_PUB.initialize;
116   END IF;
117 
118   x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
119 
120   if (p_TabOfDelDets.count = 0) then
121       raise WSH_NO_DEL_DET_TBL;
122   end if;
123 
124 
125   FOR I IN p_TabOfDelDets.first .. p_TabOfDelDets.last
126   LOOP
127 
128     l_TabOfDelDets(i) :=  p_TabOfDelDets(i);
129     -- dbms_output.put_line(l_TabOfDelDets(i));
130   END LOOP;
131         l_action_prms.caller := 'WSH_PUB';
132         l_action_prms.action_code := p_action;
133         l_action_prms.delivery_id := p_delivery_id;
134         l_action_prms.delivery_name := p_delivery_name;
135 
136           /* Patchset I: Harmonization Project. Call group API
137            All validations done by Group API */
138 
139             IF l_debug_on THEN
140                 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_INTERFACE_GRP.DELIVERY_DETAIL_ACTION',WSH_DEBUG_SV.C_PROC_LEVEL);
141             END IF;
142             --
143 
144         wsh_interface_grp.delivery_detail_action(
145             p_api_version_number    => p_api_version,
146             p_init_msg_list         => FND_API.G_FALSE,
147             p_commit                => FND_API.G_FALSE,
148             x_return_status         => l_return_status,
149             x_msg_count             => l_msg_count,
150             x_msg_data              => l_msg_data,
151             p_detail_id_tab         => l_TabOfDelDets,
152             p_action_prms           => l_action_prms ,
153             x_action_out_rec        => l_action_out_rec);
154 
155             IF l_debug_on THEN
156                 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.API_POST_CALL',WSH_DEBUG_SV.C_PROC_LEVEL);
157             END IF;
158             --
159             wsh_util_core.api_post_call(
160                p_return_status => l_return_status,
161                x_num_warnings  => l_number_of_warnings,
162                x_num_errors    => l_number_of_errors,
163                p_msg_data      => l_msg_data
164                );
165 
166   IF l_number_of_warnings > 0 THEN
167       x_return_status := wsh_util_core.g_ret_sts_warning;
168   END IF;
169 
170 
171   IF FND_API.TO_BOOLEAN(p_commit) THEN
172     -- dbms_output.put_line('commit');
173     COMMIT WORK;
174   END IF;
175 
176         FND_MSG_PUB.Count_And_Get
177           (
178       p_count =>  x_msg_count,
179             p_data  =>  x_msg_data,
180             p_encoded => FND_API.G_FALSE
181           );
182 
183    IF l_debug_on THEN
184       WSH_DEBUG_SV.pop(l_module_name);
185    END IF;
186 --
187   exception
188         WHEN FND_API.G_EXC_ERROR THEN
189                 ROLLBACK TO DETAIL_TO_DELIVERY_PUB;
190                 x_return_status := FND_API.G_RET_STS_ERROR ;
191                 wsh_util_core.add_message(x_return_status);
192                 FND_MSG_PUB.Count_And_Get
193                   (
194                      p_count  => x_msg_count,
195                      p_data  =>  x_msg_data,
196                p_encoded => FND_API.G_FALSE
197                   );
198 
199                 IF l_debug_on THEN
200                    WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_ERROR exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
201                   WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_ERROR');
202                 END IF;
203 --
204          WHEN WSH_NO_DEL_DET_TBL then
205               ROLLBACK TO DETAIL_TO_DELIVERY_PUB;
206               x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
207               fnd_message.set_name('WSH', 'WSH_PUB_NO_DEL_DET_TBL');
208               WSH_UTIL_CORE.ADD_MESSAGE(x_return_status);
209                 FND_MSG_PUB.Count_And_Get
210                   (
211                      p_count  => x_msg_count,
212                      p_data  =>  x_msg_data,
213                p_encoded => FND_API.G_FALSE
214                   );
215 
216                IF l_debug_on THEN
217              WSH_DEBUG_SV.logmsg(l_module_name,'WSH_NO_DEL_DET_TBL exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
218               WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_NO_DEL_DET_TBL');
219          END IF;
220   --
221         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
222                 ROLLBACK TO DETAIL_TO_DELIVERY_PUB;
223                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
224                wsh_util_core.add_message(x_return_status, l_module_name);
225                 FND_MSG_PUB.Count_And_Get
226                   (
227                      p_count  => x_msg_count,
228                      p_data  =>  x_msg_data,
229                p_encoded => FND_API.G_FALSE
230                   );
231                   --
232 
233            IF l_debug_on THEN
234                 WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_UNEXPECTED_ERROR exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
235                 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
236            END IF;
237           WHEN others then
238                ROLLBACK TO DETAIL_TO_DELIVERY_PUB;
239                wsh_util_core.default_handler('WSH_DELIVERY_DETAILS_PUB.DETAIL_TO_DELIVERY');
240                x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
241                 FND_MSG_PUB.Count_And_Get
242                   (
243                      p_count  => x_msg_count,
244                      p_data  =>  x_msg_data,
245                p_encoded => FND_API.G_FALSE
246                   );
247 
248           IF l_debug_on THEN
249              WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
250              WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
251           END IF;
252   --
253 END detail_to_delivery;
254 
255 -- ----------------------------------------------------------------------
256 -- Procedure:   split_line
257 -- Parameters:     p_from_detail_id: The delivery detail ID to be split
258 --            x_new_detail_id:  The new delivery detail ID
259 --            p_source_quantity:
260 --            split_quantity:
261 --
262 -- Description:   This procedure split a delivery_deatil line
263 --          03/19/01 OPM changes. Added split_quantity2
264 --  ----------------------------------------------------------------------
265 
266 PROCEDURE   split_line
267     (
268     -- Standard parameters
269     p_api_version         IN NUMBER,
270     p_init_msg_list       IN VARCHAR2,
271     p_commit              IN VARCHAR2,
272     p_validation_level      IN NUMBER,
273     x_return_status       OUT NOCOPY  VARCHAR2,
274     x_msg_count           OUT NOCOPY  NUMBER,
275     x_msg_data            OUT NOCOPY  VARCHAR2,
276 
277     -- Procedure specific parameters
278     p_from_detail_id        IN NUMBER,
279     x_new_detail_id       OUT NOCOPY  NUMBER,
280     x_split_quantity        IN OUT NOCOPY  NUMBER,
281     x_split_quantity2                 IN OUT NOCOPY  NUMBER
282      ) is
283 
284 l_msg_summary varchar2(2000);
285 l_msg_details varchar2(4000);
286 
287 -- Harmonization Project
288       l_action_prms             WSH_GLBL_VAR_STRCT_GRP.dd_action_parameters_rec_type;
289       l_action_out_rec         WSH_GLBL_VAR_STRCT_GRP.dd_action_out_rec_type;
290       l_dummy_qty               NUMBER;
291       l_dummy_qty2              NUMBER;
292       l_dummy_ids               wsh_util_core.id_tab_type;
293       l_detail_ids              wsh_util_core.id_tab_type;
294   l_msg_count                 NUMBER;
295   l_msg_data                  VARCHAR2(32767);
296   l_number_of_errors    NUMBER := 0;
297   l_number_of_warnings  NUMBER := 0;
298         l_return_status       VARCHAR2(30);
299         l_index  NUMBER;
300 
301 -- Standard call to check for call compatibility.
302 l_api_version CONSTANT  NUMBER    := 1.0;
303 l_api_name    CONSTANT  VARCHAR2(30):= 'delivery_detail_to_delivery';
304 
305 l_debug_on BOOLEAN;
306 --
307 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'SPLIT_LINE';
308 --
309 BEGIN
310 
311     -- Standard begin of API savepoint
312   --
313   l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
314   --
315   IF l_debug_on IS NULL
316   THEN
317       l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
318   END IF;
319   --
320   SAVEPOINT SPLIT_LINE_PUB;
321 
322   IF l_debug_on THEN
323       WSH_DEBUG_SV.push(l_module_name);
324       --
325       WSH_DEBUG_SV.log(l_module_name,'P_API_VERSION',P_API_VERSION);
326       WSH_DEBUG_SV.log(l_module_name,'P_INIT_MSG_LIST',P_INIT_MSG_LIST);
327       WSH_DEBUG_SV.log(l_module_name,'P_COMMIT',P_COMMIT);
328       WSH_DEBUG_SV.log(l_module_name,'P_VALIDATION_LEVEL',P_VALIDATION_LEVEL);
329       WSH_DEBUG_SV.log(l_module_name,'P_FROM_DETAIL_ID',P_FROM_DETAIL_ID);
330       WSH_DEBUG_SV.log(l_module_name,'X_SPLIT_QUANTITY',X_SPLIT_QUANTITY);
331       WSH_DEBUG_SV.log(l_module_name,'X_SPLIT_QUANTITY2',X_SPLIT_QUANTITY2);
332   END IF;
333   --
334 
335   IF NOT FND_API.compatible_api_call(l_api_version,
336           p_api_version,
337                                         l_api_name,
338                                         G_PKG_NAME) THEN
339     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
340   END IF;
341   -- Check p_init_msg_list
342   IF FND_API.to_boolean(p_init_msg_list)  THEN
343     FND_MSG_PUB.initialize;
344   END IF;
345   x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
346 
347 
348         l_detail_ids(1) := p_from_detail_id;
349         l_action_prms.caller := 'WSH_PUB';
350         l_action_prms.action_code := 'SPLIT-LINE';
351         l_action_prms.split_quantity := x_split_quantity;
352         l_action_prms.split_quantity2 := x_split_quantity2;
353 
354           /* Patchset I: Harmonization Project. Call group API
355            All validations done by Group API */
356 
357             IF l_debug_on THEN
358                 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_INTERFACE_GRP.DELIVERY_DETAIL_ACTION',WSH_DEBUG_SV.C_PROC_LEVEL);
359             END IF;
360 
361         wsh_interface_grp.delivery_detail_action(
362             p_api_version_number    => p_api_version,
363             p_init_msg_list         => FND_API.G_FALSE,
364             p_commit                => FND_API.G_FALSE,
365             x_return_status         => l_return_status,
366             x_msg_count             => l_msg_count,
367             x_msg_data              => l_msg_data,
368             p_detail_id_tab         => l_detail_ids,
369             p_action_prms           => l_action_prms ,
370             x_action_out_rec        => l_action_out_rec);
371 
372             IF l_debug_on THEN
373                 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.API_POST_CALL',WSH_DEBUG_SV.C_PROC_LEVEL);
374             END IF;
375             --
376             wsh_util_core.api_post_call(
377                p_return_status => l_return_status,
378                x_num_warnings  => l_number_of_warnings,
379                x_num_errors    => l_number_of_errors,
380                p_msg_data      => l_msg_data
381                );
382 
383         x_split_quantity  := l_action_out_rec.split_quantity;
384         x_split_quantity2 := l_action_out_rec.split_quantity2;
385         l_index := l_action_out_rec.result_id_tab.first;
386         x_new_detail_id := l_action_out_rec.result_id_tab(l_index);
387 
388   IF l_number_of_warnings > 0 THEN
389       x_return_status := wsh_util_core.g_ret_sts_warning;
390   END IF;
391 
392   IF FND_API.TO_BOOLEAN(p_commit) THEN
393     -- dbms_output.put_line('commit');
394     COMMIT WORK;
395   END IF;
396 
397         FND_MSG_PUB.Count_And_Get
398           (
399       p_count =>  x_msg_count,
400             p_data  =>  x_msg_data,
401             p_encoded => FND_API.G_FALSE
402            );
403 
404  IF l_debug_on THEN
405      WSH_DEBUG_SV.pop(l_module_name);
406  END IF;
407  --
408 exception
409         WHEN FND_API.G_EXC_ERROR THEN
410                 ROLLBACK TO SPLIT_LINE_PUB;
411                 x_return_status := FND_API.G_RET_STS_ERROR ;
412                 wsh_util_core.add_message(x_return_status);
413                 FND_MSG_PUB.Count_And_Get
414                   (
415                      p_count  => x_msg_count,
416                      p_data  =>  x_msg_data,
417                p_encoded => FND_API.G_FALSE
418                   );
419 
420         IF l_debug_on THEN
421             WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_ERROR exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
422             WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_ERROR');
423         END IF;
424         --
425         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
426                 ROLLBACK TO SPLIT_LINE_PUB;
427                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
428                wsh_util_core.add_message(x_return_status, l_module_name);
429                 FND_MSG_PUB.Count_And_Get
430                   (
431                      p_count  => x_msg_count,
432                      p_data  =>  x_msg_data,
433                p_encoded => FND_API.G_FALSE
434                   );
435                   --
436 
437            IF l_debug_on THEN
438                 WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_UNEXPECTED_ERROR exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
439                 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
440            END IF;
441         WHEN OTHERS THEN
442                 ROLLBACK TO SPLIT_LINE_PUB;
443                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
444                wsh_util_core.add_message(x_return_status, l_module_name);
445                WSH_UTIL_CORE.default_handler('WSH_DELIVERY_DETAILS_PUB.Split_Line');
446                 FND_MSG_PUB.Count_And_Get
447                   (
448                      p_count  => x_msg_count,
449                      p_data  =>  x_msg_data,
450                p_encoded => FND_API.G_FALSE
451                   );
452     --
453             IF l_debug_on THEN
454                 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
455                 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
456             END IF;
457 --
458 END split_line;
459 --===================
460 -- PROCEDURES
461 --===================
462 
463 -- Procedure Init_Changed_Attribute_Rec
464 -- Parameter p_init_rec record that needs to be initialized.
465 -- This procedure takes in a record of WSH_DELIVERY_DETAILS_PUB.ChangedAttributeRecType and
466 -- initializes its attributes to the default FND_API_G values.
467 
468 Procedure Init_Changed_Attribute_Rec(p_init_rec IN OUT NOCOPY  WSH_DELIVERY_DETAILS_PUB.ChangedAttributeRecType,
469                                      x_return_status OUT NOCOPY  VARCHAR2) IS
470                                      --
471 l_debug_on BOOLEAN;
472                                      --
473                                      l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'INIT_CHANGED_ATTRIBUTE_REC';
474                                      --
475 BEGIN
476         --
477         -- Debug Statements
478         --
479         --
480         l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
481         --
482         IF l_debug_on IS NULL
483         THEN
484             l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
485         END IF;
486         --
487         IF l_debug_on THEN
488             WSH_DEBUG_SV.push(l_module_name);
489         END IF;
490         --
491         x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
492         p_init_rec.source_header_id                     :=             FND_API.G_MISS_NUM;
493         p_init_rec.source_line_id                       :=             FND_API.G_MISS_NUM;
494         p_init_rec.sold_to_org_id                       :=             FND_API.G_MISS_NUM;
495         p_init_rec.customer_number                      :=             FND_API.G_MISS_NUM;
496         p_init_rec.sold_to_contact_id                   :=             FND_API.G_MISS_NUM;
497         p_init_rec.ship_from_org_id                     :=             FND_API.G_MISS_NUM;
498         p_init_rec.ship_from_org_code                   :=             FND_API.G_MISS_CHAR;
499         p_init_rec.ship_to_org_id                       :=             FND_API.G_MISS_NUM;
500         p_init_rec.ship_to_org_code                     :=             FND_API.G_MISS_CHAR;
501         p_init_rec.ship_to_contact_id                   :=             FND_API.G_MISS_NUM;
502         p_init_rec.deliver_to_org_id                    :=             FND_API.G_MISS_NUM;
503         p_init_rec.deliver_to_org_code                  :=             FND_API.G_MISS_CHAR;
504         p_init_rec.deliver_to_contact_id                :=             FND_API.G_MISS_NUM;
505         p_init_rec.intmed_ship_to_org_id                :=             FND_API.G_MISS_NUM;
506         p_init_rec.intmed_ship_to_org_code              :=             FND_API.G_MISS_CHAR;
507         p_init_rec.intmed_ship_to_contact_id            :=             FND_API.G_MISS_NUM;
508         p_init_rec.ship_tolerance_above                 :=             FND_API.G_MISS_NUM;
509         p_init_rec.ship_tolerance_below                 :=             FND_API.G_MISS_NUM;
510         p_init_rec.ordered_quantity                     :=             FND_API.G_MISS_NUM;
511         p_init_rec.ordered_quantity2                    :=             FND_API.G_MISS_NUM;
512         p_init_rec.order_quantity_uom                   :=             FND_API.G_MISS_CHAR;
513         p_init_rec.ordered_quantity_uom2                :=             FND_API.G_MISS_CHAR;
514         p_init_rec.preferred_grade                      :=             FND_API.G_MISS_CHAR;
515         p_init_rec.ordered_qty_unit_of_measure          :=             FND_API.G_MISS_CHAR;
516         p_init_rec.ordered_qty_unit_of_measure2         :=             FND_API.G_MISS_CHAR;
517         p_init_rec.subinventory                         :=             FND_API.G_MISS_CHAR;
518         p_init_rec.revision                             :=             FND_API.G_MISS_CHAR;
519         p_init_rec.lot_number                           :=             FND_API.G_MISS_CHAR;
520 -- HW OPMCONV - No need for sublot_number
521 --      p_init_rec.sublot_number                        :=             FND_API.G_MISS_CHAR;
522         p_init_rec.customer_requested_lot_flag          :=             FND_API.G_MISS_CHAR;
523         p_init_rec.serial_number                        :=             FND_API.G_MISS_CHAR;
524         p_init_rec.locator_id                           :=             FND_API.G_MISS_NUM;
525         p_init_rec.date_requested                       :=             FND_API.G_MISS_DATE;
526         p_init_rec.date_scheduled                       :=             FND_API.G_MISS_DATE;
527         p_init_rec.master_container_item_id             :=             FND_API.G_MISS_NUM;
528         p_init_rec.detail_container_item_id             :=             FND_API.G_MISS_NUM;
529         p_init_rec.shipping_method_code                 :=             FND_API.G_MISS_CHAR;
530         p_init_rec.carrier_id                           :=             FND_API.G_MISS_NUM;
531         p_init_rec.freight_terms_code                   :=             FND_API.G_MISS_CHAR;
532         p_init_rec.freight_terms_name                   :=             FND_API.G_MISS_CHAR;
533         p_init_rec.freight_carrier_code                 :=             FND_API.G_MISS_CHAR;
534         p_init_rec.shipment_priority_code               :=             FND_API.G_MISS_CHAR;
535         p_init_rec.fob_code                             :=             FND_API.G_MISS_CHAR;
536         p_init_rec.fob_name                             :=             FND_API.G_MISS_CHAR;
537         p_init_rec.dep_plan_required_flag               :=             FND_API.G_MISS_CHAR;
538         p_init_rec.customer_prod_seq                    :=             FND_API.G_MISS_CHAR;
539         p_init_rec.customer_dock_code                   :=             FND_API.G_MISS_CHAR;
540         p_init_rec.gross_weight                         :=             FND_API.G_MISS_NUM;
541         p_init_rec.net_weight                           :=             FND_API.G_MISS_NUM;
542         p_init_rec.weight_uom_code                      :=             FND_API.G_MISS_CHAR;
543         p_init_rec.weight_uom_desc                      :=             FND_API.G_MISS_CHAR;
544         p_init_rec.volume                               :=             FND_API.G_MISS_NUM;
545         p_init_rec.volume_uom_code                      :=             FND_API.G_MISS_CHAR;
546         p_init_rec.volume_uom_desc                      :=             FND_API.G_MISS_CHAR;
547         p_init_rec.top_model_line_id                    :=             FND_API.G_MISS_NUM;
548         p_init_rec.ship_set_id                          :=             FND_API.G_MISS_NUM;
549         p_init_rec.ato_line_id                          :=             FND_API.G_MISS_NUM;
550         p_init_rec.arrival_set_id                       :=             FND_API.G_MISS_NUM;
551         p_init_rec.ship_model_complete_flag             :=             FND_API.G_MISS_CHAR;
552         p_init_rec.cust_po_number                       :=             FND_API.G_MISS_CHAR;
553         p_init_rec.released_status                      :=             FND_API.G_MISS_CHAR;
554         p_init_rec.packing_instructions                 :=             FND_API.G_MISS_CHAR;
555         p_init_rec.shipping_instructions                :=             FND_API.G_MISS_CHAR;
556         p_init_rec.container_name                       :=             FND_API.G_MISS_CHAR;
557         p_init_rec.container_flag                       :=             FND_API.G_MISS_CHAR;
558         p_init_rec.delivery_detail_id                   :=             FND_API.G_MISS_NUM;
559         p_init_rec.shipped_quantity                     :=             FND_API.G_MISS_NUM;
560         p_init_rec.cycle_count_quantity                 :=             FND_API.G_MISS_NUM;
561 -- HW OPMCONV - Added Qty2
562         p_init_rec.shipped_quantity2                    :=             FND_API.G_MISS_NUM;
563         p_init_rec.cycle_count_quantity2                :=             FND_API.G_MISS_NUM;
564         p_init_rec.tracking_number                      :=             FND_API.G_MISS_CHAR;
565         p_init_rec.attribute1                           :=             FND_API.G_MISS_CHAR;
566         p_init_rec.attribute2                           :=             FND_API.G_MISS_CHAR;
567         p_init_rec.attribute3                           :=             FND_API.G_MISS_CHAR;
568         p_init_rec.attribute4                           :=             FND_API.G_MISS_CHAR;
569         p_init_rec.attribute5                           :=             FND_API.G_MISS_CHAR;
570         p_init_rec.attribute6                           :=             FND_API.G_MISS_CHAR;
571         p_init_rec.attribute7                           :=             FND_API.G_MISS_CHAR;
572         p_init_rec.attribute8                           :=             FND_API.G_MISS_CHAR;
573         p_init_rec.attribute9                           :=             FND_API.G_MISS_CHAR;
574         p_init_rec.attribute10                          :=             FND_API.G_MISS_CHAR;
575         p_init_rec.attribute11                          :=             FND_API.G_MISS_CHAR;
576         p_init_rec.attribute12                          :=             FND_API.G_MISS_CHAR;
577         p_init_rec.attribute13                          :=             FND_API.G_MISS_CHAR;
578         p_init_rec.attribute14                          :=             FND_API.G_MISS_CHAR;
579         p_init_rec.attribute15                          :=             FND_API.G_MISS_CHAR;
580 -- J: W/V Changes
581         p_init_rec.filled_volume                        :=             FND_API.G_MISS_NUM;
582 
583 --
584 -- Debug Statements
585 --
586 IF l_debug_on THEN
587     WSH_DEBUG_SV.pop(l_module_name);
588 END IF;
589 --
590         EXCEPTION
591            WHEN Others THEN
592                x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
593                WSH_UTIL_CORE.add_message (x_return_status);
594                WSH_UTIL_CORE.default_handler('WSH_DELIVERY_DETAILS_PUB.Init_Changed_Attribute_Rec');
595 
596 
597  --
598  -- Debug Statements
599  --
600  IF l_debug_on THEN
601      WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
602      WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
603  END IF;
604  --
605 END Init_Changed_Attribute_Rec;
606 
607 --========================================================================
608 -- PROCEDURE : Update_Shipping_Attributes
609 --
610 -- PARAMETERS: p_api_version_number    known api versionerror buffer
611 --             p_init_msg_list         initialize message stack
612 --             x_return_status         return status
613 --             x_msg_count             number of messages in the list
614 --             x_msg_data              text of messages
615 --             p_changed_attributes    changed attributes for delivery details
616 --             p_source_code           source system
617 --
618 --
619 -- COMMENT   : Validates Organization_id and Organization_code against view
620 --             org_organization_definitions. If both values are
621 --             specified then only Org_Id is used
622 --
623 --DESCRIPTION: This overloaded version of Update_Shipping_Attributes is created
624 --             to  enable entry of multiple serial ranges for a given delivery
625 --             detail
626 --
627 --CREATED:     During patchset I
628 --========================================================================
629 
630 PROCEDURE Update_Shipping_Attributes (
631   -- Standard parameters
632   p_api_version_number     IN     NUMBER
633 , p_init_msg_list          IN     VARCHAR2
634 , p_commit                 IN     VARCHAR2
635 , x_return_status             OUT NOCOPY  VARCHAR2
636 , x_msg_count                 OUT NOCOPY  NUMBER
637 , x_msg_data                  OUT NOCOPY  VARCHAR2
638 
639   -- Procedure specific parameters
640 , p_changed_attributes    IN     WSH_DELIVERY_DETAILS_PUB.ChangedAttributeTabType
641 , p_source_code            IN     VARCHAR2
642 , p_container_flag         IN     VARCHAR2
643 )
644 IS
645 
646 l_msg_summary varchar2(2000)  := NULL;
647 l_msg_details varchar2(4000)  := NULL;
648 l_return_status       VARCHAR2(30);
649 l_counter         NUMBER;
650 l_index               NUMBER;
651 l_api_version_number  NUMBER := 1.0;
652 l_api_name            VARCHAR2(30) := 'Update_Shipping_Attributes';
653 l_ship_to_location_id   NUMBER;
654 invalid_source_code     EXCEPTION;
655 
656 m     NUMBER := 0;
657 
658 
659       -- Harmonization Project
660       l_detail_info_tab WSH_GLBL_VAR_STRCT_GRP.Delivery_Details_Attr_Tbl_Type;
661       l_in_rec    WSH_GLBL_VAR_STRCT_GRP.detailInRecType;
662       l_lpn_ids       wsh_util_core.id_Tab_type;
663       l_out_Rec       WSH_GLBL_VAR_STRCT_GRP.detailOutRecType;
664       l_msg_count                 NUMBER;
665   l_msg_data                  VARCHAR2(32767);
666   l_number_of_errors    NUMBER := 0;
667   l_number_of_warnings  NUMBER := 0;
668 --
669 l_debug_on BOOLEAN;
670 --
671 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'UPDATE_SHIPPING_ATTRIBUTES';
672 --
673 BEGIN
674         --
675         l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
676         --
677         IF l_debug_on IS NULL
678         THEN
679             l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
680         END IF;
681         --
682         SAVEPOINT UPDATE_SHIPPING_ATTR_PUB;
683 
684         IF l_debug_on THEN
685             WSH_DEBUG_SV.push(l_module_name);
686             --
687             WSH_DEBUG_SV.log(l_module_name,'P_API_VERSION_NUMBER',P_API_VERSION_NUMBER);
688             WSH_DEBUG_SV.log(l_module_name,'P_INIT_MSG_LIST',P_INIT_MSG_LIST);
689             WSH_DEBUG_SV.log(l_module_name,'P_COMMIT',P_COMMIT);
690             WSH_DEBUG_SV.log(l_module_name,'P_SOURCE_CODE',P_SOURCE_CODE);
691             WSH_DEBUG_SV.log(l_module_name,'P_CONTAINER_FLAG',P_CONTAINER_FLAG);
692         END IF;
693         --
694 
695   x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
696 
697   --  Standard call to check for call compatibility
698     IF NOT FND_API.Compatible_API_Call(
699     l_api_version_number,
700     p_api_version_number,
701     l_api_name,
702     G_PKG_NAME) THEN
703     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
704   END IF;
705 
706     --  Initialize message stack if required
707     IF FND_API.to_Boolean(p_init_msg_list) THEN
708       FND_MSG_PUB.initialize;
709     END IF;
710 
711     -- <start of API logic>
712         -- sperera source_code has to be 'OE' or 'WSH'
713   IF (NVL(p_source_code, FND_API.G_MISS_CHAR) NOT IN ('WSH', 'OE')) THEN
714     RAISE invalid_source_code;
715   END IF;
716 
717 
718        -- call the copy procedure here
719 
720        Copy_Attributes(x_detail_info_tab => l_detail_info_tab,
721                        x_changed_attributes=>p_changed_attributes);
722 
723        l_in_rec.caller := 'WSH_PUB';
724        l_in_rec.action_code := 'UPDATE';
725 
726           /* Patchset I: Harmonization Project. Call group API
727            All validations done by Group API */
728 
729              IF l_debug_on THEN
730                  WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_DELIVERY_DETAILS_GRP.CREATE_UPDATE_DELIVERY_DETAIL',WSH_DEBUG_SV.C_PROC_LEVEL);
731              END IF;
732        wsh_interface_grp.create_update_delivery_detail(
733        p_api_version_number  => p_api_version_number,
734        p_init_msg_list           => FND_API.G_FALSE,
735        p_commit                  => FND_API.G_FALSE,
736        x_return_status           => l_return_status,
737        x_msg_count               => l_msg_count,
738        x_msg_data                => l_msg_data,
739        p_detail_info_tab         => l_detail_info_tab,
740        p_IN_rec                  => l_in_rec,
741        x_OUT_rec                 => l_out_rec);
742 
743              IF l_debug_on THEN
744                  WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.API_POST_CALL',WSH_DEBUG_SV.C_PROC_LEVEL);
745              END IF;
746              --
747              wsh_util_core.api_post_call(
748                       p_return_status => l_return_status,
749                       x_num_warnings  => l_number_of_warnings,
750                       x_num_errors    => l_number_of_errors,
751                       p_msg_data      => l_msg_data
752                       );
753                --
754 
755   IF l_number_of_warnings > 0 THEN
756       x_return_status := wsh_util_core.g_ret_sts_warning;
757   END IF;
758 
759     -- report success
760   IF FND_API.TO_BOOLEAN(p_commit) THEN
761     COMMIT WORK;
762   END IF;
763 
764   FND_MSG_PUB.Count_And_Get (
765     p_count => x_msg_count,
766     p_data  => x_msg_data,
767                 p_encoded => FND_API.G_FALSE
768     );
769 
770    IF l_debug_on THEN
771       WSH_DEBUG_SV.pop(l_module_name);
772    END IF;
773 --
774   EXCEPTION
775         WHEN FND_API.G_EXC_ERROR THEN
776                 ROLLBACK TO UPDATE_SHIPPING_ATTR_PUB;
777                 x_return_status := FND_API.G_RET_STS_ERROR ;
778                 wsh_util_core.add_message(x_return_status);
779                 FND_MSG_PUB.Count_And_Get
780                   (
781                      p_count  => x_msg_count,
782                      p_data  =>  x_msg_data,
783                p_encoded => FND_API.G_FALSE
784                   );
785 
786        IF l_debug_on THEN
787           WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_ERROR exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
788           WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_ERROR');
789       END IF;
790          --
791         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
792                 ROLLBACK TO UPDATE_SHIPPING_ATTR_PUB;
793                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
794                wsh_util_core.add_message(x_return_status, l_module_name);
795                 FND_MSG_PUB.Count_And_Get
796                   (
797                      p_count  => x_msg_count,
798                      p_data  =>  x_msg_data,
799                p_encoded => FND_API.G_FALSE
800                   );
801                   --
802 
803            IF l_debug_on THEN
804                 WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_UNEXPECTED_ERROR exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
805                 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
806            END IF;
807          --
808          WHEN invalid_source_code THEN
809               ROLLBACK TO UPDATE_SHIPPING_ATTR_PUB;
810               x_return_status := FND_API.G_RET_STS_ERROR;
811               FND_MESSAGE.Set_Name('WSH', 'WSH_INVALID_SOURCE_CODE');
812               FND_MESSAGE.SET_TOKEN('SOURCE_CODE',p_source_code );
813               WSH_UTIL_CORE.Add_Message(x_return_status);
814 
815               FND_MSG_PUB.Count_And_Get
816                   (
817                      p_count  => x_msg_count,
818                      p_data  =>  x_msg_data,
819                      p_encoded => FND_API.G_FALSE
820                   );
821 
822                  IF l_debug_on THEN
823                     WSH_DEBUG_SV.logmsg(l_module_name,'INVALID_SOURCE_CODE exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
824                     WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:INVALID_SOURCE_CODE');
825                  END IF;
826           --
827          WHEN Others THEN
828                  ROLLBACK TO UPDATE_SHIPPING_ATTR_PUB;
829                x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
830                WSH_UTIL_CORE.add_message (x_return_status);
831                WSH_UTIL_CORE.default_handler('WSH_DELIVERY_DETAILS_PUB.Update_Shipping_Attributes')
832           ;
833 
834               FND_MSG_PUB.Count_And_Get
835                   (
836                      p_count  => x_msg_count,
837                      p_data  =>  x_msg_data,
838                      p_encoded => FND_API.G_FALSE
839                   );
840 
841               IF l_debug_on THEN
842                  WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
843                  WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
844              END IF;
845 --
846 END Update_Shipping_Attributes;
847 
848 
849 --Overloaded Update_Shipping_Attributes
850 
851 
852 --========================================================================
853 -- PROCEDURE : Update_Shipping_Attributes   (overloaded)
854 --
855 -- PARAMETERS: p_api_version_number    known api versionerror buffer
856 --             p_init_msg_list         initialize message stack
857 --             x_return_status         return status
858 --             x_msg_count             number of messages in the list
859 --             x_msg_data              text of messages
860 --            p_changed_attributes    changed attributes for delivery details
861 --             p_source_code           source system
862 --            p_serial_range_tab       serial number range
863 --
864 --
865 -- COMMENT   : Validates Organization_id and Organization_code against view
866 --             org_organization_definitions. If both values are
867 --             specified then only Org_Id is used
868 --========================================================================
869 
870 PROCEDURE Update_Shipping_Attributes (
871   -- Standard parameters
872   p_api_version_number     IN     NUMBER
873 , p_init_msg_list          IN     VARCHAR2
874 , p_commit                 IN     VARCHAR2
875 , x_return_status             OUT NOCOPY  VARCHAR2
876 , x_msg_count                 OUT NOCOPY  NUMBER
877 , x_msg_data                  OUT NOCOPY  VARCHAR2
878 
879   -- Procedure specific parameters
880 , p_changed_attributes    IN     WSH_DELIVERY_DETAILS_PUB.ChangedAttributeTabType
881 , p_source_code            IN     VARCHAR2
882 , p_container_flag         IN     VARCHAR2
883 , p_serial_range_tab       IN     WSH_GLBL_VAR_STRCT_GRP.ddSerialRangeTabType
884 )
885 IS
886 
887 l_msg_summary varchar2(2000)  := NULL;
888 l_msg_details varchar2(4000)  := NULL;
889 l_return_status       VARCHAR2(30);
890 l_counter         NUMBER;
891 l_index               NUMBER;
892 l_api_version_number  NUMBER := 1.0;
893 l_api_name            VARCHAR2(30) := 'Update_Shipping_Attributes2';
894 l_ship_to_location_id   NUMBER;
895 invalid_source_code     EXCEPTION;
896 
897 l_serial_range_tab   WSH_GLBL_VAR_STRCT_GRP.ddSerialRangeTabType;
898 
899 m     NUMBER := 0;
900 
901 
902       -- Harmonization Project
903       l_detail_info_tab WSH_GLBL_VAR_STRCT_GRP.Delivery_Details_Attr_Tbl_Type;
904       l_in_rec    WSH_GLBL_VAR_STRCT_GRP.detailInRecType;
905       l_lpn_ids       wsh_util_core.id_Tab_type;
906       l_out_Rec       WSH_GLBL_VAR_STRCT_GRP.detailOutRecType;
907       l_msg_count                 NUMBER;
908   l_msg_data                  VARCHAR2(32767);
909   l_number_of_errors    NUMBER := 0;
910   l_number_of_warnings  NUMBER := 0;
911 --
912 l_debug_on BOOLEAN;
913 --
914 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'UPDATE_SHIPPING_ATTRIBUTES';
915 --
916 BEGIN
917         --
918         l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
919         --
920         IF l_debug_on IS NULL
921         THEN
922             l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
923         END IF;
924         --
925         SAVEPOINT UPDATE_SHIPPING_ATTR_PUB2;
926 
927         IF l_debug_on THEN
928             WSH_DEBUG_SV.push(l_module_name);
929             --
930             WSH_DEBUG_SV.log(l_module_name,'P_API_VERSION_NUMBER',P_API_VERSION_NUMBER);
931             WSH_DEBUG_SV.log(l_module_name,'P_INIT_MSG_LIST',P_INIT_MSG_LIST);
932             WSH_DEBUG_SV.log(l_module_name,'P_COMMIT',P_COMMIT);
933             WSH_DEBUG_SV.log(l_module_name,'P_SOURCE_CODE',P_SOURCE_CODE);
934             WSH_DEBUG_SV.log(l_module_name,'P_CONTAINER_FLAG',P_CONTAINER_FLAG);
935             WSH_DEBUG_SV.log(l_module_name,'P_SERIAL_RANGE_TAB.COUNT', P_SERIAL_RANGE_TAB.COUNT);
936 
937 
938         END IF;
939         --
940 
941   x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
942 
943   --  Standard call to check for call compatibility
944     IF NOT FND_API.Compatible_API_Call(
945     l_api_version_number,
946     p_api_version_number,
947     l_api_name,
948     G_PKG_NAME) THEN
949     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
950   END IF;
951 
952     --  Initialize message stack if required
953     IF FND_API.to_Boolean(p_init_msg_list) THEN
954       FND_MSG_PUB.initialize;
955     END IF;
956 
957     -- <start of API logic>
958         -- sperera source_code has to be 'OE' or 'WSH'
959   IF (NVL(p_source_code, FND_API.G_MISS_CHAR) NOT IN ('WSH', 'OE')) THEN
960     RAISE invalid_source_code;
961   END IF;
962 
963        -- call the copy procedure here
964 
965        Copy_Attributes(x_detail_info_tab => l_detail_info_tab,
966                        x_changed_attributes=>p_changed_attributes);
967 
968   -- frontport bug 5049214 - Trim leading spaces from serial number
969   l_serial_range_tab := p_serial_range_tab;
970   l_index            := l_serial_range_tab.FIRST;
971   WHILE l_index IS NOT NULL LOOP
972     l_serial_range_tab(l_index).from_serial_number :=
973         LTRIM(RTRIM(l_serial_range_tab(l_index).from_serial_number));
974     l_serial_range_tab(l_index).to_serial_number   :=
975         LTRIM(RTRIM(l_serial_range_tab(l_index).to_serial_number));
976     l_index := l_serial_range_tab.NEXT(l_index);
977   END LOOP;
978 
979        l_in_rec.caller := 'WSH_PUB';
980        l_in_rec.action_code := 'UPDATE';
981 
982           /* Patchset I: Harmonization Project. Call group API
983            All validations done by Group API */
984 
985              IF l_debug_on THEN
986                  WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_DELIVERY_DETAILS_GRP.CREATE_UPDATE_DELIVERY_DETAIL',WSH_DEBUG_SV.C_PROC_LEVEL);
987              END IF;
988 
989        wsh_delivery_details_grp.create_update_delivery_detail(
990        p_api_version_number  => p_api_version_number,
991        p_init_msg_list           => FND_API.G_FALSE,
992        p_commit                  => FND_API.G_FALSE,
993        x_return_status           => l_return_status,
994        x_msg_count               => l_msg_count,
995        x_msg_data                => l_msg_data,
996        p_detail_info_tab         => l_detail_info_tab,
997        p_IN_rec                  => l_in_rec,
998        x_OUT_rec                 => l_out_rec,
999        p_serial_range_tab        => l_serial_range_tab
1000        );
1001 
1002              IF l_debug_on THEN
1003                  WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.API_POST_CALL',WSH_DEBUG_SV.C_PROC_LEVEL);
1004              END IF;
1005              --
1006              wsh_util_core.api_post_call(
1007                       p_return_status => l_return_status,
1008                       x_num_warnings  => l_number_of_warnings,
1009                       x_num_errors    => l_number_of_errors,
1010                       p_msg_data      => l_msg_data
1011                       );
1012                --
1013 
1014   IF l_number_of_warnings > 0 THEN
1015       x_return_status := wsh_util_core.g_ret_sts_warning;
1016   END IF;
1017     -- report success
1018   IF FND_API.TO_BOOLEAN(p_commit) THEN
1019     COMMIT WORK;
1020   END IF;
1021 
1022   FND_MSG_PUB.Count_And_Get (
1023     p_count => x_msg_count,
1024     p_data  => x_msg_data,
1025                 p_encoded => FND_API.G_FALSE
1026     );
1027 
1028    IF l_debug_on THEN
1029       WSH_DEBUG_SV.pop(l_module_name);
1030    END IF;
1031 --
1032   EXCEPTION
1033         WHEN FND_API.G_EXC_ERROR THEN
1034                 ROLLBACK TO UPDATE_SHIPPING_ATTR_PUB2;
1035                 x_return_status := FND_API.G_RET_STS_ERROR ;
1036                 wsh_util_core.add_message(x_return_status);
1037                 FND_MSG_PUB.Count_And_Get
1038                   (
1039                      p_count  => x_msg_count,
1040                      p_data  =>  x_msg_data,
1041                p_encoded => FND_API.G_FALSE
1042                   );
1043 
1044        IF l_debug_on THEN
1045           WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_ERROR exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
1046           WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_ERROR');
1047       END IF;
1048          --
1049         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1050                 ROLLBACK TO UPDATE_SHIPPING_ATTR_PUB2;
1051                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1052                wsh_util_core.add_message(x_return_status, l_module_name);
1053                 FND_MSG_PUB.Count_And_Get
1054                   (
1055                      p_count  => x_msg_count,
1056                      p_data  =>  x_msg_data,
1057                p_encoded => FND_API.G_FALSE
1058                   );
1059                   --
1060 
1061            IF l_debug_on THEN
1062                 WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_UNEXPECTED_ERROR exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
1063                 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
1064            END IF;
1065          --
1066          WHEN invalid_source_code THEN
1067               ROLLBACK TO UPDATE_SHIPPING_ATTR_PUB2;
1068               x_return_status := FND_API.G_RET_STS_ERROR;
1069               FND_MESSAGE.Set_Name('WSH', 'WSH_INVALID_SOURCE_CODE');
1070               FND_MESSAGE.SET_TOKEN('SOURCE_CODE',p_source_code );
1071               WSH_UTIL_CORE.Add_Message(x_return_status);
1072 
1073               FND_MSG_PUB.Count_And_Get
1074                   (
1075                      p_count  => x_msg_count,
1076                      p_data  =>  x_msg_data,
1077                      p_encoded => FND_API.G_FALSE
1078                   );
1079 
1080                  IF l_debug_on THEN
1081                     WSH_DEBUG_SV.logmsg(l_module_name,'INVALID_SOURCE_CODE exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
1082                     WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:INVALID_SOURCE_CODE');
1083                  END IF;
1084           --
1085          WHEN Others THEN
1086                  ROLLBACK TO UPDATE_SHIPPING_ATTR_PUB2;
1087                x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
1088                WSH_UTIL_CORE.add_message (x_return_status);
1089                WSH_UTIL_CORE.default_handler('WSH_DELIVERY_DETAILS_PUB.Update_Shipping_Attributes')
1090           ;
1091 
1092               FND_MSG_PUB.Count_And_Get
1093                   (
1094                      p_count  => x_msg_count,
1095                      p_data  =>  x_msg_data,
1096                      p_encoded => FND_API.G_FALSE
1097                   );
1098               IF l_debug_on THEN
1099                  WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
1100                  WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
1101              END IF;
1102 --
1103 END Update_Shipping_Attributes;
1104 
1105 
1106 PROCEDURE Get_Detail_Status(
1107   p_delivery_detail_id  IN NUMBER
1108 , x_line_status         OUT NOCOPY  VARCHAR2
1109 , x_return_status       OUT NOCOPY  VARCHAR2
1110 )
1111 IS
1112 CURSOR del_assign IS
1113 SELECT delivery_id, parent_delivery_detail_id
1114 FROM wsh_delivery_assignments_v
1115 WHERE delivery_detail_id = p_delivery_detail_id;
1116 l_assign_rec del_assign%ROWTYPE;
1117 
1118 CURSOR del_status(c_del_id NUMBER) IS
1119 SELECT status_code
1120 FROM wsh_new_deliveries
1121 WHERE delivery_id = c_del_id;
1122 
1123 l_del_status  VARCHAR2(100) := NULL;
1124 l_msg_summary VARCHAR2(3000);
1125 x_msg_count   NUMBER;
1126 --
1127 l_debug_on BOOLEAN;
1128 --
1129 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'GET_DETAIL_STATUS';
1130 --
1131 BEGIN
1132   --
1133   -- Debug Statements
1134   --
1135   --
1136   l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
1137   --
1138   IF l_debug_on IS NULL
1139   THEN
1140       l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
1141   END IF;
1142   --
1143   IF l_debug_on THEN
1144       WSH_DEBUG_SV.push(l_module_name);
1145       --
1146       WSH_DEBUG_SV.log(l_module_name,'P_DELIVERY_DETAIL_ID',P_DELIVERY_DETAIL_ID);
1147   END IF;
1148   --
1149   x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
1150 
1151   -- get line status for delivery detail
1152   OPEN del_assign;
1153   FETCH del_assign INTO l_assign_rec;
1154   IF (l_assign_rec.delivery_id IS NOT NULL) THEN
1155     OPEN del_status(l_assign_rec.delivery_id);
1156     FETCH del_status INTO l_del_status;
1157     CLOSE del_status;
1158   END IF;
1159   CLOSE del_assign;
1160 
1161   IF (l_del_status IN ('CO', 'IT', 'CL')) THEN
1162     x_line_status := 'SIC';
1163   ELSIF (l_assign_rec.parent_delivery_detail_id IS NOT NULL) THEN
1164     x_line_status := 'PK';
1165   ELSIF( l_assign_rec.parent_delivery_detail_id IS NULL) THEN
1166     x_line_status := 'OK';
1167   ELSE
1168     NULL;
1169   END IF;
1170 
1171 /*
1172   EXCEPTION
1173   when others then
1174     wsh_util_core.default_handler('WSH_SHIP_CONFRIM_ACTIONS.SHIP_CONFIRM_A_TRIP_STOP');
1175     x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
1176     WSH_UTIL_CORE.get_messages('Y', l_msg_summary, l_msg_details, x_msg_count);
1177     if x_msg_count > 1 then
1178       x_msg_data := l_msg_summary || l_msg_details;
1179     else
1180       x_msg_data := l_msg_summary;
1181     end if;
1182     */
1183     --
1184     -- Debug Statements
1185     --
1186     IF l_debug_on THEN
1187         WSH_DEBUG_SV.pop(l_module_name);
1188     END IF;
1189     --
1190 END get_detail_status;
1191 
1192 PROCEDURE Autocreate_Deliveries(
1193   -- Standard parameters
1194   p_api_version_number     IN     NUMBER
1195 , p_init_msg_list          IN     VARCHAR2
1196 , p_commit                 IN     VARCHAR2
1197 , x_return_status             OUT NOCOPY  VARCHAR2
1198 , x_msg_count                 OUT NOCOPY  NUMBER
1199 , x_msg_data                  OUT NOCOPY  VARCHAR2
1200 , p_line_rows              IN     WSH_UTIL_CORE.id_tab_type
1201 , x_del_rows                  OUT NOCOPY  wsh_util_core.id_tab_type
1202 )
1203 IS
1204       l_dummy_rows               WSH_UTIL_CORE.id_tab_type;
1205       l_api_version_number    NUMBER := 1.0;
1206       l_api_name    CONSTANT  VARCHAR2(30):= 'Autocreate_Deliveries';
1207       l_return_status            VARCHAR2(30);
1208       autocreate_delivery_failed  EXCEPTION;
1209       l_msg_summary varchar2(2000)  := NULL;
1210       l_msg_details varchar2(4000)  := NULL;
1211 
1212 -- Harmonization Project
1213       l_action_prms             WSH_GLBL_VAR_STRCT_GRP.dd_action_parameters_rec_type;
1214       l_action_out_rec         WSH_GLBL_VAR_STRCT_GRP.dd_action_out_rec_type;
1215       l_dummy_qty               NUMBER;
1216       l_dummy_qty2              NUMBER;
1217       l_dummy_ids               wsh_util_core.id_tab_type;
1218       l_msg_count                 NUMBER;
1219       l_msg_data                  VARCHAR2(32767);
1220       l_number_of_errors    NUMBER := 0;
1221       l_number_of_warnings  NUMBER := 0;
1222 --
1223 l_debug_on BOOLEAN;
1224 --
1225 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'AUTOCREATE_DELIVERIES';
1226 --
1227 BEGIN
1228     -- Standard begin of API savepoint
1229         --
1230         l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
1231         --
1232         IF l_debug_on IS NULL
1233         THEN
1234             l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
1235         END IF;
1236         --
1237         SAVEPOINT AUTOCREATE_DEL_PUB;
1238         --
1239         IF l_debug_on THEN
1240             WSH_DEBUG_SV.push(l_module_name);
1241             --
1242             WSH_DEBUG_SV.log(l_module_name,'P_API_VERSION_NUMBER',P_API_VERSION_NUMBER);
1243             WSH_DEBUG_SV.log(l_module_name,'P_INIT_MSG_LIST',P_INIT_MSG_LIST);
1244             WSH_DEBUG_SV.log(l_module_name,'P_COMMIT',P_COMMIT);
1245         END IF;
1246         --
1247 
1248 
1249   IF NOT FND_API.compatible_api_call(
1250     l_api_version_number,
1251     p_api_version_number,
1252     l_api_name,
1253     G_PKG_NAME) THEN
1254     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1255   END IF;
1256 
1257   -- Check p_init_msg_list
1258   IF FND_API.to_boolean(p_init_msg_list)  THEN
1259     FND_MSG_PUB.initialize;
1260   END IF;
1261   x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
1262 
1263         l_action_prms.caller := 'WSH_PUB';
1264         l_action_prms.action_code := 'AUTOCREATE-DEL';
1265 
1266           /* Patchset I: Harmonization Project. Call group API
1267            All validations done by Group API */
1268 
1269             IF l_debug_on THEN
1270                 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_INTERFACE_GRP.DELIVERY_DETAIL_ACTION',WSH_DEBUG_SV.C_PROC_LEVEL);
1271             END IF;
1272 
1273         wsh_interface_grp.delivery_detail_action(
1274             p_api_version_number    => p_api_version_number,
1275             p_init_msg_list         => FND_API.G_FALSE,
1276             p_commit                => FND_API.G_FALSE,
1277             x_return_status         => l_return_status,
1278             x_msg_count             => l_msg_count,
1279             x_msg_data              => l_msg_data,
1280             p_detail_id_tab         => p_line_rows,
1281             p_action_prms           => l_action_prms ,
1282             x_action_out_rec        => l_action_out_rec);
1283 
1284             IF l_debug_on THEN
1285                 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.API_POST_CALL',WSH_DEBUG_SV.C_PROC_LEVEL);
1286             END IF;
1287             --
1288             wsh_util_core.api_post_call(
1289                p_return_status => l_return_status,
1290                x_num_warnings  => l_number_of_warnings,
1291                x_num_errors    => l_number_of_errors,
1292                p_msg_data      => l_msg_data
1293                );
1294 
1295          x_del_rows := l_action_out_rec.delivery_id_tab;
1296 
1297     IF l_number_of_warnings > 0 THEN
1298        x_return_status := wsh_util_core.g_ret_sts_warning;
1299     END IF;
1300 
1301 
1302         FND_MSG_PUB.Count_And_Get
1303           (
1304       p_count =>  x_msg_count,
1305             p_data  =>  x_msg_data,
1306             p_encoded => FND_API.G_FALSE
1307           );
1308 
1309 
1310   IF FND_API.TO_BOOLEAN(p_commit) THEN
1311     COMMIT WORK;
1312   END IF;
1313 
1314 
1315         IF l_debug_on THEN
1316            WSH_DEBUG_SV.pop(l_module_name);
1317         END IF;
1318 --
1319   EXCEPTION
1320         WHEN FND_API.G_EXC_ERROR THEN
1321                 ROLLBACK TO AUTOCREATE_DEL_PUB;
1322                 x_return_status := FND_API.G_RET_STS_ERROR ;
1323                 wsh_util_core.add_message(x_return_status);
1324                 FND_MSG_PUB.Count_And_Get
1325                   (
1326                      p_count  => x_msg_count,
1327                      p_data  =>  x_msg_data,
1328                p_encoded => FND_API.G_FALSE
1329                   );
1330 
1331           IF l_debug_on THEN
1332              WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_ERROR exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
1333             WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_ERROR');
1334          END IF;
1335 
1336          WHEN autocreate_delivery_failed THEN
1337               ROLLBACK TO AUTOCREATE_DEL_PUB;
1338               x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1339                 FND_MSG_PUB.Count_And_Get
1340                   (
1341                      p_count  => x_msg_count,
1342                      p_data  =>  x_msg_data,
1343                p_encoded => FND_API.G_FALSE
1344                   );
1345 
1346             IF l_debug_on THEN
1347                WSH_DEBUG_SV.logmsg(l_module_name,'AUTOCREATE_DELIVERY_FAILED exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
1348                WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:AUTOCREATE_DELIVERY_FAILED');
1349            END IF;
1350 
1351         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1352                 ROLLBACK TO AUTOCREATE_DEL_PUB;
1353                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1354                wsh_util_core.add_message(x_return_status, l_module_name);
1355                 FND_MSG_PUB.Count_And_Get
1356                   (
1357                      p_count  => x_msg_count,
1358                      p_data  =>  x_msg_data,
1359                p_encoded => FND_API.G_FALSE
1360                   );
1361                   --
1362 
1363            IF l_debug_on THEN
1364                 WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_UNEXPECTED_ERROR exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
1365                 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
1366            END IF;
1367         WHEN OTHERS THEN
1368                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1369                 ROLLBACK TO AUTOCREATE_DEL_PUB;
1370                wsh_util_core.add_message(x_return_status, l_module_name);
1371                WSH_UTIL_CORE.default_handler('WSH_DELIVERY_DETAILS_PUB.Autocreate_Deliveries');
1372                 FND_MSG_PUB.Count_And_Get
1373                   (
1374                      p_count  => x_msg_count,
1375                      p_data  =>  x_msg_data,
1376                p_encoded => FND_API.G_FALSE
1377                   );
1378     --
1379             IF l_debug_on THEN
1380                 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
1381                 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
1382             END IF;
1383    --
1384 END Autocreate_Deliveries;
1385 
1386 PROCEDURE Autocreate_del_trip(
1387   -- Standard parameters
1388   p_api_version_number     IN     NUMBER
1389 , p_init_msg_list          IN     VARCHAR2
1390 , p_commit                 IN     VARCHAR2
1391 , x_return_status             OUT NOCOPY  VARCHAR2
1392 , x_msg_count                 OUT NOCOPY  NUMBER
1393 , x_msg_data                  OUT NOCOPY  VARCHAR2
1394 , p_line_rows              IN     WSH_UTIL_CORE.id_tab_type
1395 , x_del_rows                  OUT NOCOPY  WSH_UTIL_CORE.id_tab_type
1396 , x_trip_id                   OUT NOCOPY  NUMBER
1397 , x_trip_name                 OUT NOCOPY  VARCHAR2
1398 )
1399 IS
1400 
1401   l_trip_rows WSH_UTIL_CORE.id_tab_type;
1402   l_first    NUMBER := 0;
1403   l_debug_on BOOLEAN;
1404   --
1405   l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'AUTOCREATE_DEL_TRIP - single trip';
1406 
1407 BEGIN
1408     -- Standard begin of API savepoint
1409     --
1410     l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
1411     --
1412     IF l_debug_on IS NULL THEN
1413         l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
1414     END IF;
1415     --
1416     SAVEPOINT AUTOCREATE_TRIP_PUB;
1417     --
1418     IF l_debug_on THEN
1419         WSH_DEBUG_SV.push(l_module_name);
1420     END IF;
1421     --
1422 
1423 
1424     IF l_debug_on THEN
1425         WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_DELIVERY_DETAILS_PUB.Autocreate_del_trip - multiple trips',WSH_DEBUG_SV.C_PROC_LEVEL);
1426     END IF;
1427 
1428 
1429     WSH_DELIVERY_DETAILS_PUB.Autocreate_del_trip(
1430       -- Standard parameters
1431       p_api_version_number  => p_api_version_number,
1432       p_init_msg_list       => p_init_msg_list,
1433       p_commit              => p_commit,
1434       x_return_status       => x_return_status,
1435       x_msg_count           => x_msg_count,
1436       x_msg_data            => x_msg_data,
1437       p_line_rows           => p_line_rows,
1438       x_del_rows            => x_del_rows,
1439       x_trip_rows           => l_trip_rows );
1440 
1441     IF l_trip_rows.count > 0 THEN
1442       l_first := l_trip_rows.first;
1443       x_trip_id := l_trip_rows(l_first);
1444       IF x_trip_id IS NOT NULL THEN
1445         x_trip_name := wsh_trips_pvt.get_name(x_trip_id);
1446       ELSE
1447         x_trip_name := NULL;
1448       END IF;
1449     ELSE
1450       x_trip_id := NULL;
1451       x_trip_name := NULL;
1452     END IF;
1453 
1454     IF l_debug_on THEN
1455       WSH_DEBUG_SV.pop(l_module_name);
1456     END IF;
1457 
1458   EXCEPTION
1459 
1460 
1461     WHEN OTHERS THEN
1462 
1463       x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1464       ROLLBACK TO AUTOCREATE_TRIP_PUB;
1465       wsh_util_core.add_message(x_return_status, l_module_name);
1466       WSH_UTIL_CORE.default_handler('WSH_DELIVERY_DETAILS_PUB.Autocreate_Del_Trip');
1467       FND_MSG_PUB.Count_And_Get
1468         (
1469            p_count  => x_msg_count,
1470            p_data  =>  x_msg_data,
1471            p_encoded => FND_API.G_FALSE
1472         );
1473 
1474       IF l_debug_on THEN
1475           WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
1476           WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
1477       END IF;
1478 
1479 END Autocreate_del_trip;
1480 
1481 
1482 PROCEDURE Autocreate_del_trip(
1483   -- Standard parameters
1484   p_api_version_number     IN     NUMBER
1485 , p_init_msg_list          IN     VARCHAR2
1486 , p_commit                 IN     VARCHAR2
1487 , x_return_status             OUT NOCOPY  VARCHAR2
1488 , x_msg_count                 OUT NOCOPY  NUMBER
1489 , x_msg_data                  OUT NOCOPY  VARCHAR2
1490 , p_line_rows              IN     WSH_UTIL_CORE.id_tab_type
1491 , x_del_rows                  OUT NOCOPY  WSH_UTIL_CORE.id_tab_type
1492 , x_trip_rows                   OUT NOCOPY  WSH_UTIL_CORE.id_tab_type
1493 )
1494 IS
1495       l_api_name    CONSTANT  VARCHAR2(30):= 'Autocreate_del_trip';
1496       l_api_version_number      CONSTANT NUMBER := 1.0;
1497       l_return_status           VARCHAR2(30);
1498       l_msg_summary             varchar2(2000)  := NULL;
1499       l_msg_details             varchar2(4000)  := NULL;
1500       l_org_rows    wsh_util_core.id_tab_type; -- bug 1668578
1501       autocreate_trip_failed    EXCEPTION;
1502 
1503       -- Harmonization Project
1504       l_action_prms             WSH_GLBL_VAR_STRCT_GRP.dd_action_parameters_rec_type;
1505       l_action_out_rec         WSH_GLBL_VAR_STRCT_GRP.dd_action_out_rec_type;
1506       l_dummy_qty               NUMBER;
1507       l_dummy_qty2              NUMBER;
1508       l_del_rows                wsh_util_core.id_tab_type;
1509   l_msg_count                 NUMBER;
1510   l_msg_data                  VARCHAR2(32767);
1511   l_number_of_errors    NUMBER := 0;
1512   l_number_of_warnings  NUMBER := 0;
1513 --
1514 l_debug_on BOOLEAN;
1515 --
1516 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'AUTOCREATE_DEL_TRIP - multiple trips';
1517 --
1518 BEGIN
1519     -- Standard begin of API savepoint
1520         --
1521         l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
1522         --
1523         IF l_debug_on IS NULL
1524         THEN
1525             l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
1526         END IF;
1527         --
1528         SAVEPOINT AUTOCREATE_TRIP_PUB;
1529         --
1530         IF l_debug_on THEN
1531             WSH_DEBUG_SV.push(l_module_name);
1532             --
1533             WSH_DEBUG_SV.log(l_module_name,'P_API_VERSION_NUMBER',P_API_VERSION_NUMBER);
1534             WSH_DEBUG_SV.log(l_module_name,'P_INIT_MSG_LIST',P_INIT_MSG_LIST);
1535             WSH_DEBUG_SV.log(l_module_name,'P_COMMIT',P_COMMIT);
1536         END IF;
1537         --
1538 
1539   IF NOT FND_API.compatible_api_call(
1540     l_api_version_number,
1541     p_api_version_number,
1542     l_api_name,
1543     G_PKG_NAME) THEN
1544     RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1545   END IF;
1546 
1547   -- Check p_init_msg_list
1548   IF FND_API.to_boolean(p_init_msg_list)  THEN
1549     FND_MSG_PUB.initialize;
1550   END IF;
1551   x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
1552 
1553         l_action_prms.caller := 'WSH_PUB';
1554         l_action_prms.action_code := 'AUTOCREATE-TRIP';
1555 
1556           /* Patchset I: Harmonization Project. Call group API
1557            All validations done by Group API */
1558 
1559             IF l_debug_on THEN
1560                 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_INTERFACE_GRP.DELIVERY_DETAIL_ACTION',WSH_DEBUG_SV.C_PROC_LEVEL);
1561             END IF;
1562 
1563         wsh_interface_grp.delivery_detail_action(
1564             p_api_version_number    => p_api_version_number,
1565             p_init_msg_list         => FND_API.G_FALSE,
1566             p_commit                => FND_API.G_FALSE,
1567             x_return_status         => l_return_status,
1568             x_msg_count             => l_msg_count,
1569             x_msg_data              => l_msg_data,
1570             p_detail_id_tab         => p_line_rows,
1571             p_action_prms           => l_action_prms ,
1572             x_action_out_rec        => l_action_out_rec);
1573 
1574             IF l_debug_on THEN
1575                 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.API_POST_CALL',WSH_DEBUG_SV.C_PROC_LEVEL);
1576             END IF;
1577             --
1578             wsh_util_core.api_post_call(
1579                p_return_status => l_return_status,
1580                x_num_warnings  => l_number_of_warnings,
1581                x_num_errors    => l_number_of_errors,
1582                p_msg_data      => l_msg_data
1583                );
1584 
1585             x_del_rows := l_action_out_rec.delivery_id_tab;
1586             x_trip_rows:= l_action_out_rec.result_id_tab;
1587 
1588   IF l_number_of_warnings > 0 THEN
1589       x_return_status := wsh_util_core.g_ret_sts_warning;
1590   END IF;
1591 
1592   IF FND_API.TO_BOOLEAN(p_commit) THEN
1593     COMMIT WORK;
1594   END IF;
1595 
1596         FND_MSG_PUB.Count_And_Get
1597           (
1598       p_count =>  x_msg_count,
1599             p_data  =>  x_msg_data,
1600             p_encoded => FND_API.G_FALSE
1601           );
1602 
1603 
1604       IF l_debug_on THEN
1605          WSH_DEBUG_SV.pop(l_module_name);
1606      END IF;
1607 
1608   EXCEPTION
1609         WHEN FND_API.G_EXC_ERROR THEN
1610                 ROLLBACK TO AUTOCREATE_TRIP_PUB;
1611                 x_return_status := FND_API.G_RET_STS_ERROR ;
1612                 wsh_util_core.add_message(x_return_status);
1613                 FND_MSG_PUB.Count_And_Get
1614                   (
1615                      p_count  => x_msg_count,
1616                      p_data  =>  x_msg_data,
1617                p_encoded => FND_API.G_FALSE
1618                   );
1619 
1620        IF l_debug_on THEN
1621           WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_ERROR exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
1622           WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_ERROR');
1623       END IF;
1624 
1625         WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1626                 ROLLBACK TO AUTOCREATE_TRIP_PUB;
1627                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
1628                wsh_util_core.add_message(x_return_status, l_module_name);
1629                 FND_MSG_PUB.Count_And_Get
1630                   (
1631                      p_count  => x_msg_count,
1632                      p_data  =>  x_msg_data,
1633                p_encoded => FND_API.G_FALSE
1634                   );
1635                   --
1636 
1637            IF l_debug_on THEN
1638                 WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_UNEXPECTED_ERROR exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
1639                 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
1640            END IF;
1641 
1642 
1643         WHEN autocreate_trip_failed THEN
1644                 ROLLBACK TO AUTOCREATE_TRIP_PUB;
1645                 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1646                    FND_MSG_PUB.Count_And_Get
1647                   (
1648                      p_count  => x_msg_count,
1649                      p_data  =>  x_msg_data,
1650                p_encoded => FND_API.G_FALSE
1651                   );
1652 
1653   IF l_debug_on THEN
1654       WSH_DEBUG_SV.logmsg(l_module_name,'AUTOCREATE_TRIP_FAILED exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
1655       WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:AUTOCREATE_TRIP_FAILED');
1656   END IF;
1657 
1658         WHEN OTHERS THEN
1659 
1660                 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
1661                 ROLLBACK TO AUTOCREATE_TRIP_PUB;
1662                wsh_util_core.add_message(x_return_status, l_module_name);
1663                WSH_UTIL_CORE.default_handler('WSH_DELIVERY_DETAILS_PUB.Autocreate_Del_Trip');
1664                 FND_MSG_PUB.Count_And_Get
1665                   (
1666                      p_count  => x_msg_count,
1667                      p_data  =>  x_msg_data,
1668                p_encoded => FND_API.G_FALSE
1669                   );
1670     --
1671             IF l_debug_on THEN
1672                 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
1673                 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
1674             END IF;
1675   --
1676 END Autocreate_del_trip;
1677 
1678 
1679 PROCEDURE Copy_Attributes(
1680   x_detail_info_tab OUT NOCOPY WSH_GLBL_VAR_STRCT_GRP.Delivery_Details_Attr_Tbl_Type
1681 , x_changed_attributes IN WSH_DELIVERY_DETAILS_PUB.ChangedAttributeTabType)
1682 
1683 IS
1684 
1685 l_index    NUMBER;
1686 l_debug_on BOOLEAN;
1687 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'COPY_ATTRIBUTES';
1688 
1689 BEGIN
1690         --
1691         l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
1692         --
1693         IF l_debug_on IS NULL
1694         THEN
1695             l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
1696         END IF;
1697         --
1698         IF l_debug_on THEN
1699 
1700             WSH_DEBUG_SV.push(l_module_name);
1701             WSH_DEBUG_SV.log(l_module_name,'X_CHANGED_ATTRIBUTES.COUNT', X_CHANGED_ATTRIBUTES.COUNT);
1702 
1703         END IF;
1704 
1705         l_index := x_changed_attributes.FIRST;
1706 
1707 
1708         WHILE l_index IS NOT NULL
1709         LOOP
1710 
1711              x_detail_info_tab(l_index).source_header_id :=     x_changed_attributes(l_index).source_header_id;
1712              x_detail_info_tab(l_index).source_line_id   :=     x_changed_attributes(l_index).source_line_id;
1713              x_detail_info_tab(l_index).sold_to_contact_id :=     x_changed_attributes(l_index).sold_to_contact_id;
1714              x_detail_info_tab(l_index).ship_to_contact_id :=     x_changed_attributes(l_index).ship_to_contact_id;
1715              x_detail_info_tab(l_index).deliver_to_contact_id :=     x_changed_attributes(l_index).deliver_to_contact_id;
1716              x_detail_info_tab(l_index).intmed_ship_to_contact_id :=     x_changed_attributes(l_index).intmed_ship_to_contact_id;
1717              x_detail_info_tab(l_index).ship_tolerance_above :=     x_changed_attributes(l_index).ship_tolerance_above;
1718              x_detail_info_tab(l_index).ship_tolerance_below :=     x_changed_attributes(l_index).ship_tolerance_below;
1719              x_detail_info_tab(l_index).preferred_grade :=     x_changed_attributes(l_index).preferred_grade;
1720              x_detail_info_tab(l_index).subinventory :=     x_changed_attributes(l_index).subinventory;
1721              x_detail_info_tab(l_index).revision :=     x_changed_attributes(l_index).revision;
1722              x_detail_info_tab(l_index).lot_number :=     x_changed_attributes(l_index).lot_number;
1723 -- HW OPMCONV - No need for sublot_number
1724 --           x_detail_info_tab(l_index).sublot_number :=     x_changed_attributes(l_index).sublot_number;
1725              x_detail_info_tab(l_index).customer_requested_lot_flag :=     x_changed_attributes(l_index).customer_requested_lot_flag;
1726              x_detail_info_tab(l_index).serial_number :=     x_changed_attributes(l_index).serial_number;
1727              x_detail_info_tab(l_index).to_serial_number := x_changed_attributes(l_index).to_serial_number;
1728              x_detail_info_tab(l_index).locator_id :=     x_changed_attributes(l_index).locator_id;
1729              x_detail_info_tab(l_index).date_requested :=     x_changed_attributes(l_index).date_requested;
1730              x_detail_info_tab(l_index).date_scheduled :=     x_changed_attributes(l_index).date_scheduled;
1731              x_detail_info_tab(l_index).master_container_item_id :=     x_changed_attributes(l_index).master_container_item_id;
1732              x_detail_info_tab(l_index).detail_container_item_id :=     x_changed_attributes(l_index).detail_container_item_id;
1733              x_detail_info_tab(l_index).ship_method_code :=     x_changed_attributes(l_index).shipping_method_code;
1734              x_detail_info_tab(l_index).carrier_id :=     x_changed_attributes(l_index).carrier_id;
1735              x_detail_info_tab(l_index).freight_terms_code :=     x_changed_attributes(l_index).freight_terms_code;
1736              x_detail_info_tab(l_index).shipment_priority_code :=     x_changed_attributes(l_index).shipment_priority_code;
1737              x_detail_info_tab(l_index).fob_code :=     x_changed_attributes(l_index).fob_code;
1738              x_detail_info_tab(l_index).dep_plan_required_flag :=     x_changed_attributes(l_index).dep_plan_required_flag;
1739              x_detail_info_tab(l_index).customer_prod_seq :=     x_changed_attributes(l_index).customer_prod_seq;
1740              x_detail_info_tab(l_index).customer_dock_code :=     x_changed_attributes(l_index).customer_dock_code;
1741              x_detail_info_tab(l_index).gross_weight :=     x_changed_attributes(l_index).gross_weight;
1742              x_detail_info_tab(l_index).net_weight :=     x_changed_attributes(l_index).net_weight;
1743              x_detail_info_tab(l_index).weight_uom_code :=     x_changed_attributes(l_index).weight_uom_code;
1744              x_detail_info_tab(l_index).volume :=     x_changed_attributes(l_index).volume;
1745              x_detail_info_tab(l_index).volume_uom_code :=     x_changed_attributes(l_index).volume_uom_code;
1746              x_detail_info_tab(l_index).top_model_line_id :=     x_changed_attributes(l_index).top_model_line_id;
1747              x_detail_info_tab(l_index).ship_set_id :=     x_changed_attributes(l_index).ship_set_id;
1748              x_detail_info_tab(l_index).ato_line_id :=     x_changed_attributes(l_index).ato_line_id;
1749              x_detail_info_tab(l_index).arrival_set_id :=     x_changed_attributes(l_index).arrival_set_id;
1750              x_detail_info_tab(l_index).ship_model_complete_flag :=     x_changed_attributes(l_index).ship_model_complete_flag;
1751              x_detail_info_tab(l_index).cust_po_number :=     x_changed_attributes(l_index).cust_po_number;
1752              x_detail_info_tab(l_index).released_status :=     x_changed_attributes(l_index).released_status;
1753              x_detail_info_tab(l_index).packing_instructions :=     x_changed_attributes(l_index).packing_instructions;
1754              x_detail_info_tab(l_index).shipping_instructions :=     x_changed_attributes(l_index).shipping_instructions;
1755              x_detail_info_tab(l_index).container_name :=     x_changed_attributes(l_index).container_name;
1756              x_detail_info_tab(l_index).container_flag :=     x_changed_attributes(l_index).container_flag ;
1757              x_detail_info_tab(l_index).delivery_detail_id :=     x_changed_attributes(l_index).delivery_detail_id;
1758              x_detail_info_tab(l_index).shipped_quantity :=     x_changed_attributes(l_index).shipped_quantity   ;
1759              x_detail_info_tab(l_index).cycle_count_quantity :=     x_changed_attributes(l_index).cycle_count_quantity  ;
1760              /* Bug 3055126  added shipped_quantity 2 and cycle_count_quantity2 and removed from defaulting below */
1761              x_detail_info_tab(l_index).shipped_quantity2            :=   x_changed_attributes(l_index).shipped_quantity2   ;
1762              x_detail_info_tab(l_index).cycle_count_quantity2        :=   x_changed_attributes(l_index).cycle_count_quantity2  ;x_detail_info_tab(l_index).tracking_number :=     x_changed_attributes(l_index).tracking_number ;
1763              x_detail_info_tab(l_index).attribute_category :=      x_changed_attributes(l_index).attribute_category;
1764              x_detail_info_tab(l_index).attribute1 :=     x_changed_attributes(l_index).attribute1;
1765              x_detail_info_tab(l_index).attribute2 :=     x_changed_attributes(l_index).attribute2;
1766              x_detail_info_tab(l_index).attribute3 :=     x_changed_attributes(l_index).attribute3;
1767              x_detail_info_tab(l_index).attribute4 :=     x_changed_attributes(l_index).attribute4;
1768              x_detail_info_tab(l_index).attribute5 :=     x_changed_attributes(l_index).attribute5;
1769              x_detail_info_tab(l_index).attribute6 :=     x_changed_attributes(l_index).attribute6;
1770              x_detail_info_tab(l_index).attribute7 :=     x_changed_attributes(l_index).attribute7;
1771              x_detail_info_tab(l_index).attribute8 :=     x_changed_attributes(l_index).attribute8;
1772              x_detail_info_tab(l_index).attribute9 :=     x_changed_attributes(l_index).attribute9;
1773              x_detail_info_tab(l_index).attribute10 :=     x_changed_attributes(l_index).attribute10;
1774              x_detail_info_tab(l_index).attribute11 :=     x_changed_attributes(l_index).attribute11;
1775              x_detail_info_tab(l_index).attribute12 :=     x_changed_attributes(l_index).attribute12;
1776              x_detail_info_tab(l_index).attribute13 :=     x_changed_attributes(l_index).attribute13;
1777              x_detail_info_tab(l_index).attribute14 :=     x_changed_attributes(l_index).attribute14;
1778              x_detail_info_tab(l_index).attribute15 :=     x_changed_attributes(l_index).attribute15;
1779 -- Bug 3723831 :tp attributes also part of the public API update_shipping_attributes
1780              x_detail_info_tab(l_index).tp_attribute_category  :=     x_changed_attributes(l_index).tp_attribute_category;
1781              x_detail_info_tab(l_index).tp_attribute1          :=     x_changed_attributes(l_index).tp_attribute1;
1782              x_detail_info_tab(l_index).tp_attribute2          :=     x_changed_attributes(l_index).tp_attribute2;
1783              x_detail_info_tab(l_index).tp_attribute3          :=     x_changed_attributes(l_index).tp_attribute3;
1784              x_detail_info_tab(l_index).tp_attribute4          :=     x_changed_attributes(l_index).tp_attribute4;
1785              x_detail_info_tab(l_index).tp_attribute5          :=     x_changed_attributes(l_index).tp_attribute5;
1786              x_detail_info_tab(l_index).tp_attribute6          :=     x_changed_attributes(l_index).tp_attribute6;
1787              x_detail_info_tab(l_index).tp_attribute7          :=     x_changed_attributes(l_index).tp_attribute7;
1788              x_detail_info_tab(l_index).tp_attribute8          :=     x_changed_attributes(l_index).tp_attribute8;
1789              x_detail_info_tab(l_index).tp_attribute9          :=     x_changed_attributes(l_index).tp_attribute9;
1790              x_detail_info_tab(l_index).tp_attribute10         :=     x_changed_attributes(l_index).tp_attribute10;
1791              x_detail_info_tab(l_index).tp_attribute11         :=     x_changed_attributes(l_index).tp_attribute11;
1792              x_detail_info_tab(l_index).tp_attribute12         :=     x_changed_attributes(l_index).tp_attribute12;
1793              x_detail_info_tab(l_index).tp_attribute13         :=     x_changed_attributes(l_index).tp_attribute13;
1794              x_detail_info_tab(l_index).tp_attribute14         :=     x_changed_attributes(l_index).tp_attribute14;
1795              x_detail_info_tab(l_index).tp_attribute15         :=     x_changed_attributes(l_index).tp_attribute15;
1796 
1797 -- J: W/V Changes
1798              x_detail_info_tab(l_index).filled_volume :=     x_changed_attributes(l_index).filled_volume;
1799 	     -- Bug 4146352 : Added seal_code and load_seq_number.
1800 	     --
1801              x_detail_info_tab(l_index).seal_code       :=     x_changed_attributes(l_index).seal_code;
1802              x_detail_info_tab(l_index).load_seq_number := x_changed_attributes(l_index).load_seq_number;
1803              /* Start of fix for Bug 2766446
1804              For those attributes that are not available in public api record,
1805              need to send G_MISS values so that the database values are used for such attributes */
1806 
1807              x_detail_info_tab(l_index).batch_id          :=      FND_API.G_MISS_NUM;
1808              x_detail_info_tab(l_index).cancelled_quantity      :=      FND_API.G_MISS_NUM;
1809              x_detail_info_tab(l_index).cancelled_quantity2         :=      FND_API.G_MISS_NUM;
1810              x_detail_info_tab(l_index).classification      :=      FND_API.G_MISS_CHAR;
1811              x_detail_info_tab(l_index).commodity_code_cat_id       :=      FND_API.G_MISS_NUM;
1812              x_detail_info_tab(l_index).container_type_code       :=      FND_API.G_MISS_CHAR;
1813              x_detail_info_tab(l_index).country_of_origin      :=      FND_API.G_MISS_CHAR;
1814              x_detail_info_tab(l_index).currency_code      :=      FND_API.G_MISS_CHAR;
1815              x_detail_info_tab(l_index).cust_model_serial_number        :=      FND_API.G_MISS_CHAR;
1816              x_detail_info_tab(l_index).customer_id           := FND_API.G_MISS_NUM;
1817              x_detail_info_tab(l_index).customer_item_id      :=      FND_API.G_MISS_NUM;
1818              x_detail_info_tab(l_index).customer_job              :=      FND_API.G_MISS_CHAR;
1819              x_detail_info_tab(l_index).customer_production_line      :=      FND_API.G_MISS_CHAR;
1820              x_detail_info_tab(l_index).deliver_to_location_id      := FND_API.G_MISS_NUM;
1821              x_detail_info_tab(l_index).deliver_to_site_use_id      :=      FND_API.G_MISS_NUM;
1822              x_detail_info_tab(l_index).delivered_quantity      :=      FND_API.G_MISS_NUM;
1823              x_detail_info_tab(l_index).delivered_quantity2       :=      FND_API.G_MISS_NUM;
1824              x_detail_info_tab(l_index).freight_class_cat_id      := FND_API.G_MISS_NUM;
1825              x_detail_info_tab(l_index).fill_percent      :=      FND_API.G_MISS_NUM;
1826              x_detail_info_tab(l_index).hazard_class_id      :=      FND_API.G_MISS_NUM;
1827              x_detail_info_tab(l_index).hold_code      :=      FND_API.G_MISS_CHAR;
1828              x_detail_info_tab(l_index).inspection_flag        :=      FND_API.G_MISS_CHAR;
1829              x_detail_info_tab(l_index).intmed_ship_to_location_id := FND_API.G_MISS_NUM;
1830              x_detail_info_tab(l_index).inv_interfaced_flag      :=      FND_API.G_MISS_CHAR;
1831              x_detail_info_tab(l_index).inventory_item_id      :=      FND_API.G_MISS_NUM;
1832              x_detail_info_tab(l_index).item_description      :=      FND_API.G_MISS_CHAR;
1833 	     -- Bug 4146352 : Need to comment seal_code as this is now added to
1834 	     -- the public api record structure.
1835              -- x_detail_info_tab(l_index).load_seq_number      :=      FND_API.G_MISS_NUM;
1836              x_detail_info_tab(l_index).lpn_id        :=      FND_API.G_MISS_NUM;
1837              x_detail_info_tab(l_index).master_serial_number      :=      FND_API.G_MISS_CHAR;
1838              x_detail_info_tab(l_index).maximum_load_weight      :=      FND_API.G_MISS_NUM;
1839              x_detail_info_tab(l_index).maximum_volume      :=      FND_API.G_MISS_NUM;
1840              x_detail_info_tab(l_index).minimum_fill_percent      :=      FND_API.G_MISS_NUM;
1841              x_detail_info_tab(l_index).move_order_line_id      :=      FND_API.G_MISS_NUM;
1842              x_detail_info_tab(l_index).movement_id      :=      FND_API.G_MISS_NUM;
1843              x_detail_info_tab(l_index).mvt_stat_status      :=      FND_API.G_MISS_CHAR;
1844              x_detail_info_tab(l_index).oe_interfaced_flag      :=      FND_API.G_MISS_CHAR;
1845              x_detail_info_tab(l_index).org_id              := FND_API.G_MISS_NUM;
1846              x_detail_info_tab(l_index).organization_id     := FND_API.G_MISS_NUM;
1847              x_detail_info_tab(l_index).original_subinventory        :=      FND_API.G_MISS_CHAR;
1848              x_detail_info_tab(l_index).pickable_flag        :=      FND_API.G_MISS_CHAR;
1849              x_detail_info_tab(l_index).picked_quantity      :=      FND_API.G_MISS_NUM;
1850              x_detail_info_tab(l_index).picked_quantity2      :=      FND_API.G_MISS_NUM;
1851              x_detail_info_tab(l_index).project_id      :=      FND_API.G_MISS_NUM;
1852              x_detail_info_tab(l_index).quality_control_quantity      :=      FND_API.G_MISS_NUM;
1853              x_detail_info_tab(l_index).quality_control_quantity2       :=      FND_API.G_MISS_NUM;
1854              x_detail_info_tab(l_index).received_quantity      :=      FND_API.G_MISS_NUM;
1855              x_detail_info_tab(l_index).received_quantity2      :=      FND_API.G_MISS_NUM;
1856              x_detail_info_tab(l_index).released_flag      :=      FND_API.G_MISS_CHAR;
1857              x_detail_info_tab(l_index).request_id      :=      FND_API.G_MISS_NUM;
1858              x_detail_info_tab(l_index).requested_quantity      :=      FND_API.G_MISS_NUM;
1859              x_detail_info_tab(l_index).requested_quantity_uom      :=      FND_API.G_MISS_CHAR;
1860              x_detail_info_tab(l_index).requested_quantity_uom2      :=      FND_API.G_MISS_CHAR;
1861              x_detail_info_tab(l_index).requested_quantity2        :=      FND_API.G_MISS_NUM;
1862 	     -- Bug 4146352 : Need to comment seal_code as this is now added to
1863 	     -- the public api record structure.
1864              -- x_detail_info_tab(l_index).seal_code      :=      FND_API.G_MISS_CHAR;
1865              x_detail_info_tab(l_index).ship_from_location_id    :=      FND_API.G_MISS_NUM;
1866              x_detail_info_tab(l_index).ship_to_location_id      :=      FND_API.G_MISS_NUM;
1867              x_detail_info_tab(l_index).ship_to_site_use_id      :=      FND_API.G_MISS_NUM;
1868              x_detail_info_tab(l_index).source_code      :=      FND_API.G_MISS_CHAR;
1869              x_detail_info_tab(l_index).source_header_number      :=      FND_API.G_MISS_CHAR;
1870              x_detail_info_tab(l_index).source_header_type_id      :=      FND_API.G_MISS_NUM;
1871              x_detail_info_tab(l_index).source_header_type_name      :=      FND_API.G_MISS_CHAR;
1872              x_detail_info_tab(l_index).source_line_number      :=      FND_API.G_MISS_CHAR;
1873              x_detail_info_tab(l_index).source_line_set_id      :=      FND_API.G_MISS_NUM;
1874              x_detail_info_tab(l_index).split_from_detail_id      :=      FND_API.G_MISS_NUM;
1875              x_detail_info_tab(l_index).src_requested_quantity      :=      FND_API.G_MISS_NUM;
1876              x_detail_info_tab(l_index).src_requested_quantity_uom      :=      FND_API.G_MISS_CHAR;
1877              x_detail_info_tab(l_index).src_requested_quantity_uom2        :=      FND_API.G_MISS_CHAR;
1878              x_detail_info_tab(l_index).src_requested_quantity2       :=      FND_API.G_MISS_NUM;
1879              x_detail_info_tab(l_index).task_id      :=      FND_API.G_MISS_NUM;
1880              x_detail_info_tab(l_index).transaction_temp_id      :=      FND_API.G_MISS_NUM;
1881              x_detail_info_tab(l_index).unit_number        :=      FND_API.G_MISS_CHAR;
1882              x_detail_info_tab(l_index).unit_price      :=      FND_API.G_MISS_NUM;
1883 -- J: W/V Changes
1884              x_detail_info_tab(l_index).unit_weight      :=      FND_API.G_MISS_NUM;
1885              x_detail_info_tab(l_index).unit_volume      :=      FND_API.G_MISS_NUM;
1886 
1887              /* End of fix for  Bug 2766446 */
1888 
1889              l_index := x_changed_attributes.NEXT(l_index);
1890        END LOOP;
1891 
1892   IF l_debug_on THEN
1893     WSH_DEBUG_SV.pop(l_module_name);
1894   END IF;
1895 
1896 EXCEPTION
1897 
1898   WHEN FND_API.G_EXC_ERROR THEN
1899 
1900     IF l_debug_on THEN
1901       WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_ERROR exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
1902       WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_ERROR');
1903     END IF;
1904     raise;
1905 
1906 
1907   WHEN OTHERS THEN
1908 
1909      wsh_util_core.default_handler('WSH_DELIVERY_DETAILS_PUB.UPDATE_ATTRIBUTES');
1910      IF l_debug_on THEN
1911        WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
1912        WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
1913      END IF;
1914      raise;
1915 
1916 END Copy_Attributes;
1917 
1918 
1919 END WSH_DELIVERY_DETAILS_PUB;