Ejemplo n.º 1
0
        private void btnClearDivideGoods_Click(object sender, System.EventArgs e)
        {
            //清除分货数据
            try
            {
                //string strwhhouse = this.ddlWarehouse.SelectedValue;
                ProduceLog pLog = new ProduceLog();
                pLog.cnnProduceSerialNo = decimal.Parse(txtProduceSerialNo.Text);
                pLog.cnvcOperID         = oper.strLoginID;

                OperLog operLog = new OperLog();
                operLog.cnvcOperID   = oper.strLoginID;
                operLog.cnvcDeptID   = oper.strDeptID;
                operLog.cnvcOperType = "清除分货数据";

                GoodsFacade goods = new GoodsFacade();
                goods.DeleteAssignLog(pLog, operLog);
                BindAssignLog(txtProduceSerialNo.Text);
                Popup("清除分货数据成功");
                this.btnQuery_Click(null, null);
                //this.btnDivideGoods.Enabled = false;
            }
            catch (Exception ex)
            {
                Popup(ex.Message);
            }
        }
Ejemplo n.º 2
0
        private void btnMakeLog_Click(object sender, System.EventArgs e)
        {
            try
            {
                ProduceLog pLog = new ProduceLog();
                pLog.cnnProduceSerialNo = decimal.Parse(txtProduceSerialNo.Text);
                pLog.cnvcOperID         = oper.strLoginID;

                OperLog operLog = new OperLog();
                operLog.cnvcOperID   = oper.strLoginID;
                operLog.cnvcDeptID   = oper.strDeptID;
                operLog.cnvcOperType = "生产预估";
                ProduceFacade pf = new ProduceFacade();
                if (chkSelf.Checked)
                {
                    pf.AddMakeLogSelf(pLog, operLog);
                }
                else
                {
                    pf.AddMakeLog(pLog, operLog);
                }
                Popup("预估成功");
                BindGrid();
            }
            catch (Exception ex)
            {
                Popup(ex.Message);
            }
        }
Ejemplo n.º 3
0
        private void btnLinkOrder_Click(object sender, System.EventArgs e)
        {
            //关联订单
            try
            {
                ProduceLog pLog = new ProduceLog();
                pLog.cnnProduceSerialNo = decimal.Parse(txtProduceSerialNo.Text);
                pLog.cndProduceDate     = DateTime.Parse(txtProduceDate.Text);
                pLog.cndShipBeginDate   = DateTime.Parse(txtShipBeginDate.Text);
                pLog.cndShipEndDate     = DateTime.Parse(txtShipEndDate.Text);
                pLog.cnvcProduceDeptID  = ddlProduceDept.SelectedValue;
                pLog.cnvcOperID         = oper.strLoginID;

                OperLog operLog = new OperLog();
                operLog.cnvcOperID   = oper.strLoginID;
                operLog.cnvcDeptID   = oper.strDeptID;
                operLog.cnvcOperType = "关联订单";



                ProduceFacade pFacade = new ProduceFacade();
                pFacade.LindOrder(pLog, operLog);
                Popup("关联订单成功");
                btnQueryProduct_Click(null, null);
            }
            catch (Exception ex)
            {
                Popup(ex.Message);
            }
        }
Ejemplo n.º 4
0
        private void BindProduceLog(string strProduceSerialNo)
        {
            string strSql = "select * from tbProduceLog where cnnProduceSerialNo=" + strProduceSerialNo;

            DataTable dtProduceLog = Helper.Query(strSql);

            if (dtProduceLog.Rows.Count > 0)
            {
                ProduceLog produceLog = new ProduceLog(dtProduceLog);
                this.ddlProduceDept.Items.FindByValue(produceLog.cnvcProduceDeptID).Selected = true;
                this.txtProduceSerialNo.Text = produceLog.cnnProduceSerialNo.ToString();
                this.txtProduceDate.Text     = produceLog.cndProduceDate.ToString("yyyy-MM-dd");

                this.txtProduceDate.Enabled     = false;
                this.txtProduceSerialNo.Enabled = false;
                this.ddlProduceDept.Enabled     = false;
                txtProduceState.Text            = produceLog.cnvcProduceState;
//				if(produceLog.cnvcProduceState == "4")
//				{
//					this.btnDivideGoods.Enabled = false;
//				}
//				else
//				{
//					this.btnDivideGoods.Enabled = true;
//				}
            }
            BindAssignLog(strProduceSerialNo);
        }
Ejemplo n.º 5
0
        private void btnOK_Click(object sender, System.EventArgs e)
        {
            try
            {
                if (JudgeIsNull(txtProduceDate.Text, "生产日期"))
                {
                    //Popup();
                    return;
                }
                if (JudgeIsNull(txtShipBeginDate.Text, "开始日期"))
                {
                    //Popup();
                    return;
                }
                if (JudgeIsNull(txtShipEndDate.Text, "结束日期"))
                {
                    //Popup();
                    return;
                }

                ProduceLog producePlan = new ProduceLog();
                producePlan.cnvcProduceDeptID = ddlProduceDept.SelectedValue;
                producePlan.cndProduceDate    = DateTime.Parse(txtProduceDate.Text);
                producePlan.cndShipBeginDate  = DateTime.Parse(txtShipBeginDate.Text);
                producePlan.cndShipEndDate    = DateTime.Parse(txtShipEndDate.Text);
                producePlan.cnvcOperID        = oper.strLoginID;
                producePlan.cnvcProduceState  = "0";
                producePlan.cnbSelf           = this.chkSelf.Checked;

                OperLog operLog = new OperLog();
                operLog.cnvcOperID   = oper.strLoginID;
                operLog.cnvcDeptID   = oper.strDeptID;
                operLog.cnvcOperType = "添加生产计划";

                ProduceFacade produce = new ProduceFacade();
                produce.AddProduceLog(producePlan, operLog);

                btnCancel_Click(null, null);
                //this.btnReturn_Click(null,null);
                //this.Response.Redirect("wfmProducePlanQuery.aspx",true);
                Popup("生产计划添加成功", "wfmProducePlanQuery.aspx");
            }
            catch (Exception ex)
            {
                Popup(ex.Message);
            }
        }
Ejemplo n.º 6
0
        protected void btnLinkOrder_Click(object sender, System.EventArgs e)
        {
            try
            {
                ProduceLog pLog = new ProduceLog();
                pLog.cnnProduceSerialNo = decimal.Parse(txtProduceSerialNo.Text);
                pLog.cndProduceDate     = DateTime.Parse(txtProduceDate.Text);
                pLog.cndShipBeginDate   = DateTime.Parse(txtShipBeginDate.Text);
                pLog.cndShipEndDate     = DateTime.Parse(txtShipEndDate.Text);
                pLog.cnvcProduceDeptID  = ddlProduceDept.SelectedValue;
                pLog.cnvcOperID         = oper.strLoginID;

                OperLog operLog = new OperLog();
                operLog.cnvcOperID = oper.strLoginID;
                operLog.cnvcDeptID = oper.strDeptID;



                ProduceFacade pFacade = new ProduceFacade();
                switch (ViewState["OperType"].ToString())
                {
                case "Order":
                    operLog.cnvcOperType = "关联订单";
                    pFacade.LindOrder(pLog, operLog);
                    Popup("关联订单成功");
                    break;

                case "Add":
                    operLog.cnvcOperType = "关联加单";
                    pFacade.LindOrderAdd(pLog, operLog);
                    Popup("关联加单成功");
                    break;

                case "Reduce":
                    operLog.cnvcOperType = "关联减单";
                    pFacade.LindOrderReduce(pLog, operLog);
                    Popup("关联减单成功");
                    break;
                }
            }
            catch (Exception ex)
            {
                Popup(ex.Message);
            }
        }
