示例#1
0
        /// <summary>
        ///  下单、修改订单时,修改商品库存
        /// </summary>
        /// <param name="str">修改订单时,加库存</param>
        /// <param name="OrderDetailList">新增商品信息</param>
        /// <returns></returns>
        public string GetSqlInventory(string str, List <Hi.Model.DIS_OrderDetail> OrderDetailList)
        {
            StringBuilder sb = new StringBuilder();

            if (!str.Equals(""))
            {
                //订单修改时,订单明细删除的商品,返还商品库存
                List <Hi.Model.DIS_OrderDetail> odl = new Hi.BLL.DIS_OrderDetail().GetList("", str, "");

                if (odl != null && odl.Count > 0)
                {
                    foreach (var item in odl)
                    {
                        sb.AppendFormat("update BD_GoodsInfo set Inventory+={0} where ID={1};", item.GoodsNum + Convert.ToDecimal(item.ProNum), item.GoodsinfoID);
                    }
                }
            }
            if (OrderDetailList != null && OrderDetailList.Count > 0)
            {
                foreach (var item in OrderDetailList)
                {
                    sb.AppendFormat("update BD_GoodsInfo set Inventory-={0} where ID={1};", item.GoodsNum + Convert.ToDecimal(item.ProNum), item.GoodsinfoID);
                }
            }

            return(sb.ToString());
        }
示例#2
0
        /// <summary>
        /// 判断商品库存是否满足
        /// </summary>
        /// <param name="goodsInfoID">商品信息ID</param>
        /// <param name="OrderId">订单ID</param>
        /// <param name="num">下单商品库存数量</param>
        /// <returns>0、没有库存  1、返回商品库存数量,包括修改订单时,修改订单商品明细数量</returns>
        public static decimal GetInevntory(int goodsInfoID, int OrderId, decimal num)
        {
            decimal Inventory = 0;

            if (OrderId != 0)
            {
                //修改订单时,判断商品库存加上订单明细上的该商品数量
                List <Hi.Model.DIS_OrderDetail> l = new Hi.BLL.DIS_OrderDetail().GetList("", " IsNull(dr,0)=0 and GoodsInfoID=" + goodsInfoID + " and OrderID=" + OrderId, "");

                if (l != null && l.Count <= 0)
                {
                    Inventory = 0;
                }
                else
                {
                    Inventory = Convert.ToDecimal(l[0].GoodsNum.ToString());
                }
            }

            Hi.Model.BD_GoodsInfo infoModel = new Hi.BLL.BD_GoodsInfo().GetModel(goodsInfoID);
            Inventory += infoModel.Inventory;

            if (num != 0 && Inventory < num)
            {
                return(0);
            }
            return(Inventory);
        }
示例#3
0
文件: Common.cs 项目: kkwkk/ybyzt
        /// <summary>
        /// 判断商品库存是否满足
        /// </summary>
        /// <param name="goodsInfoID">商品信息ID</param>
        /// <param name="OrderId">订单ID</param>
        /// <param name="num">下单商品库存数量</param>
        /// <param name="Inventory">商品库存数量</param>
        /// <returns>false:可以下单  true:商品存库不足</returns>
        public static bool GetInevntory(int CompID, int goodsInfoID, int OrderId, decimal num, out string Inventory)
        {
            Inventory = "0";

            int IsInve = Convert.ToInt32(rdoOrderAudit("商品是否启用库存", CompID));

            if (IsInve == 0)
            {
                string Digits = rdoOrderAudit("订单下单数量是否取整", CompID);

                //启用库存
                if (OrderId != 0)
                {
                    //修改订单时,判断商品库存加上订单明细上的该商品数量
                    List <Hi.Model.DIS_OrderDetail> l = new Hi.BLL.DIS_OrderDetail().GetList("", " IsNull(dr,0)=0 and GoodsInfoID=" + goodsInfoID + " and OrderID=" + OrderId, "");

                    if (l != null && l.Count <= 0)
                    {
                        Inventory = "0";
                    }
                    else
                    {
                        Inventory = (Convert.ToDecimal(l[0].GoodsNum.ToString()) + Convert.ToDecimal(l[0].ProNum.ToString())).ToString();
                    }
                }

                Hi.Model.BD_GoodsInfo infoModel = new Hi.BLL.BD_GoodsInfo().GetModel(goodsInfoID);
                Inventory = (Convert.ToDecimal(Inventory) + infoModel.Inventory).ToString();

                Inventory = decimal.Parse(string.Format("{0:N2}", Inventory)).ToString(Digits);

                if (num != 0 && Convert.ToDecimal(Inventory) < num)
                {
                    return(true);
                }
                return(false);
            }
            else
            {
                return(false);
            }
        }
