コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: FinanceGateway.cs プロジェクト: jpheary/Argix10
        public static RateQuoteDataset GetClassCodes()
        {
            //
            RateQuoteDataset       classes = new RateQuoteDataset();
            RateQuoteServiceClient client  = new RateQuoteServiceClient();

            try {
                classes.Merge(client.GetClassCodes());
                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(classes);
        }