Ejemplo n.º 7
0
        protected void btnOK_Click(object sender, System.EventArgs e)
        {
            try
            {
                if (JudgeIsNull(txtProduceDate.Text, "生产日期"))
                {
                    //Popup();
                    return;
                }
                if (JudgeIsNull(txtShipBeginDate.Text, "开始日期"))
                {
                    //Popup();
                    return;
                }
                if (JudgeIsNull(txtShipEndDate.Text, "结束日期"))
                {
                    //Popup();
                    return;
                }

                ProduceLog producePlan = new ProduceLog();
                producePlan.cnvcProduceDeptID = ddlProduceDept.SelectedValue;
                producePlan.cndProduceDate    = DateTime.Parse(txtProduceDate.Text);
                producePlan.cndShipBeginDate  = DateTime.Parse(txtShipBeginDate.Text);
                producePlan.cndShipEndDate    = DateTime.Parse(txtShipEndDate.Text);
                producePlan.cnvcOperID        = oper.strLoginID;
                producePlan.cnvcProduceState  = "0";

                OperLog operLog = new OperLog();
                operLog.cnvcOperID   = oper.strLoginID;
                operLog.cnvcDeptID   = oper.strDeptID;
                operLog.cnvcOperType = "添加生产计划";

                ProduceFacade produce = new ProduceFacade();
                produce.AddProduceLog(producePlan, operLog);
                Popup("生产计划添加成功");
                btnCancel_Click(null, null);
            }
            catch (Exception ex)
            {
                Popup(ex.Message);
            }
        }
Ejemplo n.º 8
0
        private void BindProduceLog(string strProduceSerialNo)
        {
            string    strSql       = "select * from tbProduceLog where cnnProduceSerialNo=" + strProduceSerialNo;
            DataTable dtProduceLog = Helper.Query(strSql);

            if (dtProduceLog.Rows.Count > 0)
            {
                ProduceLog produceLog = new ProduceLog(dtProduceLog);
                this.ddlProduceDept.Items.FindByValue(produceLog.cnvcProduceDeptID).Selected = true;
                this.txtProduceSerialNo.Text = produceLog.cnnProduceSerialNo.ToString();
                this.txtProduceDate.Text     = produceLog.cndProduceDate.ToString("yyyy-MM-dd");
                this.chkSelf.Checked         = produceLog.cnbSelf;

                this.txtProduceDate.Enabled     = false;
                this.txtProduceSerialNo.Enabled = false;
                this.ddlProduceDept.Enabled     = false;
                this.chkSelf.Enabled            = false;
            }
        }
Ejemplo n.º 9
0
        protected void btnModify_Click(object sender, System.EventArgs e)
        {
            try
            {
                if (JudgeIsNull(txtProduceDate.Text, "生产日期"))
                {
                    //Popup();
                    return;
                }
                if (JudgeIsNull(txtShipBeginDate.Text, "开始日期"))
                {
                    //Popup();
                    return;
                }
                if (JudgeIsNull(txtShipEndDate.Text, "结束日期"))
                {
                    //Popup();
                    return;
                }
                ProduceLog pLog = new ProduceLog();
                pLog.cnnProduceSerialNo = decimal.Parse(txtProduceSerialNo.Text);
                pLog.cndProduceDate     = DateTime.Parse(txtProduceDate.Text);
                pLog.cndShipBeginDate   = DateTime.Parse(txtShipBeginDate.Text);
                pLog.cndShipEndDate     = DateTime.Parse(txtShipEndDate.Text);
                pLog.cnvcProduceDeptID  = ddlProduceDept.SelectedValue;
                pLog.cnvcOperID         = oper.strLoginID;

                OperLog operLog = new OperLog();
                operLog.cnvcOperID   = oper.strLoginID;
                operLog.cnvcDeptID   = oper.strDeptID;
                operLog.cnvcOperType = "修改生产计划";

                ProduceFacade pFacade = new ProduceFacade();
                pFacade.UpdateProduceLog(pLog, operLog);
                Popup("修改成功");
            }
            catch (Exception ex)
            {
                Popup(ex.Message);
            }
        }
Ejemplo n.º 10
0
        protected void btnMakeLog_Click(object sender, System.EventArgs e)
        {
            try
            {
                ProduceLog pLog = new ProduceLog();
                pLog.cnnProduceSerialNo = decimal.Parse(txtProduceSerialNo.Text);
                pLog.cnvcOperID         = oper.strLoginID;

                OperLog operLog = new OperLog();
                operLog.cnvcOperID   = oper.strLoginID;
                operLog.cnvcDeptID   = oper.strDeptID;
                operLog.cnvcOperType = "订单制令";

                ProduceFacade pf = new ProduceFacade();
                pf.AddMakeLog(pLog, "0", operLog);
                Popup("制令成功");
            }
            catch (Exception ex)
            {
                Popup(ex.Message);
            }
        }
Ejemplo n.º 11
0
        protected void btnDivideGoods_Click(object sender, System.EventArgs e)
        {
            try
            {
                ProduceLog pLog = new ProduceLog();
                pLog.cnnProduceSerialNo = decimal.Parse(txtProduceSerialNo.Text);
                pLog.cnvcOperID         = oper.strLoginID;

                OperLog operLog = new OperLog();
                operLog.cnvcOperID   = oper.strLoginID;
                operLog.cnvcDeptID   = oper.strDeptID;
                operLog.cnvcOperType = "分货";

                GoodsFacade goods = new GoodsFacade();
                goods.AddAssignLog(pLog, operLog);
                BindAssignLog(txtProduceSerialNo.Text);
                Popup("分货成功");
                //this.btnDivideGoods.Enabled = false;
            }
            catch (Exception ex)
            {
                Popup(ex.Message);
            }
        }
Ejemplo n.º 12
0
        private void BindProduceLog(string strProduceSerialNo)
        {
            string    strSql       = "select * from tbProduceLog where cnnProduceSerialNo=" + strProduceSerialNo;
            DataTable dtProduceLog = Helper.Query(strSql);

            if (dtProduceLog.Rows.Count > 0)
            {
                ProduceLog produceLog = new ProduceLog(dtProduceLog);
                this.ddlProduceDept.Items.FindByValue(produceLog.cnvcProduceDeptID).Selected = true;
                this.txtProduceSerialNo.Text = produceLog.cnnProduceSerialNo.ToString();
                this.txtProduceDate.Text     = produceLog.cndProduceDate.ToString("yyyy-MM-dd");
                this.txtShipBeginDate.Text   = produceLog.cndShipBeginDate.ToString("yyyy-MM-dd");
                this.txtShipEndDate.Text     = produceLog.cndShipEndDate.ToString("yyyy-MM-dd");

                if (produceLog.cnvcProduceState != "0")
                {
                    this.btnModify.Visible          = false;
                    this.txtProduceDate.Enabled     = false;
                    this.txtProduceSerialNo.Enabled = false;
                    this.txtShipBeginDate.Enabled   = false;
                    this.txtShipEndDate.Enabled     = false;
                }
            }
        }
