DBA Data[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;