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();
|
}
|
|
|
|
|
|
|
|
}
|
}
|