using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using SQLHelper; using DBUtility; namespace BLL { public partial class Xt_AccountPeriod : Form { private int HYearCol = 0; private int HPeriodCol = 0; public DBUtility.frm_B_BillQueryCondition_New frmCondition; const string ViewName = "h_v_Xt_AccountPeriodList"; const string ModName = "会计期间"; public Pub_Class.ClsPub.Enum_InputModeGroup InputMode; //录入状态标志 public long HItemID;//项目ID public int HYear; public int HPeriod; public long HItemGroupID; ClsCN oCn = new ClsCN(); ClsXt_AccountPeriod oAccPeriod = new ClsXt_AccountPeriod(); ClsXt_AccountPeriodHlp oAccPeriodHlp = new ClsXt_AccountPeriodHlp(); TreeNode CurNode = new TreeNode(); ClsPub oPub = new ClsPub(); public Xt_AccountPeriod() { InitializeComponent(); } //以下年份基本不需要修改 #region 固定年份 //窗体加载 private void Xt_AccountPeriod_Load(object sender, EventArgs e) { frmCondition = new DBUtility.frm_B_BillQueryCondition_New(); LoadTree(); initGrid(); InputMode = Pub_Class.ClsPub.Enum_InputModeGroup.InputMode_View; RefreshTool(); } //加载子结点 private void LoadAllNodes(TreeNode sNode) { if (sNode != null) { try { sNode.Nodes.Clear(); DataSet Ds = oCn.RunProcReturn("select distinct HYear from Xt_AccountPeriod order by HYear ", "Xt_AccountPeriod"); for (int i = 0; i < Ds.Tables[0].Rows.Count; i++) { TreeNode oNode = sNode.Nodes.Add("T" + Ds.Tables[0].Rows[i]["HYear"].ToString(), Ds.Tables[0].Rows[i]["HYear"].ToString(), 0, 1); } sNode.Expand(); } catch (Exception e) { MessageBox.Show("加载子项目失败!" + e.Message, "提示"); } } } //加载树形 private void LoadTree() { try { tv.Nodes.Clear(); tv.ImageList = imageList1; TreeNode sNode = tv.Nodes.Add("T0", this.Text, 0, 1); LoadAllNodes(sNode); } catch (Exception e ) { MessageBox.Show("加载树型失败!" + e.Message, "提示"); } } private bool AllowSave() { if (ClsPub.isInt(txtHYear.Text.Trim()) == 0) { MessageBox.Show("年份不能为空!", "提示"); return false; } if (ClsPub.isInt(txtHPeriod.Text.Trim()) == 0) { MessageBox.Show("月份不能为空!", "提示"); return false; } //是否重复年份 if (InputMode == Pub_Class.ClsPub.Enum_InputModeGroup.InputMode_AddNew) { if (oAccPeriod.HavSameNumber(ClsPub.isInt(txtHYear.Text.Trim()),ClsPub.isInt(txtHPeriod.Text.Trim()))) { MessageBox.Show("已存在相同的会计年月!", "提示"); return false; } } return true; } //新增 private void AddNew() { InputMode = Pub_Class.ClsPub.Enum_InputModeGroup.InputMode_AddNew; Init(); } //退出模块 private void tc_Click(object sender, EventArgs e) { this.Close(); } //刷新 private void xs_Click(object sender, EventArgs e) { Display(); } //查询 private void cx_Click(object sender, EventArgs e) { frmCondition = new DBUtility.frm_B_BillQueryCondition_New(); frmCondition.Tag = ""; frmCondition.ViewName = ViewName; frmCondition.ModName = this.Name; frmCondition.ShowDialog(); if (frmCondition.Tag.ToString() == "OK") { Display(); } } //得到对应列 private Int32 Fun_GetCol(string sCol) { return DBUtility.Gy_BaseFun.Fun_GetCol(sCol, grdMain); } //刷新TOOLBAR private void RefreshTool() { if (InputMode == Pub_Class.ClsPub.Enum_InputModeGroup.InputMode_View) { stTab.SelectedIndex = 0; stTab.TabPages.Remove(this.tabPage2); stTab.TabPages.Remove(this.tabPage1); stTab.TabPages.Add(this.tabPage1); grdMain.Enabled = true; tc.Enabled = true; yl.Enabled = true; xz.Enabled = true; xg.Enabled = true; sc.Enabled = true; xs.Enabled = true; cx.Enabled = true; } else { stTab.SelectedIndex = 1; stTab.TabPages.Remove(this.tabPage1); stTab.TabPages.Remove(this.tabPage2); stTab.TabPages.Add(this.tabPage2); stTab.TabPages[0].Hide(); grdMain.Enabled = false; tc.Enabled = true; yl.Enabled = false; xz.Enabled = false; xg.Enabled = false; sc.Enabled = false; xs.Enabled = false; cx.Enabled = false; } } //删除项目 public void Delete() { if (DBUtility.Gy_BaseFun.AllowRow(grdMain)) { if (MessageBox.Show("确定要删除当前项目?", "提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Question) == DialogResult.OK) { //得到HITEMID int sYear; int sPeriod; sYear = DBUtility.ClsPub.isInt(grdMain.Rows[grdMain.CurrentRow.Index].Cells[HYearCol].Value); sPeriod = DBUtility.ClsPub.isInt(grdMain.Rows[grdMain.CurrentRow.Index].Cells[HPeriodCol].Value); //判断存在性 if (oAccPeriodHlp.GetInfoByID(sYear,sPeriod)) { if (oAccPeriod.DeleteByID(sYear, sPeriod)) { MessageBox.Show("删除项目成功!", "提示"); Display(); } else MessageBox.Show("删除项目成功!", "提示"); } } } } //取消按钮 private void cmdCancel_Click(object sender, EventArgs e) { InputMode = Pub_Class.ClsPub.Enum_InputModeGroup.InputMode_View; RefreshTool(); } //保存按钮 private void cmdOK_Click(object sender, EventArgs e) { if (!WriteClass()) return; if (Save()) { MessageBox.Show("保存完毕!", "提示"); } else { MessageBox.Show("保存失败!", "提示"); } if (InputMode == Pub_Class.ClsPub.Enum_InputModeGroup.InputMode_Modify) { InputMode = Pub_Class.ClsPub.Enum_InputModeGroup.InputMode_View; RefreshTool(); } } //树型 单击 private void tv_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e) { CurNode = e.Node; if (CurNode != null) { frmCondition.SqlStr = ""; //找到选中结点 Display(); } } //删除 private void sc_Click(object sender, EventArgs e) { Delete(); } //新增按钮 private void xz_Click(object sender, EventArgs e) { InputMode = Pub_Class.ClsPub.Enum_InputModeGroup.InputMode_AddNew; Init(); } //修改 private void Modify() { if (DBUtility.Gy_BaseFun.AllowRow(grdMain)) { InputMode = Pub_Class.ClsPub.Enum_InputModeGroup.InputMode_Modify; RefreshTool(); Init(); } } //修改按钮 private void xg_Click(object sender, EventArgs e) { Modify(); } //选中行是否正常 //private bool AllowRow() //{ // if (grdMain.Row >= grdMain.FixedRows && grdMain.Row <= grdMain.Rows - 1) // return true; // else // return false; //} //初始化界面 private bool Init() { int sYear; int sPeriod; if (InputMode == Pub_Class.ClsPub.Enum_InputModeGroup.InputMode_AddNew) { Sub_Clear(); RefreshTool(); return true; } else if (InputMode == Pub_Class.ClsPub.Enum_InputModeGroup.InputMode_Modify) { //得到HITEMID sYear = DBUtility.ClsPub.isInt(grdMain.Rows[grdMain.CurrentRow.Index].Cells[HYearCol].Value); sPeriod = DBUtility.ClsPub.isInt(grdMain.Rows[grdMain.CurrentRow.Index].Cells[HPeriodCol].Value); //检查是否存在 if (oAccPeriodHlp.GetInfoByID(sYear,sPeriod)) { ShowData(sYear,sPeriod); txtHYear.Focus(); return true; } else { MessageBox.Show("您选择的项目已经不存在!", "提示"); return false; } } else { return false; } } //保存 private bool Save() { if (InputMode == Pub_Class.ClsPub.Enum_InputModeGroup.InputMode_AddNew) { if (oAccPeriod.AddNew()) { Init(); } else { return false; } Display(); } if (InputMode == Pub_Class.ClsPub.Enum_InputModeGroup.InputMode_Modify) { if (!oAccPeriod.ModifyByID(HYear,HPeriod)) { return false; } Display(); } return true; } //保存列宽 private void bclk_Click(object sender, EventArgs e) { DBUtility.ClsPub.SaveGridView(grdMain, this.Name, DBUtility.ClsPub.AppPath); } //默认列宽 private void mrlk_Click(object sender, EventArgs e) { DBUtility.ClsPub.DefaultGridView(grdMain); //参数解释 开始列 ,结束列,是否以最大列宽为准,最小列宽 DBUtility.ClsPub.SaveGridView(grdMain, this.Name, DBUtility.ClsPub.AppPath); } //时间控件 private void timer1_Tick(object sender, EventArgs e) { timer1.Enabled = false; Display(); } //双击GRID private void grdMain_DblClick(object sender, EventArgs e) { Modify(); } //初始化GRID private void initGrid() { DBUtility.Gy_BaseFun.initGrid(grdMain); } //显示列表 private void Display() { ClsCN SubCn = new ClsCN(); DataSet DSet ; string sSql = ""; string sWhere = ""; long HParentID = 0; if (CurNode.Name.Trim().Length == 0) { HParentID = 0; } else { HParentID = ClsPub.isLong(CurNode.Name.Trim().Substring(1, CurNode.Name.Trim().Length - 1)); } //过滤条件 if (frmCondition.SqlStr.Trim().Length == 0) { if (HParentID == 0) { sSql = "Select * from " + ViewName + " order by 会计年份,会计月份"; } else { sSql = "Select * from " + ViewName + " where 会计年份=" + HParentID.ToString() + " order by 会计年份,会计月份"; } } else { sSql = frmCondition.SqlStr + sWhere + " order by 会计年份,会计月份"; } //执行SQL DSet = SubCn.RunProcReturn(sSql, ViewName); //生成首行标题 // if (DSet == null) { MessageBox.Show("显示失败!原因:" + DBUtility.ClsPub.sExeReturnInfo); return; } grdMain.DataSource = DSet.Tables[0].DefaultView; //加载列宽 DBUtility.Gy_BaseFun.DisplayGrid(grdMain, this.Name); // HYearCol = Fun_GetCol("会计年份"); HPeriodCol = Fun_GetCol("会计月份"); } #endregion #region 类的读写 //读取类 到 控件 private void ShowData(int sYear,int sPeriod) { ClsXt_AccountPeriodHlp oUnGpHlp = new ClsXt_AccountPeriodHlp(); if (oAccPeriodHlp.GetInfoByID(sYear,sPeriod)) { txtHYear.Text = oAccPeriodHlp.HYear.ToString(); txtHPeriod.Text = oAccPeriodHlp.HPeriod.ToString(); dtpHBeginDate.Value =ClsPub.isDate(oAccPeriodHlp.HBeginDate); dtpHEndDate.Value = ClsPub.isDate(oAccPeriodHlp.HEndDate); if (oAccPeriodHlp.HEndFlag) chkHEndflag.Checked = true; else chkHEndflag.Checked = false; HYear = oAccPeriodHlp.HYear; HPeriod = oAccPeriodHlp.HPeriod; } } //写入类 从控件 private bool WriteClass() { //判断是否允许 保存 if (!AllowSave()) { return false; } //检查父级是否存在 //写入信息 // oAccPeriod.HYear = ClsPub.isInt(txtHYear.Text.Trim()); oAccPeriod.HPeriod = ClsPub.isInt(txtHPeriod.Text.Trim()); oAccPeriod.HBeginDate = dtpHBeginDate.Value.ToShortDateString(); oAccPeriod.HEndDate = dtpHEndDate.Value.ToShortDateString(); oAccPeriod.HEndFlag = false; return true; } #endregion #region 界面控件处理 //新增时清空信息 private void Sub_Clear() { //清空界面控件 for 控件 foreach (Control ct in tabPage2.Controls) { switch (ct.GetType().Name) { case "ListBox": ((ListBox)ct).Items.Clear(); break; case "CheckBox": ((CheckBox)ct).Checked = false; break; case "RadioButton": break; case "ComboBox": ((ComboBox)ct).SelectedIndex = 0; break; case "TextBox": ((TextBox)ct).Text = ""; break; case "DateTimePicker": ((DateTimePicker)ct).Value = DateTime.Today; break; default: break; } } // HItemID = 0; txtHYear.Focus(); } private void Sub_CloseAcc() { SQLHelper.ClsCN oCn = new SQLHelper.ClsCN(); DataSet Ds; //获取当前会计期间 Ds = oCn.RunProcReturn("select top 1 HYear,HPeriod from xt_AccountPeriod Where HEndFlag=0 order by HYear,HPeriod ", "Xt_AccountPeriod"); if(Ds==null) { MessageBox.Show("获取当前会计期间出错:" + DBUtility.ClsPub.sErrInfo); return; } else { ClsPub.CurYear = DBUtility.ClsPub.isInt(Ds.Tables[0].Rows[0]["HYear"]); ClsPub.CurPeriod = DBUtility.ClsPub.isInt(Ds.Tables[0].Rows[0]["HPeriod"]); } // if (MessageBox.Show("确定要结账" + ClsPub.CurYear + "-" + ClsPub.CurPeriod + "期间?", "提示", MessageBoxButtons.OKCancel) == DialogResult.Cancel) { return; } //-----------判断所有单据是否已经审核 Ds = oCn.RunProcReturn("exec h_p_Xt_AccountPeriod_JZCheck " + ClsPub.CurYear + "," + ClsPub.CurPeriod, "h_p_Xt_AccountPeriod_JZCheck", ref DBUtility.ClsPub.sErrInfo); if (Ds == null) { MessageBox.Show("判断所有单据是否已经审核出错:" + DBUtility.ClsPub.sErrInfo); return; } if (Ds.Tables[0].Rows.Count != 0) { string s = ""; for (int i = 0; i < Ds.Tables[0].Rows.Count; i++) { s = s + Ds.Tables[0].Rows[i][0].ToString() + "\r\n"; } s = s + "存在错误信息,不允许结账!"; MessageBox.Show(s); return; } // if (oAccPeriod.CloseAcc()) { MessageBox.Show("结账完毕"); } else { MessageBox.Show("结账失败"); } Display(); } private void Sub_UnCloseAcc() { if (MessageBox.Show("确定要反结账?", "提示", MessageBoxButtons.OKCancel) == DialogResult.Cancel) { return; } if (oAccPeriod.UnCloseAcc()) { MessageBox.Show("反结账完毕"); } else { MessageBox.Show("反结账失败"); } Display(); } //---------------------------------------- private void jz_Click(object sender, EventArgs e) { Sub_CloseAcc(); } private void fjz_Click(object sender, EventArgs e) { Sub_UnCloseAcc(); } #endregion private void grdMain_DoubleClick(object sender, EventArgs e) { Modify(); } } }