Esempio n. 1
0
        protected void btnSub_Click(object sender, EventArgs e)
        {
            if (txtProNo.Text.Trim() == "")
            {
                base.ClientScript.RegisterStartupScript(base.GetType(), null, "<script>alert('请填写 销售退货单号!');</script>");
                return;
            }
            else
            {
                if (CheckProNo(txtProNo.Text) == false)
                {
                    return;
                }
            }
            //查询项目信息是否存在
            string sql = string.Format("select Id,PoNo from Sell_OrderInHouse where ProNo='{0}' and status='通过'", txtProNo.Text.Trim());
            var    obj = DBHelp.getDataTable(sql);

            if (obj.Rows.Count != 1)
            {
                base.ClientScript.RegisterStartupScript(base.GetType(), null, "<script>alert('销售退货信息不存在!');</script>");
                return;
            }
            Sell_OrderInHousesService ordersSer     = new Sell_OrderInHousesService();
            TB_HouseGoodsService      houseGoodsSer = new TB_HouseGoodsService();

            //查询销售退货信息
            List <Sell_OrderInHouses> orders = ordersSer.GetListArray(" 1=1 and Sell_OrderInHouses.id=" + obj.Rows[0]["Id"]);

            sql = string.Format(@"--销售退货还原--25	销售退货
delete from tb_EForm where e_No='{0}' and proId=25;
delete from tb_EForms where e_Id in (select id from tb_EForm where e_No='{0}' and proId=25);
delete from Sell_OrderInHouses where id = (select ID from Sell_OrderInHouse where ProNo='{0}');
delete from Sell_OrderInHouse where ProNo='{0}';", txtProNo.Text.Trim());

            using (SqlConnection conn = DBHelp.getConn())
            {
                conn.Open();
                SqlTransaction tan        = conn.BeginTransaction();
                SqlCommand     objCommand = conn.CreateCommand();
                objCommand.Transaction = tan;
                try
                {
                    for (int i = 0; i < orders.Count; i++)
                    {
                        if (orders[i].GoodPriceSecond != 0)
                        {
                            houseGoodsSer.OutHouse(orders[i].HouseID, orders[i].GooId, orders[i].GoodNum, orders[i].GoodPriceSecond, objCommand);
                        }
                        else
                        {
                            houseGoodsSer.OutHouse(orders[i].HouseID, orders[i].GooId, orders[i].GoodNum, orders[i].GoodPrice, objCommand);
                        }
                    }
                    objCommand.CommandText = sql;
                    objCommand.ExecuteNonQuery();
                    tan.Commit();
                }
                catch (Exception)
                {
                    tan.Rollback();
                    conn.Close();
                    base.ClientScript.RegisterStartupScript(base.GetType(), null, "<script>alert('删除失败!');</script>");
                    return;
                }
                conn.Close();
                string PONO = obj.Rows[0]["PoNo"].ToString();
                Sell_OrderOutHouseService SellOutSer = new Sell_OrderOutHouseService();
                SellOutSer.SellOrderUpdatePoStatus2(PONO);
                new CG_POOrdersService().GetListArrayToFpsAndUpdatePoStatue(PONO, "通过");
                new CG_POOrderService().GetOrder_ToInvoiceAndUpdatePoStatus(PONO);
                base.ClientScript.RegisterStartupScript(base.GetType(), null, "<script>alert('删除成功!');</script>");
            }
        }
Esempio n. 2
0
        protected void btnSub_Click(object sender, EventArgs e)
        {
            if (txtProNo.Text == "")
            {
                base.ClientScript.RegisterStartupScript(base.GetType(), null, "<script>alert('请填写 采购退货单号!');</script>");
                return;
            }
            //查询项目信息是否存在
            string sql = string.Format("select Id,PoNo,HouseID from CAI_OrderOutHouse where ProNo='{0}' and status='通过'", txtProNo.Text);
            var    obj = DBHelp.getDataTable(sql);

            if (obj.Rows.Count != 1)
            {
                base.ClientScript.RegisterStartupScript(base.GetType(), null, "<script>alert('采购退货信息不存在!');</script>");
                return;
            }
            sql = string.Format("SELECT count(id) FROM TB_SupplierInvoice where CaiTuiProNo='{0}' and status='通过'", txtProNo.Text);
            var obj1 = DBHelp.ExeScalar(sql);

            if (Convert.ToInt32(obj1) != 1)
            {
                base.ClientScript.RegisterStartupScript(base.GetType(), null, "<script>alert('支付负数单不存在!');</script>");
                return;
            }

            // 如果此采购退货单生成的负数的 支付单的支付状态为已支付,结清状态为已结清

            //说明有3种可能 1.事后退货的已抵消 2.此采退是全退货单  3.此采退单导致了全部退货

            //1.修改此采购退货单生成的负数的支付单的状态 为未支付,结清状态为 未结清。

            //2-3 删除基于此入库ID 的所有负数支付单(支付状态为未支付和结清状态为 未结清),修改此采购退货单生成的负数的支付单的状态 为未支付,结清状态为 未结清。

            // 你要区分这两种情况!!

            //4.如果此采购退货单生成的负数的 支付单的支付状态为未支付,结清状态为未结清,由此采购退货单生成的负数的支付单删除即可
            sql = string.Format(@"select TB_SupplierInvoice.Id,Ids,RuIds,RePayClear,IsPayStatus from TB_SupplierInvoices
left join TB_SupplierInvoice on TB_SupplierInvoices.Id=TB_SupplierInvoice.Id where CAITUIPRONO='{0}' and Status='通过'", txtProNo.Text);
            var dt = DBHelp.getDataTable(sql);

            using (SqlConnection conn = DBHelp.getConn())
            {
                conn.Open();
                SqlCommand objCommand = conn.CreateCommand();
                foreach (DataRow dr in dt.Rows)
                {
                    if (dr["RePayClear"].ToString() == "1" && dr["IsPayStatus"].ToString() == "2")//已支付  已结清
                    {
                        //检查是否是事后退货的已抵消
                        sql = string.Format(@"select COUNT(*) from TB_TempSupplierInvoice
left join TB_SupplierInvoice on TB_SupplierInvoice.Id=TB_TempSupplierInvoice.SupplierInvoiceId 
where SupplierInvoiceIds={0}  and Status='通过' ", dr["Ids"]);
                        objCommand.CommandText = sql;
                        var result = objCommand.ExecuteScalar();
                        if (Convert.ToInt32(result) > 0)
                        {
                            //修改此采购退货单生成的负数的支付单的状态 为未支付,结清状态为 未结清。
                            sql = "update TB_SupplierInvoices set RePayClear=2,IsPayStatus=0 where ids=" + dr["Ids"];
                            objCommand.CommandText = sql;
                            objCommand.ExecuteNonQuery();
                        }
                        else
                        {
                            //删除基于此入库ID 的所有负数支付单(支付状态为未支付和结清状态为 未结清),
                            //修改此采购退货单生成的负数的支付单的状态 为未支付,结清状态为 未结清
                            sql = "delete from TB_SupplierInvoices where RuIds=" + dr["RuIds"] + " and SupplierInvoiceTotal<0 and RePayClear=2 and IsPayStatus=0";
                            objCommand.CommandText = sql;
                            objCommand.ExecuteNonQuery();

                            sql = "update TB_SupplierInvoices set RePayClear=2,IsPayStatus=0 where ids=" + dr["Ids"];
                            objCommand.CommandText = sql;
                            objCommand.ExecuteNonQuery();
                        }
                    }
                    else if (dr["RePayClear"].ToString() == "2" && dr["IsPayStatus"].ToString() == "0")//未支付  未结清
                    {
                        //如果此采购退货单生成的负数的 支付单的支付状态为未支付,结清状态为未结清,由此采购退货单生成的负数的支付单删除即可
                        sql = "delete from TB_SupplierInvoices where Ids=" + dr["Ids"];
                        objCommand.CommandText = sql;
                        objCommand.ExecuteNonQuery();
                    }
                }
                conn.Close();
            }


            TB_HouseGoodsService      houseGoodsSer = new TB_HouseGoodsService();
            CAI_OrderOutHousesService ordersSer     = new CAI_OrderOutHousesService();
            List <CAI_OrderOutHouses> orders        = ordersSer.GetListArray(" 1=1 and CAI_OrderOutHouses.id=" + obj.Rows[0]["Id"]);

            sql = string.Format(@"delete from tb_EForm where e_No='{0}' and proId=24;
delete from tb_EForms where e_Id in (select id from tb_EForm where e_No='{0}' and proId=24);
delete from CAI_OrderOutHouses where id = (select ID from CAI_OrderOutHouse where ProNo='{0}');
delete from CAI_OrderOutHouse where ProNo='{0}';", txtProNo.Text);

            using (var conn = DBHelp.getConn())
            {
                conn.Open();
                SqlTransaction tan        = conn.BeginTransaction();
                var            objCommand = conn.CreateCommand();
                objCommand.Transaction = tan;
                try
                {
                    for (int i = 0; i < orders.Count; i++)
                    {
                        houseGoodsSer.InHouse(Convert.ToInt32(obj.Rows[0]["HouseID"]), orders[i].GooId, orders[i].GoodNum, orders[i].GoodPrice, objCommand);
                    }
                    objCommand.CommandText = sql;
                    objCommand.ExecuteNonQuery();
                    tan.Commit();
                }
                catch (Exception)
                {
                    tan.Rollback();
                    conn.Close();
                    base.ClientScript.RegisterStartupScript(base.GetType(), null, "<script>alert('删除失败!');</script>");
                    return;
                }
                conn.Close();
            }
            //删除没有表体的数据
            sql = "select ProNo from TB_SupplierInvoice where not exists(select Id from TB_SupplierInvoices where TB_SupplierInvoices.Id=TB_SupplierInvoice.Id)";
            var db = DBHelp.getDataTable(sql);

            if (db.Rows.Count > 0)
            {
                using (var conn = DBHelp.getConn())
                {
                    conn.Open();
                    SqlTransaction tan        = conn.BeginTransaction();
                    var            objCommand = conn.CreateCommand();
                    objCommand.Transaction = tan;
                    try
                    {
                        foreach (DataRow dr in db.Rows)
                        {
                            sql = string.Format(@" delete from tb_EForm where e_No='{0}' and proId=31;
delete from tb_EForms where e_Id in (select id from tb_EForm where e_No='{0}' and proId=31);
delete from TB_SupplierInvoice where ProNo='{0}';
delete from TB_SupplierInvoices where Id = (select Id from TB_SupplierInvoice where ProNo='{0}');", dr["ProNo"]);
                            objCommand.CommandText = sql;
                            objCommand.ExecuteNonQuery();
                        }
                        tan.Commit();
                        conn.Close();
                    }
                    catch (Exception)
                    {
                        tan.Rollback();
                        conn.Close();
                        base.ClientScript.RegisterStartupScript(base.GetType(), null, "<script>alert('删除失败!');</script>");
                        return;
                    }
                }
            }

            string PONO = obj.Rows[0]["PoNo"].ToString();
            Sell_OrderOutHouseService SellOutSer = new Sell_OrderOutHouseService();

            SellOutSer.SellOrderUpdatePoStatus2(PONO);
            base.ClientScript.RegisterStartupScript(base.GetType(), null, "<script>alert('删除成功!');</script>");
        }
        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);
        }