示例#4
0
        /// <summary>
        /// 修改商品库存,订单商品明细为NULL、传订单ID,不为空时传订单明细、订单为0;
        /// </summary>
        /// <param name="OrderID">订单ID</param>
        /// <param name="odl">订单商品明细</param>
        /// <param name="type">0、加商品库存  1、减商品库存</param>
        /// <returns></returns>
        public string GetSqlAddInve(int OrderID, List <Hi.Model.DIS_OrderDetail> odl, int type)
        {
            StringBuilder sb = new StringBuilder();

            if (OrderID != 0)
            {
                //传订单ID,查询订单明细
                List <Hi.Model.DIS_OrderDetail> l = new Hi.BLL.DIS_OrderDetail().GetList("", " IsNUll(dr,0)=0 and OrderID=" + OrderID, "");
                if (l != null && l.Count > 0)
                {
                    foreach (var item in l)
                    {
                        if (type == 0)
                        {
                            sb.AppendFormat("update BD_GoodsInfo set Inventory+={0} where ID={1};", item.GoodsNum + Convert.ToDecimal(item.ProNum), item.GoodsinfoID);
                        }
                        else
                        {
                            sb.AppendFormat("update BD_GoodsInfo set Inventory-={0} where ID={1};", item.GoodsNum + Convert.ToDecimal(item.ProNum), item.GoodsinfoID);
                        }
                    }
                }
            }
            else if (odl != null && odl.Count > 0)
            {
                foreach (var item in odl)
                {
                    if (type == 0)
                    {
                        sb.AppendFormat("update BD_GoodsInfo set Inventory+={0} where ID={1};", item.GoodsNum + Convert.ToDecimal(item.ProNum), item.GoodsinfoID);
                    }
                    else
                    {
                        sb.AppendFormat("update BD_GoodsInfo set Inventory-={0} where ID={1};", item.GoodsNum + Convert.ToDecimal(item.ProNum), item.GoodsinfoID);
                    }
                }
            }

            return(sb.ToString());
        }