Ejemplo n.º 13
0
        //入库
        public void ProduceCheck(DataTable dtProduce, OperLog operLog, string strProduceDeptID, string strProduceSerialNo)
        {
            using (SqlConnection conn = ConnectionPool.BorrowConnection())
            {
                //conn.Open();

                SqlTransaction trans = conn.BeginTransaction();
                try
                {
                    string   strSysTime = SqlHelper.ExecuteScalar(trans, CommandType.Text, "select getdate()").ToString();
                    DateTime dtSysTime  = DateTime.Parse(strSysTime);

                    string strComments = "";
                    foreach (DataRow drProduce in dtProduce.Rows)
                    {
                        ProduceCheckLog check = new ProduceCheckLog(drProduce);
                        check.cnvcOperID        = operLog.cnvcOperID;
                        check.cnvcProduceDeptID = strProduceDeptID;
                        check.cndOperDate       = dtSysTime;

                        ProduceCheckLog check2 = new ProduceCheckLog();
                        check2.cnnProduceSerialNo = check.cnnProduceSerialNo;
                        check2.cnvcInvCode        = check.cnvcInvCode;
                        check2 = EntityMapping.Get(check2, trans) as ProduceCheckLog;
                        if (check2 == null)
                        {
                            EntityMapping.Create(check, trans);
                        }
                        else
                        {
                            check2.cnnCheckCount = check.cnnCheckCount;
                            check2.cnvcOperID    = operLog.cnvcOperID;
                            check2.cndOperDate   = dtSysTime;
                            check2.cnnTeamID     = check.cnnTeamID;
                            check2.cnnProducerID = check.cnnProducerID;
                            EntityMapping.Update(check2, trans);
                        }
                        strComments += "[" + check.cnvcInvCode + ":" + check.cnnCheckCount.ToString() + "]";
                    }
                    ProduceLog pl = new ProduceLog();
                    pl.cnnProduceSerialNo = decimal.Parse(strProduceSerialNo);
                    pl = EntityMapping.Get(pl, trans) as ProduceLog;
                    if (pl == null)
                    {
                        throw new Exception("生产数据异常");
                    }
                    pl.cnvcProduceState = "4";
                    pl.cnvcOperID       = operLog.cnvcOperID;
                    pl.cndOperDate      = dtSysTime;
                    EntityMapping.Update(pl, trans);

                    operLog.cndOperDate  = dtSysTime;
                    operLog.cnvcComments = "生产流水:" + strProduceSerialNo + strComments;
                    EntityMapping.Create(operLog, trans);
                    trans.Commit();
                }
                catch (SqlException sex)
                {
                    trans.Rollback();
                    LogAdapter.WriteDatabaseException(sex);
                    throw sex;
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    LogAdapter.WriteFeaturesException(ex);
                    throw ex;
                }
                finally
                {
                    ConnectionPool.ReturnConnection(conn);
                }
            }
        }
Ejemplo n.º 14
0
        public void AddAssignLog(ProduceLog produceLog, OperLog operLog, string strwhhouse)      //,BusiLog busiLog)
        {
            using (SqlConnection conn = ConnectionPool.BorrowConnection())
            {
                SqlTransaction trans = conn.BeginTransaction();
                try
                {
                    string   strSysTime = SqlHelper.ExecuteScalar(trans, CommandType.Text, "select getdate()").ToString();
                    DateTime dtSysTime  = DateTime.Parse(strSysTime);

                    OrderSerialNo serialNo = new OrderSerialNo();
                    serialNo.cnvcFill    = "0";
                    serialNo.cnnSerialNo = Convert.ToDecimal(EntityMapping.Create(serialNo, trans));

                    ProduceLog oldLog = new ProduceLog();
                    oldLog.cnnProduceSerialNo = produceLog.cnnProduceSerialNo;
                    oldLog = EntityMapping.Get(oldLog, trans) as ProduceLog;
                    if (oldLog == null)
                    {
                        throw new Exception("生产计划不存在");
                    }
                    if (oldLog.cnvcProduceState == "6")
                    {
                        throw new Exception("已分货");
                    }
                    if (oldLog.cnvcProduceState == "7")
                    {
                        throw new Exception("已分货出库");
                    }
                    oldLog.cnvcOperID  = produceLog.cnvcOperID;
                    oldLog.cndOperDate = dtSysTime;

                    AssignLog assign = new AssignLog();
                    assign.cndOperDate        = dtSysTime;
                    assign.cnnAssignSerialNo  = serialNo.cnnSerialNo;
                    assign.cnnProduceSerialNo = oldLog.cnnProduceSerialNo;
                    assign.cnvcShipOperID     = produceLog.cnvcOperID;
                    assign.cnvcShipDeptID     = oldLog.cnvcProduceDeptID;
                    assign.cnvcOperID         = produceLog.cnvcOperID;
                    assign.cndShipDate        = oldLog.cndProduceDate;
                    //订单数据
                    string    strOrderSql       = @"select * from tbOrderBook where cnnOrderSerialNo in 
						(select cnnOrderSerialNo from tbProduceOrderLog where cnnProduceSerialNo="                         + oldLog.cnnProduceSerialNo.ToString() + ")";
                    DataTable dtOrder           = SqlHelper.ExecuteDataTable(trans, CommandType.Text, strOrderSql);
                    string    strOrderDetailSql = @"select * from tbOrderBookDetail where cnnOrderSerialNo in 
						(select cnnOrderSerialNo from tbProduceOrderLog where cnnProduceSerialNo="                         + oldLog.cnnProduceSerialNo.ToString() + ")";
                    DataTable dtOrderDetail     = SqlHelper.ExecuteDataTable(trans, CommandType.Text, strOrderDetailSql);
                    DataTable dtDept            = SingleTableQuery.ExcuteQuery("tbDept", trans);
                    //生产盘点数据
                    string strCheckSql = "select * "
                                         + " from tbProduceCheckLog where cnnProduceSerialNo=" +
                                         oldLog.cnnProduceSerialNo.ToString() + " and cnnCheckCount>0 and cnbInWh=1";
                    DataTable dtProduce = SqlHelper.ExecuteDataTable(trans, CommandType.Text, strCheckSql);
                    #region 分货不按可用量分
                    string strwhsql = "SELECT cnvcinvcode,sum(cnnAvaQuantity) as cnnwhcount FROM tbCurrentStock "
                                      + " WHERE cnvcwhcode='" + strwhhouse + "' AND cnvcStopFlag='0'  and CONVERT(char(10),isnull(cndExpDate,''),121)>=CONVERT(char(10),getdate(),121)  "
                                      + " group by cnvcinvcode";
                    DataTable dtwh = SqlHelper.ExecuteDataTable(trans, CommandType.Text, strwhsql);


                    Helper.DataTableConvert(dtProduce, "cnvcInvCode", "cnnCheckCount", dtwh, "cnvcinvcode", "cnnwhcount", "");
                    #endregion
                    //订单按产品分类汇总
                    //分配 外订订单有限分配
                    Helper.DataTableConvert(dtOrderDetail, "cnnOrderSerialNo", "cnvcOrderType", dtOrder, "cnnOrderSerialNo", "cnvcOrderType", "");
                    Helper.DataTableConvert(dtOrderDetail, "cnnOrderSerialNo", "cnvcOrderDeptID", dtOrder, "cnnOrderSerialNo", "cnvcOrderDeptID", "");
                    Helper.DataTableConvert(dtOrderDetail, "cnnOrderSerialNo", "cndShipDate", dtOrder, "cnnOrderSerialNo", "cndShipDate", "");
                    Helper.DataTableConvert(dtOrderDetail, "cnvcOrderDeptID", "cnnPriority", dtDept, "cnvcDeptID", "cnnPriority", "");
                    //
                    dtOrderDetail.Columns.Add("cnnAssignCount");
                    foreach (DataRow dr in dtOrderDetail.Rows)
                    {
                        dr["cnnAssignCount"] = 0;
                    }

                    DataView dvOrder = new DataView(dtOrderDetail);
                    dvOrder.Sort = "cnvcOrderType desc,cnnPriority asc,cnnOrderSerialNo asc";
                    Hashtable hOrderSerialNo = new Hashtable();
                    foreach (DataRowView dv in dvOrder)
                    {
                        string  strOrderSerialNo = dv["cnnOrderSerialNo"].ToString();
                        string  strProductCode   = dv["cnvcInvCode"].ToString();
                        string  strOrderCount    = dv["cnnOrderCount"].ToString();
                        string  strAssignCount   = dv["cnnAssignCount"].ToString();
                        decimal dOrderCount      = decimal.Parse(strOrderCount);
                        decimal dAssignCount     = Convert.ToDecimal(strAssignCount);
                        string  strOrderType     = dv["cnvcOrderType"].ToString();

                        DataRow[] drProduces = dtProduce.Select("cnvcInvCode='" + strProductCode + "'");
                        if (drProduces.Length == 0)
                        {
                            continue;                                                //throw new Exception(strProductCode+"无可分货量");
                        }
                        //						if(drProduces.Length > 0)
                        //						{

                        DateTime dtMDate      = Convert.ToDateTime(drProduces[0]["cndMDate"].ToString());
                        DateTime dtExpDate    = Convert.ToDateTime(drProduces[0]["cndExpDate"].ToString());
                        string   strSumCount  = drProduces[0]["cnnCheckCount"].ToString();
                        decimal  dSumCount    = decimal.Parse(strSumCount);
                        string   strSumAssign = drProduces[0]["cnnAssignCount"].ToString();
                        decimal  dSumAssign   = decimal.Parse(strSumAssign);
                        //if(dSumCount <=0) throw new Exception(strProductCode+"无可分货量");
                        //						if(dSumCount > 0)
                        //						{
                        AssignDetail assignDetail = new AssignDetail();
                        assignDetail.cnnAssignSerialNo  = assign.cnnAssignSerialNo;
                        assignDetail.cnnProduceSerialNo = assign.cnnProduceSerialNo;
                        assignDetail.cnnOrderSerialNo   = decimal.Parse(strOrderSerialNo);
                        assignDetail.cnvcInvCode        = strProductCode;
                        assignDetail.cndMdate           = dtMDate;
                        assignDetail.cndExpDate         = dtExpDate;

                        if (dSumCount >= dOrderCount - dAssignCount)
                        {
                            assignDetail.cnnOrderCount      = dOrderCount;
                            assignDetail.cnnAssignCount     = dOrderCount - dAssignCount;
                            drProduces[0]["cnnCheckCount"]  = dSumCount - dOrderCount + dAssignCount;
                            drProduces[0]["cnnAssignCount"] = dSumAssign + dOrderCount - dAssignCount;
                        }
                        else
                        {
                            if (strOrderType == "WDO" || strOrderType == "WDOSELF")
                            {
                                throw new Exception("订单流水为" + dv["cnnOrderSerialNo"].ToString() + "的外订定单" + strProductCode + "不能满足分配");
                            }
                            assignDetail.cnnOrderCount      = dOrderCount;
                            assignDetail.cnnAssignCount     = dSumCount;
                            drProduces[0]["cnnCheckCount"]  = 0;
                            drProduces[0]["cnnAssignCount"] = dSumAssign + dSumCount;
                        }

                        EntityMapping.Create(assignDetail, trans);
                        if (!hOrderSerialNo.Contains(dv["cnnOrderSerialNo"].ToString()))
                        {
                            hOrderSerialNo.Add(dv["cnnOrderSerialNo"].ToString(), dv["cnnOrderSerialNo"].ToString());
                            assign.cnnOrderSerialNo  = decimal.Parse(dv["cnnOrderSerialNo"].ToString());
                            assign.cnvcReceiveDeptID = dv["cnvcOrderDeptID"].ToString();
                            assign.cndShipDate       = DateTime.Parse(dv["cndShipDate"].ToString());
                            EntityMapping.Create(assign, trans);
                        }

                        //								string strOrderBookDetail = "update tbOrderBookDetail set cnnAssignCount="+Convert.ToString(assignDetail.cnnAssignCount+dAssignCount)+" where cnnOrderSerialNo="+strOrderSerialNo+" and cnvcProductCode='"+strProductCode+"'";
                        //								SqlHelper.ExecuteNonQuery(trans,CommandType.Text,strOrderBookDetail);
                        //						}



                        //						}
                    }
                    foreach (DataRow drProduce in dtProduce.Rows)
                    {
                        ProduceCheckLog check  = new ProduceCheckLog(drProduce);
                        string          strSql = "update tbProduceCheckLog set cnnAssignCount=" + check.cnnAssignCount.ToString() + " where cnnProduceSerialNo=" + check.cnnProduceSerialNo.ToString() + " and cnvcInvCode='" + check.cnvcInvCode + "'";
                        SqlHelper.ExecuteNonQuery(trans, CommandType.Text, strSql);
                    }
                    //更新订单生产计划状态
                    string strUpdateOrder = "update tbOrderBook set cnvcOrderState='2' "
                                            +
                                            " where cnnOrderSerialNo in (select cnnOrderSerialNo from tbProduceOrderLog where cnvcType='0' and cnnProduceSerialNo=" + oldLog.cnnProduceSerialNo + ") ";
                    SqlHelper.ExecuteNonQuery(trans, CommandType.Text, strUpdateOrder);
                    //更新生产计划状态

                    oldLog.cnvcProduceState = "6";
                    EntityMapping.Update(oldLog, trans);

                    operLog.cndOperDate  = dtSysTime;
                    operLog.cnvcComments = "分货流水:" + produceLog.cnnProduceSerialNo.ToString();
                    EntityMapping.Create(operLog, trans);
                    trans.Commit();
                }
                catch (SqlException sex)
                {
                    trans.Rollback();
                    LogAdapter.WriteDatabaseException(sex);
                    throw sex;
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    LogAdapter.WriteFeaturesException(ex);
                    throw ex;
                }
                finally
                {
                    ConnectionPool.ReturnConnection(conn);
                }
            }
        }
