[Home] [Help]
PACKAGE BODY: APPS.WSH_DELIVERIES_GRP
Source
1 PACKAGE BODY WSH_DELIVERIES_GRP as
2 /* $Header: WSHDEGPB.pls 120.23 2007/11/16 06:30:16 sankarun noship $ */
3
4 --===================
5 -- CONSTANTS
6 --===================
7 G_PKG_NAME CONSTANT VARCHAR2(30) := 'WSH_DELIVERIES_GRP';
8 -- add your constants here if any
9
10 -- Forward declaration
11 PROCEDURE Lock_Related_Entities(
12 p_rec_attr_tab IN WSH_NEW_DELIVERIES_PVT.Delivery_Attr_Tbl_Type,
13 p_action_prms IN action_parameters_rectype,
14 x_valid_ids_tab OUT NOCOPY WSH_UTIL_CORE.ID_TAB_TYPE,
15 x_return_status OUT NOCOPY VARCHAR2
16 );
17
18 --===================
19 -- PROCEDURES
20 --===================
21 -- I Harmonization: rvishnuv ******* Actions ******
22 --========================================================================
23 -- PROCEDURE : Delivery_Action Must be called only by the Form
24 -- and the Wrapper Group API.
25 --
26 -- PARAMETERS: p_api_version_number known api version error number
27 -- p_init_msg_list FND_API.G_TRUE to reset list
28 -- x_return_status return status
29 -- x_msg_count number of messages in the list
30 -- x_msg_data text of messages
31 -- p_action_prms Record of caller, phase, action_code and other
32 -- parameters specific to the actions.
33 -- p_rec_attr_tab Table of attributes for the delivery entity
34 -- x_result_id_tab Table of result ids for the actions 'AUTO-PACK',
35 -- 'AUTO-PACK-MASTER' and 'PICK-RELEASE'
36 -- x_valid_ids_tab Table of valid indexes or ids. If the caller is STF,
37 -- it contains table of valid indexes, else it contains
38 -- table of valid ids.
39 -- x_selection_issue_flag It is a form specific out parameter. It set to 'Y', if
40 -- the Validations in phase 1 return a 'warning'.
41 -- x_defaults_rec Record of Default Parameters that passed for the actions
42 -- 'CONFIRM', 'UNASSIGN-TRIP'.
43 -- x_delivery_out_rec Record of output parameters based on the actions.
44 -- VERSION : current version 1.0
45 -- initial version 1.0
46 -- COMMENT : This procedure is used to perform an action specified
47 -- in p_action_prms.action_code on an existing delivery identified
48 -- by p_rec_attr.delivery_id.
49 --========================================================================
50
51 PROCEDURE Delivery_Action
52 ( p_api_version_number IN NUMBER,
53 p_init_msg_list IN VARCHAR2,
54 p_commit IN VARCHAR2,
55 p_action_prms IN action_parameters_rectype,
56 p_rec_attr_tab IN WSH_NEW_DELIVERIES_PVT.Delivery_Attr_Tbl_Type ,
57 x_delivery_out_rec OUT NOCOPY Delivery_Action_Out_Rec_Type,
58 x_defaults_rec OUT NOCOPY default_parameters_rectype,
59 x_return_status OUT NOCOPY VARCHAR2,
60 x_msg_count OUT NOCOPY NUMBER,
61 x_msg_data OUT NOCOPY VARCHAR2
62 )
63 IS
64
65 CURSOR trip_cur(p_trip_id NUMBER) IS
66 SELECT SHIP_METHOD_CODE
67 FROM wsh_trips
68 WHERE trip_id = p_trip_id;
69
70
71 -- Bug 3346237 : Defer interface and enforce ship method to be taken from global parameters
72
73 cursor get_defer_interface is
74 select defer_interface,
75 enforce_ship_method
76 from wsh_global_parameters;
77
78
79 CURSOR c_dlvy_pack_slip_cur(p_delivery_id NUMBER) IS
80 SELECT sequence_number
81 FROM wsh_document_instances
82 WHERE entity_name = 'WSH_NEW_DELIVERIES'
83 AND entity_id = p_delivery_id
84 AND document_type = 'PACK_TYPE';
85
86 -- Cursors c_pack_slip_doc_set and c_delv_trip_id_cursor added for bug 4493263
87 CURSOR c_pack_slip_doc_set IS
88 SELECT WRS.Report_Set_Id
89 FROM Wsh_Report_Sets Wrs,
90 Wsh_Report_Set_Lines Wrsl
91 WHERE Wrsl.Report_Set_Id = Wrs.Report_Set_Id
92 AND Wrs.Name = 'Packing Slip Report';
93
94 CURSOR c_delv_trip_id_cursor( t_delivery_id NUMBER ) IS
95 select distinct trip_id from wsh_trip_stops
96 where stop_id in
97 ( select distinct pick_up_stop_id
98 from wsh_delivery_legs
99 where delivery_id = t_delivery_id );
100
101
102 CURSOR c_dlvy_leg_cur(p_delivery_id NUMBER) IS
103 SELECT b.delivery_leg_id,
104 b.pick_up_location_id,
105 b.drop_off_location_id,
106 b.ship_method,
107 b.carrier_id,
108 b.trip_id,
109 b.trip_name,
110 l.parent_delivery_leg_id
111 FROM wsh_bols_db_v b, wsh_delivery_legs l
112 WHERE b.delivery_id = p_delivery_id
113 AND l.delivery_leg_id = b.delivery_leg_id;
114
115 CURSOR c_child_deliveries(p_delivery_id IN NUMBER) IS
116 select child.delivery_id
117 from wsh_delivery_legs parent,
118 wsh_delivery_legs child
119 where parent.delivery_id = p_delivery_id
120 and parent.delivery_leg_id = child.parent_delivery_leg_id;
121
122
123 Cursor c_get_delivery_org(c_delivery_id number) is
124 SELECT initial_pickup_location_id
125 FROM wsh_new_deliveries
126 WHERE delivery_id = c_delivery_id;
127
128 Cursor c_del_assign_to_trip(c_delivery_id number) is
129 SELECT distinct t.trip_id, t.ship_method_code, t.lane_id
130 FROM wsh_new_deliveries dl,
131 wsh_delivery_legs dg,
132 wsh_trip_stops st,
133 wsh_trips t
134 WHERE dl.delivery_id = c_delivery_id AND
135 dl.delivery_id = dg.delivery_id AND
136 (dg.pick_up_stop_id = st.stop_id
137 OR
138 dg.DROP_OFF_STOP_ID = st.stop_id) AND
139 st.trip_id = t.trip_id;
140
141 --OTM R12
142 --selecting deliveries that has 'AR' status on a trip
143 CURSOR c_get_delivery_id(p_trip_id IN NUMBER) IS
144 SELECT wdl.delivery_id,
145 WSH_NEW_DELIVERIES_PVT.C_TMS_AWAITING_ANSWER interface_flag
146 FROM wsh_delivery_legs wdl,
147 wsh_trip_stops wts,
148 wsh_new_deliveries wnd,
149 wsh_trips wt
150 WHERE wt.trip_id = p_trip_id
151 AND wts.trip_id = wt.trip_id
152 AND wt.status_code = 'OP'
153 AND wdl.pick_up_stop_id = wts.stop_id
154 AND wnd.delivery_id = wdl.delivery_id
155 AND wnd.tms_interface_flag = WSH_NEW_DELIVERIES_PVT.C_TMS_ANSWER_RECEIVED;
156 --END OTM R12
157
158 l_first NUMBER;
159 l_last NUMBER;
160 l_return_status VARCHAR2(1);
161 l_num_errors NUMBER := 0;
162 l_num_warnings NUMBER := 0;
163 l_api_version_number CONSTANT NUMBER := 1.0;
164 l_api_name CONSTANT VARCHAR2(30):= 'Delivery_Action';
165 l_msg_count NUMBER;
166 l_msg_data VARCHAR2(32767);
167 l_counter NUMBER;
168 l_index NUMBER;
169 --
170 l_report_set_id NUMBER := p_action_prms.report_set_id;
171 l_form_flag VARCHAR2(1);
172 l_trip_id NUMBER := p_action_prms.trip_id;
173 l_pickup_loc_id NUMBER := p_action_prms.pickup_loc_id;
174 l_dropoff_loc_id NUMBER := p_action_prms.dropoff_loc_id;
175 --
176 l_debug_on BOOLEAN;
177 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'DELIVERY_ACTION';
178 --
179 l_delivery_id_tab wsh_util_core.id_tab_type;
180 l_valid_ids_tab wsh_util_core.id_tab_type;
181 l_valid_index_tab wsh_util_core.id_tab_type;
182 l_error_ids wsh_util_core.id_tab_type;
183 l_org_id_tab wsh_util_core.id_tab_type;
184 l_rec_attr_tab wsh_new_deliveries_pvt.Delivery_Attr_Tbl_Type;
185 l_ship_method_code_tab WSH_NEW_DELIVERY_ACTIONS.ship_method_type;
186 l_delivery_rec_tab wsh_delivery_validations.dlvy_rec_tab_type;
187 l_dummy_id_tab wsh_util_core.id_tab_type;
188 l_dummy_doc_set_params wsh_document_sets.document_set_tab_type;
189 l_param_name VARCHAR2(100);
190 l_isWshLocation BOOLEAN DEFAULT FALSE;
191 --
192 --Compatibility Changes
193 l_cc_validate_result VARCHAR2(1);
194 l_caller_module VARCHAR2(3);
195 l_cc_failed_records WSH_FTE_COMP_CONSTRAINT_PKG.failed_line_tab_type;
196 l_cc_line_groups WSH_FTE_COMP_CONSTRAINT_PKG.line_group_tab_type;
197 l_cc_group_info WSH_FTE_COMP_CONSTRAINT_PKG.cc_group_tab_type;
198 b_cc_linefailed boolean;
199 b_cc_groupidexists boolean;
200 l_delivery_id_tab_temp wsh_util_core.id_tab_type;
201 l_delivery_id_tab_t wsh_util_core.id_tab_type;
202 l_rec_attr_tab_temp WSH_NEW_DELIVERIES_PVT.Delivery_Attr_Tbl_Type;
203 l_cc_count_success NUMBER;
204 l_cc_count_group_ids NUMBER;
205 l_cc_count_rec NUMBER;
206 l_cc_group_ids wsh_util_core.id_tab_type;
207 l_cc_upd_dlvy_intmed_ship_to VARCHAR2(1);
208 l_cc_upd_dlvy_ship_method VARCHAR2(1);
209 l_cc_dlvy_intmed_ship_to NUMBER;
210 l_cc_dlvy_ship_method VARCHAR2(30);
211 l_cc_del_rows wsh_util_core.id_tab_type;
212 l_cc_grouping_rows wsh_util_core.id_tab_type;
213 l_cc_return_status VARCHAR2(1);
214 l_cc_count_del_rows NUMBER;
215 l_cc_count_trip_rows NUMBER;
216 l_cc_count_grouping_rows NUMBER;
217 l_cc_trip_id wsh_util_core.id_tab_type;
218 l_cc_trip_id_tab wsh_util_core.id_tab_type;
219 --dummy tables for calling validate_constraint_mainper
220 l_cc_del_attr_tab WSH_NEW_DELIVERIES_PVT.Delivery_Attr_Tbl_Type;
221 l_cc_det_attr_tab wsh_glbl_var_strct_grp.Delivery_Details_Attr_Tbl_Type;
222 l_cc_trip_attr_tab WSH_TRIPS_PVT.Trip_Attr_Tbl_Type;
223 l_cc_stop_attr_tab WSH_TRIP_STOPS_PVT.Stop_Attr_Tbl_Type;
224 l_cc_in_ids wsh_util_core.id_tab_type;
225 l_cc_fail_ids wsh_util_core.id_tab_type;
226 --
227
228 --Compatibility Changes
229 --
230 l_tripindex NUMBER;
231 l_trip_names wsh_util_core.column_tab_type;
232
233 --
234 -- l_trip_name VARCHAR2(30) := NULL;
235 l_action_code VARCHAR2(32767);
236 i NUMBER;
237 j NUMBER;
238 l_DelivGrpRec WSH_TRIP_CONSOLIDATION.t_DelivGrpRec;
239 l_tripID NUMBER;
240 l_defer_interface_flag VARCHAR2(1);
241 --
242
243 -- PACK J: QS: KVENKATE
244 l_dlvy_doc_seq_num VARCHAR2(50);
245 l_application_id NUMBER;
246 l_request_id NUMBER;
247
248 -- Added for bug 4493263
249 l_doc_set_id NUMBER;
250 l_doc_delivery_id_tab wsh_util_core.id_tab_type;
251 l_doc_valid_ids_tab wsh_util_core.id_tab_type;
252
253 l_dleg_prms WSH_DELIVERY_LEGS_GRP.action_parameters_rectype;
254 l_dleg_action_out_rec WSH_DELIVERY_LEGS_GRP.action_out_rec_type;
255 l_dleg_tab WSH_DELIVERY_LEGS_GRP.dlvy_leg_tab_type;
256
257 l_action_prms action_parameters_rectype;
258 l_delivery_out_rec Delivery_Action_Out_Rec_Type;
259 l_defaults_rec default_parameters_rectype;
260 l_loop_num_warn NUMBER := 0;
261 l_loop_num_err NUMBER := 0;
262 l_submitted_docs NUMBER :=0;
263 l_req_id_str VARCHAR2(2000);
264 -- PACK J: KVENKATE
265 l_routingRespIdTab wsh_util_core.id_tab_type;
266
267 -- csun deliveryMerge
268 l_exception_id NUMBER;
269 l_initial_pickup_location_id NUMBER;
270 l_exception_message VARCHAR2(2000);
271 l_in_param_rec WSH_FTE_INTEGRATION.rate_del_in_param_rec;
272 l_out_param_rec WSH_FTE_INTEGRATION.rate_del_out_param_rec;
273
274 -- J-Stop Sequence Change-CSUN
275 l_stop_details_rec WSH_TRIP_STOPS_VALIDATIONS.stop_details;
276
277 -- Bug 3311273
278 l_dleg_found VARCHAR2(1) := 'N';
279 --
280 --dcp
281 l_check_dcp NUMBER;
282 l_stop_id NUMBER;
283
284 -- Bug 3877951
285 l_intransit_flag varchar2(1);
286
287 l_ship_method_code VARCHAR2(30);
288 l_ship_method_name VARCHAR2(240); -- Bug#3880569
289
290 -- Bug 4100661 (FP: 4103129)
291 l_temp_trip_id NUMBER;
292 l_temp_lane_id NUMBER;
293 l_temp_ship_method_code WSH_TRIPS.SHIP_METHOD_CODE%TYPE;
294
295 l_temp NUMBER;
296 l_is_del_assign_trip BOOLEAN;
297 --Bugfix 4070732
298 l_api_session_name CONSTANT VARCHAR2(150) := G_PKG_NAME ||'.' || l_module_name;
299 l_reset_flags BOOLEAN;
300
301
302 -- K LPN CONV. rv
303 l_lpn_in_sync_comm_rec WSH_GLBL_VAR_STRCT_GRP.lpn_sync_comm_in_rec_type;
304 l_lpn_out_sync_comm_rec WSH_GLBL_VAR_STRCT_GRP.lpn_sync_comm_out_rec_type;
305 -- K LPN CONV. rv
306
307 l_child_deliveries_tab wsh_util_core.id_tab_type;
308
309 --OTM R12
310 l_new_delivery_id_tab WSH_UTIL_CORE.ID_TAB_TYPE;
311 l_new_interface_flag_tab WSH_UTIL_CORE.COLUMN_TAB_TYPE;
312 l_gc3_is_installed VARCHAR2(1);
313 --
314
315 BEGIN
316 <<api_start>>
317 --
318 -- Bug 4070732
319 IF WSH_UTIL_CORE.G_START_OF_SESSION_API is null THEN
320 WSH_UTIL_CORE.G_START_OF_SESSION_API := l_api_session_name;
321 WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API := FALSE;
322 END IF;
323 --
324 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
325 --
326 IF l_debug_on IS NULL
327 THEN
328 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
329 END IF;
330 --
331 SAVEPOINT DELIVERY_ACTION_GRP;
332 --
333 l_check_dcp := WSH_DCP_PVT.G_CHECK_DCP;
334
335 IF l_check_dcp IS NULL THEN
336 l_check_dcp := wsh_dcp_pvt.is_dcp_enabled;
337 END IF;
338
339
340
341 IF NOT FND_API.Compatible_API_Call
342 ( l_api_version_number,
343 p_api_version_number,
344 l_api_name,
345 G_PKG_NAME
346 )
347 THEN
348 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
349 END IF;
350 --
351 IF FND_API.to_Boolean(p_init_msg_list) THEN
352 FND_MSG_PUB.initialize;
353 ELSE
354 IF nvl(l_check_dcp, '-99') IN (1,2) THEN
355 WSH_DCP_PVT.G_INIT_MSG_COUNT := fnd_msg_pub.count_msg;
356 END IF;
357 END IF;
358 --
359 IF l_debug_on THEN
360 wsh_debug_sv.push (l_module_name);
361 wsh_debug_sv.log (l_module_name,'action_code',p_action_prms.action_code);
362 wsh_debug_sv.log (l_module_name,'caller',p_action_prms.caller);
363 wsh_debug_sv.log (l_module_name,'COUNT',p_rec_attr_tab.COUNT);
364 END IF;
365
366 --Fix for bug 3636800
367 --Initialize l_num_warning, l_num_error so that when dcp code re-runs this procedure,
368 --these variables are reinitialized.
369 l_num_warnings := 0;
370 l_num_errors := 0;
371
372 IF p_action_prms.action_code IS NULL THEN
373 l_param_name := 'p_action_prms.action_code';
374 ELSIF p_action_prms.caller IS NULL THEN
375 l_param_name := 'p_action_prms.caller';
376 ELSIF p_action_prms.caller = 'WSH_FSTRX' THEN
377 IF p_action_prms.phase IS NULL THEN
378 l_param_name := 'p_action_prms.phase';
379 END IF;
380 ELSIF p_rec_attr_tab.COUNT = 0 THEN
381 l_param_name := 'p_rec_attr_tab.COUNT';
382 END IF;
383
384 IF l_param_name is not null THEN
385 FND_MESSAGE.SET_NAME('WSH','WSH_REQUIRED_FIELD_NULL');
386 FND_MESSAGE.SET_TOKEN('FIELD_NAME',l_param_name);
387 x_return_status := wsh_util_core.g_ret_sts_error;
388 wsh_util_core.add_message(x_return_status,l_module_name);
389 RAISE FND_API.G_EXC_ERROR;
390 END IF;
391
392 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
393
394 --OTM R12
395 l_gc3_is_installed := WSH_UTIL_CORE.G_GC3_IS_INSTALLED; -- this is global variable
396
397 IF l_gc3_is_installed IS NULL THEN
398 l_gc3_is_installed := WSH_UTIL_CORE.GC3_IS_INSTALLED; -- this is actual function
399 END IF;
400 --
401
402 IF p_action_prms.caller IN ( 'WSH_FSTRX' , 'WSH_TPW_INBOUND')
403 OR p_action_prms.caller LIKE 'FTE%' THEN
404 l_isWshLocation := TRUE;
405 END IF;
406
407 i := p_rec_attr_tab.FIRST;
408 --l_last := p_rec_attr_tab.LAST;
409
410 --
411 WHILE i is not null LOOP
412 --
413 l_delivery_id_tab(i) := p_rec_attr_tab(i).delivery_id;
414 IF nvl(p_action_prms.phase,1) = 1 THEN
415 l_delivery_rec_tab(i).delivery_id := p_rec_attr_tab(i).delivery_id;
416 l_delivery_rec_tab(i).status_code := p_rec_attr_tab(i).status_code;
417 l_delivery_rec_tab(i).planned_flag := p_rec_attr_tab(i).planned_flag;
418 l_delivery_rec_tab(i).organization_id := p_rec_attr_tab(i).organization_id;
419 l_delivery_rec_tab(i).shipment_direction := p_rec_attr_tab(i).shipment_direction;
420 --OTM R12
421 l_delivery_rec_tab(i).ignore_for_planning := p_rec_attr_tab(i).ignore_for_planning;
422 l_delivery_rec_tab(i).tms_interface_flag := p_rec_attr_tab(i).tms_interface_flag;
423 --
424 --
425 --
426 IF p_action_prms.action_code = 'CONFIRM' THEN
427 --
428 -- bug 6369687: Setting G_ACTION as 'CONFIRM'
429 G_ACTION := 'CONFIRM';
430 l_org_id_tab(i) := p_rec_attr_tab(i).organization_id;
431 l_ship_method_code_tab(i) := p_rec_attr_tab(i).ship_method_code;
432 --
433 IF l_debug_on THEN
434 wsh_debug_sv.log (l_module_name,' Ship Method Code ' || p_rec_attr_tab(i).ship_method_code );
435 END IF;
436 --
437 END IF;
438 --
439 IF l_debug_on THEN
440 wsh_debug_sv.log (l_module_name,'delivery_id',p_rec_attr_tab(i).delivery_id);
441 wsh_debug_sv.log (l_module_name,'status_code',p_rec_attr_tab(i).status_code);
442 wsh_debug_sv.log (l_module_name,'planned_flag',p_rec_attr_tab(i).planned_flag);
443 wsh_debug_sv.log (l_module_name,'organization_id',p_rec_attr_tab(i).organization_id);
444 wsh_debug_sv.log (l_module_name,'shipment_direction',p_rec_attr_tab(i).shipment_direction);
445 --OTM R12
446 wsh_debug_sv.log (l_module_name,'ignore_for_planning',p_rec_attr_tab(i).ignore_for_planning);
447 wsh_debug_sv.log (l_module_name,'tms_interface_flag',p_rec_attr_tab(i).tms_interface_flag);
448 --
449 END IF;
450 --
451 END IF;
452 --
453 IF l_debug_on THEN
454 wsh_debug_sv.log (l_module_name,'delivery_id tab( ' || i || ')' ,l_delivery_id_tab(i));
455 END IF;
456 --
457 i := p_rec_attr_tab.NEXT(i);
458 END LOOP;
459 --
460 --
461 i := 0;
462 --
463 -- bug 2789821
464 -- This condition is added so that we treat these actions
465 -- as equivalent to "PICK-RELEASE" ONLY during
466 -- setting the levels and validating the eligibility of the action
467 IF p_action_prms.action_code IN ('PICK-SHIP', 'PICK-PACK-SHIP') THEN
468 l_action_code := 'PICK-RELEASE';
469 ELSIF p_action_prms.action_code IN ('AUTOCREATE-TRIP', 'TRIP-CONSOLIDATION') THEN
470 l_action_code := 'AUTOCREATE-TRIP';
471 ELSE
472 l_action_code := p_action_prms.action_code;
473 END IF;
474 --
475 WSH_ACTIONS_LEVELS.set_validation_level (
476 p_entity => 'DLVY',
477 p_caller => p_action_prms.caller,
478 p_phase => nvl(p_action_prms.phase,1), -- phase should not be null
479 p_action => l_action_code,
480 x_return_status => l_return_status);
481 --
482 IF l_debug_on THEN
483 wsh_debug_sv.log(l_module_name,'Return Status After Calling set_validation_level',l_return_status);
484 END IF;
485 --
486 wsh_util_core.api_post_call(
487 p_return_status => l_return_status,
488 x_num_warnings => l_num_warnings,
489 x_num_errors => l_num_errors);
490 --
491 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_ACTION_ENABLED_LVL) = 1 THEN
492 IF l_debug_on THEN
493 wsh_debug_sv.logmsg(l_module_name,'Calling IS_Action_Enabled');
494 END IF;
495
496 WSH_DELIVERY_VALIDATIONS.Is_Action_Enabled(
497 p_dlvy_rec_tab => l_delivery_rec_tab,
498 p_action => l_action_code,
499 p_caller => p_action_prms.caller,
500 p_tripid => p_action_prms.trip_id,--J TP Release
501 x_return_status => l_return_status,
502 x_valid_ids => l_valid_ids_tab ,
503 x_error_ids => l_error_ids ,
504 x_valid_index_tab => l_valid_index_tab);
505
506 IF l_debug_on THEN
507 wsh_debug_sv.log(l_module_name,'Return Status After Calling IS_Action_Enabled',l_return_status);
508 END IF;
509 --
510 wsh_util_core.api_post_call(
511 p_return_status => l_return_status,
512 x_num_warnings => l_num_warnings,
513 x_num_errors => l_num_errors,
514 p_msg_data => NULL,
515 p_raise_error_flag => FALSE);
516 --
517 IF p_action_prms.caller IN ('WSH_FSTRX', 'WSH_TRCON') THEN
518 x_delivery_out_rec.valid_ids_tab := l_valid_index_tab;
519 ELSE
520 x_delivery_out_rec.valid_ids_tab := l_valid_ids_tab;
521 END IF;
522 --
523 END IF;
524 --
525 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_LOCK_RECORDS_LVL) = 1 THEN
526 --
527 IF NOT ( p_action_prms.caller = 'WSH_FSTRX'
528 AND p_action_prms.action_code = 'DELETE'
529 ) THEN --BUG 4354579
530 WSH_NEW_DELIVERIES_PVT.Lock_Delivery(
531 p_rec_attr_tab => p_rec_attr_tab,
532 p_caller => p_action_prms.caller,
533 p_valid_index_tab => l_valid_index_tab,
534 x_valid_ids_tab => l_valid_ids_tab,
535 x_return_status => l_return_status,
536 p_action => p_action_prms.action_code);
537 --
538 IF l_debug_on THEN
539 wsh_debug_sv.log(l_module_name,'Return Status After Calling Lock_Delivery',l_return_status);
540 END IF;
541 --
542 wsh_util_core.api_post_call(
543 p_return_status => l_return_status,
544 x_num_warnings => l_num_warnings,
545 x_num_errors => l_num_errors,
546 p_msg_data => NULL,
547 p_raise_error_flag => FALSE);
548 --
549 x_delivery_out_rec.valid_ids_tab := l_valid_ids_tab;
550 --
551 END IF;
552 END IF;
553
554 --
555 IF(l_num_errors >0 ) THEN
556 --{
557 x_return_status := wsh_util_core.g_ret_sts_error;
558 --
559 IF p_action_prms.caller = 'WSH_FSTRX' THEN
560 FND_MESSAGE.SET_NAME('WSH', 'WSH_DISABLE_ACTION');
561 wsh_util_core.add_message(x_return_status,l_module_name);
562 END IF;
563 --
564 IF l_debug_on THEN
565 wsh_debug_sv.logmsg(l_module_name, 'WSH_DISABLE_ACTION');
566 END IF;
567 --
568 RAISE FND_API.G_EXC_ERROR;
569 --}
570 END IF;
571 --
572 -- bug 2651859. Refreshing the table of ids.
573 -- before defaulting the parameters.
574 IF l_num_warnings > 0 and l_valid_ids_tab.count > 0
575 AND p_action_prms.action_code IN ('UNASSIGN-TRIP', 'CONFIRM')
576 THEN
577 --
578 l_delivery_id_tab.delete;
579 l_org_id_tab.delete;
580 l_ship_method_code_tab.delete;
581 FOR i in l_valid_ids_tab.first..l_valid_ids_tab.last LOOP
582 --
583 l_delivery_id_tab(i) := p_rec_attr_tab(i).delivery_id;
584 --
585 IF l_debug_on THEN
586 wsh_debug_sv.log (l_module_name,'delivery_id',l_delivery_id_tab(i));
587 END IF;
588 --
589 IF p_action_prms.action_code = 'CONFIRM' THEN
590 --
591 l_org_id_tab(i) := p_rec_attr_tab(i).organization_id;
592 l_ship_method_code_tab(i) := p_rec_attr_tab(i).ship_method_code;
593 --
594 IF l_debug_on THEN
595 wsh_debug_sv.log (l_module_name,' Ship Method Code ' || p_rec_attr_tab(i).ship_method_code );
596 wsh_debug_sv.log (l_module_name,' Organization_Id ' || p_rec_attr_tab(i).organization_id );
597 END IF;
598 --
599 END IF;
600 --
601 --
602 END LOOP;
603 --
604 END IF;
605 --
606 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_DLVY_DEFAULTS_LVL) = 1 THEN
607 --
608 WSH_NEW_DELIVERY_ACTIONS.Get_Delivery_Defaults(
609 p_del_rows => l_delivery_id_tab,
610 p_org_ids => l_org_id_tab,
611 p_ship_method_code_vals => l_ship_method_code_tab,
612 x_autointransit_flag => x_defaults_rec.autointransit_flag,
613 x_autoclose_flag => x_defaults_rec.autoclose_flag,
614 x_report_set_id => x_defaults_rec.report_set_id,
615 x_report_set_name => x_defaults_rec.report_set_name,
616 x_ship_method_name => x_defaults_rec.ship_method_name,
617 x_return_status => l_return_status,
618 x_sc_rule_id => x_defaults_rec.sc_rule_id,
619 x_ac_bol_flag => x_defaults_rec.ac_bol_flag,
620 x_defer_interface_flag => x_defaults_rec.defer_interface_flag,
621 x_sc_rule_name => x_defaults_rec.sc_rule_name
622 );
623 --
624 IF l_debug_on THEN
625 wsh_debug_sv.log(l_module_name,'Return Status After Calling Get_Delivery_Defaults',l_return_status);
626 wsh_debug_sv.log(l_module_name,' Default AutoIntransit_Flag ',x_defaults_rec.autointransit_flag);
627 wsh_debug_sv.log(l_module_name,' Default Autoclose_flag ',x_defaults_rec.autoclose_flag);
628 wsh_debug_sv.log(l_module_name,' Default report_set_id ',x_defaults_rec.report_set_id);
629 wsh_debug_sv.log(l_module_name,' Default report_set_name ',x_defaults_rec.report_set_name);
630 wsh_debug_sv.log(l_module_name,' Default ship_method_name ',x_defaults_rec.ship_method_name);
631 wsh_debug_sv.log(l_module_name,' Sc Rule ',x_defaults_rec.sc_rule_id);
632 wsh_debug_sv.log(l_module_name,' Sc RuleName ',x_defaults_rec.sc_rule_name);
633 wsh_debug_sv.log(l_module_name,' BOL ',x_defaults_rec.ac_bol_flag);
634 wsh_debug_sv.log(l_module_name,' DI flag ',x_defaults_rec.defer_interface_flag);
635
636 END IF;
637 --
638 wsh_util_core.api_post_call(
639 p_return_status => l_return_status,
640 x_num_warnings => l_num_warnings,
641 x_num_errors => l_num_errors);
642 --
643 open get_defer_interface;
644 fetch get_defer_interface into l_defer_interface_flag, x_defaults_rec.enforce_ship_method;
645 close get_defer_interface;
646 -- END IF;
647 -- Ship Confirm Rule is Null, then use defer interface flag for 1st record
648 IF x_defaults_rec.sc_rule_id IS NULL THEN
649 x_defaults_rec.defer_interface_flag := l_defer_interface_flag;
650 END IF;
651 END IF;
652 --
653 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_CHECK_UNASSIGN_LVL) = 1 THEN
654 --
655 WSH_TRIPS_ACTIONS.check_unassign_trip (
656 p_del_rows => l_delivery_id_tab,
657 x_trip_rows => x_defaults_rec.trip_id_tab,
658 x_return_status => l_return_status);
659 --
660 IF l_debug_on THEN
661 wsh_debug_sv.log(l_module_name,'Return Status After Calling check_unassign_trip',l_return_status);
662 END IF;
663 --
664 wsh_util_core.api_post_call(
665 p_return_status => l_return_status,
666 x_num_warnings => l_num_warnings,
667 x_num_errors => l_num_errors);
668 --
669 END IF;
670 --
671 IF l_num_warnings > 0 THEN
672 --
673 FND_MESSAGE.SET_NAME('WSH', 'WSH_DISABLE_ACTION_WARN');
674 x_return_status := wsh_util_core.g_ret_sts_warning;
675 wsh_util_core.add_message(x_return_status,l_module_name);
676 IF l_debug_on THEN
677 wsh_debug_sv.logmsg(l_module_name, 'WSH_DISABLE_ACTION_WARN');
678 wsh_debug_sv.log(l_module_name, 'x_delivery_out_rec.valid_ids_tab count is', l_valid_ids_tab.count);
679 END IF;
680 --
681 IF p_action_prms.caller IN ('WSH_FSTRX', 'WSH_TRCON') THEN
682 x_delivery_out_rec.selection_issue_flag := 'Y';
683 RAISE WSH_UTIL_CORE.G_EXC_WARNING;
684 ELSE
685 RAISE FND_API.G_EXC_ERROR;
686 END IF;
687 --
688 END IF;
689 --
690 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_VALIDATE_CONSTRAINTS_LVL) = 1 THEN --{
691 --Compatiblity Changes
692 --for autocreatetrip or if assign trip and caller is STF, phase=2
693
694 IF wsh_util_core.fte_is_installed='Y' THEN
695
696 l_caller_module := SUBSTR(p_action_prms.caller,1,3);
697 --
698 IF l_debug_on THEN
699 wsh_debug_sv.log (l_module_name,'l_caller_module : '||l_caller_module);
700 wsh_debug_sv.log (l_module_name,'p_action_prms.pickup_loc_id : '||p_action_prms.pickup_loc_id);
701 wsh_debug_sv.log (l_module_name,'p_action_prms.dropoff_loc_id : '||p_action_prms.dropoff_loc_id);
702 wsh_debug_sv.log (l_module_name,'p_action_prms.ship_method_code : '||p_action_prms.ship_method_code);
703 END IF;
704 --
705
706 i := p_rec_attr_tab.FIRST;
707 WHILE i is not null LOOP
708 --
709 l_rec_attr_tab_temp(i) := p_rec_attr_tab(i);
710
711 IF l_caller_module = 'FTE' THEN
712 IF p_action_prms.ship_method_code IS NOT NULL AND p_action_prms.ship_method_code <> p_rec_attr_tab(i).ship_method_code THEN
713 l_rec_attr_tab_temp(i).ship_method_code := p_action_prms.ship_method_code;
714 END IF;
715
716 END IF;
717 --
718 IF l_debug_on THEN
719 wsh_debug_sv.log (l_module_name,'l_rec_attr_tab_temp index '|| i);
720 wsh_debug_sv.log (l_module_name,'l_rec_attr_tab_temp delivery_id '|| l_rec_attr_tab_temp(i).delivery_id);
721 wsh_debug_sv.log (l_module_name,'l_rec_attr_tab_temp name '|| l_rec_attr_tab_temp(i).name);
722 wsh_debug_sv.log (l_module_name,'l_rec_attr_tab_temp status_code '|| l_rec_attr_tab_temp(i).status_code);
723 wsh_debug_sv.log (l_module_name,'l_rec_attr_tab_temp planned_flag '|| l_rec_attr_tab_temp(i).planned_flag);
724 wsh_debug_sv.log (l_module_name,'l_rec_attr_tab_temp organization_id '|| l_rec_attr_tab_temp(i).organization_id);
725 wsh_debug_sv.log (l_module_name,'l_rec_attr_tab_temp customer_id '|| l_rec_attr_tab_temp(i).customer_id);
726 wsh_debug_sv.log (l_module_name,'l_rec_attr_tab_temp delivery_type '|| l_rec_attr_tab_temp(i).delivery_type);
727 wsh_debug_sv.log (l_module_name,'l_rec_attr_tab_temp initial_pickup_location_id '|| l_rec_attr_tab_temp(i).initial_pickup_location_id);
728 wsh_debug_sv.log (l_module_name,'l_rec_attr_tab_temp ultimate_dropoff_location_id '|| l_rec_attr_tab_temp(i).ultimate_dropoff_location_id);
729 wsh_debug_sv.log (l_module_name,'l_rec_attr_tab_temp ship_method_code '|| l_rec_attr_tab_temp(i).ship_method_code);
730 END IF;
731 --
732 i := p_rec_attr_tab.NEXT(i);
733 END LOOP;
734 i := 0;
735 --
736 IF l_debug_on THEN
737 wsh_debug_sv.log (l_module_name,'Calling validate_constraint_main ');
738 END IF;
739 --
740
741 WSH_FTE_COMP_CONSTRAINT_PKG.validate_constraint_main(
742 p_api_version_number => p_api_version_number,
743 p_init_msg_list => FND_API.G_FALSE,
744 p_entity_type => 'D',
745 p_target_id => p_action_prms.TRIP_ID,
746 p_action_code => l_action_code,
747 --p_del_attr_tab => p_rec_attr_tab,
748 p_del_attr_tab => l_rec_attr_tab_temp,
749 p_det_attr_tab => l_cc_det_attr_tab,
750 p_trip_attr_tab => l_cc_trip_attr_tab,
751 p_stop_attr_tab => l_cc_stop_attr_tab,
752 p_in_ids => l_cc_in_ids,
753 p_pickup_stop_id => p_action_prms.pickup_stop_id,
754 p_pickup_loc_id => p_action_prms.pickup_loc_id,
755 p_pickup_stop_seq => p_action_prms.pickup_stop_seq,
756 p_dropoff_stop_id => p_action_prms.dropoff_stop_id,
757 p_dropoff_loc_id => p_action_prms.dropoff_loc_id,
758 p_dropoff_stop_seq => p_action_prms.dropoff_stop_seq,
759 p_pickup_arr_date => p_action_prms.pickup_arr_date,
760 p_pickup_dep_date => p_action_prms.pickup_dep_date,
761 p_dropoff_arr_date => p_action_prms.dropoff_arr_date,
762 p_dropoff_dep_date => p_action_prms.dropoff_dep_date,
763 x_fail_ids => l_cc_fail_ids,
764 x_validate_result => l_cc_validate_result,
765 x_failed_lines => l_cc_failed_records,
766 x_line_groups => l_cc_line_groups,
767 x_group_info => l_cc_group_info,
768 x_msg_count => l_msg_count,
769 x_msg_data => l_msg_data,
770 x_return_status => l_return_status);
771
772
773 IF l_debug_on THEN
774 wsh_debug_sv.log(l_module_name,'Return Status After Calling validate_constraint_main',l_return_status);
775 wsh_debug_sv.log(l_module_name,'validate_result After Calling validate_constraint_main',l_cc_validate_result);
776 wsh_debug_sv.log(l_module_name,'msg_count After Calling validate_constraint_main',l_msg_count);
777 wsh_debug_sv.log(l_module_name,'msg_data After Calling validate_constraint_main',l_msg_data);
778 wsh_debug_sv.log(l_module_name,'fail_ids count After Calling validate_constraint_main',l_cc_failed_records.COUNT);
779 wsh_debug_sv.log(l_module_name,'l_cc_line_groups.count count After Calling validate_constraint_main',l_cc_line_groups.COUNT);
780 wsh_debug_sv.log(l_module_name,'group_info count After Calling validate_constraint_main',l_cc_group_info.COUNT);
781 END IF;
782 --
783
784 IF l_return_status=wsh_util_core.g_ret_sts_error THEN
785 --fix l_rec_attr_tab to have only successful records
786 l_cc_count_success:=1;
787
788 IF l_debug_on THEN
789 wsh_debug_sv.log(l_module_name,'p_rec_attr_tab.count before removing failed lines',p_rec_attr_tab.COUNT);
790 END IF;
791
792 IF l_cc_failed_records.COUNT = 0 AND p_rec_attr_tab.COUNT>0 THEN
793 l_return_status := wsh_util_core.g_ret_sts_success;
794 END IF;
795
796
797 IF l_cc_failed_records.COUNT>0 AND p_rec_attr_tab.COUNT>0 THEN
798
799 --set return_status as warning
800 IF l_cc_failed_records.COUNT<>p_rec_attr_tab.COUNT THEN
801 l_return_status:=wsh_util_core.g_ret_sts_warning;
802 END IF;
803
804 FOR i in p_rec_attr_tab.FIRST..p_rec_attr_tab.LAST LOOP
805 b_cc_linefailed:=FALSE;
806
807 FOR j in l_cc_failed_records.FIRST..l_cc_failed_records.LAST LOOP
808 IF (p_rec_attr_tab(i).delivery_id=l_cc_failed_records(j).entity_line_id) THEN
809 b_cc_linefailed:=TRUE;
810 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_COMP_FAILED');
811 FND_MESSAGE.SET_TOKEN('DEL_ID',l_cc_failed_records(j).entity_line_id);
812 wsh_util_core.add_message(l_return_status);
813 END IF;
814 END LOOP;
815
816 IF (NOT(b_cc_linefailed)) THEN
817 l_delivery_id_tab_t(l_cc_count_success):=p_rec_attr_tab(i).delivery_id;
818 l_cc_count_success:=l_cc_count_success+1;
819 END IF;
820 END LOOP;
821 --
822 IF l_debug_on
823 THEN
824 WSH_DEBUG_SV.logmsg(l_module_name,'Value of ctrl rec After constraints check');
825 END IF;
826
827 --bsadri for assign-trip, if one line fails, then fail all lines {
828 IF l_action_code = 'ASSIGN-TRIP'
829 AND l_cc_failed_records.COUNT > 0 THEN
830 l_delivery_id_tab_t.DELETE;
831 l_return_status := wsh_util_core.g_ret_sts_error;
832 END IF;
833 --}
834
835
836 IF l_delivery_id_tab_t.COUNT>0 THEN
837 l_delivery_id_tab:=l_delivery_id_tab_t;
838 ELSE
839 IF l_debug_on THEN
840 wsh_debug_sv.logmsg(l_module_name,'all lines errored in compatibility check');
841 END IF;
842 wsh_util_core.api_post_call(
843 p_return_status => l_return_status,
844 x_num_warnings => l_num_warnings,
845 x_num_errors => l_num_errors);
846
847 END IF;
848
849 IF l_debug_on THEN
850 wsh_debug_sv.log(l_module_name,'l_delivery_id_tab.count before removing failed lines',l_delivery_id_tab.COUNT);
851 END IF;
852 END IF;
853
854 ELSIF l_return_status=wsh_util_core.g_ret_sts_unexp_error THEN
855 wsh_util_core.api_post_call(
856 p_return_status => l_return_status,
857 x_num_warnings => l_num_warnings,
858 x_num_errors => l_num_errors);
859 END IF;
860 --bug 3763800 : removed l_msg_data input so that message does not get added again
861 wsh_util_core.api_post_call(
862 p_return_status => l_return_status,
863 x_num_warnings => l_num_warnings,
864 x_num_errors => l_num_errors,
865 p_raise_error_flag => FALSE);
866 END IF;
867 --Compatiblity Changes
868 END IF; --}
869
870
871
872 IF p_action_prms.action_code IN ('CONFIRM', 'UNASSIGN-TRIP',
873 'ASSIGN-TRIP','OUTBOUND-DOCUMENT',
874 'PRINT-DOC-SETS')
875 AND nvl(p_action_prms.phase,1) = 1
876 AND p_action_prms.caller = 'WSH_FSTRX'
877 THEN
878 x_return_status := wsh_util_core.g_ret_sts_success;
879
880 --Start of bug 4070732
881 --Calling Reset_stops_for_load_tender as it is returning successfully.
882
883 --Bugfix 4070732 {
884 IF upper(WSH_UTIL_CORE.G_START_OF_SESSION_API) = upper(l_api_session_name) THEN
885 IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
886 IF l_debug_on THEN
887 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Reset_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
888 END IF;
889
890 WSH_UTIL_CORE.Reset_stops_for_load_tender(p_reset_flags => TRUE,
891 x_return_status => x_return_status);
892
893 IF l_debug_on THEN
894 WSH_DEBUG_SV.log(l_module_name,'x_return_status',x_return_status);
895 END IF;
896
897 END IF;
898 END IF;
899 --}
900 -- End of bug 4070732
901
902 IF l_debug_on THEN
903 wsh_debug_sv.logmsg(l_module_name, 'Returning back to the Form');
904 WSH_DEBUG_SV.pop(l_module_name);
905 END IF;
906 RETURN; -- Non-Generic Actions.
907 END IF;
908 --
909 -- Code added for Bug 2684692
910 -- Need to lock related entities where applicable
911 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_LOCK_RELATED_ENTITIES_LVL) = 1
912 THEN
913 -- {
914 Lock_Related_Entities(
915 p_rec_attr_tab => p_rec_attr_tab,
916 p_action_prms => p_action_prms,
917 x_valid_ids_tab => l_delivery_id_tab,
918 x_return_status => l_return_status
919 );
920
921 wsh_util_core.api_post_call(
922 p_return_status => l_return_status,
923 x_num_warnings => l_num_warnings,
924 x_num_errors => l_num_errors);
925 --
926 -- }
927 END IF;
928
929
930 --jckwok. Bug 3426434
931 IF p_action_prms.action_code IN ('UNASSIGN-TRIP',
932 'ASSIGN-TRIP')
933 THEN
934 IF (nvl(p_action_prms.trip_id, FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM
935 AND nvl(p_action_prms.trip_name, FND_API.G_MISS_CHAR) = FND_API.G_MISS_CHAR)
936 THEN
937 FND_MESSAGE.SET_NAME('WSH', 'WSH_TRIP_ID_OR_NAME_REQUIRED');
938 FND_MESSAGE.SET_TOKEN('ACTION_CODE' , p_action_prms.action_code);
939 l_return_status := wsh_util_core.g_ret_sts_error;
940 wsh_util_core.add_message(l_return_status,l_module_name);
941 IF l_debug_on THEN
942 wsh_debug_sv.log (l_module_name,'Trip_id or Trip_name is required for this action');
943 END IF;
944 RAISE FND_API.G_EXC_ERROR;
945 END IF;
946 END IF;
947 --
948
949 -- J-IB-NPARIKH-{
950 IF p_action_prms.action_code = 'GENERATE-ROUTING-RESPONSE' THEN
951 --
952 --
953 IF l_debug_on THEN
954 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERY_ACTIONS.generate_routing_response',WSH_DEBUG_SV.C_PROC_LEVEL);
955 END IF;
956 --
957 WSH_ROUTING_RESPONSE_PKG.GenerateRoutingResponse
958 (
959 p_deliveryIdTab => l_delivery_id_tab,
960 x_routingRespIdTab => l_routingRespIdTab,
961 x_RetStatus => l_return_status
962 );
963
964 --
965 IF l_debug_on THEN
966 wsh_debug_sv.log(l_module_name,'Return Status After Calling generate_routing_response',l_return_status);
967 END IF;
968 --
969 wsh_util_core.api_post_call(
970 p_return_status => l_return_status,
971 x_num_warnings => l_num_warnings,
972 x_num_errors => l_num_errors);
973 --
974 -- J-IB-NPARIKH-}
975
976 ELSIF p_action_prms.action_code = 'PLAN' THEN
977 --
978 WSH_NEW_DELIVERY_ACTIONS.plan (
979 p_del_rows => l_delivery_id_tab,
980 x_return_status => l_return_status);
981 --
982 IF l_debug_on THEN
983 wsh_debug_sv.log(l_module_name,'Return Status After Calling Plan',l_return_status);
984 END IF;
985 --
986 wsh_util_core.api_post_call(
987 p_return_status => l_return_status,
988 x_num_warnings => l_num_warnings,
989 x_num_errors => l_num_errors);
990 --
991
992 ELSIF p_action_prms.action_code = 'UNPLAN' THEN
993 --
994 WSH_NEW_DELIVERY_ACTIONS.unplan (
995 p_del_rows => l_delivery_id_tab,
996 x_return_status => l_return_status);
997 --
998 IF l_debug_on THEN
999 wsh_debug_sv.log(l_module_name,'Return Status After Calling Unplan',l_return_status);
1000 END IF;
1001 --
1002 wsh_util_core.api_post_call(
1003 p_return_status => l_return_status,
1004 x_num_warnings => l_num_warnings,
1005 x_num_errors => l_num_errors);
1006 --
1007 /* J TP Release */
1008 ELSIF p_action_prms.action_code = 'FIRM' THEN
1009 --
1010 WSH_NEW_DELIVERY_ACTIONS.FIRM (
1011 p_del_rows => l_delivery_id_tab,
1012 x_return_status => l_return_status);
1013 --
1014 IF l_debug_on THEN
1015 wsh_debug_sv.log(l_module_name,'Return Status After Calling firm',l_return_status);
1016 END IF;
1017 --
1018 wsh_util_core.api_post_call(
1019 p_return_status => l_return_status,
1020 x_num_warnings => l_num_warnings,
1021 x_num_errors => l_num_errors);
1022 --
1023
1024 ELSIF p_action_prms.action_code in ('IGNORE_PLAN', 'INCLUDE_PLAN') then
1025 Wsh_tp_release.change_ignoreplan_status
1026 (p_entity =>'DLVY',
1027 p_in_ids => l_delivery_id_tab,
1028 p_action_code => p_action_prms.action_code,
1029 x_return_status => l_return_status);
1030 --
1031 IF l_debug_on THEN
1032 wsh_debug_sv.log(l_module_name,'Return Status After Calling change_ignoreplan_status ',l_return_status);
1033 END IF;
1034 --
1035 wsh_util_core.api_post_call(
1036 p_return_status => l_return_status,
1037 x_num_warnings => l_num_warnings,
1038 x_num_errors => l_num_errors);
1039 --
1040
1041 ELSIF p_action_prms.action_code = 'PICK-RELEASE' THEN
1042 --
1043 WSH_PICK_LIST.launch_pick_release (
1044 p_trip_ids => l_dummy_id_tab,
1045 p_stop_ids => l_dummy_id_tab,
1046 p_delivery_ids => l_delivery_id_tab,
1047 p_detail_ids => l_dummy_id_tab,
1048 x_request_ids => x_delivery_out_rec.result_id_tab,
1049 x_return_status => l_return_status);
1050 --
1051 IF l_debug_on THEN
1052 wsh_debug_sv.log(l_module_name,'Return Status After Calling Launch_Pick_Release',l_return_status);
1053 END IF;
1054 --
1055 wsh_util_core.api_post_call(
1056 p_return_status => l_return_status,
1057 x_num_warnings => l_num_warnings,
1058 x_num_errors => l_num_errors);
1059 --
1060 ELSIF p_action_prms.action_code = 'PICK-PACK-SHIP' THEN
1061 --
1062 WSH_PICK_LIST.launch_pick_release (
1063 p_trip_ids => l_dummy_id_tab,
1064 p_stop_ids => l_dummy_id_tab,
1065 p_delivery_ids => l_delivery_id_tab,
1066 p_detail_ids => l_dummy_id_tab,
1067 x_request_ids => x_delivery_out_rec.result_id_tab,
1068 x_return_status => l_return_status,
1069 p_auto_pack_ship => 'PS');
1070 --
1071 IF l_debug_on THEN
1072 wsh_debug_sv.log(l_module_name,'Return Status After Calling Launch_Pick_Release',l_return_status);
1073 END IF;
1074 --
1075 wsh_util_core.api_post_call(
1076 p_return_status => l_return_status,
1077 x_num_warnings => l_num_warnings,
1078 x_num_errors => l_num_errors);
1079 --
1080 ELSIF p_action_prms.action_code = 'PICK-SHIP' THEN
1081 --
1082 WSH_PICK_LIST.launch_pick_release (
1083 p_trip_ids => l_dummy_id_tab,
1084 p_stop_ids => l_dummy_id_tab,
1085 p_delivery_ids => l_delivery_id_tab,
1086 p_detail_ids => l_dummy_id_tab,
1087 x_request_ids => x_delivery_out_rec.result_id_tab,
1088 x_return_status => l_return_status,
1089 p_auto_pack_ship => 'SC');
1090 --
1091 IF l_debug_on THEN
1092 wsh_debug_sv.log(l_module_name,'Return Status After Calling Launch_Pick_Release',l_return_status);
1093 END IF;
1094 --
1095 wsh_util_core.api_post_call(
1096 p_return_status => l_return_status,
1097 x_num_warnings => l_num_warnings,
1098 x_num_errors => l_num_errors);
1099 --
1100 ELSIF p_action_prms.action_code = 'PRINT-DOC-SETS' THEN
1101 --
1102 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_DOCUMENT_SETS_LVL) = 1 THEN
1103 --
1104 WSH_UTIL_VALIDATE.validate_report_set(
1105 p_report_set_id => l_report_set_id,
1106 p_report_set_name => p_action_prms.report_set_name,
1107 x_return_status => l_return_status);
1108 --
1109 IF l_debug_on THEN
1110 wsh_debug_sv.log(l_module_name,'Return Status After Calling Validate_Report_Set',l_return_status);
1111 END IF;
1112 --
1113 wsh_util_core.api_post_call(
1114 p_return_status => l_return_status,
1115 x_num_warnings => l_num_warnings,
1116 x_num_errors => l_num_errors);
1117 --
1118 END IF;
1119 --
1120
1121 FOR i IN l_delivery_id_tab.FIRST..l_delivery_id_tab.LAST
1122 LOOP
1123 -- Start of bugfix 4493263
1124 OPEN c_delv_trip_id_cursor(l_delivery_id_tab(i));
1125 LOOP
1126 FETCH c_delv_trip_id_cursor INTO l_dummy_doc_set_params(i).p_trip_id;
1127 EXIT WHEN c_delv_trip_id_cursor%NOTFOUND;
1128 --
1129 IF l_debug_on THEN
1130 WSH_DEBUG_SV.log(l_module_name, 'Trip Id : ', l_dummy_doc_set_params(i).p_trip_id );
1131 END IF;
1132 --
1133 END LOOP;
1134 CLOSE c_delv_trip_id_cursor;
1135 -- End of bugfix 4493263
1136 END LOOP;
1137
1138 WSH_DOCUMENT_SETS.print_document_sets(
1139 p_report_set_id => l_report_set_id ,
1140 p_organization_id => p_action_prms.organization_id,
1141 p_trip_ids => l_dummy_id_tab,
1142 p_stop_ids => l_dummy_id_tab,
1143 p_delivery_ids => l_delivery_id_tab,
1144 p_document_param_info => l_dummy_doc_set_params,
1145 x_return_status => l_return_status);
1146 --
1147 IF l_debug_on THEN
1148 wsh_debug_sv.log(l_module_name,'Return Status After Calling Print_Document_Sets',l_return_status);
1149 END IF;
1150 --
1151 wsh_util_core.api_post_call(
1152 p_return_status => l_return_status,
1153 x_num_warnings => l_num_warnings,
1154 x_num_errors => l_num_errors);
1155 --
1156 ELSIF p_action_prms.action_code = 'WT-VOL' THEN
1157 --
1158 -- OTM R12 : packing ECO
1159 -- This change was introduced to mark the G_RESET_WV flag
1160 -- before calling delivery_weight_volume so the procedure will know
1161 -- to invoke update tms_interface_flag process.
1162
1163 IF l_gc3_is_installed = 'Y' THEN
1164 WSH_WV_UTILS.G_RESET_WV := 'Y'; -- set to Y to enable the update
1165 END IF;
1166 -- End of OTM R12 : packing ECO
1167
1168 WSH_WV_UTILS.Delivery_Weight_Volume(
1169 p_del_rows => l_delivery_id_tab,
1170 p_update_flag => p_action_prms.override_flag,
1171 x_return_status => l_return_status);
1172 --
1173 IF l_debug_on THEN
1174 wsh_debug_sv.log(l_module_name,'Return Status After Calling Delivery_Weight_Volume',l_return_status);
1175 END IF;
1176 --
1177 wsh_util_core.api_post_call(
1178 p_return_status => l_return_status,
1179 x_num_warnings => l_num_warnings,
1180 x_num_errors => l_num_errors);
1181
1182 -- OTM R12 : packing ECO
1183 IF l_gc3_is_installed = 'Y' THEN
1184 WSH_WV_UTILS.G_RESET_WV := 'N'; -- after call, set it back to 'N'
1185 END IF;
1186 -- End of OTM R12 : packing ECO
1187
1188 ELSIF p_action_prms.action_code = 'AUTO-PACK' THEN
1189
1190 IF NVL(p_action_prms.caller, 'X') <> 'WSH_BHPS' THEN
1191
1192 IF l_delivery_id_tab.count > 0 THEN
1193
1194 FORALL i in 1..l_delivery_id_tab.count
1195 update wsh_new_deliveries
1196 set ap_batch_id = NULL
1197 where delivery_id = l_delivery_id_tab(i);
1198
1199 END IF;
1200 END IF;
1201
1202
1203 --
1204 WSH_CONTAINER_GRP.Auto_Pack (
1205 p_api_version => p_api_version_number,
1206 p_init_msg_list => p_init_msg_list,
1207 p_commit => p_commit,
1208 p_validation_level => NULL,
1209 x_return_status => l_return_status,
1210 x_msg_count => l_msg_count,
1211 x_msg_data => l_msg_data,
1212 p_entity_tab => l_delivery_id_tab,
1213 p_entity_type => 'D',
1214 p_group_id_tab => l_dummy_id_tab,
1215 p_pack_cont_flag => 'N',
1216 x_cont_inst_tab => x_delivery_out_rec.result_id_tab);
1217 --
1218 IF l_debug_on THEN
1219 wsh_debug_sv.log(l_module_name,'Return Status After Calling Auto_Pack for Action Auto_Pack',l_return_status);
1220 END IF;
1221 --
1222 wsh_util_core.api_post_call(
1223 p_return_status => l_return_status,
1224 x_num_warnings => l_num_warnings,
1225 x_num_errors => l_num_errors,
1226 p_msg_data => l_msg_data);
1227 --
1228
1229 ELSIF p_action_prms.action_code = 'AUTO-PACK-MASTER' THEN
1230 --
1231
1232 IF NVL(p_action_prms.caller, 'X') <> 'WSH_BHPS' THEN
1233
1234 IF l_delivery_id_tab.count > 0 THEN
1235
1236 FORALL i in 1..l_delivery_id_tab.count
1237 update wsh_new_deliveries
1238 set ap_batch_id = NULL
1239 where delivery_id = l_delivery_id_tab(i);
1240
1241 END IF;
1242 END IF;
1243
1244 WSH_CONTAINER_GRP.Auto_Pack (
1245 p_api_version => p_api_version_number,
1246 p_init_msg_list => p_init_msg_list,
1247 p_commit => p_commit,
1248 p_validation_level => NULL,
1249 x_return_status => l_return_status,
1250 x_msg_count => l_msg_count,
1251 x_msg_data => l_msg_data,
1252 p_entity_tab => l_delivery_id_tab,
1253 p_entity_type => 'D',
1254 p_group_id_tab => l_dummy_id_tab,
1255 p_pack_cont_flag => 'Y',
1256 x_cont_inst_tab => x_delivery_out_rec.result_id_tab);
1257 --
1258 IF l_debug_on THEN
1259 wsh_debug_sv.log(l_module_name,'Return Status After Calling Auto_Pack for Action Auto_Pack_Master',l_return_status);
1260 END IF;
1261 --
1262 wsh_util_core.api_post_call(
1263 p_return_status => l_return_status,
1264 x_num_warnings => l_num_warnings,
1265 x_num_errors => l_num_errors,
1266 p_msg_data => l_msg_data);
1267 --
1268
1269 ELSIF p_action_prms.action_code = 'GEN-LOAD-SEQ' THEN
1270 --
1271 WSH_NEW_DELIVERY_ACTIONS.Generate_Loading_Seq(
1272 p_del_rows => l_delivery_id_tab,
1273 x_return_status => l_return_status);
1274 --
1275 IF l_debug_on THEN
1276 wsh_debug_sv.log(l_module_name,'Return Status After Calling Generate_Loading_Seq',l_return_status);
1277 END IF;
1278 --
1279 wsh_util_core.api_post_call(
1280 p_return_status => l_return_status,
1281 x_num_warnings => l_num_warnings,
1282 x_num_errors => l_num_errors);
1283 --
1284 ELSIF p_action_prms.action_code = 'CREATE-CONSOL-DEL' THEN
1285 WSH_DELIVERY_AUTOCREATE.Autocreate_Consol_Delivery(
1286 p_del_attributes_tab => p_rec_attr_tab,
1287 p_caller => p_action_prms.caller,
1288 p_trip_prefix => p_action_prms.trip_name,
1289 x_parent_del_id => x_delivery_out_rec.result_id_tab(1),
1290 x_parent_trip_id => x_delivery_out_rec.valid_ids_tab(1),
1291 x_return_status => l_return_status);
1292
1293 IF l_debug_on THEN
1294 wsh_debug_sv.log(l_module_name,'Return Status After Calling WSH_DELIVERY_AUTOCREATE.Autocreate_Consol_Delivery',l_return_status);
1295 END IF;
1296 --
1297 wsh_util_core.api_post_call(
1298 p_return_status => l_return_status,
1299 x_num_warnings => l_num_warnings,
1300 x_num_errors => l_num_errors,
1301 p_msg_data => l_msg_data);
1302
1303 ELSIF p_action_prms.action_code = 'CONFIRM' THEN
1304
1305 -- bug 4302048: if global parameter enforces ship method,
1306 -- the caller (e.g., Public API) must pass ship method code.
1307 --
1308 -- wsh_interface_grp will use the SC rule to derive it if required;
1309 -- direct callers of this API need to derive properly.
1310 --
1311 -- bug 5472722: DO NOT enforce shipmethod when cycle counting and
1312 -- back ordering all.
1313 IF (p_action_prms.ship_method_code IS NULL) AND (p_action_prms.action_flag IN ('S', 'B', 'L', 'T', 'A')) THEN
1314 DECLARE
1315 l_global_parameters WSH_SHIPPING_PARAMS_PVT.Global_Parameters_Rec_Typ;
1316 BEGIN
1317 WSH_SHIPPING_PARAMS_PVT.Get_Global_Parameters(
1318 x_param_info => l_global_parameters,
1319 x_return_status => l_return_status);
1320 IF (l_return_status IN (WSH_UTIL_CORE.G_RET_STS_ERROR,
1321 WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR)) THEN
1322 x_return_status := l_return_status;
1323 IF l_debug_on THEN
1324 WSH_DEBUG_SV.pop(l_module_name,'get_global_parameters failed');
1325 END IF;
1326 RETURN;
1327 END IF;
1328
1329 IF l_global_parameters.enforce_ship_method = 'Y' THEN
1330 FND_MESSAGE.SET_NAME('WSH','WSH_SC_SM_REQUIRED');
1331 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1332 wsh_util_core.add_message(x_return_status,l_module_name);
1333 IF l_debug_on THEN
1334 WSH_DEBUG_SV.pop(l_module_name,'ship method is required');
1335 END IF;
1336 RETURN;
1337 END IF;
1338 END;
1339 END IF;
1340
1341 -- Bug#3880569: Validating the Ship Method Code.
1342 -- Do the Validation only if the Delivery is not associated with a Trip.
1343 l_ship_method_code := p_action_prms.ship_method_code;
1344 l_is_del_assign_trip := FALSE;
1345
1346 FOR i in l_delivery_id_tab.FIRST..l_delivery_id_tab.LAST LOOP
1347 -- Bug 4100661
1348 l_temp_trip_id := NULL;
1349 OPEN c_del_assign_to_trip(l_delivery_id_tab(i));
1350 LOOP
1351 FETCH c_del_assign_to_trip INTO l_temp_trip_id, l_temp_ship_method_code, l_temp_lane_id;
1352 EXIT WHEN c_del_assign_to_trip%NOTFOUND;
1353 IF l_temp_trip_id is not NULL THEN
1354 l_is_del_assign_trip := TRUE;
1355
1356 IF WSH_UTIL_CORE.FTE_IS_INSTALLED = 'Y' AND l_temp_lane_id is not NULL AND
1357 NVL(l_ship_method_code,l_temp_ship_method_code) <> l_temp_ship_method_code THEN
1358 CLOSE c_del_assign_to_trip;
1359 l_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1360 FND_MESSAGE.SET_NAME('FTE', 'FTE_SEGMENT_CSM_CHANGE_ERROR');
1361 FND_MESSAGE.SET_TOKEN('TRIP_SEGMENT_NAME', wsh_trips_pvt.get_name(l_temp_trip_id));
1362 WSH_UTIL_CORE.ADD_MESSAGE(WSH_UTIL_CORE.G_RET_STS_ERROR);
1363
1364 wsh_util_core.api_post_call(
1365 p_return_status => l_return_status,
1366 x_num_warnings => l_num_warnings,
1367 x_num_errors => l_num_errors);
1368 END IF;
1369 END IF;
1370 END LOOP;
1371 CLOSE c_del_assign_to_trip;
1372 /*
1373 IF c_del_assign_to_trip%FOUND THEN
1374 l_is_del_assign_trip := TRUE;
1375 CLOSE c_del_assign_to_trip;
1376 exit;
1377 END IF;
1378 CLOSE c_del_assign_to_trip;
1379 */
1380 END LOOP;
1381
1382 IF NOT l_is_del_assign_trip AND l_ship_method_code IS NOT NULL AND p_action_prms.caller <> 'WSH_FSTRX' THEN
1383 WSH_UTIL_VALIDATE.Validate_Active_SM
1384 ( p_ship_method_code => l_ship_method_code,
1385 p_ship_method_name => l_ship_method_name,
1386 x_return_status => l_return_status
1387 );
1388 wsh_util_core.api_post_call(p_return_status => l_return_status,
1389 x_num_warnings => l_num_warnings,
1390 x_num_errors => l_num_errors);
1391 END IF;
1392
1393 -- End, Bug#3880569
1394
1395 IF NVL(p_action_prms.caller, 'X') <> 'WSH_BHPS' THEN
1396
1397 IF l_delivery_id_tab.count > 0 THEN
1398
1399 FORALL i in 1..l_delivery_id_tab.count
1400 update wsh_new_deliveries
1401 set batch_id = NULL
1402 where delivery_id = l_delivery_id_tab(i);
1403
1404 END IF;
1405 END IF;
1406 --
1407 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_DOCUMENT_SETS_LVL) = 1 THEN
1408 --
1409 WSH_UTIL_VALIDATE.validate_report_set(
1410 p_report_set_id => l_report_set_id,
1411 p_report_set_name => p_action_prms.report_set_name,
1412 x_return_status => l_return_status);
1413 --
1414 IF l_debug_on THEN
1415 wsh_debug_sv.log(l_module_name,'Return Status After Calling Validate_Report_Set',l_return_status);
1416 END IF;
1417 --
1418 wsh_util_core.api_post_call(
1419 p_return_status => l_return_status,
1420 x_num_warnings => l_num_warnings,
1421 x_num_errors => l_num_errors);
1422 --
1423 END IF;
1424 --
1425
1426 -- Bug 3877951
1427 IF p_action_prms.close_trip_flag = 'Y' THEN
1428 l_intransit_flag := 'Y';
1429 ELSE
1430 l_intransit_flag := p_action_prms.intransit_flag;
1431 END IF;
1432 --
1433 IF NVL(p_action_prms.caller, 'X') <> 'WSH_BHPS' THEN
1434 --
1435 WSH_NEW_DELIVERY_ACTIONS.Confirm_Delivery(
1436 p_del_rows => l_delivery_id_tab,
1437 p_action_flag => p_action_prms.action_flag,
1438 p_intransit_flag => l_intransit_flag,
1439 p_close_flag => p_action_prms.close_trip_flag,
1440 p_stage_del_flag => p_action_prms.stage_del_flag,
1441 p_report_set_id => l_report_set_id,
1442 p_ship_method => p_action_prms.ship_method_code,
1443 p_actual_dep_date => p_action_prms.actual_dep_date,
1444 p_bol_flag => p_action_prms.bill_of_lading_flag,
1445 p_mc_bol_flag => p_action_prms.bill_of_lading_flag,
1446 p_defer_interface_flag => p_action_prms.defer_interface_flag,
1447 p_send_945_flag => p_action_prms.send_945_flag,
1448 x_return_status => l_return_status);
1449 ELSE
1450 WSH_NEW_DELIVERY_ACTIONS.Confirm_Delivery(
1451 p_del_rows => l_delivery_id_tab,
1452 p_action_flag => p_action_prms.action_flag,
1453 p_intransit_flag => l_intransit_flag,
1454 p_close_flag => p_action_prms.close_trip_flag,
1455 p_stage_del_flag => p_action_prms.stage_del_flag,
1456 p_report_set_id => l_report_set_id,
1457 p_ship_method => p_action_prms.ship_method_code,
1458 p_actual_dep_date => p_action_prms.actual_dep_date,
1459 p_bol_flag => p_action_prms.bill_of_lading_flag,
1460 p_mc_bol_flag => p_action_prms.mc_bill_of_lading_flag,
1461 p_defer_interface_flag => p_action_prms.defer_interface_flag,
1462 p_send_945_flag => p_action_prms.send_945_flag,
1463 x_return_status => l_return_status);
1464 END IF;
1465 --
1466 IF l_debug_on THEN
1467 wsh_debug_sv.log(l_module_name,'Return Status After Calling Confirm_Delivery',l_return_status);
1468 END IF;
1469 --
1470 wsh_util_core.api_post_call(
1471 p_return_status => l_return_status,
1472 x_num_warnings => l_num_warnings,
1473 x_num_errors => l_num_errors);
1474 --
1475 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_PRINT_LABEL_LVL) = 1 THEN
1476 --
1477 -- Bug#5864517: Needs to call Print_Label API irrespective of p_intransit_flag and p_close_flag
1478 -- flag values.
1479 --
1480 IF l_debug_on THEN
1481 WSH_DEBUG_SV.log(l_module_name,'Calling WSH_UTIL_CORE.Print_Label');
1482 END IF;
1483
1484 WSH_UTIL_CORE.Print_Label(
1485 p_stop_ids => l_dummy_id_tab,
1486 p_delivery_ids => l_delivery_id_tab,
1487 x_return_status => l_return_status);
1488 --
1489 IF l_debug_on THEN
1490 wsh_debug_sv.log(l_module_name,'Return Status After Calling Print_Label',l_return_status);
1491 END IF;
1492 --
1493 wsh_util_core.api_post_call(
1494 p_return_status => l_return_status,
1495 x_num_warnings => l_num_warnings,
1496 x_num_errors => l_num_errors);
1497 --
1498 --
1499 END IF;
1500 --
1501
1502 ELSIF p_action_prms.action_code IN ('RE-OPEN','CLOSE') THEN
1503 --
1504 WSH_NEW_DELIVERY_ACTIONS.Change_Status (
1505 p_del_rows => l_delivery_id_tab,
1506 p_action => p_action_prms.action_code,
1507 p_actual_date => NULL,
1508 x_return_status => l_return_status);
1509 --
1510 IF l_debug_on THEN
1511 wsh_debug_sv.log(l_module_name,'Return Status After Calling Change_Status',l_return_status);
1512 END IF;
1513 --
1514 wsh_util_core.api_post_call(
1515 p_return_status => l_return_status,
1516 x_num_warnings => l_num_warnings,
1517 x_num_errors => l_num_errors);
1518 --
1519 ELSIF p_action_prms.action_code = 'ASSIGN-TRIP' THEN
1520 --
1521 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_TRIP_NAME_LVL) = 1 THEN
1522 --
1523 WSH_UTIL_VALIDATE.Validate_Trip_Name (
1524 p_trip_id => l_trip_id,
1525 p_trip_name => p_action_prms.trip_name,
1526 x_return_status => l_return_status);
1527 --
1528 IF l_debug_on THEN
1529 wsh_debug_sv.log(l_module_name,'Return Status After Calling Validate_Trip_Name',l_return_status);
1530 END IF;
1531 --
1532 wsh_util_core.api_post_call(
1533 p_return_status => l_return_status,
1534 x_num_warnings => l_num_warnings,
1535 x_num_errors => l_num_errors);
1536 --
1537 END IF;
1538 --
1539 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_TRIP_STATUS_LVL) = 1 THEN
1540 --
1541 --WSH_UTIL_VALIDATE.Validate_Trip_Status( -- J-IB-NPARIKH
1542 WSH_TRIP_VALIDATIONS.Validate_Trip_Status( -- J-IB-NPARIKH
1543 p_trip_id => l_trip_id,
1544 p_action => p_action_prms.action_code,
1545 x_return_status => l_return_status);
1546 --
1547 IF l_debug_on THEN
1548 wsh_debug_sv.log(l_module_name,'Return Status After Calling Validate_Trip_Status',l_return_status);
1549 END IF;
1550 --
1551 wsh_util_core.api_post_call(
1552 p_return_status => l_return_status,
1553 x_num_warnings => l_num_warnings,
1554 x_num_errors => l_num_errors);
1555 --
1556 END IF;
1557 --
1558 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_LOCATION_LVL) = 1 THEN
1559 --
1560 WSH_UTIL_VALIDATE.Validate_Location (
1561 p_location_id => l_pickup_loc_id,
1562 p_location_code => p_action_prms.pickup_loc_code,
1563 x_return_status => l_return_status,
1564 p_isWshLocation => l_isWshLocation);
1565 --
1566 IF l_debug_on THEN
1567 wsh_debug_sv.log(l_module_name,'Return Status After Calling Validate_Location',l_return_status);
1568 END IF;
1569 --
1570 wsh_util_core.api_post_call(
1571 p_return_status => l_return_status,
1572 x_num_warnings => l_num_warnings,
1573 x_num_errors => l_num_errors);
1574 --
1575 WSH_UTIL_VALIDATE.Validate_Location (
1576 p_location_id => l_dropoff_loc_id,
1577 p_location_code => p_action_prms.dropoff_loc_code,
1578 x_return_status => l_return_status,
1579 p_isWshLocation => l_isWshLocation);
1580 --
1581 IF l_debug_on THEN
1582 wsh_debug_sv.log(l_module_name,'Return Status After Calling Validate_Location',l_return_status);
1583 END IF;
1584 --
1585 wsh_util_core.api_post_call(
1586 p_return_status => l_return_status,
1587 x_num_warnings => l_num_warnings,
1588 x_num_errors => l_num_errors);
1589 --
1590 END IF;
1591 --
1592 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_STOP_NAME_LVL) = 1 THEN
1593 --
1594 -- If stops are specified, validate they are eligible.
1595 --
1596 IF p_action_prms.pickup_stop_id IS NOT NULL THEN
1597 l_stop_id := p_action_prms.pickup_stop_id;
1598 WSH_UTIL_VALIDATE.Validate_Stop_Name (
1599 p_stop_id => l_stop_id,
1600 p_trip_id => p_action_prms.trip_id,
1601 p_stop_location_id => NULL, -- not needed
1602 p_planned_dep_date => NULL, -- not needed
1603 x_return_status => l_return_status);
1604 --
1605 IF l_debug_on THEN
1606 wsh_debug_sv.log(l_module_name,'Return Status After Calling Validate_Stop_Name for pickup',l_return_status);
1607 END IF;
1608 --
1609 wsh_util_core.api_post_call(
1610 p_return_status => l_return_status,
1611 x_num_warnings => l_num_warnings,
1612 x_num_errors => l_num_errors);
1613 --
1614 END IF;
1615 --
1616 IF p_action_prms.dropoff_stop_id IS NOT NULL THEN
1617 l_stop_id := p_action_prms.dropoff_stop_id;
1618 WSH_UTIL_VALIDATE.Validate_Stop_Name (
1619 p_stop_id => l_stop_id,
1620 p_trip_id => p_action_prms.trip_id,
1621 p_stop_location_id => NULL, -- not needed
1622 p_planned_dep_date => NULL, -- not needed
1623 x_return_status => l_return_status);
1624 --
1625 IF l_debug_on THEN
1626 wsh_debug_sv.log(l_module_name,'Return Status After Calling Validate_Stop_Name for drop off',l_return_status);
1627 END IF;
1628 --
1629 wsh_util_core.api_post_call(
1630 p_return_status => l_return_status,
1631 x_num_warnings => l_num_warnings,
1632 x_num_errors => l_num_errors);
1633 --
1634 END IF;
1635 --
1636 END IF;
1637 --
1638 -- SSN change
1639 -- Validate stop_sequence_number if profile option is set to SSN
1640 IF (WSH_TRIPS_ACTIONS.GET_STOP_SEQ_MODE = WSH_INTERFACE_GRP.G_STOP_SEQ_MODE_SSN) AND
1641 (WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_SEQ_NUM_LVL) = 1) THEN
1642 --
1643 -- in context of creating new stops, their status is
1644 -- assumed to be NULL, so we need to pass 'OP'
1645 -- to avoid getting error about invalid stop status.
1646 --
1647 WSH_TRIP_STOPS_VALIDATIONS.Validate_Sequence_Number (
1648 p_stop_id => p_action_prms.pickup_stop_id,
1649 p_stop_sequence_number => p_action_prms.pickup_stop_seq,
1650 p_trip_id => l_trip_id,
1651 p_status_code => NVL(p_action_prms.pickup_stop_status, 'OP'),
1652 x_return_status => l_return_status);
1653 --
1654 IF l_debug_on THEN
1655 wsh_debug_sv.log(l_module_name,'Return Status After Calling Validate_Sequence_Number',l_return_status);
1656 END IF;
1657 --
1658 wsh_util_core.api_post_call(
1659 p_return_status => l_return_status,
1660 x_num_warnings => l_num_warnings,
1661 x_num_errors => l_num_errors);
1662 --
1663 WSH_TRIP_STOPS_VALIDATIONS.Validate_Sequence_Number (
1664 p_stop_id => p_action_prms.dropoff_stop_id,
1665 p_stop_sequence_number => p_action_prms.dropoff_stop_seq,
1666 p_trip_id => l_trip_id,
1667 p_status_code => NVL(p_action_prms.dropoff_stop_status, 'OP'),
1668 x_return_status => l_return_status);
1669 --
1670 IF l_debug_on THEN
1671 wsh_debug_sv.log(l_module_name,'Return Status After Calling Validate_Sequence_Number',l_return_status);
1672 END IF;
1673 --
1674 wsh_util_core.api_post_call(
1675 p_return_status => l_return_status,
1676 x_num_warnings => l_num_warnings,
1677 x_num_errors => l_num_errors);
1678 --
1679 END IF; -- If profile = SSN and level = 1
1680
1681 --
1682 -- bug 3516052
1683 -- validate the planned date for pick up and drop off stop
1684
1685 IF p_action_prms.pickup_dep_date is not NULL and
1686 p_action_prms.pickup_arr_date is not NULL and
1687 (p_action_prms.pickup_dep_date < p_action_prms.pickup_arr_date) THEN
1688 l_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1689
1690 l_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1691 FND_MESSAGE.SET_NAME('WSH', 'WSH_PLAN_DEP_ARR_DATE');
1692 wsh_util_core.add_message(l_return_status, l_module_name);
1693
1694 wsh_util_core.api_post_call(
1695 p_return_status => l_return_status,
1696 x_num_warnings => l_num_warnings,
1697 x_num_errors => l_num_errors);
1698 END IF;
1699
1700 IF p_action_prms.dropoff_dep_date is not NULL and
1701 p_action_prms.dropoff_arr_date is not NULL and
1702 (p_action_prms.dropoff_dep_date < p_action_prms.dropoff_arr_date) THEN
1703
1704 l_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1705 FND_MESSAGE.SET_NAME('WSH', 'WSH_PLAN_DEP_ARR_DATE');
1706 wsh_util_core.add_message(l_return_status, l_module_name);
1707
1708 wsh_util_core.api_post_call(
1709 p_return_status => l_return_status,
1710 x_num_warnings => l_num_warnings,
1711 x_num_errors => l_num_errors);
1712 END IF;
1713 --
1714 --OTM R12, check for allowed assign trip
1715 IF (l_gc3_is_installed = 'Y' AND p_action_prms.caller <> 'FTE_TMS_INTEGRATION') THEN
1716
1717 IF l_debug_on THEN
1718 WSH_DEBUG_SV.logmsg(l_module_name,'checking for include for planning trip');
1719 END IF;
1720
1721 --check for include for planning, delivery should have same ignore for planning flag as trip
1722 --if any delivery is include for planning, cannot assign to trip
1723 i := p_rec_attr_tab.FIRST;
1724 WHILE i IS NOT NULL LOOP
1725
1726 IF l_debug_on THEN
1727 WSH_DEBUG_SV.log(l_module_name,'ignore for planning for delivery ' || i, p_rec_attr_tab(i).ignore_for_planning);
1728 END IF;
1729
1730 IF (NVL(p_rec_attr_tab(i).ignore_for_planning, 'N') = 'N') THEN
1731
1732 IF l_debug_on THEN
1733 WSH_DEBUG_SV.log(l_module_name,'GC3 IS INSTALLED, AND TRIP IS INCLUDE FOR PLANNING, CANNOT ASSIGN');
1734 END IF;
1735
1736 FND_MESSAGE.SET_NAME('WSH', 'WSH_OTM_ASSIGN_TRIP');
1737
1738 l_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1739 WSH_UTIL_CORE.add_message(x_return_status, l_module_name);
1740
1741 wsh_util_core.api_post_call(
1742 p_return_status => l_return_status,
1743 x_num_warnings => l_num_warnings,
1744 x_num_errors => l_num_errors);
1745
1746 END IF;
1747
1748 i := p_rec_attr_tab.NEXT(i);
1749 END LOOP;
1750 END IF;
1751 --END OTM R12
1752
1753 WSH_TRIPS_ACTIONS.Assign_Trip (
1754 p_del_rows => l_delivery_id_tab,
1755 p_trip_id => l_trip_id,
1756 p_pickup_stop_id => p_action_prms.pickup_stop_id,
1757 p_pickup_stop_seq => p_action_prms.pickup_stop_seq,
1758 p_dropoff_stop_id => p_action_prms.dropoff_stop_id,
1759 p_dropoff_stop_seq => p_action_prms.dropoff_stop_seq,
1760 p_pickup_location_id => p_action_prms.pickup_loc_id,
1761 p_dropoff_location_id => p_action_prms.dropoff_loc_id,
1762 p_pickup_arr_date => p_action_prms.pickup_arr_date,
1763 p_pickup_dep_date => p_action_prms.pickup_dep_date,
1764 p_dropoff_arr_date => p_action_prms.dropoff_arr_date,
1765 p_dropoff_dep_date => p_action_prms.dropoff_dep_date,
1766 p_caller => p_action_prms.caller||'ASSIGNTRIP',
1767 x_return_status => l_return_status
1768 );
1769 --
1770 IF l_debug_on THEN
1771 wsh_debug_sv.log(l_module_name,'Return Status After Calling Assign_Trip',l_return_status);
1772 END IF;
1773 --
1774 wsh_util_core.api_post_call(
1775 p_return_status => l_return_status,
1776 x_num_warnings => l_num_warnings,
1777 x_num_errors => l_num_errors);
1778 --
1779
1780 ELSIF p_action_prms.action_code = 'UNASSIGN-TRIP' THEN
1781 --
1782 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_TRIP_NAME_LVL) = 1 THEN
1783 --
1784 WSH_UTIL_VALIDATE.Validate_Trip_Name (
1785 p_trip_id => l_trip_id,
1786 p_trip_name => p_action_prms.trip_name,
1787 x_return_status => l_return_status);
1788 --
1789 IF l_debug_on THEN
1790 wsh_debug_sv.log(l_module_name,'Return Status After Calling Validate_Trip_Name',l_return_status);
1791 END IF;
1792 --
1793 wsh_util_core.api_post_call(
1794 p_return_status => l_return_status,
1795 x_num_warnings => l_num_warnings,
1796 x_num_errors => l_num_errors);
1797 --
1798 END IF;
1799 --
1800 WSH_TRIPS_ACTIONS.Unassign_Trip (
1801 p_del_rows => l_delivery_id_tab,
1802 p_trip_id => l_trip_id,
1803 x_return_status => l_return_status);
1804 --
1805 IF l_debug_on THEN
1806 wsh_debug_sv.log(l_module_name,'Return Status After Calling Unassign_Trip',l_return_status);
1807 END IF;
1808 --
1809 wsh_util_core.api_post_call(
1810 p_return_status => l_return_status,
1811 x_num_warnings => l_num_warnings,
1812 x_num_errors => l_num_errors);
1813 --
1814
1815 --OTM R12, validate after unassign to set delivery status.
1816 IF (l_gc3_is_installed = 'Y') THEN
1817
1818 --check for include for planning, delivery should have same ignore for planning flag as trip
1819 --in theory all delivery on that trip should have same ignore for planning flag, so if
1820 --any delivery is include for planning, assume trip is include for planning
1821 i := p_rec_attr_tab.FIRST;
1822
1823 WHILE (i IS NOT NULL) LOOP
1824 IF (NVL(p_rec_attr_tab(i).ignore_for_planning, 'N') = 'N') THEN
1825
1826 IF (p_action_prms.caller <> 'FTE_TMS_INTEGRATION') THEN
1827
1828 IF l_debug_on THEN
1829 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_TP_RELEASE.CHANGE_IGNOREPLAN_STATUS',WSH_DEBUG_SV.C_PROC_LEVEL);
1830 END IF;
1831
1832 WSH_TP_RELEASE.change_ignoreplan_status
1833 (p_entity => 'DLVY',
1834 p_in_ids => l_delivery_id_tab,
1835 p_action_code => 'IGNORE_PLAN',
1836 x_return_status => l_return_status);
1837
1838 IF l_debug_on THEN
1839 wsh_debug_sv.log(l_module_name,'Return Status After Calling change_ignoreplan_sttatus',l_return_status);
1840 END IF;
1841
1842 WSH_UTIL_CORE.api_post_call(
1843 p_return_status => l_return_status,
1844 x_num_warnings => l_num_warnings,
1845 x_num_errors => l_num_errors);
1846
1847 -- now have to set the other dels on this trip to AW if it's AR l_trip_id
1848 OPEN c_get_delivery_id(l_trip_id);
1849 FETCH c_get_delivery_id BULK COLLECT INTO l_new_delivery_id_tab, l_new_interface_flag_tab;
1850 --table is default NULL, so if no delivery found then the table stay empty
1851 CLOSE c_get_delivery_id;
1852
1853 IF l_debug_on THEN
1854 wsh_debug_sv.log(l_module_name,'l_trip_id', l_trip_id);
1855 wsh_debug_sv.log(l_module_name,'delivery id count', l_new_delivery_id_tab.COUNT);
1856 END IF;
1857
1858 IF (l_new_delivery_id_tab.COUNT > 0) THEN
1859
1860 IF l_debug_on THEN
1861 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERIES_PVT.UPDATE_TMS_INTERFACE_FLAG',WSH_DEBUG_SV.C_PROC_LEVEL);
1862 END IF;
1863
1864 WSH_NEW_DELIVERIES_PVT.update_tms_interface_flag(
1865 p_delivery_id_tab => l_new_delivery_id_tab,
1866 p_tms_interface_flag_tab => l_new_interface_flag_tab,
1867 x_return_status => l_return_status);
1868
1869 IF l_debug_on THEN
1870 wsh_debug_sv.log(l_module_name,'Return Status After Calling update_tms_interface_flag',l_return_status);
1871 END IF;
1872
1873 WSH_UTIL_CORE.api_post_call(
1874 p_return_status => l_return_status,
1875 x_num_warnings => l_num_warnings,
1876 x_num_errors => l_num_errors);
1877
1878 END IF;
1879
1880 END IF; --action prms check
1881
1882 --delete freight cost record, delivery leg is deleted
1883 --when delivery unassigned from trip, no need to delete the leg's freight cost
1884 IF l_delivery_id_tab.COUNT > 0 THEN
1885 FORALL i IN l_delivery_id_tab.FIRST..l_delivery_id_tab.LAST
1886 DELETE FROM WSH_FREIGHT_COSTS
1887 WHERE delivery_id = l_delivery_id_tab(i);
1888 END IF;
1889 EXIT; --exit loop once an include for delivery is found because this trip will only need to be processed once
1890 END IF; --ignore for planning check
1891
1892 i := p_rec_attr_tab.NEXT(i);
1893 END LOOP;
1894 END IF;
1895 --END OTM R12
1896
1897 ELSIF p_action_prms.action_code = 'AUTOCREATE-TRIP' THEN
1898 --
1899 --Compatibility Changes
1900 IF wsh_util_core.fte_is_installed = 'Y' AND l_cc_line_groups.COUNT>0 THEN
1901
1902 --1. get the group ids by which the constraints API has grouped the lines
1903 l_cc_count_group_ids:=1;
1904 FOR i in l_cc_line_groups.FIRST..l_cc_line_groups.LAST LOOP
1905 b_cc_groupidexists:=FALSE;
1906 IF l_cc_group_ids.COUNT>0 THEN
1907 FOR j in l_cc_group_ids.FIRST..l_cc_group_ids.LAST LOOP
1908 IF (l_cc_line_groups(i).line_group_id=l_cc_group_ids(j)) THEN
1909 b_cc_groupidexists:=TRUE;
1910 END IF;
1911 END LOOP;
1912 END IF;
1913
1914 IF (NOT(b_cc_groupidexists)) THEN
1915 l_cc_group_ids(l_cc_count_group_ids):=l_cc_line_groups(i).line_group_id;
1916 l_cc_count_group_ids:=l_cc_count_group_ids+1;
1917 END IF;
1918 END LOOP;
1919
1920 --2. from the group id table above, loop thru lines table to get the lines which belong
1921 --to each group and call autocreate_trip for each group
1922 FOR i in l_cc_group_ids.FIRST..l_cc_group_ids.LAST LOOP
1923 l_cc_count_rec:=1;
1924 FOR j in l_cc_line_groups.FIRST..l_cc_line_groups.LAST LOOP
1925 IF l_cc_line_groups(j).line_group_id=l_cc_group_ids(i) THEN
1926 l_delivery_id_tab_temp(l_cc_count_rec):=l_cc_line_groups(j).entity_line_id;
1927 l_cc_count_rec:=l_cc_count_rec+1;
1928 END IF;
1929 END LOOP;
1930
1931 IF l_debug_on THEN
1932 wsh_debug_sv.log(l_module_name,'l_delivery_id_tab_temp count ',l_delivery_id_tab_temp.COUNT);
1933 END IF;
1934
1935 /* J TP Release */
1936 WSH_TRIPS_ACTIONS.autocreate_trip_multi( p_del_rows => l_delivery_id_tab_temp,
1937 x_trip_ids => x_delivery_out_rec.result_id_tab,
1938 x_trip_names => l_trip_names,
1939 x_return_status => l_return_status);
1940
1941 IF l_debug_on THEN
1942 wsh_debug_sv.log(l_module_name,'return from autocreate_trip_multi '
1943 ,l_return_status);
1944 END IF;
1945
1946 --set the ship method to null if group rec from constraint validation has this as 'N'
1947 l_cc_upd_dlvy_ship_method:='Y';
1948 IF l_cc_group_info.COUNT>0 THEN
1949 FOR j in l_cc_group_info.FIRST..l_cc_group_info.LAST LOOP
1950 IF l_cc_group_info(j).line_group_id=l_cc_group_ids(i) THEN
1951 l_cc_upd_dlvy_ship_method:=l_cc_group_info(j).upd_dlvy_ship_method;
1952 END IF;
1953 END LOOP;
1954 END IF;
1955
1956 IF l_debug_on THEN
1957 wsh_debug_sv.log(l_module_name,'l_cc_upd_dlvy_ship_method ',l_cc_upd_dlvy_ship_method);
1958 IF (x_delivery_out_rec.result_id_tab.count > 0) THEN
1959 wsh_debug_sv.log(l_module_name,'l_trip_id ', x_delivery_out_rec.result_id_tab(1));
1960 ELSE
1961 wsh_debug_sv.log(l_module_name,'l_trip_id ', 'not created');
1962 END IF;
1963 IF (l_trip_names.count > 0) THEN
1964 wsh_debug_sv.log(l_module_name,'l_trip_name ',l_trip_names(1));
1965 ELSE
1966 wsh_debug_sv.log(l_module_name,'l_trip_name ', 'not created');
1967 END IF;
1968 wsh_debug_sv.log(l_module_name,'l_return_status after calling autocreate_trip in comp ',l_return_status);
1969 END IF;
1970
1971 /* J TP Release */
1972 IF x_delivery_out_rec.result_id_tab is not null AND x_delivery_out_rec.result_id_tab.COUNT>0 THEN
1973 FOR l_tripindex IN x_delivery_out_rec.result_id_tab.FIRST..x_delivery_out_rec.result_id_tab.LAST LOOP
1974 IF l_cc_upd_dlvy_ship_method='N' THEN
1975 FOR tripcurtemp in trip_cur(x_delivery_out_rec.result_id_tab(l_tripindex)) LOOP
1976 l_cc_dlvy_ship_method:=tripcurtemp.SHIP_METHOD_CODE;
1977 IF l_cc_upd_dlvy_ship_method='N' THEN
1978 update wsh_trips
1979 set SHIP_METHOD_CODE=null,
1980 CARRIER_ID = null,
1981 MODE_OF_TRANSPORT = null,
1982 SERVICE_LEVEL = null
1983 where trip_id= x_delivery_out_rec.result_id_tab(l_tripindex);
1984 END IF;
1985 END LOOP;
1986 END IF;
1987 --set the intermediate ship to, ship method to null if group rec from constraint validation has these as 'N'
1988
1989 l_cc_trip_id(l_cc_trip_id.COUNT+1):=x_delivery_out_rec.result_id_tab(l_tripindex);
1990 END LOOP;
1991 END IF;--x_delivery_out_rec.result_id_tab
1992 --
1993 IF (l_cc_return_status is not null AND l_cc_return_status IN (WSH_UTIL_CORE.G_RET_STS_ERROR, WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR)) THEN
1994 l_return_status:=l_cc_return_status;
1995 ELSIF (l_cc_return_status is not null AND l_cc_return_status=WSH_UTIL_CORE.G_RET_STS_WARNING AND l_return_status=WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
1996 l_return_status:=l_cc_return_status;
1997 ELSE
1998 l_cc_return_status:=l_return_status;
1999 END IF;
2000
2001 END LOOP;
2002 x_delivery_out_rec.result_id_tab := l_cc_trip_id;
2003 l_return_status:=l_cc_return_status;
2004
2005 IF l_debug_on THEN
2006 wsh_debug_sv.log(l_module_name,'x_delivery_out_rec.result_id_tab.COUNT after loop ',x_delivery_out_rec.result_id_tab.COUNT);
2007 END IF;
2008
2009 ELSE
2010 /* J TP Release */
2011 WSH_TRIPS_ACTIONS.autocreate_trip_multi( p_del_rows => l_delivery_id_tab,
2012 x_trip_ids => x_delivery_out_rec.result_id_tab,
2013 x_trip_names => l_trip_names,
2014 x_return_status => l_return_status);
2015
2016 END IF;
2017 --
2018 IF l_debug_on THEN
2019 wsh_debug_sv.log(l_module_name,'Return Status After Calling Autocreate_Trip',l_return_status);
2020 END IF;
2021 --
2022 wsh_util_core.api_post_call(
2023 p_return_status => l_return_status,
2024 x_num_warnings => l_num_warnings,
2025 x_num_errors => l_num_errors);
2026 --
2027 -- rlanka : Trip Consolidation Pack J
2028 --
2029 ELSIF p_action_prms.action_code = 'TRIP-CONSOLIDATION' THEN
2030 --
2031 IF wsh_util_core.fte_is_installed = 'Y' AND l_cc_line_groups.COUNT > 0 THEN
2032 --{
2033 -- 1. get the group ids by which the constraints API has grouped the lines
2034 --
2035 l_cc_count_group_ids:=1;
2036 FOR i in l_cc_line_groups.FIRST..l_cc_line_groups.LAST LOOP
2037 --{
2038 b_cc_groupidexists:=FALSE;
2039 IF l_cc_group_ids.COUNT>0 THEN
2040 FOR j in l_cc_group_ids.FIRST..l_cc_group_ids.LAST LOOP
2041 IF (l_cc_line_groups(i).line_group_id=l_cc_group_ids(j)) THEN
2042 b_cc_groupidexists:=TRUE;
2043 END IF;
2044 END LOOP;
2045 END IF;
2046
2047 IF (NOT(b_cc_groupidexists)) THEN
2048 l_cc_group_ids(l_cc_count_group_ids):=l_cc_line_groups(i).line_group_id;
2049 l_cc_count_group_ids:=l_cc_count_group_ids+1;
2050 END IF;
2051 --}
2052 END LOOP;
2053 --
2054 -- 2. from the group id table above, loop thru lines table to get the lines which belong
2055 -- to each group and call autocreate_trip for each group
2056 FOR i in l_cc_group_ids.FIRST..l_cc_group_ids.LAST LOOP
2057 --{
2058 l_cc_count_rec:=1;
2059 l_delivery_id_tab_temp.DELETE; -- added this line
2060 FOR j in l_cc_line_groups.FIRST..l_cc_line_groups.LAST LOOP
2061 IF l_cc_line_groups(j).line_group_id=l_cc_group_ids(i) THEN
2062 l_delivery_id_tab_temp(l_cc_count_rec):=l_cc_line_groups(j).entity_line_id;
2063 l_cc_count_rec:=l_cc_count_rec+1;
2064 END IF;
2065 END LOOP;
2066 --
2067 IF l_debug_on THEN
2068 wsh_debug_sv.log(l_module_name,'Number of delivs. in this group',l_delivery_id_tab_temp.COUNT);
2069 END IF;
2070 --
2071 l_DelivGrpRec.deliv_IDTab := l_delivery_id_tab_temp;
2072 l_delivGrpRec.max_Delivs := p_action_prms.maxDelivs;
2073 --
2074 WSH_TRIP_CONSOLIDATION.GroupDelivsIntoTrips(
2075 p_delivGrpRec => l_delivGrpRec,
2076 x_delOutRec => x_delivery_out_rec,
2077 x_return_status => l_return_status);
2078 --
2079 l_cc_upd_dlvy_ship_method:='Y';
2080 --
2081 IF l_cc_group_info.COUNT > 0 THEN
2082 FOR j in l_cc_group_info.FIRST..l_cc_group_info.LAST LOOP
2083 IF l_cc_group_info(j).line_group_id=l_cc_group_ids(i) THEN
2084 l_cc_upd_dlvy_ship_method:=l_cc_group_info(j).upd_dlvy_ship_method;
2085 END IF;
2086 END LOOP;
2087 END IF;
2088 --
2089 IF l_debug_on THEN
2090 wsh_debug_sv.log(l_module_name,'l_cc_upd_dlvy_ship_method ',l_cc_upd_dlvy_ship_method);
2091 wsh_debug_sv.log(l_module_name, '# of trips', x_delivery_out_rec.result_id_tab.COUNT);
2092 wsh_debug_sv.log(l_module_name,'l_return_status after GroupDelivsIntoTrips',l_return_status);
2093 END IF;
2094 --
2095 j := x_delivery_out_rec.result_id_tab.FIRST;
2096 WHILE j IS NOT NULL LOOP
2097 --{
2098 IF l_debug_on THEN
2099 wsh_debug_sv.log(l_module_name, 'Trip Name', x_delivery_out_rec.result_id_tab(j));
2100 END IF;
2101 --
2102 l_tripID := x_delivery_out_rec.result_id_tab(j);
2103 --
2104 IF l_cc_upd_dlvy_ship_method='N' THEN
2105 FOR tripcurtemp in trip_cur(l_tripID) LOOP
2106 l_cc_dlvy_ship_method:=tripcurtemp.SHIP_METHOD_CODE;
2107 IF l_cc_upd_dlvy_ship_method='N' THEN
2108 update wsh_trips
2109 set SHIP_METHOD_CODE=null,
2110 CARRIER_ID = null,
2111 MODE_OF_TRANSPORT = null,
2112 SERVICE_LEVEL = null
2113 where trip_id= l_tripID;
2114 END IF;
2115 END LOOP;
2116 END IF;
2117 --}
2118 j := x_delivery_out_rec.result_id_tab.NEXT(j);
2119 --
2120 END LOOP;
2121 --
2122 IF (l_cc_return_status is not null AND
2123 l_cc_return_status IN (WSH_UTIL_CORE.G_RET_STS_ERROR, WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR)) THEN
2124 l_return_status:=l_cc_return_status;
2125 ELSIF (l_cc_return_status is not null AND
2126 l_cc_return_status=WSH_UTIL_CORE.G_RET_STS_WARNING AND
2127 l_return_status=WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
2128 l_return_status:=l_cc_return_status;
2129 ELSE
2130 l_cc_return_status:=l_return_status;
2131 END IF;
2132 --}
2133 END LOOP;
2134 --
2135 l_return_status:=l_cc_return_status;
2136 --
2137 IF l_debug_on THEN
2138 wsh_debug_sv.log(l_module_name,'Total number of trips',x_delivery_out_rec.result_id_tab.COUNT);
2139 END IF;
2140 --}
2141 ELSE
2142 --{
2143 IF l_debug_on THEN
2144 wsh_debug_sv.logmsg(l_module_name, 'No constraints, calling GroupDelivsIntoTrips');
2145 wsh_debug_sv.log(l_module_name, 'Number of delivs', l_delivery_id_tab.COUNT);
2146 END IF;
2147 --
2148 l_delivGrpRec.deliv_IDTab := l_delivery_id_tab;
2149 l_delivGrpRec.max_Delivs := p_action_prms.maxDelivs;
2150 --
2151 WSH_TRIP_CONSOLIDATION.GroupDelivsIntoTrips(
2152 p_delivGrpRec => l_delivGrpRec,
2153 x_delOutRec => x_delivery_out_rec,
2154 x_return_status => l_return_status);
2155 --
2156 IF l_debug_on THEN
2157 wsh_debug_sv.log(l_module_name,'Total number of trips',x_delivery_out_rec.result_id_tab.COUNT);
2158 END IF;
2159 --}
2160 END IF;
2161 --
2162 IF l_debug_on THEN
2163 wsh_debug_sv.log(l_module_name,'Return Status After GroupDelivsIntoTrips',l_return_status);
2164 END IF;
2165 --
2166 wsh_util_core.api_post_call(
2167 p_return_status => l_return_status,
2168 x_num_warnings => l_num_warnings,
2169 x_num_errors => l_num_errors);
2170 --
2171 ELSIF p_action_prms.action_code = 'OUTBOUND-DOCUMENT' THEN
2172 --
2173 IF p_rec_attr_tab.COUNT > 1 THEN
2174 FND_MESSAGE.SET_NAME('WSH','WSH_UI_MULTI_SELECTION');
2175 x_return_status := wsh_util_core.g_ret_sts_error;
2176 wsh_util_core.add_message(x_return_status,l_module_name);
2177 IF l_debug_on THEN
2178 wsh_debug_sv.log (l_module_name,'WSH_UI_MULTI_SELECTION');
2179 END IF;
2180 RAISE FND_API.G_EXC_ERROR;
2181 END IF;
2182 --
2183 WSH_TRANSACTIONS_UTIL.Send_Document(
2184 p_entity_id => l_delivery_id_tab(1),
2185 p_entity_type => 'DLVY',
2186 p_action_type => p_action_prms.action_type,
2187 p_document_type => p_action_prms.document_type ,
2188 p_organization_id => p_action_prms.organization_id,
2189 x_return_status => l_return_status);
2190 --
2191 IF l_debug_on THEN
2192 wsh_debug_sv.log(l_module_name,'Return Status After Calling Send_Document',l_return_status);
2193 END IF;
2194 --
2195 wsh_util_core.api_post_call(
2196 p_return_status => l_return_status,
2197 x_num_warnings => l_num_warnings,
2198 x_num_errors => l_num_errors);
2199 --
2200 ELSIF p_action_prms.action_code = 'SELECT-CARRIER' THEN
2201 --
2202 IF wsh_util_core.fte_is_installed = 'Y' THEN
2203 --
2204 IF p_rec_attr_tab.COUNT > 1 and p_action_prms.caller in('WSH_FSTRX', 'WSH_PUB') THEN
2205 FND_MESSAGE.SET_NAME('WSH','WSH_UI_MULTI_SELECTION');
2206 x_return_status := wsh_util_core.g_ret_sts_error;
2207 wsh_util_core.add_message(x_return_status,l_module_name);
2208 FND_MSG_PUB.ADD;
2209 IF l_debug_on THEN
2210 wsh_debug_sv.logmsg(l_module_name,'WSH_UI_MULTI_SELECTION');
2211 END IF;
2212 RAISE FND_API.G_EXC_ERROR;
2213 END IF;
2214
2215 --Bug 2657875
2216 -- l_form_flag := 'Y';
2217
2218 IF p_action_prms.form_flag = 'N' THEN
2219 l_form_flag := 'N';
2220 ELSE
2221 l_form_flag := 'Y';
2222 END IF;
2223
2224 IF p_action_prms.ignore_ineligible_dels = 'Y' and
2225 l_num_warnings > 0 and l_valid_ids_tab.count > 0 THEN
2226 l_delivery_id_tab.delete;
2227 FOR i in l_valid_ids_tab.FIRST .. l_valid_ids_tab.LAST LOOP
2228 l_delivery_id_tab(l_delivery_id_tab.count+1) := l_valid_ids_tab(i);
2229 END LOOP;
2230 END IF;
2231
2232 IF l_delivery_id_tab.count > 0 THEN
2233 WSH_NEW_DELIVERY_ACTIONS.process_carrier_selection(
2234 p_delivery_id_tab => l_delivery_id_tab,
2235 p_batch_id => NULL,
2236 p_form_flag => l_form_flag,
2237 p_caller => p_action_prms.caller,
2238 x_return_message => l_msg_data,
2239 x_return_status => l_return_status);
2240
2241 IF l_debug_on THEN
2242 wsh_debug_sv.log(l_module_name,'Return Status After Calling Process_Carrier_Selection',l_return_status);
2243 END IF;
2244 --
2245 ELSE
2246 l_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
2247 END IF;
2248
2249 wsh_util_core.api_post_call(
2250 p_return_status => l_return_status,
2251 x_num_warnings => l_num_warnings,
2252 x_num_errors => l_num_errors);
2253
2254
2255 --
2256 ELSE
2257 FND_MESSAGE.SET_NAME('FTE', 'FTE_NOT_INSTALLED');
2258 x_return_status := wsh_util_core.g_ret_sts_error;
2259 wsh_util_core.add_message(x_return_status,l_module_name);
2260 IF l_debug_on THEN
2261 wsh_debug_sv.logmsg(l_module_name,'FTE_NOT_INSTALLED');
2262 END IF;
2263 RAISE FND_API.G_EXC_ERROR;
2264 END IF;
2265 --
2266 ELSIF p_action_prms.action_code = 'DELETE' THEN
2267
2268 --OTM R12, prevent delete of delivery that's not empty and ignore for planning
2269 IF (l_gc3_is_installed = 'Y') THEN
2270
2271 i := l_delivery_id_tab.FIRST;
2272 l_counter := 1;
2273
2274 WHILE i IS NOT NULL LOOP
2275
2276 --allow delete for all 'NS' deliveries
2277 IF (NVL(p_rec_attr_tab(i).tms_interface_flag, WSH_NEW_DELIVERIES_PVT.C_TMS_NOT_TO_BE_SENT)
2278 = WSH_NEW_DELIVERIES_PVT.C_TMS_NOT_TO_BE_SENT) THEN
2279 --generate allowed list of deliveries to be deleted
2280 l_new_delivery_id_tab(l_counter) := l_delivery_id_tab(i);
2281 l_counter := l_counter + 1;
2282 ELSE
2283 --add a message for the delivery that cannot be deleted.
2284 l_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
2285
2286 IF l_debug_on THEN
2287 wsh_debug_sv.logmsg(l_module_name,'ERROR: delivery ' || l_delivery_id_tab(i) || ' cannot be deleted when it is not NS status');
2288 END IF;
2289
2290 FND_MESSAGE.SET_NAME('WSH','WSH_OTM_DEL_DELETE_ERROR');
2291 FND_MESSAGE.SET_TOKEN('DEL_NAME',WSH_NEW_DELIVERIES_PVT.get_name(l_delivery_id_tab(i)));
2292
2293 --we do not want the prefix error or warning for the message, so adding it with success
2294 --status will leave out the prefix. Reason being this is an error message but could be
2295 --displayed as a warning if not all deliveries fail.
2296 WSH_UTIL_CORE.add_message(WSH_UTIL_CORE.G_RET_STS_SUCCESS, l_module_name);
2297
2298 l_num_warnings := l_num_warnings + 1;
2299
2300 END IF;
2301 i := l_delivery_id_tab.NEXT(i);
2302 END LOOP;
2303
2304 IF (l_new_delivery_id_tab.COUNT = 0) THEN
2305 l_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
2306
2307 IF l_debug_on THEN
2308 WSH_DEBUG_SV.log(l_module_name,'0 deliveries to delete');
2309 END IF;
2310
2311 wsh_util_core.api_post_call(
2312 p_return_status => l_return_status,
2313 x_num_warnings => l_num_warnings,
2314 x_num_errors => l_num_errors);
2315
2316 END IF;
2317
2318 l_delivery_id_tab.DELETE;
2319 l_delivery_id_tab := l_new_delivery_id_tab;
2320 END IF;
2321 --END OTM R12
2322
2323 WSH_UTIL_CORE.Delete(
2324 p_type => 'DLVY',
2325 p_rows => l_delivery_id_tab,
2326 x_return_status => l_return_status);
2327 --
2328 IF l_debug_on THEN
2329 wsh_debug_sv.log(l_module_name,'Return Status After Calling Delete',l_return_status);
2330 END IF;
2331 --
2332 wsh_util_core.api_post_call(
2333 p_return_status => l_return_status,
2334 x_num_warnings => l_num_warnings,
2335 x_num_errors => l_num_errors);
2336 --
2337 -- Bug 4493263: This generate-pack-slip action is not needed as it is
2338 -- taken care a little down in the code line.
2339 /* ELSIF p_action_prms.action_code = 'GENERATE-PACK-SLIP' THEN
2340 --
2341 IF p_rec_attr_tab.COUNT > 1 THEN
2342 FND_MESSAGE.SET_NAME('WSH','WSH_UI_MULTI_SELECTION');
2343 x_return_status := wsh_util_core.g_ret_sts_error;
2344 wsh_util_core.add_message(x_return_status,l_module_name);
2345 IF l_debug_on THEN
2346 wsh_debug_sv.log (l_module_name,'WSH_UI_MULTI_SELECTION');
2347 END IF;
2348 RAISE FND_API.G_EXC_ERROR;
2349 END IF;
2350 --
2351 WSH_PACKING_SLIPS_PVT.Insert_Row(
2352 x_return_status => l_return_status,
2353 x_msg_count => l_msg_count,
2354 x_msg_data => l_msg_data,
2355 p_entity_name => 'WSH_NEW_DELIVERIES',
2356 p_entity_id => l_delivery_id_tab(1),
2357 p_application_id => 665 --FND_GLOBAL.RESP_APPL_ID
2358 p_location_id => l_pickup_loc_id,
2359 p_document_type => 'PACK_TYPE',
2360 p_document_sub_type => 'SALES_ORDER',
2361 p_reason_of_transport => p_action_prms.reason_of_transport,
2362 p_description => p_action_prms.description,
2363 x_document_number => x_delivery_out_rec.packing_slip_number);
2364 --
2365 IF l_debug_on THEN
2366 wsh_debug_sv.log(l_module_name,'Return Status After Calling Insert_Row',l_return_status);
2367 END IF;
2368 --
2369 wsh_util_core.api_post_call(
2370 p_return_status => l_return_status,
2371 x_num_warnings => l_num_warnings,
2372 x_num_errors => l_num_errors,
2373 p_msg_data => l_msg_data);
2374 --
2375 */--Bug 4493263
2376 ELSIF p_action_prms.action_code IN ('PICK-RELEASE-UI','RESOLVE-EXCEPTIONS-UI','TRANSACTION-HISTORY-UI','FREIGHT-COSTS-UI')
2377 AND p_action_prms.caller = 'WSH_FSTRX' THEN
2378 --
2379 IF p_rec_attr_tab.COUNT > 1 THEN
2380 FND_MESSAGE.SET_NAME('WSH','WSH_UI_MULTI_SELECTION');
2381 x_return_status := wsh_util_core.g_ret_sts_error;
2382 wsh_util_core.add_message(x_return_status,l_module_name);
2383 IF l_debug_on THEN
2384 wsh_debug_sv.log (l_module_name,'WSH_UI_MULTI_SELECTION');
2385 END IF;
2386 RAISE FND_API.G_EXC_ERROR;
2387 END IF;
2388 --
2389
2390 ELSIF p_action_prms.action_code = 'GENERATE-PACK-SLIP' THEN
2391 --
2392 --Bug 4493263
2393 i := p_rec_attr_tab.first;
2394 WHILE i IS NOT NULL LOOP
2395 --{
2396 -- initialize loop_num_warning, loop_num_error
2397 l_loop_num_warn := 0;
2398 l_loop_num_err := 0;
2399 l_dlvy_doc_seq_num := null;
2400
2401 OPEN c_dlvy_pack_slip_cur(p_rec_attr_tab(i).delivery_id);
2402 FETCH c_dlvy_pack_slip_cur INTO l_dlvy_doc_seq_num;
2403 CLOSE c_dlvy_pack_slip_cur;
2404
2405 IF l_debug_on THEN
2406 wsh_debug_sv.log(l_module_name, 'Delivery id', p_rec_attr_tab(i).delivery_id);
2407 wsh_debug_sv.log(l_module_name, 'Doc seq num', l_dlvy_doc_seq_num);
2408 END IF;
2409
2410 /* IF p_rec_attr_tab.COUNT > 1 THEN
2411 FND_MESSAGE.SET_NAME('WSH','WSH_UI_MULTI_SELECTION');
2412 x_return_status := wsh_util_core.g_ret_sts_error;
2413 wsh_util_core.add_message(x_return_status,l_module_name);
2414 IF l_debug_on THEN
2415 wsh_debug_sv.log (l_module_name,'WSH_UI_MULTI_SELECTION');
2416 END IF;
2417 RAISE FND_API.G_EXC_ERROR;
2418 END IF;*/
2419
2420 --
2421 IF ( l_dlvy_doc_seq_num IS NULL ) THEN
2422 --{
2423 WSH_PACKING_SLIPS_PVT.Insert_Row(
2424 x_return_status => l_return_status,
2425 x_msg_count => l_msg_count,
2426 x_msg_data => l_msg_data,
2427 p_entity_name => 'WSH_NEW_DELIVERIES',
2428 p_entity_id => p_rec_attr_tab(i).delivery_id,
2429 p_application_id => 665 /* FND_GLOBAL.RESP_APPL_ID */,
2430 --Bug 6625788 For all Iteration Same l_pickup_loc_id is passed, so sending pickup_location_id for corresponding Delivery
2431 -- p_location_id => l_pickup_loc_id,
2432 p_location_id => p_rec_attr_tab(i).INITIAL_PICKUP_LOCATION_ID,
2433 p_document_type => 'PACK_TYPE',
2434 p_document_sub_type => 'SALES_ORDER',
2435 --Bug 6625788 For all Iteration Same Reason of Transport and Description is passed, so sending corresponding info for Each Delivery
2436 --p_reason_of_transport => p_action_prms.reason_of_transport,
2437 --p_description => p_action_prms.description,
2438 p_reason_of_transport => p_rec_attr_tab(i).REASON_OF_TRANSPORT,
2439 p_description => p_rec_attr_tab(i).DESCRIPTION,
2440 x_document_number => x_delivery_out_rec.packing_slip_number);
2441 --
2442 IF l_debug_on THEN
2443 wsh_debug_sv.log(l_module_name,'Return Status After Calling Insert_Row',l_return_status);
2444 END IF;
2445 --
2446 wsh_util_core.api_post_call(
2447 p_return_status => l_return_status,
2448 x_num_warnings => l_loop_num_warn,
2449 x_num_errors => l_loop_num_err,
2450 p_msg_data => l_msg_data);
2451
2452 --}
2453 END IF;
2454
2455 i := p_rec_attr_tab.next(i);
2456 l_num_warnings := l_num_warnings + l_loop_num_warn;
2457 l_num_errors := l_num_errors + l_loop_num_err;
2458 --
2459 --}
2460 END LOOP;
2461
2462 --
2463 IF l_num_errors > 0 THEN
2464 IF l_num_errors = p_rec_attr_tab.count THEN
2465 RAISE FND_API.G_EXC_ERROR;
2466 ELSE
2467 RAISE WSH_UTIL_CORE.G_EXC_WARNING;
2468 END IF;
2469 ELSIF l_num_warnings > 0 THEN
2470 RAISE WSH_UTIL_CORE.G_EXC_WARNING;
2471 END IF;
2472 --
2473
2474 ELSIF p_action_prms.action_code IN ('PICK-RELEASE-UI','RESOLVE-EXCEPTIONS-UI','TRANSACTION-HISTORY-UI','FREIGHT-COSTS-UI')
2475 AND p_action_prms.caller = 'WSH_FSTRX' THEN
2476 --
2477 IF p_rec_attr_tab.COUNT > 1 THEN
2478 FND_MESSAGE.SET_NAME('WSH','WSH_UI_MULTI_SELECTION');
2479 x_return_status := wsh_util_core.g_ret_sts_error;
2480 wsh_util_core.add_message(x_return_status,l_module_name);
2481 IF l_debug_on THEN
2482 wsh_debug_sv.log (l_module_name,'WSH_UI_MULTI_SELECTION');
2483 END IF;
2484 RAISE FND_API.G_EXC_ERROR;
2485 END IF;
2486 --
2487
2488 ELSIF p_action_prms.action_code = 'GET-FREIGHT-COSTS' THEN
2489 --
2490
2491 IF wsh_util_core.fte_is_installed = 'Y' THEN
2492 --
2493 IF p_rec_attr_tab.COUNT > 1 and p_action_prms.caller in('WSH_FSTRX', 'WSH_PUB') THEN
2494 FND_MESSAGE.SET_NAME('WSH','WSH_UI_MULTI_SELECTION');
2495 x_return_status := wsh_util_core.g_ret_sts_error;
2496 wsh_util_core.add_message(x_return_status,l_module_name);
2497 FND_MSG_PUB.ADD;
2498 IF l_debug_on THEN
2499 wsh_debug_sv.logmsg(l_module_name,'WSH_UI_MULTI_SELECTION');
2500 END IF;
2501 RAISE FND_API.G_EXC_ERROR;
2502 END IF;
2503
2504 IF p_action_prms.ignore_ineligible_dels = 'Y' and
2505 l_num_warnings > 0 and l_valid_ids_tab.count > 0 THEN
2506 l_delivery_id_tab.delete;
2507 FOR i in l_valid_ids_tab.FIRST .. l_valid_ids_tab.LAST LOOP
2508 l_delivery_id_tab(l_delivery_id_tab.count+1) := l_valid_ids_tab(i);
2509 END LOOP;
2510 END IF;
2511
2512
2513 l_in_param_rec.delivery_id_list := l_delivery_id_tab;
2514 l_in_param_rec.action := 'RATE';
2515 IF p_action_prms.caller = 'WSH_DLMG' THEN -- R12 Select Carrier
2516 l_in_param_rec.seq_tender_flag := 'Y';
2517 END IF;
2518
2519 WSH_FTE_INTEGRATION.Rate_Delivery(
2520 p_api_version => 1.0,
2521 p_init_msg_list => FND_API.G_FALSE,
2522 p_commit => p_commit,
2523 p_in_param_rec => l_in_param_rec,
2524 x_out_param_rec => l_out_param_rec,
2525 x_return_status => l_return_status,
2526 x_msg_count => l_msg_count,
2527 x_msg_data => l_msg_data);
2528 --
2529 IF l_debug_on THEN
2530 wsh_debug_sv.log(l_module_name,'Return Status from WSH_FTE_INTEGRATION.Rate_Delivery' ,l_return_status);
2531 END IF;
2532
2533
2534 IF p_action_prms.caller = 'WSH_DLMG' AND
2535 l_return_status in (WSH_UTIL_CORE.G_RET_STS_ERROR, WSH_UTIL_CORE.G_RET_STS_WARNING ) THEN
2536 -- csun deliveryMerge , log exception
2537
2538 i := l_out_param_rec.failed_delivery_id_list.FIRST;
2539 WHILE i is not NULL LOOP
2540 FND_MESSAGE.SET_NAME('WSH', 'WSH_RATE_DELIVERY_FAIL');
2541 FND_MESSAGE.SET_TOKEN('DELIVERY_ID' , to_char(l_out_param_rec.failed_delivery_id_list(i)));
2542 l_exception_message := FND_MESSAGE.Get;
2543 l_exception_id := NULL;
2544 OPEN c_get_delivery_org(l_out_param_rec.failed_delivery_id_list(i));
2545 FETCH c_get_delivery_org INTO l_initial_pickup_location_id;
2546 IF c_get_delivery_org%NOTFOUND THEN
2547 CLOSE c_get_delivery_org;
2548 raise FND_API.G_EXC_UNEXPECTED_ERROR;
2549 END IF;
2550 CLOSE c_get_delivery_org;
2551 wsh_xc_util.log_exception(
2552 p_api_version => 1.0,
2553 x_return_status => l_return_status,
2554 x_msg_count => l_msg_count,
2555 x_msg_data => l_msg_data,
2556 x_exception_id => l_exception_id,
2557 p_exception_location_id => l_initial_pickup_location_id,
2558 p_logged_at_location_id => l_initial_pickup_location_id,
2559 p_logging_entity => 'SHIPPER',
2560 p_logging_entity_id => FND_GLOBAL.USER_ID,
2561 p_exception_name => 'WSH_RATE_DELIVERY_FAIL',
2562 p_message => substrb(l_exception_message,1,2000),
2563 p_delivery_id => l_out_param_rec.failed_delivery_id_list(i));
2564 i := l_out_param_rec.failed_delivery_id_list.next(i);
2565 END LOOP;
2566
2567 l_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
2568
2569 END IF;
2570
2571 wsh_util_core.api_post_call(
2572 p_return_status => l_return_status,
2573 x_num_warnings => l_num_warnings,
2574 x_num_errors => l_num_errors,
2575 p_msg_data => l_msg_data);
2576
2577 ELSE
2578 -- FTE is not installed
2579 FND_MESSAGE.SET_NAME('FTE', 'FTE_NOT_INSTALLED');
2580 x_return_status := wsh_util_core.g_ret_sts_error;
2581 wsh_util_core.add_message(x_return_status,l_module_name);
2582 IF l_debug_on THEN
2583 wsh_debug_sv.logmsg(l_module_name,'FTE_NOT_INSTALLED');
2584 END IF;
2585 RAISE FND_API.G_EXC_ERROR;
2586 END IF;
2587
2588
2589
2590 ELSIF p_action_prms.action_code = 'CANCEL-SHIP-METHOD' THEN
2591
2592 WSH_FTE_INTEGRATION.Cancel_Service (
2593 p_delivery_list => l_delivery_id_tab,
2594 p_action => 'CANCEL',
2595 p_commit => p_commit,
2596 x_return_status => l_return_status,
2597 x_msg_count => l_msg_count,
2598 x_msg_data => l_msg_data );
2599
2600
2601 IF l_debug_on THEN
2602 wsh_debug_sv.log(l_module_name,'Return Status After Cancel Ship Method',l_return_status);
2603 END IF;
2604
2605 wsh_util_core.api_post_call(
2606 p_return_status => l_return_status,
2607 x_num_warnings => l_num_warnings,
2608 x_num_errors => l_num_errors,
2609 p_msg_data => l_msg_data);
2610
2611 --deliveryMerge
2612 ELSIF p_action_prms.action_code = 'ADJUST-PLANNED-FLAG' THEN
2613
2614 WSH_NEW_DELIVERY_ACTIONS.Adjust_Planned_Flag(
2615 p_delivery_ids => l_delivery_id_tab,
2616 p_caller => p_action_prms.caller,
2617 p_force_appending_limit => 'N',
2618 p_call_lcss => 'Y',
2619 p_event => p_action_prms.event,
2620 x_return_status => l_return_status);
2621
2622 IF l_debug_on THEN
2623 wsh_debug_sv.log(l_module_name,'Return Status from WSH_NEW_DELIVERY_ACTIONS.Adjust_Planned_Flag',l_return_status);
2624 END IF;
2625
2626 wsh_util_core.api_post_call(
2627 p_return_status => l_return_status,
2628 x_num_warnings => l_num_warnings,
2629 x_num_errors => l_num_errors,
2630 p_msg_data => l_msg_data);
2631
2632 ELSIF p_action_prms.action_code = 'PRINT-PACK-SLIP' THEN
2633 --{ begin print pack slip
2634
2635 i := p_rec_attr_tab.first;
2636 WHILE i IS NOT NULL LOOP
2637 --{
2638 -- initialize loop_num_warning, loop_num_error
2639 l_loop_num_warn := 0;
2640 l_loop_num_err := 0;
2641
2642 OPEN c_dlvy_pack_slip_cur(p_rec_attr_tab(i).delivery_id);
2643 FETCH c_dlvy_pack_slip_cur INTO l_dlvy_doc_seq_num;
2644 CLOSE c_dlvy_pack_slip_cur;
2645
2646 if l_debug_on then
2647 wsh_debug_sv.log(l_module_name, 'Doc seq num', l_dlvy_doc_seq_num);
2648 end if;
2649 IF l_dlvy_doc_seq_num IS NULL THEN
2650 --{
2651 --Pack slip does not exist. Call Group API for action Generate Pack Slip
2652 l_action_prms := p_action_prms;
2653 l_action_prms.action_code := 'GENERATE-PACK-SLIP';
2654 l_rec_attr_tab.delete;
2655 l_rec_attr_tab(1) := p_rec_attr_tab(i);
2656
2657 wsh_deliveries_grp.delivery_action(
2658 p_api_version_number => p_api_version_number,
2659 p_init_msg_list => FND_API.G_FALSE,
2660 p_commit => FND_API.G_FALSE,
2661 p_action_prms => l_action_prms,
2662 p_rec_attr_tab => l_rec_attr_tab,
2663 x_delivery_out_rec => x_delivery_out_rec,
2664 x_defaults_rec => x_defaults_rec,
2665 x_return_status => l_return_status,
2666 x_msg_count => l_msg_count,
2667 x_msg_data => l_msg_data);
2668
2669 -- Set raise error flag to false ,continue with next delivery in the loop
2670 -- after end of loop, check for l_num_errors
2671 wsh_util_core.api_post_call(
2672 p_return_status => l_return_status,
2673 x_num_warnings => l_loop_num_warn,
2674 x_num_errors => l_loop_num_err,
2675 p_msg_data => l_msg_data,
2676 p_raise_error_flag => FALSE);
2677
2678 --}
2679 END IF;
2680 --Bug 4493263
2681 l_num_warnings := l_num_warnings + l_loop_num_warn;
2682 l_num_errors := l_num_errors + l_loop_num_err;
2683
2684 IF ( l_loop_num_err = 0 ) THEN
2685 l_doc_delivery_id_tab(l_doc_delivery_id_tab.COUNT+1) := p_rec_attr_tab(i).delivery_id;
2686 l_doc_valid_ids_tab(l_doc_valid_ids_tab.COUNT+1) := i;
2687 END IF;
2688
2689 i := p_rec_attr_tab.next(i);
2690 --}
2691 END LOOP;
2692
2693 -- Bug 4493263
2694 -- Records in STF are refreshed based on this x_delivery_out_rec.valid_ids_tab count if
2695 -- multi-records are selected in STF while calling this API with action 'PRINT-PACK-SLIP'
2696 -- Prior to this fix, x_delivery_out_rec.valid_ids_tab will always have 1 record, if
2697 -- records selected from STF doesn't have packing slip number.
2698 x_delivery_out_rec.valid_ids_tab := l_doc_valid_ids_tab;
2699
2700 OPEN c_pack_slip_doc_set;
2701 FETCH c_pack_slip_doc_set into l_doc_set_id;
2702 CLOSE c_pack_slip_doc_set;
2703
2704 IF ( l_doc_set_id IS NOT NULL AND
2705 l_doc_delivery_id_tab.COUNT > 0 )
2706 THEN
2707 -- initialize loop_num_warning, loop_num_error
2708 l_loop_num_warn := 0;
2709 l_loop_num_err := 0;
2710
2711 WSH_DOCUMENT_SETS.Print_Document_Sets(
2712 p_report_set_id => l_doc_set_id,
2713 p_organization_id => p_action_prms.organization_id,
2714 p_trip_ids => l_dummy_id_tab,
2715 p_stop_ids => l_dummy_id_tab,
2716 p_delivery_ids => l_doc_delivery_id_tab,
2717 p_document_param_info => l_dummy_doc_set_params,
2718 x_return_status => l_return_status);
2719
2720 wsh_util_core.api_post_call(
2721 p_return_status => l_return_status,
2722 x_num_warnings => l_loop_num_warn,
2723 x_num_errors => l_loop_num_err,
2724 p_msg_data => l_msg_data,
2725 p_raise_error_flag => FALSE );
2726
2727
2728 l_num_warnings := l_num_warnings + l_loop_num_warn;
2729 l_num_errors := l_num_errors + l_loop_num_err;
2730 END IF;
2731
2732 IF l_num_errors > 0 THEN
2733 IF l_num_errors = p_rec_attr_tab.count THEN
2734 RAISE FND_API.G_EXC_ERROR;
2735 ELSE
2736 RAISE WSH_UTIL_CORE.G_EXC_WARNING;
2737 END IF;
2738 ELSIF l_num_warnings > 0 THEN
2739 RAISE WSH_UTIL_CORE.G_EXC_WARNING;
2740 END IF;
2741
2742 --} end print pack slip
2743 -- Bug 4493263 : added action 'GENERATE-BOL'
2744 ELSIF p_action_prms.action_code in ( 'GENERATE-BOL', 'PRINT-BOL' ) THEN
2745 --{ begin print bol
2746
2747 i := p_rec_attr_tab.first;
2748
2749 <<dlvy_loop>>
2750 WHILE i IS NOT NULL
2751 LOOP
2752 --{ loop for delivery
2753 l_child_deliveries_tab.delete;
2754 OPEN c_child_deliveries(p_rec_attr_tab(i).delivery_id);
2755 FETCH c_child_deliveries BULK COLLECT INTO l_child_deliveries_tab;
2756 CLOSE c_child_deliveries;
2757
2758 IF l_child_deliveries_tab.count = 0 THEN
2759 l_child_deliveries_tab(1) := p_rec_attr_tab(i).delivery_id;
2760 END IF;
2761
2762 -- { child deliveries loop
2763 FOR child in 1 .. l_child_deliveries_tab.count LOOP
2764 <<leg_loop>>
2765 FOR dlvy_leg_rec IN c_dlvy_leg_cur(l_child_deliveries_tab(child))
2766 LOOP
2767 --{ loop for dleg
2768 -- initialize loop_num_warning, loop_num_error
2769 -- Need to address this later... We have two loops, one for delivery, another for delivery legs
2770 -- How should warnings, errors be tracked for cases where a single delivery has many legs
2771 l_loop_num_warn := 0;
2772 l_loop_num_err := 0;
2773
2774 -- Bug 3311273
2775 -- Flag to indicate there is atleast one delivery leg for the delivery
2776 l_dleg_found := 'Y';
2777 -- Validate if ship method exists or not
2778 IF dlvy_leg_rec.ship_method IS NULL THEN
2779
2780 --l_num_errors := l_num_errors + l_loop_num_err;
2781 l_num_errors := l_num_errors + 1;
2782 FND_MESSAGE.SET_NAME('WSH','WSH_BOL_NULL_SHIP_METHOD_ERROR');
2783 FND_MESSAGE.SET_TOKEN('TRIP_NAME',wsh_trips_pvt.get_name(dlvy_leg_rec.trip_id));
2784 l_return_status := wsh_util_core.g_ret_sts_error;
2785 wsh_util_core.add_message(l_return_status,l_module_name);
2786 IF l_debug_on THEN
2787 wsh_debug_sv.log (l_module_name,'No Ship Method for the trip'||dlvy_leg_rec.trip_id);
2788 END IF;
2789 exit leg_loop;
2790 END IF;
2791 -- End of Bug 3311273
2792
2793 IF l_debug_on THEN
2794 wsh_debug_sv.log(l_module_name, 'Processing delivery leg', dlvy_leg_rec.delivery_leg_id);
2795 END IF;
2796
2797 l_dleg_tab.delete;
2798 wsh_delivery_legs_pvt.populate_record(
2799 p_delivery_leg_id => NVL(dlvy_leg_rec.parent_delivery_leg_id, dlvy_leg_rec.delivery_leg_id),
2800 x_delivery_leg_info => l_dleg_tab(1),
2801 x_return_status => l_return_status);
2802
2803 wsh_util_core.api_post_call(
2804 p_return_status => l_return_status,
2805 x_num_warnings => l_loop_num_warn,
2806 x_num_errors => l_loop_num_err,
2807 p_raise_error_flag => FALSE);
2808
2809 -- if there is an error for current delivery leg,
2810 -- need to skip this and proceed with next leg
2811 -- l_num_error count will be checked towards the end
2812 if l_return_status in (wsh_util_core.g_ret_sts_error,
2813 wsh_util_core.g_ret_sts_unexp_error) then
2814 l_num_warnings := l_num_warnings + l_loop_num_warn;
2815 l_num_errors := l_num_errors + l_loop_num_err;
2816 exit leg_loop;
2817 end if;
2818
2819 l_dleg_prms.caller := p_action_prms.caller;
2820 l_dleg_prms.action_code := p_action_prms.action_code;
2821 l_dleg_prms.phase := p_action_prms.phase;
2822 l_dleg_prms.p_Pick_Up_Location_Id := dlvy_leg_rec.pick_Up_Location_Id;
2823 l_dleg_prms.p_Ship_Method := dlvy_leg_rec.Ship_Method;
2824 l_dleg_prms.p_Drop_Off_Location_Id := dlvy_leg_rec.Drop_Off_Location_Id;
2825 l_dleg_prms.p_Carrier_Id := dlvy_leg_rec.Carrier_Id;
2826
2827 l_dleg_action_out_rec.x_trip_id := dlvy_leg_rec.trip_id;
2828 l_dleg_action_out_rec.x_trip_name := dlvy_leg_rec.trip_name;
2829 l_dleg_action_out_rec.x_delivery_id := l_child_deliveries_tab(child);
2830 l_dleg_action_out_rec.result_id_tab.delete;
2831
2832 wsh_delivery_legs_grp.Delivery_Leg_Action(
2833 p_api_version_number => 1.0,
2834 p_init_msg_list => FND_API.G_FALSE,
2835 p_commit => FND_API.G_FALSE,
2836 p_rec_attr_tab => l_dleg_tab,
2837 p_action_prms => l_dleg_prms,
2838 x_action_out_rec => l_dleg_action_out_rec,
2839 x_return_status => l_return_status,
2840 x_msg_count => l_msg_count,
2841 x_msg_data => l_msg_data);
2842
2843
2844 IF l_dleg_action_out_rec.result_id_tab.count > 0 THEN
2845 l_request_id := l_dleg_action_out_rec.result_id_tab(l_dleg_action_out_rec.result_id_tab.first);
2846 x_delivery_out_rec.result_id_tab(x_delivery_out_rec.result_id_tab.count +1) := l_request_id;
2847 END IF;
2848
2849 -- increase the counter if successful
2850 IF l_request_id > 0 THEN --{
2851
2852 l_submitted_docs := l_submitted_docs + 1;
2853
2854 IF l_submitted_docs = 1 THEN --{
2855 l_req_id_str := to_char(l_request_id);
2856 ELSE
2857 l_req_id_str := l_req_id_str || ', ' || to_char(l_request_id);
2858 END IF; --}
2859
2860 END IF;
2861
2862
2863 -- Set raise error flag to FALSE so that the loop can continue
2864 -- with other legs or deliveries
2865 -- After end of loop, checks for l_num_warning, l_num_errors should set the final return_status
2866
2867 wsh_util_core.api_post_call(
2868 p_return_status => l_return_status,
2869 x_num_warnings => l_loop_num_warn,
2870 x_num_errors => l_loop_num_err,
2871 p_msg_data => l_msg_data,
2872 p_raise_error_flag => FALSE);
2873
2874 l_num_warnings := l_num_warnings + l_loop_num_warn;
2875 l_num_errors := l_num_errors + l_loop_num_err;
2876 --} loop for dleg
2877 END LOOP leg_loop;
2878
2879 END LOOP; --} child deliveries loop
2880
2881 -- Bug 3311273
2882 -- If no leg exist for this Delivery,there should be a ERROR/WARNING message here
2883 -- Indicates there is no associated trip for the delivery
2884 IF l_dleg_found = 'N' THEN
2885 FND_MESSAGE.SET_NAME('WSH','WSH_BOL_NO_TRIP_FOR_DLVY');
2886 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(p_rec_attr_tab(i).delivery_id));
2887 l_num_errors := l_num_errors + 1;
2888 l_return_status := wsh_util_core.g_ret_sts_error;
2889 wsh_util_core.add_message(l_return_status,l_module_name);
2890 IF l_debug_on THEN
2891 wsh_debug_sv.log (l_module_name,'WSH_NO_DELIVERY_LEG_FOUND');
2892 END IF;
2893 END IF;
2894 -- End of Bug 3311273
2895
2896 i := p_rec_attr_tab.next(i);
2897 --} loop for delivery
2898 END LOOP dlvy_loop;
2899
2900 IF l_debug_on THEN
2901 wsh_debug_sv.log(l_module_name, 'result id tab count', x_delivery_out_rec.result_id_tab.count);
2902 END IF;
2903
2904 IF l_submitted_docs > 0 THEN
2905 fnd_message.set_name('WSH', 'WSH_PRINT_BOL_REQUEST');
2906 fnd_message.set_token('REQ_IDS', l_req_id_str);
2907 wsh_util_core.add_message(wsh_util_core.g_ret_sts_success);
2908 END IF;
2909
2910 IF l_num_errors > 0 THEN
2911 -- 3311273
2912 FND_MESSAGE.SET_NAME('WSH','WSH_BOL_SUMMARY_MESG');
2913 FND_MESSAGE.SET_TOKEN('ERROR_COUNT',l_num_errors );
2914 FND_MESSAGE.SET_TOKEN('SUCC_COUNT',p_rec_attr_tab.count - l_num_errors );
2915 l_return_status := wsh_util_core.g_ret_sts_error;
2916 wsh_util_core.add_message(l_return_status,l_module_name);
2917 IF l_debug_on THEN
2918 wsh_debug_sv.log (l_module_name,'Error processing deliveries-'||l_num_errors);
2919 END IF;
2920 -- End of 3311273
2921 IF l_num_errors = p_rec_attr_tab.count THEN
2922 RAISE FND_API.G_EXC_ERROR;
2923 ELSE
2924 RAISE WSH_UTIL_CORE.G_EXC_WARNING;
2925 END IF;
2926 ELSIF l_num_warnings > 0 THEN
2927 RAISE WSH_UTIL_CORE.G_EXC_WARNING;
2928 END IF;
2929
2930 --} end print bol
2931 ELSE
2932 --
2933 FND_MESSAGE.SET_NAME('WSH','WSH_INVALID_ACTION_CODE');
2934 FND_MESSAGE.SET_TOKEN('ACT_CODE',p_action_prms.action_code );
2935 x_return_status := wsh_util_core.g_ret_sts_error;
2936 wsh_util_core.add_message(x_return_status,l_module_name);
2937 IF l_debug_on THEN
2938 wsh_debug_sv.log (l_module_name,'WSH_INVALID_ACTION_CODE');
2939 END IF;
2940 RAISE FND_API.G_EXC_ERROR;
2941 --
2942 END IF;
2943 --
2944 IF l_debug_on THEN
2945 wsh_debug_sv.log(l_module_name, 'l_num_errors', l_num_errors);
2946 wsh_debug_sv.log(l_module_name, 'l_num_warnings', l_num_warnings);
2947 END IF;
2948
2949
2950 -- K LPN CONV. rv
2951 --
2952 IF WSH_WMS_LPN_GRP.G_CALLBACK_REQUIRED = 'Y'
2953 THEN
2954 --{
2955
2956 IF l_debug_on THEN
2957 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_LPN_SYNC_COMM_PKG.SYNC_LPNS_TO_WMS',WSH_DEBUG_SV.C_PROC_LEVEL);
2958 END IF;
2959 --
2960 WSH_LPN_SYNC_COMM_PKG.SYNC_LPNS_TO_WMS
2961 (
2962 p_in_rec => l_lpn_in_sync_comm_rec,
2963 x_return_status => l_return_status,
2964 x_out_rec => l_lpn_out_sync_comm_rec
2965 );
2966 --
2967 IF l_debug_on THEN
2968 WSH_DEBUG_SV.log(l_module_name, 'Return status after calling WSH_LPN_SYNC_COMM_PKG.SYNC_LPNS_TO_WMS', l_return_status);
2969 END IF;
2970 --
2971 WSH_UTIL_CORE.API_POST_CALL
2972 (
2973 p_return_status => l_return_status,
2974 x_num_warnings => l_num_warnings,
2975 x_num_errors => l_num_errors
2976 );
2977 --}
2978 END IF;
2979 -- K LPN CONV. rv
2980 --
2981
2982 --Call to DCP
2983 --If profile is turned on.
2984 BEGIN
2985 --{
2986 IF l_debug_on THEN
2987 wsh_debug_sv.log(l_module_name, 'l_check_dcp', l_check_dcp);
2988 wsh_debug_sv.log(l_module_name, 'g_call_dcp_check', WSH_DCP_PVT.G_CALL_DCP_CHECK);
2989 END IF;
2990
2991 IF NVL(l_check_dcp, -99) IN (1,2)
2992 AND NVL(WSH_DCP_PVT.G_CALL_DCP_CHECK, 'Y') = 'Y'
2993 THEN
2994 --{
2995 IF p_action_prms.action_code IN ('AUTO-PACK', 'CONFIRM') THEN
2996
2997 IF l_debug_on THEN
2998 WSH_DEBUG_SV.LOGMSG(L_MODULE_NAME, 'CALLING DCP ');
2999 END IF;
3000
3001 wsh_dcp_pvt.check_delivery(
3002 p_action_code => p_action_prms.action_code,
3003 p_dlvy_table => p_rec_attr_tab);
3004 END IF;
3005 --}
3006 END IF;
3007
3008 EXCEPTION
3009 WHEN wsh_dcp_pvt.data_inconsistency_exception THEN
3010 if NOT l_debug_on OR l_debug_on is null then
3011 l_debug_on := wsh_debug_sv.is_debug_enabled;
3012 end if;
3013 IF l_debug_on THEN
3014 WSH_DEBUG_SV.logmsg(l_module_name,'data_inconsistency_exception');
3015 END IF;
3016 ROLLBACK TO DELIVERY_ACTION_GRP;
3017 GOTO api_start;
3018 WHEN OTHERS THEN
3019 IF l_debug_on THEN
3020 WSH_DEBUG_SV.logmsg(l_module_name,'When Others');
3021 END IF;
3022 null;
3023 --}
3024 END;
3025
3026
3027 IF l_debug_on THEN
3028 WSH_DEBUG_SV.log(l_module_name, 'Return status ', l_return_status);
3029 WSH_DEBUG_SV.log(l_module_name, 'l_num_warnings', l_num_warnings);
3030 WSH_DEBUG_SV.log(l_module_name, 'l_num_warnings', l_num_warnings);
3031 END IF;
3032
3033
3034 IF l_num_warnings > 0 THEN
3035 IF l_debug_on THEN
3036 WSH_DEBUG_SV.log(l_module_name, 'l_num_warnings', l_num_warnings);
3037 END IF;
3038 RAISE WSH_UTIL_CORE.G_EXC_WARNING;
3039 ELSE
3040 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
3041 END IF;
3042 --
3043 IF l_debug_on THEN
3044 WSH_DEBUG_SV.log(l_module_name, 'Return status ', l_return_status);
3045 WSH_DEBUG_SV.log(l_module_name, 'l_num_warnings', l_num_warnings);
3046 WSH_DEBUG_SV.log(l_module_name, 'l_num_warnings', l_num_warnings);
3047 END IF;
3048
3049 -- Standard check of p_commit.
3050 IF FND_API.To_Boolean( p_commit ) THEN
3051
3052 --bug 4070732
3053 IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
3054 --{
3055
3056 l_reset_flags := FALSE;
3057
3058 IF l_debug_on THEN
3059 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Process_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
3060 END IF;
3061
3062 WSH_UTIL_CORE.Process_stops_for_load_tender(p_reset_flags => l_reset_flags,
3063 x_return_status => l_return_status);
3064
3065 IF l_debug_on THEN
3066 WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
3067 END IF;
3068
3069 IF l_return_status = WSH_UTIL_CORE.G_RET_STS_ERROR THEN
3070 RAISE FND_API.G_EXC_ERROR;
3071 ELSIF l_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR THEN
3072 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3073 ELSIF l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING THEN
3074 RAISE WSH_UTIL_CORE.G_EXC_WARNING;
3075 END IF;
3076
3077 --}
3078 END IF;
3079 --bug 4070732
3080
3081 COMMIT WORK;
3082 END IF;
3083 --
3084 --bug 4070732
3085 IF upper(WSH_UTIL_CORE.G_START_OF_SESSION_API) = upper(l_api_session_name) THEN
3086 --{
3087 IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
3088 --{
3089
3090 IF FND_API.To_Boolean( p_commit ) THEN
3091 IF l_debug_on THEN
3092 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.reset_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
3093 END IF;
3094
3095 WSH_UTIL_CORE.reset_stops_for_load_tender(p_reset_flags => TRUE,
3096 x_return_status => l_return_status);
3097
3098 ELSE
3099
3100
3101 IF l_debug_on THEN
3102 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Process_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
3103 END IF;
3104
3105 WSH_UTIL_CORE.Process_stops_for_load_tender(p_reset_flags => TRUE,
3106 x_return_status => l_return_status);
3107 END IF;
3108
3109 IF l_debug_on THEN
3110 WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
3111 END IF;
3112
3113 IF l_return_status IN (WSH_UTIL_CORE.G_RET_STS_ERROR,
3114 WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR,
3115 WSH_UTIL_CORE.G_RET_STS_WARNING) THEN
3116 x_return_status := l_return_status;
3117 END IF;
3118
3119 --}
3120 END IF;
3121 --}
3122 END IF;
3123
3124 --bug 4070732
3125 --
3126 IF l_debug_on THEN
3127 WSH_DEBUG_SV.log(l_module_name, 'before calling FND_MSG_PUB.Count_And_Get', l_num_warnings);
3128 END IF;
3129 FND_MSG_PUB.Count_And_Get
3130 (
3131 p_count => x_msg_count,
3132 p_data => x_msg_data,
3133 p_encoded => FND_API.G_FALSE
3134 );
3135 --
3136 IF l_debug_on THEN
3137 WSH_DEBUG_SV.log(l_module_name, 'FND_MSG_PUB.Count_And_Get, count: ', x_msg_count);
3138 END IF;
3139 IF l_debug_on THEN
3140 WSH_DEBUG_SV.pop(l_module_name);
3141 END IF;
3142 --
3143 EXCEPTION
3144 WHEN FND_API.G_EXC_ERROR THEN
3145 -- ROLLBACK TO DELIVERY_ACTION_GRP;
3146 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
3147
3148 --OTM R12
3149 IF (c_get_delivery_id%ISOPEN) THEN
3150 CLOSE c_get_delivery_id;
3151 END IF;
3152 --
3153
3154 --
3155 -- K LPN CONV. rv
3156 --
3157 IF WSH_WMS_LPN_GRP.G_CALLBACK_REQUIRED = 'Y'
3158 THEN
3159 --{
3160
3161 IF l_debug_on THEN
3162 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_LPN_SYNC_COMM_PKG.SYNC_LPNS_TO_WMS',WSH_DEBUG_SV.C_PROC_LEVEL);
3163 END IF;
3164 --
3165 WSH_LPN_SYNC_COMM_PKG.SYNC_LPNS_TO_WMS
3166 (
3167 p_in_rec => l_lpn_in_sync_comm_rec,
3168 x_return_status => l_return_status,
3169 x_out_rec => l_lpn_out_sync_comm_rec
3170 );
3171 --
3172 IF l_debug_on THEN
3173 WSH_DEBUG_SV.log(l_module_name, 'Return status after calling WSH_LPN_SYNC_COMM_PKG.SYNC_LPNS_TO_WMS', l_return_status);
3174 END IF;
3175 --
3176 IF (l_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR) THEN
3177 x_return_status := l_return_status;
3178 END IF;
3179 --}
3180 END IF;
3181 -- K LPN CONV. rv
3182 --
3183
3184 --
3185 -- Start code for Bugfix 4070732
3186 --
3187 IF upper(WSH_UTIL_CORE.G_START_OF_SESSION_API) = upper(l_api_session_name) THEN
3188 --{
3189 IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
3190 --{
3191 IF l_debug_on THEN
3192 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Reset_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
3193 END IF;
3194
3195 WSH_UTIL_CORE.Reset_stops_for_load_tender(p_reset_flags => TRUE,
3196 x_return_status => l_return_status);
3197
3198
3199 IF l_debug_on THEN
3200 WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
3201 END IF;
3202
3203 IF (l_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR) THEN
3204 x_return_status := l_return_status;
3205 END IF;
3206 --}
3207 END IF;
3208 --}
3209 END IF;
3210 --
3211 -- End of Code Bugfix 4070732
3212 --
3213 --
3214 FND_MSG_PUB.Count_And_Get
3215 (
3216 p_count => x_msg_count,
3217 p_data => x_msg_data,
3218 p_encoded => FND_API.G_FALSE
3219 );
3220 IF l_debug_on THEN
3221 WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_ERROR exception has occured ',WSH_DEBUG_SV.C_EXCEP_LEVEL);
3222 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_ERROR');
3223 END IF;
3224 --
3225 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3226 -- ROLLBACK TO DELIVERY_ACTION_GRP;
3227 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR ;
3228
3229 --OTM R12
3230 IF (c_get_delivery_id%ISOPEN) THEN
3231 CLOSE c_get_delivery_id;
3232 END IF;
3233 --
3234
3235 --
3236 -- K LPN CONV. rv
3237 --
3238 IF WSH_WMS_LPN_GRP.G_CALLBACK_REQUIRED = 'Y'
3239 THEN
3240 --{
3241
3242 IF l_debug_on THEN
3243 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_LPN_SYNC_COMM_PKG.SYNC_LPNS_TO_WMS',WSH_DEBUG_SV.C_PROC_LEVEL);
3244 END IF;
3245 --
3246 WSH_LPN_SYNC_COMM_PKG.SYNC_LPNS_TO_WMS
3247 (
3248 p_in_rec => l_lpn_in_sync_comm_rec,
3249 x_return_status => l_return_status,
3250 x_out_rec => l_lpn_out_sync_comm_rec
3251 );
3252 --
3253 IF l_debug_on THEN
3254 WSH_DEBUG_SV.log(l_module_name, 'Return status after calling WSH_LPN_SYNC_COMM_PKG.SYNC_LPNS_TO_WMS', l_return_status);
3255 END IF;
3256 --
3257 --}
3258 END IF;
3259 -- K LPN CONV. rv
3260 --
3261 --
3262 -- Start code for Bugfix 4070732
3263 --
3264 IF upper(WSH_UTIL_CORE.G_START_OF_SESSION_API) = upper(l_api_session_name) THEN
3265 --{
3266 IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
3267 --{
3268 IF l_debug_on THEN
3269 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Reset_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
3270 END IF;
3271
3272 WSH_UTIL_CORE.Reset_stops_for_load_tender(p_reset_flags => TRUE,
3273 x_return_status => l_return_status);
3274
3275
3276 IF l_debug_on THEN
3277 WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
3278 END IF;
3279
3280 IF (l_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR) THEN
3281 x_return_status := l_return_status;
3282 END IF;
3283 --}
3284 END IF;
3285 --}
3286 END IF;
3287 --
3288 -- End of Code Bugfix 4070732
3289 --
3290 FND_MSG_PUB.Count_And_Get
3291 (
3292 p_count => x_msg_count,
3293 p_data => x_msg_data,
3294 p_encoded => FND_API.G_FALSE
3295 );
3296
3297 --
3298 IF l_debug_on THEN
3299 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
3300 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
3301 END IF;
3302 --
3303 WHEN WSH_UTIL_CORE.G_EXC_WARNING THEN
3304
3305 --OTM R12
3306 IF (c_get_delivery_id%ISOPEN) THEN
3307 CLOSE c_get_delivery_id;
3308 END IF;
3309 --
3310
3311 IF l_debug_on THEN
3312 WSH_DEBUG_SV.logmsg(l_module_name,' Raising: WSH_UTIL_CORE.G_EXC_WARNING');
3313 END IF;
3314 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
3315 --
3316 -- K LPN CONV. rv
3317 --
3318 IF WSH_WMS_LPN_GRP.G_CALLBACK_REQUIRED = 'Y'
3319 THEN
3320 --{
3321
3322 IF l_debug_on THEN
3323 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_LPN_SYNC_COMM_PKG.SYNC_LPNS_TO_WMS',WSH_DEBUG_SV.C_PROC_LEVEL);
3324 END IF;
3325 --
3326 WSH_LPN_SYNC_COMM_PKG.SYNC_LPNS_TO_WMS
3327 (
3328 p_in_rec => l_lpn_in_sync_comm_rec,
3329 x_return_status => l_return_status,
3330 x_out_rec => l_lpn_out_sync_comm_rec
3331 );
3332 --
3333 IF l_debug_on THEN
3334 WSH_DEBUG_SV.log(l_module_name, 'Return status after calling WSH_LPN_SYNC_COMM_PKG.SYNC_LPNS_TO_WMS', l_return_status);
3335 END IF;
3336 --
3337 IF (l_return_status IN (WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR, WSH_UTIL_CORE.G_RET_STS_ERROR)) THEN
3338 x_return_status := l_return_status;
3339 END IF;
3340 --}
3341 END IF;
3342 -- K LPN CONV. rv
3343 --
3344
3345 --
3346 -- Start code for Bugfix 4070732
3347 --
3348 IF upper(WSH_UTIL_CORE.G_START_OF_SESSION_API) = upper(l_api_session_name) THEN
3349 --{
3350 IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
3351 --{
3352 IF l_debug_on THEN
3353 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Process_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
3354 END IF;
3355
3356 WSH_UTIL_CORE.Process_stops_for_load_tender(p_reset_flags => TRUE,
3357 x_return_status => l_return_status);
3358
3359
3360 IF l_debug_on THEN
3361 WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
3362 END IF;
3363
3364 IF l_return_status IN (WSH_UTIL_CORE.G_RET_STS_ERROR,
3365 WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR,
3366 WSH_UTIL_CORE.G_RET_STS_WARNING) THEN
3367 x_return_status := l_return_status;
3368 END IF;
3369
3370 --}
3371 END IF;
3372 --}
3373 END IF;
3374 --
3375 -- End of Code Bugfix 4070732
3376 --
3377 IF l_debug_on THEN
3378 WSH_DEBUG_SV.logmsg(l_module_name,' calling: FND_MSG_PUB.Count_And_Get');
3379 END IF;
3380 FND_MSG_PUB.Count_And_Get
3381 (
3382 p_count => x_msg_count,
3383 p_data => x_msg_data,
3384 p_encoded => FND_API.G_FALSE
3385 );
3386 --
3387 IF l_debug_on THEN
3388 WSH_DEBUG_SV.logmsg(l_module_name,'WSH_UTIL_CORE.G_EXC_WARNING exception has occured ',WSH_DEBUG_SV.C_EXCEP_LEVEL);
3389 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_UTIL_CORE.G_EXC_WARNING');
3390 END IF;
3391 --
3392 WHEN OTHERS THEN
3393
3394 --OTM R12
3395 IF (c_get_delivery_id%ISOPEN) THEN
3396 CLOSE c_get_delivery_id;
3397 END IF;
3398 --
3399
3400 -- ROLLBACK TO DELIVERY_ACTION_GRP;
3401 --
3402 -- K LPN CONV. rv
3403 --
3404 IF WSH_WMS_LPN_GRP.G_CALLBACK_REQUIRED = 'Y'
3405 THEN
3406 --{
3407
3408 IF l_debug_on THEN
3409 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_LPN_SYNC_COMM_PKG.SYNC_LPNS_TO_WMS',WSH_DEBUG_SV.C_PROC_LEVEL);
3410 END IF;
3411 --
3412 WSH_LPN_SYNC_COMM_PKG.SYNC_LPNS_TO_WMS
3413 (
3414 p_in_rec => l_lpn_in_sync_comm_rec,
3415 x_return_status => l_return_status,
3416 x_out_rec => l_lpn_out_sync_comm_rec
3417 );
3418 --
3419 IF l_debug_on THEN
3420 WSH_DEBUG_SV.log(l_module_name, 'Return status after calling WSH_LPN_SYNC_COMM_PKG.SYNC_LPNS_TO_WMS', l_return_status);
3421 END IF;
3422 --
3423 --}
3424 END IF;
3425 -- K LPN CONV. rv
3426 --
3427 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR ;
3428 wsh_util_core.default_handler('WSH_DELIVERIES_GRP.DELIVERY_ACTION');
3429
3430 --
3431 -- Start code for Bugfix 4070732
3432 --
3433 IF upper(WSH_UTIL_CORE.G_START_OF_SESSION_API) = upper(l_api_session_name) THEN
3434 --{
3435 IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
3436 --{
3437 IF l_debug_on THEN
3438 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Reset_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
3439 END IF;
3440
3441 WSH_UTIL_CORE.Reset_stops_for_load_tender(p_reset_flags => TRUE,
3442 x_return_status => l_return_status);
3443
3444
3445 IF l_debug_on THEN
3446 WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
3447 END IF;
3448
3449 IF (l_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR) THEN
3450 x_return_status := l_return_status;
3451 END IF;
3452 --}
3453 END IF;
3454 --}
3455 END IF;
3456 --
3457 -- End of Code Bugfix 4070732
3458 --
3459 FND_MSG_PUB.Count_And_Get
3460 (
3461 p_count => x_msg_count,
3462 p_data => x_msg_data,
3463 p_encoded => FND_API.G_FALSE
3464 );
3465 --
3466 IF l_debug_on THEN
3467 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
3468 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
3469 END IF;
3470 --
3471 END Delivery_Action;
3472
3473 -- I Harmonization: rvishnuv ******* Actions ******
3474
3475 -- I Harmonization: rvishnuv ******* Create/Update ******
3476 --Bug 5191354: For the action UPDATE, validating the delivery attributes only when the corresponding
3477 -- input parameter contains some value (other then fnd_api.g_miss_num/fnd_api.g_miss_char/fnd_api.g_miss_date).
3478 PROCEDURE Validate_Delivery
3479 (x_rec_attr_tab IN OUT NOCOPY WSH_NEW_DELIVERIES_PVT.Delivery_Attr_Tbl_Type,
3480 p_in_rec_attr_tab IN WSH_NEW_DELIVERIES_PVT.Delivery_Attr_Tbl_Type, --Bug 5191354
3481 p_action_code IN VARCHAR2,
3482 p_caller IN VARCHAR2,
3483 x_valid_index_tab OUT NOCOPY wsh_util_core.id_tab_type,
3484 x_return_status OUT NOCOPY VARCHAR2)
3485 IS
3486 --
3487
3488 -- heali for bug 2771579
3489 CURSOR c_get_org_location(p_org_id NUMBER) IS
3490 select location_id
3491 from hr_organization_units
3492 where organization_id = p_org_id;
3493
3494 l_org_location_id NUMBER;
3495 -- heali for bug 2771579
3496
3497 l_net_weight WSH_NEW_DELIVERIES.NET_WEIGHT%TYPE;
3498 l_gross_weight WSH_NEW_DELIVERIES.GROSS_WEIGHT%TYPE;
3499 l_volume WSH_NEW_DELIVERIES.VOLUME%TYPE;
3500 l_volume_uom_code WSH_NEW_DELIVERIES.VOLUME_UOM_CODE%TYPE;
3501 l_weight_uom_code WSH_NEW_DELIVERIES.WEIGHT_UOM_CODE%TYPE;
3502 l_initial_pickup_location_id WSH_NEW_DELIVERIES.initial_pickup_location_id%TYPE;
3503 --
3504
3505
3506 l_assigned_to_trip VARCHAR2(1);
3507 l_return_status VARCHAR2(1);
3508 l_num_errors NUMBER;
3509 l_num_warnings NUMBER;
3510 l_index NUMBER;
3511 l_dummy_meaning VARCHAR2(240);
3512 l_vol_nullify_flag BOOLEAN := FALSE;
3513 l_wt_nullify_flag BOOLEAN := FALSE;
3514 l_isWshLocation BOOLEAN DEFAULT FALSE;
3515 --
3516 l_debug_on BOOLEAN;
3517 --
3518 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'VALIDATE_DELIVERY';
3519 --
3520 l_shipping_control VARCHAR2(30);
3521 l_routing_response_id NUMBER;
3522 l_routing_request_flag VARCHAR2(30);
3523
3524 --OTM R12
3525 l_adjusted_amount NUMBER;
3526 --
3527
3528 BEGIN
3529 --
3530 --
3531 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
3532 --
3533 IF l_debug_on IS NULL
3534 THEN
3535 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
3536 END IF;
3537 --
3538
3539 SAVEPOINT VALIDATE_DELIVERY_GRP;
3540 --
3541 IF l_debug_on THEN
3542 WSH_DEBUG_SV.push(l_module_name);
3543 WSH_DEBUG_SV.log(l_module_name,'p_action_code',p_action_code);
3544 WSH_DEBUG_SV.log(l_module_name,'Number of Delivery Records is', x_rec_attr_tab.COUNT);
3545 END IF;
3546 --
3547
3548 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
3549 --OTM R12
3550 l_adjusted_amount := 0;
3551 --
3552
3553 --
3554 IF p_caller IN ( 'WSH_FSTRX' , 'WSH_TPW_INBOUND')
3555 OR p_caller LIKE 'FTE%' THEN
3556 l_isWshLocation := TRUE;
3557 END IF;
3558
3559 l_index := x_rec_attr_tab.FIRST;
3560 WHILE l_index is not null LOOP
3561 BEGIN
3562 SAVEPOINT VALIDATE_DLVY_GRP_LOOP;
3563
3564 --Bug 5191354
3565 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_DELIVERY_NAME_LVL) = 1
3566 AND (p_action_code = 'CREATE' OR
3567 (p_action_code = 'UPDATE' AND
3568 ((p_in_rec_attr_tab(l_index).delivery_id IS NULL ) OR (p_in_rec_attr_tab(l_index).delivery_id <> fnd_api.g_miss_num)
3569 OR (p_in_rec_attr_tab(l_index).name IS NULL ) OR (p_in_rec_attr_tab(l_index).name <> fnd_api.g_miss_char)
3570 ))) THEN
3571 --
3572 wsh_util_validate.validate_delivery_name(
3573 p_delivery_id => x_rec_attr_tab(l_index).delivery_id,
3574 p_delivery_name => x_rec_attr_tab(l_index).name,
3575 x_return_status => l_return_status);
3576 --
3577 IF l_debug_on THEN
3578 wsh_debug_sv.log(l_module_name,'Return Status After Calling validate_delivery_name',l_return_status);
3579 END IF;
3580 --
3581 WSH_UTIL_CORE.api_post_call(
3582 p_return_status => l_return_status,
3583 x_num_warnings => l_num_warnings,
3584 x_num_errors => l_num_errors);
3585 --
3586 END IF;
3587 --
3588 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_ORGANIZATION_LVL) = 1 THEN
3589 --Bug 5191354
3590 IF p_action_code = 'CREATE'
3591 AND nvl(x_rec_attr_tab(l_index).organization_id,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM
3592 AND nvl(x_rec_attr_tab(l_index).organization_code,FND_API.G_MISS_CHAR) = FND_API.G_MISS_CHAR
3593 THEN
3594 x_return_status := wsh_util_core.g_ret_sts_error;
3595 WSH_UTIL_CORE.api_post_call(p_return_status => x_return_status,
3596 x_num_warnings =>l_num_warnings,
3597 x_num_errors =>l_num_errors,
3598 p_module_name =>l_module_name,
3599 p_msg_data => 'WSH_DEL_ORG_NULL');
3600
3601 ELSIF (p_action_code = 'CREATE' OR
3602 (p_action_code = 'UPDATE' AND
3603 ((p_in_rec_attr_tab(l_index).organization_id IS NULL ) OR (p_in_rec_attr_tab(l_index).organization_id <> fnd_api.g_miss_num)
3604 OR (p_in_rec_attr_tab(l_index).organization_code IS NULL ) OR (p_in_rec_attr_tab(l_index).organization_code <> fnd_api.g_miss_char)
3605 ))) THEN
3606 --{
3607
3608 IF ( p_action_code = 'UPDATE'
3609 AND x_rec_attr_tab(l_index).organization_id IS NULL
3610 AND x_rec_attr_tab(l_index).organization_code IS NULL) THEN
3611 --{ NULL case
3612 x_return_status := wsh_util_core.g_ret_sts_error;
3613 WSH_UTIL_CORE.api_post_call(p_return_status => x_return_status,
3614 x_num_warnings =>l_num_warnings,
3615 x_num_errors =>l_num_errors,
3616 p_module_name =>l_module_name,
3617 p_msg_data => 'WSH_DEL_ORG_NULL');
3618
3619 --} NULL case
3620 END IF;
3621 wsh_util_validate.validate_org(
3622 p_org_id => x_rec_attr_tab(l_index).organization_id,
3623 p_org_code => x_rec_attr_tab(l_index).organization_code,
3624 x_return_status => l_return_status);
3625 --
3626 IF l_debug_on THEN
3627 wsh_debug_sv.log(l_module_name,'Return Status After Calling validate_org',l_return_status);
3628 END IF;
3629 --
3630 WSH_UTIL_CORE.api_post_call(
3631 p_return_status => l_return_status,
3632 x_num_warnings => l_num_warnings,
3633 x_num_errors => l_num_errors);
3634 --
3635 END IF;
3636 --
3637 END IF;
3638 --
3639 IF (nvl(x_rec_attr_tab(l_index).delivery_type,'STANDARD') NOT IN ('STANDARD','CONSOLIDATION')) THEN
3640 x_rec_attr_tab(l_index).delivery_type := 'STANDARD';
3641 END IF;
3642 --Bug 5191354
3643 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_LOADING_ORDER_LVL) = 1
3644 AND (p_action_code = 'CREATE' OR
3645 (p_action_code = 'UPDATE' AND
3646 ((p_in_rec_attr_tab(l_index).loading_order_flag IS NULL ) OR (p_in_rec_attr_tab(l_index).loading_order_flag <> fnd_api.g_miss_char)
3647 OR (p_in_rec_attr_tab(l_index).loading_order_desc IS NULL ) OR (p_in_rec_attr_tab(l_index).loading_order_desc <> fnd_api.g_miss_char)
3648 ))) THEN
3649 --
3650 wsh_util_validate.validate_loading_order(
3651 p_loading_order_flag => x_rec_attr_tab(l_index).loading_order_flag,
3652 p_loading_order_desc => x_rec_attr_tab(l_index).loading_order_desc,
3653 x_return_status => l_return_status);
3654 --
3655 IF l_debug_on THEN
3656 wsh_debug_sv.log(l_module_name,'Return Status After Calling validate_loading_order',l_return_status);
3657 END IF;
3658 --
3659 WSH_UTIL_CORE.api_post_call(
3660 p_return_status => l_return_status,
3661 x_num_warnings => l_num_warnings,
3662 x_num_errors => l_num_errors);
3663 --
3664 END IF;
3665 --
3666 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_SHIP_FROM_LOC_LVL) = 1
3667 THEN
3668 --
3669 IF p_action_code = 'CREATE'
3670 AND nvl(x_rec_attr_tab(l_index).initial_pickup_location_id,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM
3671 AND nvl(x_rec_attr_tab(l_index).initial_pickup_location_code,FND_API.G_MISS_CHAR) = FND_API.G_MISS_CHAR
3672 THEN
3673 x_return_status := wsh_util_core.g_ret_sts_error;
3674 WSH_UTIL_CORE.api_post_call(p_return_status => x_return_status,
3675 x_num_warnings =>l_num_warnings,
3676 x_num_errors =>l_num_errors,
3677 p_module_name =>l_module_name,
3678 p_msg_data => 'WSH_DEL_PICKUP_LOC_NULL');
3679 --Bug 5191354
3680 ELSIF (p_action_code = 'CREATE' OR
3681 (p_action_code = 'UPDATE' AND
3682 ((p_in_rec_attr_tab(l_index).initial_pickup_location_id IS NULL ) OR (p_in_rec_attr_tab(l_index).initial_pickup_location_id <> fnd_api.g_miss_num)
3683 OR (p_in_rec_attr_tab(l_index).initial_pickup_location_code IS NULL ) OR (p_in_rec_attr_tab(l_index).initial_pickup_location_code <> fnd_api.g_miss_char)
3684 ))) THEN
3685 --{
3686
3687 IF (p_action_code = 'UPDATE'
3688 AND x_rec_attr_tab(l_index).initial_pickup_location_id IS NULL
3689 AND x_rec_attr_tab(l_index).initial_pickup_location_code IS NULL) THEN
3690 --{ NULL case
3691 x_return_status := wsh_util_core.g_ret_sts_error;
3692 WSH_UTIL_CORE.api_post_call(p_return_status => x_return_status,
3693 x_num_warnings =>l_num_warnings,
3694 x_num_errors =>l_num_errors,
3695 p_module_name =>l_module_name,
3696 p_msg_data => 'WSH_DEL_PICKUP_LOC_NULL');
3697
3698
3699 --} NULL case
3700 END IF;
3701
3702 -- J-IB-NPARIKH-{
3703 --
3704 IF NVL(x_rec_attr_tab(l_index).shipment_direction,'O') NOT IN ('O','IO')
3705 --AND x_rec_attr_tab(l_index).initial_pickup_location_id = WSH_UTIL_CORE.C_NULL_SF_LOCN_ID
3706 THEN
3707 --{
3708 --
3709 -- Check if delivery's transportation is arranged by supplier
3710 -- or if routing request was not received for all delivery lines
3711 --
3712 IF l_debug_on THEN
3713 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_DELIVERY_VALIDATIONS.GET_SHIPPING_CONTROL',WSH_DEBUG_SV.C_PROC_LEVEL);
3714 END IF;
3715 --
3716 WSH_DELIVERY_VALIDATIONS.GET_SHIPPING_CONTROL
3717 (
3718 p_delivery_id => x_rec_attr_tab(l_index).delivery_id,
3719 x_shipping_control => l_shipping_control,
3720 x_routing_response_id => l_routing_response_id,
3721 x_routing_request_flag => l_routing_request_flag,
3722 x_return_status => l_return_status
3723 );
3724 --
3725 --
3726 IF l_debug_on THEN
3727 wsh_debug_sv.log(l_module_name, 'l_return_status', l_return_status);
3728 wsh_debug_sv.log(l_module_name, 'l_shipping_control', l_shipping_control);
3729 wsh_debug_sv.log(l_module_name, 'l_routing_response_id', l_routing_response_id);
3730 wsh_debug_sv.log(l_module_name, 'l_routing_request_flag', l_routing_request_flag);
3731 --
3732 END IF;
3733 --
3734 --
3735 WSH_UTIL_CORE.api_post_call(
3736 p_return_status => l_return_status,
3737 x_num_warnings => l_num_warnings,
3738 x_num_errors => l_num_errors);
3739 --}
3740 END IF;
3741 --
3742 -- J-IB-NPARIKH-}
3743 --
3744 IF NVL(x_rec_attr_tab(l_index).shipment_direction,'O') IN ('O','IO') -- J-IB-NPARIKH
3745 OR x_rec_attr_tab(l_index).initial_pickup_location_id <> WSH_UTIL_CORE.C_NULL_SF_LOCN_ID -- J-IB-NPARIKH
3746 --OR l_shipping_control <> 'SUPPLIER' -- J-IB-NPARIKH
3747 --OR l_routing_request_flag <> 'N' -- J-IB-NPARIKH
3748 THEN
3749 wsh_util_validate.validate_location(
3750 p_location_id => x_rec_attr_tab(l_index).initial_pickup_location_id,
3751 p_location_code => x_rec_attr_tab(l_index).initial_pickup_location_code,
3752 x_return_status => l_return_status,
3753 p_isWshLocation => l_isWshLocation);
3754 --
3755 IF l_debug_on THEN
3756 wsh_debug_sv.log(l_module_name,'Return Status After Calling validate_location for Ship From',l_return_status);
3757 END IF;
3758 --
3759 WSH_UTIL_CORE.api_post_call(
3760 p_return_status => l_return_status,
3761 x_num_warnings => l_num_warnings,
3762 x_num_errors => l_num_errors);
3763 --
3764 --
3765 -- J-IB-NPARIKH-{
3766 IF l_shipping_control = 'SUPPLIER'
3767 OR l_routing_request_flag = 'N'
3768 THEN
3769 --{
3770 --
3771 -- Check if delivery's transportation is arranged by supplier
3772 -- or if routing request was not received for all delivery lines
3773 -- If that's the case, validate that ship-from location is
3774 -- a valid ship-from for the supplier
3775 --
3776 IF NVL(x_rec_attr_tab(l_index).shipment_direction,'O')
3777 NOT IN ('O','IO') -- J-IB-NPARIKH
3778 THEN
3779 --{
3780 wsh_util_validate.validate_supplier_location
3781 (
3782 p_vendor_id => x_rec_attr_tab(l_index).vendor_id,
3783 p_party_id => x_rec_attr_tab(l_index).party_id,
3784 p_location_id => x_rec_attr_tab(l_index).initial_pickup_location_id,
3785 x_return_status => l_return_status
3786 );
3787 --
3788 IF l_debug_on THEN
3789 wsh_debug_sv.log(l_module_name,'Return Status After Calling validate_supplier_location for Ship From',l_return_status);
3790 END IF;
3791 --
3792 WSH_UTIL_CORE.api_post_call(
3793 p_return_status => l_return_status,
3794 x_num_warnings => l_num_warnings,
3795 x_num_errors => l_num_errors);
3796 --}
3797 END IF;
3798 --}
3799 END IF;
3800 -- J-IB-NPARIKH-}
3801
3802 END IF;
3803
3804 IF NVL(x_rec_attr_tab(l_index).shipment_direction,'O') IN ('O','IO') -- J-IB-NPARIKH
3805 THEN
3806 -- Validation that ship-from organization corresponds to initial pickup
3807 -- location is applicable only for outbound (O/IO) delivery.
3808 --
3809 -- heali for bug 2771579
3810 OPEN c_get_org_location(x_rec_attr_tab(l_index).organization_id);
3811 FETCH c_get_org_location INTO l_org_location_id;
3812 CLOSE c_get_org_location;
3813
3814 IF l_debug_on THEN
3815 wsh_debug_sv.log(l_module_name,'organization_id',x_rec_attr_tab(l_index).initial_pickup_location_id);
3816 wsh_debug_sv.log(l_module_name,'l_org_location_id',l_org_location_id);
3817 END IF;
3818
3819 IF (l_org_location_id <> x_rec_attr_tab(l_index).initial_pickup_location_id) THEN
3820 x_return_status := wsh_util_core.g_ret_sts_error;
3821 WSH_UTIL_CORE.api_post_call(p_return_status => x_return_status,
3822 x_num_warnings =>l_num_warnings,
3823 x_num_errors =>l_num_errors,
3824 p_module_name =>l_module_name,
3825 p_msg_data => 'WSH_DEL_PICK_LOC_NOT_MATCH');
3826
3827 END IF;
3828 -- heali for bug 2771579
3829 END IF;
3830
3831 END IF;
3832 --
3833 END IF;
3834 --
3835 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_SHIP_TO_LOC_LVL) = 1 THEN
3836 --
3837 IF p_action_code = 'CREATE'
3838 AND nvl(x_rec_attr_tab(l_index).ultimate_dropoff_location_id,FND_API.G_MISS_NUM) = FND_API.G_MISS_NUM
3839 AND nvl(x_rec_attr_tab(l_index).ultimate_dropoff_location_code,FND_API.G_MISS_CHAR) = FND_API.G_MISS_CHAR
3840 THEN
3841 x_return_status := wsh_util_core.g_ret_sts_error;
3842 WSH_UTIL_CORE.api_post_call(p_return_status => x_return_status,
3843 x_num_warnings =>l_num_warnings,
3844 x_num_errors =>l_num_errors,
3845 p_module_name =>l_module_name,
3846 p_msg_data => 'WSH_DEL_DROPOFF_LOC_NULL');
3847 --Bug 5191354
3848 ELSIF (p_action_code = 'CREATE' OR
3849 (p_action_code = 'UPDATE' AND
3850 ((p_in_rec_attr_tab(l_index).ultimate_dropoff_location_id IS NULL ) OR (p_in_rec_attr_tab(l_index).ultimate_dropoff_location_id <> fnd_api.g_miss_num)
3851 OR (p_in_rec_attr_tab(l_index).ultimate_dropoff_location_code IS NULL ) OR (p_in_rec_attr_tab(l_index).ultimate_dropoff_location_code <> fnd_api.g_miss_char)
3852 ))) THEN
3853 --{
3854
3855 IF ( p_action_code = 'UPDATE'
3856 AND x_rec_attr_tab(l_index).ultimate_dropoff_location_id IS NULL
3857 AND x_rec_attr_tab(l_index).ultimate_dropoff_location_code IS NULL ) THEN
3858 --{ NULL case
3859 x_return_status := wsh_util_core.g_ret_sts_error;
3860 WSH_UTIL_CORE.api_post_call(p_return_status => x_return_status,
3861 x_num_warnings =>l_num_warnings,
3862 x_num_errors =>l_num_errors,
3863 p_module_name =>l_module_name,
3864 p_msg_data => 'WSH_DEL_DROPOFF_LOC_NULL');
3865
3866 --} NULL case
3867 END IF;
3868 wsh_util_validate.validate_location(
3869 p_location_id => x_rec_attr_tab(l_index).ultimate_dropoff_location_id,
3870 p_location_code => x_rec_attr_tab(l_index).ultimate_dropoff_location_code,
3871 x_return_status => l_return_status,
3872 p_isWshLocation => l_isWshLocation);
3873 --
3874 IF l_debug_on THEN
3875 wsh_debug_sv.log(l_module_name,'Return Status After Calling validate_location for Ship To',l_return_status);
3876 END IF;
3877 --
3878 WSH_UTIL_CORE.api_post_call(
3879 p_return_status => l_return_status,
3880 x_num_warnings => l_num_warnings,
3881 x_num_errors => l_num_errors);
3882 --
3883 END IF;
3884 --
3885 END IF;
3886 --Bug 5191354
3887 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_INTMD_SHIPTO_LOC_LVL) = 1
3888 AND (p_action_code = 'CREATE' OR
3889 (p_action_code = 'UPDATE' AND
3890 ((p_in_rec_attr_tab(l_index).intmed_ship_to_location_id IS NULL ) OR (p_in_rec_attr_tab(l_index).intmed_ship_to_location_id <> fnd_api.g_miss_num)
3891 OR (p_in_rec_attr_tab(l_index).intmed_ship_to_location_code IS NULL ) OR (p_in_rec_attr_tab(l_index).intmed_ship_to_location_code <> fnd_api.g_miss_char)
3892 ))) THEN
3893 IF l_debug_on THEN
3894 wsh_debug_sv.log(l_module_name,'loc id ',x_rec_attr_tab(l_index).intmed_ship_to_location_id);
3895 wsh_debug_sv.log(l_module_name,'loc code ',x_rec_attr_tab(l_index).intmed_ship_to_location_code);
3896 END IF;
3897 --
3898 wsh_util_validate.validate_location(
3899 p_location_id => x_rec_attr_tab(l_index).intmed_ship_to_location_id,
3900 p_location_code => x_rec_attr_tab(l_index).intmed_ship_to_location_code,
3901 x_return_status => l_return_status,
3902 p_isWshLocation => l_isWshLocation);
3903 --
3904 IF l_debug_on THEN
3905 wsh_debug_sv.log(l_module_name,'Return Status After Calling validate_location for Intmed Ship To',l_return_status);
3906 END IF;
3907 --
3908 WSH_UTIL_CORE.api_post_call(
3909 p_return_status => l_return_status,
3910 x_num_warnings => l_num_warnings,
3911 x_num_errors => l_num_errors);
3912 --
3913 END IF;
3914 --Bug 5191354
3915 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_POOLED_SHIPTO_LOC_LVL) = 1
3916 AND (p_action_code = 'CREATE' OR
3917 (p_action_code = 'UPDATE' AND
3918 ((p_in_rec_attr_tab(l_index).pooled_ship_to_location_id IS NULL ) OR (p_in_rec_attr_tab(l_index).pooled_ship_to_location_id <> fnd_api.g_miss_num)
3919 OR (p_in_rec_attr_tab(l_index).pooled_ship_to_location_code IS NULL ) OR (p_in_rec_attr_tab(l_index).pooled_ship_to_location_code <> fnd_api.g_miss_char)
3920 ))) THEN
3921 --
3922 wsh_util_validate.validate_location(
3923 p_location_id => x_rec_attr_tab(l_index).pooled_ship_to_location_id,
3924 p_location_code => x_rec_attr_tab(l_index).pooled_ship_to_location_code,
3925 x_return_status => l_return_status,
3926 p_isWshLocation => l_isWshLocation);
3927 --
3928 IF l_debug_on THEN
3929 wsh_debug_sv.log(l_module_name,'Return Status After Calling validate_location for Pooled Ship To',l_return_status);
3930 END IF;
3931 --
3932 WSH_UTIL_CORE.api_post_call(
3933 p_return_status => l_return_status,
3934 x_num_warnings => l_num_warnings,
3935 x_num_errors => l_num_errors);
3936 --
3937 END IF;
3938 --Bug 5191354
3939 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_FOB_LOC_LVL) = 1
3940 AND (p_action_code = 'CREATE' OR
3941 (p_action_code = 'UPDATE' AND
3942 ((p_in_rec_attr_tab(l_index).fob_location_id IS NULL ) OR (p_in_rec_attr_tab(l_index).fob_location_id <> fnd_api.g_miss_num)
3943 OR (p_in_rec_attr_tab(l_index).fob_location_code IS NULL ) OR (p_in_rec_attr_tab(l_index).fob_location_code <> fnd_api.g_miss_char)
3944 ))) THEN
3945 --
3946 wsh_util_validate.validate_location(
3947 p_location_id => x_rec_attr_tab(l_index).fob_location_id,
3948 p_location_code => x_rec_attr_tab(l_index).fob_location_code,
3949 x_return_status => l_return_status,
3950 p_isWshLocation => l_isWshLocation);
3951 --
3952 IF l_debug_on THEN
3953 wsh_debug_sv.log(l_module_name,'Return Status After Calling validate_location for fob location',l_return_status);
3954 END IF;
3955 --
3956 WSH_UTIL_CORE.api_post_call(
3957 p_return_status => l_return_status,
3958 x_num_warnings => l_num_warnings,
3959 x_num_errors => l_num_errors);
3960 --
3961 END IF;
3962
3963 --Bug 5191354
3964 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_CUSTOMER_LVL) = 1
3965 AND (p_action_code = 'CREATE' OR
3966 (p_action_code = 'UPDATE' AND
3967 ((p_in_rec_attr_tab(l_index).customer_id IS NULL ) OR (p_in_rec_attr_tab(l_index).customer_id <> fnd_api.g_miss_num)
3968 OR (p_in_rec_attr_tab(l_index).customer_number IS NULL ) OR (p_in_rec_attr_tab(l_index).customer_number <> fnd_api.g_miss_char)
3969 ))) THEN
3970 --
3971 wsh_util_validate.validate_customer(
3972 p_customer_id => x_rec_attr_tab(l_index).customer_id,
3973 p_customer_number => x_rec_attr_tab(l_index).customer_number,
3974 x_return_status => l_return_status);
3975 --
3976 IF l_debug_on THEN
3977 wsh_debug_sv.log(l_module_name,'Return Status After Calling validate_customer',l_return_status);
3978 END IF;
3979 --
3980 WSH_UTIL_CORE.api_post_call(
3981 p_return_status => l_return_status,
3982 x_num_warnings => l_num_warnings,
3983 x_num_errors => l_num_errors);
3984
3985 END IF;
3986 --Bug 5191354
3987 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_FREIGHT_TERMS_LVL) = 1
3988 AND (p_action_code = 'CREATE' OR
3989 (p_action_code = 'UPDATE' AND
3990 ((p_in_rec_attr_tab(l_index).freight_terms_code IS NULL ) OR (p_in_rec_attr_tab(l_index).freight_terms_code <> fnd_api.g_miss_char)
3991 OR (p_in_rec_attr_tab(l_index).freight_terms_name IS NULL ) OR (p_in_rec_attr_tab(l_index).freight_terms_name <> fnd_api.g_miss_char)
3992 ))) THEN
3993 --
3994 wsh_util_validate.validate_freight_terms(
3995 p_freight_terms_code => x_rec_attr_tab(l_index).freight_terms_code,
3996 p_freight_terms_name => x_rec_attr_tab(l_index).freight_terms_name,
3997 x_return_status => l_return_status);
3998 --
3999 IF l_debug_on THEN
4000 wsh_debug_sv.log(l_module_name,'Return Status After Calling validate_freight_terms',l_return_status);
4001 END IF;
4002 --
4003 WSH_UTIL_CORE.api_post_call(
4004 p_return_status => l_return_status,
4005 x_num_warnings => l_num_warnings,
4006 x_num_errors => l_num_errors);
4007 --
4008 END IF;
4009 --Bug 5191354
4010 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_FOB_LVL) = 1
4011 AND (p_action_code = 'CREATE' OR
4012 (p_action_code = 'UPDATE' AND
4013 ((p_in_rec_attr_tab(l_index).fob_code IS NULL ) OR (p_in_rec_attr_tab(l_index).fob_code <> fnd_api.g_miss_char)
4014 OR (p_in_rec_attr_tab(l_index).fob_name IS NULL ) OR (p_in_rec_attr_tab(l_index).fob_name <> fnd_api.g_miss_char)
4015 ))) THEN
4016 --
4017 wsh_util_validate.validate_fob(
4018 p_fob_code => x_rec_attr_tab(l_index).fob_code,
4019 p_fob_name => x_rec_attr_tab(l_index).fob_name,
4020 x_return_status => l_return_status);
4021 --
4022 IF l_debug_on THEN
4023 wsh_debug_sv.log(l_module_name,'Return Status After Calling validate_fob',l_return_status);
4024 END IF;
4025 --
4026 WSH_UTIL_CORE.api_post_call(
4027 p_return_status => l_return_status,
4028 x_num_warnings => l_num_warnings,
4029 x_num_errors => l_num_errors);
4030 --
4031 END IF;
4032
4033 --Bug 5191354
4034 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_WEIGHT_UOM_LVL) = 1
4035 AND (p_action_code = 'CREATE' OR
4036 (p_action_code = 'UPDATE' AND
4037 ((p_in_rec_attr_tab(l_index).weight_uom_code IS NULL ) OR (p_in_rec_attr_tab(l_index).weight_uom_code <> fnd_api.g_miss_char)
4038 ))) THEN
4039 --
4040 IF x_rec_attr_tab(l_index).weight_uom_code is not null or x_rec_attr_tab(l_index).weight_uom_desc is not null THEN
4041 wsh_util_validate.validate_uom(
4042 p_type => 'WEIGHT',
4043 p_organization_id => x_rec_attr_tab(l_index).organization_id,
4044 p_uom_code => x_rec_attr_tab(l_index).weight_uom_code,
4045 p_uom_desc => x_rec_attr_tab(l_index).weight_uom_desc,
4046 x_return_status => l_return_status);
4047 --
4048 IF l_debug_on THEN
4049 wsh_debug_sv.log(l_module_name,'Return Status After Calling validate_uom for Weight',l_return_status);
4050 END IF;
4051 --
4052 WSH_UTIL_CORE.api_post_call(
4053 p_return_status => l_return_status,
4054 x_num_warnings => l_num_warnings,
4055 x_num_errors => l_num_errors);
4056 --
4057 ELSE
4058 x_rec_attr_tab(l_index).net_weight := NULL;
4059 x_rec_attr_tab(l_index).gross_weight := NULL;
4060 END IF;
4061 --
4062 END IF;
4063 --Bug 5191354
4064 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_VOLUME_UOM_LVL) = 1
4065 AND (p_action_code = 'CREATE' OR
4066 (p_action_code = 'UPDATE' AND
4067 ((p_in_rec_attr_tab(l_index).volume_uom_code IS NULL ) OR (p_in_rec_attr_tab(l_index).volume_uom_code <> fnd_api.g_miss_char)
4068 ))) THEN
4069 --
4070 IF x_rec_attr_tab(l_index).volume_uom_code is not null or x_rec_attr_tab(l_index).volume_uom_desc is not null THEN
4071 wsh_util_validate.validate_uom(
4072 p_type => 'VOLUME',
4073 p_organization_id => x_rec_attr_tab(l_index).organization_id,
4074 p_uom_code => x_rec_attr_tab(l_index).volume_uom_code,
4075 p_uom_desc => x_rec_attr_tab(l_index).volume_uom_desc,
4076 x_return_status => l_return_status);
4077 --
4078 IF l_debug_on THEN
4079 wsh_debug_sv.log(l_module_name,'Return Status After Calling validate_uom for Volume',l_return_status);
4080 END IF;
4081 --
4082 WSH_UTIL_CORE.api_post_call(
4083 p_return_status => l_return_status,
4084 x_num_warnings => l_num_warnings,
4085 x_num_errors => l_num_errors);
4086 --
4087 ELSE
4088 x_rec_attr_tab(l_index).volume := NULL;
4089 END IF;
4090 --
4091 END IF;
4092 --Bug 5191354
4093 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_CURRENCY_LVL) = 1
4094 AND ((p_action_code = 'CREATE' OR p_action_code = 'UPDATE') AND
4095 ((p_in_rec_attr_tab(l_index).currency_code <> fnd_api.g_miss_char)
4096 OR (p_in_rec_attr_tab(l_index).currency_name <> fnd_api.g_miss_char)
4097 )) THEN
4098 --
4099 --OTM R12, added parameter l_adjusted_amount
4100 IF l_debug_on THEN
4101 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_VALIDATE.VALIDATE_CURRENCY',WSH_DEBUG_SV.C_PROC_LEVEL);
4102 END IF;
4103
4104 wsh_util_validate.validate_currency(
4105 p_currency_code => x_rec_attr_tab(l_index).currency_code,
4106 p_currency_name => x_rec_attr_tab(l_index).currency_name,
4107 p_amount => NULL,
4108 x_return_status => l_return_status,
4109 x_adjusted_amount => l_adjusted_amount);
4110 --
4111 IF l_debug_on THEN
4112 wsh_debug_sv.log(l_module_name,'Return Status After Calling validate_currency',l_return_status);
4113 END IF;
4114 --
4115 WSH_UTIL_CORE.api_post_call(
4116 p_return_status => l_return_status,
4117 x_num_warnings => l_num_warnings,
4118 x_num_errors => l_num_errors);
4119 --
4120 END IF;
4121 --Bug 5191354
4122 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_ARR_DEP_DATES_LVL) = 1
4123 AND (p_action_code = 'CREATE' OR
4124 (p_action_code = 'UPDATE' AND
4125 ((p_in_rec_attr_tab(l_index).initial_pickup_date IS NULL ) OR (p_in_rec_attr_tab(l_index).initial_pickup_date <> fnd_api.g_miss_date)
4126 OR (p_in_rec_attr_tab(l_index).ultimate_dropoff_date IS NULL ) OR (p_in_rec_attr_tab(l_index).ultimate_dropoff_date <> fnd_api.g_miss_date)
4127 ))) THEN
4128 --
4129 wsh_util_validate.validate_from_to_dates(
4130 p_from_date => x_rec_attr_tab(l_index).initial_pickup_date,
4131 p_to_date => x_rec_attr_tab(l_index).ultimate_dropoff_date,
4132 x_return_status => l_return_status);
4133 --
4134 IF l_debug_on THEN
4135 wsh_debug_sv.log(l_module_name,'Return Status After Calling validate_from_to_dates',l_return_status);
4136 END IF;
4137 --
4138 WSH_UTIL_CORE.api_post_call(
4139 p_return_status => l_return_status,
4140 x_num_warnings => l_num_warnings,
4141 x_num_errors => l_num_errors);
4142 --
4143 END IF;
4144 --
4145 --bug 4587399 commented out the code below
4146 /**************************************************************************************
4147 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_NUMBER_OF_LPN_LVL) = 1 THEN
4148 --
4149 WSH_DELIVERY_VALIDATIONS.derive_number_of_lpn(
4150 p_delivery_id => x_rec_attr_tab(l_index).delivery_id,
4151 x_number_of_lpn => x_rec_attr_tab(l_index).number_of_lpn,
4152 x_return_status => l_return_status);
4153 --
4154 IF l_debug_on THEN
4155 wsh_debug_sv.log(l_module_name,'Return Status After Calling derive_numer_of_lpn',l_return_status);
4156 END IF;
4157 --
4158 WSH_UTIL_CORE.api_post_call(
4159 p_return_status => l_return_status,
4160 x_num_warnings => l_num_warnings,
4161 x_num_errors => l_num_errors);
4162 --
4163 END IF;
4164 --
4165 ****************************************************************************************/
4166 --Bug 5191354
4167 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_ROUTE_EXPORT_TXN_LVL) = 1
4168 AND (p_action_code = 'CREATE' OR
4169 (p_action_code = 'UPDATE' AND
4170 ((p_in_rec_attr_tab(l_index).ROUTED_EXPORT_TXN IS NULL ) OR (p_in_rec_attr_tab(l_index).ROUTED_EXPORT_TXN <> fnd_api.g_miss_char)
4171 ))) THEN
4172 --
4173 WSH_DELIVERY_VALIDATIONS.Validate_Routed_Export_Txn(
4174 x_rtd_expt_txn_code => x_rec_attr_tab(l_index).ROUTED_EXPORT_TXN,
4175 p_rtd_expt_txn_meaning => l_dummy_meaning,
4176 x_return_status => l_return_status);
4177 --
4178 IF l_debug_on THEN
4179 wsh_debug_sv.log(l_module_name,'Return Status After Calling Validate_Routed_Export_Txn',l_return_status);
4180 END IF;
4181 --
4182 WSH_UTIL_CORE.api_post_call(
4183 p_return_status => l_return_status,
4184 x_num_warnings => l_num_warnings,
4185 x_num_errors => l_num_errors);
4186 --
4187 END IF;
4188 --Bug 5191354
4189 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_FREIGHT_CARRIER_LVL) = 1
4190 AND (p_action_code = 'CREATE' OR
4191 (p_action_code = 'UPDATE' AND
4192 ((p_in_rec_attr_tab(l_index).ship_method_name IS NULL ) OR (p_in_rec_attr_tab(l_index).ship_method_name <> fnd_api.g_miss_char)
4193 OR (p_in_rec_attr_tab(l_index).ship_method_code IS NULL ) OR (p_in_rec_attr_tab(l_index).ship_method_code <> fnd_api.g_miss_char)
4194 OR (p_in_rec_attr_tab(l_index).carrier_code IS NULL ) OR (p_in_rec_attr_tab(l_index).carrier_code <> fnd_api.g_miss_char)
4195 OR (p_in_rec_attr_tab(l_index).carrier_id IS NULL ) OR (p_in_rec_attr_tab(l_index).carrier_id <> fnd_api.g_miss_num)
4196 OR (p_in_rec_attr_tab(l_index).service_level IS NULL ) OR (p_in_rec_attr_tab(l_index).service_level <> fnd_api.g_miss_char)
4197 OR (p_in_rec_attr_tab(l_index).mode_of_transport IS NULL ) OR (p_in_rec_attr_tab(l_index).mode_of_transport <> fnd_api.g_miss_char)
4198 ))) THEN
4199 --
4200 wsh_util_validate.validate_freight_carrier(
4201 p_ship_method_name => x_rec_attr_tab(l_index).ship_method_name,
4202 x_ship_method_code => x_rec_attr_tab(l_index).ship_method_code,
4203 p_carrier_name => x_rec_attr_tab(l_index).carrier_code,
4204 x_carrier_id => x_rec_attr_tab(l_index).carrier_id,
4205 x_service_level => x_rec_attr_tab(l_index).service_level,
4206 x_mode_of_transport => x_rec_attr_tab(l_index).mode_of_transport,
4207 p_entity_id => x_rec_attr_tab(l_index).delivery_id,
4208 p_entity_type => 'DLVY',
4209 p_organization_id => x_rec_attr_tab(l_index).organization_id,
4210 x_return_status => l_return_status,
4211 p_caller => p_caller);
4212 --
4213 IF l_debug_on THEN
4214 wsh_debug_sv.log(l_module_name,'Return Status After Calling validate_freight_carrier',l_return_status);
4215 END IF;
4216 --
4217 /* Fix for Bug 2753330
4218 If caller is WSH_INBOUND, then need to convert warning to success
4219 for cases where validate_freight_carrier returns warning
4220 so that Inbound processing does not error out */
4221 IF p_caller IN ('WSH_INBOUND', 'WSH_TPW_INBOUND')
4222 AND l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING
4223 THEN
4224 -- {
4225 IF l_debug_on THEN
4226 wsh_debug_sv.logmsg(l_module_name, 'Setting success for Inbound');
4227 END IF;
4228 l_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
4229 -- }
4230 END IF;
4231 WSH_UTIL_CORE.api_post_call(
4232 p_return_status => l_return_status,
4233 x_num_warnings => l_num_warnings,
4234 x_num_errors => l_num_errors);
4235 --
4236 END IF;
4237 --Bug 5191354
4238 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_DERIVE_DELIVERY_UOM_LVL) = 1
4239 AND (p_action_code = 'CREATE' OR
4240 (p_action_code = 'UPDATE' AND
4241 ( (p_in_rec_attr_tab(l_index).volume_uom_code IS NULL ) OR (p_in_rec_attr_tab(l_index).volume_uom_code <> fnd_api.g_miss_char)
4242 OR (p_in_rec_attr_tab(l_index).weight_uom_code IS NULL ) OR (p_in_rec_attr_tab(l_index).weight_uom_code <> fnd_api.g_miss_char)
4243 ))) THEN
4244 --
4245 wsh_delivery_validations.derive_delivery_uom(
4246 p_delivery_id => x_rec_attr_tab(l_index).delivery_id,
4247 p_organization_id => x_rec_attr_tab(l_index).organization_id,
4248 x_volume_uom_code => x_rec_attr_tab(l_index).volume_uom_code,
4249 x_weight_uom_code => x_rec_attr_tab(l_index).weight_uom_code,
4250 x_wt_nullify_flag => l_wt_nullify_flag,
4251 x_vol_nullify_flag => l_vol_nullify_flag,
4252 x_return_status => l_return_status);
4253
4254 --
4255 IF l_debug_on THEN
4256 wsh_debug_sv.log(l_module_name,'Return Status After Calling derive_delivery_uom',l_return_status);
4257 END IF;
4258 --
4259 WSH_UTIL_CORE.api_post_call(
4260 p_return_status => l_return_status,
4261 x_num_warnings => l_num_warnings,
4262 x_num_errors => l_num_errors);
4263 --
4264 -- We need to nullify the Weight and Volumes if the organization is changed
4265 -- and if the existing uoms are not defined in the new organization.
4266 IF l_wt_nullify_flag THEN
4267 x_rec_attr_tab(l_index).net_weight := NULL;
4268 x_rec_attr_tab(l_index).gross_weight := NULL;
4269 END IF;
4270 IF l_vol_nullify_flag THEN
4271 x_rec_attr_tab(l_index).volume := NULL;
4272 END IF;
4273 --
4274 END IF;
4275 --
4276 --Bug 4140359
4277 IF NVL(p_caller,'-1') <> 'WSH_FSTRX' THEN --{
4278 IF NVL(x_rec_attr_tab(l_index).GROSS_WEIGHT,0) > 0
4279 OR NVL(x_rec_attr_tab(l_index).NET_WEIGHT,0) > 0 THEN
4280 IF x_rec_attr_tab(l_index).WEIGHT_UOM_CODE IS NULL THEN
4281 FND_MESSAGE.SET_NAME('WSH','WSH_WTVOL_NULL');
4282 wsh_util_core.add_message(wsh_util_core.g_ret_sts_error,l_module_name);
4283 RAISE FND_API.G_EXC_ERROR;
4284 END IF;
4285 END IF;
4286 --Bug 4140359
4287 IF NVL(x_rec_attr_tab(l_index).VOLUME,0) > 0
4288 AND x_rec_attr_tab(l_index).VOLUME_UOM_CODE IS NULL THEN
4289 FND_MESSAGE.SET_NAME('WSH','WSH_WTVOL_NULL');
4290 wsh_util_core.add_message(wsh_util_core.g_ret_sts_error,l_module_name);
4291 RAISE FND_API.G_EXC_ERROR;
4292 END IF;
4293 END IF; --}
4294 x_valid_index_tab(l_index) := l_index;
4295 --
4296 EXCEPTION
4297 --
4298 WHEN FND_API.G_EXC_ERROR THEN
4299 ROLLBACK TO VALIDATE_DLVY_GRP_LOOP;
4300 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4301 ROLLBACK TO VALIDATE_DLVY_GRP_LOOP;
4302 WHEN OTHERS THEN
4303 ROLLBACK TO VALIDATE_DLVY_GRP_LOOP;
4304 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4305 --
4306 END;
4307 --
4308 l_index := x_rec_attr_tab.NEXT(l_index);
4309 --
4310 END LOOP;
4311 --
4312 IF l_num_errors = x_rec_attr_tab.COUNT THEN
4313 RAISE FND_API.G_EXC_ERROR;
4314 ELSIF l_num_errors > 0 THEN
4315 RAISE WSH_UTIL_CORE.G_EXC_WARNING;
4316 ELSIF l_num_warnings > 0 THEN
4317 RAISE WSH_UTIL_CORE.G_EXC_WARNING;
4318 ELSE
4319 x_return_status := wsh_util_core.g_ret_sts_success;
4320 END IF;
4321
4322 /* Assumption is this should be taken care of by get_disabled list.
4323 l_assigned_to_trip := WSH_Delivery_Validations.Del_Assigned_To_Trip
4324 (p_delivery_id => x_rec_attr_tab(l_index).delivery_id,
4325 x_return_status => x_return_status);
4326 */
4327 IF l_debug_on THEN
4328 WSH_DEBUG_SV.pop(l_module_name);
4329 END IF;
4330 --
4331 EXCEPTION
4332 WHEN FND_API.G_EXC_ERROR THEN
4333 ROLLBACK TO VALIDATE_DELIVERY_GRP;
4334 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
4335 --
4336 IF l_debug_on THEN
4337 WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_ERROR exception has occured ',WSH_DEBUG_SV.C_EXCEP_LEVEL);
4338 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_ERROR');
4339 END IF;
4340 --
4341 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4342 ROLLBACK TO VALIDATE_DELIVERY_GRP;
4343 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR ;
4344 --
4345 IF l_debug_on THEN
4346 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
4347 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
4348 END IF;
4349 --
4350 WHEN WSH_UTIL_CORE.G_EXC_WARNING THEN
4351 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
4352 --
4353 IF l_debug_on THEN
4354 WSH_DEBUG_SV.logmsg(l_module_name,'WSH_UTIL_CORE.G_EXC_WARNING exception has occured ',WSH_DEBUG_SV.C_EXCEP_LEVEL);
4355 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_UTIL_CORE.G_EXC_WARNING');
4356 END IF;
4357 --
4358 WHEN OTHERS THEN
4359 ROLLBACK TO VALIDATE_DELIVERY_GRP;
4360 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR ;
4361 wsh_util_core.default_handler('WSH_DELIVERIES_GRP.VALIDATE_DELIVERY');
4362 --
4363 IF l_debug_on THEN
4364 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
4365 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
4366 END IF;
4367 --
4368 END Validate_Delivery;
4369
4370 --========================================================================
4371 -- PROCEDURE : Create_Update_Delivery Must be called only by the Form
4372 -- and the Wrapper Group API.
4373 --
4374 -- PARAMETERS: p_api_version_number known api version error buffer
4375 -- p_init_msg_list FND_API.G_TRUE to reset list
4376 -- x_return_status return status
4377 -- x_msg_count number of messages in the list
4378 -- x_msg_data text of messages
4379 -- p_in_rec Record for caller, phase
4380 -- and action_code ( CREATE-UPDATE )
4381 -- p_rec_attr_tab Table of attributes for the delivery entity
4382 -- x_del_out_rec_tab Table of delivery_id, and name of new deliveries,
4383 -- VERSION : current version 1.0
4384 -- initial version 1.0
4385 -- COMMENT : Creates or updates a record in wsh_new_deliveries table with information
4386 -- specified in p_delivery_info
4387 --========================================================================
4388 PROCEDURE Create_Update_Delivery
4389 ( p_api_version_number IN NUMBER,
4390 p_init_msg_list IN VARCHAR2,
4391 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE,
4392 p_in_rec IN del_In_Rec_Type,
4393 p_rec_attr_tab IN WSH_NEW_DELIVERIES_PVT.Delivery_Attr_Tbl_Type,
4394 x_del_out_rec_tab OUT NOCOPY Del_Out_Tbl_Type,
4395 x_return_status OUT NOCOPY VARCHAR2,
4396 x_msg_count OUT NOCOPY NUMBER,
4397 x_msg_data OUT NOCOPY VARCHAR2)
4398 IS
4399 --
4400 l_debug_on BOOLEAN;
4401 --
4402 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CREATE_UPDATE_DELIVERY';
4403 --
4404 l_index NUMBER;
4405 l_num_warnings NUMBER := 0;
4406 l_num_errors NUMBER := 0;
4407 l_return_status VARCHAR2(1);
4408 l_api_version_number CONSTANT NUMBER := 1.0;
4409 l_api_name CONSTANT VARCHAR2(30):= 'Create_Update_Delivery';
4410 l_msg_count NUMBER;
4411 l_msg_data VARCHAR2(32767);
4412
4413 --
4414 l_rec_attr_tab WSH_NEW_DELIVERIES_PVT.Delivery_Attr_Tbl_Type;
4415 l_index_tab wsh_util_core.id_tab_type;
4416 --
4417 l_input_param_flag BOOLEAN := TRUE;
4418 --
4419 l_param_name VARCHAR2(100);
4420 --
4421 --Compatibility Changes
4422 l_cc_validate_result VARCHAR2(1);
4423 l_cc_failed_records WSH_FTE_COMP_CONSTRAINT_PKG.failed_line_tab_type;
4424 l_cc_line_groups WSH_FTE_COMP_CONSTRAINT_PKG.line_group_tab_type;
4425 l_cc_group_info WSH_FTE_COMP_CONSTRAINT_PKG.cc_group_tab_type;
4426
4427
4428 l_cc_upd_dlvy_intmed_ship_to VARCHAR2(1);
4429 l_cc_upd_dlvy_ship_method VARCHAR2(1);
4430 l_cc_dlvy_intmed_ship_to NUMBER;
4431 l_cc_dlvy_ship_method VARCHAR2(30);
4432 l_cc_del_rows wsh_util_core.id_tab_type;
4433 l_cc_grouping_rows wsh_util_core.id_tab_type;
4434 l_cc_return_status VARCHAR2(1);
4435 l_cc_count_trip_rows NUMBER;
4436 l_cc_count_grouping_rows NUMBER;
4437 l_cc_trip_id wsh_util_core.id_tab_type;
4438 l_cc_trip_id_tab wsh_util_core.id_tab_type;
4439 b_cc_linefailed boolean;
4440 l_rec_attr_tab_temp WSH_NEW_DELIVERIES_PVT.Delivery_Attr_Tbl_Type;
4441 l_cc_count_success NUMBER;
4442
4443 --dummy tables for calling validate_constraint_mainper
4444 l_cc_del_attr_tab WSH_NEW_DELIVERIES_PVT.Delivery_Attr_Tbl_Type;
4445 l_cc_det_attr_tab wsh_glbl_var_strct_grp.Delivery_Details_Attr_Tbl_Type;
4446 l_cc_trip_attr_tab WSH_TRIPS_PVT.Trip_Attr_Tbl_Type;
4447 l_cc_stop_attr_tab WSH_TRIP_STOPS_PVT.Stop_Attr_Tbl_Type;
4448 l_cc_in_ids wsh_util_core.id_tab_type;
4449 l_cc_fail_ids wsh_util_core.id_tab_type;
4450 l_param_info WSH_SHIPPING_PARAMS_PVT.Parameter_Rec_Typ;
4451 l_log_itm_exc VARCHAR2(1);
4452
4453 --Compatibility Changes
4454
4455 CURSOR c_getorgcarriersmc(p_delid NUMBER) IS
4456 SELECT organization_id, name, ship_method_code, carrier_id
4457 FROM wsh_new_deliveries
4458 WHERE delivery_id = p_delid
4459 and ignore_for_planning<>'Y';
4460
4461 l_wh_type VARCHAR2(3);
4462 l_organization_id wsh_new_deliveries.organization_id%TYPE;
4463 l_smc wsh_new_deliveries.ship_method_code%TYPE;
4464 l_carrier_id wsh_new_deliveries.carrier_id%TYPE;
4465 l_ignore_for_planning wsh_new_deliveries.ignore_for_planning%TYPE;
4466 l_tmp_ignore wsh_new_deliveries.ignore_for_planning%TYPE;
4467 l_tmp_del_ids wsh_util_core.id_tab_type;
4468
4469 -- Pack J: LCSS Rate Delivery.
4470 l_exception_id NUMBER;
4471 l_exception_message VARCHAR2(2000);
4472 l_in_param_rec WSH_FTE_INTEGRATION.rate_del_in_param_rec;
4473 l_out_param_rec WSH_FTE_INTEGRATION.rate_del_out_param_rec;
4474 l_error_text VARCHAR2(2000);
4475 l_delivery_rows wsh_util_core.id_tab_type;
4476 --
4477
4478 --OTM R12 Org-Specific Start.
4479 l_gc3_is_installed VARCHAR2(1);
4480 --OTM R12 End.
4481
4482 RECORD_LOCKED EXCEPTION;
4483 PRAGMA EXCEPTION_INIT(RECORD_LOCKED, -54);
4484 --
4485 --Bugfix 4070732
4486 l_api_session_name CONSTANT VARCHAR2(150) := G_PKG_NAME ||'.' || l_module_name;
4487 l_reset_flags BOOLEAN;
4488
4489 BEGIN
4490 -- Bug 4070732
4491 IF WSH_UTIL_CORE.G_START_OF_SESSION_API is null THEN --Bugfix 4070732
4492 WSH_UTIL_CORE.G_START_OF_SESSION_API := l_api_session_name;
4493 WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API := FALSE;
4494 END IF;
4495
4496
4497 --
4498 --
4499 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
4500 --
4501 IF l_debug_on IS NULL
4502 THEN
4503 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
4504 END IF;
4505 --
4506 SAVEPOINT CREATE_UPDATE_DELIVERY_GRP;
4507 --
4508 IF NOT FND_API.Compatible_API_Call
4509 ( l_api_version_number,
4510 p_api_version_number,
4511 l_api_name,
4512 G_PKG_NAME
4513 )
4514 THEN
4515 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4516 END IF;
4517 --
4518 IF FND_API.to_Boolean(p_init_msg_list) THEN
4519 FND_MSG_PUB.initialize;
4520 END IF;
4521 --
4522
4523 --OMT R12 Org-Specific Start
4524 l_gc3_is_installed := WSH_UTIL_CORE.G_GC3_IS_INSTALLED;
4525 IF l_gc3_is_installed IS NULL THEN
4526 l_gc3_is_installed := WSH_UTIL_CORE.GC3_IS_INSTALLED;
4527 END IF;
4528 IF l_debug_on THEN
4529 WSH_DEBUG_SV.log(l_module_name,'l_gc3_is_installed ',
4530 l_gc3_is_installed);
4531 END IF;
4532 --OTM R12 End.
4533
4534 IF l_debug_on THEN
4535 --
4536 wsh_debug_sv.push (l_module_name);
4537 wsh_debug_sv.log (l_module_name,'action_code',p_in_rec.action_code);
4538 wsh_debug_sv.log (l_module_name,'caller',p_in_rec.caller);
4539 wsh_debug_sv.log (l_module_name,'COUNT',p_rec_attr_tab.COUNT);
4540 --
4541 END IF;
4542 --
4543 IF p_in_rec.action_code IS NULL THEN
4544 l_param_name := 'p_in_rec.action_code';
4545 l_input_param_flag := FALSE;
4546 ELSIF p_in_rec.caller IS NULL THEN
4547 l_param_name := 'p_in_rec.caller';
4548 l_input_param_flag := FALSE;
4549 ELSIF p_rec_attr_tab.COUNT = 0 THEN
4550 l_param_name := 'p_rec_attr_tab.COUNT';
4551 l_input_param_flag := FALSE;
4552 END IF;
4553
4554 IF not l_input_param_flag THEN
4555 FND_MESSAGE.SET_NAME('WSH','WSH_REQUIRED_FIELD_NULL');
4556 FND_MESSAGE.SET_TOKEN('FIELD_NAME',l_param_name);
4557 x_return_status := wsh_util_core.g_ret_sts_error;
4558 wsh_util_core.add_message(x_return_status,l_module_name);
4559 RAISE FND_API.G_EXC_ERROR;
4560 END IF;
4561 --
4562 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
4563 --
4564 WSH_ACTIONS_LEVELS.set_validation_level (
4565 p_entity => 'DLVY',
4566 p_caller => p_in_rec.caller,
4567 p_phase => nvl(p_in_rec.phase,1),
4568 p_action => p_in_rec.action_code ,
4569 x_return_status => l_return_status);
4570 --
4571 IF l_debug_on THEN
4572 wsh_debug_sv.log(l_module_name,'Return Status After Calling set_validation_level',l_return_status);
4573 END IF;
4574 --
4575 wsh_util_core.api_post_call(
4576 p_return_status => l_return_status,
4577 x_num_warnings => l_num_warnings,
4578 x_num_errors => l_num_errors);
4579 --
4580 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_DISABLED_LIST_LVL) = 1 THEN
4581 --
4582 l_index := p_rec_attr_tab.FIRST;
4583 WHILE l_index is not null LOOP
4584 BEGIN
4585 SAVEPOINT DLVY_GRP_GET_DISAB_LIST_LOOP;
4586
4587 WSH_DELIVERY_VALIDATIONS.get_disabled_list(
4588 p_delivery_rec => p_rec_attr_tab(l_index),
4589 p_in_rec => p_in_rec,
4590 x_return_status => l_return_status,
4591 x_msg_count => l_msg_count,
4592 x_msg_data => l_msg_data,
4593 x_delivery_rec => l_rec_attr_tab(l_index));
4594 --
4595 IF l_debug_on THEN
4596 wsh_debug_sv.log(l_module_name,'Return Status After Calling get_disabled_list',l_return_status);
4597 END IF;
4598 --
4599 WSH_UTIL_CORE.api_post_call(
4600 p_return_status => l_return_status,
4601 x_num_warnings => l_num_warnings,
4602 x_num_errors => l_num_errors,
4603 p_msg_data => l_msg_data);
4604 --
4605 EXCEPTION
4606 WHEN FND_API.G_EXC_ERROR THEN
4607 ROLLBACK TO DLVY_GRP_GET_DISAB_LIST_LOOP;
4608 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4609 ROLLBACK TO DLVY_GRP_GET_DISAB_LIST_LOOP;
4610 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4611 WHEN OTHERS THEN
4612 ROLLBACK TO DLVY_GRP_GET_DISAB_LIST_LOOP;
4613 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4614 END;
4615 --
4616 l_index := p_rec_attr_tab.NEXT(l_index);
4617 --
4618 END LOOP;
4619 --
4620 ELSE
4621 --
4622 l_rec_attr_tab := p_rec_attr_tab;
4623 --
4624 END IF;
4625 --
4626 IF WSH_ACTIONS_LEVELS.g_validation_level_tab(WSH_ACTIONS_LEVELS.C_VALIDATE_CONSTRAINTS_LVL) = 1 THEN --{
4627 --Compatibility Constraints
4628 --Compatiblity Changes
4629 IF wsh_util_core.fte_is_installed = 'Y' THEN
4630
4631 WSH_FTE_COMP_CONSTRAINT_PKG.validate_constraint_main(
4632 p_api_version_number => p_api_version_number,
4633 p_init_msg_list => FND_API.G_FALSE,
4634 p_entity_type => 'D',
4635 p_target_id => null,
4636 p_action_code => p_in_rec.action_code,
4637 p_del_attr_tab => l_rec_attr_tab,
4638 p_det_attr_tab => l_cc_det_attr_tab,
4639 p_trip_attr_tab => l_cc_trip_attr_tab,
4640 p_stop_attr_tab => l_cc_stop_attr_tab,
4641 p_in_ids => l_cc_in_ids,
4642 x_fail_ids => l_cc_fail_ids,
4643 x_validate_result => l_cc_validate_result,
4644 x_failed_lines => l_cc_failed_records,
4645 x_line_groups => l_cc_line_groups,
4646 x_group_info => l_cc_group_info,
4647 x_msg_count => l_msg_count,
4648 x_msg_data => l_msg_data,
4649 x_return_status => l_return_status);
4650
4651
4652 IF l_debug_on THEN
4653 wsh_debug_sv.log(l_module_name,'Return Status After Calling validate_constraint_dlvy_wrap',l_return_status);
4654 wsh_debug_sv.log(l_module_name,'validate_result After Calling validate_constraint_main',l_cc_validate_result);
4655 wsh_debug_sv.log(l_module_name,'msg_count After Calling validate_constraint_main',l_msg_count);
4656 wsh_debug_sv.log(l_module_name,'msg_data After Calling validate_constraint_main',l_msg_data);
4657 wsh_debug_sv.log(l_module_name,'fail_ids count After Calling validate_constraint_main',l_cc_failed_records.COUNT);
4658 wsh_debug_sv.log(l_module_name,'l_cc_line_groups.count count After Calling validate_constraint_main',l_cc_line_groups.COUNT);
4659 wsh_debug_sv.log(l_module_name,'group_info count After Calling validate_constraint_main',l_cc_group_info.COUNT);
4660 END IF;
4661
4662
4663 IF l_return_status=wsh_util_core.g_ret_sts_error THEN
4664 --fix p_rec_attr_tab to have only successful records
4665 l_cc_count_success:=1;
4666
4667 IF l_debug_on THEN
4668 wsh_debug_sv.log(l_module_name,'l_rec_attr_tab count before removing failed lines',l_rec_attr_tab.COUNT);
4669 END IF;
4670
4671 IF l_cc_failed_records.COUNT>0 AND l_rec_attr_tab.COUNT>0 THEN
4672
4673 IF l_cc_failed_records.COUNT=l_rec_attr_tab.COUNT THEN
4674 IF l_debug_on THEN
4675 wsh_debug_sv.logmsg(l_module_name,'all dels failed compatibility check');
4676 END IF;
4677 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_COMP_FAILED');
4678 wsh_util_core.api_post_call(
4679 p_return_status => l_return_status,
4680 x_num_warnings => l_num_warnings,
4681 x_num_errors => l_num_errors,
4682 p_msg_data => l_msg_data);
4683 ELSE
4684 l_return_status:=wsh_util_core.g_ret_sts_warning;
4685 END IF;
4686
4687
4688 FOR i in l_rec_attr_tab.FIRST..l_rec_attr_tab.LAST LOOP
4689 b_cc_linefailed:=FALSE;
4690 FOR j in l_cc_failed_records.FIRST..l_cc_failed_records.LAST LOOP
4691 --for create, in WSHFTCCB, dummy delivery_id (index of l_rec_attr_tab)
4692 --is passed so use that to remove rec
4693 IF (p_in_rec.action_code='CREATE' AND l_rec_attr_tab(i).delivery_id is null
4694 AND i=l_cc_failed_records(j).entity_line_id) THEN
4695 b_cc_linefailed:=TRUE;
4696 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_COMP_FAILED');
4697 FND_MESSAGE.SET_TOKEN('DEL_ID',l_rec_attr_tab(i).name);
4698 ELSIF (l_rec_attr_tab(i).delivery_id=l_cc_failed_records(j).entity_line_id) THEN
4699 b_cc_linefailed:=TRUE;
4700 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_COMP_FAILED');
4701 FND_MESSAGE.SET_TOKEN('DEL_ID',l_cc_failed_records(j).entity_line_id);
4702 END IF;
4703 END LOOP;
4704 IF (NOT(b_cc_linefailed)) THEN
4705 l_rec_attr_tab_temp(l_cc_count_success):=l_rec_attr_tab(i);
4706 l_cc_count_success:=l_cc_count_success+1;
4707 END IF;
4708 END LOOP;
4709
4710 IF l_rec_attr_tab_temp.COUNT>0 THEN
4711 l_rec_attr_tab:=l_rec_attr_tab_temp;
4712 END IF;
4713
4714 ELSE
4715 l_return_status:=wsh_util_core.g_ret_sts_warning;
4716 END IF;--failed_records.count>0
4717
4718
4719 IF l_debug_on THEN
4720 wsh_debug_sv.log(l_module_name,'del rec_attr_tab count after removing failed lines',l_rec_attr_tab.COUNT);
4721 END IF;
4722 --fix p_rec_attr_tab to have only successful records
4723 END IF;--error
4724
4725
4726 IF l_return_status=wsh_util_core.g_ret_sts_error and l_cc_failed_records.COUNT<>l_rec_attr_tab.COUNT THEN
4727 l_return_status:=wsh_util_core.g_ret_sts_warning;
4728 END IF;
4729
4730
4731 --
4732 wsh_util_core.api_post_call(
4733 p_return_status => l_return_status,
4734 x_num_warnings => l_num_warnings,
4735 x_num_errors => l_num_errors,
4736 p_msg_data => l_msg_data);
4737
4738 END IF;
4739
4740 --Compatibility Constraints
4741 END IF; --}
4742 -- Bug# 5191354: Parameter p_in_rec_attr_tab has been added to the API.
4743 Validate_Delivery (
4744 x_rec_attr_tab => l_rec_attr_tab ,
4745 p_in_rec_attr_tab => p_rec_attr_tab, --Bug 5191354
4746 p_action_code => p_in_rec.action_code,
4747 p_caller => p_in_rec.caller,
4748 x_valid_index_tab => l_index_tab,
4749 x_return_status => l_return_status);
4750 --
4751 WSH_UTIL_CORE.api_post_call(
4752 p_return_status => l_return_status,
4753 x_num_warnings => l_num_warnings,
4754 x_num_errors => l_num_errors);
4755 --
4756 IF l_debug_on THEN
4757 wsh_debug_sv.log(l_module_name,'Return Status After Calling validate_delivery',l_return_status);
4758 END IF;
4759 --
4760 l_index := l_index_tab.FIRST;
4761 WHILE l_index is not null LOOP
4762 BEGIN
4763 --
4764 SAVEPOINT CREATE_UPDATE_DLVY_GRP_LOOP;
4765 --
4766 IF p_in_rec.action_code = 'CREATE' THEN
4767
4768 /*** J changes TP release ****/
4769 l_tmp_ignore := l_rec_attr_tab(l_index).ignore_for_planning;
4770 IF (wsh_util_core.TP_is_installed ='Y' OR l_gc3_is_installed = 'Y' ) --OTM R12 Org-Specific . Added second OR condition
4771 AND (
4772 (l_tmp_ignore is null OR l_tmp_ignore=FND_API.G_MISS_CHAR)
4773 OR (l_tmp_ignore is not null AND l_tmp_ignore='N')-- need to check this as form always passes 'N'
4774 ) THEN
4775
4776 l_wh_type := WSH_EXTERNAL_INTERFACE_SV.Get_Warehouse_Type
4777 (p_organization_id => l_rec_attr_tab(l_index).organization_id,
4778 p_carrier_id => l_rec_attr_tab(l_index).carrier_id,
4779 p_ship_method_code => l_rec_attr_tab(l_index).ship_method_code,
4780 p_msg_display => 'N',
4781 x_return_status => l_return_status
4782 );
4783
4784 IF l_debug_on THEN
4785 WSH_DEBUG_SV.log(l_module_name,' Get_Warehouse_Type l_wh_type,l_return_status',l_wh_type||l_return_status);
4786 END IF;
4787 WSH_UTIL_CORE.api_post_call(
4788 p_return_status => l_return_status,
4789 x_num_warnings => l_num_warnings,
4790 x_num_errors => l_num_errors);
4791
4792
4793 IF (nvl(l_wh_type, FND_API.G_MISS_CHAR) IN ('TPW','CMS')) THEN
4794 l_ignore_for_planning:='Y';
4795 --OTM R12 Org-Specific Start
4796 ELSIF (l_gc3_is_installed = 'Y') THEN
4797 wsh_util_validate.calc_ignore_for_planning(
4798 p_organization_id => l_rec_attr_tab(l_index).organization_id
4799 ,p_carrier_id => NULL
4800 ,p_ship_method_code => NULL
4801 ,p_tp_installed => NULL
4802 ,p_caller => NULL
4803 ,x_ignore_for_planning => l_ignore_for_planning
4804 ,x_return_status => l_return_status
4805 ,p_otm_installed => 'Y');
4806 IF l_debug_on THEN
4807 WSH_DEBUG_SV.log(l_module_name,'After call to wsh_util_validate.ca'
4808 ||'lc_ignore_for_planning l_return_status',l_return_status);
4809 WSH_DEBUG_SV.log(l_module_name,'l_ignore_for_planning ',
4810 l_ignore_for_planning );
4811 END IF;
4812 IF (l_return_status in (WSH_UTIL_CORE.G_RET_STS_ERROR,
4813 WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR)) THEN
4814 RAISE FND_API.G_EXC_ERROR;
4815 END IF;
4816 END IF;
4817 --OTM R12 End.
4818 ELSIF (l_tmp_ignore='Y' and
4819 (WSH_UTIL_CORE.TP_Is_Installed ='Y' OR
4820 l_gc3_is_installed = 'Y')) THEN
4821 l_ignore_for_planning:=l_tmp_ignore;
4822 ELSE
4823 l_ignore_for_planning:='N';
4824 END IF;
4825
4826 --OTM R12 Org-Specific Start
4827 IF l_debug_on THEN
4828 WSH_DEBUG_SV.log(l_module_name,'l_ignore_for_planning ',l_ignore_for_planning);
4829 END IF;
4830 --OTM R12 End.
4831 l_rec_attr_tab(l_index).ignore_for_planning:=l_ignore_for_planning;
4832 /*** J changes TP release ****/
4833
4834
4835 WSH_DELIVERY_AUTOCREATE.Create_Update_Hash(
4836 p_delivery_rec => l_rec_attr_tab(l_index),
4837 x_return_status => l_return_status);
4838
4839 WSH_UTIL_CORE.api_post_call(
4840 p_return_status => l_return_status,
4841 x_num_warnings => l_num_warnings,
4842 x_num_errors => l_num_errors);
4843
4844
4845
4846 --
4847 WSH_NEW_DELIVERIES_PVT.Create_Delivery(
4848 p_delivery_info => l_rec_attr_tab(l_index),
4849 x_rowid => x_del_out_rec_tab(l_index).rowid,
4850 x_delivery_id => x_del_out_rec_tab(l_index).delivery_id,
4851 x_name => x_del_out_rec_tab(l_index).name,
4852 x_return_status => l_return_status);
4853 --
4854 IF l_debug_on THEN
4855 wsh_debug_sv.log(l_module_name,'Return Status After Calling Create Delivery',l_return_status);
4856 END IF;
4857
4858 IF l_debug_on THEN
4859 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_SHIPPING_PARAMS_PVT.Get',WSH_DEBUG_SV.C_PROC_LEVEL);
4860 END IF;
4861
4862 --
4863 WSH_UTIL_CORE.api_post_call(
4864 p_return_status => l_return_status,
4865 x_num_warnings => l_num_warnings,
4866 x_num_errors => l_num_errors);
4867
4868 WSH_SHIPPING_PARAMS_PVT.Get(
4869 p_organization_id => l_rec_attr_tab(l_index).organization_id,
4870 x_param_info => l_param_info,
4871 x_return_status => l_return_status
4872 );
4873
4874 IF l_debug_on THEN
4875 wsh_debug_sv.log(l_module_name,'Return Status After Calling WSH_SHIPPING_PARAMS_PVT.Get',l_return_status);
4876 END IF;
4877
4878 WSH_UTIL_CORE.api_post_call(
4879 p_return_status => l_return_status,
4880 x_num_warnings => l_num_warnings,
4881 x_num_errors => l_num_errors);
4882
4883 IF l_param_info.export_screening_flag IN ('C', 'A')
4884 AND NVL(l_rec_attr_tab(l_index).shipment_Direction,'O') IN ('O','IO') -- J-IB-NPARIKH
4885 THEN
4886
4887 -- ITM Check applicable only for outbound (O/IO) delivery.
4888 --
4889 IF l_debug_on THEN
4890 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_DELIVERY_VALIDATIONS.Check_ITM_Required',WSH_DEBUG_SV.C_PROC_LEVEL);
4891 END IF;
4892
4893 l_log_itm_exc := WSH_DELIVERY_VALIDATIONS.Check_ITM_Required
4894 (p_delivery_id => x_del_out_rec_tab(l_index).delivery_id,
4895 x_return_status => l_return_status);
4896 IF l_debug_on THEN
4897 wsh_debug_sv.log(l_module_name,'Return Status After Calling WSH_DELIVERY_VALIDATIONS.Check_ITM_Required',l_return_status);
4898 END IF;
4899
4900 WSH_UTIL_CORE.api_post_call(
4901 p_return_status => l_return_status,
4902 x_num_warnings => l_num_warnings,
4903 x_num_errors => l_num_errors);
4904
4905 IF l_log_itm_exc = 'Y' THEN
4906 IF l_debug_on THEN
4907 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_DELIVERY_VALIDATIONS.Log_ITM_Exception',WSH_DEBUG_SV.C_PROC_LEVEL);
4908 END IF;
4909 WSH_DELIVERY_VALIDATIONS.Log_ITM_Exception (
4910 p_delivery_id => x_del_out_rec_tab(l_index).delivery_id,
4911 p_action_type => 'CREATE_DELIVERY',
4912 p_ship_from_location_id => l_rec_attr_tab(l_index).initial_pickup_location_id,
4913 x_return_status => l_return_status);
4914 IF l_debug_on THEN
4915 wsh_debug_sv.log(l_module_name,'Return Status After Calling WSH_DELIVERY_VALIDATIONS.Log_ITM_Exception',l_return_status);
4916 END IF;
4917
4918 WSH_UTIL_CORE.api_post_call(
4919 p_return_status => l_return_status,
4920 x_num_warnings => l_num_warnings,
4921 x_num_errors => l_num_errors);
4922 END IF;
4923
4924 END IF;
4925 --
4926 -- Pack J: Auto Select Carrier if the parameter is set.
4927 IF NVL(l_param_info.auto_apply_routing_rules, 'N') = 'D' THEN
4928
4929 IF l_debug_on THEN
4930 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_NEW_DELIVERY_ACTIONS.PROCESS_CARRIER_SELECTION',WSH_DEBUG_SV.C_PROC_LEVEL);
4931 END IF;
4932 --
4933 l_delivery_rows(1) := x_del_out_rec_tab(l_index).delivery_id;
4934
4935 WSH_NEW_DELIVERY_ACTIONS.PROCESS_CARRIER_SELECTION(p_delivery_id_tab => l_delivery_rows,
4936 p_batch_id => null,
4937 p_form_flag => 'N',
4938 x_return_message => l_error_text,
4939 x_return_status => l_return_status);
4940
4941
4942 IF (l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
4943
4944 IF l_debug_on THEN
4945 WSH_DEBUG_SV.logmsg(l_module_name, 'ERROR OCCURRED WHILST PROCESSING CARRIER SELECTION' );
4946 END IF;
4947
4948 l_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
4949
4950 END IF;
4951
4952 WSH_UTIL_CORE.api_post_call(
4953 p_return_status => l_return_status,
4954 x_num_warnings => l_num_warnings,
4955 x_num_errors => l_num_errors);
4956
4957 END IF;
4958
4959 --
4960 ELSE
4961
4962 -- J-IB-NPARIKH-{
4963 IF NVL(l_rec_attr_tab(l_index).shipment_direction,'O') NOT IN ('O','IO')
4964 THEN
4965 --{
4966 --
4967 -- Update ship-from location on delivery,lines and associated trip stops
4968 --
4969 WSH_NEW_DELIVERY_ACTIONS.update_ship_from_location
4970 (
4971 p_delivery_id => l_rec_attr_tab(l_index).delivery_id,
4972 p_location_id => l_rec_attr_tab(l_index).initial_pickup_location_id,
4973 x_return_status => l_return_status
4974 );
4975 --
4976 IF l_debug_on THEN
4977 wsh_debug_sv.log(l_module_name,'Return Status After Calling update_ship_from_location',l_return_status);
4978 END IF;
4979 --
4980 WSH_UTIL_CORE.api_post_call(
4981 p_return_status => l_return_status,
4982 x_num_warnings => l_num_warnings,
4983 x_num_errors => l_num_errors);
4984 --}
4985 END IF;
4986 --
4987 --
4988 -- J-IB-NPARIKH-}
4989
4990 WSH_DELIVERY_AUTOCREATE.Create_Update_Hash(
4991 p_delivery_rec => l_rec_attr_tab(l_index),
4992 x_return_status => l_return_status);
4993
4994 WSH_UTIL_CORE.api_post_call(
4995 p_return_status => l_return_status,
4996 x_num_warnings => l_num_warnings,
4997 x_num_errors => l_num_errors);
4998
4999
5000
5001 WSH_NEW_DELIVERIES_PVT.Update_Delivery(
5002 p_rowid => l_rec_attr_tab(l_index).rowid,
5003 p_delivery_info => l_rec_attr_tab(l_index),
5004 x_return_status => l_return_status);
5005 --
5006 IF l_debug_on THEN
5007 wsh_debug_sv.log(l_module_name,'Return Status After Calling Update Delivery',l_return_status);
5008 END IF;
5009 --
5010 --
5011 WSH_UTIL_CORE.api_post_call(
5012 p_return_status => l_return_status,
5013 x_num_warnings => l_num_warnings,
5014 x_num_errors => l_num_errors);
5015
5016 /***TP Release**/
5017 --TP Release : if carrier or smc is changed, if they are CMS/TPW, call change_ignoreplan_status
5018 l_organization_id:=l_rec_attr_tab(l_index).organization_id;
5019 l_smc:=l_rec_attr_tab(l_index).ship_method_code;
5020 l_carrier_id:=l_rec_attr_tab(l_index).carrier_id;
5021
5022 IF (l_carrier_id is not null
5023 OR l_smc is not null
5024 OR l_organization_id is not null
5025 ) AND (WSH_UTIL_CORE.TP_Is_Installed = 'Y'
5026 OR l_gc3_is_installed = 'Y') THEN
5027
5028 FOR cur in c_getorgcarriersmc (l_rec_attr_tab(l_index).delivery_id) LOOP
5029 IF l_organization_id is null THEN
5030 l_organization_id:=cur.organization_id;
5031 END IF;
5032 IF l_smc is null THEN
5033 l_smc:=cur.ship_method_code;
5034 END IF;
5035 IF l_carrier_id is null THEN
5036 l_carrier_id:=cur.carrier_id;
5037 END IF;
5038 l_wh_type := WSH_EXTERNAL_INTERFACE_SV.Get_Warehouse_Type
5039 (p_organization_id => l_organization_id,
5040 x_return_status => l_return_status,
5041 p_carrier_id => l_carrier_id,
5042 p_ship_method_code=> l_smc,
5043 p_msg_display => 'N');
5044
5045 IF l_debug_on THEN
5046 WSH_DEBUG_SV.log(l_module_name,'Get_Warehouse_Type organization_id,l_wh_type,l_return_status',l_organization_id||l_wh_type||l_return_status);
5047 WSH_DEBUG_SV.log(l_module_name,'carrier_id',l_carrier_id);
5048 WSH_DEBUG_SV.log(l_module_name,'smc',l_smc);
5049 WSH_DEBUG_SV.log(l_module_name,'l_ignore',l_ignore_for_planning);
5050 END IF;
5051
5052 WSH_UTIL_CORE.api_post_call(
5053 p_return_status => l_return_status,
5054 x_num_warnings => l_num_warnings,
5055 x_num_errors => l_num_errors);
5056
5057 --if org is a tpw/cms and current ignore plan is 'N', change ignore plan by
5058 --calling api.
5059
5060 IF (nvl(l_wh_type, FND_API.G_MISS_CHAR) IN ('TPW','CMS')) THEN
5061 l_tmp_del_ids.delete;
5062 l_tmp_del_ids(1):=l_rec_attr_tab(l_index).delivery_id;
5063 wsh_tp_release.change_ignoreplan_status
5064 (p_entity => 'DLVY',
5065 p_in_ids => l_tmp_del_ids,
5066 p_action_code => 'IGNORE_PLAN',
5067 x_return_status => l_return_status);
5068 IF l_debug_on THEN
5069 wsh_debug_sv.log(l_module_name,'Return Status After Calling change_ignoreplan_sttatus',l_return_status);
5070 END IF;
5071 WSH_UTIL_CORE.api_post_call(
5072 p_return_status => l_return_status,
5073 x_num_warnings => l_num_warnings,
5074 x_num_errors => l_num_errors);
5075 END IF;
5076
5077 END LOOP;
5078 END IF;
5079 /***TP Release**/
5080 END IF; -- End if For p_in_rec.action_code Check for CREATE or UDPATE.
5081 --
5082 EXCEPTION
5083 WHEN FND_API.G_EXC_ERROR THEN
5084 ROLLBACK TO CREATE_UPDATE_DLVY_GRP_LOOP;
5085 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5086 ROLLBACK TO CREATE_UPDATE_DLVY_GRP_LOOP;
5087 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5088 WHEN OTHERS THEN
5089 ROLLBACK TO CREATE_UPDATE_DLVY_GRP_LOOP;
5090 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5091 END;
5092 --
5093 l_index := l_index_tab.NEXT(l_index);
5094 --
5095 END LOOP;
5096 --
5097
5098 IF (l_num_errors = l_rec_attr_tab.count ) THEN
5099 RAISE FND_API.G_EXC_ERROR;
5100 ELSIF (l_num_errors > 0 ) THEN
5101 RAISE WSH_UTIL_CORE.G_EXC_WARNING;
5102 ELSIF (l_num_warnings > 0 ) THEN
5103 RAISE WSH_UTIL_CORE.G_EXC_WARNING;
5104 ELSE
5105 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
5106 END IF;
5107
5108 -- Standard check of p_commit.
5109 IF FND_API.To_Boolean( p_commit ) THEN
5110
5111 --bug 4070732
5112 IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
5113 --{
5114
5115 l_reset_flags := FALSE;
5116
5117 IF l_debug_on THEN
5118 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Process_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
5119 END IF;
5120
5121 WSH_UTIL_CORE.Process_stops_for_load_tender(p_reset_flags => l_reset_flags,
5122 x_return_status => l_return_status);
5123
5124 IF l_debug_on THEN
5125 WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
5126 END IF;
5127
5128 IF l_return_status = WSH_UTIL_CORE.G_RET_STS_ERROR THEN
5129 RAISE FND_API.G_EXC_ERROR;
5130 ELSIF l_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR THEN
5131 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5132 ELSIF l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING THEN
5133 RAISE WSH_UTIL_CORE.G_EXC_WARNING;
5134 END IF;
5135
5136 --}
5137 END IF;
5138 --bug 4070732
5139
5140 COMMIT WORK;
5141 END IF;
5142 --
5143 --bug 4070732
5144 IF upper(WSH_UTIL_CORE.G_START_OF_SESSION_API) = upper(l_api_session_name) THEN
5145 --{
5146 IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
5147 --{
5148
5149 IF FND_API.To_Boolean( p_commit ) THEN
5150
5151 IF l_debug_on THEN
5152 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.reset_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
5153 END IF;
5154
5155 WSH_UTIL_CORE.reset_stops_for_load_tender(p_reset_flags => TRUE,
5156 x_return_status => l_return_status);
5157 ELSE
5158
5159 IF l_debug_on THEN
5160 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Process_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
5161 END IF;
5162
5163 WSH_UTIL_CORE.Process_stops_for_load_tender(p_reset_flags => TRUE,
5164 x_return_status => l_return_status);
5165
5166 END IF;
5167
5168 IF l_debug_on THEN
5169 WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
5170 END IF;
5171
5172 IF l_return_status IN (WSH_UTIL_CORE.G_RET_STS_ERROR,
5173 WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR,
5174 WSH_UTIL_CORE.G_RET_STS_WARNING) THEN
5175 x_return_status := l_return_status;
5176 END IF;
5177
5178 IF l_return_status IN (WSH_UTIL_CORE.G_RET_STS_ERROR,
5179 WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR) THEN
5180 IF NOT FND_API.To_Boolean( p_commit ) THEN
5181 ROLLBACK TO CREATE_UPDATE_DELIVERY_GRP;
5182 END IF;
5183 END IF;
5184
5185 --}
5186 END IF;
5187 --}
5188 END IF;
5189
5190 --bug 4070732
5191 --
5192 FND_MSG_PUB.Count_And_Get (
5193 p_count => x_msg_count,
5194 p_data => x_msg_data,
5195 p_encoded => FND_API.G_FALSE);
5196 --
5197 IF l_debug_on THEN
5198 WSH_DEBUG_SV.pop(l_module_name);
5199 END IF;
5200 --
5201 EXCEPTION
5202 WHEN RECORD_LOCKED THEN
5203 ROLLBACK TO CREATE_UPDATE_DELIVERY_GRP;
5204 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
5205 FND_MESSAGE.Set_Name('WSH', 'WSH_NO_LOCK');
5206 wsh_util_core.add_message(x_return_status,l_module_name);
5207 --
5208 -- Start code for Bugfix 4070732
5209 --
5210 IF upper(WSH_UTIL_CORE.G_START_OF_SESSION_API) = upper(l_api_session_name) THEN
5211 --{
5212 IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
5213 --{
5214 IF l_debug_on THEN
5215 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Reset_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
5216 END IF;
5217
5218 WSH_UTIL_CORE.Reset_stops_for_load_tender(p_reset_flags => TRUE,
5219 x_return_status => l_return_status);
5220
5221
5222 IF l_debug_on THEN
5223 WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
5224 END IF;
5225
5226 IF (l_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR) THEN
5227 x_return_status := l_return_status;
5228 END IF;
5229 --}
5230 END IF;
5231 --}
5232 END IF;
5233 --
5234 -- End of Code Bugfix 4070732
5235 --
5236 FND_MSG_PUB.Count_And_Get (
5237 p_count => x_msg_count,
5238 p_data => x_msg_data,
5239 p_encoded => FND_API.G_FALSE);
5240
5241 IF l_debug_on THEN
5242 WSH_DEBUG_SV.logmsg(l_module_name,'RECORD_LOCKED exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
5243 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:RECORD_LOCKED');
5244 END IF;
5245
5246 WHEN FND_API.G_EXC_ERROR THEN
5247 ROLLBACK TO CREATE_UPDATE_DELIVERY_GRP;
5248 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
5249 --
5250 -- Start code for Bugfix 4070732
5251 --
5252 IF upper(WSH_UTIL_CORE.G_START_OF_SESSION_API) = upper(l_api_session_name) THEN
5253 --{
5254 IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
5255 --{
5256 IF l_debug_on THEN
5257 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Reset_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
5258 END IF;
5259
5260 WSH_UTIL_CORE.Reset_stops_for_load_tender(p_reset_flags => TRUE,
5261 x_return_status => l_return_status);
5262
5263
5264 IF l_debug_on THEN
5265 WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
5266 END IF;
5267
5268 IF (l_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR) THEN
5269 x_return_status := l_return_status;
5270 END IF;
5271 --}
5272 END IF;
5273 --}
5274 END IF;
5275 --
5276 -- End of Code Bugfix 4070732
5277 --
5278 FND_MSG_PUB.Count_And_Get
5279 (
5280 p_count => x_msg_count,
5281 p_data => x_msg_data,
5282 p_encoded => FND_API.G_FALSE
5283 );
5284
5285 IF l_debug_on THEN
5286 WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_ERROR exception has occured ',WSH_DEBUG_SV.C_EXCEP_LEVEL);
5287 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_ERROR');
5288 END IF;
5289 --
5290 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5291 ROLLBACK TO CREATE_UPDATE_DELIVERY_GRP;
5292 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR ;
5293
5294 --
5295 -- Start code for Bugfix 4070732
5296 --
5297 IF upper(WSH_UTIL_CORE.G_START_OF_SESSION_API) = upper(l_api_session_name) THEN
5298 --{
5299 IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
5300 --{
5301 IF l_debug_on THEN
5302 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Reset_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
5303 END IF;
5304
5305 WSH_UTIL_CORE.Reset_stops_for_load_tender(p_reset_flags => TRUE,
5306 x_return_status => l_return_status);
5307
5308
5309 IF l_debug_on THEN
5310 WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
5311 END IF;
5312
5313 IF (l_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR) THEN
5314 x_return_status := l_return_status;
5315 END IF;
5316 --}
5317 END IF;
5318 --}
5319 END IF;
5320 --
5321 -- End of Code Bugfix 4070732
5322 --
5323 FND_MSG_PUB.Count_And_Get
5324 (
5325 p_count => x_msg_count,
5326 p_data => x_msg_data,
5327 p_encoded => FND_API.G_FALSE
5328 );
5329
5330 --
5331 IF l_debug_on THEN
5332 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
5333 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
5334 END IF;
5335 --
5336 WHEN WSH_UTIL_CORE.G_EXC_WARNING THEN
5337 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
5338 --
5339 -- Start code for Bugfix 4070732
5340 --
5341 IF upper(WSH_UTIL_CORE.G_START_OF_SESSION_API) = upper(l_api_session_name) THEN
5342 --{
5343 IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
5344 --{
5345 IF l_debug_on THEN
5346 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Process_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
5347 END IF;
5348
5349 WSH_UTIL_CORE.Process_stops_for_load_tender(p_reset_flags => TRUE,
5350 x_return_status => l_return_status);
5351
5352
5353 IF l_debug_on THEN
5354 WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
5355 END IF;
5356
5357 IF l_return_status IN (WSH_UTIL_CORE.G_RET_STS_ERROR,
5358 WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR,
5359 WSH_UTIL_CORE.G_RET_STS_WARNING) THEN
5360 x_return_status := l_return_status;
5361 END IF;
5362
5363 IF l_return_status IN (WSH_UTIL_CORE.G_RET_STS_ERROR,
5364 WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR) THEN
5365 ROLLBACK TO CREATE_UPDATE_DELIVERY_GRP;
5366 END IF;
5367 --}
5368 END IF;
5369 --}
5370 END IF;
5371 --
5372 -- End of Code Bugfix 4070732
5373 --
5374 FND_MSG_PUB.Count_And_Get
5375 (
5376 p_count => x_msg_count,
5377 p_data => x_msg_data,
5378 p_encoded => FND_API.G_FALSE
5379 );
5380
5381 --
5382 IF l_debug_on THEN
5383 WSH_DEBUG_SV.logmsg(l_module_name,'WSH_UTIL_CORE.G_EXC_WARNING exception has occured ',WSH_DEBUG_SV.C_EXCEP_LEVEL);
5384 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_UTIL_CORE.G_EXC_WARNING');
5385 END IF;
5386 --
5387 WHEN OTHERS THEN
5388 ROLLBACK TO CREATE_UPDATE_DELIVERY_GRP;
5389 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR ;
5390 wsh_util_core.default_handler('WSH_DELIVERIES_GRP.CREATE_UPDATE_DELIVERY');
5391 --
5392 -- Start code for Bugfix 4070732
5393 --
5394 IF upper(WSH_UTIL_CORE.G_START_OF_SESSION_API) = upper(l_api_session_name) THEN
5395 --{
5396 IF NOT(WSH_UTIL_CORE.G_CALL_FTE_LOAD_TENDER_API) THEN
5397 --{
5398 IF l_debug_on THEN
5399 WSH_DEBUG_SV.logmsg(l_module_name,'Calling program unit WSH_UTIL_CORE.Reset_stops_for_load_tender',WSH_DEBUG_SV.C_PROC_LEVEL);
5400 END IF;
5401
5402 WSH_UTIL_CORE.Reset_stops_for_load_tender(p_reset_flags => TRUE,
5403 x_return_status => l_return_status);
5404
5405
5406 IF l_debug_on THEN
5407 WSH_DEBUG_SV.log(l_module_name,'l_return_status',l_return_status);
5408 END IF;
5409
5410 IF (l_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR) THEN
5411 x_return_status := l_return_status;
5412 END IF;
5413 --}
5414 END IF;
5415 --}
5416 END IF;
5417 --
5418 -- End of Code Bugfix 4070732
5419 --
5420 FND_MSG_PUB.Count_And_Get
5421 (
5422 p_count => x_msg_count,
5423 p_data => x_msg_data,
5424 p_encoded => FND_API.G_FALSE
5425 );
5426
5427 --
5428 IF l_debug_on THEN
5429 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
5430 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
5431 END IF;
5432 --
5433 END Create_Update_Delivery;
5434
5435
5436 -- The below procedue will be obsoleted after patchset I.
5437 --========================================================================
5438 -- PROCEDURE : Validate_Delivery PRIVATE
5439 --
5440 -- PARAMETERS: p_delivery_info Attributes for the delivery entity
5441 -- p_action_code 'CREATE', 'UPDATE'
5442 -- x_return_status Return status of API
5443 -- COMMENT : Validates p_delivery_info by calling column specific validations
5444 --========================================================================
5445
5446 PROCEDURE Validate_Delivery
5447 (p_delivery_info IN OUT NOCOPY delivery_pub_rec_type,
5448 p_action_code IN VARCHAR2,
5449 x_return_status OUT NOCOPY VARCHAR2) IS
5450
5451 l_assigned_to_trip VARCHAR2(1);
5452
5453 --OTM R12
5454 l_adjusted_amount NUMBER;
5455 --
5456
5457 --
5458 l_debug_on BOOLEAN;
5459 --
5460 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'VALIDATE_DELIVERY';
5461 --
5462 BEGIN
5463
5464 --
5465 --
5466 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
5467 --
5468 IF l_debug_on IS NULL
5469 THEN
5470 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
5471 END IF;
5472 --
5473 IF l_debug_on THEN
5474 WSH_DEBUG_SV.push(l_module_name);
5475 --
5476 WSH_DEBUG_SV.log(l_module_name,'P_ACTION_CODE',P_ACTION_CODE);
5477 WSH_DEBUG_SV.log(l_module_name,'p_delivery_info.delivery_id',
5478 p_delivery_info.delivery_id);
5479 WSH_DEBUG_SV.log(l_module_name,'p_delivery_info.name',
5480 p_delivery_info.name);
5481 END IF;
5482 --
5483 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
5484 --OTM R12
5485 l_adjusted_amount := 0;
5486 --
5487
5488 IF (p_action_code <> 'CREATE') THEN
5489
5490 IF (p_delivery_info.delivery_id <> FND_API.G_MISS_NUM) OR (p_delivery_info.name <> FND_API.G_MISS_CHAR) THEN
5491
5492 IF (p_delivery_info.name <> FND_API.G_MISS_CHAR) THEN
5493 p_delivery_info.delivery_id := NULL;
5494 END IF;
5495
5496 wsh_util_validate.validate_delivery_name(
5497 p_delivery_info.delivery_id,
5498 p_delivery_info.name,
5499 x_return_status);
5500
5501 IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
5502 --
5503 IF l_debug_on THEN
5504 WSH_DEBUG_SV.log(l_module_name,'x_return_status',
5505 x_return_status);
5506 WSH_DEBUG_SV.pop(l_module_name);
5507 END IF;
5508 --
5509 RETURN;
5510 END IF;
5511
5512 END IF;
5513
5514 END IF;
5515
5516 IF (p_delivery_info.organization_id <> FND_API.G_MISS_NUM) OR (p_delivery_info.organization_code <> FND_API.G_MISS_CHAR) THEN
5517
5518 IF (p_delivery_info.organization_code <> FND_API.G_MISS_CHAR) THEN
5519 p_delivery_info.organization_id := NULL;
5520 END IF;
5521 wsh_util_validate.validate_org(
5522 p_delivery_info.organization_id,
5523 p_delivery_info.organization_code,
5524 x_return_status);
5525
5526 IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
5527 --
5528 IF l_debug_on THEN
5529 WSH_DEBUG_SV.log(l_module_name,'x_return_status',
5530 x_return_status);
5531 WSH_DEBUG_SV.pop(l_module_name);
5532 END IF;
5533 --
5534 RETURN;
5535 END IF;
5536 END IF;
5537
5538 IF (nvl(p_delivery_info.delivery_type,'STANDARD') NOT IN ('STANDARD','CONSOLIDATED')) THEN
5539 p_delivery_info.delivery_type := 'STANDARD';
5540
5541 END IF;
5542
5543 IF (p_delivery_info.loading_order_flag <> FND_API.G_MISS_CHAR) OR (p_delivery_info.loading_order_desc <> FND_API.G_MISS_CHAR) THEN
5544
5545 IF (p_delivery_info.loading_order_desc <> FND_API.G_MISS_CHAR) THEN
5546 p_delivery_info.loading_order_flag := NULL;
5547 END IF;
5548 wsh_util_validate.validate_loading_order(
5549 p_delivery_info.loading_order_flag,
5550 p_delivery_info.loading_order_desc,
5551 x_return_status);
5552
5553 IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
5554 --
5555 IF l_debug_on THEN
5556 WSH_DEBUG_SV.log(l_module_name,'x_return_status',
5557 x_return_status);
5558 WSH_DEBUG_SV.pop(l_module_name);
5559 END IF;
5560 --
5561 RETURN;
5562 END IF;
5563 END IF;
5564
5565 IF (p_delivery_info.initial_pickup_location_id <> FND_API.G_MISS_NUM) OR (p_delivery_info.initial_pickup_location_code <> FND_API.G_MISS_CHAR) THEN
5566
5567 IF (p_delivery_info.initial_pickup_location_code <> FND_API.G_MISS_CHAR) THEN
5568 p_delivery_info.initial_pickup_location_id := NULL;
5569 END IF;
5570 wsh_util_validate.validate_location(
5571 p_delivery_info.initial_pickup_location_id,
5572 p_delivery_info.initial_pickup_location_code,
5573 x_return_status);
5574
5575 IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
5576 IF l_debug_on THEN
5577 WSH_DEBUG_SV.log(l_module_name,'x_return_status',
5578 x_return_status);
5579 WSH_DEBUG_SV.pop(l_module_name);
5580 END IF;
5581 --
5582 RETURN;
5583 END IF;
5584 END IF;
5585
5586 IF (p_delivery_info.ultimate_dropoff_location_id <> FND_API.G_MISS_NUM) OR (p_delivery_info.ultimate_dropoff_location_code <> FND_API.G_MISS_CHAR) THEN
5587
5588 IF (p_delivery_info.ultimate_dropoff_location_code <> FND_API.G_MISS_CHAR) THEN
5589 p_delivery_info.ultimate_dropoff_location_id := NULL;
5590 END IF;
5591 wsh_util_validate.validate_location(
5592 p_delivery_info.ultimate_dropoff_location_id,
5593 p_delivery_info.ultimate_dropoff_location_code,
5594 x_return_status);
5595
5596 IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
5597 IF l_debug_on THEN
5598 WSH_DEBUG_SV.log(l_module_name,'x_return_status',
5599 x_return_status);
5600 WSH_DEBUG_SV.pop(l_module_name);
5601 END IF;
5602 --
5603 RETURN;
5604 END IF;
5605 END IF;
5606
5607 IF (p_delivery_info.intmed_ship_to_location_id <> FND_API.G_MISS_NUM) OR (p_delivery_info.intmed_ship_to_location_code <> FND_API.G_MISS_CHAR) THEN
5608
5609 IF (p_delivery_info.intmed_ship_to_location_code <> FND_API.G_MISS_CHAR) THEN
5610 p_delivery_info.intmed_ship_to_location_id := NULL;
5611 END IF;
5612 wsh_util_validate.validate_location(
5613 p_delivery_info.intmed_ship_to_location_id,
5614 p_delivery_info.intmed_ship_to_location_code,
5615 x_return_status);
5616
5617 IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
5618 IF l_debug_on THEN
5619 WSH_DEBUG_SV.log(l_module_name,'x_return_status',
5620 x_return_status);
5621 WSH_DEBUG_SV.pop(l_module_name);
5622 END IF;
5623 --
5624 RETURN;
5625 END IF;
5626 END IF;
5627
5628 IF (p_delivery_info.pooled_ship_to_location_id <> FND_API.G_MISS_NUM) OR (p_delivery_info.pooled_ship_to_location_code <> FND_API.G_MISS_CHAR) THEN
5629
5630 IF (p_delivery_info.pooled_ship_to_location_code <> FND_API.G_MISS_CHAR) THEN
5631 p_delivery_info.pooled_ship_to_location_id := NULL;
5632 END IF;
5633 wsh_util_validate.validate_location(
5634 p_delivery_info.pooled_ship_to_location_id,
5635 p_delivery_info.pooled_ship_to_location_code,
5636 x_return_status);
5637
5638 IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
5639 --
5640 IF l_debug_on THEN
5641 WSH_DEBUG_SV.log(l_module_name,'x_return_status',
5642 x_return_status);
5643 WSH_DEBUG_SV.pop(l_module_name);
5644 END IF;
5645 --
5646 RETURN;
5647 END IF;
5648 END IF;
5649
5650 IF (p_delivery_info.customer_id <> FND_API.G_MISS_NUM) OR (p_delivery_info.customer_number <> FND_API.G_MISS_CHAR) THEN
5651
5652 IF (p_delivery_info.customer_number <> FND_API.G_MISS_CHAR) THEN
5653 p_delivery_info.customer_id := NULL;
5654 END IF;
5655 wsh_util_validate.validate_customer(
5656 p_delivery_info.customer_id,
5657 p_delivery_info.customer_number,
5658 x_return_status);
5659
5660 IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
5661 --
5662 IF l_debug_on THEN
5663 WSH_DEBUG_SV.log(l_module_name,'x_return_status',
5664 x_return_status);
5665 WSH_DEBUG_SV.pop(l_module_name);
5666 END IF;
5667 --
5668 RETURN;
5669 END IF;
5670 END IF;
5671
5672 -- Carrier ID is not validated as it is not used...Ship method is used instead.
5673
5674 IF (p_delivery_info.ship_method_code <> FND_API.G_MISS_CHAR) OR (p_delivery_info.ship_method_name <> FND_API.G_MISS_CHAR) THEN
5675
5676 IF (p_delivery_info.ship_method_code <> FND_API.G_MISS_CHAR) THEN
5677 p_delivery_info.ship_method_name := NULL;
5678 END IF;
5679 wsh_util_validate.validate_ship_method(
5680 p_delivery_info.ship_method_code,
5681 p_delivery_info.ship_method_name,
5682 x_return_status);
5683
5684 IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
5685 --
5686 IF l_debug_on THEN
5687 WSH_DEBUG_SV.log(l_module_name,'x_return_status',
5688 x_return_status);
5689 WSH_DEBUG_SV.pop(l_module_name);
5690 END IF;
5691 --
5692 RETURN;
5693 END IF;
5694 END IF;
5695
5696 IF (p_delivery_info.freight_terms_code <> FND_API.G_MISS_CHAR) OR (p_delivery_info.freight_terms_name <> FND_API.G_MISS_CHAR) THEN
5697
5698 IF (p_delivery_info.freight_terms_name <> FND_API.G_MISS_CHAR) THEN
5699 p_delivery_info.freight_terms_name := NULL;
5700 END IF;
5701 wsh_util_validate.validate_freight_terms(
5702 p_delivery_info.freight_terms_code,
5703 p_delivery_info.freight_terms_name,
5704 x_return_status);
5705
5706 IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
5707 --
5708 IF l_debug_on THEN
5709 WSH_DEBUG_SV.log(l_module_name,'x_return_status',
5710 x_return_status);
5711 WSH_DEBUG_SV.pop(l_module_name);
5712 END IF;
5713 --
5714 RETURN;
5715 END IF;
5716 END IF;
5717
5718 IF (p_delivery_info.fob_code <> FND_API.G_MISS_CHAR) OR (p_delivery_info.fob_name <> FND_API.G_MISS_CHAR) THEN
5719
5720 IF (p_delivery_info.fob_name <> FND_API.G_MISS_CHAR) THEN
5721 p_delivery_info.fob_code := NULL;
5722 END IF;
5723 wsh_util_validate.validate_fob(
5724 p_delivery_info.fob_code,
5725 p_delivery_info.fob_name,
5726 x_return_status);
5727
5728 IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
5729 --
5730 IF l_debug_on THEN
5731 WSH_DEBUG_SV.log(l_module_name,'x_return_status',
5732 x_return_status);
5733 WSH_DEBUG_SV.pop(l_module_name);
5734 END IF;
5735 --
5736 RETURN;
5737 END IF;
5738 END IF;
5739
5740 IF (p_delivery_info.fob_location_id <> FND_API.G_MISS_NUM) OR (p_delivery_info.fob_location_code <> FND_API.G_MISS_CHAR) THEN
5741
5742 IF (p_delivery_info.fob_location_code <> FND_API.G_MISS_CHAR) THEN
5743 p_delivery_info.fob_location_id := NULL;
5744 END IF;
5745 wsh_util_validate.validate_location(
5746 p_delivery_info.fob_location_id,
5747 p_delivery_info.fob_location_code,
5748 x_return_status);
5749
5750 IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
5751 --
5752 IF l_debug_on THEN
5753 WSH_DEBUG_SV.log(l_module_name,'x_return_status',
5754 x_return_status);
5755 WSH_DEBUG_SV.pop(l_module_name);
5756 END IF;
5757 --
5758 RETURN;
5759 END IF;
5760 END IF;
5761
5762 IF (p_delivery_info.weight_uom_code <> FND_API.G_MISS_CHAR) OR (p_delivery_info.weight_uom_desc <> FND_API.G_MISS_CHAR) THEN
5763
5764 IF (p_delivery_info.weight_uom_desc <> FND_API.G_MISS_CHAR) THEN
5765 p_delivery_info.weight_uom_code := NULL;
5766 END IF;
5767
5768 wsh_util_validate.validate_uom(
5769 'WEIGHT',
5770 p_delivery_info.organization_id,
5771 p_delivery_info.weight_uom_code,
5772 p_delivery_info.weight_uom_desc,
5773 x_return_status);
5774
5775 IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
5776 IF l_debug_on THEN
5777 WSH_DEBUG_SV.log(l_module_name,'x_return_status',
5778 x_return_status);
5779 WSH_DEBUG_SV.pop(l_module_name);
5780 END IF;
5781 --
5782 RETURN;
5783 END IF;
5784 END IF;
5785
5786 IF (p_delivery_info.volume_uom_code <> FND_API.G_MISS_CHAR) OR (p_delivery_info.volume_uom_desc <> FND_API.G_MISS_CHAR) THEN
5787
5788 IF (p_delivery_info.volume_uom_desc <> FND_API.G_MISS_CHAR) THEN
5789 p_delivery_info.volume_uom_code := NULL;
5790 END IF;
5791 wsh_util_validate.validate_uom(
5792 'VOLUME',
5793 p_delivery_info.organization_id,
5794 p_delivery_info.volume_uom_code,
5795 p_delivery_info.volume_uom_desc,
5796 x_return_status);
5797
5798 IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
5799 --
5800 IF l_debug_on THEN
5801 WSH_DEBUG_SV.log(l_module_name,'x_return_status',
5802 x_return_status);
5803 WSH_DEBUG_SV.pop(l_module_name);
5804 END IF;
5805 --
5806 RETURN;
5807 END IF;
5808 END IF;
5809
5810 IF (p_delivery_info.currency_code <> FND_API.G_MISS_CHAR) OR (p_delivery_info.currency_name <> FND_API.G_MISS_CHAR) THEN
5811
5812 IF (p_delivery_info.currency_name <> FND_API.G_MISS_CHAR) THEN
5813 p_delivery_info.currency_code := NULL;
5814 END IF;
5815 --OTM R12, added parameter l_adjusted_amount
5816 wsh_util_validate.validate_currency(
5817 p_currency_code => p_delivery_info.currency_code,
5818 p_currency_name => p_delivery_info.currency_name,
5819 p_amount => NULL,
5820 x_return_status => x_return_status,
5821 x_adjusted_amount => l_adjusted_amount);
5822
5823 IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
5824 IF l_debug_on THEN
5825 WSH_DEBUG_SV.log(l_module_name,'x_return_status',
5826 x_return_status);
5827 WSH_DEBUG_SV.pop(l_module_name);
5828 END IF;
5829 --
5830 RETURN;
5831 END IF;
5832 END IF;
5833
5834 --
5835 -- manifesting code changes
5836 -- disallow update of ship method or its components if the delivery is assigned to trip.
5837 --
5838
5839 IF (p_delivery_info.ship_method_code <> FND_API.G_MISS_CHAR) OR (p_delivery_info.ship_method_code IS NULL) OR
5840 (p_delivery_info.carrier_id <> FND_API.G_MISS_NUM) OR (p_delivery_info.carrier_id IS NULL) OR
5841 (p_delivery_info.service_level <> FND_API.G_MISS_CHAR) OR (p_delivery_info.service_level IS NULL) OR
5842 (p_delivery_info.mode_of_transport <> FND_API.G_MISS_CHAR) OR (p_delivery_info.mode_of_transport IS NULL) THEN
5843
5844 l_assigned_to_trip := WSH_Delivery_Validations.Del_Assigned_To_Trip
5845 (p_delivery_id => p_delivery_info.delivery_id,
5846 x_return_status => x_return_status);
5847
5848 IF (x_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) THEN
5849 --
5850 IF l_debug_on THEN
5851 WSH_DEBUG_SV.log(l_module_name,'x_return_status',
5852 x_return_status);
5853 WSH_DEBUG_SV.pop(l_module_name);
5854 END IF;
5855 --
5856 RETURN;
5857
5858 ELSIF l_assigned_to_trip = 'Y' THEN
5859 FND_MESSAGE.SET_NAME('WSH','WSH_DEL_ASSIGNED_ERROR');
5860 --
5861 IF l_debug_on THEN
5862 WSH_DEBUG_SV.log(l_module_name,'WSH_DEL_ASSIGNED_ERROR');
5863 END IF;
5864 --
5865 FND_MESSAGE.SET_TOKEN('DEL_NAME',wsh_new_deliveries_pvt.get_name(p_delivery_info.delivery_id));
5866 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
5867 wsh_util_core.add_message(x_return_status,l_module_name);
5868 IF l_debug_on THEN
5869 WSH_DEBUG_SV.log(l_module_name,'x_return_status',
5870 x_return_status);
5871 WSH_DEBUG_SV.pop(l_module_name);
5872 END IF;
5873 --
5874 RETURN;
5875 END IF;
5876 END IF;
5877
5878 --
5879 IF l_debug_on THEN
5880 WSH_DEBUG_SV.pop(l_module_name);
5881 END IF;
5882 --
5883 EXCEPTION
5884 WHEN others THEN
5885 wsh_util_core.default_handler('WSH_DELIVERIES_GRP.Validate_Delivery',l_module_name);
5886 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
5887 --
5888 IF l_debug_on THEN
5889 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
5890 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
5891 END IF;
5892 --
5893 END Validate_Delivery;
5894
5895 -- The below procedue will be obsoleted after patchset I.
5896
5897 PROCEDURE map_grp_to_pvt(
5898 p_pub_rec IN delivery_pub_rec_type,
5899 x_pvt_rec OUT NOCOPY wsh_new_deliveries_pvt.delivery_rec_type,
5900 x_return_status OUT NOCOPY VARCHAR2)
5901 IS
5902 --
5903 l_debug_on BOOLEAN;
5904 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'MAP_GRP_TO_PVT';
5905
5906 BEGIN
5907 --
5908 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
5909 --
5910 IF l_debug_on IS NULL
5911 THEN
5912 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
5913 END IF;
5914 --
5915 IF l_debug_on THEN
5916 WSH_DEBUG_SV.push(l_module_name);
5917 END IF;
5918 x_return_status := wsh_util_core.g_ret_sts_success;
5919 --
5920 x_pvt_rec.DELIVERY_ID := p_pub_rec.DELIVERY_ID;
5921 x_pvt_rec.NAME := p_pub_rec.NAME;
5922 x_pvt_rec.DELIVERY_TYPE := p_pub_rec.DELIVERY_TYPE;
5923 x_pvt_rec.LOADING_SEQUENCE := p_pub_rec.LOADING_SEQUENCE;
5924 x_pvt_rec.LOADING_ORDER_FLAG := p_pub_rec.LOADING_ORDER_FLAG;
5925 x_pvt_rec.LOADING_ORDER_DESC := p_pub_rec.LOADING_ORDER_DESC;
5926 x_pvt_rec.INITIAL_PICKUP_DATE := p_pub_rec.INITIAL_PICKUP_DATE;
5927 x_pvt_rec.INITIAL_PICKUP_LOCATION_ID := p_pub_rec.INITIAL_PICKUP_LOCATION_ID;
5928 x_pvt_rec.INITIAL_PICKUP_LOCATION_CODE := p_pub_rec.INITIAL_PICKUP_LOCATION_CODE;
5929 x_pvt_rec.ORGANIZATION_ID := p_pub_rec.ORGANIZATION_ID;
5930 x_pvt_rec.ORGANIZATION_CODE := p_pub_rec.ORGANIZATION_CODE;
5931 x_pvt_rec.ULTIMATE_DROPOFF_LOCATION_ID := p_pub_rec.ULTIMATE_DROPOFF_LOCATION_ID;
5932 x_pvt_rec.ULTIMATE_DROPOFF_LOCATION_CODE := p_pub_rec.ULTIMATE_DROPOFF_LOCATION_CODE;
5933 x_pvt_rec.ULTIMATE_DROPOFF_DATE := p_pub_rec.ULTIMATE_DROPOFF_DATE;
5934 x_pvt_rec.CUSTOMER_ID := p_pub_rec.CUSTOMER_ID;
5935 x_pvt_rec.CUSTOMER_NUMBER := p_pub_rec.CUSTOMER_NUMBER;
5936 x_pvt_rec.INTMED_SHIP_TO_LOCATION_ID := p_pub_rec.INTMED_SHIP_TO_LOCATION_ID;
5937 x_pvt_rec.INTMED_SHIP_TO_LOCATION_CODE := p_pub_rec.INTMED_SHIP_TO_LOCATION_CODE;
5938 x_pvt_rec.POOLED_SHIP_TO_LOCATION_ID := p_pub_rec.POOLED_SHIP_TO_LOCATION_ID;
5939 x_pvt_rec.POOLED_SHIP_TO_LOCATION_CODE := p_pub_rec.POOLED_SHIP_TO_LOCATION_CODE;
5940 x_pvt_rec.CARRIER_ID := p_pub_rec.CARRIER_ID;
5941 x_pvt_rec.CARRIER_CODE := p_pub_rec.CARRIER_CODE;
5942 x_pvt_rec.SHIP_METHOD_CODE := p_pub_rec.SHIP_METHOD_CODE;
5943 x_pvt_rec.SHIP_METHOD_NAME := p_pub_rec.SHIP_METHOD_NAME;
5944 x_pvt_rec.FREIGHT_TERMS_CODE := p_pub_rec.FREIGHT_TERMS_CODE;
5945 x_pvt_rec.FREIGHT_TERMS_NAME := p_pub_rec.FREIGHT_TERMS_NAME;
5946 x_pvt_rec.FOB_CODE := p_pub_rec.FOB_CODE;
5947 x_pvt_rec.FOB_NAME := p_pub_rec.FOB_NAME;
5948 x_pvt_rec.FOB_LOCATION_ID := p_pub_rec.FOB_LOCATION_ID;
5949 x_pvt_rec.FOB_LOCATION_CODE := p_pub_rec.FOB_LOCATION_CODE;
5950 x_pvt_rec.WAYBILL := p_pub_rec.WAYBILL;
5951 x_pvt_rec.DOCK_CODE := p_pub_rec.DOCK_CODE;
5952 x_pvt_rec.ACCEPTANCE_FLAG := p_pub_rec.ACCEPTANCE_FLAG;
5953 x_pvt_rec.ACCEPTED_BY := p_pub_rec.ACCEPTED_BY;
5954 x_pvt_rec.ACCEPTED_DATE := p_pub_rec.ACCEPTED_DATE;
5955 x_pvt_rec.ACKNOWLEDGED_BY := p_pub_rec.ACKNOWLEDGED_BY;
5956 x_pvt_rec.CONFIRMED_BY := p_pub_rec.CONFIRMED_BY;
5957 x_pvt_rec.CONFIRM_DATE := p_pub_rec.CONFIRM_DATE;
5958 x_pvt_rec.ASN_DATE_SENT := p_pub_rec.ASN_DATE_SENT;
5959 x_pvt_rec.ASN_STATUS_CODE := p_pub_rec.ASN_STATUS_CODE;
5960 x_pvt_rec.ASN_SEQ_NUMBER := p_pub_rec.ASN_SEQ_NUMBER;
5961 x_pvt_rec.GROSS_WEIGHT := p_pub_rec.GROSS_WEIGHT;
5962 x_pvt_rec.NET_WEIGHT := p_pub_rec.NET_WEIGHT;
5963 x_pvt_rec.WEIGHT_UOM_CODE := p_pub_rec.WEIGHT_UOM_CODE;
5964 x_pvt_rec.WEIGHT_UOM_DESC := p_pub_rec.WEIGHT_UOM_DESC;
5965 x_pvt_rec.VOLUME := p_pub_rec.VOLUME;
5966 x_pvt_rec.VOLUME_UOM_CODE := p_pub_rec.VOLUME_UOM_CODE;
5967 x_pvt_rec.VOLUME_UOM_DESC := p_pub_rec.VOLUME_UOM_DESC;
5968 x_pvt_rec.ADDITIONAL_SHIPMENT_INFO := p_pub_rec.ADDITIONAL_SHIPMENT_INFO;
5969 x_pvt_rec.CURRENCY_CODE := p_pub_rec.CURRENCY_CODE;
5970 x_pvt_rec.CURRENCY_NAME := p_pub_rec.CURRENCY_NAME;
5971 x_pvt_rec.ATTRIBUTE_CATEGORY := p_pub_rec.ATTRIBUTE_CATEGORY;
5972 x_pvt_rec.ATTRIBUTE1 := p_pub_rec.ATTRIBUTE1;
5973 x_pvt_rec.ATTRIBUTE2 := p_pub_rec.ATTRIBUTE2;
5974 x_pvt_rec.ATTRIBUTE3 := p_pub_rec.ATTRIBUTE3;
5975 x_pvt_rec.ATTRIBUTE4 := p_pub_rec.ATTRIBUTE4;
5976 x_pvt_rec.ATTRIBUTE5 := p_pub_rec.ATTRIBUTE5;
5977 x_pvt_rec.ATTRIBUTE6 := p_pub_rec.ATTRIBUTE6;
5978 x_pvt_rec.ATTRIBUTE7 := p_pub_rec.ATTRIBUTE7;
5979 x_pvt_rec.ATTRIBUTE8 := p_pub_rec.ATTRIBUTE8;
5980 x_pvt_rec.ATTRIBUTE9 := p_pub_rec.ATTRIBUTE9;
5981 x_pvt_rec.ATTRIBUTE10 := p_pub_rec.ATTRIBUTE10;
5982 x_pvt_rec.ATTRIBUTE11 := p_pub_rec.ATTRIBUTE11;
5983 x_pvt_rec.ATTRIBUTE12 := p_pub_rec.ATTRIBUTE12;
5984 x_pvt_rec.ATTRIBUTE13 := p_pub_rec.ATTRIBUTE13;
5985 x_pvt_rec.ATTRIBUTE14 := p_pub_rec.ATTRIBUTE14;
5986 x_pvt_rec.ATTRIBUTE15 := p_pub_rec.ATTRIBUTE15;
5987 x_pvt_rec.TP_ATTRIBUTE_CATEGORY := p_pub_rec.TP_ATTRIBUTE_CATEGORY;
5988 x_pvt_rec.TP_ATTRIBUTE1 := p_pub_rec.TP_ATTRIBUTE1;
5989 x_pvt_rec.TP_ATTRIBUTE2 := p_pub_rec.TP_ATTRIBUTE2;
5990 x_pvt_rec.TP_ATTRIBUTE3 := p_pub_rec.TP_ATTRIBUTE3;
5991 x_pvt_rec.TP_ATTRIBUTE4 := p_pub_rec.TP_ATTRIBUTE4;
5992 x_pvt_rec.TP_ATTRIBUTE5 := p_pub_rec.TP_ATTRIBUTE5;
5993 x_pvt_rec.TP_ATTRIBUTE6 := p_pub_rec.TP_ATTRIBUTE6;
5994 x_pvt_rec.TP_ATTRIBUTE7 := p_pub_rec.TP_ATTRIBUTE7;
5995 x_pvt_rec.TP_ATTRIBUTE8 := p_pub_rec.TP_ATTRIBUTE8;
5996 x_pvt_rec.TP_ATTRIBUTE9 := p_pub_rec.TP_ATTRIBUTE9;
5997 x_pvt_rec.TP_ATTRIBUTE10 := p_pub_rec.TP_ATTRIBUTE10;
5998 x_pvt_rec.TP_ATTRIBUTE11 := p_pub_rec.TP_ATTRIBUTE11;
5999 x_pvt_rec.TP_ATTRIBUTE12 := p_pub_rec.TP_ATTRIBUTE12;
6000 x_pvt_rec.TP_ATTRIBUTE13 := p_pub_rec.TP_ATTRIBUTE13;
6001 x_pvt_rec.TP_ATTRIBUTE14 := p_pub_rec.TP_ATTRIBUTE14;
6002 x_pvt_rec.TP_ATTRIBUTE15 := p_pub_rec.TP_ATTRIBUTE15;
6003 x_pvt_rec.GLOBAL_ATTRIBUTE_CATEGORY := p_pub_rec.GLOBAL_ATTRIBUTE_CATEGORY;
6004 x_pvt_rec.GLOBAL_ATTRIBUTE1 := p_pub_rec.GLOBAL_ATTRIBUTE1;
6005 x_pvt_rec.GLOBAL_ATTRIBUTE2 := p_pub_rec.GLOBAL_ATTRIBUTE2;
6006 x_pvt_rec.GLOBAL_ATTRIBUTE3 := p_pub_rec.GLOBAL_ATTRIBUTE3;
6007 x_pvt_rec.GLOBAL_ATTRIBUTE4 := p_pub_rec.GLOBAL_ATTRIBUTE4;
6008 x_pvt_rec.GLOBAL_ATTRIBUTE5 := p_pub_rec.GLOBAL_ATTRIBUTE5;
6009 x_pvt_rec.GLOBAL_ATTRIBUTE6 := p_pub_rec.GLOBAL_ATTRIBUTE6;
6010 x_pvt_rec.GLOBAL_ATTRIBUTE7 := p_pub_rec.GLOBAL_ATTRIBUTE7;
6011 x_pvt_rec.GLOBAL_ATTRIBUTE8 := p_pub_rec.GLOBAL_ATTRIBUTE8;
6012 x_pvt_rec.GLOBAL_ATTRIBUTE9 := p_pub_rec.GLOBAL_ATTRIBUTE9;
6013 x_pvt_rec.GLOBAL_ATTRIBUTE10 := p_pub_rec.GLOBAL_ATTRIBUTE10;
6014 x_pvt_rec.GLOBAL_ATTRIBUTE11 := p_pub_rec.GLOBAL_ATTRIBUTE11;
6015 x_pvt_rec.GLOBAL_ATTRIBUTE12 := p_pub_rec.GLOBAL_ATTRIBUTE12;
6016 x_pvt_rec.GLOBAL_ATTRIBUTE13 := p_pub_rec.GLOBAL_ATTRIBUTE13;
6017 x_pvt_rec.GLOBAL_ATTRIBUTE14 := p_pub_rec.GLOBAL_ATTRIBUTE14;
6018 x_pvt_rec.GLOBAL_ATTRIBUTE15 := p_pub_rec.GLOBAL_ATTRIBUTE15;
6019 x_pvt_rec.GLOBAL_ATTRIBUTE16 := p_pub_rec.GLOBAL_ATTRIBUTE16;
6020 x_pvt_rec.GLOBAL_ATTRIBUTE17 := p_pub_rec.GLOBAL_ATTRIBUTE17;
6021 x_pvt_rec.GLOBAL_ATTRIBUTE18 := p_pub_rec.GLOBAL_ATTRIBUTE18;
6022 x_pvt_rec.GLOBAL_ATTRIBUTE19 := p_pub_rec.GLOBAL_ATTRIBUTE19;
6023 x_pvt_rec.GLOBAL_ATTRIBUTE20 := p_pub_rec.GLOBAL_ATTRIBUTE20;
6024 x_pvt_rec.CREATION_DATE := p_pub_rec.CREATION_DATE;
6025 x_pvt_rec.CREATED_BY := p_pub_rec.CREATED_BY;
6026 x_pvt_rec.LAST_UPDATE_DATE := p_pub_rec.LAST_UPDATE_DATE;
6027 x_pvt_rec.LAST_UPDATED_BY := p_pub_rec.LAST_UPDATED_BY;
6028 x_pvt_rec.LAST_UPDATE_LOGIN := p_pub_rec.LAST_UPDATE_LOGIN;
6029 x_pvt_rec.PROGRAM_APPLICATION_ID := p_pub_rec.PROGRAM_APPLICATION_ID;
6030 x_pvt_rec.PROGRAM_ID := p_pub_rec.PROGRAM_ID;
6031 x_pvt_rec.PROGRAM_UPDATE_DATE := p_pub_rec.PROGRAM_UPDATE_DATE;
6032 x_pvt_rec.REQUEST_ID := p_pub_rec.REQUEST_ID;
6033 x_pvt_rec.COD_AMOUNT := p_pub_rec.COD_AMOUNT;
6034 x_pvt_rec.COD_CURRENCY_CODE := p_pub_rec.COD_CURRENCY_CODE;
6035 x_pvt_rec.COD_REMIT_TO := p_pub_rec.COD_REMIT_TO;
6036 x_pvt_rec.COD_CHARGE_PAID_BY := p_pub_rec.COD_CHARGE_PAID_BY;
6037 x_pvt_rec.PROBLEM_CONTACT_REFERENCE := p_pub_rec.PROBLEM_CONTACT_REFERENCE;
6038 x_pvt_rec.PORT_OF_LOADING := p_pub_rec.PORT_OF_LOADING;
6039 x_pvt_rec.PORT_OF_DISCHARGE := p_pub_rec.PORT_OF_DISCHARGE;
6040 x_pvt_rec.FTZ_NUMBER := p_pub_rec.FTZ_NUMBER;
6041 x_pvt_rec.ROUTED_EXPORT_TXN := p_pub_rec.ROUTED_EXPORT_TXN;
6042 x_pvt_rec.ENTRY_NUMBER := p_pub_rec.ENTRY_NUMBER;
6043 x_pvt_rec.ROUTING_INSTRUCTIONS := p_pub_rec.ROUTING_INSTRUCTIONS;
6044 x_pvt_rec.IN_BOND_CODE := p_pub_rec.IN_BOND_CODE;
6045 x_pvt_rec.SHIPPING_MARKS := p_pub_rec.SHIPPING_MARKS;
6046 x_pvt_rec.SERVICE_LEVEL := p_pub_rec.SERVICE_LEVEL;
6047 x_pvt_rec.MODE_OF_TRANSPORT := p_pub_rec.MODE_OF_TRANSPORT;
6048 x_pvt_rec.ASSIGNED_TO_FTE_TRIPS := p_pub_rec.ASSIGNED_TO_FTE_TRIPS;
6049 x_pvt_rec.PLANNED_FLAG := FND_API.G_MISS_CHAR;
6050 x_pvt_rec.STATUS_CODE := FND_API.G_MISS_CHAR;
6051 x_pvt_rec.BATCH_ID := FND_API.G_MISS_NUM;
6052 x_pvt_rec.HASH_VALUE := FND_API.G_MISS_NUM;
6053 x_pvt_rec.SOURCE_HEADER_ID := FND_API.G_MISS_NUM;
6054 --
6055 IF l_debug_on THEN
6056 WSH_DEBUG_SV.pop(l_module_name);
6057 END IF;
6058 EXCEPTION
6059 WHEN OTHERS THEN
6060 WSH_UTIL_CORE.DEFAULT_HANDLER('WSH_DELIVERIES_GRP.map_grp_pvt',l_module_name);
6061 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
6062 --
6063 IF l_debug_on THEN
6064 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
6065 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
6066 END IF;
6067 --
6068 END map_grp_to_pvt;
6069
6070 -- The below procedue will be obsoleted after patchset I.
6071 --========================================================================
6072 -- PROCEDURE : Create_Update_Delivery PUBLIC
6073 --
6074 -- PARAMETERS: p_api_version_number known api versionerror buffer
6075 -- p_init_msg_list FND_API.G_TRUE to reset list
6076 -- x_return_status return status
6077 -- x_msg_count number of messages in the list
6078 -- x_msg_data text of messages
6079 -- p_delivery_info Attributes for the delivery entity
6080 -- p_delivery_name Delivery name for update
6081 -- x_delivery_id - delivery_Id of new delivery,
6082 -- x_name - Name of delivery
6083 -- VERSION : current version 1.0
6084 -- initial version 1.0
6085 -- COMMENT : Creates or updates a record in wsh_new_deliveries table
6086 -- with information specified in p_delivery_info
6087 --========================================================================
6088
6089 PROCEDURE Create_Update_Delivery(
6090 p_api_version_number IN NUMBER,
6091 p_init_msg_list IN VARCHAR2,
6092 x_return_status OUT NOCOPY VARCHAR2,
6093 x_msg_count OUT NOCOPY NUMBER,
6094 x_msg_data OUT NOCOPY VARCHAR2,
6095 p_action_code IN VARCHAR2,
6096 p_delivery_info IN OUT NOCOPY Delivery_Pub_Rec_Type,
6097 p_delivery_name IN VARCHAR2 DEFAULT FND_API.G_MISS_CHAR,
6098 x_delivery_id OUT NOCOPY NUMBER,
6099 x_name OUT NOCOPY VARCHAR2)
6100
6101 IS
6102
6103 l_api_version_number CONSTANT NUMBER := 1.0;
6104 l_api_name CONSTANT VARCHAR2(30):= 'Create_Update_Delivery';
6105
6106 -- <insert here your local variables declaration>
6107 l_message VARCHAR2(50);
6108 l_num_errors NUMBER;
6109 l_num_warnings NUMBER;
6110 l_rec_attr_tab wsh_new_deliveries_pvt.delivery_attr_tbl_type;
6111 l_delivery_in_rec Del_In_Rec_Type;
6112 l_del_out_rec_tab Del_Out_Tbl_Type;
6113 l_return_status VARCHAR2(1);
6114 l_commit VARCHAR2(100) := FND_API.G_FALSE;
6115 --
6116 l_debug_on BOOLEAN;
6117 --
6118 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'CREATE_UPDATE_DELIVERY';
6119
6120
6121 BEGIN
6122 --
6123 --
6124 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
6125 --
6126 IF l_debug_on IS NULL
6127 THEN
6128 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
6129 END IF;
6130 --
6131 IF l_debug_on THEN
6132 wsh_debug_sv.push(l_module_name);
6133 END IF;
6134 -- Standard call to check for call compatibility
6135 IF NOT FND_API.Compatible_API_Call
6136 ( l_api_version_number
6137 , p_api_version_number
6138 , l_api_name
6139 , G_PKG_NAME
6140 )
6141 THEN
6142 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6143 END IF;
6144
6145 -- Initialize message stack if required
6146 IF FND_API.to_Boolean(p_init_msg_list) THEN
6147 FND_MSG_PUB.initialize;
6148 END IF;
6149
6150
6151 IF (p_action_code = 'UPDATE') THEN
6152 IF (p_delivery_name IS NOT NULL) OR (p_delivery_name <> FND_API.G_MISS_CHAR) THEN
6153 p_delivery_info.name := p_delivery_name;
6154 END IF;
6155 ELSIF ( p_action_code <> 'CREATE' ) THEN
6156 FND_MESSAGE.SET_NAME('WSH','WSH_INVALID_ACTION_CODE');
6157 FND_MESSAGE.SET_TOKEN('ACTION_CODE',p_action_code);
6158 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
6159 wsh_util_core.add_message(x_return_status);
6160 END IF;
6161 --
6162 map_grp_to_pvt(
6163 p_pub_rec => p_delivery_info,
6164 x_pvt_rec => l_rec_attr_tab(1),
6165 x_return_status => l_return_status);
6166 --
6167 IF l_debug_on THEN
6168 wsh_debug_sv.log(l_module_name,'Return Status After Calling map_grp_to_pvt',l_return_status);
6169 END IF;
6170 --
6171 wsh_util_core.api_post_call(
6172 p_return_status => l_return_status,
6173 x_num_errors => l_num_errors,
6174 x_num_warnings => l_num_warnings);
6175 --
6176 l_delivery_in_rec.action_code := p_action_code;
6177 l_delivery_in_rec.caller := 'WSH_GRP';
6178 wsh_interface_grp.create_update_delivery(
6179 p_api_version_number => p_api_version_number,
6180 p_init_msg_list => p_init_msg_list,
6181 p_commit => l_commit,
6182 p_in_rec => l_delivery_in_rec,
6183 p_rec_attr_tab => l_rec_attr_tab,
6184 x_del_out_rec_tab => l_del_out_rec_tab,
6185 x_return_status => l_return_status,
6186 x_msg_count => x_msg_count,
6187 x_msg_data => x_msg_data);
6188 --
6189 IF l_debug_on THEN
6190 wsh_debug_sv.log(l_module_name,'Return Status After Calling create_update_delivery',l_return_status);
6191 END IF;
6192 --
6193 wsh_util_core.api_post_call(
6194 p_return_status => l_return_status,
6195 x_num_errors => l_num_errors,
6196 x_num_warnings => l_num_warnings,
6197 p_msg_data => x_msg_data);
6198 --
6199 IF l_del_out_rec_tab.COUNT <> 0 THEN
6200 --
6201 x_delivery_id := l_del_out_rec_tab(l_del_out_rec_tab.COUNT).delivery_id;
6202 x_name := l_del_out_rec_tab(l_del_out_rec_tab.COUNT).name;
6203 --
6204 END IF;
6205 --
6206 IF l_num_warnings > 0 THEN
6207 x_return_status := wsh_util_core.g_ret_sts_warning;
6208 ELSE
6209 x_return_status := wsh_util_core.g_ret_sts_success; --bug 2398628
6210 END IF;
6211 --
6212 FND_MSG_PUB.Count_And_Get
6213 ( p_count => x_msg_count
6214 , p_data => x_msg_data
6215 , p_encoded => FND_API.G_FALSE
6216 );
6217 --
6218 IF l_debug_on THEN
6219 WSH_DEBUG_SV.pop(l_module_name);
6220 END IF;
6221 --
6222 EXCEPTION
6223 WHEN FND_API.G_EXC_ERROR THEN
6224 x_return_status := FND_API.G_RET_STS_ERROR;
6225 -- Get message count and data
6226 FND_MSG_PUB.Count_And_Get
6227 ( p_count => x_msg_count
6228 , p_data => x_msg_data
6229 , p_encoded => FND_API.G_FALSE
6230 );
6231 --
6232 IF l_debug_on THEN
6233 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_EXCEP_LEVEL);
6234 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_ERROR');
6235 END IF;
6236 --
6237 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6238 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6239 -- Get message count and data
6240 FND_MSG_PUB.Count_And_Get
6241 ( p_count => x_msg_count
6242 , p_data => x_msg_data
6243 , p_encoded => FND_API.G_FALSE
6244 );
6245 --
6246 IF l_debug_on THEN
6247 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
6248 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
6249 END IF;
6250 --
6251 WHEN OTHERS THEN
6252 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6253 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
6254 THEN
6255 FND_MSG_PUB.Add_Exc_Msg
6256 ( G_PKG_NAME
6257 , '_x_'
6258 );
6259 END IF;
6260 -- Get message count and data
6261 FND_MSG_PUB.Count_And_Get
6262 ( p_count => x_msg_count
6263 , p_data => x_msg_data
6264 , p_encoded => FND_API.G_FALSE
6265 );
6266 --
6267 IF l_debug_on THEN
6268 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
6269 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
6270 END IF;
6271 --
6272 END Create_Update_Delivery;
6273
6274 -- The below procedue will be obsoleted after patchset I.
6275 --========================================================================
6276 -- PROCEDURE : Delivery_Action PUBLIC
6277 --
6278 -- PARAMETERS: p_api_version_number known api version error number
6279 -- p_init_msg_list FND_API.G_TRUE to reset list
6280 -- x_return_status return status
6281 -- x_msg_count number of messages in the list
6282 -- x_msg_data text of messages
6283 -- p_action_code Delivery action code. Valid action codes are
6284 -- 'PLAN','UNPLAN',
6285 -- 'PACK','CONFIRM','RE-OPEN','IN-TRANSIT','CLOSE'
6286 -- 'ASSIGN-TRIP','UNASSIGN-TRIP','AUTOCREATE-TRIP'
6287 -- 'WT-VOL',
6288 -- 'PICK-RELEASE',
6289 -- 'DELETE'
6290 -- p_delivery_id Delivery identifier
6291 -- p_delivery_name Delivery name
6292 -- p_asg_trip_id Trip identifier for assignment
6293 -- p_asg_trip_name Trip name for assignment
6294 -- p_asg_pickup_stop_id Stop id for pickup assignment
6295 -- p_asg_pickup_loc_id Stop location for pickup assignment
6296 -- p_asg_pickup_loc_code Stop location code for pickup assignment
6297 -- p_asg_pickup_arr_date Stop location arrival date for pickup assignment
6298 -- p_asg_pickup_dep_date Stop location departure date for pickup assignment
6299 -- p_asg_dropoff_stop_id Stop id for dropoff assignment
6300 -- p_asg_dropoff_loc_id Stop location for dropoff assignment
6301 -- p_asg_dropoff_loc_code Stop location code for dropoff assignment
6302 -- p_asg_dropoff_arr_date Stop location arrival date for dropoff assignment
6303 -- p_asg_dropoff_dep_date Stop location departure date for dropoff assignment
6304 -- p_sc_action_flag Ship Confirm option - 'S', 'B', 'T', 'A', 'C'
6305 -- p_sc_intransit_flag Ship Confirm set in-transit flag
6306 -- p_sc_close_trip_flag Ship Confirm close trip flag
6307 -- p_sc_create_bol_flag Ship Confirm create BOL flag
6308 -- p_sc_stage_del_flag Ship Confirm create delivery for stage qnt flag
6309 -- p_sc_trip_ship_method Ship Confirm trip ship method
6310 -- p_sc_actual_dep_date Ship Confirm actual departure date
6311 -- p_sc_report_set_id Ship Confirm report set id
6312 -- p_sc_report_set_name Ship Confirm report set name
6313 -- p_wv_override_flag Override flag for weight/volume calc
6314 -- x_trip_rows Autocreated trip ids
6315 --
6316 -- VERSION : current version 1.0
6317 -- initial version 1.0
6318 -- COMMENT : This procedure is used to perform an action specified in p_action_code
6319 -- on an existing delivery identified by p_delivery_id/p_delivery_name.
6320 --========================================================================
6321 PROCEDURE Delivery_Action
6322 ( p_api_version_number IN NUMBER,
6323 p_init_msg_list IN VARCHAR2,
6324 x_return_status OUT NOCOPY VARCHAR2,
6325 x_msg_count OUT NOCOPY NUMBER,
6326 x_msg_data OUT NOCOPY VARCHAR2,
6327 p_action_code IN VARCHAR2,
6328 p_delivery_id IN NUMBER DEFAULT NULL,
6329 p_delivery_name IN VARCHAR2 DEFAULT NULL,
6330 p_asg_trip_id IN NUMBER DEFAULT NULL,
6331 p_asg_trip_name IN VARCHAR2 DEFAULT NULL,
6332 p_asg_pickup_stop_id IN NUMBER DEFAULT NULL,
6333 p_asg_pickup_loc_id IN NUMBER DEFAULT NULL,
6334 p_asg_pickup_stop_seq IN NUMBER DEFAULT NULL,
6335 p_asg_pickup_loc_code IN VARCHAR2 DEFAULT NULL,
6336 p_asg_pickup_arr_date IN DATE DEFAULT NULL,
6337 p_asg_pickup_dep_date IN DATE DEFAULT NULL,
6338 p_asg_dropoff_stop_id IN NUMBER DEFAULT NULL,
6339 p_asg_dropoff_loc_id IN NUMBER DEFAULT NULL,
6340 p_asg_dropoff_stop_seq IN NUMBER DEFAULT NULL,
6341 p_asg_dropoff_loc_code IN VARCHAR2 DEFAULT NULL,
6342 p_asg_dropoff_arr_date IN DATE DEFAULT NULL,
6343 p_asg_dropoff_dep_date IN DATE DEFAULT NULL,
6344 p_sc_action_flag IN VARCHAR2 DEFAULT 'S',
6345 p_sc_intransit_flag IN VARCHAR2 DEFAULT 'N',
6346 p_sc_close_trip_flag IN VARCHAR2 DEFAULT 'N',
6347 p_sc_create_bol_flag IN VARCHAR2 DEFAULT 'N',
6348 p_sc_stage_del_flag IN VARCHAR2 DEFAULT 'Y',
6349 p_sc_trip_ship_method IN VARCHAR2 DEFAULT NULL,
6350 p_sc_actual_dep_date IN DATE DEFAULT NULL,
6351 p_sc_report_set_id IN NUMBER DEFAULT NULL,
6352 p_sc_report_set_name IN VARCHAR2 DEFAULT NULL,
6353 p_sc_defer_interface_flag IN VARCHAR2 DEFAULT 'Y',
6354 p_sc_send_945_flag IN VARCHAR2 DEFAULT NULL,
6355 p_wv_override_flag IN VARCHAR2 DEFAULT 'N',
6356 x_trip_rows OUT NOCOPY WSH_UTIL_CORE.id_tab_type)
6357 --
6358 IS
6359 --
6360 l_api_version_number CONSTANT NUMBER := 1.0;
6361 l_api_name CONSTANT VARCHAR2(30):= 'Delivery_Action';
6362 --
6363 l_debug_on BOOLEAN;
6364 --
6365 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'DELIVERY_ACTION';
6366 --
6367 --
6368 l_action_prms wsh_deliveries_grp.action_parameters_rectype;
6369 l_del_action_out_rec wsh_deliveries_grp.Delivery_Action_Out_Rec_Type;
6370 l_delivery_id_tab wsh_util_core.id_tab_type;
6371 --
6372 l_delivery_id NUMBER := p_delivery_id;
6373 --
6374 l_num_errors NUMBER := 0;
6375 l_num_warnings NUMBER := 0;
6376 l_commit VARCHAR2(100) := FND_API.G_FALSE;
6377 --
6378 BEGIN
6379 --
6380 --
6381 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
6382 --
6383 IF l_debug_on IS NULL
6384 THEN
6385 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
6386 END IF;
6387 --
6388 IF l_debug_on THEN
6389 wsh_debug_sv.push(l_module_name);
6390 END IF;
6391 --
6392 -- Standard call to check for call compatibility
6393 IF NOT FND_API.Compatible_API_Call
6394 ( l_api_version_number
6395 , p_api_version_number
6396 , l_api_name
6397 , G_PKG_NAME
6398 )
6399 THEN
6400 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6401 END IF;
6402
6403 -- Initialize message stack if required
6404 IF FND_API.to_Boolean(p_init_msg_list) THEN
6405 FND_MSG_PUB.initialize;
6406 END IF;
6407
6408 wsh_util_validate.validate_delivery_name(
6409 p_delivery_id => l_delivery_id,
6410 p_delivery_name => p_delivery_name,
6411 x_return_status => x_return_status);
6412 --
6413 IF l_debug_on THEN
6414 wsh_debug_sv.log(l_module_name,'Return Status After Calling validate_delivery_name',x_return_status);
6415 END IF;
6416 --
6417 wsh_util_core.api_post_call(
6418 p_return_status => x_return_status,
6419 x_num_errors => l_num_errors,
6420 x_num_warnings => l_num_warnings);
6421 --
6422 l_action_prms.caller := 'WSH_GRP';
6423 l_action_prms.action_code := p_action_code;
6424 --
6425 -- initializing the action specific parameters
6426 l_action_prms.trip_id := p_asg_trip_id;
6427 l_action_prms.trip_name := p_asg_trip_name;
6428 l_action_prms.pickup_stop_id := p_asg_pickup_stop_id;
6429 l_action_prms.pickup_loc_id := p_asg_pickup_loc_id;
6430 l_action_prms.pickup_stop_seq := p_asg_pickup_stop_seq;
6431 l_action_prms.pickup_loc_code := p_asg_pickup_loc_code;
6432 l_action_prms.pickup_arr_date := p_asg_pickup_arr_date;
6433 l_action_prms.pickup_dep_date := p_asg_pickup_dep_date;
6434 l_action_prms.dropoff_stop_id := p_asg_dropoff_stop_id;
6435 l_action_prms.dropoff_loc_id := p_asg_dropoff_loc_id;
6436 l_action_prms.dropoff_stop_seq := p_asg_dropoff_stop_seq;
6437 l_action_prms.dropoff_loc_code := p_asg_dropoff_loc_code;
6438 l_action_prms.dropoff_arr_date := p_asg_dropoff_arr_date;
6439 l_action_prms.dropoff_dep_date := p_asg_dropoff_dep_date;
6440 l_action_prms.action_flag := p_sc_action_flag;
6441 l_action_prms.intransit_flag := p_sc_intransit_flag;
6442 l_action_prms.close_trip_flag := p_sc_close_trip_flag;
6443 l_action_prms.bill_of_lading_flag := p_sc_create_bol_flag;
6444 l_action_prms.stage_del_flag := p_sc_stage_del_flag;
6445 l_action_prms.ship_method_code := p_sc_trip_ship_method;
6446 l_action_prms.actual_dep_date := p_sc_actual_dep_date;
6447 l_action_prms.report_set_id := p_sc_report_set_id;
6448 l_action_prms.report_set_name := p_sc_report_set_name;
6449 l_action_prms.defer_interface_flag := p_sc_defer_interface_flag;
6450 l_action_prms.send_945_flag := p_sc_send_945_flag;
6451 l_action_prms.override_flag := p_wv_override_flag;
6452 --
6453 l_delivery_id_tab(1) := l_delivery_id;
6454 --
6455 wsh_interface_grp.Delivery_Action(
6456 p_api_version_number => p_api_version_number,
6457 p_init_msg_list => p_init_msg_list,
6458 p_commit => l_commit,
6459 p_action_prms => l_action_prms,
6460 p_delivery_id_tab => l_delivery_id_tab,
6461 x_delivery_out_rec => l_del_action_out_rec,
6462 x_return_status => x_return_status,
6463 x_msg_count => x_msg_count,
6464 x_msg_data => x_msg_data);
6465 --
6466 IF l_debug_on THEN
6467 wsh_debug_sv.log(l_module_name,'Return Status After Calling Delivery_Action',x_return_status);
6468 END IF;
6469 --
6470 wsh_util_core.api_post_call(
6471 p_return_status => x_return_status,
6472 x_num_errors => l_num_errors,
6473 x_num_warnings => l_num_warnings,
6474 p_msg_data => x_msg_data);
6475 --
6476 IF l_debug_on THEN
6477 wsh_debug_sv.log(l_module_name,'Number of Warnings is ',l_num_warnings);
6478 wsh_debug_sv.log(l_module_name,'Number of Errors is ',l_num_errors);
6479 END IF;
6480 --
6481 x_trip_rows := l_del_action_out_rec.result_id_tab;
6482
6483 --
6484 IF l_num_warnings > 0 THEN
6485 x_return_status := wsh_util_core.g_ret_sts_warning;
6486 ELSE
6487 x_return_status := wsh_util_core.g_ret_sts_success; --bug 2398628
6488 END IF;
6489 --
6490 FND_MSG_PUB.Count_And_Get
6491 ( p_count => x_msg_count
6492 , p_data => x_msg_data
6493 , p_encoded => FND_API.G_FALSE
6494 );
6495 --
6496 IF l_debug_on THEN
6497 WSH_DEBUG_SV.pop(l_module_name);
6498 END IF;
6499 --
6500 EXCEPTION
6501 WHEN FND_API.G_EXC_ERROR THEN
6502 x_return_status := FND_API.G_RET_STS_ERROR;
6503 -- Get message count and data
6504 FND_MSG_PUB.Count_And_Get
6505 ( p_count => x_msg_count
6506 , p_data => x_msg_data
6507 , p_encoded => FND_API.G_FALSE
6508 );
6509 --
6510 IF l_debug_on THEN
6511 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_EXCEP_LEVEL);
6512 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_ERROR');
6513 END IF;
6514 --
6515 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6516 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6517 -- Get message count and data
6518 FND_MSG_PUB.Count_And_Get
6519 ( p_count => x_msg_count
6520 , p_data => x_msg_data
6521 , p_encoded => FND_API.G_FALSE
6522 );
6523 --
6524 IF l_debug_on THEN
6525 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
6526 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
6527 END IF;
6528 --
6529 WHEN OTHERS THEN
6530 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6531 IF FND_MSG_PUB.Check_Msg_Level(FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
6532 THEN
6533 FND_MSG_PUB.Add_Exc_Msg
6534 ( G_PKG_NAME
6535 , '_x_'
6536 );
6537 END IF;
6538 -- Get message count and data
6539 FND_MSG_PUB.Count_And_Get
6540 ( p_count => x_msg_count
6541 , p_data => x_msg_data
6542 , p_encoded => FND_API.G_FALSE
6543 );
6544 --
6545 IF l_debug_on THEN
6546 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
6547 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:OTHERS');
6548 END IF;
6549 --
6550
6551 END Delivery_Action;
6552
6553 /* ---------------------------------------------------------------------
6554 Procedure: Lock_Related_Entities
6555
6556 Parameters:
6557
6558 Description: This procedure is the new API for locking the related entities
6559 like STOP or TRIP, depending on the action.
6560
6561 Created : Patchset I
6562 ----------------------------------------------------------------------- */
6563
6564 PROCEDURE Lock_Related_Entities(
6565 p_rec_attr_tab IN WSH_NEW_DELIVERIES_PVT.Delivery_Attr_Tbl_Type,
6566 p_action_prms IN action_parameters_rectype,
6567 x_valid_ids_tab OUT NOCOPY WSH_UTIL_CORE.ID_TAB_TYPE,
6568 x_return_status OUT NOCOPY VARCHAR2
6569 ) IS
6570
6571 l_index NUMBER;
6572 l_stop_index NUMBER;
6573 l_stop_rows wsh_util_core.id_tab_type;
6574 l_min_stop_seq NUMBER;
6575 l_max_stop_seq NUMBER;
6576 l_stop_seq NUMBER;
6577 l_trip_id NUMBER;
6578 l_dlvy_name VARCHAR2(30);
6579 k NUMBER := 0;
6580
6581 CURSOR c_delivery_leg_stops(p_delivery_id NUMBER) IS
6582 SELECT dg.pick_up_stop_id,
6583 pu_stop.status_code pu_status,
6584 dg.drop_off_stop_id,
6585 do_stop.status_code do_status
6586 FROM wsh_delivery_legs dg,
6587 wsh_trip_stops pu_stop,
6588 wsh_trip_stops do_stop
6589 WHERE dg.delivery_id = p_delivery_id
6590 AND pu_stop.stop_id = dg.pick_up_stop_id
6591 AND do_stop.stop_id = dg.drop_off_stop_id;
6592
6593 CURSOR c_stop_info(p_stop_id NUMBER) IS
6594 SELECT stop_sequence_number, trip_id
6595 FROM wsh_trip_stops
6596 WHERE stop_id = p_stop_id;
6597 --
6598 CURSOR c_min_max_seq(p_trip_id NUMBER) IS
6599 SELECT min(stop_sequence_number), max(stop_sequence_number)
6600 FROM wsh_trip_stops
6601 WHERE trip_id = p_trip_id;
6602
6603 l_debug_on BOOLEAN;
6604 --
6605 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'LOCK_RELATED_ENTITIES';
6606 --
6607
6608 BEGIN
6609 --
6610 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
6611 --
6612 IF l_debug_on IS NULL
6613 THEN
6614 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
6615 END IF;
6616 --
6617 x_return_status := wsh_util_core.g_ret_sts_success;
6618
6619 IF l_debug_on THEN
6620 WSH_DEBUG_SV.push(l_module_name);
6621 --
6622 WSH_DEBUG_SV.log(l_module_name, 'Action Code', p_action_prms.action_code);
6623 WSH_DEBUG_SV.log(l_module_name,'Input Table count', p_rec_attr_tab.count);
6624 END IF;
6625
6626 l_index := p_rec_attr_tab.first;
6627 while l_index is not null
6628 loop
6629 -- {
6630 BEGIN
6631 SAVEPOINT lock_rel_ent_loop;
6632 k := 0;
6633 l_stop_rows.delete;
6634
6635 IF p_rec_attr_tab(l_index).name is null
6636 THEN
6637 l_dlvy_name := wsh_new_deliveries_pvt.get_name(p_rec_attr_tab(l_index).delivery_id);
6638 ELSE
6639 l_dlvy_name := p_rec_attr_tab(l_index).name;
6640 END IF;
6641
6642 FOR c_leg_rec IN c_delivery_leg_stops(p_rec_attr_tab(l_index).delivery_id)
6643 LOOP
6644 -- {
6645 IF c_leg_rec.pu_status <> 'CL' THEN
6646 k:=k+1; l_stop_rows(k) := c_leg_rec.pick_up_stop_id;
6647 END IF;
6648 IF c_leg_rec.do_status <> 'CL' THEN
6649 k:=k+1; l_stop_rows(k) := c_leg_rec.drop_off_stop_id;
6650 END IF;
6651 -- }
6652 END LOOP;
6653
6654 l_stop_index := l_stop_rows.first;
6655 WHILE l_stop_index IS NOT NULL
6656 LOOP
6657 -- {
6658 IF l_debug_on THEN
6659 wsh_debug_sv.log(l_module_name, 'call lock for stop', l_stop_rows(l_stop_index));
6660 END IF;
6661 -- First lock the stop
6662 wsh_trip_stops_pvt.lock_trip_stop_no_compare(
6663 p_stop_id => l_stop_rows(l_stop_index)
6664 );
6665
6666 OPEN c_stop_info(l_stop_rows(l_stop_index));
6667 FETCH c_stop_info
6668 INTO l_stop_seq, l_trip_id;
6669 CLOSE c_stop_info;
6670
6671 OPEN c_min_max_seq(l_trip_id);
6672 FETCH c_min_max_seq
6673 INTO l_min_stop_seq, l_max_stop_seq;
6674 CLOSE c_min_max_seq;
6675
6676 IF l_debug_on THEN
6677 wsh_debug_sv.log(l_module_name, 'Min stop seq', l_min_stop_seq);
6678 wsh_debug_sv.log(l_module_name, 'Max stop seq', l_max_stop_seq);
6679 wsh_debug_sv.log(l_module_name, 'Stop seq', l_stop_seq);
6680 wsh_debug_sv.log(l_module_name, 'Trip Id', l_trip_id);
6681 END IF;
6682
6683 IF l_stop_seq = l_min_stop_seq
6684 OR l_stop_seq = l_max_stop_seq
6685 THEN
6686 -- {
6687 wsh_trips_pvt.lock_trip_no_compare(
6688 p_trip_id => l_trip_id
6689 );
6690 -- }
6691 END IF;
6692 --
6693 l_stop_index := l_stop_rows.next(l_stop_index);
6694 -- }
6695 END LOOP;
6696
6697 x_valid_ids_tab(x_valid_ids_tab.COUNT + 1) := p_rec_attr_tab(l_index).delivery_id;
6698
6699 EXCEPTION
6700 WHEN app_exception.application_exception or app_exception.record_lock_exception THEN
6701 ROLLBACK TO lock_rel_ent_loop;
6702 IF l_debug_on THEN
6703 wsh_debug_sv.log(l_module_name, 'Could not obtain lock of stop or trip for delivery', p_rec_attr_tab(l_index).delivery_id);
6704 END IF;
6705 FND_MESSAGE.SET_NAME('WSH', 'WSH_DLVY_STOP_TRIP_LOCK');
6706 FND_MESSAGE.SET_TOKEN('DLVY_NAME',l_dlvy_name);
6707 wsh_util_core.add_message(wsh_util_core.g_ret_sts_error,l_module_name);
6708 --
6709 --
6710 WHEN others THEN
6711 IF l_debug_on THEN
6712 wsh_debug_sv.logmsg(l_module_name, 'When others in local block');
6713 END IF;
6714 ROLLBACK TO lock_rel_ent_loop;
6715 raise FND_API.G_EXC_UNEXPECTED_ERROR;
6716
6717 END;
6718 l_index := p_rec_attr_tab.next(l_index);
6719 -- }
6720 end loop;
6721
6722 IF l_debug_on THEN
6723 WSH_DEBUG_SV.log(l_module_name, 'Valid ids tab count', x_valid_ids_tab.count);
6724 END IF;
6725 -- Check for valid_ids_tab count.
6726 -- If valid ids count > 0 ,but less than the input table count, then return warning
6727 -- If valid ids count = 0, then return error
6728 IF p_rec_attr_tab.count > 0
6729 THEN
6730 -- {
6731 IF x_valid_ids_tab.count = 0
6732 THEN
6733 -- {
6734 RAISE FND_API.G_EXC_ERROR;
6735 ELSIF x_valid_ids_tab.count >0
6736 AND x_valid_ids_tab.count < p_rec_attr_tab.count
6737 THEN
6738 RAISE WSH_UTIL_CORE.G_EXC_WARNING;
6739 -- }
6740 END IF;
6741 -- }
6742 END IF;
6743
6744 IF l_debug_on THEN
6745 WSH_DEBUG_SV.pop(l_module_name);
6746 END IF;
6747 --
6748
6749 EXCEPTION
6750 WHEN FND_API.G_EXC_ERROR THEN
6751 x_return_status := FND_API.G_RET_STS_ERROR ;
6752 --
6753 IF l_debug_on THEN
6754 WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_ERROR exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
6755 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_ERROR');
6756 END IF;
6757 --
6758 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6759 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6760 --
6761 IF l_debug_on THEN
6762 WSH_DEBUG_SV.logmsg(l_module_name,'FND_API.G_EXC_UNEXPECTED_ERROR exception has occured.',WSH_DEBUG_SV.C_EXCEP_LEVEL);
6763 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
6764 END IF;
6765 --
6766 WHEN WSH_UTIL_CORE.G_EXC_WARNING THEN
6767 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
6768 --
6769 IF l_debug_on THEN
6770 WSH_DEBUG_SV.logmsg(l_module_name,'WSH_UTIL_CORE.G_EXC_WARNING exception has occured ',WSH_DEBUG_SV.C_EXCEP_LEVEL);
6771 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:WSH_UTIL_CORE.G_EXC_WARNING');
6772 END IF;
6773 --
6774 WHEN OTHERS THEN
6775 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR ;
6776 WSH_UTIL_CORE.default_handler('WSH_DELIVERIES_GRP.Lock_Related_Entities');
6777 IF l_debug_on THEN
6778 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM,WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
6779 WSH_DEBUG_SV.pop(l_module_name,'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
6780 END IF;
6781
6782 --
6783
6784 END Lock_Related_Entities;
6785
6786 --========================================================================
6787 -- PROCEDURE : Get_Delivery_Status PUBLIC
6788 --
6789 -- PARAMETERS:
6790 -- p_api_version_number known api version error number
6791 -- p_init_msg_list FND_API.G_TRUE to reset list
6792 -- p_entity_type either DELIVERY/DELIVERY DETAIL/LPN
6793 -- p_entity_id either delivery_id/delivery_detail_id/lpn_id
6794 -- x_status_code Status of delivery for the entity_type and
6795 -- entity id passed
6796 -- x_return_status return status
6797 -- x_msg_count number of messages in the list
6798 -- x_msg_data text of messages
6799 --========================================================================
6800 -- API added for bug 4632726
6801 PROCEDURE Get_Delivery_Status (
6802 p_api_version_number IN NUMBER,
6803 p_init_msg_list IN VARCHAR2,
6804 p_entity_type IN VARCHAR2,
6805 p_entity_id IN NUMBER,
6806 x_status_code OUT NOCOPY VARCHAR2,
6807 x_return_status OUT NOCOPY VARCHAR2,
6808 x_msg_count OUT NOCOPY NUMBER,
6809 x_msg_data OUT NOCOPY VARCHAR2 )
6810 IS
6811 --
6812 l_api_version_number CONSTANT NUMBER := 1.0;
6813 l_api_name CONSTANT VARCHAR2(30):= 'Get_Delivery_Status';
6814
6815 l_num_errors NUMBER;
6816 l_num_warnings NUMBER;
6817 l_return_status VARCHAR2(1);
6818 --
6819 l_debug_on BOOLEAN;
6820 --
6821 l_module_name CONSTANT VARCHAR2(100) := 'wsh.plsql.' || G_PKG_NAME || '.' || 'GET_DELIVERY_STATUS';
6822 --
6823 BEGIN
6824 --
6825 --
6826 l_debug_on := WSH_DEBUG_INTERFACE.g_debug;
6827 --
6828 IF l_debug_on IS NULL
6829 THEN
6830 l_debug_on := WSH_DEBUG_SV.is_debug_enabled;
6831 END IF;
6832 --
6833 IF l_debug_on THEN
6834 wsh_debug_sv.push(l_module_name);
6835 wsh_debug_sv.log (l_module_name, 'Entity Type', p_entity_type );
6836 wsh_debug_sv.log (l_module_name, 'Entity Id', p_entity_id );
6837 END IF;
6838 --
6839 -- Standard call to check for call compatibility
6840 IF NOT FND_API.Compatible_API_Call
6841 ( l_api_version_number
6842 , p_api_version_number
6843 , l_api_name
6844 , G_PKG_NAME
6845 )
6846 THEN
6847 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6848 END IF;
6849 --
6850 IF FND_API.to_Boolean(p_init_msg_list) THEN
6851 FND_MSG_PUB.initialize;
6852 END IF;
6853 --
6854
6855 IF ( p_entity_type is null or p_entity_id is null ) THEN
6856 FND_MESSAGE.SET_NAME('WSH','WSH_REQUIRED_FIELD_NULL');
6857 IF ( p_entity_type is null ) THEN
6858 FND_MESSAGE.SET_TOKEN('FIELD_NAME', 'P_ENTITY_TYPE');
6859 ELSIF ( p_entity_id is null ) THEN
6860 FND_MESSAGE.SET_TOKEN('FIELD_NAME', 'P_ENTITY_ID');
6861 END IF;
6862 x_return_status := wsh_util_core.g_ret_sts_error;
6863 wsh_util_core.add_message(x_return_status, l_module_name);
6864 RAISE FND_API.G_EXC_ERROR;
6865 END IF;
6866
6867 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
6868
6869 --
6870 IF l_debug_on THEN
6871 wsh_debug_sv.logmsg(l_module_name, 'Calling Get_Delivery_Status', WSH_DEBUG_SV.C_PROC_LEVEL);
6872 END IF;
6873 --
6874 WSH_UTIL_CORE.Get_Delivery_Status (
6875 p_entity_type => p_entity_type,
6876 p_entity_id => p_entity_id,
6877 x_status_code => x_status_code,
6878 x_return_status => l_return_status );
6879 --
6880 IF l_debug_on THEN
6881 wsh_debug_sv.log(l_module_name, 'Return Status after Calling Get_Delivery_Status', l_return_status);
6882 END IF;
6883 --
6884 WSH_UTIL_CORE.api_post_call(
6885 p_return_status => l_return_status,
6886 x_num_warnings => l_num_warnings,
6887 x_num_errors => l_num_errors);
6888 --
6889
6890 --
6891 IF l_debug_on THEN
6892 wsh_debug_sv.log(l_module_name, 'Status Code', x_status_code);
6893 wsh_debug_sv.pop (l_module_name);
6894 END IF;
6895 --
6896 EXCEPTION
6897 WHEN FND_API.G_EXC_ERROR THEN
6898 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
6899 FND_MSG_PUB.Count_And_Get (
6900 p_count => x_msg_count,
6901 p_data => x_msg_data,
6902 p_encoded => FND_API.G_FALSE );
6903 --
6904 IF l_debug_on THEN
6905 WSH_DEBUG_SV.logmsg(l_module_name, 'FND_API.G_EXC_ERROR exception has occured', WSH_DEBUG_SV.C_EXCEP_LEVEL);
6906 WSH_DEBUG_SV.pop(l_module_name, 'EXCEPTION:FND_API.G_EXC_ERROR');
6907 END IF;
6908 --
6909 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6910 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
6911 FND_MSG_PUB.Count_And_Get (
6912 p_count => x_msg_count,
6913 p_data => x_msg_data,
6914 p_encoded => FND_API.G_FALSE );
6915 --
6916 IF l_debug_on THEN
6917 WSH_DEBUG_SV.logmsg(l_module_name, 'FND_API.G_EXC_UNEXPECTED_ERROR exception has occured', WSH_DEBUG_SV.C_EXCEP_LEVEL);
6918 WSH_DEBUG_SV.pop(l_module_name, 'EXCEPTION:FND_API.G_EXC_UNEXPECTED_ERROR');
6919 END IF;
6920 --
6921 WHEN OTHERS THEN
6922 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR ;
6923 wsh_util_core.default_handler('WSH_DELIVERY_VALIDATIONS.Get_Delivery_Status');
6924 --
6925 IF l_debug_on THEN
6926 WSH_DEBUG_SV.logmsg(l_module_name,'Unexpected error has occured. Oracle error message is '|| SQLERRM, WSH_DEBUG_SV.C_UNEXPEC_ERR_LEVEL);
6927 WSH_DEBUG_SV.pop(l_module_name, 'EXCEPTION:OTHERS');
6928 END IF;
6929 --
6930 END Get_Delivery_Status;
6931
6932
6933
6934
6935 END WSH_DELIVERIES_GRP;