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