Ejemplo n.º 15
0
        public void AddAssignLog(ProduceLog produceLog, OperLog operLog)       //,BusiLog busiLog)
        {
            using (SqlConnection conn = ConnectionPool.BorrowConnection())
            {
                //conn.Open();

                SqlTransaction trans = conn.BeginTransaction();
                try
                {
                    string   strSysTime = SqlHelper.ExecuteScalar(trans, CommandType.Text, "select getdate()").ToString();
                    DateTime dtSysTime  = DateTime.Parse(strSysTime);

                    OrderSerialNo serialNo = new OrderSerialNo();
                    serialNo.cnvcFill    = "0";
                    serialNo.cnnSerialNo = Convert.ToDecimal(EntityMapping.Create(serialNo, trans));

                    ProduceLog oldLog = new ProduceLog();
                    oldLog.cnnProduceSerialNo = produceLog.cnnProduceSerialNo;
                    oldLog = EntityMapping.Get(oldLog, trans) as ProduceLog;
                    if (oldLog == null)
                    {
                        throw new Exception("生产计划不存在");
                    }
//					if(oldLog.cnvcProduceState != "3")
//					{
//						throw new Exception("未盘点");
//					}
                    oldLog.cnvcOperID  = produceLog.cnvcOperID;
                    oldLog.cndOperDate = dtSysTime;
                    AssignLog assign = new AssignLog();
                    assign.cndOperDate        = dtSysTime;
                    assign.cnnAssignSerialNo  = serialNo.cnnSerialNo;
                    assign.cnnProduceSerialNo = oldLog.cnnProduceSerialNo;
                    assign.cnvcShipOperID     = produceLog.cnvcOperID;
                    assign.cnvcShipDeptID     = oldLog.cnvcProduceDeptID;
                    assign.cnvcOperID         = produceLog.cnvcOperID;
                    assign.cndShipDate        = oldLog.cndProduceDate;

                    #region
                    //订单流水
                    //收货单位

                    //订单、加单、减单清单
//					string strOrderSql = "select b.cnvcOrderDeptID,b.cndShipDate,b.cnvcOrderType,e.cnnPriority,c.* from tbProduceOrderLog a "
//					                     + " join tbOrderBook b on a.cnnOrderSerialNo=b.cnnOrderSerialNo "
//					                     + " left outer join tbOrderBookDetail c on b.cnnOrderSerialNo=c.cnnOrderSerialNo "
//					                     + " left outer join tbDept e on b.cnvcOrderDeptID=e.cnvcDeptID "
//					                     + " where a.cnnProduceSerialNo = " + oldLog.cnnProduceSerialNo.ToString()
//					                     + " and a.cnvcType='0' ";//and b.cnvcOrderState='1'";
//					string strOrderAddSql = "select b.* from tbProduceOrderLog a "
//					                        + " left outer join tbOrderAddLog b on a.cnnOrderSerialNo=b.cnnAddSerialNo "
//					                        + " where a.cnnProduceSerialNo=" + oldLog.cnnProduceSerialNo.ToString()
//					                        + " and a.cnvcType='1' ";//and b.cnvcAddState='1'";
//					string strOrderReduceSql = "select b.* from tbProduceOrderLog a "
//					                           + " left outer join tbOrderReduceLog b on a.cnnOrderSerialNo=b.cnnReduceSerialNo "
//					                           + " where a.cnnProduceSerialNo=" + oldLog.cnnProduceSerialNo.ToString()
//					                           + " and a.cnvcType='2' ";//and b.cnvcReduceState='1'";
//					DataTable dtOrder = SqlHelper.ExecuteDataTable(trans, CommandType.Text, strOrderSql);
//					DataTable dtOrderAdd = SqlHelper.ExecuteDataTable(trans, CommandType.Text, strOrderAddSql);
//					DataTable dtOrderReduce = SqlHelper.ExecuteDataTable(trans, CommandType.Text, strOrderReduceSql);
//					//合计订单
//					foreach(DataRow drAdd in dtOrderAdd.Rows)
//					{
//						string strOrderSerialNo = drAdd["cnnOrderSerialNo"].ToString();
//						string strProductCode = drAdd["cnvcProductCode"].ToString();
//						DataRow[] drOrders = dtOrder.Select("cnvcProductCode='" + strProductCode + "'");
//						if(drOrders.Length == 0)
//						{
//							DataRow[] drOrderSerialNo = dtOrder.Select("cnnOrderSerialNo=" + strOrderSerialNo);
//							if(drOrderSerialNo.Length > 0)
//							{
//								DataRow drOrder = dtOrder.NewRow();
//								drOrder["cnvcOrderDeptID"] = drOrderSerialNo[0]["cnvcOrderDeptID"];
//								drOrder["cndShipDate"] = drOrderSerialNo[0]["cndShipDate"];
//								drOrder["cnvcOrderType"] = drOrderSerialNo[0]["cnvcOrderType"];
//								drOrder["cnnPriority"] = drOrderSerialNo[0]["cnnPriority"];
//
//								drOrder["cnnOrderSerialNo"] = drAdd["cnvcProductCode"];
//								drOrder["cnvcProductCode"] = drAdd["cnvcProductCode"];
//								drOrder["cnvcProductName"] = drAdd["cnvcProductName"];
//								drOrder["cnnOrderCount"] = drAdd["cnnAddCount"];
//								drOrder["cnvcUnit"] = drAdd["cnvcUnit"];
//								drOrder["cnnPrice"] = drAdd["cnnPrice"];
//								drOrder["cnnSum"] = drAdd["cnnSum"];
//								dtOrder.Rows.Add(drOrder);
//							}
//						}
//
//					}
//
//					foreach(DataRow drOrder in dtOrder.Rows)
//					{
//						//有的加减数量,无的加产品
//						string strProductCode = drOrder["cnvcProductCode"].ToString();
//						//订单量
//						decimal dCount = decimal.Parse(drOrder["cnnOrderCount"].ToString());
//						decimal dAddCount = 0;
//						DataRow[] drOrderAdds = dtOrderAdd.Select("cnvcProductCode='" + strProductCode + "'");
//						if(drOrderAdds.Length > 0)
//						{
//							//加单量
//							string strOrderAddCount = drOrderAdds[0]["cnnAddCount"].ToString();
//							dAddCount = decimal.Parse(strOrderAddCount);
//							//dAddCount = decimal.Parse(strCount) + decimal.Parse(strOrderAddCount);
//							drOrder["cnnOrderCount"] = dCount + dAddCount;
//						}
//						DataRow[] drOrderReduces = dtOrderReduce.Select("cnvcProductCode='" + strProductCode + "'");
//						if(drOrderReduces.Length > 0)
//						{
//							//减单量
//							decimal dReduceCount = decimal.Parse(drOrderReduces[0]["cnnReduceCount"].ToString());
//							//decimal dReduceCount = decimal.Parse(strCount) - decimal.Parse(strOrderReduceCount);
//							drOrder["cnnOrderCount"] = dCount + dAddCount - dReduceCount;
//						}
//					}
                    #endregion
                    #region 注释
                    //生产、加单、减单
//					string strProduceSql = "select * from tbProduceDetail where cnnProduceSerialNo="+oldLog.cnnProduceSerialNo.ToString();
//					string strProduceAddSql = "select * from tbProduceDetailAdd where cnvcState='2' and cnnProduceSerialNo="+oldLog.cnnProduceSerialNo.ToString();
//					string strProduceReduceSql = "select * from tbProduceDetailReduce where cnvcState='2' and cnnProduceSerialNo="+oldLog.cnnProduceSerialNo;
//					DataTable dtProduce = SqlHelper.ExecuteDataTable(trans, CommandType.Text, strProduceSql);
//					DataTable dtProduceAdd = SqlHelper.ExecuteDataTable(trans, CommandType.Text, strProduceAddSql);
//					DataTable dtProduceReduce = SqlHelper.ExecuteDataTable(trans, CommandType.Text, strProduceReduceSql);
//
//					foreach(DataRow drProduce in dtProduce.Rows)
//					{
//						//有的加减数量,无的加产品
//						string strProductCode = drProduce["cnvcCode"].ToString();
//						decimal dCount = decimal.Parse(drProduce["cnnCount"].ToString());
//						decimal dAddCount = 0;
//						DataRow[] drProduceAdds = dtProduceAdd.Select("cnvcCode='" + strProductCode + "'");
//						if(drProduceAdds.Length > 0)
//						{
//							dAddCount = decimal.Parse(drProduceAdds[0]["cnnCount"].ToString());
//							//decimal dAddCount = decimal.Parse(strCount) + decimal.Parse(strOrderAddCount);
//							drProduce["cnnCount"] = dCount + dAddCount;//dAddCount.ToString();
//						}
//						DataRow[] drProduceReduces = dtProduceReduce.Select("cnvcCode='" + strProductCode + "'");
//						if(drProduceReduces.Length > 0)
//						{
//							decimal dReduceCount = decimal.Parse(drProduceReduces[0]["cnnCount"].ToString());
//							//decimal dReduceCount = decimal.Parse(strCount) - decimal.Parse(strOrderReduceCount);
//							drProduce["cnnCount"] = dCount + dAddCount - dReduceCount;//dReduceCount.ToString();
//						}
//					}
//					foreach(DataRow drAdd in dtProduceAdd.Rows)
//					{
//						string strProductCode = drAdd["cnvcCode"].ToString();
//						DataRow[] drProduces = dtProduce.Select("cnvcCode='" + strProductCode + "'");
//						if(drProduces.Length == 0)
//						{
//							DataRow drProduce = dtOrder.NewRow();
//							drProduce["cnnProduceSerialNo"] = drAdd["cnnProduceSerialNo"];
//							drProduce["cnvcCode"] = drAdd["cnvcCode"];
//							drProduce["cnvcName"] = drAdd["cnvcName"];
//							drProduce["cnnCount"] = drAdd["cnnCount"];
//							drProduce["cnvcUnit"] = drAdd["cnvcUnit"];
//							//drProduce["cnvcPrice"] = drAdd["cnvcPrice"];
//							//drProduce["cnnSum"] = drAdd["cnnSum"];
//							dtProduceAdd.Rows.Add(drProduce);
//						}
//
//					}
                    #endregion
                    //订单数据
                    string strOrderSql = "select b.cnvcOrderDeptID,b.cndShipDate,b.cnvcOrderType,f.cnnPriority,"
                                         + " c.cnnOrderSerialNo,c.cnvcProductCode,c.cnvcProductName, "
                                         + " (c.cnnOrderCount+isnull(d.cnnAddCount,0)-isnull(e.cnnReduceCount,0)) as cnnOrderCount,c.cnvcUnit,c.cnnPrice, "
                                         + " (c.cnnSum+isnull(d.cnnAddSum,0)-isnull(e.cnnReduceSum,0)) as cnnSum,c.cnnAssignCount "
                                         + "  from  tbOrderBookDetail c "
                                         + " left outer join "
                                         + " (select cnnOrderSerialNo,cnvcProductCode,sum(cnnAddCount) as cnnAddCount,sum(cnnSum) as cnnAddSum from "
                                         + " tbOrderAddLog "
                                         + " group by cnnOrderSerialNo,cnvcProductCode) "
                                         + "  d on c.cnnOrderSerialNo=d.cnnOrderSerialNo and d.cnvcProductCode=c.cnvcProductCode "
                                         + " left outer join  "
                                         + " (select cnnOrderSerialNo,cnvcProductCode,sum(cnnReduceCount) as cnnReduceCount,sum(cnnSum) as cnnReduceSum from  "
                                         + " tbOrderReduceLog "
                                         + " group by cnnOrderSerialNo,cnvcProductCode) "
                                         + " e on c.cnnOrderSerialNo=e.cnnOrderSerialNo and e.cnvcProductCode=c.cnvcProductCode "
                                         + " left outer join tbOrderBook b on c.cnnOrderSerialNo=b.cnnOrderSerialNo "
                                         + " left outer join tbDept f on b.cnvcOrderDeptID=f.cnvcDeptID "
                                         + " where c.cnnOrderSerialNo in (select cnnOrderSerialNo from tbProduceOrderLog where cnnProduceSerialNo=" + oldLog.cnnProduceSerialNo.ToString() + ") "
                                         + " and c.cnnOrderCount+isnull(d.cnnAddCount,0)-isnull(e.cnnReduceCount,0)>c.cnnAssignCount ";
                    DataTable dtOrder = SqlHelper.ExecuteDataTable(trans, CommandType.Text, strOrderSql);
                    //生产盘点数据
                    string strCheckSql = "select * from tbProduceCheckLog where cnnProduceSerialNo=" +
                                         oldLog.cnnProduceSerialNo.ToString() + " and cnnCheckCount>0";
                    DataTable dtProduce = SqlHelper.ExecuteDataTable(trans, CommandType.Text, strCheckSql);
                    //订单按产品分类汇总
                    //分配 外订订单有限分配
                    DataView dvOrder = new DataView(dtOrder);
                    dvOrder.Sort = "cnvcOrderType desc,cnnPriority asc,cnnOrderSerialNo asc";
                    Hashtable hOrderSerialNo = new Hashtable();
                    foreach (DataRowView dv in dvOrder)
                    {
                        string  strOrderSerialNo = dv["cnnOrderSerialNo"].ToString();
                        string  strProductCode   = dv["cnvcProductCode"].ToString();
                        string  strProductName   = dv["cnvcProductName"].ToString();
                        string  strOrderCount    = dv["cnnOrderCount"].ToString();
                        string  strAssignCount   = dv["cnnAssignCount"].ToString();
                        decimal dOrderCount      = decimal.Parse(strOrderCount);
                        decimal dAssignCount     = Convert.ToDecimal(strAssignCount);
                        string  strUnit          = dv["cnvcUnit"].ToString();
                        string  strPrice         = dv["cnnPrice"].ToString();
                        string  strOrderType     = dv["cnvcOrderType"].ToString();
                        decimal dPrice           = decimal.Parse(strPrice);

                        DataRow[] drProduces = dtProduce.Select("cnvcCode='" + strProductCode + "'");
                        if (drProduces.Length > 0)
                        {
                            string  strSumCount  = drProduces[0]["cnnCheckCount"].ToString();
                            decimal dSumCount    = decimal.Parse(strSumCount);
                            string  strSumAssign = drProduces[0]["cnnAssignCount"].ToString();
                            decimal dSumAssign   = decimal.Parse(strSumAssign);
                            if (dSumCount > 0)
                            {
                                AssignDetail assignDetail = new AssignDetail();
                                assignDetail.cnnAssignSerialNo  = assign.cnnAssignSerialNo;
                                assignDetail.cnnProduceSerialNo = assign.cnnProduceSerialNo;
                                assignDetail.cnnOrderSerialNo   = decimal.Parse(strOrderSerialNo);
                                assignDetail.cnvcProductCode    = strProductCode;
                                assignDetail.cnvcProductName    = strProductName;
                                assignDetail.cnvcUnit           = strUnit;
                                if (dSumCount >= dOrderCount - dAssignCount)
                                {
                                    assignDetail.cnnOrderCount      = dOrderCount;
                                    assignDetail.cnnCount           = dOrderCount - dAssignCount;
                                    drProduces[0]["cnnCheckCount"]  = dSumCount - dOrderCount + dAssignCount;
                                    drProduces[0]["cnnAssignCount"] = dSumAssign + dOrderCount - dAssignCount;
                                }
                                else
                                {
                                    if (strOrderType == "WDO")
                                    {
                                        throw new Exception("订单流水为" + dv["cnnOrderSerialNo"].ToString() + "的外订定单" + strProductName + "不能满足分配");
                                    }
                                    assignDetail.cnnOrderCount      = dOrderCount;
                                    assignDetail.cnnCount           = dSumCount;
                                    drProduces[0]["cnnCheckCount"]  = 0;
                                    drProduces[0]["cnnAssignCount"] = dSumAssign + dSumCount;
                                }
                                assignDetail.cnnPrice = dPrice;
                                assignDetail.cnnSum   = assignDetail.cnnCount * dPrice;
                                EntityMapping.Create(assignDetail, trans);
                                if (!hOrderSerialNo.Contains(dv["cnnOrderSerialNo"].ToString()))
                                {
                                    hOrderSerialNo.Add(dv["cnnOrderSerialNo"].ToString(), dv["cnnOrderSerialNo"].ToString());
                                    assign.cnnOrderSerialNo  = decimal.Parse(dv["cnnOrderSerialNo"].ToString());
                                    assign.cnvcReceiveDeptID = dv["cnvcOrderDeptID"].ToString();
                                    assign.cndShipDate       = DateTime.Parse(dv["cndShipDate"].ToString());
                                    EntityMapping.Create(assign, trans);
                                }
                                string strOrderBookDetail = "update tbOrderBookDetail set cnnAssignCount=" + Convert.ToString(assignDetail.cnnCount + dAssignCount) + " where cnnOrderSerialNo=" + strOrderSerialNo + " and cnvcProductCode='" + strProductCode + "'";
                                SqlHelper.ExecuteNonQuery(trans, CommandType.Text, strOrderBookDetail);
                            }
                        }
                    }
                    foreach (DataRow drProduce in dtProduce.Rows)
                    {
                        ProduceCheckLog check = new ProduceCheckLog(drProduce);
                        //check.cnnCheckCount = 0;
                        //EntityMapping.Update(check);
                        string strSql = "update tbProduceCheckLog set cnnCheckCount=" + check.cnnCheckCount.ToString() + ",cnnAssignCount=" + check.cnnAssignCount.ToString() + " where cnnProduceSerialNo=" + check.cnnProduceSerialNo.ToString() + " and cnvcCode='" + check.cnvcCode + "'";
                        SqlHelper.ExecuteNonQuery(trans, CommandType.Text, strSql);
                    }
                    //更新订单生产计划状态
                    string strUpdateOrder = "update tbOrderBook set cnvcOrderState='2' "
                                            +
                                            " where cnnOrderSerialNo in (select cnnOrderSerialNo from tbProduceOrderLog where cnvcType='0' and cnnProduceSerialNo=" + oldLog.cnnProduceSerialNo + ") ";
                    string strUpdateOrderAdd = "update tbOrderAddLog set cnvcAddState='2' "
                                               +
                                               " where cnnOrderSerialNo in (select cnnOrderSerialNo from tbProduceOrderLog where cnvcType='1' and cnnProduceSerialNo=" + oldLog.cnnProduceSerialNo + ") ";
                    string strUpdateOrderReduce = "update tbOrderReduceLog set cnvcReduceState='2' "
                                                  +
                                                  " where cnnOrderSerialNo in (select cnnOrderSerialNo from tbProduceOrderLog where cnvcType='2' and cnnProduceSerialNo=" + oldLog.cnnProduceSerialNo + ") ";
                    SqlHelper.ExecuteNonQuery(trans, CommandType.Text, strUpdateOrder);
                    SqlHelper.ExecuteNonQuery(trans, CommandType.Text, strUpdateOrderAdd);
                    SqlHelper.ExecuteNonQuery(trans, CommandType.Text, strUpdateOrderReduce);
                    //更新生产计划状态

                    string strUpdteProduceAdd =
                        "update tbProduceDetailAdd set cnvcState='4' where cnvcState='3' and cnnProduceSerialNo=" +
                        oldLog.cnnProduceSerialNo;
                    string strUpdteProduceReduce =
                        "update tbProduceDetailReduce set cnvcState='4' where cnvcState='3' and cnnProduceSerialNo=" +
                        oldLog.cnnProduceSerialNo;
                    SqlHelper.ExecuteNonQuery(trans, CommandType.Text, strUpdteProduceAdd);
                    SqlHelper.ExecuteNonQuery(trans, CommandType.Text, strUpdteProduceReduce);
                    oldLog.cnvcProduceState = "4";
                    EntityMapping.Update(oldLog, trans);

                    operLog.cndOperDate  = dtSysTime;
                    operLog.cnvcComments = "分货流水:" + produceLog.cnnProduceSerialNo.ToString();
                    EntityMapping.Create(operLog, trans);
                    trans.Commit();
                }
                catch (SqlException sex)
                {
                    trans.Rollback();
                    LogAdapter.WriteDatabaseException(sex);
                    throw sex;
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    LogAdapter.WriteFeaturesException(ex);
                    throw ex;
                }
                finally
                {
                    ConnectionPool.ReturnConnection(conn);
                }
            }
        }