示例#5
0
        /// <summary>
        /// 已发货超时未签收的订单  自动签收
        /// </summary>
        /// <returns></returns>
        public static string SendShip()
        {
            try
            {
                //系统自动签收天数
                int Sign = System.Configuration.ConfigurationManager.AppSettings["Sign"] != null?Convert.ToInt32(System.Configuration.ConfigurationManager.AppSettings["Sign"].ToString()) : 10;

                List <Hi.Model.BD_Company> coml = new Hi.BLL.BD_Company().GetList("ID", " isnull(dr,0)=0 and isnull(IsEnabled,0)=1 and AuditState=2", "");
                //执行sql
                string str = string.Empty;

                if (coml != null && coml.Count > 0)
                {
                    foreach (var icom in coml)
                    {
                        //获取核心企业设置自动签收天数
                        List <Hi.Model.SYS_SysName> sl = new Hi.BLL.SYS_SysName().GetList("", "Name='订单自动签收' and CompID=" + icom.ID, "");
                        if (sl != null && sl.Count > 0)
                        {
                            Sign = Convert.ToInt32(sl[0].Value);
                        }

                        //当前时间
                        DateTime now     = DateTime.Now;
                        DateTime oldTime = now.AddDays(-Sign);

                        //用户名ID、Name
                        int    UserID   = 0;
                        string userName = string.Empty;  //Common.GetUserName(UserID);

                        //查询超过签收天数条件
                        string signstr = " CompID=" + icom.ID + " and isnull(IsSign,0)=0 and SendDate<='" + oldTime + "'";

                        //查询超过签收天数未签收的订单
                        List <Hi.Model.DIS_OrderOut> outl = new Hi.BLL.DIS_OrderOut().GetList("", signstr, "");

                        if (outl == null && outl.Count == 0)
                        {
                            return("");
                        }

                        foreach (Hi.Model.DIS_OrderOut item in outl)
                        {
                            Hi.Model.DIS_Order OrderModel      = new Hi.BLL.DIS_Order().GetModel(item.OrderID);
                            List <Hi.Model.DIS_OrderDetail> od = new Hi.BLL.DIS_OrderDetail().GetList("", "OrderID=" + item.OrderID, "");
                            //查询该订单已发货的发货单
                            List <Hi.Model.DIS_OrderOut> lo = new Hi.BLL.DIS_OrderOut().GetList("", " OrderID=" + item.OrderID, "");
                            //订单明细商品总数量
                            decimal goodsnum = 0; //订单商品总数
                            if (od != null && od.Count > 0)
                            {
                                foreach (var item0 in od)
                                {
                                    goodsnum += item0.GoodsNum;
                                }
                            }

                            decimal outnum = 0;  //已发货商品数量
                            if (lo != null && lo.Count > 0)
                            {
                                var idstr = "";
                                foreach (var item1 in lo)
                                {
                                    idstr += item1.ID + ",";
                                }

                                if (idstr.Length > 0)
                                {
                                    idstr = idstr.Substring(0, idstr.Length - 1);
                                }

                                List <Hi.Model.DIS_OrderOutDetail> lod = new Hi.BLL.DIS_OrderOutDetail().GetList("", " OrderOutID in(" + idstr + ")", "");
                                if (lod != null && lod.Count > 0)
                                {
                                    foreach (var item2 in lod)
                                    {
                                        outnum += item2.OutNum;
                                    }
                                }
                            }

                            int IsOutState = (int)Enums.IsOutState.全部到货;
                            int OState     = (int)Enums.OrderState.已到货;
                            //订单
                            //到货签收修改订单状态
                            if (OrderModel.IsOutState == (int)Enums.IsOutState.全部发货)
                            {
                                //已发货数量等于订单商品数量 ==全部到货
                                if (outnum == goodsnum)
                                {
                                    IsOutState = (int)Enums.IsOutState.全部到货;
                                    OState     = (int)Enums.OrderState.已到货;
                                }
                                else
                                {
                                    IsOutState = (int)Enums.IsOutState.全部发货;
                                    OState     = (int)Enums.OrderState.已到货;
                                }
                            }
                            else if (OrderModel.IsOutState == (int)Enums.IsOutState.部分发货 || OrderModel.IsOutState == (int)Enums.IsOutState.部分到货)
                            {
                                IsOutState = (int)Enums.IsOutState.部分到货;
                                OState     = (int)Enums.OrderState.已发货;
                            }

                            //本次签收商品数量
                            List <Hi.Model.DIS_OrderOutDetail> lodd = new Hi.BLL.DIS_OrderOutDetail().GetList("", " OrderOutID=" + item.ID, "");
                            if (lodd != null && lodd.Count > 0 && OrderModel.IsOutState == (int)Enums.IsOutState.全部发货)
                            {
                                foreach (var item3 in lodd)
                                {
                                    str += "update DIS_OrderOutDetail set SignNum=OutNum where OrderOutID=" + item.ID + " and ID=" + item3.ID + ";";
                                }
                            }

                            userName = GetUserName(OrderModel.DisUserID);
                            UserID   = OrderModel.DisUserID;

                            //判断订单状态
                            if (OrderModel.OState >= (int)Enums.OrderState.已发货 && OrderModel.IsOutState == (int)Enums.IsOutState.全部发货 && (OrderModel.ReturnState == (int)Enums.ReturnState.未退货 || OrderModel.ReturnState == (int)Enums.ReturnState.拒绝退货))
                            {
                                //订单状态
                                str += " update Dis_Order set OState=" + OState + ",IsOutState=" + IsOutState + ",modifyuser="******",ts='" + DateTime.Now + "' where ID=" + item.OrderID + ";";
                                //签收状态
                                str += " update Dis_OrderOut set SignDate='" + DateTime.Now + "',SignUser='******',SignUserId=" + UserID + ",IsSign=1,modifyuser="******",ts='" + DateTime.Now + "' where ID=" + item.ID + ";";

                                //自动签收日志
                                str += string.Format("INSERT INTO SYS_SysBusinessLog VALUES({0},'{1}',{2},'{3}','{4}',{5},'{6}','{7}','{8}',{9},{10});", icom.ID, "Order", item.OrderID, "订单自动签收", DateTime.Now, UserID, userName, "", DateTime.Now, 0, UserID);
                            }
                            else
                            {
                                continue;
                            }
                        }
                    }
                }

                SqlTransaction TranSaction = null;
                SqlConnection  Connection  = new SqlConnection(SqlHelper.LocalSqlServer);
                Connection.Open();
                TranSaction = Connection.BeginTransaction();
                try
                {
                    SqlCommand cmd = new SqlCommand(str.ToString(), Connection, TranSaction);
                    cmd.CommandType = CommandType.Text;

                    int rowsAffected = SqlHelper.GetInt(cmd.ExecuteNonQuery().ToString());
                    if (rowsAffected > 0)
                    {
                        TranSaction.Commit();
                        return("1");
                    }
                    else
                    {
                        TranSaction.Rollback();
                        return("");
                    }
                }
                catch (Exception ex)
                {
                    TranSaction.Rollback();
                    Console.WriteLine(ex.Message);
                    return("");
                }
                finally
                {
                    Connection.Dispose();
                }
            }
            catch (Exception ex)
            {
                //错误日志
                string strPath = @"../autoOrder/";
                strPath = strPath + "\\" + DateTime.Now.ToString("yyyyMMhh") + "_服务错误日志" + ".txt";
                StreamWriter fs = new StreamWriter(strPath, false, System.Text.Encoding.Default);
                fs.WriteLine(ex.Message);
                fs.WriteLine(ex.Source + "::" + ex.InnerException + "::" + ex.TargetSite);
                fs.WriteLine("**************************************");
                fs.Close();
            }
            return("1");
        }
