You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
254 lines
10 KiB
254 lines
10 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using System.Xml.Linq;
|
|
using System.IO;
|
|
using System.Configuration;
|
|
using ManagementSystem.Utility;
|
|
|
|
namespace ManagementSystem
|
|
{
|
|
public partial class XMLSetting : Form
|
|
{
|
|
//變數宣告
|
|
public string strOwnerForm = ""; //設定表單的擁有者
|
|
public string strXMLName = ""; //XML的名稱
|
|
public string strAccountingBookID = ""; //取得作用中的帳本
|
|
|
|
public XMLSetting()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
#region 自定義程式
|
|
public void ReturnAccountList(string strAccountList)
|
|
{
|
|
string[] strAccList = strAccountList.Split('|');
|
|
dgvDataMaintain.Rows[Convert.ToInt32(strAccList[0])].Cells["cAccountingSubID"].Value = strAccList[1].ToString();
|
|
dgvDataMaintain.Rows[Convert.ToInt32(strAccList[0])].Cells["cAccountingSubName"].Value = strAccList[2].ToString();
|
|
}
|
|
|
|
private void CleanForm()
|
|
{
|
|
dgvDataMaintain.Rows.Clear();
|
|
}
|
|
|
|
#endregion
|
|
|
|
#region 事件觸發及問題處理
|
|
private void btnCancle_Click(object sender, EventArgs e)
|
|
{
|
|
this.Close();
|
|
}
|
|
|
|
private void dgvDataMaintain_CellContentClick(object sender, DataGridViewCellEventArgs e)
|
|
{
|
|
//當GridView中的Button被按下
|
|
var SenderGrid = (DataGridView)sender;
|
|
if (SenderGrid.Columns[e.ColumnIndex] is DataGridViewButtonColumn && e.RowIndex >= 0)
|
|
{
|
|
PickAccountingSubject pkItemForm = new PickAccountingSubject();
|
|
pkItemForm.intIndex = e.RowIndex;
|
|
pkItemForm.strOwnerForm = "XMLSetting";
|
|
pkItemForm.Owner = this;
|
|
pkItemForm.StartPosition = FormStartPosition.CenterParent;
|
|
pkItemForm.ShowDialog();
|
|
}
|
|
}
|
|
|
|
private void dgvDataMaintain_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
|
|
{
|
|
DataGridViewComboBoxCell cbCell = (DataGridViewComboBoxCell)dgvDataMaintain.Rows[e.RowIndex].Cells["cDC"];
|
|
if (cbCell.Items.Count == 0)
|
|
{
|
|
cbCell.DataSource = UtilityClass.GetSystemArgument("DCClass", "zh-TW").Tables["Arguments"];
|
|
cbCell.DisplayMember = "ArgumentValue";
|
|
cbCell.ValueMember = "ArgumentID";
|
|
}
|
|
}
|
|
|
|
private void dgvDataMaintain_CellEnter(object sender, DataGridViewCellEventArgs e)
|
|
{
|
|
DataGridViewComboBoxCell cbCell = (DataGridViewComboBoxCell)dgvDataMaintain.Rows[e.RowIndex].Cells["cDC"];
|
|
if (cbCell.Items.Count == 0)
|
|
{
|
|
cbCell.DataSource = UtilityClass.GetSystemArgument("DCClass", "zh-TW").Tables["Arguments"];
|
|
cbCell.DisplayMember = "ArgumentValue";
|
|
cbCell.ValueMember = "ArgumentID";
|
|
}
|
|
}
|
|
|
|
private void btnClean_Click(object sender, EventArgs e)
|
|
{
|
|
CleanForm();
|
|
}
|
|
|
|
private void dgvDataMaintain_RowValidating(object sender, DataGridViewCellCancelEventArgs e)
|
|
{
|
|
//宣告物件
|
|
string strErrorMsg = "";
|
|
string strDC = (string)dgvDataMaintain.Rows[e.RowIndex].Cells["cDC"].Value;
|
|
if (!dgvDataMaintain.Rows[e.RowIndex].IsNewRow)
|
|
{
|
|
if ((string.IsNullOrEmpty(strDC.Trim()) ? "" : strDC) == "")
|
|
{
|
|
strErrorMsg = "請選擇借貸方";
|
|
}
|
|
}
|
|
|
|
if (strErrorMsg != "")
|
|
{
|
|
dgvDataMaintain.Rows[e.RowIndex].ErrorText = strErrorMsg;
|
|
e.Cancel = true;
|
|
}
|
|
}
|
|
|
|
private void dgvDataMaintain_RowValidated(object sender, DataGridViewCellEventArgs e)
|
|
{
|
|
dgvDataMaintain.Rows[e.RowIndex].ErrorText = "";
|
|
}
|
|
|
|
private void btnConfirm_Click(object sender, EventArgs e)
|
|
{
|
|
try
|
|
{
|
|
string strXMLPath = ConfigurationManager.AppSettings["XMLFilePath"].ToString();
|
|
|
|
XElement xmlRoot = new XElement("Root");
|
|
foreach (DataGridViewRow drData in dgvDataMaintain.Rows)
|
|
{
|
|
if (!drData.IsNewRow)
|
|
{
|
|
XElement xmlContent = new XElement("Accounting");
|
|
xmlRoot.Add(xmlContent);
|
|
XElement xmlSub = new XElement("SubAccounting", drData.Cells[1].Value.ToString());
|
|
xmlSub.Add(new XAttribute("SubName", drData.Cells[2].Value.ToString()));
|
|
xmlSub.Add(new XAttribute("DC", drData.Cells[3].Value.ToString()));
|
|
xmlContent.Add(xmlSub);
|
|
|
|
}
|
|
}
|
|
if (!File.Exists(strXMLPath))
|
|
{
|
|
UtilityClass.CreateDir(strXMLPath);
|
|
}
|
|
xmlRoot.Save(strXMLPath + strXMLName + ".xml");
|
|
MessageBox.Show("設定完成", "提示");
|
|
this.Close();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show("設定錯誤", "提示");
|
|
ErrorHandler.WriteErrorLog("XMLSetting.cs", ex);
|
|
this.Close();
|
|
}
|
|
}
|
|
|
|
private void XMLSetting_Load(object sender, EventArgs e)
|
|
{
|
|
strAccountingBookID = MainForm.strAccountingBookID;
|
|
string strXMLPath = ConfigurationManager.AppSettings["XMLFilePath"].ToString() + strXMLName + ".xml";
|
|
if (File.Exists(strXMLPath))
|
|
{
|
|
XDocument xmlContent = XDocument.Load(strXMLPath);
|
|
|
|
//foreach (var xmlData in xmlContent.Descendants("Accounting"))
|
|
foreach (XElement xmlData in xmlContent.Descendants("Accounting"))
|
|
{
|
|
DataGridViewRow dgvRow = new DataGridViewRow();
|
|
dgvRow.CreateCells(dgvDataMaintain);
|
|
dgvRow.Cells[1].Value = xmlData.Element("SubAccounting").Value.ToString();
|
|
dgvRow.Cells[2].Value = xmlData.Element("SubAccounting").Attribute("SubName").Value.ToString();
|
|
dgvRow.Cells[3].Value = xmlData.Element("SubAccounting").Attribute("DC").Value.ToString();
|
|
dgvDataMaintain.Rows.Add(dgvRow);
|
|
}
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
private void dgvDataMaintain_CellEndEdit(object sender, DataGridViewCellEventArgs e)
|
|
{
|
|
//物件宣告
|
|
string strAccountingSubID = "";
|
|
string strAccountingSubName = "";
|
|
//Cell[0] : 選窗Button
|
|
//Cell[1] : 科目代碼(cAccountingSubID)
|
|
//Cell[2] : 科目名稱(cAccountingSubName)
|
|
//Cell[3] : 摘要(cMemo)
|
|
//Cell[4] : 借方金額(cDebit)
|
|
//Cell[5] : 貸方金額(cCredit)
|
|
|
|
//科目代碼變動
|
|
if (dgvDataMaintain.Columns[e.ColumnIndex].Name.ToString() == "cAccountingSubID")
|
|
{
|
|
strAccountingSubID = (string)dgvDataMaintain.Rows[e.RowIndex].Cells["cAccountingSubID"].Value;
|
|
if (string.IsNullOrEmpty(strAccountingSubID))
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
string strCheckSQL = string.Format("Select * From OTB_FNC_AccountingSubjects Where AccountingSubID = '{0}'", strAccountingSubID);
|
|
if (UtilityClass.IsExist(strCheckSQL))
|
|
{
|
|
strAccountingSubName = UtilityClass.GetAccountingSubjectByID(strAccountingSubID, strAccountingBookID).Rows[0]["AccountingSubName"].ToString();
|
|
dgvDataMaintain.Rows[e.RowIndex].Cells["cAccountingSubName"].Value = strAccountingSubName;
|
|
}
|
|
else
|
|
{
|
|
PickAccountingSubject pkItemForm = new PickAccountingSubject();
|
|
pkItemForm.txtAccountingSubID.Text = strAccountingSubID;
|
|
pkItemForm.intIndex = e.RowIndex;
|
|
pkItemForm.strOwnerForm = "XMLSetting";
|
|
pkItemForm.Owner = this;
|
|
pkItemForm.StartPosition = FormStartPosition.CenterParent;
|
|
pkItemForm.ShowDialog();
|
|
}
|
|
}
|
|
}
|
|
|
|
//科目名稱變動
|
|
if (dgvDataMaintain.Columns[e.ColumnIndex].Name.ToString() == "cAccountingSubName")
|
|
{
|
|
strAccountingSubName = (string)dgvDataMaintain.Rows[e.RowIndex].Cells["cAccountingSubName"].Value;
|
|
if (string.IsNullOrEmpty(strAccountingSubName))
|
|
{
|
|
return;
|
|
}
|
|
else
|
|
{
|
|
string strCheckSQL = string.Format("Select * From OTB_FNC_AccountingSubjects Where AccountingSubName = '{0}'", strAccountingSubName);
|
|
if (UtilityClass.IsExist(strCheckSQL))
|
|
{
|
|
strAccountingSubID = UtilityClass.GetAccountingSubjectByName(strAccountingSubName).Rows[0]["AccountingSubID"].ToString();
|
|
dgvDataMaintain.Rows[e.RowIndex].Cells["cAccountingSubID"].Value = strAccountingSubID;
|
|
}
|
|
else
|
|
{
|
|
PickAccountingSubject pkItemForm = new PickAccountingSubject();
|
|
pkItemForm.txtAccountingSubName.Text = strAccountingSubName;
|
|
pkItemForm.intIndex = e.RowIndex;
|
|
pkItemForm.strOwnerForm = "XMLSetting";
|
|
pkItemForm.Owner = this;
|
|
pkItemForm.StartPosition = FormStartPosition.CenterParent;
|
|
pkItemForm.ShowDialog();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|