Ejemplo n.º 16
0
        public void DeleteAssignLog(ProduceLog produceLog, OperLog operLog)
        {
            using (SqlConnection conn = ConnectionPool.BorrowConnection())
            {
                SqlTransaction trans = conn.BeginTransaction();
                try
                {
                    string   strSysTime = SqlHelper.ExecuteScalar(trans, CommandType.Text, "select getdate()").ToString();
                    DateTime dtSysTime  = DateTime.Parse(strSysTime);

                    OrderSerialNo serialNo = new OrderSerialNo();
                    serialNo.cnvcFill    = "0";
                    serialNo.cnnSerialNo = Convert.ToDecimal(EntityMapping.Create(serialNo, trans));

                    ProduceLog oldLog = new ProduceLog();
                    oldLog.cnnProduceSerialNo = produceLog.cnnProduceSerialNo;
                    oldLog = EntityMapping.Get(oldLog, trans) as ProduceLog;
                    if (oldLog == null)
                    {
                        throw new Exception("生产计划不存在");
                    }
                    if (oldLog.cnvcProduceState != "6")
                    {
                        throw new Exception("生产计划不在已分货状态,不能清除分货数据");
                    }
                    if (oldLog.cnvcProduceState == "7")
                    {
                        throw new Exception("已分货出库");
                    }
                    oldLog.cnvcOperID  = produceLog.cnvcOperID;
                    oldLog.cndOperDate = dtSysTime;

                    //清除分货数据
                    string strsql = "delete from tbassignlog where cnnproduceserialno=" + produceLog.cnnProduceSerialNo.ToString();
//					DataTable dtal = SqlHelper.ExecuteDataTable(trans,CommandType.Text,strsql);
//					if(dtal.Rows.Count == 0) throw new Exception("未找到分货数据");
//					Entity.AssignLog al = new AssignLog(dtal);
//					EntityMapping.Delete(al,trans);
                    SqlHelper.ExecuteNonQuery(trans, CommandType.Text, strsql);

                    strsql = "delete from tbassigndetail where cnnproduceserialno=" + produceLog.cnnProduceSerialNo.ToString();
                    SqlHelper.ExecuteNonQuery(trans, CommandType.Text, strsql);
                    strsql = "update tbproducechecklog set cnnassigncount=0 where cnnproduceserialno=" + produceLog.cnnProduceSerialNo.ToString();
                    SqlHelper.ExecuteNonQuery(trans, CommandType.Text, strsql);
                    //更新订单生产计划状态
                    string strUpdateOrder = "update tbOrderBook set cnvcOrderState='1' "
                                            +
                                            " where cnnOrderSerialNo in (select cnnOrderSerialNo from tbProduceOrderLog where cnvcType='0' and cnnProduceSerialNo=" + oldLog.cnnProduceSerialNo + ") ";
                    SqlHelper.ExecuteNonQuery(trans, CommandType.Text, strUpdateOrder);
                    //更新生产计划状态

                    oldLog.cnvcProduceState = "5";
                    EntityMapping.Update(oldLog, trans);

                    operLog.cndOperDate  = dtSysTime;
                    operLog.cnvcComments = "生产流水:" + produceLog.cnnProduceSerialNo.ToString();
                    EntityMapping.Create(operLog, trans);
                    trans.Commit();
                }
                catch (SqlException sex)
                {
                    trans.Rollback();
                    LogAdapter.WriteDatabaseException(sex);
                    throw sex;
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    LogAdapter.WriteFeaturesException(ex);
                    throw ex;
                }
                finally
                {
                    ConnectionPool.ReturnConnection(conn);
                }
            }
        }
