Example #1
0
        public int AddCAI_OrderCheck(int id)
        {
            CAI_OrderCheck order = new CAI_OrderCheck();

            order.CreatePer   = 1;
            order.CheckPer    = 1;
            order.CheckTime   = DateTime.Now;
            order.CheckRemark = "库存初始化";

            VAN_OA.Model.EFrom.tb_EForm eform = new tb_EForm();

            int userId = 1;

            eform.appPer     = userId;
            eform.appTime    = DateTime.Now;
            eform.createPer  = 1;
            eform.createTime = DateTime.Now;
            eform.proId      = 21;
            eform.state      = "不通过";
            eform.toPer      = 0;
            eform.toProsId   = 0;
            CAI_POCaiService       POSer     = new CAI_POCaiService();
            List <CAI_POCaiView>   modelList = POSer.GetListViewCai_POOrders_Cai_POOrderChecks_View(" id=" + id);
            List <CAI_OrderChecks> POOrders  = new List <CAI_OrderChecks>();

            foreach (var model in modelList)
            {
                CAI_OrderChecks checkModel = new CAI_OrderChecks();
                checkModel.Total          = model.Total;
                checkModel.CaiId          = model.POCaiId;
                checkModel.CheckGoodId    = model.GoodId;
                checkModel.CheckNum       = model.Num;
                checkModel.CheckPrice     = model.Price;
                checkModel.Good_Model     = model.Good_Model;
                checkModel.GoodName       = model.GoodName;
                checkModel.GoodNo         = model.GoodNo;
                checkModel.GoodSpec       = model.GoodSpec;
                checkModel.GoodTypeSmName = model.GoodTypeSmName;
                checkModel.GoodUnit       = model.GoodUnit;
                checkModel.GuestName      = model.GuestName;
                checkModel.POName         = model.POName;
                checkModel.PONo           = model.PONo;
                checkModel.SupplierName   = model.Supplier;

                checkModel.CaiProNo           = model.ProNo;
                checkModel.QingGou            = model.CaiGou;
                checkModel.CaiGouPer          = model.loginName;
                checkModel.CheckLastTruePrice = model.LastTruePrice;
                checkModel.GoodAreaNumber     = model.GoodAreaNumber;
                POOrders.Add(checkModel);
            }

            CAI_OrderCheckService POOrderSer = new CAI_OrderCheckService();
            int MainId = 0;

            return(POOrderSer.addTran(order, eform, POOrders, out MainId));
        }
        public bool FormCheck()
        {
            #region 设置自己要判断的信息


            if (txtCheckPer.Text == "")
            {
                base.ClientScript.RegisterStartupScript(base.GetType(), null, "<script>alert('你填写检验人!');</script>");
                txtCheckPer.Focus();
                return(false);
            }


            if (txtCheckTime.Text == "")
            {
                base.ClientScript.RegisterStartupScript(base.GetType(), null, "<script>alert('你填写检验时间!');</script>");
                txtCheckTime.Focus();
                return(false);
            }
            else
            {
                if (CommHelp.VerifesToDateTime(txtCheckTime.Text) == false)
                {
                    base.ClientScript.RegisterStartupScript(base.GetType(), null, "<script>alert('检验时间 格式错误!');</script>");
                    return(false);
                }
            }


            try
            {
                Convert.ToDateTime(txtCheckTime.Text);
            }
            catch (Exception)
            {
                base.ClientScript.RegisterStartupScript(base.GetType(), null, "<script>alert('你填写检验时间有误!');</script>");
                txtCheckTime.Focus();
                return(false);
            }


            if (ddlPers.Visible == true && ddlPers.SelectedItem == null)
            {
                base.ClientScript.RegisterStartupScript(base.GetType(), null, "<script>alert('请选择下一步审核人!');</script>");
                ddlPers.Focus();

                return(false);
            }



            if (DBHelp.ExeScalar(string.Format("select ID from tb_User where loginName='{0}'", txtName.Text)) == null)
            {
                base.ClientScript.RegisterStartupScript(base.GetType(), null, "<script>alert('你填写申请用户不存在!');</script>");

                return(false);
            }

            if (DBHelp.ExeScalar(string.Format("select ID from tb_User where loginName='{0}'", txtCheckPer.Text)) == null)
            {
                base.ClientScript.RegisterStartupScript(base.GetType(), null, "<script>alert('你填写检验人不存在!');</script>");

                return(false);
            }

            #endregion


            if (Request["allE_id"] == null)
            {
                List <CAI_OrderChecks> POOrders = Session["Orders"] as List <CAI_OrderChecks>;

                if (POOrders == null || POOrders.Count <= 0)
                {
                    base.ClientScript.RegisterStartupScript(base.GetType(), null, "<script>alert('请添加明显信息!');</script>");
                    return(false);
                }


                var mycaiIds = new StringBuilder();
                foreach (var m in POOrders)
                {
                    mycaiIds.AppendFormat("{0},", m.CaiId);
                }
                if (mycaiIds.ToString() == "")
                {
                    base.ClientScript.RegisterStartupScript(base.GetType(), null, "<script>alert('请添加明细!');</script>");
                    return(false);
                }
                var ids = mycaiIds.ToString().Substring(0, mycaiIds.ToString().Length - 1);


                //--在创建/编辑 预付单时 判断是否已经有入库记录(包含正在执行的单子)
                string checkSql = string.Format(@"select COUNT(*) from TB_SupplierAdvancePayment left join TB_SupplierAdvancePayments on 
TB_SupplierAdvancePayment.Id=TB_SupplierAdvancePayments.Id where Status='执行中'
and CaiIds in ({0})", ids);//--增加采购订单的ID ( and CaiId=?)

                var errorText = new StringBuilder();
                var count     = DBHelp.ExeScalar(checkSql);
                if (count != null && Convert.ToInt32(count) > 0)
                {
                    errorText.Append("列表中采购数据,存在正在执行中的预付款单,请先将对应预付款单审批通过!");
                    base.ClientScript.RegisterStartupScript(base.GetType(), null, "<script>alert('" + errorText.ToString() + "');</script>");
                    return(false);
                }


                Hashtable ht = new Hashtable();

                Hashtable htSupplier = new Hashtable();
                foreach (var model in POOrders)
                {
                    string key = model.CheckGoodId.ToString() + model.CaiProNo;
                    if (!ht.Contains(key))
                    {
                        ht.Add(key, null);
                    }
                    else
                    {
                        base.ClientScript.RegisterStartupScript(base.GetType(), null, string.Format(@"<script>alert('单号[{3}]-商品[{0}]\规格[{1}]\型号[{2}],信息重复!');</script>", model.GoodName, model.GoodSpec, model.Good_Model, model.CaiProNo));
                        return(false);
                    }

                    string aa = model.SupplierName + model.PONo + model.POName + model.CaiGouPer;

                    if (!htSupplier.Contains(aa))
                    {
                        if ((!model.PONo.Contains("KC")) && new CG_POOrderService().ExistPONO(model.PONo) == false)
                        {
                            base.ClientScript.RegisterStartupScript(base.GetType(), null, "<script>alert('项目信息不存在!');</script>");
                            return(false);
                        }
                        htSupplier.Add(aa, null);
                        if (htSupplier.Keys.Count > 1)
                        {
                            base.ClientScript.RegisterStartupScript(base.GetType(), null, string.Format(@"<script>alert('检验单中 项目单号,项目名称,供应商,采购人必选完全一样!');</script>"));
                            return(false);
                        }
                    }
                }
                CAI_POCaiService POSer = new CAI_POCaiService();
                for (int i = 0; i < gvList.Rows.Count; i++)
                {
                    TextBox txtNum = gvList.Rows[i].FindControl("txtNum") as TextBox;
                    if (txtNum != null)
                    {
                        if (CommHelp.VerifesToNum(txtNum.Text) == false)
                        {
                            base.ClientScript.RegisterStartupScript(base.GetType(), null, "<script>alert('数量 格式错误!');</script>");
                            return(false);
                        }
                        POOrders[i].CheckNum = Convert.ToDecimal(txtNum.Text);
                    }
                    var model = POOrders[i];
                    if (model.CheckNum <= 0)
                    {
                        base.ClientScript.RegisterStartupScript(base.GetType(), null, string.Format(@"<script>alert('商品[{0}]\规格[{1}]\型号[{2}],数量必须大于0!');</script>", model.GoodName, model.GoodSpec, model.Good_Model));
                        return(false);
                    }
                    if (model.CheckPrice < 0)
                    {
                        base.ClientScript.RegisterStartupScript(base.GetType(), null, string.Format(@"<script>alert('商品[{0}]\规格[{1}]\型号[{2}],价格必须大于等于0!');</script>", model.GoodName, model.GoodSpec, model.Good_Model));
                        return(false);
                    }

                    string sql = string.Format(" 1=1 and Ids={0}", model.CaiId);
                    List <CAI_POCaiView> cars = POSer.GetListViewCai_POOrders_Cai_POOrderChecks_View(sql);
                    if (cars.Count <= 0)
                    {
                        base.ClientScript.RegisterStartupScript(base.GetType(), null, string.Format(@"<script>alert('单号[{3}]-商品[{0}]\规格[{1}]\型号[{2}],在项目订单[{3}]中不存在!');</script>", model.GoodName, model.GoodSpec, model.Good_Model, model.PONo));
                        return(false);
                    }
                    if (model.CheckNum > cars[0].ResultNum)
                    {
                        base.ClientScript.RegisterStartupScript(base.GetType(), null, string.Format(@"<script>alert('单号[{3}]-商品[{0}]\规格[{1}]\型号[{2}],检查数量剩余[{3}]!');</script>", model.GoodName, model.GoodSpec, model.Good_Model, cars[0].ResultNum));

                        return(false);
                    }
                }


                Session["Orders"] = POOrders;
            }
            else
            {
                List <CAI_OrderChecks> POOrders = Session["Orders"] as List <CAI_OrderChecks>;
                CAI_POCaiService       POSer    = new CAI_POCaiService();
                for (int i = 0; i < gvList.Rows.Count; i++)
                {
                    TextBox txtNum = gvList.Rows[i].FindControl("txtNum") as TextBox;
                    if (txtNum != null)
                    {
                        if (CommHelp.VerifesToNum(txtNum.Text) == false)
                        {
                            base.ClientScript.RegisterStartupScript(base.GetType(), null, "<script>alert('数量 格式错误!');</script>");
                            return(false);
                        }
                        POOrders[i].CheckNum = Convert.ToDecimal(txtNum.Text);
                    }
                    var model = POOrders[i];
                    if (model.CheckNum <= 0)
                    {
                        base.ClientScript.RegisterStartupScript(base.GetType(), null, string.Format(@"<script>alert('商品[{0}]\规格[{1}]\型号[{2}],数量必须大于0!');</script>", model.GoodName, model.GoodSpec, model.Good_Model));
                        return(false);
                    }
                    if (model.CheckPrice < 0)
                    {
                        base.ClientScript.RegisterStartupScript(base.GetType(), null, string.Format(@"<script>alert('商品[{0}]\规格[{1}]\型号[{2}],价格必须大于等于0!');</script>", model.GoodName, model.GoodSpec, model.Good_Model));
                        return(false);
                    }

                    if (i == 0 && (!model.PONo.Contains("KC")) && new CG_POOrderService().ExistPONO(model.PONo) == false)
                    {
                        base.ClientScript.RegisterStartupScript(base.GetType(), null, "<script>alert('项目信息不存在!');</script>");
                        return(false);
                    }


                    //查询订单原来的数量
                    string oldString = string.Format(@"select isnull(Num,0)-ISNULL(totalOrderNum,0)  as ResultNum from CAI_POCai 
left join CAI_POOrder on CAI_POCai.Id=CAI_POOrder.Id 
left join 
(
select  CaiId,SUM(CheckNum) as totalOrderNum from CAI_OrderChecks left join CAI_OrderCheck on 
CAI_OrderCheck.id=CAI_OrderChecks.CheckId
where CaiId<>0  and status<>'不通过' and CAI_OrderChecks.Ids<>{0}
group by CaiId
)
as newtable on CAI_POCai.Ids=newtable.CaiId where (CAI_POCai.Num>newtable.totalOrderNum or totalOrderNum is null)
and status='通过' and Ids={1}", model.Ids, model.CaiId);
                    var    oldNum    = DBHelp.ExeScalar(oldString);


                    if (oldNum is DBNull)
                    {
                        base.ClientScript.RegisterStartupScript(base.GetType(), null, string.Format(@"<script>alert('单号[{3}]-商品[{0}]\规格[{1}]\型号[{2}],在项目订单[{3}]中不存在!');</script>", model.GoodName, model.GoodSpec, model.Good_Model, model.PONo));
                        return(false);
                    }
                    if (model.CheckNum > Convert.ToDecimal(oldNum))
                    {
                        base.ClientScript.RegisterStartupScript(base.GetType(), null, string.Format(@"<script>alert('单号[{3}]-商品[{0}]\规格[{1}]\型号[{2}],检查数量剩余[{3}]!');</script>", model.GoodName, model.GoodSpec, model.Good_Model, oldNum));

                        return(false);
                    }
                }
                Session["Orders"] = POOrders;
            }

            if (ddlResult.SelectedItem != null && ddlResult.SelectedItem.Text == "通过")
            {
                List <CAI_OrderChecks> POOrders = Session["Orders"] as List <CAI_OrderChecks>;
                //判断是否为特殊商品 并查询库存是否有库存
                TB_HouseGoodsService  goodHouseSer = new TB_HouseGoodsService();
                CAI_OrderCheckService checkSer     = new CAI_OrderCheckService();
                foreach (var m in POOrders)
                {
                    if (goodHouseSer.CheckGoodInHouse(m.CheckGoodId))
                    {
                        string mess = checkSer.GetPONoInfo(m.CheckGoodId, m.GoodNo, m.GoodName, m.GoodTypeSmName, m.GoodSpec);
                        if (mess == "")
                        {
                            base.ClientScript.RegisterStartupScript(base.GetType(), null, string.Format(@"<script>alert('数据异常!');</script>"));
                            return(false);
                        }
                        base.ClientScript.RegisterStartupScript(base.GetType(), null,
                                                                string.Format(@"<script>alert('{0}!');</script>",
                                                                              mess));
                        return(false);
                    }
                }
            }

            //判断有没有设置默认仓库
            if (ddlPers.Visible == false)
            {
                string sql = "select count(*) from TB_HouseInfo where IfDefault=1";
                if (Convert.ToInt32(DBHelp.ExeScalar(sql)) != 1)
                {
                    base.ClientScript.RegisterStartupScript(base.GetType(), null, "默认仓库设置错误!请检查");
                    return(false);
                }
            }

            return(true);
        }