예제 #1
0
        public void SaveCml(string path)
        {
            XElement xroads   = new XElement("Roads");
            XElement xparcels = new XElement("Parcels");
            XElement xspots   = new XElement("CitySpots");
            XElement xlinears = new XElement("CityLinears");
            XElement xregions = new XElement("CityRegions");

            XElement xe = new XElement("TongjiCity", xroads, xparcels, xspots, xlinears, xregions);

            xe.Add(new XAttribute("Extents", Extents.ToString()));
            xe.Add(new XAttribute("CmlVersion", CurrentCmlVersion));

            Roads.ForEach(x => xroads.Add(x.ToXElement()));
            Parcels.ForEach(x => xparcels.Add(x.ToXElement()));
            CitySpots.ForEach(x => xspots.Add(x.ToXElement()));
            CityLinears.ForEach(x => xlinears.Add(x.ToXElement()));
            CityRegions.ForEach(x => xregions.Add(x.ToXElement()));

            xe.Save(path);
        }
예제 #2
0
        private void CalculateCityBasedCourierCost()
        {
            string FromCityRegion = string.Empty;
            string ToCityRegion   = string.Empty;

            if (TotalSkids <= 0)
            {
                GetFinalCost(0);
                return;
            }


            XDocument CityRegions;
            string    fName = Guid.NewGuid().ToString() + ".xml";
            string    sXML  = Global.GetPostalCodesZones();

            if (string.IsNullOrEmpty(sXML))
            {
                CityRegions = XDocument.Load(System.Configuration.ConfigurationManager.AppSettings["cityregionfile"]);
            }
            else
            {
                CityRegions = XDocument.Parse(sXML);
            }

            var myCityRangeCost = from cityRange in CityRegions.Descendants("CityRegion")
                                  where ((string)cityRange.Attribute("From")).Equals(shipperCityRegion) &&
                                  ((string)cityRange.Attribute("To")).Equals(consigneeCityRegion)
                                  select cityRange;


            if (myCityRangeCost == null || myCityRangeCost.Count() == 0)
            {
                myCityRangeCost = from cityRange in CityRegions.Descendants("CityRegion")
                                  where ((string)cityRange.Attribute("From")).Equals(shipperCityRegion) &&
                                  ((string)cityRange.Attribute("To")).Equals(shipperCityRegion)
                                  select cityRange;
            }

            if (myCityRangeCost == null || myCityRangeCost.Count() == 0)
            {
                myCityRangeCost = from cityRange in CityRegions.Descendants("CityRegion")
                                  where ((string)cityRange.Attribute("From")).Equals(consigneeCityRegion) &&
                                  ((string)cityRange.Attribute("To")).Equals(consigneeCityRegion)
                                  select cityRange;
            }

            if (myCityRangeCost == null || myCityRangeCost.Count() == 0)
            {
                OrderCost = 0;
                GetFinalCost(OrderCost);
                return;
            }

            if (ServiceType.Equals(DeliverySerrviceType.SMD.ToString()))
            {
                OrderCost = decimal.Parse(myCityRangeCost.Elements("SMD").First().Value.ToString());
            }
            else if (ServiceType.Equals(DeliverySerrviceType.RSH.ToString()))
            {
                OrderCost = decimal.Parse(myCityRangeCost.Elements("Rush").First().Value.ToString());
            }
            else if (ServiceType.Equals(DeliverySerrviceType.DIR.ToString()))
            {
                OrderCost = decimal.Parse(myCityRangeCost.Elements("DIR").First().Value.ToString());
            }
            else if (ServiceType.Equals(DeliverySerrviceType.ON.ToString()))
            {
                OrderCost = decimal.Parse(myCityRangeCost.Elements("ON").First().Value.ToString());
            }
            else if (ServiceType.Equals(DeliverySerrviceType.ON1.ToString()) ||
                     ServiceType.Equals(DeliverySerrviceType.ON2.ToString()) ||
                     ServiceType.Equals(DeliverySerrviceType.ON3.ToString()) ||
                     ServiceType.Equals(DeliverySerrviceType.AFT.ToString()))
            {
                string  depService      = string.Empty;
                string  depservoperator = string.Empty;
                decimal depsevChrg      = 0;

                XDocument specialService  = XDocument.Load("Administration\\SpecialServiceCharges.xml");
                var       mySPServiceCost = from spservChrg in specialService.Descendants("service")
                                            where ((string)spservChrg.Attribute("type")).Equals(ServiceType.ToUpper())
                                            select spservChrg;
                foreach (var item in mySPServiceCost)
                {
                    depService      = ((XElement)item).Attribute("dependent").Value.ToString();
                    depservoperator = ((XElement)item).Attribute("opration").Value.ToString();
                    depsevChrg      = decimal.Parse(((XElement)item).Attribute("addCharg").Value.ToString());
                }

                OrderCost = decimal.Parse(myCityRangeCost.Elements(depService).First().Value.ToString());
                if (depservoperator.Equals("+"))
                {
                    OrderCost = OrderCost + depsevChrg;
                }
                else if (depservoperator.Equals("-"))
                {
                    OrderCost = OrderCost - depsevChrg;
                }
                else if (depservoperator.Equals("*"))
                {
                    OrderCost = OrderCost * depsevChrg;
                }
            }

            OrderCost = OrderCost * TotalSkids;

            //carCharges = 0;
            //if (carChargesFlag)
            //{
            //    if (ToZone.Equals("11") || FromZone.Equals("11"))
            //    {
            //        OrderCost = OrderCost + dbcarCharges;
            //        carCharges = dbcarCharges;
            //    }
            //}

            //vanCharges = 0;
            //if (vanChargesFlag)
            //{
            //    OrderCost = OrderCost + dbvanCharges;
            //    vanCharges = dbvanCharges;
            //}

            //if ((wait - WaitChargeFreeLimit) > 0)
            //{
            //    waitCharges = (wait - WaitChargeFreeLimit) * WaitChargeUnit;
            //    OrderCost = waitCharges;
            //}

            //if ((weight - WeightChargeFreeLimit > 0))
            //{
            //    weightCharges = (weight - WeightChargeFreeLimit) * WeightChargeUnit;
            //    OrderCost = OrderCost + weightCharges;
            //}

            //OrderCost = OrderCost + loadUnloadCharges;

            GetFinalCost(OrderCost);
        }