Пример #1
0
        /// <summary>
        /// 计算运费
        /// </summary>
        /// <param name="soInfo"></param>
        public virtual void CalculateShipPrice(SOInfo soInfo)
        {
            //电子卡订单运费为零
            if (soInfo.BaseInfo.SOType == SOType.ElectronicCard)
            {
                soInfo.BaseInfo.ShipPrice = null;
                return;
            }

            //手工设置运费
            if (soInfo.BaseInfo.ManualShipPrice.HasValue && soInfo.BaseInfo.ManualShipPrice > 0)
            {
                soInfo.BaseInfo.ShipPrice = soInfo.BaseInfo.ManualShipPrice.Value;
                return;
            }

            //计算订单中商品单件最大重量
            int soSingelMaxWeight = SOCommon.GetSOSingleMaxWeight(soInfo.Items);
            int soTotalWeight     = SOCommon.GetTotalWeight(soInfo.Items);

#warning 这里注销掉了关于Ozzo优先逻辑
            //bool isUseDiscount = false;
            soInfo.BaseInfo.ShipPrice = SODA.CaclShipPrice(
                soTotalWeight
                , soInfo.BaseInfo.SOAmount
                , soInfo.ShippingInfo.ShipTypeSysNo
                , soInfo.ReceiverInfo.AreaSysNo
                , soInfo.BaseInfo.CustomerSysNo
                , soSingelMaxWeight
                , soInfo.BaseInfo.CompanyCode);

            soInfo.BaseInfo.ShipPrice = decimal.Round(soInfo.BaseInfo.ShipPrice.Value, 2);
            if (soInfo.BaseInfo.ShipPrice == 0)
            {
                soInfo.BaseInfo.ShipPrice = null;
            }
        }