Exemplo n.º 1
0
        /// <summary>
        /// 检测是否存在,并添加
        /// </summary>
        /// <typeparam name="TItem"></typeparam>
        /// <param name="p"></param>
        /// <returns></returns>
        public static new int Add(IFreight p)
        {
            DBExtend helper = dbHelper;
            IFreight item   = helper.QueryItem <IFreight>(b => b.AreaId == p.AreaId && b.DeliverType == p.DeliverType);

            if (item != null)
            {
                return(0);
            }
            //helper.Clear();
            int id = helper.InsertFromObj(p);

            return(id);
        }
Exemplo n.º 2
0
 public GenerateInvoice(IFreight freight, IFreightSearchStrategy freightSearchStrategy)
 {
     _freight = freight;
     _freightSearchStrategy = freightSearchStrategy;
 }
Exemplo n.º 3
0
 public ValidFreight(IFreight freight)
 {
     _freight = freight;
 }
Exemplo n.º 4
0
        /// <summary>
        /// 运费计算
        /// 查询不到返回0
        /// </summary>
        /// <param name="orderDetail"></param>
        /// <param name="areaId"></param>
        /// <param name="supplier"></param>
        /// <param name="freight1">物流运费</param>
        /// <param name="freight2">快递运费</param>
        public static void CalculateFreight(List <CRL.Order.ProductOrder.IOrderDetail> orderDetail, string areaId, Person.IShopSupplier supplier, out double freight1, out double freight2)
        {
            //总重
            double totalHeavy = 0;
            //免运费金额
            decimal minFreePostAmount = 0;

            int supplierId = supplier.Id;

            minFreePostAmount = supplier.MinFreePostAmount;
            decimal freePostAmount = 0;

            //计算总额
            foreach (var item in orderDetail)
            {
                if (item.IncludedFreePost)
                {
                    freePostAmount += item.Price * item.Num;
                }
                totalHeavy += item.TotalWeight;
            }
            //小于免运费金额才计算运费
            if (freePostAmount > minFreePostAmount)
            {
                freight1 = 0;
                freight2 = 0;
                return;
            }
            //freight1 = 100;
            //freight2 = 100;
            //return;
            //实际运费=首重运费+((总重-首重)/续重)*续重运费
            freight1 = 0;
            freight2 = 0;
            DBExtend        helper  = dbHelper;
            List <IFreight> freight = null;

            while (true)
            {
                //helper.Clear();
                freight = helper.QueryList <IFreight>(b => b.SupplierId == supplierId && b.AreaId == areaId && b.Disable == false);
                if (freight.Count == 0)//找上一级
                {
                    areaId = Area.AreaAction.Get(areaId).ParentCode;
                    if (areaId == "1")
                    {
                        return;
                    }
                }
                else
                {
                    break;
                }
            }
            //同时返回物流和快递,没有则只返回一个
            IFreight f1             = freight[0];
            double   continuedMoney = 0;

            if (totalHeavy > 0)
            {
                continuedMoney = ((totalHeavy - f1.Heavy) / f1.ContinuedHeavy) * f1.ContinuedHeavyMoney;
                if (continuedMoney < 0)
                {
                    continuedMoney = 0;
                }
            }
            double a = f1.HeavyMoney + continuedMoney;

            if (f1.DeliverType == DeliverType.物流)
            {
                freight1 = a;
            }
            else
            {
                freight2 = a;
            }
            if (freight.Count > 1)
            {
                IFreight f2 = freight[1];
                double   continuedMoney2 = 0;
                if (totalHeavy > 0)
                {
                    continuedMoney2 = ((totalHeavy - f2.Heavy) / f2.ContinuedHeavy) * f2.ContinuedHeavyMoney;
                    if (continuedMoney2 < 0)
                    {
                        continuedMoney2 = 0;
                    }
                }
                double b = f2.HeavyMoney + continuedMoney2;
                if (f2.DeliverType == DeliverType.物流)
                {
                    freight1 = b;
                }
                else
                {
                    freight2 = b;
                }
            }
            return;
        }
Exemplo n.º 5
0
 public LossFreight(IFreight freight)
 {
     _freight = freight;
 }