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.
419 lines
17 KiB
419 lines
17 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.Data.Sql;
|
|
using System.Data.SqlClient;
|
|
using ManagementSystem.Utility;
|
|
|
|
namespace ManagementSystem
|
|
{
|
|
public partial class CashFlowForecastEdit : Form
|
|
{
|
|
//程式內共用物件
|
|
public string strFrmStatus = ""; //表單狀態
|
|
public string strPKey = ""; //程式內的Key值
|
|
public string strOwnerForm = ""; //呼叫的Form Name
|
|
public string strKey = ""; //程式內加密的Key值
|
|
public string strActiveUserID = ""; //取得登入作用的使用者帳號
|
|
public string strAccountingBookID = ""; //取得作用中的帳本
|
|
private string strInputType = "Single"; //輸入模式 Single:單次 ;Cycle_T:次數循環 ;Cycle_D:日期區間循環
|
|
SqlConnection sqlConn = UtilityClass.GetConn(MainForm.strAccountingBookID);
|
|
SqlTransaction sqlTran;
|
|
SqlDataAdapter sqlAdapter = new SqlDataAdapter();
|
|
SqlCommand sqlCmd = new SqlCommand();
|
|
|
|
public CashFlowForecastEdit()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
#region 自定義程式
|
|
private void SetupStatus() //畫面載入設定
|
|
{
|
|
try
|
|
{
|
|
strActiveUserID = MainForm.strActiveUserID;
|
|
strAccountingBookID = MainForm.strAccountingBookID;
|
|
strKey = MainForm.strKey;
|
|
dpStartDate.Enabled = false;
|
|
dpForcastDate.Enabled = true;
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
ErrorHandler.WriteErrorLog("CashFlowForecastEdit.cs", ex);
|
|
}
|
|
}
|
|
|
|
private void CleanForm() //清除畫面資料
|
|
{
|
|
rbForecastType.Checked = true;
|
|
rbForecastType1.Checked = false;
|
|
dpStartDate.Text = "";
|
|
txtCycleTimes.Text = "";
|
|
dpForcastDate.Text = "";
|
|
txtCustomerName.Text = "";
|
|
txtCustomerID.Text = "";
|
|
txtProjectName.Text = "";
|
|
txtProjectNumber.Text = "";
|
|
txtMemo.Text = "";
|
|
txtInvoiceNo.Text = "";
|
|
txtForecastIncome.Text = "";
|
|
txtForecastExpand.Text = "";
|
|
}
|
|
|
|
private void HindObject() //依照新增的狀態顯示對應物件
|
|
{
|
|
if (rbForecastType.Checked)
|
|
{
|
|
dpStartDate.Enabled = false;
|
|
txtCycleTimes.Enabled = false;
|
|
dpForcastDate.Enabled = true;
|
|
txtInvoiceNo.Enabled = true;
|
|
dpEndDate.Enabled = false;
|
|
strInputType = "Single";
|
|
dpForcastDate.Focus();
|
|
}
|
|
else if (rbForecastType1.Checked)
|
|
{
|
|
dpStartDate.Enabled = true;
|
|
txtCycleTimes.Enabled = true;
|
|
dpForcastDate.Enabled = false;
|
|
txtInvoiceNo.Enabled = false;
|
|
dpEndDate.Enabled = false;
|
|
strInputType = "Cycle_T";
|
|
dpStartDate.Focus();
|
|
}
|
|
else if(rbForecastType2.Checked)
|
|
{
|
|
dpStartDate.Enabled = true;
|
|
txtCycleTimes.Enabled = false;
|
|
dpForcastDate.Enabled = false;
|
|
txtInvoiceNo.Enabled = false;
|
|
dpEndDate.Enabled = true;
|
|
strInputType = "Cycle_D";
|
|
dpStartDate.Focus();
|
|
}
|
|
}
|
|
|
|
private string CheckForm(string strType) //循環輸入檢查
|
|
{
|
|
string strReturnMessage = "";
|
|
try
|
|
{
|
|
|
|
if (txtMemo.Text.Trim() == "")
|
|
{
|
|
strReturnMessage = "備註不得為空!";
|
|
txtMemo.Focus();
|
|
}
|
|
|
|
if (txtForecastIncome.Text.Trim() != "" && txtForecastExpand.Text.Trim() != "")
|
|
{
|
|
strReturnMessage = "預估收入及預估支出不得均有值!";
|
|
txtForecastIncome.Focus();
|
|
}
|
|
|
|
if (txtForecastIncome.Text.Trim() == "" && txtForecastExpand.Text.Trim() == "")
|
|
{
|
|
strReturnMessage = "預估收入及預估支出不得均為空!";
|
|
txtForecastIncome.Focus();
|
|
}
|
|
else
|
|
{
|
|
if (!UtilityClass.IsNumber(txtForecastIncome.Text.Trim().Replace(",", "")) && txtForecastIncome.Text.Trim() != "")
|
|
{
|
|
strReturnMessage = "預估收入數值格式有誤!";
|
|
txtForecastIncome.Focus();
|
|
}
|
|
|
|
if (!UtilityClass.IsNumber(txtForecastExpand.Text.Trim().Replace(",", "")) && txtForecastExpand.Text.Trim() != "")
|
|
{
|
|
strReturnMessage = "預估支出數值格式有誤!";
|
|
txtForecastExpand.Focus();
|
|
}
|
|
}
|
|
|
|
if (strType.ToUpper().Substring(0,5) == "CYCLE")
|
|
{
|
|
if (dpStartDate.Text.Trim() == "")
|
|
{
|
|
strReturnMessage = "開始計算日期不得為空!";
|
|
dpStartDate.Focus();
|
|
}
|
|
|
|
if (!UtilityClass.IsDate(dpStartDate.Text.Trim()))
|
|
{
|
|
strReturnMessage = "開始計算日期格式有錯!";
|
|
dpStartDate.Focus();
|
|
}
|
|
}
|
|
|
|
if (strType.ToUpper() == "CYCLE_T") //次數循環模式驗證
|
|
{
|
|
if (!UtilityClass.IsNumber(txtCycleTimes.Text.Trim()))
|
|
{
|
|
strReturnMessage = "周期次數的值必需為數字!";
|
|
txtCycleTimes.Focus();
|
|
}
|
|
}
|
|
else if(strType.ToUpper() == "CYCLE_D") //日期區間循環模式驗證
|
|
{
|
|
if (dpEndDate.Text.Trim() == "")
|
|
{
|
|
strReturnMessage = "結束計算日期不得為空!";
|
|
dpEndDate.Focus();
|
|
}
|
|
|
|
if (!UtilityClass.IsDate(dpEndDate.Text.Trim()))
|
|
{
|
|
strReturnMessage = "結束計算日期格式有錯!";
|
|
dpEndDate.Focus();
|
|
}
|
|
}
|
|
|
|
return strReturnMessage;
|
|
}
|
|
catch
|
|
{
|
|
return "檢測有誤!";
|
|
}
|
|
}
|
|
|
|
private void AddEven() //新增事件
|
|
{
|
|
try
|
|
{
|
|
//宣告物件
|
|
string strIncome = "";
|
|
string strExpand = "";
|
|
|
|
StringBuilder strSQL = new StringBuilder();
|
|
|
|
switch (strInputType.ToUpper())
|
|
{
|
|
case "SINGLE": //單次執行模式
|
|
strSQL.Clear();
|
|
strSQL.Append("Insert Into OTB_FNC_CashFlowForecast(AccountingBookID, ItemNo, ForecastDate, ForecastIncome, ForecastExpand, CustomerName, Memo, InvoiceNo, ProjectNumber, ProjectCName ,CreateDate, CreateUser, ModifyDate, ModifyUser) Values ('");
|
|
strSQL.Append(strAccountingBookID + "',NEWID(),");
|
|
strSQL.Append("'" + dpForcastDate.Text.Trim() + "',");
|
|
strIncome = txtForecastIncome.Text.Trim();
|
|
strSQL.Append(string.IsNullOrEmpty(strIncome) ? "''," : "'" + UtilityClass.EncryptDES(strIncome, strKey) + "',");
|
|
strExpand = (string)txtForecastExpand.Text.Trim();
|
|
strSQL.Append(string.IsNullOrEmpty(strExpand) ? "''," : "'" + UtilityClass.EncryptDES(strExpand, strKey) + "',");
|
|
strSQL.Append("'" + txtCustomerName.Text.Trim() + "',");
|
|
strSQL.Append("'" + txtMemo.Text.Trim() + "',");
|
|
strSQL.Append("'" + txtInvoiceNo.Text.Trim() + "',");
|
|
strSQL.Append("'" + txtProjectNumber.Text.Trim() + "',");
|
|
strSQL.Append("'" + txtProjectName.Text.Trim() + "',");
|
|
strSQL.Append("Getdate(),'" + strActiveUserID + "',Getdate(),'" + strActiveUserID + "'); ");
|
|
break;
|
|
|
|
case "CYCLE_T": //循環執行模式(次數)
|
|
strSQL.Clear();
|
|
DateTime dtCountDate = Convert.ToDateTime(dpStartDate.Text);
|
|
DateTime dtPayDate = DateTime.Now;
|
|
for (int intTimes = 0; intTimes <= Convert.ToInt32(txtCycleTimes.Text.ToString()); intTimes++)
|
|
{
|
|
//計算付款日期 Start
|
|
dtPayDate = dtCountDate.AddMonths(intTimes);
|
|
//計算付款日期 End
|
|
strSQL.Append("Insert Into OTB_FNC_CashFlowForecast(AccountingBookID, ItemNo, ForecastDate, ForecastIncome, ForecastExpand, CustomerName, Memo, ProjectNumber, ProjectCName ,CreateDate, CreateUser, ModifyDate, ModifyUser) Values ('");
|
|
strSQL.Append(strAccountingBookID + "',NEWID(),");
|
|
strSQL.Append("'" + dtPayDate.ToShortDateString() + "',");
|
|
strIncome = txtForecastIncome.Text.Trim();
|
|
strSQL.Append(string.IsNullOrEmpty(strIncome) ? "''," : "'" + UtilityClass.EncryptDES(strIncome, strKey) + "',");
|
|
strExpand = (string)txtForecastExpand.Text.Trim();
|
|
strSQL.Append(string.IsNullOrEmpty(strExpand) ? "''," : "'" + UtilityClass.EncryptDES(strExpand, strKey) + "',");
|
|
strSQL.Append("'" + txtCustomerName.Text.Trim() + "',");
|
|
strSQL.Append("'" + txtMemo.Text.Trim() + "',");
|
|
strSQL.Append("'" + txtProjectNumber.Text.Trim() + "',");
|
|
strSQL.Append("'" + txtProjectName.Text.Trim() + "',");
|
|
strSQL.Append("Getdate(),'" + strActiveUserID + "',Getdate(),'" + strActiveUserID + "'); ");
|
|
}
|
|
break;
|
|
case "CYCLE_D": //循環執行模式(周期)
|
|
strSQL.Clear();
|
|
//DateTime dtStartDate = Convert.ToDateTime(dpStartDate.Text);
|
|
DateTime dtCountDate1 = Convert.ToDateTime(dpStartDate.Text);
|
|
DateTime dtEndDate = Convert.ToDateTime(dpEndDate.Text);
|
|
DateTime dtPayDate1 = Convert.ToDateTime(dpStartDate.Text);
|
|
int intAddCount = 0;
|
|
while (dtCountDate1 <= dtEndDate)
|
|
{
|
|
|
|
dtPayDate1 = Convert.ToDateTime(dpStartDate.Text).AddMonths(intAddCount);
|
|
|
|
strSQL.Append("Insert Into OTB_FNC_CashFlowForecast(AccountingBookID, ItemNo, ForecastDate, ForecastIncome, ForecastExpand, CustomerName, Memo, ProjectNumber, ProjectCName ,CreateDate, CreateUser, ModifyDate, ModifyUser) Values ('");
|
|
strSQL.Append(strAccountingBookID + "',NEWID(),");
|
|
strSQL.Append("'" + dtPayDate1.ToShortDateString() + "',");
|
|
strIncome = txtForecastIncome.Text.Trim();
|
|
strSQL.Append(string.IsNullOrEmpty(strIncome) ? "''," : "'" + UtilityClass.EncryptDES(strIncome, strKey) + "',");
|
|
strExpand = (string)txtForecastExpand.Text.Trim();
|
|
strSQL.Append(string.IsNullOrEmpty(strExpand) ? "''," : "'" + UtilityClass.EncryptDES(strExpand, strKey) + "',");
|
|
strSQL.Append("'" + txtCustomerName.Text.Trim() + "',");
|
|
strSQL.Append("'" + txtMemo.Text.Trim() + "',");
|
|
strSQL.Append("'" + txtProjectNumber.Text.Trim() + "',");
|
|
strSQL.Append("'" + txtProjectName.Text.Trim() + "',");
|
|
strSQL.Append("Getdate(),'" + strActiveUserID + "',Getdate(),'" + strActiveUserID + "'); ");
|
|
|
|
dtCountDate1 = dtCountDate1.AddMonths(1);
|
|
intAddCount += 1;
|
|
}
|
|
break;
|
|
}
|
|
|
|
using (SqlDataAdapter sqlAdapter = new SqlDataAdapter())
|
|
{
|
|
//添加參數
|
|
sqlAdapter.InsertCommand = new SqlCommand();
|
|
sqlAdapter.InsertCommand.Connection = sqlConn;
|
|
sqlAdapter.InsertCommand.CommandText = strSQL.ToString();
|
|
|
|
if (sqlConn.State == ConnectionState.Closed) //判斷連線狀態
|
|
{
|
|
sqlConn.Open();
|
|
}
|
|
|
|
sqlAdapter.InsertCommand.ExecuteNonQuery();
|
|
MessageBox.Show("資料新增成功", "提示");
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
MessageBox.Show("資料新增失敗", "提示");
|
|
ErrorHandler.WriteErrorLog("CashFlowForecastEdit.cs", ex);
|
|
}
|
|
}
|
|
|
|
public void ReturnCustomer(string[] strCustomerData) //回傳客戶資料
|
|
{
|
|
txtCustomerID.Text = strCustomerData[0].ToString();
|
|
txtCustomerName.Text = strCustomerData[1].ToString();
|
|
}
|
|
|
|
public void ReturnProjectInfo(string[] strProjectInfo) //回傳專案資料
|
|
{
|
|
txtProjectName.Text = strProjectInfo[1].ToString();
|
|
txtProjectNumber.Text = strProjectInfo[0].ToString();
|
|
}
|
|
#endregion
|
|
|
|
#region 事件觸發及問題處理
|
|
private void CashFlowForecastEdit_Load(object sender, EventArgs e)
|
|
{
|
|
SetupStatus();
|
|
}
|
|
|
|
private void btnClose_Click(object sender, EventArgs e)
|
|
{
|
|
this.Close();
|
|
}
|
|
|
|
private void btnClean_Click(object sender, EventArgs e)
|
|
{
|
|
CleanForm();
|
|
}
|
|
|
|
private void txtForecastIncome_Enter(object sender, EventArgs e)
|
|
{
|
|
if (txtForecastIncome.Text.Trim() != "")
|
|
{
|
|
txtForecastIncome.Text = txtForecastIncome.Text.Trim().Replace(",", "");
|
|
}
|
|
}
|
|
|
|
private void txtForecastIncome_Leave(object sender, EventArgs e)
|
|
{
|
|
if (txtForecastIncome.Text.Trim() != "")
|
|
{
|
|
txtForecastIncome.Text = UtilityClass.MarkNumber(txtForecastIncome.Text.Trim());
|
|
}
|
|
}
|
|
|
|
private void txtForecastExpand_Enter(object sender, EventArgs e)
|
|
{
|
|
if (txtForecastExpand.Text.Trim() != "")
|
|
{
|
|
txtForecastExpand.Text = txtForecastExpand.Text.Trim().Replace(",", "");
|
|
}
|
|
}
|
|
|
|
private void txtForecastExpand_Leave(object sender, EventArgs e)
|
|
{
|
|
if (txtForecastExpand.Text.Trim() != "")
|
|
{
|
|
txtForecastExpand.Text = UtilityClass.MarkNumber(txtForecastExpand.Text.Trim());
|
|
}
|
|
}
|
|
|
|
private void btnSave_Click(object sender, EventArgs e)
|
|
{
|
|
string strCheckResult = CheckForm(strInputType);
|
|
if (strCheckResult == "")
|
|
{
|
|
switch (strFrmStatus.ToUpper())
|
|
{
|
|
case "ADD":
|
|
AddEven();
|
|
break;
|
|
}
|
|
((CashFlowForecast)this.Owner).SetupStatus(); //進行母Form查詢功能
|
|
this.Close();
|
|
}
|
|
else
|
|
{
|
|
MessageBox.Show(strCheckResult, "提示");
|
|
}
|
|
}
|
|
|
|
private void rbForecastType_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
HindObject();
|
|
}
|
|
|
|
private void rbForecastType1_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
HindObject();
|
|
}
|
|
|
|
private void rbForecastType2_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
HindObject();
|
|
}
|
|
|
|
private void btnGetCustomer_Click(object sender, EventArgs e)
|
|
{
|
|
PickCustomer pkItemForm = new PickCustomer();
|
|
pkItemForm.txtCustomerName.Text = txtCustomerName.Text.Trim();
|
|
pkItemForm.strOwnerForm = "CashFlowForecastEdit";
|
|
pkItemForm.Owner = this;
|
|
pkItemForm.StartPosition = FormStartPosition.CenterParent;
|
|
pkItemForm.ShowDialog();
|
|
}
|
|
|
|
private void btnGetProject_Click(object sender, EventArgs e)
|
|
{
|
|
PickProject pkItemForm = new PickProject();
|
|
pkItemForm.txtProjectName.Text = txtProjectName.Text.Trim();
|
|
pkItemForm.strOwnerForm = "CashFlowForecastEdit";
|
|
pkItemForm.Owner = this;
|
|
pkItemForm.StartPosition = FormStartPosition.CenterParent;
|
|
pkItemForm.ShowDialog();
|
|
}
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
}
|