DBA Data[Home] [Help]

PACKAGE BODY: APPS.FTE_TL_CACHE

Source


1 PACKAGE BODY FTE_TL_CACHE AS
2 /* $Header: FTEVTLCB.pls 120.9 2007/11/30 05:52:38 sankarun ship $ */
3 
4 
5 
6 
7 
8 
9 g_tl_pallet_item_type VARCHAR2(30):=NULL;
10 
11 --Structure used to addup quntities on a dleg
12 
13 TYPE TL_dleg_quantity_rec_type IS RECORD(
14 
15 delivery_leg_id	NUMBER,
16 weight		NUMBER,
17 volume		NUMBER,
18 pallets		NUMBER,
19 containers	NUMBER,
20 distance	NUMBER,
21 empty_flag	VARCHAR2(1)
22 
23 );
24 
25 TYPE TL_dleg_quantity_tab_type IS TABLE OF TL_dleg_quantity_rec_type INDEX BY
26 BINARY_INTEGER;
27 
28 --Structure used to gather inputs for mileage interface
29 
30 TYPE TL_stop_distance_rec_type IS RECORD(
31 
32 from_stop_id	NUMBER,
33 from_location_id 	NUMBER,
34 to_stop_id	NUMBER,
35 to_location_id	NUMBER,
36 distance	NUMBER,
37 time		NUMBER,
38 cumulative_distance NUMBER,
39 empty_flag	VARCHAR2(1)
40 
41 );
42 
43 TYPE TL_stop_distance_tab_type IS TABLE OF TL_stop_distance_rec_type INDEX BY
44 BINARY_INTEGER;
45 
46 
47 TYPE TL_stop_quantity_rec_type IS RECORD(
48 stop_id	NUMBER,
49 pickup_weight		NUMBER,
50 pickup_volume		NUMBER,
51 dropoff_weight		NUMBER,
52 dropoff_volume		NUMBER
53 );
54 
55 TYPE TL_stop_quantity_tab_type IS TABLE OF TL_stop_quantity_rec_type INDEX BY
56 BINARY_INTEGER;
57 
58 
59 PROCEDURE TL_Get_Currency(
60             p_delivery_id IN NUMBER,
61             p_trip_id      IN NUMBER,
62             p_location_id IN NUMBER,
63             p_carrier_id IN NUMBER,
64             x_currency_code IN OUT NOCOPY VARCHAR2 ,
65             x_return_status OUT NOCOPY VARCHAR2 ) IS
66 
67 	l_return_status VARCHAR2(1);
68 	l_log_level	NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
69 
70 
71 BEGIN
72 
73 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
74 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'TL_Get_Currency','start');
75 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
76 
77 
78 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'p_delivery_id:'||p_delivery_id);
79 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'p_trip_id:'||p_trip_id);
80 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'p_location_id:'||p_location_id);
81 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'p_carrier_id:'||p_carrier_id);
82 
83 
84 
85 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'COMMENTED OUT CALL FOR NOW');
86 
87 /*
88 	FTE_FREIGHT_PRICING_UTIL.get_currency_code (
89 		p_delivery_id=>p_delivery_id,
90 		p_trip_id=>p_trip_id,
91 		p_location_id=>p_location_id,
92 		p_carrier_id=>p_carrier_id,
93 		x_currency_code=>x_currency_code,
94 		x_return_status=>l_return_status);
95 
96 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
97 	THEN
98 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
99 	       THEN
100 		  raise FTE_FREIGHT_PRICING_UTIL.g_tl_util_get_currency_fail;
101 	       END IF;
102 	END IF;
103 */
104 
105 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'x_currency_code:'||x_currency_code);
106 
107         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Get_Currency');
108 
109 
110 
111 
112 EXCEPTION
113 
114 WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_util_get_currency_fail THEN
115         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
116         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Get_Currency',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_util_get_currency_fail');
117         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Get_Currency');
118 
119 
120 WHEN others THEN
121 	x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
122 	FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Get_Currency',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
123 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
124 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Get_Currency');
125 
126 
127 END TL_Get_Currency;
128 
129 
130 
131 PROCEDURE Calculate_Dimensional_Weight(
132 	p_carrier_pref_rec IN TL_CARRIER_PREF_REC_TYPE,
133 	p_weight IN NUMBER,
134 	p_volume IN NUMBER,
135 	x_dim_weight IN OUT NOCOPY NUMBER,
136 	x_return_status	OUT	NOCOPY	VARCHAR2) IS
137 
138 
139 	l_converted_volume NUMBER;
140 	l_converted_weight NUMBER;
141 	l_dim_weight NUMBER;
142 	l_return_status VARCHAR2(1);
143 
144 	l_log_level	NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
145 
146 	l_warning_count 	NUMBER:=0;
147 BEGIN
148 
149 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
150 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Calculate_Dimensional_Weight','start');
151 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
152 
153 	x_dim_weight:=p_weight;
154 	IF ((p_carrier_pref_rec.dim_factor IS NOT NULL) AND (p_carrier_pref_rec.dim_factor>0))
155 	THEN
156 
157 		l_converted_volume:=NULL;
158 
159 		l_converted_volume:=FTE_FREIGHT_PRICING_UTIL.convert_uom(
160 			p_carrier_pref_rec.volume_uom,
161 			p_carrier_pref_rec.dim_volume_uom,
162 			p_volume,
163 			0);
164 
165 		IF (l_converted_volume IS NULL)
166 		THEN
167 			raise FTE_FREIGHT_PRICING_UTIL.g_tl_vol_uom_conv_fail;
168 		END IF;
169 
170 		IF (l_converted_volume >= p_carrier_pref_rec.dim_min_volume)
171 		THEN
172 			l_converted_weight:=l_converted_volume/p_carrier_pref_rec.dim_factor;
173 			l_dim_weight:=NULL;
174 			l_dim_weight:=FTE_FREIGHT_PRICING_UTIL.convert_uom(
175 				p_carrier_pref_rec.dim_weight_uom,
176 				p_carrier_pref_rec.weight_uom,
177 				l_converted_weight,
178 				0);
179 
180 
181 			IF (l_dim_weight IS NULL)
182 			THEN
183 				raise FTE_FREIGHT_PRICING_UTIL.g_tl_weight_uom_conv_fail;
184 			END IF;
185 
186 			IF (l_dim_weight > p_weight)
187 			THEN
188 
189 				FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'Old Wt:'||p_weight||' Applying DIM WT:'||l_dim_weight);
190 
191 				x_dim_weight:=l_dim_weight;
192 
193 			END IF;
194 
195 		END IF;
196 
197 
198 	END IF;
199 
200 
201         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Calculate_Dimensional_Weight');
202 
203 	IF (l_warning_count > 0)
204 	THEN
205 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
206 	END IF;
207 
208 
209 
210 EXCEPTION
211 
212 WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_weight_uom_conv_fail THEN
213         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
214         FTE_FREIGHT_PRICING_UTIL.set_exception('Calculate_Dimensional_Weight',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_weight_uom_conv_fail');
215         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Calculate_Dimensional_Weight');
216 
217 
218 WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_vol_uom_conv_fail THEN
219         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
220         FTE_FREIGHT_PRICING_UTIL.set_exception('Calculate_Dimensional_Weight',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_vol_uom_conv_fail');
221         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Calculate_Dimensional_Weight');
222 
223 
224 WHEN others THEN
225 	x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
226 	FTE_FREIGHT_PRICING_UTIL.set_exception('Calculate_Dimensional_Weight',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
227 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
228 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Calculate_Dimensional_Weight');
229 
230 
231 
232 END Calculate_Dimensional_Weight;
233 
234 
235 
236 PROCEDURE Get_Vehicle_Type(
237 	p_trip_id IN NUMBER,
238 	p_vehicle_item_id IN NUMBER,
239 	x_vehicle_type IN OUT NOCOPY NUMBER,
240 	x_return_status	OUT NOCOPY VARCHAR2) IS
241 
242 CURSOR get_vehicle_item(c_trip_id IN NUMBER)
243        IS
244        SELECT t.vehicle_item_id
245        FROM  wsh_trips t
246        WHERE t.trip_id=c_trip_id;
247 
248 
249 	l_vehicle_item NUMBER;
250 	l_return_status VARCHAR2(1);
251 
252 	l_log_level	NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
253 
254 	l_warning_count 	NUMBER:=0;
255 BEGIN
256 
257 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
258 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Get_Vehicle_Type','start');
259 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
260 
261 	IF(p_vehicle_item_id IS NULL)
262 	THEN
263 
264 		OPEN get_vehicle_item(p_trip_id);
265 		FETCH get_vehicle_item INTO l_vehicle_item;
266 		CLOSE get_vehicle_item;
267 	ELSE
268 		l_vehicle_item:=p_vehicle_item_id;
269 	END IF;
270 
271 	IF (l_vehicle_item IS NOT NULL)
272 	THEN
273 
274 		FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'Calling vehicle API inventory item:'||l_vehicle_item||' trip : '||p_trip_id);
275 
276 		x_vehicle_type:=FTE_VEHICLE_PKG.GET_VEHICLE_TYPE_ID(
277 			p_inventory_item_id=> l_vehicle_item);
278 
279 		FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'Vehicle API returned:'||x_vehicle_type);
280 
281 		IF (x_vehicle_type = -1)
282 		THEN
283 			x_vehicle_type:=NULL;
284 
285 		END IF;
286 	END IF;
287 
288         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Vehicle_Type');
289 
290 	IF (l_warning_count > 0)
291 	THEN
292 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
293 	END IF;
294 EXCEPTION
295    WHEN others THEN
296 	x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
297 	FTE_FREIGHT_PRICING_UTIL.set_exception('Get_Vehicle_Type',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
298 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
299 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Vehicle_Type');
300 
301 
302 
303 
304 
305 END Get_Vehicle_Type;
306 
307 
308 PROCEDURE Get_Pricelist_Id(
309 	p_lane_id	IN NUMBER,
310 	p_departure_date IN DATE,
311 	p_arrival_date IN DATE,
312 	x_pricelist_id	IN OUT NOCOPY NUMBER,
313 	x_return_status	OUT NOCOPY VARCHAR2) IS
314 
315 
316 CURSOR get_price_list_id(
317 	c_lane_id IN NUMBER,
318 	c_departure_date IN DATE,
319 	c_arrival_date IN DATE)
320 	IS
321 	SELECT flrc.list_header_id
322 	FROM fte_lane_rate_charts flrc
323 	WHERE flrc.lane_id = c_lane_id
324 	AND (flrc.start_date_active is null
325 		OR flrc.start_date_active <= c_departure_date )
326 	AND    (flrc.end_date_active is null
327 		OR flrc.end_date_active > c_departure_date );
328 
329 
330 
331 	l_return_status VARCHAR2(1);
332 
333 	l_log_level	NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
334 
335 	l_warning_count 	NUMBER:=0;
336 BEGIN
337 
338 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
339 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Get_Pricelist_Id','start');
340 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
341 
342 	OPEN get_price_list_id(p_lane_id,p_departure_date,p_arrival_date);
343 	FETCH get_price_list_id INTO x_pricelist_id;
344 	CLOSE get_price_list_id;
345 
346 
347         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Pricelist_Id');
348 
349 	IF (l_warning_count > 0)
350 	THEN
351 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
352 	END IF;
353 EXCEPTION
354    WHEN others THEN
355 	x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
356 	FTE_FREIGHT_PRICING_UTIL.set_exception('Get_Pricelist_Id',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
357 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
358 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Pricelist_Id');
359 
360 
361 END Get_Pricelist_Id;
362 
363 PROCEDURE Initialize_Cache_Indices(
364 	x_trip_index	IN OUT NOCOPY NUMBER,
365 	x_stop_index	IN OUT NOCOPY NUMBER,
366 	x_dleg_index	IN OUT NOCOPY NUMBER,
367 	x_carrier_index	IN OUT NOCOPY NUMBER,
368 	x_child_dleg_index IN OUT NOCOPY NUMBER,
369 	x_return_status	OUT NOCOPY VARCHAR2) IS
370 
371 	l_return_status VARCHAR2(1);
372 
373 	l_log_level	NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
374 
375 	l_warning_count 	NUMBER:=0;
376 BEGIN
377 
378 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
379 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Initialize_Cache_Indices','start');
380 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
381 
382 
383 	--Initializes all indices
384 
385 	IF(g_tl_trip_rows.LAST IS NULL)
386 	THEN
387 		x_trip_index:=1;
388 	ELSE
389 		x_trip_index:=g_tl_trip_rows.LAST+1;
390 	END IF;
391 
392 	IF(g_tl_trip_stop_rows.LAST IS NULL)
393 	THEN
394 		x_stop_index:=1;
395 	ELSE
396 		x_stop_index:=g_tl_trip_stop_rows.LAST+1;
397 	END IF;
398 
399 	IF(g_tl_carrier_pref_rows.LAST IS NULL)
400 	THEN
401 		x_carrier_index:=1;
402 	ELSE
403 		x_carrier_index:=g_tl_carrier_pref_rows.LAST+1;
404 	END IF;
405 
406 	IF(g_tl_delivery_leg_rows.LAST IS NULL)
407 	THEN
408 		x_dleg_index:=1;
409 	ELSE
410 		x_dleg_index:=g_tl_delivery_leg_rows.LAST+1;
411 	END IF;
412 
413 	IF(g_tl_chld_delivery_leg_rows.LAST IS NULL)
414 	THEN
415 		x_child_dleg_index:=1;
416 	ELSE
417 		x_child_dleg_index:=g_tl_chld_delivery_leg_rows.LAST+1;
418 	END IF;
419 
420 
421 
422 
423 
424   FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Initialize_Cache_Indices');
425 
426 	IF (l_warning_count > 0)
427 	THEN
428 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
429 	END IF;
430 EXCEPTION
431    WHEN others THEN
432         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
433         FTE_FREIGHT_PRICING_UTIL.set_exception('Initialize_Cache_Indices',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
434         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
435         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Initialize_Cache_Indices');
436 
437 
438 END Initialize_Cache_Indices;
439 
440 
441 --Determines if a dlv detail is counted as a pallet
442 
443 PROCEDURE Is_Detail_Pallet(
444 	p_dlv_detail_id IN NUMBER,
445 	x_pallet IN OUT NOCOPY VARCHAR2,
446 	x_return_status OUT NOCOPY VARCHAR2) IS
447 
448 
449 	CURSOR get_pallet_item_type IS
450 
451 	SELECT 	wgp.pallet_item_type
452 	FROM	wsh_global_parameters wgp;
453 
454 
455 	CURSOR get_item_type(c_dtl_id IN NUMBER) IS
456 	SELECT m.container_type_code
457 	FROM 	mtl_system_items_b m ,
458 		wsh_delivery_details d
459 	WHERE 	d.inventory_item_id=m.inventory_item_id  and
460 		d.organization_id = m.organization_id and
461 		d.delivery_detail_id=c_dtl_id;
462 
463 	l_item_type VARCHAR2(30);
464 
465 	l_return_status VARCHAR2(1);
466 
467 	l_log_level	NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
468 
469 	l_warning_count 	NUMBER:=0;
470 BEGIN
471 
472 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
473 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Is_Detail_Pallet','start');
474 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
475 
476 	IF (g_tl_pallet_item_type IS NULL)
477 	THEN
478 
479 		OPEN get_pallet_item_type;
480 		FETCH get_pallet_item_type INTO g_tl_pallet_item_type;
481 		CLOSE get_pallet_item_type;
482 
483 		IF (g_tl_pallet_item_type IS NULL)
484 		THEN
485 			--Show only generic message
486 			--FTE_FREIGHT_PRICING_UTIL.setmsg (
487 			--	p_api=>'Is_Detail_Pallet',
488 			--	p_exc=>'g_tl_no_pallet_item_type');
489 
490 			raise FTE_FREIGHT_PRICING_UTIL.g_tl_no_pallet_item_type;
491 
492 		END IF;
493 
494 	END IF;
495 
496 	l_item_type:=NULL;
497 	x_pallet:='N';
498 	OPEN get_item_type(p_dlv_detail_id);
499 	FETCH get_item_type INTO l_item_type;
500 	IF (get_item_type%FOUND)
501 	THEN
502 
503 		IF((l_item_type is not NULL) AND (l_item_type=g_tl_pallet_item_type))
504 		THEN
505 			x_pallet:='Y';
506 		END IF;
507 
508 	END IF;
509 	CLOSE get_item_type;
510 
511         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Is_Detail_Pallet');
512 
513 	IF (l_warning_count > 0)
514 	THEN
515 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
516 	END IF;
517 EXCEPTION
518 
519    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_no_pallet_item_type THEN
520         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
521         FTE_FREIGHT_PRICING_UTIL.set_exception('Is_Detail_Pallet',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_no_pallet_item_type');
522         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Is_Detail_Pallet');
523 
524    WHEN others THEN
525         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
526         FTE_FREIGHT_PRICING_UTIL.set_exception('Is_Detail_Pallet',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
527         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
528         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Is_Detail_Pallet');
529 
530 
531 END Is_Detail_Pallet;
532 
533 
534 --This is used to cache all the information for delivery search services
535 --It is not used in TL Rating currently
536 
537 PROCEDURE TL_Build_Cache_For_Delivery(
538 	p_wsh_new_delivery_id  	IN	NUMBER,
539 	p_wsh_delivery_leg_id 	IN	NUMBER ,
540 	p_lane_rows 	IN	DBMS_UTILITY.NUMBER_ARRAY,
541 	p_schedule_rows IN 	DBMS_UTILITY.NUMBER_ARRAY,
542 	x_return_status 	OUT	NOCOPY	VARCHAR2) IS
543 
544 
545 l_return_status	VARCHAR2(1);
546 
547 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
548 
549 	l_warning_count 	NUMBER:=0;
550 BEGIN
551 
552 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
553 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'TL_Build_Cache_For_Delivery','start');
554 
555 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
556 
557 
558         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Build_Cache_For_Delivery');
559 
560 	IF (l_warning_count > 0)
561 	THEN
562 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
563 	END IF;
564 EXCEPTION
565    WHEN others THEN
566         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
567         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Build_Cache_For_Delivery',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
568         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
569         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Build_Cache_For_Delivery');
570 
571 END TL_Build_Cache_For_Delivery;
572 
573 
574 
575 --Place holder for TL Rating from OM
576 --Not used
577 
578 PROCEDURE TL_Build_Cache_For_OM(
579 	x_return_status	OUT 	NOCOPY	VARCHAR2) IS
580 
581 
582 
583 l_return_status VARCHAR2(1);
584 
585 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
586 
587 	l_warning_count 	NUMBER:=0;
588 BEGIN
589 
590 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
591 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'TL_Build_Cache_For_OM','start');
592 
593 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
594 
595         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Build_Cache_For_OM');
596 
597 	IF (l_warning_count > 0)
598 	THEN
599 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
600 	END IF;
601 EXCEPTION
602    WHEN others THEN
603         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
604         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Build_Cache_For_OM',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
605         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
606         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Build_Cache_For_OM');
607 
608 END TL_Build_Cache_For_OM;
609 
610 
611 --Validates a single cached trip structure
612 
613 PROCEDURE Validate_Trip_Info(
614 	x_trip_info IN OUT NOCOPY TL_trip_data_input_rec_type,
615 	x_return_status 	OUT	NOCOPY	VARCHAR2) IS
616 
617 l_return_status	VARCHAR2(1);
618 
619 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
620 
621 	l_warning_count 	NUMBER:=0;
622 BEGIN
623 
624 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
625 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Validate_Trip_Info','start');
626 
627 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
628 
629 	IF (x_trip_info.trip_id IS NULL)
630 	THEN
631 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_trip_id;
632 	END IF;
633 	IF (x_trip_info.lane_id IS NULL)
634 	THEN
635 		--Show only generic message
636 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
637 		--	p_api=>'Validate_Trip_Info',
638                 --   	p_exc=>'g_tl_trp_no_lane_id',
639                 --     	p_trip_id=>x_trip_info.trip_id);
640 
641 
642 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_lane_id;
643 	END IF;
644 
645 	IF (x_trip_info.service_type IS NULL)
646 	THEN
647 		--Show only generic message
648 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
649 		--	p_api=>'Validate_Trip_Info',
650                 --     	p_exc=>'g_tl_trp_no_service_type',
651                 --    	p_trip_id=>x_trip_info.trip_id);
652 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_service_type;
653 	END IF;
654 
655 	IF (x_trip_info.carrier_id IS NULL)
656 	THEN
657 		--Show only generic message
658 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
659 		--	p_api=>'Validate_Trip_Info',
660 		--	p_exc=>'g_tl_trp_no_carrier_id',
661 		--	p_trip_id=>x_trip_info.trip_id);
662 
663 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_carrier_id;
664 	END IF;
665 	IF (x_trip_info.mode_of_transport IS NULL)
666 	THEN
667 		--Show only generic message
668 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
669 		--	p_api=>'Validate_Trip_Info',
670 		--	p_exc=>'g_tl_trp_no_mode',
671 		--	p_trip_id=>x_trip_info.trip_id);
672 
673 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_mode;
674 	END IF;
675 
676 	IF (x_trip_info.vehicle_type IS NULL)
677 	THEN
678 		--Show only generic message
679 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
680 		--	p_api=>'Validate_Trip_Info',
681 		--	p_exc=>'g_tl_trp_no_vehicle_type',
682 		--	p_trip_id=>x_trip_info.trip_id);
683 
684 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_vehicle_type;
685 	END IF;
686 
687 	IF (x_trip_info.price_list_id IS NULL)
688 	THEN
689 		--Show only generic message
690 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
691 		--	p_api=>'Validate_Trip_Info',
692 		--	p_exc=>'g_tl_trp_no_price_list_id',
693 		--	p_trip_id=>x_trip_info.trip_id);
694 
695 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_price_list_id;
696 	END IF;
697 
698 	IF (x_trip_info.loaded_distance IS NULL)
699 	THEN
700 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_ld_distance;
701 	END IF;
702 
703 	IF(x_trip_info.unloaded_distance IS NULL)
704 	THEN
705 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_ud_distance;
706 	END IF;
707 
708 	IF (x_trip_info.number_of_pallets IS NULL)
709 	THEN
710 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_pallets;
711 	END IF;
712 
713 	IF (x_trip_info.number_of_containers IS NULL)
714 	THEN
715 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_containers;
716 	END IF;
717 
718 	IF(x_trip_info.total_weight IS NULL)
719 	THEN
720 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_weight;
721 	END IF;
722 
723 	IF(x_trip_info.total_volume IS NULL)
724 	THEN
725 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_volume;
726 	END IF;
727 
728 	IF (x_trip_info.time IS NULL)
729 	THEN
730 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_time;
731 	END IF;
732 
733 	IF (x_trip_info.number_of_stops IS NULL)
734 	THEN
735 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_number_of_stops;
736 	END IF;
737 
738 	IF (x_trip_info.total_trip_distance IS NULL)
739 	THEN
740 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_total_trp_distance;
741 	END IF;
742 
743 	IF(x_trip_info.total_direct_distance IS NULL)
744 	THEN
745 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_total_dir_distance;
746 	END IF;
747 
748 
749 	IF (x_trip_info.distance_method IS NULL)
750 	THEN
751 		--raise FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_distance_method;
752 		x_trip_info.distance_method:='FULL_ROUTE';
753 	END IF;
754 
755 	IF (x_trip_info.continuous_move IS NULL)
756 	THEN
757 		x_trip_info.continuous_move:='N';
758 		--raise FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_continous_move;
759 	END IF;
760 
761 	IF (x_trip_info.planned_departure_date IS NULL)
762 	THEN
763 
764 		--Show only generic message
765 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
766 		--	p_api=>'Validate_Trip_Info',
767 		--	p_exc=>'g_tl_trp_no_departure_date',
768 		--	p_trip_id=>x_trip_info.trip_id);
769 
770 
771 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_departure_date;
772 	END IF;
773 
774 	IF (x_trip_info.planned_arrival_date IS NULL)
775 	THEN
776 		--Show only generic message
777 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
778 		--	p_api=>'Validate_Trip_Info',
779 		--	p_exc=>'g_tl_trp_no_arrival_date',
780 		--	p_trip_id=>x_trip_info.trip_id);
781 
782 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_arrival_date;
783 	END IF;
784 
785 	IF (x_trip_info.dead_head IS NULL)
786 	THEN
787 		x_trip_info.dead_head:='N';
788 		--raise FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_dead_head;
789 	END IF;
790 
791 	IF (x_trip_info.stop_reference IS NULL)
792 	THEN
793 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_stop_reference;
794 	END IF;
795 
796 	--Can be null for a dead head
797 	--IF (x_trip_info.delivery_leg_reference IS NULL)
798 	--THEN
799 		--raise FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_dleg_reference;
800 	--END IF;
801 
802 
803 
804 
805         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Trip_Info');
806 
807 	IF (l_warning_count > 0)
808 	THEN
809 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
810 	END IF;
811 EXCEPTION
812    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_trip_id THEN
813         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
814         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Trip_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_trp_no_trip_id');
815         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Trip_Info');
816    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_lane_id THEN
817         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
818         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Trip_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_trp_no_lane_id');
819         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Trip_Info');
820    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_service_type THEN
821         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
822         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Trip_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_trp_no_service_type');
823         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Trip_Info');
824    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_carrier_id THEN
825         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
826         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Trip_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_trp_no_carrier_id');
827         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Trip_Info');
828    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_mode THEN
829         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
830         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Trip_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_trp_no_mode');
831         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Trip_Info');
832 
833    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_vehicle_type THEN
834         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
835         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Trip_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_trp_no_vehicle_type');
836         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Trip_Info');
837 
838    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_price_list_id THEN
839         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
840         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Trip_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_trp_no_price_list_id');
841         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Trip_Info');
842 
843    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_ld_distance THEN
844         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
845         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Trip_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_trp_no_ld_distance');
846         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Trip_Info');
847 
848    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_ud_distance THEN
849         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
850         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Trip_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_trp_no_ud_distance');
851         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Trip_Info');
852 
853    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_pallets THEN
854         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
855         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Trip_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_trp_no_pallets');
856         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Trip_Info');
857 
858    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_containers THEN
859 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
860 	FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Trip_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_trp_no_containers');
861 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Trip_Info');
862 
863    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_weight THEN
864 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
865 	FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Trip_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_trp_no_weight');
866 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Trip_Info');
867 
868    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_volume THEN
869 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
870 	FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Trip_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_trp_no_volume');
871 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Trip_Info');
872 
873    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_time THEN
874         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
875         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Trip_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_trp_no_time');
876         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Trip_Info');
877 
878    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_number_of_stops THEN
879         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
880         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Trip_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_trp_no_number_of_stops');
881         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Trip_Info');
882 
883    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_total_trp_distance THEN
884         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
885         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Trip_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_trp_no_total_trp_distance');
886         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Trip_Info');
887 
888    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_total_dir_distance THEN
889         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
890         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Trip_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_trp_no_total_dir_distance');
891         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Trip_Info');
892 
893 
894    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_distance_method THEN
895         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
896         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Trip_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_trp_no_distance_method');
897         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Trip_Info');
898 
899 
900    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_departure_date THEN
901         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
902         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Trip_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_trp_no_departure_date');
903         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Trip_Info');
904 
905    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_arrival_date THEN
906         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
907         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Trip_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_trp_no_arrival_date');
908         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Trip_Info');
909 
910    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_stop_reference THEN
911         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
912         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Trip_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_trp_no_stop_reference');
913         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Trip_Info');
914 
915    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_dleg_reference THEN
916         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
917         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Trip_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_trp_no_dleg_reference');
918         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Trip_Info');
919 
920    WHEN others THEN
921         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
922         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Trip_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
923         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
924         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Trip_Info');
925 
926 END Validate_Trip_Info;
927 
928 
929 PROCEDURE Validate_Fac_Info(
930 	p_carrier_pref_rec  IN TL_CARRIER_PREF_REC_TYPE,
931 	x_stop_info IN OUT NOCOPY TL_trip_stop_input_rec_type,
932 	x_return_status 	OUT	NOCOPY	VARCHAR2) IS
933 
934 	l_cancel_fac VARCHAR2(1);
935 	l_quantity_pickup NUMBER;
936 	l_quantity_dropoff NUMBER;
937 
938 BEGIN
939 
940 
941 
942 ---Facility validation
943 ---If any critical faciolity info is missing, set all of them to values shown below.
944 ---Setting the fac_pricelistId to NULL indicates that NO Fac charges will be calculated
945 --- if the charge basis is returned weight then there will be a weight uom, if it
946 -- returns volume there will be a volume uom
947 
948 	l_cancel_fac:='N';
949 
950 	IF((x_stop_info.fac_charge_basis IS NULL) OR
951 	   (x_stop_info.fac_currency IS NULL) OR
952 	   (x_stop_info.fac_modifier_id IS NULL) OR
953 	   (x_stop_info.fac_pricelist_id IS NULL) OR
954 	   (x_stop_info.loading_protocol IS NULL) OR
955 	   ((x_stop_info.fac_charge_basis=FTE_RTG_GLOBALS.G_CARRIER_WEIGHT_BASIS)
956 	   	AND (x_stop_info.fac_weight_uom IS NULL)) OR
957 	   ((x_stop_info.fac_charge_basis=FTE_RTG_GLOBALS.G_CARRIER_VOLUME_BASIS)
958 	   	AND (x_stop_info.fac_volume_uom IS NULL))
959 	   )
960 	THEN
961 
962 		l_cancel_fac:='Y';
963 
964 		--l_warning_count:=l_warning_count+1;
965 
966 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
967 		--	p_api=>'Validate_Stop_Info',
968 		--	p_exc=>'g_tl_stp_no_fac_wrn',
969 		--	p_msg_type=>'W',
970 		--	p_location_id=>x_stop_info.location_id,
971 		--	p_stop_id=>x_stop_info.stop_id);
972 
973 	ELSE
974 
975 		--Convert to fac weight uoms
976 
977 		IF (x_stop_info.fac_charge_basis=FTE_RTG_GLOBALS.G_CARRIER_WEIGHT_BASIS)
978 		THEN
979 
980 			l_quantity_pickup:=FTE_FREIGHT_PRICING_UTIL.convert_uom(
981 				p_carrier_pref_rec.weight_uom,
982 				x_stop_info.fac_weight_uom,
983 				x_stop_info.pickup_weight,
984 				0);
985 
986 
987 
988 			l_quantity_dropoff:=FTE_FREIGHT_PRICING_UTIL.convert_uom(
989 				p_carrier_pref_rec.weight_uom,
990 				x_stop_info.fac_weight_uom,
991 				x_stop_info.dropoff_weight,
992 				0);
993 
994 
995 
996 			IF ((l_quantity_pickup IS NULL) OR (l_quantity_dropoff IS NULL))
997 			THEN
998 
999 				l_cancel_fac:='Y';
1000 
1001 			END IF;
1002 
1003 			x_stop_info.fac_pickup_weight:=l_quantity_pickup;
1004 			x_stop_info.fac_dropoff_weight:=l_quantity_dropoff;
1005 
1006 		ELSIF (x_stop_info.fac_charge_basis=FTE_RTG_GLOBALS.G_CARRIER_VOLUME_BASIS)
1007 		THEN
1008 
1009 			--Convert to fac volume uoms
1010 
1011 			l_quantity_pickup:=FTE_FREIGHT_PRICING_UTIL.convert_uom(
1012 				p_carrier_pref_rec.volume_uom,
1013 				x_stop_info.fac_volume_uom,
1014 				x_stop_info.pickup_weight,
1015 				0);
1016 
1017 			l_quantity_dropoff:=FTE_FREIGHT_PRICING_UTIL.convert_uom(
1018 				p_carrier_pref_rec.volume_uom,
1019 				x_stop_info.fac_volume_uom,
1020 				x_stop_info.dropoff_volume,
1021 				0);
1022 
1023 			IF ((l_quantity_pickup IS NULL) OR (l_quantity_dropoff IS NULL))
1024 			THEN
1025 
1026 				l_cancel_fac:='Y';
1027 
1028 			END IF;
1029 
1030 			x_stop_info.fac_pickup_volume:=l_quantity_pickup;
1031 			x_stop_info.fac_dropoff_volume:=l_quantity_dropoff;
1032 
1033 		END IF;
1034 
1035 	END IF;
1036 
1037 
1038 	IF (l_cancel_fac='Y')
1039 	THEN
1040 
1041         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_WRN,' Reseting fac infor for stop ID '
1042         ||x_stop_info.stop_id||' protocol:'||x_stop_info.loading_protocol||' pricelist_id:'
1043         ||x_stop_info.fac_pricelist_id||' fac_modifier_id:'
1044         ||x_stop_info.fac_modifier_id||' fac_charge_basis:'||x_stop_info.fac_charge_basis||' fac_currency:'
1045         ||x_stop_info.fac_currency||' fac_weight_uom:'||x_stop_info.fac_weight_uom||' fac_volume_uom:'
1046         ||x_stop_info.fac_volume_uom);
1047 
1048 		--Do Not erase the carrier protocol, we do not want carrier charges to get applied
1049 		--if facility information is incomplete
1050 		--bug 3635952
1051 		--x_stop_info.loading_protocol:='CARRIER';
1052 
1053 		x_stop_info.fac_pricelist_id:=NULL;
1054 		x_stop_info.fac_modifier_id:=NULL;
1055 		x_stop_info.fac_charge_basis:=NULL;
1056 		x_stop_info.fac_currency:=p_carrier_pref_rec.currency;
1057 		x_stop_info.fac_weight_uom:=NULL;
1058 		x_stop_info.fac_volume_uom:=NULL;
1059 
1060 		x_stop_info.fac_pickup_weight:=NULL;
1061 		x_stop_info.fac_pickup_volume:=NULL;
1062 		x_stop_info.fac_dropoff_weight:=NULL;
1063 		x_stop_info.fac_dropoff_volume:=NULL;
1064 
1065 	END IF;
1066 
1067 END Validate_Fac_Info;
1068 
1069 --Validates a single cached stop structure
1070 
1071 PROCEDURE Validate_Stop_Info(
1072 	p_carrier_pref_rec IN TL_CARRIER_PREF_REC_TYPE,
1073 	x_stop_info IN OUT NOCOPY TL_trip_stop_input_rec_type,
1074 	x_return_status 	OUT	NOCOPY	VARCHAR2) IS
1075 
1076 l_return_status VARCHAR2(1);
1077 
1078 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
1079 
1080 	l_warning_count 	NUMBER:=0;
1081 BEGIN
1082 
1083 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
1084 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Validate_Stop_Info','start');
1085 
1086 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
1087 
1088 	IF(x_stop_info.stop_id IS NULL)
1089 	THEN
1090 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_stop_id;
1091 	END IF;
1092 
1093 	IF(x_stop_info.trip_id IS NULL)
1094 	THEN
1095 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_trip_id;
1096 	END IF;
1097 
1098 	IF(x_stop_info.location_id IS NULL)
1099 	THEN
1100 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_location_id;
1101 	END IF;
1102 
1103 	IF(x_stop_info.weekday_layovers IS NULL)
1104 	THEN
1105 		x_stop_info.weekday_layovers:=0;
1106 		--raise FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_weekday_layovers;
1107 	END IF;
1108 
1109 	IF(x_stop_info.weekend_layovers IS NULL)
1110 	THEN
1111 		x_stop_info.weekend_layovers:=0;
1112 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_weekend_layovers;
1113 	END IF;
1114 
1115 	IF(x_stop_info.distance_to_next_stop IS NULL)
1116 	THEN
1117 
1118 	 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'NO dist in '||x_stop_info.stop_id);
1119 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_distance;
1120 	END IF;
1121 
1122 	IF(x_stop_info.time_to_next_stop IS NULL)
1123 	THEN
1124 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_time;
1125 	END IF;
1126 
1127 	IF(x_stop_info.pickup_weight IS NULL)
1128 	THEN
1129 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_pickup_weight;
1130 	END IF;
1131 
1132 	IF(x_stop_info.pickup_volume IS NULL)
1133 	THEN
1134 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_pickup_volume;
1135 	END IF;
1136 
1137 	IF(x_stop_info.pickup_pallets IS NULL)
1138 	THEN
1139 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_pickup_pallets;
1140 	END IF;
1141 
1142 	IF(x_stop_info.pickup_containers IS NULL)
1143 	THEN
1144 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_pickup_containers;
1145 	END IF;
1146 
1147 
1148 	IF(x_stop_info.dropoff_weight IS NULL)
1149 	THEN
1150 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_dropoff_weight;
1151 	END IF;
1152 
1153 	IF(x_stop_info.dropoff_volume IS NULL)
1154 	THEN
1155 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_dropoff_volume;
1156 	END IF;
1157 
1158 	IF(x_stop_info.dropoff_pallets IS NULL)
1159 	THEN
1160 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_dropoff_pallets;
1161 	END IF;
1162 
1163 	IF(x_stop_info.dropoff_containers IS NULL)
1164 	THEN
1165 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_dropoff_containers;
1166 	END IF;
1167 
1168 	--Can be NULL
1169 	--IF(x_stop_info.stop_region IS NULL)
1170 	--THEN
1171 		--raise FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_stop_region;
1172 	--END IF;
1173 
1174 	IF(x_stop_info.planned_arrival_date IS NULL)
1175 	THEN
1176 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_arrival_date;
1177 	END IF;
1178 
1179 	IF(x_stop_info.planned_departure_date IS NULL)
1180 	THEN
1181 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_departure_date;
1182 	END IF;
1183 
1184 	IF(x_stop_info.stop_type IS NULL)
1185 	THEN
1186 		x_stop_info.stop_type:='NA';
1187 	END IF;
1188 
1189 
1190 	Validate_Fac_Info(
1191 		p_carrier_pref_rec=>p_carrier_pref_rec,
1192 		x_stop_info=>x_stop_info,
1193 		x_return_status=>l_return_status);
1194 
1195 
1196         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Stop_Info');
1197 
1198 	IF (l_warning_count > 0)
1199 	THEN
1200 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
1201 	END IF;
1202 EXCEPTION
1203 
1204    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_stop_id THEN
1205         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1206         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Stop_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_stp_no_stop_id');
1207         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Stop_Info');
1208 
1209    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_trip_id THEN
1210         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1211         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Stop_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_stp_no_trip_id');
1212         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Stop_Info');
1213 
1214    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_location_id THEN
1215         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1216         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Stop_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_stp_no_location_id');
1217         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Stop_Info');
1218 
1219    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_weekday_layovers THEN
1220         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1221         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Stop_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_stp_no_weekday_layovers');
1222         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Stop_Info');
1223 
1224    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_weekend_layovers THEN
1225         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1226         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Stop_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_stp_no_weekend_layovers');
1227         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Stop_Info');
1228 
1229    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_distance THEN
1230         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1231         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Stop_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_stp_no_distance');
1232         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Stop_Info');
1233 
1234    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_time THEN
1235         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1236         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Stop_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_stp_no_time');
1237         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Stop_Info');
1238 
1239    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_pickup_weight THEN
1240         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1241         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Stop_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_stp_no_pickup_weight');
1242         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Stop_Info');
1243 
1244    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_pickup_volume THEN
1245         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1246         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Stop_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_stp_no_pickup_volume');
1247         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Stop_Info');
1248 
1249    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_pickup_pallets THEN
1250         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1251         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Stop_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_stp_no_pickup_pallets');
1252         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Stop_Info');
1253 
1254    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_pickup_containers THEN
1255         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1256         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Stop_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_stp_no_pickup_containers');
1257         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Stop_Info');
1258 
1259    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_loading_protocol THEN
1260         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1261         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Stop_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_stp_no_loading_protocol');
1262         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Stop_Info');
1263 
1264    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_dropoff_weight THEN
1265         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1266         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Stop_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_stp_no_dropoff_weight');
1267         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Stop_Info');
1268 
1269    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_dropoff_volume THEN
1270         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1271         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Stop_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_stp_no_dropoff_volume');
1272         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Stop_Info');
1273 
1274    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_dropoff_pallets THEN
1275         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1276         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Stop_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_stp_no_dropoff_pallets');
1277         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Stop_Info');
1278 
1279    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_dropoff_containers THEN
1280         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1281         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Stop_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_stp_no_dropoff_containers');
1282         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Stop_Info');
1283 
1284    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_stop_region THEN
1285         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1286         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Stop_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_stp_no_stop_region');
1287         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Stop_Info');
1288 
1289    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_arrival_date THEN
1290         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1291         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Stop_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_stp_no_arrival_date');
1292         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Stop_Info');
1293 
1294    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_departure_date THEN
1295         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1296         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Stop_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_stp_no_departure_date');
1297         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Stop_Info');
1298 
1299    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_fac_charge_basis THEN
1300         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1301         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Stop_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_stp_no_fac_charge_basis');
1302         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Stop_Info');
1303 
1304    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_fac_currency THEN
1305         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1306         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Stop_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_stp_no_fac_currency');
1307         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Stop_Info');
1308 
1309    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_fac_modifier_id THEN
1310         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1311         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Stop_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_stp_no_fac_modifier_id');
1312         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Stop_Info');
1313 
1314    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_fac_pricelist_id THEN
1315         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1316         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Stop_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_stp_no_fac_pricelist_id');
1317         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Stop_Info');
1318 
1319 
1320 
1321    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_fac_weight_uom THEN
1322         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1323         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Stop_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_stp_no_fac_weight_uom');
1324         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Stop_Info');
1325 
1326    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_fac_volume_uom THEN
1327         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1328         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Stop_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_stp_no_fac_volume_uom');
1329         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Stop_Info');
1330 
1331    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_fac_distance_uom THEN
1332         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1333         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Stop_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_stp_no_fac_distance_uom');
1334         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Stop_Info');
1335 
1336    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_stp_no_fac_time_uom THEN
1337         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1338         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Stop_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_stp_no_fac_time_uom');
1339         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Stop_Info');
1340 
1341 
1342    WHEN others THEN
1343         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
1344         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Stop_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
1345         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
1346         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Stop_Info');
1347 
1348 END Validate_Stop_Info;
1349 
1350 --Validates a single cached delivery leg structure
1351 
1352 PROCEDURE Validate_Dleg_Info(
1353 	x_dleg_info IN OUT NOCOPY TL_delivery_leg_rec_type,
1354 	x_return_status	OUT	NOCOPY	VARCHAR2) IS
1355 
1356 l_return_status VARCHAR2(1);
1357 
1358 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
1359 
1360 	l_warning_count 	NUMBER:=0;
1361 BEGIN
1362 
1363 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
1364 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Validate_Dleg_Info','start');
1365 
1366 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
1367 
1368 	IF (x_dleg_info.delivery_leg_id IS NULL)
1369 	THEN
1370 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_dlg_no_delivery_leg_id;
1371 	END IF;
1372 
1373 
1374 	IF (x_dleg_info.trip_id IS NULL)
1375 	THEN
1376 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_dlg_no_trip_id;
1377 	END IF;
1378 
1379 	IF (x_dleg_info.delivery_id IS NULL)
1380 	THEN
1381 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_dlg_no_delivery_id;
1382 	END IF;
1383 
1384 	IF (x_dleg_info.pickup_stop_id IS NULL)
1385 	THEN
1386 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_dlg_no_pickup_stop_id;
1387 	END IF;
1388 
1389 	IF (x_dleg_info.pickup_location_id IS NULL)
1390 	THEN
1391 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_dlg_no_pickup_loc_id;
1392 	END IF;
1393 
1394 	IF (x_dleg_info.dropoff_stop_id IS NULL)
1395 	THEN
1396 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_dlg_no_dropoff_stop_id;
1397 	END IF;
1398 
1399 	IF (x_dleg_info.dropoff_location_id IS NULL)
1400 	THEN
1401 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_dlg_no_dropoff_loc_id;
1402 	END IF;
1403 
1404 	IF (x_dleg_info.weight IS NULL)
1405 	THEN
1406 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_dlg_no_weight;
1407 	END IF;
1408 
1409 	IF (x_dleg_info.volume IS NULL)
1410 	THEN
1411 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_dlg_no_volume;
1412 	END IF;
1413 
1414 	IF (x_dleg_info.pallets IS NULL)
1415 	THEN
1416 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_dlg_no_pallets;
1417 	END IF;
1418 
1419 
1420 	IF (x_dleg_info.containers IS NULL)
1421 	THEN
1422 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_dlg_no_containers;
1423 	END IF;
1424 
1425 	IF (x_dleg_info.distance IS NULL)
1426 	THEN
1427 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_dlg_no_distance;
1428 	END IF;
1429 
1430 	IF (x_dleg_info.direct_distance IS NULL)
1431 	THEN
1432 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_dlg_no_direct_distance;
1433 	END IF;
1434 
1435 	IF (x_dleg_info.children_weight IS NULL)
1436 	THEN
1437 		x_dleg_info.children_weight:=0;
1438 	END IF;
1439 
1440 	IF (x_dleg_info.children_volume IS NULL)
1441 	THEN
1442 		x_dleg_info.children_volume:=0;
1443 	END IF;
1444 
1445 	IF (x_dleg_info.is_parent_dleg IS NULL)
1446 	THEN
1447 		x_dleg_info.is_parent_dleg:='N';
1448 	END IF;
1449 
1450 	IF (x_dleg_info.parent_with_no_consol_lpn IS NULL)
1451 	THEN
1452 		x_dleg_info.parent_with_no_consol_lpn:='N';
1453 	END IF;
1454 
1455 
1456 
1457         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Dleg_Info');
1458 
1459 
1460 	IF (l_warning_count > 0)
1461 	THEN
1462 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
1463 	END IF;
1464 EXCEPTION
1465 
1466   WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_dlg_no_delivery_leg_id THEN
1467         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1468         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Dleg_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_dlg_no_delivery_leg_id');
1469         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Dleg_Info');
1470 
1471   WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_dlg_no_trip_id THEN
1472         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1473         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Dleg_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_dlg_no_trip_id');
1474         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Dleg_Info');
1475 
1476   WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_dlg_no_delivery_id THEN
1477         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1478         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Dleg_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_dlg_no_delivery_id');
1479         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Dleg_Info');
1480 
1481  WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_dlg_no_pickup_stop_id THEN
1482          x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1483          FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Dleg_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_dlg_no_pickup_stop_id');
1484          FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Dleg_Info');
1485 
1486    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_dlg_no_pickup_loc_id THEN
1487          x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1488          FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Dleg_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_dlg_no_pickup_loc_id');
1489          FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Dleg_Info');
1490 
1491    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_dlg_no_dropoff_stop_id THEN
1492          x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1493          FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Dleg_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_dlg_no_dropoff_stop_id');
1494          FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Dleg_Info');
1495  WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_dlg_no_dropoff_loc_id THEN
1496          x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1497          FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Dleg_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_dlg_no_dropoff_loc_id');
1498          FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Dleg_Info');
1499 
1500    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_dlg_no_weight THEN
1501          x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1502          FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Dleg_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_dlg_no_weight');
1503          FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Dleg_Info');
1504 
1505    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_dlg_no_volume THEN
1506          x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1507          FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Dleg_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_dlg_no_volume');
1508          FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Dleg_Info');
1509 
1510    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_dlg_no_pallets THEN
1511          x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1512          FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Dleg_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_dlg_no_pallets');
1513          FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Dleg_Info');
1514 
1515    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_dlg_no_containers THEN
1516          x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1517          FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Dleg_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_dlg_no_containers');
1518          FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Dleg_Info');
1519 
1520    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_dlg_no_distance THEN
1521          x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1522          FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Dleg_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_dlg_no_distance');
1523          FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Dleg_Info');
1524 
1525    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_dlg_no_direct_distance THEN
1526          x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1527          FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Dleg_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_dlg_no_direct_distance');
1528          FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Dleg_Info');
1529 
1530    WHEN others THEN
1531         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
1532         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Dleg_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
1533         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
1534         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Dleg_Info');
1535 
1536 END  Validate_Dleg_Info;
1537 
1538 
1539 --Validates a single cached delivery detail structure
1540 
1541 PROCEDURE Validate_Dlv_Detail_Info(
1542 	p_carrier_pref_rec IN TL_CARRIER_PREF_REC_TYPE,
1543 	x_dlv_detail_info IN OUT NOCOPY FTE_FREIGHT_PRICING.shipment_line_rec_type,
1544 	x_return_status	OUT	NOCOPY	VARCHAR2) IS
1545 
1546 l_return_status VARCHAR2(1);
1547 
1548 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
1549 
1550 	l_warning_count 	NUMBER:=0;
1551 BEGIN
1552 
1553 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
1554 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Validate_Dlv_Detail_Info','start');
1555 
1556 
1557 	IF (x_dlv_detail_info.delivery_detail_id IS NULL)
1558 	THEN
1559 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_dtl_no_dlv_dtl_id;
1560 	END IF;
1561 
1562 	IF (x_dlv_detail_info.delivery_id IS NULL)
1563 	THEN
1564 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_dtl_no_dlv_id;
1565 	END IF;
1566 
1567 	IF (x_dlv_detail_info.delivery_leg_id IS NULL)
1568 	THEN
1569 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_dtl_no_dlg_id;
1570 	END IF;
1571 
1572 	IF (x_dlv_detail_info.gross_weight IS NULL)
1573 	THEN
1574 		--3958974
1575 		x_dlv_detail_info.gross_weight:=0;
1576 		x_dlv_detail_info.weight_uom_code:=p_carrier_pref_rec.weight_uom;
1577 
1578 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
1579 		--	p_api=>'Validate_Dlv_Detail_Info',
1580 		--	p_exc=>'g_tl_dtl_no_gross_weight',
1581 		--	p_delivery_detail_id=>x_dlv_detail_info.delivery_detail_id);
1582 
1583 		--raise FTE_FREIGHT_PRICING_UTIL.g_tl_dtl_no_gross_weight;
1584 	END IF;
1585 
1586 	IF (x_dlv_detail_info.weight_uom_code IS NULL)
1587 	THEN
1588 		--Show only generic message
1589 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
1590 		--	p_api=>'Validate_Dlv_Detail_Info',
1591 		--	p_exc=>'g_tl_dtl_no_weight_uom',
1592 		--	p_delivery_detail_id=>x_dlv_detail_info.delivery_detail_id);
1593 
1594 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_dtl_no_weight_uom;
1595 	END IF;
1596 
1597 	IF (x_dlv_detail_info.volume IS NULL)
1598 	THEN
1599 		--3958974
1600 		x_dlv_detail_info.volume:=0;
1601 		x_dlv_detail_info.volume_uom_code:=p_carrier_pref_rec.volume_uom;
1602 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
1603 		--	p_api=>'Validate_Dlv_Detail_Info',
1604 		--	p_exc=>'g_tl_dtl_no_volume',
1605 		--	p_delivery_detail_id=>x_dlv_detail_info.delivery_detail_id);
1606 
1607 		--raise FTE_FREIGHT_PRICING_UTIL.g_tl_dtl_no_volume;
1608 	END IF;
1609 
1610 	IF (x_dlv_detail_info.volume_uom_code IS NULL)
1611 	THEN
1612 		--Show only generic message
1613 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
1614 		--	p_api=>'Validate_Dlv_Detail_Info',
1615 		--	p_exc=>'g_tl_dtl_no_volume_uom',
1616 		--	p_delivery_detail_id=>x_dlv_detail_info.delivery_detail_id);
1617 
1618 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_dtl_no_volume_uom;
1619 	END IF;
1620 
1621 
1622 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
1623 
1624         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Dlv_Detail_Info');
1625 
1626 	IF (l_warning_count > 0)
1627 	THEN
1628 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
1629 	END IF;
1630 EXCEPTION
1631 
1632    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_dtl_no_dlv_dtl_id THEN
1633         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1634         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Dlv_Detail_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_dtl_no_dlv_dtl_id');
1635         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Dlv_Detail_Info');
1636 
1637    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_dtl_no_dlv_id THEN
1638         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1639         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Dlv_Detail_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_dtl_no_dlv_id');
1640         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Dlv_Detail_Info');
1641 
1642    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_dtl_no_dlg_id THEN
1643         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1644         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Dlv_Detail_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_dtl_no_dlg_id');
1645         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Dlv_Detail_Info');
1646 
1647    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_dtl_no_gross_weight THEN
1648         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1649         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Dlv_Detail_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_dtl_no_gross_weight');
1650         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Dlv_Detail_Info');
1651 
1652    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_dtl_no_weight_uom THEN
1653         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1654         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Dlv_Detail_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_dtl_no_weight_uom');
1655         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Dlv_Detail_Info');
1656 
1657    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_dtl_no_volume THEN
1658         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1659         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Dlv_Detail_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_dtl_no_volume');
1660         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Dlv_Detail_Info');
1661 
1662    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_dtl_no_volume_uom THEN
1663         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1664         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Dlv_Detail_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_dtl_no_volume_uom');
1665         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Dlv_Detail_Info');
1666 
1667 
1668    WHEN others THEN
1669         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
1670         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Dlv_Detail_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
1671         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
1672         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Dlv_Detail_Info');
1673 
1674 END  Validate_Dlv_Detail_Info;
1675 
1676 --Validates a single cached carrier structure
1677 
1678 PROCEDURE Validate_Carrier_Info(
1679 	x_carrier_info IN OUT NOCOPY TL_CARRIER_PREF_REC_TYPE,
1680 	x_return_status	OUT	NOCOPY	VARCHAR2) IS
1681 
1682 l_return_status VARCHAR2(1);
1683 
1684 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
1685 
1686 	l_warning_count 	NUMBER:=0;
1687 BEGIN
1688 
1689 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
1690 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Validate_Carrier_Info','start');
1691 
1692 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
1693 
1694 	IF(x_carrier_info.carrier_id IS NULL)
1695 	THEN
1696 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_car_no_carrier_id;
1697 	END IF;
1698 
1699           -- VVP:09/18/03
1700           -- Per Hema, out of route charges need to be calculated
1701           -- regardless of distance calc method, eventhough typicaly
1702           -- this charge is not needed for Full Route method
1703           -- Also, if max_out_of_route is NULL, this means that no charge to be applied
1704           -- - this is not the same as max_out_of_route=0
1705 
1706 	IF(x_carrier_info.max_out_of_route IS NULL)
1707 	THEN
1708 		-- x_carrier_info.max_out_of_route:=0;
1709 		x_carrier_info.max_out_of_route:=NULL;
1710 		--raise FTE_FREIGHT_PRICING_UTIL.g_tl_car_no_max_out_of_route;
1711 	END IF;
1712 
1713 	IF(x_carrier_info.min_cm_distance IS NULL)
1714 	THEN
1715 		--raise FTE_FREIGHT_PRICING_UTIL.g_tl_car_no_min_cm_distance;
1716 		x_carrier_info.min_cm_distance:=0;
1717 	END IF;
1718 
1719 	IF(x_carrier_info.min_cm_time IS NULL)
1720 	THEN
1721 		--raise FTE_FREIGHT_PRICING_UTIL.g_tl_car_no_min_cm_time;
1722 		x_carrier_info.min_cm_time:=0;
1723 	END IF;
1724 
1725 	IF(x_carrier_info.cm_free_dh_mileage IS NULL)
1726 	THEN
1727 		--raise FTE_FREIGHT_PRICING_UTIL.g_tl_car_no_cm_free_dh_mileage;
1728 		x_carrier_info.cm_free_dh_mileage:=0;
1729 	END IF;
1730 
1731 	IF(x_carrier_info.cm_first_load_discount_flag IS NULL)
1732 	THEN
1733 		--raise FTE_FREIGHT_PRICING_UTIL.g_tl_car_no_cm_frst_ld_dsc_flg;
1734 		x_carrier_info.cm_first_load_discount_flag:='Y';
1735 	END IF;
1736 
1737 
1738 	IF(x_carrier_info.currency IS NULL)
1739 	THEN
1740 		--Show only generic message
1741 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
1742 		--	p_api=>'Validate_Carrier_Info',
1743 		--	p_exc=>'g_tl_car_no_currency',
1744 		--	p_carrier_id=>x_carrier_info.carrier_id);
1745 
1746 
1747 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_car_no_currency;
1748 	END IF;
1749 
1750 	IF(x_carrier_info.cm_rate_variant IS NULL)
1751 	THEN
1752 		null;
1753 
1754 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
1755 		--	p_api=>'Validate_Carrier_Info',
1756 		--	p_exc=>'g_tl_car_no_cm_rate_variant',
1757 		--	p_carrier_id=>x_carrier_info.carrier_id);
1758 
1759 	        --raise error only if the trip is part of continous move
1760 		--raise FTE_FREIGHT_PRICING_UTIL.g_tl_car_no_cm_rate_variant;
1761 	END IF;
1762 
1763 	IF(x_carrier_info.unit_basis IS NULL)
1764 	THEN
1765 		--Show only generic message
1766 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
1767 		--	p_api=>'Validate_Carrier_Info',
1768 		--	p_exc=>'g_tl_car_no_unit_basis',
1769 		--	p_carrier_id=>x_carrier_info.carrier_id);
1770 
1771 
1772 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_car_no_unit_basis;
1773 	END IF;
1774 
1775 	IF(x_carrier_info.weight_uom IS NULL)
1776 	THEN
1777 		--Show only generic message
1778 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
1779 		--	p_api=>'Validate_Carrier_Info',
1780 		--	p_exc=>'g_tl_car_no_weight_uom',
1781 		--	p_carrier_id=>x_carrier_info.carrier_id);
1782 
1783 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_car_no_weight_uom;
1784 	END IF;
1785 
1786 	IF(x_carrier_info.volume_uom IS NULL)
1787 	THEN
1788 
1789 		--Show only generic message
1790 
1791 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
1792 		--	p_api=>'Validate_Carrier_Info',
1793 		--	p_exc=>'g_tl_car_no_volume_uom',
1794 		--	p_carrier_id=>x_carrier_info.carrier_id);
1795 
1796 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_car_no_volume_uom;
1797 	END IF;
1798 
1799 	IF(x_carrier_info.distance_uom IS NULL)
1800 	THEN
1801 
1802 		--Show only generic message
1803 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
1804 		--	p_api=>'Validate_Carrier_Info',
1805 		--	p_exc=>'g_tl_car_no_distance_uom',
1806 		--	p_carrier_id=>x_carrier_info.carrier_id);
1807 
1808 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_car_no_distance_uom;
1809 	END IF;
1810 
1811 
1812 	IF(x_carrier_info.time_uom IS NULL)
1813 	THEN
1814 		--Show only generic message
1815 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
1816 		--	p_api=>'Validate_Carrier_Info',
1817 		--	p_exc=>'g_tl_car_no_time_uom',
1818 		--	p_carrier_id=>x_carrier_info.carrier_id);
1819 
1820 
1821 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_car_no_time_uom;
1822 	END IF;
1823 
1824 	--IF(x_carrier_info.region_level IS NULL)
1825 	--THEN
1826 
1827 	--END IF;
1828 
1829 	IF(x_carrier_info.distance_calculation_method IS NULL)
1830 	THEN
1831 		x_carrier_info.distance_calculation_method:='FULL_ROUTE';
1832 	END IF;
1833 
1834 	IF((x_carrier_info.dim_factor IS NULL)
1835 		OR (x_carrier_info.dim_factor=0)
1836 		OR(x_carrier_info.dim_weight_uom IS NULL)
1837 		OR (x_carrier_info.dim_volume_uom IS NULL)
1838 		OR (x_carrier_info.dim_length_uom IS NULL) )
1839 	THEN
1840 		FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'Dim Factor is:'||
1841 		x_carrier_info.dim_factor||' Dim weight UOM:'||x_carrier_info.dim_weight_uom||
1842 		'Dim Vol UOM:'||x_carrier_info.dim_volume_uom
1843 		||' Dim Dimension UOM:'||x_carrier_info.dim_length_uom);
1844 
1845 		FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'Resetting Dim parameters');
1846 
1847 		x_carrier_info.dim_factor:=NULL;
1848 		x_carrier_info.dim_weight_uom:=NULL;
1849 		x_carrier_info.dim_volume_uom:=NULL;
1850 		x_carrier_info.dim_length_uom:=NULL;
1851 		x_carrier_info.dim_min_volume:=NULL;
1852 	END IF;
1853 
1854 
1855 	IF (x_carrier_info.dim_min_volume IS NULL)
1856 	THEN
1857 	    x_carrier_info.dim_min_volume:=0;
1858 	END IF;
1859 
1860 
1861         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Carrier_Info');
1862 
1863 	IF (l_warning_count > 0)
1864 	THEN
1865 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
1866 	END IF;
1867 EXCEPTION
1868 
1869    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_car_no_carrier_id THEN
1870         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1871         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Carrier_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_car_no_carrier_id');
1872         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Carrier_Info');
1873 
1874    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_car_no_max_out_of_route THEN
1875         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1876         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Carrier_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_car_no_max_out_of_route');
1877         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Carrier_Info');
1878 
1879    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_car_no_min_cm_distance THEN
1880         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1881         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Carrier_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_car_no_min_cm_distance');
1882         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Carrier_Info');
1883 
1884    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_car_no_min_cm_time THEN
1885         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1886         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Carrier_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_car_no_min_cm_time');
1887         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Carrier_Info');
1888 
1889    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_car_no_cm_free_dh_mileage THEN
1890         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1891         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Carrier_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_car_no_cm_free_dh_mileage');
1892         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Carrier_Info');
1893 
1894    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_car_no_cm_frst_ld_dsc_flg THEN
1895         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1896         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Carrier_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_car_no_cm_frst_ld_dsc_flg');
1897         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Carrier_Info');
1898 
1899    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_car_no_currency THEN
1900         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1901         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Carrier_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_car_no_currency');
1902         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Carrier_Info');
1903 
1904    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_car_no_cm_rate_variant THEN
1905         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1906         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Carrier_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_car_no_cm_rate_variant');
1907         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Carrier_Info');
1908 
1909    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_car_no_unit_basis THEN
1910         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1911         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Carrier_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_car_no_unit_basis');
1912         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Carrier_Info');
1913 
1914    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_car_no_weight_uom THEN
1915         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1916         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Carrier_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_car_no_weight_uom');
1917         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Carrier_Info');
1918 
1919    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_car_no_volume_uom THEN
1920         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1921         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Carrier_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_car_no_volume_uom');
1922         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Carrier_Info');
1923 
1924    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_car_no_distance_uom THEN
1925         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1926         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Carrier_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_car_no_distance_uom');
1927         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Carrier_Info');
1928 
1929    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_car_no_time_uom THEN
1930         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1931         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Carrier_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_car_no_time_uom');
1932         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Carrier_Info');
1933 
1934    WHEN others THEN
1935         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
1936         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Carrier_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
1937         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
1938         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Carrier_Info');
1939 
1940 END  Validate_Carrier_Info;
1941 
1942 
1943 PROCEDURE Validate_Trip_Cache(
1944 	p_trip_index IN NUMBER,
1945 	x_return_status	OUT	NOCOPY	VARCHAR2) IS
1946 
1947 l_return_status VARCHAR2(1);
1948 
1949 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
1950 
1951 	l_warning_count 	NUMBER:=0;
1952 BEGIN
1953 
1954 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
1955 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Validate_Trip_Cache','start');
1956 
1957 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
1958 
1959 
1960 	IF( g_tl_trip_rows.EXISTS(p_trip_index)  AND g_tl_carrier_pref_rows.EXISTS(p_trip_index))
1961 	THEN
1962 
1963 		IF ((g_tl_trip_rows(p_trip_index).continuous_move = 'Y')
1964 			AND (g_tl_carrier_pref_rows(p_trip_index).cm_rate_variant IS NULL))
1965 		THEN
1966 			--Show only generic message
1967 			--FTE_FREIGHT_PRICING_UTIL.setmsg (
1968 			--	p_api=>'Validate_Trip_Cache',
1969 			--	p_exc=>'g_tl_car_no_cm_rate_variant',
1970 			--	p_carrier_id=>g_tl_carrier_pref_rows(p_trip_index).carrier_id);
1971 
1972 
1973 			raise FTE_FREIGHT_PRICING_UTIL.g_tl_car_no_cm_rate_variant;
1974 
1975 		END IF;
1976 	ELSE
1977 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_trip_index_invalid;
1978 
1979 	END IF;
1980 
1981 
1982 
1983 
1984 
1985 
1986         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Trip_Cache');
1987 
1988 	IF (l_warning_count > 0)
1989 	THEN
1990 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
1991 	END IF;
1992 
1993 
1994 EXCEPTION
1995 
1996    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_car_no_cm_rate_variant THEN
1997         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
1998         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Trip_Cache',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_car_no_cm_rate_variant');
1999         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Trip_Cache');
2000 
2001    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_trip_index_invalid THEN
2002         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
2003         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Trip_Cache',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_trip_index_invalid');
2004         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Trip_Cache');
2005 
2006    WHEN others THEN
2007         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
2008         FTE_FREIGHT_PRICING_UTIL.set_exception('Validate_Trip_Cache',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
2009         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
2010         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Validate_Trip_Cache');
2011 
2012 
2013 END Validate_Trip_Cache;
2014 
2015 
2016 PROCEDURE Partially_Delete_Cache(
2017 	p_trip_index IN NUMBER,
2018 	p_carrier_index	IN NUMBER,
2019 	p_stop_index IN NUMBER,
2020 	p_dleg_index IN NUMBER,
2021 	p_child_dleg_index IN NUMBER) IS
2022 BEGIN
2023 
2024 	g_tl_trip_rows.DELETE(p_trip_index);
2025 	g_tl_carrier_pref_rows.DELETE(p_carrier_index);
2026 
2027 	g_tl_trip_stop_rows.DELETE(p_stop_index,g_tl_trip_stop_rows.LAST);
2028 	g_tl_delivery_leg_rows.DELETE(p_dleg_index,g_tl_delivery_leg_rows.LAST);
2029 	g_tl_chld_delivery_leg_rows.DELETE(p_child_dleg_index,g_tl_chld_delivery_leg_rows.LAST);
2030 
2031 END Partially_Delete_Cache;
2032 
2033 --Deletes everything in the global cached structures
2034 
2035 PROCEDURE Delete_Cache(x_return_status OUT NOCOPY VARCHAR2) IS
2036 
2037 l_return_status VARCHAR2(1);
2038 
2039 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
2040 
2041 	l_warning_count 	NUMBER:=0;
2042 BEGIN
2043 
2044 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
2045 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Delete_Cache','start');
2046 
2047 	--Delivery Leg Cache
2048 	g_tl_delivery_leg_rows.DELETE;
2049 
2050 	--Child Delivery Leg Cache
2051 	g_tl_chld_delivery_leg_rows.DELETE;
2052 
2053 
2054 	--Trip Cache
2055 	g_tl_trip_rows.DELETE;
2056 
2057 	--Trip Stop Rows
2058 	g_tl_trip_stop_rows.DELETE;
2059 
2060 	--Carrier preference cache
2061 	g_tl_carrier_pref_rows.DELETE;
2062 
2063 
2064 	--Delivery Detail map cache
2065 
2066 	g_tl_delivery_detail_map.DELETE;
2067 
2068 	--Delivery to delivery detail hash
2069 
2070 	g_tl_delivery_detail_hash.DELETE;
2071 
2072 
2073 	--Delete cache of delivery details
2074 
2075 	g_tl_shipment_line_rows.DELETE;
2076 
2077 
2078 	g_tl_int_shipment_line_rows.DELETE;
2079 
2080 
2081 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
2082 
2083         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Delete_Cache');
2084 
2085 	IF (l_warning_count > 0)
2086 	THEN
2087 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
2088 	END IF;
2089 EXCEPTION
2090    WHEN others THEN
2091         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
2092         FTE_FREIGHT_PRICING_UTIL.set_exception('Delete_Cache',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
2093         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
2094         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Delete_Cache');
2095 
2096 END Delete_Cache;
2097 
2098 -- Adds the delivery detail record into the gloabal cache
2099 
2100 PROCEDURE Insert_Into_Dlv_Dtl_Cache(
2101 	p_dlv_dtl_rec IN FTE_FREIGHT_PRICING.shipment_line_rec_type,
2102 	x_return_status	OUT	NOCOPY	VARCHAR2) IS
2103 
2104 	l_map_index NUMBER;
2105 	l_map_rec TL_DLV_DETAIL_MAP_REC_TYPE;
2106 
2107 
2108 l_return_status VARCHAR2(1);
2109 
2110 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
2111 
2112 	l_warning_count 	NUMBER:=0;
2113 BEGIN
2114 
2115 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
2116 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Insert_Into_Dlv_Dtl_Cache','start');
2117 
2118 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
2119 	IF ( NOT ( g_tl_shipment_line_rows.EXISTS(
2120 		p_dlv_dtl_rec.delivery_detail_id ) ) )
2121 	THEN
2122 
2123 		--Add the association that this dlv detail belongs to a specific delivery
2124 
2125 		IF (g_tl_delivery_detail_map.LAST IS NULL)
2126 		THEN
2127 			l_map_index:=1;
2128 		ELSE
2129 			l_map_index:=g_tl_delivery_detail_map.LAST+1;
2130 		END IF;
2131 		IF
2132 		(NOT(g_tl_delivery_detail_hash.EXISTS(p_dlv_dtl_rec.delivery_id)
2133 		))
2134 		THEN
2135 			g_tl_delivery_detail_hash(p_dlv_dtl_rec.delivery_id):=
2136 			l_map_index;
2137 
2138 		END IF;
2139 
2140 		l_map_rec.delivery_id:=p_dlv_dtl_rec.delivery_id;
2141 		l_map_rec.delivery_detail_id:=p_dlv_dtl_rec.delivery_detail_id;
2142 
2143 
2144 		g_tl_delivery_detail_map(l_map_index):=l_map_rec;
2145 
2146 
2147 		--Add to cache
2148 
2149 		g_tl_shipment_line_rows(
2150 			p_dlv_dtl_rec.delivery_detail_id):=p_dlv_dtl_rec;
2151 	END IF;
2152 
2153         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Insert_Into_Dlv_Dtl_Cache');
2154 
2155 	IF (l_warning_count > 0)
2156 	THEN
2157 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
2158 	END IF;
2159 EXCEPTION
2160    WHEN others THEN
2161         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
2162         FTE_FREIGHT_PRICING_UTIL.set_exception('Insert_Into_Dlv_Dtl_Cache',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
2163         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
2164         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Insert_Into_Dlv_Dtl_Cache');
2165 
2166 END Insert_Into_Dlv_Dtl_Cache;
2167 
2168 -- Consolidated the records from WSH_CARRIER, WSH_CARRIER_SERVICE
2169 --Into a single record
2170 --Use the info in wsh_carrier_service, if not fall back on wsh_carrier
2171 
2172 PROCEDURE Combine_Carrier_Info(
2173 	p_carrier_pref_rec IN TL_CARRIER_PREF_REC_TYPE,
2174 	x_carrier_service_pref_rec IN OUT NOCOPY TL_CARRIER_PREF_REC_TYPE,
2175 	x_return_status	OUT	NOCOPY	VARCHAR2) IS
2176 
2177 l_return_status VARCHAR2(1);
2178 
2179 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
2180 
2181 	l_warning_count 	NUMBER:=0;
2182 BEGIN
2183 
2184 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
2185 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Combine_Carrier_Info','start');
2186 
2187 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
2188 	IF (x_carrier_service_pref_rec.carrier_id IS NULL)
2189 	THEN
2190 		x_carrier_service_pref_rec.carrier_id:=
2191 			p_carrier_pref_rec.carrier_id;
2192 	END IF;
2193 
2194 	IF (x_carrier_service_pref_rec.max_out_of_route IS NULL)
2195 	THEN
2196 		x_carrier_service_pref_rec.max_out_of_route:=
2197 			p_carrier_pref_rec.max_out_of_route;
2198 	END IF;
2199 
2200 	IF (x_carrier_service_pref_rec.min_cm_distance IS NULL)
2201 	THEN
2202 		x_carrier_service_pref_rec.min_cm_distance:=
2203 			p_carrier_pref_rec.min_cm_distance;
2204 	END IF;
2205 
2206 	IF (x_carrier_service_pref_rec.min_cm_time IS NULL)
2207 	THEN
2208 		x_carrier_service_pref_rec.min_cm_time:=
2209 			p_carrier_pref_rec.min_cm_time;
2210 	END IF;
2211 
2212 	IF (x_carrier_service_pref_rec.cm_free_dh_mileage IS NULL)
2213 	THEN
2214 		x_carrier_service_pref_rec.cm_free_dh_mileage:=
2215 			p_carrier_pref_rec.cm_free_dh_mileage;
2216 	END IF;
2217 
2218 	IF (x_carrier_service_pref_rec.cm_first_load_discount_flag IS NULL)
2219 	THEN
2220 		x_carrier_service_pref_rec.cm_first_load_discount_flag:=
2221 			p_carrier_pref_rec.cm_first_load_discount_flag;
2222 	END IF;
2223 
2224 	IF (x_carrier_service_pref_rec.currency IS NULL)
2225 	THEN
2226 		x_carrier_service_pref_rec.currency:=
2227 			p_carrier_pref_rec.currency;
2228 	END IF;
2229 
2230 	IF (x_carrier_service_pref_rec.cm_rate_variant IS NULL)
2231 	THEN
2232 		x_carrier_service_pref_rec.cm_rate_variant:=
2233 			p_carrier_pref_rec.cm_rate_variant;
2234 	END IF;
2235 
2236 	IF (x_carrier_service_pref_rec.unit_basis IS NULL)
2237 	THEN
2238 		x_carrier_service_pref_rec.unit_basis:=
2239 			p_carrier_pref_rec.unit_basis;
2240 	END IF;
2241 
2242 	IF (x_carrier_service_pref_rec.weight_uom_class IS NULL)
2243 	THEN
2244 		x_carrier_service_pref_rec.weight_uom_class:=
2245 			p_carrier_pref_rec.weight_uom_class;
2246 	END IF;
2247 
2248 	IF (x_carrier_service_pref_rec.weight_uom IS NULL)
2249 	THEN
2250 		x_carrier_service_pref_rec.weight_uom:=
2251 			p_carrier_pref_rec.weight_uom;
2252 	END IF;
2253 
2254 	IF (x_carrier_service_pref_rec.volume_uom_class IS NULL)
2255 	THEN
2256 		x_carrier_service_pref_rec.volume_uom_class:=
2257 			p_carrier_pref_rec.volume_uom_class;
2258 	END IF;
2259 
2260 	IF (x_carrier_service_pref_rec.volume_uom IS NULL)
2261 	THEN
2262 		x_carrier_service_pref_rec.volume_uom:=
2263 			p_carrier_pref_rec.volume_uom;
2264 	END IF;
2265 
2266 	IF (x_carrier_service_pref_rec.distance_uom_class IS NULL)
2267 	THEN
2268 		x_carrier_service_pref_rec.distance_uom_class:=
2269 			p_carrier_pref_rec.distance_uom_class;
2270 	END IF;
2271 
2272 	IF (x_carrier_service_pref_rec.distance_uom IS NULL)
2273 	THEN
2274 		x_carrier_service_pref_rec.distance_uom:=
2275 			p_carrier_pref_rec.distance_uom;
2276 	END IF;
2277 
2278 	IF (x_carrier_service_pref_rec.time_uom_class IS NULL)
2279 	THEN
2280 		x_carrier_service_pref_rec.time_uom_class:=
2281 			p_carrier_pref_rec.time_uom_class;
2282 	END IF;
2283 
2284 	IF (x_carrier_service_pref_rec.time_uom IS NULL)
2285 	THEN
2286 		x_carrier_service_pref_rec.time_uom:=
2287 			p_carrier_pref_rec.time_uom;
2288 	END IF;
2289 
2290 	IF (x_carrier_service_pref_rec.region_level IS NULL)
2291 	THEN
2292 		x_carrier_service_pref_rec.region_level:=
2293 			p_carrier_pref_rec.region_level;
2294 	END IF;
2295 
2296 	IF (x_carrier_service_pref_rec.distance_calculation_method IS NULL)
2297 	THEN
2298 		x_carrier_service_pref_rec.distance_calculation_method:=
2299 			p_carrier_pref_rec.distance_calculation_method;
2300 	END IF;
2301 
2302 	--Dim Weight
2303 
2304 	IF((x_carrier_service_pref_rec.dim_factor IS NULL) OR(x_carrier_service_pref_rec.dim_factor=0))
2305 	THEN
2306 	--If Dim factor is null or 0 at carrier service level then take all the parameters at the carrier level
2307 		x_carrier_service_pref_rec.dim_factor	 :=p_carrier_pref_rec.dim_factor;
2308 		x_carrier_service_pref_rec.dim_weight_uom:=p_carrier_pref_rec.dim_weight_uom;
2309 		x_carrier_service_pref_rec.dim_volume_uom:=p_carrier_pref_rec.dim_volume_uom;
2310 		x_carrier_service_pref_rec.dim_length_uom:=p_carrier_pref_rec.dim_length_uom;
2311 		x_carrier_service_pref_rec.dim_min_volume:=p_carrier_pref_rec.dim_min_volume;
2312 
2313 	END IF;
2314 
2315         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Combine_Carrier_Info');
2316 
2317 	IF (l_warning_count > 0)
2318 	THEN
2319 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
2320 	END IF;
2321 EXCEPTION
2322    WHEN others THEN
2323         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
2324         FTE_FREIGHT_PRICING_UTIL.set_exception('Combine_Carrier_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
2325         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
2326         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Combine_Carrier_Info');
2327 
2328 END Combine_Carrier_Info;
2329 
2330 
2331 
2332 --Adds weight/vol/containers/pallets from the dlv detail into the stop
2333 -- and dleg where it is picked up from
2334 
2335 PROCEDURE Add_Pickup_Quantity(
2336 	p_dlv_detail_rec  IN FTE_FREIGHT_PRICING.shipment_line_rec_type,
2337 	p_carrier_pref IN TL_CARRIER_PREF_REC_TYPE,
2338 	x_stop_rec IN OUT NOCOPY TL_TRIP_STOP_INPUT_REC_TYPE,
2339 	x_dleg_quantity_tab IN OUT NOCOPY TL_dleg_quantity_tab_type,
2340 	x_return_status	OUT	NOCOPY	VARCHAR2) IS
2341 
2342 l_weight NUMBER;
2343 l_volume NUMBER;
2344 l_dim_weight NUMBER;
2345 
2346 l_dleg_id NUMBER;
2347 l_dleg_quantity_rec TL_dleg_quantity_rec_type;
2348 l_pallet VARCHAR2(1);
2349 l_mdc_add_to_stop VARCHAR2(1);
2350 l_return_status VARCHAR2(1);
2351 
2352 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
2353 
2354 	l_warning_count 	NUMBER:=0;
2355 BEGIN
2356 
2357 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
2358 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Add_Pickup_Quantity','start');
2359 
2360 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
2361 
2362 	l_volume:=0;
2363 	l_weight:=NULL;
2364 	l_mdc_add_to_stop:='Y';
2365 
2366 	IF((p_dlv_detail_rec.parent_delivery_leg_id IS NOT NULL)
2367 	AND NOT ((p_dlv_detail_rec.assignment_type IS NOT NULL) AND (p_dlv_detail_rec.assignment_type='C')
2368 	AND (p_dlv_detail_rec.parent_delivery_detail_id IS NULL) ))
2369 	THEN
2370 		l_mdc_add_to_stop:='N';
2371 	END IF;
2372 
2373 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'MDC Add to stop flag'||l_mdc_add_to_stop);
2374 
2375 	l_dleg_id:=p_dlv_detail_rec.delivery_leg_id;
2376 
2377 	IF(l_dleg_id IS NULL)
2378 	THEN
2379 
2380 		--Show only generic message
2381 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
2382 		--	p_api=>'Add_Pickup_Quantity',
2383 		--	p_exc=>'g_tl_no_dleg_id_in_dtl',
2384 		--	p_delivery_detail_id=>p_dlv_detail_rec.delivery_detail_id);
2385 
2386 		--throw an exception to delivery detail id
2387 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_no_dleg_id_in_dtl;
2388 
2389 
2390 	END IF;
2391 
2392 	--Add to dleg table, if the dleg of the dtl does not exist
2393 	--The dleg entry is used to hold summed quantities for all
2394 	--details on the dleg
2395 
2396 	IF (NOT(x_dleg_quantity_tab.EXISTS(l_dleg_id) ))
2397 	THEN
2398 
2399 		--Add new row
2400 
2401 		l_dleg_quantity_rec.delivery_leg_id:=l_dleg_id;
2402 		l_dleg_quantity_rec.weight:=0;
2403 		l_dleg_quantity_rec.volume:=0;
2404 		l_dleg_quantity_rec.pallets:=0;
2405 		l_dleg_quantity_rec.containers:=0;
2406 		x_dleg_quantity_tab(l_dleg_id):=l_dleg_quantity_rec;
2407 
2408 	END IF;
2409 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'
2410 	picked up'||p_dlv_detail_rec.gross_weight);
2411 
2412 
2413 	IF (p_dlv_detail_rec.volume IS NOT NULL)
2414 	THEN
2415 
2416 
2417 		l_volume:=FTE_FREIGHT_PRICING_UTIL.convert_uom(
2418 		p_dlv_detail_rec.volume_uom_code,
2419 		p_carrier_pref.volume_uom,
2420 		p_dlv_detail_rec.volume,
2421 		0);
2422 
2423 
2424 		IF (l_volume IS NULL)
2425 		THEN
2426 
2427 			--throw an exception UOM conversion failed
2428 			raise FTE_FREIGHT_PRICING_UTIL.g_tl_vol_uom_conv_fail;
2429 
2430 
2431 		END IF;
2432 
2433 		--Add to stop
2434 
2435 		IF (l_mdc_add_to_stop='Y')
2436 		THEN
2437 
2438 			x_stop_rec.pickup_volume:=x_stop_rec.pickup_volume + l_volume;
2439 		END IF;
2440 
2441 		--Add to dleg
2442 
2443 		x_dleg_quantity_tab(l_dleg_id).volume:=
2444 		x_dleg_quantity_tab(l_dleg_id).volume+l_volume;
2445 
2446 	END IF;
2447 
2448 
2449 
2450 	IF (p_dlv_detail_rec.gross_weight IS NOT NULL)
2451 	THEN
2452 		l_weight:=FTE_FREIGHT_PRICING_UTIL.convert_uom(
2453 			p_dlv_detail_rec.weight_uom_code,
2454 			p_carrier_pref.weight_uom,
2455 			p_dlv_detail_rec.gross_weight,
2456 			0);
2457 
2458 		IF (l_weight IS NULL)
2459 		THEN
2460 
2461 			FTE_FREIGHT_PRICING_UTIL.print_msg(
2462 				FTE_FREIGHT_PRICING_UTIL.G_DBG,
2463 				' picked up is null');
2464 
2465 			--throw an exception UOM conversion failed
2466 			raise FTE_FREIGHT_PRICING_UTIL.g_tl_weight_uom_conv_fail;
2467 
2468 
2469 		END IF;
2470 
2471 		IF (l_mdc_add_to_stop='Y')
2472 		THEN
2473 
2474 
2475 			Calculate_Dimensional_Weight(
2476 				p_carrier_pref_rec=>p_carrier_pref,
2477 				p_weight=>l_weight,
2478 				p_volume=>l_volume,
2479 				x_dim_weight=>l_dim_weight,
2480 				x_return_status=>l_return_status);
2481 
2482 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
2483 			THEN
2484 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
2485 			       THEN
2486 				  raise FTE_FREIGHT_PRICING_UTIL.g_tl_calc_dim_weight_fail;
2487 			       END IF;
2488 			END IF;
2489 
2490 
2491 			--Add to stop
2492 
2493 			x_stop_rec.pickup_weight:=x_stop_rec.pickup_weight + l_dim_weight;
2494 
2495 
2496 			--Add to dleg
2497 
2498 			x_dleg_quantity_tab(l_dleg_id).weight:=
2499 			x_dleg_quantity_tab(l_dleg_id).weight+l_dim_weight;
2500 		ELSE
2501 
2502 			--Non dim weight
2503 			x_dleg_quantity_tab(l_dleg_id).weight:=
2504 			x_dleg_quantity_tab(l_dleg_id).weight+l_weight;
2505 
2506 
2507 		END IF;
2508 
2509 
2510 	END IF;
2511 
2512 
2513 
2514 
2515 
2516 
2517 
2518 
2519 
2520 	Is_Detail_Pallet(
2521 		p_dlv_detail_id=>	p_dlv_detail_rec.delivery_detail_id,
2522 		x_pallet=>	l_pallet ,
2523 		x_return_status=>	l_return_status);
2524 
2525 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
2526 	THEN
2527 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
2528 	       THEN
2529 		  raise FTE_FREIGHT_PRICING_UTIL.g_tl_is_dtl_pallet_fail;
2530 	       END IF;
2531 	END IF;
2532 
2533 	--Detail is either a container or a pallet,not both
2534 
2535 	IF(l_pallet='Y')
2536 	THEN
2537 		x_dleg_quantity_tab(l_dleg_id).pallets:=
2538 			x_dleg_quantity_tab(l_dleg_id).pallets+1;
2539 
2540 		IF (l_mdc_add_to_stop='Y')
2541 		THEN
2542 
2543 			x_stop_rec.pickup_pallets:=x_stop_rec.pickup_pallets+1;
2544 		END IF;
2545 
2546 	--Number of containers is number of top level delivery details
2547 
2548 	ELSIF (p_dlv_detail_rec.parent_delivery_detail_id IS NULL)
2549 	THEN
2550 
2551 		--Add to stop
2552 		IF (l_mdc_add_to_stop='Y')
2553 		THEN
2554 
2555 			x_stop_rec.pickup_containers:=x_stop_rec.pickup_containers + 1;
2556 		END IF;
2557 
2558 		--Add to dleg
2559 
2560 		x_dleg_quantity_tab(l_dleg_id).containers:=
2561 			x_dleg_quantity_tab(l_dleg_id).containers+1;
2562 
2563 	END IF;
2564 
2565 
2566 
2567 
2568 
2569         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Add_Pickup_Quantity');
2570 
2571 	IF (l_warning_count > 0)
2572 	THEN
2573 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
2574 	END IF;
2575 EXCEPTION
2576 
2577 
2578    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_calc_dim_weight_fail THEN
2579         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
2580         FTE_FREIGHT_PRICING_UTIL.set_exception('Add_Pickup_Quantity',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_calc_dim_weight_fail');
2581         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Add_Pickup_Quantity');
2582 
2583 
2584    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_is_dtl_pallet_fail THEN
2585         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
2586         FTE_FREIGHT_PRICING_UTIL.set_exception('Add_Pickup_Quantity',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_is_dtl_pallet_fail');
2587         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Add_Pickup_Quantity');
2588 
2589    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_no_dleg_id_in_dtl THEN
2590         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
2591         FTE_FREIGHT_PRICING_UTIL.set_exception('Add_Pickup_Quantity',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_no_dleg_id_in_dtl');
2592         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Add_Pickup_Quantity');
2593 
2594    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_weight_uom_conv_fail THEN
2595         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
2596         FTE_FREIGHT_PRICING_UTIL.set_exception('Add_Pickup_Quantity',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_weight_uom_conv_fail');
2597         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Add_Pickup_Quantity');
2598 
2599    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_vol_uom_conv_fail THEN
2600         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
2601         FTE_FREIGHT_PRICING_UTIL.set_exception('Add_Pickup_Quantity',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_vol_uom_conv_fail');
2602         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Add_Pickup_Quantity');
2603 
2604    WHEN others THEN
2605         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
2606         FTE_FREIGHT_PRICING_UTIL.set_exception('Add_Pickup_Quantity',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
2607         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
2608         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Add_Pickup_Quantity');
2609 
2610 
2611 END Add_Pickup_Quantity;
2612 
2613 --Adds weight/vol/containers/pallets from the dlv detail into the stop
2614 -- and dleg where it is droppped off
2615 
2616 
2617 PROCEDURE Add_Dropoff_Quantity(
2618 	p_dlv_detail_rec  IN FTE_FREIGHT_PRICING.shipment_line_rec_type,
2619 	p_carrier_pref IN TL_CARRIER_PREF_REC_TYPE,
2620 	x_stop_rec IN OUT NOCOPY TL_TRIP_STOP_INPUT_REC_TYPE,
2621 	x_return_status	OUT	NOCOPY	VARCHAR2)
2622 IS
2623 
2624 
2625 	l_weight	NUMBER;
2626 	l_volume 	NUMBER;
2627 	l_dim_weight    NUMBER;
2628 	l_pallet VARCHAR2(1);
2629 l_return_status VARCHAR2(1);
2630 
2631 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
2632 
2633 	l_warning_count 	NUMBER:=0;
2634 BEGIN
2635 
2636 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
2637 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Add_Dropoff_Quantity','start');
2638 
2639 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
2640 
2641 
2642 	IF((p_dlv_detail_rec.parent_delivery_leg_id IS NOT NULL)
2643 	AND NOT ((p_dlv_detail_rec.assignment_type IS NOT NULL) AND (p_dlv_detail_rec.assignment_type='C')
2644 	AND (p_dlv_detail_rec.parent_delivery_detail_id IS NULL) ))
2645 	THEN
2646 
2647 		FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'MDC Not adding Dropoff Quantity');
2648 
2649 	ELSE
2650 
2651 		l_weight:=NULL;
2652 		l_volume:=0;
2653 
2654 
2655 
2656 		IF (p_dlv_detail_rec.volume IS NOT NULL)
2657 		THEN
2658 			l_volume:=FTE_FREIGHT_PRICING_UTIL.convert_uom(
2659 			p_dlv_detail_rec.volume_uom_code,
2660 			p_carrier_pref.volume_uom,
2661 			p_dlv_detail_rec.volume,
2662 			0);
2663 
2664 			IF (l_volume IS NULL)
2665 			THEN
2666 
2667 				--throw an exception UOM conversion failed
2668 				raise FTE_FREIGHT_PRICING_UTIL.g_tl_vol_uom_conv_fail;
2669 
2670 			END IF;
2671 
2672 			x_stop_rec.dropoff_volume:=x_stop_rec.dropoff_volume +
2673 				l_volume;
2674 
2675 		END IF;
2676 
2677 
2678 		IF (p_dlv_detail_rec.gross_weight IS NOT NULL)
2679 		THEN
2680 			l_weight:=FTE_FREIGHT_PRICING_UTIL.convert_uom(
2681 			p_dlv_detail_rec.weight_uom_code,
2682 			p_carrier_pref.weight_uom,
2683 			p_dlv_detail_rec.gross_weight,
2684 			0);
2685 
2686 			IF (l_weight IS NULL)
2687 			THEN
2688 
2689 				--throw an exception UOM conversion failed
2690 				raise FTE_FREIGHT_PRICING_UTIL.g_tl_weight_uom_conv_fail;
2691 
2692 			END IF;
2693 
2694 			Calculate_Dimensional_Weight(
2695 				p_carrier_pref_rec=>p_carrier_pref,
2696 				p_weight=>l_weight,
2697 				p_volume=>l_volume,
2698 				x_dim_weight=>l_dim_weight,
2699 				x_return_status=>l_return_status);
2700 
2701 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
2702 			THEN
2703 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
2704 			       THEN
2705 				  raise FTE_FREIGHT_PRICING_UTIL.g_tl_calc_dim_weight_fail;
2706 			       END IF;
2707 			END IF;
2708 
2709 
2710 			x_stop_rec.dropoff_weight:=x_stop_rec.dropoff_weight +
2711 				l_dim_weight;
2712 		END IF;
2713 
2714 
2715 
2716 
2717 		Is_Detail_Pallet(
2718 			p_dlv_detail_id=>	p_dlv_detail_rec.delivery_detail_id,
2719 			x_pallet=>	l_pallet ,
2720 			x_return_status=>	l_return_status);
2721 
2722 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
2723 		THEN
2724 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
2725 		       THEN
2726 			  raise FTE_FREIGHT_PRICING_UTIL.g_tl_is_dtl_pallet_fail;
2727 		       END IF;
2728 		END IF;
2729 
2730 		IF(l_pallet='Y')
2731 		THEN
2732 			x_stop_rec.dropoff_pallets:=
2733 				x_stop_rec.dropoff_pallets+1;
2734 
2735 		--Number of containers is number of top level delivery details
2736 
2737 		ELSIF (p_dlv_detail_rec.parent_delivery_detail_id IS NULL)
2738 		THEN
2739 			x_stop_rec.dropoff_containers:=
2740 				x_stop_rec.dropoff_containers +1;
2741 		END IF;
2742 
2743 	END IF;
2744 
2745         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Add_Dropoff_Quantity');
2746 
2747 	IF (l_warning_count > 0)
2748 	THEN
2749 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
2750 	END IF;
2751 EXCEPTION
2752 
2753 
2754    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_calc_dim_weight_fail THEN
2755         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
2756         FTE_FREIGHT_PRICING_UTIL.set_exception('Add_Dropoff_Quantity',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_calc_dim_weight_fail');
2757         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Add_Dropoff_Quantity');
2758 
2759 
2760    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_is_dtl_pallet_fail THEN
2761         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
2762         FTE_FREIGHT_PRICING_UTIL.set_exception('Add_Dropoff_Quantity',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_is_dtl_pallet_fail');
2763         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Add_Dropoff_Quantity');
2764 
2765 
2766    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_weight_uom_conv_fail THEN
2767         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
2768         FTE_FREIGHT_PRICING_UTIL.set_exception('Add_Dropoff_Quantity',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_weight_uom_conv_fail');
2769         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Add_Dropoff_Quantity');
2770 
2771    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_vol_uom_conv_fail THEN
2772         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
2773         FTE_FREIGHT_PRICING_UTIL.set_exception('Add_Dropoff_Quantity',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_vol_uom_conv_fail');
2774         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Add_Dropoff_Quantity');
2775 
2776    WHEN others THEN
2777         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
2778         FTE_FREIGHT_PRICING_UTIL.set_exception('Add_Dropoff_Quantity',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
2779         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
2780         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Add_Dropoff_Quantity');
2781 
2782 
2783 END Add_Dropoff_Quantity;
2784 
2785 --Populates structure which will be used to query the MILEAGE TABLES
2786 
2787 PROCEDURE Add_Inputs_For_Distance(
2788 	p_from_stop_rec IN TL_TRIP_STOP_INPUT_REC_TYPE,
2789 	p_to_stop_rec IN  TL_TRIP_STOP_INPUT_REC_TYPE,
2790 	p_empty_flag IN VARCHAR2 ,
2791 	x_stop_distance_tab IN OUT NOCOPY TL_stop_distance_tab_type,
2792 	x_return_status	OUT	NOCOPY	VARCHAR2) IS
2793 
2794 	l_stop_distance_rec	TL_stop_distance_rec_type;
2795 l_return_status VARCHAR2(1);
2796 
2797 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
2798 
2799 	l_warning_count 	NUMBER:=0;
2800 BEGIN
2801 
2802 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
2803 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Add_Inputs_For_Distance','start');
2804 
2805 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
2806 	l_stop_distance_rec.from_stop_id:=p_from_stop_rec.stop_id;
2807 	l_stop_distance_rec.from_location_id:=p_from_stop_rec.location_id;
2808 	l_stop_distance_rec.to_stop_id:=p_to_stop_rec.stop_id;
2809 	l_stop_distance_rec.to_location_id:=p_to_stop_rec.location_id;
2810 
2811 
2812 	l_stop_distance_rec.cumulative_distance:=0;
2813 	l_stop_distance_rec.empty_flag:=p_empty_flag;
2814 
2815 
2816 FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
2817 			l_stop_distance_rec.from_stop_id||' inserted in tab');
2818 
2819 	x_stop_distance_tab(l_stop_distance_rec.from_stop_id):=
2820 	l_stop_distance_rec;
2821 
2822         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Add_Inputs_For_Distance');
2823 
2824 	IF (l_warning_count > 0)
2825 	THEN
2826 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
2827 	END IF;
2828 EXCEPTION
2829    WHEN others THEN
2830         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
2831         FTE_FREIGHT_PRICING_UTIL.set_exception('Add_Inputs_For_Distance',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
2832         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
2833         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Add_Inputs_For_Distance');
2834 
2835 
2836 END  Add_Inputs_For_Distance;
2837 
2838 PROCEDURE get_approximate_distance_time(
2839   p_from_location_id		IN NUMBER,
2840   p_to_location_id		IN NUMBER,
2841   x_distance			OUT NOCOPY NUMBER,
2842   x_distance_uom		OUT NOCOPY VARCHAR2,
2843   x_transit_time		OUT NOCOPY NUMBER,
2844   x_transit_time_uom		OUT NOCOPY VARCHAR2,
2845   x_return_status		OUT NOCOPY VARCHAR2)
2846 IS
2847    CURSOR c_get_latitude_longitude (c_location_id NUMBER) IS
2848    SELECT latitude, longitude
2849    FROM   wsh_locations
2850    WHERE wsh_location_id = c_location_id;
2851 
2852   CURSOR c_get_dis_emp_constant IS
2853   SELECT tl_hway_dis_emp_constant
2854   FROM wsh_global_parameters;
2855 
2856   CURSOR c_get_speed IS
2857   SELECT avg_hway_speed
2858   FROM wsh_global_parameters;
2859 
2860   CURSOR c_get_distance_uom IS
2861   SELECT distance_uom
2862   FROM wsh_global_parameters;
2863 
2864   CURSOR c_get_time_uom IS
2865   SELECT time_uom
2866   FROM wsh_global_parameters;
2867 
2868   l_log_level             NUMBER := FTE_FREIGHT_PRICING_UTIL.G_LOG;
2869   l_api_name              CONSTANT VARCHAR2(30)   := 'get_approximate_distance_time';
2870   l_return_status         VARCHAR2(1);
2871 
2872   l_no_latitude_longitude		EXCEPTION;
2873   l_no_highway_distance_multi	EXCEPTION;
2874   l_no_average_speed			EXCEPTION;
2875 
2876   l_from_latitude_in_degrees	NUMBER;
2877   l_from_latitude_in_radians	NUMBER;
2878   l_from_longitude_in_degrees	NUMBER;
2879   l_to_latitude_in_degrees	NUMBER;
2880   l_to_latitude_in_radians	NUMBER;
2881   l_to_longitude_in_degrees	NUMBER;
2882 
2883   l_earth_radius_multiplier	CONSTANT NUMBER := 69.075;
2884   l_pi				CONSTANT NUMBER := 3.1416;
2885   l_degrees_to_radians		CONSTANT NUMBER := l_pi/180;
2886   l_radians_to_degrees		CONSTANT NUMBER := 180/l_pi;
2887   l_distance_uom		CONSTANT VARCHAR2(30) := 'MI';
2888 
2889   l_highway_distance_multiplier NUMBER;
2890   l_average_speed_value		NUMBER;
2891   l_speed_distance_uom		VARCHAR2(30);
2892   l_speed_time_uom		VARCHAR2(30);
2893 
2894   l_euclidean_distance		NUMBER;
2895   l_highway_distance		NUMBER;
2896   l_transit_time		NUMBER;
2897 
2898   l_t1				NUMBER;
2899   l_t2				NUMBER;
2900   l_t3				NUMBER;
2901   l_t4				NUMBER;
2902   l_t5				NUMBER;
2903   l_t6				NUMBER;
2904 BEGIN
2905   x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
2906 
2907   FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
2908   FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,l_api_name);
2909 
2910   FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_from_location_id='||p_from_location_id);
2911   FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'p_to_location_id='||p_to_location_id);
2912 
2913   -- get latitude and longitude in degrees from wsh_locations
2914   OPEN c_get_latitude_longitude(p_from_location_id);
2915   FETCH c_get_latitude_longitude INTO l_from_latitude_in_degrees, l_from_longitude_in_degrees;
2916   CLOSE c_get_latitude_longitude;
2917 
2918   OPEN c_get_latitude_longitude(p_to_location_id);
2919   FETCH c_get_latitude_longitude INTO l_to_latitude_in_degrees, l_to_longitude_in_degrees;
2920   CLOSE c_get_latitude_longitude;
2921 
2922   FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_from_latitude_in_degrees='||l_from_latitude_in_degrees);
2923   FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_from_longitude_in_degrees='||l_from_longitude_in_degrees);
2924   FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_to_latitude_in_degrees='||l_to_latitude_in_degrees);
2925   FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_to_longitude_in_degrees='||l_to_longitude_in_degrees);
2926 
2927   IF (l_from_latitude_in_degrees is null) OR (l_from_longitude_in_degrees is null)
2928     OR (l_to_latitude_in_degrees is null) OR (l_to_longitude_in_degrees is null) THEN
2929     raise l_no_latitude_longitude;
2930   END IF;
2931 
2932   -- todo: get highway distance multiplier from profile option
2933   --l_highway_distance_multiplier := 0.17;
2934   OPEN c_get_dis_emp_constant;
2935   FETCH c_get_dis_emp_constant INTO l_highway_distance_multiplier;
2936   CLOSE c_get_dis_emp_constant;
2937 
2938   FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_highway_distance_multiplier='||l_highway_distance_multiplier);
2939 
2940   IF l_highway_distance_multiplier is null THEN
2941     raise l_no_highway_distance_multi;
2942   END IF;
2943 
2944   -- todo: get average speed profile options
2945   --l_average_speed_value := 59;
2946   --l_speed_distance_uom := 'MI'; -- Mile
2947   --l_speed_time_uom := 'HR'; -- Hour
2948   OPEN c_get_speed;
2949   FETCH c_get_speed INTO l_average_speed_value;
2950   CLOSE c_get_speed;
2951   OPEN c_get_distance_uom;
2952   FETCH c_get_distance_uom INTO l_speed_distance_uom;
2953   CLOSE c_get_distance_uom;
2954   OPEN c_get_time_uom;
2955   FETCH c_get_time_uom INTO l_speed_time_uom;
2956   CLOSE c_get_time_uom;
2957 
2958   FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_average_speed_value='||l_average_speed_value);
2959   FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_speed_distance_uom='||l_speed_distance_uom);
2960   FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_speed_time_uom='||l_speed_time_uom);
2961 
2962   IF (l_average_speed_value is null) OR (l_speed_distance_uom is null)
2963     OR (l_speed_time_uom is null) THEN
2964     raise l_no_average_speed;
2965   END IF;
2966 
2967   l_from_latitude_in_radians := l_degrees_to_radians * l_from_latitude_in_degrees;
2968   l_to_latitude_in_radians := l_degrees_to_radians * l_to_latitude_in_degrees;
2969 
2970   SELECT SIN(l_from_latitude_in_radians) INTO l_t1 FROM DUAL;
2971   SELECT SIN(l_to_latitude_in_radians) INTO l_t2 FROM DUAL;
2972   SELECT COS(l_from_latitude_in_radians) INTO l_t3 FROM DUAL;
2973   SELECT COS(l_to_latitude_in_radians) INTO l_t4 FROM DUAL;
2974 
2975   FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_t1='||l_t1);
2976   FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_t2='||l_t2);
2977   FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_t3='||l_t3);
2978   FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_t4='||l_t4);
2979 
2980   SELECT COS(l_degrees_to_radians * (l_from_longitude_in_degrees - l_to_longitude_in_degrees))
2981   INTO l_t5 FROM DUAL;
2982 
2983   FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_t5='||l_t5);
2984 
2985   SELECT ACOS(l_t1 * l_t2 + l_t3 * l_t4 * l_t5)
2986   INTO l_t6 FROM DUAL;
2987 
2988   FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_t6='||l_t6);
2989 
2990   l_euclidean_distance := l_earth_radius_multiplier * l_radians_to_degrees * l_t6;
2991 
2992   FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_euclidean_distance='||l_euclidean_distance);
2993 
2994   l_highway_distance := (1 + l_highway_distance_multiplier) * l_euclidean_distance;
2995 
2996   FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_highway_distance='||l_highway_distance);
2997 
2998   IF l_distance_uom <> l_speed_distance_uom THEN
2999     l_t6 := FTE_FREIGHT_PRICING_UTIL.convert_uom(
3000 		l_speed_distance_uom,
3001 		l_distance_uom,
3002 		l_average_speed_value,
3003 		0);
3004   ELSE
3005     l_t6 := l_average_speed_value;
3006   END IF;
3007 
3008   l_transit_time := l_highway_distance / l_t6;
3009 
3010   FTE_FREIGHT_PRICING_UTIL.print_msg(l_log_level,'l_transit_time='||l_transit_time);
3011 
3012   x_distance := l_highway_distance;
3013   x_distance_uom := l_distance_uom;
3014   x_transit_time := l_transit_time;
3015   x_transit_time_uom := l_speed_time_uom;
3016 
3017   FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
3018 
3019 
3020 EXCEPTION
3021    WHEN l_no_latitude_longitude THEN
3022         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
3023         FTE_FREIGHT_PRICING_UTIL.set_exception(l_api_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'l_no_latitude_longitude');
3024         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
3025    WHEN l_no_highway_distance_multi THEN
3026         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
3027         FTE_FREIGHT_PRICING_UTIL.set_exception(l_api_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'l_no_highway_distance_multi');
3028         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
3029    WHEN l_no_average_speed THEN
3030         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
3031         FTE_FREIGHT_PRICING_UTIL.set_exception(l_api_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'l_no_average_speed');
3032         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
3033    WHEN others THEN
3034         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
3035         FTE_FREIGHT_PRICING_UTIL.set_exception(l_api_name,FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
3036         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
3037         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,l_api_name);
3038 END get_approximate_distance_time;
3039 
3040 PROCEDURE Call_Mileage_Interface(
3041 	p_stop_index IN NUMBER,
3042 	p_dleg_index IN NUMBER,
3043 	p_carrier_rec IN TL_CARRIER_PREF_REC_TYPE,
3044 	x_stop_distance_tab IN OUT NOCOPY TL_stop_distance_tab_type,
3045 	x_trip_rec IN OUT NOCOPY  TL_trip_data_input_rec_type,
3046 	x_return_status	OUT	NOCOPY	VARCHAR2) IS
3047 
3048 l_stop_ref_first NUMBER;
3049 l_stop_ref_last  NUMBER;
3050 l_dleg_ref_first NUMBER;
3051 l_dleg_ref_last  NUMBER;
3052 l_trip_ref	 NUMBER;
3053 
3054 i NUMBER;
3055 j NUMBER;
3056 k NUMBER;
3057 l_from_location_tab wsh_util_core.id_tab_type;
3058 l_to_location_tab wsh_util_core.id_tab_type;
3059 l_distances_tab wsh_util_core.id_tab_type;
3060 l_time_tab wsh_util_core.id_tab_type;
3061 l_distance_uom	VARCHAR2(30);
3062 l_time_uom	VARCHAR2(30);
3063 l_distance NUMBER;
3064 l_time NUMBER;
3065 l_quantity	NUMBER;
3066 l_carrier_distance_uom	VARCHAR2(30);
3067 l_carrier_time_uom VARCHAR2(30);
3068 l_location_tab FTE_DIST_INT_PKG.fte_dist_input_tab;
3069 l_location_rec FTE_DIST_INT_PKG.fte_dist_input_rec;
3070 l_location_log_tab FTE_DIST_INT_PKG.fte_dist_output_message_tab;
3071 
3072 l_location_out_tab FTE_DIST_INT_PKG.fte_dist_output_tab;
3073 l_mileage_api_fail VARCHAR2(1);
3074 
3075 l_return_message VARCHAR2(32767);
3076 
3077 l_return_status VARCHAR2(1);
3078 
3079 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
3080 
3081 	l_warning_count 	NUMBER:=0;
3082 BEGIN
3083 
3084 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
3085 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Call_Mileage_Interface','start');
3086 
3087 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
3088 
3089 	i:=1;
3090 
3091 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,' DBG 1');
3092 	--Copy all the stop from to's
3093 
3094 	l_stop_ref_first:=i;
3095 	j:=x_stop_distance_tab.FIRST;
3096 	WHILE(j IS NOT NULL)
3097 	LOOP
3098 		l_location_rec.origin_id:=x_stop_distance_tab(j).from_location_id;
3099 		l_location_rec.destination_id:=x_stop_distance_tab(j).to_location_id;
3100 
3101 		l_location_tab(i):=l_location_rec;
3102 
3103 		i:=i+1;
3104 		j:=x_stop_distance_tab.NEXT(j);
3105 	END LOOP;
3106 	l_stop_ref_last:=i-1;
3107 
3108 	l_dleg_ref_first:=i;
3109 
3110 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,' DBG 2');
3111 
3112 	--Copy all the dleg from to (for direct distance)
3113 	--dlegs may not exist for a trip(dead heads)
3114 
3115 	j:=p_dleg_index;
3116 	WHILE((j IS NOT NULL) AND (g_tl_delivery_leg_rows.EXISTS(j)))
3117 	LOOP
3118 		l_location_rec.origin_id:=g_tl_delivery_leg_rows(j).pickup_location_id;
3119 		l_location_rec.destination_id:=g_tl_delivery_leg_rows(j).dropoff_location_id;
3120 
3121 		l_location_tab(i):=l_location_rec;
3122 
3123 		i:=i+1;
3124 		j:=g_tl_delivery_leg_rows.NEXT(j);
3125 	END LOOP;
3126 	IF (i <> l_dleg_ref_first)
3127 	THEN
3128 		l_dleg_ref_last:=i-1;
3129 	ELSE
3130 		l_dleg_ref_last:=l_dleg_ref_first;
3131 	END IF;
3132 
3133 
3134 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,' DBG 3');
3135 	--Copy trip from to (direct distance)
3136 	l_trip_ref:=i;
3137 
3138 	l_location_rec.origin_id:=g_tl_trip_stop_rows(p_stop_index).location_id;
3139 	l_location_rec.destination_id:=g_tl_trip_stop_rows(g_tl_trip_stop_rows.LAST).location_id;
3140 
3141 	l_location_tab(i):=l_location_rec;
3142 
3143 	l_mileage_api_fail:='N';
3144 
3145 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,' DBG 4');
3146 
3147 	--Call Mileage api
3148 	 FTE_DIST_INT_PKG.GET_DISTANCE_TIME(
3149 	    p_distance_input_tab=> l_location_tab,
3150 	    p_location_region_flag=> 'L',
3151 	    p_messaging_yn => 'Y',
3152 	    p_api_version  => '1',
3153 	    p_command => NULL,
3154 	    x_distance_output_tab=> l_location_out_tab,
3155 	    x_distance_message_tab => l_location_log_tab,
3156 	    x_return_message =>l_return_message,
3157 	    x_return_status => l_return_status);
3158 
3159 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'FTE_DIST_INT_PKG.GET_DISTANCE_TIME, status:'||l_return_status||' msg:'||l_return_message);
3160 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
3161 	THEN
3162 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
3163 	       THEN
3164 	       	    FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_WRN,' Interface to mileage tables failed, using approximate distances, time:g_tl_get_dist_time_fail.');
3165 
3166 	       	    l_mileage_api_fail:='Y';
3167 
3168 		    l_warning_count:=l_warning_count+1;
3169 
3170 		    --FTE_FREIGHT_PRICING_UTIL.setmsg (
3171 			--p_api=>'Call_Mileage_Interface',
3172 			--p_exc=>'g_tl_get_dist_time_fail',
3173 			--p_msg_type=>'W',
3174 			--p_trip_id=> x_trip_rec.trip_id);
3175 
3176 		  --raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_dist_time_fail;
3177 	       END IF;
3178 	END IF;
3179 
3180 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,' DBG 5');
3181 	IF (l_location_tab.FIRST IS NOT NULL)
3182 	THEN
3183 		FOR i in l_location_tab.FIRST .. l_location_tab.LAST
3184 		LOOP
3185 				FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,' MILEAGE distances, time:'||l_location_tab(i).origin_id || ' : '||
3186 				l_location_tab(i).destination_id);
3187 
3188 		END LOOP;
3189 	END IF;
3190 
3191 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,' DBG 6');
3192 
3193 	IF ((l_mileage_api_fail= 'N') AND (l_location_out_tab.FIRST IS NOT NULL) )
3194 	THEN
3195 
3196 		FOR i in l_location_out_tab.FIRST .. l_location_out_tab.LAST
3197 		LOOP
3198 				FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,' MILEAGE distances, time:'||l_location_out_tab(i).origin_location_id || ' : '||
3199 				l_location_out_tab(i).destination_location_id||' : '||l_location_out_tab(i).distance||' : '||
3200 				l_location_out_tab(i).distance_uom||' : '||l_location_out_tab(i).transit_time||' : '|| l_location_out_tab(i).transit_time_uom);
3201 
3202 		END LOOP;
3203 
3204 	END IF;
3205 
3206 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,' DBG 7');
3207 
3208 	l_carrier_distance_uom:=p_carrier_rec.distance_uom;
3209 	l_carrier_time_uom:=p_carrier_rec.time_uom;
3210 
3211 	IF(NOT((l_carrier_time_uom IS NOT NULL) AND (l_carrier_distance_uom IS NOT NULL)))
3212 	THEN
3213 
3214 		--Show only generic message
3215 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
3216 		--	p_api=>'Call_Mileage_Interface',
3217 		--	p_exc=>'g_tl_no_car_time_dist_uom',
3218 		--	p_carrier_id=>p_carrier_rec.carrier_id);
3219 
3220 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_no_car_time_dist_uom;
3221 
3222 	END IF;
3223 
3224 
3225 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,' DBG 7');
3226 	--Copy back stop distance,time
3227 
3228 	i:=l_location_tab.FIRST;
3229 	j:=x_stop_distance_tab.FIRST;
3230 	k:=l_location_out_tab.FIRST;
3231 	WHILE(j IS NOT NULL)
3232 	LOOP
3233 		x_stop_distance_tab(j).time:=NULL;
3234 		x_stop_distance_tab(j).distance:=NULL;
3235 
3236 		IF( (l_mileage_api_fail='N') AND  l_location_out_tab.EXISTS(k) AND (l_location_tab(i).origin_id=l_location_out_tab(k).origin_location_id)
3237 		  AND(l_location_tab(i).destination_id=l_location_out_tab(k).destination_location_id))
3238 		THEN
3239 			FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,' Now using MILEAGE distances, time:'||l_location_tab(i).origin_id || ' : '||
3240 			l_location_tab(i).destination_id);
3241 
3242 			--Mileage API can return both distance and time or just one of them
3243 
3244                         -- VVP:09/17/03
3245                         -- If distance or time from mileage table is 0
3246                         -- then null it out so that it will
3247                         -- move on to mileage approximation
3248 
3249 			IF ((l_location_out_tab(k).distance_uom IS NOT NULL) AND
3250 				(l_location_out_tab(k).distance IS NOT NULL)
3251                                --AND (l_location_out_tab(k).distance <> 0)  -- 17-Sep-2004 if mileage returns 0 accept it
3252                            )
3253 			THEN
3254 
3255 				l_quantity:=FTE_FREIGHT_PRICING_UTIL.convert_uom(
3256 					l_location_out_tab(k).distance_uom,
3257 					l_carrier_distance_uom,
3258 					l_location_out_tab(k).distance,
3259 					0);
3260 				IF(l_quantity IS NULL)
3261 				THEN
3262 
3263 					raise FTE_FREIGHT_PRICING_UTIL.g_tl_dist_uom_conv_fail;
3264 
3265 				END IF;
3266 
3267 				x_stop_distance_tab(j).distance:=l_quantity;
3268 
3269 			END IF;
3270 
3271 			IF ((l_location_out_tab(k).transit_time_uom IS NOT NULL) AND
3272 				(l_location_out_tab(k).transit_time IS NOT NULL)
3273                                 -- AND (l_location_out_tab(k).transit_time <> 0)  -- If mileage returns 0 accept it
3274                               )
3275 			THEN
3276 
3277 
3278 				l_quantity:=FTE_FREIGHT_PRICING_UTIL.convert_uom(
3279 					l_location_out_tab(k).transit_time_uom,
3280 					l_carrier_time_uom,
3281 					l_location_out_tab(k).transit_time,
3282 					0);
3283 
3284 				IF(l_quantity IS NULL)
3285 				THEN
3286 					raise FTE_FREIGHT_PRICING_UTIL.g_tl_time_uom_conv_fail;
3287 				END IF;
3288 				x_stop_distance_tab(j).time:=l_quantity;
3289 			END IF;
3290 
3291 
3292 			k:=k+1;
3293 		END IF;
3294 		IF ((x_stop_distance_tab(j).time IS NULL) OR (x_stop_distance_tab(j).distance IS NULL))
3295 		THEN
3296 
3297 			FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,' Now using approximate distances, time:'||l_location_tab(i).origin_id || ' : '||
3298 			l_location_tab(i).destination_id);
3299 			get_approximate_distance_time(
3300 			  p_from_location_id =>l_location_tab(i).origin_id,
3301 			  p_to_location_id =>l_location_tab(i).destination_id,
3302 			  x_distance => l_distance,
3303 			  x_distance_uom => l_distance_uom,
3304 			  x_transit_time => l_time,
3305 			  x_transit_time_uom =>l_time_uom,
3306   			  x_return_status =>l_return_status);
3307 
3308 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
3309 			THEN
3310 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
3311 			       THEN
3312 				  raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_apprx_dist_time_fail;
3313 			       END IF;
3314 			END IF;
3315 
3316   			IF (x_stop_distance_tab(j).distance IS NULL)
3317   			THEN
3318 				l_quantity:=FTE_FREIGHT_PRICING_UTIL.convert_uom(
3319 						l_distance_uom,
3320 						l_carrier_distance_uom,
3321 						l_distance,
3322 						0);
3323 
3324 				IF(l_quantity IS NULL)
3325 				THEN
3326 
3327 					raise FTE_FREIGHT_PRICING_UTIL.g_tl_dist_uom_conv_fail;
3328 
3329 				END IF;
3330 
3331 				x_stop_distance_tab(j).distance:=l_quantity;
3332 			END IF;
3333 
3334 			IF(x_stop_distance_tab(j).time IS NULL)
3335 			THEN
3336 
3337 				l_quantity:=FTE_FREIGHT_PRICING_UTIL.convert_uom(
3338 					l_time_uom,
3339 					l_carrier_time_uom,
3340 					l_time,
3341 					0);
3342 
3343 				IF(l_quantity IS NULL)
3344 				THEN
3345 					raise FTE_FREIGHT_PRICING_UTIL.g_tl_time_uom_conv_fail;
3346 				END IF;
3347 
3348 				x_stop_distance_tab(j).time:=l_quantity;
3349 			END IF;
3350 
3351 		END IF;
3352 
3353 
3354 		j:=x_stop_distance_tab.NEXT(j);
3355 		i:=i+1;
3356 	END LOOP;
3357 
3358 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,' DBG 8');
3359 
3360 	--Copy back dleg direct distance
3361 
3362 	j:=p_dleg_index;
3363 	WHILE((j IS NOT NULL) AND (g_tl_delivery_leg_rows.EXISTS(j)))
3364 	LOOP
3365 
3366 		g_tl_delivery_leg_rows(j).direct_distance:=NULL;
3367 
3368 		IF((l_mileage_api_fail='N') AND l_location_out_tab.EXISTS(k) AND (l_location_tab(i).origin_id=l_location_out_tab(k).origin_location_id)
3369 		  AND(l_location_tab(i).destination_id=l_location_out_tab(k).destination_location_id))
3370 		THEN
3371                         --VVP: 09/18/03 : added distance<>0 condition
3372 			IF ((l_location_out_tab(k).distance_uom IS NOT NULL) AND
3373 				(l_location_out_tab(k).distance IS NOT NULL))
3374 				--(l_location_out_tab(k).distance <> 0)) --If mileage returns 0 accept it
3375 			THEN
3376 
3377 
3378 				l_quantity:=FTE_FREIGHT_PRICING_UTIL.convert_uom(
3379 					l_location_out_tab(k).distance_uom,
3380 					l_carrier_distance_uom,
3381 					l_location_out_tab(k).distance,
3382 					0);
3383 				IF(l_quantity IS NULL)
3384 				THEN
3385 
3386 					raise FTE_FREIGHT_PRICING_UTIL.g_tl_dist_uom_conv_fail;
3387 
3388 				END IF;
3389 
3390 				g_tl_delivery_leg_rows(j).direct_distance:=l_quantity;
3391 
3392 			END IF;
3393 			k:=k+1;
3394 		END IF;
3395 
3396 		IF (g_tl_delivery_leg_rows(j).direct_distance IS NULL)
3397 		THEN
3398 
3399 			get_approximate_distance_time(
3400 			  p_from_location_id =>l_location_tab(i).origin_id,
3401 			  p_to_location_id =>l_location_tab(i).destination_id,
3402 			  x_distance => l_distance,
3403 			  x_distance_uom => l_distance_uom,
3404 			  x_transit_time => l_time,
3405 			  x_transit_time_uom =>l_time_uom,
3406   			  x_return_status =>l_return_status);
3407 
3408 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
3409 			THEN
3410 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
3411 			       THEN
3412 				  raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_apprx_dist_time_fail;
3413 			       END IF;
3414 			END IF;
3415 
3416 
3417 			l_quantity:=FTE_FREIGHT_PRICING_UTIL.convert_uom(
3418 				l_distance_uom,
3419 				l_carrier_distance_uom,
3420 				l_distance,
3421 				0);
3422 			IF(l_quantity IS NULL)
3423 			THEN
3424 
3425 				raise FTE_FREIGHT_PRICING_UTIL.g_tl_dist_uom_conv_fail;
3426 
3427 			END IF;
3428 
3429 			g_tl_delivery_leg_rows(j).direct_distance:=l_quantity;
3430 
3431 		END IF;
3432 
3433 		i:=i+1;
3434 		j:=g_tl_delivery_leg_rows.NEXT(j);
3435 	END LOOP;
3436 
3437 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,' DBG 9');
3438 
3439 	--Copy back trip direct distance
3440 
3441 	x_trip_rec.total_direct_distance:=NULL;
3442 
3443 	IF((l_mileage_api_fail='N') AND l_location_out_tab.EXISTS(k) AND (l_location_tab(i).origin_id=l_location_out_tab(k).origin_location_id)
3444 	  AND(l_location_tab(i).destination_id=l_location_out_tab(k).destination_location_id))
3445 	THEN
3446 
3447 		IF ((l_location_out_tab(k).distance_uom IS NOT NULL) AND
3448 			(l_location_out_tab(k).distance IS NOT NULL))
3449 			--AND (l_location_out_tab(k).distance <> 0))--If mileage returns 0 accept it
3450 		THEN
3451 
3452 			l_quantity:=FTE_FREIGHT_PRICING_UTIL.convert_uom(
3453 				l_location_out_tab(k).distance_uom,
3454 				l_carrier_distance_uom,
3455 				l_location_out_tab(k).distance,
3456 				0);
3457 			IF(l_quantity IS NULL)
3458 			THEN
3459 
3460 				raise FTE_FREIGHT_PRICING_UTIL.g_tl_dist_uom_conv_fail;
3461 
3462 			END IF;
3463 			x_trip_rec.total_direct_distance:=l_quantity;
3464 		END IF;
3465 		k:=k+1;
3466 
3467 	END IF;
3468 
3469 	IF (x_trip_rec.total_direct_distance IS NULL)
3470 	THEN
3471 
3472 		get_approximate_distance_time(
3473 		  p_from_location_id =>l_location_tab(i).origin_id,
3474 		  p_to_location_id =>l_location_tab(i).destination_id,
3475 		  x_distance => l_distance,
3476 		  x_distance_uom => l_distance_uom,
3477 		  x_transit_time => l_time,
3478 		  x_transit_time_uom =>l_time_uom,
3479 		  x_return_status =>l_return_status);
3480 
3481 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
3482 		THEN
3483 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
3484 		       THEN
3485 			  raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_apprx_dist_time_fail;
3486 		       END IF;
3487 		END IF;
3488 
3489 
3490 		l_quantity:=FTE_FREIGHT_PRICING_UTIL.convert_uom(
3491 			l_distance_uom,
3492 			l_carrier_distance_uom,
3493 			l_distance,
3494 			0);
3495 		IF(l_quantity IS NULL)
3496 		THEN
3497 
3498 			raise FTE_FREIGHT_PRICING_UTIL.g_tl_dist_uom_conv_fail;
3499 
3500 		END IF;
3501 
3502 		x_trip_rec.total_direct_distance:=l_quantity;
3503 	END IF;
3504 
3505 
3506         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Call_Mileage_Interface');
3507 
3508 	IF (l_warning_count > 0)
3509 	THEN
3510 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
3511 	END IF;
3512 EXCEPTION
3513 
3514 
3515    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_apprx_dist_time_fail THEN
3516         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
3517         FTE_FREIGHT_PRICING_UTIL.set_exception('Call_Mileage_Interface',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_apprx_dist_time_fail');
3518         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Call_Mileage_Interface');
3519 
3520 
3521    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_dist_time_fail THEN
3522         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
3523         FTE_FREIGHT_PRICING_UTIL.set_exception('Call_Mileage_Interface',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_dist_time_fail');
3524         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Call_Mileage_Interface');
3525 
3526 
3527    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_no_car_time_dist_uom THEN
3528         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
3529         FTE_FREIGHT_PRICING_UTIL.set_exception('Call_Mileage_Interface',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_no_car_time_dist_uom');
3530         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Call_Mileage_Interface');
3531 
3532    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_no_time_dist_uom THEN
3533         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
3534         FTE_FREIGHT_PRICING_UTIL.set_exception('Call_Mileage_Interface',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_no_time_dist_uom');
3535         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Call_Mileage_Interface');
3536 
3537 
3538    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_no_time_dist THEN
3539         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
3540         FTE_FREIGHT_PRICING_UTIL.set_exception('Call_Mileage_Interface',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_no_time_dist');
3541         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Call_Mileage_Interface');
3542 
3543 
3544    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_no_time_dist_for_stop THEN
3545         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
3546         FTE_FREIGHT_PRICING_UTIL.set_exception('Call_Mileage_Interface',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_no_time_dist_for_stop');
3547         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Call_Mileage_Interface');
3548 
3549    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_dist_uom_conv_fail THEN
3550         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
3551         FTE_FREIGHT_PRICING_UTIL.set_exception('Call_Mileage_Interface',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_dist_uom_conv_fail');
3552         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Call_Mileage_Interface');
3553 
3554 
3555    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_time_uom_conv_fail THEN
3556         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
3557         FTE_FREIGHT_PRICING_UTIL.set_exception('Call_Mileage_Interface',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_time_uom_conv_fail');
3558         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Call_Mileage_Interface');
3559 
3560 
3561    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_no_time_dist_for_dleg THEN
3562         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
3563         FTE_FREIGHT_PRICING_UTIL.set_exception('Call_Mileage_Interface',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_no_time_dist_for_dleg');
3564         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Call_Mileage_Interface');
3565 
3566    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_no_time_dist_for_trip THEN
3567         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
3568         FTE_FREIGHT_PRICING_UTIL.set_exception('Call_Mileage_Interface',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_no_time_dist_for_trip');
3569         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Call_Mileage_Interface');
3570 
3571 
3572    WHEN others THEN
3573         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
3574         FTE_FREIGHT_PRICING_UTIL.set_exception('Call_Mileage_Interface',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
3575         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
3576         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Call_Mileage_Interface');
3577 
3578 END Call_Mileage_Interface;
3579 
3580 
3581 --Gets all the distances from the mileage tables
3582 
3583 PROCEDURE Get_Distances(
3584 	p_stop_index IN NUMBER,
3585 	p_dleg_index IN NUMBER,
3586 	p_carrier_rec IN TL_CARRIER_PREF_REC_TYPE,
3587 	x_stop_distance_tab IN OUT NOCOPY TL_stop_distance_tab_type,
3588 	x_trip_rec IN OUT NOCOPY  TL_trip_data_input_rec_type,
3589 	x_return_status	OUT	NOCOPY	VARCHAR2) IS
3590 
3591 
3592 	l_stop_index 	NUMBER;
3593 	l_dleg_index 	NUMBER;
3594 	i NUMBER;
3595 	l_loaded_distance NUMBER;
3596 	l_unloaded_distance NUMBER;
3597 	l_cumulative_distance NUMBER;
3598 	l_time	NUMBER;
3599 
3600         l_cum_dist_tmp_tab   WSH_UTIL_CORE.id_tab_type; --vvp
3601         l_prev_dist          NUMBER; --vvp
3602 
3603 l_return_status VARCHAR2(1);
3604 
3605 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
3606 
3607 	l_warning_count 	NUMBER:=0;
3608 BEGIN
3609 
3610 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
3611 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Get_Distances','start');
3612 
3613 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
3614 	l_stop_index:=p_stop_index;
3615 	l_dleg_index:=p_dleg_index;
3616 
3617 	--- GEt distances from mileage table API , store results back in
3618 	--x_stop_distance_tab
3619 
3620 	Call_Mileage_Interface(
3621 		p_stop_index=>	p_stop_index,
3622 		p_dleg_index=>	p_dleg_index,
3623 		p_carrier_rec =>	p_carrier_rec,
3624 		x_stop_distance_tab=>	x_stop_distance_tab,
3625 		x_trip_rec=>	x_trip_rec,
3626 		x_return_status=>	l_return_status);
3627 
3628 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
3629 	THEN
3630 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
3631 	       THEN
3632 		  raise FTE_FREIGHT_PRICING_UTIL.g_tl_call_mileage_if_fail;
3633 	       END IF;
3634 	END IF;
3635 
3636 	--Store distances in stop table
3637 	l_stop_index:=p_stop_index;
3638 	l_unloaded_distance:=0;
3639 	l_loaded_distance:=0;
3640 	l_cumulative_distance:=0;
3641 	l_time:=0;
3642         l_prev_dist :=0;
3643 	WHILE (l_stop_index IS NOT NULL)
3644 	LOOP
3645 
3646 		IF (g_tl_trip_stop_rows(l_stop_index).trip_id <>
3647 		x_trip_rec.trip_id)
3648 		THEN
3649 
3650 			FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'
3651 			Exiting loop');
3652 			EXIT;
3653 		END IF;
3654 
3655 		IF
3656 		(x_stop_distance_tab.EXISTS(
3657 			g_tl_trip_stop_rows(l_stop_index).stop_id))
3658 		THEN
3659 
3660 			FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
3661 			g_tl_trip_stop_rows(l_stop_index).stop_id||' is in tab'||x_stop_distance_tab(
3662 			 g_tl_trip_stop_rows(l_stop_index).stop_id).distance);
3663 
3664 			g_tl_trip_stop_rows(l_stop_index).distance_to_next_stop
3665 				:=x_stop_distance_tab(
3666 			 g_tl_trip_stop_rows(l_stop_index).stop_id).distance;
3667 
3668 
3669 			g_tl_trip_stop_rows(l_stop_index).time_to_next_stop
3670 				:=x_stop_distance_tab(
3671 			 g_tl_trip_stop_rows(l_stop_index).stop_id).time;
3672 
3673 			--add up time
3674 			l_time:=l_time+x_stop_distance_tab(
3675 			 g_tl_trip_stop_rows(l_stop_index).stop_id).time;
3676 
3677 			IF
3678 			(x_stop_distance_tab(
3679 				g_tl_trip_stop_rows(l_stop_index).stop_id
3680 				).empty_flag='N')
3681 			THEN
3682 				l_loaded_distance:=l_loaded_distance+
3683 				x_stop_distance_tab(
3684 					g_tl_trip_stop_rows(l_stop_index).stop_id
3685 				).distance;
3686 			ELSE
3687 				l_unloaded_distance:=l_unloaded_distance+
3688 				x_stop_distance_tab(
3689 					g_tl_trip_stop_rows(
3690 					l_stop_index
3691 					).stop_id).distance;
3692 			END IF;
3693 
3694                         -- VVP : 09/17/03
3695                         -- Replaced the commented out code with following code
3696                         -- to correct problems with cumulative distance logic
3697                         -- New table is used to hold cumulative distance
3698                         -- because x_stop_distance_tab
3699                         -- does not contain the last stop of the trip
3700                         -- <code>
3701 
3702                         l_cumulative_distance := l_cumulative_distance
3703                                                      + l_prev_dist;
3704 
3705                          -- now point prev_dist to current stop distance
3706                         l_prev_dist :=
3707 			        x_stop_distance_tab(
3708 				      g_tl_trip_stop_rows(l_stop_index).stop_id
3709 				      ).distance;
3710 
3711                         -- this table holds cumulative distance for stops
3712                         l_cum_dist_tmp_tab(
3713 			         g_tl_trip_stop_rows(l_stop_index).stop_id
3714 			         )  :=l_cumulative_distance;
3715 		        FTE_FREIGHT_PRICING_UTIL.print_msg(
3716                           FTE_FREIGHT_PRICING_UTIL.G_DBG,
3717                         'stop_id,cum_dist ->'||g_tl_trip_stop_rows(l_stop_index)
3718                         .stop_id||','||l_cumulative_distance);
3719                         -- </code>
3720 
3721                         /*   -- VVP - commented out 09/17/03
3722 			l_cumulative_distance:=l_cumulative_distance+
3723 			x_stop_distance_tab(
3724 				g_tl_trip_stop_rows(l_stop_index).stop_id
3725 				).distance;
3726 
3727 			x_stop_distance_tab(
3728 			 g_tl_trip_stop_rows(l_stop_index).stop_id
3729 			 ).cumulative_distance:=l_cumulative_distance;
3730                         */
3731 
3732 		ELSE
3733 				FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
3734 			g_tl_trip_stop_rows(l_stop_index).stop_id||' not in tab');
3735 
3736                         -- VVP : 09/17/03
3737                         -- <code>
3738                         l_cumulative_distance := l_cumulative_distance
3739                                                      + l_prev_dist;
3740                          -- current stop distance is 0
3741                         l_prev_dist :=0;
3742 
3743                         l_cum_dist_tmp_tab(
3744 			         g_tl_trip_stop_rows(l_stop_index).stop_id
3745 			         )  :=l_cumulative_distance;
3746 		        FTE_FREIGHT_PRICING_UTIL.print_msg(
3747                           FTE_FREIGHT_PRICING_UTIL.G_DBG,
3748                         'stop_id,cum_dist ->'||g_tl_trip_stop_rows(l_stop_index)
3749                         .stop_id||','||l_cumulative_distance);
3750                         -- </code>
3751 
3752 		END IF;
3753 
3754 		l_stop_index:=g_tl_trip_stop_rows.NEXT(l_stop_index);
3755 
3756 	END LOOP;
3757 
3758 	--Store unloaded,loaded, total distance in trip rec
3759 
3760 	x_trip_rec.loaded_distance:=l_loaded_distance;
3761 	x_trip_rec.unloaded_distance:=l_unloaded_distance;
3762 	x_trip_rec.total_trip_distance:=l_loaded_distance+l_unloaded_distance;
3763 	x_trip_rec.time:=l_time;
3764 
3765 	WHILE(g_tl_delivery_leg_rows.EXISTS(l_dleg_index))
3766 	LOOP
3767                 -- VVP : 09/17/03
3768                 -- replaced the commented out code with following code
3769                 -- to correct problems with cumulative distance logic
3770 
3771                 -- <code>
3772 		IF
3773 		(l_cum_dist_tmp_tab.EXISTS(g_tl_delivery_leg_rows(l_dleg_index)
3774 		.pickup_stop_id))
3775 		THEN
3776 			IF
3777 			(l_cum_dist_tmp_tab.EXISTS(
3778 				g_tl_delivery_leg_rows(
3779 					l_dleg_index
3780 				).dropoff_stop_id))
3781 			THEN
3782 			g_tl_delivery_leg_rows(l_dleg_index).distance:=
3783 			l_cum_dist_tmp_tab(g_tl_delivery_leg_rows(l_dleg_index)
3784 			.dropoff_stop_id) -
3785 			l_cum_dist_tmp_tab(g_tl_delivery_leg_rows(l_dleg_index)
3786 			.pickup_stop_id);
3787                         END IF;
3788                  END IF;
3789                 -- </code>
3790 
3791                 /*   -- VVP - commented out 09/17/03
3792 		IF
3793 		(x_stop_distance_tab.EXISTS(g_tl_delivery_leg_rows(l_dleg_index)
3794 		.pickup_stop_id))
3795 		THEN
3796 			IF
3797 			(x_stop_distance_tab.EXISTS(
3798 				g_tl_delivery_leg_rows(
3799 					l_dleg_index
3800 				).dropoff_stop_id))
3801 			THEN
3802 			g_tl_delivery_leg_rows(l_dleg_index).distance:=
3803 			x_stop_distance_tab(g_tl_delivery_leg_rows(l_dleg_index)
3804 			.dropoff_stop_id).cumulative_distance  -
3805 			x_stop_distance_tab(g_tl_delivery_leg_rows(l_dleg_index)
3806 			.pickup_stop_id).cumulative_distance;
3807 			ELSE
3808 				g_tl_delivery_leg_rows(l_dleg_index).distance:=
3809 				x_stop_distance_tab(
3810 					g_tl_delivery_leg_rows(
3811 						l_dleg_index
3812 					).pickup_stop_id).distance;
3813 			END IF;
3814 		END IF;
3815                 */
3816 
3817 
3818 
3819 		l_dleg_index:=l_dleg_index+1;
3820 	END LOOP;
3821 
3822 
3823 
3824         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Distances');
3825 
3826 	IF (l_warning_count > 0)
3827 	THEN
3828 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
3829 	END IF;
3830 EXCEPTION
3831 
3832    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_call_mileage_if_fail THEN
3833         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
3834         FTE_FREIGHT_PRICING_UTIL.set_exception('Get_Distances',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_call_mileage_if_fail');
3835         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Distances');
3836 
3837    WHEN others THEN
3838         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
3839         FTE_FREIGHT_PRICING_UTIL.set_exception('Get_Distances',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
3840         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
3841         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Distances');
3842 
3843 
3844 
3845 END Get_Distances;
3846 
3847 
3848 --The quantities at the stop level are added to the trip level
3849 
3850 PROCEDURE Update_Trip_With_Stop_Info(
3851 	p_stop_rec IN TL_TRIP_STOP_INPUT_REC_TYPE ,
3852 	x_trip_rec IN OUT NOCOPY TL_trip_data_input_rec_type,
3853 	x_return_status	OUT	NOCOPY	VARCHAR2) IS
3854 
3855 l_return_status VARCHAR2(1);
3856 
3857 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
3858 
3859 	l_warning_count 	NUMBER:=0;
3860 BEGIN
3861 
3862 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
3863 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Update_Trip_With_Stop_Info','start');
3864 
3865 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
3866 	x_trip_rec.number_of_pallets:=x_trip_rec.number_of_pallets +
3867 	p_stop_rec.pickup_pallets;
3868 	x_trip_rec.number_of_containers:=x_trip_rec.number_of_containers +
3869 	p_stop_rec.pickup_containers;
3870 	x_trip_rec.total_weight:=x_trip_rec.total_weight +
3871 	p_stop_rec.pickup_weight;
3872 	x_trip_rec.total_volume:=x_trip_rec.total_volume +
3873 	p_stop_rec.pickup_volume;
3874 
3875 
3876         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Update_Trip_With_Stop_Info');
3877 
3878 	IF (l_warning_count > 0)
3879 	THEN
3880 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
3881 	END IF;
3882 EXCEPTION
3883    WHEN others THEN
3884         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
3885         FTE_FREIGHT_PRICING_UTIL.set_exception('Update_Trip_With_Stop_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
3886         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
3887         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Update_Trip_With_Stop_Info');
3888 
3889 END Update_Trip_With_Stop_Info;
3890 
3891 
3892 --GEts all the facility related information
3893 
3894 PROCEDURE Get_Facility_Info(
3895 	p_stop_index IN NUMBER,
3896 	x_return_status	OUT	NOCOPY	VARCHAR2) IS
3897 
3898 	l_fac_info_rec FTE_LOCATION_PARAMETERS_PKG.TL_FAC_INFO_REC_TYPE;
3899 	l_fac_info_tab FTE_LOCATION_PARAMETERS_PKG.TL_FAC_INFO_TAB_TYPE;
3900 	l_stop_index NUMBER;
3901 	i NUMBER;
3902 	l_return_status VARCHAR2(1);
3903 	l_stop_rec  TL_TRIP_STOP_INPUT_REC_TYPE;
3904 
3905 
3906 
3907 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
3908 
3909 	l_warning_count 	NUMBER:=0;
3910 BEGIN
3911 
3912 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
3913 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Get_Facility_Info','start');
3914 
3915 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
3916 	l_stop_index:=p_stop_index;
3917 	i:=0;
3918 	WHILE(g_tl_trip_stop_rows.EXISTS(l_stop_index))
3919 	LOOP
3920 
3921 		l_fac_info_rec.location_id:=
3922 		g_tl_trip_stop_rows(l_stop_index).location_id;
3923 		l_fac_info_rec.stop_id:=
3924 		g_tl_trip_stop_rows(l_stop_index).stop_id;
3925 		l_fac_info_tab(i):=l_fac_info_rec;
3926 		i:=i+1;
3927 		l_stop_index:=l_stop_index+1;
3928 	END LOOP;
3929 
3930 	FTE_LOCATION_PARAMETERS_PKG.Get_Fac_Info( l_fac_info_tab,l_return_status);
3931 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
3932 	THEN
3933 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
3934 	       THEN
3935 
3936 		    	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_WRN,' Interface to facility failed:g_tl_get_fac_info_fail');
3937 		    	l_warning_count:=l_warning_count+1;
3938 
3939 		    	FTE_FREIGHT_PRICING_UTIL.setmsg (
3940 			 p_api=>'Get_Facility_Info',
3941 			 p_exc=>'g_tl_get_fac_info_fail',
3942 			 p_msg_type=>'W',
3943 			 p_trip_id=> g_tl_trip_stop_rows(p_stop_index).trip_id);
3944 
3945 			--raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_fac_info_fail;
3946 	       END IF;
3947 	END IF;
3948 
3949 	l_stop_index:=p_stop_index;
3950 	i:=0;
3951 	WHILE(l_fac_info_tab.EXISTS(i))
3952 	LOOP
3953 
3954 		l_stop_rec:=g_tl_trip_stop_rows(l_stop_index);
3955 		l_fac_info_rec:=l_fac_info_tab(i);
3956 
3957 		l_stop_rec.loading_protocol:=l_fac_info_rec.loading_protocol;
3958 
3959 
3960 		l_stop_rec.fac_charge_basis:=l_fac_info_rec.fac_charge_basis;
3961 
3962 
3963 		l_stop_rec.fac_handling_time:=l_fac_info_rec.fac_handling_time;
3964 
3965 		l_stop_rec.fac_currency:=l_fac_info_rec.fac_currency;
3966 
3967 		l_stop_rec.fac_modifier_id:=l_fac_info_rec.fac_modifier_id;
3968 		l_stop_rec.fac_pricelist_id:=l_fac_info_rec.fac_pricelist_id;
3969 
3970 		l_stop_rec.fac_weight_uom_class:=
3971 			l_fac_info_rec.fac_weight_uom_class;
3972 		l_stop_rec.fac_weight_uom:=l_fac_info_rec.fac_weight_uom;
3973 
3974 		l_stop_rec.fac_volume_uom_class:=
3975 			l_fac_info_rec.fac_volume_uom_class;
3976 		l_stop_rec.fac_volume_uom:=l_fac_info_rec.fac_volume_uom;
3977 
3978 		l_stop_rec.fac_distance_uom_class:=
3979 			l_fac_info_rec.fac_distance_uom_class;
3980 		l_stop_rec.fac_distance_uom:=l_fac_info_rec.fac_distance_uom;
3981 
3982 		l_stop_rec.fac_time_uom_class:=
3983 			l_fac_info_rec.fac_time_uom_class;
3984 		l_stop_rec.fac_time_uom:=l_fac_info_rec.fac_time_uom;
3985 
3986 
3987 		g_tl_trip_stop_rows(l_stop_index):=l_stop_rec;
3988 
3989 		i:=i+1;
3990 		l_stop_index:=l_stop_index+1;
3991 	END LOOP;
3992 
3993         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Facility_Info');
3994 
3995 	IF (l_warning_count > 0)
3996 	THEN
3997 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
3998 	END IF;
3999 EXCEPTION
4000 
4001 
4002 
4003    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_fac_info_fail THEN
4004         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
4005         FTE_FREIGHT_PRICING_UTIL.set_exception('Get_Facility_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_fac_info_fail');
4006         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Facility_Info');
4007 
4008    WHEN others THEN
4009         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
4010         FTE_FREIGHT_PRICING_UTIL.set_exception('Get_Facility_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
4011         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
4012         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Facility_Info');
4013 
4014 
4015 END Get_Facility_Info;
4016 
4017 
4018 --Gets the region(at the level specified by the carrier) for the location
4019 
4020 PROCEDURE Get_Region_For_Location(
4021 	p_location_id IN NUMBER,
4022 	p_region_type IN VARCHAR2,
4023 	x_region_id	IN OUT NOCOPY NUMBER,
4024 	x_return_status OUT NOCOPY VARCHAR2) IS
4025 
4026 
4027 CURSOR get_region_id(c_location_id IN NUMBER, c_region_type IN NUMBER) IS
4028 	SELECT 	rl.region_id,
4029 		rl.region_type
4030 	FROM wsh_region_locations rl
4031 	WHERE 	rl.location_id= c_location_id and
4032 		rl.region_type >= c_region_type
4033 	ORDER BY rl.region_type ASC;
4034 
4035 CURSOR get_exact_region_id(c_region_id IN NUMBER,c_region_type IN NUMBER) IS
4036 	SELECT 	r.region_id,
4037 		r.region_type,
4038 		r.parent_region_id
4039 	FROM 	wsh_regions r
4040 	WHERE 	r.region_id = c_region_id AND
4041 		r.region_type >=c_region_type;
4042 
4043 
4044 l_region_id 	NUMBER;
4045 l_region_type	NUMBER;
4046 l_parent_region_id NUMBER;
4047 l_flag 	VARCHAR2(1);
4048 l_region_type_id NUMBER;
4049 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
4050 
4051 	l_warning_count 	NUMBER:=0;
4052 BEGIN
4053 
4054 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
4055 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Get_Region_For_Location','start');
4056 
4057 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
4058 	x_region_id:=NULL;
4059 
4060 	l_region_type_id:=NULL;
4061 
4062 	IF(p_region_type='COUNTRY')
4063 	THEN
4064 		l_region_type_id:=0;
4065 	ELSIF(p_region_type='STATE')
4066 	THEN
4067 		l_region_type_id:=1;
4068 	ELSIF(p_region_type='CITY')
4069 	THEN
4070 		l_region_type_id:=2;
4071 	ELSIF(p_region_type='POSTAL_CODE')
4072 	THEN
4073 		l_region_type_id:=3;
4074 	END IF;
4075 
4076 	IF (l_region_type_id IS NOT NULL)
4077 	THEN
4078 
4079 
4080 		OPEN get_region_id(p_location_id,l_region_type_id);
4081 		FETCH get_region_id INTO l_region_id,l_region_type;
4082 		IF (get_region_id%FOUND)
4083 		THEN
4084 
4085 
4086 			IF(l_region_type = l_region_type_id)
4087 			THEN
4088 				x_region_id:=l_region_id;
4089 			ELSE
4090 				l_flag:='Y';
4091 				--Keep going up the region hierarchy till region a
4092 				--at the right level is found
4093 				WHILE(l_flag = 'Y')
4094 				LOOP
4095 
4096 					OPEN get_exact_region_id(
4097 						l_region_id,
4098 						l_region_type_id);
4099 					FETCH get_exact_region_id INTO
4100 						l_region_id,
4101 						l_region_type,
4102 						l_parent_region_id;
4103 					IF (get_exact_region_id%FOUND)
4104 					THEN
4105 						IF (l_region_type=l_region_type_id)
4106 						THEN
4107 
4108 							x_region_id:=l_region_id;
4109 							l_flag:='N';
4110 						ELSIF((l_parent_region_id IS NOT NULL)
4111 						 AND(l_parent_region_id <> -1))
4112 						THEN
4113 						     l_region_id:=l_parent_region_id;
4114 						ELSE
4115 
4116 						      l_flag:='N';
4117 
4118 						END IF;
4119 					ELSE
4120 						l_flag:='N';
4121 					END IF;
4122 					CLOSE get_exact_region_id;
4123 				END LOOP;
4124 
4125 			END IF;
4126 
4127 
4128 		END IF;
4129 		CLOSE get_region_id;
4130 
4131 	END IF;
4132 
4133         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Region_For_Location');
4134 
4135 	IF (l_warning_count > 0)
4136 	THEN
4137 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
4138 	END IF;
4139 EXCEPTION
4140    WHEN others THEN
4141         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
4142         FTE_FREIGHT_PRICING_UTIL.set_exception('Get_Region_For_Location',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
4143         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
4144         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Region_For_Location');
4145 
4146 
4147 END Get_Region_For_Location;
4148 
4149 PROCEDURE Display_Trip_Cache_Row(p_trip_rec  TL_trip_data_input_rec_type) IS
4150 
4151 	l_warning_count 	NUMBER:=0;
4152 BEGIN
4153     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4154        ' ');
4155     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4156         'START TRIP');
4157     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4158         '  TripID             :'||p_trip_rec.trip_id);
4159     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4160         '  Lane ID            :'||p_trip_rec.lane_id);
4161     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4162         '  ScheduleId         :'||p_trip_rec.schedule_id);
4163     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4164         '  Service Type       :'||p_trip_rec.service_type);
4165     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4166         '  Vehicle            :'||p_trip_rec.vehicle_type);
4167     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4168         '  PriceList          :'||p_trip_rec.price_list_id);
4169     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4170         '  Triploaded         :'||p_trip_rec.loaded_distance);
4171     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4172         '  Unloaded           :'||p_trip_rec.unloaded_distance);
4173     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4174         '  Pallets            :'||p_trip_rec.number_of_pallets);
4175     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG ,
4176         '  Containers         :'||p_trip_rec.number_of_containers);
4177     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4178         '  Time               :'||p_trip_rec.time);
4179     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4180         '  Stops              :'||p_trip_rec.number_of_stops);
4181     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4182         '  Distance           :'||p_trip_rec.total_trip_distance);
4183     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4184         '  Direct             :'||p_trip_rec.total_direct_distance);
4185     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4186         '  Distance Method    :'||p_trip_rec.distance_method);
4187     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4188         '  Total Weight       :'||p_trip_rec.total_weight);
4189     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4190         '  Total Volume       :'||p_trip_rec.total_volume);
4191     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4192         '  Continuous Move    :'||p_trip_rec.continuous_move);
4193     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4194         '  Trip departure     :'||p_trip_rec.planned_departure_date);
4195     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4196         '  Arrival            :'||p_trip_rec.planned_arrival_date);
4197     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4198         '  Deadhead           :'||p_trip_rec.dead_head);
4199     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4200         '  StopRef            :'||p_trip_rec.stop_reference);
4201     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4202         '  DLegRef            :'||p_trip_rec.delivery_leg_reference);
4203     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4204         '  Child DLegRef      :'||p_trip_rec.child_dleg_reference);
4205 
4206     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4207         'END TRIP');
4208     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4209        ' ');
4210 
4211 END Display_Trip_Cache_Row;
4212 
4213 PROCEDURE Display_Carrier_Cache_Row(p_carrier_rec   TL_CARRIER_PREF_REC_TYPE) IS
4214 
4215 	l_warning_count 	NUMBER:=0;
4216 BEGIN
4217 
4218 
4219     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4220        ' ');
4221     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4222         'START CARRIER');
4223     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4224         '  Carrier ID         :'||p_carrier_rec.carrier_id);
4225     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4226         '  MaxOutRoute        :'||p_carrier_rec.max_out_of_route);
4227     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4228         '  MinCMDist          :'||p_carrier_rec.min_cm_time);
4229     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4230         '  MinCMTime          :'||p_carrier_rec.min_cm_time);
4231     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4232         '  FreeDeadHeadMileage:'||p_carrier_rec.cm_free_dh_mileage);
4233     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4234         '  FirstLoadDiscFlag  :'||p_carrier_rec.cm_first_load_discount_flag);
4235     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4236         '  Currency           :'||p_carrier_rec.currency);
4237     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4238         '  Discount/Rate      :'||p_carrier_rec.cm_rate_variant);
4239     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4240         '  UnitBasis          :'||p_carrier_rec.unit_basis);
4241     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4242         '  WeightUomClass     :'||p_carrier_rec.weight_uom_class);
4243     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4244         '  WeightUom          :'||p_carrier_rec.weight_uom);
4245     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4246         '  VolumeUomClass     :'||p_carrier_rec.volume_uom_class);
4247     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4248         '  VolumeUom          :'||p_carrier_rec.volume_uom);
4249     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4250         '  DistanceUomClass   :'||p_carrier_rec.distance_uom_class);
4251     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4252         '  DistanceUom        :'||p_carrier_rec.distance_uom);
4253     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4254         '  TimeUomClass       :'||p_carrier_rec.time_uom_class);
4255     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4256         '  TimeUom            :'||p_carrier_rec.time_uom);
4257     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4258         '  RegionLevel        :'||p_carrier_rec.region_level);
4259     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4260         '  DistanceCalcMethod :'||p_carrier_rec.distance_calculation_method);
4261 
4262     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4263         '  Dim Factor	      :'||p_carrier_rec.dim_factor);
4264     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4265         '  Dim Weight UOM     :'||p_carrier_rec.dim_weight_uom);
4266     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4267         '  Dim Volume UOM     :'||p_carrier_rec.dim_volume_uom);
4268     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4269         '  Dim Dimension UOM  :'||p_carrier_rec.dim_length_uom);
4270     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4271         '  Dim Min Vol        :'||p_carrier_rec.dim_min_volume);
4272 
4273 
4274 
4275 
4276     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4277         'END CARRIER');
4278     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4279        ' ');
4280 
4281 END Display_Carrier_Cache_Row;
4282 
4283 
4284 PROCEDURE Display_Stop_Cache_Row(p_stop_rec  TL_TRIP_STOP_INPUT_REC_TYPE) IS
4285 
4286 	l_warning_count 	NUMBER:=0;
4287 BEGIN
4288 
4289     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4290        ' ');
4291     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4292         'START STOP');
4293     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4294         '  StopID             :'||p_stop_rec.stop_id);
4295     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4296         '  TripID             :'||p_stop_rec.trip_id);
4297     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4298         '  Location           :'||p_stop_rec.location_id);
4299     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4300         '  WkDayLay           :'||p_stop_rec.weekday_layovers);
4301     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4302         '  WkEndLay           :'||p_stop_rec.weekend_layovers);
4303     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4304         '  Distance           :'||p_stop_rec.distance_to_next_stop);
4305     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4306         '  Time               :'||p_stop_rec.time_to_next_stop);
4307     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4308         '  PkWt               :'||p_stop_rec.pickup_weight);
4309     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4310         '  PkVol              :'||p_stop_rec.pickup_volume);
4311     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4312         '  PkPallets          :'||p_stop_rec.pickup_pallets);
4313     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4314         '  PkContainers       :'||p_stop_rec.pickup_containers);
4315     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4316         '  Protocol           :'||p_stop_rec.loading_protocol);
4317     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4318         '  DrpWt              :'||p_stop_rec.dropoff_weight);
4319     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4320         '  DrpVol             :'||p_stop_rec.dropoff_volume);
4321     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4322         '  DrpPallets         :'||p_stop_rec.dropoff_pallets);
4323     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4324         '  DrpContainer       :'||p_stop_rec.dropoff_containers);
4325     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4326         '  Region             :'||p_stop_rec.stop_region);
4327     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4328         '  Zone               :'||p_stop_rec.stop_zone);
4329     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4330         '  Arrival            :'||p_stop_rec.planned_arrival_date);
4331     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4332         '  Departure          :'||p_stop_rec.planned_departure_date);
4333     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4334         '  Stop Type          :'||p_stop_rec.stop_type);
4335     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4336         '  FacPickupWt        :'||p_stop_rec.fac_pickup_weight);
4337     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4338         '  FacPickupVol       :'||p_stop_rec.fac_pickup_volume);
4339     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4340         '  FacDropoffWt       :'||p_stop_rec.fac_dropoff_weight);
4341     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4342         '  FacDropoffVol      :'||p_stop_rec.fac_dropoff_volume);
4343     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4344         '  FacChargeBasis     :'||p_stop_rec.fac_charge_basis);
4345     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4346         '  FacHandlingTime    :'||p_stop_rec.fac_handling_time);
4347     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4348         '  FacCurrency        :'||p_stop_rec.fac_currency);
4349     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4350         '  FacModifierId      :'||p_stop_rec.fac_modifier_id);
4351     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4352         '  FacPricelistId     :'||p_stop_rec.fac_pricelist_id);
4353     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4354         '  FacWeightUomClass  :'||p_stop_rec.fac_weight_uom_class);
4355     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4356         '  FacWeightUom       :'||p_stop_rec.fac_weight_uom);
4357     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4358         '  FacVolumeUomClass  :'||p_stop_rec.fac_volume_uom_class);
4359     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4360         '  FacVolumeUom       :'||p_stop_rec.fac_volume_uom);
4361     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4362         '  FacDistUomClass    :'||p_stop_rec.fac_distance_uom_class);
4363     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4364         '  FacDistUom         :'||p_stop_rec.fac_distance_uom);
4365     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4366         '  FacTimeUomClass    :'||p_stop_rec.fac_time_uom_class);
4367     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4368         '  FacTimeUom         :'||p_stop_rec.fac_time_uom);
4369     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4370         'END STOP');
4371     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4372        ' ');
4373 
4374 END Display_Stop_Cache_Row;
4375 
4376 
4377 PROCEDURE Display_DLeg_Cache_Row(p_dleg_rec TL_delivery_leg_rec_type ) IS
4378 
4379 	l_warning_count 	NUMBER:=0;
4380 BEGIN
4381     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4382        ' ');
4383     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4384         'START DLEG');
4385     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4386         '  DlegId             :'||p_dleg_rec.delivery_leg_id);
4387     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4388         '  TripId             :'||p_dleg_rec.trip_id);
4389     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4390         '  DeliveryId         :'||p_dleg_rec.delivery_id);
4391     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4392         '  PickstopId         :'||p_dleg_rec.pickup_stop_id);
4393     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4394         '  PickuplocationId   :'||p_dleg_rec.pickup_location_id);
4395     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4396         '  DrpStopId          :'||p_dleg_rec.dropoff_stop_id);
4397     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4398         '  DrpLocId           :'||p_dleg_rec.dropoff_location_id);
4399     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4400         '  Weight             :'||p_dleg_rec.weight);
4401     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4402         '  Volume             :'||p_dleg_rec.volume);
4403     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4404         '  Pallets            :'||p_dleg_rec.pallets);
4405     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4406         '  Containers         :'||p_dleg_rec.containers);
4407     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4408         '  Distance           :'||p_dleg_rec.distance);
4409     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4410         '  Direct Distance    :'||p_dleg_rec.direct_distance);
4411 
4412 
4413     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4414         '  Parent dleg is     :'||p_dleg_rec.parent_dleg_id);
4415     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4416         '  Children Weight    :'||p_dleg_rec.children_weight);
4417     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4418         '  Children Volume    :'||p_dleg_rec.children_volume);
4419     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4420         '  Is parent          :'||p_dleg_rec.is_parent_dleg);
4421     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4422         '  Parent no consol   :'||p_dleg_rec.parent_with_no_consol_lpn);
4423 
4424 
4425 
4426     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4427         'END DLEG');
4428     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4429        ' ');
4430 
4431 END Display_DLeg_Cache_Row;
4432 
4433 
4434 PROCEDURE Display_Dlv_Detail_Cache_Row (p_dlv_det_rec
4435 FTE_FREIGHT_PRICING.shipment_line_rec_type) IS
4436 
4437 	l_warning_count 	NUMBER:=0;
4438 BEGIN
4439     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4440        ' ');
4441     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4442         'START DELIVERY_DETAIL');
4443     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4444         '  DlvDetailId        :'||p_dlv_det_rec.delivery_detail_id);
4445     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4446         '  DeliveryId         :'||p_dlv_det_rec.delivery_id);
4447     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4448         '  RepriceReqd        :'||p_dlv_det_rec.reprice_required);
4449     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4450         '  ParentDlvDetailId  :'||p_dlv_det_rec.parent_delivery_detail_id);
4451     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4452         '  GrossWt            :'||p_dlv_det_rec.gross_weight);
4453     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4454         '  WtUom              :'||p_dlv_det_rec.weight_uom_code);
4455     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4456         '  Volume             :'||p_dlv_det_rec.volume);
4457     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4458         '  VolumeUom          :'||p_dlv_det_rec.volume_uom_code);
4459 
4460     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4461         '  Assignment type    :'||p_dlv_det_rec.assignment_type);
4462     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4463         '  Parent Dlv Id      :'||p_dlv_det_rec.parent_delivery_id);
4464     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4465         '  Parent Dleg id          :'||p_dlv_det_rec.parent_delivery_leg_id);
4466 
4467 
4468     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4469         'END DELIVERY_DETAIL');
4470     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4471        ' ');
4472 
4473 END Display_Dlv_Detail_Cache_Row;
4474 
4475 PROCEDURE Display_Cache IS
4476 
4477 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
4478 i NUMBER;
4479 
4480 	l_warning_count 	NUMBER:=0;
4481 BEGIN
4482     FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
4483 
4484     FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Display_Cache','start');
4485     FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'Starting cache display');
4486 
4487     i:=g_tl_trip_rows.FIRST;
4488     WHILE (( i IS NOT NULL) AND (g_tl_trip_rows.EXISTS(i)))
4489     LOOP
4490         -- FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4491         --     '  ');
4492         -- FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4493         --     ' TRIP ');
4494         -- FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4495         --     '  ');
4496 
4497         Display_Trip_Cache_Row(
4498         	p_trip_rec	=>	g_tl_trip_rows(i));
4499         i:=g_tl_trip_rows.NEXT(i);
4500     END LOOP;
4501 
4502 
4503 
4504     i:=g_tl_trip_stop_rows.FIRST;
4505     WHILE (( i IS NOT NULL) AND (g_tl_trip_stop_rows.EXISTS(i)))
4506     LOOP
4507         -- FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4508         --     '  ');
4509         -- FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4510         --             ' STOP ');
4511         -- FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4512         --     '  ');
4513         Display_Stop_Cache_Row(
4514         	p_stop_rec	=>	g_tl_trip_stop_rows(i));
4515         i:=g_tl_trip_stop_rows.NEXT(i);
4516     END LOOP;
4517 
4518 
4519     i:=g_tl_delivery_leg_rows.FIRST;
4520     WHILE (( i IS NOT NULL) AND (g_tl_delivery_leg_rows.EXISTS(i)))
4521     LOOP
4522 
4523         -- FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4524         --     '  ');
4525         -- FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4526         --             ' DLEG ');
4527         -- FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4528         --     '  ');
4529 
4530 
4531         Display_DLeg_Cache_Row(
4532         	p_dleg_rec	=>	g_tl_delivery_leg_rows(i));
4533 
4534         i:=g_tl_delivery_leg_rows.NEXT(i);
4535     END LOOP;
4536 
4537 
4538     i:=g_tl_chld_delivery_leg_rows.FIRST;
4539     WHILE (( i IS NOT NULL) AND (g_tl_chld_delivery_leg_rows.EXISTS(i)))
4540     LOOP
4541 
4542         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4543                      ' CHILD DLEG ');
4544         Display_DLeg_Cache_Row(
4545         	p_dleg_rec	=>	g_tl_chld_delivery_leg_rows(i));
4546 
4547         i:=g_tl_chld_delivery_leg_rows.NEXT(i);
4548     END LOOP;
4549 
4550 
4551 
4552     i:=g_tl_carrier_pref_rows.FIRST;
4553     WHILE (( i IS NOT NULL) AND (g_tl_carrier_pref_rows.EXISTS(i)))
4554     LOOP
4555         -- FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4556         --     '  ');
4557         -- FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4558         --             ' CARRIER ');
4559         -- FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4560         --     '  ');
4561         Display_Carrier_Cache_Row(
4562         	p_carrier_rec	=>	g_tl_carrier_pref_rows(i));
4563         i:=g_tl_carrier_pref_rows.NEXT(i);
4564     END LOOP;
4565 
4566 
4567     i:=g_tl_shipment_line_rows.FIRST;
4568     WHILE (( i IS NOT NULL) AND
4569         (g_tl_shipment_line_rows.EXISTS(i)))
4570     LOOP
4571         -- FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4572         --     '  ');
4573         -- FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4574         --             ' DLV DETAIL ');
4575         -- FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4576         --     '  ');
4577 
4578         Display_Dlv_Detail_Cache_Row(
4579             p_dlv_det_rec =>	g_tl_shipment_line_rows(i));
4580 
4581         i:=g_tl_shipment_line_rows.NEXT(i);
4582     END LOOP;
4583 
4584 
4585     i:=g_tl_int_shipment_line_rows.FIRST;
4586     WHILE (( i IS NOT NULL) AND
4587         (g_tl_int_shipment_line_rows.EXISTS(i)))
4588     LOOP
4589         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
4590                     ' INT DLV DETAIL ');
4591 
4592         Display_Dlv_Detail_Cache_Row(
4593             p_dlv_det_rec =>	g_tl_int_shipment_line_rows(i));
4594 
4595         i:=g_tl_int_shipment_line_rows.NEXT(i);
4596     END LOOP;
4597 
4598 
4599 
4600     FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Display_Cache');
4601 
4602 END  Display_Cache;
4603 
4604 
4605 PROCEDURE Get_Stop_Type(x_stop_rec IN OUT NOCOPY TL_TRIP_STOP_INPUT_REC_TYPE)
4606 IS
4607 
4608  	l_pickup_flag VARCHAR2(1);
4609  	l_dropoff_flag VARCHAR2(1);
4610 
4611 BEGIN
4612 	l_pickup_flag:='N';
4613 	l_dropoff_flag:='N';
4614 
4615 	IF ((x_stop_rec.pickup_weight >0) OR(x_stop_rec.pickup_volume>0) OR
4616 	(x_stop_rec.pickup_pallets >0) OR(x_stop_rec.pickup_containers>0)
4617 	)
4618 	THEN
4619 		l_pickup_flag:='Y';
4620 
4621 	END IF;
4622 
4623 	IF ((x_stop_rec.dropoff_weight >0) OR(x_stop_rec.dropoff_volume>0) OR
4624 	(x_stop_rec.dropoff_pallets >0) OR(x_stop_rec.dropoff_containers>0)
4625 	)
4626 	THEN
4627 		l_dropoff_flag:='Y';
4628 
4629 	END IF;
4630 
4631 	IF ((l_pickup_flag='Y') AND (l_dropoff_flag='N'))
4632 	THEN
4633 
4634 		x_stop_rec.stop_type:='PU';
4635 	ELSIF ((l_pickup_flag='N') AND (l_dropoff_flag='Y'))
4636 	THEN
4637 		x_stop_rec.stop_type:='DO';
4638 	ELSIF ((l_pickup_flag='Y') AND (l_dropoff_flag='Y'))
4639 	THEN
4640 		x_stop_rec.stop_type:='PD';
4641 	ELSE
4642 		x_stop_rec.stop_type:='NA';
4643 	END IF;
4644 
4645 
4646 END Get_Stop_Type;
4647 
4648 
4649 -- Pass in either an internal stop id or an internal location id
4650 -- Go through the cache and replace the dropoff stop id or relocation id with the physcial stop id or location id
4651 PROCEDURE Replace_Dleg_Dropoff(
4652 	p_dleg_index_start IN NUMBER,
4653 	p_internal_stop_id IN NUMBER,
4654 	p_internal_location_id IN NUMBER,
4655 	p_actual_stop_id IN NUMBER,
4656 	p_actual_location_id IN NUMBER,
4657 	x_return_status OUT NOCOPY VARCHAR2)
4658 IS
4659 i NUMBER;
4660 
4661 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
4662 
4663 	l_warning_count 	NUMBER:=0;
4664 BEGIN
4665 
4666 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
4667 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Replace_Dleg_Dropoff','start');
4668 
4669 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
4670 	IF (p_internal_location_id IS NOT NULL)
4671 	THEN
4672 
4673 		i:=p_dleg_index_start;
4674 		WHILE (( i IS NOT NULL) AND (g_tl_delivery_leg_rows.EXISTS(i)))
4675 		LOOP
4676 			IF (g_tl_delivery_leg_rows(i).dropoff_location_id = p_internal_location_id)
4677 			THEN
4678 				g_tl_delivery_leg_rows(i).dropoff_location_id:=p_actual_location_id;
4679 			END IF;
4680 			i:=g_tl_delivery_leg_rows.NEXT(i);
4681 		END LOOP;
4682 
4683 
4684 	ELSIF (p_internal_stop_id IS NOT NULL)
4685 	THEN
4686 		i:=p_dleg_index_start;
4687 		WHILE (( i IS NOT NULL) AND (g_tl_delivery_leg_rows.EXISTS(i)))
4688 		LOOP
4689 			IF (g_tl_delivery_leg_rows(i).dropoff_stop_id = p_internal_stop_id)
4690 			THEN
4691 				g_tl_delivery_leg_rows(i).dropoff_stop_id:=p_actual_stop_id;
4692 				g_tl_delivery_leg_rows(i).dropoff_location_id:=p_actual_location_id;
4693 			END IF;
4694 			i:=g_tl_delivery_leg_rows.NEXT(i);
4695 		END LOOP;
4696 
4697 
4698 	END IF;
4699 
4700         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Replace_Dleg_Dropoff');
4701 
4702 	IF (l_warning_count > 0)
4703 	THEN
4704 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
4705 	END IF;
4706 EXCEPTION
4707    WHEN others THEN
4708         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
4709         FTE_FREIGHT_PRICING_UTIL.set_exception('Replace_Dleg_Dropoff',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
4710         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
4711         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Replace_Dleg_Dropoff');
4712 
4713 END Replace_Dleg_Dropoff;
4714 
4715 
4716 
4717 PROCEDURE Classify_Detail(
4718 	x_dlv_dtl_rec IN OUT NOCOPY FTE_FREIGHT_PRICING.shipment_line_rec_type,
4719 	x_return_status OUT NOCOPY VARCHAR2)
4720 IS
4721 BEGIN
4722 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
4723 
4724 END Classify_Detail;
4725 
4726 
4727 PROCEDURE Cache_Int_Containers (
4728 	p_trip_id IN NUMBER,
4729 	p_carrier_pref_rec IN TL_CARRIER_PREF_REC_TYPE,
4730 	x_return_status OUT NOCOPY VARCHAR2)
4731 IS
4732 
4733 CURSOR get_int_containers (c_trip_id IN NUMBER) RETURN
4734 FTE_FREIGHT_PRICING.shipment_line_rec_type IS
4735 
4736 	SELECT	dd.delivery_detail_id,
4737 		dl.delivery_id,
4738 		dl.delivery_leg_id,
4739 		dl.reprice_required,
4740 		da.parent_delivery_detail_id,
4741 		dd.customer_id,
4742 		dd.sold_to_contact_id,
4743 		dd.inventory_item_id,
4744 		dd.item_description,
4745 		dd.hazard_class_id,
4746 		dd.country_of_origin,
4747 		dd.classification,
4748 		dd.requested_quantity,
4749 		dd.requested_quantity_uom,
4750 		dd.master_container_item_id,
4751 		dd.detail_container_item_id,
4752 		dd.customer_item_id,
4753 		dd.net_weight,
4754 		dd.organization_id,
4755 		dd.container_flag,
4756 		dd.container_type_code,
4757 		dd.container_name,
4758 		dd.fill_percent,
4759 		dd.gross_weight,
4760 		dd.currency_code,dd.freight_class_cat_id,
4761 		dd.commodity_code_cat_id,
4762 		dd.weight_uom_code ,
4763 		dd.volume,
4764 		dd.volume_uom_code,
4765 		null,null,null,null,null,null,null,null,null,null,null,null,
4766 		null,null,null,null,null,null,null,null,null,null,null,null,
4767 		null,null,null,null,null,null,null,null,null,null,null,null,
4768 		null,null,null,
4769 		da.type,
4770 		da.parent_delivery_id,
4771 		dl.parent_delivery_leg_id
4772 	FROM 	wsh_delivery_assignments da,
4773 		wsh_delivery_legs dl ,
4774 		wsh_delivery_details dd,
4775 		wsh_trip_stops s
4776 	WHERE 	da.delivery_id=dl.delivery_id and
4777 		dl.pick_up_stop_id=s.stop_id and
4778 		s.trip_id = c_trip_id and
4779 		da.parent_delivery_detail_id is NOT null and
4780 		(da.type IS NULL OR da.type='S') and
4781 		da.delivery_detail_id = dd.delivery_detail_id
4782 	ORDER BY
4783 		da.delivery_id;
4784 
4785 	l_dlv_detail_rec FTE_FREIGHT_PRICING.shipment_line_rec_type;
4786 	l_return_status VARCHAR2(1);
4787 
4788 	l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
4789 
4790 	l_warning_count 	NUMBER:=0;
4791 BEGIN
4792 
4793 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
4794 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Cache_Int_Containers','start');
4795 
4796 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
4797 
4798 
4799 
4800 
4801 	OPEN get_int_containers(p_trip_id);
4802 	FETCH get_int_containers INTO l_dlv_detail_rec;
4803 	WHILE(get_int_containers%FOUND)
4804 	LOOP
4805 		IF ((l_dlv_detail_rec.delivery_leg_id IS NOT NULL)
4806 			AND
4807 			((g_tl_delivery_leg_rows.EXISTS(l_dlv_detail_rec.delivery_leg_id))
4808 			AND (g_tl_delivery_leg_rows(l_dlv_detail_rec.delivery_leg_id).is_parent_dleg='Y'))
4809 			OR
4810 			((g_tl_chld_delivery_leg_rows.EXISTS(l_dlv_detail_rec.delivery_leg_id))
4811 			AND (g_tl_chld_delivery_leg_rows(l_dlv_detail_rec.delivery_leg_id).is_parent_dleg='Y')))
4812 		THEN
4813 
4814 
4815 			Validate_Dlv_Detail_Info(
4816 				p_carrier_pref_rec=>p_carrier_pref_rec,
4817 				x_dlv_detail_info=>l_dlv_detail_rec,
4818 				x_return_status	=>	l_return_status);
4819 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
4820 			THEN
4821 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
4822 			       THEN
4823 
4824 			       	  CLOSE get_int_containers;
4825 
4826 			          raise FTE_FREIGHT_PRICING_UTIL.g_tl_validate_dlv_dtl_fail;
4827 			       END IF;
4828 			END IF;
4829 
4830 
4831 			IF ( NOT ( g_tl_int_shipment_line_rows.EXISTS(
4832 				l_dlv_detail_rec.delivery_detail_id ) ) )
4833 			THEN
4834 
4835 				--Add to cache
4836 
4837 				g_tl_int_shipment_line_rows(
4838 					l_dlv_detail_rec.delivery_detail_id):=l_dlv_detail_rec;
4839 			END IF;
4840 
4841 
4842 
4843 		END IF;
4844 
4845 
4846 		FETCH get_int_containers INTO l_dlv_detail_rec;
4847 	END LOOP;
4848 
4849 
4850 	CLOSE get_int_containers;
4851 
4852         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Int_Containers');
4853 
4854 	IF (l_warning_count > 0)
4855 	THEN
4856 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
4857 	END IF;
4858 EXCEPTION
4859 
4860 
4861    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_validate_dlv_dtl_fail THEN
4862         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
4863         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Int_Containers',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_validate_dlv_dtl_fail');
4864         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Int_Containers');
4865 
4866    WHEN others THEN
4867         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
4868         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Int_Containers',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
4869         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
4870         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Int_Containers');
4871 
4872 
4873 END Cache_Int_Containers;
4874 
4875 
4876 PROCEDURE	Sync_Child_Dleg_Cache(
4877 	p_initial_dleg_index IN NUMBER,
4878 	p_intial_child_dleg_index IN NUMBER,
4879 	p_current_dleg_index IN NUMBER,
4880 	p_chld_dleg_index IN NUMBER,
4881 	x_return_status OUT NOCOPY VARCHAR2)
4882 IS
4883 
4884 l_parent_dleg_id NUMBER;
4885 l_parent_dleg_index NUMBER;
4886 l_parent_dleg_hash DBMS_UTILITY.NUMBER_ARRAY;
4887 l_child_dleg_hash DBMS_UTILITY.NUMBER_ARRAY;
4888 
4889 l_curr_dleg_list DBMS_UTILITY.NUMBER_ARRAY;
4890 l_next_dleg_list DBMS_UTILITY.NUMBER_ARRAY;
4891 
4892 l_parent_dleg_rec TL_delivery_leg_rec_type;
4893 l_child_dleg_rec TL_delivery_leg_rec_type;
4894 l_dleg_id NUMBER;
4895 i NUMBER;
4896 l_dlegs_with_no_consol_chld DBMS_UTILITY.NUMBER_ARRAY;
4897 l_dlegs_with_no_consol DBMS_UTILITY.NUMBER_ARRAY;
4898 
4899 l_return_status VARCHAR2(1);
4900 
4901 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
4902 
4903 	l_warning_count 	NUMBER:=0;
4904 BEGIN
4905 
4906 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
4907 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Sync_Child_Dleg_Cache','start');
4908 
4909 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
4910 
4911 
4912 
4913 	--Build hash for access from dleg id to child dleg cache
4914 
4915 	i:=p_intial_child_dleg_index;
4916 	WHILE (i < p_chld_dleg_index)
4917 	LOOP
4918 		IF (g_tl_chld_delivery_leg_rows(i).is_parent_dleg='N')
4919 		THEN
4920 			l_curr_dleg_list(g_tl_chld_delivery_leg_rows(i).delivery_leg_id):=
4921 				g_tl_chld_delivery_leg_rows(i).delivery_leg_id;
4922 		END IF;
4923 
4924 		IF(NOT (l_child_dleg_hash.EXISTS(g_tl_chld_delivery_leg_rows(i).delivery_leg_id)))
4925 		THEN
4926 			l_child_dleg_hash(g_tl_chld_delivery_leg_rows(i).delivery_leg_id):=i;
4927 
4928 		ELSE
4929 			FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'Already in child hash:'||g_tl_chld_delivery_leg_rows(i).delivery_leg_id);
4930 
4931 		END IF;
4932 
4933 		i:=i+1;
4934 	END LOOP;
4935 
4936 
4937 	--Build hash for access from dleg id to dleg cache
4938 
4939 	i:=p_initial_dleg_index;
4940 	WHILE (i < p_current_dleg_index)
4941 	LOOP
4942 
4943 		IF (g_tl_delivery_leg_rows(i).is_parent_dleg='N')
4944 		THEN
4945 			l_curr_dleg_list(g_tl_delivery_leg_rows(i).delivery_leg_id):=
4946 				g_tl_delivery_leg_rows(i).delivery_leg_id;
4947 		END IF;
4948 
4949 
4950 		IF(NOT (l_parent_dleg_hash.EXISTS(g_tl_delivery_leg_rows(i).delivery_leg_id)))
4951 		THEN
4952 			l_parent_dleg_hash(g_tl_delivery_leg_rows(i).delivery_leg_id):=i;
4953 
4954 		ELSE
4955 			FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'Already in child hash:'||g_tl_delivery_leg_rows(i).delivery_leg_id);
4956 
4957 		END IF;
4958 
4959 		i:=i+1;
4960 	END LOOP;
4961 
4962 
4963 
4964 
4965 	i:=p_intial_child_dleg_index;
4966 	WHILE (i < p_chld_dleg_index)
4967 	LOOP
4968 		l_parent_dleg_id:=g_tl_chld_delivery_leg_rows(i).parent_dleg_id;
4969 		IF ((l_parent_dleg_id IS NOT NULL) AND (l_parent_dleg_hash.EXISTS(l_parent_dleg_id)))
4970 		THEN
4971 			l_parent_dleg_index:=l_parent_dleg_hash(l_parent_dleg_id);
4972 
4973 			g_tl_delivery_leg_rows(l_parent_dleg_index).is_parent_dleg:='Y';
4974 
4975 			IF (l_curr_dleg_list.EXISTS(g_tl_delivery_leg_rows(l_parent_dleg_index).delivery_leg_id))
4976 			THEN
4977 				l_curr_dleg_list.DELETE(g_tl_delivery_leg_rows(l_parent_dleg_index).delivery_leg_id);
4978 			END IF;
4979 
4980 
4981 			IF ((g_tl_delivery_leg_rows(l_parent_dleg_index).weight=0) AND
4982 			(g_tl_delivery_leg_rows(l_parent_dleg_index).volume=0))
4983 			THEN
4984 				g_tl_delivery_leg_rows(l_parent_dleg_index).parent_with_no_consol_lpn:='Y';
4985 				l_dlegs_with_no_consol(l_parent_dleg_index):=l_parent_dleg_index;
4986 			END IF;
4987 
4988 			--Copy parent attributes
4989 
4990 			g_tl_chld_delivery_leg_rows(i).pickup_stop_id:=
4991 				g_tl_delivery_leg_rows(l_parent_dleg_index).pickup_stop_id;
4992 			g_tl_chld_delivery_leg_rows(i).pickup_location_id:=
4993 				g_tl_delivery_leg_rows(l_parent_dleg_index).pickup_location_id;
4994 			g_tl_chld_delivery_leg_rows(i).dropoff_stop_id:=
4995 				g_tl_delivery_leg_rows(l_parent_dleg_index).dropoff_stop_id;
4996 			g_tl_chld_delivery_leg_rows(i).dropoff_location_id:=
4997 				g_tl_delivery_leg_rows(l_parent_dleg_index).dropoff_location_id;
4998 			g_tl_chld_delivery_leg_rows(i).distance:=
4999 				g_tl_delivery_leg_rows(l_parent_dleg_index).distance;
5000 			g_tl_chld_delivery_leg_rows(i).direct_distance:=
5001 				g_tl_delivery_leg_rows(l_parent_dleg_index).direct_distance;
5002 
5003 
5004 
5005 		ELSIF ((l_parent_dleg_id IS NOT NULL) AND (l_child_dleg_hash.EXISTS(l_parent_dleg_id)))
5006 		THEN
5007 
5008 			l_parent_dleg_index:=l_child_dleg_hash(l_parent_dleg_id);
5009 
5010 			g_tl_chld_delivery_leg_rows(l_parent_dleg_index).is_parent_dleg:='Y';
5011 
5012 
5013 			IF (l_curr_dleg_list.EXISTS(g_tl_chld_delivery_leg_rows(l_parent_dleg_index).delivery_leg_id))
5014 			THEN
5015 				l_curr_dleg_list.DELETE(g_tl_chld_delivery_leg_rows(l_parent_dleg_index).delivery_leg_id);
5016 			END IF;
5017 
5018 
5019 			IF ((g_tl_chld_delivery_leg_rows(l_parent_dleg_index).weight=0) AND
5020 			(g_tl_chld_delivery_leg_rows(l_parent_dleg_index).volume=0))
5021 			THEN
5022 				g_tl_chld_delivery_leg_rows(l_parent_dleg_index).parent_with_no_consol_lpn:='Y';
5023 				l_dlegs_with_no_consol_chld(l_parent_dleg_index):=l_parent_dleg_index;
5024 			END IF;
5025 
5026 			--Copy parent attributes
5027 
5028 			g_tl_chld_delivery_leg_rows(i).pickup_stop_id:=
5029 				g_tl_chld_delivery_leg_rows(l_parent_dleg_index).pickup_stop_id;
5030 			g_tl_chld_delivery_leg_rows(i).pickup_location_id:=
5031 				g_tl_chld_delivery_leg_rows(l_parent_dleg_index).pickup_location_id;
5032 			g_tl_chld_delivery_leg_rows(i).dropoff_stop_id:=
5033 				g_tl_chld_delivery_leg_rows(l_parent_dleg_index).dropoff_stop_id;
5034 			g_tl_chld_delivery_leg_rows(i).dropoff_location_id:=
5035 				g_tl_chld_delivery_leg_rows(l_parent_dleg_index).dropoff_location_id;
5036 			g_tl_chld_delivery_leg_rows(i).distance:=
5037 				g_tl_chld_delivery_leg_rows(l_parent_dleg_index).distance;
5038 			g_tl_chld_delivery_leg_rows(i).direct_distance:=
5039 				g_tl_chld_delivery_leg_rows(l_parent_dleg_index).direct_distance;
5040 
5041 
5042 		END IF;
5043 
5044 		i:=i+1;
5045 
5046 	END LOOP;
5047 
5048 
5049 	--l_curr_dleg_list  has all dleg ids that have is_parent='N'
5050 	l_next_dleg_list.DELETE;
5051 
5052 	WHILE (l_curr_dleg_list.COUNT > 0)
5053 	LOOP
5054 		i:=l_curr_dleg_list.FIRST;
5055 		WHILE ( i IS NOT NULL)
5056 		LOOP
5057 			l_parent_dleg_rec.delivery_leg_id:=NULL;
5058 			l_child_dleg_rec.delivery_leg_id:=NULL;
5059 
5060 			IF (l_child_dleg_hash.EXISTS(l_curr_dleg_list(i)))
5061 			THEN
5062 				l_child_dleg_rec:=g_tl_chld_delivery_leg_rows(l_child_dleg_hash(l_curr_dleg_list(i)));
5063 
5064 
5065 
5066 			ELSIF (l_parent_dleg_hash.EXISTS(l_curr_dleg_list(i)))
5067 			THEN
5068 
5069 				l_child_dleg_rec:=g_tl_delivery_leg_rows(l_parent_dleg_hash(l_curr_dleg_list(i)));
5070 			END IF;
5071 
5072 
5073 			IF (l_child_dleg_rec.delivery_leg_id IS NOT NULL)
5074 			THEN
5075 
5076 				IF (l_child_dleg_hash.EXISTS(l_child_dleg_rec.parent_dleg_id))
5077 				THEN
5078 					l_parent_dleg_index:=l_child_dleg_hash(l_child_dleg_rec.parent_dleg_id);
5079 					IF(g_tl_chld_delivery_leg_rows(l_parent_dleg_index).children_weight IS NULL)
5080 					THEN
5081 
5082 						g_tl_chld_delivery_leg_rows(l_parent_dleg_index).children_weight:=0;
5083 
5084 					END IF;
5085 					IF(g_tl_chld_delivery_leg_rows(l_parent_dleg_index).children_volume IS NULL)
5086 					THEN
5087 						g_tl_chld_delivery_leg_rows(l_parent_dleg_index).children_volume:=0;
5088 					END IF;
5089 
5090 
5091 					g_tl_chld_delivery_leg_rows(l_parent_dleg_index).children_weight:=
5092 						l_child_dleg_rec.weight+g_tl_chld_delivery_leg_rows(l_parent_dleg_index).children_weight;
5093 
5094 					g_tl_chld_delivery_leg_rows(l_parent_dleg_index).children_volume:=
5095 						l_child_dleg_rec.volume+g_tl_chld_delivery_leg_rows(l_parent_dleg_index).children_volume;
5096 
5097 
5098 					IF (l_child_dleg_rec.children_weight IS NOT NULL)
5099 					THEN
5100 
5101 						g_tl_chld_delivery_leg_rows(l_parent_dleg_index).children_weight:=
5102 							l_child_dleg_rec.children_weight+g_tl_chld_delivery_leg_rows(l_parent_dleg_index).children_weight;
5103 
5104 					END IF;
5105 
5106 					IF (l_child_dleg_rec.children_volume IS NOT NULL)
5107 					THEN
5108 
5109 						g_tl_chld_delivery_leg_rows(l_parent_dleg_index).children_volume:=
5110 							l_child_dleg_rec.children_volume+g_tl_chld_delivery_leg_rows(l_parent_dleg_index).children_volume;
5111 
5112 					END IF;
5113 
5114 					--Add parent to next dleg list
5115 					l_next_dleg_list(l_child_dleg_rec.parent_dleg_id):=l_child_dleg_rec.parent_dleg_id;
5116 
5117 				ELSIF(l_parent_dleg_hash.EXISTS(l_child_dleg_rec.parent_dleg_id))
5118 				THEN
5119 
5120 					l_parent_dleg_index:=l_parent_dleg_hash(l_child_dleg_rec.parent_dleg_id);
5121 					IF(g_tl_delivery_leg_rows(l_parent_dleg_index).children_weight IS NULL)
5122 					THEN
5123 
5124 						g_tl_delivery_leg_rows(l_parent_dleg_index).children_weight:=0;
5125 
5126 					END IF;
5127 					IF(g_tl_delivery_leg_rows(l_parent_dleg_index).children_volume IS NULL)
5128 					THEN
5129 						g_tl_delivery_leg_rows(l_parent_dleg_index).children_volume:=0;
5130 					END IF;
5131 
5132 
5133 					g_tl_delivery_leg_rows(l_parent_dleg_index).children_weight:=
5134 						l_child_dleg_rec.weight+g_tl_delivery_leg_rows(l_parent_dleg_index).children_weight;
5135 
5136 					g_tl_delivery_leg_rows(l_parent_dleg_index).children_volume:=
5137 						l_child_dleg_rec.volume+g_tl_delivery_leg_rows(l_parent_dleg_index).children_volume;
5138 
5139 
5140 					IF (l_child_dleg_rec.children_weight IS NOT NULL)
5141 					THEN
5142 
5143 						g_tl_delivery_leg_rows(l_parent_dleg_index).children_weight:=
5144 							l_child_dleg_rec.children_weight+g_tl_delivery_leg_rows(l_parent_dleg_index).children_weight;
5145 
5146 					END IF;
5147 
5148 					IF (l_child_dleg_rec.children_volume IS NOT NULL)
5149 					THEN
5150 
5151 						g_tl_delivery_leg_rows(l_parent_dleg_index).children_volume:=
5152 							l_child_dleg_rec.children_volume+g_tl_delivery_leg_rows(l_parent_dleg_index).children_volume;
5153 
5154 					END IF;
5155 
5156 					--Add parent to next dleg list
5157 					l_next_dleg_list(l_child_dleg_rec.parent_dleg_id):=l_child_dleg_rec.parent_dleg_id;
5158 
5159 				END IF;
5160 
5161 
5162 
5163 
5164 			ELSE
5165 
5166 				FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'No child dleg rec');
5167 
5168 			END IF;
5169 
5170 
5171 
5172 			i:=l_curr_dleg_list.NEXT(i);
5173 		END LOOP;
5174 
5175 
5176 		l_curr_dleg_list.DELETE;
5177 		l_curr_dleg_list:=l_next_dleg_list;
5178 		l_next_dleg_list.DELETE;
5179 
5180 
5181 	END LOOP;
5182 
5183 
5184 	--Set weight and volume for dlegs with no_consol_lpn
5185 	i:=l_dlegs_with_no_consol.FIRST;
5186 	WHILE(i IS NOT NULL)
5187 	LOOP
5188 		g_tl_delivery_leg_rows(i).weight:=g_tl_delivery_leg_rows(i).children_weight;
5189 		g_tl_delivery_leg_rows(i).volume:=g_tl_delivery_leg_rows(i).children_volume;
5190 
5191 		i:=l_dlegs_with_no_consol.NEXT(i);
5192 	END LOOP;
5193 
5194 	i:=l_dlegs_with_no_consol_chld.FIRST;
5195 	WHILE(i IS NOT NULL)
5196 	LOOP
5197 		g_tl_chld_delivery_leg_rows(i).weight:=g_tl_chld_delivery_leg_rows(i).children_weight;
5198 		g_tl_chld_delivery_leg_rows(i).volume:=g_tl_chld_delivery_leg_rows(i).children_volume;
5199 
5200 		i:=l_dlegs_with_no_consol_chld.NEXT(i);
5201 
5202 	END LOOP;
5203 
5204 
5205 
5206         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Sync_Child_Dleg_Cache');
5207 EXCEPTION
5208 
5209 
5210    WHEN others THEN
5211         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
5212         FTE_FREIGHT_PRICING_UTIL.set_exception('Sync_Child_Dleg_Cache',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
5213         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
5214         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Sync_Child_Dleg_Cache');
5215 
5216 
5217 END Sync_Child_Dleg_Cache;
5218 
5219 
5220 
5221 --Caches a trip,it's stops,carrier, dlegs,delivery details into the global cache
5222 
5223 PROCEDURE Cache_Trip(
5224 	x_trip_rec IN OUT NOCOPY TL_trip_data_input_rec_type,
5225 	x_trip_index IN OUT NOCOPY NUMBER,
5226 	x_carrier_index IN OUT NOCOPY NUMBER,
5227 	x_stop_index IN OUT NOCOPY NUMBER,
5228 	x_dleg_index IN OUT NOCOPY NUMBER,
5229 	x_child_dleg_index IN OUT NOCOPY NUMBER,
5230 	x_return_status OUT NOCOPY VARCHAR2) IS
5231 
5232 
5233 
5234 --Get all the dlv details that are picked up from the passed in stop
5235 
5236 CURSOR get_picked_up_dlv_details(c_pick_up_stop_id IN NUMBER) RETURN
5237 FTE_FREIGHT_PRICING.shipment_line_rec_type IS
5238 
5239 	SELECT	dd.delivery_detail_id,
5240 		dl.delivery_id,
5241 		dl.delivery_leg_id,
5242 		dl.reprice_required,
5243 		da.parent_delivery_detail_id,
5244 		dd.customer_id,
5245 		dd.sold_to_contact_id,
5246 		dd.inventory_item_id,
5247 		dd.item_description,
5248 		dd.hazard_class_id,
5249 		dd.country_of_origin,
5250 		dd.classification,
5251 		dd.requested_quantity,
5252 		dd.requested_quantity_uom,
5253 		dd.master_container_item_id,
5254 		dd.detail_container_item_id,
5255 		dd.customer_item_id,
5256 		dd.net_weight,
5257 		dd.organization_id,
5258 		dd.container_flag,
5259 		dd.container_type_code,
5260 		dd.container_name,
5261 		dd.fill_percent,
5262 		dd.gross_weight,
5263 		dd.currency_code,dd.freight_class_cat_id,
5264 		dd.commodity_code_cat_id,
5265 		dd.weight_uom_code ,
5266 		dd.volume,
5267 		dd.volume_uom_code,
5268 		null,null,null,null,null,null,null,null,null,null,null,null,
5269 		null,null,null,null,null,null,null,null,null,null,null,null,
5270 		null,null,null,null,null,null,null,null,null,null,null,null,
5271 		null,null,null,
5272 		da.type,
5273 		da.parent_delivery_id,
5274 		dl.parent_delivery_leg_id
5275 	FROM 	wsh_delivery_assignments da,
5276 		wsh_delivery_legs dl ,
5277 		wsh_delivery_details dd
5278 	WHERE 	da.delivery_id=dl.delivery_id and
5279 		dl.pick_up_stop_id=c_pick_up_stop_id and
5280 		da.delivery_detail_id = dd.delivery_detail_id and
5281 		(
5282 			( (da.type IS NULL OR da.type='S') and (da.parent_delivery_detail_id is null) and (dl.parent_delivery_leg_id is null))  -- non-MDC trips top level details
5283 			OR
5284 			((da.type='O') and (da.parent_delivery_detail_id is null) and (dl.parent_delivery_leg_id is null))
5285 			--MDC trip top level details of top level parent deliveries .If in these cases the type is made 'S' we would not need an extra clause.
5286 			OR
5287 			( (da.type='C' ) and (dl.parent_delivery_leg_id is not null) and
5288 			exists ( select pdl.pick_up_stop_id from wsh_delivery_legs pdl where pdl.delivery_leg_id=dl.parent_delivery_leg_id and pdl.pick_up_stop_id=c_pick_up_stop_id  and pdl.delivery_id=da.parent_delivery_id))
5289 			--MDC trip ,top level details of deliveries that have parents that are on the same trip
5290 		)
5291 	ORDER BY
5292 		da.delivery_id;
5293 
5294 
5295 
5296 
5297 
5298 --gets all the details dropped off at a given stop
5299 CURSOR get_dropped_off_dlv_details(c_drop_off_stop_id IN NUMBER) RETURN
5300 FTE_FREIGHT_PRICING.shipment_line_rec_type IS
5301 	SELECT	dd.delivery_detail_id,
5302 		dl.delivery_id,
5303 		dl.delivery_leg_id,
5304 		dl.reprice_required,
5305 		da.parent_delivery_detail_id,
5306 		dd.customer_id,
5307 		dd.sold_to_contact_id,
5308 		dd.inventory_item_id,
5309 		dd.item_description,
5310 		dd.hazard_class_id,
5311 		dd.country_of_origin,
5312 		dd.classification,
5313 		dd.requested_quantity,
5314 		dd.requested_quantity_uom,
5315 		dd.master_container_item_id,
5316 		dd.detail_container_item_id,
5317 		dd.customer_item_id,
5318 		dd.net_weight,
5319 		dd.organization_id,
5320 		dd.container_flag,
5321 		dd.container_type_code,
5322 		dd.container_name,
5323 		dd.fill_percent,
5324 		dd.gross_weight,
5325 		dd.currency_code,dd.freight_class_cat_id,
5326 		dd.commodity_code_cat_id,
5327 		dd.weight_uom_code ,
5328 		dd.volume,
5329 		dd.volume_uom_code,
5330 		null,null,null,null,null,null,null,null,null,null,null,null,
5331 		null,null,null,null,null,null,null,null,null,null,null,null,
5332 		null,null,null,null,null,null,null,null,null,null,null,null,
5333 		null,null,null,
5334 		da.type,
5335 		da.parent_delivery_id,
5336 		dl.parent_delivery_leg_id
5337 	FROM 	wsh_delivery_assignments da,
5338 		wsh_delivery_legs dl ,
5339 		wsh_delivery_details dd
5340 	WHERE 	da.delivery_id=dl.delivery_id and
5341 		dl.drop_off_stop_id=c_drop_off_stop_id and
5342 		da.delivery_detail_id = dd.delivery_detail_id and
5343 		(
5344 			( (da.type IS NULL OR da.type='S') and (da.parent_delivery_detail_id is null) and (dl.parent_delivery_leg_id is null))
5345 			-- non-MDC trips top level details
5346 			OR
5347 			((da.type='O') and (da.parent_delivery_detail_id is null) and (dl.parent_delivery_leg_id is null))
5348 			--MDC trip top level details of top level parent deliveries.If in these cases the type is made 'S' we would not need an extra clause.
5349 			OR
5350 			( (da.type='C' ) and (dl.parent_delivery_leg_id is not null) and
5351 			exists ( select pdl.drop_off_stop_id from wsh_delivery_legs pdl where pdl.delivery_leg_id=dl.parent_delivery_leg_id and pdl.drop_off_stop_id=c_drop_off_stop_id  and pdl.delivery_id=da.parent_delivery_id))
5352 			--MDC trip ,top level details of deliveries that have parents that are on the same trip
5353 		)
5354 	ORDER BY
5355 		da.delivery_id;
5356 
5357 
5358 --Gets info from wsh_carriers
5359 
5360 CURSOR get_carrier_pref(c_carrier_id IN NUMBER) RETURN TL_CARRIER_PREF_REC_TYPE IS
5361 	SELECT	c.carrier_id,
5362 		c.max_out_of_route,
5363 		c.min_cm_distance,
5364 		c.min_cm_time,
5365 		c.cm_free_dh_mileage,
5366 		c.cm_first_load_discount,
5367 		c.currency_code,
5368 		c.cm_rate_variant,
5369 		c.unit_rate_basis,
5370 		null,
5371 		c.weight_uom,
5372 		null,
5373 		c.volume_uom,
5374 		null,
5375 		c.distance_uom,
5376 		null,
5377 		c.time_uom,
5378 		c.origin_dstn_surcharge_level,
5379 		c.distance_calculation_method,
5380 		c.dim_dimensional_factor,
5381 		c.dim_weight_uom,
5382 		c.dim_volume_uom,
5383 		c.dim_dimension_uom,
5384 		c.dim_min_pack_vol
5385 	FROM 	WSH_CARRIERS c
5386 	WHERE 	c.carrier_id=c_carrier_id;
5387 
5388 
5389 ----
5390 
5391 --Gets info from wsh_carrier_services
5392 
5393 CURSOR get_carrier_service_pref(c_carrier_id IN NUMBER,c_service_level IN
5394 VARCHAR2) RETURN TL_CARRIER_PREF_REC_TYPE IS
5395 	SELECT	c.carrier_id,
5396 		c.max_out_of_route,
5397 		c.min_cm_distance,
5398 		c.min_cm_time,
5399 		c.cm_free_dh_mileage,
5400 		c.cm_first_load_discount,
5401 		null,
5402 		c.cm_rate_variant,
5403 		c.unit_rate_basis,
5404 		null,
5405 		null,
5406 		null,
5407 		null,
5408 		null,
5409 		null,
5410 		null,
5411 		null,
5412 		c.origin_dstn_surcharge_level,
5413 		c.distance_calculation_method,
5414 		c.dim_dimensional_factor,
5415 		c.dim_weight_uom,
5416 		c.dim_volume_uom,
5417 		c.dim_dimension_uom,
5418 		c.dim_min_pack_vol
5419 	FROM 	WSH_CARRIER_SERVICES c
5420 	WHERE 	c.carrier_id=c_carrier_id and
5421 		c.service_level=c_service_level;
5422 
5423 --Gets all the stops for a given trip ,ordered by sequence number
5424 
5425 CURSOR get_stop_info(c_trip_id IN NUMBER) RETURN TL_trip_stop_input_rec_type IS
5426 
5427 	SELECT 	s.stop_id ,
5428 		s.trip_id,
5429 		s.stop_location_id,
5430 		NVL(s.wkday_layover_stops,0),
5431 		NVL(s.wkend_layover_stops,0),
5432 		null,
5433 		null,
5434 		0,
5435 		0,
5436 		0,
5437 		0,
5438 		null,
5439 		0,
5440 		0,
5441 		0,
5442 		0,
5443 		null,
5444 		null,
5445 		s.planned_arrival_date,
5446 		s.planned_departure_date,
5447 		null,
5448 		s.physical_stop_id,
5449 		s.physical_location_id,
5450 		null,
5451 		null,
5452 		null,
5453 		null,
5454 		null,
5455 		null,
5456 		null,
5457 		null,
5458 		null,
5459 		null,
5460 		null,
5461 		null,
5462 		null,
5463 		null,
5464 		null,
5465 		null,
5466 		null
5467 	FROM wsh_trip_stops s
5468 	WHERE  s.trip_id=c_trip_id
5469 	ORDER by s.stop_sequence_number;
5470 
5471 --Gets all the dlegs that start from the given stop
5472 
5473 CURSOR get_dleg_info(c_pick_up_stop_id IN NUMBER) RETURN
5474 TL_delivery_leg_rec_type IS
5475 
5476 	SELECT	dl.delivery_leg_id,
5477 		s.trip_id,
5478 		dl.delivery_id,
5479 		dl.pick_up_stop_id,
5480 		null,
5481 		dl.drop_off_stop_id,
5482 		s.stop_location_id,
5483 		0,
5484 		0,
5485 		0,
5486 		0,
5487 		0,
5488 		0,
5489 		dl.parent_delivery_leg_id,
5490 		0,
5491 		0,
5492 		null,
5493 		null
5494 	FROM 	wsh_delivery_legs dl,
5495 		wsh_trip_stops s
5496 	WHERE 	dl.drop_off_stop_id = s.stop_id and
5497 		dl.pick_up_stop_id=c_pick_up_stop_id;
5498 
5499 
5500 
5501 
5502 	l_carrier_service_rec  TL_CARRIER_PREF_REC_TYPE ;
5503 	l_carrier_rec	TL_CARRIER_PREF_REC_TYPE ;
5504 	l_stop_rec TL_TRIP_STOP_INPUT_REC_TYPE;
5505 	l_stop_count NUMBER;
5506 	l_dlv_detail_rec FTE_FREIGHT_PRICING.shipment_line_rec_type;
5507 	l_quantity NUMBER;
5508 	l_current_weight NUMBER;
5509 	l_previous_weight NUMBER;
5510 	l_dleg_tab 	 TL_dleg_quantity_tab_type;
5511 	l_dleg_rec TL_delivery_leg_rec_type;
5512 	l_stop_distance_tab	TL_stop_distance_tab_type;
5513 	l_empty_flag	VARCHAR2(1);
5514 	l_initial_stop_index NUMBER;
5515 	l_initial_dleg_index NUMBER;
5516 	l_initial_child_dleg_index NUMBER;
5517 	l_region_id 	NUMBER;
5518 	l_internal_stop_id NUMBER;
5519 	l_internal_location_id NUMBER;
5520 	l_actual_stop_id NUMBER;
5521 	i NUMBER;
5522 	l_physical_previous_flag VARCHAR2(1);
5523 
5524 
5525 l_return_status VARCHAR2(1);
5526 
5527 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
5528 
5529 	l_warning_count 	NUMBER:=0;
5530 BEGIN
5531 
5532 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
5533 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Cache_Trip','start');
5534 
5535 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
5536 	l_initial_stop_index:=x_stop_index;
5537 	l_initial_dleg_index:=x_dleg_index;
5538 	l_initial_child_dleg_index:=x_child_dleg_index;
5539 
5540 
5541 
5542 
5543 	--Get Carrier pref
5544 
5545 	IF ((x_trip_rec.carrier_id IS NULL) OR (x_trip_rec.service_type IS
5546 		NULL))
5547 	THEN
5548 		--Show only generic message
5549 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
5550 		--	p_api=>'Cache_Trip',
5551 		--	p_exc=>'g_tl_no_carrier_or_service',
5552 		--	p_trip_id=>x_trip_rec.trip_id);
5553 
5554 
5555 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_no_carrier_or_service;
5556 
5557 	END IF;
5558 
5559 	OPEN
5560 	get_carrier_service_pref(
5561 		x_trip_rec.carrier_id,
5562 		x_trip_rec.service_type);
5563 
5564 	FETCH get_carrier_service_pref INTO l_carrier_service_rec;
5565 	IF (get_carrier_service_pref%NOTFOUND)
5566 	THEN
5567 
5568 		--No carrier_service_pref found, will have to use only carrier
5569 		--pref
5570 		FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'No carrier Service entry found');
5571 
5572 	END IF;
5573 	CLOSE get_carrier_service_pref;
5574 
5575 	OPEN  get_carrier_pref(x_trip_rec.carrier_id);
5576 	FETCH get_carrier_pref INTO l_carrier_rec;
5577 	IF (get_carrier_pref%NOTFOUND)
5578 	THEN
5579 
5580 
5581 		CLOSE get_carrier_pref;
5582 
5583 		--Show only generic message
5584 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
5585 		--	p_api=>'Cache_Trip',
5586 		--	p_exc=>'g_tl_get_carrier_pref_fail',
5587 		--	p_trip_id=>x_trip_rec.trip_id);
5588 
5589 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_carrier_pref_fail;
5590 
5591 
5592 	END IF;
5593 	CLOSE get_carrier_pref;
5594 
5595 
5596 
5597 	Combine_Carrier_Info(
5598 		p_carrier_pref_rec	=>	l_carrier_rec,
5599 		x_carrier_service_pref_rec	=>	l_carrier_service_rec,
5600 		x_return_status 	=> l_return_status);
5601 
5602 
5603 
5604 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
5605 	THEN
5606 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
5607 	       THEN
5608 	  		raise FTE_FREIGHT_PRICING_UTIL.g_tl_combine_carrier_fail;
5609 	       END IF;
5610 	END IF;
5611 
5612 	TL_Get_Currency(
5613 		p_delivery_id=>NULL,
5614 		p_trip_id=>x_trip_rec.trip_id,
5615 		p_location_id=>NULL,
5616 		p_carrier_id=>l_carrier_service_rec.carrier_id,
5617 		x_currency_code=>l_carrier_service_rec.currency,
5618 		x_return_status=>l_return_status);
5619 
5620 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
5621 	THEN
5622 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
5623 	       THEN
5624 		  raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_currency_fail;
5625 	       END IF;
5626 	END IF;
5627 
5628 
5629 
5630 	--l_carrier_service_rec now has all the carrier info
5631 
5632 	Validate_Carrier_Info(
5633 		x_carrier_info 	=>	l_carrier_service_rec,
5634 		x_return_status	=>	l_return_status);
5635 
5636 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
5637 	THEN
5638 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
5639 		THEN
5640 			--Show only generic message
5641 			--FTE_FREIGHT_PRICING_UTIL.setmsg (
5642 			--	p_api=>'Cache_Trip',
5643 			--	p_exc=>'g_tl_validate_carrier_fail',
5644 			--	p_carrier_id=>l_carrier_service_rec.carrier_id);
5645 
5646 
5647 			raise FTE_FREIGHT_PRICING_UTIL.g_tl_validate_carrier_fail;
5648 		END IF;
5649 	END IF;
5650 
5651 
5652 	--These 2 variables are used to determine if there is a segment
5653 	--in the trip which is unloaded, then we know that the
5654 	--distance between those 2 stops is unloaded distance
5655 
5656 	l_current_weight:=0;
5657 	l_previous_weight:=NULL;
5658 
5659 	l_internal_stop_id:=NULL;
5660 	l_internal_location_id:=NULL;
5661 	--Query all Stop for the trip
5662 
5663 	l_stop_count:=0;
5664 	OPEN get_stop_info(x_trip_rec.trip_id);
5665 	FETCH get_stop_info INTO l_stop_rec;
5666 	WHILE(get_stop_info%FOUND)
5667 	LOOP
5668 
5669 		--11.5.10+Check if the stop fetched is an internal stop
5670 		IF (l_stop_rec.physical_stop_id IS NOT NULL)
5671 		THEN
5672 			--11.5.10+store internal stop id
5673 			l_internal_stop_id:=l_stop_rec.stop_id;
5674 			l_actual_stop_id:=l_stop_rec.physical_stop_id;
5675 
5676 			--11.5.10+the physical stop is before the internal stop
5677 			IF ((l_stop_count > 0 ) AND (g_tl_trip_stop_rows(x_stop_index-1).stop_id = l_actual_stop_id))
5678 			THEN
5679 				l_stop_rec:=g_tl_trip_stop_rows(x_stop_index-1);
5680 				l_physical_previous_flag:='Y';
5681 
5682 			--11.5.10+the physical stop is after the internal stop
5683 			ELSE
5684 				--fetch actual stop
5685 				FETCH get_stop_info INTO l_stop_rec;
5686 				IF ((NOT (get_stop_info%FOUND)) OR (l_stop_rec.stop_id <> l_actual_stop_id))
5687 				THEN
5688 					CLOSE get_stop_info;
5689 					FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Pointer to dummy stop not next in sequence. Stop ID:'
5690 						||l_internal_stop_id||' Physical stop id:'||l_actual_stop_id);
5691 					raise FTE_FREIGHT_PRICING_UTIL.g_tl_init_dummy_pu_stop_fail;
5692 
5693 				END IF;
5694 				l_physical_previous_flag:='N';
5695 			END IF;
5696 		ELSIF (	l_stop_rec.physical_location_id IS NOT NULL)
5697 		THEN
5698 			--11.5.10+no internal stop only an internal location
5699 
5700 			l_internal_location_id:=l_stop_rec.location_id;
5701 			l_stop_rec.location_id:=l_stop_rec.physical_location_id;
5702 
5703 		END IF;
5704 		--11.5.10+
5705 		IF (l_internal_stop_id IS NULL)
5706 		THEN
5707 
5708 			--Get region for stop
5709 
5710 			FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'Get region for location '||
5711 			l_stop_rec.location_id||' : '||l_carrier_service_rec.region_level|| ' : '||l_stop_rec.stop_region);
5712 
5713 			Get_Region_For_Location(
5714 				p_location_id=>	l_stop_rec.location_id,
5715 				p_region_type=>	l_carrier_service_rec.region_level,
5716 				x_region_id=>	l_stop_rec.stop_region,
5717 				x_return_status	=>	l_return_status);
5718 
5719 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
5720 			THEN
5721 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
5722 			       THEN
5723 				  FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_WRN,'Failed to get region for location ');
5724 				  --raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_reg_for_loc_fail;
5725 			       END IF;
5726 			END IF;
5727 
5728 			FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'Get_Region_For_LocationRES: '||
5729 				l_stop_rec.location_id ||':'||l_stop_rec.stop_region);
5730 		END IF;
5731 
5732 		--GEts details droppped off at this stop
5733 		IF (l_internal_stop_id IS NOT NULL)
5734 		THEN
5735 			OPEN get_dropped_off_dlv_details(l_internal_stop_id);
5736 		ELSE
5737 			OPEN get_dropped_off_dlv_details(l_stop_rec.stop_id);
5738 		END IF;
5739 
5740 		FETCH get_dropped_off_dlv_details INTO l_dlv_detail_rec;
5741 		WHILE(get_dropped_off_dlv_details%FOUND)
5742 		LOOP
5743 
5744 			Classify_Detail(
5745 				x_dlv_dtl_rec=>l_dlv_detail_rec,
5746 				x_return_status=>l_return_status);
5747 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
5748 			THEN
5749 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
5750 			       THEN
5751 
5752 			       	  CLOSE get_dropped_off_dlv_details;
5753 			       	  CLOSE get_stop_info;
5754 
5755 			          raise FTE_FREIGHT_PRICING_UTIL.g_tl_classify_dtl_fail;
5756 			       END IF;
5757 			END IF;
5758 
5759 
5760 
5761 
5762 			Validate_Dlv_Detail_Info(
5763 				p_carrier_pref_rec=>l_carrier_service_rec,
5764 				x_dlv_detail_info=>l_dlv_detail_rec,
5765 				x_return_status	=>	l_return_status);
5766 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
5767 			THEN
5768 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
5769 			       THEN
5770 
5771 			       	  CLOSE get_dropped_off_dlv_details;
5772 			       	  CLOSE get_stop_info;
5773 
5774 				  --Show only generic message
5775 				  --FTE_FREIGHT_PRICING_UTIL.setmsg (
5776 				--	p_api=>'Cache_Trip',
5777 				--	p_exc=>'g_tl_validate_dlv_dtl_fail',
5778 				--	p_delivery_detail_id=>l_dlv_detail_rec.delivery_detail_id);
5779 
5780 
5781 			          raise FTE_FREIGHT_PRICING_UTIL.g_tl_validate_dlv_dtl_fail;
5782 			       END IF;
5783 			END IF;
5784 
5785 			--Adds dropoff quantities to l_stop_rec
5786 
5787 
5788 			Add_Dropoff_Quantity(
5789 				p_dlv_detail_rec    =>l_dlv_detail_rec,
5790 				p_carrier_pref  =>l_carrier_service_rec,
5791 				x_stop_rec	    =>l_stop_rec,
5792 				x_return_status	=>	l_return_status);
5793 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
5794 			THEN
5795 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
5796 			       THEN
5797 			       	  CLOSE get_dropped_off_dlv_details;
5798 			       	  CLOSE get_stop_info;
5799 			          raise FTE_FREIGHT_PRICING_UTIL.g_tl_add_dropoff_qty_fail;
5800 			       END IF;
5801 			END IF;
5802 
5803 
5804 			--Insert into delivery detail cache
5805 			Insert_Into_Dlv_Dtl_Cache(
5806 				p_dlv_dtl_rec=>l_dlv_detail_rec,
5807 				x_return_status	=>	l_return_status);
5808 
5809 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
5810 			THEN
5811 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
5812 			       THEN
5813 
5814 			       	  CLOSE get_dropped_off_dlv_details;
5815 			       	  CLOSE get_stop_info;
5816 			          raise FTE_FREIGHT_PRICING_UTIL.g_tl_insert_dlv_dtl_fail;
5817 			       END IF;
5818 			END IF;
5819 
5820 			FETCH get_dropped_off_dlv_details INTO l_dlv_detail_rec;
5821 
5822 		END LOOP;
5823 		CLOSE get_dropped_off_dlv_details;
5824 
5825 
5826 
5827 		--Gets details picked up at the stop
5828 		--11.5.10+
5829 		IF (l_internal_stop_id IS NOT NULL)
5830 		THEN
5831 			OPEN get_picked_up_dlv_details(l_internal_stop_id);
5832 		ELSE
5833 			OPEN get_picked_up_dlv_details(l_stop_rec.stop_id);
5834 		END IF;
5835 
5836 		FETCH get_picked_up_dlv_details INTO l_dlv_detail_rec;
5837 		WHILE(get_picked_up_dlv_details%FOUND)
5838 		LOOP
5839 
5840 			Classify_Detail(
5841 				x_dlv_dtl_rec=>l_dlv_detail_rec,
5842 				x_return_status=>l_return_status);
5843 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
5844 			THEN
5845 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
5846 			       THEN
5847 
5848 			       	  CLOSE get_picked_up_dlv_details;
5849 			       	  CLOSE get_stop_info;
5850 
5851 			          raise FTE_FREIGHT_PRICING_UTIL.g_tl_classify_dtl_fail;
5852 			       END IF;
5853 			END IF;
5854 
5855 
5856 
5857 			Validate_Dlv_Detail_Info(
5858 				p_carrier_pref_rec=>l_carrier_service_rec,
5859 				x_dlv_detail_info	=>l_dlv_detail_rec,
5860 				x_return_status		=>l_return_status);
5861 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
5862 			THEN
5863 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
5864 			       THEN
5865 
5866 			       	  CLOSE get_picked_up_dlv_details;
5867 			       	  CLOSE get_stop_info;
5868 
5869 				--Show only generic message
5870 				--FTE_FREIGHT_PRICING_UTIL.setmsg (
5871 				--	p_api=>'Cache_Trip',
5872 				--	p_exc=>'g_tl_validate_dlv_dtl_fail',
5873 				--	p_delivery_detail_id=>l_dlv_detail_rec.delivery_detail_id);
5874 
5875 			          raise FTE_FREIGHT_PRICING_UTIL.g_tl_validate_dlv_dtl_fail;
5876 			       END IF;
5877 			END IF;
5878 
5879 			--Adds picked up quantities to l_stop_rec
5880 			Add_Pickup_Quantity(
5881 				p_dlv_detail_rec=>	l_dlv_detail_rec,
5882 				p_carrier_pref=>	l_carrier_service_rec,
5883 				x_stop_rec=>	l_stop_rec,
5884 				x_dleg_quantity_tab=>	l_dleg_tab,
5885 				x_return_status	=>	l_return_status);
5886 
5887 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
5888 			THEN
5889 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
5890 			       THEN
5891 
5892 			       	  CLOSE get_picked_up_dlv_details;
5893 			       	  CLOSE get_stop_info;
5894 			          raise FTE_FREIGHT_PRICING_UTIL.g_tl_add_pickup_qty_fail;
5895 			       END IF;
5896 			END IF;
5897 
5898 			--Insert into delivery detail cache
5899 			Insert_Into_Dlv_Dtl_Cache(
5900 				p_dlv_dtl_rec=>l_dlv_detail_rec,
5901 				x_return_status	=>	l_return_status);
5902 
5903 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
5904 			THEN
5905 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
5906 			       THEN
5907 
5908 			       	  CLOSE get_picked_up_dlv_details;
5909 			       	  CLOSE get_stop_info;
5910 
5911 			          raise FTE_FREIGHT_PRICING_UTIL.g_tl_insert_dlv_dtl_fail;
5912 			       END IF;
5913 			END IF;
5914 
5915 			FETCH get_picked_up_dlv_details INTO l_dlv_detail_rec;
5916 
5917 		END LOOP;
5918 		CLOSE get_picked_up_dlv_details;
5919 
5920 		--Query up delivery legs picked up at this stop
5921 		--11.5.10+
5922 		IF (l_internal_stop_id IS NOT NULL)
5923 		THEN
5924 			OPEN get_dleg_info(l_internal_stop_id);
5925 		ELSE
5926 			OPEN get_dleg_info(l_stop_rec.stop_id);
5927 		END IF;
5928 
5929 
5930 		FETCH get_dleg_info INTO l_dleg_rec;
5931 		WHILE (get_dleg_info%FOUND)
5932 		LOOP
5933 
5934 			--11.5.10+if we used an internal_stop_id then
5935 			--mask the dleg as having being picked up from the
5936 			--actual stop id
5937 
5938 			IF (l_internal_stop_id IS NOT NULL)
5939 			THEN
5940 				l_dleg_rec.pickup_stop_id:=l_stop_rec.stop_id;
5941 
5942 			END IF;
5943 
5944 			--At this point all the quantities of all the details
5945 			--picked up at this stop, have been summed up
5946 			--copy the summed up quantities to the dleg rec
5947 
5948 			l_dleg_rec.pickup_location_id:=l_stop_rec.location_id;
5949 			IF (l_dleg_tab.EXISTS(l_dleg_rec.delivery_leg_id))
5950 			THEN
5951 			 l_dleg_rec.weight:=
5952 			  l_dleg_tab(l_dleg_rec.delivery_leg_id).weight;
5953 			 l_dleg_rec.volume:=
5954 			  l_dleg_tab(l_dleg_rec.delivery_leg_id).volume;
5955 			 l_dleg_rec.pallets:=
5956 			  l_dleg_tab(l_dleg_rec.delivery_leg_id).pallets;
5957 			 l_dleg_rec.containers:=
5958 			  l_dleg_tab(l_dleg_rec.delivery_leg_id).containers;
5959 			END IF;
5960 
5961 			--Insert into dleg cache
5962 			Validate_Dleg_Info(
5963 				x_dleg_info=>	l_dleg_rec,
5964 				x_return_status	=>	l_return_status);
5965 
5966 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
5967 			THEN
5968 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
5969 			       THEN
5970 
5971 			       	  CLOSE get_dleg_info;
5972 			       	  CLOSE get_stop_info;
5973 
5974 				 --Show only generic message
5975 				 -- FTE_FREIGHT_PRICING_UTIL.setmsg (
5976 				--	p_api=>'Cache_Trip',
5977 				--	p_exc=>'g_tl_validate_dleg_fail',
5978 				--	p_delivery_leg_id=>l_dleg_rec.delivery_leg_id);
5979 
5980 			          raise FTE_FREIGHT_PRICING_UTIL.g_tl_validate_dleg_fail;
5981 			       END IF;
5982 			END IF;
5983 
5984 			IF(l_dleg_rec.parent_dleg_id IS NOT NULL)
5985 			THEN
5986 			--MDC insert into child dleg cache
5987 
5988 				g_tl_chld_delivery_leg_rows(x_child_dleg_index):=l_dleg_rec;
5989 				x_child_dleg_index:=x_child_dleg_index+1;
5990 
5991 			ELSE
5992 
5993 				g_tl_delivery_leg_rows(x_dleg_index):=l_dleg_rec;
5994 				x_dleg_index:=x_dleg_index+1;
5995 			END IF;
5996 
5997 			FETCH get_dleg_info INTO l_dleg_rec;
5998 
5999 		END LOOP;
6000 		CLOSE  get_dleg_info;
6001 
6002 		IF ((l_internal_stop_id IS NOT NULL) AND (l_physical_previous_flag= 'N'))
6003 		THEN
6004 			--11.5.10+Clean up dlegs which were previously fetched having
6005 			--dropoff at the internal stop
6006 
6007 			Replace_Dleg_Dropoff(
6008 				p_dleg_index_start =>l_initial_dleg_index,
6009 				p_internal_stop_id => l_internal_stop_id,
6010 				p_internal_location_id => NULL,
6011 				p_actual_stop_id => l_stop_rec.stop_id,
6012 				p_actual_location_id => l_stop_rec.location_id,
6013 				x_return_status	=>	l_return_status);
6014 
6015 				IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
6016 				THEN
6017 				       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
6018 				       THEN
6019 					  CLOSE get_stop_info;
6020 					  raise FTE_FREIGHT_PRICING_UTIL.g_tl_replace_dleg_fail;
6021 				       END IF;
6022 				END IF;
6023 
6024 
6025 			--We dont use the flag anymore now
6026 			l_internal_stop_id:=NULL;
6027 
6028 		ELSIF((l_internal_stop_id IS NOT NULL) AND (l_physical_previous_flag= 'Y'))
6029 		THEN
6030 
6031 			--11.5.10+
6032 
6033 			Replace_Dleg_Dropoff(
6034 				p_dleg_index_start =>l_initial_dleg_index,
6035 				p_internal_stop_id => l_internal_stop_id,
6036 				p_internal_location_id => NULL,
6037 				p_actual_stop_id => l_stop_rec.stop_id,
6038 				p_actual_location_id => l_stop_rec.location_id,
6039 				x_return_status	=>	l_return_status);
6040 
6041 
6042 				IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
6043 				THEN
6044 				       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
6045 				       THEN
6046 					  CLOSE get_stop_info;
6047 					  raise FTE_FREIGHT_PRICING_UTIL.g_tl_replace_dleg_fail;
6048 				       END IF;
6049 				END IF;
6050 
6051 
6052 			--11.5.10+We dont use the flag anymore now
6053 			l_internal_stop_id:=NULL;
6054 
6055 			--11.5.10+Update current weight of the trip
6056 
6057 			l_current_weight:=l_current_weight+l_stop_rec.pickup_weight-
6058 				l_stop_rec.dropoff_weight
6059 				-(g_tl_trip_stop_rows(x_stop_index-1).pickup_weight-g_tl_trip_stop_rows(x_stop_index-1).dropoff_weight);
6060 
6061 			l_previous_weight:=l_current_weight;
6062 
6063 			--11.5.10+Update the trip with internal stop pickup dropoff quantities
6064 
6065 			x_trip_rec.number_of_pallets:=x_trip_rec.number_of_pallets +
6066 				l_stop_rec.pickup_pallets-g_tl_trip_stop_rows(x_stop_index-1).pickup_pallets;
6067 			x_trip_rec.number_of_containers:=x_trip_rec.number_of_containers +
6068 				l_stop_rec.pickup_containers-g_tl_trip_stop_rows(x_stop_index-1).pickup_containers;
6069 			x_trip_rec.total_weight:=x_trip_rec.total_weight +
6070 				l_stop_rec.pickup_weight-g_tl_trip_stop_rows(x_stop_index-1).pickup_weight;
6071 			x_trip_rec.total_volume:=x_trip_rec.total_volume +
6072 				l_stop_rec.pickup_volume-g_tl_trip_stop_rows(x_stop_index-1).pickup_volume;
6073 
6074 			g_tl_trip_stop_rows(x_stop_index-1):=l_stop_rec;
6075 
6076 			FETCH get_stop_info INTO l_stop_rec;
6077 
6078 		ELSE
6079 			IF (l_internal_location_id IS NOT NULL)
6080 			THEN
6081 				--11.5.10+
6082 				Replace_Dleg_Dropoff(
6083 					p_dleg_index_start =>l_initial_dleg_index,
6084 					p_internal_stop_id => NULL,
6085 					p_internal_location_id => l_internal_location_id,
6086 					p_actual_stop_id => NULL,
6087 					p_actual_location_id => l_stop_rec.location_id,
6088 					x_return_status	=>	l_return_status);
6089 
6090 				IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
6091 				THEN
6092 				       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
6093 				       THEN
6094 					  CLOSE get_stop_info;
6095 					  raise FTE_FREIGHT_PRICING_UTIL.g_tl_replace_dleg_fail;
6096 				       END IF;
6097 				END IF;
6098 
6099 
6100 
6101 				l_internal_location_id:=NULL;
6102 			END IF;
6103 
6104 			--Update current weight of the trip
6105 
6106 			l_current_weight:=l_current_weight+l_stop_rec.pickup_weight-
6107 				l_stop_rec.dropoff_weight;
6108 
6109 			--Prepare inputs for distance query
6110 			IF (l_stop_count>0)
6111 			THEN
6112 
6113 				--if from previous stop to this stop
6114 				--there was no weight , then we need
6115 				--to count this as unloaded distance
6116 
6117 				IF (l_previous_weight <=0)
6118 				THEN
6119 					l_empty_flag:='Y';
6120 				ELSE
6121 					l_empty_flag:='N';
6122 
6123 				END IF;
6124 
6125 				-- Create inputs for query to mileage tables
6126 
6127 
6128 				Add_Inputs_For_Distance(
6129 				 p_from_stop_rec=> g_tl_trip_stop_rows(x_stop_index-1),
6130 				 p_to_stop_rec=> 	l_stop_rec,
6131 				 p_empty_flag=>	l_empty_flag,
6132 				 x_stop_distance_tab=>	l_stop_distance_tab,
6133 				 x_return_status	=>	l_return_status);
6134 
6135 				IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
6136 				THEN
6137 				       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
6138 				       THEN
6139 
6140 					  CLOSE get_stop_info;
6141 
6142 					  raise FTE_FREIGHT_PRICING_UTIL.g_tl_add_ip_dist_fail;
6143 				       END IF;
6144 				END IF;
6145 
6146 			END IF;
6147 
6148 
6149 			--Update trip rec
6150 
6151 			Update_Trip_With_Stop_Info(
6152 				p_stop_rec	=>	l_stop_rec,
6153 				x_trip_rec	=>	x_trip_rec,
6154 				x_return_status	=>	l_return_status);
6155 
6156 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
6157 			THEN
6158 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
6159 			       THEN
6160 				  CLOSE get_stop_info;
6161 				  raise FTE_FREIGHT_PRICING_UTIL.g_tl_updt_trip_with_stop_fail;
6162 			       END IF;
6163 			END IF;
6164 			--Insert Stop info into Cache
6165 
6166 			--Perform validation after getting dist,time,fac info
6167 
6168 			g_tl_trip_stop_rows(x_stop_index):=l_stop_rec;
6169 			x_stop_index:=x_stop_index+1;
6170 			l_stop_count:=l_stop_count+1;
6171 			l_previous_weight:=l_current_weight;
6172 
6173 			FETCH get_stop_info INTO l_stop_rec;
6174 		END IF;-- for l_internal_stop_id IS NOT NULL
6175 
6176 	END LOOP;
6177 	CLOSE get_stop_info;
6178 
6179 	--Set time,distance of last stop to 0
6180 
6181 	g_tl_trip_stop_rows(x_stop_index-1).distance_to_next_stop:=0;
6182 	g_tl_trip_stop_rows(x_stop_index-1).time_to_next_stop:=0;
6183 
6184 
6185 
6186 
6187 
6188 	--GEt distances/time from mileage table, update, stop, dleg buffer, trip
6189 	--loaded, unlaoded distances
6190 
6191 	Get_Distances(
6192 		p_stop_index	=>	l_initial_stop_index,
6193 		p_dleg_index	=>	l_initial_dleg_index,
6194 		p_carrier_rec	=>	l_carrier_service_rec,
6195 		x_stop_distance_tab	=>l_stop_distance_tab,
6196 		x_trip_rec	=>	x_trip_rec,
6197 		x_return_status	=>	l_return_status);
6198 
6199 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
6200 	THEN
6201        		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
6202        		THEN
6203 --			FTE_FREIGHT_PRICING_UTIL.setmsg (
6204 --				p_api=>'Cache_Trip',
6205 --				p_exc=>'g_tl_get_distances_fail',
6206 --				p_trip_id=>x_trip_rec.trip_id);
6207 
6208 
6209           		raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_distances_fail;
6210        		END IF;
6211 	END IF;
6212 
6213 
6214 	--Get facility Info and store into stop cache
6215 	Get_Facility_Info(p_stop_index	=>	l_initial_stop_index,
6216 			x_return_status	=>	l_return_status);
6217 
6218 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
6219 	THEN
6220 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
6221 	       THEN
6222 		  FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_WRN,'Failed to get facility information');
6223 	          --raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_facility_info_fail;
6224 	       END IF;
6225 	END IF;
6226 
6227 	--Validate All Stops(all the stop,distance,time,fac info has beengathered
6228 
6229 	FOR i IN l_initial_stop_index..(x_stop_index-1)
6230 	LOOP
6231 		--Determine if the stop is pickup/dropoff/both or none
6232 		Get_Stop_Type(x_stop_rec=>g_tl_trip_stop_rows(i));
6233 
6234 		Validate_Stop_Info(
6235 		p_carrier_pref_rec=>l_carrier_service_rec,
6236 		x_stop_info=>	g_tl_trip_stop_rows(i),
6237 		x_return_status	=>	l_return_status);
6238 
6239 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
6240 		THEN
6241 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
6242 		       THEN
6243 
6244 			--Show only generic message
6245 			--FTE_FREIGHT_PRICING_UTIL.setmsg (
6246 			--	p_api=>'Cache_Trip',
6247 			--	p_exc=>'g_tl_validate_stop_fail',
6248 			--	p_stop_id=>g_tl_trip_stop_rows(i).stop_id);
6249 
6250 			  raise FTE_FREIGHT_PRICING_UTIL.g_tl_validate_stop_fail;
6251 		       END IF;
6252 		END IF;
6253 
6254 	END LOOP;
6255 
6256 
6257 
6258 
6259 
6260 	--Update trip rec
6261 	x_trip_rec.number_of_stops:=l_stop_count;
6262 
6263 
6264 	x_trip_rec.distance_method:=l_carrier_service_rec.distance_calculation_method;
6265 
6266 	--get the arrival and dep dates of the trip
6267 	--from first and last stop
6268 
6269 	x_trip_rec.planned_departure_date:=
6270 	g_tl_trip_stop_rows(l_initial_stop_index).planned_departure_date;
6271 	x_trip_rec.planned_arrival_date:=
6272 	g_tl_trip_stop_rows(x_stop_index-1).planned_arrival_date;
6273 
6274 
6275 --
6276 	x_trip_rec.price_list_id:=NULL;
6277 	Get_Pricelist_Id(
6278 		p_lane_id	=>x_trip_rec.lane_id,
6279 		p_departure_date => x_trip_rec.planned_departure_date,
6280 		p_arrival_date => x_trip_rec.planned_arrival_date,
6281 		x_pricelist_id	=> x_trip_rec.price_list_id,
6282 		x_return_status	=> l_return_status);
6283 
6284 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
6285 	THEN
6286 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
6287 	       THEN
6288 
6289 			--Show only generic message
6290 			--FTE_FREIGHT_PRICING_UTIL.setmsg (
6291 			--	p_api=>'Cache_Trip',
6292 			--	p_exc=>'g_tl_get_pricelistid_fail',
6293 			--	p_trip_id=>x_trip_rec.trip_id,
6294 			--	p_lane_id=>x_trip_rec.lane_id);
6295 
6296 		  raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_pricelistid_fail;
6297 	       END IF;
6298 	END IF;
6299 	IF (x_trip_rec.price_list_id IS NULL)
6300 	THEN
6301 		--Show only generic message
6302 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
6303 		--	p_api=>'Cache_Trip',
6304 		--	p_exc=>'g_tl_get_pricelistid_fail',
6305 		--	p_trip_id=>x_trip_rec.trip_id,
6306 		--	p_lane_id=>x_trip_rec.lane_id);
6307 
6308 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_pricelistid_fail;
6309 	END IF;
6310 
6311 
6312 	--Dead head trip has no dlegs 3958974
6313 
6314 	IF (l_initial_dleg_index = x_dleg_index)
6315 	THEN
6316 		x_trip_rec.dead_head:='Y';
6317 	ELSE
6318 		x_trip_rec.dead_head:='N';
6319 	END IF;
6320 
6321 	x_trip_rec.stop_reference:=l_initial_stop_index;
6322 	x_trip_rec.delivery_leg_reference:=l_initial_dleg_index;
6323 
6324 
6325 
6326 	IF(l_initial_child_dleg_index = x_child_dleg_index)
6327 	THEN
6328 		--Non MDC trip
6329 
6330 		x_trip_rec.child_dleg_reference:=NULL;
6331 
6332 	ELSE
6333 
6334 		--MDC trip
6335 		x_trip_rec.child_dleg_reference:=l_initial_child_dleg_index;
6336 
6337 		Sync_Child_Dleg_Cache(
6338 			p_initial_dleg_index=>l_initial_dleg_index,
6339 			p_intial_child_dleg_index=>l_initial_child_dleg_index,
6340 			p_current_dleg_index=>x_dleg_index,
6341 			p_chld_dleg_index=>x_child_dleg_index,
6342 			x_return_status=>l_return_status);
6343 
6344 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
6345 		THEN
6346 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
6347 		       THEN
6348 
6349 			  raise FTE_FREIGHT_PRICING_UTIL.g_tl_sync_dleg_fail;
6350 		       END IF;
6351 		END IF;
6352 
6353 		Cache_Int_Containers (
6354 			p_trip_id=>x_trip_rec.trip_id,
6355 			p_carrier_pref_rec=>l_carrier_service_rec,
6356 			x_return_status=>l_return_status);
6357 
6358 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
6359 		THEN
6360 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
6361 		       THEN
6362 
6363 			  raise FTE_FREIGHT_PRICING_UTIL.g_tl_cache_int_cont_fail;
6364 		       END IF;
6365 		END IF;
6366 
6367 	END IF;
6368 
6369 
6370 	--Insert into trip cache
6371 
6372 	Validate_Trip_Info(
6373 		x_trip_info=>	x_trip_rec,
6374 		x_return_status	=>	l_return_status);
6375 
6376 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
6377 	THEN
6378 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
6379 	       THEN
6380 
6381 		--Show only generic message
6382 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
6383 		--	p_api=>'Cache_Trip',
6384 		--	p_exc=>'g_tl_validate_trip_fail',
6385 		--	p_trip_id=>x_trip_rec.trip_id);
6386 
6387 	          raise FTE_FREIGHT_PRICING_UTIL.g_tl_validate_trip_fail;
6388 	       END IF;
6389 	END IF;
6390 
6391 
6392 
6393 	g_tl_trip_rows(x_trip_index):=x_trip_rec;
6394 	x_trip_index:=x_trip_index+1;
6395 
6396 	--Insert carrier info into cache
6397 	g_tl_carrier_pref_rows(x_carrier_index):=l_carrier_service_rec;
6398 	x_carrier_index:=x_carrier_index+1;
6399 
6400 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
6401 
6402 
6403         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Trip');
6404 
6405 	IF (l_warning_count > 0)
6406 	THEN
6407 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
6408 	END IF;
6409 EXCEPTION
6410 
6411 
6412    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_currency_fail THEN
6413         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
6414         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_currency_fail');
6415         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Trip');
6416 
6417 
6418    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_sync_dleg_fail THEN
6419         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
6420         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_sync_dleg_fail');
6421         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Trip');
6422 
6423 
6424    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_cache_int_cont_fail THEN
6425         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
6426         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_cache_int_cont_fail');
6427         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Trip');
6428 
6429 
6430    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_replace_dleg_fail THEN
6431         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
6432         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_replace_dleg_fail');
6433         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Trip');
6434 
6435 
6436    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_init_dummy_pu_stop_fail THEN
6437         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
6438         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_init_dummy_pu_stop_fail');
6439         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Trip');
6440 
6441    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_pricelistid_fail THEN
6442         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
6443         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_pricelistid_fail');
6444         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Trip');
6445 
6446 
6447    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_no_carrier_or_service THEN
6448         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
6449         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_no_carrier_or_service');
6450         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Trip');
6451 
6452    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_carrier_pref_fail THEN
6453         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
6454         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_carrier_pref_fail');
6455         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Trip');
6456 
6457    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_combine_carrier_fail THEN
6458         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
6459         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_combine_carrier_fail');
6460         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Trip');
6461 
6462    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_validate_carrier_fail THEN
6463         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
6464         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_validate_carrier_fail');
6465         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Trip');
6466 
6467 
6468 
6469    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_validate_dlv_dtl_fail THEN
6470         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
6471         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_validate_dlv_dtl_fail');
6472         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Trip');
6473 
6474    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_add_dropoff_qty_fail THEN
6475         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
6476         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_add_dropoff_qty_fail');
6477         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Trip');
6478 
6479    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_add_pickup_qty_fail THEN
6480         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
6481         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_add_pickup_qty_fail');
6482         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Trip');
6483 
6484    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_insert_dlv_dtl_fail THEN
6485         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
6486         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_insert_dlv_dtl_fail');
6487         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Trip');
6488 
6489    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_validate_dleg_fail THEN
6490         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
6491         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_validate_dleg_fail');
6492         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Trip');
6493 
6494    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_add_ip_dist_fail THEN
6495         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
6496         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_add_ip_dist_fail');
6497         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Trip');
6498 
6499    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_updt_trip_with_stop_fail THEN
6500         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
6501         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_updt_trip_with_stop_fail');
6502         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Trip');
6503 
6504    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_validate_stop_fail THEN
6505         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
6506         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_validate_stop_fail');
6507         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Trip');
6508 
6509    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_distances_fail THEN
6510         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
6511         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_distances_fail');
6512         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Trip');
6513 
6514 
6515    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_facility_info_fail THEN
6516         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
6517         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_facility_info_fail');
6518         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Trip');
6519 
6520    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_validate_trip_fail THEN
6521         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
6522         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_validate_trip_fail');
6523         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Trip');
6524 
6525 
6526 
6527    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_reg_for_loc_fail THEN
6528         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
6529         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_reg_for_loc_fail');
6530         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Trip');
6531 
6532 
6533    WHEN others THEN
6534         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
6535         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
6536         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
6537         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Trip');
6538 
6539 END Cache_Trip;
6540 
6541 
6542 PROCEDURE Initialize_Single_Dummy_Detail(
6543 	p_weight IN NUMBER,
6544 	p_weight_uom IN VARCHAR2,
6545 	p_volume IN NUMBER,
6546 	p_volume_uom IN VARCHAR2,
6547 	x_dlv_detail_info IN OUT NOCOPY FTE_FREIGHT_PRICING.shipment_line_rec_type,
6548 	x_return_status OUT	NOCOPY	VARCHAR2) IS
6549 BEGIN
6550 
6551 
6552 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
6553 	FTE_FREIGHT_PRICING_UTIL.set_method(FTE_FREIGHT_PRICING_UTIL.G_DBG,'Initialize_Single_Dummy_Detail','start');
6554 
6555 
6556 	x_dlv_detail_info.delivery_detail_id:=FAKE_DLEG_ID;
6557 	x_dlv_detail_info.delivery_id:=FAKE_DLEG_ID;
6558 	x_dlv_detail_info.delivery_leg_id:=FAKE_DLEG_ID;
6559 
6560 	x_dlv_detail_info.gross_weight:=p_weight;
6561 	x_dlv_detail_info.weight_uom_code:=p_weight_uom;
6562 
6563 	x_dlv_detail_info.volume:=p_volume;
6564 	x_dlv_detail_info.volume_uom_code:=p_volume_uom;
6565 
6566 
6567 
6568 
6569 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
6570 
6571         FTE_FREIGHT_PRICING_UTIL.unset_method(FTE_FREIGHT_PRICING_UTIL.G_DBG,'Initialize_Single_Dummy_Detail');
6572 
6573 
6574 
6575 
6576 END Initialize_Single_Dummy_Detail;
6577 
6578 
6579 --Used for delivery search services
6580 
6581 PROCEDURE Initialize_Dummy_Dleg(
6582 	p_pickup_location IN NUMBER,
6583 	p_dropoff_location IN NUMBER,
6584 	p_dlv_id IN NUMBER,
6585 	x_dleg_rec IN OUT NOCOPY TL_delivery_leg_rec_type,
6586 	x_return_status	OUT	NOCOPY	VARCHAR2) IS
6587 
6588 l_return_status VARCHAR2(1);
6589 
6590 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
6591 
6592 	l_warning_count 	NUMBER:=0;
6593 BEGIN
6594 
6595 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
6596 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Initialize_Dummy_Dleg','start');
6597 
6598 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
6599 	x_dleg_rec.delivery_leg_id:=FAKE_DLEG_ID;
6600 	x_dleg_rec.trip_id:=FAKE_TRIP_ID;
6601 	x_dleg_rec.delivery_id:=p_dlv_id;
6602 	x_dleg_rec.pickup_stop_id:=FAKE_STOP_ID_1;
6603 	x_dleg_rec.pickup_location_id:=p_pickup_location;
6604 	x_dleg_rec.dropoff_stop_id:=FAKE_STOP_ID_2;
6605 	x_dleg_rec.dropoff_location_id:=p_dropoff_location;
6606 	x_dleg_rec.weight:=0;
6607 	x_dleg_rec.volume:=0;
6608 	x_dleg_rec.pallets:=0;
6609 	x_dleg_rec.containers:=0;
6610 
6611 	--Get distance, time
6612 	x_dleg_rec.distance:=0;
6613 	x_dleg_rec.direct_distance:=0;
6614 
6615         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Initialize_Dummy_Dleg');
6616 
6617 	IF (l_warning_count > 0)
6618 	THEN
6619 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
6620 	END IF;
6621 EXCEPTION
6622    WHEN others THEN
6623         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
6624         FTE_FREIGHT_PRICING_UTIL.set_exception('Initialize_Dummy_Dleg',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
6625         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
6626         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Initialize_Dummy_Dleg');
6627 
6628 
6629 END  Initialize_Dummy_Dleg;
6630 
6631 --Used for delivery search services
6632 PROCEDURE Initialize_Dummy_Trip(
6633 	p_departure_date IN DATE,
6634 	p_arrival_date IN DATE,
6635 	x_trip_rec IN OUT NOCOPY TL_trip_data_input_rec_type,
6636 	x_return_status	OUT	NOCOPY	VARCHAR2) IS
6637 
6638 l_return_status VARCHAR2(1);
6639 
6640 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
6641 
6642 	l_warning_count 	NUMBER:=0;
6643 BEGIN
6644 
6645 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
6646 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Initialize_Dummy_Trip','start');
6647 
6648 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
6649 	x_trip_rec.trip_id:=FAKE_TRIP_ID;
6650 	x_trip_rec.planned_departure_date:=p_departure_date;
6651 	x_trip_rec.planned_arrival_date:=p_arrival_date;
6652 	x_trip_rec.number_of_stops:=2;
6653 	--x_trip_rec.distance_method:=?
6654 	x_trip_rec.continuous_move:='N';
6655 	x_trip_rec.dead_head:='N';
6656 
6657 
6658 	x_trip_rec.loaded_distance:=0;
6659 	x_trip_rec.unloaded_distance:=0;
6660 	x_trip_rec.number_of_pallets:=0;
6661 	x_trip_rec.number_of_containers:=0;
6662 	x_trip_rec.time:=0;
6663 
6664 	x_trip_rec.total_trip_distance:=0;
6665 	x_trip_rec.total_direct_distance:=0;
6666 
6667 	x_trip_rec.total_weight:=0;
6668 	x_trip_rec.total_volume:=0;
6669 
6670 
6671 
6672 
6673 
6674         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Initialize_Dummy_Trip');
6675 
6676 	IF (l_warning_count > 0)
6677 	THEN
6678 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
6679 	END IF;
6680 EXCEPTION
6681    WHEN others THEN
6682         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
6683         FTE_FREIGHT_PRICING_UTIL.set_exception('Initialize_Dummy_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
6684         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
6685         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Initialize_Dummy_Trip');
6686 
6687 
6688 END  Initialize_Dummy_Trip;
6689 
6690 
6691 --Used for delivery search services
6692 PROCEDURE Initialize_Dummy_Stop(
6693 	p_date IN DATE,
6694 	p_location IN NUMBER,
6695 	x_stop_rec IN OUT NOCOPY  TL_TRIP_STOP_INPUT_REC_TYPE,
6696 	x_return_status	OUT	NOCOPY	VARCHAR2) IS
6697 
6698 l_return_status VARCHAR2(1);
6699 
6700 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
6701 
6702 	l_warning_count 	NUMBER:=0;
6703 BEGIN
6704 
6705 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
6706 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Initialize_Dummy_Stop','start');
6707 
6708 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
6709 	x_stop_rec.stop_id:=FAKE_STOP_ID_1;
6710 	x_stop_rec.trip_id:=FAKE_TRIP_ID;
6711 	x_stop_rec.location_id:=p_location;
6712 	x_stop_rec.weekday_layovers:=0;
6713 	x_stop_rec.weekend_layovers:=0;
6714 	x_stop_rec.planned_arrival_date:=p_date;
6715 	x_stop_rec.planned_departure_date:=p_date;
6716 
6717 	x_stop_rec.distance_to_next_stop:=0;
6718 	x_stop_rec.time_to_next_stop:=0;
6719 	x_stop_rec.pickup_weight:=0;
6720 	x_stop_rec.pickup_volume:=0;
6721 	x_stop_rec.pickup_pallets:=0;
6722 	x_stop_rec.pickup_containers:=0;
6723 
6724 	x_stop_rec.dropoff_weight:=0;
6725 	x_stop_rec.dropoff_volume:=0;
6726 	x_stop_rec.dropoff_pallets:=0;
6727 	x_stop_rec.dropoff_containers:=0;
6728 
6729 	x_stop_rec.fac_pickup_weight:=0;
6730 	x_stop_rec.fac_pickup_volume:=0;
6731 	x_stop_rec.fac_dropoff_weight:=0;
6732 	x_stop_rec.fac_dropoff_volume:=0;
6733 
6734 	x_stop_rec.fac_handling_time:=0;
6735 
6736         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Initialize_Dummy_Stop');
6737 
6738 	IF (l_warning_count > 0)
6739 	THEN
6740 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
6741 	END IF;
6742 EXCEPTION
6743    WHEN others THEN
6744         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
6745         FTE_FREIGHT_PRICING_UTIL.set_exception('Initialize_Dummy_Stop',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
6746         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
6747         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Initialize_Dummy_Stop');
6748 
6749 
6750 END  Initialize_Dummy_Stop;
6751 
6752 
6753 --Adds all the delivery details of a delivery into the cache
6754 --Used in delivery search services
6755 
6756 PROCEDURE Add_Delivery_Details(
6757 	p_delivery_id IN NUMBER,
6758 	p_carrier_pref_rec IN TL_CARRIER_PREF_REC_TYPE,
6759 	x_pickup_stop_rec IN OUT NOCOPY TL_TRIP_STOP_INPUT_REC_TYPE,
6760 	x_dropoff_stop_rec IN OUT NOCOPY TL_TRIP_STOP_INPUT_REC_TYPE,
6761 	x_dleg_rec IN OUT NOCOPY TL_delivery_leg_rec_type,
6762 	x_return_status	OUT	NOCOPY	VARCHAR2)
6763 IS
6764 
6765 --Gets all the details for a delivery
6766 
6767 
6768 	CURSOR get_dlv_details(c_delivery_id IN NUMBER) RETURN
6769 	FTE_FREIGHT_PRICING.shipment_line_rec_type IS
6770 
6771 	SELECT	dd.delivery_detail_id,
6772 		da.delivery_id,
6773 		FAKE_DLEG_ID,
6774 		'Y',
6775 		da.parent_delivery_detail_id,
6776 		dd.customer_id,
6777 		dd.sold_to_contact_id,
6778 		dd.inventory_item_id,
6779 		dd.item_description,
6780 		dd.hazard_class_id,
6781 		dd.country_of_origin,
6782 		dd.classification,
6783 		dd.requested_quantity,
6784 		dd.requested_quantity_uom,
6785 		dd.master_container_item_id,
6786 		dd.detail_container_item_id,
6787 		dd.customer_item_id,
6788 		dd.net_weight,
6789 		dd.organization_id,
6790 		dd.container_flag,
6791 		dd.container_type_code,
6792 		dd.container_name,
6793 		dd.fill_percent,
6794 		dd.gross_weight,
6795 		dd.currency_code,
6796 		dd.freight_class_cat_id,
6797 		dd.commodity_code_cat_id,
6798 		dd.weight_uom_code ,
6799 		dd.volume,
6800 		dd.volume_uom_code,
6801 		null,null,null,null,null,null,null,null,null,null,null,null,
6802 		null,null,null,null,null,null,null,null,null,null,null,null,
6803 		null,null,null,null,null,null,null,null,null,null,null,null,
6804 		null,null,null,
6805 		null,--MDC columns
6806 		null,--MDC columns
6807 		null--MDC columns
6808 	FROM 	wsh_delivery_assignments da,
6809 		wsh_delivery_details dd
6810 	WHERE 	da.delivery_id=c_delivery_id and
6811 		da.parent_delivery_detail_id is null and
6812 		da.delivery_detail_id = dd.delivery_detail_id;
6813 
6814 
6815 	l_dlv_detail_rec FTE_FREIGHT_PRICING.shipment_line_rec_type;
6816 
6817 
6818 l_dleg_tab TL_dleg_quantity_tab_type;
6819 
6820 l_return_status VARCHAR2(1);
6821 
6822 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
6823 
6824 	l_warning_count 	NUMBER:=0;
6825 BEGIN
6826 
6827 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
6828 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Add_Delivery_Details','start');
6829 
6830 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
6831 	OPEN get_dlv_details(p_delivery_id);
6832 	FETCH get_dlv_details INTO l_dlv_detail_rec;
6833 	WHILE (get_dlv_details%FOUND)
6834 	LOOP
6835 
6836 		Validate_Dlv_Detail_Info(
6837 			p_carrier_pref_rec =>p_carrier_pref_rec,
6838 			x_dlv_detail_info	=>l_dlv_detail_rec,
6839 			x_return_status		=>l_return_status);
6840 
6841 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
6842 		THEN
6843 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
6844 		       THEN
6845 		       	  CLOSE get_dlv_details;
6846 
6847 
6848 		          raise FTE_FREIGHT_PRICING_UTIL.g_tl_validate_dlv_dtl_fail;
6849 		       END IF;
6850 		END IF;
6851 
6852 		--Insert into delivery detail cache
6853 
6854 		Add_Dropoff_Quantity(
6855 			p_dlv_detail_rec    =>l_dlv_detail_rec,
6856 			p_carrier_pref  =>p_carrier_pref_rec,
6857 			x_stop_rec	    =>x_dropoff_stop_rec,
6858 			x_return_status	=>	l_return_status);
6859 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
6860 		THEN
6861 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
6862 		       THEN
6863 			  CLOSE get_dlv_details;
6864 			  raise FTE_FREIGHT_PRICING_UTIL.g_tl_add_dropoff_qty_fail;
6865 		       END IF;
6866 		END IF;
6867 
6868 
6869 		--Adds picked up quantities to l_stop_rec
6870 		Add_Pickup_Quantity(
6871 			p_dlv_detail_rec=>	l_dlv_detail_rec,
6872 			p_carrier_pref=>	p_carrier_pref_rec,
6873 			x_stop_rec=>	x_pickup_stop_rec,
6874 			x_dleg_quantity_tab=>	l_dleg_tab,
6875 			x_return_status	=>	l_return_status);
6876 
6877 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
6878 		THEN
6879 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
6880 		       THEN
6881 
6882 			  CLOSE get_dlv_details;
6883 			  raise FTE_FREIGHT_PRICING_UTIL.g_tl_add_pickup_qty_fail;
6884 
6885 		       END IF;
6886 		END IF;
6887 
6888 
6889 
6890 		--Insert into dlv details cache
6891 		Insert_Into_Dlv_Dtl_Cache(
6892 			p_dlv_dtl_rec=>l_dlv_detail_rec,
6893 			x_return_status	=>	l_return_status);
6894 
6895 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
6896 		THEN
6897 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
6898 		       THEN
6899 		       	  CLOSE get_dlv_details;
6900 		          raise FTE_FREIGHT_PRICING_UTIL.g_tl_insert_dlv_dtl_fail;
6901 		       END IF;
6902 		END IF;
6903 
6904 
6905 		FETCH get_dlv_details INTO l_dlv_detail_rec;
6906 	END LOOP;
6907 
6908 	IF (l_dleg_tab.EXISTS(x_dleg_rec.delivery_leg_id))
6909 	THEN
6910 	 x_dleg_rec.weight:=
6911 	  l_dleg_tab(x_dleg_rec.delivery_leg_id).weight;
6912 	 x_dleg_rec.volume:=
6913 	  l_dleg_tab(x_dleg_rec.delivery_leg_id).volume;
6914 	 x_dleg_rec.pallets:=
6915 	  l_dleg_tab(x_dleg_rec.delivery_leg_id).pallets;
6916 	 x_dleg_rec.containers:=
6917 	  l_dleg_tab(x_dleg_rec.delivery_leg_id).containers;
6918 	END IF;
6919 
6920 
6921 
6922 
6923 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
6924 	'ADDDELIVERY DETAILS w:'||x_dleg_rec.weight ||' v:'|| x_dleg_rec.volume||' conta:'|| x_dleg_rec.containers||
6925 	'pall:'||x_dleg_rec.pallets);
6926 
6927 
6928         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Add_Delivery_Details');
6929 
6930 	IF (l_warning_count > 0)
6931 	THEN
6932 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
6933 	END IF;
6934 EXCEPTION
6935 
6936    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_validate_dlv_dtl_fail THEN
6937         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
6938         FTE_FREIGHT_PRICING_UTIL.set_exception('Add_Delivery_Details',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_validate_dlv_dtl_fail');
6939         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Add_Delivery_Details');
6940 
6941    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_insert_dlv_dtl_fail THEN
6942         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
6943         FTE_FREIGHT_PRICING_UTIL.set_exception('Add_Delivery_Details',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_insert_dlv_dtl_fail');
6944         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Add_Delivery_Details');
6945 
6946 
6947    WHEN others THEN
6948         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
6949         FTE_FREIGHT_PRICING_UTIL.set_exception('Add_Delivery_Details',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
6950         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
6951         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Add_Delivery_Details');
6952 
6953 
6954 END Add_Delivery_Details;
6955 
6956 --Given a schedule ID it constructs the carrier record
6957 --Used for trip/delivery search services
6958 
6959 PROCEDURE Get_Carrier_Pref_For_Schedule(
6960 	p_schedule_id IN NUMBER,
6961 	x_carrier_service_rec IN OUT NOCOPY TL_CARRIER_PREF_REC_TYPE,
6962 	x_return_status	OUT	NOCOPY	VARCHAR2) IS
6963 
6964 
6965 
6966 --GEts carr info from schedule id
6967 
6968 	CURSOR get_carr_from_sched(c_schedule_id IN NUMBER) RETURN
6969 	TL_CARRIER_PREF_REC_TYPE IS
6970 	SELECT	c.carrier_id,
6971 		c.max_out_of_route,
6972 		c.min_cm_distance,
6973 		c.min_cm_time,
6974 		c.cm_free_dh_mileage,
6975 		c.cm_first_load_discount,
6976 		c.currency_code,
6977 		c.cm_rate_variant,
6978 		c.unit_rate_basis,
6979 		null,
6980 		c.weight_uom,
6981 		null,
6982 		c.volume_uom,
6983 		null,
6984 		c.distance_uom,
6985 		null,
6986 		c.time_uom,
6987 		c.origin_dstn_surcharge_level,
6988 		c.distance_calculation_method,
6989 		c.dim_dimensional_factor,
6990 		c.dim_weight_uom,
6991 		c.dim_volume_uom,
6992 		c.dim_dimension_uom,
6993 		c.dim_min_pack_vol
6994 	FROM 	WSH_CARRIERS c ,
6995 		FTE_LANES l,
6996 		FTE_SCHEDULES s
6997 	WHERE 	c.carrier_id=l.carrier_id and
6998 		s.schedules_id=c_schedule_id and
6999 		s.lane_id=l.lane_id;
7000 
7001 --GEts carr service info from schedule id
7002 
7003 	CURSOR get_carr_service_from_sched(c_schedule_id IN NUMBER) RETURN
7004 	TL_CARRIER_PREF_REC_TYPE IS
7005 	SELECT	c.carrier_id,
7006 		c.max_out_of_route,
7007 		c.min_cm_distance,
7008 		c.min_cm_time,
7009 		c.cm_free_dh_mileage,
7010 		c.cm_first_load_discount,
7011 		null,
7012 		c.cm_rate_variant,
7013 		c.unit_rate_basis,
7014 		null,
7015 		null,
7016 		null,
7017 		null,
7018 		null,
7019 		null,
7020 		null,
7021 		null,
7022 		c.origin_dstn_surcharge_level,
7023 		c.distance_calculation_method,
7024 		c.dim_dimensional_factor,
7025 		c.dim_weight_uom,
7026 		c.dim_volume_uom,
7027 		c.dim_dimension_uom,
7028 		c.dim_min_pack_vol
7029 	FROM 	WSH_CARRIER_SERVICES c ,
7030 		FTE_LANES l,
7031 		FTE_SCHEDULES s
7032 	WHERE 	c.carrier_id=l.carrier_id and
7033 		c.service_level=l.service_type_code and
7034 		s.schedules_id=c_schedule_id and
7035 		s.lane_id=l.lane_id;
7036 
7037 	l_carrier_rec TL_CARRIER_PREF_REC_TYPE;
7038 
7039 l_return_status VARCHAR2(1);
7040 
7041 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
7042 
7043 	l_warning_count 	NUMBER:=0;
7044 BEGIN
7045 
7046 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
7047 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Get_Carrier_Pref_For_Schedule','start');
7048 
7049 
7050 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
7051 	OPEN get_carr_from_sched(p_schedule_id);
7052 	FETCH get_carr_from_sched INTO l_carrier_rec;
7053 	IF (get_carr_from_sched%NOTFOUND)
7054 	THEN
7055 
7056 		CLOSE get_carr_from_sched;
7057 
7058 		--Show only generic message
7059 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
7060 		--	p_api=>'Get_Carrier_Pref_For_Schedule',
7061 		--	p_exc=>'g_tl_get_car_from_sched_fail',
7062 		--	p_schedule_id=>p_schedule_id);
7063 
7064 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_car_from_sched_fail;
7065 
7066 		END IF;
7067 	CLOSE get_carr_from_sched;
7068 
7069 
7070 
7071 	OPEN get_carr_service_from_sched(p_schedule_id);
7072 	FETCH get_carr_service_from_sched INTO x_carrier_service_rec;
7073 	IF (get_carr_service_from_sched%NOTFOUND)
7074 	THEN
7075 
7076 
7077 		FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'Carrier Service not found');
7078 	END IF;
7079 	CLOSE get_carr_service_from_sched;
7080 
7081 	Combine_Carrier_Info(
7082 		p_carrier_pref_rec	=>	l_carrier_rec,
7083 		x_carrier_service_pref_rec	=>	x_carrier_service_rec,
7084 		x_return_status	=>	l_return_status);
7085 
7086 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
7087 	THEN
7088 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
7089 	       THEN
7090 	          raise FTE_FREIGHT_PRICING_UTIL.g_tl_combine_carrier_fail;
7091 	       END IF;
7092 	END IF;
7093 
7094         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Carrier_Pref_For_Schedule');
7095 
7096 	IF (l_warning_count > 0)
7097 	THEN
7098 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
7099 	END IF;
7100 EXCEPTION
7101 
7102    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_car_from_sched_fail THEN
7103         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
7104         FTE_FREIGHT_PRICING_UTIL.set_exception('Get_Carrier_Pref_For_Schedule',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_car_from_sched_fail');
7105         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Carrier_Pref_For_Schedule');
7106 
7107    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_combine_carrier_fail THEN
7108         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
7109         FTE_FREIGHT_PRICING_UTIL.set_exception('Get_Carrier_Pref_For_Schedule',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_combine_carrier_fail');
7110         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Carrier_Pref_For_Schedule');
7111 
7112 
7113    WHEN others THEN
7114         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
7115         FTE_FREIGHT_PRICING_UTIL.set_exception('Get_Carrier_Pref_For_Schedule',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
7116         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
7117         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Carrier_Pref_For_Schedule');
7118 
7119 
7120 END Get_Carrier_Pref_For_Schedule;
7121 
7122 --Given a Lane ID cosntructs a carrier record
7123 --Used for trip/delivery search services
7124 
7125 PROCEDURE Get_Carrier_Pref_For_Lane(
7126 	p_lane_id IN NUMBER,
7127 	x_carrier_service_rec IN OUT NOCOPY TL_CARRIER_PREF_REC_TYPE,
7128 	x_return_status	OUT	NOCOPY	VARCHAR2) IS
7129 
7130 
7131 --GEts carr info from lane
7132 
7133 	CURSOR get_carr_from_lane(c_lane_id IN NUMBER) RETURN
7134 	TL_CARRIER_PREF_REC_TYPE IS
7135 	SELECT	c.carrier_id,
7136 		c.max_out_of_route,
7137 		c.min_cm_distance,
7138 		c.min_cm_time,
7139 		c.cm_free_dh_mileage,
7140 		c.cm_first_load_discount,
7141 		c.currency_code,
7142 		c.cm_rate_variant,
7143 		c.unit_rate_basis,
7144 		null,
7145 		c.weight_uom,
7146 		null,
7147 		c.volume_uom,
7148 		null,
7149 		c.distance_uom,
7150 		null,
7151 		c.time_uom,
7152 		c.origin_dstn_surcharge_level,
7153 		c.distance_calculation_method,
7154 		c.dim_dimensional_factor,
7155 		c.dim_weight_uom,
7156 		c.dim_volume_uom,
7157 		c.dim_dimension_uom,
7158 		c.dim_min_pack_vol
7159 	FROM 	WSH_CARRIERS c ,
7160 		FTE_LANES l
7161 	WHERE 	c.carrier_id=l.carrier_id and
7162 		l.lane_id=c_lane_id;
7163 
7164 
7165 --gets carr service info from lane
7166 
7167 	CURSOR get_carr_service_from_lane(c_lane_id IN NUMBER) RETURN
7168 	TL_CARRIER_PREF_REC_TYPE IS
7169 	SELECT	c.carrier_id,
7170 		c.max_out_of_route,
7171 		c.min_cm_distance,
7172 		c.min_cm_time,
7173 		c.cm_free_dh_mileage,
7174 		c.cm_first_load_discount,
7175 		null,
7176 		c.cm_rate_variant,
7177 		c.unit_rate_basis,
7178 		null,
7179 		null,
7180 		null,
7181 		null,
7182 		null,
7183 		null,
7184 		null,
7185 		null,
7186 		c.origin_dstn_surcharge_level,
7187 		c.distance_calculation_method,
7188 		c.dim_dimensional_factor,
7189 		c.dim_weight_uom,
7190 		c.dim_volume_uom,
7191 		c.dim_dimension_uom,
7192 		c.dim_min_pack_vol
7193 	FROM 	WSH_CARRIER_SERVICES c ,
7194 		FTE_LANES l
7195 	WHERE 	c.carrier_id=l.carrier_id and
7196 		c.service_level=l.service_type_code and
7197 		l.lane_id=c_lane_id;
7198 
7199 
7200 	l_carrier_rec TL_CARRIER_PREF_REC_TYPE;
7201 
7202 l_return_status VARCHAR2(1);
7203 
7204 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
7205 
7206 	l_warning_count 	NUMBER:=0;
7207 BEGIN
7208 
7209 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
7210 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Get_Carrier_Pref_For_Lane','start');
7211 
7212 
7213 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
7214 
7215 	OPEN get_carr_from_lane(p_lane_id);
7216 	FETCH get_carr_from_lane INTO l_carrier_rec;
7217 	IF (get_carr_from_lane%NOTFOUND)
7218 	THEN
7219 
7220 		CLOSE get_carr_from_lane;
7221 
7222 		--Show only generic message
7223 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
7224 		--	p_api=>'Get_Carrier_Pref_For_Lane',
7225 		--	p_exc=>'g_tl_get_carr_from_lane_fail',
7226 		--	p_lane_id=>p_lane_id);
7227 
7228 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_carr_from_lane_fail;
7229 
7230 	END IF;
7231 	CLOSE get_carr_from_lane;
7232 
7233 	OPEN get_carr_service_from_lane(p_lane_id);
7234 	FETCH get_carr_service_from_lane INTO x_carrier_service_rec;
7235 	IF (get_carr_service_from_lane%NOTFOUND)
7236 	THEN
7237 
7238 		FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'No carr service found');
7239 	END IF;
7240 	CLOSE get_carr_service_from_lane;
7241 
7242 	Combine_Carrier_Info(
7243 		p_carrier_pref_rec	=>	l_carrier_rec,
7244 		x_carrier_service_pref_rec	=>	x_carrier_service_rec,
7245 		x_return_status	=>	l_return_status);
7246 
7247 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
7248 	THEN
7249 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
7250 	       THEN
7251 	          raise FTE_FREIGHT_PRICING_UTIL.g_tl_combine_carrier_fail;
7252 	       END IF;
7253 	END IF;
7254 
7255         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Carrier_Pref_For_Lane');
7256 
7257 	IF (l_warning_count > 0)
7258 	THEN
7259 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
7260 	END IF;
7261 EXCEPTION
7262 
7263    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_carr_from_lane_fail THEN
7264         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
7265         FTE_FREIGHT_PRICING_UTIL.set_exception('Get_Carrier_Pref_For_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_carr_from_lane_fail');
7266         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Carrier_Pref_For_Lane');
7267 
7268    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_combine_carrier_fail THEN
7269         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
7270         FTE_FREIGHT_PRICING_UTIL.set_exception('Get_Carrier_Pref_For_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_combine_carrier_fail');
7271         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Carrier_Pref_For_Lane');
7272 
7273 
7274    WHEN others THEN
7275         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
7276         FTE_FREIGHT_PRICING_UTIL.set_exception('Get_Carrier_Pref_For_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
7277         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
7278         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Carrier_Pref_For_Lane');
7279 
7280 
7281 END Get_Carrier_Pref_For_Lane;
7282 
7283 --Used in trip search services
7284 --
7285 PROCEDURE Get_Trip_Info_From_Lane(
7286 	p_lane_id IN NUMBER,
7287 	x_trip_rec IN OUT NOCOPY TL_trip_data_input_rec_type,
7288 	x_return_status OUT NOCOPY VARCHAR2) IS
7289 
7290 
7291 --Gets the lane info required for the trip cache
7292 
7293 	CURSOR get_lane_info(c_lane_id IN NUMBER) IS
7294 	SELECT	l.lane_id,
7295 		l.carrier_id,
7296 		l.mode_of_transportation_code,
7297 		l.service_type_code,
7298 		flrc.list_header_id
7299 	FROM fte_lanes l,
7300 	     fte_lane_rate_charts flrc
7301 	WHERE l.lane_id=c_lane_id
7302 	      AND (l.lane_id = flrc.lane_id )
7303 	      AND    (flrc.start_date_active is null
7304 	      	OR flrc.start_date_active <= x_trip_rec.planned_departure_date )
7305 	      AND    (flrc.end_date_active is null
7306 	      	OR flrc.end_date_active > x_trip_rec.planned_departure_date );
7307 
7308 
7309 l_return_status VARCHAR2(1);
7310 
7311 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
7312 
7313 	l_warning_count 	NUMBER:=0;
7314 BEGIN
7315 
7316 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
7317 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Get_Trip_Info_From_Lane','start');
7318 
7319 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
7320 
7321 	OPEN get_lane_info(p_lane_id);
7322 	FETCH get_lane_info INTO
7323 		x_trip_rec.lane_id,x_trip_rec.carrier_id,
7324 		x_trip_rec.mode_of_transport,x_trip_rec.service_type,
7325 		x_trip_rec.price_list_id;
7326 
7327 	IF (get_lane_info%NOTFOUND)
7328 	THEN
7329 
7330 		CLOSE get_lane_info;
7331 
7332 		--Show only generic message
7333 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
7334 		--	p_api=>'Get_Trip_Info_From_Lane',
7335 		--	p_exc=>'g_tl_get_lane_info_fail',
7336 		--	p_lane_id=>p_lane_id);
7337 
7338 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_lane_info_fail;
7339 
7340 	END IF;
7341 	CLOSE get_lane_info;
7342 
7343         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Trip_Info_From_Lane');
7344 
7345 	IF (l_warning_count > 0)
7346 	THEN
7347 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
7348 	END IF;
7349 EXCEPTION
7350 
7351    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_lane_info_fail THEN
7352         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
7353         FTE_FREIGHT_PRICING_UTIL.set_exception('Get_Trip_Info_From_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_lane_info_fail');
7354         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Trip_Info_From_Lane');
7355 
7356    WHEN others THEN
7357         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
7358         FTE_FREIGHT_PRICING_UTIL.set_exception('Get_Trip_Info_From_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
7359         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
7360         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Trip_Info_From_Lane');
7361 
7362 
7363 END Get_Trip_Info_From_Lane;
7364 
7365 --Used in trip search services
7366 
7367 PROCEDURE Get_Trip_Info_From_Schedule(
7368 	p_schedule_id IN NUMBER,
7369 	x_trip_rec IN OUT NOCOPY TL_trip_data_input_rec_type,
7370 	x_return_status OUT NOCOPY VARCHAR2
7371 	) IS
7372 
7373 --Gets the lane/sched info required for the trip cache
7374 
7375 	CURSOR get_schedule_info(c_schedule_id IN NUMBER) IS
7376 	SELECT	l.lane_id,
7377 		l.carrier_id,
7378 		l.mode_of_transportation_code,
7379 		l.service_type_code,
7380 		s.schedules_id,
7381 		flrc.list_header_id
7382 	FROM 	fte_lanes l,
7383 		fte_schedules s,
7384 		fte_lane_rate_charts flrc
7385 	WHERE 	l.lane_id=s.lane_id
7386 	      AND (l.lane_id = flrc.lane_id )
7387 	      AND    (flrc.start_date_active is null
7388 		OR flrc.start_date_active <= x_trip_rec.planned_departure_date )
7389 	      AND    (flrc.end_date_active is null
7390 		OR flrc.end_date_active > x_trip_rec.planned_departure_date )
7391 	      AND s.schedules_id=c_schedule_id;
7392 
7393 
7394 
7395 l_return_status VARCHAR2(1);
7396 
7397 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
7398 
7399 	l_warning_count 	NUMBER:=0;
7400 BEGIN
7401 
7402 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
7403 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Get_Trip_Info_From_Schedule','start');
7404 
7405 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
7406 
7407 	OPEN get_schedule_info(p_schedule_id);
7408 	FETCH get_schedule_info INTO
7409 		x_trip_rec.lane_id,x_trip_rec.carrier_id,
7410 		x_trip_rec.mode_of_transport,x_trip_rec.service_type,
7411 		x_trip_rec.schedule_id,x_trip_rec.price_list_id;
7412 
7413 	IF (get_schedule_info%NOTFOUND)
7414 	THEN
7415 		CLOSE get_schedule_info;
7416 
7417 		--Show only generic message
7418 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
7419 		--	p_api=>'Get_Trip_Info_From_Schedule',
7420 		--	p_exc=>'g_tl_get_schedule_info_fail',
7421 		--	p_schedule_id=>p_schedule_id);
7422 
7423 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_schedule_info_fail;
7424 
7425 	END IF;
7426 	CLOSE get_schedule_info;
7427 
7428         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Trip_Info_From_Schedule');
7429 
7430 	IF (l_warning_count > 0)
7431 	THEN
7432 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
7433 	END IF;
7434 EXCEPTION
7435 
7436    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_schedule_info_fail THEN
7437         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
7438         FTE_FREIGHT_PRICING_UTIL.set_exception('Get_Trip_Info_From_Schedule',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_schedule_info_fail');
7439         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Trip_Info_From_Schedule');
7440 
7441 
7442    WHEN others THEN
7443         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
7444         FTE_FREIGHT_PRICING_UTIL.set_exception('Get_Trip_Info_From_Schedule',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
7445         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
7446         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Trip_Info_From_Schedule');
7447 
7448 
7449 END Get_Trip_Info_From_Schedule;
7450 
7451 --The weight/volumes are converted into the UOMs of the carrier and the dummy records
7452 --are updated
7453 --Used in delivery search services
7454 
7455 PROCEDURE Update_Dummy_Records(
7456 	p_weight_uom IN VARCHAR2,
7457 	p_volume_uom IN VARCHAR2,
7458 	p_weight IN NUMBER,
7459 	p_volume IN NUMBER,
7460 	p_containers IN NUMBER,
7461 	p_pallets IN NUMBER,
7462 	x_carrier_rec IN OUT NOCOPY TL_CARRIER_PREF_REC_TYPE ,
7463 	x_trip_rec IN OUT NOCOPY  TL_trip_data_input_rec_type,
7464 	x_pickup_stop IN OUT NOCOPY TL_TRIP_STOP_INPUT_REC_TYPE,
7465 	x_dropoff_stop IN OUT NOCOPY TL_TRIP_STOP_INPUT_REC_TYPE,
7466 	x_dleg IN OUT NOCOPY   TL_delivery_leg_rec_type,
7467 	x_return_status	OUT	NOCOPY	VARCHAR2) IS
7468 
7469 	l_quantity NUMBER;
7470 
7471 l_return_status VARCHAR2(1);
7472 
7473 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
7474 
7475 	l_warning_count 	NUMBER:=0;
7476 BEGIN
7477 
7478 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
7479 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Update_Dummy_Records','start');
7480 
7481 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
7482 
7483 	l_quantity:=
7484 	FTE_FREIGHT_PRICING_UTIL.convert_uom(
7485 		p_weight_uom,
7486 		x_carrier_rec.weight_uom,
7487 		p_weight,
7488 		0);
7489 
7490 	IF (l_quantity IS NULL)
7491 	THEN
7492 
7493 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_weight_uom_conv_fail;
7494 	END IF;
7495 
7496 	x_trip_rec.total_weight:=l_quantity;
7497 
7498 	l_quantity:=
7499 	FTE_FREIGHT_PRICING_UTIL.convert_uom(
7500 		p_volume_uom,
7501 		x_carrier_rec.volume_uom,
7502 		p_volume,
7503 		0);
7504 
7505 
7506 	IF (l_quantity IS NULL)
7507 	THEN
7508 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_vol_uom_conv_fail;
7509 	END IF;
7510 
7511 	x_trip_rec.total_volume:=l_quantity;
7512 
7513 	x_trip_rec.number_of_containers:=p_containers;
7514 	x_trip_rec.number_of_pallets:=p_pallets;
7515 
7516 
7517 	x_pickup_stop.pickup_weight:=x_trip_rec.total_weight;
7518 	x_pickup_stop.pickup_volume:=x_trip_rec.total_volume;
7519 	x_pickup_stop.pickup_containers:=x_trip_rec.number_of_containers;
7520 	x_pickup_stop.pickup_pallets:=x_trip_rec.number_of_pallets;
7521 
7522 
7523 	x_pickup_stop.dropoff_weight:=0;
7524 	x_pickup_stop.dropoff_volume:=0;
7525 	x_pickup_stop.dropoff_containers:=0;
7526 	x_pickup_stop.dropoff_pallets:=0;
7527 
7528 
7529 	x_dropoff_stop.dropoff_weight:=x_trip_rec.total_weight;
7530 	x_dropoff_stop.dropoff_volume:=x_trip_rec.total_volume;
7531 	x_dropoff_stop.dropoff_containers:=x_trip_rec.number_of_containers;
7532 	x_dropoff_stop.dropoff_pallets:=x_trip_rec.number_of_pallets;
7533 
7534 
7535 	x_dropoff_stop.pickup_weight:=0;
7536 	x_dropoff_stop.pickup_volume:=0;
7537 	x_dropoff_stop.pickup_containers:=0;
7538 	x_dropoff_stop.pickup_pallets:=0;
7539 
7540 	x_dleg.weight:=x_trip_rec.total_weight;
7541 	x_dleg.volume:=x_trip_rec.total_volume;
7542 	x_dleg.containers:=x_trip_rec.number_of_containers;
7543 	x_dleg.pallets:=x_trip_rec.number_of_pallets;
7544 
7545 
7546         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Update_Dummy_Records');
7547 
7548 	IF (l_warning_count > 0)
7549 	THEN
7550 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
7551 	END IF;
7552 EXCEPTION
7553 
7554    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_weight_uom_conv_fail THEN
7555         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
7556         FTE_FREIGHT_PRICING_UTIL.set_exception('Update_Dummy_Records',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_weight_uom_conv_fail');
7557         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Update_Dummy_Records');
7558 
7559 
7560    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_vol_uom_conv_fail THEN
7561         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
7562         FTE_FREIGHT_PRICING_UTIL.set_exception('Update_Dummy_Records',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_vol_uom_conv_fail');
7563         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Update_Dummy_Records');
7564 
7565 
7566    WHEN others THEN
7567         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
7568         FTE_FREIGHT_PRICING_UTIL.set_exception('Update_Dummy_Records',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
7569         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
7570         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Update_Dummy_Records');
7571 
7572 END  Update_Dummy_Records;
7573 
7574 
7575 --For delivery search services
7576 --
7577 PROCEDURE TL_Build_Cache_For_Delivery(
7578 	p_wsh_new_delivery_id  IN Number,
7579 	p_dleg_id IN NUMBER,
7580 	p_pickup_location IN NUMBER,
7581 	p_dropoff_location IN NUMBER,
7582 	p_departure_date IN DATE,
7583 	p_arrival_date IN DATE,
7584 	p_lane_rows IN DBMS_UTILITY.number_array ,
7585 	p_schedule_rows IN DBMS_UTILITY.number_array,
7586 	x_return_status OUT NOCOPY Varchar2) IS
7587 
7588 
7589 	CURSOR get_dleg_from_dlv(c_delivery_id IN  NUMBER) RETURN
7590 	TL_delivery_leg_rec_type IS
7591 	SELECT	FAKE_DLEG_ID,
7592 		FAKE_TRIP_ID,
7593 		d.delivery_id,
7594 		FAKE_STOP_ID_1,
7595 		d.initial_pickup_location_id,
7596 		FAKE_STOP_ID_2,
7597 		d.ultimate_dropoff_location_id,
7598 		0,
7599 		0,
7600 		0,
7601 		0,
7602 		0,
7603 		0,
7604 		null,--MDC
7605 		0,
7606 		0,
7607 		null,
7608 		null
7609 	FROM 	wsh_new_deliveries d
7610 	WHERE 	d.delivery_id =c_delivery_id;
7611 
7612 
7613 	CURSOR get_dates_loc_from_dlv(c_delivery_id IN NUMBER) IS
7614 	SELECT	d.initial_pickup_date,
7615 		d.ultimate_dropoff_date,
7616 		d.initial_pickup_location_id,
7617 		d.ultimate_dropoff_location_id
7618 	FROM wsh_new_deliveries d
7619 	WHERE d.delivery_id=c_delivery_id;
7620 
7621 	CURSOR get_dleg_info(c_dleg_id IN NUMBER) RETURN
7622 	TL_delivery_leg_rec_type IS
7623 
7624 	SELECT	dl.delivery_leg_id,
7625 		null,
7626 		dl.delivery_id,
7627 		dl.pick_up_stop_id,
7628 		null,
7629 		dl.drop_off_stop_id,
7630 		null,
7631 		0,
7632 		0,
7633 		0,
7634 		0,
7635 		0,
7636 		0,
7637 		dl.parent_delivery_leg_id,
7638 		0,
7639 		0,
7640 		null,
7641 		null
7642 	FROM 	wsh_delivery_legs dl
7643 	WHERE 	dl.delivery_leg_id=c_dleg_id;
7644 
7645 
7646 
7647 	CURSOR get_trip_info_from_stop(c_stop_id IN NUMBER ) RETURN
7648 	TL_trip_data_input_rec_type IS
7649 
7650 	SELECT	t.trip_id,
7651 		t.lane_id,
7652 		null,
7653 		t.service_level,
7654 		t.carrier_id,
7655 		t.mode_of_transport,
7656 		null,  --t.vehicle_item_id,
7657 		null,
7658 		0,
7659 		0,
7660 		0,
7661 		0,
7662 		0,
7663 		0,
7664 		null, -- t.total_trip_distance,
7665 		null, -- t.total_direct_distance,
7666 		null,
7667 		0,
7668 		0,
7669 		null,
7670 		null,
7671 		null,
7672 		null,
7673 		null,
7674 		null,
7675 		null
7676 	FROM  	wsh_trips t ,
7677 		wsh_trip_stops s
7678 	WHERE 	t.trip_id=s.trip_id AND
7679 		s.stop_id=c_stop_id;
7680 
7681 	CURSOR get_trip_id_from_dleg(c_dleg_id IN NUMBER) IS
7682 	SELECT	s.trip_id
7683 	FROM 	wsh_delivery_legs dl,
7684 		wsh_trip_stops s
7685 	WHERE dl.delivery_leg_id=c_dleg_id AND
7686 	      dl.pick_up_stop_id=s.stop_id;
7687 
7688 
7689 
7690 	CURSOR get_lane_info_with_lane_id(c_lane_id IN NUMBER) IS
7691 	SELECT	l.lane_id,
7692 		l.service_type_code,
7693 		l.mode_of_transportation_code,
7694 		l.pricelist_id
7695 	FROM FTE_LANES l
7696 	WHERE l.lane_id=c_lane_id;
7697 
7698 
7699 
7700 
7701 
7702 	CURSOR get_lane_info_with_schedule_id(c_schedule_id IN NUMBER) IS
7703 	SELECT	l.lane_id,
7704 		l.service_type_code,
7705 		l.mode_of_transportation_code,
7706 		l.pricelist_id
7707 	FROM 	FTE_LANES l,
7708 		FTE_SCHEDULES s
7709 	WHERE 	l.lane_id=s.lane_id and
7710 		s.schedules_id=c_schedule_id;
7711 
7712 	l_dleg_rec TL_delivery_leg_rec_type;
7713 	l_trip_rec TL_trip_data_input_rec_type;
7714 	l_trip_id NUMBER;
7715 	l_pickup_stop_rec  TL_TRIP_STOP_INPUT_REC_TYPE;
7716 	l_dropoff_stop_rec TL_TRIP_STOP_INPUT_REC_TYPE;
7717 
7718 	l_dlv_detail_rec FTE_FREIGHT_PRICING.shipment_line_rec_type;
7719 	i NUMBER;
7720 	l_carrier_rec TL_CARRIER_PREF_REC_TYPE;
7721 
7722 
7723 	l_carrier_index NUMBER;
7724 	l_trip_index NUMBER;
7725 	l_stop_index NUMBER;
7726 	l_dleg_index NUMBER;
7727 
7728 	l_weight_uom VARCHAR2(30);
7729 	l_volume_uom VARCHAR2(30);
7730 	l_weight NUMBER;
7731 	l_volume NUMBER;
7732 	l_containers NUMBER;
7733 	l_pallets NUMBER;
7734 	l_quantity NUMBER;
7735 
7736 	l_departure_date DATE;
7737 	l_arrival_date DATE;
7738 	l_pickup_location NUMBER;
7739 	l_dropoff_location NUMBER;
7740 
7741 l_return_status VARCHAR2(1);
7742 
7743 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
7744 
7745 	l_warning_count 	NUMBER:=0;
7746 BEGIN
7747 
7748 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
7749 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'TL_Build_Cache_For_Delivery','start');
7750 
7751 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
7752 	IF (p_dleg_id IS NOT NULL)
7753 	THEN
7754 		OPEN get_trip_id_from_dleg(p_dleg_id);
7755 		FETCH get_trip_id_from_dleg INTO l_trip_id;
7756 		IF(get_trip_id_from_dleg%NOTFOUND)
7757 		THEN
7758 
7759 			CLOSE get_trip_id_from_dleg;
7760 			raise FTE_FREIGHT_PRICING_UTIL.g_tl_trip_id_from_dleg_fail;
7761 
7762 		END IF;
7763 
7764 		CLOSE get_trip_id_from_dleg;
7765 
7766 		--Assumes that if dleg id exists a trip and a lane associated
7767 		--with that exists, the passed lanes/schedules are ignored
7768 		TL_Build_Cache_For_Trip(
7769 			p_wsh_trip_id	=>	l_trip_id,
7770 			x_return_status	=>	l_return_status);
7771 
7772 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
7773 		THEN
7774 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
7775 		       THEN
7776 		          raise FTE_FREIGHT_PRICING_UTIL.g_tl_build_cache_trp_fail;
7777 		       END IF;
7778 		END IF;
7779 
7780 		RETURN;
7781 
7782 
7783 	END IF;
7784 	IF ((p_pickup_location IS NULL) OR (p_dropoff_location IS NULL) OR
7785 	(p_arrival_date IS NULL) OR (p_departure_date IS NULL))
7786 	--construct dleg based on delivery
7787 	THEN
7788 
7789 
7790 		OPEN get_dates_loc_from_dlv(p_wsh_new_delivery_id);
7791 		FETCH get_dates_loc_from_dlv INTO
7792 			l_departure_date,l_arrival_date,l_pickup_location,
7793 			l_dropoff_location;
7794 		IF(get_dates_loc_from_dlv%NOTFOUND)
7795 		THEN
7796 			CLOSE get_dates_loc_from_dlv;
7797 
7798 			raise FTE_FREIGHT_PRICING_UTIL.g_tl_dates_loc_from_dlv_fail;
7799 
7800 		END IF;
7801 
7802 		CLOSE get_dates_loc_from_dlv;
7803 
7804 
7805 	ELSE
7806 		l_pickup_location:=p_pickup_location;
7807 		l_dropoff_location:=p_dropoff_location;
7808 		l_departure_date:=p_departure_date;
7809 		l_arrival_date:=p_arrival_date;
7810 
7811 
7812 	END IF;
7813 
7814 	--Create Dummy DLEG
7815 
7816 	Initialize_Dummy_Dleg(
7817 		p_pickup_location	=>l_pickup_location,
7818 		p_dropoff_location	=>l_dropoff_location,
7819 		p_dlv_id	=>p_wsh_new_delivery_id,
7820 		x_dleg_rec	=>l_dleg_rec,
7821 		x_return_status	=>l_return_status);
7822 
7823 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
7824 	THEN
7825 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
7826 	       THEN
7827 	          raise FTE_FREIGHT_PRICING_UTIL.g_tl_init_dummy_dleg_fail;
7828 	       END IF;
7829 	END IF;
7830 
7831 	--Create Dummy Trip
7832 
7833 	Initialize_Dummy_Trip(
7834 		p_departure_date	=>l_departure_date,
7835 		p_arrival_date	=>l_arrival_date,
7836 		x_trip_rec	=>l_trip_rec,
7837 		x_return_status	=>l_return_status);
7838 
7839 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
7840 		THEN
7841 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
7842 		       THEN
7843 		          raise FTE_FREIGHT_PRICING_UTIL.g_tl_init_dummy_trip_fail;
7844 		       END IF;
7845 	END IF;
7846 	--Create Dummy Stops
7847 
7848 	Initialize_Dummy_Stop(
7849 		p_date	=>l_departure_date,
7850 		p_location=>l_pickup_location,
7851 		x_stop_rec	=>l_pickup_stop_rec,
7852 		x_return_status	=>l_return_status);
7853 
7854 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
7855 	THEN
7856 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
7857 		THEN
7858 			raise FTE_FREIGHT_PRICING_UTIL.g_tl_init_dummy_pu_stop_fail;
7859 		END IF;
7860 	END IF;
7861 
7862 
7863 
7864 	Initialize_Dummy_Stop(
7865 		p_date	=>	l_arrival_date,
7866 		p_location	=>	l_dropoff_location,
7867 		x_stop_rec	=>	l_dropoff_stop_rec,
7868 		x_return_status	=>l_return_status);
7869 
7870 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
7871 	THEN
7872 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
7873 		THEN
7874 			raise FTE_FREIGHT_PRICING_UTIL.g_tl_init_dummy_do_stop_fail;
7875 		END IF;
7876 	END IF;
7877 
7878 
7879 	--Get the wieight/vol/container/pallets of the delivery
7880 
7881 /*
7882 
7883 	 Add_Delivery_Details(
7884 	 	p_delivery_id	=>p_wsh_new_delivery_id,
7885 	 	x_weight_uom	=>l_weight_uom,
7886 	 	x_volume_uom	=>l_volume_uom,
7887 	 	x_weight	=>l_weight,
7888 	 	x_volume	=>l_volume,
7889 	 	x_containers	=>l_containers,
7890 	 	x_pallets	=>l_pallets,
7891 	 	x_return_status	=>l_return_status);
7892 
7893 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
7894 	THEN
7895 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
7896 	       THEN
7897 	          raise FTE_FREIGHT_PRICING_UTIL.g_tl_add_dlv_dtl_fail;
7898 	       END IF;
7899 	END IF;
7900 
7901 
7902 */
7903 	--Get Facility Info
7904 	g_tl_trip_stop_rows(1):=l_pickup_stop_rec;
7905 
7906 	g_tl_trip_stop_rows(2):=l_dropoff_stop_rec;
7907 
7908 	Get_Facility_Info(
7909 		p_stop_index	=>	1,
7910 		x_return_status	=>l_return_status);
7911 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
7912 	THEN
7913 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
7914 	       THEN
7915 	          raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_facility_info_fail;
7916 	       END IF;
7917 	END IF;
7918 
7919 	l_pickup_stop_rec:=g_tl_trip_stop_rows(1);
7920 	l_dropoff_stop_rec:=g_tl_trip_stop_rows(2);
7921 
7922 	--Get lane/carrier info
7923 
7924 	l_carrier_index:=1;
7925 
7926 	i:=p_lane_rows.FIRST;
7927 	WHILE ( (i IS NOT NULL) AND (p_lane_rows.EXISTS(i)) )
7928 	LOOP
7929 		IF (p_lane_rows(i) IS NOT NULL)
7930 		THEN
7931 
7932 			Get_Carrier_Pref_For_Lane(
7933 				p_lane_id	=>p_lane_rows(i),
7934 				x_carrier_service_rec	=>l_carrier_rec,
7935 				x_return_status	=>l_return_status);
7936 
7937 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
7938 			THEN
7939 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
7940 			       THEN
7941 			          raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_car_prf_for_lane_fail;
7942 			       END IF;
7943 			END IF;
7944 
7945 			TL_Get_Currency(
7946 				p_delivery_id=>p_wsh_new_delivery_id,
7947 				p_trip_id=>NULL,
7948 				p_location_id=>NULL,
7949 				p_carrier_id=>l_carrier_rec.carrier_id,
7950 				x_currency_code=>l_carrier_rec.currency,
7951 				x_return_status=>l_return_status);
7952 
7953 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
7954 			THEN
7955 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
7956 			       THEN
7957 				  raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_currency_fail;
7958 			       END IF;
7959 			END IF;
7960 
7961 
7962 
7963 			FTE_FREIGHT_PRICING_UTIL.print_msg(
7964 				FTE_FREIGHT_PRICING_UTIL.G_DBG,
7965 				'After get carrier pref for lane i:'
7966 				||i||' wuom:'||l_carrier_rec.weight_uom||
7967 				' vuom:'||l_carrier_rec.volume_uom);
7968 			--Insert into Carrier Cache
7969 
7970 			g_tl_carrier_pref_rows(l_carrier_index):=l_carrier_rec;
7971 
7972 
7973 			--Insert into Trip Cache
7974 
7975 
7976 			g_tl_trip_rows(l_carrier_index):=l_trip_rec;
7977 
7978 			g_tl_trip_rows(l_carrier_index).stop_reference:=
7979 				2*l_carrier_index;
7980 			g_tl_trip_rows(l_carrier_index).delivery_leg_reference:=
7981 				l_carrier_index;
7982 
7983 
7984 			OPEN get_lane_info_with_lane_id(p_lane_rows(i));
7985 
7986 			FETCH get_lane_info_with_lane_id INTO
7987 			g_tl_trip_rows(l_carrier_index).lane_id,
7988 			g_tl_trip_rows(l_carrier_index).service_type,
7989 			g_tl_trip_rows(l_carrier_index).mode_of_transport,
7990 			g_tl_trip_rows(l_carrier_index).price_list_id;
7991 
7992 			IF(get_lane_info_with_lane_id%NOTFOUND)
7993 			THEN
7994 				CLOSE get_lane_info_with_lane_id;
7995 
7996 				raise FTE_FREIGHT_PRICING_UTIL.g_tl_lane_info_with_id_fail;
7997 
7998 			END IF;
7999 			CLOSE get_lane_info_with_lane_id;
8000 
8001 
8002 			--Insert into Stop cache
8003 
8004 			g_tl_trip_stop_rows(2*l_carrier_index):=
8005 			l_pickup_stop_rec;
8006 			g_tl_trip_stop_rows((2*l_carrier_index)+1):=
8007 			l_dropoff_stop_rec;
8008 
8009 			--Insert into dleg cache
8010 			g_tl_delivery_leg_rows(l_carrier_index):=l_dleg_rec;
8011 
8012 
8013 
8014 
8015 
8016 
8017 			Update_Dummy_Records(
8018 				p_weight_uom	=>l_weight_uom ,
8019 				p_volume_uom	=>l_volume_uom,
8020 				p_weight	=>l_weight,
8021 				p_volume	=>l_volume,
8022 				p_containers	=>l_containers,
8023 				p_pallets	=>l_pallets,
8024 				x_carrier_rec	=>g_tl_carrier_pref_rows(l_carrier_index),
8025 				x_trip_rec	=>g_tl_trip_rows(l_carrier_index),
8026 				x_pickup_stop	=>g_tl_trip_stop_rows(2*l_carrier_index),
8027 				x_dropoff_stop	=>g_tl_trip_stop_rows((2*l_carrier_index)+1),
8028 				x_dleg	=>g_tl_delivery_leg_rows(l_carrier_index),
8029 				x_return_status	=>l_return_status
8030 				);
8031 
8032 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
8033 			THEN
8034 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
8035 			       THEN
8036 			          raise FTE_FREIGHT_PRICING_UTIL.g_tl_updt_dummy_recs_fail;
8037 			       END IF;
8038 			END IF;
8039 
8040 			l_carrier_index:=l_carrier_index+1;
8041 
8042 		END IF;
8043 		i:=p_lane_rows.NEXT(i);
8044 
8045 	END LOOP;
8046 
8047 	i:=p_schedule_rows.FIRST;
8048 	WHILE ( (i IS NOT NULL) AND (p_schedule_rows.EXISTS(i)) )
8049 	LOOP
8050 
8051 		IF (p_schedule_rows(i) IS NOT NULL)
8052 		THEN
8053 
8054 			Get_Carrier_Pref_For_Schedule(
8055 				p_schedule_id=>	p_schedule_rows(i),
8056 				x_carrier_service_rec=>	l_carrier_rec,
8057 				x_return_status	=>l_return_status);
8058 
8059 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
8060 			THEN
8061 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
8062 			       THEN
8063 			          raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_car_prf_for_schd_fail;
8064 			       END IF;
8065 			END IF;
8066 
8067 			TL_Get_Currency(
8068 				p_delivery_id=>p_wsh_new_delivery_id,
8069 				p_trip_id=>NULL,
8070 				p_location_id=>NULL,
8071 				p_carrier_id=>l_carrier_rec.carrier_id,
8072 				x_currency_code=>l_carrier_rec.currency,
8073 				x_return_status=>l_return_status);
8074 
8075 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
8076 			THEN
8077 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
8078 			       THEN
8079 				  raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_currency_fail;
8080 			       END IF;
8081 			END IF;
8082 
8083 			--Insert into Carrier Cache
8084 
8085 			g_tl_carrier_pref_rows(l_carrier_index):=l_carrier_rec;
8086 
8087 			--Insert into Trip Cache
8088 
8089 			g_tl_trip_rows(l_carrier_index):=l_trip_rec;
8090 
8091 
8092 			OPEN get_lane_info_with_schedule_id(p_schedule_rows(i));
8093 			FETCH get_lane_info_with_schedule_id INTO
8094 			g_tl_trip_rows(l_carrier_index).lane_id,
8095 			g_tl_trip_rows(l_carrier_index).service_type,
8096 			g_tl_trip_rows(l_carrier_index).mode_of_transport,
8097 			g_tl_trip_rows(l_carrier_index).price_list_id;
8098 
8099 			IF(get_lane_info_with_schedule_id%NOTFOUND)
8100 			THEN
8101 				--Throw an exception?
8102 				CLOSE get_lane_info_with_schedule_id;
8103 				raise FTE_FREIGHT_PRICING_UTIL.g_tl_lane_info_with_sched_fail;
8104 
8105 			END IF;
8106 
8107 			CLOSE get_lane_info_with_schedule_id;
8108 
8109 			--Store schedule id
8110 			g_tl_trip_rows(l_carrier_index).schedule_id:=
8111 				p_schedule_rows(i);
8112 
8113 			--Insert into Stop cache
8114 
8115 			g_tl_trip_stop_rows(2*l_carrier_index):=
8116 				l_pickup_stop_rec;
8117 			g_tl_trip_stop_rows((2*l_carrier_index)+1):=
8118 				l_dropoff_stop_rec;
8119 
8120 			--Insert into dleg cache
8121 			g_tl_delivery_leg_rows(l_carrier_index):=l_dleg_rec;
8122 
8123 			Update_Dummy_Records(
8124 				p_weight_uom=>	l_weight_uom ,
8125 				p_volume_uom=>	l_volume_uom,
8126 				p_weight=>	l_weight,
8127 				p_volume=>	l_volume,
8128 				p_containers=>	l_containers,
8129 				p_pallets=>	l_pallets,
8130 				x_carrier_rec=> g_tl_carrier_pref_rows(l_carrier_index),
8131 				x_trip_rec=>	g_tl_trip_rows(l_carrier_index),
8132 				x_pickup_stop=>	g_tl_trip_stop_rows(2*l_carrier_index),
8133 				x_dropoff_stop=>g_tl_trip_stop_rows((2*l_carrier_index)+1),
8134 				x_dleg=>g_tl_delivery_leg_rows(l_carrier_index),
8135 				x_return_status	=>l_return_status);
8136 
8137 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
8138 			THEN
8139 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
8140 			       THEN
8141 			          raise FTE_FREIGHT_PRICING_UTIL.g_tl_updt_dummy_recs_fail;
8142 			       END IF;
8143 			END IF;
8144 
8145 			l_carrier_index:=l_carrier_index+1;
8146 		END IF;
8147 		i:=p_lane_rows.NEXT(i);
8148 	END LOOP;
8149 
8150         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Build_Cache_For_Delivery');
8151 
8152 	IF (l_warning_count > 0)
8153 	THEN
8154 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
8155 	END IF;
8156 EXCEPTION
8157 
8158    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_currency_fail THEN
8159         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8160         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Build_Cache_For_Delivery',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_currency_fail');
8161         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Build_Cache_For_Delivery');
8162 
8163 
8164    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_trip_id_from_dleg_fail THEN
8165         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8166         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Build_Cache_For_Delivery',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_trip_id_from_dleg_fail');
8167         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Build_Cache_For_Delivery');
8168 
8169    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_build_cache_trp_fail THEN
8170         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8171         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Build_Cache_For_Delivery',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_build_cache_trp_fail');
8172         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Build_Cache_For_Delivery');
8173 
8174    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_dates_loc_from_dlv_fail THEN
8175         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8176         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Build_Cache_For_Delivery',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_dates_loc_from_dlv_fail');
8177         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Build_Cache_For_Delivery');
8178 
8179    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_init_dummy_dleg_fail THEN
8180         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8181         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Build_Cache_For_Delivery',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_init_dummy_dleg_fail');
8182         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Build_Cache_For_Delivery');
8183 
8184    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_init_dummy_trip_fail THEN
8185         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8186         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Build_Cache_For_Delivery',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_init_dummy_trip_fail');
8187         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Build_Cache_For_Delivery');
8188 
8189    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_init_dummy_pu_stop_fail THEN
8190         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8191         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Build_Cache_For_Delivery',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_init_dummy_pu_stop_fail');
8192         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Build_Cache_For_Delivery');
8193 
8194    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_init_dummy_do_stop_fail THEN
8195         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8196         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Build_Cache_For_Delivery',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_init_dummy_do_stop_fail');
8197         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Build_Cache_For_Delivery');
8198 
8199    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_add_dlv_dtl_fail THEN
8200         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8201         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Build_Cache_For_Delivery',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_add_dlv_dtl_fail');
8202         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Build_Cache_For_Delivery');
8203 
8204    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_facility_info_fail THEN
8205         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8206         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Build_Cache_For_Delivery',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_facility_info_fail');
8207         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Build_Cache_For_Delivery');
8208 
8209    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_car_prf_for_lane_fail THEN
8210         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8211         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Build_Cache_For_Delivery',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_car_prf_for_lane_fail');
8212         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Build_Cache_For_Delivery');
8213 
8214    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_lane_info_with_id_fail THEN
8215         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8216         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Build_Cache_For_Delivery',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_lane_info_with_id_fail');
8217         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Build_Cache_For_Delivery');
8218 
8219    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_updt_dummy_recs_fail THEN
8220         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8221         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Build_Cache_For_Delivery',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_updt_dummy_recs_fail');
8222         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Build_Cache_For_Delivery');
8223 
8224    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_car_prf_for_schd_fail THEN
8225         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8226         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Build_Cache_For_Delivery',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_car_prf_for_schd_fail');
8227         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Build_Cache_For_Delivery');
8228 
8229    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_lane_info_with_sched_fail THEN
8230         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8231         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Build_Cache_For_Delivery',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_lane_info_with_sched_fail');
8232         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Build_Cache_For_Delivery');
8233 
8234 
8235    WHEN others THEN
8236         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
8237         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Build_Cache_For_Delivery',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
8238         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
8239         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Build_Cache_For_Delivery');
8240 
8241 
8242 END TL_Build_Cache_For_Delivery;
8243 
8244 --For trip search services
8245 --assumes that the lane already assigned for the trip
8246 
8247 PROCEDURE TL_Build_Cache_For_Trip(
8248 	p_wsh_trip_id IN	NUMBER,
8249  	x_return_status OUT NOCOPY	VARCHAR2) IS
8250 
8251 --Gets the trip info
8252 --the pricelist id will be populated after the trip departure,arrival dates are queried
8253 	CURSOR get_trip_info(c_trip_id IN NUMBER ) RETURN
8254 	TL_trip_data_input_rec_type IS
8255 	SELECT	t.trip_id,
8256 		t.lane_id,
8257 		null,
8258 		t.service_level,
8259 		t.carrier_id,
8260 		t.mode_of_transport,
8261 		t.vehicle_item_id,
8262 		null,
8263 		0,
8264 		0,
8265 		0,
8266 		0,
8267 		0,
8268 		0,
8269 		null, -- t.total_trip_distance,
8270 		null, -- t.total_direct_distance,
8271 		null,
8272 		0,
8273 		0,
8274 		'N',
8275 		null,
8276 		null,
8277 		null,
8278 		null,
8279 		null,
8280 		null
8281 	FROM  	wsh_trips t
8282 	WHERE 	 t.trip_id=c_trip_id;
8283 
8284 	l_trip_index NUMBER;
8285 	l_carrier_index NUMBER;
8286 	l_stop_index NUMBER;
8287 	l_dleg_index NUMBER;
8288 	l_child_dleg_index NUMBER;
8289 	l_trip_rec  TL_trip_data_input_rec_type;
8290 
8291 	l_return_status VARCHAR2(1);
8292 
8293 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
8294 
8295 	l_warning_count 	NUMBER:=0;
8296 BEGIN
8297 
8298 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
8299 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'TL_Build_Cache_For_Trip','start');
8300 
8301 
8302 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
8303 
8304 	Initialize_Cache_Indices(
8305 		x_trip_index=>	l_trip_index,
8306 		x_stop_index=>	l_stop_index,
8307 		x_dleg_index=>	l_dleg_index,
8308 		x_carrier_index=>l_carrier_index,
8309 		x_child_dleg_index=>l_child_dleg_index,
8310 		x_return_status=> l_return_status);
8311 
8312 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
8313 	THEN
8314 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
8315 	       THEN
8316 	          raise FTE_FREIGHT_PRICING_UTIL.g_tl_init_cache_indices_fail;
8317 	       END IF;
8318 	END IF;
8319 
8320 
8321 
8322 	OPEN get_trip_info(p_wsh_trip_id);
8323 	FETCH get_trip_info INTO l_trip_rec;
8324 	IF (get_trip_info%NOTFOUND)
8325 	THEN
8326 
8327 		CLOSE get_trip_info;
8328 
8329 		--Show only generic message
8330 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
8331 		--	p_api=>'TL_Build_Cache_For_Trip',
8332 		--	p_exc=>'g_tl_get_trip_info_fail',
8333 		--	p_trip_id=>p_wsh_trip_id);
8334 
8335 
8336 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_trip_info_fail;
8337 
8338 	END IF;
8339 	CLOSE get_trip_info;
8340 
8341 
8342 	Get_Vehicle_Type(p_trip_id => l_trip_rec.trip_id,
8343 			 p_vehicle_item_id =>l_trip_rec.vehicle_type,
8344 			 x_vehicle_type => l_trip_rec.vehicle_type,
8345 			 x_return_status => l_return_status);
8346 
8347 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
8348 	THEN
8349 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
8350 	       THEN
8351 
8352 		  raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_vehicle_type_fail;
8353 	       END IF;
8354 	END IF;
8355 
8356 
8357 
8358 	--We assume that the lane id is present for this trip
8359 
8360 	Cache_Trip(
8361 		x_trip_rec	=>	l_trip_rec,
8362 		x_trip_index	=>	l_trip_index,
8363 		x_carrier_index	=>	l_carrier_index,
8364 		x_stop_index	=>	l_stop_index,
8365 		x_dleg_index	=>	l_dleg_index,
8366 		x_child_dleg_index=>l_child_dleg_index,
8367 		x_return_status	=>	l_return_status);
8368 
8369 
8370 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
8371 	THEN
8372 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
8373 	       THEN
8374 	          raise FTE_FREIGHT_PRICING_UTIL.g_tl_cache_trip_fail;
8375 	       END IF;
8376 	END IF;
8377 
8378         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Build_Cache_For_Trip');
8379 
8380 	IF (l_warning_count > 0)
8381 	THEN
8382 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
8383 	END IF;
8384 EXCEPTION
8385 
8386 
8387 
8388    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_vehicle_type_fail THEN
8389 	   x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8390 	   FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Build_Cache_For_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_vehicle_type_fail');
8391 	   FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Build_Cache_For_Trip');
8392 
8393 
8394    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_init_cache_indices_fail THEN
8395 	   x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8396 	   FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Build_Cache_For_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_init_cache_indices_fail');
8397 	   FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Build_Cache_For_Trip');
8398 
8399    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_trip_info_fail THEN
8400         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8401         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Build_Cache_For_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_trip_info_fail');
8402         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Build_Cache_For_Trip');
8403 
8404    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_cache_trip_fail THEN
8405         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8406         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Build_Cache_For_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_cache_trip_fail');
8407         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Build_Cache_For_Trip');
8408 
8409 
8410    WHEN others THEN
8411         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
8412         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Build_Cache_For_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
8413         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
8414         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Build_Cache_For_Trip');
8415 
8416 
8417 END TL_BUILD_CACHE_FOR_TRIP;
8418 
8419 
8420 
8421 
8422 PROCEDURE TL_Build_Cache_For_Move(
8423 	p_fte_move_id 	IN 	NUMBER,
8424         x_return_status OUT NOCOPY 	VARCHAR2) IS
8425 
8426 
8427 --GEts all the trips for the move ordered by seq number
8428 --the priclist ids will be populated after the trip departure,arrival dates are queried
8429 
8430 	CURSOR get_move_trip_info(c_move_id IN NUMBER ) RETURN
8431 	TL_trip_data_input_rec_type IS
8432 	SELECT	t.trip_id,
8433 		t.lane_id,
8434 		null,
8435 		t.service_level,
8436 		t.carrier_id,
8437 		t.mode_of_transport,
8438 		t.vehicle_item_id,
8439 		null,
8440 		0,
8441 		0,
8442 		0,
8443 		0,
8444 		0,
8445 		0,
8446 		null, -- t.total_trip_distance,
8447 		null, -- t.total_direct_distance,
8448 		null,
8449 		0,
8450 		0,
8451 		'Y',
8452 		null,
8453 		null,
8454 		null,
8455 		null,
8456 		null,
8457 		null
8458 	FROM  	wsh_trips t ,
8459 		fte_trip_moves m
8460 	WHERE 	m.move_id=c_move_id and
8461 		t.trip_id=m.trip_id
8462 	ORDER BY m.sequence_number;
8463 
8464 
8465 
8466 	l_trip_index NUMBER;
8467 	l_carrier_index NUMBER;
8468 	l_stop_index NUMBER;
8469 	l_dleg_index	NUMBER;
8470 	l_child_dleg_index NUMBER;
8471 	l_trip_rec  TL_trip_data_input_rec_type;
8472 
8473 
8474 l_return_status VARCHAR2(1);
8475 
8476 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
8477 
8478 	l_warning_count 	NUMBER:=0;
8479 BEGIN
8480 
8481 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
8482 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'TL_Build_Cache_For_Move','start');
8483 
8484 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
8485 
8486 	Initialize_Cache_Indices(
8487 		x_trip_index=>	l_trip_index,
8488 		x_stop_index=>	l_stop_index,
8489 		x_dleg_index=>	l_dleg_index,
8490 		x_carrier_index=>l_carrier_index,
8491 		x_child_dleg_index=>l_child_dleg_index,
8492 		x_return_status=> l_return_status);
8493 
8494 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
8495 	THEN
8496 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
8497 	       THEN
8498 	          raise FTE_FREIGHT_PRICING_UTIL.g_tl_init_cache_indices_fail;
8499 	       END IF;
8500 	END IF;
8501 
8502 	OPEN get_move_trip_info(p_fte_move_id);
8503 	FETCH get_move_trip_info INTO l_trip_rec;
8504 	WHILE (get_move_trip_info%FOUND)
8505 	LOOP
8506 
8507 		Get_Vehicle_Type(p_trip_id => l_trip_rec.trip_id,
8508 			 	 p_vehicle_item_id =>l_trip_rec.vehicle_type,
8509 				 x_vehicle_type => l_trip_rec.vehicle_type,
8510 				 x_return_status => l_return_status);
8511 
8512 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
8513 		THEN
8514 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
8515 		       THEN
8516 		       	  CLOSE get_move_trip_info;
8517 		          raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_vehicle_type_fail;
8518 		       END IF;
8519 		END IF;
8520 
8521 		--Cache each trip of the move
8522 
8523 		Cache_Trip(
8524 			x_trip_rec	=>	l_trip_rec,
8525 			x_trip_index	=>	l_trip_index,
8526 			x_carrier_index	=>	l_carrier_index,
8527 			x_stop_index	=>	l_stop_index ,
8528 			x_dleg_index	=>	l_dleg_index ,
8529 			x_child_dleg_index=>l_child_dleg_index,
8530 			x_return_status	=>	l_return_status);
8531 
8532 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
8533 		THEN
8534 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
8535 		       THEN
8536 		       	  CLOSE get_move_trip_info;
8537 		          raise FTE_FREIGHT_PRICING_UTIL.g_tl_cache_trip_fail;
8538 		       END IF;
8539 		END IF;
8540 
8541 		Validate_Trip_Cache(
8542 			p_trip_index=> (l_trip_index -1),
8543 			x_return_status	=>	l_return_status);
8544 
8545 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
8546 		THEN
8547 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
8548 		       THEN
8549 		       	  CLOSE get_move_trip_info;
8550 		          raise FTE_FREIGHT_PRICING_UTIL.g_tl_validate_trp_cache_fail;
8551 		       END IF;
8552 		END IF;
8553 
8554 
8555 		FETCH get_move_trip_info INTO l_trip_rec;
8556 
8557 	END LOOP;
8558 	CLOSE get_move_trip_info;
8559 
8560 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
8561 
8562         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Build_Cache_For_Move');
8563 
8564 	IF (l_warning_count > 0)
8565 	THEN
8566 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
8567 	END IF;
8568 EXCEPTION
8569 
8570    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_vehicle_type_fail THEN
8571 	   x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8572 	   FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Build_Cache_For_Move',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_vehicle_type_fail');
8573 	   FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Build_Cache_For_Move');
8574 
8575 
8576 
8577    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_validate_trp_cache_fail THEN
8578 	   x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8579 	   FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Build_Cache_For_Move',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_validate_trp_cache_fail');
8580 	   FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Build_Cache_For_Move');
8581 
8582 
8583    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_init_cache_indices_fail THEN
8584 	   x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8585 	   FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Build_Cache_For_Move',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_init_cache_indices_fail');
8586 	   FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Build_Cache_For_Move');
8587 
8588 
8589    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_cache_trip_fail THEN
8590         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8591         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Build_Cache_For_Move',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_cache_trip_fail');
8592         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Build_Cache_For_Move');
8593 
8594 
8595    WHEN others THEN
8596         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
8597         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Build_Cache_For_Move',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
8598         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
8599         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Build_Cache_For_Move');
8600 
8601 
8602 END  TL_Build_Cache_For_Move;
8603 
8604 --For trip search services , all the data is queried for the first lane only
8605 --It is then copied , UOM/Currency converted for the other lanes
8606 
8607 PROCEDURE Cache_First_Trip_Lane(
8608 	p_trip_id IN NUMBER,
8609 	p_lane_id IN NUMBER,
8610 	p_schedule_id IN NUMBER,
8611 	p_vehicle IN NUMBER,
8612 	x_trip_index IN OUT NOCOPY NUMBER,
8613 	x_carrier_index IN OUT NOCOPY NUMBER,
8614 	x_stop_index IN OUT NOCOPY NUMBER,
8615 	x_dleg_index IN OUT NOCOPY NUMBER,
8616 	x_child_dleg_index IN OUT NOCOPY NUMBER,
8617 	x_return_status	OUT	NOCOPY	VARCHAR2) IS
8618 
8619 	CURSOR get_trip_info(c_trip_id IN NUMBER ) RETURN
8620 	TL_trip_data_input_rec_type IS
8621 	SELECT	t.trip_id,
8622 		t.lane_id,
8623 		null,
8624 		t.service_level,
8625 		t.carrier_id,
8626 		t.mode_of_transport,
8627 		null, --t.vehicle_item_id,
8628 		null,
8629 		0,
8630 		0,
8631 		0,
8632 		0,
8633 		0,
8634 		0,
8635 		null, -- t.total_trip_distance,
8636 		null, -- t.total_direct_distance,
8637 		null,
8638 		0,
8639 		0,
8640 		null,
8641 		null,
8642 		null,
8643 		null,
8644 		null,
8645 		null,
8646 		null
8647 	FROM  wsh_trips t
8648 	WHERE t.trip_id=c_trip_id;
8649 
8650 	CURSOR get_lane_info(c_lane_id IN NUMBER) IS
8651 	SELECT	null,
8652 		l.carrier_id,
8653 		l.service_type_code,
8654 		l.mode_of_transportation_code
8655 	FROM fte_lanes l
8656 	WHERE l.lane_id=c_lane_id;
8657 
8658 	CURSOR get_schedule_info(c_schedule_id IN NUMBER) IS
8659 	SELECT  l.lane_id,
8660 	  	null,
8661 	  	l.carrier_id,
8662 	  	l.service_type_code,
8663 	  	l.mode_of_transportation_code
8664 	FROM 	fte_lanes l,
8665 		fte_schedules s
8666 	WHERE 	s.schedules_id=c_schedule_id and
8667 		s.lane_id=l.lane_id;
8668 
8669 
8670 
8671 	l_trip_rec TL_trip_data_input_rec_type;
8672 	l_return_status VARCHAR2(1);
8673 
8674 
8675 	l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
8676 
8677 	l_warning_count 	NUMBER:=0;
8678 BEGIN
8679 
8680 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
8681 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Cache_First_Trip_Lane','start');
8682 
8683 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
8684 
8685 	OPEN get_trip_info(p_trip_id);
8686 	FETCH get_trip_info INTO l_trip_rec;
8687 	IF (get_trip_info%NOTFOUND)
8688 	THEN
8689 		CLOSE get_trip_info;
8690 
8691 		--Show only generic message
8692 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
8693 		--	p_api=>'Cache_First_Trip_Lane',
8694 		--	p_exc=>'g_tl_get_trip_info_fail',
8695 		--	p_trip_id=>p_trip_id);
8696 
8697 
8698 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_trip_info_fail;
8699 
8700 	END IF;
8701 	CLOSE get_trip_info;
8702 
8703 	--Used the passed in vehicel type
8704 
8705 	l_trip_rec.vehicle_type:=p_vehicle;
8706 
8707 	IF (p_schedule_id IS NOT NULL)
8708 	THEN
8709 		l_trip_rec.schedule_id:=p_schedule_id;
8710 		OPEN get_schedule_info(p_schedule_id);
8711 		FETCH get_schedule_info INTO
8712 		l_trip_rec.lane_id,l_trip_rec.price_list_id,
8713 		l_trip_rec.carrier_id,l_trip_rec.service_type,
8714 		l_trip_rec.mode_of_transport;
8715 
8716 		IF (get_schedule_info%NOTFOUND)
8717 		THEN
8718 			CLOSE get_schedule_info;
8719 
8720 			--Show only generic message
8721 			--FTE_FREIGHT_PRICING_UTIL.setmsg (
8722 			--	p_api=>'Cache_First_Trip_Lane',
8723 			--	p_exc=>'g_tl_get_schedule_info_fail',
8724 			--	p_schedule_id=>p_schedule_id);
8725 
8726 
8727 			raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_schedule_info_fail;
8728 
8729 
8730 		END IF;
8731 		CLOSE get_schedule_info;
8732 
8733 
8734 		Cache_Trip(
8735 			x_trip_rec	=>	l_trip_rec,
8736 			x_trip_index	=>	x_trip_index,
8737 			x_carrier_index	=>	x_carrier_index,
8738 			x_stop_index	=>	x_stop_index ,
8739 			x_dleg_index	=>	x_dleg_index ,
8740 			x_child_dleg_index=>	x_child_dleg_index,
8741 			x_return_status	=>	l_return_status);
8742 
8743 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
8744 		THEN
8745 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
8746 		       THEN
8747 		          raise FTE_FREIGHT_PRICING_UTIL.g_tl_cache_trip_fail;
8748 		       END IF;
8749 		END IF;
8750 
8751 	ELSIF (p_lane_id IS NOT NULL)
8752 	THEN
8753 		l_trip_rec.lane_id:=p_lane_id;
8754 		OPEN get_lane_info(p_lane_id);
8755 		FETCH get_lane_info INTO
8756 		l_trip_rec.price_list_id,l_trip_rec.carrier_id,
8757 		l_trip_rec.service_type,l_trip_rec.mode_of_transport;
8758 
8759 		IF (get_lane_info%NOTFOUND)
8760 		THEN
8761 			CLOSE get_lane_info;
8762 
8763 			--Show only generic message
8764 			--FTE_FREIGHT_PRICING_UTIL.setmsg (
8765 			--	p_api=>'Cache_First_Trip_Lane',
8766 			--	p_exc=>'g_tl_get_lane_info_fail',
8767 			--	p_lane_id=>p_lane_id);
8768 
8769 			raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_lane_info_fail;
8770 
8771 		END IF;
8772 		CLOSE get_lane_info;
8773 
8774 		Cache_Trip(
8775 			x_trip_rec	=>	l_trip_rec,
8776 			x_trip_index	=>	x_trip_index,
8777 			x_carrier_index	=>	x_carrier_index,
8778 			x_stop_index	=>	x_stop_index,
8779 			x_dleg_index	=>	x_dleg_index,
8780 			x_child_dleg_index=>x_child_dleg_index,
8781 			x_return_status	=>	l_return_status);
8782 
8783 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
8784 		THEN
8785 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
8786 		       THEN
8787 		          raise FTE_FREIGHT_PRICING_UTIL.g_tl_cache_trip_fail;
8788 		       END IF;
8789 		END IF;
8790 
8791 	END IF;
8792 
8793         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_First_Trip_Lane');
8794 
8795 	IF (l_warning_count > 0)
8796 	THEN
8797 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
8798 	END IF;
8799 EXCEPTION
8800 
8801    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_trip_info_fail THEN
8802         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8803         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_First_Trip_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_trip_info_fail');
8804         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_First_Trip_Lane');
8805 
8806    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_schedule_info_fail THEN
8807         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8808         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_First_Trip_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_schedule_info_fail');
8809         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_First_Trip_Lane');
8810 
8811    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_cache_trip_fail THEN
8812         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8813         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_First_Trip_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_cache_trip_fail');
8814         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_First_Trip_Lane');
8815 
8816    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_lane_info_fail THEN
8817         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8818         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_First_Trip_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_lane_info_fail');
8819         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_First_Trip_Lane');
8820 
8821 
8822    WHEN others THEN
8823         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
8824         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_First_Trip_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
8825         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
8826         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_First_Trip_Lane');
8827 
8828 
8829 END  Cache_First_Trip_Lane;
8830 
8831 
8832 --Each lane/scheduel in the trip search services may have a diff carrier
8833 --with diff UOMs, the quantities are converted here
8834 
8835 PROCEDURE Convert_UOM_For_Trip(
8836 	p_carrier_rec_from IN TL_CARRIER_PREF_REC_TYPE,
8837 	p_carrier_rec_to IN TL_CARRIER_PREF_REC_TYPE ,
8838 	x_trip_rec IN OUT NOCOPY TL_trip_data_input_rec_type,
8839 	x_stop_quantity_tab IN OUT NOCOPY TL_stop_quantity_tab_type,
8840 	x_return_status	OUT	NOCOPY	VARCHAR2) IS
8841 
8842 	l_quantity NUMBER;
8843 
8844 l_stop_quantity_rec TL_stop_quantity_rec_type;
8845 i NUMBER;
8846 l_return_status VARCHAR2(1);
8847 
8848 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
8849 
8850 	l_warning_count 	NUMBER:=0;
8851 BEGIN
8852 
8853 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
8854 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Convert_UOM_For_Trip','start');
8855 
8856 
8857 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
8858 
8859 	l_quantity:=FTE_FREIGHT_PRICING_UTIL.convert_uom(
8860 	p_carrier_rec_from.distance_uom,
8861 	p_carrier_rec_to.distance_uom,
8862 	x_trip_rec.loaded_distance,
8863 	0);
8864 
8865 	IF (l_quantity IS NULL)
8866 	THEN
8867 
8868 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_dist_uom_conv_fail;
8869 
8870 	END IF;
8871 	x_trip_rec.loaded_distance:=l_quantity;
8872 
8873 
8874 	l_quantity:=FTE_FREIGHT_PRICING_UTIL.convert_uom(
8875 	p_carrier_rec_from.distance_uom,
8876 	p_carrier_rec_to.distance_uom,
8877 	x_trip_rec.unloaded_distance,
8878 	0);
8879 
8880 
8881 	IF (l_quantity IS NULL)
8882 	THEN
8883 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_dist_uom_conv_fail;
8884 
8885 	END IF;
8886 	x_trip_rec.unloaded_distance:=l_quantity;
8887 
8888 	l_quantity:=FTE_FREIGHT_PRICING_UTIL.convert_uom(
8889 	p_carrier_rec_from.distance_uom,
8890 	p_carrier_rec_to.distance_uom,
8891 	x_trip_rec.total_trip_distance,
8892 	0);
8893 
8894 	IF (l_quantity IS NULL)
8895 	THEN
8896 
8897 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_dist_uom_conv_fail;
8898 
8899 	END IF;
8900 	x_trip_rec.total_trip_distance:=l_quantity;
8901 
8902 
8903 	l_quantity:=FTE_FREIGHT_PRICING_UTIL.convert_uom(
8904 	p_carrier_rec_from.distance_uom,
8905 	p_carrier_rec_to.distance_uom,
8906 	x_trip_rec.total_direct_distance,
8907 	0);
8908 
8909 	IF (l_quantity IS NULL)
8910 	THEN
8911 
8912 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_dist_uom_conv_fail;
8913 
8914 	END IF;
8915 	x_trip_rec.total_direct_distance:=l_quantity;
8916 
8917 
8918 
8919 	x_trip_rec.total_weight:=0;
8920 	x_trip_rec.total_volume:=0;
8921 	i:=x_stop_quantity_tab.FIRST;
8922 	WHILE(i IS NOT NULL)
8923 	LOOP
8924 
8925 		x_trip_rec.total_weight:=x_trip_rec.total_weight+
8926 					x_stop_quantity_tab(i).pickup_weight;
8927 
8928 		x_trip_rec.total_volume:=x_trip_rec.total_volume+
8929 					x_stop_quantity_tab(i).pickup_volume;
8930 
8931 		i:=x_stop_quantity_tab.NEXT(i);
8932 	END LOOP;
8933 
8934 
8935 
8936 
8937         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Convert_UOM_For_Trip');
8938 
8939 	IF (l_warning_count > 0)
8940 	THEN
8941 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
8942 	END IF;
8943 EXCEPTION
8944    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_dist_uom_conv_fail THEN
8945         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8946         FTE_FREIGHT_PRICING_UTIL.set_exception('Convert_UOM_For_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_dist_uom_conv_fail');
8947         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Convert_UOM_For_Trip');
8948 
8949    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_weight_uom_conv_fail THEN
8950         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8951         FTE_FREIGHT_PRICING_UTIL.set_exception('Convert_UOM_For_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_weight_uom_conv_fail');
8952         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Convert_UOM_For_Trip');
8953 
8954    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_vol_uom_conv_fail THEN
8955         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
8956         FTE_FREIGHT_PRICING_UTIL.set_exception('Convert_UOM_For_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_vol_uom_conv_fail');
8957         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Convert_UOM_For_Trip');
8958 
8959 
8960    WHEN others THEN
8961         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
8962         FTE_FREIGHT_PRICING_UTIL.set_exception('Convert_UOM_For_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
8963         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
8964         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Convert_UOM_For_Trip');
8965 
8966 
8967 END Convert_UOM_For_Trip;
8968 
8969 
8970 --Each lane/scheduel in the trip search services may have a diff carrier
8971 --with diff UOMs, the quantities are converted here
8972 
8973 PROCEDURE Convert_UOM_For_Stop(
8974 	p_carrier_rec_from IN TL_CARRIER_PREF_REC_TYPE,
8975 	p_carrier_rec_to IN TL_CARRIER_PREF_REC_TYPE,
8976 	x_stop_rec IN OUT NOCOPY TL_trip_stop_input_rec_type,
8977 	x_stop_quantity_tab IN OUT NOCOPY TL_stop_quantity_tab_type,
8978 	x_return_status	OUT	NOCOPY	VARCHAR2) IS
8979 
8980 	l_quantity NUMBER;
8981 
8982 l_stop_quantity_rec TL_stop_quantity_rec_type;
8983 
8984 l_return_status VARCHAR2(1);
8985 
8986 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
8987 
8988 	l_warning_count 	NUMBER:=0;
8989 BEGIN
8990 
8991 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
8992 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Convert_UOM_For_Stop','start');
8993 
8994 
8995 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
8996 
8997 	l_quantity:=FTE_FREIGHT_PRICING_UTIL.convert_uom(
8998 	p_carrier_rec_from.distance_uom,
8999 	p_carrier_rec_to.distance_uom,
9000 	x_stop_rec.distance_to_next_stop,
9001 	0);
9002 
9003 	IF (l_quantity IS NULL)
9004 	THEN
9005 
9006 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_dist_uom_conv_fail;
9007 	END IF;
9008 	x_stop_rec.distance_to_next_stop:=l_quantity;
9009 
9010 
9011 
9012 	IF(x_stop_quantity_tab.EXISTS(x_stop_rec.stop_id))
9013 	THEN
9014 		l_stop_quantity_rec:=x_stop_quantity_tab(x_stop_rec.stop_id);
9015 		x_stop_rec.dropoff_weight:=l_stop_quantity_rec.dropoff_weight;
9016 		x_stop_rec.dropoff_volume:=l_stop_quantity_rec.dropoff_volume;
9017 		x_stop_rec.pickup_weight:=l_stop_quantity_rec.pickup_weight;
9018 		x_stop_rec.pickup_volume:=l_stop_quantity_rec.pickup_volume;
9019 
9020 	ELSE
9021 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_weight_uom_conv_fail;
9022 
9023 	END IF;
9024 
9025 
9026 
9027 
9028 
9029         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Convert_UOM_For_Stop');
9030 
9031 	IF (l_warning_count > 0)
9032 	THEN
9033 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
9034 	END IF;
9035 EXCEPTION
9036 
9037    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_dist_uom_conv_fail THEN
9038         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
9039         FTE_FREIGHT_PRICING_UTIL.set_exception('Convert_UOM_For_Stop',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_dist_uom_conv_fail');
9040         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Convert_UOM_For_Stop');
9041 
9042    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_weight_uom_conv_fail THEN
9043         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
9044         FTE_FREIGHT_PRICING_UTIL.set_exception('Convert_UOM_For_Stop',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_weight_uom_conv_fail');
9045         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Convert_UOM_For_Stop');
9046 
9047    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_vol_uom_conv_fail THEN
9048         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
9049         FTE_FREIGHT_PRICING_UTIL.set_exception('Convert_UOM_For_Stop',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_vol_uom_conv_fail');
9050         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Convert_UOM_For_Stop');
9051 
9052 
9053    WHEN others THEN
9054         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
9055         FTE_FREIGHT_PRICING_UTIL.set_exception('Convert_UOM_For_Stop',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
9056         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
9057         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Convert_UOM_For_Stop');
9058 
9059 
9060 END Convert_UOM_For_Stop;
9061 
9062 
9063 --Each lane/scheduel in the trip search services may have a diff carrier
9064 --with diff UOMs, the quantities are converted here
9065 
9066 PROCEDURE Convert_UOM_For_Dleg(
9067 	p_carrier_rec_from IN TL_CARRIER_PREF_REC_TYPE,
9068 	p_carrier_rec_to IN TL_CARRIER_PREF_REC_TYPE,
9069 	x_dleg_rec IN OUT NOCOPY TL_delivery_leg_rec_type,
9070 	x_stop_quantity_tab IN OUT NOCOPY TL_stop_quantity_tab_type,
9071 	x_return_status	OUT	NOCOPY	VARCHAR2) IS
9072 
9073 	l_quantity NUMBER;
9074 	l_map_index NUMBER;
9075 	l_volume NUMBER;
9076 	l_weight NUMBER;
9077 	l_dim_weight NUMBER;
9078 	l_detail_rec FTE_FREIGHT_PRICING.shipment_line_rec_type;
9079 	l_stop_quantity_rec TL_stop_quantity_rec_type;
9080 	l_add_to_stops_flag VARCHAR2(1);
9081 
9082 l_return_status VARCHAR2(1);
9083 
9084 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
9085 
9086 	l_warning_count 	NUMBER:=0;
9087 BEGIN
9088 
9089 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
9090 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Convert_UOM_For_Dleg','start');
9091 
9092 
9093 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
9094 
9095 
9096 	l_stop_quantity_rec.pickup_weight:=0;
9097 	l_stop_quantity_rec.pickup_volume:=0;
9098 	l_stop_quantity_rec.dropoff_weight:=0;
9099 	l_stop_quantity_rec.dropoff_volume:=0;
9100 
9101 
9102 
9103 	IF (NOT x_stop_quantity_tab.EXISTS(x_dleg_rec.pickup_stop_id))
9104 	THEN
9105 
9106 		x_stop_quantity_tab(x_dleg_rec.pickup_stop_id):=l_stop_quantity_rec;
9107 		l_stop_quantity_rec.stop_id:=x_dleg_rec.pickup_stop_id;
9108 
9109 
9110 	END IF;
9111 
9112 	IF (NOT x_stop_quantity_tab.EXISTS(x_dleg_rec.dropoff_stop_id))
9113 	THEN
9114 
9115 		x_stop_quantity_tab(x_dleg_rec.dropoff_stop_id):=l_stop_quantity_rec;
9116 		l_stop_quantity_rec.stop_id:=x_dleg_rec.dropoff_stop_id;
9117 
9118 
9119 	END IF;
9120 
9121 
9122 	l_map_index:=NULL;
9123 	x_dleg_rec.volume:=0;
9124 	x_dleg_rec.weight:=0;
9125 
9126 	IF (FTE_TL_CACHE.g_tl_delivery_detail_hash.EXISTS(x_dleg_rec.delivery_id))
9127 	THEN
9128 
9129 		l_map_index:=
9130 		FTE_TL_CACHE.g_tl_delivery_detail_hash(
9131 			x_dleg_rec.delivery_id);
9132 
9133 
9134 		WHILE((l_map_index IS NOT NULL) AND (g_tl_delivery_detail_map.EXISTS(l_map_index)
9135 		)
9136 		AND(g_tl_delivery_detail_map(
9137 			l_map_index).delivery_id=
9138 			x_dleg_rec.delivery_id))
9139 		LOOP
9140 
9141 			l_detail_rec:= g_tl_shipment_line_rows(
9142 					g_tl_delivery_detail_map(l_map_index).delivery_detail_id);
9143 
9144 			l_volume:=NULL;
9145 			l_weight:=NULL;
9146 			l_add_to_stops_flag:='Y';
9147 
9148 			--If we hit an MDC child leg where the MDC does not
9149 			-- have a consol LPN, then we add to stop quantities
9150 			--This flag should not change across details of a leg
9151 
9152 			IF ((x_dleg_rec.parent_dleg_id IS NOT NULL)
9153 				AND (l_detail_rec.assignment_type IS NOT NULL)
9154 				AND (l_detail_rec.assignment_type='C')
9155 				AND (l_detail_rec.parent_delivery_detail_id IS NULL))
9156 			THEN
9157 				l_add_to_stops_flag:='Y';
9158 			--But in all other MDC cases, if we are dealing with
9159 			--a child dleg we do not add to stops
9160 			--(prevent double counting with parent dleg)
9161 			ELSIF(x_dleg_rec.parent_dleg_id IS NOT NULL)
9162 			THEN
9163 				l_add_to_stops_flag:='N';
9164 			END IF;
9165 
9166 		        FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'Add to stop flag:'||l_add_to_stops_flag
9167 				||' dtl id:'||l_detail_rec.delivery_detail_id||' dleg id:'||x_dleg_rec.delivery_leg_id);
9168 
9169 			l_volume:=FTE_FREIGHT_PRICING_UTIL.convert_uom(
9170 					l_detail_rec.volume_uom_code,
9171 					p_carrier_rec_to.volume_uom,
9172 					l_detail_rec.volume,
9173 					0);
9174 
9175 			IF(l_volume IS NULL)
9176 			THEN
9177 				raise FTE_FREIGHT_PRICING_UTIL.g_tl_vol_uom_conv_fail;
9178 
9179 			END IF;
9180 
9181 			x_dleg_rec.volume:=x_dleg_rec.volume+l_volume;
9182 
9183 
9184 			IF (l_add_to_stops_flag='Y')
9185 			THEN
9186 				x_stop_quantity_tab(x_dleg_rec.dropoff_stop_id).dropoff_volume:=
9187 					x_stop_quantity_tab(x_dleg_rec.dropoff_stop_id).dropoff_volume+l_volume;
9188 
9189 				x_stop_quantity_tab(x_dleg_rec.pickup_stop_id).pickup_volume:=
9190 					x_stop_quantity_tab(x_dleg_rec.pickup_stop_id).pickup_volume+l_volume;
9191 
9192 			END IF;
9193 
9194 
9195 			l_weight:=FTE_FREIGHT_PRICING_UTIL.convert_uom(
9196 					l_detail_rec.weight_uom_code,
9197 					p_carrier_rec_to.weight_uom,
9198 					l_detail_rec.gross_weight,
9199 					0);
9200 
9201 			IF(l_weight IS NULL)
9202 			THEN
9203 				raise FTE_FREIGHT_PRICING_UTIL.g_tl_weight_uom_conv_fail;
9204 
9205 			END IF;
9206 
9207 
9208 			Calculate_Dimensional_Weight(
9209 				p_carrier_pref_rec=>p_carrier_rec_to,
9210 				p_weight=>l_weight,
9211 				p_volume=>l_volume,
9212 				x_dim_weight=>l_dim_weight,
9213 				x_return_status=>l_return_status);
9214 
9215 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
9216 			THEN
9217 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
9218 			       THEN
9219 				  raise FTE_FREIGHT_PRICING_UTIL.g_tl_calc_dim_weight_fail;
9220 			       END IF;
9221 			END IF;
9222 
9223 
9224 			x_dleg_rec.weight:=x_dleg_rec.weight+l_dim_weight;
9225 
9226 			IF (l_add_to_stops_flag='Y')
9227 			THEN
9228 
9229 				x_stop_quantity_tab(x_dleg_rec.dropoff_stop_id).dropoff_weight:=
9230 					x_stop_quantity_tab(x_dleg_rec.dropoff_stop_id).dropoff_weight+l_dim_weight;
9231 
9232 				x_stop_quantity_tab(x_dleg_rec.pickup_stop_id).pickup_weight:=
9233 					x_stop_quantity_tab(x_dleg_rec.pickup_stop_id).pickup_weight+l_dim_weight;
9234 
9235 			END IF;
9236 
9237 			l_map_index:=l_map_index+1;
9238 		END LOOP;
9239 	END IF;
9240 
9241 
9242 
9243 
9244 	l_quantity:=
9245 	FTE_FREIGHT_PRICING_UTIL.convert_uom(
9246 		p_carrier_rec_from.distance_uom,
9247 		p_carrier_rec_to.distance_uom,
9248 		x_dleg_rec.distance,
9249 		0);
9250 
9251 	IF (l_quantity IS NULL)
9252 	THEN
9253 
9254 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_dist_uom_conv_fail;
9255 
9256 	END IF;
9257 	x_dleg_rec.distance:=l_quantity;
9258 
9259         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Convert_UOM_For_Dleg');
9260 
9261 	IF (l_warning_count > 0)
9262 	THEN
9263 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
9264 	END IF;
9265 EXCEPTION
9266 
9267 
9268 
9269    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_calc_dim_weight_fail THEN
9270         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
9271         FTE_FREIGHT_PRICING_UTIL.set_exception('Convert_UOM_For_Dleg',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_calc_dim_weight_fail');
9272         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Convert_UOM_For_Dleg');
9273 
9274 
9275 
9276    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_dist_uom_conv_fail THEN
9277         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
9278         FTE_FREIGHT_PRICING_UTIL.set_exception('Convert_UOM_For_Dleg',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_dist_uom_conv_fail');
9279         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Convert_UOM_For_Dleg');
9280 
9281    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_weight_uom_conv_fail THEN
9282         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
9283         FTE_FREIGHT_PRICING_UTIL.set_exception('Convert_UOM_For_Dleg',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_weight_uom_conv_fail');
9284         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Convert_UOM_For_Dleg');
9285 
9286    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_vol_uom_conv_fail THEN
9287         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
9288         FTE_FREIGHT_PRICING_UTIL.set_exception('Convert_UOM_For_Dleg',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_vol_uom_conv_fail');
9289         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Convert_UOM_For_Dleg');
9290 
9291 
9292    WHEN others THEN
9293         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
9294         FTE_FREIGHT_PRICING_UTIL.set_exception('Convert_UOM_For_Dleg',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
9295         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
9296         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Convert_UOM_For_Dleg');
9297 
9298 
9299 END Convert_UOM_For_Dleg;
9300 
9301 
9302 
9303 PROCEDURE Cache_Next_Trip_Lane(
9304 	p_trip_id IN NUMBER,
9305 	p_lane_id IN NUMBER,
9306 	p_schedule_id IN NUMBER,
9307 	p_vehicle IN NUMBER,
9308 	x_trip_index IN OUT NOCOPY NUMBER,
9309 	x_carrier_index IN OUT NOCOPY NUMBER,
9310 	x_stop_index IN OUT NOCOPY NUMBER,
9311 	x_dleg_index IN OUT NOCOPY NUMBER,
9312 	x_child_dleg_index IN OUT NOCOPY NUMBER,
9313 	x_return_status	OUT	NOCOPY	VARCHAR2) IS
9314 
9315 
9316 	l_initial_dleg_index NUMBER;
9317 	l_initial_child_dleg_index NUMBER;
9318 	l_stop_last	NUMBER;
9319 	l_dleg_last	NUMBER;
9320 	l_child_dleg_last NUMBER;
9321 	i		NUMBER;
9322 	j		NUMBER;
9323 	k		NUMBER;
9324 	l_trip_rec  TL_trip_data_input_rec_type;
9325 	l_stop_rec TL_TRIP_STOP_INPUT_REC_TYPE;
9326 	l_carrier_rec  TL_CARRIER_PREF_REC_TYPE;
9327 	l_dleg_rec  TL_delivery_leg_rec_type;
9328 
9329 	l_currency_trip_id NUMBER;
9330 	l_currency_location_id NUMBER;
9331 
9332 	l_stop_quantity_tab TL_stop_quantity_tab_type;
9333 
9334 	l_return_status VARCHAR2(1);
9335 
9336 
9337 	l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
9338 
9339 	l_warning_count 	NUMBER:=0;
9340 BEGIN
9341 
9342 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
9343 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Cache_Next_Trip_Lane','start');
9344 
9345 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
9346 
9347 
9348 	l_initial_dleg_index:=x_dleg_index;
9349 	l_initial_child_dleg_index:=x_child_dleg_index;
9350 
9351 	l_trip_rec:=g_tl_trip_rows(x_trip_index-1);
9352 
9353 	l_trip_rec.vehicle_type:=p_vehicle;
9354 
9355 
9356 	l_trip_rec.delivery_leg_reference:=x_dleg_index;
9357 	l_trip_rec.stop_reference:=x_stop_index;
9358 
9359 	l_trip_rec.lane_id:=NULL;
9360 	l_trip_rec.schedule_id:=NULL;
9361 
9362 	l_stop_last:=g_tl_trip_rows(x_trip_index-1).stop_reference;
9363 	l_dleg_last:=g_tl_trip_rows(x_trip_index-1).delivery_leg_reference;
9364 
9365 	l_child_dleg_last:=g_tl_trip_rows(x_trip_index-1).child_dleg_reference;
9366 
9367 	IF(l_child_dleg_last IS NULL)
9368 	THEN
9369 
9370 		l_trip_rec.child_dleg_reference:=NULL;
9371 	ELSE
9372 		l_trip_rec.child_dleg_reference:=x_child_dleg_index;
9373 
9374 	END IF;
9375 
9376 	IF (p_schedule_id IS NOT NULL)
9377 	THEN
9378 
9379 		--Gather info from schedule
9380 
9381 		 Get_Carrier_Pref_For_Schedule(
9382 			p_schedule_id=>	p_schedule_id,
9383 			x_carrier_service_rec=>	l_carrier_rec,
9384 			x_return_status	=>l_return_status);
9385 
9386 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
9387 		THEN
9388 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
9389 		       THEN
9390 			  raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_car_prf_for_schd_fail;
9391 		       END IF;
9392 		END IF;
9393 
9394 		 Get_Trip_Info_From_Schedule(
9395 			p_schedule_id=>	p_schedule_id,
9396 			x_trip_rec=>	l_trip_rec,
9397 			x_return_status	=>l_return_status);
9398 
9399 		 IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
9400 		 THEN
9401 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
9402 			THEN
9403 			   raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_trp_inf_frm_schd_fail;
9404 			END IF;
9405 		END IF;
9406 
9407 
9408 
9409 
9410 		FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'Trip and priice list id'||l_trip_rec.trip_id||':'||l_trip_rec.lane_id||':'||l_trip_rec.price_list_id);
9411 
9412 	ELSIF (p_lane_id IS NOT NULL)
9413 	THEN
9414 
9415 
9416 		--Gather info from lane
9417 
9418 		Get_Carrier_Pref_For_Lane(
9419 			p_lane_id	=>p_lane_id,
9420 			x_carrier_service_rec	=>l_carrier_rec,
9421 			x_return_status	=>l_return_status);
9422 
9423 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
9424 		THEN
9425 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
9426 		       THEN
9427 			  raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_car_prf_for_lane_fail;
9428 		       END IF;
9429 		END IF;
9430 
9431 		Get_Trip_Info_From_Lane(
9432 			p_lane_id=>	p_lane_id,
9433 			x_trip_rec=>	l_trip_rec,
9434 			x_return_status	=>l_return_status);
9435 
9436 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
9437 		THEN
9438 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
9439 		       THEN
9440 			  raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_trp_inf_frm_lane_fail;
9441 		       END IF;
9442 		END IF;
9443 
9444 
9445 		FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'Trip and priice list id'||l_trip_rec.trip_id||':'||l_trip_rec.lane_id||':'||l_trip_rec.price_list_id);
9446 
9447 	ELSE
9448 
9449 		--Show only generic message
9450 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
9451 		--	p_api=>'Cache_Next_Trip_Lane',
9452 		--	p_exc=>'g_tl_no_lane_sched',
9453 		--	p_trip_id=>p_trip_id);
9454 
9455 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_no_lane_sched;
9456 
9457 		--throw exception
9458 	END IF;
9459 
9460 
9461 	--Copy over previous trip,carrier
9462 
9463 	g_tl_trip_rows(x_trip_index):=l_trip_rec;
9464 	g_tl_carrier_pref_rows(x_carrier_index):=l_carrier_rec;
9465 
9466 
9467 	--MULTICURRENCY
9468 	IF(p_trip_id = FAKE_TRIP_ID)
9469 	THEN
9470 		l_currency_trip_id:=NULL;
9471 		IF((g_tl_trip_stop_rows(l_stop_last).location_id IS NULL)
9472 		OR (g_tl_trip_stop_rows(l_stop_last).location_id = FAKE_STOP_ID_1)
9473 		OR (g_tl_trip_stop_rows(l_stop_last).location_id = FAKE_STOP_ID_2))
9474 		THEN
9475 			l_currency_location_id:=NULL;
9476 		ELSE
9477 			l_currency_location_id:=g_tl_trip_stop_rows(l_stop_last).location_id;
9478 		END IF;
9479 
9480 	ELSE
9481 		l_currency_trip_id:=p_trip_id;
9482 		l_currency_location_id:=NULL;
9483 	END IF;
9484 
9485 
9486 
9487 	TL_Get_Currency(
9488 		p_delivery_id=>NULL,
9489 		p_trip_id=>l_currency_trip_id,
9490 		p_location_id=>l_currency_location_id,
9491 		p_carrier_id=>l_carrier_rec.carrier_id,
9492 		x_currency_code=>l_carrier_rec.currency,
9493 		x_return_status=>l_return_status);
9494 
9495 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
9496 	THEN
9497 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
9498 	       THEN
9499 		  raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_currency_fail;
9500 	       END IF;
9501 	END IF;
9502 
9503 
9504 	Validate_Carrier_Info(
9505 		x_carrier_info 	=>	g_tl_carrier_pref_rows(x_carrier_index),
9506 		x_return_status	=>	l_return_status);
9507 
9508 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
9509 	THEN
9510 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
9511 		THEN
9512 
9513 			--Show only generic message
9514 			--FTE_FREIGHT_PRICING_UTIL.setmsg (
9515 			--	p_api=>'Cache_Next_Trip_Lane',
9516 			--	p_exc=>'g_tl_validate_carrier_fail',
9517 			--	p_carrier_id=>g_tl_carrier_pref_rows(x_carrier_index).carrier_id);
9518 
9519 
9520 			raise FTE_FREIGHT_PRICING_UTIL.g_tl_validate_carrier_fail;
9521 		END IF;
9522 	END IF;
9523 
9524 
9525 	l_stop_quantity_tab.DELETE;
9526 
9527 	j:=x_dleg_index-1;
9528 	FOR k IN l_dleg_last ..j
9529 	LOOP
9530 
9531 		--Copy over previous trip's dlegs
9532 
9533 		g_tl_delivery_leg_rows(x_dleg_index):=
9534 			g_tl_delivery_leg_rows(k);
9535 
9536 
9537 
9538 		--Convert uoms as it may have a diff carrier
9539 
9540 		Convert_UOM_For_Dleg(
9541 			p_carrier_rec_from=>	g_tl_carrier_pref_rows(x_carrier_index-1),
9542 			p_carrier_rec_to=>	g_tl_carrier_pref_rows(x_carrier_index),
9543 			x_dleg_rec=>	g_tl_delivery_leg_rows(x_dleg_index),
9544 			x_stop_quantity_tab=>l_stop_quantity_tab,
9545 			x_return_status	=>l_return_status);
9546 
9547 
9548 
9549 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
9550 		THEN
9551 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
9552 		       THEN
9553 			  raise FTE_FREIGHT_PRICING_UTIL.g_tl_convert_uom_for_dleg_fail;
9554 		       END IF;
9555 		END IF;
9556 
9557 		Validate_Dleg_Info(
9558 			x_dleg_info=>	g_tl_delivery_leg_rows(x_dleg_index),
9559 			x_return_status	=>	l_return_status);
9560 
9561 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
9562 		THEN
9563 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
9564 		       THEN
9565 
9566 			  --Show only generic message
9567 			  --FTE_FREIGHT_PRICING_UTIL.setmsg (
9568 			--	p_api=>'Cache_Next_Trip_Lane',
9569 			--	p_exc=>'g_tl_validate_dleg_fail',
9570 			--	p_delivery_leg_id=>g_tl_delivery_leg_rows(x_dleg_index).delivery_leg_id);
9571 
9572 
9573 			  raise FTE_FREIGHT_PRICING_UTIL.g_tl_validate_dleg_fail;
9574 		       END IF;
9575 		END IF;
9576 
9577 		x_dleg_index:=x_dleg_index+1;
9578 		l_dleg_last:=l_dleg_last+1;
9579 
9580 	END LOOP;
9581 
9582 
9583 	IF (l_child_dleg_last IS NOT NULL)
9584 	THEN
9585 
9586 
9587 		j:=x_child_dleg_index-1;
9588 		FOR k IN l_child_dleg_last ..j
9589 		LOOP
9590 
9591 			--Copy over previous trip's dlegs
9592 
9593 			g_tl_chld_delivery_leg_rows(x_child_dleg_index):=
9594 				g_tl_chld_delivery_leg_rows(k);
9595 
9596 
9597 
9598 			--Convert uoms as it may have a diff carrier
9599 
9600 			Convert_UOM_For_Dleg(
9601 				p_carrier_rec_from=>	g_tl_carrier_pref_rows(x_carrier_index-1),
9602 				p_carrier_rec_to=>	g_tl_carrier_pref_rows(x_carrier_index),
9603 				x_dleg_rec=>	g_tl_chld_delivery_leg_rows(x_child_dleg_index),
9604 				x_stop_quantity_tab=>l_stop_quantity_tab,
9605 				x_return_status	=>l_return_status);
9606 
9607 
9608 
9609 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
9610 			THEN
9611 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
9612 			       THEN
9613 				  raise FTE_FREIGHT_PRICING_UTIL.g_tl_convert_uom_for_dleg_fail;
9614 			       END IF;
9615 			END IF;
9616 
9617 			Validate_Dleg_Info(
9618 				x_dleg_info=>	g_tl_chld_delivery_leg_rows(x_child_dleg_index),
9619 				x_return_status	=>	l_return_status);
9620 
9621 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
9622 			THEN
9623 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
9624 			       THEN
9625 
9626 				--Show only generic message
9627 				--  FTE_FREIGHT_PRICING_UTIL.setmsg (
9628 				--	p_api=>'Cache_Next_Trip_Lane',
9629 				--	p_exc=>'g_tl_validate_dleg_fail',
9630 				--	p_delivery_leg_id=>g_tl_chld_delivery_leg_rows(x_child_dleg_index).delivery_leg_id);
9631 
9632 
9633 				  raise FTE_FREIGHT_PRICING_UTIL.g_tl_validate_dleg_fail;
9634 			       END IF;
9635 			END IF;
9636 
9637 			x_child_dleg_index:=x_child_dleg_index+1;
9638 			l_child_dleg_last:=l_child_dleg_last+1;
9639 
9640 		END LOOP;
9641 
9642 		--Clear all the children_weight,children_volume in the parent dlegs
9643 		--For sync to work
9644 		i:=l_initial_dleg_index;
9645 		WHILE(i<x_dleg_index)
9646 		LOOP
9647 			g_tl_delivery_leg_rows(i).children_weight:=0;
9648 			g_tl_delivery_leg_rows(i).children_volume:=0;
9649 
9650 			i:=g_tl_delivery_leg_rows.NEXT(i);
9651 		END LOOP;
9652 
9653 
9654 
9655 		Sync_Child_Dleg_Cache(
9656 			p_initial_dleg_index=>l_initial_dleg_index,
9657 			p_intial_child_dleg_index=>l_initial_child_dleg_index,
9658 			p_current_dleg_index=>x_dleg_index,
9659 			p_chld_dleg_index=>x_child_dleg_index,
9660 			x_return_status=>l_return_status);
9661 
9662 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
9663 		THEN
9664 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
9665 		       THEN
9666 
9667 			  raise FTE_FREIGHT_PRICING_UTIL.g_tl_sync_dleg_fail;
9668 		       END IF;
9669 		END IF;
9670 
9671 
9672 	END IF;
9673 
9674 
9675 
9676 	j:=x_stop_index-1;
9677 	FOR k IN l_stop_last ..j
9678 	LOOP
9679 
9680 		--Copy over previous trip's stops
9681 
9682 		g_tl_trip_stop_rows(x_stop_index):=
9683 			g_tl_trip_stop_rows(k);
9684 
9685 
9686 		--Each carrier may have a different region level
9687 		--Therefore the stop regions are recalculated
9688 
9689 		g_tl_trip_stop_rows(x_stop_index).stop_region:=NULL;
9690 
9691 		Get_Region_For_Location(
9692 			p_location_id=>	g_tl_trip_stop_rows(x_stop_index).location_id,
9693 			p_region_type=>	g_tl_carrier_pref_rows(x_carrier_index).region_level,
9694 			x_region_id=>	g_tl_trip_stop_rows(x_stop_index).stop_region,
9695 			x_return_status	=>	l_return_status);
9696 
9697 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
9698 		THEN
9699 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
9700 		       THEN
9701 			  FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_WRN,
9702 			  'Failed to get region for location:'
9703 			  ||g_tl_trip_stop_rows(x_stop_index).location_id
9704 			  ||'Carrier:'||g_tl_carrier_pref_rows(x_carrier_index).carrier_id
9705 			  ||'Region Level:'||g_tl_carrier_pref_rows(x_carrier_index).region_level);
9706 
9707 			  --raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_reg_for_loc_fail;
9708 		       END IF;
9709 		END IF;
9710 
9711 
9712 		--Convert uoms as it may have a diff carrier
9713 
9714 		Convert_UOM_For_Stop(
9715 			p_carrier_rec_from=>	g_tl_carrier_pref_rows(x_carrier_index-1),
9716 			p_carrier_rec_to=>	g_tl_carrier_pref_rows(x_carrier_index),
9717 			x_stop_rec=>	g_tl_trip_stop_rows(x_stop_index),
9718 			x_stop_quantity_tab=>l_stop_quantity_tab,
9719 			x_return_status	=>l_return_status);
9720 
9721 
9722 
9723 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
9724 		THEN
9725 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
9726 		       THEN
9727 			  raise FTE_FREIGHT_PRICING_UTIL.g_tl_convert_uom_for_stop_fail;
9728 		       END IF;
9729 		END IF;
9730 
9731 		Validate_Stop_Info(
9732 		p_carrier_pref_rec => g_tl_carrier_pref_rows(x_carrier_index),
9733 		x_stop_info=>	g_tl_trip_stop_rows(x_stop_index),
9734 		x_return_status	=>	l_return_status);
9735 
9736 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
9737 		THEN
9738 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
9739 		       THEN
9740 			--Show only generic message
9741 			--FTE_FREIGHT_PRICING_UTIL.setmsg (
9742 			--	p_api=>'Cache_Next_Trip_Lane',
9743 			--	p_exc=>'g_tl_validate_stop_fail',
9744 			--	p_stop_id=>g_tl_trip_stop_rows(x_stop_index).stop_id);
9745 
9746 
9747 			  raise FTE_FREIGHT_PRICING_UTIL.g_tl_validate_stop_fail;
9748 		       END IF;
9749 		END IF;
9750 
9751 		x_stop_index:=x_stop_index+1;
9752 		l_stop_last:=l_stop_last+1;
9753 
9754 	END LOOP;
9755 
9756 
9757 
9758 	--Make UOM conversion for diff carrier
9759 
9760 	Convert_UOM_For_Trip(
9761 		p_carrier_rec_from=>	g_tl_carrier_pref_rows(x_carrier_index-1),
9762 		p_carrier_rec_to=>	g_tl_carrier_pref_rows(x_carrier_index),
9763 		x_trip_rec=>	g_tl_trip_rows(x_trip_index),
9764 		x_stop_quantity_tab=>l_stop_quantity_tab,
9765 		x_return_status	=>l_return_status);
9766 
9767 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
9768 	THEN
9769 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
9770 	       THEN
9771 		  raise FTE_FREIGHT_PRICING_UTIL.g_tl_convert_uom_for_trip_fail;
9772 	       END IF;
9773 	END IF;
9774 
9775 	Validate_Trip_Info(
9776 		x_trip_info=>	g_tl_trip_rows(x_trip_index),
9777 		x_return_status	=>	l_return_status);
9778 
9779 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
9780 	THEN
9781 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
9782 	       THEN
9783 
9784 		--Show only generic message
9785 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
9786 		--	p_api=>'Cache_Next_Trip_Lane',
9787 		--	p_exc=>'g_tl_validate_trip_fail',
9788 		--	p_trip_id=>p_trip_id);
9789 
9790 		  raise FTE_FREIGHT_PRICING_UTIL.g_tl_validate_trip_fail;
9791 	       END IF;
9792 	END IF;
9793 
9794 
9795 
9796 
9797 	x_trip_index:=x_trip_index+1;
9798 	x_carrier_index:=x_carrier_index+1;
9799 
9800 
9801 
9802        	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Next_Trip_Lane');
9803 
9804 	IF (l_warning_count > 0)
9805 	THEN
9806 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
9807 	END IF;
9808 
9809 
9810 EXCEPTION
9811 
9812    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_sync_dleg_fail THEN
9813         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
9814         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Next_Trip_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_sync_dleg_fail');
9815         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Next_Trip_Lane');
9816 
9817 
9818    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_currency_fail THEN
9819         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
9820         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Next_Trip_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_currency_fail');
9821         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Next_Trip_Lane');
9822 
9823 
9824 
9825    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_trp_inf_frm_lane_fail THEN
9826         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
9827         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Next_Trip_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_trp_inf_frm_lane_fail');
9828         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Next_Trip_Lane');
9829 
9830 
9831    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_validate_trip_fail THEN
9832         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
9833         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Next_Trip_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_validate_trip_fail');
9834         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Next_Trip_Lane');
9835 
9836    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_validate_stop_fail THEN
9837         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
9838         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Next_Trip_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_validate_stop_fail');
9839         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Next_Trip_Lane');
9840 
9841    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_validate_dleg_fail THEN
9842         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
9843         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Next_Trip_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_validate_dleg_fail');
9844         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Next_Trip_Lane');
9845 
9846    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_validate_carrier_fail THEN
9847         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
9848         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Next_Trip_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_validate_carrier_fail');
9849         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Next_Trip_Lane');
9850 
9851 
9852    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_no_lane_sched_veh THEN
9853         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
9854         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Next_Trip_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_no_lane_sched_veh');
9855         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Next_Trip_Lane');
9856 
9857    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_car_prf_for_schd_fail THEN
9858         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
9859         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Next_Trip_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_car_prf_for_schd_fail');
9860         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Next_Trip_Lane');
9861 
9862 
9863    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_car_prf_for_lane_fail THEN
9864         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
9865         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Next_Trip_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_car_prf_for_lane_fail');
9866         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Next_Trip_Lane');
9867 
9868    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_no_dleg_id_in_dtl THEN
9869         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
9870         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Next_Trip_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_no_dleg_id_in_dtl');
9871         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Next_Trip_Lane');
9872 
9873 
9874    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_no_lane_sched THEN
9875         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
9876         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Next_Trip_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_no_lane_sched');
9877         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Next_Trip_Lane');
9878 
9879    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_convert_uom_for_trip_fail THEN
9880         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
9881         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Next_Trip_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_convert_uom_for_trip_fail');
9882         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Next_Trip_Lane');
9883 
9884    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_convert_uom_for_stop_fail THEN
9885         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
9886         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Next_Trip_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_convert_uom_for_stop_fail');
9887         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Next_Trip_Lane');
9888 
9889    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_convert_uom_for_dleg_fail THEN
9890         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
9891         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Next_Trip_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_convert_uom_for_dleg_fail');
9892         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Next_Trip_Lane');
9893 
9894    WHEN others THEN
9895         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
9896         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_Next_Trip_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
9897         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
9898         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_Next_Trip_Lane');
9899 
9900 
9901 END Cache_Next_Trip_Lane;
9902 
9903 
9904 
9905 --Cache info for the trip search services
9906 --For each lane/sched passed in a seperate trip and associates
9907 --stops,dlegs,carr will be cached. However the ids for the trips
9908 --stops,dlegs, carr will remain the same
9909 
9910 PROCEDURE TL_BUILD_CACHE_FOR_TRP_COMPARE(
9911 	p_wsh_trip_id IN Number ,
9912 	p_lane_rows IN dbms_utility.number_array ,
9913 	p_schedule_rows IN  dbms_utility.number_array,
9914 	p_vehicle_rows IN  dbms_utility.number_array,
9915 	x_return_status OUT NOCOPY Varchar2) IS
9916 
9917 
9918 
9919 
9920 	l_trip_index NUMBER;
9921 	l_carrier_index NUMBER;
9922 	l_stop_index NUMBER;
9923 	l_dleg_index	NUMBER;
9924 	l_child_dleg_index NUMBER;
9925 
9926 	l_last_trip_index 	NUMBER;
9927 	l_last_carrier_index 	NUMBER;
9928 	l_last_stop_index 	NUMBER;
9929 	l_last_dleg_index	NUMBER;
9930 
9931 
9932 	i NUMBER;
9933 	j NUMBER;
9934 
9935 	l_cached_first_trip_flag VARCHAR2(1);
9936 
9937 
9938 l_return_status VARCHAR2(1);
9939 
9940 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
9941 
9942 	l_warning_count 	NUMBER:=0;
9943 BEGIN
9944 
9945 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
9946 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'TL_BUILD_CACHE_FOR_TRP_COMPARE','start');
9947 
9948 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
9949 
9950 	Initialize_Cache_Indices(
9951 		x_trip_index=>	l_trip_index,
9952 		x_stop_index=>	l_stop_index,
9953 		x_dleg_index=>	l_dleg_index,
9954 		x_carrier_index=>l_carrier_index,
9955 		x_child_dleg_index=>l_child_dleg_index,
9956 		x_return_status=> l_return_status);
9957 
9958 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
9959 	THEN
9960 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
9961 	       THEN
9962 		  raise FTE_FREIGHT_PRICING_UTIL.g_tl_init_cache_indices_fail;
9963 	       END IF;
9964 	END IF;
9965 
9966 
9967 	l_cached_first_trip_flag:='N';
9968 	i:=p_lane_rows.FIRST;
9969 
9970 	-- Query up the trip/stops/dleg and cache it
9971 	WHILE (p_lane_rows.EXISTS(i) AND p_schedule_rows.EXISTS(i) AND
9972 	p_vehicle_rows.EXISTS(i) AND (l_cached_first_trip_flag='N'))
9973 	LOOP
9974 
9975 		 Cache_First_Trip_Lane(
9976 		  p_trip_id	=>	p_wsh_trip_id ,
9977 		  p_lane_id	=>	p_lane_rows(i) ,
9978 		  p_schedule_id	=>	p_schedule_rows(i) ,
9979 		  p_vehicle	=>	p_vehicle_rows(i) ,
9980 		  x_trip_index	=>	l_trip_index ,
9981 		  x_carrier_index	=>	l_carrier_index ,
9982 		  x_stop_index	=>	l_stop_index ,
9983 		  x_dleg_index	=>	l_dleg_index ,
9984 		  x_child_dleg_index=>l_child_dleg_index,
9985 		  x_return_status=>	l_return_status);
9986 
9987 		  l_cached_first_trip_flag:='Y';
9988 
9989 		  IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
9990 		  THEN
9991 		         IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
9992 		         THEN
9993 
9994 		         	Delete_Cache(x_return_status=>l_return_status);
9995 
9996 				IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
9997 				THEN
9998 				       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
9999 				       THEN
10000 					  raise FTE_FREIGHT_PRICING_UTIL.g_tl_delete_cache_fail;
10001 				       END IF;
10002 				END IF;
10003 
10004 				Initialize_Cache_Indices(
10005 					x_trip_index=>	l_trip_index,
10006 					x_stop_index=>	l_stop_index,
10007 					x_dleg_index=>	l_dleg_index,
10008 					x_carrier_index=>l_carrier_index,
10009 					x_child_dleg_index=>l_child_dleg_index,
10010 					x_return_status=> l_return_status);
10011 
10012 				IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
10013 				THEN
10014 				       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
10015 				       THEN
10016 					  raise FTE_FREIGHT_PRICING_UTIL.g_tl_init_cache_indices_fail;
10017 				       END IF;
10018 				END IF;
10019 
10020 				l_cached_first_trip_flag:='N';
10021 		         END IF;
10022 		END IF;
10023 
10024 		i:=p_lane_rows.NEXT(i);
10025 
10026 	END LOOP;
10027 
10028 	IF (l_cached_first_trip_flag='N')
10029 	THEN
10030 
10031 
10032 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_no_trips_cached;
10033 
10034 	END IF;
10035 
10036 	--The first lane/schedule has been cached
10037 	--For the remaining lanes/schedules we shall copy the data we captured above
10038 	--and alter the UOMs according to the lanes
10039 
10040 
10041 
10042 
10043 	--Alter and copy into cache for each lane
10044 
10045 
10046 
10047 	WHILE ( (i IS NOT NULL) AND (p_lane_rows.EXISTS(i)))
10048 	LOOP
10049 
10050 		IF (p_lane_rows.EXISTS(i) AND p_schedule_rows.EXISTS(i) AND p_vehicle_rows.EXISTS(i)
10051 			AND ((p_lane_rows(i) IS NOT NULL) OR (p_schedule_rows(i) IS NOT NULL) ))
10052 		THEN
10053 
10054 			--Store all the indices
10055 
10056 			l_last_trip_index:=l_trip_index;
10057 			l_last_carrier_index:=l_carrier_index;
10058 			l_last_stop_index:=l_stop_index;
10059 			l_last_dleg_index:=l_dleg_index;
10060 
10061 
10062 
10063 			Cache_Next_Trip_Lane(
10064 				p_trip_id=>p_wsh_trip_id,
10065 				p_lane_id=> p_lane_rows(i),
10066 				p_schedule_id=> p_schedule_rows(i),
10067 				p_vehicle=> p_vehicle_rows(i) ,
10068 				x_trip_index => l_trip_index,
10069 				x_carrier_index=>l_carrier_index,
10070 				x_stop_index=>l_stop_index,
10071 				x_dleg_index=>l_dleg_index,
10072 				x_child_dleg_index=>l_child_dleg_index,
10073 				x_return_status=>l_return_status);
10074 
10075 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
10076 			THEN
10077 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
10078 			       THEN
10079 				   l_warning_count:=l_warning_count+1;
10080 			       	   IF (p_schedule_rows(i) IS NOT NULL)
10081 			       	   THEN
10082 
10083 			       	   	   FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_WRN,'Failed to cache trip'
10084 			       	   	   ||p_wsh_trip_id||' schedule '||p_schedule_rows(i)||':g_tl_cmp_trip_sched_fail');
10085 
10086 					--Show only generic message
10087 					   --FTE_FREIGHT_PRICING_UTIL.setmsg (
10088 						--p_api=>'TL_BUILD_CACHE_FOR_TRP_COMPARE',
10089 						--p_exc=>'g_tl_cmp_trip_sched_fail',
10090 						--p_msg_type=>'W',
10091 						--p_trip_id=> p_wsh_trip_id,
10092 						--p_schedule_id=>p_schedule_rows(i));
10093 				    ELSE
10094 
10095 			       	   	   FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_WRN,'Failed to cache trip'
10096 			       	   	   ||p_wsh_trip_id||' lane '||p_lane_rows(i)||':g_tl_cmp_trip_lane_fail');
10097 				    --Show only generic message
10098 					--   FTE_FREIGHT_PRICING_UTIL.setmsg (
10099 					--	p_api=>'TL_BUILD_CACHE_FOR_TRP_COMPARE',
10100 					--	p_exc=>'g_tl_cmp_trip_lane_fail',
10101 					--	p_msg_type=>'W',
10102 					--	p_trip_id=> p_wsh_trip_id,
10103 					--	p_lane_id=>p_lane_rows(i));
10104 
10105 
10106 				    END IF;
10107 
10108 				--Restore indices
10109 
10110 				l_trip_index:=l_last_trip_index;
10111 				l_carrier_index:=l_last_carrier_index;
10112 				l_stop_index:=l_last_stop_index;
10113 				l_dleg_index:=l_last_dleg_index;
10114 
10115 
10116 				--DELETE Newly added cache
10117 
10118 				Partially_Delete_Cache(
10119 					p_trip_index=>l_trip_index,
10120 					p_carrier_index=>l_carrier_index,
10121 					p_stop_index=>l_stop_index,
10122 					p_dleg_index=>l_dleg_index,
10123 					p_child_dleg_index=>l_child_dleg_index);
10124 
10125 			       END IF;
10126 			END IF;
10127 
10128 
10129 
10130 
10131 		ELSE
10132 
10133 			--Show only generic message
10134 			--FTE_FREIGHT_PRICING_UTIL.setmsg (
10135 			--	p_api=>'TL_BUILD_CACHE_FOR_TRP_COMPARE',
10136 			--	p_exc=>'g_tl_no_lane_sched_veh',
10137 			--	p_trip_id=>p_wsh_trip_id);
10138 
10139 			raise FTE_FREIGHT_PRICING_UTIL.g_tl_no_lane_sched_veh;
10140 
10141 		END IF;
10142 
10143 		i:=p_lane_rows.NEXT(i);
10144 
10145 	END LOOP;
10146 
10147         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_BUILD_CACHE_FOR_TRP_COMPARE');
10148 
10149 	IF (l_warning_count > 0)
10150 	THEN
10151 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
10152 	END IF;
10153 EXCEPTION
10154 
10155 
10156 
10157   WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_no_trips_cached THEN
10158    	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
10159    	FTE_FREIGHT_PRICING_UTIL.set_exception('TL_BUILD_CACHE_FOR_TRP_COMPARE',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_no_trips_cached');
10160    	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_BUILD_CACHE_FOR_TRP_COMPARE');
10161 
10162   WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_init_cache_indices_fail THEN
10163    	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
10164    	FTE_FREIGHT_PRICING_UTIL.set_exception('TL_BUILD_CACHE_FOR_TRP_COMPARE',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_init_cache_indices_fail');
10165    	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_BUILD_CACHE_FOR_TRP_COMPARE');
10166 
10167 
10168    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_cache_first_trp_lane_fail THEN
10169         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
10170         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_BUILD_CACHE_FOR_TRP_COMPARE',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_cache_first_trp_lane_fail');
10171         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_BUILD_CACHE_FOR_TRP_COMPARE');
10172 
10173    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_no_lane_sched_veh THEN
10174         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
10175         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_BUILD_CACHE_FOR_TRP_COMPARE',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_no_lane_sched_veh');
10176         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_BUILD_CACHE_FOR_TRP_COMPARE');
10177 
10178 
10179    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_delete_cache_fail THEN
10180         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
10181         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_BUILD_CACHE_FOR_TRP_COMPARE',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_delete_cache_fail');
10182         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_BUILD_CACHE_FOR_TRP_COMPARE');
10183 
10184    WHEN others THEN
10185         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
10186         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_BUILD_CACHE_FOR_TRP_COMPARE',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
10187         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
10188         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_BUILD_CACHE_FOR_TRP_COMPARE');
10189 
10190 
10191 END TL_BUILD_CACHE_FOR_TRP_COMPARE;
10192 
10193 
10194 
10195 PROCEDURE Get_internal_location(
10196        p_dummy_location_id   IN         NUMBER,
10197        x_internal_location_id    OUT NOCOPY NUMBER,
10198        x_return_status               OUT NOCOPY VARCHAR2)
10199 
10200 IS
10201 
10202 
10203 	CURSOR c_get_internal_loc_id (c_int_cust_loc_id IN  NUMBER)
10204 	IS
10205 	SELECT ploc.LOCATION_ID internal_org_location_id
10206 	FROM PO_LOCATION_ASSOCIATIONS_ALL ploc,
10207 	     hz_cust_site_uses_all site_uses,
10208 	     hz_cust_acct_sites_all acct_sites,
10209 	     HZ_PARTY_SITES sites
10210 	WHERE ploc.SITE_USE_ID = site_uses.SITE_USE_ID
10211 	AND site_uses.CUST_ACCT_SITE_ID = acct_sites.CUST_ACCT_SITE_ID
10212 	AND acct_sites.PARTY_SITE_ID = sites.PARTY_SITE_ID
10213 	AND ploc.CUSTOMER_ID = acct_sites.CUST_ACCOUNT_ID
10214 	AND sites.location_id = c_int_cust_loc_id;
10215 
10216 
10217 l_return_status VARCHAR2(1);
10218 
10219 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
10220 
10221 	l_warning_count 	NUMBER:=0;
10222 BEGIN
10223 
10224 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
10225 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Get_internal_location','start');
10226 
10227 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
10228 
10229 
10230 	x_internal_location_id :=NULL;
10231 
10232 	IF(p_dummy_location_id IS NOT NULL)
10233 	THEN
10234 		OPEN c_get_internal_loc_id(p_dummy_location_id);
10235 		FETCH c_get_internal_loc_id INTO x_internal_location_id;
10236 		CLOSE c_get_internal_loc_id;
10237 
10238 	END IF;
10239 
10240         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_internal_location');
10241 
10242 	IF (l_warning_count > 0)
10243 	THEN
10244 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
10245 	END IF;
10246 EXCEPTION
10247    WHEN others THEN
10248         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
10249         FTE_FREIGHT_PRICING_UTIL.set_exception('Get_internal_location',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
10250         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
10251         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_internal_location');
10252 
10253 
10254 
10255 END Get_internal_location;
10256 
10257 
10258 
10259 PROCEDURE Cache_First_Delivery_Lane(
10260 		p_wsh_delivery_id IN NUMBER,
10261 		p_lane_id IN NUMBER,
10262 		p_schedule_id IN NUMBER,
10263 	        p_dep_date                IN     DATE DEFAULT sysdate,
10264 	        p_arr_date                IN     DATE DEFAULT sysdate,
10265 		p_pickup_location IN NUMBER,
10266 		p_dropoff_location IN NUMBER,
10267 		p_vehicle_type_id IN NUMBER,
10268 		x_trip_index IN OUT NOCOPY NUMBER,
10269 		x_carrier_index IN OUT NOCOPY NUMBER,
10270 		x_stop_index IN OUT NOCOPY NUMBER,
10271 		x_dleg_index IN OUT NOCOPY NUMBER,
10272 		x_return_status OUT NOCOPY Varchar2)
10273 IS
10274 
10275 
10276 
10277 	CURSOR get_dates_loc_from_dlv(c_delivery_id IN NUMBER) IS
10278 	SELECT	d.initial_pickup_date,
10279 		d.ultimate_dropoff_date,
10280 		d.initial_pickup_location_id,
10281 		d.ultimate_dropoff_location_id
10282 	FROM wsh_new_deliveries d
10283 	WHERE d.delivery_id=c_delivery_id;
10284 
10285 
10286 
10287 
10288 	l_internal_location NUMBER;
10289 
10290 
10291 	l_trip_rec TL_trip_data_input_rec_type;
10292 
10293 	l_carrier_rec	TL_CARRIER_PREF_REC_TYPE ;
10294 	l_pickup_stop_rec TL_TRIP_STOP_INPUT_REC_TYPE;
10295 	l_dropoff_stop_rec TL_TRIP_STOP_INPUT_REC_TYPE;
10296 
10297 	l_dleg_rec TL_delivery_leg_rec_type;
10298 	l_stop_distance_tab	TL_stop_distance_tab_type;
10299 	l_initial_stop_index NUMBER;
10300 	l_initial_dleg_index NUMBER;
10301 	l_region_id 	NUMBER;
10302 
10303 	l_pickup_location NUMBER;
10304 	l_dropoff_location NUMBER;
10305 	l_departure_date DATE;
10306 	l_arrival_date DATE;
10307 
10308 	i NUMBER;
10309 	l_physical_previous_flag VARCHAR2(1);
10310 
10311 
10312 l_return_status VARCHAR2(1);
10313 
10314 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
10315 
10316 	l_warning_count 	NUMBER:=0;
10317 
10318 
10319 
10320 
10321 BEGIN
10322 
10323 
10324 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
10325 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Cache_First_Delivery_Lane','start');
10326 
10327 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
10328 	l_initial_stop_index:=x_stop_index;
10329 	l_initial_dleg_index:=x_dleg_index;
10330 
10331 
10332 
10333 
10334 	IF ((p_pickup_location IS NULL) OR (p_dropoff_location IS NULL) OR
10335 	(p_arr_date IS NULL) OR (p_dep_date IS NULL))
10336 	--construct dleg based on delivery
10337 	THEN
10338 
10339 
10340 		OPEN get_dates_loc_from_dlv(p_wsh_delivery_id);
10341 		FETCH get_dates_loc_from_dlv INTO
10342 			l_departure_date,l_arrival_date,l_pickup_location,
10343 			l_dropoff_location;
10344 		IF(get_dates_loc_from_dlv%NOTFOUND)
10345 		THEN
10346 			CLOSE get_dates_loc_from_dlv;
10347 
10348 			raise FTE_FREIGHT_PRICING_UTIL.g_tl_dates_loc_from_dlv_fail;
10349 
10350 		END IF;
10351 
10352 		CLOSE get_dates_loc_from_dlv;
10353 
10354 
10355 	ELSE
10356 		l_pickup_location:=p_pickup_location;
10357 		l_dropoff_location:=p_dropoff_location;
10358 		l_departure_date:=p_dep_date;
10359 		l_arrival_date:=p_arr_date;
10360 
10361 
10362 	END IF;
10363 
10364 	l_internal_location:=NULL;
10365 	Get_internal_location(
10366 	       p_dummy_location_id=>l_dropoff_location,
10367 	       x_internal_location_id=>l_internal_location,
10368        	       x_return_status=>l_return_status);
10369 
10370 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
10371 	THEN
10372 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
10373 	       THEN
10374 	          raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_int_loc_fail;
10375 	       END IF;
10376 	END IF;
10377 	IF (l_internal_location IS NOT NULL)
10378 	THEN
10379 		l_dropoff_location:=l_internal_location;
10380 
10381 	END IF;
10382 
10383 
10384 
10385 	--Create Dummy DLEG
10386 
10387 	Initialize_Dummy_Dleg(
10388 		p_pickup_location	=>l_pickup_location,
10389 		p_dropoff_location	=>l_dropoff_location,
10390 		p_dlv_id	=>p_wsh_delivery_id,
10391 		x_dleg_rec	=>l_dleg_rec,
10392 		x_return_status	=>l_return_status);
10393 
10394 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
10395 	THEN
10396 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
10397 	       THEN
10398 	          raise FTE_FREIGHT_PRICING_UTIL.g_tl_init_dummy_dleg_fail;
10399 	       END IF;
10400 	END IF;
10401 
10402 	--Create Dummy Trip
10403 
10404 	Initialize_Dummy_Trip(
10405 		p_departure_date	=>l_departure_date,
10406 		p_arrival_date	=>l_arrival_date,
10407 		x_trip_rec	=>l_trip_rec,
10408 		x_return_status	=>l_return_status);
10409 
10410 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
10411 		THEN
10412 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
10413 		       THEN
10414 		          raise FTE_FREIGHT_PRICING_UTIL.g_tl_init_dummy_trip_fail;
10415 		       END IF;
10416 	END IF;
10417 	--Create Dummy Stops
10418 
10419 	Initialize_Dummy_Stop(
10420 		p_date	=>l_departure_date,
10421 		p_location=>l_pickup_location,
10422 		x_stop_rec	=>l_pickup_stop_rec,
10423 		x_return_status	=>l_return_status);
10424 
10425 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
10426 	THEN
10427 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
10428 		THEN
10429 			raise FTE_FREIGHT_PRICING_UTIL.g_tl_init_dummy_pu_stop_fail;
10430 		END IF;
10431 	END IF;
10432 
10433 
10434 	l_pickup_stop_rec.stop_id:=FAKE_STOP_ID_1;
10435 
10436 	Initialize_Dummy_Stop(
10437 		p_date	=>	l_arrival_date,
10438 		p_location	=>	l_dropoff_location,
10439 		x_stop_rec	=>	l_dropoff_stop_rec,
10440 		x_return_status	=>l_return_status);
10441 
10442 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
10443 	THEN
10444 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
10445 		THEN
10446 			raise FTE_FREIGHT_PRICING_UTIL.g_tl_init_dummy_do_stop_fail;
10447 		END IF;
10448 	END IF;
10449 
10450 	l_dropoff_stop_rec.stop_id:=FAKE_STOP_ID_2;
10451 
10452 
10453 	l_trip_rec.vehicle_type:=p_vehicle_type_id;
10454 
10455 	IF (p_lane_id IS NOT NULL)
10456 	THEN
10457 		Get_Carrier_Pref_For_Lane(
10458 			p_lane_id =>p_lane_id,
10459 			x_carrier_service_rec=>l_carrier_rec,
10460 			x_return_status=>l_return_status);
10461 
10462 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
10463 		THEN
10464 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
10465 			THEN
10466 				raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_car_prf_for_lane_fail;
10467 			END IF;
10468 		END IF;
10469 
10470 
10471 		Get_Trip_Info_From_Lane(
10472 			p_lane_id=>	p_lane_id,
10473 			x_trip_rec=>	l_trip_rec,
10474 			x_return_status	=>l_return_status);
10475 
10476 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
10477 		THEN
10478 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
10479 		       THEN
10480 			  raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_trp_inf_frm_lane_fail;
10481 		       END IF;
10482 		END IF;
10483 
10484 
10485 	ELSIF (p_schedule_id IS NOT NULL)
10486 	THEN
10487 		Get_Carrier_Pref_For_Schedule(
10488 			p_schedule_id =>p_schedule_id,
10489 			x_carrier_service_rec=>l_carrier_rec,
10490 			x_return_status=>l_return_status);
10491 
10492 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
10493 		THEN
10494 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
10495 			THEN
10496 				raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_car_prf_for_schd_fail;
10497 			END IF;
10498 		END IF;
10499 
10500 
10501 
10502 		Get_Trip_Info_From_Schedule(
10503 			p_schedule_id=>	p_schedule_id,
10504 			x_trip_rec=>	l_trip_rec,
10505 			x_return_status	=>l_return_status);
10506 
10507 		 IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
10508 		 THEN
10509 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
10510 			THEN
10511 			   raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_trp_inf_frm_schd_fail;
10512 			END IF;
10513 		END IF;
10514 
10515 
10516 	END IF;
10517 
10518 	--MULTICURRENCY
10519 	TL_Get_Currency(
10520 		p_delivery_id=>p_wsh_delivery_id,
10521 		p_trip_id=>NULL,
10522 		p_location_id=>NULL,
10523 		p_carrier_id=>l_carrier_rec.carrier_id,
10524 		x_currency_code=>l_carrier_rec.currency,
10525 		x_return_status=>l_return_status);
10526 
10527 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
10528 	THEN
10529 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
10530 	       THEN
10531 		  raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_currency_fail;
10532 	       END IF;
10533 	END IF;
10534 
10535 	Validate_Carrier_Info(
10536 		x_carrier_info 	=>	l_carrier_rec,
10537 		x_return_status	=>	l_return_status);
10538 
10539 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
10540 	THEN
10541 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
10542 		THEN
10543 			--FTE_FREIGHT_PRICING_UTIL.setmsg (
10544 			--	p_api=>'TL_Cache_First_Estimate_Trip',
10545 			--	p_exc=>'g_tl_validate_carrier_fail',
10546 			--	p_carrier_id=>l_carrier_rec.carrier_id);
10547 
10548 
10549 			raise FTE_FREIGHT_PRICING_UTIL.g_tl_validate_carrier_fail;
10550 		END IF;
10551 	END IF;
10552 
10553 	--Insert carrier info into cache
10554 	g_tl_carrier_pref_rows(x_carrier_index):=l_carrier_rec;
10555 	x_carrier_index:=x_carrier_index+1;
10556 
10557 
10558 
10559 
10560 	Get_Region_For_Location(
10561 		p_location_id=>	l_pickup_stop_rec.location_id,
10562 		p_region_type=>	l_carrier_rec.region_level,
10563 		x_region_id=>	l_pickup_stop_rec.stop_region,
10564 		x_return_status	=>	l_return_status);
10565 
10566 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
10567 	THEN
10568 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
10569 	       THEN
10570 		  FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_WRN,'Failed to get region for location ');
10571 		  --raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_reg_for_loc_fail;
10572 	       END IF;
10573 	END IF;
10574 
10575 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'Get_Region_For_LocationRES: '||
10576 		l_pickup_stop_rec.location_id ||':'||l_pickup_stop_rec.stop_region);
10577 
10578 
10579 
10580 	Get_Region_For_Location(
10581 		p_location_id=>	l_dropoff_stop_rec.location_id,
10582 		p_region_type=>	l_carrier_rec.region_level,
10583 		x_region_id=>	l_dropoff_stop_rec.stop_region,
10584 		x_return_status	=>	l_return_status);
10585 
10586 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
10587 	THEN
10588 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
10589 	       THEN
10590 		  FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_WRN,'Failed to get region for location ');
10591 		  --raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_reg_for_loc_fail;
10592 	       END IF;
10593 	END IF;
10594 
10595 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'Get_Region_For_LocationRES: '||
10596 		l_dropoff_stop_rec.location_id ||':'||l_dropoff_stop_rec.stop_region);
10597 
10598 
10599 	--Get the wieight/vol/container/pallets of the delivery
10600 
10601 	Add_Delivery_Details(
10602 		p_delivery_id =>p_wsh_delivery_id,
10603 		p_carrier_pref_rec =>l_carrier_rec,
10604 		x_pickup_stop_rec =>l_pickup_stop_rec,
10605 		x_dropoff_stop_rec=>l_dropoff_stop_rec,
10606 		x_dleg_rec =>l_dleg_rec,
10607 		x_return_status	=>l_return_status);
10608 
10609 
10610 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
10611 	THEN
10612 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
10613 	       THEN
10614 	          raise FTE_FREIGHT_PRICING_UTIL.g_tl_add_dlv_dtl_fail;
10615 	       END IF;
10616 	END IF;
10617 
10618 
10619 
10620 	Validate_Dleg_Info(
10621 		x_dleg_info=>	l_dleg_rec,
10622 		x_return_status	=>	l_return_status);
10623 
10624 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
10625 	THEN
10626 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
10627 	       THEN
10628 
10629 		  raise FTE_FREIGHT_PRICING_UTIL.g_tl_validate_dleg_fail;
10630 	       END IF;
10631 	END IF;
10632 
10633 	g_tl_delivery_leg_rows(x_dleg_index):=l_dleg_rec;
10634 	x_dleg_index:=x_dleg_index+1;
10635 
10636 
10637 
10638 	Add_Inputs_For_Distance(
10639 	 p_from_stop_rec=> l_pickup_stop_rec,
10640 	 p_to_stop_rec=> 	l_dropoff_stop_rec,
10641 	 p_empty_flag=>	'N',
10642 	 x_stop_distance_tab=>	l_stop_distance_tab,
10643 	 x_return_status	=>	l_return_status);
10644 
10645 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
10646 	THEN
10647 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
10648 	       THEN
10649 		  raise FTE_FREIGHT_PRICING_UTIL.g_tl_add_ip_dist_fail;
10650 	       END IF;
10651 	END IF;
10652 
10653 
10654 
10655 	--Update trip rec
10656 
10657 	Update_Trip_With_Stop_Info(
10658 		p_stop_rec	=>	l_pickup_stop_rec,
10659 		x_trip_rec	=>	l_trip_rec,
10660 		x_return_status	=>	l_return_status);
10661 
10662 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
10663 	THEN
10664 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
10665 	       THEN
10666 		  raise FTE_FREIGHT_PRICING_UTIL.g_tl_updt_trip_with_stop_fail;
10667 	       END IF;
10668 	END IF;
10669 	--Insert Stop info into Cache
10670 
10671 	--Perform validation after getting dist,time,fac info
10672 
10673 	g_tl_trip_stop_rows(x_stop_index):=l_pickup_stop_rec;
10674 	x_stop_index:=x_stop_index+1;
10675 
10676 
10677 
10678 
10679 
10680 	--Update trip rec
10681 
10682 	Update_Trip_With_Stop_Info(
10683 		p_stop_rec	=>	l_dropoff_stop_rec,
10684 		x_trip_rec	=>	l_trip_rec,
10685 		x_return_status	=>	l_return_status);
10686 
10687 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
10688 	THEN
10689 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
10690 	       THEN
10691 		  raise FTE_FREIGHT_PRICING_UTIL.g_tl_updt_trip_with_stop_fail;
10692 	       END IF;
10693 	END IF;
10694 	--Insert Stop info into Cache
10695 
10696 	--Perform validation after getting dist,time,fac info
10697 
10698 	g_tl_trip_stop_rows(x_stop_index):=l_dropoff_stop_rec;
10699 	x_stop_index:=x_stop_index+1;
10700 
10701 
10702 
10703 
10704 	g_tl_trip_stop_rows(x_stop_index-1).distance_to_next_stop:=0;
10705 	g_tl_trip_stop_rows(x_stop_index-1).time_to_next_stop:=0;
10706 
10707 
10708 
10709 
10710 
10711 	--GEt distances/time from mileage table, update, stop, dleg buffer, trip
10712 	--loaded, unlaoded distances
10713 
10714 	Get_Distances(
10715 		p_stop_index	=>	l_initial_stop_index,
10716 		p_dleg_index	=>	l_initial_dleg_index,
10717 		p_carrier_rec	=>	l_carrier_rec,
10718 		x_stop_distance_tab	=>l_stop_distance_tab,
10719 		x_trip_rec	=>	l_trip_rec,
10720 		x_return_status	=>	l_return_status);
10721 
10722 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
10723 	THEN
10724        		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
10725        		THEN
10726           		raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_distances_fail;
10727        		END IF;
10728 	END IF;
10729 
10730 
10731 	--Get facility Info and store into stop cache
10732 	Get_Facility_Info(p_stop_index	=>	l_initial_stop_index,
10733 			x_return_status	=>	l_return_status);
10734 
10735 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
10736 	THEN
10737 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
10738 	       THEN
10739 		  FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_WRN,'Failed to get facility information');
10740 	          --raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_facility_info_fail;
10741 	       END IF;
10742 	END IF;
10743 
10744 	--Validate All Stops(all the stop,distance,time,fac info has beengathered
10745 
10746 	FOR i IN l_initial_stop_index..(x_stop_index-1)
10747 	LOOP
10748 		--Determine if the stop is pickup/dropoff/both or none
10749 		Get_Stop_Type(x_stop_rec=>g_tl_trip_stop_rows(i));
10750 
10751 		Validate_Stop_Info(
10752 		p_carrier_pref_rec=>l_carrier_rec,
10753 		x_stop_info=>	g_tl_trip_stop_rows(i),
10754 		x_return_status	=>	l_return_status);
10755 
10756 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
10757 		THEN
10758 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
10759 		       THEN
10760 			  raise FTE_FREIGHT_PRICING_UTIL.g_tl_validate_stop_fail;
10761 		       END IF;
10762 		END IF;
10763 
10764 	END LOOP;
10765 
10766 
10767 
10768 
10769 
10770 	--Update trip rec
10771 	l_trip_rec.number_of_stops:=2;
10772 
10773 
10774 	l_trip_rec.distance_method:=l_carrier_rec.distance_calculation_method;
10775 
10776 	--get the arrival and dep dates of the trip
10777 	--from first and last stop
10778 
10779 	l_trip_rec.planned_departure_date:=
10780 		g_tl_trip_stop_rows(l_initial_stop_index).planned_departure_date;
10781 	l_trip_rec.planned_arrival_date:=
10782 		g_tl_trip_stop_rows(x_stop_index-1).planned_arrival_date;
10783 
10784 	--Dead head trip has no dlegs 3958974
10785 
10786 	l_trip_rec.dead_head:='N';
10787 
10788 
10789 	l_trip_rec.stop_reference:=l_initial_stop_index;
10790 	l_trip_rec.delivery_leg_reference:=l_initial_dleg_index;
10791 
10792 	--Insert into trip cache
10793 
10794 	Validate_Trip_Info(
10795 		x_trip_info=>	l_trip_rec,
10796 		x_return_status	=>	l_return_status);
10797 
10798 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
10799 	THEN
10800 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
10801 	       THEN
10802 
10803 	          raise FTE_FREIGHT_PRICING_UTIL.g_tl_validate_trip_fail;
10804 	       END IF;
10805 	END IF;
10806 
10807 	g_tl_trip_rows(x_trip_index):=l_trip_rec;
10808 	x_trip_index:=x_trip_index+1;
10809 
10810 
10811 
10812 
10813         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_First_Delivery_Lane');
10814 
10815 	IF (l_warning_count > 0)
10816 	THEN
10817 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
10818 	END IF;
10819 
10820 
10821 
10822 EXCEPTION
10823 
10824    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_currency_fail THEN
10825         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
10826         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_First_Delivery_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_currency_fail');
10827         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_First_Delivery_Lane');
10828 
10829 
10830    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_dates_loc_from_dlv_fail THEN
10831         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
10832         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_First_Delivery_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_dates_loc_from_dlv_fail');
10833         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_First_Delivery_Lane');
10834 
10835 
10836    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_int_loc_fail THEN
10837         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
10838         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_First_Delivery_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_int_loc_fail');
10839         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_First_Delivery_Lane');
10840 
10841    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_init_dummy_dleg_fail THEN
10842         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
10843         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_First_Delivery_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_init_dummy_dleg_fail');
10844         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_First_Delivery_Lane');
10845 
10846    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_init_dummy_trip_fail THEN
10847         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
10848         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_First_Delivery_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_init_dummy_trip_fail');
10849         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_First_Delivery_Lane');
10850 
10851 
10852 
10853    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_init_dummy_pu_stop_fail THEN
10854         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
10855         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_First_Delivery_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_init_dummy_pu_stop_fail');
10856         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_First_Delivery_Lane');
10857 
10858 
10859    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_init_dummy_do_stop_fail THEN
10860         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
10861         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_First_Delivery_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_init_dummy_do_stop_fail');
10862         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_First_Delivery_Lane');
10863 
10864 
10865 
10866 
10867    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_car_prf_for_lane_fail THEN
10868         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
10869         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_First_Delivery_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_car_prf_for_lane_fail');
10870         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_First_Delivery_Lane');
10871 
10872 
10873    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_trp_inf_frm_lane_fail THEN
10874         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
10875         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_First_Delivery_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_trp_inf_frm_lane_fail');
10876         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_First_Delivery_Lane');
10877 
10878    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_car_prf_for_schd_fail THEN
10879         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
10880         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_First_Delivery_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_car_prf_for_schd_fail');
10881         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_First_Delivery_Lane');
10882 
10883    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_trp_inf_frm_schd_fail THEN
10884         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
10885         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_First_Delivery_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_trp_inf_frm_schd_fail');
10886         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_First_Delivery_Lane');
10887 
10888    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_validate_carrier_fail THEN
10889         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
10890         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_First_Delivery_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_validate_carrier_fail');
10891         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_First_Delivery_Lane');
10892 
10893 
10894 
10895    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_reg_for_loc_fail THEN
10896         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
10897         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_First_Delivery_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_reg_for_loc_fail');
10898         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_First_Delivery_Lane');
10899 
10900    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_add_dlv_dtl_fail THEN
10901         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
10902         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_First_Delivery_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_add_dlv_dtl_fail');
10903         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_First_Delivery_Lane');
10904 
10905    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_add_pickup_qty_fail THEN
10906         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
10907         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_First_Delivery_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_add_pickup_qty_fail');
10908         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_First_Delivery_Lane');
10909 
10910 
10911    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_validate_dleg_fail THEN
10912         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
10913         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_First_Delivery_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_validate_dleg_fail');
10914         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_First_Delivery_Lane');
10915 
10916    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_add_ip_dist_fail THEN
10917         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
10918         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_First_Delivery_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_add_ip_dist_fail');
10919         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_First_Delivery_Lane');
10920 
10921    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_updt_trip_with_stop_fail THEN
10922         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
10923         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_First_Delivery_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_updt_trip_with_stop_fail');
10924         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_First_Delivery_Lane');
10925 
10926    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_validate_stop_fail THEN
10927         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
10928         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_First_Delivery_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_validate_stop_fail');
10929         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_First_Delivery_Lane');
10930 
10931    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_distances_fail THEN
10932         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
10933         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_First_Delivery_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_distances_fail');
10934         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_First_Delivery_Lane');
10935 
10936 
10937    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_facility_info_fail THEN
10938         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
10939         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_First_Delivery_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_facility_info_fail');
10940         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_First_Delivery_Lane');
10941 
10942    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_validate_trip_fail THEN
10943         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
10944         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_First_Delivery_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_validate_trip_fail');
10945         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_First_Delivery_Lane');
10946 
10947 
10948    WHEN others THEN
10949         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
10950         FTE_FREIGHT_PRICING_UTIL.set_exception('Cache_First_Delivery_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
10951         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
10952         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Cache_First_Delivery_Lane');
10953 
10954 
10955 
10956 END Cache_First_Delivery_Lane;
10957 
10958 
10959 
10960 PROCEDURE TL_BUILD_CACHE_FOR_DLV_COMPARE(
10961 	p_wsh_delivery_id IN Number ,
10962 	p_lane_rows IN dbms_utility.number_array ,
10963 	p_schedule_rows IN  dbms_utility.number_array,
10964 	p_vehicle_rows IN  dbms_utility.number_array,
10965 	p_dep_date                IN     DATE DEFAULT sysdate,
10966 	p_arr_date                IN     DATE DEFAULT sysdate,
10967 	p_pickup_location_id IN NUMBER,
10968 	p_dropoff_location_id IN NUMBER,
10969 	x_return_status OUT NOCOPY Varchar2)
10970 
10971 IS
10972 	l_trip_index NUMBER;
10973 	l_carrier_index NUMBER;
10974 	l_stop_index NUMBER;
10975 	l_dleg_index	NUMBER;
10976 	l_child_dleg_index NUMBER;
10977 
10978 	l_last_trip_index 	NUMBER;
10979 	l_last_carrier_index 	NUMBER;
10980 	l_last_stop_index 	NUMBER;
10981 	l_last_dleg_index	NUMBER;
10982 
10983 
10984 	i NUMBER;
10985 	j NUMBER;
10986 
10987 	l_cached_first_trip_flag VARCHAR2(1);
10988 
10989 
10990 l_return_status VARCHAR2(1);
10991 
10992 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
10993 
10994 	l_warning_count 	NUMBER:=0;
10995 BEGIN
10996 
10997 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
10998 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'TL_BUILD_CACHE_FOR_DLV_COMPARE','start');
10999 
11000 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
11001 
11002 	Initialize_Cache_Indices(
11003 		x_trip_index=>	l_trip_index,
11004 		x_stop_index=>	l_stop_index,
11005 		x_dleg_index=>	l_dleg_index,
11006 		x_carrier_index=>l_carrier_index,
11007 		x_child_dleg_index=>l_child_dleg_index,
11008 		x_return_status=> l_return_status);
11009 
11010 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
11011 	THEN
11012 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
11013 	       THEN
11014 		  raise FTE_FREIGHT_PRICING_UTIL.g_tl_init_cache_indices_fail;
11015 	       END IF;
11016 	END IF;
11017 
11018 
11019 	l_cached_first_trip_flag:='N';
11020 	i:=p_lane_rows.FIRST;
11021 
11022 	-- Query up the trip/stops/dleg and cache it
11023 	WHILE (p_lane_rows.EXISTS(i) AND p_schedule_rows.EXISTS(i) AND
11024 	p_vehicle_rows.EXISTS(i) AND (l_cached_first_trip_flag='N'))
11025 	LOOP
11026 
11027 
11028 		Cache_First_Delivery_Lane(
11029 		p_wsh_delivery_id =>p_wsh_delivery_id,
11030 		p_lane_id =>p_lane_rows(i),
11031 		p_schedule_id =>p_schedule_rows(i),
11032 	        p_dep_date =>p_dep_date,
11033 	        p_arr_date =>p_arr_date,
11034 		p_pickup_location=>p_pickup_location_id,
11035 		p_dropoff_location=>p_dropoff_location_id,
11036 		p_vehicle_type_id => p_vehicle_rows(i),
11037 		x_trip_index => l_trip_index,
11038 		x_carrier_index => l_carrier_index,
11039 		x_stop_index => l_stop_index,
11040 		x_dleg_index => l_dleg_index ,
11041 		x_return_status =>l_return_status);
11042 
11043 
11044 
11045 		  l_cached_first_trip_flag:='Y';
11046 
11047 		  IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
11048 		  THEN
11049 		         IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
11050 		         THEN
11051 
11052 		         	Delete_Cache(x_return_status=>l_return_status);
11053 
11054 				IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
11055 				THEN
11056 				       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
11057 				       THEN
11058 					  raise FTE_FREIGHT_PRICING_UTIL.g_tl_delete_cache_fail;
11059 				       END IF;
11060 				END IF;
11061 
11062 				Initialize_Cache_Indices(
11063 					x_trip_index=>	l_trip_index,
11064 					x_stop_index=>	l_stop_index,
11065 					x_dleg_index=>	l_dleg_index,
11066 					x_carrier_index=>l_carrier_index,
11067 					x_child_dleg_index=>l_child_dleg_index,
11068 					x_return_status=> l_return_status);
11069 
11070 				IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
11071 				THEN
11072 				       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
11073 				       THEN
11074 					  raise FTE_FREIGHT_PRICING_UTIL.g_tl_init_cache_indices_fail;
11075 				       END IF;
11076 				END IF;
11077 
11078 				l_cached_first_trip_flag:='N';
11079 		         END IF;
11080 		END IF;
11081 
11082 		i:=p_lane_rows.NEXT(i);
11083 
11084 	END LOOP;
11085 
11086 	IF (l_cached_first_trip_flag='N')
11087 	THEN
11088 
11089 
11090 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_no_trips_cached;
11091 
11092 	END IF;
11093 
11094 	--The first lane/schedule has been cached
11095 	--For the remaining lanes/schedules we shall copy the data we captured above
11096 	--and alter the UOMs according to the lanes
11097 
11098 
11099 
11100 
11101 	--Alter and copy into cache for each lane
11102 
11103 
11104 
11105 	WHILE ( (i IS NOT NULL) AND (p_lane_rows.EXISTS(i)))
11106 	LOOP
11107 
11108 		IF (p_lane_rows.EXISTS(i) AND p_schedule_rows.EXISTS(i) AND p_vehicle_rows.EXISTS(i)
11109 			AND ((p_lane_rows(i) IS NOT NULL) OR (p_schedule_rows(i) IS NOT NULL) ))
11110 		THEN
11111 
11112 			--Store all the indices
11113 
11114 			l_last_trip_index:=l_trip_index;
11115 			l_last_carrier_index:=l_carrier_index;
11116 			l_last_stop_index:=l_stop_index;
11117 			l_last_dleg_index:=l_dleg_index;
11118 
11119 
11120 
11121 			Cache_Next_Trip_Lane(
11122 				p_trip_id=>FAKE_TRIP_ID,
11123 				p_lane_id=> p_lane_rows(i),
11124 				p_schedule_id=> p_schedule_rows(i),
11125 				p_vehicle=> p_vehicle_rows(i) ,
11126 				x_trip_index => l_trip_index,
11127 				x_carrier_index=>l_carrier_index,
11128 				x_stop_index=>l_stop_index,
11129 				x_dleg_index=>l_dleg_index,
11130 				x_child_dleg_index=>l_child_dleg_index,
11131 				x_return_status=>l_return_status);
11132 
11133 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
11134 			THEN
11135 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
11136 			       THEN
11137 				   l_warning_count:=l_warning_count+1;
11138 			       	   IF (p_schedule_rows(i) IS NOT NULL)
11139 			       	   THEN
11140 
11141 			       	   	   FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_WRN,'Failed to cache Delivery'
11142 			       	   	   ||p_wsh_delivery_id||' schedule '||p_schedule_rows(i)||':g_tl_cmp_trip_sched_fail');
11143 
11144 					   --FTE_FREIGHT_PRICING_UTIL.setmsg (
11145 					--	p_api=>'TL_BUILD_CACHE_FOR_DLV_COMPARE',
11146 					--	p_exc=>'g_tl_cmp_trip_sched_fail',
11147 					--	p_msg_type=>'W',
11148 					--	p_trip_id=> p_wsh_trip_id,
11149 					--	p_schedule_id=>p_schedule_rows(i));
11150 				    ELSE
11151 
11152 			       	   	   FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_WRN,'Failed to cache delivery'
11153 			       	   	   ||p_wsh_delivery_id||' lane '||p_lane_rows(i)||':g_tl_cmp_trip_lane_fail');
11154 
11155 					--   FTE_FREIGHT_PRICING_UTIL.setmsg (
11156 					--	p_api=>'TL_BUILD_CACHE_FOR_DLV_COMPARE',
11157 					--	p_exc=>'g_tl_cmp_trip_lane_fail',
11158 					--	p_msg_type=>'W',
11159 					--	p_trip_id=> p_wsh_trip_id,
11160 					--	p_lane_id=>p_lane_rows(i));
11161 
11162 
11163 				    END IF;
11164 
11165 				--Restore indices
11166 
11167 				l_trip_index:=l_last_trip_index;
11168 				l_carrier_index:=l_last_carrier_index;
11169 				l_stop_index:=l_last_stop_index;
11170 				l_dleg_index:=l_last_dleg_index;
11171 
11172 
11173 				--DELETE Newly added cache
11174 
11175 				Partially_Delete_Cache(
11176 					p_trip_index=>l_trip_index,
11177 					p_carrier_index=>l_carrier_index,
11178 					p_stop_index=>l_stop_index,
11179 					p_dleg_index=>l_dleg_index,
11180 					p_child_dleg_index=>l_child_dleg_index);
11181 
11182 			       END IF;
11183 			END IF;
11184 
11185 
11186 
11187 
11188 		ELSE
11189 
11190 			--FTE_FREIGHT_PRICING_UTIL.setmsg (
11191 			--	p_api=>'TL_BUILD_CACHE_FOR_DLV_COMPARE',
11192 			--	p_exc=>'g_tl_no_lane_sched_veh',
11193 			--	p_trip_id=>p_wsh_trip_id);
11194 
11195 			raise FTE_FREIGHT_PRICING_UTIL.g_tl_no_lane_sched_veh;
11196 
11197 		END IF;
11198 
11199 		i:=p_lane_rows.NEXT(i);
11200 
11201 	END LOOP;
11202 
11203         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_BUILD_CACHE_FOR_DLV_COMPARE');
11204 
11205 	IF (l_warning_count > 0)
11206 	THEN
11207 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
11208 	END IF;
11209 EXCEPTION
11210 
11211 
11212 
11213   WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_no_trips_cached THEN
11214    	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
11215    	FTE_FREIGHT_PRICING_UTIL.set_exception('TL_BUILD_CACHE_FOR_DLV_COMPARE',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_no_trips_cached');
11216    	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_BUILD_CACHE_FOR_DLV_COMPARE');
11217 
11218   WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_init_cache_indices_fail THEN
11219    	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
11220    	FTE_FREIGHT_PRICING_UTIL.set_exception('TL_BUILD_CACHE_FOR_DLV_COMPARE',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_init_cache_indices_fail');
11221    	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_BUILD_CACHE_FOR_DLV_COMPARE');
11222 
11223 
11224    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_cache_first_trp_lane_fail THEN
11225         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
11226         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_BUILD_CACHE_FOR_DLV_COMPARE',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_cache_first_trp_lane_fail');
11227         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_BUILD_CACHE_FOR_DLV_COMPARE');
11228 
11229    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_no_lane_sched_veh THEN
11230         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
11231         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_BUILD_CACHE_FOR_DLV_COMPARE',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_no_lane_sched_veh');
11232         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_BUILD_CACHE_FOR_DLV_COMPARE');
11233 
11234 
11235    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_delete_cache_fail THEN
11236         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
11237         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_BUILD_CACHE_FOR_DLV_COMPARE',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_delete_cache_fail');
11238         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_BUILD_CACHE_FOR_DLV_COMPARE');
11239 
11240    WHEN others THEN
11241         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
11242         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_BUILD_CACHE_FOR_DLV_COMPARE',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
11243         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
11244         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_BUILD_CACHE_FOR_DLV_COMPARE');
11245 END TL_BUILD_CACHE_FOR_DLV_COMPARE;
11246 
11247 
11248 
11249 
11250 PROCEDURE TL_BUILD_CACHE_FOR_LCS(
11251 	p_wsh_trip_id IN Number ,
11252 	p_lane_rows IN dbms_utility.number_array ,
11253 	p_schedule_rows IN dbms_utility.number_array ,
11254 	p_vehicle_rows IN  dbms_utility.number_array,
11255 	x_return_status OUT NOCOPY Varchar2) IS
11256 
11257 
11258 
11259 l_vehicle_type_id NUMBER;
11260 l_vehicle_rows dbms_utility.number_array;
11261 l_schedule_rows dbms_utility.number_array;
11262 l_return_status VARCHAR2(1);
11263 
11264 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
11265 i NUMBER;
11266 
11267 	l_warning_count 	NUMBER:=0;
11268 BEGIN
11269 
11270 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
11271 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'TL_BUILD_CACHE_FOR_LCS','start');
11272 
11273 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
11274 
11275 
11276 
11277 	TL_BUILD_CACHE_FOR_TRP_COMPARE(
11278 		p_wsh_trip_id=>	p_wsh_trip_id,
11279 		p_lane_rows=>	p_lane_rows,
11280 		p_schedule_rows=>	p_schedule_rows,
11281 		p_vehicle_rows=>	p_vehicle_rows,
11282 		x_return_status=>	l_return_status);
11283 
11284 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
11285 	THEN
11286 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
11287 	       THEN
11288 
11289 		  raise FTE_FREIGHT_PRICING_UTIL.g_tl_bld_cache_trp_cmp_fail;
11290 	       END IF;
11291 	END IF;
11292 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_BUILD_CACHE_FOR_LCS');
11293 
11294 	IF (l_warning_count > 0)
11295 	THEN
11296 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
11297 	END IF;
11298 EXCEPTION
11299 
11300 
11301 
11302    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_vehicle_type_fail THEN
11303 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
11304 	FTE_FREIGHT_PRICING_UTIL.set_exception('TL_BUILD_CACHE_FOR_LCS',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_vehicle_type_fail');
11305 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_BUILD_CACHE_FOR_LCS');
11306 
11307 
11308    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_bld_cache_trp_cmp_fail THEN
11309 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
11310 	FTE_FREIGHT_PRICING_UTIL.set_exception('TL_BUILD_CACHE_FOR_LCS',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_bld_cache_trp_cmp_fail');
11311 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_BUILD_CACHE_FOR_LCS');
11312 
11313 
11314    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_vehicle_type THEN
11315 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
11316 	FTE_FREIGHT_PRICING_UTIL.set_exception('TL_BUILD_CACHE_FOR_LCS',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_trp_no_vehicle_type');
11317 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_BUILD_CACHE_FOR_LCS');
11318 
11319    WHEN others THEN
11320         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
11321         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_BUILD_CACHE_FOR_LCS',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
11322         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
11323         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_BUILD_CACHE_FOR_LCS');
11324 
11325 
11326 END TL_BUILD_CACHE_FOR_LCS;
11327 
11328 PROCEDURE Test_Mileage IS
11329 
11330 l_location_tab FTE_DIST_INT_PKG.fte_dist_input_tab;
11331 l_location_rec FTE_DIST_INT_PKG.fte_dist_input_rec;
11332 l_location_log_tab FTE_DIST_INT_PKG.fte_dist_output_message_tab;
11333 
11334 l_location_out_tab FTE_DIST_INT_PKG.fte_dist_output_tab;
11335 
11336 l_return_message VARCHAR2(32767);
11337 
11338 l_return_status VARCHAR2(1);
11339 
11340 
11341 	l_warning_count 	NUMBER:=0;
11342 BEGIN
11343 
11344 	FOR i in 1..11
11345 	LOOP
11346 		l_location_tab(i):=l_location_rec;
11347 
11348 	END LOOP;
11349 
11350 	/*
11351 
11352 	l_location_tab(1).origin_id:=207;
11353 	l_location_tab(2).origin_id:=1091;
11354 	l_location_tab(3).origin_id:=204;
11355 	l_location_tab(4).origin_id:=1067;
11356 	l_location_tab(5).origin_id:=1876;
11357 	l_location_tab(6).origin_id:=207;
11358 	l_location_tab(7).origin_id:=204;
11359 	l_location_tab(8).origin_id:=204;
11360 	l_location_tab(9).origin_id:=1067;
11361 	l_location_tab(10).origin_id:=1876;
11362 	l_location_tab(11).origin_id:=207;
11363 
11364 
11365 	l_location_tab(1).destination_id:=1091;
11366 	l_location_tab(2).destination_id:=204;
11367 	l_location_tab(3).destination_id:=1067;
11368 	l_location_tab(4).destination_id:=1876;
11369 	l_location_tab(5).destination_id:=2881;
11370 	l_location_tab(6).destination_id:=1091;
11371 	l_location_tab(7).destination_id:=1067;
11372 	l_location_tab(8).destination_id:=2881;
11373 	l_location_tab(9).destination_id:=1876;
11374 	l_location_tab(10).destination_id:=2881;
11375 	l_location_tab(11).destination_id:=2881;
11376 	*/
11377 
11378 	l_location_tab(1).origin_id:=207;
11379 	l_location_tab(2).origin_id:=1091;
11380 	l_location_tab(3).origin_id:=204;
11381 	l_location_tab(4).origin_id:=1067;
11382 	l_location_tab(5).origin_id:=1876;
11383 	l_location_tab(6).origin_id:=207;
11384 	l_location_tab(7).origin_id:=204;
11385 	l_location_tab(8).origin_id:=204;
11386 	l_location_tab(9).origin_id:=1067;
11387 	l_location_tab(10).origin_id:=1876;
11388 	l_location_tab(11).origin_id:=207;
11389 
11390 
11391 	l_location_tab(1).destination_id:=1091;
11392 	l_location_tab(2).destination_id:=204;
11393 	l_location_tab(3).destination_id:=1067;
11394 	l_location_tab(4).destination_id:=1876;
11395 	l_location_tab(5).destination_id:=2881;
11396 	l_location_tab(6).destination_id:=1093;
11397 	l_location_tab(7).destination_id:=1068;
11398 	l_location_tab(8).destination_id:=2881;
11399 	l_location_tab(9).destination_id:=1878;
11400 	l_location_tab(10).destination_id:=2882;
11401 	l_location_tab(11).destination_id:=2881;
11402 
11403 
11404 
11405  	FTE_DIST_INT_PKG.GET_DISTANCE_TIME(
11406 	    p_distance_input_tab=> l_location_tab,
11407 	    p_location_region_flag=> 'L',
11408 	    p_messaging_yn => 'Y',
11409 	    p_api_version  => '1',
11410 	    p_command => NULL,
11411 	    x_distance_output_tab=> l_location_out_tab,
11412 	    x_distance_message_tab => l_location_log_tab,
11413 	    x_return_message =>l_return_message,
11414 	    x_return_status => l_return_status);
11415 
11416 
11417 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
11418 	THEN
11419 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
11420 	       THEN
11421 	       	    FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_WRN,' Interface to mileage tables failed, using approximate distances, time');
11422 	       	    --l_mileage_api_fail:='Y';
11423 		  --raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_dist_time_fail;
11424 	       END IF;
11425 	END IF;
11426 
11427 	 FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'Inputs');
11428 
11429 	FOR i in l_location_tab.FIRST .. l_location_tab.LAST
11430 	LOOP
11431 			FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,' MILEAGE distances, time:'||l_location_tab(i).origin_id || ' : '||
11432 			l_location_tab(i).destination_id);
11433 
11434 	END LOOP;
11435 
11436 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'Outputs');
11437 
11438 	FOR i in l_location_out_tab.FIRST .. l_location_out_tab.LAST
11439 	LOOP
11440 			FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,' MILEAGE distances, time:'||l_location_out_tab(i).origin_location_id || ' : '||
11441 			l_location_out_tab(i).destination_location_id||' : '||l_location_out_tab(i).distance||' : '||
11442 			l_location_out_tab(i).distance_uom||' : '||l_location_out_tab(i).transit_time||' : '|| l_location_out_tab(i).transit_time_uom);
11443 
11444 	END LOOP;
11445 
11446 END;
11447 
11448 
11449 PROCEDURE Get_Trip_Carrier(
11450 	p_trip_id IN NUMBER,
11451 	x_trip_rec IN OUT NOCOPY TL_trip_data_input_rec_type,
11452 	x_carrier_rec IN OUT NOCOPY TL_CARRIER_PREF_REC_TYPE,
11453 	x_return_status OUT NOCOPY VARCHAR2) IS
11454 
11455 
11456 
11457 	CURSOR get_trip_info(c_trip_id IN NUMBER ) RETURN
11458 	TL_trip_data_input_rec_type IS
11459 	SELECT	t.trip_id,
11460 		t.lane_id,
11461 		null,
11462 		t.service_level,
11463 		t.carrier_id,
11464 		t.mode_of_transport,
11465 		t.vehicle_item_id,
11466 		null,
11467 		0,
11468 		0,
11469 		0,
11470 		0,
11471 		0,
11472 		0,
11473 		null, -- t.total_trip_distance,
11474 		null, -- t.total_direct_distance,
11475 		null,
11476 		0,
11477 		0,
11478 		'N',
11479 		null,
11480 		null,
11481 		null,
11482 		null,
11483 		null,
11484 		null
11485 	FROM  	wsh_trips t
11486 	WHERE 	 t.trip_id=c_trip_id;
11487 
11488 --Gets info from wsh_carriers
11489 
11490 CURSOR get_carrier_pref(c_carrier_id IN NUMBER) RETURN TL_CARRIER_PREF_REC_TYPE IS
11491 	SELECT	c.carrier_id,
11492 		c.max_out_of_route,
11493 		c.min_cm_distance,
11494 		c.min_cm_time,
11495 		c.cm_free_dh_mileage,
11496 		c.cm_first_load_discount,
11497 		c.currency_code,
11498 		c.cm_rate_variant,
11499 		c.unit_rate_basis,
11500 		null,
11501 		c.weight_uom,
11502 		null,
11503 		c.volume_uom,
11504 		null,
11505 		c.distance_uom,
11506 		null,
11507 		c.time_uom,
11508 		c.origin_dstn_surcharge_level,
11509 		c.distance_calculation_method,
11510 		c.dim_dimensional_factor,
11511 		c.dim_weight_uom,
11512 		c.dim_volume_uom,
11513 		c.dim_dimension_uom,
11514 		c.dim_min_pack_vol
11515 	FROM 	WSH_CARRIERS c
11516 	WHERE 	c.carrier_id=c_carrier_id;
11517 
11518 
11519 ----
11520 
11521 --Gets info from wsh_carrier_services
11522 
11523 CURSOR get_carrier_service_pref(c_carrier_id IN NUMBER,c_service_level IN
11524 VARCHAR2) RETURN TL_CARRIER_PREF_REC_TYPE IS
11525 	SELECT	c.carrier_id,
11526 		c.max_out_of_route,
11527 		c.min_cm_distance,
11528 		c.min_cm_time,
11529 		c.cm_free_dh_mileage,
11530 		c.cm_first_load_discount,
11531 		null,
11532 		c.cm_rate_variant,
11533 		c.unit_rate_basis,
11534 		null,
11535 		null,
11536 		null,
11537 		null,
11538 		null,
11539 		null,
11540 		null,
11541 		null,
11542 		c.origin_dstn_surcharge_level,
11543 		c.distance_calculation_method,
11544 		c.dim_dimensional_factor,
11545 		c.dim_weight_uom,
11546 		c.dim_volume_uom,
11547 		c.dim_dimension_uom,
11548 		c.dim_min_pack_vol
11549 	FROM 	WSH_CARRIER_SERVICES c
11550 	WHERE 	c.carrier_id=c_carrier_id and
11551 		c.service_level=c_service_level;
11552 
11553 
11554 
11555 	l_carrier_rec	TL_CARRIER_PREF_REC_TYPE;
11556 	l_carrier_service_rec TL_CARRIER_PREF_REC_TYPE;
11557 
11558 	l_return_status VARCHAR2(1);
11559 
11560 
11561 	l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
11562 
11563 	l_warning_count 	NUMBER:=0;
11564 BEGIN
11565 
11566 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
11567 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Get_Trip_Carrier','start');
11568 
11569 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
11570 
11571 
11572 	OPEN get_trip_info(p_trip_id);
11573 	FETCH get_trip_info INTO x_trip_rec;
11574 	IF (get_trip_info%NOTFOUND)
11575 	THEN
11576 
11577 		CLOSE get_trip_info;
11578 
11579 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_trip_info_fail;
11580 
11581 	END IF;
11582 	CLOSE get_trip_info;
11583 
11584 	--Get Carrier pref
11585 
11586 	IF (x_trip_rec.carrier_id IS NULL)
11587 	THEN
11588 
11589 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_carrier_id;
11590 
11591 	END IF;
11592 
11593 	IF (x_trip_rec.service_type IS NOT NULL)
11594 	THEN
11595 
11596 		OPEN
11597 		get_carrier_service_pref(
11598 			x_trip_rec.carrier_id,
11599 			x_trip_rec.service_type);
11600 
11601 		FETCH get_carrier_service_pref INTO l_carrier_service_rec;
11602 		IF (get_carrier_service_pref%NOTFOUND)
11603 		THEN
11604 
11605 			--No carrier_service_pref found, will have to use only carrier
11606 			--pref
11607 			FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'No carrier Service entry found');
11608 
11609 		END IF;
11610 		CLOSE get_carrier_service_pref;
11611 	END IF;
11612 
11613 	OPEN  get_carrier_pref(x_trip_rec.carrier_id);
11614 	FETCH get_carrier_pref INTO l_carrier_rec;
11615 	IF (get_carrier_pref%NOTFOUND)
11616 	THEN
11617 
11618 
11619 		CLOSE get_carrier_pref;
11620 
11621 
11622 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_carrier_pref_fail;
11623 
11624 
11625 	END IF;
11626 	CLOSE get_carrier_pref;
11627 
11628 
11629 
11630 
11631 	Combine_Carrier_Info(
11632 		p_carrier_pref_rec	=>	l_carrier_rec,
11633 		x_carrier_service_pref_rec	=>	l_carrier_service_rec,
11634 		x_return_status 	=> l_return_status);
11635 
11636 
11637 
11638 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
11639 	THEN
11640 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
11641 	       THEN
11642 	  		raise FTE_FREIGHT_PRICING_UTIL.g_tl_combine_carrier_fail;
11643 	       END IF;
11644 	END IF;
11645 
11646 
11647 
11648 	x_carrier_rec:=l_carrier_service_rec;
11649 
11650         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Trip_Carrier');
11651 
11652 	IF (l_warning_count > 0)
11653 	THEN
11654 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
11655 	END IF;
11656 
11657 
11658 EXCEPTION
11659 
11660    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_trip_info_fail THEN
11661 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
11662 	FTE_FREIGHT_PRICING_UTIL.set_exception('Get_Trip_Carrier',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_trip_info_fail');
11663 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Trip_Carrier');
11664 
11665 
11666    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_carrier_id THEN
11667 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
11668 	FTE_FREIGHT_PRICING_UTIL.set_exception('Get_Trip_Carrier',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_trp_no_carrier_id');
11669 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Trip_Carrier');
11670 
11671    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_carrier_pref_fail THEN
11672 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
11673 	FTE_FREIGHT_PRICING_UTIL.set_exception('Get_Trip_Carrier',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_carrier_pref_fail');
11674 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Trip_Carrier');
11675 
11676    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_combine_carrier_fail THEN
11677 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
11678 	FTE_FREIGHT_PRICING_UTIL.set_exception('Get_Trip_Carrier',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_combine_carrier_fail');
11679 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Trip_Carrier');
11680 
11681 
11682    WHEN others THEN
11683         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
11684         FTE_FREIGHT_PRICING_UTIL.set_exception('Get_Trip_Carrier',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
11685         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
11686         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Trip_Carrier');
11687 
11688 
11689 
11690 END Get_Trip_Carrier;
11691 
11692 PROCEDURE Get_Trip_Weight(
11693 	p_trip_rec IN TL_trip_data_input_rec_type,
11694 	p_carrier_rec IN TL_CARRIER_PREF_REC_TYPE,
11695 	x_weight OUT NOCOPY NUMBER,
11696 	x_return_status OUT NOCOPY VARCHAR2) IS
11697 
11698 
11699 CURSOR get_dlv_details(c_trip_id IN NUMBER) RETURN
11700 FTE_FREIGHT_PRICING.shipment_line_rec_type IS
11701 	SELECT	dd.delivery_detail_id,
11702 		dl.delivery_id,
11703 		dl.delivery_leg_id,
11704 		dl.reprice_required,
11705 		da.parent_delivery_detail_id,
11706 		dd.customer_id,
11707 		dd.sold_to_contact_id,
11708 		dd.inventory_item_id,
11709 		dd.item_description,
11710 		dd.hazard_class_id,
11711 		dd.country_of_origin,
11712 		dd.classification,
11713 		dd.requested_quantity,
11714 		dd.requested_quantity_uom,
11715 		dd.master_container_item_id,
11716 		dd.detail_container_item_id,
11717 		dd.customer_item_id,
11718 		dd.net_weight,
11719 		dd.organization_id,
11720 		dd.container_flag,
11721 		dd.container_type_code,
11722 		dd.container_name,
11723 		dd.fill_percent,
11724 		dd.gross_weight,
11725 		dd.currency_code,dd.freight_class_cat_id,
11726 		dd.commodity_code_cat_id,
11727 		dd.weight_uom_code ,
11728 		dd.volume,
11729 		dd.volume_uom_code,
11730 		null,null,null,null,null,null,null,null,null,null,null,null,
11731 		null,null,null,null,null,null,null,null,null,null,null,null,
11732 		null,null,null,null,null,null,null,null,null,null,null,null,
11733 		null,null,null,
11734 		da.type,
11735 		da.parent_delivery_id,
11736 		dl.parent_delivery_leg_id
11737 	FROM 	wsh_delivery_assignments da,
11738 		wsh_delivery_legs dl ,
11739 		wsh_delivery_details dd,
11740 		wsh_trip_stops s
11741 	WHERE 	da.delivery_id=dl.delivery_id and
11742 		s.trip_id=c_trip_id and
11743 		dl.pick_up_stop_id=s.stop_id and
11744 		da.parent_delivery_detail_id is null and
11745 		da.delivery_detail_id = dd.delivery_detail_id and
11746 		((da.type IS NULL OR da.type='S')
11747 		OR
11748 		(da.type='O' and dl.parent_delivery_leg_id is null)
11749 		)
11750 	ORDER BY
11751 		da.delivery_id;
11752 
11753 
11754 	l_quantity NUMBER;
11755 	l_dlv_detail_rec FTE_FREIGHT_PRICING.shipment_line_rec_type;
11756 
11757 	l_return_status VARCHAR2(1);
11758 
11759 
11760 	l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
11761 
11762 	l_warning_count 	NUMBER:=0;
11763 BEGIN
11764 
11765 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
11766 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Get_Trip_Weight','start');
11767 
11768 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
11769 
11770 
11771 	x_weight:=0;
11772 	OPEN get_dlv_details(p_trip_rec.trip_id);
11773 	FETCH get_dlv_details INTO l_dlv_detail_rec;
11774 	WHILE (get_dlv_details%FOUND)
11775 	LOOP
11776 		l_quantity:=NULL;
11777 		IF((l_dlv_detail_rec.weight_uom_code IS NOT NULL )
11778 		 AND (l_dlv_detail_rec.gross_weight IS NOT NULL))
11779 		THEN
11780 			l_quantity:=FTE_FREIGHT_PRICING_UTIL.convert_uom(
11781 				l_dlv_detail_rec.weight_uom_code,
11782 				p_carrier_rec.weight_uom,
11783 				l_dlv_detail_rec.gross_weight,
11784 				0);
11785 
11786 		END IF;
11787 
11788 		IF (l_quantity IS NOT NULL)
11789 		THEN
11790 			x_weight:=x_weight+l_quantity;
11791 
11792 		ELSE
11793 			x_weight:=NULL;
11794 			CLOSE get_dlv_details;
11795 			raise FTE_FREIGHT_PRICING_UTIL.g_tl_dtl_no_gross_weight;
11796 		END IF;
11797 
11798 		FETCH get_dlv_details INTO l_dlv_detail_rec;
11799 	END LOOP;
11800 	CLOSE get_dlv_details;
11801 
11802         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Trip_Weight');
11803 
11804 	IF (l_warning_count > 0)
11805 	THEN
11806 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
11807 	END IF;
11808 
11809 
11810 EXCEPTION
11811 
11812    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_dtl_no_gross_weight THEN
11813 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
11814 	FTE_FREIGHT_PRICING_UTIL.set_exception('Get_Trip_Weight',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_dtl_no_gross_weight');
11815 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Trip_Weight');
11816 
11817    WHEN others THEN
11818         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
11819         FTE_FREIGHT_PRICING_UTIL.set_exception('Get_Trip_Weight',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
11820         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
11821         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Trip_Weight');
11822 
11823 
11824 END Get_Trip_Weight;
11825 
11826 PROCEDURE Get_Trip_Distance(
11827 	p_trip_rec IN TL_trip_data_input_rec_type,
11828 	p_carrier_rec IN TL_CARRIER_PREF_REC_TYPE,
11829 	x_distance OUT NOCOPY NUMBER,
11830 	x_return_status OUT NOCOPY VARCHAR2) IS
11831 
11832 
11833 --Gets all the stops for a given trip ,ordered by sequence number
11834 
11835 CURSOR get_stop_info(c_trip_id IN NUMBER) RETURN TL_trip_stop_input_rec_type IS
11836 	SELECT 	s.stop_id ,
11837 		s.trip_id,
11838 		s.stop_location_id,
11839 		NVL(s.wkday_layover_stops,0),
11840 		NVL(s.wkend_layover_stops,0),
11841 		null,
11842 		null,
11843 		0,
11844 		0,
11845 		0,
11846 		0,
11847 		null,
11848 		0,
11849 		0,
11850 		0,
11851 		0,
11852 		null,
11853 		null,
11854 		s.planned_arrival_date,
11855 		s.planned_departure_date,
11856 		null,
11857 		s.physical_stop_id,
11858 		s.physical_location_id,
11859 		null,
11860 		null,
11861 		null,
11862 		null,
11863 		null,
11864 		null,
11865 		null,
11866 		null,
11867 		null,
11868 		null,
11869 		null,
11870 		null,
11871 		null,
11872 		null,
11873 		null,
11874 		null,
11875 		null
11876 	FROM wsh_trip_stops s
11877 	WHERE  s.trip_id=c_trip_id AND (s.physical_stop_id is NULL)
11878 	ORDER by s.stop_sequence_number;
11879 
11880 
11881 	l_carrier_index NUMBER;
11882 	l_trip_index NUMBER;
11883 	l_stop_index NUMBER;
11884 	l_dleg_index NUMBER;
11885 	l_child_dleg_index NUMBER;
11886 	l_current_weight NUMBER;
11887 	l_previous_weight NUMBER;
11888 	l_stop_count NUMBER;
11889 	l_stop_rec TL_TRIP_STOP_INPUT_REC_TYPE;
11890 	l_stop_distance_tab TL_stop_distance_tab_type;
11891 	l_trip_rec TL_trip_data_input_rec_type;
11892 	l_initial_stop_index NUMBER;
11893 	l_initial_dleg_index NUMBER;
11894 
11895 	l_return_status VARCHAR2(1);
11896 
11897 
11898 	l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
11899 
11900 	l_warning_count 	NUMBER:=0;
11901 BEGIN
11902 
11903 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
11904 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Get_Trip_Distance','start');
11905 
11906 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
11907 
11908 
11909 	x_distance:=NULL;
11910 
11911 	l_trip_rec:=p_trip_rec;
11912 
11913 	Delete_Cache(x_return_status=>l_return_status);
11914 
11915 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
11916 	THEN
11917 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
11918 	       THEN
11919 		  raise FTE_FREIGHT_PRICING_UTIL.g_tl_delete_cache_fail;
11920 	       END IF;
11921 	END IF;
11922 
11923 
11924 	Initialize_Cache_Indices(
11925 		x_trip_index=>	l_trip_index,
11926 		x_stop_index=>	l_stop_index,
11927 		x_dleg_index=>	l_dleg_index,
11928 		x_carrier_index=>l_carrier_index,
11929 		x_child_dleg_index=>l_child_dleg_index,
11930 		x_return_status=> l_return_status);
11931 
11932 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
11933 	THEN
11934 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
11935 	       THEN
11936 	          raise FTE_FREIGHT_PRICING_UTIL.g_tl_init_cache_indices_fail;
11937 	       END IF;
11938 	END IF;
11939 
11940 	l_initial_stop_index:=l_stop_index;
11941 	l_initial_dleg_index:=l_dleg_index;
11942 
11943 	l_current_weight:=0;
11944 	l_previous_weight:=NULL;
11945 
11946 
11947 	--Query all Stop for the trip
11948 
11949 	l_stop_count:=0;
11950 	OPEN get_stop_info(l_trip_rec.trip_id);
11951 	FETCH get_stop_info INTO l_stop_rec;
11952 	WHILE(get_stop_info%FOUND)
11953 	LOOP
11954 
11955 		--11.5.10+
11956 		IF (l_stop_rec.physical_location_id IS NOT NULL)
11957 		THEN
11958 			l_stop_rec.location_id:=l_stop_rec.physical_location_id;
11959 		END IF;
11960 
11961 		--Prepare inputs for distance query
11962 		IF (l_stop_count>0)
11963 		THEN
11964 
11965 
11966 			-- Create inputs for query to mileage tables
11967 
11968 
11969 			Add_Inputs_For_Distance(
11970 			 p_from_stop_rec=> g_tl_trip_stop_rows(l_stop_index-1),
11971 			 p_to_stop_rec=> 	l_stop_rec,
11972 			 p_empty_flag=>	'Y',
11973 			 x_stop_distance_tab=>	l_stop_distance_tab,
11974 			 x_return_status	=>	l_return_status);
11975 
11976 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
11977 			THEN
11978 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
11979 			       THEN
11980 
11981 			       	  CLOSE get_stop_info;
11982 
11983 			          raise FTE_FREIGHT_PRICING_UTIL.g_tl_add_ip_dist_fail;
11984 			       END IF;
11985 			END IF;
11986 
11987 		END IF;
11988 
11989 
11990 		--Insert Stop info into Cache
11991 
11992 
11993 		g_tl_trip_stop_rows(l_stop_index):=l_stop_rec;
11994 		l_stop_index:=l_stop_index+1;
11995 		l_stop_count:=l_stop_count+1;
11996 
11997 
11998 		FETCH get_stop_info INTO l_stop_rec;
11999 
12000 	END LOOP;
12001 	CLOSE get_stop_info;
12002 
12003 	--Set time,distance of last stop to 0
12004 
12005 	g_tl_trip_stop_rows(l_stop_index-1).distance_to_next_stop:=0;
12006 	g_tl_trip_stop_rows(l_stop_index-1).time_to_next_stop:=0;
12007 
12008 
12009 
12010 
12011 
12012 	--GEt distances/time from mileage table, update, stop, dleg buffer, trip
12013 	--loaded, unlaoded distances
12014 
12015 	Get_Distances(
12016 		p_stop_index	=>	l_initial_stop_index,
12017 		p_dleg_index	=>	l_initial_dleg_index,
12018 		p_carrier_rec	=>	p_carrier_rec,
12019 		x_stop_distance_tab	=>l_stop_distance_tab,
12020 		x_trip_rec	=>	l_trip_rec,
12021 		x_return_status	=>	l_return_status);
12022 
12023 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
12024 	THEN
12025        		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
12026        		THEN
12027 --			FTE_FREIGHT_PRICING_UTIL.setmsg (
12028 --				p_api=>'Cache_Trip',
12029 --				p_exc=>'g_tl_get_distances_fail',
12030 --				p_trip_id=>x_trip_rec.trip_id);
12031 
12032 
12033           		raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_distances_fail;
12034        		END IF;
12035 	END IF;
12036 
12037 
12038 
12039 	IF (p_carrier_rec.distance_calculation_method = 'DIRECT_ROUTE')
12040 	THEN
12041 		x_distance:=l_trip_rec.total_direct_distance;
12042 	ELSE
12043 		x_distance:=l_trip_rec.total_trip_distance;
12044 	END IF;
12045 
12046 
12047 	Delete_Cache(x_return_status=>l_return_status);
12048 
12049 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
12050 	THEN
12051 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
12052 	       THEN
12053 		  raise FTE_FREIGHT_PRICING_UTIL.g_tl_delete_cache_fail;
12054 	       END IF;
12055 	END IF;
12056 
12057         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Trip_Distance');
12058 
12059 	IF (l_warning_count > 0)
12060 	THEN
12061 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
12062 	END IF;
12063 
12064 
12065 EXCEPTION
12066 
12067    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_delete_cache_fail THEN
12068 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
12069 	FTE_FREIGHT_PRICING_UTIL.set_exception('Get_Trip_Distance',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_delete_cache_fail');
12070 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Trip_Distance');
12071 
12072 
12073    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_init_cache_indices_fail THEN
12074 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
12075 	FTE_FREIGHT_PRICING_UTIL.set_exception('Get_Trip_Distance',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_init_cache_indices_fail');
12076 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Trip_Distance');
12077 
12078    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_add_ip_dist_fail THEN
12079 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
12080 	FTE_FREIGHT_PRICING_UTIL.set_exception('Get_Trip_Distance',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_add_ip_dist_fail');
12081 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Trip_Distance');
12082 
12083    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_distances_fail THEN
12084 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
12085 	FTE_FREIGHT_PRICING_UTIL.set_exception('Get_Trip_Distance',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_distances_fail');
12086 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Trip_Distance');
12087 
12088 
12089    WHEN others THEN
12090         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
12091         FTE_FREIGHT_PRICING_UTIL.set_exception('Get_Trip_Distance',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
12092         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
12093         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Get_Trip_Distance');
12094 
12095 
12096 END Get_Trip_Distance;
12097 
12098 PROCEDURE FPA_Get_Trip_Info(
12099     p_trip_id IN NUMBER,
12100     x_distance OUT NOCOPY NUMBER,
12101     x_distance_uom OUT NOCOPY VARCHAR2,
12102     x_weight OUT NOCOPY VARCHAR2,
12103     x_weight_uom OUT NOCOPY VARCHAR2,
12104     x_return_status OUT NOCOPY VARCHAR2) IS
12105 
12106 	l_trip_rec TL_trip_data_input_rec_type;
12107 	l_carrier_rec TL_CARRIER_PREF_REC_TYPE;
12108 
12109 	l_return_status VARCHAR2(1);
12110 
12111 
12112 	l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
12113 
12114 	l_warning_count 	NUMBER:=0;
12115 BEGIN
12116 
12117 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
12118 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'FPA_Get_Trip_Info','start');
12119 
12120 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
12121 
12122 
12123 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'FPA_Trip_Info for trip'||p_trip_id);
12124 	x_distance:=NULL;
12125 	x_distance_uom:=NULL;
12126 	x_weight:=NULL;
12127 	x_weight_uom:=NULL;
12128 
12129 	Get_Trip_Carrier(
12130 		p_trip_id=>p_trip_id,
12131 		x_trip_rec=>l_trip_rec,
12132 		x_carrier_rec=>l_carrier_rec,
12133 		x_return_status=>l_return_status);
12134 
12135 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
12136 	THEN
12137 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
12138 	       THEN
12139 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_trip_info_fail;
12140 	       END IF;
12141 	END IF;
12142 
12143 	x_distance_uom:=l_carrier_rec.distance_uom;
12144 	x_weight_uom:=l_carrier_rec.weight_uom;
12145 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'FPA_Trip_Info Distance method:'
12146 		||l_carrier_rec.distance_calculation_method);
12147 
12148 	Get_Trip_Distance(
12149 		p_trip_rec=>l_trip_rec,
12150 		p_carrier_rec=>l_carrier_rec,
12151 		x_distance=>x_distance,
12152 		x_return_status=>l_return_status);
12153 
12154 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
12155 	THEN
12156 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
12157 	       THEN
12158 	        x_distance:=NULL;
12159 	        FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'FPA_Trip_Info Distance errored');
12160           	--raise FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_total_trp_distance;
12161 	       END IF;
12162 	END IF;
12163 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'FPA_Trip_Info Distance'||x_distance||':'||
12164 		x_distance_uom);
12165 	Get_Trip_Weight(
12166 		p_trip_rec=>l_trip_rec,
12167 		p_carrier_rec=>l_carrier_rec,
12168 		x_weight=>x_weight,
12169 		x_return_status=>l_return_status);
12170 
12171 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
12172 	THEN
12173 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
12174 	       THEN
12175 	       	x_weight:=NULL;
12176 	        FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'FPA_Trip_Info Weight errored');
12177           	--raise FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_weight;
12178 	       END IF;
12179 	END IF;
12180 
12181 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'FPA_Trip_Info Weight'||x_weight||':'||
12182 		x_weight_uom);
12183 
12184 
12185         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'FPA_Get_Trip_Info');
12186 
12187 	IF (l_warning_count > 0)
12188 	THEN
12189 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
12190 	END IF;
12191 
12192 
12193 
12194 EXCEPTION
12195 
12196    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_trip_info_fail THEN
12197 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
12198 	FTE_FREIGHT_PRICING_UTIL.set_exception('FPA_Get_Trip_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_trip_info_fail');
12199 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'FPA_Get_Trip_Info');
12200 
12201 
12202    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_total_trp_distance THEN
12203 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
12204 	FTE_FREIGHT_PRICING_UTIL.set_exception('FPA_Get_Trip_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_trp_no_total_trp_distance');
12205 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'FPA_Get_Trip_Info');
12206 
12207    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_trp_no_weight THEN
12208 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
12209 	FTE_FREIGHT_PRICING_UTIL.set_exception('FPA_Get_Trip_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_trp_no_weight');
12210 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'FPA_Get_Trip_Info');
12211 
12212 
12213    WHEN others THEN
12214         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
12215         FTE_FREIGHT_PRICING_UTIL.set_exception('FPA_Get_Trip_Info',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
12216         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
12217         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'FPA_Get_Trip_Info');
12218 
12219 END FPA_Get_Trip_Info;
12220 
12221 
12222 PROCEDURE Get_Transit_Time_From_Distance(
12223 	p_distance IN NUMBER,
12224 	p_distance_uom IN VARCHAR2,
12225 	p_time_uom IN VARCHAR2,
12226 	x_time IN OUT NOCOPY NUMBER,
12227 	x_return_status OUT NOCOPY Varchar2) IS
12228 
12229   CURSOR c_get_speed IS
12230   SELECT avg_hway_speed
12231   FROM wsh_global_parameters;
12232 
12233   CURSOR c_get_distance_uom IS
12234   SELECT distance_uom
12235   FROM wsh_global_parameters;
12236 
12237   CURSOR c_get_time_uom IS
12238   SELECT time_uom
12239   FROM wsh_global_parameters;
12240 
12241 l_average_speed_value NUMBER;
12242 l_speed_distance_uom VARCHAR2(30);
12243 l_speed_time_uom VARCHAR2(30);
12244 l_time NUMBER;
12245 
12246 
12247 BEGIN
12248 
12249 	  x_time:=NULL;
12250 
12251 
12252 	  OPEN c_get_speed;
12253 	  FETCH c_get_speed INTO l_average_speed_value;
12254 	  CLOSE c_get_speed;
12255 	  OPEN c_get_distance_uom;
12256 	  FETCH c_get_distance_uom INTO l_speed_distance_uom;
12257 	  CLOSE c_get_distance_uom;
12258 	  OPEN c_get_time_uom;
12259 	  FETCH c_get_time_uom INTO l_speed_time_uom;
12260 	  CLOSE c_get_time_uom;
12261 
12262 	  IF ((l_average_speed_value IS NOT NULL)
12263 	  	AND (l_speed_distance_uom IS NOT NULL) AND (l_speed_time_uom IS NOT NULL)
12264 	  	AND (p_distance_uom IS NOT NULL) AND (p_time_uom IS NOT NULL))
12265 	  THEN
12266 
12267 
12268 		l_average_speed_value:=FTE_FREIGHT_PRICING_UTIL.convert_uom(
12269 			l_speed_distance_uom,
12270 			p_distance_uom,
12271 			l_average_speed_value,
12272 			0);
12273 		IF ((l_average_speed_value IS NOT NULL) AND (l_average_speed_value <> 0))
12274 		THEN
12275 			l_time:=p_distance/l_average_speed_value;
12276 
12277 			x_time:=FTE_FREIGHT_PRICING_UTIL.convert_uom(
12278 			l_speed_time_uom,
12279 			p_time_uom,
12280 			l_time,
12281 			0);
12282 
12283 		END IF;
12284 
12285 	  END IF;
12286 
12287 END Get_Transit_Time_From_Distance;
12288 
12289 
12290 PROCEDURE TL_Cache_First_Estimate_Trip(
12291 	p_pickup_location_id IN NUMBER,
12292 	p_dropoff_location_id IN NUMBER,
12293 	p_ship_date IN DATE,
12294 	p_delivery_date IN DATE,
12295 	p_vehicle_type IN NUMBER,
12296 	p_lane_id IN NUMBER,
12297 	p_schedule_id IN NUMBER,
12298 	p_weight IN NUMBER,
12299 	p_weight_uom IN VARCHAR2,
12300 	p_volume IN NUMBER,
12301 	p_volume_uom IN VARCHAR2,
12302 	p_distance IN NUMBER,
12303 	p_distance_uom in VARCHAR2,
12304 	x_trip_index IN OUT NOCOPY NUMBER,
12305 	x_carrier_index IN OUT NOCOPY NUMBER,
12306 	x_stop_index IN OUT NOCOPY NUMBER,
12307 	x_dleg_index IN OUT NOCOPY NUMBER,
12308 	x_return_status OUT NOCOPY Varchar2,
12309     --Bug 6625274
12310     p_origin_id IN NUMBER DEFAULT NULL,
12311     p_destination_id IN NUMBER DEFAULT NULL) IS
12312 
12313 
12314 	CURSOR get_lane_info(c_lane_id IN NUMBER) IS
12315 	SELECT	null,
12316 		l.carrier_id,
12317 		l.service_type_code,
12318 		l.mode_of_transportation_code
12319 	FROM fte_lanes l
12320 	WHERE l.lane_id=c_lane_id;
12321 
12322 	CURSOR get_schedule_info(c_schedule_id IN NUMBER) IS
12323 	SELECT  l.lane_id,
12324 	  	null,
12325 	  	l.carrier_id,
12326 	  	l.service_type_code,
12327 	  	l.mode_of_transportation_code
12328 	FROM 	fte_lanes l,
12329 		fte_schedules s
12330 	WHERE 	s.schedules_id=c_schedule_id and
12331 		s.lane_id=l.lane_id;
12332 
12333 
12334 
12335 	l_trip_rec  TL_trip_data_input_rec_type;
12336 	l_carrier_rec TL_CARRIER_PREF_REC_TYPE;
12337 	l_pickup_stop_rec TL_TRIP_STOP_INPUT_REC_TYPE;
12338 	l_dropoff_stop_rec TL_TRIP_STOP_INPUT_REC_TYPE;
12339 
12340 	l_dleg_rec TL_delivery_leg_rec_type;
12341 	l_dlv_detail_info FTE_FREIGHT_PRICING.shipment_line_rec_type;
12342 
12343 	l_initial_stop_index NUMBER;
12344 	l_initial_dleg_index NUMBER;
12345 	l_stop_distance_tab TL_stop_distance_tab_type;
12346 
12347 	l_return_status VARCHAR2(1);
12348 	l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
12349 	l_warning_count 	NUMBER:=0;
12350 
12351 BEGIN
12352 
12353 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
12354 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'TL_Cache_First_Estimate_Trip','start');
12355 
12356 
12357 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
12358 
12359 
12360 
12361 	--Store initial index values
12362 
12363 	l_initial_stop_index:=x_stop_index;
12364 	l_initial_dleg_index:=x_dleg_index;
12365 
12366 
12367 	IF (p_lane_id IS NOT NULL)
12368 	THEN
12369 		Get_Carrier_Pref_For_Lane(
12370 			p_lane_id =>p_lane_id,
12371 			x_carrier_service_rec=>l_carrier_rec,
12372 			x_return_status=>l_return_status);
12373 
12374 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
12375 		THEN
12376 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
12377 			THEN
12378 				raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_car_prf_for_lane_fail;
12379 			END IF;
12380 		END IF;
12381 	ELSIF (p_schedule_id IS NOT NULL)
12382 	THEN
12383 		Get_Carrier_Pref_For_Schedule(
12384 			p_schedule_id =>p_schedule_id,
12385 			x_carrier_service_rec=>l_carrier_rec,
12386 			x_return_status=>l_return_status);
12387 
12388 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
12389 		THEN
12390 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
12391 			THEN
12392 				raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_car_prf_for_schd_fail;
12393 			END IF;
12394 		END IF;
12395 
12396 
12397 	END IF;
12398 
12399 	IF (l_carrier_rec.cm_rate_variant IS NULL)
12400 	THEN
12401 	--Verify exact code
12402 	--this is done so that the carrier can be validated for freight estimate
12403 	--even if the carrier does not have cm_rate_variant
12404 		l_carrier_rec.cm_rate_variant:='DISCOUNT';
12405 	END IF;
12406 
12407 
12408 	--MULTICURRENCY
12409 	TL_Get_Currency(
12410 		p_delivery_id=>NULL,
12411 		p_trip_id=>NULL,
12412 		p_location_id=>p_pickup_location_id,
12413 		p_carrier_id=>l_carrier_rec.carrier_id,
12414 		x_currency_code=>l_carrier_rec.currency,
12415 		x_return_status=>l_return_status);
12416 
12417 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
12418 	THEN
12419 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
12420 	       THEN
12421 		  raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_currency_fail;
12422 	       END IF;
12423 	END IF;
12424 
12425 
12426 	Validate_Carrier_Info(
12427 		x_carrier_info 	=>	l_carrier_rec,
12428 		x_return_status	=>	l_return_status);
12429 
12430 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
12431 	THEN
12432 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
12433 		THEN
12434 			--FTE_FREIGHT_PRICING_UTIL.setmsg (
12435 			--	p_api=>'TL_Cache_First_Estimate_Trip',
12436 			--	p_exc=>'g_tl_validate_carrier_fail',
12437 			--	p_carrier_id=>l_carrier_rec.carrier_id);
12438 
12439 
12440 			raise FTE_FREIGHT_PRICING_UTIL.g_tl_validate_carrier_fail;
12441 		END IF;
12442 	END IF;
12443 
12444 	--Insert carrier info into cache
12445 	g_tl_carrier_pref_rows(x_carrier_index):=l_carrier_rec;
12446 	x_carrier_index:=x_carrier_index+1;
12447 
12448 
12449 
12450 	l_trip_rec.trip_id:=FAKE_TRIP_ID;
12451 
12452 
12453 
12454 	IF (p_schedule_id IS NOT NULL)
12455 	THEN
12456 		l_trip_rec.schedule_id:=p_schedule_id;
12457 		OPEN get_schedule_info(p_schedule_id);
12458 		FETCH get_schedule_info INTO
12459 		l_trip_rec.lane_id,l_trip_rec.price_list_id,
12460 		l_trip_rec.carrier_id,l_trip_rec.service_type,
12461 		l_trip_rec.mode_of_transport;
12462 
12463 		IF (get_schedule_info%NOTFOUND)
12464 		THEN
12465 			CLOSE get_schedule_info;
12466 
12467 			--FTE_FREIGHT_PRICING_UTIL.setmsg (
12468 			--	p_api=>'TL_Cache_First_Estimate_Trip',
12469 			--	p_exc=>'g_tl_get_schedule_info_fail',
12470 			--	p_schedule_id=>p_schedule_id);
12471 
12472 
12473 			raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_schedule_info_fail;
12474 
12475 
12476 		END IF;
12477 		CLOSE get_schedule_info;
12478 
12479 
12480 
12481 	ELSIF (p_lane_id IS NOT NULL)
12482 	THEN
12483 		l_trip_rec.lane_id:=p_lane_id;
12484 		OPEN get_lane_info(p_lane_id);
12485 		FETCH get_lane_info INTO
12486 		l_trip_rec.price_list_id,l_trip_rec.carrier_id,
12487 		l_trip_rec.service_type,l_trip_rec.mode_of_transport;
12488 
12489 		IF (get_lane_info%NOTFOUND)
12490 		THEN
12491 			CLOSE get_lane_info;
12492 
12493 			--FTE_FREIGHT_PRICING_UTIL.setmsg (
12494 			--	p_api=>'TL_Cache_First_Estimate_Trip',
12495 			--	p_exc=>'g_tl_get_lane_info_fail',
12496 			--	p_lane_id=>p_lane_id);
12497 
12498 			raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_lane_info_fail;
12499 
12500 		END IF;
12501 		CLOSE get_lane_info;
12502 
12503 
12504 	END IF;
12505 
12506 
12507 
12508 
12509 
12510 	l_trip_rec.vehicle_type:=p_vehicle_type;
12511 
12512 
12513 
12514 
12515 	Get_Pricelist_Id(
12516 		p_lane_id=>p_lane_id,
12517 		p_departure_date=>p_ship_date,
12518 		p_arrival_date=>p_delivery_date,
12519 		x_pricelist_id=>l_trip_rec.price_list_id,
12520 		x_return_status=>l_return_status);
12521 
12522 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
12523 	THEN
12524 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
12525 	       THEN
12526 
12527 --			FTE_FREIGHT_PRICING_UTIL.setmsg (
12528 --				p_api=>'TL_Cache_First_Estimate_Trip',
12529 --				p_exc=>'g_tl_get_pricelistid_fail',
12530 --				p_trip_id=>l_trip_rec.trip_id,
12531 --				p_lane_id=>l_trip_rec.lane_id);
12532 
12533 		  raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_pricelistid_fail;
12534 	       END IF;
12535 	END IF;
12536 
12537 
12538 	l_trip_rec.unloaded_distance:=0;
12539 	IF (p_distance IS NOT NULL)
12540 	THEN
12541 		l_trip_rec.loaded_distance:=FTE_FREIGHT_PRICING_UTIL.convert_uom(
12542 			p_distance_uom,
12543 			l_carrier_rec.distance_uom,
12544 			p_distance,
12545 			0);
12546 
12547 	ELSE
12548 		l_trip_rec.loaded_distance:=NULL;
12549 	END IF;
12550 
12551 
12552 	l_trip_rec.number_of_pallets:=0;
12553 	l_trip_rec.number_of_containers:=1;
12554 	l_trip_rec.time:=0;
12555 	l_trip_rec.number_of_stops:=2;
12556 	l_trip_rec.total_trip_distance:=l_trip_rec.loaded_distance;
12557 	l_trip_rec.total_direct_distance:=l_trip_rec.loaded_distance;
12558 	l_trip_rec.distance_method:=l_carrier_rec.distance_calculation_method;
12559 
12560 	IF ((l_carrier_rec.weight_uom IS NOT NULL) AND (p_weight_uom IS NOT NULL))
12561 	THEN
12562 		l_trip_rec.total_weight:=FTE_FREIGHT_PRICING_UTIL.convert_uom(
12563 			p_weight_uom,
12564 			l_carrier_rec.weight_uom,
12565 			p_weight,
12566 			0);
12567 	END IF;
12568 	IF (l_trip_rec.total_weight IS NULL)
12569 	THEN
12570 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_weight_uom_conv_fail;
12571 	END IF;
12572 
12573 
12574 	IF ((l_carrier_rec.volume_uom IS NOT NULL) AND (p_volume_uom IS NOT NULL))
12575 	THEN
12576 		l_trip_rec.total_volume:=FTE_FREIGHT_PRICING_UTIL.convert_uom(
12577 			p_volume_uom,
12578 			l_carrier_rec.volume_uom,
12579 			p_volume,
12580 			0);
12581 
12582 	END IF;
12583 	IF (l_trip_rec.total_volume IS NULL)
12584 	THEN
12585 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_vol_uom_conv_fail;
12586 	END IF;
12587 
12588 
12589 	l_trip_rec.continuous_move:='N';
12590 	l_trip_rec.planned_departure_date:=p_ship_date;
12591 
12592 
12593 	--In case delivery date is not passed in ,
12594 	--use ship date as the delivery date
12595 	IF (p_delivery_date IS NOT NULL)
12596 	THEN
12597 		l_trip_rec.planned_arrival_date:=p_delivery_date;
12598 	ELSE
12599 		l_trip_rec.planned_arrival_date:=p_ship_date;
12600 	END IF;
12601 
12602 
12603 	l_trip_rec.dead_head:='N';
12604 	l_trip_rec.stop_reference:=x_stop_index;
12605 
12606 	l_trip_rec.delivery_leg_reference:=x_dleg_index;
12607 
12608 
12609 
12610 	l_pickup_stop_rec.stop_id:=FAKE_STOP_ID_1;
12611 	l_pickup_stop_rec.trip_id:=l_trip_rec.trip_id;
12612 	l_pickup_stop_rec.stop_region:=NULL;
12613 	IF (p_pickup_location_id IS NOT NULL)
12614 	THEN
12615 		l_pickup_stop_rec.location_id:=p_pickup_location_id;
12616 
12617 		Get_Region_For_Location(
12618 			p_location_id=>	l_pickup_stop_rec.location_id,
12619 			p_region_type=>	l_carrier_rec.region_level,
12620 			x_region_id=>	l_pickup_stop_rec.stop_region,
12621 			x_return_status	=>	l_return_status);
12622 
12623 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
12624 		THEN
12625 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
12626 		       THEN
12627 			  FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_WRN,'Failed to get region for location ');
12628 			  --raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_reg_for_loc_fail;
12629 		       END IF;
12630 		END IF;
12631 
12632 	ELSE
12633 		l_pickup_stop_rec.location_id:=FAKE_STOP_ID_1;
12634          --Bug 6625274
12635         l_pickup_stop_rec.stop_region := p_origin_id;
12636 
12637 	END IF;
12638 	l_pickup_stop_rec.weekday_layovers:=0;
12639 	l_pickup_stop_rec.weekend_layovers:=0;
12640 	l_pickup_stop_rec.distance_to_next_stop:=0;
12641 	l_pickup_stop_rec.time_to_next_stop:=0;
12642 	l_pickup_stop_rec.pickup_weight:=l_trip_rec.total_weight;
12643 	l_pickup_stop_rec.pickup_volume:=l_trip_rec.total_volume;
12644 	l_pickup_stop_rec.pickup_pallets:=0;
12645 	l_pickup_stop_rec.pickup_containers:=1;
12646 	l_pickup_stop_rec.loading_protocol:=NULL;
12647 	l_pickup_stop_rec.dropoff_weight:=0;
12648 	l_pickup_stop_rec.dropoff_volume:=0;
12649 	l_pickup_stop_rec.dropoff_pallets:=0;
12650 	l_pickup_stop_rec.dropoff_containers:=0;
12651 
12652 	l_pickup_stop_rec.stop_zone:=NULL;
12653 	l_pickup_stop_rec.planned_arrival_date:=l_trip_rec.planned_departure_date;
12654 	l_pickup_stop_rec.planned_departure_date:=l_trip_rec.planned_departure_date;
12655 	l_pickup_stop_rec.stop_type:='PU';
12656 
12657 
12658 
12659 	l_dropoff_stop_rec.stop_id:=FAKE_STOP_ID_2;
12660 	l_dropoff_stop_rec.trip_id:=l_trip_rec.trip_id;
12661 	l_dropoff_stop_rec.stop_region:=NULL;
12662 
12663 	IF (p_dropoff_location_id IS NOT NULL)
12664 	THEN
12665 		l_dropoff_stop_rec.location_id:=p_dropoff_location_id;
12666 
12667 		Get_Region_For_Location(
12668 			p_location_id=>	l_dropoff_stop_rec.location_id,
12669 			p_region_type=>	l_carrier_rec.region_level,
12670 			x_region_id=>	l_dropoff_stop_rec.stop_region,
12671 			x_return_status	=>	l_return_status);
12672 
12673 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
12674 		THEN
12675 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
12676 		       THEN
12677 			  FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_WRN,'Failed to get region for location ');
12678 			  --raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_reg_for_loc_fail;
12679 		       END IF;
12680 		END IF;
12681 
12682 	ELSE
12683 		l_dropoff_stop_rec.location_id:=FAKE_LOCATION_ID_2;
12684         --Bug 6625274
12685         l_dropoff_stop_rec.stop_region:=p_destination_id;
12686 
12687 	END IF;
12688 	l_dropoff_stop_rec.weekday_layovers:=0;
12689 	l_dropoff_stop_rec.weekend_layovers:=0;
12690 	l_dropoff_stop_rec.distance_to_next_stop:=0;
12691 	l_dropoff_stop_rec.time_to_next_stop:=0;
12692 	l_dropoff_stop_rec.pickup_weight:=0;
12693 	l_dropoff_stop_rec.pickup_volume:=0;
12694 	l_dropoff_stop_rec.pickup_pallets:=0;
12695 	l_dropoff_stop_rec.pickup_containers:=0;
12696 	l_dropoff_stop_rec.loading_protocol:=NULL;
12697 	l_dropoff_stop_rec.dropoff_weight:=l_trip_rec.total_weight;
12698 	l_dropoff_stop_rec.dropoff_volume:=l_trip_rec.total_volume;
12699 	l_dropoff_stop_rec.dropoff_pallets:=0;
12700 	l_dropoff_stop_rec.dropoff_containers:=1;
12701 
12702 	l_dropoff_stop_rec.stop_zone:=NULL;
12703 	l_dropoff_stop_rec.planned_arrival_date:=l_trip_rec.planned_arrival_date;
12704 	l_dropoff_stop_rec.planned_departure_date:=l_trip_rec.planned_arrival_date;
12705 	l_dropoff_stop_rec.stop_type:='DO';
12706 
12707 
12708 
12709 	Add_Inputs_For_Distance(
12710 		p_from_stop_rec=>l_pickup_stop_rec,
12711 		p_to_stop_rec=>l_dropoff_stop_rec,
12712 		p_empty_flag=>'N',
12713 		x_stop_distance_tab=>l_stop_distance_tab,
12714 		x_return_status=>l_return_status);
12715 
12716 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
12717 	THEN
12718 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
12719 	       THEN
12720 		  raise FTE_FREIGHT_PRICING_UTIL.g_tl_add_ip_dist_fail;
12721 	       END IF;
12722 	END IF;
12723 
12724 
12725 	--Create Dummy DLEG
12726 
12727 	Initialize_Dummy_Dleg(
12728 		p_pickup_location	=>l_pickup_stop_rec.location_id,
12729 		p_dropoff_location	=>l_dropoff_stop_rec.location_id,
12730 		p_dlv_id	=>FAKE_DLEG_ID,
12731 		x_dleg_rec	=>l_dleg_rec,
12732 		x_return_status	=>l_return_status);
12733 
12734 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
12735 	THEN
12736 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
12737 	       THEN
12738 	          raise FTE_FREIGHT_PRICING_UTIL.g_tl_init_dummy_dleg_fail;
12739 	       END IF;
12740 	END IF;
12741 
12742 
12743 
12744 
12745 	Update_Dummy_Records(
12746 		p_weight_uom	=>l_carrier_rec.weight_uom ,
12747 		p_volume_uom	=>l_carrier_rec.volume_uom,
12748 		p_weight	=>l_trip_rec.total_weight,
12749 		p_volume	=>l_trip_rec.total_volume,
12750 		p_containers	=>l_trip_rec.number_of_containers,
12751 		p_pallets	=>l_trip_rec.number_of_pallets,
12752 		x_carrier_rec	=>l_carrier_rec,
12753 		x_trip_rec	=>l_trip_rec,
12754 		x_pickup_stop	=>l_pickup_stop_rec,
12755 		x_dropoff_stop	=>l_dropoff_stop_rec,
12756 		x_dleg	=>l_dleg_rec,
12757 		x_return_status	=>l_return_status
12758 		);
12759 
12760 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
12761 	THEN
12762 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
12763 	       THEN
12764 		  raise FTE_FREIGHT_PRICING_UTIL.g_tl_updt_dummy_recs_fail;
12765 	       END IF;
12766 	END IF;
12767 
12768 
12769 	--Insert pickup stop
12770 	g_tl_trip_stop_rows(x_stop_index):=l_pickup_stop_rec;
12771 	x_stop_index:=x_stop_index+1;
12772 
12773 	--Insert dropoff stop
12774 	g_tl_trip_stop_rows(x_stop_index):=l_dropoff_stop_rec;
12775 	x_stop_index:=x_stop_index+1;
12776 
12777 
12778 
12779 	--Insert dleg
12780 
12781 	Validate_Dleg_Info(
12782 		x_dleg_info=>	l_dleg_rec,
12783 		x_return_status	=>	l_return_status);
12784 
12785 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
12786 	THEN
12787 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
12788 	       THEN
12789 
12790 		  raise FTE_FREIGHT_PRICING_UTIL.g_tl_validate_dleg_fail;
12791 	       END IF;
12792 	END IF;
12793 
12794 	g_tl_delivery_leg_rows(x_dleg_index):=l_dleg_rec;
12795 	x_dleg_index:=x_dleg_index+1;
12796 
12797 
12798 
12799 	Initialize_Single_Dummy_Detail(
12800 		p_weight=>l_trip_rec.total_weight,
12801 		p_weight_uom=>l_carrier_rec.weight_uom,
12802 		p_volume=>l_trip_rec.total_volume,
12803 		p_volume_uom=>l_carrier_rec.volume_uom,
12804 		x_dlv_detail_info=>l_dlv_detail_info,
12805 		x_return_status=>l_return_status);
12806 
12807 	Insert_Into_Dlv_Dtl_Cache(
12808 		p_dlv_dtl_rec=>l_dlv_detail_info,
12809 		x_return_status=>l_return_status);
12810 
12811 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
12812 	THEN
12813 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
12814 	       THEN
12815 		  raise FTE_FREIGHT_PRICING_UTIL.g_tl_insert_dlv_dtl_fail;
12816 	       END IF;
12817 	END IF;
12818 
12819 
12820 
12821 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'BEFORE FAC CALL');
12822 	--Get facility Info and store into stop cache
12823 	Get_Facility_Info(p_stop_index	=>	l_initial_stop_index,
12824 			x_return_status	=>	l_return_status);
12825 
12826 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
12827 	THEN
12828 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
12829 	       THEN
12830 		  FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_WRN,'Failed to get facility information');
12831 	          --raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_facility_info_fail;
12832 	       END IF;
12833 	END IF;
12834 
12835 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'AFTER FAC CALL');
12836 
12837 	IF (l_trip_rec.loaded_distance IS NULL)
12838 	THEN
12839 
12840 		Get_Distances(
12841 			p_stop_index	=>	l_initial_stop_index,
12842 			p_dleg_index	=>	l_initial_dleg_index,
12843 			p_carrier_rec	=>	l_carrier_rec,
12844 			x_stop_distance_tab	=>l_stop_distance_tab,
12845 			x_trip_rec	=>	l_trip_rec,
12846 			x_return_status	=>	l_return_status);
12847 
12848 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
12849 		THEN
12850 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
12851 			THEN
12852 	--			FTE_FREIGHT_PRICING_UTIL.setmsg (
12853 	--				p_api=>'Cache_Trip',
12854 	--				p_exc=>'g_tl_get_distances_fail',
12855 	--				p_trip_id=>x_trip_rec.trip_id);
12856 
12857 
12858 				raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_distances_fail;
12859 			END IF;
12860 		END IF;
12861 	ELSE
12862 		Get_Transit_Time_From_Distance(
12863 			p_distance=> l_trip_rec.loaded_distance,
12864 			p_distance_uom=> l_carrier_rec.distance_uom,
12865 			p_time_uom=> l_carrier_rec.time_uom,
12866 			x_time=>l_trip_rec.time,
12867 			x_return_status=>l_return_status);
12868 
12869 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
12870 		THEN
12871 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
12872 			THEN
12873 
12874 				raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_distances_fail;
12875 			END IF;
12876 		END IF;
12877 
12878 		g_tl_trip_stop_rows(l_initial_stop_index).distance_to_next_stop:=l_trip_rec.loaded_distance;
12879 		g_tl_trip_stop_rows(l_initial_stop_index).time_to_next_stop:=l_trip_rec.time;
12880 
12881 	END IF;
12882 
12883 
12884 	--Insert into trip cache
12885 
12886 	Validate_Trip_Info(
12887 		x_trip_info=>	l_trip_rec,
12888 		x_return_status	=>	l_return_status);
12889 
12890 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
12891 	THEN
12892 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
12893 	       THEN
12894 
12895 		--FTE_FREIGHT_PRICING_UTIL.setmsg (
12896 		--	p_api=>'Cache_Trip',
12897 		--	p_exc=>'g_tl_validate_trip_fail',
12898 		--	p_trip_id=>l_trip_rec.trip_id);
12899 
12900 	          raise FTE_FREIGHT_PRICING_UTIL.g_tl_validate_trip_fail;
12901 	       END IF;
12902 	END IF;
12903 
12904 	g_tl_trip_rows(x_trip_index):=l_trip_rec;
12905 	x_trip_index:=x_trip_index+1;
12906 
12907 
12908 	FOR i IN l_initial_stop_index..(x_stop_index-1)
12909 	LOOP
12910 		--Determine if the stop is pickup/dropoff/both or none
12911 		Get_Stop_Type(x_stop_rec=>g_tl_trip_stop_rows(i));
12912 
12913 		Validate_Stop_Info(
12914 		p_carrier_pref_rec=>l_carrier_rec,
12915 		x_stop_info=>	g_tl_trip_stop_rows(i),
12916 		x_return_status	=>	l_return_status);
12917 
12918 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
12919 		THEN
12920 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
12921 		       THEN
12922 
12923 			--FTE_FREIGHT_PRICING_UTIL.setmsg (
12924 			--	p_api=>'Cache_Trip',
12925 			--	p_exc=>'g_tl_validate_stop_fail',
12926 			--	p_stop_id=>g_tl_trip_stop_rows(i).stop_id);
12927 
12928 			  raise FTE_FREIGHT_PRICING_UTIL.g_tl_validate_stop_fail;
12929 		       END IF;
12930 		END IF;
12931 
12932 	END LOOP;
12933 
12934 
12935         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_Estimate_Trip');
12936 
12937 EXCEPTION
12938 
12939 
12940 
12941    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_insert_dlv_dtl_fail THEN
12942 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
12943 	FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_Estimate_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_insert_dlv_dtl_fail');
12944 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_Estimate_Trip');
12945 
12946 
12947    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_init_dummy_dleg_fail THEN
12948 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
12949 	FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_Estimate_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_init_dummy_dleg_fail');
12950 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_Estimate_Trip');
12951 
12952 
12953    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_validate_dleg_fail THEN
12954 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
12955 	FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_Estimate_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_validate_dleg_fail');
12956 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_Estimate_Trip');
12957 
12958 
12959 
12960    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_updt_dummy_recs_fail THEN
12961 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
12962 	FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_Estimate_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_updt_dummy_recs_fail');
12963 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_Estimate_Trip');
12964 
12965 
12966    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_currency_fail THEN
12967 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
12968 	FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_Estimate_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_currency_fail');
12969 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_Estimate_Trip');
12970 
12971 
12972    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_add_ip_dist_fail THEN
12973 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
12974 	FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_Estimate_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_add_ip_dist_fail');
12975 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_Estimate_Trip');
12976 
12977 
12978    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_validate_stop_fail THEN
12979 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
12980 	FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_Estimate_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_validate_stop_fail');
12981 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_Estimate_Trip');
12982 
12983 
12984    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_validate_trip_fail THEN
12985 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
12986 	FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_Estimate_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_validate_trip_fail');
12987 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_Estimate_Trip');
12988 
12989 
12990    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_distances_fail THEN
12991 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
12992 	FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_Estimate_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_distances_fail');
12993 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_Estimate_Trip');
12994 
12995 
12996    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_vol_uom_conv_fail THEN
12997 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
12998 	FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_Estimate_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_vol_uom_conv_fail');
12999 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_Estimate_Trip');
13000 
13001 
13002    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_weight_uom_conv_fail THEN
13003 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
13004 	FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_Estimate_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_weight_uom_conv_fail');
13005 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_Estimate_Trip');
13006 
13007 
13008    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_pricelistid_fail THEN
13009 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
13010 	FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_Estimate_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_pricelistid_fail');
13011 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_Estimate_Trip');
13012 
13013 
13014    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_lane_info_fail THEN
13015 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
13016 	FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_Estimate_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_lane_info_fail');
13017 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_Estimate_Trip');
13018 
13019 
13020    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_schedule_info_fail THEN
13021 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
13022 	FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_Estimate_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_schedule_info_fail');
13023 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_Estimate_Trip');
13024 
13025 
13026 
13027 
13028    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_validate_carrier_fail THEN
13029 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
13030 	FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_Estimate_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_validate_carrier_fail');
13031 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_Estimate_Trip');
13032 
13033 
13034    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_car_prf_for_schd_fail THEN
13035 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
13036 	FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_Estimate_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_car_prf_for_schd_fail');
13037 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_Estimate_Trip');
13038 
13039 
13040    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_car_prf_for_lane_fail THEN
13041 	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
13042 	FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_Estimate_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_car_prf_for_lane_fail');
13043 	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_Estimate_Trip');
13044 
13045 
13046    WHEN others THEN
13047         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
13048         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_Estimate_Trip',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
13049         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
13050         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_Estimate_Trip');
13051 
13052 
13053 
13054 END TL_Cache_First_Estimate_Trip;
13055 
13056 
13057 
13058 PROCEDURE TL_BUILD_CACHE_FOR_ESTIMATE(
13059 	p_lane_rows IN dbms_utility.number_array ,
13060 	p_schedule_rows IN  dbms_utility.number_array,
13061 	p_vehicle_rows IN  dbms_utility.number_array,
13062 	p_pickup_location_id IN NUMBER,
13063 	p_dropoff_location_id IN NUMBER,
13064 	p_ship_date IN DATE,
13065 	p_delivery_date IN DATE,
13066 	p_weight IN NUMBER,
13067 	p_weight_uom IN VARCHAR2,
13068 	p_volume IN NUMBER,
13069 	p_volume_uom IN VARCHAR2,
13070 	p_distance IN NUMBER,
13071 	p_distance_uom in VARCHAR2,
13072 	x_return_status OUT NOCOPY Varchar2,
13073      --Bug 6625274
13074     p_origin_id IN NUMBER DEFAULT NULL,
13075     p_destination_id IN NUMBER DEFAULT NULL) IS
13076 
13077 
13078 
13079 
13080 	l_trip_index NUMBER;
13081 	l_carrier_index NUMBER;
13082 	l_stop_index NUMBER;
13083 	l_dleg_index	NUMBER;
13084 	l_child_dleg_index	NUMBER;
13085 
13086 	l_last_trip_index 	NUMBER;
13087 	l_last_carrier_index 	NUMBER;
13088 	l_last_stop_index 	NUMBER;
13089 	l_last_dleg_index	NUMBER;
13090 
13091 
13092 	i NUMBER;
13093 	j NUMBER;
13094 
13095 	l_cached_first_trip_flag VARCHAR2(1);
13096 
13097 
13098 l_return_status VARCHAR2(1);
13099 
13100 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
13101 
13102 	l_warning_count 	NUMBER:=0;
13103 BEGIN
13104 
13105 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
13106 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'TL_BUILD_CACHE_FOR_ESTIMATE','start');
13107 
13108 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
13109 
13110 	Initialize_Cache_Indices(
13111 		x_trip_index=>	l_trip_index,
13112 		x_stop_index=>	l_stop_index,
13113 		x_dleg_index=>	l_dleg_index,
13114 		x_carrier_index=>l_carrier_index,
13115 		x_child_dleg_index=>l_child_dleg_index,
13116 		x_return_status=> l_return_status);
13117 
13118 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
13119 	THEN
13120 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
13121 	       THEN
13122 		  raise FTE_FREIGHT_PRICING_UTIL.g_tl_init_cache_indices_fail;
13123 	       END IF;
13124 	END IF;
13125 
13126 
13127 	l_cached_first_trip_flag:='N';
13128 	i:=p_lane_rows.FIRST;
13129 
13130 	-- Query up the trip/stops/dleg and cache it
13131 	WHILE (p_lane_rows.EXISTS(i) AND p_schedule_rows.EXISTS(i) AND
13132 	p_vehicle_rows.EXISTS(i) AND (l_cached_first_trip_flag='N'))
13133 	LOOP
13134 
13135 
13136 
13137 		TL_Cache_First_Estimate_Trip(
13138 		p_pickup_location_id=>p_pickup_location_id,
13139 		p_dropoff_location_id=>p_dropoff_location_id,
13140 		p_ship_date=>p_ship_date,
13141 		p_delivery_date=>p_delivery_date,
13142 		p_vehicle_type=>p_vehicle_rows(i),
13143 		p_lane_id=>p_lane_rows(i),
13144 		p_schedule_id=>p_schedule_rows(i),
13145 		p_weight=>p_weight,
13146 		p_weight_uom=>p_weight_uom,
13147 		p_volume=>p_volume,
13148 		p_volume_uom=>p_volume_uom,
13149 		p_distance=>p_distance,
13150 		p_distance_uom=>p_distance_uom,
13151 		x_trip_index=>l_trip_index,
13152 		x_carrier_index=>l_carrier_index,
13153 		x_stop_index=>l_stop_index,
13154 		x_dleg_index=>l_dleg_index,
13155 		x_return_status=>l_return_status,
13156          --Bug 6625274
13157         p_origin_id => p_origin_id,
13158         p_destination_id => p_destination_id);
13159 
13160 
13161 		  l_cached_first_trip_flag:='Y';
13162 
13163 		  IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
13164 		  THEN
13165 		         IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
13166 		         THEN
13167 
13168 		         	Delete_Cache(x_return_status=>l_return_status);
13169 
13170 				IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
13171 				THEN
13172 				       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
13173 				       THEN
13174 					  raise FTE_FREIGHT_PRICING_UTIL.g_tl_delete_cache_fail;
13175 				       END IF;
13176 				END IF;
13177 
13178 				Initialize_Cache_Indices(
13179 					x_trip_index=>	l_trip_index,
13180 					x_stop_index=>	l_stop_index,
13181 					x_dleg_index=>	l_dleg_index,
13182 					x_carrier_index=>l_carrier_index,
13183 					x_child_dleg_index=>l_child_dleg_index,
13184 					x_return_status=> l_return_status);
13185 
13186 				IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
13187 				THEN
13188 				       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
13189 				       THEN
13190 					  raise FTE_FREIGHT_PRICING_UTIL.g_tl_init_cache_indices_fail;
13191 				       END IF;
13192 				END IF;
13193 
13194 				l_cached_first_trip_flag:='N';
13195 		         END IF;
13196 		END IF;
13197 
13198 		i:=p_lane_rows.NEXT(i);
13199 
13200 	END LOOP;
13201 
13202 	IF (l_cached_first_trip_flag='N')
13203 	THEN
13204 
13205 
13206 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_no_trips_cached;
13207 
13208 	END IF;
13209 
13210 	--The first lane/schedule has been cached
13211 	--For the remaining lanes/schedules we shall copy the data we captured above
13212 	--and alter the UOMs according to the lanes
13213 
13214 
13215 
13216 
13217 	--Alter and copy into cache for each lane
13218 
13219 
13220 
13221 	WHILE ( (i IS NOT NULL) AND (p_lane_rows.EXISTS(i)))
13222 	LOOP
13223 
13224 		IF (p_lane_rows.EXISTS(i) AND p_schedule_rows.EXISTS(i) AND p_vehicle_rows.EXISTS(i)
13225 			AND ((p_lane_rows(i) IS NOT NULL) OR (p_schedule_rows(i) IS NOT NULL) ))
13226 		THEN
13227 
13228 			--Store all the indices
13229 
13230 			l_last_trip_index:=l_trip_index;
13231 			l_last_carrier_index:=l_carrier_index;
13232 			l_last_stop_index:=l_stop_index;
13233 			l_last_dleg_index:=l_dleg_index;
13234 
13235 
13236 
13237 			Cache_Next_Trip_Lane(
13238 				p_trip_id=>FAKE_TRIP_ID,
13239 				p_lane_id=> p_lane_rows(i),
13240 				p_schedule_id=> p_schedule_rows(i),
13241 				p_vehicle=> p_vehicle_rows(i) ,
13242 				x_trip_index => l_trip_index,
13243 				x_carrier_index=>l_carrier_index,
13244 				x_stop_index=>l_stop_index,
13245 				x_dleg_index=>l_dleg_index,
13246 				x_child_dleg_index=>l_child_dleg_index,
13247 				x_return_status=>l_return_status);
13248 
13249 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
13250 			THEN
13251 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
13252 			       THEN
13253 				   l_warning_count:=l_warning_count+1;
13254 			       	   IF (p_schedule_rows(i) IS NOT NULL)
13255 			       	   THEN
13256 
13257 			       	   	   FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_WRN,'Failed to cache trip'
13258 			       	   	   ||' schedule '||p_schedule_rows(i)||':g_tl_cmp_trip_sched_fail');
13259 
13260 				    ELSE
13261 
13262 			       	   	   FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_WRN,'Failed to cache trip'
13263 			       	   	   ||' lane '||p_lane_rows(i)||':g_tl_cmp_trip_lane_fail');
13264 
13265 
13266 
13267 				    END IF;
13268 
13269 				--Restore indices
13270 
13271 				l_trip_index:=l_last_trip_index;
13272 				l_carrier_index:=l_last_carrier_index;
13273 				l_stop_index:=l_last_stop_index;
13274 				l_dleg_index:=l_last_dleg_index;
13275 
13276 
13277 				--DELETE Newly added cache
13278 
13279 				Partially_Delete_Cache(
13280 					p_trip_index=>l_trip_index,
13281 					p_carrier_index=>l_carrier_index,
13282 					p_stop_index=>l_stop_index,
13283 					p_dleg_index=>l_dleg_index,
13284 					p_child_dleg_index=>l_child_dleg_index);
13285 
13286 			       END IF;
13287 			END IF;
13288 
13289 
13290 
13291 
13292 		ELSE
13293 
13294 
13295 			raise FTE_FREIGHT_PRICING_UTIL.g_tl_no_lane_sched_veh;
13296 
13297 		END IF;
13298 
13299 		i:=p_lane_rows.NEXT(i);
13300 
13301 	END LOOP;
13302 
13303         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_BUILD_CACHE_FOR_ESTIMATE');
13304 
13305 	IF (l_warning_count > 0)
13306 	THEN
13307 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
13308 	END IF;
13309 EXCEPTION
13310 
13311 
13312 
13313   WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_no_trips_cached THEN
13314    	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
13315    	FTE_FREIGHT_PRICING_UTIL.set_exception('TL_BUILD_CACHE_FOR_ESTIMATE',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_no_trips_cached');
13316    	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_BUILD_CACHE_FOR_ESTIMATE');
13317 
13318   WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_init_cache_indices_fail THEN
13319    	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
13320    	FTE_FREIGHT_PRICING_UTIL.set_exception('TL_BUILD_CACHE_FOR_ESTIMATE',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_init_cache_indices_fail');
13321    	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_BUILD_CACHE_FOR_ESTIMATE');
13322 
13323 
13324    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_cache_first_trp_lane_fail THEN
13325         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
13326         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_BUILD_CACHE_FOR_ESTIMATE',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_cache_first_trp_lane_fail');
13327         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_BUILD_CACHE_FOR_ESTIMATE');
13328 
13329    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_no_lane_sched_veh THEN
13330         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
13331         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_BUILD_CACHE_FOR_ESTIMATE',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_no_lane_sched_veh');
13332         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_BUILD_CACHE_FOR_ESTIMATE');
13333 
13334 
13335    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_delete_cache_fail THEN
13336         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
13337         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_BUILD_CACHE_FOR_ESTIMATE',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_delete_cache_fail');
13338         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_BUILD_CACHE_FOR_ESTIMATE');
13339 
13340    WHEN others THEN
13341         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
13342         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_BUILD_CACHE_FOR_ESTIMATE',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
13343         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
13344         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_BUILD_CACHE_FOR_ESTIMATE');
13345 
13346 
13347 END TL_BUILD_CACHE_FOR_ESTIMATE;
13348 
13349 
13350 PROCEDURE Copy_Source_Line_To_Detail(
13351 	p_source_lines_rec IN FTE_PROCESS_REQUESTS.fte_source_line_rec,
13352 	x_dlv_dtl_rec IN OUT NOCOPY FTE_FREIGHT_PRICING.shipment_line_rec_type,
13353 	x_return_status	OUT	NOCOPY	VARCHAR2)
13354 IS
13355 
13356 l_return_status VARCHAR2(1);
13357 
13358 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
13359 
13360 	l_warning_count 	NUMBER:=0;
13361 BEGIN
13362 
13363       FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
13364       FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Copy_Source_Line_To_Detail','start');
13365 
13366       x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
13367 
13368 
13369       x_dlv_dtl_rec.delivery_detail_id  	:= p_source_lines_rec.source_line_id;
13370       x_dlv_dtl_rec.delivery_id         	:= p_source_lines_rec.consolidation_id;
13371 
13372 
13373       x_dlv_dtl_rec.delivery_leg_id     	:= p_source_lines_rec.consolidation_id;
13374 
13375 
13376       x_dlv_dtl_rec.reprice_required    	:= 'Y';
13377       x_dlv_dtl_rec.parent_delivery_detail_id	:= NULL;
13378       x_dlv_dtl_rec.customer_id         	:= p_source_lines_rec.customer_id;
13379       x_dlv_dtl_rec.sold_to_contact_id  	:= NULL;
13380       x_dlv_dtl_rec.inventory_item_id   	:= p_source_lines_rec.inventory_item_id;
13381       x_dlv_dtl_rec.item_description    	:= NULL;
13382       x_dlv_dtl_rec.hazard_class_id     	:= NULL;
13383       x_dlv_dtl_rec.country_of_origin   	:= NULL;
13384       x_dlv_dtl_rec.classification     	 	:= NULL;
13385       x_dlv_dtl_rec.requested_quantity  	:= p_source_lines_rec.source_quantity;
13386       x_dlv_dtl_rec.requested_quantity_uom   	:= p_source_lines_rec.source_quantity_uom;
13387       x_dlv_dtl_rec.master_container_item_id    := NULL;
13388       x_dlv_dtl_rec.detail_container_item_id    := NULL;
13389       x_dlv_dtl_rec.customer_item_id            := NULL;
13390       x_dlv_dtl_rec.net_weight                  := p_source_lines_rec.weight;
13391       x_dlv_dtl_rec.organization_id             := p_source_lines_rec.ship_from_org_id;
13392       x_dlv_dtl_rec.container_flag              := 'N';
13393       x_dlv_dtl_rec.container_type_code         := NULL;
13394       x_dlv_dtl_rec.container_name              := NULL;
13395       x_dlv_dtl_rec.fill_percent                := NULL;
13396       x_dlv_dtl_rec.gross_weight                := p_source_lines_rec.weight;
13397       x_dlv_dtl_rec.currency_code               := p_source_lines_rec.freight_rate_currency;
13398       x_dlv_dtl_rec.freight_class_cat_id        := NULL;
13399       x_dlv_dtl_rec.commodity_code_cat_id       := NULL;
13400       x_dlv_dtl_rec.weight_uom_code             := p_source_lines_rec.weight_uom_code;
13401       x_dlv_dtl_rec.volume                      := p_source_lines_rec.volume;
13402       x_dlv_dtl_rec.volume_uom_code             := p_source_lines_rec.volume_uom_code;
13403       x_dlv_dtl_rec.tp_attribute_category       := NULL;
13404       x_dlv_dtl_rec.tp_attribute1               := NULL;
13405       x_dlv_dtl_rec.tp_attribute2               := NULL;
13406       x_dlv_dtl_rec.tp_attribute3               := NULL;
13407       x_dlv_dtl_rec.tp_attribute4               := NULL;
13408       x_dlv_dtl_rec.tp_attribute5               := NULL;
13409       x_dlv_dtl_rec.tp_attribute6               := NULL;
13410       x_dlv_dtl_rec.tp_attribute7               := NULL;
13411       x_dlv_dtl_rec.tp_attribute8               := NULL;
13412       x_dlv_dtl_rec.tp_attribute9               := NULL;
13413       x_dlv_dtl_rec.tp_attribute10              := NULL;
13414       x_dlv_dtl_rec.tp_attribute11              := NULL;
13415       x_dlv_dtl_rec.tp_attribute12              := NULL;
13416       x_dlv_dtl_rec.tp_attribute13              := NULL;
13417       x_dlv_dtl_rec.tp_attribute14              := NULL;
13418       x_dlv_dtl_rec.tp_attribute15              := NULL;
13419       x_dlv_dtl_rec.attribute_category          := NULL;
13420       x_dlv_dtl_rec.attribute1                  := NULL;
13421       x_dlv_dtl_rec.attribute2                  := NULL;
13422       x_dlv_dtl_rec.attribute3                  := NULL;
13423       x_dlv_dtl_rec.attribute4                  := NULL;
13424       x_dlv_dtl_rec.attribute5                  := NULL;
13425       x_dlv_dtl_rec.attribute6                  := NULL;
13426       x_dlv_dtl_rec.attribute7                  := NULL;
13427       x_dlv_dtl_rec.attribute8                  := NULL;
13428       x_dlv_dtl_rec.attribute9                  := NULL;
13429       x_dlv_dtl_rec.attribute10                 := NULL;
13430       x_dlv_dtl_rec.attribute11                 := NULL;
13431       x_dlv_dtl_rec.attribute12                 := NULL;
13432       x_dlv_dtl_rec.attribute13                 := NULL;
13433       x_dlv_dtl_rec.attribute14                 := NULL;
13434       x_dlv_dtl_rec.attribute15                 := NULL;
13435       x_dlv_dtl_rec.source_type                 := p_source_lines_rec.source_type;
13436       x_dlv_dtl_rec.source_line_id              := p_source_lines_rec.source_line_id;
13437       x_dlv_dtl_rec.source_header_id            := p_source_lines_rec.source_header_id;
13438       x_dlv_dtl_rec.source_consolidation_id     := p_source_lines_rec.consolidation_id;
13439       x_dlv_dtl_rec.ship_date                   := p_source_lines_rec.ship_date;
13440       x_dlv_dtl_rec.arrival_date                := p_source_lines_rec.arrival_date;
13441       -- FTE J rate estimate
13442       x_dlv_dtl_rec.comm_category_id            := p_source_lines_rec.commodity_category_id;
13443 
13444 
13445       FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Copy_Source_Line_To_Detail');
13446 
13447       IF (l_warning_count > 0)
13448       THEN
13449 	x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
13450       END IF;
13451 
13452 EXCEPTION
13453    WHEN others THEN
13454         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
13455         FTE_FREIGHT_PRICING_UTIL.set_exception('Copy_Source_Line_To_Detail',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
13456         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
13457         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Copy_Source_Line_To_Detail');
13458 
13459 
13460 END Copy_Source_Line_To_Detail;
13461 
13462 
13463 
13464 PROCEDURE Add_Source_Lines_As_Details(
13465 	p_consolidation_id IN NUMBER,
13466 	p_source_lines_tab IN FTE_PROCESS_REQUESTS.fte_source_line_tab,
13467 	p_carrier_pref_rec IN TL_CARRIER_PREF_REC_TYPE,
13468 	x_pickup_stop_rec IN OUT NOCOPY TL_TRIP_STOP_INPUT_REC_TYPE,
13469 	x_dropoff_stop_rec IN OUT NOCOPY TL_TRIP_STOP_INPUT_REC_TYPE,
13470 	x_dleg_rec IN OUT NOCOPY TL_delivery_leg_rec_type,
13471 	x_return_status	OUT	NOCOPY	VARCHAR2)
13472 IS
13473 
13474 
13475 l_dlv_detail_rec FTE_FREIGHT_PRICING.shipment_line_rec_type;
13476 
13477 
13478 l_dleg_tab TL_dleg_quantity_tab_type;
13479 i NUMBER;
13480 
13481 l_return_status VARCHAR2(1);
13482 
13483 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
13484 
13485 	l_warning_count 	NUMBER:=0;
13486 BEGIN
13487 
13488 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
13489 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'Add_Source_Lines_As_Details','start');
13490 
13491 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
13492 
13493 	i:=p_source_lines_tab.FIRST;
13494 	WHILE (i IS NOT NULL)
13495 	LOOP
13496 		IF((p_source_lines_tab(i).consolidation_id IS NOT NULL)
13497 		AND (p_source_lines_tab(i).consolidation_id=p_consolidation_id)
13498 		AND (nvl(p_source_lines_tab(i).freight_rating_flag,'Y') = 'Y'))
13499 		THEN
13500 
13501 			Copy_Source_Line_To_Detail(p_source_lines_rec=>p_source_lines_tab(i),
13502 				x_dlv_dtl_rec=>l_dlv_detail_rec,
13503 				x_return_status=>l_return_status);
13504 
13505 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
13506 			THEN
13507 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
13508 			       THEN
13509 				  raise FTE_FREIGHT_PRICING_UTIL.g_tl_copy_src_dtl_fail;
13510 			       END IF;
13511 			END IF;
13512 
13513 
13514 
13515 			Validate_Dlv_Detail_Info(
13516 				p_carrier_pref_rec =>p_carrier_pref_rec,
13517 				x_dlv_detail_info	=>l_dlv_detail_rec,
13518 				x_return_status		=>l_return_status);
13519 
13520 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
13521 			THEN
13522 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
13523 			       THEN
13524 
13525 				  raise FTE_FREIGHT_PRICING_UTIL.g_tl_validate_dlv_dtl_fail;
13526 			       END IF;
13527 			END IF;
13528 
13529 			--Insert into delivery detail cache
13530 
13531 			Add_Dropoff_Quantity(
13532 				p_dlv_detail_rec    =>l_dlv_detail_rec,
13533 				p_carrier_pref  =>p_carrier_pref_rec,
13534 				x_stop_rec	    =>x_dropoff_stop_rec,
13535 				x_return_status	=>	l_return_status);
13536 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
13537 			THEN
13538 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
13539 			       THEN
13540 
13541 				  raise FTE_FREIGHT_PRICING_UTIL.g_tl_add_dropoff_qty_fail;
13542 			       END IF;
13543 			END IF;
13544 
13545 
13546 			--Adds picked up quantities to l_stop_rec
13547 			Add_Pickup_Quantity(
13548 				p_dlv_detail_rec=>	l_dlv_detail_rec,
13549 				p_carrier_pref=>	p_carrier_pref_rec,
13550 				x_stop_rec=>	x_pickup_stop_rec,
13551 				x_dleg_quantity_tab=>	l_dleg_tab,
13552 				x_return_status	=>	l_return_status);
13553 
13554 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
13555 			THEN
13556 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
13557 			       THEN
13558 
13559 				  raise FTE_FREIGHT_PRICING_UTIL.g_tl_add_pickup_qty_fail;
13560 
13561 			       END IF;
13562 			END IF;
13563 
13564 
13565 
13566 			--Insert into dlv details cache
13567 			Insert_Into_Dlv_Dtl_Cache(
13568 				p_dlv_dtl_rec=>l_dlv_detail_rec,
13569 				x_return_status	=>	l_return_status);
13570 
13571 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
13572 			THEN
13573 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
13574 			       THEN
13575 				  raise FTE_FREIGHT_PRICING_UTIL.g_tl_insert_dlv_dtl_fail;
13576 			       END IF;
13577 			END IF;
13578 		END IF;
13579 
13580 		i:=p_source_lines_tab.NEXT(i);
13581 	END LOOP;
13582 
13583 	IF (l_dleg_tab.EXISTS(x_dleg_rec.delivery_leg_id))
13584 	THEN
13585 	 x_dleg_rec.weight:=
13586 	  l_dleg_tab(x_dleg_rec.delivery_leg_id).weight;
13587 	 x_dleg_rec.volume:=
13588 	  l_dleg_tab(x_dleg_rec.delivery_leg_id).volume;
13589 	 x_dleg_rec.pallets:=
13590 	  l_dleg_tab(x_dleg_rec.delivery_leg_id).pallets;
13591 	 x_dleg_rec.containers:=
13592 	  l_dleg_tab(x_dleg_rec.delivery_leg_id).containers;
13593 	END IF;
13594 
13595 
13596 
13597 
13598 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,
13599 	'ADDDELIVERY DETAILS w:'||x_dleg_rec.weight ||' v:'|| x_dleg_rec.volume||' conta:'|| x_dleg_rec.containers||
13600 	'pall:'||x_dleg_rec.pallets);
13601 
13602 
13603         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Add_Source_Lines_As_Details');
13604 
13605 	IF (l_warning_count > 0)
13606 	THEN
13607 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
13608 	END IF;
13609 EXCEPTION
13610 
13611    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_validate_dlv_dtl_fail THEN
13612         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
13613         FTE_FREIGHT_PRICING_UTIL.set_exception('Add_Source_Lines_As_Details',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_validate_dlv_dtl_fail');
13614         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Add_Source_Lines_As_Details');
13615 
13616    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_insert_dlv_dtl_fail THEN
13617         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
13618         FTE_FREIGHT_PRICING_UTIL.set_exception('Add_Source_Lines_As_Details',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_insert_dlv_dtl_fail');
13619         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Add_Source_Lines_As_Details');
13620 
13621 
13622    WHEN others THEN
13623         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
13624         FTE_FREIGHT_PRICING_UTIL.set_exception('Add_Source_Lines_As_Details',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
13625         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
13626         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'Add_Source_Lines_As_Details');
13627 
13628 
13629 END Add_Source_Lines_As_Details;
13630 
13631 
13632 PROCEDURE TL_Cache_First_OM_Lane(
13633 		p_source_header_rec IN FTE_PROCESS_REQUESTS.fte_source_header_rec,
13634 		p_source_lines_tab IN FTE_PROCESS_REQUESTS.fte_source_line_tab,
13635 		p_lane_id IN NUMBER,
13636 		p_schedule_id IN NUMBER,
13637 		p_vehicle_type_id IN NUMBER,
13638 		x_trip_index IN OUT NOCOPY NUMBER,
13639 		x_carrier_index IN OUT NOCOPY NUMBER,
13640 		x_stop_index IN OUT NOCOPY NUMBER,
13641 		x_dleg_index IN OUT NOCOPY NUMBER,
13642 		x_return_status OUT NOCOPY Varchar2)
13643 IS
13644 
13645 	l_internal_location NUMBER;
13646 
13647 
13648 	l_trip_rec TL_trip_data_input_rec_type;
13649 
13650 	l_carrier_rec	TL_CARRIER_PREF_REC_TYPE ;
13651 	l_pickup_stop_rec TL_TRIP_STOP_INPUT_REC_TYPE;
13652 	l_dropoff_stop_rec TL_TRIP_STOP_INPUT_REC_TYPE;
13653 	l_dleg_rec TL_delivery_leg_rec_type;
13654 	l_stop_distance_tab	TL_stop_distance_tab_type;
13655 	l_initial_stop_index NUMBER;
13656 	l_initial_dleg_index NUMBER;
13657 	l_region_id 	NUMBER;
13658 	l_pickup_location NUMBER;
13659 	l_dropoff_location NUMBER;
13660 	l_departure_date DATE;
13661 	l_arrival_date DATE;
13662 	i NUMBER;
13663 	l_physical_previous_flag VARCHAR2(1);
13664 	l_return_status VARCHAR2(1);
13665 	l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
13666 	l_warning_count 	NUMBER:=0;
13667 
13668 
13669 BEGIN
13670 
13671 
13672 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
13673 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'TL_Cache_First_OM_Lane','start');
13674 
13675 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
13676 	l_initial_stop_index:=x_stop_index;
13677 	l_initial_dleg_index:=x_dleg_index;
13678 
13679 
13680 
13681 
13682 	--
13683 	l_pickup_location:=p_source_header_rec.ship_from_location_id;
13684 	l_dropoff_location:=p_source_header_rec.ship_to_location_id;
13685 	l_departure_date:=p_source_header_rec.ship_date;
13686 
13687 	IF (l_departure_date IS NULL)
13688 	THEN
13689 
13690 		l_departure_date:=SYSDATE;
13691 	END IF;
13692 
13693 	l_arrival_date:=p_source_header_rec.arrival_date;
13694 
13695 	IF (l_arrival_date IS NULL)
13696 	THEN
13697 
13698 		l_arrival_date:=l_departure_date;
13699 
13700 	END IF;
13701 
13702 
13703 
13704 	l_internal_location:=NULL;
13705 	Get_internal_location(
13706 	       p_dummy_location_id=>l_dropoff_location,
13707 	       x_internal_location_id=>l_internal_location,
13708        	       x_return_status=>l_return_status);
13709 
13710 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
13711 	THEN
13712 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
13713 	       THEN
13714 	          raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_int_loc_fail;
13715 	       END IF;
13716 	END IF;
13717 	IF (l_internal_location IS NOT NULL)
13718 	THEN
13719 		l_dropoff_location:=l_internal_location;
13720 
13721 	END IF;
13722 
13723 
13724 
13725 	--Create Dummy DLEG
13726 
13727 	Initialize_Dummy_Dleg(
13728 		p_pickup_location	=>l_pickup_location,
13729 		p_dropoff_location	=>l_dropoff_location,
13730 		p_dlv_id	=>p_source_header_rec.consolidation_id,
13731 		x_dleg_rec	=>l_dleg_rec,
13732 		x_return_status	=>l_return_status);
13733 
13734 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
13735 	THEN
13736 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
13737 	       THEN
13738 	          raise FTE_FREIGHT_PRICING_UTIL.g_tl_init_dummy_dleg_fail;
13739 	       END IF;
13740 	END IF;
13741 
13742 	--Use the consolidation id as the dleg id, to match rates with the consolidation
13743 
13744 	l_dleg_rec.delivery_leg_id:=p_source_header_rec.consolidation_id;
13745 	l_dleg_rec.trip_id:=p_source_header_rec.consolidation_id;
13746 
13747 	--Create Dummy Trip
13748 
13749 	Initialize_Dummy_Trip(
13750 		p_departure_date	=>l_departure_date,
13751 		p_arrival_date	=>l_arrival_date,
13752 		x_trip_rec	=>l_trip_rec,
13753 		x_return_status	=>l_return_status);
13754 
13755 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
13756 		THEN
13757 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
13758 		       THEN
13759 		          raise FTE_FREIGHT_PRICING_UTIL.g_tl_init_dummy_trip_fail;
13760 		       END IF;
13761 	END IF;
13762 
13763 
13764 	--Use the consolidation id as the trip id, to match rates with the consolidation
13765 
13766 	l_trip_rec.trip_id:=p_source_header_rec.consolidation_id;
13767 
13768 	--Create Dummy Stops
13769 
13770 	Initialize_Dummy_Stop(
13771 		p_date	=>l_departure_date,
13772 		p_location=>l_pickup_location,
13773 		x_stop_rec	=>l_pickup_stop_rec,
13774 		x_return_status	=>l_return_status);
13775 
13776 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
13777 	THEN
13778 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
13779 		THEN
13780 			raise FTE_FREIGHT_PRICING_UTIL.g_tl_init_dummy_pu_stop_fail;
13781 		END IF;
13782 	END IF;
13783 
13784 
13785 	l_pickup_stop_rec.stop_id:=FAKE_STOP_ID_1;
13786 	l_pickup_stop_rec.trip_id:=p_source_header_rec.consolidation_id;
13787 
13788 	Initialize_Dummy_Stop(
13789 		p_date	=>	l_arrival_date,
13790 		p_location	=>	l_dropoff_location,
13791 		x_stop_rec	=>	l_dropoff_stop_rec,
13792 		x_return_status	=>l_return_status);
13793 
13794 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
13795 	THEN
13796 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
13797 		THEN
13798 			raise FTE_FREIGHT_PRICING_UTIL.g_tl_init_dummy_do_stop_fail;
13799 		END IF;
13800 	END IF;
13801 
13802 	l_dropoff_stop_rec.stop_id:=FAKE_STOP_ID_2;
13803 	l_dropoff_stop_rec.trip_id:=p_source_header_rec.consolidation_id;
13804 
13805 	l_trip_rec.vehicle_type:=p_vehicle_type_id;
13806 
13807 	IF (p_lane_id IS NOT NULL)
13808 	THEN
13809 		Get_Carrier_Pref_For_Lane(
13810 			p_lane_id =>p_lane_id,
13811 			x_carrier_service_rec=>l_carrier_rec,
13812 			x_return_status=>l_return_status);
13813 
13814 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
13815 		THEN
13816 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
13817 			THEN
13818 				raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_car_prf_for_lane_fail;
13819 			END IF;
13820 		END IF;
13821 
13822 
13823 		Get_Trip_Info_From_Lane(
13824 			p_lane_id=>	p_lane_id,
13825 			x_trip_rec=>	l_trip_rec,
13826 			x_return_status	=>l_return_status);
13827 
13828 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
13829 		THEN
13830 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
13831 		       THEN
13832 			  raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_trp_inf_frm_lane_fail;
13833 		       END IF;
13834 		END IF;
13835 
13836 
13837 	ELSIF (p_schedule_id IS NOT NULL)
13838 	THEN
13839 		Get_Carrier_Pref_For_Schedule(
13840 			p_schedule_id =>p_schedule_id,
13841 			x_carrier_service_rec=>l_carrier_rec,
13842 			x_return_status=>l_return_status);
13843 
13844 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
13845 		THEN
13846 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
13847 			THEN
13848 				raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_car_prf_for_schd_fail;
13849 			END IF;
13850 		END IF;
13851 
13852 
13853 
13854 		Get_Trip_Info_From_Schedule(
13855 			p_schedule_id=>	p_schedule_id,
13856 			x_trip_rec=>	l_trip_rec,
13857 			x_return_status	=>l_return_status);
13858 
13859 		 IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
13860 		 THEN
13861 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
13862 			THEN
13863 			   raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_trp_inf_frm_schd_fail;
13864 			END IF;
13865 		END IF;
13866 
13867 
13868 	END IF;
13869 
13870 	--MULTICURRENCY
13871 	TL_Get_Currency(
13872 		p_delivery_id=>NULL,
13873 		p_trip_id=>NULL,
13874 		p_location_id=>l_pickup_location,
13875 		p_carrier_id=>l_carrier_rec.carrier_id,
13876 		x_currency_code=>l_carrier_rec.currency,
13877 		x_return_status=>l_return_status);
13878 
13879 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
13880 	THEN
13881 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
13882 	       THEN
13883 		  raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_currency_fail;
13884 	       END IF;
13885 	END IF;
13886 
13887 	Validate_Carrier_Info(
13888 		x_carrier_info 	=>	l_carrier_rec,
13889 		x_return_status	=>	l_return_status);
13890 
13891 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
13892 	THEN
13893 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
13894 		THEN
13895 			--FTE_FREIGHT_PRICING_UTIL.setmsg (
13896 			--	p_api=>'TL_Cache_First_Estimate_Trip',
13897 			--	p_exc=>'g_tl_validate_carrier_fail',
13898 			--	p_carrier_id=>l_carrier_rec.carrier_id);
13899 
13900 
13901 			raise FTE_FREIGHT_PRICING_UTIL.g_tl_validate_carrier_fail;
13902 		END IF;
13903 	END IF;
13904 
13905 	--Insert carrier info into cache
13906 	g_tl_carrier_pref_rows(x_carrier_index):=l_carrier_rec;
13907 	x_carrier_index:=x_carrier_index+1;
13908 
13909 
13910 
13911 
13912 	Get_Region_For_Location(
13913 		p_location_id=>	l_pickup_stop_rec.location_id,
13914 		p_region_type=>	l_carrier_rec.region_level,
13915 		x_region_id=>	l_pickup_stop_rec.stop_region,
13916 		x_return_status	=>	l_return_status);
13917 
13918 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
13919 	THEN
13920 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
13921 	       THEN
13922 		  FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_WRN,'Failed to get region for location ');
13923 		  --raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_reg_for_loc_fail;
13924 	       END IF;
13925 	END IF;
13926 
13927 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'Get_Region_For_LocationRES: '||
13928 		l_pickup_stop_rec.location_id ||':'||l_pickup_stop_rec.stop_region);
13929 
13930 
13931 
13932 	Get_Region_For_Location(
13933 		p_location_id=>	l_dropoff_stop_rec.location_id,
13934 		p_region_type=>	l_carrier_rec.region_level,
13935 		x_region_id=>	l_dropoff_stop_rec.stop_region,
13936 		x_return_status	=>	l_return_status);
13937 
13938 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
13939 	THEN
13940 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
13941 	       THEN
13942 		  FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_WRN,'Failed to get region for location ');
13943 		  --raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_reg_for_loc_fail;
13944 	       END IF;
13945 	END IF;
13946 
13947 	FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_DBG,'Get_Region_For_LocationRES: '||
13948 		l_dropoff_stop_rec.location_id ||':'||l_dropoff_stop_rec.stop_region);
13949 
13950 
13951 	Add_Source_Lines_As_Details(
13952 		p_consolidation_id=>p_source_header_rec.consolidation_id,
13953 		p_source_lines_tab=>p_source_lines_tab,
13954 		p_carrier_pref_rec=>l_carrier_rec,
13955 		x_pickup_stop_rec=>l_pickup_stop_rec,
13956 		x_dropoff_stop_rec=>l_dropoff_stop_rec,
13957 		x_dleg_rec=>l_dleg_rec,
13958 		x_return_status=>l_return_status);
13959 
13960 
13961 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
13962 	THEN
13963 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
13964 	       THEN
13965 	          raise FTE_FREIGHT_PRICING_UTIL.g_tl_add_src_as_dtl_fail;
13966 	       END IF;
13967 	END IF;
13968 
13969 
13970 
13971 	Validate_Dleg_Info(
13972 		x_dleg_info=>	l_dleg_rec,
13973 		x_return_status	=>	l_return_status);
13974 
13975 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
13976 	THEN
13977 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
13978 	       THEN
13979 
13980 		  raise FTE_FREIGHT_PRICING_UTIL.g_tl_validate_dleg_fail;
13981 	       END IF;
13982 	END IF;
13983 
13984 	g_tl_delivery_leg_rows(x_dleg_index):=l_dleg_rec;
13985 	x_dleg_index:=x_dleg_index+1;
13986 
13987 
13988 
13989 	Add_Inputs_For_Distance(
13990 	 p_from_stop_rec=> l_pickup_stop_rec,
13991 	 p_to_stop_rec=> 	l_dropoff_stop_rec,
13992 	 p_empty_flag=>	'N',
13993 	 x_stop_distance_tab=>	l_stop_distance_tab,
13994 	 x_return_status	=>	l_return_status);
13995 
13996 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
13997 	THEN
13998 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
13999 	       THEN
14000 		  raise FTE_FREIGHT_PRICING_UTIL.g_tl_add_ip_dist_fail;
14001 	       END IF;
14002 	END IF;
14003 
14004 
14005 
14006 	--Update trip rec
14007 
14008 	Update_Trip_With_Stop_Info(
14009 		p_stop_rec	=>	l_pickup_stop_rec,
14010 		x_trip_rec	=>	l_trip_rec,
14011 		x_return_status	=>	l_return_status);
14012 
14013 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
14014 	THEN
14015 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
14016 	       THEN
14017 		  raise FTE_FREIGHT_PRICING_UTIL.g_tl_updt_trip_with_stop_fail;
14018 	       END IF;
14019 	END IF;
14020 	--Insert Stop info into Cache
14021 
14022 	--Perform validation after getting dist,time,fac info
14023 
14024 	g_tl_trip_stop_rows(x_stop_index):=l_pickup_stop_rec;
14025 	x_stop_index:=x_stop_index+1;
14026 
14027 
14028 
14029 
14030 
14031 	--Update trip rec
14032 
14033 	Update_Trip_With_Stop_Info(
14034 		p_stop_rec	=>	l_dropoff_stop_rec,
14035 		x_trip_rec	=>	l_trip_rec,
14036 		x_return_status	=>	l_return_status);
14037 
14038 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
14039 	THEN
14040 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
14041 	       THEN
14042 		  raise FTE_FREIGHT_PRICING_UTIL.g_tl_updt_trip_with_stop_fail;
14043 	       END IF;
14044 	END IF;
14045 	--Insert Stop info into Cache
14046 
14047 	--Perform validation after getting dist,time,fac info
14048 
14049 	g_tl_trip_stop_rows(x_stop_index):=l_dropoff_stop_rec;
14050 	x_stop_index:=x_stop_index+1;
14051 
14052 
14053 
14054 
14055 	g_tl_trip_stop_rows(x_stop_index-1).distance_to_next_stop:=0;
14056 	g_tl_trip_stop_rows(x_stop_index-1).time_to_next_stop:=0;
14057 
14058 
14059 
14060 
14061 
14062 	--GEt distances/time from mileage table, update, stop, dleg buffer, trip
14063 	--loaded, unlaoded distances
14064 
14065 	Get_Distances(
14066 		p_stop_index	=>	l_initial_stop_index,
14067 		p_dleg_index	=>	l_initial_dleg_index,
14068 		p_carrier_rec	=>	l_carrier_rec,
14069 		x_stop_distance_tab	=>l_stop_distance_tab,
14070 		x_trip_rec	=>	l_trip_rec,
14071 		x_return_status	=>	l_return_status);
14072 
14073 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
14074 	THEN
14075        		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
14076        		THEN
14077           		raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_distances_fail;
14078        		END IF;
14079 	END IF;
14080 
14081 
14082 	--Get facility Info and store into stop cache
14083 	Get_Facility_Info(p_stop_index	=>	l_initial_stop_index,
14084 			x_return_status	=>	l_return_status);
14085 
14086 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
14087 	THEN
14088 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
14089 	       THEN
14090 		  FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_WRN,'Failed to get facility information');
14091 	          --raise FTE_FREIGHT_PRICING_UTIL.g_tl_get_facility_info_fail;
14092 	       END IF;
14093 	END IF;
14094 
14095 	--Validate All Stops(all the stop,distance,time,fac info has beengathered
14096 
14097 	FOR i IN l_initial_stop_index..(x_stop_index-1)
14098 	LOOP
14099 		--Determine if the stop is pickup/dropoff/both or none
14100 		Get_Stop_Type(x_stop_rec=>g_tl_trip_stop_rows(i));
14101 
14102 		Validate_Stop_Info(
14103 		p_carrier_pref_rec=>l_carrier_rec,
14104 		x_stop_info=>	g_tl_trip_stop_rows(i),
14105 		x_return_status	=>	l_return_status);
14106 
14107 		IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
14108 		THEN
14109 		       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
14110 		       THEN
14111 			  raise FTE_FREIGHT_PRICING_UTIL.g_tl_validate_stop_fail;
14112 		       END IF;
14113 		END IF;
14114 
14115 	END LOOP;
14116 
14117 
14118 
14119 
14120 
14121 	--Update trip rec
14122 	l_trip_rec.number_of_stops:=2;
14123 
14124 
14125 	l_trip_rec.distance_method:=l_carrier_rec.distance_calculation_method;
14126 
14127 	--get the arrival and dep dates of the trip
14128 	--from first and last stop
14129 
14130 	l_trip_rec.planned_departure_date:=
14131 		g_tl_trip_stop_rows(l_initial_stop_index).planned_departure_date;
14132 	l_trip_rec.planned_arrival_date:=
14133 		g_tl_trip_stop_rows(x_stop_index-1).planned_arrival_date;
14134 
14135 	--Dead head trip has no dlegs 3958974
14136 
14137 	l_trip_rec.dead_head:='N';
14138 
14139 
14140 	l_trip_rec.stop_reference:=l_initial_stop_index;
14141 	l_trip_rec.delivery_leg_reference:=l_initial_dleg_index;
14142 
14143 	--Insert into trip cache
14144 
14145 	Validate_Trip_Info(
14146 		x_trip_info=>	l_trip_rec,
14147 		x_return_status	=>	l_return_status);
14148 
14149 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
14150 	THEN
14151 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
14152 	       THEN
14153 
14154 	          raise FTE_FREIGHT_PRICING_UTIL.g_tl_validate_trip_fail;
14155 	       END IF;
14156 	END IF;
14157 
14158 	g_tl_trip_rows(x_trip_index):=l_trip_rec;
14159 	x_trip_index:=x_trip_index+1;
14160 
14161 
14162 
14163 
14164         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_OM_Lane');
14165 
14166 	IF (l_warning_count > 0)
14167 	THEN
14168 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
14169 	END IF;
14170 
14171 
14172 
14173 EXCEPTION
14174 
14175    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_currency_fail THEN
14176         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
14177         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_OM_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_currency_fail');
14178         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_OM_Lane');
14179 
14180 
14181    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_int_loc_fail THEN
14182         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
14183         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_OM_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_int_loc_fail');
14184         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_OM_Lane');
14185 
14186    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_init_dummy_dleg_fail THEN
14187         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
14188         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_OM_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_init_dummy_dleg_fail');
14189         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_OM_Lane');
14190 
14191    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_init_dummy_trip_fail THEN
14192         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
14193         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_OM_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_init_dummy_trip_fail');
14194         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_OM_Lane');
14195 
14196 
14197 
14198    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_init_dummy_pu_stop_fail THEN
14199         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
14200         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_OM_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_init_dummy_pu_stop_fail');
14201         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_OM_Lane');
14202 
14203 
14204    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_init_dummy_do_stop_fail THEN
14205         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
14206         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_OM_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_init_dummy_do_stop_fail');
14207         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_OM_Lane');
14208 
14209 
14210 
14211 
14212    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_car_prf_for_lane_fail THEN
14213         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
14214         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_OM_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_car_prf_for_lane_fail');
14215         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_OM_Lane');
14216 
14217 
14218    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_trp_inf_frm_lane_fail THEN
14219         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
14220         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_OM_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_trp_inf_frm_lane_fail');
14221         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_OM_Lane');
14222 
14223    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_car_prf_for_schd_fail THEN
14224         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
14225         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_OM_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_car_prf_for_schd_fail');
14226         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_OM_Lane');
14227 
14228    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_trp_inf_frm_schd_fail THEN
14229         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
14230         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_OM_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_trp_inf_frm_schd_fail');
14231         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_OM_Lane');
14232 
14233    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_validate_carrier_fail THEN
14234         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
14235         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_OM_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_validate_carrier_fail');
14236         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_OM_Lane');
14237 
14238 
14239 
14240    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_reg_for_loc_fail THEN
14241         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
14242         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_OM_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_reg_for_loc_fail');
14243         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_OM_Lane');
14244 
14245    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_add_src_as_dtl_fail THEN
14246         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
14247         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_OM_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_add_src_as_dtl_fail');
14248         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_OM_Lane');
14249 
14250    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_add_pickup_qty_fail THEN
14251         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
14252         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_OM_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_add_pickup_qty_fail');
14253         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_OM_Lane');
14254 
14255 
14256    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_validate_dleg_fail THEN
14257         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
14258         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_OM_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_validate_dleg_fail');
14259         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_OM_Lane');
14260 
14261    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_add_ip_dist_fail THEN
14262         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
14263         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_OM_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_add_ip_dist_fail');
14264         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_OM_Lane');
14265 
14266    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_updt_trip_with_stop_fail THEN
14267         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
14268         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_OM_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_updt_trip_with_stop_fail');
14269         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_OM_Lane');
14270 
14271    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_validate_stop_fail THEN
14272         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
14273         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_OM_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_validate_stop_fail');
14274         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_OM_Lane');
14275 
14276    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_distances_fail THEN
14277         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
14278         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_OM_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_distances_fail');
14279         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_OM_Lane');
14280 
14281 
14282    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_get_facility_info_fail THEN
14283         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
14284         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_OM_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_get_facility_info_fail');
14285         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_OM_Lane');
14286 
14287    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_validate_trip_fail THEN
14288         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
14289         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_OM_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_validate_trip_fail');
14290         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_OM_Lane');
14291 
14292 
14293    WHEN others THEN
14294         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
14295         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_Cache_First_OM_Lane',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
14296         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
14297         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_Cache_First_OM_Lane');
14298 
14299 END TL_Cache_First_OM_Lane;
14300 
14301 
14302 
14303 PROCEDURE TL_BUILD_CACHE_FOR_OM(
14304 	p_source_header_rec IN FTE_PROCESS_REQUESTS.fte_source_header_rec,
14305 	p_source_lines_tab IN FTE_PROCESS_REQUESTS.fte_source_line_tab,
14306 	p_lane_rows IN dbms_utility.number_array ,
14307 	p_schedule_rows IN  dbms_utility.number_array,
14308 	p_vehicle_rows IN  dbms_utility.number_array,
14309 	x_return_status OUT NOCOPY Varchar2)
14310 IS
14311 
14312 	l_trip_index NUMBER;
14313 	l_carrier_index NUMBER;
14314 	l_stop_index NUMBER;
14315 	l_dleg_index	NUMBER;
14316 	l_child_dleg_index	NUMBER;
14317 
14318 	l_last_trip_index 	NUMBER;
14319 	l_last_carrier_index 	NUMBER;
14320 	l_last_stop_index 	NUMBER;
14321 	l_last_dleg_index	NUMBER;
14322 
14323 
14324 	i NUMBER;
14325 	j NUMBER;
14326 
14327 	l_cached_first_trip_flag VARCHAR2(1);
14328 
14329 
14330 l_return_status VARCHAR2(1);
14331 
14332 l_log_level     NUMBER := FTE_FREIGHT_PRICING_UTIL.G_DBG;
14333 
14334 	l_warning_count 	NUMBER:=0;
14335 BEGIN
14336 
14337 	FTE_FREIGHT_PRICING_UTIL.reset_dbg_vars;
14338 	FTE_FREIGHT_PRICING_UTIL.set_method(l_log_level,'TL_BUILD_CACHE_FOR_OM','start');
14339 
14340 	x_return_status := WSH_UTIL_CORE.G_RET_STS_SUCCESS;
14341 
14342 	Initialize_Cache_Indices(
14343 		x_trip_index=>	l_trip_index,
14344 		x_stop_index=>	l_stop_index,
14345 		x_dleg_index=>	l_dleg_index,
14346 		x_carrier_index=>l_carrier_index,
14347 		x_child_dleg_index=>l_child_dleg_index,
14348 		x_return_status=> l_return_status);
14349 
14350 	IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
14351 	THEN
14352 	       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
14353 	       THEN
14354 		  raise FTE_FREIGHT_PRICING_UTIL.g_tl_init_cache_indices_fail;
14355 	       END IF;
14356 	END IF;
14357 
14358 
14359 	l_cached_first_trip_flag:='N';
14360 	i:=p_lane_rows.FIRST;
14361 
14362 	-- Query up the trip/stops/dleg and cache it
14363 	WHILE (p_lane_rows.EXISTS(i) AND p_schedule_rows.EXISTS(i) AND
14364 	p_vehicle_rows.EXISTS(i) AND (l_cached_first_trip_flag='N'))
14365 	LOOP
14366 
14367 		TL_Cache_First_OM_Lane(
14368 			p_source_header_rec=>p_source_header_rec,
14369 			p_source_lines_tab=>p_source_lines_tab,
14370 			p_lane_id=>p_lane_rows(i),
14371 			p_schedule_id=>p_schedule_rows(i),
14372 			p_vehicle_type_id => p_vehicle_rows(i),
14373 			x_trip_index => l_trip_index,
14374 			x_carrier_index => l_carrier_index,
14375 			x_stop_index => l_stop_index,
14376 			x_dleg_index => l_dleg_index ,
14377 			x_return_status =>l_return_status);
14378 
14379 
14380 		  l_cached_first_trip_flag:='Y';
14381 
14382 		  IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
14383 		  THEN
14384 		         IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
14385 		         THEN
14386 
14387 		         	Delete_Cache(x_return_status=>l_return_status);
14388 
14389 				IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
14390 				THEN
14391 				       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
14392 				       THEN
14393 					  raise FTE_FREIGHT_PRICING_UTIL.g_tl_delete_cache_fail;
14394 				       END IF;
14395 				END IF;
14396 
14397 				Initialize_Cache_Indices(
14398 					x_trip_index=>	l_trip_index,
14399 					x_stop_index=>	l_stop_index,
14400 					x_dleg_index=>	l_dleg_index,
14401 					x_carrier_index=>l_carrier_index,
14402 					x_child_dleg_index=>l_child_dleg_index,
14403 					x_return_status=> l_return_status);
14404 
14405 				IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
14406 				THEN
14407 				       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
14408 				       THEN
14409 					  raise FTE_FREIGHT_PRICING_UTIL.g_tl_init_cache_indices_fail;
14410 				       END IF;
14411 				END IF;
14412 
14413 				l_cached_first_trip_flag:='N';
14414 		         END IF;
14415 		END IF;
14416 
14417 		i:=p_lane_rows.NEXT(i);
14418 
14419 	END LOOP;
14420 
14421 	IF (l_cached_first_trip_flag='N')
14422 	THEN
14423 
14424 
14425 		raise FTE_FREIGHT_PRICING_UTIL.g_tl_no_trips_cached;
14426 
14427 	END IF;
14428 
14429 	--The first lane/schedule has been cached
14430 	--For the remaining lanes/schedules we shall copy the data we captured above
14431 	--and alter the UOMs according to the lanes
14432 
14433 
14434 
14435 
14436 	--Alter and copy into cache for each lane
14437 
14438 
14439 
14440 	WHILE ( (i IS NOT NULL) AND (p_lane_rows.EXISTS(i)))
14441 	LOOP
14442 
14443 		IF (p_lane_rows.EXISTS(i) AND p_schedule_rows.EXISTS(i) AND p_vehicle_rows.EXISTS(i)
14444 			AND ((p_lane_rows(i) IS NOT NULL) OR (p_schedule_rows(i) IS NOT NULL) ))
14445 		THEN
14446 
14447 			--Store all the indices
14448 
14449 			l_last_trip_index:=l_trip_index;
14450 			l_last_carrier_index:=l_carrier_index;
14451 			l_last_stop_index:=l_stop_index;
14452 			l_last_dleg_index:=l_dleg_index;
14453 
14454 
14455 
14456 			Cache_Next_Trip_Lane(
14457 				p_trip_id=>FAKE_TRIP_ID,
14458 				p_lane_id=> p_lane_rows(i),
14459 				p_schedule_id=> p_schedule_rows(i),
14460 				p_vehicle=> p_vehicle_rows(i) ,
14461 				x_trip_index => l_trip_index,
14462 				x_carrier_index=>l_carrier_index,
14463 				x_stop_index=>l_stop_index,
14464 				x_dleg_index=>l_dleg_index,
14465 				x_child_dleg_index=>l_child_dleg_index,
14466 				x_return_status=>l_return_status);
14467 
14468 			IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_SUCCESS
14469 			THEN
14470 			       IF l_return_status <> WSH_UTIL_CORE.G_RET_STS_WARNING
14471 			       THEN
14472 				   l_warning_count:=l_warning_count+1;
14473 			       	   IF (p_schedule_rows(i) IS NOT NULL)
14474 			       	   THEN
14475 
14476 			       	   	   FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_WRN,'Failed to cache OM Consolidations'
14477 			       	   	   ||p_source_header_rec.consolidation_id||' schedule '||p_schedule_rows(i)||':g_tl_cmp_trip_sched_fail');
14478 
14479 					   --FTE_FREIGHT_PRICING_UTIL.setmsg (
14480 					--	p_api=>'TL_BUILD_CACHE_FOR_OM',
14481 					--	p_exc=>'g_tl_cmp_trip_sched_fail',
14482 					--	p_msg_type=>'W',
14483 					--	p_trip_id=> p_wsh_trip_id,
14484 					--	p_schedule_id=>p_schedule_rows(i));
14485 				    ELSE
14486 
14487 			       	   	   FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_WRN,'Failed to cache delivery'
14488 			       	   	   ||p_source_header_rec.consolidation_id||' lane '||p_lane_rows(i)||':g_tl_cmp_trip_lane_fail');
14489 
14490 					--   FTE_FREIGHT_PRICING_UTIL.setmsg (
14491 					--	p_api=>'TL_BUILD_CACHE_FOR_OM',
14492 					--	p_exc=>'g_tl_cmp_trip_lane_fail',
14493 					--	p_msg_type=>'W',
14494 					--	p_trip_id=> p_wsh_trip_id,
14495 					--	p_lane_id=>p_lane_rows(i));
14496 
14497 
14498 				    END IF;
14499 
14500 				--Restore indices
14501 
14502 				l_trip_index:=l_last_trip_index;
14503 				l_carrier_index:=l_last_carrier_index;
14504 				l_stop_index:=l_last_stop_index;
14505 				l_dleg_index:=l_last_dleg_index;
14506 
14507 
14508 				--DELETE Newly added cache
14509 
14510 				Partially_Delete_Cache(
14511 					p_trip_index=>l_trip_index,
14512 					p_carrier_index=>l_carrier_index,
14513 					p_stop_index=>l_stop_index,
14514 					p_dleg_index=>l_dleg_index,
14515 					p_child_dleg_index=>l_child_dleg_index);
14516 
14517 			       END IF;
14518 			END IF;
14519 
14520 
14521 
14522 
14523 		ELSE
14524 
14525 			--FTE_FREIGHT_PRICING_UTIL.setmsg (
14526 			--	p_api=>'TL_BUILD_CACHE_FOR_OM',
14527 			--	p_exc=>'g_tl_no_lane_sched_veh',
14528 			--	p_trip_id=>p_wsh_trip_id);
14529 
14530 			raise FTE_FREIGHT_PRICING_UTIL.g_tl_no_lane_sched_veh;
14531 
14532 		END IF;
14533 
14534 		i:=p_lane_rows.NEXT(i);
14535 
14536 	END LOOP;
14537 
14538         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_BUILD_CACHE_FOR_OM');
14539 
14540 	IF (l_warning_count > 0)
14541 	THEN
14542 		x_return_status:=WSH_UTIL_CORE.G_RET_STS_WARNING;
14543 	END IF;
14544 EXCEPTION
14545 
14546 
14547 
14548   WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_no_trips_cached THEN
14549    	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
14550    	FTE_FREIGHT_PRICING_UTIL.set_exception('TL_BUILD_CACHE_FOR_OM',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_no_trips_cached');
14551    	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_BUILD_CACHE_FOR_OM');
14552 
14553   WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_init_cache_indices_fail THEN
14554    	x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
14555    	FTE_FREIGHT_PRICING_UTIL.set_exception('TL_BUILD_CACHE_FOR_OM',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_init_cache_indices_fail');
14556    	FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_BUILD_CACHE_FOR_OM');
14557 
14558 
14559    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_cache_first_trp_lane_fail THEN
14560         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
14561         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_BUILD_CACHE_FOR_OM',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_cache_first_trp_lane_fail');
14562         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_BUILD_CACHE_FOR_OM');
14563 
14564    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_no_lane_sched_veh THEN
14565         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
14566         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_BUILD_CACHE_FOR_OM',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_no_lane_sched_veh');
14567         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_BUILD_CACHE_FOR_OM');
14568 
14569 
14570    WHEN FTE_FREIGHT_PRICING_UTIL.g_tl_delete_cache_fail THEN
14571         x_return_status := WSH_UTIL_CORE.G_RET_STS_ERROR;
14572         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_BUILD_CACHE_FOR_OM',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_tl_delete_cache_fail');
14573         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_BUILD_CACHE_FOR_OM');
14574 
14575    WHEN others THEN
14576         x_return_status := WSH_UTIL_CORE.G_RET_STS_UNEXP_ERROR;
14577         FTE_FREIGHT_PRICING_UTIL.set_exception('TL_BUILD_CACHE_FOR_OM',FTE_FREIGHT_PRICING_UTIL.G_ERR,'g_others');
14578         FTE_FREIGHT_PRICING_UTIL.print_msg(FTE_FREIGHT_PRICING_UTIL.G_ERR,'Unexpected Error : '||SQLCODE||' : '||SQLERRM);
14579         FTE_FREIGHT_PRICING_UTIL.unset_method(l_log_level,'TL_BUILD_CACHE_FOR_OM');
14580 
14581 
14582 
14583 END TL_BUILD_CACHE_FOR_OM;
14584 
14585 
14586 
14587 END FTE_TL_CACHE;