Ejemplo n.º 17
0
        public void AssignOut(string strProduceSerialNo, OperLog operLog, string strWarehouse)
        {
            using (SqlConnection conn = ConnectionPool.BorrowConnection())
            {
                //conn.Open();

                SqlTransaction trans = conn.BeginTransaction();
                try
                {
                    string   strSysTime = SqlHelper.ExecuteScalar(trans, CommandType.Text, "select getdate()").ToString();
                    DateTime dtSysTime  = DateTime.Parse(strSysTime);

                    string    strsql1      = "SELECT * FROM tbProduceLog WHERE cnvcProduceState='6' and cnnProduceSerialNo=" + strProduceSerialNo;
                    DataTable dtProduceLog = SqlHelper.ExecuteDataTable(trans, CommandType.Text, strsql1);
                    //rr.cndMakeDate = dtSysTime;
                    //EntityMapping.Create(rr,trans);
                    if (dtProduceLog.Rows.Count == 0)
                    {
                        throw new Exception("生产计划不在分货状态!");
                    }
                    Entity.ProduceLog pl = new ProduceLog(dtProduceLog);

                    string    strsql2           = "select * from tbproducechecklog WHERE cnnAssignCount>0 and cnnproduceserialno=" + strProduceSerialNo;
                    DataTable dtProduceCheckLog = SqlHelper.ExecuteDataTable(trans, CommandType.Text, strsql2);
                    if (dtProduceCheckLog.Rows.Count == 0)
                    {
                        throw new Exception("分货出库产品数量都为0");
                    }

                    DataTable dtInv             = SingleTableQuery.ExcuteQuery("tbInventory", trans);
                    DataTable dtComputationUnit = SingleTableQuery.ExcuteQuery("tbComputationUnit", trans);

                    string    strsql3     = "select * from tbassignlog where cnnproduceserialno=" + strProduceSerialNo;
                    DataTable dtAssignLog = SqlHelper.ExecuteDataTable(trans, CommandType.Text, strsql3);
                    if (dtAssignLog.Rows.Count == 0)
                    {
                        throw new Exception("未找到分货流水");
                    }
                    Entity.AssignLog al = new AssignLog(dtAssignLog);

                    Entity.RdRecord rr = new RdRecord();
                    rr.cnvcRdCode = "RD010";
                    rr.cnvcRdFlag = "0";
                    rr.cnvcWhCode = strWarehouse;
                    rr.cnvcDepID  = pl.cnvcProduceDeptID;
                    //rr.cnvcOperName = operLog.cnvcop
                    rr.cnvcComments  = "分货出库";
                    rr.cnvcMaker     = operLog.cnvcOperID;
                    rr.cnnProorderID = pl.cnnProduceSerialNo;
                    rr.cnvcState     = "2";
                    rr.cndMakeDate   = dtSysTime;
                    long rrid = EntityMapping.Create(rr, trans);

                    foreach (DataRow drProduceCheckLog in dtProduceCheckLog.Rows)
                    {
                        Entity.ProduceCheckLog pcl = new ProduceCheckLog(drProduceCheckLog);


                        Entity.RdRecordDetail rrd = new RdRecordDetail();
                        rrd.cnvcFlag   = "0";
                        rrd.cndExpDate = pcl.cndExpDate;                    //Convert.ToDateTime(this.txtProduceDate.Text).AddDays(pc.cnnDays).AddDays(Convert.ToDouble(txtDays.Text));//Convert.ToDateTime(this.txtExpDate.Text);
                        rrd.cndMdate   = pcl.cndMDate;                      //Convert.ToDateTime(this.txtProduceDate.Text);
                        rrd.cnnRdID    = Convert.ToDecimal(rrid);
                        rrd.cnvcPOID   = al.cnnAssignSerialNo.ToString();

                        DataRow[] drinvs = dtInv.Select("cnvcInvCode='" + pcl.cnvcInvCode + "'");
                        if (drinvs.Length == 0)
                        {
                            throw new Exception(pcl.cnvcInvCode + "存货档案未设置");
                        }
                        Entity.Inventory inv = new AMSApp.zhenghua.Entity.Inventory(drinvs[0]);


                        rrd.cnvcInvCode     = inv.cnvcInvCode;
                        rrd.cnvcGroupCode   = inv.cnvcGroupCode;
                        rrd.cnvcComunitCode = inv.cnvcSTComUnitCode;

                        DataRow[] drcus = dtComputationUnit.Select("cnvcGroupCode='" + inv.cnvcGroupCode + "' and cnbMainUnit=1");
                        if (drcus.Length == 0)
                        {
                            throw new Exception(inv.cnvcGroupCode + "未设置主计量单位");
                        }
                        decimal   dchangerate    = Convert.ToDecimal(drcus[0]["cnichangrate"].ToString());
                        DataRow[] drcus1         = dtComputationUnit.Select("cnvcGroupCode='" + inv.cnvcGroupCode + "' and cnvcComUnitCode='" + inv.cnvcSTComUnitCode + "'");
                        decimal   dchangerate_st = Convert.ToDecimal(drcus1[0]["cnichangrate"].ToString());

//						string strcssql = "SELECT * FROM tbCurrentStock WHERE cnvcWhCode='"+strWarehouse+"' AND cnvcInvCode='"+pcl.cnvcInvCode+"'";
//						DataTable dtcs = SqlHelper.ExecuteDataTable(trans,CommandType.Text,strcssql);


                        string strcssql = "SELECT * FROM tbCurrentStock WHERE cnvcWhCode='" + strWarehouse + "' AND cnvcInvCode='" + pcl.cnvcInvCode + "'"
                                          + " and CONVERT(char(10),isnull(cndExpDate,''),121)>=CONVERT(char(10),getdate(),121) ";
                        string strcssql2 = "SELECT isnull(sum(cnnAvaQuantity),0) FROM tbCurrentStock WHERE cnvcWhCode='" + strWarehouse + "' AND cnvcInvCode='" + pcl.cnvcInvCode + "'"
                                           + " and CONVERT(char(10),isnull(cndExpDate,''),121)>=CONVERT(char(10),getdate(),121) ";
                        DataTable dtcs         = SqlHelper.ExecuteDataTable(trans, CommandType.Text, strcssql);
                        decimal   davaquantity = Convert.ToDecimal(SqlHelper.ExecuteScalar(trans, CommandType.Text, strcssql2).ToString());

                        if (dtcs.Rows.Count == 0)
                        {
                            throw new Exception(pcl.cnvcInvCode + "无库存");
                        }
                        if (davaquantity - pcl.cnnAssignCount * dchangerate_st / dchangerate < 0)
                        {
                            throw new Exception(pcl.cnvcInvCode + "库存不足");
                        }

//						if(cs.cnnAvaQuantity - pcl.cnnAssignCount<0)
//							throw new Exception(pcl.cnvcInvCode+"库存不足");
                        decimal dhave = 0;
                        foreach (DataRow drcs in dtcs.Rows)
                        {
                            Entity.CurrentStock cs = new CurrentStock(drcs);
//							if(cs.cnnAvaQuantity - pcl.cnnAssignCount<0)
//								throw new Exception(pcl.cnvcInvCode+"库存不足");
//							cs.cnnAvaQuantity = cs.cnnAvaQuantity - pcl.cnnAssignCount;
//							cs.cnnQuantity = cs.cnnQuantity - pcl.cnnAssignCount;
//							EntityMapping.Update(cs,trans);


                            if (cs.cnnAvaQuantity > pcl.cnnAssignCount * dchangerate_st / dchangerate - dhave)
                            {
                                cs.cnnAvaQuantity = cs.cnnAvaQuantity - pcl.cnnAssignCount * dchangerate_st / dchangerate;
                                cs.cnnQuantity    = cs.cnnQuantity - pcl.cnnAssignCount * dchangerate_st / dchangerate;
                                EntityMapping.Update(cs, trans);
                                break;
                            }
                            else
                            {
                                cs.cnnAvaQuantity = 0;
                                cs.cnnQuantity    = 0;
                                EntityMapping.Update(cs, trans);
                                dhave += cs.cnnAvaQuantity;
                            }
                        }
                        rrd.cnnQuantity = pcl.cnnAssignCount * dchangerate_st / dchangerate;
                        EntityMapping.Create(rrd, trans);
                    }


                    //string strsql = "update tbMakeDetail set cnbCollar=1 where cnnMakeSerialNo="+strMakeSerialNo;
                    //SqlHelper.ExecuteNonQuery(trans,CommandType.Text,strsql);

                    string strsql4 = "update tbproducelog set cnvcproducestate='7' where cnnproduceserialno=" + strProduceSerialNo;
                    SqlHelper.ExecuteNonQuery(trans, CommandType.Text, strsql4);

                    operLog.cndOperDate  = dtSysTime;
                    operLog.cnvcComments = "生产流水:" + strProduceSerialNo;
                    EntityMapping.Create(operLog, trans);

                    trans.Commit();
                }
                catch (SqlException sex)
                {
                    trans.Rollback();
                    LogAdapter.WriteDatabaseException(sex);
                    throw sex;
                }
                catch (Exception ex)
                {
                    trans.Rollback();
                    LogAdapter.WriteFeaturesException(ex);
                    throw ex;
                }
                finally
                {
                    ConnectionPool.ReturnConnection(conn);
                }
            }
        }