[Home] [Help]
PACKAGE BODY: APPS.FTE_FREIGHT_RATING_DLVY_GRP
Source
1 PACKAGE BODY FTE_FREIGHT_RATING_DLVY_GRP AS
2 /*$Header: FTEFRDRB.pls 120.13 2005/10/25 14:53:09 susurend ship $ */
3 --
4 -- Private Package level Variables
5 --
6 G_PKG_NAME CONSTANT VARCHAR2(30) := 'FTE_FREIGHT_RATING_DLVY_GRP';
7
8 G_RC_SUCCESS CONSTANT NUMBER := 0;
9 G_RC_ERROR CONSTANT NUMBER := 1;
10 G_RC_REPRICE_NOT_REQUIRED CONSTANT NUMBER := 2;
11 G_RC_NOT_RATE_FREIGHT_TERM CONSTANT NUMBER := 3;
12 G_RC_NOT_RATE_MANIFESTING CONSTANT NUMBER := 4;
13
14 g_pricing_not_required EXCEPTION;
15 g_finished_success EXCEPTION;
16 g_finished_warning EXCEPTION;
17
18 --
19 TYPE dlv_leg_info_rec IS RECORD -- Make these columns as %TYPE
20 (
21 delivery_leg_id NUMBER,
22 delivery_id NUMBER,
23 sequence_number NUMBER,
24 pick_up_stop_id NUMBER,
25 drop_off_stop_id NUMBER,
26 reprice_required VARCHAR2(1),
27 status_code VARCHAR2(30),
28 parent_delivery_leg_id NUMBER --MDC
29 );
30 --
31 TYPE dlv_leg_tab IS TABLE OF dlv_leg_info_rec INDEX BY BINARY_INTEGER;
32 --
33 TYPE trip_info_rec IS RECORD
34 (
35 trip_id NUMBER,
36 name VARCHAR2(30),
37 planned_flag VARCHAR2(1),
38 status_code VARCHAR2(2),
39 carrier_id NUMBER,
40 ship_method_code VARCHAR2(30),
41 service_level VARCHAR2(30),
42 mode_of_transport VARCHAR2(30),
43 consolidation_allowed VARCHAR2(1),
44 lane_id NUMBER,
45 schedule_id NUMBER,
46 load_tender_status wsh_trips.load_tender_status%TYPE
47 );
48 --
49 TYPE trip_info_tab IS TABLE OF trip_info_rec INDEX BY BINARY_INTEGER;
50 --
51 TYPE dleg_trip_rec IS RECORD
52 (
53 delivery_leg_id NUMBER,
54 trip_id NUMBER
55 );
56 --
57 TYPE dleg_trip_tab IS TABLE OF dleg_trip_rec INDEX BY BINARY_INTEGER;
58 --
59 TYPE lane_match_rec IS RECORD
60 (
61 trip_id NUMBER,
62 delivery_leg_id NUMBER,
63 delivery_id NUMBER,
64 lane_id NUMBER,
65 ship_method_code VARCHAR2(30),
66 ship_method_name VARCHAR2(240),
67 carrier_id NUMBER,
68 service_level VARCHAR2(30),
69 mode_of_transport VARCHAR2(30),
70 new_match VARCHAR2(1),
71 transit_time NUMBER,
72 transit_time_uom VARCHAR2(30)
73 );
74 --
75 TYPE lane_match_tab IS TABLE OF lane_match_rec INDEX BY BINARY_INTEGER;
76 --
77 --
78 -- Package private cursors
79 CURSOR c_delivery(c_dlv NUMBER)
80 IS
81 SELECT * FROM wsh_new_deliveries
82 WHERE delivery_id = c_dlv;
83 --
84 CURSOR c_count_delivery_details(c_delivery_id NUMBER)
85 IS
86 SELECT count(delivery_detail_id) FROM wsh_delivery_assignments
87 WHERE (delivery_id = c_delivery_id OR parent_delivery_id= c_delivery_id);
88
89 CURSOR c_count_delivery_details2(c_trip_id NUMBER)
90 IS
91 SELECT count(delivery_detail_id) FROM wsh_delivery_assignments
92 WHERE delivery_id in
93 (SELECT wdl.delivery_id
94 FROM wsh_delivery_legs wdl,
95 wsh_trip_stops wts1,
96 wsh_trip_stops wts2
97 WHERE wts1.trip_id = c_trip_id
98 AND wts2.trip_id = c_trip_id
99 AND wts1.stop_id = wdl.pick_up_stop_id
100 AND wts2.stop_id = wdl.drop_off_stop_id
101 );
102
103 -- count the number of deliveries which should not be rated due to freight term
104 CURSOR c_check_del_freight_term(c_delivery_id NUMBER)
105 IS
106 SELECT count(wd.delivery_id)
107 FROM wsh_new_deliveries wd, wsh_global_parameters wgp
108 WHERE (
109 ((wd.shipment_direction in ('I'))
110 and (wgp.rate_ib_dels_fgt_term is not null)
111 and (wd.freight_terms_code is not null)
112 and (wgp.rate_ib_dels_fgt_term <> wd.freight_terms_code)
113 )
114 OR
115 ((wd.shipment_direction in ('D'))
116 and (wgp.rate_ds_dels_fgt_term_id is not null)
117 and (wd.freight_terms_code is not null)
118 and (wgp.rate_ds_dels_fgt_term_id <> wd.freight_terms_code)
119 )
120 OR
121 ((nvl(wd.shipment_direction,'O') in ('O','IO'))
122 and (wgp.skip_rate_ob_dels_fgt_term is not null)
123 and (wd.freight_terms_code is not null)
124 and (wgp.skip_rate_ob_dels_fgt_term = wd.freight_terms_code)
125 )
126 )
127 AND wd.delivery_id = c_delivery_id;
128
129 -- count the number of deliveries which should not be rated due to freight term
130 CURSOR c_check_del_freight_term2(c_trip_id NUMBER)
131 IS
132 SELECT count(wd.delivery_id)
133 FROM wsh_new_deliveries wd, wsh_global_parameters wgp
134 WHERE (
135 ((wd.shipment_direction in ('I'))
136 and (wgp.rate_ib_dels_fgt_term is not null)
137 and (wd.freight_terms_code is not null)
138 and (wgp.rate_ib_dels_fgt_term <> wd.freight_terms_code)
139 )
140 OR
141 ((wd.shipment_direction in ('D'))
142 and (wgp.rate_ds_dels_fgt_term_id is not null)
143 and (wd.freight_terms_code is not null)
144 and (wgp.rate_ds_dels_fgt_term_id <> wd.freight_terms_code)
145 )
146 OR
147 ((nvl(wd.shipment_direction,'O') in ('O','IO'))
148 and (wgp.skip_rate_ob_dels_fgt_term is not null)
149 and (wd.freight_terms_code is not null)
150 and (wgp.skip_rate_ob_dels_fgt_term = wd.freight_terms_code)
151 )
152 )
153 AND wd.delivery_id in
154 (SELECT wdl.delivery_id
155 FROM wsh_delivery_legs wdl,
156 wsh_trip_stops wts1,
157 wsh_trip_stops wts2
158 WHERE wts1.trip_id = c_trip_id
159 AND wts2.trip_id = c_trip_id
160 AND wts1.stop_id = wdl.pick_up_stop_id
161 AND wts2.stop_id = wdl.drop_off_stop_id
162 );
163
164 -- count the number of deliveries which should not be rated due to manifesting
165 CURSOR c_check_del_manifesting(c_delivery_id NUMBER)
166 IS
167 SELECT count(a.delivery_id)
168 FROM wsh_new_deliveries a,
169 mtl_parameters b,
170 wsh_carriers c
171 WHERE a.organization_id = b.organization_id
172 AND a.carrier_id = c.carrier_id
173 AND c.manifesting_enabled_flag = 'Y'
174 AND b.carrier_manifesting_flag = 'Y'
175 AND a.delivery_id = c_delivery_id;
176
177 -- count the number of deliveries which should not be rated due to manifesting
178 CURSOR c_check_del_manifesting2(c_trip_id NUMBER)
179 IS
180 SELECT count(a.delivery_id)
181 FROM wsh_new_deliveries a,
182 mtl_parameters b,
183 wsh_carriers c
184 WHERE a.organization_id = b.organization_id
185 AND a.carrier_id = c.carrier_id
186 AND c.manifesting_enabled_flag = 'Y'
187 AND b.carrier_manifesting_flag = 'Y'
188 AND a.delivery_id in
189 (SELECT wdl.delivery_id
190 FROM wsh_delivery_legs wdl,
191 wsh_trip_stops wts1,
192 wsh_trip_stops wts2
193 WHERE wts1.trip_id = c_trip_id
194 AND wts2.trip_id = c_trip_id
195 AND wts1.stop_id = wdl.pick_up_stop_id
196 AND wts2.stop_id = wdl.drop_off_stop_id
197 );
198
199 CURSOR c_get_carrier_manifest_enabled(c_carrier_id NUMBER)
200 IS
201 SELECT manifesting_enabled_flag
202 FROM wsh_carriers
203 WHERE carrier_id = c_carrier_id;
204
205 CURSOR c_get_del_manifest_enabled(c_delivery_id NUMBER)
206 IS
207 SELECT b.carrier_manifesting_flag
208 FROM wsh_new_deliveries a,
209 mtl_parameters b
210 WHERE a.organization_id = b.organization_id
211 AND a.delivery_id = c_delivery_id;
212 --
213 CURSOR c_carrier_services(c_shp_mthd_cd VARCHAR2)
214 IS
215 SELECT ship_method_code,carrier_id, service_level, mode_of_transport, ship_method_meaning
216 FROM wsh_carrier_services
217 WHERE ship_method_code = c_shp_mthd_cd;
218
219 CURSOR c_get_ship_method (c_carrier_id VARCHAR2, c_mode_of_trans VARCHAR2, c_service_level VARCHAR2) IS
220 SELECT ship_method_code, ship_method_meaning
221 FROM wsh_carrier_services
222 WHERE carrier_id = c_carrier_id
223 AND service_level = c_service_level
224 AND mode_of_transport = c_mode_of_trans;
225
226 CURSOR c_get_ship_method_code (c_carrier_id VARCHAR2, c_mode_of_trans VARCHAR2, c_service_level VARCHAR2, c_org_id NUMBER) IS
227 SELECT a.ship_method_code, a.ship_method_meaning
228 FROM wsh_carrier_services a, wsh_org_carrier_services b
229 WHERE a.carrier_service_id = b.carrier_service_id
230 AND b.organization_id = c_org_id
231 AND b.enabled_flag = 'Y'
232 AND a.enabled_flag = 'Y'
233 AND a.mode_of_transport = c_mode_of_trans
234 AND a.service_level = c_service_level
235 AND a.carrier_id = c_carrier_id;
236
237 CURSOR c_get_generic_carrier_flag (c_carrier_id VARCHAR2) IS
238 SELECT generic_flag
239 FROM wsh_carriers
240 WHERE carrier_id = c_carrier_id;
241
242 CURSOR c_get_carrier_name(c_carrier_id NUMBER)
243 IS
244 SELECT hz.party_name carrier_name
245 FROM hz_parties hz, wsh_carriers wc
246 WHERE hz.party_id = wc.carrier_id
247 AND nvl(wc.generic_flag,'N') = 'N'
248 AND wc.carrier_id = c_carrier_id;
249
250 CURSOR c_get_mode_of_transport(c_mode_of_transport_code VARCHAR2)
251 IS
252 SELECT meaning mode_of_transport
253 FROM fnd_lookup_values_vl
254 WHERE lookup_type = 'WSH_MODE_OF_TRANSPORT'
255 AND nvl(start_date_active, sysdate) <= sysdate
256 AND nvl(end_date_active, sysdate) >= sysdate
257 AND enabled_flag='Y'
258 AND lookup_code = c_mode_of_transport_code;
259
260 CURSOR c_get_service_level(c_service_type_code VARCHAR2)
261 IS
262 SELECT meaning service_type
263 FROM fnd_lookup_values_vl
264 WHERE lookup_type = 'WSH_SERVICE_LEVELS'
265 AND nvl(start_date_active, sysdate) <= sysdate
266 AND nvl(end_date_active, sysdate) >= sysdate
267 AND enabled_flag='Y'
268 AND lookup_code = c_service_type_code;
269
270 --
271 CURSOR c_dlv_legs(c_dlv_id NUMBER)
272 IS
273 SELECT delivery_leg_id,
274 delivery_id,
275 sequence_number,
276 pick_up_stop_id,
277 drop_off_stop_id,
278 reprice_required,
279 status_code,
280 parent_delivery_leg_id
281 FROM wsh_delivery_legs
282 WHERE delivery_id = c_dlv_id;
283 --
284 CURSOR c_leg_trip_det(c_delivery_leg_id NUMBER)
285 IS
286 SELECT wt.trip_id,
287 wt.name,
288 wt.planned_flag,
289 wt.status_code,
290 wt.carrier_id,
291 wt.ship_method_code,
292 wt.service_level,
293 wt.mode_of_transport,
294 wt.consolidation_allowed,
295 wt.lane_id,
296 wt.schedule_id,
297 wt.load_tender_status
298 FROM wsh_trips wt,
299 wsh_delivery_legs wdl,
300 wsh_trip_stops wts1,
301 wsh_trip_stops wts2
302 WHERE wts1.stop_id = wdl.pick_up_stop_id
303 AND wts2.stop_id = wdl.drop_off_stop_id
304 AND wts1.trip_id = wt.trip_id
305 AND wts2.trip_id = wt.trip_id
306 AND wdl.delivery_leg_id = c_delivery_leg_id;
307 --
308 CURSOR c_trip_info(c_trip_id NUMBER)
309 IS
310 SELECT wt.trip_id,
311 wt.name,
312 wt.planned_flag,
313 wt.status_code,
314 wt.carrier_id,
315 wt.ship_method_code,
316 wt.service_level,
317 wt.mode_of_transport,
318 wt.consolidation_allowed,
319 wt.lane_id,
320 wt.schedule_id,
321 wt.load_tender_status
322 FROM wsh_trips wt
323 WHERE wt.trip_id = c_trip_id;
324
325 CURSOR c_trip_first_stop(c_trip_id NUMBER)
326 IS
327 SELECT stop_location_id, planned_departure_date
328 FROM wsh_trip_stops
329 WHERE trip_id = c_trip_id
330 AND stop_sequence_number =
331 (SELECT min(stop_sequence_number)
332 FROM wsh_trip_stops
333 WHERE trip_id = c_trip_id);
334
335 CURSOR c_trip_last_stop(c_trip_id NUMBER)
336 IS
337 SELECT stop_location_id, planned_arrival_date
338 FROM wsh_trip_stops
339 WHERE trip_id = c_trip_id
340 AND stop_sequence_number =
341 (SELECT max(stop_sequence_number)
342 FROM wsh_trip_stops
343 WHERE trip_id = c_trip_id);
344 --
345 CURSOR c_cnt_trip_legs(c_trip_id NUMBER)
346 IS
347 SELECT count(wdl.delivery_leg_id)
348 FROM wsh_delivery_legs wdl,
349 wsh_trip_stops wts1,
350 wsh_trip_stops wts2
351 WHERE wts1.trip_id = c_trip_id
352 AND wts2.trip_id = c_trip_id
353 AND wts1.stop_id = wdl.pick_up_stop_id
354 AND wts2.stop_id = wdl.drop_off_stop_id;
355
356 CURSOR c_count_reprice_reqd(c_trip_id IN NUMBER) IS
357 Select count(*)
358 from wsh_delivery_legs wdl, wsh_trip_stops wts1, wsh_trip_stops wts2,wsh_trips wt
359 where wdl.pick_up_stop_id = wts1.stop_id
360 and wdl.drop_off_stop_id = wts2.stop_id
361 and wdl.reprice_required = 'Y'
362 and wts1.trip_id = wt.trip_id
363 and wts2.trip_id = wt.trip_id
364 and wt.trip_id = c_trip_id;
365 --
366 CURSOR c_trip_legs(c_trip_id NUMBER)
367 IS
368 SELECT wdl.delivery_leg_id,
369 wdl.delivery_id,
370 wdl.sequence_number,
371 wdl.pick_up_stop_id,
372 wdl.drop_off_stop_id,
373 wdl.reprice_required,
374 wdl.status_code,
375 wdl.parent_delivery_leg_id
376 FROM wsh_delivery_legs wdl,
377 wsh_trip_stops wts1,
378 wsh_trip_stops wts2
379 WHERE wts1.trip_id = c_trip_id
380 AND wts2.trip_id = c_trip_id
381 AND wts1.stop_id = wdl.pick_up_stop_id
382 AND wts2.stop_id = wdl.drop_off_stop_id;
383
384 CURSOR c_get_dleg_id (c_delivery_id NUMBER)
385 IS
386 SELECT delivery_leg_id
387 FROM wsh_delivery_legs
388 WHERE delivery_id = c_delivery_id;
389 --
390 -- Package global variables
391 --
392 -- holds the delivery information and is compatible with delivery action group api
393 -- is indexed by delivery_id
394 g_dlv_tab WSH_NEW_DELIVERIES_PVT.Delivery_Attr_Tbl_Type;
395 --
396 -- holds delivery leg information, indexed on delivery_leg_id
397 g_dlv_leg_tab dlv_leg_tab;
398 --
399 -- holds trip information, indexed on trip_id
400 g_trip_info_tab trip_info_tab;
401 --
402 -- holds association of trip and delivery_leg
403 g_dleg_trip_tab dleg_trip_tab;
404 --
405
406 g_ship_date DATE;
407 g_arrival_date DATE;
408 --
409 --method declarations
410 --
411
412
413
414 PROCEDURE Get_Trip_Mode(
415 p_trip_id IN NUMBER,
416 p_dleg_id IN NUMBER,
417 x_trip_id IN OUT NOCOPY NUMBER,
418 x_mode_of_transport IN OUT NOCOPY VARCHAR2,
419 x_return_status OUT NOCOPY VARCHAR2 )
420 IS
421
422
423 l_trip_info trip_info_rec;
424 l_log_level NUMBER := fte_freight_pricing_util.G_DBG;
425 l_api_name VARCHAR2(50) := 'Get_Trip_Mode';
426
427 BEGIN
428
429 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
430 FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
431 FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,l_api_name);
432
433
434 IF(p_trip_id IS NOT NULL)
435 THEN
436
437 OPEN c_trip_info(p_trip_id);
438 FETCH c_trip_info INTO l_trip_info;
439 CLOSE c_trip_info;
440
441 ELSIF(p_dleg_id IS NOT NULL)
442 THEN
443
444 OPEN c_leg_trip_det(p_dleg_id);
445 FETCH c_leg_trip_det INTO l_trip_info;
446 CLOSE c_leg_trip_det;
447
448 END IF;
449
450 x_trip_id:=l_trip_info.trip_id;
451 x_mode_of_transport:=l_trip_info.mode_of_transport;
452
453 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
454
455 EXCEPTION
456 WHEN others THEN
457 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
458 FTE_FREIGHT_PRICING_UTIL.set_exception(l_api_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
459 FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
460 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
461
462
463 END Get_Trip_Mode;
464
465
466
467 --
468 PROCEDURE api_post_call
469 (
470 p_api_name IN VARCHAR2,
471 p_api_return_status IN VARCHAR2,
472 p_message_name IN VARCHAR2,
473 p_trip_id IN VARCHAR2 DEFAULT NULL,
474 p_delivery_id IN VARCHAR2 DEFAULT NULL,
475 p_delivery_leg_id IN VARCHAR2 DEFAULT NULL,
476 x_number_of_errors IN OUT NOCOPY NUMBER,
477 x_number_of_warnings IN OUT NOCOPY NUMBER,
478 x_return_status OUT NOCOPY VARCHAR2
479 )
480 IS
481 l_debug_on CONSTANT BOOLEAN := WSH_DEBUG_SV.is_debug_enabled;
482 l_module_name CONSTANT VARCHAR2(100) := 'fte.plsql.' || G_PKG_NAME || '.' || 'API_POST_CALL';
483 l_msg_type VARCHAR2(1);
484 BEGIN
485 --
486 IF l_debug_on THEN
487 wsh_debug_sv.push(l_module_name);
488 END IF;
489 x_return_status := p_api_return_status; -- default
490 IF p_api_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
491 THEN
492 IF p_api_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING THEN
493 l_msg_type := 'W';
494 x_number_of_warnings := x_number_of_warnings + 1;
495 ELSIF p_api_return_status = WSH_UTIL_CORE.G_RET_STS_ERROR THEN
496 l_msg_type := 'E';
497 x_number_of_errors := x_number_of_errors + 1;
498 ELSIF p_api_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR THEN
499 l_msg_type := 'U';
500 x_number_of_errors := x_number_of_errors + 1;
501 END IF;
502 IF (p_message_name IS NOT NULL
503 AND p_api_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING) THEN
504 FTE_FREIGHT_PRICING_UTIL.setmsg(
505 p_api => p_api_name,
506 p_exc => ' ',
507 p_msg_name => p_message_name,
508 p_msg_type => l_msg_type,
509 p_trip_id => p_trip_id,
510 p_delivery_id => p_delivery_id,
511 p_delivery_leg_id => p_delivery_leg_id);
512 END IF;
513 End IF;
514 IF l_debug_on THEN
515 WSH_DEBUG_SV.pop(l_module_name);
516 END IF;
517 --
518 EXCEPTION
519 WHEN OTHERS THEN
520 wsh_util_core.default_handler(G_PKG_NAME||'.API_POST_CALL');
521 WSH_UTIL_CORE.ADD_MESSAGE(WSH_UTIL_CORE.G_RET_STS_ERROR);
522 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
523 END api_post_call;
524 --
525 --
526 PROCEDURE load_dlv_rec (p_dlv_rec IN c_delivery%ROWTYPE,
527 x_dlv_rec OUT NOCOPY WSH_NEW_DELIVERIES_PVT.Delivery_Rec_Type)
528 IS
529 BEGIN
530 --
531 x_dlv_rec.DELIVERY_ID := p_dlv_rec.DELIVERY_ID;
532 x_dlv_rec.NAME := p_dlv_rec.NAME;
533 x_dlv_rec.PLANNED_FLAG := p_dlv_rec.PLANNED_FLAG;
534 x_dlv_rec.STATUS_CODE := p_dlv_rec.STATUS_CODE;
535 x_dlv_rec.DELIVERY_TYPE := p_dlv_rec.DELIVERY_TYPE;
536 x_dlv_rec.LOADING_SEQUENCE := p_dlv_rec.LOADING_SEQUENCE;
537 x_dlv_rec.LOADING_ORDER_FLAG := p_dlv_rec.LOADING_ORDER_FLAG;
538 x_dlv_rec.INITIAL_PICKUP_DATE := p_dlv_rec.INITIAL_PICKUP_DATE;
539 x_dlv_rec.INITIAL_PICKUP_LOCATION_ID := p_dlv_rec.INITIAL_PICKUP_LOCATION_ID;
540 x_dlv_rec.ORGANIZATION_ID := p_dlv_rec.ORGANIZATION_ID;
541 x_dlv_rec.ULTIMATE_DROPOFF_LOCATION_ID := p_dlv_rec.ULTIMATE_DROPOFF_LOCATION_ID;
542 x_dlv_rec.ULTIMATE_DROPOFF_DATE := p_dlv_rec.ULTIMATE_DROPOFF_DATE;
543 x_dlv_rec.CUSTOMER_ID := p_dlv_rec.CUSTOMER_ID;
544 x_dlv_rec.INTMED_SHIP_TO_LOCATION_ID := p_dlv_rec.INTMED_SHIP_TO_LOCATION_ID;
545 x_dlv_rec.POOLED_SHIP_TO_LOCATION_ID := p_dlv_rec.POOLED_SHIP_TO_LOCATION_ID;
546 x_dlv_rec.CARRIER_ID := p_dlv_rec.CARRIER_ID;
547 x_dlv_rec.SHIP_METHOD_CODE := p_dlv_rec.SHIP_METHOD_CODE;
548 x_dlv_rec.FREIGHT_TERMS_CODE := p_dlv_rec.FREIGHT_TERMS_CODE;
549 x_dlv_rec.FOB_CODE := p_dlv_rec.FOB_CODE;
550 x_dlv_rec.FOB_LOCATION_ID := p_dlv_rec.FOB_LOCATION_ID;
551 x_dlv_rec.WAYBILL := p_dlv_rec.WAYBILL;
552 x_dlv_rec.DOCK_CODE := p_dlv_rec.DOCK_CODE;
553 x_dlv_rec.ACCEPTANCE_FLAG := p_dlv_rec.ACCEPTANCE_FLAG;
554 x_dlv_rec.ACCEPTED_BY := p_dlv_rec.ACCEPTED_BY;
555 x_dlv_rec.ACCEPTED_DATE := p_dlv_rec.ACCEPTED_DATE;
556 x_dlv_rec.ACKNOWLEDGED_BY := p_dlv_rec.ACKNOWLEDGED_BY;
557 x_dlv_rec.CONFIRMED_BY := p_dlv_rec.CONFIRMED_BY;
558 x_dlv_rec.CONFIRM_DATE := p_dlv_rec.CONFIRM_DATE;
559 x_dlv_rec.ASN_DATE_SENT := p_dlv_rec.ASN_DATE_SENT;
560 x_dlv_rec.ASN_STATUS_CODE := p_dlv_rec.ASN_STATUS_CODE;
561 x_dlv_rec.ASN_SEQ_NUMBER := p_dlv_rec.ASN_SEQ_NUMBER;
562 x_dlv_rec.GROSS_WEIGHT := p_dlv_rec.GROSS_WEIGHT;
563 x_dlv_rec.NET_WEIGHT := p_dlv_rec.NET_WEIGHT;
564 x_dlv_rec.WEIGHT_UOM_CODE := p_dlv_rec.WEIGHT_UOM_CODE;
565 x_dlv_rec.VOLUME := p_dlv_rec.VOLUME;
566 x_dlv_rec.VOLUME_UOM_CODE := p_dlv_rec.VOLUME_UOM_CODE;
567 x_dlv_rec.ADDITIONAL_SHIPMENT_INFO := p_dlv_rec.ADDITIONAL_SHIPMENT_INFO;
568 x_dlv_rec.CURRENCY_CODE := p_dlv_rec.CURRENCY_CODE;
569 x_dlv_rec.CREATION_DATE := p_dlv_rec.CREATION_DATE;
570 x_dlv_rec.CREATED_BY := p_dlv_rec.CREATED_BY;
571 x_dlv_rec.LAST_UPDATE_DATE := p_dlv_rec.LAST_UPDATE_DATE;
572 x_dlv_rec.LAST_UPDATED_BY := p_dlv_rec.LAST_UPDATED_BY;
573 x_dlv_rec.LAST_UPDATE_LOGIN := p_dlv_rec.LAST_UPDATE_LOGIN;
574 x_dlv_rec.PROGRAM_APPLICATION_ID := p_dlv_rec.PROGRAM_APPLICATION_ID;
575 x_dlv_rec.PROGRAM_ID := p_dlv_rec.PROGRAM_ID;
576 x_dlv_rec.PROGRAM_UPDATE_DATE := p_dlv_rec.PROGRAM_UPDATE_DATE;
577 x_dlv_rec.REQUEST_ID := p_dlv_rec.REQUEST_ID;
578 x_dlv_rec.BATCH_ID := p_dlv_rec.BATCH_ID;
579 x_dlv_rec.HASH_VALUE := p_dlv_rec.HASH_VALUE;
580 x_dlv_rec.SOURCE_HEADER_ID := p_dlv_rec.SOURCE_HEADER_ID;
581 x_dlv_rec.NUMBER_OF_LPN := p_dlv_rec.NUMBER_OF_LPN;
582 /* Changes for the Shipping Data Model Bug#1918342*/
583 x_dlv_rec.COD_AMOUNT := p_dlv_rec.COD_AMOUNT;
584 x_dlv_rec.COD_CURRENCY_CODE := p_dlv_rec.COD_CURRENCY_CODE;
585 x_dlv_rec.COD_REMIT_TO := p_dlv_rec.COD_REMIT_TO;
586 x_dlv_rec.COD_CHARGE_PAID_BY := p_dlv_rec.COD_CHARGE_PAID_BY;
587 x_dlv_rec.PROBLEM_CONTACT_REFERENCE := p_dlv_rec.PROBLEM_CONTACT_REFERENCE;
588 x_dlv_rec.PORT_OF_LOADING := p_dlv_rec.PORT_OF_LOADING;
589 x_dlv_rec.PORT_OF_DISCHARGE := p_dlv_rec.PORT_OF_DISCHARGE;
590 x_dlv_rec.FTZ_NUMBER := p_dlv_rec.FTZ_NUMBER;
591 x_dlv_rec.ROUTED_EXPORT_TXN := p_dlv_rec.ROUTED_EXPORT_TXN;
592 x_dlv_rec.ENTRY_NUMBER := p_dlv_rec.ENTRY_NUMBER;
593 x_dlv_rec.ROUTING_INSTRUCTIONS := p_dlv_rec.ROUTING_INSTRUCTIONS;
594 x_dlv_rec.IN_BOND_CODE := p_dlv_rec.IN_BOND_CODE;
595 x_dlv_rec.SHIPPING_MARKS := p_dlv_rec.SHIPPING_MARKS;
596 /* H Integration: datamodel changes wrudge */
597 x_dlv_rec.SERVICE_LEVEL := p_dlv_rec.SERVICE_LEVEL;
598 x_dlv_rec.MODE_OF_TRANSPORT := p_dlv_rec.MODE_OF_TRANSPORT;
599 x_dlv_rec.ASSIGNED_TO_FTE_TRIPS := p_dlv_rec.ASSIGNED_TO_FTE_TRIPS;
600 /* I Quickship : datamodel changes sperera */
601 x_dlv_rec.AUTO_SC_EXCLUDE_FLAG := p_dlv_rec.AUTO_SC_EXCLUDE_FLAG;
602 x_dlv_rec.AUTO_AP_EXCLUDE_FLAG := p_dlv_rec.AUTO_AP_EXCLUDE_FLAG;
603 x_dlv_rec.AP_BATCH_ID := p_dlv_rec.AP_BATCH_ID;
604 --
605 END;
606
607 PROCEDURE convert_amount(
608 p_from_currency IN VARCHAR2,
609 p_from_amount IN NUMBER,
610 p_to_currency IN VARCHAR2,
611 x_to_amount OUT NOCOPY NUMBER,
612 x_return_status OUT NOCOPY VARCHAR2)
613 IS
614 l_log_level NUMBER := fte_freight_pricing_util.G_DBG;
615 l_api_name VARCHAR2(50) := 'convert_amount';
616 BEGIN
617 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
618 FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
619 FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,l_api_name);
620
621 fte_freight_pricing_util.print_msg(l_log_level,'p_from_currency= '||p_from_currency);
622 fte_freight_pricing_util.print_msg(l_log_level,'p_from_amount= '||p_from_amount);
623 fte_freight_pricing_util.print_msg(l_log_level,'p_to_currency= '||p_to_currency);
624
625 x_to_amount := GL_CURRENCY_API.convert_amount(
626 p_from_currency,
627 p_to_currency,
628 SYSDATE,
629 'Corporate',
630 p_from_amount
631 );
632
633 fte_freight_pricing_util.print_msg(l_log_level,'x_to_amount= '||x_to_amount);
634
635 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level, l_api_name);
636
637 EXCEPTION
638 WHEN others THEN
639 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
640 FTE_FREIGHT_PRICING_UTIL.set_exception(l_api_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
641 FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
642 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
643
644 END convert_amount;
645
646 PROCEDURE validate_delivery (p_delivery_id IN NUMBER,
647 x_return_code OUT NOCOPY NUMBER)
648 IS
649 l_log_level NUMBER := FTE_FREIGHT_PRICING_UTIL.G_LOG;
650 l_dlv_rec WSH_NEW_DELIVERIES_PVT.Delivery_Rec_Type;
651 c_dlv_rec c_delivery%ROWTYPE;
652
653 c_carr_srv_rec c_carrier_services%ROWTYPE;
654 l_ship_method_code wsh_carrier_services.ship_method_code%type;
655 l_ship_method_meaning wsh_carrier_services.ship_method_meaning%type;
656 l_carrier_id NUMBER;
657 l_mode_of_transport wsh_carrier_services.mode_of_transport%type;
658 l_service_level wsh_carrier_services.service_level%type;
659 --
660 l_leg_id NUMBER;
661 l_trip_id NUMBER;
662 i NUMBER := 0;
663 l_dlev_leg_rec dlv_leg_info_rec;
664 l_trip_info_rec trip_info_rec;
665 l_trip_dleg_cnt NUMBER;
666 l_leg_count NUMBER;
667 l_count NUMBER;
668 l_reprice_required VARCHAR2(1);
669 l_leg_trip_det_rec c_leg_trip_det%ROWTYPE;
670 --
671 l_return_status VARCHAR2(30);
672 l_return_status_1 VARCHAR2(30);
673 l_number_of_errors NUMBER;
674 l_number_of_warnings NUMBER;
675 l_debug_on CONSTANT BOOLEAN := WSH_DEBUG_SV.is_debug_enabled;
676 l_module_name CONSTANT VARCHAR2(100) := 'fte.plsql.' || G_PKG_NAME || '.' || 'VALIDATE_DELIVERY';
677 l_api_name CONSTANT VARCHAR2(30) := 'VALIDATE_DELIVERY';
678
679 l_check_dlv_shipmethod VARCHAR2(1) := 'N';
680 --
681 BEGIN
682 --
683 x_return_code := G_RC_SUCCESS;
684
685 IF l_debug_on THEN
686 wsh_debug_sv.push(l_module_name);
687 END IF;
688
689 FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
690 FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,l_api_name,'start');
691
692 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_delivery_id='||p_delivery_id);
693
694 -- check for empty delivery
695 l_count := 0;
696 OPEN c_count_delivery_details(p_delivery_id);
697 FETCH c_count_delivery_details INTO l_count;
698 CLOSE c_count_delivery_details;
699 IF ( l_count <= 0 ) THEN
700
701 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'empty delivery');
702
703 l_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
704 api_post_call
705 (
706 p_api_name => l_module_name,
707 p_api_return_status => l_return_status,
708 p_message_name => 'FTE_PRC_EMPTY_DEL',
709 p_trip_id => null,
710 p_delivery_id => p_delivery_id,
711 p_delivery_leg_id => null,
712 x_number_of_errors => l_number_of_errors,
713 x_number_of_warnings => l_number_of_warnings,
714 x_return_status => l_return_status_1
715 );
716
717 IF (l_return_status_1 = WSH_UTIL_CORE.G_RET_STS_ERROR )
718 THEN
719 RAISE FND_API.G_EXC_ERROR;
720 ELSIF (l_return_status_1 = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR )
721 THEN
722 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
723 END IF;
724 END IF;
725
726 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'populating delivery info...');
727
728 OPEN c_delivery(p_delivery_id);
729 FETCH c_delivery INTO c_dlv_rec;
730 CLOSE c_delivery;
731
732 -- store delivery information
733 load_dlv_rec (p_dlv_rec => c_dlv_rec, x_dlv_rec => l_dlv_rec);
734
735 g_dlv_tab(p_delivery_id) := l_dlv_rec;
736
737 IF (g_dlv_tab(p_delivery_id).ship_method_code is not null)
738 AND (g_dlv_tab(p_delivery_id).carrier_id is null
739 OR g_dlv_tab(p_delivery_id).mode_of_transport is null
740 OR g_dlv_tab(p_delivery_id).service_level is null) THEN
741
742 OPEN c_carrier_services(g_dlv_tab(p_delivery_id).ship_method_code);
743 FETCH c_carrier_services INTO c_carr_srv_rec;
744 CLOSE c_carrier_services;
745
746 g_dlv_tab(p_delivery_id).carrier_id := c_carr_srv_rec.carrier_id;
747 g_dlv_tab(p_delivery_id).mode_of_transport := c_carr_srv_rec.mode_of_transport;
748 g_dlv_tab(p_delivery_id).service_level := c_carr_srv_rec.service_level;
749
750 END IF;
751
752 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'validating delivery status...');
753
754 IF ( g_dlv_tab(p_delivery_id).status_code <> 'OP' ) THEN
755
756 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'delivery status is not OPEN');
757
758 l_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
759 api_post_call
760 (
761 p_api_name => l_module_name,
762 p_api_return_status => l_return_status,
763 p_message_name => 'FTE_PRC_DLV_DLV_INV_STATUS',
764 p_trip_id => null,
765 p_delivery_id => p_delivery_id,
766 p_delivery_leg_id => null,
767 x_number_of_errors => l_number_of_errors,
768 x_number_of_warnings => l_number_of_warnings,
769 x_return_status => l_return_status_1
770 );
771
772 IF (l_return_status_1 = WSH_UTIL_CORE.G_RET_STS_ERROR )
773 THEN
774 RAISE FND_API.G_EXC_ERROR;
775 ELSIF (l_return_status_1 = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR )
776 THEN
777 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
778 END IF;
779 END IF;
780
781 l_ship_method_code := g_dlv_tab(p_delivery_id).ship_method_code;
782 l_carrier_id := g_dlv_tab(p_delivery_id).carrier_id;
783 l_mode_of_transport := g_dlv_tab(p_delivery_id).mode_of_transport;
784 l_service_level := g_dlv_tab(p_delivery_id).service_level;
785
786 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'delivery ship method code is '||l_ship_method_code);
787 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'delivery carrier id is '||l_carrier_id);
788 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'delivery mode_of_transport is '||l_mode_of_transport);
789 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'delivery service_level is '||l_service_level);
790
791 -- populate dleg, trip
792 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'populating dleg and trip info...');
793
794 -- store delivery leg, trip information if existing
795 l_leg_count := 0;
796 l_reprice_required := 'N';
797 FOR c_dleg_rec in c_dlv_legs(p_delivery_id)
798 LOOP
799
800 l_leg_count := l_leg_count +1;
801 l_leg_id := c_dleg_rec.delivery_leg_id;
802
803 g_dlv_leg_tab(l_leg_id) := c_dleg_rec;
804
805 OPEN c_leg_trip_det(l_leg_id);
806 FETCH c_leg_trip_det INTO l_leg_trip_det_rec;
807 CLOSE c_leg_trip_det;
808 l_trip_id := l_leg_trip_det_rec.trip_id;
809 g_trip_info_tab(l_trip_id) := l_leg_trip_det_rec;
810
811 g_dleg_trip_tab(l_leg_id).delivery_leg_id := l_leg_id;
812 g_dleg_trip_tab(l_leg_id).trip_id := l_trip_id;
813
814 OPEN c_cnt_trip_legs(l_trip_id);
815 FETCH c_cnt_trip_legs INTO l_trip_dleg_cnt;
816 CLOSE c_cnt_trip_legs;
817
818 --Need to remove following check as in R12 Multileg rating is allowed
819 -- from STF.
820
821 /* IF (l_trip_dleg_cnt > 1) THEN
822 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'trip '||l_trip_id||' has too many dlegs');
823
824 l_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
825 api_post_call
826 (
827 p_api_name => l_module_name,
828 p_api_return_status => l_return_status,
829 p_message_name => 'FTE_PRC_TRP_MNY_DLV',
830 p_trip_id => l_trip_id,
831 p_delivery_id => null,
832 p_delivery_leg_id => null,
833 x_number_of_errors => l_number_of_errors,
834 x_number_of_warnings => l_number_of_warnings,
835 x_return_status => l_return_status_1
836 );
837
838 IF (l_return_status_1 = 'E')
839 THEN
840 RAISE FND_API.G_EXC_ERROR;
841 ELSIF (l_return_status_1 = 'U')
842 THEN
843 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
844 END IF;
845 END IF; -- l_trip_dleg_cnt > 1
846 */
847 IF (g_trip_info_tab(l_leg_trip_det_rec.trip_id).ship_method_code is not null)
848 AND (g_trip_info_tab(l_leg_trip_det_rec.trip_id).carrier_id is null
849 OR g_trip_info_tab(l_leg_trip_det_rec.trip_id).mode_of_transport is null
850 OR g_trip_info_tab(l_leg_trip_det_rec.trip_id).service_level is null) THEN
851
852 OPEN c_carrier_services(g_trip_info_tab(l_leg_trip_det_rec.trip_id).ship_method_code);
853 FETCH c_carrier_services INTO c_carr_srv_rec;
854 CLOSE c_carrier_services;
855
856 g_trip_info_tab(l_leg_trip_det_rec.trip_id).carrier_id := c_carr_srv_rec.carrier_id;
857 g_trip_info_tab(l_leg_trip_det_rec.trip_id).mode_of_transport := c_carr_srv_rec.mode_of_transport;
858 g_trip_info_tab(l_leg_trip_det_rec.trip_id).service_level := c_carr_srv_rec.service_level;
859
860 END IF;
861
862 IF (g_trip_info_tab(l_trip_id).carrier_id IS NULL
863 AND g_trip_info_tab(l_trip_id).mode_of_transport IS NULL
864 AND g_trip_info_tab(l_trip_id).service_level IS NULL) THEN
865
866 -- populate trip ship method with delivery ship method
867 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'populate trip '||l_trip_id||' with delivery ship method');
868 g_trip_info_tab(l_trip_id).ship_method_code := l_ship_method_code;
869 g_trip_info_tab(l_trip_id).carrier_id := l_carrier_id;
870 g_trip_info_tab(l_trip_id).mode_of_transport := l_mode_of_transport;
871 g_trip_info_tab(l_trip_id).service_level := l_service_level;
872
873 END IF; -- g_trip_info_tab(l_trip_id).ship_method_code IS NULL
874
875 IF g_trip_info_tab(l_trip_id).lane_id is null THEN
876 l_reprice_required := 'Y';
877 ELSE
878 IF g_dlv_leg_tab(l_leg_id).reprice_required = 'Y' THEN
879 l_reprice_required := 'Y';
880 END IF;
881 END IF;
882
883 END LOOP;
884
885 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_leg_count='||l_leg_count);
886
887 IF (l_leg_count > 0 AND l_reprice_required = 'N') THEN
888 /*
889 FTE_FREIGHT_PRICING_UTIL.setmsg(
890 p_api => l_api_name,
891 p_exc => ' ',
892 p_msg_name => 'FTE_PRC_NOTRATE_DEL_REQD',
893 p_msg_type => 'E',
894 p_delivery_id => p_delivery_id);
895 */
896 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'reprice not required, do not rate.');
897 x_return_code := G_RC_REPRICE_NOT_REQUIRED;
898 raise g_finished_warning;
899 END IF;
900
901 -- validate freight term
902 l_count := 0;
903 OPEN c_check_del_freight_term(p_delivery_id);
904 FETCH c_check_del_freight_term INTO l_count;
905 CLOSE c_check_del_freight_term;
906 IF ( l_count > 0 ) THEN
907 FTE_FREIGHT_PRICING_UTIL.setmsg(
908 p_api => l_api_name,
909 p_exc => ' ',
910 p_msg_name => 'FTE_PRC_NOTRATE_DEL_FGT_TERM',
911 p_msg_type => 'E',
912 p_delivery_id => p_delivery_id);
913 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'do not rate the freight term.');
914 x_return_code := G_RC_NOT_RATE_FREIGHT_TERM;
915 raise g_finished_warning;
916 END IF;
917
918 -- Manifesting validation
919 l_count := 0;
920 OPEN c_check_del_manifesting(p_delivery_id);
921 FETCH c_check_del_manifesting INTO l_count;
922 CLOSE c_check_del_manifesting;
923 IF ( l_count > 0 ) THEN
924 FTE_FREIGHT_PRICING_UTIL.setmsg(
925 p_api => l_api_name,
926 p_exc => ' ',
927 p_msg_name => 'FTE_PRC_NOTRATE_DEL_MAN',
928 p_msg_type => 'E',
929 p_delivery_id => p_delivery_id);
930 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'delivery organization is manifesting enabled and carrier is manifesting enabled, do not rate.');
931 x_return_code := G_RC_NOT_RATE_FREIGHT_TERM;
932 raise g_finished_warning;
933 END IF;
934
935 IF l_debug_on THEN
936 WSH_DEBUG_SV.pop(l_module_name);
937 END IF;
938
939 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
940
941 EXCEPTION
942 WHEN g_finished_warning THEN
943 IF l_debug_on THEN
944 WSH_DEBUG_SV.pop(l_module_name);
945 END IF;
946 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
947 --
948 WHEN FND_API.G_EXC_ERROR THEN
949 x_return_code := G_RC_ERROR;
950 IF l_debug_on THEN
951 WSH_DEBUG_SV.pop(l_module_name);
952 END IF;
953 FTE_FREIGHT_PRICING_UTIL.set_exception(l_module_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'FND_API.G_EXC_ERROR');
954 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
955 --
956 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
957 x_return_code := G_RC_ERROR;
958 IF l_debug_on THEN
959 WSH_DEBUG_SV.pop(l_module_name);
960 END IF;
961 FTE_FREIGHT_PRICING_UTIL.set_exception(l_module_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'FND_API.G_EXC_UNEXPECTED_ERROR');
962 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
963 --
964 WHEN OTHERS THEN
965 WSH_UTIL_CORE.DEFAULT_HANDLER(G_PKG_NAME||'.'||l_api_name);
966 x_return_code := G_RC_ERROR;
967 IF l_debug_on THEN
968 WSH_DEBUG_SV.pop(l_module_name);
969 END IF;
970 FTE_FREIGHT_PRICING_UTIL.set_exception(l_api_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
971 FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
972 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
973 --
974 END validate_delivery;
975 --
976 --
977 PROCEDURE create_trip (p_delivery_id IN NUMBER,
978 x_trip_id OUT NOCOPY NUMBER,
979 x_delivery_leg_id OUT NOCOPY NUMBER,
980 x_return_status OUT NOCOPY VARCHAR2)
981 IS
982 --
983 l_delivery_out_rec WSH_DELIVERIES_GRP.Delivery_Action_Out_Rec_Type;
984 l_defaults_rec WSH_DELIVERIES_GRP.default_parameters_rectype;
985 l_action_prms WSH_DELIVERIES_GRP.action_parameters_rectype;
986 l_return_status VARCHAR2(1);
987 l_return_status_1 VARCHAR2(1);
988 l_msg_count NUMBER;
989 l_msg_data VARCHAR2(32767);
990 --
991 l_delivery_id NUMBER;
992 l_delivery_leg_id NUMBER;
993 l_trip_id NUMBER;
994 i NUMBER;
995 c_dleg_rec c_dlv_legs%ROWTYPE;
996 l_leg_trip_det_rec c_leg_trip_det%ROWTYPE;
997 l_dlv_id_tab wsh_util_core.id_tab_type;
998 l_idx NUMBER;
999 --
1000 l_number_of_errors NUMBER;
1001 l_number_of_warnings NUMBER;
1002 l_debug_on CONSTANT BOOLEAN := WSH_DEBUG_SV.is_debug_enabled;
1003 l_module_name CONSTANT VARCHAR2(100) := 'fte.plsql.' || G_PKG_NAME || '.' || 'CREATE_TRIP';
1004 --
1005 --
1006 BEGIN
1007 --
1008 x_return_status := FND_API.G_RET_STS_SUCCESS;
1009 --
1010 IF l_debug_on THEN
1011 wsh_debug_sv.push(l_module_name);
1012 END IF;
1013 --
1014 IF l_debug_on THEN
1015 WSH_DEBUG_SV.logmsg(
1016 l_module_name,
1017 'p_delivery_id '||p_delivery_id,
1018 WSH_DEBUG_SV.C_PROC_LEVEL);
1019 END IF;
1020
1021 l_idx := 0;
1022 IF (g_dlv_tab.COUNT >0) THEN
1023 FOR i IN g_dlv_tab.FIRST ..g_dlv_tab.LAST
1024 LOOP
1025 -- Note : id tab should not be indexe by delivery id
1026 -- because of wsh_trip_actions needs index beginning with 1.
1027 if (i = p_delivery_id) then --fix bug2883305
1028 l_idx := l_idx +1;
1029 l_dlv_id_tab(l_idx) := g_dlv_tab(i).delivery_id;
1030 end if; -- fix bug2883305
1031 END LOOP;
1032 END IF;
1033
1034 l_action_prms.action_code := 'AUTOCREATE-TRIP';
1035 l_action_prms.caller := 'FTE';
1036 --
1037 WSH_INTERFACE_GRP.Delivery_Action
1038 ( p_api_version_number => 1.0,
1039 p_init_msg_list => FND_API.G_FALSE,
1040 p_commit => FND_API.G_FALSE,
1041 p_action_prms => l_action_prms,
1042 p_delivery_id_tab => l_dlv_id_tab,
1043 x_delivery_out_rec => l_delivery_out_rec,
1044 x_return_status => l_return_status,
1045 x_msg_count => l_msg_count,
1046 x_msg_data => l_msg_data
1047 );
1048
1049 -- WSH_DELIVERIES_GRP.Delivery_Action
1050 -- ( p_api_version_number =>'1.0',
1051 -- p_init_msg_list =>FND_API.G_TRUE,
1052 -- p_commit =>FND_API.G_FALSE,
1053 -- p_action_prms => l_action_prms,
1054 -- p_rec_attr_tab => g_dlv_tab,
1055 -- x_delivery_out_rec => l_delivery_out_rec,
1056 -- x_defaults_rec => l_defaults_rec,
1057 -- x_return_status => l_return_status,
1058 -- x_msg_count => l_msg_count,
1059 -- x_msg_data => l_msg_data
1060 --);
1061 --
1062 api_post_call
1063 (
1064 p_api_name => 'FTE_FREIGHT_RATING_DLVY_GRP.Delivery_Action',
1065 p_api_return_status => l_return_status,
1066 p_message_name => 'FTE_PRC_AUTO_CR_TRP_FL',
1067 p_trip_id => null,
1068 p_delivery_id => p_delivery_id,
1069 p_delivery_leg_id => null,
1070 x_number_of_errors => l_number_of_errors,
1071 x_number_of_warnings => l_number_of_warnings,
1072 x_return_status => l_return_status_1
1073 );
1074 --
1075 IF (l_return_status_1 = 'E')
1076 THEN
1077 RAISE FND_API.G_EXC_ERROR;
1078 ELSIF (l_return_status_1 = 'U')
1079 THEN
1080 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1081 ELSIF (l_return_status_1 = WSH_UTIL_CORE.G_RET_STS_WARNING )
1082 THEN
1083 x_return_status := l_return_status_1;
1084 END IF;
1085 --
1086 --
1087 -- TODO : check error conditions
1088 --
1089 FOR c_dleg_rec in c_dlv_legs(p_delivery_id)
1090 LOOP
1091 g_dlv_leg_tab(c_dleg_rec.delivery_leg_id) := c_dleg_rec;
1092 --
1093 l_delivery_leg_id := c_dleg_rec.delivery_leg_id;
1094 --
1095 OPEN c_leg_trip_det(l_delivery_leg_id);
1096 FETCH c_leg_trip_det INTO l_leg_trip_det_rec;
1097 CLOSE c_leg_trip_det;
1098 --
1099 g_trip_info_tab(l_leg_trip_det_rec.trip_id) := l_leg_trip_det_rec;
1100 l_trip_id := l_leg_trip_det_rec.trip_id;
1101 --
1102 g_dleg_trip_tab(c_dleg_rec.delivery_leg_id).delivery_leg_id := c_dleg_rec.delivery_leg_id;
1103 g_dleg_trip_tab(c_dleg_rec.delivery_leg_id).trip_id := l_leg_trip_det_rec.trip_id;
1104 --
1105 END LOOP;
1106 --
1107 IF l_debug_on THEN
1108 WSH_DEBUG_SV.logmsg(l_module_name,'l_delivery_leg_id=>'||l_delivery_leg_id
1109 ||'l_trip_id=>'||l_trip_id ,WSH_DEBUG_SV.C_PROC_LEVEL);
1110 END IF;
1111 x_delivery_leg_id := l_delivery_leg_id;
1112 x_trip_id := l_trip_id;
1113 --
1114 IF l_debug_on THEN
1115 WSH_DEBUG_SV.pop(l_module_name);
1116 END IF;
1117 --
1118 --
1119 EXCEPTION
1120 WHEN FND_API.G_EXC_ERROR THEN
1121 x_return_status := FND_API.G_RET_STS_ERROR;
1122 IF l_debug_on THEN
1123 WSH_DEBUG_SV.pop(l_module_name);
1124 END IF;
1125 --
1126 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1127 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
1128 IF l_debug_on THEN
1129 WSH_DEBUG_SV.pop(l_module_name);
1130 END IF;
1131 --
1132 WHEN OTHERS THEN
1133 WSH_UTIL_CORE.DEFAULT_HANDLER(G_PKG_NAME||'.create_trip');
1134 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
1135 IF l_debug_on THEN
1136 WSH_DEBUG_SV.pop(l_module_name);
1137 END IF;
1138 --
1139 END create_trip;
1140 --
1141 --
1142 PROCEDURE update_single_trip (p_trip_id IN NUMBER,
1143 p_lane_id IN NUMBER,
1144 p_carrier_id IN NUMBER,
1145 p_ship_method_code IN VARCHAR2,
1146 p_ship_method_name IN VARCHAR2,
1147 p_service_level IN VARCHAR2,
1148 p_mode_of_transport IN VARCHAR2,
1149 -- p_consolidation_allowed IN VARCHAR2,
1150 p_vehicle_type_id IN NUMBER,-- If p_vehicle_type id is not passed in
1151 p_vehicle_item_id IN NUMBER,--- then p_vehicle_item/org_id is considered
1152 p_vehicle_org_id IN NUMBER,
1153 p_rank_id IN NUMBER DEFAULT NULL,
1154 p_append_flag VARCHAR2 DEFAULT NULL,
1155 x_return_status OUT NOCOPY VARCHAR2,
1156 x_msg_count OUT NOCOPY NUMBER,
1157 x_msg_data OUT NOCOPY VARCHAR2)
1158 IS
1159 l_api_version_number NUMBER := 1;
1160 l_trip_info_tab WSH_TRIPS_PVT.Trip_Attr_Tbl_Type;
1161 l_trip_info WSH_TRIPS_PVT.Trip_Rec_Type;
1162 l_trip_in_rec WSH_TRIPS_GRP.TripInRecType;
1163 l_out_tab WSH_TRIPS_GRP.trip_Out_tab_type;
1164 l_vehicle_item_id NUMBER;
1165 l_vehicle_org_id NUMBER;
1166 l_return_status VARCHAR2(1);
1167 l_return_status_1 VARCHAR2(1);
1168 --
1169 l_number_of_errors NUMBER;
1170 l_number_of_warnings NUMBER;
1171 l_debug_on CONSTANT BOOLEAN := WSH_DEBUG_SV.is_debug_enabled;
1172 l_module_name CONSTANT VARCHAR2(100) := 'fte.plsql.' || G_PKG_NAME || '.' || 'UPDATE_SINGLE_TRIP';
1173 l_log_level NUMBER := FTE_FREIGHT_PRICING_UTIL.G_LOG;
1174 l_api_name CONSTANT VARCHAR2(30) := 'UPDATE_SINGLE_TRIP';
1175 --
1176
1177
1178
1179 CURSOR c_get_vehicle_item_org (c_vehicle_type_id IN NUMBER)
1180 IS
1181 select v.inventory_item_id,
1182 v.ORGANIZATION_ID
1183 from fte_vehicle_types v
1184 where v.vehicle_type_id = c_vehicle_type_id;
1185
1186
1187 --
1188 cursor c_trip(c_trip_id NUMBER)
1189 is
1190 select * from wsh_trips
1191 where trip_id = c_trip_id;
1192 --
1193 c_trip_rec c_trip%ROWTYPE;
1194 --
1195 BEGIN
1196 --
1197 x_return_status := FND_API.G_RET_STS_SUCCESS;
1198 --
1199 IF l_debug_on THEN
1200 wsh_debug_sv.push(l_module_name);
1201 END IF;
1202 --
1203 IF l_debug_on THEN
1204 WSH_DEBUG_SV.logmsg(l_module_name,'p_trip_id=>'||p_trip_id
1205 ||'p_lane_id=>'||p_lane_id
1206 ||'p_ship_method_code=>'||p_ship_method_code
1207 ,WSH_DEBUG_SV.C_PROC_LEVEL);
1208 END IF;
1209
1210 FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
1211 FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,l_api_name,'start');
1212
1213 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_trip_id='||p_trip_id);
1214 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_lane_id='||p_lane_id);
1215 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_ship_method_code='||p_ship_method_code);
1216 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_ship_method_name='||p_ship_method_name);
1217 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_carrier_id='||p_carrier_id);
1218 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_service_level='||p_service_level);
1219 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_mode_of_transport='||p_mode_of_transport);
1220
1221 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'fetching trip info...');
1222 OPEN c_trip(p_trip_id);
1223 FETCH c_trip into c_trip_rec;
1224 CLOSE c_trip;
1225
1226
1227
1228 IF (p_vehicle_type_id IS NOT NULL)
1229 THEN
1230
1231 OPEN c_get_vehicle_item_org(p_vehicle_type_id);
1232 FETCH c_get_vehicle_item_org INTO l_vehicle_item_id,l_vehicle_org_id;
1233 CLOSE c_get_vehicle_item_org;
1234
1235 ELSIF (p_vehicle_item_id IS NOT NULL AND p_vehicle_org_id IS NOT NULL)
1236 THEN
1237 l_vehicle_item_id:=p_vehicle_item_id;
1238 l_vehicle_org_id:=l_vehicle_org_id;
1239
1240 END IF;
1241 --
1242 l_trip_info.TRIP_ID := c_trip_rec.TRIP_ID ;
1243 l_trip_info.NAME := c_trip_rec.NAME ;
1244 l_trip_info.PLANNED_FLAG := c_trip_rec.PLANNED_FLAG ;
1245 l_trip_info.ARRIVE_AFTER_TRIP_ID := c_trip_rec.ARRIVE_AFTER_TRIP_ID ;
1246 l_trip_info.STATUS_CODE := c_trip_rec.STATUS_CODE ;
1247 l_trip_info.VEHICLE_ITEM_ID := c_trip_rec.VEHICLE_ITEM_ID ;
1248 l_trip_info.VEHICLE_ORGANIZATION_ID := c_trip_rec.VEHICLE_ORGANIZATION_ID ;
1249 l_trip_info.VEHICLE_NUMBER := c_trip_rec.VEHICLE_NUMBER ;
1250 l_trip_info.VEHICLE_NUM_PREFIX := c_trip_rec.VEHICLE_NUM_PREFIX ;
1251 l_trip_info.CARRIER_ID := c_trip_rec.CARRIER_ID ;
1252 l_trip_info.SHIP_METHOD_CODE := c_trip_rec.SHIP_METHOD_CODE ;
1253 l_trip_info.ROUTE_ID := c_trip_rec.ROUTE_ID ;
1254 l_trip_info.ROUTING_INSTRUCTIONS := c_trip_rec.ROUTING_INSTRUCTIONS ;
1255 l_trip_info.ATTRIBUTE_CATEGORY := c_trip_rec.ATTRIBUTE_CATEGORY ;
1256 l_trip_info.ATTRIBUTE1 := c_trip_rec.ATTRIBUTE1 ;
1257 l_trip_info.ATTRIBUTE2 := c_trip_rec.ATTRIBUTE2 ;
1258 l_trip_info.ATTRIBUTE3 := c_trip_rec.ATTRIBUTE3 ;
1259 l_trip_info.ATTRIBUTE4 := c_trip_rec.ATTRIBUTE4 ;
1260 l_trip_info.ATTRIBUTE5 := c_trip_rec.ATTRIBUTE5 ;
1261 l_trip_info.ATTRIBUTE6 := c_trip_rec.ATTRIBUTE6 ;
1262 l_trip_info.ATTRIBUTE7 := c_trip_rec.ATTRIBUTE7 ;
1263 l_trip_info.ATTRIBUTE8 := c_trip_rec.ATTRIBUTE8 ;
1264 l_trip_info.ATTRIBUTE9 := c_trip_rec.ATTRIBUTE9 ;
1265 l_trip_info.ATTRIBUTE10 := c_trip_rec.ATTRIBUTE10 ;
1266 l_trip_info.ATTRIBUTE11 := c_trip_rec.ATTRIBUTE11 ;
1267 l_trip_info.ATTRIBUTE12 := c_trip_rec.ATTRIBUTE12 ;
1268 l_trip_info.ATTRIBUTE13 := c_trip_rec.ATTRIBUTE13 ;
1269 l_trip_info.ATTRIBUTE14 := c_trip_rec.ATTRIBUTE14 ;
1270 l_trip_info.ATTRIBUTE15 := c_trip_rec.ATTRIBUTE15 ;
1271 l_trip_info.CREATION_DATE := c_trip_rec.CREATION_DATE ;
1272 l_trip_info.CREATED_BY := c_trip_rec.CREATED_BY ;
1273 l_trip_info.LAST_UPDATE_DATE := c_trip_rec.LAST_UPDATE_DATE ;
1274 l_trip_info.LAST_UPDATED_BY := c_trip_rec.LAST_UPDATED_BY ;
1275 l_trip_info.LAST_UPDATE_LOGIN := c_trip_rec.LAST_UPDATE_LOGIN ;
1276 l_trip_info.PROGRAM_APPLICATION_ID := c_trip_rec.PROGRAM_APPLICATION_ID ;
1277 l_trip_info.PROGRAM_ID := c_trip_rec.PROGRAM_ID ;
1278 l_trip_info.PROGRAM_UPDATE_DATE := c_trip_rec.PROGRAM_UPDATE_DATE ;
1279 l_trip_info.REQUEST_ID := c_trip_rec.REQUEST_ID ;
1280 l_trip_info.SERVICE_LEVEL := c_trip_rec.SERVICE_LEVEL ;
1281 l_trip_info.MODE_OF_TRANSPORT := c_trip_rec.MODE_OF_TRANSPORT ;
1282 l_trip_info.FREIGHT_TERMS_CODE := c_trip_rec.FREIGHT_TERMS_CODE ;
1283 l_trip_info.CONSOLIDATION_ALLOWED := c_trip_rec.CONSOLIDATION_ALLOWED ;
1284 l_trip_info.LOAD_TENDER_STATUS := c_trip_rec.LOAD_TENDER_STATUS ;
1285 l_trip_info.ROUTE_LANE_ID := c_trip_rec.ROUTE_LANE_ID ;
1286 l_trip_info.LANE_ID := c_trip_rec.LANE_ID ;
1287 l_trip_info.SCHEDULE_ID := c_trip_rec.SCHEDULE_ID ;
1288 l_trip_info.BOOKING_NUMBER := c_trip_rec.BOOKING_NUMBER ;
1289 l_trip_info.LOAD_TENDER_NUMBER := c_trip_rec.LOAD_TENDER_NUMBER ;
1290 l_trip_info.VESSEL := c_trip_rec.VESSEL ;
1291 l_trip_info.VOYAGE_NUMBER := c_trip_rec.VOYAGE_NUMBER ;
1292 l_trip_info.PORT_OF_LOADING := c_trip_rec.PORT_OF_LOADING ;
1293 l_trip_info.PORT_OF_DISCHARGE := c_trip_rec.PORT_OF_DISCHARGE ;
1294 l_trip_info.WF_NAME := c_trip_rec.WF_NAME ;
1295 l_trip_info.WF_PROCESS_NAME := c_trip_rec.WF_PROCESS_NAME ;
1296 l_trip_info.WF_ITEM_KEY := c_trip_rec.WF_ITEM_KEY ;
1297 l_trip_info.CARRIER_CONTACT_ID := c_trip_rec.CARRIER_CONTACT_ID ;
1298 l_trip_info.SHIPPER_WAIT_TIME := c_trip_rec.SHIPPER_WAIT_TIME ;
1299 l_trip_info.WAIT_TIME_UOM := c_trip_rec.WAIT_TIME_UOM ;
1300 l_trip_info.LOAD_TENDERED_TIME := c_trip_rec.LOAD_TENDERED_TIME ;
1301 l_trip_info.CARRIER_RESPONSE := c_trip_rec.CARRIER_RESPONSE ;
1302 --
1303 --
1304 l_trip_in_rec.caller :='FTE';
1305 l_trip_in_rec.phase :=1;
1306 l_trip_in_rec.action_code:='UPDATE';
1307 --
1308 l_trip_info.TRIP_ID := p_trip_id;
1309 l_trip_info.CARRIER_ID := p_carrier_id;
1310 l_trip_info.SHIP_METHOD_CODE := p_ship_method_code;
1311 l_trip_info.SERVICE_LEVEL := p_service_level;
1312 l_trip_info.MODE_OF_TRANSPORT := p_mode_of_transport;
1313 l_trip_info.LANE_ID := p_lane_id;
1314 l_trip_info.SHIP_METHOD_NAME := p_ship_method_name;
1315
1316
1317 IF ((l_vehicle_item_id IS NOT NULL) AND (l_vehicle_org_id IS NOT NULL))
1318 THEN
1319
1320
1321 l_trip_info.VEHICLE_ITEM_ID := l_vehicle_item_id;
1322 l_trip_info.VEHICLE_ORGANIZATION_ID := l_vehicle_org_id;
1323
1324 END IF;
1325 IF(p_rank_id IS NOT NULL)
1326 THEN
1327 l_trip_info.RANK_ID:=p_rank_id;
1328 END IF;
1329 IF(p_append_flag IS NOT NULL)
1330 THEN
1331 l_trip_info.APPEND_FLAG:=p_append_flag;
1332 END IF;
1333
1334 --
1335 l_trip_info_tab(1) := l_trip_info;
1336 --
1337
1338 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'calling WSH_INTERFACE_GRP.Create_Update_Trip...');
1339
1340 --call wsh public API
1341 WSH_INTERFACE_GRP.Create_Update_Trip
1342 (
1343 p_api_version_number =>l_api_version_number,
1344 p_init_msg_list =>FND_API.G_FALSE,
1345 p_commit =>FND_API.G_FALSE,
1346 x_return_status =>l_return_status,
1347 x_msg_count =>x_msg_count,
1348 x_msg_data =>x_msg_data,
1349 p_trip_info_tab =>l_trip_info_tab,
1350 p_in_rec =>l_trip_in_rec,
1351 x_out_tab =>l_out_tab
1352 );
1353 --
1354 api_post_call
1355 (
1356 p_api_name => 'WSH_INTERFACE_GRP.CREATE_UPDATE_TRIP',
1357 p_api_return_status => l_return_status,
1358 p_message_name => 'FTE_PRC_UPD_TRP_FAIL',
1359 p_trip_id => p_trip_id,
1360 p_delivery_id => null,
1361 p_delivery_leg_id => null,
1362 x_number_of_errors => l_number_of_errors,
1363 x_number_of_warnings => l_number_of_warnings,
1364 x_return_status => l_return_status_1
1365 );
1366 --
1367 IF (l_return_status_1 = 'E')
1368 THEN
1369 RAISE FND_API.G_EXC_ERROR;
1370 ELSIF (l_return_status_1 = 'U')
1371 THEN
1372 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1373 ELSIF (l_return_status_1 = WSH_UTIL_CORE.G_RET_STS_WARNING )
1374 THEN
1375 x_return_status := l_return_status_1;
1376 END IF;
1377
1378 --
1379 FND_MSG_PUB.Count_And_Get
1380 (
1381 p_count => x_msg_count,
1382 p_data => x_msg_data,
1383 p_encoded => FND_API.G_FALSE
1384 );
1385 --
1386 IF l_debug_on THEN
1387 WSH_DEBUG_SV.pop(l_module_name);
1388 END IF;
1389 --
1390 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
1391 --
1392 EXCEPTION
1393 WHEN FND_API.G_EXC_ERROR THEN
1394 x_return_status := FND_API.G_RET_STS_ERROR;
1395 FND_MSG_PUB.Count_And_Get
1396 (
1397 p_count => x_msg_count,
1398 p_data => x_msg_data,
1399 p_encoded => FND_API.G_FALSE
1400 );
1401 IF l_debug_on THEN
1402 WSH_DEBUG_SV.pop(l_module_name);
1403 END IF;
1404 FTE_FREIGHT_PRICING_UTIL.set_exception(l_module_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'FND_API.G_EXC_ERROR');
1405 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
1406 --
1407 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1408 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
1409 FND_MSG_PUB.Count_And_Get
1410 (
1411 p_count => x_msg_count,
1412 p_data => x_msg_data,
1413 p_encoded => FND_API.G_FALSE
1414 );
1415 IF l_debug_on THEN
1416 WSH_DEBUG_SV.pop(l_module_name);
1417 END IF;
1418 FTE_FREIGHT_PRICING_UTIL.set_exception(l_module_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'FND_API.G_EXC_UNEXPECTED_ERROR');
1419 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
1420 --
1421 WHEN OTHERS THEN
1422 WSH_UTIL_CORE.DEFAULT_HANDLER(G_PKG_NAME||'.'||l_api_name);
1423 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
1424 FND_MSG_PUB.Count_And_Get
1425 (
1426 p_count => x_msg_count,
1427 p_data => x_msg_data,
1428 p_encoded => FND_API.G_FALSE
1429 );
1430 IF l_debug_on THEN
1431 WSH_DEBUG_SV.pop(l_module_name);
1432 END IF;
1433 FTE_FREIGHT_PRICING_UTIL.set_exception(l_api_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
1434 FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
1435 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
1436 --
1437 END update_single_trip;
1438 --
1439 --
1440 -- update multiple trips (connected to the delivery)
1441 PROCEDURE update_trips ( p_delivery_id IN NUMBER,
1442 p_matched_lanes IN lane_match_tab,
1443 x_return_status OUT NOCOPY VARCHAR2,
1444 x_msg_count OUT NOCOPY NUMBER,
1445 x_msg_data OUT NOCOPY VARCHAR2)
1446 IS
1447 i NUMBER;
1448 l_return_status VARCHAR2(1);
1449 l_return_status_1 VARCHAR2(1);
1450 l_msg_count NUMBER;
1451 l_msg_data VARCHAR2(32767);
1452 --
1453 l_number_of_errors NUMBER;
1454 l_number_of_warnings NUMBER;
1455 l_debug_on CONSTANT BOOLEAN := WSH_DEBUG_SV.is_debug_enabled;
1456 l_module_name CONSTANT VARCHAR2(100) := 'fte.plsql.' || G_PKG_NAME || '.' || 'UPDATE_TRIPS';
1457 --
1458 BEGIN
1459 SAVEPOINT UPDATE_TRIPS;
1460 --
1461 x_return_status := FND_API.G_RET_STS_SUCCESS;
1462 --
1463 IF l_debug_on THEN
1464 wsh_debug_sv.push(l_module_name);
1465 END IF;
1466 --
1467 IF (p_matched_lanes.COUNT > 0) THEN
1468 FOR i IN p_matched_lanes.FIRST .. p_matched_lanes.LAST
1469 LOOP
1470 --
1471
1472 IF l_debug_on THEN
1473 WSH_DEBUG_SV.logmsg(l_module_name,'p_matched_lanes : i =>'||i
1474 ||'trip_id=>'||p_matched_lanes(i).trip_id
1475 ||'delivery_leg_id=>'||p_matched_lanes(i).delivery_leg_id
1476 ||'delivery_id=>'||p_matched_lanes(i).delivery_id
1477 ||'lane_id=>'||p_matched_lanes(i).lane_id
1478 ||'ship_method_code=>'||p_matched_lanes(i).ship_method_code
1479 ||'new_match=>'||p_matched_lanes(i).new_match
1480 ,WSH_DEBUG_SV.C_PROC_LEVEL);
1481 END IF;
1482 IF (p_matched_lanes(i).new_match = 'Y') THEN
1483 --
1484 update_single_trip (p_trip_id => p_matched_lanes(i).trip_id,
1485 p_lane_id => p_matched_lanes(i).lane_id,
1486 p_carrier_id => p_matched_lanes(i).carrier_id,
1487 p_ship_method_code => p_matched_lanes(i).ship_method_code,
1488 p_ship_method_name => p_matched_lanes(i).ship_method_name,
1489 p_service_level => p_matched_lanes(i).service_level,
1490 p_mode_of_transport => p_matched_lanes(i).mode_of_transport,
1491 p_vehicle_type_id =>NULL,
1492 p_vehicle_item_id =>NULL,
1493 p_vehicle_org_id =>NULL,
1494 x_return_status => l_return_status,
1495 x_msg_count => l_msg_count,
1496 x_msg_data => l_msg_data );
1497 --
1498 IF (l_return_status = 'E')
1499 THEN
1500 RAISE FND_API.G_EXC_ERROR;
1501 ELSIF (l_return_status = 'U')
1502 THEN
1503 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1504 ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING )
1505 THEN
1506 x_return_status := l_return_status;
1507 END IF;
1508 --
1509 END IF;
1510 --
1511 END LOOP;
1512 END IF;
1513 --
1514 FND_MSG_PUB.Count_And_Get
1515 (
1516 p_count => x_msg_count,
1517 p_data => x_msg_data,
1518 p_encoded => FND_API.G_FALSE
1519 );
1520 --
1521 IF l_debug_on THEN
1522 WSH_DEBUG_SV.pop(l_module_name);
1523 END IF;
1524 --
1525 --
1526 EXCEPTION
1527 WHEN FND_API.G_EXC_ERROR THEN
1528 ROLLBACK TO UPDATE_TRIPS;
1529 x_return_status := FND_API.G_RET_STS_ERROR;
1530 FND_MSG_PUB.Count_And_Get
1531 (
1532 p_count => x_msg_count,
1533 p_data => x_msg_data,
1534 p_encoded => FND_API.G_FALSE
1535 );
1536 IF l_debug_on THEN
1537 WSH_DEBUG_SV.pop(l_module_name);
1538 END IF;
1539 --
1540 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1541 ROLLBACK TO UPDATE_TRIPS;
1542 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
1543 FND_MSG_PUB.Count_And_Get
1544 (
1545 p_count => x_msg_count,
1546 p_data => x_msg_data,
1547 p_encoded => FND_API.G_FALSE
1548 );
1549 IF l_debug_on THEN
1550 WSH_DEBUG_SV.pop(l_module_name);
1551 END IF;
1552 --
1553 WHEN OTHERS THEN
1554 ROLLBACK TO UPDATE_TRIPS;
1555 WSH_UTIL_CORE.DEFAULT_HANDLER(G_PKG_NAME||'.update_trips');
1556 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
1557 FND_MSG_PUB.Count_And_Get
1558 (
1559 p_count => x_msg_count,
1560 p_data => x_msg_data,
1561 p_encoded => FND_API.G_FALSE
1562 );
1563 IF l_debug_on THEN
1564 WSH_DEBUG_SV.pop(l_module_name);
1565 END IF;
1566 --
1567 END update_trips;
1568 --
1569 PROCEDURE unassign_trip ( p_trip_id IN NUMBER,
1570 x_return_status OUT NOCOPY VARCHAR2,
1571 x_msg_count OUT NOCOPY NUMBER,
1572 x_msg_data OUT NOCOPY VARCHAR2)
1573 IS
1574 i NUMBER;
1575 l_return_status VARCHAR2(1);
1576 l_return_status_1 VARCHAR2(1);
1577 l_msg_count NUMBER;
1578 l_msg_data VARCHAR2(32767);
1579 --
1580 l_delivery_out_rec WSH_DELIVERIES_GRP.Delivery_Action_Out_Rec_Type;
1581 l_defaults_rec WSH_DELIVERIES_GRP.default_parameters_rectype;
1582 l_action_prms WSH_DELIVERIES_GRP.action_parameters_rectype;
1583
1584 l_dlv_id_tab wsh_util_core.id_tab_type;
1585 l_idx NUMBER;
1586
1587 l_number_of_errors NUMBER;
1588 l_number_of_warnings NUMBER;
1589 l_debug_on CONSTANT BOOLEAN := WSH_DEBUG_SV.is_debug_enabled;
1590 l_module_name CONSTANT VARCHAR2(100) := 'fte.plsql.' || G_PKG_NAME || '.' || 'UNASSIGN_TRIP';
1591 --
1592 BEGIN
1593 SAVEPOINT UNASSIGN_TRIP;
1594 --
1595 x_return_status := FND_API.G_RET_STS_SUCCESS;
1596 --
1597 IF l_debug_on THEN
1598 wsh_debug_sv.push(l_module_name);
1599 END IF;
1600 --
1601 l_idx := 0;
1602 IF (g_dlv_tab.COUNT >0) THEN
1603 FOR i IN g_dlv_tab.FIRST ..g_dlv_tab.LAST
1604 LOOP
1605 -- Note : id tab should not be indexe by delivery id
1606 -- because of wsh_trip_actions needs index beginning with 1.
1607 l_idx := l_idx +1;
1608 l_dlv_id_tab(l_idx) := g_dlv_tab(i).delivery_id;
1609 END LOOP;
1610 END IF;
1611
1612 l_action_prms.action_code := 'UNASSIGN-TRIP';
1613 l_action_prms.caller := 'FTE';
1614 l_action_prms.trip_id := p_trip_id;
1615 --
1616
1617 WSH_INTERFACE_GRP.Delivery_Action
1618 ( p_api_version_number => 1.0,
1619 p_init_msg_list => FND_API.G_FALSE,
1620 p_commit => FND_API.G_FALSE,
1621 p_action_prms => l_action_prms,
1622 p_delivery_id_tab => l_dlv_id_tab,
1623 x_delivery_out_rec => l_delivery_out_rec,
1624 x_return_status => l_return_status,
1625 x_msg_count => l_msg_count,
1626 x_msg_data => l_msg_data
1627 );
1628 --
1629 api_post_call
1630 (
1631 p_api_name => 'WSH_DELIVERIES_GRP.Delivery_Action',
1632 p_api_return_status => l_return_status,
1633 p_message_name => 'FTE_PRC_UNASSGN_TRP_FL',
1634 p_trip_id => p_trip_id,
1635 p_delivery_id => null,
1636 p_delivery_leg_id => null,
1637 x_number_of_errors => l_number_of_errors,
1638 x_number_of_warnings => l_number_of_warnings,
1639 x_return_status => l_return_status_1
1640 );
1641 --
1642 IF (l_return_status_1 = 'E')
1643 THEN
1644 RAISE FND_API.G_EXC_ERROR;
1645 ELSIF (l_return_status_1 = 'U')
1646 THEN
1647 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1648 ELSIF (l_return_status_1 = WSH_UTIL_CORE.G_RET_STS_WARNING )
1649 THEN
1650 x_return_status := l_return_status_1;
1651 END IF;
1652
1653 FND_MSG_PUB.Count_And_Get
1654 (
1655 p_count => x_msg_count,
1656 p_data => x_msg_data,
1657 p_encoded => FND_API.G_FALSE
1658 );
1659 --
1660 IF l_debug_on THEN
1661 WSH_DEBUG_SV.pop(l_module_name);
1662 END IF;
1663 --
1664 --
1665 EXCEPTION
1666 WHEN FND_API.G_EXC_ERROR THEN
1667 ROLLBACK TO UNASSIGN_TRIP;
1668 x_return_status := FND_API.G_RET_STS_ERROR;
1669 FND_MSG_PUB.Count_And_Get
1670 (
1671 p_count => x_msg_count,
1672 p_data => x_msg_data,
1673 p_encoded => FND_API.G_FALSE
1674 );
1675 IF l_debug_on THEN
1676 WSH_DEBUG_SV.pop(l_module_name);
1677 END IF;
1678 --
1679 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
1680 ROLLBACK TO UNASSIGN_TRIP;
1681 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
1682 FND_MSG_PUB.Count_And_Get
1683 (
1684 p_count => x_msg_count,
1685 p_data => x_msg_data,
1686 p_encoded => FND_API.G_FALSE
1687 );
1688 IF l_debug_on THEN
1689 WSH_DEBUG_SV.pop(l_module_name);
1690 END IF;
1691 --
1692 WHEN OTHERS THEN
1693 ROLLBACK TO UNASSIGN_TRIP;
1694 WSH_UTIL_CORE.DEFAULT_HANDLER(G_PKG_NAME||'.Unassign_Trip');
1695 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
1696 FND_MSG_PUB.Count_And_Get
1697 (
1698 p_count => x_msg_count,
1699 p_data => x_msg_data,
1700 p_encoded => FND_API.G_FALSE
1701 );
1702 IF l_debug_on THEN
1703 WSH_DEBUG_SV.pop(l_module_name);
1704 END IF;
1705 --
1706 END unassign_trip;
1707 --
1708 --
1709 --
1710
1711 PROCEDURE Cancel_Service (
1712 p_api_version IN NUMBER DEFAULT 1.0,
1713 p_init_msg_list VARCHAR2 DEFAULT FND_API.G_FALSE,
1714 p_delivery_id IN NUMBER,
1715 p_action IN VARCHAR2 DEFAULT 'CANCEL',
1716 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE,
1717 x_return_status OUT NOCOPY VARCHAR2,
1718 x_msg_count OUT NOCOPY NUMBER,
1719 x_msg_data OUT NOCOPY VARCHAR2)
1720 IS
1721 i NUMBER;
1722 l_fc_count NUMBER;
1723
1724 l_log_level NUMBER := FTE_FREIGHT_PRICING_UTIL.G_LOG;
1725 l_return_status VARCHAR2(1);
1726 l_return_status_1 VARCHAR2(1);
1727 --
1728 l_dlv_rec WSH_NEW_DELIVERIES_PVT.Delivery_Rec_Type;
1729 l_leg_trip_det_rec trip_info_rec;
1730 l_del_out_tab WSH_DELIVERIES_GRP.Del_Out_Tbl_Type;
1731 l_del_in_rec WSH_DELIVERIES_GRP.Del_In_Rec_Type;
1732 c_dlv_rec c_delivery%ROWTYPE;
1733 --
1734 l_msg_count NUMBER;
1735 l_msg_data VARCHAR2(32767);
1736 --
1737 l_number_of_errors NUMBER;
1738 l_number_of_warnings NUMBER;
1739 l_debug_on CONSTANT BOOLEAN := WSH_DEBUG_SV.is_debug_enabled;
1740 l_module_name CONSTANT VARCHAR2(100) := 'fte.plsql.' || G_PKG_NAME || '.' || 'CANCEL_SERVICE';
1741
1742 cursor c_get_dleg_summ_recs (c_dleg_id NUMBER)
1743 is
1744 SELECT freight_cost_id
1745 FROM wsh_freight_costs
1746 WHERE delivery_leg_id = c_dleg_id
1747 AND line_type_code = 'SUMMARY'
1748 AND delivery_detail_id IS NULL ;
1749
1750 l_freight_cost_id NUMBER;
1751
1752 BEGIN
1753 -- Clear ship method and carrier information on trip
1754 -- Unassign trip from delivery
1755 -- Clear shipmethod and carrier information on delivery
1756 -- Delete all FTE freight cost records tied to the delivery
1757
1758 SAVEPOINT CANCEL_SERVICE;
1759 --
1760 x_return_status := FND_API.G_RET_STS_SUCCESS;
1761 --
1762 IF l_debug_on THEN
1763 wsh_debug_sv.push(l_module_name);
1764 END IF;
1765
1766 IF l_debug_on THEN
1767 WSH_DEBUG_SV.logmsg(l_module_name,'p_delivery_id=>'||p_delivery_id
1768 ||'p_action=>'||p_action
1769 ,WSH_DEBUG_SV.C_PROC_LEVEL);
1770 END IF;
1771
1772 -- supported actions
1773 IF (p_action <> 'CANCEL') THEN
1774 -- raise g_invalid_action;
1775 --
1776 l_return_status := FND_API.G_RET_STS_ERROR;
1777 api_post_call
1778 (
1779 p_api_name => 'FTE_FREIGHT_RATING_DLVY_GRP.CANCEL_SERVICE',
1780 p_api_return_status => l_return_status,
1781 p_message_name => 'FTE_PRC_DLV_INV_ACT',
1782 p_trip_id => null,
1783 p_delivery_id => p_delivery_id,
1784 p_delivery_leg_id => null,
1785 x_number_of_errors => l_number_of_errors,
1786 x_number_of_warnings => l_number_of_warnings,
1787 x_return_status => l_return_status_1
1788 );
1789 --
1790 IF (l_return_status_1 = 'E')
1791 THEN
1792 RAISE FND_API.G_EXC_ERROR;
1793 ELSIF (l_return_status_1 = 'U')
1794 THEN
1795 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1796 ELSIF (l_return_status_1 = WSH_UTIL_CORE.G_RET_STS_WARNING )
1797 THEN
1798 x_return_status := l_return_status_1;
1799 END IF;
1800 --
1801 END IF;
1802
1803 i := 0;
1804 OPEN c_delivery(p_delivery_id);
1805 FETCH c_delivery INTO c_dlv_rec;
1806 CLOSE c_delivery;
1807
1808 g_dlv_tab.DELETE;
1809 g_dlv_leg_tab.DELETE;
1810 g_trip_info_tab.DELETE;
1811 g_dleg_trip_tab.DELETE;
1812 --
1813 -- store delivery information
1814 load_dlv_rec (p_dlv_rec => c_dlv_rec,
1815 x_dlv_rec => l_dlv_rec);
1816 --
1817 g_dlv_tab(p_delivery_id) := l_dlv_rec;
1818 --
1819 -- store delivery leg, trip information if existing
1820 --
1821 FOR c_dleg_rec in c_dlv_legs(p_delivery_id)
1822 LOOP
1823 g_dlv_leg_tab(c_dleg_rec.delivery_leg_id) := c_dleg_rec;
1824 --
1825 OPEN c_leg_trip_det(c_dleg_rec.delivery_leg_id);
1826 FETCH c_leg_trip_det INTO l_leg_trip_det_rec;
1827 CLOSE c_leg_trip_det;
1828 --
1829 g_trip_info_tab(l_leg_trip_det_rec.trip_id) := l_leg_trip_det_rec;
1830 --
1831 g_dleg_trip_tab(c_dleg_rec.delivery_leg_id).delivery_leg_id := c_dleg_rec.delivery_leg_id;
1832 g_dleg_trip_tab(c_dleg_rec.delivery_leg_id).trip_id := l_leg_trip_det_rec.trip_id;
1833 --
1834 END LOOP;
1835
1836 IF l_debug_on THEN
1837 WSH_DEBUG_SV.logmsg(l_module_name,'g_dlv_tab.COUNT = '||g_dlv_tab.COUNT
1838 ||'g_dlv_leg_tab.COUNT = '||g_dlv_leg_tab.COUNT
1839 ||'g_trip_info_tab.COUNT = '||g_trip_info_tab.COUNT
1840 ||'g_dleg_trip_tab.COUNT = '||g_dleg_trip_tab.COUNT
1841 ,WSH_DEBUG_SV.C_PROC_LEVEL);
1842 END IF;
1843
1844 IF (g_dlv_tab.COUNT > 0 AND g_dlv_tab.EXISTS(p_delivery_id)) THEN
1845 --
1846 IF ( g_dlv_tab(p_delivery_id).status_code <> 'OP'
1847 OR ( g_dlv_tab(p_delivery_id).status_code = 'OP'
1848 AND g_dlv_tab(p_delivery_id).planned_flag = 'F') ) THEN
1849 --
1850 l_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1851 api_post_call
1852 (
1853 p_api_name => 'FTE_FREIGHT_RATING_DLVY_GRP.CANCEL_SERVICE',
1854 p_api_return_status => l_return_status,
1855 p_message_name => 'FTE_PRC_DLV_DLV_INV_STATUS',
1856 p_trip_id => null,
1857 p_delivery_id => p_delivery_id,
1858 p_delivery_leg_id => null,
1859 x_number_of_errors => l_number_of_errors,
1860 x_number_of_warnings => l_number_of_warnings,
1861 x_return_status => l_return_status_1
1862 );
1863 --
1864 IF (l_return_status_1 = WSH_UTIL_CORE.G_RET_STS_ERROR )
1865 THEN
1866 RAISE FND_API.G_EXC_ERROR;
1867 ELSIF (l_return_status_1 = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR )
1868 THEN
1869 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1870 END IF;
1871 END IF;
1872 END IF;
1873
1874 IF (g_trip_info_tab.COUNT > 0 ) THEN
1875 FOR i in g_trip_info_tab.FIRST .. g_trip_info_tab.LAST
1876 LOOP
1877 IF (g_trip_info_tab(i).load_tender_status IS NOT NULL
1878 AND (g_trip_info_tab(i).load_tender_status = FTE_TENDER_PVT.S_TENDERED
1879 OR g_trip_info_tab(i).load_tender_status = FTE_TENDER_PVT.S_ACCEPTED
1880 OR g_trip_info_tab(i).load_tender_status = FTE_TENDER_PVT.S_AUTO_ACCEPTED ))
1881 THEN
1882
1883 l_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1884 api_post_call
1885 (
1886 p_api_name => 'FTE_FREIGHT_RATING_DLVY_GRP.Cancel_Service',
1887 p_api_return_status => l_return_status,
1888 p_message_name => 'FTE_PRC_TRP_TEND_STATUS',
1889 p_trip_id => g_trip_info_tab(i).trip_id,
1890 p_delivery_id => p_delivery_id,
1891 p_delivery_leg_id => null,
1892 x_number_of_errors => l_number_of_errors,
1893 x_number_of_warnings => l_number_of_warnings,
1894 x_return_status => l_return_status_1
1895 );
1896 --
1897 IF (l_return_status_1 = 'E')
1898 THEN
1899 RAISE FND_API.G_EXC_ERROR;
1900 ELSIF (l_return_status_1 = 'U')
1901 THEN
1902 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1903 ELSIF (l_return_status_1 = WSH_UTIL_CORE.G_RET_STS_WARNING )
1904 THEN
1905 x_return_status := l_return_status_1;
1906 END IF;
1907
1908 END IF;
1909 END LOOP;
1910 END IF;
1911 -- Update all trips and erase ship method information
1912 -- 01/02/03 -- PM wants to unassign trip from delivery also.
1913 IF (g_trip_info_tab.COUNT > 0 ) THEN
1914 FOR i in g_trip_info_tab.FIRST .. g_trip_info_tab.LAST
1915 LOOP
1916 update_single_trip (p_trip_id => g_trip_info_tab(i).trip_id,
1917 p_lane_id => null,
1918 p_carrier_id => null,
1919 p_ship_method_code => null,
1920 p_ship_method_name => null,
1921 p_service_level => null,
1922 p_mode_of_transport => null,
1923 p_vehicle_type_id => null,
1924 p_vehicle_item_id =>NULL,
1925 p_vehicle_org_id =>NULL,
1926 x_return_status => l_return_status,
1927 x_msg_count => l_msg_count,
1928 x_msg_data => l_msg_data );
1929
1930 IF (l_return_status = 'E')
1931 THEN
1932 RAISE FND_API.G_EXC_ERROR;
1933 ELSIF (l_return_status = 'U')
1934 THEN
1935 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1936 ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING )
1937 THEN
1938 x_return_status := l_return_status;
1939 END IF;
1940
1941 unassign_trip ( p_trip_id => g_trip_info_tab(i).trip_id,
1942 x_return_status => l_return_status,
1943 x_msg_count => l_msg_count,
1944 x_msg_data => l_msg_data );
1945
1946 IF (l_return_status = 'E')
1947 THEN
1948 RAISE FND_API.G_EXC_ERROR;
1949 ELSIF (l_return_status = 'U')
1950 THEN
1951 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
1952 ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING )
1953 THEN
1954 x_return_status := l_return_status;
1955 END IF;
1956
1957 END LOOP;
1958 END IF;
1959
1960 -- Update delivery and erase ship method information
1961 g_dlv_tab(p_delivery_id).CARRIER_ID := NULL;
1962 g_dlv_tab(p_delivery_id).SHIP_METHOD_CODE := NULL;
1963 g_dlv_tab(p_delivery_id).SERVICE_LEVEL := NULL;
1964 g_dlv_tab(p_delivery_id).MODE_OF_TRANSPORT := NULL;
1965
1966 l_del_in_rec.caller := 'FTE';
1967 l_del_in_rec.phase := 1;
1968 l_del_in_rec.action_code := 'UPDATE';
1969
1970 WSH_INTERFACE_GRP.Create_Update_Delivery
1971 ( p_api_version_number =>1.0,
1972 p_init_msg_list =>FND_API.G_FALSE,
1973 -- p_commit =>'F',
1974 p_commit =>FND_API.G_FALSE,
1975 p_in_rec =>l_del_in_rec,
1976 p_rec_attr_tab => g_dlv_tab,
1977 x_del_out_rec_tab => l_del_out_tab,
1978 x_return_status => l_return_status,
1979 x_msg_count => l_msg_count,
1980 x_msg_data => l_msg_data);
1981
1982 api_post_call
1983 (
1984 p_api_name => 'FTE_FREIGHT_RATING_DLVY_GRP.Delivery_Action',
1985 p_api_return_status => l_return_status,
1986 p_message_name => 'FTE_PRC_UPD_DLV_FL',
1987 p_trip_id => null,
1988 p_delivery_id => p_delivery_id,
1989 p_delivery_leg_id => null,
1990 x_number_of_errors => l_number_of_errors,
1991 x_number_of_warnings => l_number_of_warnings,
1992 x_return_status => l_return_status_1
1993 );
1994 --
1995 IF (l_return_status_1 = 'E')
1996 THEN
1997 RAISE FND_API.G_EXC_ERROR;
1998 ELSIF (l_return_status_1 = 'U')
1999 THEN
2000 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2001 ELSIF (l_return_status_1 = WSH_UTIL_CORE.G_RET_STS_WARNING )
2002 THEN
2003 x_return_status := l_return_status_1;
2004 END IF;
2005
2006 -- TO DO : Use Table handlers for these
2007
2008 -- Delete all freight cost records for all delivery legs
2009 IF (g_dlv_leg_tab.COUNT > 0 ) THEN
2010 FOR i IN g_dlv_leg_tab.FIRST..g_dlv_leg_tab.LAST
2011 LOOP
2012 IF (g_dlv_leg_tab(i).delivery_leg_id IS NOT NULL
2013 AND g_dlv_leg_tab(i).delivery_id = p_delivery_id)
2014 THEN
2015
2016 l_fc_count := 0;
2017
2018 SELECT count(freight_cost_id) INTO l_fc_count
2019 FROM WSH_FREIGHT_COSTS
2020 WHERE delivery_leg_id = g_dlv_leg_tab(i).delivery_leg_id
2021 AND (
2022 ( charge_source_code = 'PRICING_ENGINE'
2023 AND line_type_code <> 'SUMMARY'
2024 )
2025 OR
2026 (line_type_code = 'SUMMARY'
2027 AND delivery_detail_id IS NOT NULL
2028 )
2029 );
2030
2031 IF l_debug_on THEN
2032 WSH_DEBUG_SV.log(l_module_name,'About to update wfc for delivery_leg_id =>'
2033 ||g_dlv_leg_tab(i).delivery_leg_id
2034 ,WSH_DEBUG_SV.C_PROC_LEVEL);
2035 WSH_DEBUG_SV.log(l_module_name,'l_fc_count=>'||l_fc_count
2036 ,WSH_DEBUG_SV.C_PROC_LEVEL);
2037 END IF;
2038 -- TO DO: handle locking issues
2039
2040 IF (l_fc_count >0) THEN
2041
2042 DELETE FROM WSH_FREIGHT_COSTS
2043 WHERE delivery_leg_id = g_dlv_leg_tab(i).delivery_leg_id
2044 AND (
2045 ( charge_source_code = 'PRICING_ENGINE'
2046 AND line_type_code <> 'SUMMARY'
2047 )
2048 OR
2049 (line_type_code = 'SUMMARY'
2050 AND delivery_detail_id IS NOT NULL
2051 )
2052 );
2053
2054 END IF;
2055
2056 IF l_debug_on THEN
2057 WSH_DEBUG_SV.logmsg(l_module_name,'wfc records deleted : '||l_fc_count
2058 ,WSH_DEBUG_SV.C_PROC_LEVEL);
2059 END IF;
2060 -- update SUMMARY freight cost record and set freight cost type id to -1
2061
2062 l_freight_cost_id := null;
2063 OPEN c_get_dleg_summ_recs(g_dlv_leg_tab(i).delivery_leg_id);
2064 FETCH c_get_dleg_summ_recs INTO l_freight_cost_id;
2065 CLOSE c_get_dleg_summ_recs;
2066
2067
2068 IF ( l_freight_cost_id IS NOT NULL ) THEN
2069 UPDATE wsh_freight_costs
2070 SET freight_cost_type_id = -1,
2071 charge_source_code = NULL,
2072 unit_amount = NULL,
2073 total_amount = NULL,
2074 currency_code = NULL,
2075 last_update_date = SYSDATE,
2076 last_updated_by = FND_GLOBAL.USER_ID
2077 WHERE freight_cost_id = l_freight_cost_id;
2078
2079 IF l_debug_on THEN
2080 WSH_DEBUG_SV.logmsg(l_module_name,'wfc updated : freight_cost_id =>'||l_freight_cost_id
2081 ,WSH_DEBUG_SV.C_PROC_LEVEL);
2082 END IF;
2083 END IF;
2084
2085 END IF;
2086 END LOOP;
2087 END IF;
2088
2089 IF FND_API.To_Boolean( p_commit ) THEN
2090 COMMIT WORK;
2091 END IF;
2092
2093 FND_MSG_PUB.Count_And_Get
2094 (
2095 p_count => x_msg_count,
2096 p_data => x_msg_data,
2097 p_encoded => FND_API.G_FALSE
2098 );
2099 --
2100 IF l_debug_on THEN
2101 WSH_DEBUG_SV.pop(l_module_name);
2102 END IF;
2103 --
2104 --
2105 EXCEPTION
2106 WHEN FND_API.G_EXC_ERROR THEN
2107 ROLLBACK TO CANCEL_SERVICE;
2108 x_return_status := FND_API.G_RET_STS_ERROR;
2109 FND_MSG_PUB.Count_And_Get
2110 (
2111 p_count => x_msg_count,
2112 p_data => x_msg_data,
2113 p_encoded => FND_API.G_FALSE
2114 );
2115 IF l_debug_on THEN
2116 WSH_DEBUG_SV.pop(l_module_name);
2117 END IF;
2118 --
2119 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2120 ROLLBACK TO CANCEL_SERVICE;
2121 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
2122 FND_MSG_PUB.Count_And_Get
2123 (
2124 p_count => x_msg_count,
2125 p_data => x_msg_data,
2126 p_encoded => FND_API.G_FALSE
2127 );
2128 IF l_debug_on THEN
2129 WSH_DEBUG_SV.pop(l_module_name);
2130 END IF;
2131 --
2132 WHEN OTHERS THEN
2133 ROLLBACK TO CANCEL_SERVICE;
2134 WSH_UTIL_CORE.DEFAULT_HANDLER(G_PKG_NAME||'.Cancel_Service');
2135 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
2136 FND_MSG_PUB.Count_And_Get
2137 (
2138 p_count => x_msg_count,
2139 p_data => x_msg_data,
2140 p_encoded => FND_API.G_FALSE
2141 );
2142 IF l_debug_on THEN
2143 WSH_DEBUG_SV.pop(l_module_name);
2144 END IF;
2145
2146 END Cancel_Service;
2147
2148 PROCEDURE Cancel_Service (
2149 p_api_version IN NUMBER DEFAULT 1.0,
2150 p_init_msg_list VARCHAR2 DEFAULT FND_API.G_FALSE,
2151 p_delivery_list IN WSH_UTIL_CORE.id_tab_type,
2152 p_action IN VARCHAR2 DEFAULT 'CANCEL',
2153 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE,
2154 x_return_status OUT NOCOPY VARCHAR2,
2155 x_msg_count OUT NOCOPY NUMBER,
2156 x_msg_data OUT NOCOPY VARCHAR2)
2157 IS
2158 i NUMBER;
2159 l_fc_count NUMBER;
2160 l_delivery_id NUMBER;
2161 l_success_cnt NUMBER := 0;
2162 l_error_cnt NUMBER := 0;
2163 l_warn_cnt NUMBER := 0;
2164
2165 l_return_status VARCHAR2(1);
2166 l_return_status_1 VARCHAR2(1);
2167 --
2168 l_msg_count NUMBER;
2169 l_msg_data VARCHAR2(32767);
2170 --
2171 l_number_of_errors NUMBER;
2172 l_number_of_warnings NUMBER;
2173 l_debug_on CONSTANT BOOLEAN := WSH_DEBUG_SV.is_debug_enabled;
2174 l_module_name CONSTANT VARCHAR2(100) := 'fte.plsql.' || G_PKG_NAME || '.' || 'CANCEL_SERVICE2';
2175
2176
2177 BEGIN
2178
2179 -- For each delivery, call Cancel_Service
2180 -- check return status
2181 -- if all deliveries return success, then return_status = SUCCESS
2182 -- if all deliveries return error, then return_status = ERROR
2183 -- if some deliveries return error, then return_status = WARNING
2184
2185 SAVEPOINT CANCEL_SERVICE;
2186 --
2187 x_return_status := FND_API.G_RET_STS_SUCCESS;
2188 --
2189 IF l_debug_on THEN
2190 wsh_debug_sv.push(l_module_name);
2191 END IF;
2192
2193 -- supported actions
2194 IF (p_action <> 'CANCEL') THEN
2195 -- raise g_invalid_action;
2196 --
2197 l_return_status := FND_API.G_RET_STS_ERROR;
2198 api_post_call
2199 (
2200 p_api_name => 'FTE_FREIGHT_RATING_DLVY_GRP.CANCEL_SERVICE',
2201 p_api_return_status => l_return_status,
2202 p_message_name => 'FTE_PRC_DLV_INV_ACT',
2203 p_trip_id => null,
2204 p_delivery_id => null,
2205 p_delivery_leg_id => null,
2206 x_number_of_errors => l_number_of_errors,
2207 x_number_of_warnings => l_number_of_warnings,
2208 x_return_status => l_return_status_1
2209 );
2210 --
2211 IF (l_return_status_1 = 'E')
2212 THEN
2213 RAISE FND_API.G_EXC_ERROR;
2214 ELSIF (l_return_status_1 = 'U')
2215 THEN
2216 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2217 ELSIF (l_return_status_1 = WSH_UTIL_CORE.G_RET_STS_WARNING )
2218 THEN
2219 x_return_status := l_return_status_1;
2220 END IF;
2221 --
2222 END IF;
2223
2224 IF (p_delivery_list.COUNT >0) THEN
2225 FOR i in p_delivery_list.FIRST .. p_delivery_list.LAST
2226 LOOP
2227 l_delivery_id := p_delivery_list(i);
2228 IF l_debug_on THEN
2229 WSH_DEBUG_SV.logmsg(l_module_name,'>>>Now processing delivery_id = '||l_delivery_id
2230 ,WSH_DEBUG_SV.C_PROC_LEVEL);
2231 END IF;
2232 Cancel_Service (
2233 p_api_version => 1.0,
2234 p_delivery_id => l_delivery_id,
2235 p_action => 'CANCEL',
2236 p_commit => p_commit,
2237 x_return_status => l_return_status,
2238 x_msg_count => l_msg_count,
2239 x_msg_data => l_msg_data);
2240
2241 api_post_call
2242 (
2243 p_api_name => 'FTE_FREIGHT_RATING_DLVY_GRP.Cancel_Service',
2244 p_api_return_status => l_return_status,
2245 p_message_name => 'FTE_PRC_CAN_SRV_FL',
2246 p_trip_id => null,
2247 p_delivery_id => l_delivery_id,
2248 p_delivery_leg_id => null,
2249 x_number_of_errors => l_number_of_errors,
2250 x_number_of_warnings => l_number_of_warnings,
2251 x_return_status => l_return_status_1
2252 );
2253 --
2254 IF (l_return_status_1 = 'E')
2255 THEN
2256 l_error_cnt := l_error_cnt + 1;
2257 ELSIF (l_return_status_1 = 'U')
2258 THEN
2259 l_error_cnt := l_error_cnt + 1;
2260 ELSIF (l_return_status_1 = WSH_UTIL_CORE.G_RET_STS_WARNING )
2261 THEN
2262 l_warn_cnt := l_warn_cnt + 1;
2263 ELSE
2264 l_success_cnt := l_success_cnt + 1;
2265 END IF;
2266
2267
2268 END LOOP;
2269 END IF;
2270
2271 IF l_debug_on THEN
2272 WSH_DEBUG_SV.logmsg(l_module_name,'p_delivery_list.COUNT = '||p_delivery_list.COUNT
2273 ||'l_success_cnt = '||l_success_cnt
2274 ||'l_error_cnt = '||l_error_cnt
2275 ||'l_warn_cnt = '||l_warn_cnt
2276 ,WSH_DEBUG_SV.C_PROC_LEVEL);
2277 END IF;
2278
2279 IF (l_success_cnt = p_delivery_list.COUNT) THEN
2280 x_return_status := FND_API.G_RET_STS_SUCCESS;
2281 ELSIF (l_error_cnt = p_delivery_list.COUNT) THEN
2282 RAISE FND_API.G_EXC_ERROR;
2283 ELSE
2284 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
2285 END IF;
2286
2287 IF FND_API.To_Boolean( p_commit ) THEN
2288 COMMIT WORK;
2289 END IF;
2290
2291 FND_MSG_PUB.Count_And_Get
2292 (
2293 p_count => x_msg_count,
2294 p_data => x_msg_data,
2295 p_encoded => FND_API.G_FALSE
2296 );
2297 --
2298 IF l_debug_on THEN
2299 WSH_DEBUG_SV.pop(l_module_name);
2300 END IF;
2301 --
2302 --
2303 EXCEPTION
2304 WHEN FND_API.G_EXC_ERROR THEN
2305 ROLLBACK TO CANCEL_SERVICE;
2306 x_return_status := FND_API.G_RET_STS_ERROR;
2307 FND_MSG_PUB.Count_And_Get
2308 (
2309 p_count => x_msg_count,
2310 p_data => x_msg_data,
2311 p_encoded => FND_API.G_FALSE
2312 );
2313 IF l_debug_on THEN
2314 WSH_DEBUG_SV.pop(l_module_name);
2315 END IF;
2316 --
2317 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2318 ROLLBACK TO CANCEL_SERVICE;
2319 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
2320 FND_MSG_PUB.Count_And_Get
2321 (
2322 p_count => x_msg_count,
2323 p_data => x_msg_data,
2324 p_encoded => FND_API.G_FALSE
2325 );
2326 IF l_debug_on THEN
2327 WSH_DEBUG_SV.pop(l_module_name);
2328 END IF;
2329 --
2330 WHEN OTHERS THEN
2331 ROLLBACK TO CANCEL_SERVICE;
2332 WSH_UTIL_CORE.DEFAULT_HANDLER(G_PKG_NAME||'.Cancel_Service');
2333 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
2334 FND_MSG_PUB.Count_And_Get
2335 (
2336 p_count => x_msg_count,
2337 p_data => x_msg_data,
2338 p_encoded => FND_API.G_FALSE
2339 );
2340 IF l_debug_on THEN
2341 WSH_DEBUG_SV.pop(l_module_name);
2342 END IF;
2343
2344 END Cancel_Service;
2345
2346
2347 PROCEDURE print_delivery_tab
2348 IS
2349 l_log_level NUMBER := fte_freight_pricing_util.G_DBG;
2350 l_module_name CONSTANT VARCHAR2(100) := 'fte.plsql.' || G_PKG_NAME || '.' || 'print_delivery_tab';
2351 l_api_name CONSTANT VARCHAR2(30) := 'PRINT_DELIVERY_TAB';
2352 i NUMBER;
2353 BEGIN
2354 FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
2355 FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,l_api_name,'start');
2356
2357 fte_freight_pricing_util.print_msg(l_log_level,'-----------BEGIN g_dlv_tab -------------');
2358 i := g_dlv_tab.FIRST;
2359 IF (i is not null) THEN
2360 LOOP
2361 fte_freight_pricing_util.print_msg(l_log_level,'delivery_id='||g_dlv_tab(i).delivery_id);
2362 fte_freight_pricing_util.print_msg(l_log_level,'ship_method_ocde='||g_dlv_tab(i).ship_method_code);
2363 fte_freight_pricing_util.print_msg(l_log_level,'initial_pickup_location_id='||g_dlv_tab(i).initial_pickup_location_id);
2364 fte_freight_pricing_util.print_msg(l_log_level,'ultimate_dropoff_location_id='||g_dlv_tab(i).ultimate_dropoff_location_id);
2365 fte_freight_pricing_util.print_msg(l_log_level,'initial_pickup_date='||g_dlv_tab(i).initial_pickup_date);
2366 fte_freight_pricing_util.print_msg(l_log_level,'ultimate_dropoff_date='||g_dlv_tab(i).ultimate_dropoff_date);
2367 fte_freight_pricing_util.print_msg(l_log_level,'status_code='||g_dlv_tab(i).status_code);
2368 fte_freight_pricing_util.print_msg(l_log_level,'planned_flag='||g_dlv_tab(i).planned_flag);
2369 fte_freight_pricing_util.print_msg(l_log_level,'carrier_id='||g_dlv_tab(i).carrier_id);
2370 fte_freight_pricing_util.print_msg(l_log_level,'mode_of_transport='||g_dlv_tab(i).mode_of_transport);
2371 fte_freight_pricing_util.print_msg(l_log_level,'service_level='||g_dlv_tab(i).service_level);
2372 fte_freight_pricing_util.print_msg(l_log_level,'organization_id='||g_dlv_tab(i).organization_id);
2373 fte_freight_pricing_util.print_msg(l_log_level,'-----------------------');
2374 EXIT WHEN (i >= g_dlv_tab.LAST);
2375 i := g_dlv_tab.NEXT(i);
2376 END LOOP;
2377 END IF;
2378 fte_freight_pricing_util.print_msg(l_log_level,'-----------END g_dlv_tab -------------');
2379
2380 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
2381
2382 EXCEPTION
2383 WHEN others THEN
2384 FTE_FREIGHT_PRICING_UTIL.set_exception(l_api_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
2385 FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
2386 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
2387
2388 END print_delivery_tab;
2389
2390 PROCEDURE print_dleg_tab
2391 IS
2392 l_log_level NUMBER := fte_freight_pricing_util.G_DBG;
2393 l_module_name CONSTANT VARCHAR2(100) := 'fte.plsql.' || G_PKG_NAME || '.' || 'print_dleg_tab';
2394 l_api_name CONSTANT VARCHAR2(30) := 'PRINT_DLEG_TAB';
2395 i NUMBER;
2396 BEGIN
2397 FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
2398 FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,l_api_name,'start');
2399
2400 fte_freight_pricing_util.print_msg(l_log_level,'-----------BEGIN g_dlv_leg_tab -------------');
2401 i := g_dlv_leg_tab.FIRST;
2402 IF (i is not null) THEN
2403 LOOP
2404 fte_freight_pricing_util.print_msg(l_log_level,'delivery_leg_id='||g_dlv_leg_tab(i).delivery_leg_id);
2405 fte_freight_pricing_util.print_msg(l_log_level,'delivery_id='||g_dlv_leg_tab(i).delivery_id);
2406 fte_freight_pricing_util.print_msg(l_log_level,'sequence_number='||g_dlv_leg_tab(i).sequence_number);
2407 fte_freight_pricing_util.print_msg(l_log_level,'pick_up_stop_id='||g_dlv_leg_tab(i).pick_up_stop_id);
2408 fte_freight_pricing_util.print_msg(l_log_level,'drop_off_stop_id='||g_dlv_leg_tab(i).drop_off_stop_id);
2409 fte_freight_pricing_util.print_msg(l_log_level,'reprice_required='||g_dlv_leg_tab(i).reprice_required);
2410 fte_freight_pricing_util.print_msg(l_log_level,'status_code='||g_dlv_leg_tab(i).status_code);
2411 fte_freight_pricing_util.print_msg(l_log_level,'parent_delivery_leg_id='||g_dlv_leg_tab(i).parent_delivery_leg_id);
2412 fte_freight_pricing_util.print_msg(l_log_level,'-----------------------');
2413 EXIT WHEN (i >= g_dlv_leg_tab.LAST);
2414 i := g_dlv_leg_tab.NEXT(i);
2415 END LOOP;
2416 END IF;
2417 fte_freight_pricing_util.print_msg(l_log_level,'-----------END g_dlv_leg_tab -------------');
2418
2419 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
2420
2421 EXCEPTION
2422 WHEN others THEN
2423 FTE_FREIGHT_PRICING_UTIL.set_exception(l_api_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
2424 FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
2425 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
2426
2427 END print_dleg_tab;
2428
2429 PROCEDURE print_trip_tab
2430 IS
2431 l_log_level NUMBER := fte_freight_pricing_util.G_DBG;
2432 l_module_name CONSTANT VARCHAR2(100) := 'fte.plsql.' || G_PKG_NAME || '.' || 'print_trip_tab';
2433 l_api_name CONSTANT VARCHAR2(30) := 'PRINT_TRIP_TAB';
2434 i NUMBER;
2435 BEGIN
2436 FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
2437 FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,l_api_name,'start');
2438
2439 fte_freight_pricing_util.print_msg(l_log_level,'-----------BEGIN g_trip_info_tab -------------');
2440 i := g_trip_info_tab.FIRST;
2441 IF (i is not null) THEN
2442 LOOP
2443 fte_freight_pricing_util.print_msg(l_log_level,'trip_id='||g_trip_info_tab(i).trip_id);
2444 fte_freight_pricing_util.print_msg(l_log_level,'name='||g_trip_info_tab(i).name);
2445 fte_freight_pricing_util.print_msg(l_log_level,'planned_flag='||g_trip_info_tab(i).planned_flag);
2446 fte_freight_pricing_util.print_msg(l_log_level,'status_code='||g_trip_info_tab(i).status_code);
2447 fte_freight_pricing_util.print_msg(l_log_level,'carrier_id='||g_trip_info_tab(i).carrier_id);
2448 fte_freight_pricing_util.print_msg(l_log_level,'ship_method_code='||g_trip_info_tab(i).ship_method_code);
2449 fte_freight_pricing_util.print_msg(l_log_level,'service_level='||g_trip_info_tab(i).service_level);
2450 fte_freight_pricing_util.print_msg(l_log_level,'mode_of_transport='||g_trip_info_tab(i).mode_of_transport);
2451 fte_freight_pricing_util.print_msg(l_log_level,'consolidation_allowed='||g_trip_info_tab(i).consolidation_allowed);
2452 fte_freight_pricing_util.print_msg(l_log_level,'lane_id='||g_trip_info_tab(i).lane_id);
2453 fte_freight_pricing_util.print_msg(l_log_level,'schedule_id='||g_trip_info_tab(i).schedule_id);
2454 fte_freight_pricing_util.print_msg(l_log_level,'load_tender_status='||g_trip_info_tab(i).load_tender_status);
2455 fte_freight_pricing_util.print_msg(l_log_level,'-----------------------');
2456 EXIT WHEN (i >= g_trip_info_tab.LAST);
2457 i := g_trip_info_tab.NEXT(i);
2458 END LOOP;
2459 END IF;
2460 fte_freight_pricing_util.print_msg(l_log_level,'-----------END g_trip_info_tab -------------');
2461
2462 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
2463
2464 EXCEPTION
2465 WHEN others THEN
2466 FTE_FREIGHT_PRICING_UTIL.set_exception(l_api_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
2467 FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
2468 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
2469
2470 END print_trip_tab;
2471
2472 PROCEDURE print_dleg_trip_tab
2473 IS
2474 l_log_level NUMBER := fte_freight_pricing_util.G_DBG;
2475 l_module_name CONSTANT VARCHAR2(100) := 'fte.plsql.' || G_PKG_NAME || '.' || 'print_dleg_trip_tab';
2476 l_api_name CONSTANT VARCHAR2(30) := 'PRINT_DLEG_TRIP_TAB';
2477 i NUMBER;
2478 BEGIN
2479 FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
2480 FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,l_api_name,'start');
2481
2482 fte_freight_pricing_util.print_msg(l_log_level,'-----------BEGIN g_dleg_trip_tab -------------');
2483 i := g_dleg_trip_tab.FIRST;
2484 IF (i is not null) THEN
2485 LOOP
2486 fte_freight_pricing_util.print_msg(l_log_level,'delivery_leg_id='||g_dleg_trip_tab(i).delivery_leg_id);
2487 fte_freight_pricing_util.print_msg(l_log_level,'trip_id='||g_dleg_trip_tab(i).trip_id);
2488 fte_freight_pricing_util.print_msg(l_log_level,'-----------------------');
2489 EXIT WHEN (i >= g_dleg_trip_tab.LAST);
2490 i := g_dleg_trip_tab.NEXT(i);
2491 END LOOP;
2492 END IF;
2493 fte_freight_pricing_util.print_msg(l_log_level,'-----------END g_dleg_trip_tab -------------');
2494
2495 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
2496
2497 EXCEPTION
2498 WHEN others THEN
2499 FTE_FREIGHT_PRICING_UTIL.set_exception(l_api_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
2500 FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
2501 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
2502
2503 END print_dleg_trip_tab;
2504
2505 PROCEDURE print_matched_lane_tab(p_matched_lane_tab lane_match_tab)
2506 IS
2507 l_log_level NUMBER := fte_freight_pricing_util.G_DBG;
2508 l_module_name CONSTANT VARCHAR2(100) := 'fte.plsql.' || G_PKG_NAME || '.' || 'print_matched_lane_tab';
2509 l_api_name CONSTANT VARCHAR2(30) := 'PRINT_MATCHED_LANE_TAB';
2510 i NUMBER;
2511 BEGIN
2512 FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
2513 FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,l_api_name,'start');
2514
2515 fte_freight_pricing_util.print_msg(l_log_level,'-----------BEGIN p_matched_lane_tab -------------');
2516 i := p_matched_lane_tab.FIRST;
2517 IF (i is not null) THEN
2518 LOOP
2519 fte_freight_pricing_util.print_msg(l_log_level,'trip_id='||p_matched_lane_tab(i).trip_id);
2520 fte_freight_pricing_util.print_msg(l_log_level,'delivery_leg_id='||p_matched_lane_tab(i).delivery_leg_id);
2521 fte_freight_pricing_util.print_msg(l_log_level,'delivery_id='||p_matched_lane_tab(i).delivery_id);
2522 fte_freight_pricing_util.print_msg(l_log_level,'lane_id='||p_matched_lane_tab(i).lane_id);
2523 fte_freight_pricing_util.print_msg(l_log_level,'ship_method_code='||p_matched_lane_tab(i).ship_method_code);
2524 fte_freight_pricing_util.print_msg(l_log_level,'ship_method_name='||p_matched_lane_tab(i).ship_method_name);
2525 fte_freight_pricing_util.print_msg(l_log_level,'carrier_id='||p_matched_lane_tab(i).carrier_id);
2526 fte_freight_pricing_util.print_msg(l_log_level,'service_level='||p_matched_lane_tab(i).service_level);
2527 fte_freight_pricing_util.print_msg(l_log_level,'mode_of_transport='||p_matched_lane_tab(i).mode_of_transport);
2528 fte_freight_pricing_util.print_msg(l_log_level,'new_match='||p_matched_lane_tab(i).new_match);
2529 fte_freight_pricing_util.print_msg(l_log_level,'-----------------------');
2530 EXIT WHEN (i >= p_matched_lane_tab.LAST);
2531 i := p_matched_lane_tab.NEXT(i);
2532 END LOOP;
2533 END IF;
2534 fte_freight_pricing_util.print_msg(l_log_level,'-----------END p_matched_lane_tab -------------');
2535
2536 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
2537
2538 EXCEPTION
2539 WHEN others THEN
2540 FTE_FREIGHT_PRICING_UTIL.set_exception(l_api_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
2541 FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
2542 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
2543
2544 END print_matched_lane_tab;
2545 --
2546 PROCEDURE validate_nontl_trip (p_trip_id IN NUMBER,
2547 x_return_code OUT NOCOPY NUMBER)
2548 IS
2549 l_log_level NUMBER := FTE_FREIGHT_PRICING_UTIL.G_LOG;
2550 l_debug_on CONSTANT BOOLEAN := WSH_DEBUG_SV.is_debug_enabled;
2551 l_module_name CONSTANT VARCHAR2(100) := 'fte.plsql.' || G_PKG_NAME || '.' || 'VALIDATE_NONTL_TRIP';
2552 l_return_status VARCHAR2(30);
2553 l_return_status_1 VARCHAR2(30);
2554 l_number_of_errors NUMBER;
2555 l_number_of_warnings NUMBER;
2556 l_api_name CONSTANT VARCHAR2(30) := 'VALIDATE_NONTL_TRIP';
2557
2558 l_dlv_rec WSH_NEW_DELIVERIES_PVT.Delivery_Rec_Type;
2559 c_dlv_rec c_delivery%ROWTYPE;
2560 l_dleg_rec dlv_leg_info_rec;
2561 l_trip_info_rec trip_info_rec;
2562 l_trip_dleg_cnt NUMBER;
2563 l_leg_trip_det_rec c_leg_trip_det%ROWTYPE;
2564 l_count NUMBER;
2565
2566 c_carr_srv_rec c_carrier_services%ROWTYPE;
2567 l_ship_method_code wsh_carrier_services.ship_method_code%type;
2568 l_ship_method_meaning wsh_carrier_services.ship_method_meaning%type;
2569 l_carrier_id NUMBER;
2570 l_mode_of_transport wsh_carrier_services.mode_of_transport%type;
2571 l_service_level wsh_carrier_services.service_level%type;
2572 BEGIN
2573
2574 x_return_code := G_RC_SUCCESS;
2575
2576 IF l_debug_on THEN
2577 wsh_debug_sv.push(l_module_name);
2578 END IF;
2579
2580 FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
2581 FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,l_api_name,'start');
2582
2583 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_trip_id='||p_trip_id);
2584
2585 OPEN c_cnt_trip_legs(p_trip_id);
2586 FETCH c_cnt_trip_legs INTO l_trip_dleg_cnt;
2587 CLOSE c_cnt_trip_legs;
2588
2589 IF (l_trip_dleg_cnt <= 0) THEN
2590 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'trip '||p_trip_id||' has no delivery');
2591 l_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
2592 api_post_call
2593 (
2594 p_api_name => l_module_name,
2595 p_api_return_status => l_return_status,
2596 p_message_name => 'FTE_PRC_TRP_NO_DLV',
2597 p_trip_id => p_trip_id,
2598 p_delivery_id => null,
2599 p_delivery_leg_id => null,
2600 x_number_of_errors => l_number_of_errors,
2601 x_number_of_warnings => l_number_of_warnings,
2602 x_return_status => l_return_status_1
2603 );
2604
2605 IF (l_return_status_1 = 'E')
2606 THEN
2607 RAISE FND_API.G_EXC_ERROR;
2608 ELSIF (l_return_status_1 = 'U')
2609 THEN
2610 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2611 END IF;
2612 END IF;
2613
2614 -- check for empty delivery
2615 l_count := 0;
2616 OPEN c_count_delivery_details2(p_trip_id);
2617 FETCH c_count_delivery_details2 INTO l_count;
2618 CLOSE c_count_delivery_details2;
2619 IF ( l_count <= 0 ) THEN
2620
2621 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'empty delivery');
2622
2623 l_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
2624 api_post_call
2625 (
2626 p_api_name => l_module_name,
2627 p_api_return_status => l_return_status,
2628 p_message_name => 'FTE_PRC_TRP_NO_DEL_CONTENT',
2629 p_trip_id => p_trip_id,
2630 p_delivery_id => null,
2631 p_delivery_leg_id => null,
2632 x_number_of_errors => l_number_of_errors,
2633 x_number_of_warnings => l_number_of_warnings,
2634 x_return_status => l_return_status_1
2635 );
2636
2637 IF (l_return_status_1 = WSH_UTIL_CORE.G_RET_STS_ERROR )
2638 THEN
2639 RAISE FND_API.G_EXC_ERROR;
2640 ELSIF (l_return_status_1 = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR )
2641 THEN
2642 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
2643 END IF;
2644 END IF;
2645 /*
2646 -- after autocreate trip for delivery, the reprice required flag on leg is set to 'N'
2647 -- since lane is null, we do not need to validate reprice required flag on leg.
2648
2649 l_count := 0;
2650 OPEN c_count_reprice_reqd(p_trip_id);
2651 FETCH c_count_reprice_reqd INTO l_count;
2652 CLOSE c_count_reprice_reqd;
2653
2654 IF (l_count = 0) THEN
2655 FTE_FREIGHT_PRICING_UTIL.setmsg(
2656 p_api => l_api_name,
2657 p_exc => ' ',
2658 p_msg_name => 'FTE_PRICING_NOT_REQUIRED',
2659 p_msg_type => 'E',
2660 p_trip_id => p_trip_id);
2661 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'reprice not required, do not rate.');
2662 x_return_code := G_RC_REPRICE_NOT_REQUIRED;
2663 raise g_finished_warning;
2664 END IF;
2665 */
2666 -- validate freight term
2667 l_count := 0;
2668 OPEN c_check_del_freight_term2(p_trip_id);
2669 FETCH c_check_del_freight_term2 INTO l_count;
2670 CLOSE c_check_del_freight_term2;
2671 IF ( l_count > 0 ) THEN
2672 FTE_FREIGHT_PRICING_UTIL.setmsg(
2673 p_api => l_api_name,
2674 p_exc => ' ',
2675 p_msg_name => 'FTE_PRC_NOTRATE_TRP_FGT_TERM',
2676 p_msg_type => 'E',
2677 p_trip_id => p_trip_id);
2678 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'do not rate the freight term.');
2679 x_return_code := G_RC_NOT_RATE_FREIGHT_TERM;
2680 raise g_finished_warning;
2681 END IF;
2682
2683 -- Manifesting validation
2684 l_count := 0;
2685 OPEN c_check_del_manifesting2(p_trip_id);
2686 FETCH c_check_del_manifesting2 INTO l_count;
2687 CLOSE c_check_del_manifesting2;
2688 IF ( l_count > 0 ) THEN
2689 FTE_FREIGHT_PRICING_UTIL.setmsg(
2690 p_api => l_api_name,
2691 p_exc => ' ',
2692 p_msg_name => 'FTE_PRC_NOTRATE_TRP_MAN',
2693 p_msg_type => 'E',
2694 p_trip_id => p_trip_id);
2695 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'delivery organization is manifesting enabled and carrier is manifesting enabled, do not rate.');
2696 x_return_code := G_RC_NOT_RATE_FREIGHT_TERM;
2697 raise g_finished_warning;
2698 END IF;
2699
2700 -- populate dleg
2701 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'populating dleg, trip, delivery info...');
2702
2703 OPEN c_trip_legs(p_trip_id);
2704 FETCH c_trip_legs INTO l_dleg_rec;
2705 CLOSE c_trip_legs;
2706
2707 g_dlv_leg_tab(l_dleg_rec.delivery_leg_id) := l_dleg_rec;
2708
2709 g_dleg_trip_tab(l_dleg_rec.delivery_leg_id).delivery_leg_id := l_dleg_rec.delivery_leg_id;
2710 g_dleg_trip_tab(l_dleg_rec.delivery_leg_id).trip_id := p_trip_id;
2711
2712
2713 OPEN c_delivery(l_dleg_rec.delivery_id);
2714 FETCH c_delivery INTO c_dlv_rec;
2715 CLOSE c_delivery;
2716
2717 -- store delivery information
2718 load_dlv_rec (p_dlv_rec => c_dlv_rec, x_dlv_rec => l_dlv_rec);
2719 g_dlv_tab(l_dleg_rec.delivery_id) := l_dlv_rec;
2720
2721 IF (g_dlv_tab(l_dleg_rec.delivery_id).ship_method_code is not null)
2722 AND (g_dlv_tab(l_dleg_rec.delivery_id).carrier_id is null
2723 OR g_dlv_tab(l_dleg_rec.delivery_id).mode_of_transport is null
2724 OR g_dlv_tab(l_dleg_rec.delivery_id).service_level is null) THEN
2725
2726 OPEN c_carrier_services(g_dlv_tab(l_dleg_rec.delivery_id).ship_method_code);
2727 FETCH c_carrier_services INTO c_carr_srv_rec;
2728 CLOSE c_carrier_services;
2729
2730 g_dlv_tab(l_dleg_rec.delivery_id).carrier_id := c_carr_srv_rec.carrier_id;
2731 g_dlv_tab(l_dleg_rec.delivery_id).mode_of_transport := c_carr_srv_rec.mode_of_transport;
2732 g_dlv_tab(l_dleg_rec.delivery_id).service_level := c_carr_srv_rec.service_level;
2733
2734 END IF;
2735
2736
2737 IF l_debug_on THEN
2738 WSH_DEBUG_SV.pop(l_module_name);
2739 END IF;
2740
2741 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
2742
2743 EXCEPTION
2744 WHEN g_finished_warning THEN
2745 IF l_debug_on THEN
2746 WSH_DEBUG_SV.pop(l_module_name);
2747 END IF;
2748 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
2749 --
2750 WHEN FND_API.G_EXC_ERROR THEN
2751 x_return_code := G_RC_ERROR;
2752 IF l_debug_on THEN
2753 WSH_DEBUG_SV.pop(l_module_name);
2754 END IF;
2755 FTE_FREIGHT_PRICING_UTIL.set_exception(l_module_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'FND_API.G_EXC_ERROR');
2756 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
2757 --
2758 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2759 x_return_code := G_RC_ERROR;
2760 IF l_debug_on THEN
2761 WSH_DEBUG_SV.pop(l_module_name);
2762 END IF;
2763 FTE_FREIGHT_PRICING_UTIL.set_exception(l_module_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'FND_API.G_EXC_UNEXPECTED_ERROR');
2764 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
2765 --
2766 WHEN OTHERS THEN
2767 WSH_UTIL_CORE.DEFAULT_HANDLER(G_PKG_NAME||'.'||l_api_name);
2768 x_return_code := G_RC_ERROR;
2769 IF l_debug_on THEN
2770 WSH_DEBUG_SV.pop(l_module_name);
2771 END IF;
2772 FTE_FREIGHT_PRICING_UTIL.set_exception(l_api_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
2773 FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
2774 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
2775 END validate_nontl_trip;
2776 --
2777 PROCEDURE validate_tl_trip (p_trip_id IN NUMBER,
2778 x_return_code OUT NOCOPY NUMBER)
2779 IS
2780 l_log_level NUMBER := FTE_FREIGHT_PRICING_UTIL.G_LOG;
2781 l_debug_on CONSTANT BOOLEAN := WSH_DEBUG_SV.is_debug_enabled;
2782 l_module_name CONSTANT VARCHAR2(100) := 'fte.plsql.' || G_PKG_NAME || '.' || 'VALIDATE_TL_TRIP';
2783 l_return_status VARCHAR2(30);
2784 l_return_status_1 VARCHAR2(30);
2785 l_number_of_errors NUMBER;
2786 l_number_of_warnings NUMBER;
2787 l_api_name CONSTANT VARCHAR2(30) := 'VALIDATE_TL_TRIP';
2788
2789 l_dlv_rec WSH_NEW_DELIVERIES_PVT.Delivery_Rec_Type;
2790 c_dlv_rec c_delivery%ROWTYPE;
2791 l_dleg_rec dlv_leg_info_rec;
2792 l_trip_info_rec trip_info_rec;
2793 l_trip_dleg_cnt NUMBER;
2794 l_leg_trip_det_rec c_leg_trip_det%ROWTYPE;
2795 l_count NUMBER;
2796
2797 c_carr_srv_rec c_carrier_services%ROWTYPE;
2798 l_ship_method_code wsh_carrier_services.ship_method_code%type;
2799 l_ship_method_meaning wsh_carrier_services.ship_method_meaning%type;
2800 l_carrier_id NUMBER;
2801 l_mode_of_transport wsh_carrier_services.mode_of_transport%type;
2802 l_service_level wsh_carrier_services.service_level%type;
2803 BEGIN
2804
2805 x_return_code := G_RC_SUCCESS;
2806
2807 IF l_debug_on THEN
2808 wsh_debug_sv.push(l_module_name);
2809 END IF;
2810
2811 FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
2812 FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,l_api_name,'start');
2813
2814 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_trip_id='||p_trip_id);
2815
2816 -- validate freight term
2817 l_count := 0;
2818 OPEN c_check_del_freight_term2(p_trip_id);
2819 FETCH c_check_del_freight_term2 INTO l_count;
2820 CLOSE c_check_del_freight_term2;
2821 IF ( l_count > 0 ) THEN
2822 FTE_FREIGHT_PRICING_UTIL.setmsg(
2823 p_api => l_api_name,
2824 p_exc => ' ',
2825 p_msg_name => 'FTE_PRC_NOTRATE_TRP_FGT_TERM',
2826 p_msg_type => 'E',
2827 p_trip_id => p_trip_id);
2828 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'do not rate the freight term.');
2829 x_return_code := G_RC_NOT_RATE_FREIGHT_TERM;
2830 raise g_finished_warning;
2831 END IF;
2832
2833 -- Manifesting validation
2834 l_count := 0;
2835 OPEN c_check_del_manifesting2(p_trip_id);
2836 FETCH c_check_del_manifesting2 INTO l_count;
2837 CLOSE c_check_del_manifesting2;
2838 IF ( l_count > 0 ) THEN
2839 FTE_FREIGHT_PRICING_UTIL.setmsg(
2840 p_api => l_api_name,
2841 p_exc => ' ',
2842 p_msg_name => 'FTE_PRC_NOTRATE_TRP_MAN',
2843 p_msg_type => 'E',
2844 p_trip_id => p_trip_id);
2845 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'delivery organization is manifesting enabled and carrier is manifesting enabled, do not rate.');
2846 x_return_code := G_RC_NOT_RATE_FREIGHT_TERM;
2847 raise g_finished_warning;
2848 END IF;
2849
2850 IF l_debug_on THEN
2851 WSH_DEBUG_SV.pop(l_module_name);
2852 END IF;
2853
2854 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
2855
2856 EXCEPTION
2857 WHEN g_finished_warning THEN
2858 IF l_debug_on THEN
2859 WSH_DEBUG_SV.pop(l_module_name);
2860 END IF;
2861 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
2862 --
2863 WHEN FND_API.G_EXC_ERROR THEN
2864 x_return_code := G_RC_ERROR;
2865 IF l_debug_on THEN
2866 WSH_DEBUG_SV.pop(l_module_name);
2867 END IF;
2868 FTE_FREIGHT_PRICING_UTIL.set_exception(l_module_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'FND_API.G_EXC_ERROR');
2869 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
2870 --
2871 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
2872 x_return_code := G_RC_ERROR;
2873 IF l_debug_on THEN
2874 WSH_DEBUG_SV.pop(l_module_name);
2875 END IF;
2876 FTE_FREIGHT_PRICING_UTIL.set_exception(l_module_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'FND_API.G_EXC_UNEXPECTED_ERROR');
2877 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
2878 --
2879 WHEN OTHERS THEN
2880 WSH_UTIL_CORE.DEFAULT_HANDLER(G_PKG_NAME||'.'||l_api_name);
2881 x_return_code := G_RC_ERROR;
2882 IF l_debug_on THEN
2883 WSH_DEBUG_SV.pop(l_module_name);
2884 END IF;
2885 FTE_FREIGHT_PRICING_UTIL.set_exception(l_api_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
2886 FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
2887 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
2888 END validate_tl_trip;
2889
2890 PROCEDURE Search_Services(
2891 p_delivery_leg_id IN NUMBER DEFAULT NULL,
2892 p_trip_id IN NUMBER DEFAULT NULL,
2893 p_trip_msg_flag IN VARCHAR2 DEFAULT 'N',
2894 p_carrier_id IN NUMBER DEFAULT NULL,
2895 p_mode_of_transport IN VARCHAR2 DEFAULT NULL,
2896 p_service_level IN VARCHAR2 DEFAULT NULL,
2897 x_matched_services OUT NOCOPY lane_match_tab,
2898 x_return_status OUT NOCOPY VARCHAR2)
2899 IS
2900 l_log_level NUMBER := FTE_FREIGHT_PRICING_UTIL.G_LOG;
2901 l_return_status VARCHAR2(1);
2902 l_return_status_1 VARCHAR2(1);
2903 l_msg_count NUMBER;
2904 l_msg_data VARCHAR2(32767);
2905 l_number_of_errors NUMBER;
2906 l_number_of_warnings NUMBER;
2907 i NUMBER;
2908 j NUMBER;
2909
2910 l_delivery_id NUMBER;
2911 l_trip_id NUMBER;
2912
2913 c_carr_srv_rec c_carrier_services%ROWTYPE;
2914 l_ship_method_code wsh_carrier_services.ship_method_code%type;
2915 l_ship_method_meaning wsh_carrier_services.ship_method_meaning%type;
2916 l_carrier_id NUMBER;
2917 l_mode_of_transport wsh_carrier_services.mode_of_transport%type;
2918 l_service_level wsh_carrier_services.service_level%type;
2919
2920 l_generic_carrier VARCHAR2(1);
2921 l_initial_pickup_location_id NUMBER;
2922 l_ultimate_dropoff_location_id NUMBER;
2923 l_initial_pickup_date DATE;
2924 l_ultimate_dropoff_date DATE;
2925
2926 l_lane_count NUMBER;
2927 l_search_criteria fte_search_criteria_rec;
2928 l_lanes_tab fte_lane_tab;
2929 l_lane_rec fte_lane_rec;
2930 l_schedules_tab fte_schedule_tab;
2931
2932 l_msg VARCHAR2(240);
2933 l_status VARCHAR2(1);
2934 l_debug_on CONSTANT BOOLEAN := WSH_DEBUG_SV.is_debug_enabled;
2935 l_module_name CONSTANT VARCHAR2(100) := 'fte.plsql.' || G_PKG_NAME || '.' || 'SEARCH_SERVICES';
2936 l_api_name CONSTANT VARCHAR2(30) := 'SEARCH_SERVICES';
2937 BEGIN
2938
2939 x_return_status := FND_API.G_RET_STS_SUCCESS;
2940
2941 IF l_debug_on THEN
2942 wsh_debug_sv.push(l_module_name);
2943 END IF;
2944
2945 FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
2946 FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,l_api_name,'start');
2947
2948 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_delivery_leg_id='||p_delivery_leg_id);
2949 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_trip_id='||p_trip_id);
2950 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_trip_msg_flag='||p_trip_msg_flag);
2951
2952 IF p_trip_id is not null THEN
2953 l_trip_id := p_trip_id;
2954 l_delivery_id := null;
2955 ELSE -- p_delivery_leg_id is not null
2956 l_trip_id := g_dleg_trip_tab(p_delivery_leg_id).trip_id;
2957 l_delivery_id := g_dlv_leg_tab(p_delivery_leg_id).delivery_id;
2958 END IF; -- p_delivery_leg_id is not null
2959
2960 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_trip_id='||l_trip_id);
2961 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_delivery_id='||l_delivery_id);
2962
2963 l_carrier_id := g_trip_info_tab(l_trip_id).carrier_id;
2964 l_mode_of_transport := g_trip_info_tab(l_trip_id).mode_of_transport;
2965 l_service_level := g_trip_info_tab(l_trip_id).service_level;
2966 l_ship_method_code := g_trip_info_tab(l_trip_id).ship_method_code;
2967 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_ship_method_code='||l_ship_method_code);
2968 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'carrier_id='||l_carrier_id);
2969 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'mode_of_transport='||l_mode_of_transport);
2970 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'service_level='||l_service_level);
2971
2972 IF (p_carrier_id is not null) or (p_mode_of_transport is not null)
2973 or (p_service_level is not null) THEN
2974 l_carrier_id := p_carrier_id;
2975 l_mode_of_transport := p_mode_of_transport;
2976 l_service_level := p_service_level;
2977 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'replace the search ship method with input ship method');
2978 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_ship_method_code='||l_ship_method_code);
2979 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'carrier_id='||l_carrier_id);
2980 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'mode_of_transport='||l_mode_of_transport);
2981 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'service_level='||l_service_level);
2982 END IF;
2983
2984 IF (l_carrier_id is not NULL) THEN
2985 OPEN c_get_generic_carrier_flag(l_carrier_id);
2986 FETCH c_get_generic_carrier_flag INTO l_generic_carrier;
2987 CLOSE c_get_generic_carrier_flag;
2988
2989 IF l_generic_carrier = 'Y' THEN
2990 l_carrier_id := null;
2991 END IF;
2992 END IF;
2993
2994 IF p_trip_id is not null THEN
2995
2996 OPEN c_trip_first_stop(p_trip_id);
2997 FETCH c_trip_first_stop INTO l_initial_pickup_location_id, l_initial_pickup_date;
2998 CLOSE c_trip_first_stop;
2999
3000 OPEN c_trip_last_stop(p_trip_id);
3001 FETCH c_trip_last_stop INTO l_ultimate_dropoff_location_id, l_ultimate_dropoff_date;
3002 CLOSE c_trip_last_stop;
3003
3004 ELSE -- p_delivery_leg_id is not null
3005
3006 l_initial_pickup_location_id := g_dlv_tab(l_delivery_id).initial_pickup_location_id;
3007 l_ultimate_dropoff_location_id := g_dlv_tab(l_delivery_id).ultimate_dropoff_location_id;
3008 l_initial_pickup_date := g_dlv_tab(l_delivery_id).initial_pickup_date;
3009 l_ultimate_dropoff_date := g_dlv_tab(l_delivery_id).ultimate_dropoff_date;
3010
3011 END IF; -- p_delivery_leg_id is not null
3012
3013 g_ship_date := l_initial_pickup_date;
3014 g_arrival_date := l_ultimate_dropoff_date;
3015
3016 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'populating search criteria...');
3017 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_initial_pickup_location_id='||l_initial_pickup_location_id);
3018 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_ultimate_dropoff_location_id='||l_ultimate_dropoff_location_id);
3019 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_initial_pickup_date='||l_initial_pickup_date);
3020 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_ultimate_dropoff_date='||l_ultimate_dropoff_date);
3021 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_carrier_id='||l_carrier_id);
3022 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_mode_of_transport='||l_mode_of_transport);
3023 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_service_level='||l_service_level);
3024
3025 l_search_criteria := fte_search_criteria_rec(
3026 relax_flag => 'Y',
3027 origin_loc_id => l_initial_pickup_location_id,
3028 destination_loc_id => l_ultimate_dropoff_location_id,
3029 origin_country => null,
3030 origin_state => null,
3031 origin_city => null,
3032 origin_zip => null,
3033 destination_country => null,
3034 destination_state => null,
3035 destination_city => null,
3036 destination_zip => null,
3037 mode_of_transport => l_mode_of_transport,
3038 lane_number => null,
3039 carrier_id => l_carrier_id,
3040 carrier_name => null,
3041 commodity_catg_id => null,
3042 commodity => null,
3043 service_code => l_service_level,
3044 service => null,
3045 --equipment_code => null, -- removed J+
3046 --equipment => null, -- removed J+
3047 schedule_only_flag => null,
3048 dep_date_from => l_initial_pickup_date,
3049 dep_date_to => l_initial_pickup_date,
3050 arr_date_from => l_ultimate_dropoff_date,
3051 arr_date_to => l_ultimate_dropoff_date,
3052 lane_ids_string => null,
3053 delivery_leg_id => null,
3054 exists_in_database => null,
3055 delivery_id => null,
3056 sequence_number => null,
3057 pick_up_stop_id => null,
3058 drop_off_stop_id => null,
3059 pickupstop_location_id => l_initial_pickup_location_id,
3060 dropoffstop_location_id => l_ultimate_dropoff_location_id,
3061 ship_to_site_id => null,
3062 vehicle_id => null,
3063 --Changes made to fte_search_criteria_rec 19-FEB-2004
3064 effective_date => l_initial_pickup_date,
3065 effective_date_type => '=',
3066 tariff_name => null -- Added J+
3067 );
3068
3069 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'Calling FTE_LANE_SEARCH.Search_Lanes...');
3070 FTE_LANE_SEARCH.Search_Lanes(
3071 p_search_criteria => l_search_criteria,
3072 p_search_type => 'L',
3073 p_source_type => 'R',
3074 p_num_results => 999, -- no limit on the search result
3075 x_lane_results => l_lanes_tab,
3076 x_schedule_results => l_schedules_tab,
3077 x_return_message => l_msg_data,
3078 x_return_status => l_status);
3079
3080 IF p_trip_msg_flag = 'Y' THEN
3081 api_post_call
3082 (
3083 p_api_name => 'FTE_LANE_SEARCH.Search_Lanes',
3084 p_api_return_status => l_status,
3085 p_message_name => 'FTE_PRC_TRP_LN_SRCH_FAIL',
3086 p_trip_id => l_trip_id,
3087 p_delivery_id => null,
3088 p_delivery_leg_id => null,
3089 x_number_of_errors => l_number_of_errors,
3090 x_number_of_warnings => l_number_of_warnings,
3091 x_return_status => l_return_status_1
3092 );
3093 ELSE
3094 api_post_call
3095 (
3096 p_api_name => 'FTE_LANE_SEARCH.Search_Lanes',
3097 p_api_return_status => l_status,
3098 p_message_name => 'FTE_PRC_DLV_LN_SRCH_FAIL',
3099 p_trip_id => null,
3100 p_delivery_id => l_delivery_id,
3101 p_delivery_leg_id => null,
3102 x_number_of_errors => l_number_of_errors,
3103 x_number_of_warnings => l_number_of_warnings,
3104 x_return_status => l_return_status_1
3105 );
3106 END IF;
3107 --
3108 IF (l_return_status_1 = 'E')
3109 THEN
3110 RAISE FND_API.G_EXC_ERROR;
3111 ELSIF (l_return_status_1 = 'U')
3112 THEN
3113 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3114 ELSIF (l_return_status_1 = WSH_UTIL_CORE.G_RET_STS_WARNING )
3115 THEN
3116 x_return_status := l_return_status_1;
3117 END IF;
3118
3119 /*
3120 -- for testing
3121 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'manually set up lane results... ');
3122
3123 l_lanes_tab := fte_lane_tab();
3124
3125 l_lane_rec := fte_lane_rec(
3126 lane_id => 1369,
3127 carrier_id => 15451,
3128 rate_chart_id => null,
3129 mode_of_transport => 'LTL',
3130 origin_id => null,
3131 destination_id => null,
3132 basis => null,
3133 commodity_catg_id => null,
3134 service_code => 'D2D',
3135 comm_fc_class_code => null,
3136 transit_time => null,
3137 transit_time_uom => null,
3138 lane_number => null,
3139 equipment_code => null,
3140 schedules_flag_code => null,
3141 distance => null,
3142 distance_uom => null,
3143 carrier_name => null,
3144 mode_of_transport_code => null,
3145 commodity => null,
3146 equipment => null,
3147 service => null,
3148 schedules_flag => null,
3149 port_of_loading => null,
3150 port_of_discharge => null,
3151 rate_chart_name => null,
3152 owner_id => null,
3153 special_handling => null,
3154 addl_instr => null,
3155 commodity_flag => null,
3156 equipment_flag => null,
3157 service_flag => null,
3158 rate_chart_view_flag => null,
3159 effective_date => null,
3160 expiry_date => null,
3161 origin_region_type => null,
3162 dest_region_type => null
3163 );
3164
3165 l_lanes_tab.EXTEND;
3166 i := 1;
3167 l_lanes_tab(i) := l_lane_rec;
3168
3169 l_lane_rec := fte_lane_rec(
3170 lane_id => 1378,
3171 carrier_id => 15453,
3172 rate_chart_id => null,
3173 mode_of_transport => 'LTL',
3174 origin_id => null,
3175 destination_id => null,
3176 basis => null,
3177 commodity_catg_id => null,
3178 service_code => 'D2D',
3179 comm_fc_class_code => null,
3180 transit_time => null,
3181 transit_time_uom => null,
3182 lane_number => null,
3183 equipment_code => null,
3184 schedules_flag_code => null,
3185 distance => null,
3186 distance_uom => null,
3187 carrier_name => null,
3188 mode_of_transport_code => null,
3189 commodity => null,
3190 equipment => null,
3191 service => null,
3192 schedules_flag => null,
3193 port_of_loading => null,
3194 port_of_discharge => null,
3195 rate_chart_name => null,
3196 owner_id => null,
3197 special_handling => null,
3198 addl_instr => null,
3199 commodity_flag => null,
3200 equipment_flag => null,
3201 service_flag => null,
3202 rate_chart_view_flag => null,
3203 effective_date => null,
3204 expiry_date => null,
3205 origin_region_type => null,
3206 dest_region_type => null
3207 );
3208
3209 l_lanes_tab.EXTEND;
3210 i := 2;
3211 l_lanes_tab(i) := l_lane_rec;
3212 */
3213 l_lane_count := l_lanes_tab.COUNT;
3214 IF l_debug_on THEN
3215 WSH_DEBUG_SV.logmsg(l_module_name,'l_lanes_tab.COUNT =>'||l_lane_count
3216 ,WSH_DEBUG_SV.C_PROC_LEVEL);
3217 END IF;
3218
3219 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'found '||l_lane_count||' lanes');
3220 IF (l_lane_count > 0) THEN
3221 j := 0;
3222 FOR i IN l_lanes_tab.FIRST..l_lanes_tab.LAST LOOP
3223
3224 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'found lane_id '||l_lanes_tab(i).lane_id);
3225 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'found mode_of_transport_code '||l_lanes_tab(i).mode_of_transport_code);
3226 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'found carrier_id '||l_lanes_tab(i).carrier_id);
3227 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'found service_code '||l_lanes_tab(i).service_code);
3228 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'found transit_time '||l_lanes_tab(i).transit_time);
3229 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'found transit_time_uom '||l_lanes_tab(i).transit_time_uom);
3230 l_ship_method_code := null;
3231 l_ship_method_meaning := null;
3232 IF ((l_delivery_id IS NULL) OR (g_dlv_tab(l_delivery_id).organization_id is null)) THEN
3233 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'del org is null, do not filter ship method by del org');
3234 OPEN c_get_ship_method(l_lanes_tab(i).carrier_id,l_lanes_tab(i).mode_of_transport_code,l_lanes_tab(i).service_code);
3235 FETCH c_get_ship_method INTO l_ship_method_code, l_ship_method_meaning;
3236 CLOSE c_get_ship_method;
3237 ELSE
3238 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'filtering ship_method by del org '||g_dlv_tab(l_delivery_id).organization_id);
3239 OPEN c_get_ship_method_code(l_lanes_tab(i).carrier_id,l_lanes_tab(i).mode_of_transport_code,l_lanes_tab(i).service_code, g_dlv_tab(l_delivery_id).organization_id);
3240 FETCH c_get_ship_method_code INTO l_ship_method_code, l_ship_method_meaning;
3241 CLOSE c_get_ship_method_code;
3242 END IF;
3243 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'found l_ship_method_code '||l_ship_method_code);
3244 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'found l_ship_method_meaning '||l_ship_method_meaning);
3245
3246 IF (l_ship_method_code is not null) THEN
3247 j := j +1;
3248 x_matched_services(j).lane_id := l_lanes_tab(i).lane_id;
3249 x_matched_services(j).trip_id := l_trip_id;
3250 x_matched_services(j).delivery_leg_id := p_delivery_leg_id;
3251 x_matched_services(j).delivery_id := l_delivery_id;
3252 x_matched_services(j).carrier_id := l_lanes_tab(i).carrier_id;
3253 x_matched_services(j).service_level := l_lanes_tab(i).service_code;
3254 x_matched_services(j).mode_of_transport := l_lanes_tab(i).mode_of_transport_code;
3255 x_matched_services(j).ship_method_code := l_ship_method_code;
3256 x_matched_services(j).ship_method_name := l_ship_method_meaning;
3257
3258 --For Seq tender ,also copy transit times
3259 x_matched_services(j).transit_time:=l_lanes_tab(i).transit_time;
3260 x_matched_services(j).transit_time_uom:=l_lanes_tab(i).transit_time_uom;
3261
3262 ELSE
3263 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'filter out this lane');
3264 END IF;
3265
3266 END LOOP;
3267 END IF;
3268
3269 IF l_debug_on THEN
3270 WSH_DEBUG_SV.pop(l_module_name);
3271 END IF;
3272
3273 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
3274 EXCEPTION
3275 WHEN FND_API.G_EXC_ERROR THEN
3276 x_return_status := FND_API.G_RET_STS_ERROR;
3277 IF l_debug_on THEN
3278 WSH_DEBUG_SV.pop(l_module_name);
3279 END IF;
3280 FTE_FREIGHT_PRICING_UTIL.set_exception(l_module_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'FND_API.G_EXC_ERROR');
3281 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
3282 --
3283 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3284 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
3285 IF l_debug_on THEN
3286 WSH_DEBUG_SV.pop(l_module_name);
3287 END IF;
3288 FTE_FREIGHT_PRICING_UTIL.set_exception(l_module_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'FND_API.G_EXC_UNEXPECTED_ERROR');
3289 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
3290 --
3291 WHEN OTHERS THEN
3292 WSH_UTIL_CORE.DEFAULT_HANDLER(G_PKG_NAME||'.'||l_api_name);
3293 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
3294 IF l_debug_on THEN
3295 WSH_DEBUG_SV.pop(l_module_name);
3296 END IF;
3297 FTE_FREIGHT_PRICING_UTIL.set_exception(l_api_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
3298 FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
3299 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
3300 END Search_Services;
3301 --
3302
3303 PROCEDURE populate_shipment(
3304 p_delivery_leg_id IN NUMBER DEFAULT NULL,
3305 p_trip_id IN NUMBER DEFAULT NULL,
3306 x_return_status OUT NOCOPY VARCHAR2)
3307 IS
3308 CURSOR c_get_delivery_from_leg(c_delivery_leg_id IN NUMBER) IS
3309 Select wdd.delivery_detail_id,
3310 wda.delivery_id,
3311 wdl.delivery_leg_id,
3312 nvl(wdl.reprice_required,'N') as reprice_required,
3313 wda.parent_delivery_detail_id,
3314 wdd.customer_id ,
3315 wdd.sold_to_contact_id ,
3316 wdd.inventory_item_id ,
3317 wdd.item_description ,
3318 wdd.hazard_class_id ,
3319 wdd.country_of_origin ,
3320 wdd.classification ,
3321 wdd.requested_quantity ,
3322 wdd.requested_quantity_uom ,
3323 wdd.master_container_item_id ,
3324 wdd.detail_container_item_id ,
3325 wdd.customer_item_id ,
3326 wdd.net_weight ,
3327 wdd.organization_id ,
3328 wdd.container_flag ,
3329 wdd.container_type_code ,
3330 wdd.container_name ,
3331 wdd.fill_percent ,
3332 wdd.gross_weight ,
3333 wdd.currency_code ,
3334 wdd.freight_class_cat_id ,
3335 wdd.commodity_code_cat_id ,
3336 wdd.weight_uom_code ,
3337 wdd.volume ,
3338 wdd.volume_uom_code ,
3339 wdd.tp_attribute_category ,
3340 wdd.tp_attribute1 ,
3341 wdd.tp_attribute2 ,
3342 wdd.tp_attribute3 ,
3343 wdd.tp_attribute4 ,
3344 wdd.tp_attribute5 ,
3345 wdd.tp_attribute6 ,
3346 wdd.tp_attribute7 ,
3347 wdd.tp_attribute8 ,
3348 wdd.tp_attribute9 ,
3349 wdd.tp_attribute10 ,
3350 wdd.tp_attribute11 ,
3351 wdd.tp_attribute12 ,
3352 wdd.tp_attribute13 ,
3353 wdd.tp_attribute14 ,
3354 wdd.tp_attribute15 ,
3355 wdd.attribute_category ,
3356 wdd.attribute1 ,
3357 wdd.attribute2 ,
3358 wdd.attribute3 ,
3359 wdd.attribute4 ,
3360 wdd.attribute5 ,
3361 wdd.attribute6 ,
3362 wdd.attribute7 ,
3363 wdd.attribute8 ,
3364 wdd.attribute9 ,
3365 wdd.attribute10 ,
3366 wdd.attribute11 ,
3367 wdd.attribute12 ,
3368 wdd.attribute13 ,
3369 wdd.attribute14,
3370 wdd.attribute15,
3371 'FTE', -- source_type
3372 NULL, -- source_line_id
3373 NULL, -- source_header_id
3374 NULL, -- source_consolidation_id
3375 NULL, -- ship_date
3376 NULL, -- arrival_date
3377 NULL, -- comm_category_id : FTE J estimate rate
3378 wda.type,
3379 wda.parent_delivery_id,
3380 wdl.parent_delivery_leg_id
3381 from wsh_delivery_details wdd, wsh_delivery_assignments wda, wsh_delivery_legs wdl,
3382 wsh_new_deliveries wd
3383 where wdd.delivery_detail_id = wda.delivery_detail_id
3384 and wda.delivery_id = wdl.delivery_id
3385 and wdl.delivery_id = wd.delivery_id
3386 and (wda.type IS null OR wda.type <> 'O')
3387 and wdl.delivery_leg_id = c_delivery_leg_id;
3388
3389 CURSOR c_get_delivery_from_trip(c_trip_id IN NUMBER) IS
3390 Select wdd.delivery_detail_id,
3391 wda.delivery_id,
3392 wdl.delivery_leg_id,
3393 nvl(wdl.reprice_required,'N') as reprice_required,
3394 wda.parent_delivery_detail_id,
3395 wdd.customer_id ,
3396 wdd.sold_to_contact_id ,
3397 wdd.inventory_item_id ,
3398 wdd.item_description ,
3399 wdd.hazard_class_id ,
3400 wdd.country_of_origin ,
3401 wdd.classification ,
3402 wdd.requested_quantity ,
3403 wdd.requested_quantity_uom ,
3404 wdd.master_container_item_id ,
3405 wdd.detail_container_item_id ,
3406 wdd.customer_item_id ,
3407 wdd.net_weight ,
3408 wdd.organization_id ,
3409 wdd.container_flag ,
3410 wdd.container_type_code ,
3411 wdd.container_name ,
3412 wdd.fill_percent ,
3413 wdd.gross_weight ,
3414 wdd.currency_code ,
3415 wdd.freight_class_cat_id ,
3416 wdd.commodity_code_cat_id ,
3417 wdd.weight_uom_code ,
3418 wdd.volume ,
3419 wdd.volume_uom_code ,
3420 wdd.tp_attribute_category ,
3421 wdd.tp_attribute1 ,
3422 wdd.tp_attribute2 ,
3423 wdd.tp_attribute3 ,
3424 wdd.tp_attribute4 ,
3425 wdd.tp_attribute5 ,
3426 wdd.tp_attribute6 ,
3427 wdd.tp_attribute7 ,
3428 wdd.tp_attribute8 ,
3429 wdd.tp_attribute9 ,
3430 wdd.tp_attribute10 ,
3431 wdd.tp_attribute11 ,
3432 wdd.tp_attribute12 ,
3433 wdd.tp_attribute13 ,
3434 wdd.tp_attribute14 ,
3435 wdd.tp_attribute15 ,
3436 wdd.attribute_category ,
3437 wdd.attribute1 ,
3438 wdd.attribute2 ,
3439 wdd.attribute3 ,
3440 wdd.attribute4 ,
3441 wdd.attribute5 ,
3442 wdd.attribute6 ,
3443 wdd.attribute7 ,
3444 wdd.attribute8 ,
3445 wdd.attribute9 ,
3446 wdd.attribute10 ,
3447 wdd.attribute11 ,
3448 wdd.attribute12 ,
3449 wdd.attribute13 ,
3450 wdd.attribute14,
3451 wdd.attribute15,
3452 'FTE', -- source_type
3453 NULL, -- source_line_id
3454 NULL, -- source_header_id
3455 NULL, -- source_consolidation_id
3456 NULL, -- ship_date
3457 NULL, -- arrival_date
3458 NULL, -- comm_category_id : FTE J estimate rate
3459 wda.type,
3460 wda.parent_delivery_id,
3461 wdl.parent_delivery_leg_id
3462 from wsh_delivery_details wdd, wsh_delivery_assignments wda, wsh_delivery_legs wdl,
3463 wsh_new_deliveries wd, wsh_trips wt, wsh_trip_stops wts1, wsh_trip_stops wts2
3464 where wdd.delivery_detail_id = wda.delivery_detail_id
3465 and wda.delivery_id = wdl.delivery_id
3466 and wdl.delivery_id = wd.delivery_id
3467 and wdl.pick_up_stop_id = wts1.stop_id
3468 and wdl.drop_off_stop_id = wts2.stop_id
3469 and wts1.trip_id = wt.trip_id
3470 and (wda.type IS null OR wda.type <> 'O')
3471 and wt.trip_id = c_trip_id;
3472
3473 l_delvy_det_rec fte_freight_pricing.shipment_line_rec_type;
3474 l_log_level NUMBER := FTE_FREIGHT_PRICING_UTIL.G_LOG;
3475 l_module_name CONSTANT VARCHAR2(100) := 'fte.plsql.' || G_PKG_NAME || '.' || 'POPULATE_SHIPMENT';
3476 l_api_name CONSTANT VARCHAR2(30) := 'POPULATE_SHIPMENT';
3477
3478 BEGIN
3479
3480 x_return_status := FND_API.G_RET_STS_SUCCESS;
3481
3482 FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
3483 FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,l_api_name,'start');
3484
3485 fte_freight_pricing.g_shipment_line_rows.DELETE;
3486
3487 IF p_delivery_leg_id IS NOT NULL
3488 THEN
3489 OPEN c_get_delivery_from_leg(p_delivery_leg_id);
3490
3491 LOOP
3492 FETCH c_get_delivery_from_leg INTO l_delvy_det_rec;
3493 EXIT WHEN c_get_delivery_from_leg%NOTFOUND;
3494 fte_freight_pricing.g_shipment_line_rows(l_delvy_det_rec.delivery_detail_id) := l_delvy_det_rec;
3495 END LOOP;
3496 IF c_get_delivery_from_leg%ROWCOUNT = 0 THEN
3497 CLOSE c_get_delivery_from_leg;
3498 raise g_pricing_not_required;
3499 ELSE
3500 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'Matching number of delivery lines : '||c_get_delivery_from_leg%ROWCOUNT);
3501 END IF;
3502
3503 CLOSE c_get_delivery_from_leg;
3504 ELSIF p_trip_id IS NOT NULL THEN
3505 OPEN c_get_delivery_from_trip(p_trip_id);
3506
3507 LOOP
3508 FETCH c_get_delivery_from_trip INTO l_delvy_det_rec;
3509 EXIT WHEN c_get_delivery_from_trip%NOTFOUND;
3510 fte_freight_pricing.g_shipment_line_rows(l_delvy_det_rec.delivery_detail_id) := l_delvy_det_rec;
3511 END LOOP;
3512 IF c_get_delivery_from_trip%ROWCOUNT = 0 THEN
3513 CLOSE c_get_delivery_from_trip;
3514 raise g_pricing_not_required;
3515 ELSE
3516 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'Matching number of delivery lines : '||c_get_delivery_from_trip%ROWCOUNT);
3517 END IF;
3518 CLOSE c_get_delivery_from_trip;
3519
3520 END IF;
3521
3522 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
3523 EXCEPTION
3524 WHEN g_pricing_not_required THEN
3525 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
3526 FTE_FREIGHT_PRICING_UTIL.set_exception(l_module_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_pricing_not_required');
3527 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
3528 --
3529 WHEN OTHERS THEN
3530 WSH_UTIL_CORE.DEFAULT_HANDLER(G_PKG_NAME||'.'||l_api_name);
3531 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
3532 FTE_FREIGHT_PRICING_UTIL.set_exception(l_api_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
3533 FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
3534 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
3535 END populate_shipment;
3536
3537
3538
3539
3540 PROCEDURE Tender_Trip(
3541 p_trip_id IN NUMBER,
3542 x_return_status OUT NOCOPY VARCHAR2)
3543 IS
3544
3545 l_msg_count NUMBER;
3546 l_msg_data VARCHAR2(32767);
3547 l_action_prms FTE_TRIP_ACTION_PARAM_REC;
3548 l_action_out_rec FTE_ACTION_OUT_REC;
3549 l_log_level NUMBER := fte_freight_pricing_util.G_DBG;
3550 l_api_name VARCHAR2(50) := 'Tender_Trip';
3551 l_return_status VARCHAR2(1);
3552
3553 BEGIN
3554
3555 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
3556 FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
3557 FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,l_api_name);
3558
3559
3560
3561
3562 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'Before calling FTE_MLS_WRAPPER.Trip_Action'||TO_CHAR(SYSDATE, 'MM-DD-YYYY HH24:MI:SS'));
3563
3564 l_action_prms:=FTE_TRIP_ACTION_PARAM_REC(
3565 phase=>NULL,
3566 action_code=>FTE_TENDER_PVT.S_TENDERED,
3567 organization_id=>NULL,
3568 report_set_id=>NULL,
3569 override_flag=>NULL,
3570 trip_name=>NULL,
3571 actual_date=>NULL,
3572 stop_id=>NULL,
3573 action_flag=>NULL,
3574 autointransit_flag=>NULL,
3575 autoclose_flag=>NULL,
3576 stage_del_flag=>NULL,
3577 ship_method=>NULL,
3578 bill_of_lading_flag=>NULL,
3579 defer_interface_flag=>NULL,
3580 actual_departure_date=>NULL
3581 );
3582
3583
3584 FTE_MLS_WRAPPER.Trip_Action(
3585 p_api_version_number=>1,
3586 p_init_msg_list=>FND_API.G_FALSE,
3587 p_tripId=>p_trip_id,
3588 p_action_prms=>l_action_prms,
3589 x_msg_count=>l_msg_count,
3590 x_msg_data=>l_msg_data,
3591 x_action_out_rec=>l_action_out_rec,
3592 x_return_status=>l_return_status);
3593
3594 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,TO_CHAR(SYSDATE, 'MM-DD-YYYY HH24:MI:SS'));
3595 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'After calling FTE_MLS_WRAPPER.Trip_Action Return status:'||l_return_status||' Message:'||l_msg_data);
3596
3597
3598
3599
3600 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
3601
3602 EXCEPTION
3603 WHEN others THEN
3604 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
3605 FTE_FREIGHT_PRICING_UTIL.set_exception(l_api_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
3606 FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
3607 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
3608
3609 END Tender_Trip;
3610
3611 PROCEDURE Sequential_Tender(
3612 p_rank_rec IN FTE_CARRIER_RANK_LIST_PVT.carrier_rank_list_rec,
3613 p_vehicle_type IN NUMBER,
3614 x_return_status OUT NOCOPY VARCHAR2)
3615 IS
3616
3617 CURSOR get_global_expand_rank_flag IS
3618 SELECT wgp.expand_carrier_rankings
3619 FROM WSH_GLOBAL_PARAMETERS wgp;
3620
3621 CURSOR get_rank_id(c_trip_id IN NUMBER) IS
3622 SELECT t.rank_id
3623 FROM WSH_TRIPS t
3624 WHERE t.trip_id=c_trip_id;
3625
3626
3627 CURSOR c_get_vehicle_item_org (c_vehicle_type_id IN NUMBER)
3628 IS
3629 select v.inventory_item_id,
3630 v.ORGANIZATION_ID
3631 from fte_vehicle_types v
3632 where v.vehicle_type_id = c_vehicle_type_id;
3633
3634
3635 l_module_name CONSTANT VARCHAR2(100) := 'fte.plsql.' || G_PKG_NAME || '.' || 'Sequential_Tender';
3636 l_rank_tab FTE_CARRIER_RANK_LIST_PVT.carrier_rank_list_tbl_type;
3637 l_out_rank_tab FTE_CARRIER_RANK_LIST_PVT.carrier_rank_list_tbl_type;
3638 l_rank_id NUMBER;
3639 l_append_flag VARCHAR2(1);
3640 l_msg_count NUMBER;
3641 l_msg_data VARCHAR2(32767);
3642 l_ship_method_meaning VARCHAR2(32767);
3643 l_ship_method_code VARCHAR2(30);
3644 l_log_level NUMBER := fte_freight_pricing_util.G_DBG;
3645 l_api_name VARCHAR2(50) := 'Sequential_Tender';
3646 l_return_status VARCHAR2(1);
3647
3648 l_vehicle_item_id NUMBER;
3649 l_vehicle_org_id NUMBER;
3650
3651 BEGIN
3652
3653
3654 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
3655 FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
3656 FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,l_api_name);
3657
3658 OPEN get_rank_id(p_rank_rec.trip_id);
3659 FETCH get_rank_id INTO l_rank_id;
3660 CLOSE get_rank_id;
3661
3662 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'RANK ID '||l_rank_id);
3663
3664 -- If rank_id is null this means that routing guide produced no results
3665 -- As a result rating will need to populate the append flag on the trip
3666 --with the same value as the global expand flag
3667
3668 l_append_flag:=NULL;
3669 IF (l_rank_id IS NULL)
3670 THEN
3671
3672 OPEN get_global_expand_rank_flag;
3673 FETCH get_global_expand_rank_flag INTO l_append_flag;
3674 CLOSE get_global_expand_rank_flag;
3675
3676 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'Append flag '||l_append_flag);
3677
3678 END IF;
3679
3680 l_vehicle_item_id:=NULL;
3681 l_vehicle_org_id:=NULL;
3682
3683
3684 IF (p_vehicle_type IS NOT NULL)
3685 THEN
3686
3687
3688 OPEN c_get_vehicle_item_org(p_vehicle_type);
3689 FETCH c_get_vehicle_item_org INTO l_vehicle_item_id,l_vehicle_org_id;
3690 CLOSE c_get_vehicle_item_org;
3691
3692
3693 END IF;
3694
3695
3696
3697
3698 l_rank_tab(1):=p_rank_rec;
3699
3700 IF((l_vehicle_item_id IS NOT NULL) AND (l_vehicle_org_id IS NOT NULL))
3701 THEN
3702 l_rank_tab(1).vehicle_item_id:=l_vehicle_item_id;
3703 l_rank_tab(1).vehicle_org_id:=l_vehicle_org_id;
3704
3705 ELSE
3706 l_vehicle_item_id:=NULL;
3707 l_vehicle_org_id:=NULL;
3708
3709
3710 END IF;
3711
3712 IF (l_rank_id IS NOT NULL)
3713 THEN
3714 l_rank_tab(1).rank_id:=l_rank_id;
3715
3716 END IF;
3717
3718
3719 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'Rank record contents');
3720 FTE_TRIP_RATING_GRP.Display_Rank_Rec(p_rank_rec=>l_rank_tab(1));
3721
3722
3723 IF(l_rank_id IS NOT NULL)
3724 THEN
3725
3726 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'Before calling FTE_CARRIER_RANK_LIST_PVT.RANK_LIST_ACTION UPDATE');
3727 FTE_CARRIER_RANK_LIST_PVT.RANK_LIST_ACTION(
3728 p_api_version_number =>1,
3729 p_init_msg_list =>FND_API.G_FALSE,
3730 p_action_code =>FTE_CARRIER_RANK_LIST_PVT.S_UPDATE,
3731 p_ranklist =>l_rank_tab,
3732 p_trip_id =>p_rank_rec.trip_id,
3733 p_rank_id =>l_rank_id,
3734 x_return_status =>l_return_status,
3735 x_msg_count =>l_msg_count,
3736 x_msg_data =>l_msg_data);
3737
3738 ELSE
3739
3740 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'Before calling FTE_CARRIER_RANK_LIST_PVT.RANK_LIST_ACTION CREATE');
3741
3742 l_rank_tab(1).rank_sequence:=1;
3743 l_rank_tab(1).is_current:='Y';
3744 l_rank_tab(1).source:=FTE_CARRIER_RANK_LIST_PVT.S_SOURCE_LCSS;
3745
3746 FTE_CARRIER_RANK_LIST_PVT.RANK_LIST_ACTION(
3747 p_api_version_number =>1,
3748 p_init_msg_list =>FND_API.G_FALSE,
3749 p_action_code =>FTE_CARRIER_RANK_LIST_PVT.S_CREATE,
3750 p_ranklist =>l_rank_tab,
3751 p_trip_id =>p_rank_rec.trip_id,
3752 p_rank_id =>NULL,
3753 x_return_status =>l_return_status,
3754 x_msg_count =>l_msg_count,
3755 x_msg_data =>l_msg_data);
3756
3757
3758 END IF;
3759
3760 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'After calling FTE_CARRIER_RANK_LIST_PVT.RANK_LIST_ACTION Return status:'||l_return_status||' Message:'||l_msg_data);
3761 IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
3762 THEN
3763 IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
3764 THEN
3765
3766 raise FTE_FREIGHT_PRICING_UTIL.g_rank_list_update_fail;
3767 END IF;
3768 END IF;
3769 IF ((l_out_rank_tab.FIRST IS NOT NULL) AND(l_out_rank_tab(l_out_rank_tab.FIRST).rank_id IS NOT NULL))
3770 THEN
3771
3772 l_rank_id:=l_out_rank_tab(l_out_rank_tab.FIRST).rank_id;
3773 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'RANK ID After calling FTE_CARRIER_RANK_LIST_PVT.RANK_LIST_ACTION'||l_rank_id);
3774 ELSE
3775
3776 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'NO RANK ID After calling FTE_CARRIER_RANK_LIST_PVT.RANK_LIST_ACTION');
3777 --Commenting out as Rank list API handles update of rank on trip
3778 --raise FTE_FREIGHT_PRICING_UTIL.g_rank_list_update_fail;
3779
3780 END IF;
3781
3782
3783
3784
3785 OPEN c_get_ship_method (p_rank_rec.carrier_id,p_rank_rec.mode_of_transport,p_rank_rec.service_level);
3786 FETCH c_get_ship_method INTO l_ship_method_code,l_ship_method_meaning;
3787 CLOSE c_get_ship_method;
3788
3789 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'SM Code,meaning:'||l_ship_method_code||':'||l_ship_method_meaning);
3790
3791 update_single_trip (p_trip_id => p_rank_rec.trip_id,
3792 p_lane_id => p_rank_rec.lane_id,
3793 p_carrier_id => p_rank_rec.carrier_id,
3794 p_ship_method_code => l_ship_method_code,
3795 p_ship_method_name => l_ship_method_meaning,
3796 p_service_level => p_rank_rec.service_level,
3797 p_mode_of_transport => p_rank_rec.mode_of_transport,
3798 p_vehicle_type_id => p_vehicle_type,
3799 p_vehicle_item_id => NULL,
3800 p_vehicle_org_id => NULL,
3801 --p_rank_id =>l_rank_id, This update is handled by rank list API
3802 p_append_flag =>l_append_flag,
3803 x_return_status => l_return_status,
3804 x_msg_count => l_msg_count,
3805 x_msg_data => l_msg_data );
3806
3807 IF (l_return_status = 'E')
3808 THEN
3809 RAISE FND_API.G_EXC_ERROR;
3810 ELSIF (l_return_status = 'U')
3811 THEN
3812 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3813 ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING )
3814 THEN
3815 x_return_status := l_return_status;
3816 END IF;
3817
3818
3819 Tender_Trip(
3820 p_trip_id =>p_rank_rec.trip_id,
3821 x_return_status => l_return_status);
3822
3823 IF (l_return_status = 'E')
3824 THEN
3825 RAISE FND_API.G_EXC_ERROR;
3826 ELSIF (l_return_status = 'U')
3827 THEN
3828 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3829 END IF;
3830
3831 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
3832
3833 EXCEPTION
3834
3835 WHEN FND_API.G_EXC_ERROR THEN
3836 x_return_status := FND_API.G_RET_STS_ERROR;
3837 FTE_FREIGHT_PRICING_UTIL.set_exception(l_module_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'FND_API.G_EXC_ERROR');
3838 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
3839 --
3840 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
3841 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
3842 FTE_FREIGHT_PRICING_UTIL.set_exception(l_module_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'FND_API.G_EXC_UNEXPECTED_ERROR');
3843 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
3844
3845
3846 WHEN FTE_FREIGHT_PRICING_UTIL.g_rank_list_update_fail THEN
3847 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
3848 FTE_FREIGHT_PRICING_UTIL.set_exception(l_api_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_rank_list_update_fail');
3849 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
3850
3851
3852 WHEN others THEN
3853 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
3854 FTE_FREIGHT_PRICING_UTIL.set_exception(l_api_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
3855 FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
3856 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
3857
3858
3859
3860 END Sequential_Tender;
3861
3862
3863
3864 PROCEDURE rate_tl_trip (
3865 p_trip_id IN VARCHAR2,
3866 p_seq_tender_flag IN VARCHAR2 DEFAULT 'N',
3867 x_return_status OUT NOCOPY VARCHAR2)
3868 IS
3869 l_log_level NUMBER := FTE_FREIGHT_PRICING_UTIL.G_LOG;
3870 l_module_name CONSTANT VARCHAR2(100) := 'fte.plsql.' || G_PKG_NAME || '.' || 'RATE_TL_TRIP';
3871 l_api_name CONSTANT VARCHAR2(30) := 'RATE_TL_TRIP';
3872 l_return_status VARCHAR2(1);
3873 l_return_status_1 VARCHAR2(1);
3874 l_number_of_errors NUMBER;
3875 l_number_of_warnings NUMBER;
3876 l_msg_count NUMBER;
3877 l_msg_data VARCHAR2(32767);
3878
3879 l_lane_rate NUMBER;
3880 l_lane_rate_uom VARCHAR2(10);
3881 l_trip_charge_rec FTE_TL_CACHE.TL_trip_output_rec_type;
3882 l_stop_charge_tab FTE_TL_CACHE.TL_trip_stop_output_tab_type;
3883 l_cost_alloc_parameters FTE_TL_COST_ALLOCATION.TL_allocation_params_rec_type;
3884
3885
3886 l_lowest_trip_lane_index NUMBER;
3887 l_lowest_lane_index NUMBER;
3888 l_lowest_lane_rate NUMBER;
3889 l_lowest_lane_rate_uom VARCHAR2(10);
3890 l_lowest_lane_trip_charge_rec FTE_TL_CACHE.TL_trip_output_rec_type;
3891 l_lowest_lane_stop_charge_tab FTE_TL_CACHE.TL_trip_stop_output_tab_type;
3892 l_lowest_lane_fct fte_freight_pricing.Freight_Cost_Temp_Tab_Type;
3893 l_all_lane_failed BOOLEAN;
3894 l_converted_amount NUMBER;
3895 l_vehicle_type NUMBER;
3896
3897 l_matched_lanes lane_match_tab;
3898 l_matched_lane_count NUMBER;
3899 l_trip_dleg_cnt NUMBER;
3900 l_lane_ids dbms_utility.number_array;
3901
3902 c_carr_srv_rec c_carrier_services%ROWTYPE;
3903 l_ship_method_code wsh_carrier_services.ship_method_code%type;
3904 l_ship_method_meaning wsh_carrier_services.ship_method_meaning%type;
3905 l_carrier_id NUMBER;
3906 l_mode_of_transport wsh_carrier_services.mode_of_transport%type;
3907 l_service_level wsh_carrier_services.service_level%type;
3908 l_rank_rec FTE_CARRIER_RANK_LIST_PVT.carrier_rank_list_rec;
3909
3910 BEGIN
3911
3912 x_return_status := FND_API.G_RET_STS_SUCCESS;
3913
3914 FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
3915 FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,l_api_name,'start');
3916
3917 IF (g_trip_info_tab(p_trip_id).lane_id is not null) THEN
3918 null;
3919 ELSE -- no lane on trip
3920 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'no lane on trip, searching services...');
3921 Search_Services(
3922 p_trip_id => p_trip_id,
3923 p_trip_msg_flag => 'Y',
3924 x_matched_services => l_matched_lanes,
3925 x_return_status => l_return_status);
3926
3927 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_return_status='||l_return_status);
3928
3929 IF (l_return_status = 'E')
3930 THEN
3931 RAISE FND_API.G_EXC_ERROR;
3932 ELSIF (l_return_status = 'U')
3933 THEN
3934 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3935 ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING )
3936 THEN
3937 x_return_status := l_return_status;
3938 END IF;
3939
3940 l_matched_lane_count := l_matched_lanes.COUNT;
3941 IF (l_matched_lane_count = 0) THEN -- no lane found
3942 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'no lane found');
3943 RAISE FND_API.G_EXC_ERROR;
3944 END IF; -- no lane found
3945 END IF; -- no lane on trip
3946
3947 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'found following lanes...');
3948 print_matched_lane_tab(p_matched_lane_tab => l_matched_lanes);
3949
3950 l_all_lane_failed := true;
3951
3952 -- l_lane_ids as dbms_utility.number_array
3953 FOR i in l_matched_lanes.FIRST..l_matched_lanes.LAST LOOP
3954 l_lane_ids(i) := l_matched_lanes(i).lane_id;
3955 END LOOP;
3956
3957 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'Calling FTE_TL_RATING.BEGIN_LCSS...');
3958
3959
3960 FTE_TL_RATING.BEGIN_LCSS (
3961 p_trip_id=> p_trip_id,
3962 p_lane_rows => l_lane_ids,
3963 x_trip_index=> l_lowest_trip_lane_index,
3964 x_trip_charges_rec=>l_trip_charge_rec,
3965 x_stop_charges_tab=> l_stop_charge_tab,
3966 x_total_cost=>l_lane_rate,
3967 x_currency=>l_lane_rate_uom,
3968 x_vehicle_type=>l_vehicle_type,
3969 x_lane_ref=>l_lowest_lane_index,
3970 x_return_status => l_return_status);
3971
3972 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_return_status='||l_return_status);
3973
3974 IF (l_return_status = 'E')
3975 THEN
3976 RAISE FND_API.G_EXC_ERROR;
3977 ELSIF (l_return_status = 'U')
3978 THEN
3979 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
3980 ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING )
3981 THEN
3982 x_return_status := l_return_status;
3983 END IF;
3984
3985
3986
3987
3988 IF (l_lowest_trip_lane_index IS NULL)
3989 THEN
3990
3991
3992 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'no rates found');
3993
3994 FTE_TL_RATING.ABORT_LCSS(x_return_status => l_return_status);
3995
3996 RAISE FND_API.G_EXC_ERROR;
3997
3998 END IF;
3999
4000
4001 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'updating trip with lane_id and shipmethod...');
4002 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'trip_id='||p_trip_id);
4003 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'lane_id='||l_matched_lanes(l_lowest_lane_index).lane_id);
4004 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'carrier_id='||l_matched_lanes(l_lowest_lane_index).carrier_id);
4005 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'ship_method_code='||l_matched_lanes(l_lowest_lane_index).ship_method_code);
4006 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'ship_method_name='||l_matched_lanes(l_lowest_lane_index).ship_method_name);
4007 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'service_level='||l_matched_lanes(l_lowest_lane_index).service_level);
4008 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'mode_of_transport='||l_matched_lanes(l_lowest_lane_index).mode_of_transport);
4009 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'lowest rate='||l_lane_rate);
4010 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'lowest_rate curr='||l_lane_rate_uom);
4011
4012
4013 IF(p_seq_tender_flag='N')
4014 THEN
4015
4016 -- update trip with lane_id, ship_method
4017 update_single_trip(
4018 p_trip_id => p_trip_id,
4019 p_lane_id => l_matched_lanes(l_lowest_lane_index).lane_id,
4020 p_carrier_id => l_matched_lanes(l_lowest_lane_index).carrier_id,
4021 p_ship_method_code => l_matched_lanes(l_lowest_lane_index).ship_method_code,
4022 p_ship_method_name => l_matched_lanes(l_lowest_lane_index).ship_method_name,
4023 p_service_level => l_matched_lanes(l_lowest_lane_index).service_level,
4024 p_mode_of_transport => l_matched_lanes(l_lowest_lane_index).mode_of_transport,
4025 p_vehicle_type_id => l_vehicle_type,
4026 p_vehicle_item_id =>NULL,
4027 p_vehicle_org_id =>NULL,
4028 x_return_status => l_return_status,
4029 x_msg_count => l_msg_count,
4030 x_msg_data => l_msg_data);
4031
4032 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_return_status='||l_return_status);
4033
4034 IF (l_return_status = 'E')
4035 THEN
4036 RAISE FND_API.G_EXC_ERROR;
4037 ELSIF (l_return_status = 'U')
4038 THEN
4039 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4040 ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING )
4041 THEN
4042 x_return_status := l_return_status;
4043 END IF;
4044
4045 ELSE
4046
4047
4048 l_rank_rec.trip_id:=p_trip_id;
4049 l_rank_rec.lane_id:=l_matched_lanes(l_lowest_lane_index).lane_id;
4050 l_rank_rec.carrier_id:=l_matched_lanes(l_lowest_lane_index).carrier_id;
4051 l_rank_rec.service_level:=l_matched_lanes(l_lowest_lane_index).service_level;
4052 l_rank_rec.mode_of_transport:=l_matched_lanes(l_lowest_lane_index).mode_of_transport;
4053 l_rank_rec.estimated_rate:=l_lane_rate;
4054 l_rank_rec.currency_code:=l_lane_rate_uom;
4055 l_rank_rec.estimated_transit_time:=l_matched_lanes(l_lowest_lane_index).transit_time;
4056 l_rank_rec.transit_time_uom:=l_matched_lanes(l_lowest_lane_index).transit_time_uom;
4057
4058 Sequential_Tender(
4059 p_rank_rec=>l_rank_rec,
4060 p_vehicle_type=>l_vehicle_type,
4061 x_return_status=>l_return_status);
4062
4063
4064 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_return_status='||l_return_status);
4065
4066 IF (l_return_status = 'E')
4067 THEN
4068 RAISE FND_API.G_EXC_ERROR;
4069 ELSIF (l_return_status = 'U')
4070 THEN
4071 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4072 ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING )
4073 THEN
4074 x_return_status := l_return_status;
4075 END IF;
4076
4077
4078
4079 END IF;
4080
4081
4082 FTE_TL_RATING.END_LCSS (
4083 p_trip_index=> l_lowest_trip_lane_index,
4084 p_trip_charges_rec=>l_trip_charge_rec,
4085 p_stop_charges_tab=> l_stop_charge_tab,
4086 x_return_status => l_return_status);
4087
4088
4089 IF (l_return_status = 'E')
4090 THEN
4091 RAISE FND_API.G_EXC_ERROR;
4092 ELSIF (l_return_status = 'U')
4093 THEN
4094 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4095 ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING )
4096 THEN
4097 x_return_status := l_return_status;
4098 END IF;
4099
4100
4101 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'Calling Trip_Select_Service_Init for trip:'||p_trip_id||'At:'||TO_CHAR(SYSDATE, 'MM-DD-YYYY HH24:MI:SS'));
4102
4103 FTE_WORKFLOW_UTIL.Trip_Select_Service_Init(
4104 p_trip_id =>p_trip_id,
4105 x_return_status =>l_return_status);
4106
4107 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'Trip_Select_Service_Init return_status:'||l_return_status||'At:'||TO_CHAR(SYSDATE, 'MM-DD-YYYY HH24:MI:SS'));
4108
4109
4110
4111 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
4112 EXCEPTION
4113 WHEN g_finished_success THEN
4114 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
4115 --
4116 WHEN FND_API.G_EXC_ERROR THEN
4117 x_return_status := FND_API.G_RET_STS_ERROR;
4118 FTE_FREIGHT_PRICING_UTIL.set_exception(l_module_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'FND_API.G_EXC_ERROR');
4119 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
4120 --
4121 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4122 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
4123 FTE_FREIGHT_PRICING_UTIL.set_exception(l_module_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'FND_API.G_EXC_UNEXPECTED_ERROR');
4124 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
4125 --
4126 WHEN OTHERS THEN
4127 WSH_UTIL_CORE.DEFAULT_HANDLER(G_PKG_NAME||'.'||l_api_name);
4128 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
4129 FTE_FREIGHT_PRICING_UTIL.set_exception(l_api_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
4130 FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
4131 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
4132 END rate_tl_trip;
4133
4134 PROCEDURE rate_trip2 (
4135 p_trip_id IN NUMBER,
4136 p_seq_tender_flag IN VARCHAR2 DEFAULT 'N',
4137 x_return_status OUT NOCOPY VARCHAR2)
4138 IS
4139 --
4140 l_api_name CONSTANT VARCHAR2(30) := 'RATE_TRIP2';
4141 l_log_level NUMBER := FTE_FREIGHT_PRICING_UTIL.G_LOG;
4142 l_return_status VARCHAR2(1);
4143 l_return_code NUMBER;
4144 l_return_status_1 VARCHAR2(1);
4145 --
4146 i NUMBER;
4147 j NUMBER;
4148 k NUMBER;
4149 l_dlv_rec WSH_NEW_DELIVERIES_PVT.Delivery_Rec_Type;
4150 l_leg_count NUMBER := 0;
4151 l_dlv_leg_list WSH_UTIL_CORE.id_tab_type;
4152 l_lane_ids WSH_UTIL_CORE.id_tab_type;
4153 l_trip_ids WSH_UTIL_CORE.id_tab_type;
4154 l_lane_ret_code NUMBER;
4155 l_delivery_leg_id NUMBER;
4156 l_delivery_id NUMBER;
4157 l_dleg_id NUMBER;
4158 l_trip_id NUMBER;
4159 l_lane_id NUMBER;
4160 l_leg_trip_det_rec trip_info_rec;
4161 l_matched_lanes lane_match_tab;
4162 l_lane_match_rec lane_match_rec;
4163 l_prc_in_rec FTE_FREIGHT_PRICING.FtePricingInRecType;
4164 l_dummy VARCHAR2(1);
4165 l_matched_lane_count NUMBER;
4166 --
4167 l_msg_count NUMBER;
4168 l_msg_data VARCHAR2(32767);
4169 --
4170 l_number_of_errors NUMBER;
4171 l_number_of_warnings NUMBER;
4172 l_commit VARCHAR2(100) := FND_API.G_FALSE;
4173 l_debug_on CONSTANT BOOLEAN := WSH_DEBUG_SV.is_debug_enabled;
4174 l_module_name CONSTANT VARCHAR2(100) := 'fte.plsql.' || G_PKG_NAME || '.' || 'RATE_TRIP2';
4175
4176 l_lane_rate NUMBER;
4177 l_lane_rate_uom VARCHAR2(10);
4178 l_lane_fct_price fte_freight_pricing.Freight_Cost_Temp_Tab_Type;
4179 l_lane_fct_charge fte_freight_pricing.Freight_Cost_Temp_Tab_Type;
4180 l_lowest_lane_index NUMBER;
4181 l_lowest_lane_rate NUMBER;
4182 l_lowest_lane_rate_uom VARCHAR2(10);
4183 l_lowest_lane_fct_price fte_freight_pricing.Freight_Cost_Temp_Tab_Type;
4184 l_lowest_lane_fct_charge fte_freight_pricing.Freight_Cost_Temp_Tab_Type;
4185 l_all_lane_failed BOOLEAN;
4186 l_converted_amount NUMBER;
4187 l_currency_code VARCHAR2(30);
4188
4189 l_tl_rating_flag VARCHAR2(1);
4190 c_carr_srv_rec c_carrier_services%ROWTYPE;
4191 l_ship_method_code wsh_carrier_services.ship_method_code%type;
4192 l_ship_method_meaning wsh_carrier_services.ship_method_meaning%type;
4193 l_carrier_id NUMBER;
4194 l_mode_of_transport wsh_carrier_services.mode_of_transport%type;
4195 l_service_level wsh_carrier_services.service_level%type;
4196
4197 l_org_manifest_enabled VARCHAR2(1);
4198 l_carrier_manifest_enabled VARCHAR2(1);
4199 l_rank_rec FTE_CARRIER_RANK_LIST_PVT.carrier_rank_list_rec;
4200
4201
4202 --
4203 BEGIN
4204 --
4205 x_return_status := FND_API.G_RET_STS_SUCCESS;
4206 --
4207 IF l_debug_on THEN
4208 wsh_debug_sv.push(l_module_name);
4209 END IF;
4210 IF l_debug_on THEN
4211 WSH_DEBUG_SV.logmsg(
4212 l_module_name,
4213 'p_trip_id '|| p_trip_id,
4214 WSH_DEBUG_SV.C_PROC_LEVEL);
4215 END IF;
4216
4217 FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
4218 FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,l_api_name,'start');
4219
4220 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_trip_id='||p_trip_id);
4221
4222 g_dlv_tab.DELETE;
4223 g_dlv_leg_tab.DELETE;
4224 g_trip_info_tab.DELETE;
4225 g_dleg_trip_tab.DELETE;
4226 l_matched_lanes.DELETE;
4227
4228 -- populate trip table
4229 -- g_trip_info has one trip
4230 OPEN c_trip_info(p_trip_id);
4231 FETCH c_trip_info INTO l_leg_trip_det_rec;
4232 CLOSE c_trip_info;
4233
4234 g_trip_info_tab(p_trip_id) := l_leg_trip_det_rec;
4235
4236 print_trip_tab();
4237
4238 -- FTE_TRIP_RATING_GRP.Rate_Trip calls Rate_Delivery with trip_id only if
4239 -- full ship method and lane id is null on the trip
4240
4241 l_ship_method_code := g_trip_info_tab(p_trip_id).ship_method_code;
4242 l_carrier_id := g_trip_info_tab(p_trip_id).carrier_id;
4243 l_mode_of_transport := g_trip_info_tab(p_trip_id).mode_of_transport;
4244 l_service_level := g_trip_info_tab(p_trip_id).service_level;
4245 l_lane_id := g_trip_info_tab(p_trip_id).lane_id;
4246
4247 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_ship_method_code='||l_ship_method_code);
4248 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_carrier_id='||l_carrier_id);
4249 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_mode_of_transport='||l_mode_of_transport);
4250 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_service_level='||l_service_level);
4251 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_lane_id='||l_lane_id);
4252
4253 --IF l_ship_method_code is null OR l_carrier_id is null OR l_mode_of_transport is null
4254 IF l_carrier_id is null OR l_mode_of_transport is null
4255 OR l_service_level is null OR l_lane_id is not null THEN
4256 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'should have full ship method and lane is null to reach this point!!!');
4257 raise FND_API.G_EXC_ERROR;
4258 END IF;
4259
4260
4261 IF (l_mode_of_transport = 'TRUCK') THEN
4262 l_tl_rating_flag := 'Y';
4263
4264 validate_tl_trip(
4265 p_trip_id => p_trip_id,
4266 x_return_code => l_return_code);
4267
4268 IF l_return_code = G_RC_ERROR THEN
4269 RAISE FND_API.G_EXC_ERROR;
4270 ELSIF l_return_code = G_RC_REPRICE_NOT_REQUIRED THEN
4271 raise g_finished_success;
4272 ELSIF (l_return_code = G_RC_NOT_RATE_FREIGHT_TERM
4273 OR l_return_code = G_RC_NOT_RATE_MANIFESTING) THEN
4274 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
4275 raise g_finished_warning;
4276 END IF;
4277
4278 rate_tl_trip(
4279 p_trip_id => p_trip_id,
4280 x_return_status => l_return_status);
4281
4282 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_return_status='||l_return_status);
4283
4284 IF (l_return_status = 'E')
4285 THEN
4286 RAISE FND_API.G_EXC_ERROR;
4287 ELSIF (l_return_status = 'U')
4288 THEN
4289 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4290 ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING )
4291 THEN
4292 x_return_status := l_return_status;
4293 raise g_finished_warning;
4294 END IF;
4295
4296 raise g_finished_success;
4297
4298 ELSE -- mode_of_transport <> 'TRUCK'
4299 l_tl_rating_flag := 'N';
4300 END IF;
4301
4302 IF (l_leg_trip_det_rec.lane_id is not null) THEN
4303 null;
4304 ELSE -- no lane on trip
4305
4306 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'no lane on trip, validating trip...');
4307 validate_nontl_trip(
4308 p_trip_id => p_trip_id,
4309 x_return_code => l_return_code);
4310
4311 IF l_return_code = G_RC_ERROR THEN
4312 RAISE FND_API.G_EXC_ERROR;
4313 ELSIF l_return_code = G_RC_REPRICE_NOT_REQUIRED THEN
4314 raise g_finished_success;
4315 ELSIF (l_return_code = G_RC_NOT_RATE_FREIGHT_TERM
4316 OR l_return_code = G_RC_NOT_RATE_MANIFESTING) THEN
4317 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
4318 raise g_finished_warning;
4319 END IF;
4320
4321 END IF;
4322
4323 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'done with validation, here is what we got...');
4324 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_tl_rating_flag='||l_tl_rating_flag);
4325
4326 print_delivery_tab();
4327 print_dleg_tab();
4328 print_trip_tab();
4329 print_dleg_trip_tab();
4330
4331 l_leg_count := g_dlv_leg_tab.COUNT;
4332 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'total '||l_leg_count||' delivery legs');
4333 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'looping through delivery legs...');
4334
4335 l_dleg_id := g_dlv_leg_tab.FIRST;
4336 --FOR l_dleg_id IN g_dlv_leg_tab.FIRST .. g_dlv_leg_tab.LAST
4337 --LOOP
4338 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'ldeg_id='||l_dleg_id);
4339 l_trip_id := g_dleg_trip_tab(l_dleg_id).trip_id;
4340 l_lane_id := g_trip_info_tab(l_trip_id).lane_id;
4341 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_trip_id='||l_trip_id);
4342 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_lane_id='||l_lane_id);
4343
4344 -- Need to delete existing freight cost records
4345 -- for this delivery leg
4346
4347 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'deleting existing freight cost records...');
4348
4349 FTE_TRIP_RATING_GRP.Delete_Main_Records(
4350 p_trip_id=>l_trip_id,
4351 p_init_prc_log=>'N',
4352 x_return_status => l_return_status ) ;
4353
4354 --fte_freight_pricing.delete_invalid_fc_recs (
4355 -- p_delivery_leg_id => l_dleg_id,
4356 -- x_return_status => l_return_status ) ;
4357
4358 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_return_status='||l_return_status);
4359
4360 IF (l_return_status = 'E')
4361 THEN
4362 RAISE FND_API.G_EXC_ERROR;
4363 ELSIF (l_return_status = 'U')
4364 THEN
4365 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4366 ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING )
4367 THEN
4368 x_return_status := l_return_status;
4369 END IF;
4370
4371 IF (l_lane_id is not null) THEN
4372 null;
4373 ELSE -- no lane on trip
4374
4375 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'no lane on trip, searching services...');
4376 Search_Services(
4377 --p_delivery_leg_id => l_dleg_id,
4378 p_trip_id=>l_trip_id,--MDC
4379 p_trip_msg_flag => l_tl_rating_flag,
4380 x_matched_services => l_matched_lanes,
4381 x_return_status => l_return_status);
4382
4383 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_return_status='||l_return_status);
4384
4385 IF (l_return_status = 'E')
4386 THEN
4387 RAISE FND_API.G_EXC_ERROR;
4388 ELSIF (l_return_status = 'U')
4389 THEN
4390 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4391 ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING )
4392 THEN
4393 x_return_status := l_return_status;
4394 END IF;
4395
4396 l_matched_lane_count := l_matched_lanes.COUNT;
4397 IF (l_matched_lane_count = 0) THEN -- no lane found
4398
4399 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'no services found.');
4400 RAISE FND_API.G_EXC_ERROR;
4401
4402 ELSE -- found lane
4403
4404 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'found following lanes...');
4405 print_matched_lane_tab(p_matched_lane_tab => l_matched_lanes);
4406
4407 l_all_lane_failed := true;
4408
4409 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'populating shipment...');
4410 /*
4411 populate_shipment(
4412 p_delivery_leg_id => l_dleg_id,
4413 x_return_status => l_return_status);
4414 */
4415 populate_shipment(
4416 p_trip_id => l_trip_id,
4417 x_return_status => l_return_status);
4418
4419
4420 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_return_status='||l_return_status);
4421
4422 IF (l_return_status = 'E')
4423 THEN
4424 RAISE FND_API.G_EXC_ERROR;
4425 ELSIF (l_return_status = 'U')
4426 THEN
4427 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4428 ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING )
4429 THEN
4430 x_return_status := l_return_status;
4431 END IF;
4432
4433 FOR i IN l_matched_lanes.FIRST..l_matched_lanes.LAST LOOP
4434
4435 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'rate shipment on lane '||l_matched_lanes(i).lane_id||'...');
4436
4437 FTE_FREIGHT_PRICING_UTIL.get_currency_code
4438 (
4439 p_trip_id => p_trip_id,
4440 p_carrier_id => l_matched_lanes(i).carrier_id,
4441 x_currency_code => l_currency_code,
4442 x_return_status => l_return_status
4443 );
4444
4445
4446 fte_freight_pricing.shipment_rating
4447 (
4448 p_lane_id => l_matched_lanes(i).lane_id,
4449 p_service_type => l_matched_lanes(i).service_level,
4450 p_mode_of_transport => l_matched_lanes(i).mode_of_transport,
4451 p_ship_date => g_ship_date,
4452 p_arrival_date => g_arrival_date,
4453 p_currency_code => l_currency_code,
4454 x_summary_lanesched_price => l_lane_rate,
4455 x_summary_lanesched_price_uom => l_lane_rate_uom,
4456 x_freight_cost_temp_price => l_lane_fct_price,
4457 x_freight_cost_temp_charge => l_lane_fct_charge,
4458 x_return_status => l_return_status,
4459 x_msg_count => l_msg_count,
4460 x_msg_data => l_msg_data
4461 );
4462
4463 IF (l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS)
4464 AND (l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING) THEN
4465
4466 -- shipment_rating failed
4467 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'shipment rating failed');
4468 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_lane_index='||i);
4469 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'lane_id='||l_matched_lanes(i).lane_id);
4470
4471 --FTE_FREIGHT_PRICING_UTIL.setmsg(
4472 -- p_api => l_module_name,
4473 -- p_exc => ' ',
4474 -- p_msg_name => 'FTE_PRC_RATE_TRP_LANE_FL',
4475 -- p_msg_type => 'E',
4476 -- p_trip_id => p_trip_id,
4477 -- p_lane_id => l_matched_lanes(i).lane_id);
4478
4479 ELSE -- shipment_rating success or warning
4480
4481 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'shipment_rating success');
4482 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_lane_index='||i);
4483 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'lane_id='||l_matched_lanes(i).lane_id);
4484 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_lane_rate='||l_lane_rate);
4485 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_lane_rate_uom='||l_lane_rate_uom);
4486
4487 IF (l_all_lane_failed) THEN
4488
4489 l_lowest_lane_index := i;
4490 l_lowest_lane_rate := l_lane_rate;
4491 l_lowest_lane_rate_uom := l_lane_rate_uom;
4492 l_lowest_lane_fct_price := l_lane_fct_price;
4493 l_lowest_lane_fct_charge := l_lane_fct_charge;
4494 l_all_lane_failed := false;
4495
4496 ELSE -- l_all_lane_failed = false
4497 --compare with current lowest cost lane;
4498
4499 IF (l_lowest_lane_rate_uom <> l_lane_rate_uom) THEN
4500 convert_amount(
4501 p_from_currency =>l_lane_rate_uom,
4502 p_from_amount =>l_lane_rate,
4503 p_to_currency =>l_lowest_lane_rate_uom,
4504 x_to_amount =>l_converted_amount,
4505 x_return_status => l_return_status);
4506
4507 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_return_status='||l_return_status);
4508
4509 IF (l_return_status = 'E')
4510 THEN
4511 RAISE FND_API.G_EXC_ERROR;
4512 ELSIF (l_return_status = 'U')
4513 THEN
4514 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4515 ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING )
4516 THEN
4517 x_return_status := l_return_status;
4518 END IF;
4519
4520 ELSE
4521 l_converted_amount := l_lane_rate;
4522 END IF;
4523 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_converted_amount='||l_converted_amount);
4524 IF (l_lowest_lane_rate > l_converted_amount) THEN
4525 l_lowest_lane_index := i;
4526 l_lowest_lane_rate := l_lane_rate;
4527 l_lowest_lane_rate_uom := l_lane_rate_uom;
4528 l_lowest_lane_fct_price := l_lane_fct_price;
4529 l_lowest_lane_fct_charge := l_lane_fct_charge;
4530 END IF;
4531
4532 END IF; -- l_all_lane_failed = false
4533
4534 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_lowest_lane_index='||l_lowest_lane_index);
4535 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_lowest_lane_id='||l_matched_lanes(l_lowest_lane_index).lane_id);
4536 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_lowest_lane_rate='||l_lowest_lane_rate);
4537 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_lowest_lane_rate_uom='||l_lowest_lane_rate_uom);
4538 END IF; -- shipment_rating success or warning
4539
4540 END LOOP; -- matched_lane loop
4541
4542 IF (l_all_lane_failed) THEN
4543
4544 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'no rates found.');
4545 RAISE FND_API.G_EXC_ERROR;
4546
4547 ELSE
4548
4549 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'updating trip with lane_id and shipmethod...');
4550 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'trip_id='||l_trip_id);
4551 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'lane_id='||l_matched_lanes(l_lowest_lane_index).lane_id);
4552 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'carrier_id='||l_matched_lanes(l_lowest_lane_index).carrier_id);
4553 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'ship_method_code='||l_matched_lanes(l_lowest_lane_index).ship_method_code);
4554 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'ship_method_name='||l_matched_lanes(l_lowest_lane_index).ship_method_name);
4555 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'service_level='||l_matched_lanes(l_lowest_lane_index).service_level);
4556 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'mode_of_transport='||l_matched_lanes(l_lowest_lane_index).mode_of_transport);
4557 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_lowest_lane_rate='||l_lowest_lane_rate);
4558 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_lowest_lane_rate_uom='||l_lowest_lane_rate_uom);
4559
4560
4561 IF(p_seq_tender_flag='N')
4562 THEN
4563
4564 -- update trip with lane_id, ship_method
4565 update_single_trip(
4566 p_trip_id => l_trip_id,
4567 p_lane_id => l_matched_lanes(l_lowest_lane_index).lane_id,
4568 p_carrier_id => l_matched_lanes(l_lowest_lane_index).carrier_id,
4569 p_ship_method_code => l_matched_lanes(l_lowest_lane_index).ship_method_code,
4570 p_ship_method_name => l_matched_lanes(l_lowest_lane_index).ship_method_name,
4571 p_service_level => l_matched_lanes(l_lowest_lane_index).service_level,
4572 p_mode_of_transport => l_matched_lanes(l_lowest_lane_index).mode_of_transport,
4573 p_vehicle_type_id => null,
4574 p_vehicle_item_id =>NULL,
4575 p_vehicle_org_id =>NULL,
4576 x_return_status => l_return_status,
4577 x_msg_count => l_msg_count,
4578 x_msg_data => l_msg_data);
4579
4580 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_return_status='||l_return_status);
4581
4582 IF (l_return_status = 'E')
4583 THEN
4584 RAISE FND_API.G_EXC_ERROR;
4585 ELSIF (l_return_status = 'U')
4586 THEN
4587 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4588 ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING )
4589 THEN
4590 x_return_status := l_return_status;
4591 END IF;
4592 ELSE
4593
4594 l_rank_rec.trip_id:=l_trip_id;
4595 l_rank_rec.lane_id:=l_matched_lanes(l_lowest_lane_index).lane_id;
4596 l_rank_rec.carrier_id:=l_matched_lanes(l_lowest_lane_index).carrier_id;
4597 l_rank_rec.service_level:=l_matched_lanes(l_lowest_lane_index).service_level;
4598 l_rank_rec.mode_of_transport:=l_matched_lanes(l_lowest_lane_index).mode_of_transport;
4599
4600 l_rank_rec.estimated_rate:=l_lowest_lane_rate;
4601 l_rank_rec.mode_of_transport:=l_lowest_lane_rate_uom;
4602
4603 l_rank_rec.estimated_transit_time:=l_matched_lanes(l_lowest_lane_index).transit_time;
4604 l_rank_rec.transit_time_uom:=l_matched_lanes(l_lowest_lane_index).transit_time_uom;
4605
4606
4607 Sequential_Tender(
4608 p_rank_rec=>l_rank_rec,
4609 p_vehicle_type=>NULL,
4610 x_return_status=>l_return_status);
4611
4612
4613 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_return_status='||l_return_status);
4614
4615 IF (l_return_status = 'E')
4616 THEN
4617 RAISE FND_API.G_EXC_ERROR;
4618 ELSIF (l_return_status = 'U')
4619 THEN
4620 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4621 ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING )
4622 THEN
4623 x_return_status := l_return_status;
4624 END IF;
4625
4626
4627 END IF;
4628
4629 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'move freight costs to main...');
4630 -- update wsh_freight_costs with l_lowest_rate
4631 fte_freight_pricing.Move_fc_temp_to_main (
4632 p_delivery_leg_id => l_dleg_id,
4633 p_freight_cost_temp_price => l_lowest_lane_fct_price,
4634 p_freight_cost_temp_charge => l_lowest_lane_fct_charge,
4635 x_return_status => l_return_status);
4636
4637 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_return_status='||l_return_status);
4638
4639 IF (l_return_status = 'E')
4640 THEN
4641 RAISE FND_API.G_EXC_ERROR;
4642 ELSIF (l_return_status = 'U')
4643 THEN
4644 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4645 ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING )
4646 THEN
4647 x_return_status := l_return_status;
4648 END IF;
4649
4650 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'Calling Trip_Select_Service_Init for trip:'||l_trip_id||'At:'||TO_CHAR(SYSDATE, 'MM-DD-YYYY HH24:MI:SS'));
4651
4652 FTE_WORKFLOW_UTIL.Trip_Select_Service_Init(
4653 p_trip_id =>l_trip_id,
4654 x_return_status =>l_return_status);
4655
4656 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'Trip_Select_Service_Init return_status:'||l_return_status||'At:'||TO_CHAR(SYSDATE, 'MM-DD-YYYY HH24:MI:SS'));
4657
4658
4659 END IF;
4660
4661 END IF; -- found lane
4662
4663 END IF; -- no lane on trip
4664
4665 --MDC making all the calles trip centric
4666 -- EXIT WHEN l_dleg_id = g_dlv_leg_tab.LAST;
4667 -- l_dleg_id := g_dlv_leg_tab.NEXT(l_dleg_id);
4668 -- END LOOP; -- dleg loop
4669
4670
4671 --
4672 IF l_debug_on THEN
4673 WSH_DEBUG_SV.pop(l_module_name);
4674 END IF;
4675 --
4676 --
4677 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'x_return_status='||x_return_status);
4678
4679 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
4680
4681 EXCEPTION
4682
4683
4684 WHEN g_finished_warning THEN
4685
4686 IF l_debug_on THEN
4687 WSH_DEBUG_SV.pop(l_module_name);
4688 END IF;
4689 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'x_return_status='||x_return_status);
4690 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
4691 --
4692 WHEN g_finished_success THEN
4693
4694 IF l_debug_on THEN
4695 WSH_DEBUG_SV.pop(l_module_name);
4696 END IF;
4697 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'x_return_status='||x_return_status);
4698 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
4699 --
4700 WHEN FND_API.G_EXC_ERROR THEN
4701 x_return_status := FND_API.G_RET_STS_ERROR;
4702 IF l_debug_on THEN
4703 WSH_DEBUG_SV.pop(l_module_name);
4704 END IF;
4705 FTE_FREIGHT_PRICING_UTIL.set_exception(l_module_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'FND_API.G_EXC_ERROR');
4706 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
4707 --
4708 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
4709 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
4710 IF l_debug_on THEN
4711 WSH_DEBUG_SV.pop(l_module_name);
4712 END IF;
4713 FTE_FREIGHT_PRICING_UTIL.set_exception(l_module_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'FND_API.G_EXC_UNEXPECTED_ERROR');
4714 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
4715 --
4716 WHEN OTHERS THEN
4717 WSH_UTIL_CORE.DEFAULT_HANDLER(G_PKG_NAME||'.'||l_api_name);
4718 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
4719 IF l_debug_on THEN
4720 WSH_DEBUG_SV.pop(l_module_name);
4721 END IF;
4722 FTE_FREIGHT_PRICING_UTIL.set_exception(l_api_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
4723 FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
4724 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
4725 END rate_trip2;
4726
4727 -- J+ Added new input parameters:
4728 -- p_carrier_id, p_mode_of_transport, p_service_level
4729 -- assumes that input ship method is validated by the caller and will be used to
4730 -- search the services if any of them is not null
4731 PROCEDURE Rate_Delivery (
4732 p_api_version IN NUMBER DEFAULT 1.0,
4733 p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE,
4734 p_delivery_id IN NUMBER DEFAULT NULL,
4735 p_trip_id IN NUMBER DEFAULT NULL,
4736 p_action IN VARCHAR2 DEFAULT 'RATE',
4737 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE,
4738 p_init_prc_log IN VARCHAR2 DEFAULT 'Y',
4739 p_carrier_id IN NUMBER DEFAULT NULL,
4740 p_mode_of_transport IN VARCHAR2 DEFAULT NULL,
4741 p_service_level IN VARCHAR2 DEFAULT NULL,
4742 p_seq_tender_flag IN VARCHAR2 DEFAULT 'N',
4743 x_return_status OUT NOCOPY VARCHAR2,
4744 x_msg_count OUT NOCOPY NUMBER,
4745 x_msg_data OUT NOCOPY VARCHAR2)
4746 IS
4747 --
4748 l_api_version CONSTANT NUMBER := 1.0;
4749 l_api_name CONSTANT VARCHAR2(30) := 'RATE_DELIVERY';
4750 l_log_level NUMBER := FTE_FREIGHT_PRICING_UTIL.G_LOG;
4751 l_return_status VARCHAR2(1);
4752 l_return_code NUMBER;
4753 l_return_status_1 VARCHAR2(1);
4754 --
4755 i NUMBER;
4756 j NUMBER;
4757 k NUMBER;
4758 l_dlv_rec WSH_NEW_DELIVERIES_PVT.Delivery_Rec_Type;
4759 l_leg_count NUMBER := 0;
4760 l_dlv_leg_list WSH_UTIL_CORE.id_tab_type;
4761 l_lane_ids WSH_UTIL_CORE.id_tab_type;
4762 l_trip_ids WSH_UTIL_CORE.id_tab_type;
4763 l_lane_ret_code NUMBER;
4764 l_delivery_leg_id NUMBER;
4765 l_delivery_id NUMBER;
4766 l_dleg_id NUMBER;
4767 l_trip_id NUMBER;
4768 l_lane_id NUMBER;
4769 l_leg_trip_det_rec trip_info_rec;
4770 l_matched_lanes lane_match_tab;
4771 l_lane_match_rec lane_match_rec;
4772 l_prc_in_rec FTE_FREIGHT_PRICING.FtePricingInRecType;
4773 l_dummy VARCHAR2(1);
4774 l_matched_lane_count NUMBER;
4775 --
4776 l_msg_count NUMBER;
4777 l_msg_data VARCHAR2(32767);
4778 --
4779 l_number_of_errors NUMBER;
4780 l_number_of_warnings NUMBER;
4781 l_commit VARCHAR2(100) := FND_API.G_FALSE;
4782 l_debug_on CONSTANT BOOLEAN := WSH_DEBUG_SV.is_debug_enabled;
4783 l_module_name CONSTANT VARCHAR2(100) := 'fte.plsql.' || G_PKG_NAME || '.' || 'RATE_DELIVERY';
4784
4785 l_lane_rate NUMBER;
4786 l_lane_rate_uom VARCHAR2(10);
4787 l_lane_fct_price fte_freight_pricing.Freight_Cost_Temp_Tab_Type;
4788 l_lane_fct_charge fte_freight_pricing.Freight_Cost_Temp_Tab_Type;
4789 l_lowest_lane_index NUMBER;
4790 l_lowest_lane_rate NUMBER;
4791 l_lowest_lane_rate_uom VARCHAR2(10);
4792 l_lowest_lane_fct_price fte_freight_pricing.Freight_Cost_Temp_Tab_Type;
4793 l_lowest_lane_fct_charge fte_freight_pricing.Freight_Cost_Temp_Tab_Type;
4794 l_all_lane_failed BOOLEAN;
4795 l_converted_amount NUMBER;
4796
4797 l_tl_rating_flag VARCHAR2(1);
4798 l_tl_lower BOOLEAN;
4799 l_vehicle_type NUMBER;
4800 l_tl_lane_rows dbms_utility.number_array;
4801 l_tl_lane_refs dbms_utility.number_array;
4802
4803
4804 l_lowest_tl_trip_index NUMBER;
4805 l_trip_charge_rec FTE_TL_CACHE.TL_trip_output_rec_type;
4806 l_stop_charge_tab FTE_TL_CACHE.TL_trip_stop_output_tab_type;
4807
4808 l_tl_lane_rate NUMBER;
4809 l_tl_lane_curr VARCHAR2(10);
4810 l_lowest_tl_lane_index NUMBER;
4811 l_rank_rec FTE_CARRIER_RANK_LIST_PVT.carrier_rank_list_rec;
4812
4813
4814 c_carr_srv_rec c_carrier_services%ROWTYPE;
4815 l_ship_method_code wsh_carrier_services.ship_method_code%type;
4816 l_ship_method_meaning wsh_carrier_services.ship_method_meaning%type;
4817 l_carrier_id NUMBER;
4818 l_mode_of_transport wsh_carrier_services.mode_of_transport%type;
4819 l_service_level wsh_carrier_services.service_level%type;
4820
4821 l_carrier_name hz_parties.party_name%type;
4822 l_mode_of_transport2 fnd_lookup_values_vl.meaning%type;
4823 l_service_level2 fnd_lookup_values_vl.meaning%type;
4824
4825 l_del_has_trip VARCHAR2(1) := 'N';
4826 l_del_org_manifest_enabled VARCHAR2(1) := 'N';
4827 l_carrier_manifest_enabled VARCHAR2(1) := 'N';
4828
4829 l_del_out_tab WSH_DELIVERIES_GRP.Del_Out_Tbl_Type;
4830 l_del_in_rec WSH_DELIVERIES_GRP.Del_In_Rec_Type;
4831 l_seq_tender_flag VARCHAR2(1);
4832 l_action_params FTE_TRIP_RATING_GRP.action_param_rec;
4833 l_temp_trips_tab WSH_UTIL_CORE.id_tab_type;
4834 l_currency_code VARCHAR2(30);
4835
4836 --
4837 BEGIN
4838 --
4839 --
4840 --
4841 SAVEPOINT RATE_DELIVERY;
4842 --
4843 -- Standard call to check for call compatibility.
4844 IF NOT FND_API.Compatible_API_Call
4845 (
4846 l_api_version,
4847 p_api_version,
4848 l_api_name,
4849 G_PKG_NAME
4850 )
4851 THEN
4852 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4853 END IF;
4854
4855 -- Initialize message list if p_init_msg_list is set to TRUE.
4856 IF FND_API.to_Boolean( p_init_msg_list )
4857 THEN
4858 FND_MSG_PUB.initialize;
4859 END IF;
4860
4861 x_return_status := FND_API.G_RET_STS_SUCCESS;
4862 --
4863 IF l_debug_on THEN
4864 wsh_debug_sv.push(l_module_name);
4865 END IF;
4866 --
4867 IF l_debug_on THEN
4868 WSH_DEBUG_SV.logmsg(
4869 l_module_name,
4870 'p_delivery_id '|| p_delivery_id,
4871 WSH_DEBUG_SV.C_PROC_LEVEL);
4872 END IF;
4873 IF l_debug_on THEN
4874 WSH_DEBUG_SV.logmsg(
4875 l_module_name,
4876 'p_trip_id '|| p_trip_id,
4877 WSH_DEBUG_SV.C_PROC_LEVEL);
4878 END IF;
4879 IF l_debug_on THEN
4880 WSH_DEBUG_SV.logmsg(
4881 l_module_name,
4882 'p_action '|| p_action,
4883 WSH_DEBUG_SV.C_PROC_LEVEL);
4884 END IF;
4885 IF l_debug_on THEN
4886 WSH_DEBUG_SV.logmsg(
4887 l_module_name,
4888 'p_commit '|| p_commit,
4889 WSH_DEBUG_SV.C_PROC_LEVEL);
4890 END IF;
4891
4892 IF p_init_prc_log = 'Y' THEN
4893 FTE_FREIGHT_PRICING_UTIL.initialize_logging( x_return_status => l_return_status );
4894
4895 IF (l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) and
4896 (l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING) THEN
4897 l_return_status := FND_API.G_RET_STS_ERROR;
4898 api_post_call
4899 (
4900 p_api_name => 'FTE_FREIGHT_PRICING_UTIL.initialize_logging',
4901 p_api_return_status => l_return_status,
4902 p_message_name => 'FTE_PRC_INIT_LOG_FL',
4903 p_trip_id => null,
4904 p_delivery_id => null,
4905 p_delivery_leg_id => null,
4906 x_number_of_errors => l_number_of_errors,
4907 x_number_of_warnings => l_number_of_warnings,
4908 x_return_status => l_return_status_1
4909 );
4910 --
4911 IF (l_return_status_1 = 'E')
4912 THEN
4913 RAISE FND_API.G_EXC_ERROR;
4914 ELSIF (l_return_status_1 = 'U')
4915 THEN
4916 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4917 ELSIF (l_return_status_1 = WSH_UTIL_CORE.G_RET_STS_WARNING )
4918 THEN
4919 x_return_status := l_return_status_1;
4920 END IF;
4921
4922 ELSE
4923 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'Initialize Logging successful ');
4924 END IF;
4925 END IF;
4926
4927 FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
4928 FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,l_api_name,'start');
4929
4930 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_delivery_id='||p_delivery_id);
4931 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_trip_id='||p_trip_id);
4932 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_action='||p_action);
4933 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_commit='||p_commit);
4934 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_carrier_id='||p_carrier_id);
4935 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_mode_of_transport='||p_mode_of_transport);
4936 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_service_level='||p_service_level);
4937 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_seq_tender_flag='||p_seq_tender_flag);
4938
4939
4940 -- If delivery id is passed in and it has multiple legs set flag to N
4941 l_seq_tender_flag:=p_seq_tender_flag;
4942
4943 --R12 Hiding Project
4944 l_seq_tender_flag:='N';
4945
4946
4947 -- supported actions
4948 IF (p_action <> 'RATE') THEN
4949 -- raise g_invalid_action;
4950 --
4951 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'invalid action');
4952
4953 l_return_status := FND_API.G_RET_STS_ERROR;
4954 api_post_call
4955 (
4956 p_api_name => l_module_name,
4957 p_api_return_status => l_return_status,
4958 p_message_name => 'FTE_PRC_DLV_INV_ACT',
4959 p_trip_id => p_trip_id,
4960 p_delivery_id => p_delivery_id,
4961 p_delivery_leg_id => null,
4962 x_number_of_errors => l_number_of_errors,
4963 x_number_of_warnings => l_number_of_warnings,
4964 x_return_status => l_return_status_1
4965 );
4966 --
4967 IF (l_return_status_1 = 'E')
4968 THEN
4969 RAISE FND_API.G_EXC_ERROR;
4970 ELSIF (l_return_status_1 = 'U')
4971 THEN
4972 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
4973 ELSIF (l_return_status_1 = WSH_UTIL_CORE.G_RET_STS_WARNING )
4974 THEN
4975 x_return_status := l_return_status_1;
4976 END IF;
4977 --
4978 END IF;
4979 --
4980 IF (p_delivery_id is null and p_trip_id is null) THEN
4981 -- invalid parameters;
4982 --
4983 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'invalid input parameters');
4984
4985 l_return_status := FND_API.G_RET_STS_ERROR;
4986 api_post_call
4987 (
4988 p_api_name => 'FTE_FREIGHT_RATING_DLVY_GRP.RATE_DELIVERY',
4989 p_api_return_status => l_return_status,
4990 p_message_name => 'FTE_PRC_INV_PARM',
4991 p_trip_id => null,
4992 p_delivery_id => null,
4993 p_delivery_leg_id => null,
4994 x_number_of_errors => l_number_of_errors,
4995 x_number_of_warnings => l_number_of_warnings,
4996 x_return_status => l_return_status_1
4997 );
4998 --
4999 IF (l_return_status_1 = 'E')
5000 THEN
5001 RAISE FND_API.G_EXC_ERROR;
5002 ELSIF (l_return_status_1 = 'U')
5003 THEN
5004 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5005 ELSIF (l_return_status_1 = WSH_UTIL_CORE.G_RET_STS_WARNING )
5006 THEN
5007 x_return_status := l_return_status_1;
5008 END IF;
5009 --
5010 END IF;
5011 --
5012 --
5013 g_dlv_tab.DELETE;
5014 g_dlv_leg_tab.DELETE;
5015 g_trip_info_tab.DELETE;
5016 g_dleg_trip_tab.DELETE;
5017 l_matched_lanes.DELETE;
5018
5019 IF (p_delivery_id is not null) THEN
5020
5021 l_tl_rating_flag := 'N';
5022
5023 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'validating delivery...');
5024
5025 validate_delivery(
5026 p_delivery_id => p_delivery_id,
5027 x_return_code => l_return_code);
5028
5029 IF l_return_code = G_RC_ERROR THEN
5030 RAISE FND_API.G_EXC_ERROR;
5031 ELSIF l_return_code = G_RC_REPRICE_NOT_REQUIRED THEN
5032 raise g_finished_success;
5033 ELSIF (l_return_code = G_RC_NOT_RATE_FREIGHT_TERM
5034 OR l_return_code = G_RC_NOT_RATE_MANIFESTING) THEN
5035 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
5036 raise g_finished_warning;
5037 END IF;
5038
5039 OPEN c_get_del_manifest_enabled(p_delivery_id);
5040 FETCH c_get_del_manifest_enabled INTO l_del_org_manifest_enabled;
5041 CLOSE c_get_del_manifest_enabled;
5042
5043 l_leg_count := g_dlv_leg_tab.COUNT;
5044 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'total '||l_leg_count||' delivery legs');
5045
5046 IF (l_leg_count > 1)
5047 THEN
5048 --For multileg deliveries dont perform seq tendering
5049 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'Multileg delivery setting seq_tender flag to N');
5050 l_seq_tender_flag:='N';
5051 END IF;
5052
5053 IF (l_leg_count <= 0) THEN
5054
5055 -- auto-create trip for delivery
5056 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'auto-creating trip for delivery...');
5057 create_trip(
5058 p_delivery_id => p_delivery_id,
5059 x_trip_id => l_trip_id,
5060 x_delivery_leg_id => l_delivery_leg_id,
5061 x_return_status => l_return_status);
5062
5063 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_return_status='||l_return_status);
5064
5065 IF (l_return_status = 'E')
5066 THEN
5067 RAISE FND_API.G_EXC_ERROR;
5068 ELSIF (l_return_status = 'U')
5069 THEN
5070 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5071 ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING )
5072 THEN
5073 x_return_status := l_return_status;
5074 END IF;
5075
5076 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'trip_id='||l_trip_id);
5077 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'delivery_leg_id='||l_delivery_leg_id);
5078
5079 ELSE
5080 l_del_has_trip := 'Y';
5081 END IF; -- l_leg_count <= 0
5082
5083 ELSE -- p_trip_id is not null
5084
5085 rate_trip2(
5086 p_trip_id => p_trip_id,
5087 p_seq_tender_flag =>l_seq_tender_flag,
5088 x_return_status => l_return_status);
5089
5090 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_return_status='||l_return_status);
5091
5092 IF (l_return_status = 'E')
5093 THEN
5094 RAISE FND_API.G_EXC_ERROR;
5095 ELSIF (l_return_status = 'U')
5096 THEN
5097 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5098 ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING )
5099 THEN
5100 x_return_status := l_return_status;
5101 raise g_finished_warning;
5102 END IF;
5103
5104 raise g_finished_success;
5105
5106 END IF;
5107
5108 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'done with validation, here is what we got...');
5109 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_tl_rating_flag='||l_tl_rating_flag);
5110 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_del_has_trip='||l_del_has_trip);
5111 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_del_org_manifest_enabled='||l_del_org_manifest_enabled);
5112
5113 print_delivery_tab();
5114 print_dleg_tab();
5115 print_trip_tab();
5116 print_dleg_trip_tab();
5117
5118 l_leg_count := g_dlv_leg_tab.COUNT;
5119 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'total '||l_leg_count||' delivery legs');
5120 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'looping through delivery legs...');
5121
5122
5123 /* l_dleg_id := g_dlv_leg_tab.FIRST;
5124 LOOP
5125 IF (g_dlv_leg_tab(l_dleg_id).parent_delivery_leg_id IS NULL)
5126 THEN
5127 IF l_trips_to_rate_ids.COUNT > 0 THEN
5128 FOR i IN l_trips_to_rate_ids.FIRST..l_trips_to_rate_ids.LAST
5129 LOOP
5130 IF g_dleg_trip_tab(l_dleg_id).trip_id <> l_trips_to_rate_ids(i) THEN
5131 l_trips_to_rate_ids.EXTEND;
5132 l_trips_to_rate_ids(l_trips_to_rate_ids.LAST) := g_dleg_trip_tab(l_dleg_id).trip_id;
5133 END IF;
5134 END LOOP;
5135 EXIT WHEN l_dleg_id = g_dlv_leg_tab.LAST;
5136 l_dleg_id := g_dlv_leg_tab.NEXT(l_dleg_id);
5137 END LOOP; -- dleg loop
5138 */
5139 l_dleg_id := g_dlv_leg_tab.FIRST;
5140
5141 -- Modified for R12 to do Trip level rating to support multileg deliveries
5142 --Get the Trip for Delivery Leg and rate the trip
5143 --FOR l_dleg_id IN g_dlv_leg_tab.FIRST .. g_dlv_leg_tab.LAST
5144
5145 LOOP
5146 IF (g_dlv_leg_tab(l_dleg_id).parent_delivery_leg_id IS NULL)
5147 THEN
5148
5149 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'ldeg_id='||l_dleg_id);
5150 l_trip_id := g_dleg_trip_tab(l_dleg_id).trip_id;
5151 l_lane_id := g_trip_info_tab(l_trip_id).lane_id;
5152 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_trip_id='||l_trip_id);
5153 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_lane_id='||l_lane_id);
5154
5155 -- Need to delete existing freight cost records
5156 -- for this delivery leg
5157
5158 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'deleting existing freight cost records...');
5159
5160
5161 FTE_TRIP_RATING_GRP.Delete_Main_Records(
5162 p_trip_id=>l_trip_id,
5163 p_init_prc_log=>'N',
5164 x_return_status => l_return_status ) ;
5165
5166
5167 --fte_freight_pricing.delete_invalid_fc_recs (
5168 -- p_delivery_leg_id => l_dleg_id,
5169 -- x_return_status => l_return_status ) ;
5170
5171 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_return_status='||l_return_status);
5172
5173 IF (l_return_status = 'E')
5174 THEN
5175 RAISE FND_API.G_EXC_ERROR;
5176 ELSIF (l_return_status = 'U')
5177 THEN
5178 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5179 ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING )
5180 THEN
5181 x_return_status := l_return_status;
5182 END IF;
5183
5184
5185
5186 IF (l_lane_id is not null) THEN
5187 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'trip '||l_trip_id||' already has a lane '||l_lane_id);
5188 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'rate as in Pack I');
5189
5190 -- lock delivery leg
5191 SELECT reprice_required INTO l_dummy
5192 FROM wsh_delivery_legs
5193 WHERE delivery_leg_id = l_dleg_id
5194 FOR UPDATE OF reprice_required NOWAIT;
5195
5196 -- Always set the reprice flag for now
5197 UPDATE wsh_delivery_legs
5198 SET reprice_required = 'Y'
5199 WHERE delivery_leg_id = l_dleg_id;
5200
5201 l_prc_in_rec.api_version_number := 1.0;
5202 l_prc_in_rec.delivery_leg_id := l_dleg_id;
5203 --
5204 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'Calling FTE_FREIGHT_PRICING.shipment_price_consolidate...');
5205
5206 l_action_params.caller := 'FTE';
5207 l_action_params.event := 'RE-RATING';
5208 l_action_params.action := 'RATE';
5209 l_temp_trips_tab(1) := l_trip_id;
5210 l_action_params.trip_id_list := l_temp_trips_tab;
5211
5212 FTE_TRIP_RATING_GRP.Rate_Trip (
5213 p_api_version => 1.0,
5214 p_init_msg_list => FND_API.G_FALSE,
5215 p_action_params => l_action_params,
5216 p_commit => FND_API.G_FALSE,
5217 p_init_prc_log => 'N',
5218 x_return_status => l_return_status,
5219 x_msg_count => l_msg_count,
5220 x_msg_data => l_msg_data);
5221
5222 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_return_status='||l_return_status);
5223
5224 IF (l_return_status = 'E')
5225 THEN
5226 RAISE FND_API.G_EXC_ERROR;
5227 ELSIF (l_return_status = 'U')
5228 THEN
5229 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5230 ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING )
5231 THEN
5232 x_return_status := l_return_status;
5233 END IF;
5234
5235 --raise g_finished_success;
5236
5237 ELSE -- no lane on trip
5238
5239 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'no lane on trip, searching services...');
5240
5241 Search_Services
5242 (
5243 p_trip_id => l_trip_id,
5244 p_trip_msg_flag => l_tl_rating_flag,
5245 p_carrier_id => p_carrier_id,
5246 p_mode_of_transport => p_mode_of_transport,
5247 p_service_level => p_service_level,
5248 x_matched_services => l_matched_lanes,
5249 x_return_status => l_return_status
5250 );
5251
5252 /*Search_Services(
5253 p_delivery_leg_id => l_dleg_id,
5254 p_trip_msg_flag => l_tl_rating_flag,
5255 p_carrier_id => p_carrier_id,
5256 p_mode_of_transport => p_mode_of_transport,
5257 p_service_level => p_service_level,
5258 x_matched_services => l_matched_lanes,
5259 x_return_status => l_return_status);*/
5260
5261 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_return_status='||l_return_status);
5262
5263 IF (l_return_status = 'E')
5264 THEN
5265 RAISE FND_API.G_EXC_ERROR;
5266 ELSIF (l_return_status = 'U')
5267 THEN
5268 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5269 ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING )
5270 THEN
5271 x_return_status := l_return_status;
5272 END IF;
5273
5274 l_matched_lane_count := l_matched_lanes.COUNT;
5275 IF (l_matched_lane_count = 0) THEN -- no lane found
5276
5277 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'no services found.');
5278 RAISE FND_API.G_EXC_ERROR;
5279 ELSE -- found lane
5280
5281 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'found following lanes...');
5282 print_matched_lane_tab(p_matched_lane_tab => l_matched_lanes);
5283
5284 l_all_lane_failed := true;
5285
5286 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'populating shipment...');
5287
5288 populate_shipment(
5289 p_trip_id => l_trip_id,
5290 x_return_status => l_return_status);
5291
5292 /*populate_shipment(
5293 p_delivery_leg_id => l_dleg_id,
5294 x_return_status => l_return_status);*/
5295
5296 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_return_status='||l_return_status);
5297
5298 IF (l_return_status = 'E')
5299 THEN
5300 RAISE FND_API.G_EXC_ERROR;
5301 ELSIF (l_return_status = 'U')
5302 THEN
5303 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5304 ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING )
5305 THEN
5306 x_return_status := l_return_status;
5307 END IF;
5308
5309 j:=1;
5310 l_tl_lane_rows.delete;
5311 l_tl_lane_refs.delete;
5312 FOR i IN l_matched_lanes.FIRST..l_matched_lanes.LAST
5313 LOOP
5314
5315
5316 IF ((l_matched_lanes(i).mode_of_transport IS NOT NULL) AND (l_matched_lanes(i).mode_of_transport='TRUCK'))
5317 THEN
5318
5319 l_tl_lane_rows(j):=l_matched_lanes(i).lane_id;
5320 l_tl_lane_refs(j):=i;
5321 j:=j+1;
5322
5323 ELSE
5324
5325
5326
5327
5328 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'rate shipment on lane '||l_matched_lanes(i).lane_id||'...');
5329
5330 FTE_FREIGHT_PRICING_UTIL.get_currency_code
5331 (
5332 p_trip_id => l_trip_id,
5333 p_carrier_id => l_matched_lanes(i).carrier_id,
5334 x_currency_code => l_currency_code,
5335 x_return_status => l_return_status
5336 );
5337
5338
5339 fte_freight_pricing.shipment_rating (
5340 p_lane_id => l_matched_lanes(i).lane_id,
5341 p_service_type => l_matched_lanes(i).service_level,
5342 p_mode_of_transport => l_matched_lanes(i).mode_of_transport,
5343 p_ship_date => g_ship_date,
5344 p_arrival_date => g_arrival_date,
5345 p_currency_code => l_currency_code,
5346 x_summary_lanesched_price => l_lane_rate,
5347 x_summary_lanesched_price_uom => l_lane_rate_uom,
5348 x_freight_cost_temp_price => l_lane_fct_price,
5349 x_freight_cost_temp_charge => l_lane_fct_charge,
5350 x_return_status => l_return_status,
5351 x_msg_count => l_msg_count,
5352 x_msg_data => l_msg_data );
5353
5354 IF (l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS)
5355 AND (l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING) THEN
5356
5357 -- shipment_rating failed
5358 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'shipment rating failed');
5359 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_lane_index='||i);
5360 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'lane_id='||l_matched_lanes(i).lane_id);
5361
5362 --FTE_FREIGHT_PRICING_UTIL.setmsg(
5363 -- p_api => l_module_name,
5364 -- p_exc => ' ',
5365 -- p_msg_name => 'FTE_PRC_RATE_DEL_LANE_FL',
5366 -- p_msg_type => 'E',
5367 -- p_delivery_id => p_delivery_id,
5368 -- p_lane_id => l_matched_lanes(i).lane_id);
5369
5370 ELSE -- shipment_rating success or warning
5371
5372 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'shipment_rating success');
5373 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_lane_index='||i);
5374 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'lane_id='||l_matched_lanes(i).lane_id);
5375 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_lane_rate='||l_lane_rate);
5376 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_lane_rate_uom='||l_lane_rate_uom);
5377
5378 IF (l_all_lane_failed) THEN
5379
5380 l_lowest_lane_index := i;
5381 l_lowest_lane_rate := l_lane_rate;
5382 l_lowest_lane_rate_uom := l_lane_rate_uom;
5383 l_lowest_lane_fct_price := l_lane_fct_price;
5384 l_lowest_lane_fct_charge := l_lane_fct_charge;
5385 l_all_lane_failed := false;
5386
5387 ELSE -- l_all_lane_failed = false
5388 --compare with current lowest cost lane;
5389
5390 IF (l_lowest_lane_rate_uom <> l_lane_rate_uom) THEN
5391 convert_amount(
5392 p_from_currency =>l_lane_rate_uom,
5393 p_from_amount =>l_lane_rate,
5394 p_to_currency =>l_lowest_lane_rate_uom,
5395 x_to_amount =>l_converted_amount,
5396 x_return_status => l_return_status);
5397
5398 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_return_status='||l_return_status);
5399
5400 IF (l_return_status = 'E')
5401 THEN
5402 RAISE FND_API.G_EXC_ERROR;
5403 ELSIF (l_return_status = 'U')
5404 THEN
5405 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5406 ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING )
5407 THEN
5408 x_return_status := l_return_status;
5409 END IF;
5410
5411 ELSE
5412 l_converted_amount := l_lane_rate;
5413 END IF;
5414 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_converted_amount='||l_converted_amount);
5415 IF (l_lowest_lane_rate > l_converted_amount) THEN
5416 l_lowest_lane_index := i;
5417 l_lowest_lane_rate := l_lane_rate;
5418 l_lowest_lane_rate_uom := l_lane_rate_uom;
5419 l_lowest_lane_fct_price := l_lane_fct_price;
5420 l_lowest_lane_fct_charge := l_lane_fct_charge;
5421 END IF;
5422
5423 END IF; -- l_all_lane_failed = false
5424
5425 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_lowest_lane_index='||l_lowest_lane_index);
5426 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_lowest_lane_id='||l_matched_lanes(l_lowest_lane_index).lane_id);
5427 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_lowest_lane_rate='||l_lowest_lane_rate);
5428 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_lowest_lane_rate_uom='||l_lowest_lane_rate_uom);
5429 END IF; -- shipment_rating success or warning
5430
5431 END IF; -- mode <> TRUCK
5432
5433 END LOOP; -- matched_lane loop
5434
5435 l_vehicle_type:=NULL;
5436 l_stop_charge_tab.delete;
5437 l_lowest_tl_lane_index:=NULL;
5438
5439 IF (l_tl_lane_rows.COUNT > 0)
5440 THEN
5441
5442 FTE_TL_RATING.BEGIN_LCSS (
5443 p_trip_id=> l_trip_id,
5444 p_lane_rows => l_tl_lane_rows,
5445 x_trip_index=> l_lowest_tl_trip_index,
5446 x_trip_charges_rec=>l_trip_charge_rec,
5447 x_stop_charges_tab=> l_stop_charge_tab,
5448 x_total_cost=>l_tl_lane_rate,
5449 x_currency=>l_tl_lane_curr,
5450 x_vehicle_type=>l_vehicle_type,
5451 x_lane_ref=>l_lowest_tl_lane_index,
5452 x_return_status => l_return_status);
5453
5454 IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
5455 THEN
5456 IF l_return_status = WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR
5457 THEN
5458
5459 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'TL LCSS failed');
5460
5461 l_lowest_tl_lane_index:=NULL;
5462
5463 --raise FTE_FREIGHT_PRICING_UTIL.g_tl_veh_for_lane_sched_fail;
5464 END IF;
5465 END IF;
5466
5467
5468
5469 END IF;
5470
5471 IF (l_all_lane_failed AND l_lowest_tl_lane_index IS NULL) THEN
5472
5473 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'no rates found.');
5474 RAISE FND_API.G_EXC_ERROR;
5475 ELSE
5476
5477 IF((l_lowest_tl_lane_index IS NOT NULL) AND (l_all_lane_failed))
5478 THEN
5479 l_tl_lower:=TRUE;
5480
5481 ELSIF((l_lowest_tl_lane_index IS NULL) AND NOT(l_all_lane_failed))
5482 THEN
5483 l_tl_lower:=FALSE;
5484 ELSE
5485
5486 IF (l_lowest_lane_rate_uom <> l_tl_lane_curr)
5487 THEN
5488 convert_amount(
5489 p_from_currency =>l_tl_lane_curr,
5490 p_from_amount =>l_tl_lane_rate,
5491 p_to_currency =>l_lowest_lane_rate_uom,
5492 x_to_amount =>l_converted_amount,
5493 x_return_status => l_return_status);
5494
5495 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_return_status='||l_return_status);
5496
5497 IF (l_return_status = 'E')
5498 THEN
5499 RAISE FND_API.G_EXC_ERROR;
5500 ELSIF (l_return_status = 'U')
5501 THEN
5502 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5503 ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING )
5504 THEN
5505 x_return_status := l_return_status;
5506 END IF;
5507 ELSE
5508
5509 l_converted_amount:=l_tl_lane_rate;
5510 END IF;
5511
5512 IF (l_lowest_lane_rate < l_converted_amount)
5513 THEN
5514
5515 l_tl_lower:=FALSE;
5516 ELSE
5517 l_tl_lower:=TRUE;
5518 END IF;
5519
5520 END IF;
5521 IF (l_tl_lower)
5522 THEN
5523 l_lowest_lane_index:=l_tl_lane_refs(l_lowest_tl_lane_index);
5524 l_lowest_lane_rate_uom:=l_tl_lane_curr;
5525 l_lowest_lane_rate:=l_tl_lane_rate;
5526 ELSE
5527 --For non-TL rate clear out TL vehicle type
5528 l_vehicle_type:=NULL;
5529
5530 END IF;
5531
5532 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'carrier_id='||l_matched_lanes(l_lowest_lane_index).carrier_id);
5533
5534 OPEN c_get_carrier_manifest_enabled(l_matched_lanes(l_lowest_lane_index).carrier_id);
5535 FETCH c_get_carrier_manifest_enabled INTO l_carrier_manifest_enabled;
5536 CLOSE c_get_carrier_manifest_enabled;
5537
5538 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_del_has_trip='||l_del_has_trip);
5539 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_del_org_manifest_enabled='||l_del_org_manifest_enabled);
5540 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_carrier_manifest_enabled='||l_carrier_manifest_enabled);
5541
5542 IF p_delivery_id is not null AND l_del_has_trip = 'N' AND l_del_org_manifest_enabled = 'Y'
5543 AND l_carrier_manifest_enabled = 'Y' THEN
5544
5545 -- enhancement 3036126
5546 ROLLBACK TO RATE_DELIVERY;
5547 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
5548
5549 OPEN c_get_carrier_name(l_matched_lanes(l_lowest_lane_index).carrier_id);
5550 FETCH c_get_carrier_name INTO l_carrier_name;
5551 CLOSE c_get_carrier_name;
5552
5553 OPEN c_get_mode_of_transport(l_matched_lanes(l_lowest_lane_index).mode_of_transport);
5554 FETCH c_get_mode_of_transport INTO l_mode_of_transport2;
5555 CLOSE c_get_mode_of_transport;
5556
5557 OPEN c_get_service_level(l_matched_lanes(l_lowest_lane_index).service_level);
5558 FETCH c_get_service_level INTO l_service_level2;
5559 CLOSE c_get_service_level;
5560
5561 FND_MESSAGE.SET_NAME('FTE','FTE_PRC_LCSS_MANIFEST');
5562 FND_MESSAGE.SET_TOKEN('CARRIER_NAME',l_carrier_name);
5563 FND_MESSAGE.SET_TOKEN('MODE_OF_TRANSPORT',l_mode_of_transport2);
5564 FND_MESSAGE.SET_TOKEN('SERVICE_LEVEL',l_service_level2);
5565 FND_MSG_PUB.ADD;
5566
5567 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'least cost service is from manifesting enabled carrier and del org is manifesting enabled, do not save trip or rate.');
5568
5569 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'updating shipmethod on delivery...');
5570
5571 g_dlv_tab(p_delivery_id).CARRIER_ID := l_matched_lanes(l_lowest_lane_index).carrier_id;
5572 g_dlv_tab(p_delivery_id).SHIP_METHOD_CODE := l_matched_lanes(l_lowest_lane_index).ship_method_code;
5573 g_dlv_tab(p_delivery_id).SERVICE_LEVEL := l_matched_lanes(l_lowest_lane_index).service_level;
5574 g_dlv_tab(p_delivery_id).MODE_OF_TRANSPORT := l_matched_lanes(l_lowest_lane_index).mode_of_transport;
5575
5576 l_del_in_rec.caller := 'FTE';
5577 l_del_in_rec.phase := 1;
5578 l_del_in_rec.action_code := 'UPDATE';
5579
5580 WSH_INTERFACE_GRP.Create_Update_Delivery
5581 ( p_api_version_number =>1.0,
5582 p_init_msg_list =>FND_API.G_FALSE,
5583 p_commit =>FND_API.G_FALSE,
5584 p_in_rec =>l_del_in_rec,
5585 p_rec_attr_tab => g_dlv_tab,
5586 x_del_out_rec_tab => l_del_out_tab,
5587 x_return_status => l_return_status,
5588 x_msg_count => l_msg_count,
5589 x_msg_data => l_msg_data
5590 );
5591
5592 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_return_status='||l_return_status);
5593
5594 IF (l_return_status = 'E')
5595 THEN
5596 RAISE FND_API.G_EXC_ERROR;
5597 ELSIF (l_return_status = 'U')
5598 THEN
5599 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5600 ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING )
5601 THEN
5602 x_return_status := l_return_status;
5603 END IF;
5604
5605 ELSE
5606
5607 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'updating trip with lane_id and shipmethod...');
5608 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'trip_id='||l_trip_id);
5609 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'lane_id='||l_matched_lanes(l_lowest_lane_index).lane_id);
5610 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'carrier_id='||l_matched_lanes(l_lowest_lane_index).carrier_id);
5611 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'ship_method_code='||l_matched_lanes(l_lowest_lane_index).ship_method_code);
5612 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'ship_method_name='||l_matched_lanes(l_lowest_lane_index).ship_method_name);
5613 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'service_level='||l_matched_lanes(l_lowest_lane_index).service_level);
5614 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'mode_of_transport='||l_matched_lanes(l_lowest_lane_index).mode_of_transport);
5615 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'vehicle_type='||l_vehicle_type);
5616 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'lowest rate='||l_lowest_lane_rate);
5617 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'lowest rate UOM='||l_lowest_lane_rate_uom);
5618 IF(l_seq_tender_flag='N')
5619 THEN
5620 -- update trip with lane_id, ship_method
5621 update_single_trip(
5622 p_trip_id => l_trip_id,
5623 p_lane_id => l_matched_lanes(l_lowest_lane_index).lane_id,
5624 p_carrier_id => l_matched_lanes(l_lowest_lane_index).carrier_id,
5625 p_ship_method_code => l_matched_lanes(l_lowest_lane_index).ship_method_code,
5626 p_ship_method_name => l_matched_lanes(l_lowest_lane_index).ship_method_name,
5627 p_service_level => l_matched_lanes(l_lowest_lane_index).service_level,
5628 p_mode_of_transport => l_matched_lanes(l_lowest_lane_index).mode_of_transport,
5629 p_vehicle_type_id => l_vehicle_type,
5630 p_vehicle_item_id =>NULL,
5631 p_vehicle_org_id =>NULL,
5632 x_return_status => l_return_status,
5633 x_msg_count => l_msg_count,
5634 x_msg_data => l_msg_data);
5635
5636 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_return_status='||l_return_status);
5637
5638 IF (l_return_status = 'E')
5639 THEN
5640 RAISE FND_API.G_EXC_ERROR;
5641 ELSIF (l_return_status = 'U')
5642 THEN
5643 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5644 ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING )
5645 THEN
5646 x_return_status := l_return_status;
5647 END IF;
5648 ELSE
5649 l_rank_rec.trip_id:=l_trip_id;
5650 l_rank_rec.lane_id:=l_matched_lanes(l_lowest_lane_index).lane_id;
5651 l_rank_rec.carrier_id:=l_matched_lanes(l_lowest_lane_index).carrier_id;
5652 l_rank_rec.service_level:=l_matched_lanes(l_lowest_lane_index).service_level;
5653 l_rank_rec.mode_of_transport:=l_matched_lanes(l_lowest_lane_index).mode_of_transport;
5654 l_rank_rec.estimated_rate:=l_lowest_lane_rate;
5655 l_rank_rec.currency_code:=l_lowest_lane_rate_uom;
5656
5657 l_rank_rec.estimated_transit_time:=l_matched_lanes(l_lowest_lane_index).transit_time;
5658 l_rank_rec.transit_time_uom:=l_matched_lanes(l_lowest_lane_index).transit_time_uom;
5659
5660
5661 Sequential_Tender(
5662 p_rank_rec=>l_rank_rec,
5663 p_vehicle_type=>l_vehicle_type,
5664 x_return_status=>l_return_status);
5665
5666 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_return_status='||l_return_status);
5667
5668 IF (l_return_status = 'E')
5669 THEN
5670 RAISE FND_API.G_EXC_ERROR;
5671 ELSIF (l_return_status = 'U')
5672 THEN
5673 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5674 ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING )
5675 THEN
5676 x_return_status := l_return_status;
5677 END IF;
5678 END IF;
5679
5680 IF(l_tl_lower)
5681 THEN
5682 FTE_TL_RATING.END_LCSS (
5683 p_trip_index=> l_lowest_tl_trip_index,
5684 p_trip_charges_rec=>l_trip_charge_rec,
5685 p_stop_charges_tab=> l_stop_charge_tab,
5686 x_return_status => l_return_status);
5687
5688 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_return_status='||l_return_status);
5689
5690 IF (l_return_status = 'E')
5691 THEN
5692 RAISE FND_API.G_EXC_ERROR;
5693 ELSIF (l_return_status = 'U')
5694 THEN
5695 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5696 ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING )
5697 THEN
5698 x_return_status := l_return_status;
5699 END IF;
5700 ELSE
5701 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'move freight costs to main...');
5702 -- update wsh_freight_costs with l_lowest_rate
5703 fte_freight_pricing.Move_fc_temp_to_main (
5704 p_delivery_leg_id => l_dleg_id,
5705 p_freight_cost_temp_price => l_lowest_lane_fct_price,
5706 p_freight_cost_temp_charge => l_lowest_lane_fct_charge,
5707 x_return_status => l_return_status);
5708
5709 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_return_status='||l_return_status);
5710
5711 IF (l_return_status = 'E') THEN
5712 RAISE FND_API.G_EXC_ERROR;
5713 ELSIF (l_return_status = 'U') THEN
5714 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5715 ELSIF (l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING ) THEN
5716 x_return_status := l_return_status;
5717 END IF;
5718 END IF;
5719
5720 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'Calling Trip_Select_Service_Init for trip:'||l_trip_id||'At:'||TO_CHAR(SYSDATE, 'MM-DD-YYYY HH24:MI:SS'));
5721
5722 FTE_WORKFLOW_UTIL.Trip_Select_Service_Init(
5723 p_trip_id =>l_trip_id,
5724 x_return_status =>l_return_status);
5725
5726 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'Trip_Select_Service_Init return_status:'||l_return_status||'At:'||TO_CHAR(SYSDATE, 'MM-DD-YYYY HH24:MI:SS'));
5727
5728 END IF;
5729
5730 END IF;
5731
5732 END IF; -- found lane
5733
5734 END IF; -- no lane on trip
5735 ELSE
5736
5737 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'Skipping rating dleg:'||l_dleg_id||' as it has a parent dleg');
5738 END IF;
5739
5740
5741 EXIT WHEN l_dleg_id = g_dlv_leg_tab.LAST;
5742 l_dleg_id := g_dlv_leg_tab.NEXT(l_dleg_id);
5743 END LOOP; -- dleg loop
5744
5745 --
5746 IF FND_API.To_Boolean( p_commit ) THEN
5747 COMMIT WORK;
5748 END IF;
5749
5750 FND_MSG_PUB.Count_And_Get
5751 (
5752 p_count => x_msg_count,
5753 p_data => x_msg_data,
5754 p_encoded => FND_API.G_FALSE
5755 );
5756 --
5757 IF l_debug_on THEN
5758 WSH_DEBUG_SV.pop(l_module_name);
5759 END IF;
5760 --
5761 --
5762 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'x_return_status='||x_return_status);
5763 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'x_msg_count='||x_msg_count);
5764 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'x_msg_data='||x_msg_data);
5765
5766 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
5767 IF p_init_prc_log = 'Y' THEN
5768 FTE_FREIGHT_PRICING_UTIL.close_logs;
5769 END IF;
5770
5771 EXCEPTION
5772 WHEN g_finished_warning THEN
5773
5774 IF FND_API.To_Boolean( p_commit ) THEN
5775 COMMIT WORK;
5776 END IF;
5777
5778 FND_MSG_PUB.Count_And_Get
5779 (
5780 p_count => x_msg_count,
5781 p_data => x_msg_data,
5782 p_encoded => FND_API.G_FALSE
5783 );
5784 --
5785 IF l_debug_on THEN
5786 WSH_DEBUG_SV.pop(l_module_name);
5787 END IF;
5788 --
5789 --
5790 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'x_return_status='||x_return_status);
5791 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'x_msg_count='||x_msg_count);
5792 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'x_msg_data='||x_msg_data);
5793
5794 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
5795 IF p_init_prc_log = 'Y' THEN
5796 FTE_FREIGHT_PRICING_UTIL.close_logs;
5797 END IF;
5798 --
5799 WHEN g_finished_success THEN
5800
5801 IF FND_API.To_Boolean( p_commit ) THEN
5802 COMMIT WORK;
5803 END IF;
5804
5805 FND_MSG_PUB.Count_And_Get
5806 (
5807 p_count => x_msg_count,
5808 p_data => x_msg_data,
5809 p_encoded => FND_API.G_FALSE
5810 );
5811 --
5812 IF l_debug_on THEN
5813 WSH_DEBUG_SV.pop(l_module_name);
5814 END IF;
5815 --
5816 --
5817 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'x_return_status='||x_return_status);
5818
5819 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
5820 IF p_init_prc_log = 'Y' THEN
5821 FTE_FREIGHT_PRICING_UTIL.close_logs;
5822 END IF;
5823 --
5824 WHEN FND_API.G_EXC_ERROR THEN
5825 ROLLBACK TO RATE_DELIVERY;
5826 x_return_status := FND_API.G_RET_STS_ERROR;
5827 FND_MSG_PUB.Count_And_Get
5828 (
5829 p_count => x_msg_count,
5830 p_data => x_msg_data,
5831 p_encoded => FND_API.G_FALSE
5832 );
5833 IF l_debug_on THEN
5834 WSH_DEBUG_SV.pop(l_module_name);
5835 END IF;
5836 FTE_FREIGHT_PRICING_UTIL.set_exception(l_module_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'FND_API.G_EXC_ERROR');
5837 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
5838 IF p_init_prc_log = 'Y' THEN
5839 FTE_FREIGHT_PRICING_UTIL.close_logs;
5840 END IF;
5841 --
5842 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
5843 ROLLBACK TO RATE_DELIVERY;
5844 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
5845 FND_MSG_PUB.Count_And_Get
5846 (
5847 p_count => x_msg_count,
5848 p_data => x_msg_data,
5849 p_encoded => FND_API.G_FALSE
5850 );
5851 IF l_debug_on THEN
5852 WSH_DEBUG_SV.pop(l_module_name);
5853 END IF;
5854 FTE_FREIGHT_PRICING_UTIL.set_exception(l_module_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'FND_API.G_EXC_UNEXPECTED_ERROR');
5855 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
5856 IF p_init_prc_log = 'Y' THEN
5857 FTE_FREIGHT_PRICING_UTIL.close_logs;
5858 END IF;
5859 --
5860 WHEN OTHERS THEN
5861 ROLLBACK TO RATE_DELIVERY;
5862 WSH_UTIL_CORE.DEFAULT_HANDLER(G_PKG_NAME||'.'||l_api_name);
5863 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
5864 FND_MSG_PUB.Count_And_Get
5865 (
5866 p_count => x_msg_count,
5867 p_data => x_msg_data,
5868 p_encoded => FND_API.G_FALSE
5869 );
5870 IF l_debug_on THEN
5871 WSH_DEBUG_SV.pop(l_module_name);
5872 END IF;
5873 FTE_FREIGHT_PRICING_UTIL.set_exception(l_api_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
5874 FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
5875 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
5876 IF p_init_prc_log = 'Y' THEN
5877 FTE_FREIGHT_PRICING_UTIL.close_logs;
5878 END IF;
5879 END Rate_Delivery;
5880 --
5881 PROCEDURE Rate_Delivery (
5882 p_api_version IN NUMBER DEFAULT 1.0,
5883 p_init_msg_list VARCHAR2 DEFAULT FND_API.G_FALSE,
5884 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE,
5885 p_in_param_rec IN rate_del_in_param_rec,
5886 x_out_param_rec OUT NOCOPY rate_del_out_param_rec,
5887 x_return_status OUT NOCOPY VARCHAR2,
5888 x_msg_count OUT NOCOPY NUMBER,
5889 x_msg_data OUT NOCOPY VARCHAR2)
5890 IS
5891 --
5892 l_api_version CONSTANT NUMBER := 1.0;
5893 l_api_name CONSTANT VARCHAR2(30) := 'RATE_DELIVERY';
5894 l_log_level NUMBER := FTE_FREIGHT_PRICING_UTIL.G_LOG;
5895 l_return_status VARCHAR2(1);
5896 l_return_status_1 VARCHAR2(1);
5897 l_debug_on CONSTANT BOOLEAN := WSH_DEBUG_SV.is_debug_enabled;
5898 l_module_name CONSTANT VARCHAR2(100) := 'fte.plsql.' || G_PKG_NAME || '.' || 'RATE_DELIVERY';
5899 --
5900 i NUMBER;
5901 l_msg_count NUMBER;
5902 l_msg_data VARCHAR2(32767);
5903 --
5904 l_number_of_errors NUMBER;
5905 l_number_of_warnings NUMBER;
5906 l_failed_delivery_id_list WSH_UTIL_CORE.id_tab_type;
5907 l_seq_tender_flag VARCHAR2(1);
5908 BEGIN
5909 --
5910 --fix bug3715247
5911 --SAVEPOINT RATE_MULTIPLE_DELIVERY;
5912 --
5913 -- Standard call to check for call compatibility.
5914 IF NOT FND_API.Compatible_API_Call
5915 (
5916 l_api_version,
5917 p_api_version,
5918 l_api_name,
5919 G_PKG_NAME
5920 )
5921 THEN
5922 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5923 END IF;
5924
5925 -- Initialize message list if p_init_msg_list is set to TRUE.
5926 IF FND_API.to_Boolean( p_init_msg_list )
5927 THEN
5928 FND_MSG_PUB.initialize;
5929 END IF;
5930
5931 x_return_status := FND_API.G_RET_STS_SUCCESS;
5932 FTE_FREIGHT_PRICING_UTIL.initialize_logging( x_return_status => l_return_status );
5933
5934 IF (l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) and
5935 (l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING) THEN
5936 l_return_status := FND_API.G_RET_STS_ERROR;
5937 api_post_call
5938 (
5939 p_api_name => l_module_name,
5940 p_api_return_status => l_return_status,
5941 p_message_name => 'FTE_PRC_INIT_LOG_FL',
5942 p_trip_id => null,
5943 p_delivery_id => null,
5944 p_delivery_leg_id => null,
5945 x_number_of_errors => l_number_of_errors,
5946 x_number_of_warnings => l_number_of_warnings,
5947 x_return_status => l_return_status_1
5948 );
5949 --
5950 IF (l_return_status_1 = 'E')
5951 THEN
5952 RAISE FND_API.G_EXC_ERROR;
5953 ELSIF (l_return_status_1 = 'U')
5954 THEN
5955 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
5956 ELSIF (l_return_status_1 = WSH_UTIL_CORE.G_RET_STS_WARNING )
5957 THEN
5958 x_return_status := l_return_status_1;
5959 END IF;
5960
5961 ELSE
5962 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'Initialize Logging successful ');
5963 END IF;
5964
5965 IF l_debug_on THEN
5966 wsh_debug_sv.push(l_module_name);
5967 END IF;
5968
5969 FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
5970 FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,l_api_name,'start');
5971
5972 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_in_param_rec.action='||p_in_param_rec.action);
5973 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_commit='||p_commit);
5974 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_in_param_rec.delivery_id_list.COUNT='||p_in_param_rec.delivery_id_list.COUNT);
5975 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_in_param_rec.seq_tender_flag='||p_in_param_rec.seq_tender_flag);
5976
5977 l_seq_tender_flag:=p_in_param_rec.seq_tender_flag;
5978
5979 --R12 Hiding Project
5980 l_seq_tender_flag:='N';
5981
5982 IF(l_seq_tender_flag IS NULL)
5983 THEN
5984 l_seq_tender_flag:='N';
5985 END IF;
5986 l_number_of_warnings := 0;
5987 IF (p_in_param_rec.delivery_id_list.COUNT > 0) THEN
5988 i := p_in_param_rec.delivery_id_list.FIRST;
5989 --FOR i in p_in_param_rec.delivery_id_list.FIRST..p_in_param_rec.delivery_id_list.LAST
5990 LOOP
5991
5992 Rate_Delivery(
5993 p_delivery_id => p_in_param_rec.delivery_id_list(i),
5994 p_init_prc_log => 'N',
5995 p_seq_tender_flag =>l_seq_tender_flag,
5996 x_return_status => l_return_status,
5997 x_msg_count => l_msg_count,
5998 x_msg_data => l_msg_data);
5999
6000 IF (l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) and
6001 (l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING) THEN
6002 l_failed_delivery_id_list(i) := p_in_param_rec.delivery_id_list(i);
6003
6004 FTE_FREIGHT_PRICING_UTIL.setmsg(
6005 p_api => l_api_name,
6006 p_exc => ' ',
6007 p_msg_name => 'FTE_PRC_RATE_DEL_FL',
6008 p_msg_type => 'E',
6009 p_delivery_id => p_in_param_rec.delivery_id_list(i));
6010
6011 ELSIF l_return_status = WSH_UTIL_CORE.G_RET_STS_WARNING THEN
6012 l_number_of_warnings := l_number_of_warnings + 1;
6013 END IF;
6014
6015 EXIT WHEN i = p_in_param_rec.delivery_id_list.LAST;
6016 i := p_in_param_rec.delivery_id_list.NEXT(i);
6017 END LOOP;-- p_delivery_id_list loop
6018 END IF; -- p_delivery_id_list.COUNT > 0
6019
6020 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_failed_delivery_id_list.COUNT='||l_failed_delivery_id_list.COUNT);
6021 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_number_of_warnings='||l_number_of_warnings);
6022
6023 IF l_failed_delivery_id_list.COUNT > 0 THEN
6024 x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
6025 x_out_param_rec.failed_delivery_id_list := l_failed_delivery_id_list;
6026
6027 FND_MESSAGE.SET_NAME('FTE','FTE_PRC_LOG_FILE_NAME');
6028 FND_MESSAGE.SET_TOKEN('LOGFILE',FTE_FREIGHT_PRICING_UTIL.get_log_file_name());
6029 FND_MSG_PUB.ADD;
6030
6031 FTE_FREIGHT_PRICING_UTIL.setmsg(
6032 p_api => l_api_name,
6033 p_exc => ' ',
6034 p_msg_name => 'FTE_PRC_RATE_MUL_DEL_FL',
6035 p_msg_type => 'E');
6036
6037 --fix bug3715247
6038 --ROLLBACK TO RATE_MULTIPLE_DELIVERY;
6039 ELSE
6040 IF l_number_of_warnings > 0 THEN
6041 x_return_status := WSH_UTIL_CORE.G_RET_STS_WARNING;
6042 ELSE
6043 x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
6044 END IF;
6045 IF FND_API.To_Boolean( p_commit ) THEN
6046 COMMIT WORK;
6047 END IF;
6048 END IF;
6049
6050 FND_MSG_PUB.Count_And_Get
6051 (
6052 p_count => x_msg_count,
6053 p_data => x_msg_data,
6054 p_encoded => FND_API.G_FALSE
6055 );
6056 --
6057 --
6058 IF l_debug_on THEN
6059 WSH_DEBUG_SV.pop(l_module_name);
6060 END IF;
6061 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'x_return_status='||x_return_status);
6062
6063 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
6064 FTE_FREIGHT_PRICING_UTIL.close_logs;
6065
6066 EXCEPTION
6067 WHEN FND_API.G_EXC_ERROR THEN
6068 FND_MESSAGE.SET_NAME('FTE','FTE_PRC_LOG_FILE_NAME');
6069 FND_MESSAGE.SET_TOKEN('LOGFILE',FTE_FREIGHT_PRICING_UTIL.get_log_file_name());
6070 FND_MSG_PUB.ADD;
6071
6072 FTE_FREIGHT_PRICING_UTIL.setmsg(
6073 p_api => l_api_name,
6074 p_exc => ' ',
6075 p_msg_name => 'FTE_PRC_RATE_MUL_DEL_FL',
6076 p_msg_type => 'E');
6077
6078 --fix bug3715247
6079 --ROLLBACK TO RATE_MULTIPLE_DELIVERY;
6080 x_return_status := FND_API.G_RET_STS_ERROR;
6081 FND_MSG_PUB.Count_And_Get
6082 (
6083 p_count => x_msg_count,
6084 p_data => x_msg_data,
6085 p_encoded => FND_API.G_FALSE
6086 );
6087 IF l_debug_on THEN
6088 WSH_DEBUG_SV.pop(l_module_name);
6089 END IF;
6090 FTE_FREIGHT_PRICING_UTIL.set_exception(l_module_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'FND_API.G_EXC_ERROR');
6091 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
6092 FTE_FREIGHT_PRICING_UTIL.close_logs;
6093 --
6094 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6095 FND_MESSAGE.SET_NAME('FTE','FTE_PRC_LOG_FILE_NAME');
6096 FND_MESSAGE.SET_TOKEN('LOGFILE',FTE_FREIGHT_PRICING_UTIL.get_log_file_name());
6097 FND_MSG_PUB.ADD;
6098
6099 FTE_FREIGHT_PRICING_UTIL.setmsg(
6100 p_api => l_api_name,
6101 p_exc => ' ',
6102 p_msg_name => 'FTE_PRC_RATE_MUL_DEL_FL',
6103 p_msg_type => 'E');
6104
6105 --fix bug3715247
6106 --ROLLBACK TO RATE_MULTIPLE_DELIVERY;
6107 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
6108 FND_MSG_PUB.Count_And_Get
6109 (
6110 p_count => x_msg_count,
6111 p_data => x_msg_data,
6112 p_encoded => FND_API.G_FALSE
6113 );
6114 IF l_debug_on THEN
6115 WSH_DEBUG_SV.pop(l_module_name);
6116 END IF;
6117 FTE_FREIGHT_PRICING_UTIL.set_exception(l_module_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'FND_API.G_EXC_UNEXPECTED_ERROR');
6118 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
6119 FTE_FREIGHT_PRICING_UTIL.close_logs;
6120 --
6121 WHEN OTHERS THEN
6122 FND_MESSAGE.SET_NAME('FTE','FTE_PRC_LOG_FILE_NAME');
6123 FND_MESSAGE.SET_TOKEN('LOGFILE',FTE_FREIGHT_PRICING_UTIL.get_log_file_name());
6124 FND_MSG_PUB.ADD;
6125
6126 FTE_FREIGHT_PRICING_UTIL.setmsg(
6127 p_api => l_api_name,
6128 p_exc => ' ',
6129 p_msg_name => 'FTE_PRC_RATE_MUL_DEL_FL',
6130 p_msg_type => 'E');
6131
6132 --fix bug3715247
6133 --ROLLBACK TO RATE_MULTIPLE_DELIVERY;
6134 WSH_UTIL_CORE.DEFAULT_HANDLER(G_PKG_NAME||'.'||l_api_name);
6135 x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
6136 FND_MSG_PUB.Count_And_Get
6137 (
6138 p_count => x_msg_count,
6139 p_data => x_msg_data,
6140 p_encoded => FND_API.G_FALSE
6141 );
6142 IF l_debug_on THEN
6143 WSH_DEBUG_SV.pop(l_module_name);
6144 END IF;
6145 FTE_FREIGHT_PRICING_UTIL.set_exception(l_api_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
6146 FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
6147 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
6148 FTE_FREIGHT_PRICING_UTIL.close_logs;
6149 END Rate_Delivery;
6150
6151 PROCEDURE Rate_Delivery2 (
6152 p_api_version IN NUMBER DEFAULT 1.0,
6153 p_init_msg_list IN VARCHAR2 DEFAULT FND_API.G_FALSE,
6154 p_commit IN VARCHAR2 DEFAULT FND_API.G_FALSE,
6155 x_return_status OUT NOCOPY VARCHAR2,
6156 x_msg_count OUT NOCOPY NUMBER,
6157 x_msg_data OUT NOCOPY VARCHAR2,
6158 p_init_prc_log IN VARCHAR2 DEFAULT 'Y',
6159 p_delivery_in_rec IN delivery_in_rec_type
6160 )
6161 IS
6162 l_api_version CONSTANT NUMBER := 1.0;
6163 l_api_name CONSTANT VARCHAR2(30) := 'Rate_Delivery2';
6164 l_log_level NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
6165 l_return_status VARCHAR2(1);
6166 l_msg_count NUMBER;
6167 l_msg_data VARCHAR2(32767);
6168 l_delivery_id NUMBER;
6169 l_carrier_id NUMBER;
6170 l_mode_of_transport VARCHAR2(30);
6171 l_service_level VARCHAR2(30);
6172 l_lookup VARCHAR2(30);
6173 l_leg_trip_det_rec c_leg_trip_det%ROWTYPE;
6174 l_leg_id NUMBER;
6175 l_trip_id NUMBER;
6176 l_leg_count NUMBER;
6177 BEGIN
6178
6179 SAVEPOINT RATE_DELIVERY2;
6180
6181 IF NOT FND_API.Compatible_API_Call (
6182 l_api_version,
6183 p_api_version,
6184 l_api_name,
6185 G_PKG_NAME )
6186 THEN
6187 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6188 END IF;
6189
6190 IF FND_API.to_Boolean(p_init_msg_list) THEN
6191 FND_MSG_PUB.initialize;
6192 END IF;
6193
6194 IF p_init_prc_log = 'Y' THEN
6195 FTE_FREIGHT_PRICING_UTIL.initialize_logging( x_return_status => l_return_status );
6196 IF (l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) and
6197 (l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING) THEN
6198 FTE_FREIGHT_PRICING_UTIL.setmsg(
6199 p_api => l_api_name,
6200 p_exc => ' ',
6201 p_msg_name => 'FTE_PRC_INIT_LOG_FL',
6202 p_msg_type => 'E');
6203 RAISE FND_API.G_EXC_UNEXPECTED_ERROR;
6204 END IF;
6205 END IF;
6206
6207 FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
6208 FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,l_api_name,'start');
6209
6210 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_api_version='||p_api_version);
6211 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_init_msg_list='||p_init_msg_list);
6212 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_commit='||p_commit);
6213 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_init_prc_log='||p_init_prc_log);
6214 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_delivery_in_rec.name='||p_delivery_in_rec.name);
6215 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_delivery_in_rec.carrier_name='||p_delivery_in_rec.carrier_name);
6216 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_delivery_in_rec.mode_of_transport='||p_delivery_in_rec.mode_of_transport);
6217 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_delivery_in_rec.service_level='||p_delivery_in_rec.service_level);
6218
6219 x_return_status := FND_API.G_RET_STS_SUCCESS;
6220
6221 -- API body
6222
6223 -- validate delivery name and get delivery_id
6224 WSH_UTIL_VALIDATE.Validate_Delivery_Name (
6225 p_delivery_id => l_delivery_id,
6226 p_delivery_name => p_delivery_in_rec.name,
6227 x_return_status => l_return_status);
6228 IF (l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) and
6229 (l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING) THEN
6230 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'Invalid delivery name '||p_delivery_in_rec.name);
6231 RAISE FND_API.G_EXC_ERROR;
6232 END IF;
6233
6234 -- validate carrier_name and get carrier_id
6235 WSH_UTIL_VALIDATE.Validate_Carrier (
6236 p_carrier_name => p_delivery_in_rec.carrier_name,
6237 x_carrier_id => l_carrier_id,
6238 x_return_status => l_return_status);
6239 IF (l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) and
6240 (l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING) THEN
6241 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'Invalid carrier name '||p_delivery_in_rec.carrier_name);
6242 RAISE FND_API.G_EXC_ERROR;
6243 END IF;
6244
6245 -- validate mode_of_transport and get mode_of_transport_code
6246 l_lookup := p_delivery_in_rec.mode_of_transport;
6247 WSH_UTIL_VALIDATE.Validate_Lookup (
6248 p_lookup_type => 'WSH_MODE_OF_TRANSPORT',
6249 p_lookup_code => l_lookup,
6250 p_meaning => null,
6251 x_return_status => l_return_status);
6252 IF (l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) and
6253 (l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING) THEN
6254 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'Invalid mode of transport '|| l_lookup);
6255 RAISE FND_API.G_EXC_ERROR;
6256 END IF;
6257 l_mode_of_transport := p_delivery_in_rec.mode_of_transport;
6258
6259 -- validate service_level and get service_level_code
6260 l_lookup := p_delivery_in_rec.service_level;
6261 WSH_UTIL_VALIDATE.Validate_Lookup (
6262 p_lookup_type => 'WSH_SERVICE_LEVELS',
6263 p_lookup_code => l_lookup,
6264 p_meaning => null,
6265 x_return_status => l_return_status);
6266 IF (l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) and
6267 (l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING) THEN
6268 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'Invalid sevice level '|| l_lookup);
6269 RAISE FND_API.G_EXC_ERROR;
6270 END IF;
6271 l_service_level := p_delivery_in_rec.service_level;
6272
6273 -- if delivery is on multiple trips, error out
6274 l_leg_count := 0;
6275 OPEN c_get_dleg_id(l_delivery_id);
6276 LOOP
6277 FETCH c_get_dleg_id INTO l_leg_id;
6278 EXIT WHEN c_get_dleg_id%NOTFOUND;
6279 l_leg_count := l_leg_count + 1;
6280 IF l_leg_count > 1 THEN
6281 EXIT;
6282 END IF;
6283 END LOOP;
6284 CLOSE c_get_dleg_id;
6285 IF l_leg_count > 1 THEN
6286 FND_MESSAGE.SET_NAME('FTE','FTE_PRC_DLV_MNY_TRP');-- todo PM new msg
6287 FND_MESSAGE.SET_TOKEN('DELIVERY_ID', p_delivery_in_rec.name);
6288 FND_MSG_PUB.ADD;
6289 RAISE FND_API.G_EXC_ERROR;
6290 END IF;
6291
6292 -- if delivery is on one trip, trip has multiple deliveries, error out
6293 OPEN c_leg_trip_det(l_leg_id);
6294 FETCH c_leg_trip_det INTO l_leg_trip_det_rec;
6295 CLOSE c_leg_trip_det;
6296
6297 l_trip_id := l_leg_trip_det_rec.trip_id;
6298 OPEN c_cnt_trip_legs(l_trip_id);
6299 FETCH c_cnt_trip_legs INTO l_leg_count;
6300 CLOSE c_cnt_trip_legs;
6301
6302 IF (l_leg_count > 1) THEN
6303 FND_MESSAGE.SET_NAME('FTE','FTE_PRC_TRP_MNY_DLV');
6304 FND_MESSAGE.SET_TOKEN('TRIP_ID', l_trip_id);
6305 FND_MSG_PUB.ADD;
6306 RAISE FND_API.G_EXC_ERROR;
6307 END IF;
6308
6309 IF (l_carrier_id is not null) or (l_mode_of_transport is not null)
6310 or (l_service_level is not null) THEN
6311
6312 Cancel_Service (
6313 p_delivery_id => l_delivery_id,
6314 x_return_status => l_return_status,
6315 x_msg_count => l_msg_count,
6316 x_msg_data => l_msg_data);
6317
6318 IF (l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) and
6319 (l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING) THEN
6320 -- if cancel service adds the message to the stack,
6321 -- we do not need to add again.
6322 --FND_MESSAGE.SET_NAME('FTE','FTE_PRC_CAN_SRV_FL');
6323 --FND_MESSAGE.SET_TOKEN('DELIVERY_ID', p_delivery_in_rec.name);
6324 --FND_MSG_PUB.ADD;
6325 RAISE FND_API.G_EXC_ERROR;
6326 END IF;
6327
6328 END IF;
6329
6330 Rate_Delivery (
6331 p_delivery_id => l_delivery_id,
6332 p_init_prc_log => 'N',
6333 p_carrier_id => l_carrier_id,
6334 p_mode_of_transport => l_mode_of_transport,
6335 p_service_level => l_service_level,
6336 x_return_status => l_return_status,
6337 x_msg_count => l_msg_count,
6338 x_msg_data => l_msg_data);
6339
6340 IF (l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS) and
6341 (l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING) THEN
6342 FND_MESSAGE.SET_NAME('FTE','FTE_PRC_RERATE_SHIPMENT_FAIL');
6343 FND_MESSAGE.SET_TOKEN('DEL_NAMES', p_delivery_in_rec.name);
6344 FND_MESSAGE.SET_TOKEN('LOGFILE',FTE_FREIGHT_PRICING_UTIL.get_log_file_name());
6345 FND_MSG_PUB.ADD;
6346 RAISE FND_API.G_EXC_ERROR;
6347 END IF;
6348
6349 -- End of API body
6350
6351 IF FND_API.To_Boolean( p_commit ) THEN
6352 COMMIT WORK;
6353 END IF;
6354
6355 FND_MSG_PUB.Count_And_Get (
6356 p_count => x_msg_count,
6357 p_data => x_msg_data,
6358 p_encoded => FND_API.G_FALSE
6359 );
6360
6361 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'x_return_status='||x_return_status);
6362 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'x_msg_count='||x_msg_count);
6363 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'x_msg_data='||x_msg_data);
6364
6365 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
6366
6367 IF p_init_prc_log = 'Y' THEN
6368 FTE_FREIGHT_PRICING_UTIL.close_logs;
6369 END IF;
6370 EXCEPTION
6371 WHEN FND_API.G_EXC_ERROR THEN
6372 ROLLBACK TO RATE_DELIVERY2;
6373 x_return_status := FND_API.G_RET_STS_ERROR;
6374 FND_MSG_PUB.Count_And_Get (
6375 p_count => x_msg_count,
6376 p_data => x_msg_data,
6377 p_encoded => FND_API.G_FALSE
6378 );
6379 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'x_return_status='||x_return_status);
6380 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'x_msg_count='||x_msg_count);
6381 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'x_msg_data='||x_msg_data);
6382 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
6383 IF p_init_prc_log = 'Y' THEN
6384 FTE_FREIGHT_PRICING_UTIL.close_logs;
6385 END IF;
6386 WHEN FND_API.G_EXC_UNEXPECTED_ERROR THEN
6387 ROLLBACK TO RATE_DELIVERY2;
6388 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6389 FND_MSG_PUB.Count_And_Get (
6390 p_count => x_msg_count,
6391 p_data => x_msg_data,
6392 p_encoded => FND_API.G_FALSE
6393 );
6394 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'x_return_status='||x_return_status);
6395 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'x_msg_count='||x_msg_count);
6396 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'x_msg_data='||x_msg_data);
6397 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
6398 IF p_init_prc_log = 'Y' THEN
6399 FTE_FREIGHT_PRICING_UTIL.close_logs;
6400 END IF;
6401 WHEN OTHERS THEN
6402 ROLLBACK TO RATE_DELIVERY2;
6403 x_return_status := FND_API.G_RET_STS_UNEXP_ERROR;
6404 IF FND_MSG_PUB.Check_Msg_Level
6405 (FND_MSG_PUB.G_MSG_LVL_UNEXP_ERROR)
6406 THEN
6407 FND_MSG_PUB.Add_Exc_Msg (G_PKG_NAME, l_api_name);
6408 END IF;
6409 FND_MSG_PUB.Count_And_Get (
6410 p_count => x_msg_count,
6411 p_data => x_msg_data,
6412 p_encoded => FND_API.G_FALSE
6413 );
6414 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'x_return_status='||x_return_status);
6415 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'x_msg_count='||x_msg_count);
6416 FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'x_msg_data='||x_msg_data);
6417 FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
6418 IF p_init_prc_log = 'Y' THEN
6419 FTE_FREIGHT_PRICING_UTIL.close_logs;
6420 END IF;
6421 END Rate_Delivery2;
6422
6423 --
6424 END FTE_FREIGHT_RATING_DLVY_GRP;