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