示例#6
0
        /// <summary>
        /// 订单分摊商品价格
        /// </summary>
        /// <param name="OrderID">订单ID</param>
        /// <param name="TotalAmount">订单商品总价</param>
        /// <param name="AuditAmount">订单应收总价</param>
        /// <returns></returns>
        public int GetSharePrice(int OrderID, decimal TotalAmount, decimal AuditAmount)
        {
            int sh = 0;

            try
            {
                //订单商品总价小于等于0,不能分摊
                if (TotalAmount <= 0)
                {
                    return(0);
                }

                List <Hi.Model.DIS_OrderDetail> odl = new BLL.DIS_OrderDetail().GetList("", " isnull(dr,0)=0 and OrderID=" + OrderID, "");

                //分摊价格=(商品小计/订单商品总价)* 订单应收总价
                //最后一个商品分摊价格=订单应收总价-(分摊价格+分摊价格n);
                if (odl != null && odl.Count > 0)
                {
                    SqlTransaction sqlTrans = DBUtility.SqlHelper.CreateStoreTranSaction();

                    //订单商品个数
                    int ldline = odl.Count;
                    int i      = 0;
                    //分摊商品小计总价
                    decimal SumShare = 0;

                    foreach (var item in odl)
                    {
                        //分摊商品单价小计
                        decimal Share = 0;

                        i++;
                        if (ldline == i)
                        {
                            //最后一个商品分摊价格
                            Share = AuditAmount - SumShare;
                            //分摊商品小计
                            item.SharePrice = Share;
                            //分摊商品单价
                            item.Price = Share / item.GoodsNum;
                        }
                        else
                        {
                            //Floor 返回小于或等于指定的取大整数
                            Share = (item.sumAmount / TotalAmount) * AuditAmount;
                            //垒加分摊商品小计总价Math.Floor()
                            SumShare += Share;
                            //分摊商品小计
                            item.SharePrice = Share;
                            //分摊商品单价
                            item.Price = Share / item.GoodsNum;
                        }

                        sh = new Hi.BLL.DIS_OrderDetail().UpdateOrderDetail(sqlTrans.Connection, item, sqlTrans);
                        if (sh == 0)
                        {
                            sqlTrans.Rollback();
                            return(sh);
                        }
                    }
                    sqlTrans.Commit();
                }
            }
            catch (Exception ex)
            {
                throw ex;
            }
            return(sh);
        }