yangle
2023-09-04 10a392d09c021caf0ca1fca21b424736862f4e48
WarM/ÌõÂë´òÓ¡/Kf_WeighToBarCode_StationOutBill.cs
New file
@@ -0,0 +1,974 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using gregn6Lib;
using SQLHelper;
using DBUtility;
using System.Threading;
using System.IO;
using Pub_Class;
namespace WarM
{
    public partial class Kf_WeighToBarCode_StationOutBill : Form
    {
        public Kf_WeighToBarCode_StationOutBill()
        {
            InitializeComponent();
        }
        public frmBillQueryCondition_New frmCondition;
        public string ModCaption = "涤纶半成品生成条码";
        public const string ModName = "85";
        public Int64 HInterID = 0;
        public string HBillNo = "";
        public string HBillType = "1202";
        public Int64 HUnitID = 0;
        public Int64 HSourceInterID = 0;
        public Int64 HSourceEntryID = 0;
        public string HSourceBillNo = "";
        public string HSourceBillType = "";
        public Int64 HProcessExchangeInterID = 0;
        public Int64 HProcessExchangeEntryID = 0;
        public Int64 HSupID = 0;
        public double HSourceQty = 0;
        public string HCusMaterName = "";       //客户物料名称
        public string HCusModel = "";           //客户规格型号
        public string HMaker = DBUtility.ClsPub.CurUserName;
        public Int64 HStockOrgID = DBUtility.ClsPub.HOrgID;
        public DateTime HDate = DateTime.Today;
        public long PrintQty = 0;               //允许条码打印次数
        public string PrintQtyCtl = "";         //条码打印次数控制
        public string UpdatePrintQtyCtl = "";   //条码打印次数更新
        public string sBarCodeItemID = "";      //条码自增列
        public DAL.ClsGy_BarCodeBill_Ctl oBar = new DAL.ClsGy_BarCodeBill_Ctl();
        public DBUtility.ClsPub.Enum_BillStatus BillStatus;
        SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
        #region  //固定代码
        //清空界面
        public void Sub_ClearBill()
        {
            cmbHBarCodeType.Items.Clear();
            cmbHBarCodeType.Items.Add("唯一条码");
            DBUtility.Xt_BaseBillFun.Sub_ClearBill(gbUp);
            txtHBarCode.Text = "";
            grdMain.DataSource = null;
            grdSub.DataSource = null;
            chkHDYFlag.Checked = true;
        }
        //窗体加载
        private void Kf_WeighToBarCode_StationOutBill_Load(object sender, EventArgs e)
        {
            frmCondition = new frmBillQueryCondition_New();
            this.Text = ModCaption;
            Sub_GetSystemParameter();
        }
        private void initGrid()
        {
            DBUtility.Xt_BaseBillFun.initGridList(grdMain, this.Name);
            DBUtility.Xt_BaseBillFun.initGridList(grdSub, this.Name + "grdSub");
        }
        //获取系统参数信息
        private void Sub_GetSystemParameter()
        {
            //获取系统参数
            ClsXt_SystemParameter oSystemParameter = new ClsXt_SystemParameter();
            if (oSystemParameter.ShowBill(ref DBUtility.ClsPub.sExeReturnInfo) == false)
            {
                MessageBox.Show("获取系统参数失败!原因:" + DBUtility.ClsPub.sExeReturnInfo, "提示");
                return;
            }
            else
            {
                PrintQty = oSystemParameter.omodel.BarCode_PrintQty;
                PrintQtyCtl = oSystemParameter.omodel.BarCode_PrintQtyCtl;
                UpdatePrintQtyCtl = oSystemParameter.omodel.BarCode_UpdatePrintQtyCtl;
            }
        }
        private void timer1_Tick(object sender, EventArgs e)
        {
            timer1.Enabled = false;
            initGrid();
            this.Sub_ClearBill();//清空界面
            //获取条码ID
            DataSet Ds = oCn.RunProcReturn("exec h_p_KF_GetBCPWeighSource_TempList '" + HMaker + "'," + HStockOrgID.ToString(), "h_p_KF_GetBCPWeighSource_TempList");
            if (Ds == null || Ds.Tables[0].Rows.Count == 0)
            {
                HInterID = DBUtility.ClsPub.CreateBillID_Prod(HBillType, ref DBUtility.ClsPub.sExeReturnInfo);           //得到新单据ID
            }
            else if (DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HBack"]) == 1)
            {
                HInterID = DBUtility.ClsPub.CreateBillID_Prod(HBillType, ref DBUtility.ClsPub.sExeReturnInfo);           //得到新单据ID
            }
            else
            {
                HInterID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HInterID"]);
            }
            Source_Display();
            BarCode_Display();
            if (grdSub.Rows.Count > 0)
            {
                grdSub.Rows[0].Selected = true;
                SourceBill();
                txtHQty.Focus();
            }
            else
            {
                txtHBarCode.Focus();
            }
        }
        private void grdMain_Paint(object sender, PaintEventArgs e)
        {
            GraphicsGrid();
        }
        private void GraphicsGrid()
        {
            DBUtility.Xt_BaseBillFun.GraphicsGrid(grdMain);
        }
        private void grdSub_Paint(object sender, PaintEventArgs e)
        {
            GraphicsGridSub();
        }
        private void GraphicsGridSub()
        {
            DBUtility.Xt_BaseBillFun.GraphicsGrid(grdSub);
        }
        private Int32 Fun_GetCol(string sCol)
        {
            return DBUtility.Xt_BaseBillFun.Fun_GetCol(sCol, grdMain);
        }
        private Int32 Fun_GetSubCol(string sCol)
        {
            return DBUtility.Xt_BaseBillFun.Fun_GetCol(sCol, grdSub);
        }
        //保存列宽
        private void bclk_Click(object sender, EventArgs e)
        {
            DBUtility.Xt_BaseBillFun.SaveGrid(grdMain, this.Name);
            DBUtility.Xt_BaseBillFun.SaveGrid(grdSub, this.Name + "grdSub");
        }
        //默认列宽
        private void mrlk_Click(object sender, EventArgs e)
        {
            DBUtility.Xt_BaseBillFun.DefaultGridView(grdMain, this.Name);
            DBUtility.Xt_BaseBillFun.DefaultGridView(grdSub, this.Name + "grdSub");
        }
        #endregion
        #region  //刷新
        private void sx_Click_1(object sender, EventArgs e)
        {
            timer1.Enabled = true;
        }
        #endregion
        #region  //打印
        GridppReport Report;
        private void dy_Click_1(object sender, EventArgs e)
        {
            //打印前判断条码是否超过允许可打印次数
            if (ReportPrintBegin())
            {
                return;
            }
            //选择打印模板
            BLL.Gy_OpenTmp oFrm = new BLL.Gy_OpenTmp();
            oFrm.sBillName = ModName;
            oFrm.sBillModel = ModCaption;
            oFrm.ShowDialog();
            if (oFrm.OKTag == Pub_Class.ClsPub.Enum_OKTag.OKTag_OK)
            {
                Sub_SetReport(oFrm.sOpenTmp);
                Report.Print(false);
                Thread.Sleep(1000);
            }
        }
        //打印前判断条码是否超过允许可打印次数
        private bool ReportPrintBegin()
        {
            DAL.ClsGy_BarCodeBill_Ctl oBar = new DAL.ClsGy_BarCodeBill_Ctl();
            string sHRemark = "";
            sBarCodeItemID = "";
            for (int i = 0; i < grdMain.SelectedRows.Count; i++)
            {
                sBarCodeItemID = sBarCodeItemID + "," + DBUtility.ClsPub.isLong(grdMain.Rows[grdMain.SelectedRows[i].Index].Cells[Fun_GetCol("HItemID")].Value).ToString();
            }
            sBarCodeItemID = sBarCodeItemID.Remove(0, 1);
            if (PrintQtyCtl == "Y")
            {
                if (oBar.Set_CheckPrintQty(sBarCodeItemID, PrintQty, ref sHRemark))
                {
                    MessageBox.Show(sHRemark);
                    return true;
                }
                return false;
            }
            else
            {
                return false;
            }
        }
        private void Sub_SetReport(string sOpenTmp)
        {
            //判断行数
            for (int i = 0; i < grdMain.Rows.Count; i++)
            {
                grdMain.Rows[i].Cells[0].Value = "";
            }
            for (int i = 0; i < grdMain.SelectedRows.Count; i++)
            {
                grdMain.Rows[grdMain.SelectedRows[i].Index].Cells[0].Value = "*";
            }
            //
            Report = new GridppReport();
            Report.LoadFromFile(DBUtility.ClsPub.AppPath + @"\" + sOpenTmp + ".grf");  //here .
            Report.BeforePostRecord += new _IGridppReportEvents_BeforePostRecordEventHandler(ReportBeforePostRecord);
            Report.FetchRecord += new _IGridppReportEvents_FetchRecordEventHandler(ReportFetchRecordByDataTable);
            Report.PrintEnd += new _IGridppReportEvents_PrintEndEventHandler(ReportPrintEnd);
        }
        //填入单据表头信息
        private void ReportBeforePostRecord()//your report?kao
        {
            try
            {
                //Report.FieldByName("物料代码").AsString = grdMain.Rows[CurRows].Cells[Fun_GetCol("物料代码")].Value.ToString();
                //Report.FieldByName("物料名称").AsString = grdMain.Rows[CurRows].Cells[Fun_GetCol("物料名称")].Value.ToString();
                //Report.FieldByName("规格型号").AsString = grdMain.Rows[CurRows].Cells[Fun_GetCol("规格型号")].Value.ToString();
            }
            catch (Exception e)
            {
                MessageBox.Show("打印失败!表头:" + e.Message);
            }
        }
        //填入单据表体信息
        private void ReportFetchRecordByDataTable()
        {
            try
            {
                DataTable ds = new DataTable();
                BLL.Utility.FillRecordToReport_Sel(Report, grdMain, ds, Fun_GetCol("选择"));
            }
            catch (Exception e)
            {
                MessageBox.Show("打印失败!表体:" + e.Message);
            }
        }
        //打印结束后回填条码打印次数
        private void ReportPrintEnd()
        {
            DAL.ClsGy_BarCodeBill_Ctl oBar = new DAL.ClsGy_BarCodeBill_Ctl();
            if (UpdatePrintQtyCtl == "Y")
            {
                oBar.Set_UpdatePrintQty(sBarCodeItemID);
            }
        }
        #endregion
        #region  //生单
        private void hb_Click(object sender, EventArgs e)
        {
            this.Sub_SaveBill();
            timer1.Enabled = true;
        }
        private bool Sub_SaveBill()
        {
            //条码记录列表是否有记录判断
            bool b = false;
            for (int i = 0; i < grdMain.RowCount; i++)
            {
                b = true;
                break;
            }
            if (b == false)
            {
                MessageBox.Show("当前条码记录列表无数据,不允许生成单据!", "提示");
                return false;
            }
            //判断会计期是否合理
            string s = "";
            int sYear = 0;
            int sPeriod = 0;
            if (DBUtility.Xt_BaseBillFun.Fun_AllowYearPeriod(HDate, ref sYear, ref sPeriod, ref s) == false)
            {
                MessageBox.Show(s, "提示");
                return false;
            }
            try
            {
                oCn.BeginTran();
                DataSet Ds = oCn.RunProcReturn("exec h_p_KF_GetBCPWeighSource_StationOutBill " + HInterID.ToString(), "h_p_KF_GetBCPWeighSource_StationOutBill");
                if (Ds == null || Ds.Tables[0].Rows.Count == 0)
                {
                    oCn.RollBack();
                    MessageBox.Show("生成工序出站汇报单失败,当前条码记录列表无数据!", "提示");
                    return false;
                }
                else
                {
                    for (int y = 0; y < Ds.Tables[0].Rows.Count; y++)
                    {
                        Int64 sInterID = 0;
                        string sBillNo = "";
                        string sBillType = "3791";
                        sInterID = DBUtility.ClsPub.CreateBillID(sBillType, ref DBUtility.ClsPub.sExeReturnInfo);           //得到新单据ID
                        sBillNo = DBUtility.ClsPub.CreateBillCode(sBillType, ref DBUtility.ClsPub.sExeReturnInfo, true);    //得到新单据号
                        Int64 sHBarCodeInterID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[y]["HInterID"]);
                        Int64 sHMaterID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[y]["HMaterID"]);
                        Int64 sHUnitID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[y]["HUnitID"]);
                        string sHBatchNo = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[y]["HBatchNo"]);
                        Int64 sHSupID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[y]["HSupID"]);
                        Int64 sHGroupID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[y]["HGroupID"]);
                        Int64 sHDeptID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[y]["HDeptID"]);
                        Int64 sHProcID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[y]["HProcID"]);
                        Int64 sHCenterID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[y]["HCenterID"]);
                        Int64 sHSourceID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[y]["HSourceID"]);
                        Int64 sHProcNo = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[y]["HLayerNumber"]);
                        Double sHQty = DBUtility.ClsPub.isDoule(Ds.Tables[0].Rows[y]["HQty"]);
                        Double sHICMOQty = DBUtility.ClsPub.isDoule(Ds.Tables[0].Rows[y]["HReadyQty"]);
                        Int64 sHICMOInterID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[y]["HSourceInterID"]);
                        Int64 sHICMOEntryID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[y]["HSourceEntryID"]);
                        string sHICMOBillNo = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[y]["HSourceBillNo"]);
                        Int64 sHProcExchInterID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[y]["HOrderInterID"]);
                        Int64 sHProcExchEntryID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[y]["HOrderEntryID"]);
                        string sHProcExchBillNo = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[y]["HOrderBillNo"]);
                        //生成工序出站汇报单    (条码ID存入HMainInterID字段)
                        oCn.RunProc("Insert Into Sc_StationOutBillMain " +
                        "(HBillType,HBillSubType,HInterID,HBillNo,HBillStatus,HDate,HMaker,HMakeDate,HMouldNum" +
                        ",HYear,HPeriod,HRemark,HSourceName,HPieceQty,HWasterQty,HPlanPieceQty,HBadPNL" +
                        ",HICMOInterID,HICMOEntryID,HICMOBillNo,HProcPlanInterID,HProcPlanEntryID,HProcPlanBillNo,HProcExchInterID,HProcExchEntryID" +
                        ",HProcExchBillNo,HMaterID,HProcID,HICMOQty,HPlanQty,HStationOutTime,HSourceID,HPayProcID" +
                        ",HGroupID,HDeptID,HEmpID,HBarCode,HAddr,HBarCodeMaker,HBarCodeMakeDate,HSourceID2,HSourceID3,HSourceID4,HSourceID5" +
                        ",HSupID,HQty,HPrice,HMoney,HBadCount,HCenterID,HProcNo,HOrderProcNO,HSourceNameList" +
                        ",HMainSourceInterID,HMainSourceBillNo,HMainSourceBillType,HLastSubProc" +
                        ",HEmpID2,HEmpID3,HEmpID4,HEmpID5,HDSQty,HChongQty,HPriceRate,HWorkTimes,HQCCheckID" +
                        ",HPersonNums,HMachineNums,HEmpNum,HMainInterID,HPRDORGID" +
                        ") " +
                        " values('" + sBillType + "','" + sBillType + "'," + sInterID.ToString() + ",'" + sBillNo + "',0,getdate(),'" + DBUtility.ClsPub.CurUserName + "',getdate(),''" +
                        "," + sYear.ToString() + "," + sPeriod.ToString() + ",'涤纶半成品生成条码模块生单生成','',0,0,0,0" +
                        "," + sHICMOInterID.ToString() + "," + sHICMOEntryID.ToString() + ",'" + sHICMOBillNo + "',0,0,''," + sHProcExchInterID.ToString() + "," + sHProcExchEntryID.ToString() +
                        ",'" + sHProcExchBillNo + "'," + sHMaterID.ToString() + "," + sHProcID.ToString() + "," + sHICMOQty.ToString() + "," + sHICMOQty.ToString() + ",getdate()," + sHSourceID.ToString() + ",0" +
                        "," + sHGroupID.ToString() + "," + sHDeptID.ToString() + ",0,'','','',getdate(),0,0,0,0" +
                        "," + sHSupID.ToString() + "," + sHQty.ToString() + ",0,0,0," + sHCenterID.ToString() + "," + sHProcNo.ToString() + ",'',''" +
                        ",0,'','',0" +
                        ",0,0,0,0,0,0,0,0,0" +
                        ",0,0,''," + sHBarCodeInterID.ToString() + "," + HStockOrgID.ToString() +
                        ") ");
                    }
                    //回填已生单状态
                    oCn.RunProc("Update KF_BCPWeighSource_Temp set HRelationInterID=1 where HInterID= " + HInterID.ToString());
                    MessageBox.Show("生成工序出站汇报单成功!", "提示");
                    oCn.Commit();
                    return true;
                }
            }
            catch (Exception e)
            {
                oCn.RollBack();
                MessageBox.Show("生成工序出站汇报单失败!" + e.Message);
                return false;
            }
        }
        #endregion
        #region  //退出
        private void tc_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        #endregion
        #region  //扫描条码
        private void txtHBarCode_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (e.KeyChar == (char)Keys.Return)
            {
                if (!AddSource())
                {
                    txtHBarCode.Focus();
                    txtHBarCode.SelectAll();
                    return;
                }
                Source_Display();
                grdSub.Rows[0].Selected = true;
                DBUtility.Xt_BaseBillFun.Sub_ClearBill(gbUp);
                SourceBill();
                txtHBarCode.Text = "";
                txtHQty.Focus();
            }
        }
        private void cmdOK_Click(object sender, EventArgs e)
        {
            if (!AddSource())
            {
                txtHBarCode.Focus();
                txtHBarCode.SelectAll();
                return;
            }
            Source_Display();
            grdSub.Rows[0].Selected = true;
            DBUtility.Xt_BaseBillFun.Sub_ClearBill(gbUp);
            SourceBill();
            txtHBarCode.Text = "";
            txtHQty.Focus();
        }
        private bool AddSource()
        {
            //将扫描单据号写入临时表
            DataSet ds = oCn.RunProcReturn("exec h_p_Kf_AddSource_BCPWeighToBarCode " + HInterID.ToString() + ",'" + HBillNo + "','" + txtHBarCode.Text.Trim() + "','" + HMaker + "'," + HStockOrgID.ToString(), "h_p_Kf_AddSource_BCPWeighToBarCode");
            if (ds == null || ds.Tables[0].Rows.Count == 0)
            {
                MessageBox.Show("扫描条码写入临时表发生错误!", "提示");
                return false;
            }
            else if (DBUtility.ClsPub.isLong(ds.Tables[0].Rows[0][0]) == 1)
            {
                MessageBox.Show(DBUtility.ClsPub.isStrNull(ds.Tables[0].Rows[0]["HRemark"]), "提示");
                return false;
            }
            else
            {
                return true;
            }
        }
        #endregion
        #region  //选单
        private void cmdSourceBillNo_Click(object sender, EventArgs e)
        {
            //初始化右边表头信息
            cmbHBarCodeType.Items.Clear();
            cmbHBarCodeType.Items.Add("唯一条码");
            DBUtility.Xt_BaseBillFun.Sub_ClearBill(gbUp);
            if (grdSub.CurrentRow == null)
            {
                MessageBox.Show("请在左边单据列表中选择一行单据!", "提示");
                return;
            }
            else if (grdSub.SelectedRows.Count != 1)
            {
                MessageBox.Show("不允许同时选择多行单据,请重新选择单据!");
                return;
            }
            else
            {
                SourceBill();
                txtHQty.Focus();
            }
        }
        #endregion
        #region  //保存
        private void cmdSave_Click(object sender, EventArgs e)
        {
            if (!Sub_AllowSave())
            {
                return;
            }
            SaveBarCode();
            BarCode_Display();
            grdMain.Rows[0].Selected = true;
            sBarCodeItemID = DBUtility.ClsPub.isLong(grdMain.Rows[grdMain.SelectedRows[0].Index].Cells[Fun_GetCol("HItemID")].Value).ToString();
            //自动打印
            if (chkHDYFlag.Checked == true)
            {
                //打印条码
                Sub_SetReport("物料条码");
                Report.Print(false);
                Thread.Sleep(1000);
            }
            else
            {
                //选择打印模板
                BLL.Gy_OpenTmp oFrm = new BLL.Gy_OpenTmp();
                oFrm.sBillName = ModName;
                oFrm.sBillModel = ModCaption;
                oFrm.ShowDialog();
                if (oFrm.OKTag == Pub_Class.ClsPub.Enum_OKTag.OKTag_OK)
                {
                    Sub_SetReport(oFrm.sOpenTmp);
                    Report.Print(false);
                    Thread.Sleep(1000);
                }
            }
            txtHQty.Text = "";
            txtHQty.Focus();
        }
        //条码生成前判断
        private bool Sub_AllowSave()
        {
            //判断当前单据ID是否已上传生成单据
            DataSet Ds = oCn.RunProcReturn("select top 1 1 from KF_BCPWeighSource_Temp with(nolock) where HInterID=" + HInterID.ToString() + " and HRelationInterID=1 ", "KF_BCPWeighSource_Temp", ref DBUtility.ClsPub.sExeReturnInfo);
            if (Ds == null || Ds.Tables[0].Rows.Count == 0)
            {
            }
            else
            {
                MessageBox.Show("当前条码记录已被上传生成单据,请退出后重新进入该模块进行条码生成操作!", "提示");
                return false;
            }
            if (HInterID==0)
            {
                MessageBox.Show("获取条码对应单据ID失败,请重新刷新界面!", "提示");
                return false;
            }
            else if (DBUtility.ClsPub.isLong(txtHMaterNumber.Tag) == 0)
            {
                MessageBox.Show("请先扫描工序流转卡号!", "提示");
                return false;
            }
            else if (DBUtility.ClsPub.isDoule(txtHQty.Text) == 0)
            {
                MessageBox.Show("请输入正确米数!", "提示");
                return false;
            }
            else if (DBUtility.ClsPub.isDoule(txtHProcID.Tag) == 0)
            {
                MessageBox.Show("请先选择工序!", "提示");
                return false;
            }
            return true;
        }
        //生成条码
        private void SaveBarCode()
        {
            int LSHlen = 6;             //流水号长度
            Int64 LSH = 0;              //流水号
            string LSH2 = "";           //流水号转换成字符
            string HMaterID = "";       //物料内码
            string HBatchNo = "";       //批次
            string sDate = "";          //日期
            string sYear = "";          //å¹´
            string sPeriod = "";        //月
            string sDay = "";           //日
            string sTMNumber = "";      //条码自定义前缀
            string TM = "";             //条码编号
            DataSet Ds;
            HMaterID = DBUtility.ClsPub.isStrNull(txtHMaterNumber.Tag);
            HBatchNo = DBUtility.ClsPub.isStrNull(txtHBatchNo.Text);
            //日期获取方式
            sDate = dtpHDate.Value.ToShortDateString();
            sYear = DBUtility.ClsPub.isDate(sDate).Year.ToString().Substring(2, 2);
            sPeriod = "0" + DBUtility.ClsPub.isDate(sDate).Month.ToString();
            sPeriod = sPeriod.Substring(sPeriod.Length - 2, 2);
            sDay = "0" + DBUtility.ClsPub.isDate(sDate).Day.ToString();
            sDay = sDay.Substring(sDay.Length - 2, 2);
            //==================================
            if (cmbHBarCodeType.Text == "唯一条码")
            {
                //条码前缀 = ç»„织代码 + ç‰©æ–™å†…码 + å¹´ + æœˆ + æ—¥
                sTMNumber = DBUtility.ClsPub.HOrgNumber + HMaterID + sYear + sPeriod + sDay;
                Ds = oCn.RunProcReturn("exec h_p_WMS_GetMaxNo '" + sTMNumber + "'", "h_p_WMS_GetMaxNo");    //获取最大流水号
                LSH = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0][0]);
                LSH = LSH + 1;
                LSH2 = LSH.ToString();
                while (LSH2.Length < LSHlen)  //如果流水号小于6位数前面补0
                {
                    LSH2 = "0" + LSH2;
                }
                TM = sTMNumber + LSH2;
            }
            else if (cmbHBarCodeType.Text == "品种条码")
            {
                TM = DBUtility.ClsPub.HOrgNumber + HMaterID;
            }
            else if (cmbHBarCodeType.Text == "批次条码")
            {
                TM = DBUtility.ClsPub.HOrgNumber + HMaterID + HBatchNo;
            }
            else
            {
                MessageBox.Show("错误的条码类型,不能生成条码!");
                return;
            }
            string HBarCode = "";
            string HBarCodeType = "";
            Int64 HMaterID2 = 0;
            double HQty = 0;            //米数
            Int64 HGroupID = 0;
            Int64 HDeptID = 0;
            string HProcessExchangeBillNo = "";
            string HMaterName = "";
            string HMaterModel = "";
            Int64 HProcID = 0;
            Int64 HCenterID = 0;
            Int64 HSourceID = 0;
            Int64 HProcNo = 0;
            HBarCode = TM;
            HBarCodeType = DBUtility.ClsPub.isStrNull(cmbHBarCodeType.Text);
            HMaterID2 = DBUtility.ClsPub.isLong(txtHMaterNumber.Tag);
            HQty = DBUtility.ClsPub.isDoule(txtHQty.Text);
            HGroupID = DBUtility.ClsPub.isLong(txtHGroupID.Tag);
            HDeptID = DBUtility.ClsPub.isLong(txtHDeptName.Tag);
            HProcessExchangeBillNo = DBUtility.ClsPub.isStrNull(txtHBillNo.Text);
            HMaterName = DBUtility.ClsPub.isStrNull(txtHMaterName.Text);
            HMaterModel = DBUtility.ClsPub.isStrNull(txtHMaterModel.Text);
            HProcID = DBUtility.ClsPub.isLong(txtHProcID.Tag);
            HCenterID = DBUtility.ClsPub.isLong(txtHCenterID.Tag);
            HSourceID = DBUtility.ClsPub.isLong(txtHSourceID.Tag);
            HProcNo = DBUtility.ClsPub.isLong(txtHProcNo.Text);
            try
            {
                oCn.BeginTran();
                //写入条码档案    (客户物料名称HCusMaterName存入HMaterialModel字段,客户规格型号HCusModel存入HCusModel字段,流水号存入HLayerNumber字段,源单数量存入HReadyQty字段)
                oCn.RunProc("Insert into Gy_BarCodeBill " +
                "(HBarCode,HBarCodeType,HMaterID,HUnitID,HQty" +
                ",HBatchNo,HSupID,HGroupID,HMaker,HMakeDate,HPrintQty,HinitQty" +
                ",HSourceInterID,HSourceEntryID,HSourceBillNo,HSourceBillType,HEndQty " +
                ",HBarcodeQtys,HBarcodeNo,HDeptID,HWhID,HSPID,HRemark " +
                ",HCusID,HCusType,HEndDate,HWorkLineName,HBarCodeDate,HMaterialJQty,HMaterialMQty " +
                ",HSTOCKORGID,HOWNERID,HSeOrderBillNo,HInterID,HGiveAwayFlag " +
                ",HOrderInterID,HOrderEntryID,HOrderBillNo,HCustomQty1,HMaterialModel,HCusModel " +
                ",HProcID,HCenterID,HSourceID,HLayerNumber,HReadyQty " +
                ",HMaterName,HMaterModel,HPinfan,HAuxPropID,HMTONo,HInnerBillNo,HLogo " +
                ") Values ("
                + " '" + HBarCode + "','" + HBarCodeType + "'," + HMaterID2.ToString() + "," + HUnitID.ToString() + "," + HQty.ToString()
                + ",'" + HBatchNo + "'," + HSupID.ToString() + "," + HGroupID.ToString() + ",'" + HMaker + "',getdate(),0," + HQty.ToString()
                + ", " + HSourceInterID.ToString() + "," + HSourceEntryID.ToString() + ",'" + HSourceBillNo + "','" + HSourceBillType + "',''"
                + ", 1,1," + HDeptID.ToString() + ",0,0,''"
                + ", 0,'',getdate(),'','" + sDate + "',0,0"
                + ", " + HStockOrgID.ToString() + "," + HStockOrgID.ToString() + ",''," + HInterID.ToString() + ",0"
                + ", " + HProcessExchangeInterID.ToString() + "," + HProcessExchangeEntryID.ToString() + ",'" + HProcessExchangeBillNo + "',0,'" + HCusMaterName + "','" + HCusModel + "'"
                + ", " + HProcID.ToString() + "," + HCenterID.ToString() + "," + HSourceID.ToString() + "," + HProcNo.ToString() + "," + HSourceQty.ToString()
                + ",'" + HMaterName + "','" + HMaterModel + "','',0,'','','1')");
                //回填最大流水号
                oCn.RunProc("exec h_p_WMS_SetMaxNo_QTY '" + sTMNumber + "',1 ");
                //回填源单临时表HInterID
                oCn.RunProc("update a set a.HInterID=" + HInterID.ToString() + ",a.HRelationInterID= 0 from KF_BCPWeighSource_Temp a where a.HInterID<>" + HInterID.ToString() + " and a.HMaker='" + HMaker + "' and a.HSourceBillNo='" + HProcessExchangeBillNo + "'");
                oCn.Commit();
            }
            catch (Exception e)
            {
                oCn.RollBack();
                MessageBox.Show("条码生成失败!" + e.Message);
            }
        }
        #endregion
        #region  //返回信息
        //返回源单列表信息
        private void SourceBill()
        {
            txtHBillNo.Text = DBUtility.ClsPub.isStrNull(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("单据号")].Value);
            txtHDeptName.Tag = DBUtility.ClsPub.isLong(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("HDeptID")].Value);
            txtHDeptName.Text = DBUtility.ClsPub.isStrNull(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("车间")].Value);
            txtHMaterNumber.Tag = DBUtility.ClsPub.isLong(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("HMaterID")].Value);
            txtHMaterNumber.Text = DBUtility.ClsPub.isStrNull(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("物料代码")].Value);
            txtHMaterName.Text = DBUtility.ClsPub.isStrNull(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("物料名称")].Value);
            txtHMaterModel.Text = DBUtility.ClsPub.isStrNull(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("规格型号")].Value);
            txtHBatchNo.Text = DBUtility.ClsPub.isStrNull(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("批号")].Value);
            txtHICMOBillNo.Text = DBUtility.ClsPub.isStrNull(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("生产订单")].Value);
            HUnitID = DBUtility.ClsPub.isLong(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("HUnitID")].Value);
            HSourceInterID = DBUtility.ClsPub.isLong(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("HSourceInterID")].Value);
            HSourceEntryID = DBUtility.ClsPub.isLong(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("HSourceEntryID")].Value);
            HSourceBillNo = DBUtility.ClsPub.isStrNull(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("生产订单")].Value);
            HSourceBillType = DBUtility.ClsPub.isStrNull(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("HSourceBillType")].Value);
            HSourceQty = DBUtility.ClsPub.isDoule(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("数量")].Value);
            HProcessExchangeInterID = DBUtility.ClsPub.isLong(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("HProcessExchangeInterID")].Value);
            HSupID = DBUtility.ClsPub.isLong(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("HSupID")].Value);
            HCusMaterName = DBUtility.ClsPub.isStrNull(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("HCusMaterName")].Value);
            HCusModel = DBUtility.ClsPub.isStrNull(grdSub.SelectedRows[0].Cells[Fun_GetSubCol("HCusModel")].Value);
        }
        //返回源单列表信息
        private void Source_Display()
        {
            DataSet DSet = oCn.RunProcReturn("exec h_p_KF_GetBCPWeighSource_TempList '" + HMaker + "'," + HStockOrgID.ToString(), "h_p_KF_GetBCPWeighSource_TempList");
            grdSub.DataSource = DSet.Tables[0].DefaultView;
            //冻结
            int FrCol = DBUtility.ClsPub.isInt(frmCondition.txtFrozenCol.Text);
            string s = frmCondition.cmbHComplete.Text;
            DBUtility.Xt_BaseBillFun.DisplayGrid(grdSub, this.Name + "grdSub", s, FrCol);
            //画线
            GraphLine();
        }
        //返回条码记录列表信息
        private void BarCode_Display()
        {
            DataSet DSet = oCn.RunProcReturn("select * from h_v_IF_BarCodeBillList Where HinterID=" + HInterID.ToString() + " order by HItemID desc", "h_v_IF_BarCodeBillList", ref DBUtility.ClsPub.sExeReturnInfo);
            grdMain.DataSource = DSet.Tables[0].DefaultView;
            //冻结
            int FrCol = DBUtility.ClsPub.isInt(frmCondition.txtFrozenCol.Text);
            string s = frmCondition.cmbHComplete.Text;
            DBUtility.Xt_BaseBillFun.DisplayGrid(grdMain, this.Name, s, FrCol);
            //画线
            GraphLine();
        }
        private void GraphLine()
        {
            int MainIDCol = Fun_GetCol("hmainid");
            int SubIDCol = Fun_GetCol("hsubid");
            string s = frmCondition.cmbHComplete.Text;
            long n = 0;
            DBUtility.Xt_BaseBillFun.GraphLine(grdMain, MainIDCol, SubIDCol, s, ref n);
            int MainIDCol2 = Fun_GetSubCol("hmainid");
            int SubIDCol2 = Fun_GetSubCol("hsubid");
            string s2 = frmCondition.cmbHComplete.Text;
            long n2 = 0;
            DBUtility.Xt_BaseBillFun.GraphLine(grdSub, MainIDCol2, SubIDCol2, s2, ref n2);
        }
        #endregion
        #region  //作废
        private void cmdZF_Click(object sender, EventArgs e)
        {
            if (grdMain.CurrentRow == null)
            {
                MessageBox.Show("请先选择需要作废的条码!", "提示");
                return;
            }
            else
            {
                if (MessageBox.Show("确定要作废所选条码?", "提示", MessageBoxButtons.OKCancel) == DialogResult.Cancel)
                {
                    return;
                }
                else
                {
                    string HRemark = "";
                    string HItemID = "";
                    string HBarCode = "";
                    string HBarCode2 = "";
                    for (int i = 0; i <= grdMain.SelectedRows.Count - 1; i++)
                    {
                        HItemID = HItemID + "," + DBUtility.ClsPub.isLong(grdMain.SelectedRows[i].Cells[Fun_GetCol("hmainid")].Value.ToString());
                        HBarCode = HBarCode + ",'" + DBUtility.ClsPub.isStrNull(grdMain.SelectedRows[i].Cells[Fun_GetCol("条码编号")].Value) + "'";
                        if (i != 0 && i % 100 == 0)
                        {
                            HBarCode2 = HBarCode2 + "#" + DBUtility.ClsPub.isStrNull(grdMain.SelectedRows[i].Cells[Fun_GetCol("条码编号")].Value);
                        }
                        else
                        {
                            HBarCode2 = HBarCode2 + "," + DBUtility.ClsPub.isStrNull(grdMain.SelectedRows[i].Cells[Fun_GetCol("条码编号")].Value);
                        }
                        if (DBUtility.ClsPub.isStrNull(grdMain.SelectedRows[i].Cells[Fun_GetCol("作废标记")].Value) != "")
                        {
                            HRemark = HRemark + "、" + DBUtility.ClsPub.isStrNull(grdMain.SelectedRows[i].Cells[Fun_GetCol("条码编号")].Value);
                        }
                    }
                    if (HRemark != "")
                    {
                        MessageBox.Show("所选条码编号:"+ HRemark.Remove(0, 1)+" å·²ä½œåºŸï¼Œä¸å…è®¸é‡å¤ä½œåºŸï¼", "提示");
                        return;
                    }
                    HItemID = HItemID.Remove(0, 1);     //去掉字符串第一个字符
                    HBarCode = HBarCode.Remove(0, 1);
                    HBarCode2 = HBarCode2.Remove(0, 1);
                    try
                    {
                        oCn.BeginTran();
                        string[] NewBarCode;
                        NewBarCode = HBarCode2.Split(Convert.ToChar("#"));
                        //作废条码
                        oCn.RunProc("update Gy_BarCodeBill set HStopflag=1,HDeleteMan='" + DBUtility.ClsPub.CurUserName + "',HDeleteDate=getdate() where HItemID in (" + HItemID + ")", ref DBUtility.ClsPub.sExeReturnInfo);
                        //写入系统日志
                        for (int i = 0; i <= NewBarCode.Length - 1; i++)
                        {
                            oCn.RunProc("Insert into System_log (GeginDate, userid, WorkstationName, WorkList, SystemName, NetuserName, State) select GETDATE(),'" + DBUtility.ClsPub.CurUserName + "','" + DBUtility.ClsPub.ComputerName + "','作废条码:" + NewBarCode[i] + "','涤纶半成品生成条码模块','" + DBUtility.ClsPub.IPAddress + "','作废'", ref DBUtility.ClsPub.sExeReturnInfo);
                        }
                        oCn.Commit();
                    }
                    catch (Exception e2)
                    {
                        oCn.RollBack();
                        MessageBox.Show("作废条码失败!" + e2.Message, "提示");
                        return;
                    }
                    //刷新条码记录列表信息
                    BarCode_Display();
                    MessageBox.Show("所选条码编号:" + HBarCode.Remove(0, 1) + " ä½œåºŸæˆåŠŸï¼", "提示");
                }
            }
        }
        #endregion
        #region  //反作废
        private void cmdFZF_Click(object sender, EventArgs e)
        {
            if (grdMain.CurrentRow == null)
            {
                MessageBox.Show("请先选择需要反作废的条码!", "提示");
                return;
            }
            else
            {
                if (MessageBox.Show("确定要反作废所选条码?", "提示", MessageBoxButtons.OKCancel) == DialogResult.Cancel)
                {
                    return;
                }
                else
                {
                    string HRemark = "";
                    string HItemID = "";
                    string HBarCode = "";
                    string HBarCode2 = "";
                    for (int i = 0; i <= grdMain.SelectedRows.Count - 1; i++)
                    {
                        HItemID = HItemID + "," + DBUtility.ClsPub.isLong(grdMain.SelectedRows[i].Cells[Fun_GetCol("hmainid")].Value.ToString());
                        HBarCode = HBarCode + ",'" + DBUtility.ClsPub.isStrNull(grdMain.SelectedRows[i].Cells[Fun_GetCol("条码编号")].Value) + "'";
                        if (i != 0 && i % 100 == 0)
                        {
                            HBarCode2 = HBarCode2 + "#" + DBUtility.ClsPub.isStrNull(grdMain.SelectedRows[i].Cells[Fun_GetCol("条码编号")].Value);
                        }
                        else
                        {
                            HBarCode2 = HBarCode2 + "," + DBUtility.ClsPub.isStrNull(grdMain.SelectedRows[i].Cells[Fun_GetCol("条码编号")].Value);
                        }
                        if (DBUtility.ClsPub.isStrNull(grdMain.SelectedRows[i].Cells[Fun_GetCol("作废标记")].Value) == "")
                        {
                            HRemark = HRemark + "、" + DBUtility.ClsPub.isStrNull(grdMain.SelectedRows[i].Cells[Fun_GetCol("条码编号")].Value);
                        }
                    }
                    if (HRemark != "")
                    {
                        MessageBox.Show("所选条码编号:" + HRemark.Remove(0, 1) + " æœªä½œåºŸï¼Œä¸å…è®¸åä½œåºŸï¼", "提示");
                        return;
                    }
                    HItemID = HItemID.Remove(0, 1);     //去掉字符串第一个字符
                    HBarCode = HBarCode.Remove(0, 1);
                    HBarCode2 = HBarCode2.Remove(0, 1);
                    try
                    {
                        oCn.BeginTran();
                        string[] NewBarCode;
                        NewBarCode = HBarCode2.Split(Convert.ToChar("#"));
                        //反作废条码
                        oCn.RunProc("update Gy_BarCodeBill set HStopflag=0,HDeleteMan='',HDeleteDate=null where HItemID in (" + HItemID + ")", ref DBUtility.ClsPub.sExeReturnInfo);
                        //写入系统日志
                        for (int i = 0; i <= NewBarCode.Length - 1; i++)
                        {
                            oCn.RunProc("Insert into System_log (GeginDate, userid, WorkstationName, WorkList, SystemName, NetuserName, State) select GETDATE(),'" + DBUtility.ClsPub.CurUserName + "','" + DBUtility.ClsPub.ComputerName + "','反作废条码:" + NewBarCode[i] + "','涤纶半成品生成条码模块','" + DBUtility.ClsPub.IPAddress + "','反作废'", ref DBUtility.ClsPub.sExeReturnInfo);
                        }
                        oCn.Commit();
                    }
                    catch (Exception e2)
                    {
                        oCn.RollBack();
                        MessageBox.Show("反作废条码失败!" + e2.Message, "提示");
                        return;
                    }
                    //刷新条码记录列表信息
                    BarCode_Display();
                    MessageBox.Show("所选条码编号:" + HBarCode.Remove(0, 1) + " åä½œåºŸæˆåŠŸï¼", "提示");
                }
            }
        }
        #endregion
        #region  //工序选择
        private void cmdHProcID_Click(object sender, EventArgs e)
        {
            DAL.ClsGy_Process_View oProcess = new DAL.ClsGy_Process_View();
            if (oProcess.RefreshView())
            {
                this.txtHProcID.Text = oProcess.oModel.HName;
                this.txtHProcID.Tag = oProcess.oModel.HItemID.ToString();
            }
            if(oProcess.oModel.HItemID!=0 && HProcessExchangeInterID != 0)
            {
                //根据转卡主ID、工序带出流转卡上相应流水号、班组、工作中心、生产资源
                DataSet Ds = oCn.RunProcReturn("exec h_p_KF_GetBCPWeighSource_ProcID " + HProcessExchangeInterID.ToString() + "," + oProcess.oModel.HItemID.ToString(), "h_p_KF_GetBCPWeighSource_ProcID");
                if (Ds == null || Ds.Tables[0].Rows.Count == 0)
                {
                    this.txtHProcID.Text = "";
                    this.txtHProcID.Tag = 0;
                    MessageBox.Show("所选工序不在当前工序流转卡下,请重新选择正确工序!");
                    return;
                }
                else
                {
                    HProcessExchangeEntryID = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HSourceEntryID"]);
                    txtHProcNo.Text = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HProcNo"]);
                    txtHCenterID.Tag = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HCenterID"]);
                    txtHCenterID.Text = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HCenterName"]);
                    txtHGroupID.Tag = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HGroupID"]);
                    txtHGroupID.Text = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HGroupName"]);
                    txtHSourceID.Tag = DBUtility.ClsPub.isLong(Ds.Tables[0].Rows[0]["HSourceID"]);
                    txtHSourceID.Text = DBUtility.ClsPub.isStrNull(Ds.Tables[0].Rows[0]["HSourceName"]);
                }
            }
        }
        private void txtHProcID_TextChanged(object sender, EventArgs e)
        {
            BLL.ClsPub_BLL.Sub_ClearText(txtHProcID);
        }
        #endregion
    }
}