zzr99
2022-08-16 c584c8f022216be96b08ce69125676e749ea2c09
PayM/¹¤×ʹÜÀí/Pay_SingleBalBill.cs
New file
@@ -0,0 +1,2413 @@
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 Pub_Class;
namespace PayM
{
    public partial class Pay_SingleBalBill : Form
    {
        public Pay_SingleBalBill()
        {
            InitializeComponent();
        }
        //定义列
        public const Int16 HTagCol = 0;
        public const Int16 HSnoCol = 1;
        public const Int16 HMaterIDCol = 2;
        public const Int16 HMaterNumberCol = 3;
        public const Int16 HMaterNameCol = 4;
        public const Int16 HMaterModelCol = 5;
        public const Int16 HUnitIDCol = 6;
        public const Int16 HUnitNameCol = 7;
        public const Int16 HProcIDCol = 8;
        public const Int16 HProcNumberCol = 9;
        public const Int16 HProcNameCol = 10;
        public const Int16 HSourceIDCol = 11;
        public const Int16 HSourceNumberCol = 12;
        public const Int16 HSourceNameCol = 13;
        public const Int16 HEmpIDCol = 14;
        public const Int16 HEmpNumberCol = 15;
        public const Int16 HEmpNameCol = 16;
        public const Int16 HTimesCol = 17;
        public const Int16 HQtyCol = 18;
        public const Int16 HPriceCol = 19;
        public const Int16 HPriceRateCol = 20;
        public const Int16 HSubsidyQtyCol = 21;
        public const Int16 HSubsidyMoneyCol = 22;
        public const Int16 HSubsidyTotalCol = 23;
        public const Int16 HDeuctTotalCol = 24;
        public const Int16 HPackQtyCol = 25;
        public const Int16 HPackPriceCol = 26;
        public const Int16 HPackMoneyCol = 27;
        public const Int16 HPackMaterIDCol = 28;
        public const Int16 HMoneyCol = 29;
        public const Int16 HICMOInterIDCol = 30;
        public const Int16 HICMOBillNoCol = 31;
        public const Int16 HProcReportInterIDCol = 32;
        public const Int16 HProcReportEntryIDCol = 33;
        public const Int16 HProcReportBillNoCol = 34;
        public const Int16 HProcPlanInterIDCol = 35;
        public const Int16 HProcPlanEntryIDCol = 36;
        public const Int16 HProcPlanBillNoCol = 37;
        public const Int16 HRemarkCol = 38;
        public const Int16 HSourceInterIDCol = 39;
        public const Int16 HSourceEntryIDCol = 40;
        public const Int16 HSourceBillNoCol = 41;
        public const Int16 HSourceBillTypeCol = 42;
        public const Int16 HRelationQtyCol = 43;
        public const Int16 HRelationMoneyCol = 44;
        public const Int16 HCloseManCol = 45;
        public const Int16 HEntryCloseDateCol = 46;
        public const Int16 HCloseTypeCol = 47;
        public const Int16 HEntryIDCol = 48;
        public const Int16 HSubsidyIDCol = 49;
        public const Int16 HDeuctIDCol = 50;
        public const Int16 HSqtyCol = 51;
        //
        public const string ModName = "2205";                   //单据类型
        public const string ModCaption = "工资结算单(单人)";          //单据名称
        public const string ModRightName = "Pay_SingleBalBill";
        public const string ModRightNameEdit = ModRightName + "_Edit";
        public const string ModRightNameCheck = ModRightName + "_Check";
        public const string ModRightNameClose = ModRightName + "_Close";
        public const string ModRightNameDelete = ModRightName + "_Delete";
        public const string ModRightNameDrop = ModRightName + "_Drop";
        public const string ModRightNameMoney = ModRightName + "_Money";
        public const string ModRightNameQty = ModRightName + "_Qty";
        public bool BillChange;                                 //单据修改状态
        //
        public DBUtility.ClsPub.Enum_BillStatus BillStatus;     //单据状态(新增,修改,浏览,更新单价,变更)
        public Int64 KeyID;                                     //单据主内码
        public bool grdStatus;                                 //网格状态(不可编辑,可编辑)
        public DAL.ClsPay_SingleBalBill BillNew = new DAL.ClsPay_SingleBalBill();   //对应单据类
        public DAL.ClsPay_SingleBalBill BillOld = new DAL.ClsPay_SingleBalBill();   //对应单据类
        ClsGridViewSum oSumGrid = new ClsGridViewSum();
        //-------------------------------------------------------------------------
        #region å›ºå®šä»£ç 
        //清空界面
        public void Sub_ClearBill()
        {
            DBUtility.Xt_BaseBillFun.Sub_ClearBill(gbUp);
            //
            txtHMaker.Text = ClsPub.CurUserName;
            txtHMakeDate.Text = "";
            txtHChecker.Text = "";
            txtHCheckDate.Text = "";
            txtHCloseMan.Text = "";
            txtHCloseDate.Text = "";
            txtHDeleteMan.Text = "";
            txtHDeleteDate.Text = "";
            txtHUpDater.Text = "";
            txtHUpDateDate.Text = "";
            initGrid();
        }
        //编辑单据
        private void Sub_EditBill()
        {
            //判断权限
            if (!ClsPub.Security_Log(ModRightNameEdit, 1, true, DBUtility.ClsPub.CurUserName))
            {
                return;
            }
            //判断会计期是否合理
            string s1 = "";
            int sYear = 0;
            int sPeriod = 0;
            if (DBUtility.Xt_BaseBillFun.Fun_AllowYearPeriod_Pay(dtpHDate.Value, ref sYear, ref sPeriod, ref s1) == false)
            {
                MessageBox.Show(s1, "提示");
                return;
            }
            //
            string s = "";
            if (BillOld.ShowBill(BillOld.omodel.HInterID, ref s) == false)
            {
                MessageBox.Show("此单据有错误!", "提示");
                return;
            }
            //判断是否可编辑
            if (BillOld.omodel.HChecker != "")
            {
                MessageBox.Show("此单据已经被审核,不允许修改", "提示");
                return;
            }
            if (BillOld.omodel.HBillStatus > 1)
            {
                MessageBox.Show("此单据处于不可编辑状态,不允许修改", "提示");
                return;
            }
            if (!DBUtility.Xt_BaseBillFun.Fun_AllowEditBill(BillOld, ref s))
            {
                MessageBox.Show(s + ",不允许修改", "提示");
                return;
            }
            //
            this.BillStatus = DBUtility.ClsPub.Enum_BillStatus.BillStatus_Modify;
            this.Sub_OperStatus();//刷新TOOLBAR
            //
            txtHUpDater.Text = ClsPub.CurUserName;
            txtHBillNo.Enabled = false; //单据号不允许修改
        }
        //删除单据
        private void Sub_DeleteBill()
        {
            //判断权限
            if (!ClsPub.Security_Log(ModRightNameDelete, 1, true, DBUtility.ClsPub.CurUserName))
            {
                return;
            }
            //判断会计期是否合理
            string s1 = "";
            int sYear = 0;
            int sPeriod = 0;
            if (DBUtility.Xt_BaseBillFun.Fun_AllowYearPeriod_Pay(dtpHDate.Value, ref sYear, ref sPeriod, ref s1) == false)
            {
                MessageBox.Show(s1, "提示");
                return;
            }
            //
            string s = "";
            if (BillOld.ShowBill(BillOld.omodel.HInterID, ref s) == false)
            {
                MessageBox.Show("此单据有错误!", "提示");
                return;
            }
            if (BillOld.omodel.HChecker != "")
            {
                MessageBox.Show("此单据已经被审核,不允许删除", "提示");
                return;
            }
            if (BillOld.omodel.HBillStatus > 1)
            {
                MessageBox.Show("此单据处于不可删除状态,不允许删除", "提示");
                return;
            }
            if (!DBUtility.Xt_BaseBillFun.Fun_AllowDeleteBill(BillOld, ref s))
            {
                MessageBox.Show(s + ",不允许删除", "提示");
                return;
            }
            //
            if (MessageBox.Show("确定要删除当前单据?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
            {
                if (BillOld.DeleteBill(BillOld.omodel.HInterID, ref ClsPub.sExeReturnInfo) != true)
                {
                    BillChange = true;
                    MessageBox.Show("删除失败,原因:" + ClsPub.sExeReturnInfo, "提示");
                    return;
                }
                MessageBox.Show("删除成功", "提示");
                BillOld = new DAL.ClsPay_SingleBalBill();
                this.Sub_Next();  //显示下一张单据
                if (BillOld.omodel.HInterID == 0)//若找不到下一张,则显示上一张
                {
                    this.Sub_Prev();
                }
                if (BillOld.omodel.HInterID == 0)//若找不到上一张,清空
                {
                    this.Sub_ClearBill();
                }
                BillStatus = DBUtility.ClsPub.Enum_BillStatus.BillStatus_View;
                this.Sub_OperStatus();
            }
        }
        //保存列宽
        private void bclk_Click(object sender, EventArgs e)
        {
            DBUtility.Xt_BaseBillFun.SaveGrid(grdMain, this.Name);
        }
        //增行按钮
        private void AddRow_Click(object sender, EventArgs e)
        {
            DBUtility.Xt_BaseBillFun.AddRow(oSumGrid);
        }
        //删行按纽
        private void DelRow_Click(object sender, EventArgs e)
        {
            DBUtility.Xt_BaseBillFun.DelRow(oSumGrid);
        }
        private void mrlk_Click(object sender, EventArgs e)
        {
            DBUtility.Xt_BaseBillFun.DefaultGridView(grdMain, this.Name);
        }
        ////离开单元格
        //private void grdMain_LeaveCell(object sender, EventArgs e)
        //{
        //    oSumGrid.LeaveCell();
        //}
        ////网格单元格变化事件
        //private void grdMain_RowColChange(object sender, EventArgs e)
        //{
        //    //
        //    if (!grdStatus)
        //    {
        //        return;
        //    }
        //    DBUtility.Xt_BaseBillFun.SetSumGrid(oSumGrid);
        //    //
        //    if (!CheckGridRow(oSumGrid.OldCell.Row))
        //        return;
        //}
        //放弃 ç¼–辑
        private void Sub_AbandonBill()
        {
            if (BillStatus == DBUtility.ClsPub.Enum_BillStatus.BillStatus_AddNew || BillStatus == DBUtility.ClsPub.Enum_BillStatus.BillStatus_Modify)
            {
                if (MessageBox.Show("单据尚未保存,是否放弃?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK)
                {
                    //显示第一张单据
                    this.Sub_First();
                }
            }
        }
        private void Pay_SingleBalBill_Paint(object sender, PaintEventArgs e)//画线
        {
            Graphics g = panel2.CreateGraphics();
            Pen p = new Pen(Color.Gray);
            p.Width = 1;
            g.DrawLine(p, new Point(txtHMaker.Left, txtHMaker.Top + txtHMaker.Height), new Point(txtHMaker.Left + txtHMaker.Width, txtHMaker.Top + txtHMaker.Height));
            g.DrawLine(p, new Point(txtHMakeDate.Left, txtHMakeDate.Top + txtHMakeDate.Height), new Point(txtHMakeDate.Left + txtHMakeDate.Width, txtHMakeDate.Top + txtHMakeDate.Height));
            //
            g.DrawLine(p, new Point(txtHChecker.Left, txtHChecker.Top + txtHChecker.Height), new Point(txtHChecker.Left + txtHChecker.Width, txtHChecker.Top + txtHChecker.Height));
            g.DrawLine(p, new Point(txtHCheckDate.Left, txtHCheckDate.Top + txtHCheckDate.Height), new Point(txtHCheckDate.Left + txtHCheckDate.Width, txtHCheckDate.Top + txtHCheckDate.Height));
            //
            g.DrawLine(p, new Point(txtHCloseMan.Left, txtHCloseMan.Top + txtHCloseMan.Height), new Point(txtHCloseMan.Left + txtHCloseMan.Width, txtHCloseMan.Top + txtHCloseMan.Height));
            g.DrawLine(p, new Point(txtHCloseDate.Left, txtHCloseDate.Top + txtHCloseDate.Height), new Point(txtHCloseDate.Left + txtHCloseDate.Width, txtHCloseDate.Top + txtHCloseDate.Height));
            //
            g.DrawLine(p, new Point(this.txtHDeleteMan.Left, txtHDeleteMan.Top + txtHDeleteMan.Height), new Point(txtHDeleteMan.Left + txtHDeleteMan.Width, txtHDeleteMan.Top + txtHDeleteMan.Height));
            g.DrawLine(p, new Point(txtHDeleteDate.Left, txtHDeleteDate.Top + txtHDeleteDate.Height), new Point(txtHDeleteDate.Left + txtHDeleteDate.Width, txtHDeleteDate.Top + txtHDeleteDate.Height));
            //
            g.DrawLine(p, new Point(this.txtHUpDater.Left, txtHUpDater.Top + txtHUpDater.Height), new Point(txtHUpDater.Left + txtHUpDater.Width, txtHUpDater.Top + txtHUpDater.Height));
            g.DrawLine(p, new Point(txtHUpDateDate.Left, txtHUpDateDate.Top + txtHUpDateDate.Height), new Point(txtHUpDateDate.Left + txtHUpDateDate.Width, txtHUpDateDate.Top + txtHUpDateDate.Height));
            //控件位置设置
        }
        //控件位置
        private void Sub_ControlLocation()
        {
            //
        }
        //窗体加载
        private void Pay_SingleBalBill_Load(object sender, EventArgs e)
        {
            //打印初始化
            oSumGrid.NoCol = HSnoCol;
            oSumGrid.ogrdMain = grdMain;
            oSumGrid.oGridsum = grdSum;
            this.Text = ModCaption;     //命名窗体标题
            this.lblCaption.Text = ModCaption;//命名单据标题
            BLL.ClsPub_BLL.GetBillSource(ModName, false, cmbSourceBillType);
        }
        //首张
        private void Sub_First()
        {
            BillStatus = DBUtility.ClsPub.Enum_BillStatus.BillStatus_View;
            BillOld = new DAL.ClsPay_SingleBalBill();
            if (BillOld.GetFirstBill(ref  ClsPub.sExeReturnInfo))
            {
                this.Sub_ShowBill();
            }
            else  //没有找到则 å˜ä¸ºæ–°å¢žçŠ¶æ€
            {
                this.Sub_AddBill();
            }
        }
        //上张
        private void Sub_Prev()
        {
            BillStatus = DBUtility.ClsPub.Enum_BillStatus.BillStatus_View;
            if (BillOld.GetPrevousBill(ref  ClsPub.sExeReturnInfo, txtHBillNo.Text))
            {
                this.Sub_ShowBill();
            }
        }
        //下张
        private void Sub_Next()
        {
            BillStatus = DBUtility.ClsPub.Enum_BillStatus.BillStatus_View;
            if (BillOld.GetNextBill(ref  ClsPub.sExeReturnInfo, txtHBillNo.Text))
            {
                this.Sub_ShowBill();
            }
        }
        //末张
        private void Sub_Last()
        {
            BillStatus = DBUtility.ClsPub.Enum_BillStatus.BillStatus_View;
            BillOld = new DAL.ClsPay_SingleBalBill();
            if (BillOld.GetLastBill(ref  ClsPub.sExeReturnInfo))
            {
                this.Sub_ShowBill();
            }
        }
        //审核单据
        private void Sub_CheckBill()
        {
            //判断权限
            if (!ClsPub.Security_Log(ModRightNameCheck, 1, true, DBUtility.ClsPub.CurUserName))
            {
                return;
            }
            //判断会计期是否合理
            string s1 = "";
            int sYear = 0;
            int sPeriod = 0;
            if (DBUtility.Xt_BaseBillFun.Fun_AllowYearPeriod_Pay(dtpHDate.Value, ref sYear, ref sPeriod, ref s1) == false)
            {
                MessageBox.Show(s1, "提示");
                return;
            }
            //
            string s = "";
            if (!DBUtility.Xt_BaseBillFun.Fun_AllowCheckBill(BillOld, ref s))
            {
                MessageBox.Show(s + ",不允许审核", "提示");
                return;
            }
            if (BillOld.CheckBill(BillOld.omodel.HInterID, ref ClsPub.sExeReturnInfo) == true)
            {
                BillChange = true;
                this.Sub_ShowBill();
            }
            else
            {
                MessageBox.Show("审核失败!原因:" + ClsPub.sExeReturnInfo, "提示");
            }
        }
        //反审单据
        private void Sub_AbandonCheck()
        {
            //判断权限
            if (!ClsPub.Security_Log(ModRightNameCheck, 1, true, DBUtility.ClsPub.CurUserName))
            {
                return;
            }
            //
            //判断会计期是否合理
            string s1 = "";
            int sYear = 0;
            int sPeriod = 0;
            if (DBUtility.Xt_BaseBillFun.Fun_AllowYearPeriod_Pay(dtpHDate.Value, ref sYear, ref sPeriod, ref s1) == false)
            {
                MessageBox.Show(s1, "提示");
                return;
            }
            //
            string s = "";
            if (!DBUtility.Xt_BaseBillFun.Fun_AllowAbandonCheckBill(BillOld, ref s))
            {
                MessageBox.Show(s + ",不允许反审核", "提示");
                return;
            }
            if (BillOld.AbandonCheck(BillOld.omodel.HInterID, ref ClsPub.sExeReturnInfo) == true)
            {
                BillChange = true;
                this.Sub_ShowBill();
            }
            else
            {
                MessageBox.Show("反审核失败!原因:" + ClsPub.sExeReturnInfo, "提示");
            }
        }
        //关闭单据
        private void Sub_CloseBill()
        {
            //判断权限
            if (!ClsPub.Security_Log(ModRightNameClose, 1, true, DBUtility.ClsPub.CurUserName))
            {
                return;
            }
            //判断会计期是否合理
            string s1 = "";
            int sYear = 0;
            int sPeriod = 0;
            if (DBUtility.Xt_BaseBillFun.Fun_AllowYearPeriod_Pay(dtpHDate.Value, ref sYear, ref sPeriod, ref s1) == false)
            {
                MessageBox.Show(s1, "提示");
                return;
            }
            //
            string s = "";
            if (!DBUtility.Xt_BaseBillFun.Fun_AllowCloseBill(BillOld, ref s))
            {
                MessageBox.Show(s + ",不允许关闭", "提示");
                return;
            }
            if (BillOld.CloseBill(BillOld.omodel.HInterID, ref ClsPub.sExeReturnInfo) == true)
            {
                BillChange = true;
                this.Sub_ShowBill();
            }
            else
            {
                MessageBox.Show("关闭失败!原因:" + ClsPub.sExeReturnInfo, "提示");
            }
        }
        //反关闭单据
        private void Sub_Cancel()
        {
            //判断权限
            if (!ClsPub.Security_Log(ModRightNameClose, 1, true, DBUtility.ClsPub.CurUserName))
            {
                return;
            }
            //判断会计期是否合理
            string s1 = "";
            int sYear = 0;
            int sPeriod = 0;
            if (DBUtility.Xt_BaseBillFun.Fun_AllowYearPeriod_Pay(dtpHDate.Value, ref sYear, ref sPeriod, ref s1) == false)
            {
                MessageBox.Show(s1, "提示");
                return;
            }
            //
            string s = "";
            if (!DBUtility.Xt_BaseBillFun.Fun_AllowCancelBill(BillOld, ref s))
            {
                MessageBox.Show(s + ",不允许恢复", "提示");
                return;
            }
            if (BillOld.CancelClose(BillOld.omodel.HInterID, ref ClsPub.sExeReturnInfo) == true)
            {
                BillChange = true;
                this.Sub_ShowBill();
            }
            else
            {
                MessageBox.Show("恢复失败!原因:" + ClsPub.sExeReturnInfo, "提示");
            }
        }
        //作废单据
        private void Sub_Cancelltion()
        {
            //判断权限
            if (!ClsPub.Security_Log(ModRightNameDrop, 1, true, DBUtility.ClsPub.CurUserName))
            {
                return;
            }
            //判断会计期是否合理
            string s1 = "";
            int sYear = 0;
            int sPeriod = 0;
            if (DBUtility.Xt_BaseBillFun.Fun_AllowYearPeriod_Pay(dtpHDate.Value, ref sYear, ref sPeriod, ref s1) == false)
            {
                MessageBox.Show(s1, "提示");
                return;
            }
            //
            string s = "";
            if (!DBUtility.Xt_BaseBillFun.Fun_AllowCancelltionBill(BillOld, ref s))
            {
                MessageBox.Show(s + ",不允许作废", "提示");
                return;
            }
            if (BillOld.Cancelltion(BillOld.omodel.HInterID, ref ClsPub.sExeReturnInfo) == true)
            {
                BillChange = true;
                this.Sub_ShowBill();
            }
            else
            {
                MessageBox.Show("作废失败!原因:" + ClsPub.sExeReturnInfo, "提示");
            }
        }
        //反作废
        private void Sub_AbandonCancelltion()
        {
            //判断权限
            if (!ClsPub.Security_Log(ModRightNameDrop, 1, true, DBUtility.ClsPub.CurUserName))
            {
                return;
            }
            //判断会计期是否合理
            string s1 = "";
            int sYear = 0;
            int sPeriod = 0;
            if (DBUtility.Xt_BaseBillFun.Fun_AllowYearPeriod_Pay(dtpHDate.Value, ref sYear, ref sPeriod, ref s1) == false)
            {
                MessageBox.Show(s1, "提示");
                return;
            }
            //
            string s = "";
            if (!DBUtility.Xt_BaseBillFun.Fun_AllowAbandonCancelltionBill(BillOld, ref s))
            {
                MessageBox.Show(s + ",不允许恢复正常", "提示");
                return;
            }
            if (BillOld.AbandonCancelltion(BillOld.omodel.HInterID, ref ClsPub.sExeReturnInfo) == true)
            {
                BillChange = true;
                this.Sub_ShowBill();
            }
            else
            {
                MessageBox.Show("作废失败!原因:" + ClsPub.sExeReturnInfo, "提示");
            }
        }
        //新增按纽
        private void xz_Click(object sender, EventArgs e)
        {
            this.Sub_AddBill();
        }
        //修改按纽
        private void xg_Click(object sender, EventArgs e)
        {
            this.Sub_EditBill();
        }
        //删除按钮
        private void sc_Click(object sender, EventArgs e)
        {
            this.Sub_DeleteBill();
        }
        //保存按钮
        private void bc_Click(object sender, EventArgs e)
        {
            this.Sub_SaveBill();
        }
        //放弃按钮
        private void fq_Click(object sender, EventArgs e)
        {
            this.Sub_AbandonBill();
        }
        //审核按钮
        private void sh_Click(object sender, EventArgs e)
        {
            this.Sub_CheckBill();
        }
        //放弃审核按钮
        private void qsh_Click(object sender, EventArgs e)
        {
            this.Sub_AbandonCheck();
        }
        //关闭按钮
        private void gb_Click(object sender, EventArgs e)
        {
            this.Sub_CloseBill();
        }
        //恢复按钮
        private void hf_Click(object sender, EventArgs e)
        {
            this.Sub_Cancel();
        }
        //作废按钮
        private void zf_Click(object sender, EventArgs e)
        {
            this.Sub_Cancelltion();
        }
        //反作废按钮
        private void zc_Click(object sender, EventArgs e)
        {
            this.Sub_AbandonCancelltion();
        }
        //首张单据按钮
        private void sz_Click(object sender, EventArgs e)
        {
            this.Sub_First();
        }
        //上一张按钮
        private void syz_Click(object sender, EventArgs e)
        {
            this.Sub_Prev();
        }
        //下一张按钮
        private void xyz_Click(object sender, EventArgs e)
        {
            this.Sub_Next();
        }
        //末张按钮
        private void mz_Click(object sender, EventArgs e)
        {
            this.Sub_Last();
        }
        //退出按钮
        private void tc_Click(object sender, EventArgs e)
        {
            this.Close();
        }
        //根据编辑状态 è®¾ç½® æŽ§ä»¶æ˜¯å¦å…è®¸å½•å…¥
        private void Sub_LrtextStatus(bool TextEnabled)
        {
            if (TextEnabled == true)
            {
                //控件全部有效
                gbUp.Enabled = true;
                grdMain.BackColor = ClsPub.EditColor;
            }
            else
            {   //控件全部无效
                gbUp.Enabled = false;
                grdMain.BackColor = ClsPub.ViewColor;
            }
        }
        //复制单据
        private void Sub_CopyBill()
        {
            this.BillStatus = DBUtility.ClsPub.Enum_BillStatus.BillStatus_AddNew;
            this.Sub_OperStatus();//设置TOOLBAR
            this.txtHBillNo.Text = ClsPub.CreateBillCode(BillNew.BillType, ref ClsPub.sExeReturnInfo, true);//得到新单号
            this.txtHBillNo.Enabled = true;
            this.txtHBillNo.Focus();
            this.txtHMaker.Text = ClsPub.CurUserName;
            this.txtHMakeDate.Text = "";
            this.txtHChecker.Text = "";
            this.txtHCloseDate.Text = "";
            this.txtHCloseMan.Text = "";
            this.txtHCloseDate.Text = "";
            this.txtHDeleteMan.Text = "";
            this.txtHDeleteDate.Text = "";
            this.txtHUpDater.Text = "";
            this.txtHUpDateDate.Text = "";
        }
        //复制按钮
        private void fz_Click(object sender, EventArgs e)
        {
            Sub_CopyBill();
        }
        //timer
        private void timer1_Tick(object sender, EventArgs e)
        {
            timer1.Enabled = false;
            Sub_ControlLocation();
            if (BillStatus == DBUtility.ClsPub.Enum_BillStatus.BillStatus_View)
            {
                this.Sub_ShowBill();
            }
            else
            {
                this.Sub_AddBill();
                DBUtility.Xt_BaseBillFun.SetSumGrid(oSumGrid);
            }
        }
        //窗体卸载
        private void Pay_SingleBalBill_FormClosing(object sender, FormClosingEventArgs e)
        {
            BillStatus = DBUtility.ClsPub.Enum_BillStatus.BillStatus_AddNew;
            DBUtility.Xt_BaseBillFun.SaveGrid(grdMain, this.Name);
        }
        //新增单据
        private void Sub_AddBill()
        {
            //判断权限
            if (!ClsPub.Security_Log(ModRightNameEdit, 1, true, DBUtility.ClsPub.CurUserName))
            {
                return;
            }
            this.BillNew = new DAL.ClsPay_SingleBalBill();
            this.BillOld = new DAL.ClsPay_SingleBalBill();
            this.BillStatus = DBUtility.ClsPub.Enum_BillStatus.BillStatus_AddNew;
            this.Sub_OperStatus();//设置TOOLBAR
            this.Sub_ClearBill();//清空界面
            this.txtHBillNo.Text = ClsPub.CreateBillCode(BillNew.BillType, ref ClsPub.sExeReturnInfo, true);//得到新单号
            this.txtHBillNo.Enabled = true;
            this.txtHBillNo.Focus();
        }
        //TOOLBAR状态  æŒ‰é’®æ˜¯å¦ç°åº¦
        public void Sub_OperStatus()
        {
            switch (BillStatus)
            {
                case DBUtility.ClsPub.Enum_BillStatus.BillStatus_View:
                    //浏览状态
                    yl.Enabled = true;
                    xz.Enabled = true;
                    xg.Enabled = true;
                    sc.Enabled = true;
                    AddRow.Enabled = false;
                    DelRow.Enabled = false;
                    bc.Enabled = false;
                    fq.Enabled = false;
                    sz.Enabled = true;
                    syz.Enabled = true;
                    xyz.Enabled = true;
                    mz.Enabled = true;
                    tc.Enabled = true;
                    fz.Enabled = true;
                    //未审核
                    if (txtHChecker.Text.Trim() == "")
                    {
                        sh.Enabled = true;
                        qsh.Enabled = false;
                        //gb.Enabled = false;
                        //hf.Enabled = false;
                        xg.Enabled = true;
                        sc.Enabled = true;
                        //未审核
                        pic1.Visible = false;
                        pic1.Image = null;
                        //
                    }
                    else if (txtHCloseMan.Text.Trim() == "" && txtHChecker.Text.Trim() != "")//审核未关闭
                    {
                        sh.Enabled = false;
                        qsh.Enabled = true;
                        //gb.Enabled = true;
                        //hf.Enabled = false;
                        xg.Enabled = false;
                        sc.Enabled = false;
                        //
                        pic1.Visible = true;
                        pic1.Image = System.Drawing.Image.FromFile(ClsPub.AppPath + @"/Pic/Checked.jpg");
                        //
                    }
                    else//已关闭
                    {
                        sh.Enabled = false;
                        qsh.Enabled = false;
                        //gb.Enabled = false;
                        //hf.Enabled = true;
                        xg.Enabled = false;
                        sc.Enabled = false;
                        //
                        pic1.Visible = true;
                        pic1.Image = System.Drawing.Image.FromFile(ClsPub.AppPath + @"/Pic/Closed.jpg");
                        //
                    }
                    if (txtHDeleteMan.Text.Trim() == "")
                    {
                        //zf.Enabled = true;
                        //zc.Enabled = false;
                    }
                    else //已作废
                    {
                        //zf.Enabled = false;
                        //zc.Enabled = true;
                        xg.Enabled = false;
                        sc.Enabled = false;
                        AddRow.Enabled = false;
                        DelRow.Enabled = false;
                        bc.Enabled = false;
                        fq.Enabled = false;
                        sh.Enabled = false;
                        qsh.Enabled = false;
                        //gb.Enabled = false;
                        //hf.Enabled = false;
                        //
                        pic1.Visible = true;
                        pic1.Image = System.Drawing.Image.FromFile(ClsPub.AppPath + @"/Pic/Deleted.jpg");
                        //
                    }
                    Sub_LrtextStatus(false);
                    grdStatus = false;
                    break;
                case DBUtility.ClsPub.Enum_BillStatus.BillStatus_AddNew:
                    //新增状态
                    yl.Enabled = false;
                    xz.Enabled = false;
                    xg.Enabled = false;
                    sc.Enabled = false;
                    AddRow.Enabled = true;
                    DelRow.Enabled = true;
                    bc.Enabled = true;
                    fq.Enabled = true;
                    sh.Enabled = false;
                    qsh.Enabled = false;
                    //gb.Enabled = false;
                    //hf.Enabled = false;
                    //zf.Enabled = false;
                    //zc.Enabled = false;
                    sz.Enabled = false;
                    syz.Enabled = false;
                    xyz.Enabled = false;
                    mz.Enabled = false;
                    tc.Enabled = true;
                    Sub_LrtextStatus(true);
                    grdStatus = true;
                    fz.Enabled = false;
                    //未审核
                    pic1.Visible = false;
                    pic1.Image = null;
                    //
                    break;
                case DBUtility.ClsPub.Enum_BillStatus.BillStatus_Modify:
                    //修改状态
                    yl.Enabled = false;
                    xz.Enabled = false;
                    xg.Enabled = false;
                    sc.Enabled = false;
                    AddRow.Enabled = true;
                    DelRow.Enabled = true;
                    bc.Enabled = true;
                    fq.Enabled = true;
                    sh.Enabled = false;
                    qsh.Enabled = false;
                    //gb.Enabled = false;
                    //hf.Enabled = false;
                    //zf.Enabled = false;
                    //zc.Enabled = false;
                    sz.Enabled = false;
                    syz.Enabled = false;
                    xyz.Enabled = false;
                    mz.Enabled = false;
                    tc.Enabled = true;
                    Sub_LrtextStatus(true);
                    grdStatus = true;
                    fz.Enabled = false;
                    //未审核
                    pic1.Visible = false;
                    pic1.Image = null;
                    //
                    break;
            }
        }
        #endregion
        #region  è¯»å†™ç±»
        //显示单据
        public void Sub_ShowBill()
        {
            DAL.ClsGy_Group_View oGroup = new DAL.ClsGy_Group_View();
            DAL.ClsGy_Department_View oDep = new DAL.ClsGy_Department_View();//K3部门
            DAL.ClsGy_Employee_View oEmp = new DAL.ClsGy_Employee_View();
            DAL.ClsGy_Material_View oMater = new DAL.ClsGy_Material_View(); //K3物料
            DAL.ClsGy_Process_View oProc = new DAL.ClsGy_Process_View();//工序
            DAL.ClsGy_Source_View oSource = new DAL.ClsGy_Source_View();//生产资源
            //判断是否存在单据
            if (BillOld.ShowBill(BillOld.omodel.HInterID, ref  ClsPub.sExeReturnInfo) == false)
            {
                MessageBox.Show(ClsPub.sExeReturnInfo, "提示");
                return;
            }
            //清空
            Sub_ClearBill();
            //加载表头
            if (oGroup.GetInfoByID(BillOld.omodel.HGroupID))
            {
                this.txtHGroupID.Tag = oGroup.omodel.HItemID.ToString().Trim();
                this.txtHGroupID.Text = oGroup.omodel.HName;
            }
            else
            {
                this.txtHGroupID.Text = "";
            }
            //
            //
            if (oDep.GetInfoByID(BillOld.omodel.HDeptID))
            {
                this.txtHDeptID.Text = oDep.omodel.HName;
                this.txtHDeptID.Tag = oDep.omodel.HItemID.ToString().Trim();
            }
            else
            {
                this.txtHDeptID.Text = "";
            }
            //
            if (oEmp.GetInfoByID(BillOld.omodel.HEmpID))
            {
                this.txtHEmpID.Text = oEmp.omodel.HName;
                this.txtHEmpID.Tag = oEmp.omodel.HItemID.ToString().Trim();
            }
            else
            {
                this.txtHEmpID.Text = "";
            }
            //============================================================
            //单据固定赋值
            this.dtpHDate.Value = BillOld.omodel.HDate;
            this.txtHBillNo.Text = BillOld.omodel.HBillNo;
            this.txtHRemark.Text = BillOld.omodel.HRemark;
            this.txtHMaker.Text = BillOld.omodel.HMaker;
            this.txtHMakeDate.Text = BillOld.omodel.HMakeDate;
            this.txtHChecker.Text = BillOld.omodel.HChecker;
            this.txtHCheckDate.Text = BillOld.omodel.HCheckDate;
            this.txtHCloseMan.Text = BillOld.omodel.HCloseMan;
            this.txtHCloseDate.Text = BillOld.omodel.HCloseDate;
            this.txtHDeleteMan.Text = BillOld.omodel.HDeleteMan;
            this.txtHDeleteDate.Text = BillOld.omodel.HDeleteDate;
            this.txtHUpDater.Text = BillOld.omodel.HUpDater;
            this.txtHUpDateDate.Text = BillOld.omodel.HUpDateDate;
            //
            this.txtHPayType.Text = BillOld.omodel.HPayType.ToString();
            this.txtHExplanation.Text = BillOld.omodel.HExplanation;
            this.txtHInnerBillNo.Text = BillOld.omodel.HInnerBillNo;
            //加载表体
            int i = 0;
            foreach (Model.ClsPay_SingleBalBillSub oSub in BillOld.DetailColl)
            {
                if (i >= grdMain.RowCount - 1)
                    grdMain.Rows.Add();
                //单据固定赋值
                grdMain.Rows[i].Cells[HTagCol].Value = "*";
                grdMain.Rows[i].Cells[HEntryIDCol].Value = oSub.HEntryID.ToString();
                grdMain.Rows[i].Cells[HRemarkCol].Value = oSub.HRemark;
                grdMain.Rows[i].Cells[HCloseManCol].Value = oSub.HCloseMan;
                grdMain.Rows[i].Cells[HEntryCloseDateCol].Value = oSub.HEntryCloseDate;
                grdMain.Rows[i].Cells[HCloseTypeCol].Value = oSub.HCloseType;
                grdMain.Rows[i].Cells[HSourceBillNoCol].Value = oSub.HSourceBillNo;
                grdMain.Rows[i].Cells[HSourceInterIDCol].Value = oSub.HSourceInterID.ToString();
                grdMain.Rows[i].Cells[HSourceEntryIDCol].Value = oSub.HSourceEntryID.ToString();
                grdMain.Rows[i].Cells[HSourceBillTypeCol].Value = oSub.HSourceBillType.Trim();
                grdMain.Rows[i].Cells[HRelationQtyCol].Value = oSub.HRelationQty.ToString();
                grdMain.Rows[i].Cells[HRelationMoneyCol].Value = oSub.HRelationMoney.ToString();
                //======================================================================================
                grdMain.Rows[i].Cells[HMaterIDCol].Value = oSub.HMaterID.ToString();
                if (oMater.GetInfoByID(oSub.HMaterID))
                {
                    grdMain.Rows[i].Cells[HMaterNumberCol].Value = oMater.omodel.HNumber;
                    grdMain.Rows[i].Cells[HMaterNameCol].Value = oMater.omodel.HName;
                    grdMain.Rows[i].Cells[HMaterModelCol].Value = oMater.omodel.HModel;
                }
                else
                {
                    grdMain.Rows[i].Cells[HMaterNumberCol].Value = "";
                    grdMain.Rows[i].Cells[HMaterNameCol].Value = "";
                    grdMain.Rows[i].Cells[HMaterModelCol].Value = "";
                }
                //
                grdMain.Rows[i].Cells[HProcIDCol].Value = oSub.HProcID.ToString();
                if (oProc.GetInfoByID(oSub.HProcID))
                {
                    grdMain.Rows[i].Cells[HProcNumberCol].Value = oProc.omodel.HNumber;
                    grdMain.Rows[i].Cells[HProcNameCol].Value = oProc.omodel.HName;
                }
                else
                {
                    grdMain.Rows[i].Cells[HProcNameCol].Value = "";
                    grdMain.Rows[i].Cells[HProcNumberCol].Value = "";
                }
                //
                grdMain.Rows[i].Cells[HSourceIDCol].Value = oSub.HSourceID.ToString();
                if (oSource.GetInfoByID(oSub.HSourceID))
                {
                    grdMain.Rows[i].Cells[HSourceNumberCol].Value = oSource.omodel.HNumber;
                    grdMain.Rows[i].Cells[HSourceNameCol].Value = oSource.omodel.HName;
                }
                else
                {
                    grdMain.Rows[i].Cells[HSourceNumberCol].Value = "";
                    grdMain.Rows[i].Cells[HSourceNameCol].Value = "";
                }
                //
                grdMain.Rows[i].Cells[HEmpIDCol].Value = oSub.HEmpID.ToString();
                if (oEmp.GetInfoByID(oSub.HEmpID))
                {
                    grdMain.Rows[i].Cells[HEmpNumberCol].Value = oEmp.omodel.HNumber;
                    grdMain.Rows[i].Cells[HEmpNameCol].Value = oEmp.omodel.HName;
                }
                else
                {
                    grdMain.Rows[i].Cells[HEmpNameCol].Value = "";
                    grdMain.Rows[i].Cells[HEmpNumberCol].Value = "";
                }
                //
                grdMain.Rows[i].Cells[HTimesCol].Value = oSub.HTimes.ToString();
                grdMain.Rows[i].Cells[HQtyCol].Value = oSub.HQty.ToString();
                grdMain.Rows[i].Cells[HPriceCol].Value = oSub.HPrice.ToString();
                //
                grdMain.Rows[i].Cells[HPriceRateCol].Value = oSub.HPriceRate.ToString();
                grdMain.Rows[i].Cells[HSubsidyTotalCol].Value = oSub.HSubsidyTotal.ToString();
                grdMain.Rows[i].Cells[HDeuctTotalCol].Value = oSub.HDeuctTotal.ToString();
                //
                grdMain.Rows[i].Cells[HSubsidyIDCol].Value = oSub.HSubsidyID.ToString();
                grdMain.Rows[i].Cells[HDeuctIDCol].Value = oSub.HDeuctID.ToString();
                //
                grdMain.Rows[i].Cells[HMoneyCol].Value = oSub.HMoney.ToString();
                grdMain.Rows[i].Cells[HICMOInterIDCol].Value = oSub.HICMOInterID.ToString();
                grdMain.Rows[i].Cells[HICMOBillNoCol].Value = oSub.HICMOBillNo;
                grdMain.Rows[i].Cells[HProcReportInterIDCol].Value = oSub.HProcReportInterID.ToString();
                grdMain.Rows[i].Cells[HProcReportEntryIDCol].Value = oSub.HProcReportEntryID.ToString();
                grdMain.Rows[i].Cells[HProcReportBillNoCol].Value = oSub.HProcReportBillNo;
                grdMain.Rows[i].Cells[HProcPlanInterIDCol].Value = oSub.HProcPlanInterID.ToString();
                grdMain.Rows[i].Cells[HProcPlanEntryIDCol].Value = oSub.HProcPlanEntryID.ToString();
                grdMain.Rows[i].Cells[HProcPlanBillNoCol].Value = oSub.HProcPlanBillNo;
                grdMain.Rows[i].Cells[HPackQtyCol].Value = oSub.HPackQty.ToString();
                grdMain.Rows[i].Cells[HPackPriceCol].Value = oSub.HPackPrice.ToString();
                grdMain.Rows[i].Cells[HPackMoneyCol].Value = oSub.HPackMoney.ToString();
                grdMain.Rows[i].Cells[HPackMaterIDCol].Value = oSub.HPackMaterID.ToString();
                grdMain.Rows[i].Cells[HSubsidyQtyCol].Value = oSub.HSubsidyQty.ToString();
                grdMain.Rows[i].Cells[HSubsidyMoneyCol].Value = oSub.HSubsidyMoney.ToString();
                grdMain.Rows[i].Cells[HSqtyCol].Value = oSub.HSqty.ToString();
                i = i + 1;
            }
            //GRID允许刷新
            DBUtility.Xt_BaseBillFun.SetSumGrid(oSumGrid);
            //
            Sub_OperStatus();
        }
        //单据完整性判断          æœªå®Œæˆ
        private bool Sub_AllowSave()
        {
            //必输项目是否为空
            if (DBUtility.ClsPub.isLong(txtHGroupID.Tag) == 0)
            {
                MessageBox.Show("班组没有选择!", "提示");
                return false;
            }
            if (DBUtility.ClsPub.isLong(txtHDeptID.Tag) == 0)
            {
                MessageBox.Show("部门没有选择!", "提示");
                return false;
            }
            if (DBUtility.ClsPub.isLong(txtHEmpID.Tag) == 0)
            {
                MessageBox.Show("主管没有选择!", "提示");
                return false;
            }
            //单据号是否重复
            if (BillNew.IsExistBillNo(ref ClsPub.sExeReturnInfo, txtHBillNo.Text.Trim(), BillStatus, BillOld.omodel.HInterID))
            {
                MessageBox.Show("单据号重复!不允许保存!", "提示");
                return false;
            }
            //明细表是否为零行
            bool b = false;
            for (int i = 0; i < grdMain.RowCount; i++)
            {
                if (!IsNullRow(i))
                {
                    b = true;
                    break;
                }
            }
            if (b == false)
            {
                MessageBox.Show("表体明细行不存在!请录入!", "提示");
                return false;
            }
            return true;
        }
        //保存单据
        private bool Sub_SaveBill()
        {
            Model.ClsPay_SingleBalBillSub oBillSub = new Model.ClsPay_SingleBalBillSub();
            //判断权限
            if (!ClsPub.Security_Log(ModRightNameEdit, 1, true, DBUtility.ClsPub.CurUserName))
            {
                return false;
            }
            //判断会计期是否合理
            string s = "";
            int sYear = 0;
            int sPeriod = 0;
            if (DBUtility.Xt_BaseBillFun.Fun_AllowYearPeriod_Pay(dtpHDate.Value, ref sYear, ref sPeriod, ref s) == false)
            {
                MessageBox.Show(s, "提示");
                return false;
            }
            //
            Int32 i;
            bool bResult;
            BillNew = new DAL.ClsPay_SingleBalBill();
            //失去焦点
            lblCaption.Focus();
            if (!Sub_AllowSave())//单据完整性判断
                return false;
            //赋值ID
            if (BillStatus == DBUtility.ClsPub.Enum_BillStatus.BillStatus_Modify)
                BillNew.omodel.HInterID = BillOld.omodel.HInterID;
            else if (BillStatus == DBUtility.ClsPub.Enum_BillStatus.BillStatus_UpdatePrice)
                BillNew.omodel.HInterID = BillOld.omodel.HInterID;
            //主类赋值
            BillNew.omodel.HYear = sYear;
            BillNew.omodel.HPeriod = sPeriod;
            //固定赋值=================================
            BillNew.omodel.HBillNo = this.txtHBillNo.Text.Trim();  //在赋值类前就处理好字符串和数字
            BillNew.omodel.HDate = this.dtpHDate.Value;
            BillNew.omodel.HRemark = this.txtHRemark.Text.Trim();
            //====================================================
            BillNew.omodel.HGroupID = ClsPub.isLong(this.txtHGroupID.Tag);
            BillNew.omodel.HDeptID = ClsPub.isLong(this.txtHDeptID.Tag);
            BillNew.omodel.HEmpID = ClsPub.isLong(this.txtHEmpID.Tag);
            BillNew.omodel.HPayType = ClsPub.isLong(this.txtHPayType.Text);
            BillNew.omodel.HExplanation = ClsPub.isStrNull(this.txtHExplanation.Text);
            BillNew.omodel.HInnerBillNo = ClsPub.isStrNull(this.txtHInnerBillNo.Text);
            //明细类赋值
            BillNew.DetailColl = new List<Model.ClsPay_SingleBalBillSub>();
            for (i = 0; i <= grdMain.RowCount - 1; i++)
            {
                if (ClsPub.isLong(grdMain.Rows[i].Cells[HMaterIDCol].Value) != 0)
                {
                    Model.ClsPay_SingleBalBillSub oSub = new Model.ClsPay_SingleBalBillSub();
                    //固定赋值========================================
                    oSub.HEntryID = i + 1;
                    oSub.HRemark = DBUtility.ClsPub.isStrNull(grdMain.Rows[i].Cells[HRemarkCol].Value);
                    oSub.HSourceInterID = DBUtility.ClsPub.isLong(grdMain.Rows[i].Cells[HSourceInterIDCol].Value);
                    oSub.HSourceEntryID = DBUtility.ClsPub.isLong(grdMain.Rows[i].Cells[HSourceEntryIDCol].Value);
                    oSub.HSourceBillType = DBUtility.ClsPub.isStrNull(grdMain.Rows[i].Cells[HSourceBillTypeCol].Value);
                    oSub.HSourceBillNo = DBUtility.ClsPub.isStrNull(grdMain.Rows[i].Cells[HSourceBillNoCol].Value);
                    oSub.HRelationQty = DBUtility.ClsPub.isDoule(grdMain.Rows[i].Cells[HRelationQtyCol].Value);
                    oSub.HRelationMoney = DBUtility.ClsPub.isDoule(grdMain.Rows[i].Cells[HRelationMoneyCol].Value);
                    oSub.HCloseMan = DBUtility.ClsPub.isStrNull(grdMain.Rows[i].Cells[HCloseManCol].Value);
                    oSub.HEntryCloseDate = DBUtility.ClsPub.isDate(grdMain.Rows[i].Cells[HEntryCloseDateCol].Value);
                    oSub.HCloseType = DBUtility.ClsPub.isBool(grdMain.Rows[i].Cells[HCloseTypeCol].Value);
                    //=============================
                    oSub.HMaterID = DBUtility.ClsPub.isLong(grdMain.Rows[i].Cells[HMaterIDCol].Value);
                    oSub.HProcID = DBUtility.ClsPub.isLong(grdMain.Rows[i].Cells[HProcIDCol].Value);
                    oSub.HSourceID = DBUtility.ClsPub.isLong(grdMain.Rows[i].Cells[HSourceIDCol].Value);
                    oSub.HEmpID = DBUtility.ClsPub.isLong(grdMain.Rows[i].Cells[HEmpIDCol].Value);
                    if (oSub.HEmpID == 0)
                    {
                        MessageBox.Show("第" + ClsPub.isStrNull(i + 1) + "行,职员不能为空");
                        return false;
                    }
                    oSub.HTimes = DBUtility.ClsPub.isDoule(grdMain.Rows[i].Cells[HTimesCol].Value);
                    //if (cmbSourceBillType.Text.Trim() == "手工录入")
                    //{
                        oSub.HQty = DBUtility.ClsPub.isDoule(grdMain.Rows[i].Cells[HQtyCol].Value);
                    //}
                    //else
                    //{
                    //    if (ClsPub.isDoule(grdMain.Rows[i].Cells[HQtyCol].Value) > 0 && ClsPub.isDoule(grdMain.Rows[i].Cells[HSqtyCol].Value) > 0)
                    //    {
                    //        if (ClsPub.isDoule(grdMain.Rows[i].Cells[HQtyCol].Value) <= ClsPub.isDoule(grdMain.Rows[i].Cells[HSqtyCol].Value))
                    //        {
                    //            oSub.HQty = DBUtility.ClsPub.isDoule(grdMain.Rows[i].Cells[HQtyCol].Value);
                    //            if (oSub.HQty == 0)
                    //            {
                    //                MessageBox.Show("第" + ClsPub.isStrNull(i + 1) + "行,数量不能为0");
                    //                return false;
                    //            }
                    //        }
                    //        else
                    //        {
                    //            MessageBox.Show("第" + ClsPub.isStrNull(i + 1) + "行,数量超过总数");
                    //            return false;
                    //        }
                    //    }
                    //    else if (ClsPub.isDoule(grdMain.Rows[i].Cells[HQtyCol].Value) < 0 && ClsPub.isDoule(grdMain.Rows[i].Cells[HSqtyCol].Value) < 0)
                    //    {
                    //        if (ClsPub.isDoule(grdMain.Rows[i].Cells[HQtyCol].Value) >= ClsPub.isDoule(grdMain.Rows[i].Cells[HSqtyCol].Value))
                    //        {
                    //            oSub.HQty = DBUtility.ClsPub.isDoule(grdMain.Rows[i].Cells[HQtyCol].Value);
                    //            if (oSub.HQty == 0)
                    //            {
                    //                MessageBox.Show("第" + ClsPub.isStrNull(i + 1) + "行,数量不能为0");
                    //                return false;
                    //            }
                    //        }
                    //        else
                    //        {
                    //            MessageBox.Show("第" + ClsPub.isStrNull(i + 1) + "行,数量超过总数");
                    //            return false;
                    //        }
                    //    }
                    //}
                    oSub.HPrice = DBUtility.ClsPub.isDoule(grdMain.Rows[i].Cells[HPriceCol].Value);
                    if (oSub.HPrice <= 0)
                    {
                        MessageBox.Show("第" + ClsPub.isStrNull(i + 1) + "行,工价不能为0");
                        return false;
                    }
                    oSub.HPriceRate = DBUtility.ClsPub.isSingle(grdMain.Rows[i].Cells[HPriceRateCol].Value);
                    if(DBUtility.ClsPub.isSingle(grdMain.Rows[i].Cells[HPriceRateCol].Value) ==0)
                    {
                        oSub.HPriceRate = 1;
                    }
                    oSub.HSubsidyTotal = DBUtility.ClsPub.isSingle(grdMain.Rows[i].Cells[HSubsidyTotalCol].Value);
                    oSub.HDeuctTotal = DBUtility.ClsPub.isSingle(grdMain.Rows[i].Cells[HDeuctTotalCol].Value);
                    //
                    oSub.HSubsidyID = DBUtility.ClsPub.isLong(grdMain.Rows[i].Cells[HSubsidyIDCol].Value);
                    oSub.HDeuctID = DBUtility.ClsPub.isLong(grdMain.Rows[i].Cells[HDeuctIDCol].Value);
                    oSub.HMoney = DBUtility.ClsPub.isDoule(grdMain.Rows[i].Cells[HMoneyCol].Value);
                    oSub.HICMOInterID = DBUtility.ClsPub.isLong(grdMain.Rows[i].Cells[HICMOInterIDCol].Value);
                    oSub.HICMOBillNo = DBUtility.ClsPub.isStrNull(grdMain.Rows[i].Cells[HICMOBillNoCol].Value);
                    oSub.HProcReportInterID = DBUtility.ClsPub.isLong(grdMain.Rows[i].Cells[HProcReportInterIDCol].Value);
                    oSub.HProcReportEntryID = DBUtility.ClsPub.isLong(grdMain.Rows[i].Cells[HProcReportEntryIDCol].Value);
                    oSub.HProcReportBillNo = DBUtility.ClsPub.isStrNull(grdMain.Rows[i].Cells[HProcReportBillNoCol].Value);
                    oSub.HProcPlanInterID = DBUtility.ClsPub.isLong(grdMain.Rows[i].Cells[HProcPlanInterIDCol].Value);
                    oSub.HProcPlanEntryID = DBUtility.ClsPub.isLong(grdMain.Rows[i].Cells[HProcPlanEntryIDCol].Value);
                    oSub.HProcPlanBillNo = DBUtility.ClsPub.isStrNull(grdMain.Rows[i].Cells[HProcPlanBillNoCol].Value);
                    oSub.HPackQty = DBUtility.ClsPub.isDoule(grdMain.Rows[i].Cells[HPackQtyCol].Value);
                    oSub.HPackPrice = DBUtility.ClsPub.isDoule(grdMain.Rows[i].Cells[HPackPriceCol].Value);
                    oSub.HPackMoney = DBUtility.ClsPub.isDoule(grdMain.Rows[i].Cells[HPackMoneyCol].Value);
                    oSub.HPackMaterID = DBUtility.ClsPub.isLong(grdMain.Rows[i].Cells[HPackMaterIDCol].Value);
                    oSub.HSubsidyQty = DBUtility.ClsPub.isDoule(grdMain.Rows[i].Cells[HSubsidyQtyCol].Value);
                    oSub.HSubsidyMoney = DBUtility.ClsPub.isDoule(grdMain.Rows[i].Cells[HSubsidyMoneyCol].Value);
                    oSub.HSqty = DBUtility.ClsPub.isDoule(grdMain.Rows[i].Cells[HSqtyCol].Value);
                    BillNew.DetailColl.Add(oSub);
                }
            }
            //保存完毕后处理
            if (BillStatus == DBUtility.ClsPub.Enum_BillStatus.BillStatus_AddNew)
            {
                bResult = BillNew.AddBill(ref ClsPub.sExeReturnInfo);
            }
            else
            {
                bResult = BillNew.ModifyBill(BillNew.omodel.HInterID, ref ClsPub.sExeReturnInfo);
            }
            //提示
            if (bResult == true)
            {
                BillChange = true;
                MessageBox.Show("单据存盘完毕!单据号:" + this.txtHBillNo.Text.Trim(), "提示");
                if (BillStatus == DBUtility.ClsPub.Enum_BillStatus.BillStatus_AddNew)
                {
                    BillStatus = DBUtility.ClsPub.Enum_BillStatus.BillStatus_View;
                    BillOld.omodel.HInterID = BillNew.omodel.HInterID;
                    this.Sub_ShowBill();
                }
                else if (BillStatus == DBUtility.ClsPub.Enum_BillStatus.BillStatus_Modify)
                {
                    BillStatus = DBUtility.ClsPub.Enum_BillStatus.BillStatus_View;
                }
                this.Sub_OperStatus();
                return true;
            }
            else
            {
                MessageBox.Show("保存失败!原因:" + ClsPub.sExeReturnInfo, "提示");
                return false;
            }
        }
        #endregion
        #region çª—体处理方法
        //初始化GRID
        private void initGrid()
        {
            //
            grdMain.ColumnCount = 52;                       //总列数
            DBUtility.Xt_BaseBillFun.initGridFst(grdMain, this.Name);
            //=
            //grdMain.Columns[HMaterIDCol].HeaderText = "物料ID";
            grdMain.Columns[HMaterNumberCol].HeaderText = "物料代码";
            grdMain.Columns[HMaterNameCol].HeaderText = "物料名称";
            grdMain.Columns[HMaterModelCol].HeaderText = "规格型号";
            //grdMain.Columns[HUnitIDCol].HeaderText = "计量单位ID";
            //grdMain.Columns[HUnitNameCol].HeaderText = "计量单位";
            //grdMain.Columns[HProcIDCol].HeaderText = "工序ID";
            grdMain.Columns[HProcNumberCol].HeaderText = "工序代码";
            grdMain.Columns[HProcNameCol].HeaderText = "工序名称";
            //grdMain.Columns[HSourceIDCol].HeaderText = "资源ID";
            grdMain.Columns[HSourceNumberCol].HeaderText = "资源代码";
            grdMain.Columns[HSourceNameCol].HeaderText = "资源名称";
            //grdMain.Columns[HEmpIDCol].HeaderText = "职员ID";
            grdMain.Columns[HEmpNumberCol].HeaderText = "职员代码";
            grdMain.Columns[HEmpNameCol].HeaderText = "职员名称";
            grdMain.Columns[HTimesCol].HeaderText = "工时";
            grdMain.Columns[HQtyCol].HeaderText = "数量";
            grdMain.Columns[HPriceCol].HeaderText = "工价";
            //
            grdMain.Columns[HPriceRateCol].HeaderText = "定额浮动比率";
            grdMain.Columns[HSubsidyQtyCol].HeaderText = "补贴数量";
            grdMain.Columns[HSubsidyMoneyCol].HeaderText = "补贴金额";
            grdMain.Columns[HSubsidyTotalCol].HeaderText = "补贴合计";
            grdMain.Columns[HDeuctTotalCol].HeaderText = "扣款小计";
            //
            grdMain.Columns[HMoneyCol].HeaderText = "金额";
            grdMain.Columns[HPackQtyCol].HeaderText = "包装数量";
            grdMain.Columns[HPackPriceCol].HeaderText = "包装单价";
            grdMain.Columns[HPackMoneyCol].HeaderText = "包装金额";
            grdMain.Columns[HPackMaterIDCol].HeaderText = "包装类型";
            grdMain.Columns[HICMOInterIDCol].HeaderText = "生产任务单ID";
            grdMain.Columns[HICMOBillNoCol].HeaderText = "生产任务单号";
            grdMain.Columns[HProcReportInterIDCol].HeaderText = "工序汇报单ID";
            grdMain.Columns[HProcReportEntryIDCol].HeaderText = "工序汇报单子ID";
            grdMain.Columns[HProcReportBillNoCol].HeaderText = "工序汇报单号";
            grdMain.Columns[HProcPlanInterIDCol].HeaderText = "工序计划单ID";
            grdMain.Columns[HProcPlanEntryIDCol].HeaderText = "工序计划单子ID";
            grdMain.Columns[HProcPlanBillNoCol].HeaderText = "工序计划单号";
            ////固定赋值=====================================================
            grdMain.Columns[HSnoCol].HeaderText = "序号";
            grdMain.Columns[HRemarkCol].HeaderText = "备注";
            grdMain.Columns[HSourceInterIDCol].HeaderText = "源单主内码";
            grdMain.Columns[HSourceBillNoCol].HeaderText = "源单单号";
            grdMain.Columns[HSourceEntryIDCol].HeaderText = "源单子内码";
            grdMain.Columns[HSourceBillTypeCol].HeaderText = "源单类型";
            grdMain.Columns[HRelationQtyCol].HeaderText = "关联数量";
            grdMain.Columns[HRelationMoneyCol].HeaderText = "关联金额";
            grdMain.Columns[HCloseManCol].HeaderText = "行关闭人";
            grdMain.Columns[HEntryCloseDateCol].HeaderText = "关闭时间";
            grdMain.Columns[HCloseTypeCol].HeaderText = "手工关闭";
            //=============================================================================
            //格式化
            ////隐藏列
            grdMain.Columns[HTagCol].Visible = false;
            grdMain.Columns[HEntryIDCol].Visible = false;
            grdMain.Columns[HMaterIDCol].Visible = false;
            grdMain.Columns[HUnitIDCol].Visible = false;
            grdMain.Columns[HProcIDCol].Visible = false;
            grdMain.Columns[HSourceIDCol].Visible = false;
            grdMain.Columns[HEmpIDCol].Visible = false;
            grdMain.Columns[HSubsidyIDCol].Visible = false;
            grdMain.Columns[HDeuctIDCol].Visible = false;
            grdMain.Columns[HUnitIDCol].Visible = false;
            grdMain.Columns[HUnitNameCol].Visible = false;
            grdMain.Columns[HSqtyCol].Visible = false;
            //设置可编辑列
            string sAllowCol = HQtyCol.ToString() +
                            "," + HMaterNumberCol.ToString() +
                            "," + HProcNumberCol.ToString() +
                            "," + HSourceNumberCol.ToString() +
                            "," + HEmpNumberCol.ToString() +
                            "," + HTimesCol.ToString() +
                            "," + HPriceCol.ToString() +
                            "," + HPriceRateCol.ToString() +
                            "," + HSubsidyQtyCol.ToString() +
                            "," + HSubsidyMoneyCol.ToString() +
                            "," + HSubsidyTotalCol.ToString() +
                            "," + HDeuctTotalCol.ToString() +
                            "," + HMoneyCol.ToString() +
                            "," + HPackQtyCol.ToString() +
                            "," + HPackPriceCol.ToString() +
                            "," + HPackMoneyCol.ToString() +
                            "," + HPackMaterIDCol.ToString() +
                            "," + HICMOInterIDCol.ToString() +
                            "," + HICMOBillNoCol.ToString() +
                            "," + HProcReportInterIDCol.ToString() +
                            "," + HProcReportEntryIDCol.ToString() +
                            "," + HProcReportBillNoCol.ToString() +
                            "," + HProcPlanInterIDCol.ToString() +
                            "," + HProcPlanEntryIDCol.ToString() +
                            "," + HProcPlanBillNoCol.ToString() +
                            "," + HRemarkCol.ToString();
            //设置合计列
            string sTotalCol = HQtyCol.ToString() +
                           "," + HTimesCol.ToString() +
                           "," + HPriceCol.ToString() +
                           "," + HSubsidyTotalCol.ToString() +
                           "," + HDeuctTotalCol.ToString() +
                           "," + HPackMoneyCol.ToString() +
                           "," + HMoneyCol.ToString();
            //格式化网格
            DBUtility.Xt_BaseBillFun.initGridLast(sAllowCol, sTotalCol, oSumGrid);
        }
        //公式重算
        private void RowCount(int sRow, int sTag)
        {
            DAL.ClsGy_Employee_View oEmp = new DAL.ClsGy_Employee_View();
            DAL.ClsGy_Material_View oMater = new DAL.ClsGy_Material_View(); //K3物料
            DAL.ClsGy_Process_View oProc = new DAL.ClsGy_Process_View();//工序
            DAL.ClsGy_Source_View oSour = new DAL.ClsGy_Source_View();//生产资源
            int row = grdMain.CurrentCell.RowIndex;
            //物料
            if (oMater.GetInfoByNumber(ClsPub.isStrNull(grdMain.Rows[row].Cells[HMaterNumberCol].Value)))
            {
                grdMain.Rows[row].Cells[HMaterNameCol].Value = oMater.omodel.HName;
                grdMain.Rows[row].Cells[HMaterModelCol].Value = oMater.omodel.HModel;
                grdMain.Rows[row].Cells[HUnitNameCol].Value = oMater.omodel.HUnitName;
            }
            else
            {
                grdMain.Rows[row].Cells[HMaterNameCol].Value = "";
                grdMain.Rows[row].Cells[HMaterModelCol].Value = "";
                grdMain.Rows[row].Cells[HUnitNameCol].Value = "";
            }
            //工序
            if (oProc.GetInfoByNumber(ClsPub.isStrNull(grdMain.Rows[row].Cells[HProcNumberCol].Value)))
            {
                grdMain.Rows[row].Cells[HProcNameCol].Value = oProc.omodel.HName;
            }
            else
            {
                grdMain.Rows[row].Cells[HProcNameCol].Value = "";
            }
            //资源
            if (oSour.GetInfoByNumber(ClsPub.isStrNull(grdMain.Rows[row].Cells[HSourceNumberCol].Value)))
            {
                grdMain.Rows[row].Cells[HSourceNameCol].Value = oSour.omodel.HName;
            }
            else
            {
                grdMain.Rows[row].Cells[HSourceNameCol].Value = "";
            }
            //职员
            if (oEmp.GetInfoByNumber(ClsPub.isStrNull(grdMain.Rows[row].Cells[HEmpNumberCol].Value)))
            {
                grdMain.Rows[row].Cells[HEmpNameCol].Value = oEmp.omodel.HName;
            }
            else
            {
                grdMain.Rows[row].Cells[HEmpNameCol].Value = "";
            }
            if (sTag == 0)
            {
                //金额列=数量*单价
                double pMoney = 0;
                double bMoney = 0;
                pMoney = DBUtility.ClsPub.isDoule(grdMain.Rows[sRow].Cells[HPackPriceCol].Value) * DBUtility.ClsPub.isDoule(grdMain.Rows[sRow].Cells[HPackQtyCol].Value);
                grdMain.Rows[sRow].Cells[HPackMoneyCol].Value = pMoney.ToString();
                bMoney = DBUtility.ClsPub.isDoule(grdMain.Rows[sRow].Cells[HSubsidyQtyCol].Value) * DBUtility.ClsPub.isDoule(grdMain.Rows[sRow].Cells[HPriceCol].Value);
                grdMain.Rows[sRow].Cells[HSubsidyMoneyCol].Value = bMoney.ToString();
                double sMoney = 0;
                if (DBUtility.ClsPub.isDoule(grdMain.Rows[sRow].Cells[HPriceRateCol].Value) == 0)
                {
                    sMoney = DBUtility.ClsPub.isDoule(grdMain.Rows[sRow].Cells[HPriceCol].Value) * DBUtility.ClsPub.isDoule(grdMain.Rows[sRow].Cells[HQtyCol].Value);
                }
                else
                {
                    sMoney = DBUtility.ClsPub.isDoule(grdMain.Rows[sRow].Cells[HPriceCol].Value) * DBUtility.ClsPub.isDoule(grdMain.Rows[sRow].Cells[HQtyCol].Value) * DBUtility.ClsPub.isDoule(grdMain.Rows[sRow].Cells[HPriceRateCol].Value);
                }
                sMoney = sMoney + DBUtility.ClsPub.isDoule(grdMain.Rows[sRow].Cells[HSubsidyTotalCol].Value) - DBUtility.ClsPub.isDoule(grdMain.Rows[sRow].Cells[HDeuctTotalCol].Value) + pMoney + bMoney;
                grdMain.Rows[sRow].Cells[HMoneyCol].Value = ClsPub.isDoule(sMoney, 2);
                grdMain.Rows[sRow].Cells[HQtyCol].Value = ClsPub.isDoule(grdMain.Rows[sRow].Cells[HQtyCol].Value, 4);
                //sMoney = sMoney + ClsPub.isDoule(grdMain.get_TextMatrix(sRow, HSubsidyTotalCol)) - ClsPub.isDoule(grdMain.get_TextMatrix(sRow, HDeuctTotalCol));
                //grdMain.set_TextMatrix(sRow, HMoneyCol, sMoney.ToString());
            }
            else
            {
                //单价列=金额/数量
                double sMoney = 0;
            }
        }
        //核对选择的内容
        public bool CheckGridCell(Cell oCell)
        {
            int Row;
            int Col;
            Row = oCell.Row;
            Col = oCell.Col;
            //输入代码得到信息
            if (Col == HMaterNumberCol)  //物料代码列
            {
                return false;
            }
            //else if (Col == HUnitNameCol)  //单位 åˆ—
            //{
            //        return false;
            //}
            else //其他列
            {
            }
            //
            oSumGrid.EditStatus = false;
            return true;
        }
        //'判断网格行的录入是否正确
        private bool CheckGridRow(int Row)
        {
            Cell oCell = new Cell();
            int c = 0;
            //for (c = 0; c < grdMain.ColumnCount; c++)
            //{
            //    oCell.Row = Row;
            //    oCell.Col = c;
            //    //if (!CheckGridCell(oCell))
            //    //    return false;
            //}
            return true;
        }
        //帮助函数
        private void Sub_GridKey(int sKeyCode, int sRow, int sCol, DataGridViewTextBoxEditingControl oEdit)
        {
            DAL.ClsGy_Material_View oMater = new DAL.ClsGy_Material_View(); //K3物料
            DAL.ClsGy_Process_View oProc = new DAL.ClsGy_Process_View();//工序
            DAL.ClsGy_Employee_View oEmp = new DAL.ClsGy_Employee_View();
            if (!grdStatus)
            {
                return;
            }
            oSumGrid.EditStatus = true;
            switch (sKeyCode)
            {
                case 118:          //F7
                    {
                        switch (sCol)
                        {
                            case HMaterNumberCol:
                                //BLL.ClsBaseSelect_InterFace.SetGridByMater(grdMain, sRow, HMaterIDCol, HMaterNumberCol, HMaterNameCol, HMaterModelCol, HUnitIDCol, HUnitNameCol, HUnitNameCol);
                                //oEdit.Text = grdMain.Rows[sRow].Cells[HMaterNumberCol].Value.ToString();
                                oMater.WherePart = "";
                                if (oMater.RefreshView())
                                {
                                    if (oMater.GetInfoByID(oMater.oModel.HItemID))
                                    {
                                        grdMain.Rows[sRow].Cells[HMaterIDCol].Value = oMater.omodel.HItemID.ToString();
                                        grdMain.Rows[sRow].Cells[HMaterNumberCol].Value = oMater.omodel.HNumber;
                                        grdMain.Rows[sRow].Cells[HMaterNameCol].Value = oMater.omodel.HName;
                                        grdMain.Rows[sRow].Cells[HMaterModelCol].Value = oMater.omodel.HModel;
                                        oEdit.Text = oMater.omodel.HNumber;
                                    }
                                    else
                                    {
                                        grdMain.Rows[sRow].Cells[HMaterIDCol].Value = 0;
                                        grdMain.Rows[sRow].Cells[HMaterNumberCol].Value = "";
                                        grdMain.Rows[sRow].Cells[HMaterNameCol].Value = "";
                                        grdMain.Rows[sRow].Cells[HMaterModelCol].Value = "";
                                    }
                                }
                                else
                                {
                                    grdMain.Rows[sRow].Cells[HMaterIDCol].Value = 0;
                                    grdMain.Rows[sRow].Cells[HMaterNumberCol].Value = "";
                                    grdMain.Rows[sRow].Cells[HMaterNameCol].Value = "";
                                    grdMain.Rows[sRow].Cells[HMaterModelCol].Value = "";
                                }
                                Sub_LoadProcPrice(sRow);
                                break;
                            //
                            case HProcNumberCol:
                                BLL.ClsBaseSelect.SetGridByProc(grdMain, sRow, HProcIDCol, HProcNumberCol, HProcNameCol);
                                oEdit.Text = grdMain.Rows[sRow].Cells[HProcNumberCol].Value.ToString();
                                Sub_LoadProcPrice(sRow);
                                break;
                            //
                            case HSourceNumberCol:
                                BLL.ClsBaseSelect.SetGridBySource(grdMain, sRow, HSourceIDCol, HSourceNumberCol, HSourceNameCol);
                                oEdit.Text = DBUtility.ClsPub.isStrNull(grdMain.Rows[sRow].Cells[HSourceNumberCol].Value);
                                Sub_LoadProcPrice(sRow);
                                break;
                            //
                            case HEmpNumberCol:
                                BLL.ClsBaseSelect.SetGridByEmp(grdMain, sRow, HEmpIDCol, HEmpNumberCol, HEmpNameCol);
                                oEdit.Text = DBUtility.ClsPub.isStrNull(grdMain.Rows[sRow].Cells[HEmpNumberCol].Value);
                                break;
                            case HSubsidyTotalCol:
                                Pay_OtherMoney_Dlg oDlg = new Pay_OtherMoney_Dlg();
                                oDlg.HBillType = "补贴";
                                oDlg.HInterID = DBUtility.ClsPub.isLong(grdMain.Rows[sRow].Cells[HSubsidyIDCol].Value);
                                oDlg.HMoney = DBUtility.ClsPub.isDoule(grdMain.Rows[sRow].Cells[HSubsidyTotalCol].Value);
                                oDlg.ShowDialog();
                                grdMain.Rows[sRow].Cells[HSubsidyTotalCol].Value = oDlg.HMoney.ToString();
                                grdMain.Rows[sRow].Cells[HSubsidyIDCol].Value = oDlg.HInterID.ToString();
                                oEdit.Text = oDlg.HMoney.ToString();
                                break;
                            case HDeuctTotalCol:
                                Pay_OtherMoney_Dlg oDlg2 = new Pay_OtherMoney_Dlg();
                                oDlg2.HBillType = "扣款";
                                oDlg2.HInterID = DBUtility.ClsPub.isLong(grdMain.Rows[sRow].Cells[HDeuctIDCol].Value);
                                oDlg2.HMoney = DBUtility.ClsPub.isDoule(grdMain.Rows[sRow].Cells[HDeuctTotalCol].Value);
                                oDlg2.ShowDialog();
                                grdMain.Rows[sRow].Cells[HDeuctTotalCol].Value = oDlg2.HMoney.ToString();
                                grdMain.Rows[sRow].Cells[HDeuctIDCol].Value = oDlg2.HInterID.ToString();
                                oEdit.Text = oDlg2.HMoney.ToString();
                                break;
                            default:
                                break;
                        }
                        //获取工价
                        //
                        break;
                    }
                case 117:  //F6
                    {
                        switch (sCol)
                        {
                            default:
                                break;
                        }
                        break;
                    }
                default:
                    break;
            }
        }
        #region  åŸºæœ¬ä¸å˜
        //是否是空行
        private bool IsNullRow(int Row)
        {
            return DBUtility.Xt_BaseBillFun.IsNullRow(Row, HMaterIDCol, grdMain);
        }
        //网格编辑前判断
        private void grdMain_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
        {
            int i = grdMain.CurrentCell.ColumnIndex;
            if (DBUtility.Xt_BaseBillFun.AllowEdit(grdStatus, oSumGrid, i))
            {
                e.Cancel = true;
            }
        }
        private void grdMain_Scroll(object sender, ScrollEventArgs e)
        {
            DBUtility.Xt_BaseBillFun.SetSumGrid(oSumGrid);
            oSumGrid.DisplayCurRow();
        }
        //网格编辑后处理
        private void grdMain_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            DBUtility.Xt_BaseBillFun.SetSumGrid(oSumGrid);
            RowCount(e.RowIndex, 0);  //计算 é‡‘额 å•ä»·
            //
            if (this.EditingControl != null)      //释放事件
            {
                EditingControl.KeyDown -= new KeyEventHandler(this.EditingControl_KeyDown);
                this.EditingControl = null;
            }
        }
        DataGridViewTextBoxEditingControl EditingControl;
        private void grdMain_CellLeave(object sender, DataGridViewCellEventArgs e)
        {
            //
            if (!grdStatus)
            {
                return;
            }
            DBUtility.Xt_BaseBillFun.SetSumGrid(oSumGrid);
            //
            if (!CheckGridRow(oSumGrid.OldCell.Row))
                return;
        }
        private void grdMain_ColumnWidthChanged(object sender, DataGridViewColumnEventArgs e)
        {
            DBUtility.Xt_BaseBillFun.SetSumGrid(oSumGrid);
        }
        private void grdMain_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e)
        {
            if (grdMain.CurrentCell != null)
            {
                if (e.Control is DataGridViewTextBoxEditingControl)
                {
                    this.EditingControl = (DataGridViewTextBoxEditingControl)e.Control;
                    //增加委托处理
                    this.EditingControl.KeyDown += new KeyEventHandler(this.EditingControl_KeyDown);
                }
            }
        }
        private void EditingControl_KeyDown(object sender, KeyEventArgs e)
        {
            //业务处理
            Sub_GridKey(e.KeyValue, grdMain.CurrentRow.Index, grdMain.CurrentCell.ColumnIndex, EditingControl);
        }
        private void grdMain_RowHeadersWidthChanged(object sender, EventArgs e)
        {
            DBUtility.Xt_BaseBillFun.SetSumGrid(oSumGrid);
        }
        #endregion
        #endregion
        #region  //打印设置
        GridppReport Report;
        //预览
        private void yl_Click(object sender, EventArgs e)
        {
            //选择打印模板
            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.PrintPreview(true);
            }
        }
        //找到对应打印模块
        private void Sub_SetReport(string sOpenTmp)
        {
            //
            Report = new GridppReport();
            Report.LoadFromFile(ClsPub.AppPath + @"\" + sOpenTmp + ".grf");  //here .
            Report.BeforePostRecord += new _IGridppReportEvents_BeforePostRecordEventHandler(ReportBeforePostRecord);
            Report.FetchRecord += new _IGridppReportEvents_FetchRecordEventHandler(ReportFetchRecordByDataTable);
        }
        //赋值表头
        private void ReportBeforePostRecord()//
        {
            Report.FieldByName("单据号").AsString = txtHBillNo.Text;
            Report.FieldByName("日期").AsString = dtpHDate.Value.ToString();
            Report.FieldByName("部门").AsString = txtHDeptID.Text;
            Report.FieldByName("职员").AsString = txtHEmpID.Text;
            Report.FieldByName("表头备注").AsString = txtHRemark.Text;
        }
        //赋值表体
        private void ReportFetchRecordByDataTable()
        {
            BLL.Utility.FillRecordToReport(Report, grdMain, grdPrint, HMaterIDCol);
        }
        //打印设置
        private void set_Click(object sender, EventArgs e)
        {
            //
            BLL.Gy_OpenTmp oFrm = new BLL.Gy_OpenTmp();
            oFrm.sBillName = ModName;
            oFrm.sBillModel = ModCaption;
            oFrm.ShowDialog();
        }
        //打印
        private void dy_Click(object sender, EventArgs e)
        {
            //选择打印模板
            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(true);
            }
        }
        #endregion
        #region  æºå•处理
        //选原单
        private void cmdSourceBillNo_Click(object sender, EventArgs e)
        {
            if (cmbSourceBillType.Text.Trim() == "调拨单")    //å¹»
            {
                DAL.Cls_S_K3_MoveStockBill oK3_MoveStockBill = new DAL.Cls_S_K3_MoveStockBill();
                if (oK3_MoveStockBill.Refresh(""))  //选择原单
                {
                    FillSelectData(oK3_MoveStockBill.oBillSelectColl);
                }
            }
            else if (cmbSourceBillType.Text.Trim() == "产品入库单")    //å¹»
            {
                DAL.Cls_S_K3_ProdInBillList oK3_ProdInBill = new DAL.Cls_S_K3_ProdInBillList();
                if (oK3_ProdInBill.Refresh(""))  //选择原单
                {
                    FillSelectData(oK3_ProdInBill.oBillSelectColl);
                }
            }
            else if (cmbSourceBillType.Text.Trim() == "产品入库单(红单)")    //å¹»
            {
                DAL.Cls_S_K3_ProdInBillList2 oK3_ProdInBill = new DAL.Cls_S_K3_ProdInBillList2();
                if (oK3_ProdInBill.Refresh(""))  //选择原单
                {
                    FillSelectData(oK3_ProdInBill.oBillSelectColl);
                }
            }
            else if (cmbSourceBillType.Text.Trim() == "工序汇报单")    //å¹»
            {
                DAL.Cls_S_Sc_ProcessReport oK3_ProdInBill = new DAL.Cls_S_Sc_ProcessReport();
                if (oK3_ProdInBill.Refresh(""))  //选择原单
                {
                    FillSelectData(oK3_ProdInBill.oBillSelectColl);
                }
            }
            else
            {
            }
        }
        //
        private void FillSelectData(List<DBUtility.BillSelect> oList)
        {
            DataSet Ds;
            SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
            oSumGrid.Changelock = true;
            initGrid();
            int i = -1;
            foreach (DBUtility.BillSelect oSelectRow in oList)
            {
                i = i + 1;
                //调拨单
                if (oSelectRow.BillType == "1243")
                {
                    grdMain.Rows.Add();
                    Application.DoEvents();
                    //得到信息
                    Ds = oCn.RunProcReturn("select * from h_v_Kf_MoveStockBillList_K3 where hmainid=" + oSelectRow.BillMainID + " and hsubid=" + oSelectRow.BillSubID, "h_v_Kf_MoveStockBillList_K3");
                    //写入信息
                    Sub_WriteInForm(Ds.Tables[0], i);
                    Application.DoEvents();
                }
                //产品入库单
                if (oSelectRow.BillType == "1202")
                {
                    grdMain.Rows.Add();
                    Application.DoEvents();
                    //得到信息
                    Ds = oCn.RunProcReturn("select * from h_v_Kf_ProductInBillList_K3 where hmainid=" + oSelectRow.BillMainID + " and hsubid=" + oSelectRow.BillSubID, "h_v_Kf_ProductInBillList_K3");
                    //写入信息
                    Sub_WriteInForm(Ds.Tables[0], i);
                    Application.DoEvents();
                }
                //生产任务单
                if (oSelectRow.BillType == "85")
                {
                    grdMain.Rows.Add();
                    Application.DoEvents();
                    //得到信息
                    Ds = oCn.RunProcReturn("select * from h_v_Sc_ICMOBillList_K3 where hmainid=" + oSelectRow.BillMainID + " and hsubid=" + oSelectRow.BillSubID, "h_v_Sc_ICMOBillList_K3");
                    //写入信息
                    Sub_WriteInForm(Ds.Tables[0], i);
                    Application.DoEvents();
                }
                //工序汇报单
                if (oSelectRow.BillType == "3714")
                {
                    grdMain.Rows.Add();
                    Application.DoEvents();
                    //得到信息
                    Ds = oCn.RunProcReturn("select * from h_v_Sc_ProcessReportList_Source where hmainid=" + oSelectRow.BillMainID + " and hsubid=" + oSelectRow.BillSubID, "h_v_Sc_ProcessReportList_Source");
                    //写入信息
                    Sub_WriteInForm(Ds.Tables[0], i);
                    Application.DoEvents();
                }
                //任务单汇报
                if (oSelectRow.BillType == "551")
                {
                    grdMain.Rows.Add();
                    Application.DoEvents();
                    //得到信息
                    Ds = oCn.RunProcReturn("select * from h_v_Kf_ProductInBillList_K3 where hmainid=" + oSelectRow.BillMainID + " and hsubid=" + oSelectRow.BillSubID, "h_v_Kf_ProductInBillList_K3");
                    //写入信息
                    Sub_WriteInForm(Ds.Tables[0], i);
                    Application.DoEvents();
                }
                //
            }
            //
            oSumGrid.Changelock = false;
            DBUtility.Xt_BaseBillFun.SetSumGrid(oSumGrid);
        }
        //根据TABLE写入界面
        private void Sub_WriteInForm(DataTable oTable, int i)
        {
            Int64 HMaterID = 0;
            Int64 HProcID = 0;
            Int64 HSourceID = 0;
            HMaterID = ClsPub.isLong(oTable.Rows[0]["HMaterID"]);
            HProcID = ClsPub.isLong(oTable.Rows[0]["HProcID"]);
            HSourceID = ClsPub.isLong(oTable.Rows[0]["HSourceID"]);
            DAL.ClsGy_ProcPrice_Ctl oProcPrice = new DAL.ClsGy_ProcPrice_Ctl();
            ////加载表头
            this.txtHDeptID.Tag = oTable.Rows[0]["HDeptID"].ToString();
            this.txtHDeptID.Text = oTable.Rows[0]["部门名称"].ToString();
            this.txtHGroupID.Tag = oTable.Rows[0]["HGroupID"].ToString();
            this.txtHGroupID.Text = oTable.Rows[0]["班组名称"].ToString();
            ////加载表体
            grdMain.Rows[i].Cells[HTagCol].Value = "*";
            grdMain.Rows[i].Cells[HMaterIDCol].Value = oTable.Rows[0]["HMaterID"].ToString();
            grdMain.Rows[i].Cells[HMaterNumberCol].Value = oTable.Rows[0]["物料代码"].ToString();
            grdMain.Rows[i].Cells[HMaterNameCol].Value = oTable.Rows[0]["物料名称"].ToString();
            grdMain.Rows[i].Cells[HMaterModelCol].Value = oTable.Rows[0]["规格型号"].ToString();
            grdMain.Rows[i].Cells[HProcIDCol].Value = oTable.Rows[0]["HProcID"].ToString();
            grdMain.Rows[i].Cells[HProcNumberCol].Value = oTable.Rows[0]["工序代码"].ToString();
            grdMain.Rows[i].Cells[HProcNameCol].Value = oTable.Rows[0]["工序名称"].ToString();
            grdMain.Rows[i].Cells[HSourceIDCol].Value = oTable.Rows[0]["HSourceID"].ToString();
            grdMain.Rows[i].Cells[HSourceNumberCol].Value = oTable.Rows[0]["资源代码"].ToString();
            grdMain.Rows[i].Cells[HSourceNameCol].Value = oTable.Rows[0]["资源名称"].ToString();
            grdMain.Rows[i].Cells[HEmpIDCol].Value = oTable.Rows[0]["HWorkerID"].ToString();
            grdMain.Rows[i].Cells[HEmpNumberCol].Value = oTable.Rows[0]["操作员代码"].ToString();
            grdMain.Rows[i].Cells[HEmpNameCol].Value = oTable.Rows[0]["操作员名称"].ToString();
            grdMain.Rows[i].Cells[HUnitIDCol].Value = oTable.Rows[0]["HUnitID"].ToString();
            grdMain.Rows[i].Cells[HUnitNameCol].Value = oTable.Rows[0]["计量单位"].ToString();
            grdMain.Rows[i].Cells[HTimesCol].Value = ClsPub.isDoule(oTable.Rows[0]["工时"]);
            grdMain.Rows[i].Cells[HQtyCol].Value = ClsPub.isDoule(oTable.Rows[0]["数量"]);
            grdMain.Rows[i].Cells[HSqtyCol].Value = ClsPub.isDoule(oTable.Rows[0]["数量"]);
            grdMain.Rows[i].Cells[HPriceCol].Value = oProcPrice.LoadProcPrice(HMaterID, HProcID, HSourceID, true);// ClsPub.isDoule(oTable.Rows[0]["工价"]);
            grdMain.Rows[i].Cells[HMoneyCol].Value = ClsPub.isDoule(oTable.Rows[0]["数量"]) * oProcPrice.LoadProcPrice(HMaterID, HProcID, HSourceID, true);
            //grdMain.Rows[i].Cells[HICMOInterIDCol].Value = ClsPub.isLong(oTable.Rows[0]["生产任务单ID"]);
            //grdMain.Rows[i].Cells[HICMOBillNoCol].Value = ClsPub.isStrNull(oTable.Rows[0]["生产任务单号"]);
            //grdMain.Rows[i].Cells[HProcReportInterIDCol].Value = ClsPub.isLong(oTable.Rows[0]["工序汇报单ID"]);
            //grdMain.Rows[i].Cells[HProcReportEntryIDCol].Value = ClsPub.isLong(oTable.Rows[0]["工序汇报单子ID"]);
            //grdMain.Rows[i].Cells[HProcReportBillNoCol].Value = ClsPub.isStrNull(oTable.Rows[0]["工序汇报单号"]);
            //grdMain.Rows[i].Cells[HProcPlanInterIDCol].Value = ClsPub.isLong(oTable.Rows[0]["工序计划单ID"]);
            //grdMain.Rows[i].Cells[HProcPlanEntryIDCol].Value = ClsPub.isLong(oTable.Rows[0]["工序计划单子ID"]);
            //grdMain.Rows[i].Cells[HProcPlanBillNoCol].Value = ClsPub.isStrNull(oTable.Rows[0]["工序计划单号"]);
            grdMain.Rows[i].Cells[HSourceInterIDCol].Value = ClsPub.isLong(oTable.Rows[0]["hmainID"]);
            grdMain.Rows[i].Cells[HSourceEntryIDCol].Value = ClsPub.isLong(oTable.Rows[0]["hsubid"]);
            grdMain.Rows[i].Cells[HSourceBillNoCol].Value = ClsPub.isStrNull(oTable.Rows[0]["单据号"]);
            grdMain.Rows[i].Cells[HSourceBillTypeCol].Value = "2";
        }
        #endregion
        private void cmdHGroupID_Click(object sender, EventArgs e)
        {
            //DAL.ClsGy_Group_View oGroup = new DAL.ClsGy_Group_View();
            //if (oGroup.RefreshView())
            //{
            //    this.txtHGroupID.Text = oGroup.oModel.HName;
            //    this.txtHGroupID.Tag = oGroup.oModel.HItemID.ToString();
            //}
            //else
            //{
            //    this.txtHGroupID.Text = "";
            //}
            //BLL.ClsBaseSelect.SetTextByGroup(txtHGroupID);
            BLL.ClsBaseSelect.SetTextByGroup(txtHGroupID);
        }
        private void txtHGroupID_TextChanged(object sender, EventArgs e)
        {
            if (txtHGroupID.Text.Trim() == "")
            {
                txtHGroupID.Tag = "0";
            }
        }
        private void cmdHDeptID_Click(object sender, EventArgs e)
        {
            //DAL.ClsGy_Department_View oDep = new DAL.ClsGy_Department_View();
            //if (oDep.RefreshView())
            //{
            //    this.txtHDeptID.Text = oDep.oModel.HName;
            //    this.txtHDeptID.Tag = oDep.oModel.HItemID.ToString();
            //}
            //else
            //{
            //    this.txtHDeptID.Text = "";
            //}
            //BLL.ClsBaseSelect.SetTextByDept(txtHDeptID, true);
            BLL.ClsBaseSelect.SetTextByDept(txtHDeptID,false);
        }
        private void txtHDeptID_TextChanged(object sender, EventArgs e)
        {
            if (txtHDeptID.Text.Trim() == "")
            {
                txtHDeptID.Tag = "0";
            }
        }
        private void cmdHEmpID_Click(object sender, EventArgs e)
        {
            //DAL.ClsGy_Employee_View oEmp = new DAL.ClsGy_Employee_View();
            //if (oEmp.RefreshView())
            //{
            //    this.txtHEmpID.Text = oEmp.oModel.HName;
            //    this.txtHEmpID.Tag = oEmp.oModel.HItemID.ToString();
            //}
            //else
            //{
            //    this.txtHEmpID.Text = "";
            //}
            //BLL.ClsBaseSelect.SetTextByEmp_K3(txtHEmpID);
            BLL.ClsBaseSelect.SetTextByEmp(txtHEmpID);
        }
        private void txtHEmpID_TextChanged(object sender, EventArgs e)
        {
            if (txtHEmpID.Text.Trim() == "")
            {
                txtHEmpID.Tag = "0";
            }
        }
        #region  å›žè½¦ é€‰æ‹©åŸºç¡€èµ„料功能
        //部门 æŒ‰é”®æ—¶é—´
        private void txtHDeptID_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                //获取控件位置
                int x = 0; int y = 0;
                BLL.ClsPub_BLL.SetXY(this, P1, gbUp, txtHDeptID, ref x, ref y);
                //选择基础
                BLL.ClsBaseDownSelect.SetTextByDept(txtHDeptID, x, y);
            }
        }
        //班组 æŒ‰é”®æ—¶é—´
        private void txtHGroupID_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                //获取控件位置
                int x = 0; int y = 0;
                BLL.ClsPub_BLL.SetXY(this, P1, gbUp, txtHGroupID, ref x, ref y);
                //选择基础
                BLL.ClsBaseDownSelect.SetTextByGroup(txtHGroupID, x, y);
            }
        }
        //主管 æŒ‰é”®æ—¶é—´
        private void txtHEmpID_KeyDown(object sender, KeyEventArgs e)
        {
            if (e.KeyCode == Keys.Enter)
            {
                //获取控件位置
                int x = 0; int y = 0;
                BLL.ClsPub_BLL.SetXY(this, P1, gbUp, txtHEmpID, ref x, ref y);
                //选择基础
                BLL.ClsBaseDownSelect.SetTextByEmployee(txtHEmpID, x, y);
            }
        }
        //下拉式 é€‰æ‹©æ¡†  GRID
        protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
        {
            DAL.ClsGy_Material_View oMater = new DAL.ClsGy_Material_View(); //K3物料
            DAL.ClsGy_Unit_View oUnit = new DAL.ClsGy_Unit_View();//K3计量单位
            DAL.ClsGy_Process_View oProc = new DAL.ClsGy_Process_View();//工序
            DAL.ClsGy_Source_View oSource = new DAL.ClsGy_Source_View();//生产资源
            DAL.ClsGy_Employee_View oEmp = new DAL.ClsGy_Employee_View();
            bool enterkey;
            enterkey = false;
            if (keyData == Keys.Enter)    //监听回车事件
            {
                if (this.grdMain.IsCurrentCellInEditMode)   //如果当前单元格处于编辑模式
                {
                    enterkey = true;    //把是否点击按钮设置为真
                    if (grdMain.CurrentCell.RowIndex == grdMain.Rows.Count - 1)
                    {
                    }
                    else
                    {
                    }
                    if (grdMain.CurrentCell.ColumnIndex != grdMain.CurrentCell.ColumnIndex)
                    {
                        return true;
                    }
                    //获取定位
                    int sh = 40;
                    int ch = 40;
                    for (int i = grdMain.CurrentCell.RowIndex; i > 0; i--)
                    {
                        if (grdMain.Rows[i].Displayed)
                        {
                            sh = sh + grdMain.Rows[i].Height;
                        }
                    }
                    for (int i = grdMain.CurrentCell.ColumnIndex; i > 0; i--)
                    {
                        if (grdMain.Columns[i].Displayed)
                        {
                            ch = ch + grdMain.Columns[i].Width;
                        }
                    }
                    int x = this.Location.X + this.grdMain.Location.X + ch;
                    int y = this.Location.Y + this.grdMain.Location.Y + sh + 35;
                    //------------------------------------
                    grdMain.Rows[grdMain.CurrentRow.Index].Cells[grdMain.CurrentCell.ColumnIndex].Value = EditingControl.Text;
                    string sWhere = Pub_Class.ClsPub.isStrNull(grdMain.Rows[grdMain.CurrentRow.Index].Cells[grdMain.CurrentCell.ColumnIndex].Value);
                    switch (grdMain.CurrentCell.ColumnIndex)
                    {
                        case HMaterNumberCol:
                            //BLL.ClsBaseDownSelect.SetGridByMaterial(grdMain, sWhere, grdMain.CurrentRow.Index, HMaterIDCol, x, y);
                            //if (DBUtility.ClsPub.isLong(grdMain.Rows[grdMain.CurrentRow.Index].Cells[HMaterIDCol].Value) != 0)
                            //{
                            //    if (oMater.GetInfoByID(DBUtility.ClsPub.isLong(grdMain.Rows[grdMain.CurrentRow.Index].Cells[HMaterIDCol].Value)))
                            //    {
                            //        grdMain.Rows[grdMain.CurrentRow.Index].Cells[HMaterNumberCol].Value = oMater.omodel.HNumber;
                            //        grdMain.Rows[grdMain.CurrentRow.Index].Cells[HMaterNameCol].Value = oMater.omodel.HName;
                            //        grdMain.Rows[grdMain.CurrentRow.Index].Cells[HMaterModelCol].Value = oMater.omodel.HModel;
                            //        grdMain.Rows[grdMain.CurrentRow.Index].Cells[HUnitIDCol].Value = oMater.omodel.HUnitID.ToString();
                            //        if (oUnit.GetInfoByID(oMater.omodel.HUnitID))
                            //        {
                            //            grdMain.Rows[grdMain.CurrentRow.Index].Cells[HUnitIDCol].Value = oUnit.omodel.HItemID;
                            //            grdMain.Rows[grdMain.CurrentRow.Index].Cells[HUnitNameCol].Value = oUnit.omodel.HName;
                            //        }
                            //        EditingControl.Text = grdMain.Rows[grdMain.CurrentRow.Index].Cells[grdMain.CurrentCell.ColumnIndex].Value.ToString();
                            //    }
                            //}
                            break;
                        //
                        case HProcNumberCol:
                            BLL.ClsBaseDownSelect.SetGridByProc(grdMain, sWhere, grdMain.CurrentRow.Index, HProcIDCol, x, y);
                            if (DBUtility.ClsPub.isLong(grdMain.Rows[grdMain.CurrentRow.Index].Cells[HProcIDCol].Value) != 0)
                            {
                                if (oProc.GetInfoByID(DBUtility.ClsPub.isLong(grdMain.Rows[grdMain.CurrentRow.Index].Cells[HProcIDCol].Value)))
                                {
                                    grdMain.Rows[grdMain.CurrentRow.Index].Cells[HProcNumberCol].Value = oProc.omodel.HNumber;
                                    grdMain.Rows[grdMain.CurrentRow.Index].Cells[HProcNameCol].Value = oProc.omodel.HName;
                                    EditingControl.Text = grdMain.Rows[grdMain.CurrentRow.Index].Cells[grdMain.CurrentCell.ColumnIndex].Value.ToString();
                                }
                            }
                            break;
                        //
                        case HSourceNumberCol:
                            BLL.ClsBaseDownSelect.SetGridBySource(grdMain, sWhere, grdMain.CurrentRow.Index, HSourceIDCol, x, y);
                            if (DBUtility.ClsPub.isLong(grdMain.Rows[grdMain.CurrentRow.Index].Cells[HSourceIDCol].Value) != 0)
                            {
                                if (oSource.GetInfoByID(DBUtility.ClsPub.isLong(grdMain.Rows[grdMain.CurrentRow.Index].Cells[HSourceIDCol].Value)))
                                {
                                    grdMain.Rows[grdMain.CurrentRow.Index].Cells[HSourceNumberCol].Value = oSource.omodel.HNumber;
                                    grdMain.Rows[grdMain.CurrentRow.Index].Cells[HSourceNameCol].Value = oSource.omodel.HName;
                                    EditingControl.Text = grdMain.Rows[grdMain.CurrentRow.Index].Cells[grdMain.CurrentCell.ColumnIndex].Value.ToString();
                                }
                            }
                            break;
                        //
                        case HEmpNumberCol:
                            BLL.ClsBaseDownSelect.SetGridByEmp(grdMain, sWhere, grdMain.CurrentRow.Index, HEmpIDCol, x, y);
                            if (DBUtility.ClsPub.isLong(grdMain.Rows[grdMain.CurrentRow.Index].Cells[HEmpIDCol].Value) != 0)
                            {
                                if (oEmp.GetInfoByID(DBUtility.ClsPub.isLong(grdMain.Rows[grdMain.CurrentRow.Index].Cells[HEmpIDCol].Value)))
                                {
                                    grdMain.Rows[grdMain.CurrentRow.Index].Cells[HEmpNumberCol].Value = oEmp.omodel.HNumber;
                                    grdMain.Rows[grdMain.CurrentRow.Index].Cells[HEmpNameCol].Value = oEmp.omodel.HName;
                                    EditingControl.Text = grdMain.Rows[grdMain.CurrentRow.Index].Cells[grdMain.CurrentCell.ColumnIndex].Value.ToString();
                                }
                            }
                            break;
                        default:
                            break;
                    }
                    //SendKeys.Send("{Right}");
                    return true;
                }
            }
            //继续原来base.ProcessCmdKey中的处理
            return base.ProcessCmdKey(ref msg, keyData);
        }
        #endregion
        //根据物料和工序加载工价
        private void Sub_LoadProcPrice(int i)
        {
            double sPrice = 0;
            if (ClsPub.isLong(grdMain.Rows[i].Cells[HMaterIDCol].Value) != 0 && ClsPub.isLong(grdMain.Rows[i].Cells[HProcIDCol].Value) != 0)
            {
                DAL.ClsGy_ProcPrice_Ctl oProcPrice = new DAL.ClsGy_ProcPrice_Ctl();
                sPrice = oProcPrice.LoadProcPrice(ClsPub.isLong(grdMain.Rows[i].Cells[HMaterIDCol].Value), ClsPub.isLong(grdMain.Rows[i].Cells[HProcIDCol].Value), ClsPub.isLong(grdMain.Rows[i].Cells[HSourceIDCol].Value), true);
                grdMain.Rows[i].Cells[HPriceCol].Value = sPrice.ToString();
            }
            RowCount(i, 0);
        }
        //物料+工序 å¸¦å‡ºå·¥åºå·¥ä»·
        private double FindProcPrice(Int64 HMaterID, Int64 HProcID, Int64 HSourceID, bool b)
        {
            DAL.ClsGy_ProcPrice_Ctl oProcPrice = new DAL.ClsGy_ProcPrice_Ctl();
            return oProcPrice.LoadProcPrice(HMaterID, HProcID, HSourceID, b);
        }
        private void å…³é—­ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Sub_CloseBill();
        }
        private void åå…³é—­ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Sub_Cancel();
        }
        private void å®¡æ ¸ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Sub_CheckBill();
        }
        private void åå®¡æ ¸ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Sub_AbandonCheck();
        }
        private void ä½œåºŸToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Sub_Cancelltion();
        }
        private void æ’¤é”€ä½œåºŸToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Sub_AbandonCancelltion();
        }
        private void éšè—åˆ—设置ToolStripMenuItem_Click(object sender, EventArgs e)
        {
            BLL.Gy_GridView_Hide oHide = new BLL.Gy_GridView_Hide();
            oHide.KeyItem = this.Name;
            oHide.oGrd = grdMain;
            oHide.ShowDialog();
            //
            DBUtility.ClsPub.HideGridView(grdMain, Name, ClsPub.AppPath);//设置隐藏列
        }
        public Pay_SingleBalBillDlg oDlg = new Pay_SingleBalBillDlg();
        private void cx_Click(object sender, EventArgs e)
        {
            oDlg.ShowDialog();
            if (oDlg.IsOk == 1)
            {
                grdMainData_CF(DBUtility.ClsPub.isInt(oDlg.txtHQ.Text));
            }
        }
        private void grdMainData_CF(int HQty)
        {
            double hq = 0;
            int Qty = HQty - 1;
            int row = grdMain.CurrentCell.RowIndex;
            grdMain.Rows.Insert(row + 1, Qty);
            hq = DBUtility.ClsPub.isDoule(grdMain.Rows[row].Cells[HQtyCol].Value) / HQty;
            grdMain.Rows[row].Cells[HQtyCol].Value = hq;
            for (int i = 0; i < Qty; i++)
            {
                int r = i + 1;
                grdMain.Rows[row + r].Cells[HMaterIDCol].Value = grdMain.Rows[row].Cells[HMaterIDCol].Value;
                grdMain.Rows[row + r].Cells[HMaterNumberCol].Value = grdMain.Rows[row].Cells[HMaterNumberCol].Value;
                grdMain.Rows[row + r].Cells[HMaterNameCol].Value = grdMain.Rows[row].Cells[HMaterNameCol].Value;
                grdMain.Rows[row + r].Cells[HMaterModelCol].Value = grdMain.Rows[row].Cells[HMaterModelCol].Value;
                grdMain.Rows[row + r].Cells[HUnitIDCol].Value = grdMain.Rows[row].Cells[HUnitIDCol].Value;
                grdMain.Rows[row + r].Cells[HUnitNameCol].Value = grdMain.Rows[row].Cells[HUnitNameCol].Value;
                grdMain.Rows[row + r].Cells[HProcIDCol].Value = grdMain.Rows[row].Cells[HProcIDCol].Value;
                grdMain.Rows[row + r].Cells[HProcNumberCol].Value = grdMain.Rows[row].Cells[HProcNumberCol].Value;
                grdMain.Rows[row + r].Cells[HProcNameCol].Value = grdMain.Rows[row].Cells[HProcNameCol].Value;
                grdMain.Rows[row + r].Cells[HSourceIDCol].Value = grdMain.Rows[row].Cells[HSourceIDCol].Value;
                grdMain.Rows[row + r].Cells[HSourceNumberCol].Value = grdMain.Rows[row].Cells[HSourceNumberCol].Value;
                grdMain.Rows[row + r].Cells[HSourceNameCol].Value = grdMain.Rows[row].Cells[HSourceNameCol].Value;
                grdMain.Rows[row + r].Cells[HEmpIDCol].Value = grdMain.Rows[row].Cells[HEmpIDCol].Value;
                grdMain.Rows[row + r].Cells[HEmpNumberCol].Value = grdMain.Rows[row].Cells[HEmpNumberCol].Value;
                grdMain.Rows[row + r].Cells[HEmpNameCol].Value = grdMain.Rows[row].Cells[HEmpNameCol].Value;
                grdMain.Rows[row + r].Cells[HTimesCol].Value = grdMain.Rows[row].Cells[HTimesCol].Value;
                grdMain.Rows[row + r].Cells[HPriceCol].Value = grdMain.Rows[row].Cells[HPriceCol].Value;
                grdMain.Rows[row + r].Cells[HQtyCol].Value = DBUtility.ClsPub.isDoule(hq, 4);
            }
            DBUtility.Xt_BaseBillFun.SetSumGrid(oSumGrid);
        }
        private void txtHGroupID_Leave(object sender, EventArgs e)
        {
            DAL.ClsGy_Group_View oGroup = new DAL.ClsGy_Group_View();
            if (oGroup.GetInfoByNumber(ClsPub.isStrNull(txtHGroupID.Text)))
            {
                this.txtHGroupID.Text = oGroup.omodel.HName;
            }
            else
            {
                this.txtHGroupID.Text = "";
            }
        }
        private void txtHDeptID_Leave(object sender, EventArgs e)
        {
            DAL.ClsGy_Department_View oDep = new DAL.ClsGy_Department_View();//K3部门
            if (oDep.GetInfoByNumber(ClsPub.isStrNull(txtHDeptID.Text)))
            {
                this.txtHDeptID.Text = oDep.omodel.HName;
            }
            else
            {
                this.txtHDeptID.Text = "";
            }
        }
        //#region  æºå•处理
        ////选原单
        //private void cmdSourceBillNo_Click(object sender, EventArgs e)
        //{
        //    if (cmbSourceBillType.Text.Trim() == "产品入库单")    //
        //    {
        //        string sWhere = " and æ•°é‡>入库数量";
        //        DAL.Cls_S_K3_SeOutStockBillList oSeOutStockBillList = new DAL.Cls_S_K3_SeOutStockBillList();
        //        if (oSeOutStockBillList.Refresh2(sWhere))  //选择原单
        //        {
        //            FillSelectData(oSeOutStockBillList.oBillSelectColl);
        //        }
        //    }
        //    else
        //    {
        //    }
        //}
        ////
        //private void FillSelectData(List<DBUtility.BillSelect> oList)
        //{
        //    DataSet Ds;
        //    SQLHelper.ClsCN oCn = new SQLHelper.ClsCN();
        //    oSumGrid.Changelock = true;
        //    initGrid();
        //    int i = -1;
        //    foreach (DBUtility.BillSelect oSelectRow in oList)
        //    {
        //        i = i + 1;
        //        //生产任务单
        //        if (oSelectRow.BillType == "1202")
        //        {
        //            grdMain.Rows.Add();
        //            Application.DoEvents();
        //            //得到信息
        //            Ds = oCn.RunProcReturn("select * from h_v_Kf_ICStockBillList_Source where hmainid=" + oSelectRow.BillMainID + " and hsubid=" + oSelectRow.BillSubID, "h_v_Kf_ICStockBillList_Source");
        //            //写入信息
        //            Sub_WriteInForm(Ds.Tables[0], i);
        //            Application.DoEvents();
        //        }
        //    }
        //    //
        //    oSumGrid.Changelock = false;
        //    DBUtility.Xt_BaseBillFun.SetSumGrid(oSumGrid);
        //}
        ////根据TABLE写入界面
        //private void Sub_WriteInForm(DataTable oTable, int i)
        //{
        //    ////加载表头
        //    //this.txtHGroupID.Tag = oTable.Rows[0]["HGroupID"].ToString();
        //    //this.txtHGroupID.Text = oTable.Rows[0]["班组名称"].ToString();
        //    this.txtHDeptID.Tag = oTable.Rows[0]["HDeptID"].ToString();
        //    this.txtHDeptID.Text = oTable.Rows[0]["部门名称"].ToString();
        //    ////加载表体
        //    grdMain.Rows[i].Cells[HTagCol].Value = "*";
        //    grdMain.Rows[i].Cells[HMaterIDCol].Value = oTable.Rows[0]["HMaterID"].ToString();
        //    grdMain.Rows[i].Cells[HMaterNumberCol].Value = oTable.Rows[0]["物料代码"].ToString();
        //    grdMain.Rows[i].Cells[HMaterNameCol].Value = oTable.Rows[0]["物料名称"].ToString();
        //    grdMain.Rows[i].Cells[HMaterModelCol].Value = oTable.Rows[0]["规格型号"].ToString();
        //    grdMain.Rows[i].Cells[HUnitIDCol].Value = oTable.Rows[0]["HUnitID"].ToString();
        //    grdMain.Rows[i].Cells[HUnitNumberCol].Value = oTable.Rows[0]["计量单位代码"].ToString();
        //    grdMain.Rows[i].Cells[HUnitNameCol].Value = oTable.Rows[0]["计量单位名称"].ToString();
        //    //grdMain.Rows[i].Cells[HProcIDCol].Value = oTable.Rows[0]["HProcID"].ToString();
        //    //grdMain.Rows[i].Cells[HProcNumberCol].Value = oTable.Rows[0]["工序代码"].ToString();
        //    //grdMain.Rows[i].Cells[HProcNameCol].Value = oTable.Rows[0]["工序名称"].ToString();
        //    //grdMain.Rows[i].Cells[HSourceIDCol].Value = oTable.Rows[0]["HSourceID"].ToString();
        //    //grdMain.Rows[i].Cells[HSourceNumberCol].Value = oTable.Rows[0]["资源代码"].ToString();
        //    //grdMain.Rows[i].Cells[HSourceNameCol].Value = oTable.Rows[0]["资源名称"].ToString();
        //    //grdMain.Rows[i].Cells[HTimesCol].Value = ClsPub.isDoule(oTable.Rows[0]["工时"]);
        //    grdMain.Rows[i].Cells[HQtyCol].Value = ClsPub.isDoule(oTable.Rows[0]["数量"]);
        //    //grdMain.Rows[i].Cells[HPriceCol].Value = ClsPub.isDoule(oTable.Rows[0]["工价"]);
        //    //grdMain.Rows[i].Cells[HPOOrderInterIDCol].Value = ClsPub.isLong(oTable.Rows[0]["采购订单主内码"]);
        //    //grdMain.Rows[i].Cells[HPOOrderEntryIDCol].Value = ClsPub.isLong(oTable.Rows[0]["采购订单子内码"]);
        //    //grdMain.Rows[i].Cells[HPOOrderBillNoCol].Value = ClsPub.isStrNull(oTable.Rows[0]["采购订单号"]);
        //    //grdMain.Rows[i].Cells[HSeOrderInterIDCol].Value = ClsPub.isLong(oTable.Rows[0]["销售订单主内码"]);
        //    //grdMain.Rows[i].Cells[HSeOrderEntryIDCol].Value = ClsPub.isLong(oTable.Rows[0]["销售订单子内码"]);
        //    //grdMain.Rows[i].Cells[HSeOrderBillNoCol].Value = ClsPub.isStrNull(oTable.Rows[0]["销售订单号"]);
        //}
        //#endregion
    }
}