public Rates CalculateRates(DataModule tariff, string originZip, string classCode, string discount, string floorMin, string[] destinationZips) { //Calcualate rates string[] WEIGHT_RANGES = { "1", "501", "1001", "2001", "5001", "10001", "20001" }; Rates rates = new Rates(); try { for (int i = 0; i < destinationZips.Length; i++) { LTLRateShipmentRequest[] requests = new LTLRateShipmentRequest[WEIGHT_RANGES.Length]; for (int j = 0; j < WEIGHT_RANGES.Length; j++) { LTLRateShipmentRequest request = new LTLRateShipmentRequest(); request.tariffName = tariff != null ? tariff.tariffName : ""; request.shipmentDateCCYYMMDD = tariff != null ? tariff.effectiveDate : ""; request.originPostalCode = originZip; request.destinationPostalCode = destinationZips[i]; request.destinationCountry = request.originCountry = "USA"; request.useSingleShipmentCharges = "N"; request.rateAdjustmentFactor = "1.0000"; request.useDiscounts = "Y"; request.discountApplication = "R"; //Apply discount to R=Rates, C=Charges request.mcDiscount = discount; request.userMinimumChargeFloor = floorMin; request.LTL_Surcharge = "0"; request.TL_Surcharge = "0"; request.surchargeApplication = "G"; //Apply surcharge to G=Gross, N=Net LTLRequestDetail detail = new LTLRequestDetail(); detail.nmfcClass = classCode; detail.weight = WEIGHT_RANGES[j].ToString(); request.details = new LTLRequestDetail[] { detail }; requests[j] = request; } LTLRateShipmentResponse[] responses = new RateWareGateway().CalculateLTLRates(requests); ////Take lesser of min charge from rate ware or set floor min //double minCharge = Convert.ToDouble(responses[0].minimumCharge); //if (minCharge < floorMin) minCharge = floorMin; //Add rates to the grid RateQuoteDataset.RateTableRow _rate = new RateQuoteDataset().RateTable.NewRateTableRow(); _rate.OrgZip = responses[0].originPostalCode; _rate.DestZip = responses[0].destinationPostalCode.Substring(0, 3); _rate.MinCharge = responses[0].minimumCharge; _rate.Rate1 = responses[0].details[0].rate; _rate.Rate501 = responses[1].details[0].rate; _rate.Rate1001 = responses[2].details[0].rate; _rate.Rate2001 = responses[3].details[0].rate; _rate.Rate5001 = responses[4].details[0].rate; _rate.Rate10001 = responses[5].details[0].rate; _rate.Rate20001 = responses[6].details[0].rate; rates.Add(new Rate(_rate)); } } catch (Exception ex) { throw new FaultException <RateQuoteFault>(new RateQuoteFault(ex.Message), "Service Error"); } return(rates); }
public LTLRateShipmentResponse CalculateLTLRate(LTLRateShipmentRequest request) { // LTLRateShipmentResponse response = null; try { response = new RateWareGateway().CalculateLTLRate(request); } catch (Exception ex) { throw new FaultException <RateQuoteFault>(new RateQuoteFault(ex.Message), "Service Error"); } return(response); }
public static LTLRateShipmentResponse CalculateLTLRate(LTLRateShipmentRequest request) { // LTLRateShipmentResponse response = null; RateQuoteServiceClient client = new RateQuoteServiceClient(); try { response = client.CalculateLTLRate(request); client.Close(); } catch (TimeoutException te) { client.Abort(); throw new ApplicationException(te.Message); } catch (FaultException <RateQuoteFault> rfe) { client.Abort(); throw new ApplicationException(rfe.Detail.Message); } catch (FaultException fe) { client.Abort(); throw new ApplicationException(fe.Message); } catch (CommunicationException ce) { client.Abort(); throw new ApplicationException(ce.Message); } return(response); }
public LTLRateShipmentResponse CalculateLTLRate(LTLRateShipmentRequest request) { // LTLRateShipmentResponse response = null; RateWareXLPortTypeClient client = new RateWareXLPortTypeClient(); try { AuthenticationToken authToken = getAuthenticationToken(); if (client.isReady(authToken)) { //LTL rate shipment request response = client.LTLRateShipment(authToken, request); } client.Close(); } catch (TimeoutException te) { client.Abort(); throw new ApplicationException(te.Message); } catch (FaultException fe) { client.Abort(); throw new ApplicationException(fe.Message); } catch (CommunicationException ce) { client.Abort(); throw new ApplicationException(ce.Message); } return(response); }