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.
 
 

3480 lines
197 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 System.Configuration;
using System.Xml.Linq;
using System.IO;
using ManagementSystem.Utility;
namespace ManagementSystem
{
public partial class PayPlanManagement : Form
{
//程式內共用物件
public bool blIsAdded = true; //判斷分錄是否寫入成功
string strFrmStatus = ""; //表單狀態
string strActiveUserID = ""; //取得登入作用的使用者帳號
string strAccountingBookID = ""; //取得作用中的帳本
SqlConnection sqlConn = UtilityClass.GetConn(MainForm.strAccountingBookID);
SqlTransaction sqlTran;
SqlCommand sqlCmd = new SqlCommand();
DataSet sdInsurance = new System.Data.DataSet();
string strKey = ""; //程式內加密的Key值
public PayPlanManagement()
{
InitializeComponent();
}
#region 自定義程式
private void SetupStatus() //畫面載入設定
{
try
{
strActiveUserID = MainForm.strActiveUserID;
strAccountingBookID = MainForm.strAccountingBookID;
strKey = MainForm.strKey;
//設定畫面初始狀態
StatusChange("NONE");
}
catch (Exception ex)
{
ErrorHandler.WriteErrorLog("PayPlanManagement.cs", ex);
}
}
public void StatusChange(string strStatus) //變更主畫面狀態
{
try
{
switch (strStatus.ToUpper())
{
case "NONE":
CleanForm();
CleanToolbar();
LockForm();
dgvOrderContent.AllowUserToAddRows = false;
dgvOutSourcingContent.AllowUserToAddRows = false;
dgvReceiptPlan.AllowUserToAddRows = false;
dgvOrderList.ReadOnly = true;
((MainForm)ParentForm).SsStatus.Items["tsslStatus"].Text = "";
strFrmStatus = "";
tsbSearch.Enabled = true;
break;
case "SEARCH":
UnLockFormHead();
CleanForm();
btnGetSalesOrderNo.Enabled = false;
tsbSearch.Visible = false;
tsbEdit.Enabled = false;
tsbDelete.Enabled = false;
tsbSave.Visible = false;
tsbOK.Visible = true;
tsbCancel.Visible = true;
dgvOrderContent.AllowUserToAddRows = false;
dgvOutSourcingContent.AllowUserToAddRows = false;
dgvReceiptPlan.AllowUserToAddRows = false;
((MainForm)ParentForm).SsStatus.Items["tsslStatus"].Text = "搜尋";
strFrmStatus = "SEARCH";
break;
case "ADD":
//本程式不提供新增功能
((MainForm)ParentForm).SsStatus.Items["tsslStatus"].Text = "新增";
strFrmStatus = "ADD";
break;
case "MODIFY":
UnLockFormHead();
UnLockFormDetail();
UnLockFormSubDetail();
tsbSearch.Enabled = false;
tsbEdit.Visible = false;
tsbDelete.Enabled = false;
tsbSave.Visible = true;
tsbCancel.Visible = true;
dgvOrderContent.AllowUserToAddRows = true;
dgvOutSourcingContent.AllowUserToAddRows = true;
dgvReceiptPlan.AllowUserToAddRows = true;
((MainForm)ParentForm).SsStatus.Items["tsslStatus"].Text = "修改";
strFrmStatus = "MODIFY";
break;
case "DEL":
((MainForm)ParentForm).SsStatus.Items["tsslStatus"].Text = "刪除";
strFrmStatus = "DEL";
break;
}
}
catch (Exception ex)
{
ErrorHandler.WriteErrorLog("PayPlanManagement.cs", ex);
}
}
private void CleanForm() //清除畫面
{
blIsAdded = true;
CleanFormHead();
CleanFormDetail();
CleanFormSubDetail();
}
private void CleanFormHead() //清除畫面
{
//設定畫面物件狀態
//清除GridView
txtSalesOrderNo.Text = "";
txtCustomerID.Text = "";
txtCustomerName.Text = "";
txtOrderSum.Text = "";
txtOutSourcingSum.Text = "";
rbPayType.Checked = false;
rbPayType1.Checked = false;
rbPayType2.Checked = false;
rbPayType3.Checked = false;
txtProjectName.Text = "";
txtProjectNumber.Text = "";
rbOrderStatusClose.Checked = false;
rbOrderStatusOpen.Checked = false;
}
private void CleanFormDetail() //清除畫面
{
//設定畫面物件狀態
try
{
if (dgvOrderContent.CurrentCell != null)
{
if (!dgvOrderContent.CurrentCell.IsInEditMode)
{
dgvOrderContent.Rows.Clear();
}
}
dgvOutSourcingContent.Rows.Clear();
}
catch (Exception ex)
{
ErrorHandler.WriteErrorLog("PayPlanManagement.cs", ex);
}
}
private void CleanFormSubDetail() //清除畫面
{
try
{
//設定畫面物件狀態
if (dgvReceiptPlan.Rows.Count > 0) dgvReceiptPlan.Rows.Clear();
if (dgvToPayPlan.Rows.Count > 0) dgvToPayPlan.Rows.Clear();
}
catch (Exception ex)
{
ErrorHandler.WriteErrorLog("PayPlanManagement.cs", ex);
}
}
private void CleanToolbar() //清除工具列
{
//設定Toolbar狀態
tsbSearch.Visible = true;
tsbSearch.Enabled = true;
tsbAdd.Visible = false; //本程式不存在新功能
tsbEdit.Visible = true;
tsbEdit.Enabled = true;
tsbDelete.Visible = true;
tsbDelete.Enabled = true;
tsbSave.Visible = false;
tsbOK.Visible = false;
tsbCancel.Visible = false;
}
private void UnLockFormHead() //解除限制唯讀物件
{
txtSalesOrderNo.ReadOnly = false;
txtCustomerName.ReadOnly = false;
rbPayType.Enabled = true;
rbPayType1.Enabled = true;
rbPayType2.Enabled = true;
rbPayType3.Enabled = true;
rbOrderStatusClose.Enabled = true;
rbOrderStatusOpen.Enabled = true;
txtProjectName.ReadOnly = false;
btnGetSalesOrderNo.Enabled = true;
btnGetCustomer.Enabled = true;
}
private void UnLockFormDetail() //解除限制唯讀物件
{
dgvOrderContent.ReadOnly = false;
dgvOutSourcingContent.ReadOnly = false;
}
private void UnLockFormSubDetail() //解除限制唯讀物件
{
try
{
if (dgvOrderContent.Rows.Count > 0)
{
btnArrangeProject.Enabled = true;
dgvReceiptPlan.ReadOnly = false;
}
if (dgvOutSourcingContent.Rows.Count > 0)
{
btnArrangToPayProject.Enabled = true;
dgvToPayPlan.ReadOnly = false;
}
}
catch (Exception ex)
{
ErrorHandler.WriteErrorLog("PayPlanManagement.cs", ex);
}
}
private void LockForm() //限制唯讀物件
{
txtSalesOrderNo.ReadOnly = true;
txtCustomerName.ReadOnly = true;
txtProjectName.ReadOnly = true;
rbPayType.Enabled = false;
rbPayType1.Enabled = false;
rbPayType2.Enabled = false;
rbPayType3.Enabled = false;
dgvOrderContent.ReadOnly = true;
dgvOutSourcingContent.ReadOnly = true;
dgvReceiptPlan.ReadOnly = true;
dgvToPayPlan.ReadOnly = true;
rbOrderStatusOpen.Enabled = false;
rbOrderStatusClose.Enabled = false;
btnGetSalesOrderNo.Enabled = false;
btnGetCustomer.Enabled = false;
btnArrangeProject.Enabled = false;
btnArrangToPayProject.Enabled = false;
}
private bool CheckForm() //檢查表單填寫狀況
{
try
{
//訂單表頭確認
if (txtSalesOrderNo.Text.Trim() == "")
{
MessageBox.Show("請輸入訂單編號", "提示");
txtSalesOrderNo.Focus();
return false;
}
if (txtCustomerID.Text.Trim() == "")
{
MessageBox.Show("請輸入正確客戶名稱", "提示");
txtCustomerID.Focus();
return false;
}
if (rbPayType.Checked == false && rbPayType1.Checked == false && rbPayType2.Checked == false && rbPayType3.Checked == false)
{
MessageBox.Show("請選擇請款方式", "提示");
rbPayType.Focus();
return false;
}
//訂單內容與請款計劃確認
if (dgvReceiptPlan.Rows.Count > 0 && dgvReceiptPlan.ReadOnly == false)
{
if (!dgvReceiptPlan.Rows[0].IsNewRow)
{
//物件宣告
DataTable dtTemp = UtilityClass.GetSystemArgument("PayItem", "zh-TW").Tables["Arguments"];
double dbOrderAmount = 0;
double dbReceiptAmount = 0;
string strOrderContent = "";
string strReceiptItem = "";
DataGridViewComboBoxCell cbCell = new DataGridViewComboBoxCell();
foreach (DataRow drTemp in dtTemp.Rows) //取得訂單內容的金額總數
{
foreach (DataGridViewRow drOrderItem in dgvOrderContent.Rows)
{
cbCell = (DataGridViewComboBoxCell)drOrderItem.Cells["cOrderContent"];
strOrderContent = (string)cbCell.Value;
if (drTemp["ArgumentID"].ToString() == (string.IsNullOrEmpty(strOrderContent) ? "" : strOrderContent))
{
dbOrderAmount += Convert.ToDouble(drOrderItem.Cells["cAmount"].Value.ToString().Replace(",", ""));
}
}
foreach (DataGridViewRow drReceiptItem in dgvReceiptPlan.Rows) //取得請款計劃的金額總數
{
cbCell = (DataGridViewComboBoxCell)drReceiptItem.Cells["cReceiptItem"];
strReceiptItem = (string)cbCell.Value;
if (drTemp["ArgumentID"].ToString() == (string.IsNullOrEmpty(strReceiptItem) ? "" : strReceiptItem))
{
dbReceiptAmount += Convert.ToDouble(drReceiptItem.Cells["cReceiptAmount"].Value.ToString().Replace(",", ""));
}
}
if (dbOrderAmount != dbReceiptAmount)
{
MessageBox.Show("請款計劃" + drTemp["ArgumentValue"].ToString() + "累計金額有誤!", "提示");
return false;
}
}
}
}
//委外內容與付款計劃確認
if (dgvToPayPlan.Rows.Count > 0 && dgvToPayPlan.ReadOnly == false)
{
if (!dgvToPayPlan.Rows[0].IsNewRow)
{
//物件宣告
DataTable dtTemp = UtilityClass.GetSystemArgument("PayItem", "zh-TW").Tables["Arguments"];
double dbOutSourceAmount = 0;
double dbPayAmount = 0;
string strOrderContent = "";
string strPayItem = "";
DataGridViewComboBoxCell cbCell = new DataGridViewComboBoxCell();
foreach (DataRow drTemp in dtTemp.Rows) //取得訂單內容的金額總數
{
foreach (DataGridViewRow drPayItem in dgvOutSourcingContent.Rows)
{
cbCell = (DataGridViewComboBoxCell)drPayItem.Cells["cOutOrderContent"];
strOrderContent = (string)cbCell.Value;
if (drTemp["ArgumentID"].ToString() == (string.IsNullOrEmpty(strOrderContent) ? "" : strOrderContent))
{
dbOutSourceAmount += Convert.ToDouble(drPayItem.Cells["cOutAmount"].Value.ToString().Replace(",", ""));
}
}
foreach (DataGridViewRow drPayItem in dgvToPayPlan.Rows) //取得請款計劃的金額總數
{
cbCell = (DataGridViewComboBoxCell)drPayItem.Cells["cPayItem"];
strPayItem = (string)cbCell.Value;
if (drTemp["ArgumentID"].ToString() == (string.IsNullOrEmpty(strPayItem) ? "" : strPayItem))
{
dbPayAmount += Convert.ToDouble(drPayItem.Cells["cPayAmount"].Value.ToString().Replace(",", ""));
}
}
if (dbOutSourceAmount != dbPayAmount)
{
MessageBox.Show("付款計劃" + drTemp["ArgumentValue"].ToString() + "累計金額有誤!", "提示");
return false;
}
}
}
}
return true;
}
catch (Exception ex)
{
ErrorHandler.WriteErrorLog("PayPlanManagement.cs", ex);
return false;
}
}
private void GetOrderList() //取得專案列表
{
try
{
StringBuilder strSQL = new StringBuilder();
strSQL.Append("Select * From OVW_SAL_ProjectOrderList Where ISNULL(CustomerName,'') <> '' And AccountingBookID = '" + strAccountingBookID + "' ");
if (rbOrderStatusClose.Checked == true)
{
strSQL.Append("Union ");
strSQL.Append("Select * From OVW_SAL_ProjectOrderList_Closed Where ISNULL(CustomerName,'') <> '' And AccountingBookID = '" + strAccountingBookID + "' ");
}
strSQL.Append("Order BY CustomerName");
dgvOrderList.DataSource = UtilityClass.GetSQLResult(strSQL.ToString()).Tables["Result"];
}
catch (Exception ex)
{
ErrorHandler.WriteErrorLog("PayPlanManagement.cs", ex);
}
}
public void GoEvent() //執行事件
{
try
{
//物件宣告
StringBuilder sbSQL = new StringBuilder();
string strSalesOrderNo = ""; //訂單編號
string strOrderItem = ""; //訂單項目
string strOrderContent = ""; //採購項目
string strUnitPrice = ""; //單價
string strQuantity = ""; //數量
string strTax = ""; //稅額
string strMemo = ""; //訂單內容註解
string strOutOrderItem = ""; //委外項目
string strOutOrderContent = ""; //委外項目
string strOutUnitPrice = ""; //委外單價
string strOutQuantity = ""; //委外數量
string strOutMemo = ""; //委外內容註解
string strReceiptNo = ""; //請款單號
string strItemNo = ""; //項次
string strPhase = ""; //期數
string strReceiptItem = ""; //請款項目
string strReceiptUnitPrice = ""; //請款單價
string strReceiptQuantity = ""; //請款數量
string strRestReceipt = ""; //待請數量
string strExpectedReceiptDate = ""; //預計請款日期
string strActualReceiptDate = ""; //實際請款日期
string strExpectedReceiptedDate = ""; //預計收款日期
string strActualReceiptedDate = ""; //實際收款日期
string strReceiptAmount = ""; //請款金額
string strRestReceiptAmount = ""; //待請餘額
string strInvoiceNo = ""; //付款單號
string strPayItemNo = ""; //項次
string strPayPhase = ""; //期數
string strPayItem = ""; //付款項目
string strPayUnitPrice = ""; //付款單價
string strPayQuantity = ""; //付款數量
string strRestPayQuantity = ""; //待付餘量
string strExpectedPayDate = ""; //預計付款日期
string strActualPayDate = ""; //實際請付日期
string strPayAmount = ""; //付款止額
string strRestPayAmount = ""; //待付餘額
string strPayMemo = ""; //備註
switch (strFrmStatus)
{
case "SEARCH":
sbSQL.Append("Select * From OVW_SAL_ProjectOrderList ");
sbSQL.Append(" Where ISNULL(CustomerName,'') <> '' ");
if (txtSalesOrderNo.Text.Trim() != "")
{
sbSQL.Append("AND SalesOrderNo like '" + txtSalesOrderNo.Text.Trim() + "' ");
}
if (txtCustomerName.Text.Trim() != "")
{
sbSQL.Append("AND CustomerName like '" + txtCustomerName.Text.Trim() + "' ");
}
if (txtProjectName.Text.Trim() != "")
{
sbSQL.Append("AND ProjectCName like '" + txtProjectName.Text.Trim() + "' ");
}
if (rbOrderStatusClose.Checked == true)
{
sbSQL.Append("Union ");
sbSQL.Append("Select * From OVW_SAL_ProjectOrderList_Closed ");
sbSQL.Append(" Where ISNULL(CustomerName,'') <> '' ");
if (txtSalesOrderNo.Text.Trim() != "")
{
sbSQL.Append("AND SalesOrderNo like '" + txtSalesOrderNo.Text.Trim() + "' ");
}
if (txtCustomerName.Text.Trim() != "")
{
sbSQL.Append("AND CustomerName like '" + txtCustomerName.Text.Trim() + "' ");
}
if (txtProjectName.Text.Trim() != "")
{
sbSQL.Append("AND ProjectCName like '" + txtProjectName.Text.Trim() + "' ");
}
}
sbSQL.Append("Order BY CustomerName");
DataTable dtTemp = UtilityClass.GetSQLResult(sbSQL.ToString()).Tables["Result"];
dgvOrderList.DataSource = dtTemp;
StatusChange("NONE");
break;
case "MODIFY":
if (CheckForm() == true)
{
if (blIsAdded == false)
{
MessageBox.Show("您未完成分錄建立,請先完成分錄建立,再行儲存", "提示");
return;
}
if (rbOrderStatusClose.Checked == true)
{
//處理合約結案相關事宜
}
//參數設定
strSalesOrderNo = txtSalesOrderNo.Text.Trim(); //訂單編號
string strPayType = ""; //設定請款方式
if (rbPayType.Checked) strPayType = "P";
if (rbPayType1.Checked) strPayType = "M";
if (rbPayType2.Checked) strPayType = "D";
if (rbPayType3.Checked) strPayType = "H";
string strOrderStatus = ""; //設定訂單狀態
if (rbOrderStatusClose.Checked) strOrderStatus = "C";
if (rbOrderStatusOpen.Checked) strOrderStatus = "O";
if (sqlConn.State == ConnectionState.Closed) //判斷連線狀態
{
sqlConn.Open();
}
string strCHKSQL = string.Format("Select * From OTB_SAL_OrderList Where SalesOrderNo = '{0}' And AccountingBookID = '{1}'", strSalesOrderNo, strAccountingBookID);
sqlTran = sqlConn.BeginTransaction();
if (UtilityClass.IsExist(strCHKSQL))
{
//資料存在,採用UPdate,基本資料不允許修改
//清除訂單及委外內容
using (SqlDataAdapter sqlAdapter = new SqlDataAdapter())
{
sbSQL.Clear();
sbSQL.Append("Delete OTB_SAL_OrderContent Where SalesOrderNo = @SalesOrderNo ");
sbSQL.Append("Delete OTB_SAL_OutSourcingContent Where SalesOrderNo = @SalesOrderNo ");
sbSQL.Append("Delete OTB_SAL_ReceiptPlan Where SalesOrderNo = @SalesOrderNo ");
sbSQL.Append("Delete OTB_SAL_PayPlan Where SalesOrderNo = @SalesOrderNo ");
//添加參數
sqlAdapter.DeleteCommand = new SqlCommand();
sqlAdapter.DeleteCommand.Connection = sqlConn;
sqlAdapter.DeleteCommand.Transaction = sqlTran;
sqlAdapter.DeleteCommand.CommandText = sbSQL.ToString();
sqlAdapter.DeleteCommand.Parameters.AddRange
(
new SqlParameter[]
{
new SqlParameter("@SalesOrderNo",string.IsNullOrEmpty(strSalesOrderNo) ? "" : strSalesOrderNo)
}
);
if (sqlConn.State == ConnectionState.Closed) //判斷連線狀態
{
sqlConn.Open();
}
sqlAdapter.DeleteCommand.ExecuteNonQuery();
}
//寫入訂單內容
using (SqlDataAdapter sqlAdapter = new SqlDataAdapter())
{
sbSQL.Clear();
sbSQL.Append("Insert Into OTB_SAL_OrderContent (SalesOrderNo, ItemNo, OrderContent, UnitPrice, Quantity, Tax, Memo, CreateDate, CreateUser, ModifyDate, ModifyUser) Values");
sbSQL.Append("(@SalesOrderNo, @ItemNo, @OrderContent, @UnitPrice, @Quantity, @Tax, @Memo, GetDate(), @CreateUser, GetDate(), @ModifyUser)");
foreach (DataGridViewRow drContent in dgvOrderContent.Rows)
{
strOrderContent = (string)drContent.Cells["cOrderContent"].Value;
strOrderItem = (string)drContent.Cells["cOrderItem"].Value;
strUnitPrice = (string)drContent.Cells["cUnitPrice"].Value;
strQuantity = (string)drContent.Cells["cQuantity"].Value;
strTax = (string)drContent.Cells["cTax"].Value;
strMemo = (string)drContent.Cells["cOrderMemo"].Value;
if (!drContent.IsNewRow)
{
//添加參數
sqlAdapter.InsertCommand = new SqlCommand();
sqlAdapter.InsertCommand.Connection = sqlConn;
sqlAdapter.InsertCommand.Transaction = sqlTran;
sqlAdapter.InsertCommand.CommandText = sbSQL.ToString();
sqlAdapter.InsertCommand.Parameters.AddRange
(
new SqlParameter[]
{
new SqlParameter("@SalesOrderNo",string.IsNullOrEmpty(strSalesOrderNo) ? "" : strSalesOrderNo),
new SqlParameter("@ItemNo",string.IsNullOrEmpty(strOrderItem) ? "" : strOrderItem),
new SqlParameter("@OrderContent",string.IsNullOrEmpty(strOrderContent) ? "" : strOrderContent),
new SqlParameter("@UnitPrice",string.IsNullOrEmpty(strUnitPrice) ? "" : UtilityClass.EncryptDES(strUnitPrice,strKey)),
new SqlParameter("@Quantity",string.IsNullOrEmpty(strQuantity) ? "" : UtilityClass.EncryptDES(strQuantity,strKey)),
new SqlParameter("@Tax",string.IsNullOrEmpty(strTax) ? "" : UtilityClass.EncryptDES(strTax,strKey)),
new SqlParameter("@Memo",string.IsNullOrEmpty(strMemo) ? "" : strMemo),
new SqlParameter("@CreateUser",strActiveUserID),
new SqlParameter("@ModifyUser",strActiveUserID)
}
);
if (sqlConn.State == ConnectionState.Closed) //判斷連線狀態
{
sqlConn.Open();
}
sqlAdapter.InsertCommand.ExecuteNonQuery();
}
}
}
//寫入委外內容
using (SqlDataAdapter sqlAdapter = new SqlDataAdapter())
{
sbSQL.Clear();
sbSQL.Append("Insert Into OTB_SAL_OutSourcingContent (SalesOrderNo, ItemNo, OrderContent, UnitPrice, Quantity, Memo, CreateDate, CreateUser, ModifyDate, ModifyUser) Values");
sbSQL.Append("(@SalesOrderNo, @ItemNo, @OrderContent, @UnitPrice, @Quantity, @Memo, GetDate(), @CreateUser, GetDate(), @ModifyUser)");
foreach (DataGridViewRow drContent in dgvOutSourcingContent.Rows)
{
strOutOrderContent = (string)drContent.Cells["cOutOrderContent"].Value;
strOutOrderItem = (string)drContent.Cells["cOutOrderItem"].Value;
strOutUnitPrice = (string)drContent.Cells["cOutUnitPrice"].Value;
strOutQuantity = (string)drContent.Cells["cOutQuantity"].Value;
strOutMemo = (string)drContent.Cells["cOutOrderMemo"].Value;
if (!drContent.IsNewRow)
{
//添加參數
sqlAdapter.InsertCommand = new SqlCommand();
sqlAdapter.InsertCommand.Connection = sqlConn;
sqlAdapter.InsertCommand.Transaction = sqlTran;
sqlAdapter.InsertCommand.CommandText = sbSQL.ToString();
sqlAdapter.InsertCommand.Parameters.AddRange
(
new SqlParameter[]
{
new SqlParameter("@SalesOrderNo",string.IsNullOrEmpty(strSalesOrderNo) ? "" : strSalesOrderNo),
new SqlParameter("@ItemNo",string.IsNullOrEmpty(strOutOrderItem) ? "" : strOutOrderItem),
new SqlParameter("@OrderContent",string.IsNullOrEmpty(strOutOrderContent) ? "" : strOutOrderContent),
new SqlParameter("@UnitPrice",string.IsNullOrEmpty(strOutUnitPrice) ? "" : UtilityClass.EncryptDES(strOutUnitPrice,strKey)),
new SqlParameter("@Quantity",string.IsNullOrEmpty(strOutQuantity) ? "" : UtilityClass.EncryptDES(strOutQuantity,strKey)),
new SqlParameter("@Memo",string.IsNullOrEmpty(strOutMemo) ? "" : strOutMemo),
new SqlParameter("@CreateUser",strActiveUserID),
new SqlParameter("@ModifyUser",strActiveUserID)
}
);
if (sqlConn.State == ConnectionState.Closed) //判斷連線狀態
{
sqlConn.Open();
}
sqlAdapter.InsertCommand.ExecuteNonQuery();
}
}
}
//寫入請款計劃
using (SqlDataAdapter sqlAdapter = new SqlDataAdapter())
{
foreach (DataGridViewRow drContent in dgvReceiptPlan.Rows)
{
if (!drContent.IsNewRow)
{
strReceiptNo = (string)drContent.Cells["cReceiptNo"].Value; //請款單號
strItemNo = (string)drContent.Cells["cItemNo"].Value; //項次
strPhase = drContent.Cells["cPhase"].Value.ToString(); //期數
strReceiptItem = (string)drContent.Cells["cReceiptItem"].Value; //請款項目
strReceiptUnitPrice = (string)drContent.Cells["cReceiptUnitPrice"].Value; //請款單價
strReceiptQuantity = (string)drContent.Cells["cReceiptQuantity"].Value; //請款數量
strRestReceipt = (string)drContent.Cells["cRestReceipt"].Value; //待請數量
strExpectedReceiptDate = (string)drContent.Cells["cExpectedReceiptDate"].Value; //預計請款日期
strActualReceiptDate = (string)drContent.Cells["cActualReceiptDate"].Value; //實際請款日期
strExpectedReceiptedDate = (string)drContent.Cells["cExpectedReceiptedDate"].Value; //預計收款日期
strActualReceiptedDate = (string)drContent.Cells["cActualReceiptedDate"].Value; //實際收款日期
strReceiptAmount = (string)drContent.Cells["cReceiptAmount"].Value;
strTax = (string)drContent.Cells["cReceiptTax"].Value; //稅額
strRestReceiptAmount = (string)drContent.Cells["cRestReceiptAmount"].Value; //待請餘額
strMemo = (string)drContent.Cells["cMemo"].Value; //備註
sbSQL.Clear();
sbSQL.Append("Insert Into OTB_SAL_ReceiptPlan (AccountingBookID, SalesOrderNo, ReceiptNo, ItemNo, Phase, ReceiptItem, ReceiptUnitPrice, ReceiptQuantity, RestReceipt, ExpectedReceiptDate, ActualReceiptDate, ExpectedReceiptedDate, ActualReceiptedDate, ReceiptAmount, Tax, RestReceiptAmount, Memo , CreateDate, CreateUser, ModifyDate, ModifyUser) Values(");
sbSQL.Append("'" + (string.IsNullOrEmpty(strAccountingBookID) ? "" : strAccountingBookID) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strSalesOrderNo) ? "" : strSalesOrderNo) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strReceiptNo) ? "" : strReceiptNo) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strItemNo) ? "" : strItemNo) + "', ");
sbSQL.Append((string.IsNullOrEmpty(strPhase) ? "" : strPhase) + ", ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strReceiptItem) ? "" : strReceiptItem) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strReceiptUnitPrice) ? "" : UtilityClass.EncryptDES(strReceiptUnitPrice, strKey)) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strReceiptQuantity) ? "" : UtilityClass.EncryptDES(strReceiptQuantity, strKey)) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strRestReceipt) ? "" : UtilityClass.EncryptDES(strRestReceipt, strKey)) + "', ");
sbSQL.Append(!UtilityClass.IsDate(strExpectedReceiptDate) ? "null," : ("Convert(DateTime,'" + Convert.ToDateTime(strExpectedReceiptDate + " 00:00:00").ToString("yyyy/MM/dd HH:mm:ss") + "'), "));
sbSQL.Append(!UtilityClass.IsDate(strActualReceiptDate) ? "null," : ("Convert(DateTime,'" + Convert.ToDateTime(strActualReceiptDate + " 00:00:00").ToString("yyyy/MM/dd HH:mm:ss") + "'), "));
sbSQL.Append(!UtilityClass.IsDate(strExpectedReceiptedDate) ? "null," : ("Convert(DateTime,'" + Convert.ToDateTime(strExpectedReceiptedDate + " 00:00:00").ToString("yyyy/MM/dd HH:mm:ss") + "'), "));
sbSQL.Append(!UtilityClass.IsDate(strActualReceiptedDate) ? "null," : ("Convert(DateTime,'" + Convert.ToDateTime(strActualReceiptedDate + " 00:00:00").ToString("yyyy/MM/dd HH:mm:ss") + "'), "));
sbSQL.Append("'" + (string.IsNullOrEmpty(strReceiptAmount) ? "" : UtilityClass.EncryptDES(strReceiptAmount, strKey)) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strTax) ? "" : UtilityClass.EncryptDES(strTax, strKey)) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strRestReceiptAmount) ? "" : UtilityClass.EncryptDES(strRestReceiptAmount, strKey)) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strMemo) ? "" : strMemo) + "', ");
sbSQL.Append("GetDate(), '" + strActiveUserID + "', GetDate(), '" + strActiveUserID + "')");
sqlAdapter.InsertCommand = new SqlCommand();
sqlAdapter.InsertCommand.Connection = sqlConn;
sqlAdapter.InsertCommand.Transaction = sqlTran;
sqlAdapter.InsertCommand.CommandText = sbSQL.ToString();
if (sqlConn.State == ConnectionState.Closed) //判斷連線狀態
{
sqlConn.Open();
}
sqlAdapter.InsertCommand.ExecuteNonQuery();
}
}
}
//寫入付款計劃
using (SqlDataAdapter sqlAdapter = new SqlDataAdapter())
{
foreach (DataGridViewRow drContent in dgvToPayPlan.Rows)
{
if (!drContent.IsNewRow)
{
strInvoiceNo = (string)drContent.Cells["cInvoiceNo"].Value; //付款單號
strPayItemNo = (string)drContent.Cells["cPayItemNo"].Value; //項次
strPayPhase = drContent.Cells["cPayPhase"].Value.ToString(); //期數
strPayItem = (string)drContent.Cells["cPayItem"].Value; //付款項目
strPayUnitPrice = (string)drContent.Cells["cPayUnitPrice"].Value; //付款單價
strPayQuantity = (string)drContent.Cells["cPayQuantity"].Value; //付款數量
strRestPayQuantity = (string)drContent.Cells["cRestPayQuantity"].Value; //待付數量
strExpectedPayDate = (string)drContent.Cells["cExpectedPayDate"].Value; //預計付款日期
strActualPayDate = (string)drContent.Cells["cActualPaiedDate"].Value; //實際付款日期
strPayAmount = (string)drContent.Cells["cPayAmount"].Value; //付款金額
strRestPayAmount = (string)drContent.Cells["cRestPayAmount"].Value; //待付餘額
strPayMemo = (string)drContent.Cells["cPayMemo"].Value; //備註
sbSQL.Clear();
sbSQL.Append("Insert Into OTB_SAL_PayPlan (AccountingBookID, SalesOrderNo, ItemNo, PhaseNo, InvoiceNo, PayItem, PayUnitPrice, PayQuantity, RestPay, ExpectedPayDate, ActualPayDate, PayAmount,RestPayAmount ,Memo ,CreateDate, CreateUser, ModifyDate, ModifyUser) Values(");
sbSQL.Append("'" + (string.IsNullOrEmpty(strAccountingBookID) ? "" : strAccountingBookID) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strSalesOrderNo) ? "" : strSalesOrderNo) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strPayItemNo) ? "" : strPayItemNo) + "', ");
sbSQL.Append((string.IsNullOrEmpty(strPayPhase) ? "" : strPayPhase) + ", ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strInvoiceNo) ? "" : strInvoiceNo) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strPayItem) ? "" : strPayItem) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strPayUnitPrice) ? "" : UtilityClass.EncryptDES(strPayUnitPrice, strKey)) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strPayQuantity) ? "" : UtilityClass.EncryptDES(strPayQuantity, strKey)) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strRestPayQuantity) ? "" : UtilityClass.EncryptDES(strRestPayQuantity, strKey)) + "', ");
sbSQL.Append(!UtilityClass.IsDate(strExpectedPayDate) ? "null," : ("Convert(DateTime,'" + Convert.ToDateTime(strExpectedPayDate + " 00:00:00").ToString("yyyy/MM/dd HH:mm:ss") + "'), "));
sbSQL.Append(!UtilityClass.IsDate(strActualPayDate) ? "null," : ("Convert(DateTime,'" + Convert.ToDateTime(strActualPayDate + " 00:00:00").ToString("yyyy/MM/dd HH:mm:ss") + "'), "));
sbSQL.Append("'" + (string.IsNullOrEmpty(strPayAmount) ? "" : UtilityClass.EncryptDES(strPayAmount, strKey)) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strRestPayAmount) ? "" : UtilityClass.EncryptDES(strRestPayAmount, strKey)) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strPayMemo) ? "" : strPayMemo) + "', ");
sbSQL.Append("GetDate(), '" + strActiveUserID + "', GetDate(), '" + strActiveUserID + "')");
sqlAdapter.InsertCommand = new SqlCommand();
sqlAdapter.InsertCommand.Connection = sqlConn;
sqlAdapter.InsertCommand.Transaction = sqlTran;
sqlAdapter.InsertCommand.CommandText = sbSQL.ToString();
if (sqlConn.State == ConnectionState.Closed) //判斷連線狀態
{
sqlConn.Open();
}
sqlAdapter.InsertCommand.ExecuteNonQuery();
}
}
}
sqlTran.Commit(); //資料完成寫入資料庫中
dgvOrderList.ReadOnly = true;
StatusChange("SEARCH");
GoEvent();
//定位在已存檔的位置
string strColumnValue = "";
foreach (DataGridViewRow dr in dgvOrderList.Rows)
{
strColumnValue = (string)dr.Cells["cOrderID"].Value;
if (!string.IsNullOrEmpty(strColumnValue) && strColumnValue == strSalesOrderNo)
{
dgvOrderList.CurrentCell = dgvOrderList.Rows[dr.Index].Cells["cCustomerName"];
}
}
MessageBox.Show("儲存成功", "提示");
}
else
{
# region 基本資料不存在,採用Insert
using (SqlDataAdapter sqlAdapter = new SqlDataAdapter())
{
sbSQL.Clear();
sbSQL.Append("Insert Into OTB_SAL_OrderList (AccountingBookID, SalesOrderNo, CustomerID, ProjectNumber, PayType, OrderStatus, CreateDate, CreateUser, ModifyDate, ModifyUser) Values");
sbSQL.Append("(@AccountingBookID, @SalesOrderNo, @CustomerID, @ProjectNumber, @PayType, @OrderSatus, GetDate(), @CreateUser, GetDate(), @ModifyUser)");
//添加參數
sqlAdapter.InsertCommand = new SqlCommand();
sqlAdapter.InsertCommand.Connection = sqlConn;
sqlAdapter.InsertCommand.Transaction = sqlTran;
sqlAdapter.InsertCommand.CommandText = sbSQL.ToString();
sqlAdapter.InsertCommand.Parameters.AddRange
(
new SqlParameter[]
{
new SqlParameter("@AccountingBookID",strAccountingBookID),
new SqlParameter("@SalesOrderNo",txtSalesOrderNo.Text.Trim()),
new SqlParameter("@CustomerID",txtCustomerID.Text.Trim()),
new SqlParameter("@ProjectNumber",txtProjectNumber.Text.Trim()),
new SqlParameter("@PayType",strPayType),
new SqlParameter("@OrderSatus",strOrderStatus),
new SqlParameter("@CreateUser",strActiveUserID),
new SqlParameter("@ModifyUser",strActiveUserID)
}
);
if (sqlConn.State == ConnectionState.Closed) //判斷連線狀態
{
sqlConn.Open();
}
sqlAdapter.InsertCommand.ExecuteNonQuery();
}
//清除訂單與委外內容
using (SqlDataAdapter sqlAdapter = new SqlDataAdapter())
{
sbSQL.Clear();
sbSQL.Append("Delete OTB_SAL_OrderContent Where SalesOrderNo = @SalesOrderNo ");
sbSQL.Append("Delete OTB_SAL_OutSourcingContent Where SalesOrderNo = @SalesOrderNo ");
sbSQL.Append("Delete OTB_SAL_ReceiptPlan Where SalesOrderNo = @SalesOrderNo ");
sbSQL.Append("Delete OTB_SAL_PayPlan Where SalesOrderNo = @SalesOrderNo ");
//添加參數
sqlAdapter.DeleteCommand = new SqlCommand();
sqlAdapter.DeleteCommand.Connection = sqlConn;
sqlAdapter.DeleteCommand.Transaction = sqlTran;
sqlAdapter.DeleteCommand.CommandText = sbSQL.ToString();
sqlAdapter.DeleteCommand.Parameters.AddRange
(
new SqlParameter[]
{
new SqlParameter("@SalesOrderNo",string.IsNullOrEmpty(strSalesOrderNo) ? "" : strSalesOrderNo)
}
);
if (sqlConn.State == ConnectionState.Closed) //判斷連線狀態
{
sqlConn.Open();
}
sqlAdapter.DeleteCommand.ExecuteNonQuery();
}
//寫入訂單內容
using (SqlDataAdapter sqlAdapter = new SqlDataAdapter())
{
sbSQL.Clear();
sbSQL.Append("Insert Into OTB_SAL_OrderContent (SalesOrderNo, ItemNo, OrderContent, UnitPrice, Quantity, Tax, Memo, CreateDate, CreateUser, ModifyDate, ModifyUser) Values");
sbSQL.Append("(@SalesOrderNo, @ItemNo, @OrderContent, @UnitPrice, @Quantity, @Tax, @Memo, GetDate(), @CreateUser, GetDate(), @ModifyUser)");
foreach (DataGridViewRow drContent in dgvOrderContent.Rows)
{
//檢查參數
strOrderContent = (string)drContent.Cells["cOrderContent"].Value;
strOrderItem = (string)drContent.Cells["cOrderItem"].Value;
strUnitPrice = (string)drContent.Cells["cUnitPrice"].Value;
strQuantity = (string)drContent.Cells["cQuantity"].Value;
strTax = (string)drContent.Cells["cTax"].Value;
strMemo = (string)drContent.Cells["cOrderMemo"].Value;
if (!drContent.IsNewRow)
{
////添加參數
sqlAdapter.InsertCommand = new SqlCommand();
sqlAdapter.InsertCommand.Connection = sqlConn;
sqlAdapter.InsertCommand.Transaction = sqlTran;
sqlAdapter.InsertCommand.CommandText = sbSQL.ToString();
sqlAdapter.InsertCommand.Parameters.AddRange
(
new SqlParameter[]
{
new SqlParameter("@SalesOrderNo",string.IsNullOrEmpty(strSalesOrderNo) ? "" : strSalesOrderNo),
new SqlParameter("@ItemNo",string.IsNullOrEmpty(strOrderItem) ? "" : strOrderItem),
new SqlParameter("@OrderContent",string.IsNullOrEmpty(strOrderContent) ? "" : strOrderContent),
new SqlParameter("@UnitPrice",string.IsNullOrEmpty(strUnitPrice) ? "" : UtilityClass.EncryptDES(strUnitPrice,strKey)),
new SqlParameter("@Quantity",string.IsNullOrEmpty(strQuantity) ? "" : UtilityClass.EncryptDES(strQuantity,strKey)),
new SqlParameter("@Tax",string.IsNullOrEmpty(strTax) ? "" : UtilityClass.EncryptDES(strTax,strKey)),
new SqlParameter("@Memo",string.IsNullOrEmpty(strMemo) ? "" : strMemo),
new SqlParameter("@CreateUser",strActiveUserID),
new SqlParameter("@ModifyUser",strActiveUserID)
}
);
if (sqlConn.State == ConnectionState.Closed) //判斷連線狀態
{
sqlConn.Open();
}
sqlAdapter.InsertCommand.ExecuteNonQuery();
}
}
}
//寫入委外內容
using (SqlDataAdapter sqlAdapter = new SqlDataAdapter())
{
sbSQL.Clear();
sbSQL.Append("Insert Into OTB_SAL_OutSourcingContent (SalesOrderNo, ItemNo, OrderContent, UnitPrice, Quantity, Memo, CreateDate, CreateUser, ModifyDate, ModifyUser) Values");
sbSQL.Append("(@SalesOrderNo, @ItemNo, @OrderContent, @UnitPrice, @Quantity, @Memo, GetDate(), @CreateUser, GetDate(), @ModifyUser)");
foreach (DataGridViewRow drContent in dgvOutSourcingContent.Rows)
{
//檢查參數
strOutOrderContent = (string)drContent.Cells["cOutOrderContent"].Value;
strOutOrderItem = (string)drContent.Cells["cOutOrderItem"].Value;
strOutUnitPrice = (string)drContent.Cells["cOutUnitPrice"].Value;
strOutQuantity = (string)drContent.Cells["cOutQuantity"].Value;
strOutMemo = (string)drContent.Cells["cOutOrderMemo"].Value;
if (!drContent.IsNewRow)
{
////添加參數
sqlAdapter.InsertCommand = new SqlCommand();
sqlAdapter.InsertCommand.Connection = sqlConn;
sqlAdapter.InsertCommand.Transaction = sqlTran;
sqlAdapter.InsertCommand.CommandText = sbSQL.ToString();
sqlAdapter.InsertCommand.Parameters.AddRange
(
new SqlParameter[]
{
new SqlParameter("@SalesOrderNo",string.IsNullOrEmpty(strSalesOrderNo) ? "" : strSalesOrderNo),
new SqlParameter("@ItemNo",string.IsNullOrEmpty(strOutOrderItem) ? "" : strOutOrderItem),
new SqlParameter("@OrderContent",string.IsNullOrEmpty(strOutOrderContent) ? "" : strOutOrderContent),
new SqlParameter("@UnitPrice",string.IsNullOrEmpty(strOutUnitPrice) ? "" : UtilityClass.EncryptDES(strOutUnitPrice,strKey)),
new SqlParameter("@Quantity",string.IsNullOrEmpty(strOutQuantity) ? "" : UtilityClass.EncryptDES(strOutQuantity,strKey)),
new SqlParameter("@Memo",string.IsNullOrEmpty(strOutMemo) ? "" : strOutMemo),
new SqlParameter("@CreateUser",strActiveUserID),
new SqlParameter("@ModifyUser",strActiveUserID)
}
);
if (sqlConn.State == ConnectionState.Closed) //判斷連線狀態
{
sqlConn.Open();
}
sqlAdapter.InsertCommand.ExecuteNonQuery();
}
}
}
//寫入請款計劃
using (SqlDataAdapter sqlAdapter = new SqlDataAdapter())
{
foreach (DataGridViewRow drContent in dgvReceiptPlan.Rows)
{
if (!drContent.IsNewRow)
{
strReceiptNo = (string)drContent.Cells["cReceiptNo"].Value; //請款單號
strItemNo = (string)drContent.Cells["cItemNo"].Value; //項次
strPhase = drContent.Cells["cPhase"].Value.ToString(); //期數
strReceiptItem = (string)drContent.Cells["cReceiptItem"].Value; //請款項目
strReceiptUnitPrice = (string)drContent.Cells["cReceiptUnitPrice"].Value; //請款單價
strReceiptQuantity = (string)drContent.Cells["cReceiptQuantity"].Value; //請款數量
strRestReceipt = (string)drContent.Cells["cRestReceipt"].Value; //待請數量
strExpectedReceiptDate = (string)drContent.Cells["cExpectedReceiptDate"].Value; //預計請款日期
strActualReceiptDate = (string)drContent.Cells["cActualReceiptDate"].Value; //實際請款日期
strExpectedReceiptedDate = (string)drContent.Cells["cExpectedReceiptedDate"].Value; //預計收款日期
strActualReceiptedDate = (string)drContent.Cells["cActualReceiptedDate"].Value; //實際收款日期
strReceiptAmount = (string)drContent.Cells["cReceiptAmount"].Value; //請款金額
strTax = (string)drContent.Cells["cReceiptTax"].Value; //請款金額
strRestReceiptAmount = (string)drContent.Cells["cRestReceiptAmount"].Value; //待請餘額
strMemo = (string)drContent.Cells["cMemo"].Value; //備註
sbSQL.Clear();
sbSQL.Append("Insert Into OTB_SAL_ReceiptPlan (AccountingBookID, SalesOrderNo, ReceiptNo, ItemNo, Phase, ReceiptItem, ReceiptUnitPrice, ReceiptQuantity, RestReceipt, ExpectedReceiptDate, ActualReceiptDate, ExpectedReceiptedDate, ActualReceiptedDate, ReceiptAmount, Tax, RestReceiptAmount, Memo , CreateDate, CreateUser, ModifyDate, ModifyUser) Values(");
sbSQL.Append("'" + (string.IsNullOrEmpty(strAccountingBookID) ? "" : strAccountingBookID) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strSalesOrderNo) ? "" : strSalesOrderNo) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strReceiptNo) ? "" : strReceiptNo) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strItemNo) ? "" : strItemNo) + "', ");
sbSQL.Append((string.IsNullOrEmpty(strPhase) ? "" : strPhase) + ", ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strReceiptItem) ? "" : strReceiptItem) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strReceiptUnitPrice) ? "" : UtilityClass.EncryptDES(strReceiptUnitPrice, strKey)) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strReceiptQuantity) ? "" : UtilityClass.EncryptDES(strReceiptQuantity, strKey)) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strRestReceipt) ? "" : UtilityClass.EncryptDES(strRestReceipt, strKey)) + "', ");
sbSQL.Append(!UtilityClass.IsDate(strExpectedReceiptDate) ? "null," : ("Convert(DateTime,'" + Convert.ToDateTime(strExpectedReceiptDate + " 00:00:00").ToString("yyyy/MM/dd HH:mm:ss") + "'), "));
sbSQL.Append(!UtilityClass.IsDate(strActualReceiptDate) ? "null," : ("Convert(DateTime,'" + Convert.ToDateTime(strActualReceiptDate + " 00:00:00").ToString("yyyy/MM/dd HH:mm:ss") + "'), "));
sbSQL.Append(!UtilityClass.IsDate(strExpectedReceiptedDate) ? "null," : ("Convert(DateTime,'" + Convert.ToDateTime(strExpectedReceiptedDate + " 00:00:00").ToString("yyyy/MM/dd HH:mm:ss") + "'), "));
sbSQL.Append(!UtilityClass.IsDate(strActualReceiptedDate) ? "null," : ("Convert(DateTime,'" + Convert.ToDateTime(strActualReceiptedDate + " 00:00:00").ToString("yyyy/MM/dd HH:mm:ss") + "'), "));
sbSQL.Append("'" + (string.IsNullOrEmpty(strReceiptAmount) ? "" : UtilityClass.EncryptDES(strReceiptAmount, strKey)) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strTax) ? "" : UtilityClass.EncryptDES(strTax, strKey)) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strRestReceiptAmount) ? "" : UtilityClass.EncryptDES(strRestReceiptAmount, strKey)) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strMemo) ? "" : strMemo) + "', ");
sbSQL.Append("GetDate(), '" + strActiveUserID + "', GetDate(), '" + strActiveUserID + "')");
sqlAdapter.InsertCommand = new SqlCommand();
sqlAdapter.InsertCommand.Connection = sqlConn;
sqlAdapter.InsertCommand.Transaction = sqlTran;
sqlAdapter.InsertCommand.CommandText = sbSQL.ToString();
if (sqlConn.State == ConnectionState.Closed) //判斷連線狀態
{
sqlConn.Open();
}
sqlAdapter.InsertCommand.ExecuteNonQuery();
}
}
}
//寫入付款計劃
using (SqlDataAdapter sqlAdapter = new SqlDataAdapter())
{
foreach (DataGridViewRow drContent in dgvToPayPlan.Rows)
{
if (!drContent.IsNewRow)
{
strInvoiceNo = (string)drContent.Cells["cInvoiceNo"].Value; //付款單號
strPayItemNo = (string)drContent.Cells["cPayItemNo"].Value; //項次
strPayPhase = drContent.Cells["cPayPhase"].Value.ToString(); //期數
strPayItem = (string)drContent.Cells["cPayItem"].Value; //付款項目
strPayUnitPrice = (string)drContent.Cells["cPayUnitPrice"].Value; //付款單價
strPayQuantity = (string)drContent.Cells["cPayQuantity"].Value; //付款數量
strRestPayQuantity = (string)drContent.Cells["cRestPayQuantity"].Value; //待付數量
strExpectedPayDate = (string)drContent.Cells["cExpectedPayDate"].Value; //預計付款日期
strActualPayDate = (string)drContent.Cells["cActualPaiedDate"].Value; //實際請付日期
strPayAmount = (string)drContent.Cells["cPayAmount"].Value; //付款金額
strRestPayAmount = (string)drContent.Cells["cRestPayAmount"].Value; //待付餘額
strPayMemo = (string)drContent.Cells["cPayMemo"].Value; //備註
sbSQL.Clear();
sbSQL.Append("Insert Into OTB_SAL_PayPlan (AccountingBookID, SalesOrderNo, ItemNo, PhaseNo, InvoiceNo, PayItem, PayUnitPrice, PayQuantity, RestPay, ExpectedPayDate, ActualPayDate, PayAmount,RestPayAmount ,Memo ,CreateDate, CreateUser, ModifyDate, ModifyUser) Values(");
sbSQL.Append("'" + (string.IsNullOrEmpty(strAccountingBookID) ? "" : strAccountingBookID) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strSalesOrderNo) ? "" : strSalesOrderNo) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strPayItemNo) ? "" : strPayItemNo) + "', ");
sbSQL.Append((string.IsNullOrEmpty(strPayPhase) ? "" : strPayPhase) + ", ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strInvoiceNo) ? "" : strInvoiceNo) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strPayItem) ? "" : strPayItem) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strPayUnitPrice) ? "" : UtilityClass.EncryptDES(strPayUnitPrice, strKey)) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strPayQuantity) ? "" : UtilityClass.EncryptDES(strPayQuantity, strKey)) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strRestPayQuantity) ? "" : UtilityClass.EncryptDES(strRestPayQuantity, strKey)) + "', ");
sbSQL.Append(!UtilityClass.IsDate(strExpectedPayDate) ? "null," : ("Convert(DateTime,'" + Convert.ToDateTime(strExpectedPayDate + " 00:00:00").ToString("yyyy/MM/dd HH:mm:ss") + "'), "));
sbSQL.Append(!UtilityClass.IsDate(strActualPayDate) ? "null," : ("Convert(DateTime,'" + Convert.ToDateTime(strActualPayDate + " 00:00:00").ToString("yyyy/MM/dd HH:mm:ss") + "'), "));
sbSQL.Append("'" + (string.IsNullOrEmpty(strPayAmount) ? "" : UtilityClass.EncryptDES(strPayAmount, strKey)) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strRestPayAmount) ? "" : UtilityClass.EncryptDES(strRestPayAmount, strKey)) + "', ");
sbSQL.Append("'" + (string.IsNullOrEmpty(strPayMemo) ? "" : strPayMemo) + "', ");
sbSQL.Append("GetDate(), '" + strActiveUserID + "', GetDate(), '" + strActiveUserID + "')");
sqlAdapter.InsertCommand = new SqlCommand();
sqlAdapter.InsertCommand.Connection = sqlConn;
sqlAdapter.InsertCommand.Transaction = sqlTran;
sqlAdapter.InsertCommand.CommandText = sbSQL.ToString();
if (sqlConn.State == ConnectionState.Closed) //判斷連線狀態
{
sqlConn.Open();
}
sqlAdapter.InsertCommand.ExecuteNonQuery();
}
}
}
sqlTran.Commit(); //資料完成寫入資料庫中
dgvOrderList.ReadOnly = true;
MessageBox.Show("儲存成功","提示");
StatusChange("SEARCH");
GoEvent();
#endregion
}
}
break;
}
}
catch (Exception ex)
{
ErrorHandler.WriteErrorLog("PayPlanManagement.cs", ex);
sqlTran.Rollback();
}
}
private void ReArrangeReceipt(DataGridViewCellEventArgs e) //重新整理請款計劃
{
try
{
//物件宣告
string strItemNo = (string)dgvReceiptPlan.Rows[e.RowIndex].Cells[2].Value; //項次
string strRestReceipt = ""; //請款數量
string strReceiptClass = ""; //請款計算方式 (P:百分比、D:三位一撇)
double dbSumRestReceipt = 0; //請款總量
string strRestReceiptAmount = ""; //待請餘額
double dbSumRestReceiptAmount = 0; //待請總餘額
string strReceiptUnitPrice = ""; //請款單價
string strReceiptQuantity = ""; //請款數量
double dbReceiptQuantity = 0; //請款數量
double dbTax = 0; //稅額
double dbReceiptAmount = 0; //請款金額
if (rbPayType.Checked == true)
{
foreach (DataGridViewRow drData in dgvOrderContent.Rows)
{
if (!drData.IsNewRow)
{
strRestReceipt = (string)drData.Cells["cQuantity"].Value;
if (!string.IsNullOrEmpty(strRestReceipt)) //取得待請數量
{
if (strRestReceipt.IndexOf("%") != -1)
{
dbSumRestReceipt += Convert.ToDouble(string.IsNullOrEmpty(strRestReceipt) ? "0" : strRestReceipt.Replace("%", ""));
strReceiptClass = "P";
}
else
{
dbSumRestReceipt += Convert.ToDouble(string.IsNullOrEmpty(strRestReceipt) ? "0" : strRestReceipt.Replace(",", ""));
strReceiptClass = "D";
}
strRestReceiptAmount = (string)drData.Cells["cAmount"].Value;
dbSumRestReceiptAmount += Convert.ToDouble(string.IsNullOrEmpty(strRestReceiptAmount) ? "0" : strRestReceiptAmount.Replace(",", ""));//取得待請餘額
}
}
}
}
else
{
foreach (DataGridViewRow drData in dgvOrderContent.Rows)
{
if ((string)drData.Cells["cOrderItem"].Value == strItemNo)
{
strRestReceipt = (string)drData.Cells["cQuantity"].Value; //取得待請數量
dbSumRestReceipt = string.IsNullOrEmpty(strRestReceipt) ? 0 : Convert.ToDouble(strRestReceipt.Replace(",", ""));
strRestReceiptAmount = (string)drData.Cells["cAmount"].Value; //取得待請餘額
dbSumRestReceiptAmount = Convert.ToDouble(string.IsNullOrEmpty(strRestReceiptAmount) ? "0" : strRestReceiptAmount.Replace(",", ""));
strReceiptClass = "D";
}
}
}
//變更該筆項目資料
strReceiptUnitPrice = (string)dgvReceiptPlan.Rows[e.RowIndex].Cells[5].Value;
strReceiptUnitPrice = string.IsNullOrEmpty(strReceiptUnitPrice) ? "0" : strReceiptUnitPrice.Replace(",", ""); //請款單價
strReceiptQuantity = (string)dgvReceiptPlan.Rows[e.RowIndex].Cells[6].Value;
if (strReceiptClass != "")
{
if (strReceiptClass == "P") //取得請款數量
{
dgvReceiptPlan.Columns["cReceiptItem"].ReadOnly = true;
dgvReceiptPlan.AllowUserToAddRows = false;
dbReceiptQuantity = string.IsNullOrEmpty(strReceiptQuantity) ? 0 : (Convert.ToDouble(strReceiptQuantity.Replace("%", "")) / 100);
dbTax = Convert.ToDouble(strReceiptUnitPrice) * dbReceiptQuantity * 0.05;
dbReceiptAmount = Convert.ToDouble(strReceiptUnitPrice) * Convert.ToDouble(dbReceiptQuantity) + dbTax;
dgvReceiptPlan.Rows[e.RowIndex].Cells[12].Value = UtilityClass.MarkNumber(dbTax); //稅額
dgvReceiptPlan.Rows[e.RowIndex].Cells[13].Value = UtilityClass.MarkNumber(dbReceiptAmount); //請款金額
for (int intCount = 0; intCount < dgvReceiptPlan.Rows.Count; intCount++)
{
//重新整理期數 (專案分期模式,不可修改請款計劃)
if (!dgvReceiptPlan.Rows[intCount].IsNewRow)
{
dgvReceiptPlan.Rows[intCount].Cells[3].Value = intCount + 1;
}
}
}
else
{
dbReceiptQuantity = Convert.ToDouble(dgvReceiptPlan.Rows[e.RowIndex].Cells[6].Value);
dbTax = Convert.ToDouble(strReceiptUnitPrice) * dbReceiptQuantity * 0.05;
dbReceiptAmount = Convert.ToDouble(strReceiptUnitPrice) * Convert.ToDouble(dbReceiptQuantity) + dbTax;
dgvReceiptPlan.Rows[e.RowIndex].Cells[12].Value = UtilityClass.MarkNumber(dbTax); //稅額
dgvReceiptPlan.Rows[e.RowIndex].Cells[13].Value = UtilityClass.MarkNumber(dbReceiptAmount); //請款金額
dbSumRestReceiptAmount = string.IsNullOrEmpty(strRestReceiptAmount) ? 0 : Convert.ToDouble(strRestReceiptAmount.Replace(",", "")); //可請款總額
for (int intCount = 0; intCount < dgvReceiptPlan.Rows.Count; intCount++)
{
//重新整理期數
if (!dgvReceiptPlan.Rows[intCount].IsNewRow)
{
dgvReceiptPlan.Rows[intCount].Cells[3].Value = intCount + 1;
}
//重新計算相關資訊
if (strItemNo == (string)dgvReceiptPlan.Rows[intCount].Cells[2].Value)
{
if (strReceiptClass != "")
{
strReceiptQuantity = (string)dgvReceiptPlan.Rows[intCount].Cells[6].Value;
dbSumRestReceipt = dbSumRestReceipt - (string.IsNullOrEmpty(strReceiptQuantity) ? 0 : Convert.ToDouble(strReceiptQuantity));
dgvReceiptPlan.Rows[intCount].Cells[7].Value = UtilityClass.MarkNumber(dbSumRestReceipt, 2);
dbSumRestReceiptAmount = dbSumRestReceiptAmount - Convert.ToDouble(dgvReceiptPlan.Rows[intCount].Cells[13].Value.ToString().Replace(",", ""));
dgvReceiptPlan.Rows[intCount].Cells[14].Value = UtilityClass.MarkNumber(dbSumRestReceiptAmount);
}
}
}
}
}
}
catch (Exception ex)
{
ErrorHandler.WriteErrorLog("PayPlanManagement.cs", ex);
}
}
private void ReArrangePay(DataGridViewCellEventArgs e) //重新整理付款計劃
{
try
{
//物件宣告
string strItemNo = (string)dgvToPayPlan.Rows[e.RowIndex].Cells[2].Value; //項次
string strRestPay = ""; //付款數量
string strPayClass = ""; //付款計算方式 (P:百分比、D:三位一撇)
double dbSumRestPay = 0; //付款總量
string strRestPayAmount = ""; //待付餘額
double dbSumRestPayAmount = 0; //待付總餘額
string strPayUnitPrice = ""; //付款單價
string strPayQuantity = ""; //付款數量
double dbPayQuantity = 0; //付款數量
double dbPayAmount = 0; //付款金額
if (rbPayType.Checked == true)
{
foreach (DataGridViewRow drData in dgvOutSourcingContent.Rows)
{
if (!drData.IsNewRow)
{
strRestPay = (string)drData.Cells["cOutQuantity"].Value;
if (!string.IsNullOrEmpty(strRestPay)) //取得待付數量
{
if (strRestPay.IndexOf("%") != -1)
{
dbSumRestPay += Convert.ToDouble(string.IsNullOrEmpty(strRestPay) ? "0" : strRestPay.Replace("%", ""));
strPayClass = "P";
}
else
{
dbSumRestPay += Convert.ToDouble(string.IsNullOrEmpty(strRestPay) ? "0" : strRestPay.Replace(",", ""));
strPayClass = "D";
}
strRestPayAmount = (string)drData.Cells["cOutAmount"].Value;
dbSumRestPayAmount += Convert.ToDouble(string.IsNullOrEmpty(strRestPayAmount) ? "0" : strRestPayAmount.Replace(",", ""));//取得待付餘額
}
}
}
}
else
{
foreach (DataGridViewRow drData in dgvOutSourcingContent.Rows)
{
if ((string)drData.Cells["cOutOrderItem"].Value == strItemNo)
{
strRestPay = (string)drData.Cells["cOutQuantity"].Value; //取得待付數量
dbSumRestPay = string.IsNullOrEmpty(strRestPay) ? 0 : Convert.ToDouble(strRestPay.Replace(",", ""));
strRestPayAmount = (string)drData.Cells["cOutAmount"].Value; //取得待付餘額
dbSumRestPayAmount = Convert.ToDouble(string.IsNullOrEmpty(strRestPayAmount) ? "0" : strRestPayAmount.Replace(",", ""));
strPayClass = "D";
}
}
}
//變更該筆項目資料
strPayUnitPrice = (string)dgvToPayPlan.Rows[e.RowIndex].Cells[5].Value;
strPayUnitPrice = string.IsNullOrEmpty(strPayUnitPrice) ? "0" : strPayUnitPrice.Replace(",", ""); //付款單價
strPayQuantity = (string)dgvToPayPlan.Rows[e.RowIndex].Cells[6].Value;
if (strPayClass != "")
{
if (strPayClass == "P") //取得請款數量
{
dgvToPayPlan.Columns["cPayItem"].ReadOnly = true;
dgvToPayPlan.AllowUserToAddRows = false;
dbPayQuantity = string.IsNullOrEmpty(strPayQuantity) ? 0 : (Convert.ToDouble(strPayQuantity.Replace("%", "")) / 100);
dbPayAmount = Convert.ToDouble(strPayUnitPrice) * Convert.ToDouble(dbPayQuantity);
dgvToPayPlan.Rows[e.RowIndex].Cells[10].Value = UtilityClass.MarkNumber(dbPayAmount); //付款金額
for (int intCount = 0; intCount < dgvToPayPlan.Rows.Count; intCount++)
{
//重新整理期數 (專案分期模式,不可修改請款計劃)
if (!dgvToPayPlan.Rows[intCount].IsNewRow)
{
dgvToPayPlan.Rows[intCount].Cells[3].Value = intCount + 1;
}
}
}
else
{
dbPayQuantity = Convert.ToDouble(dgvToPayPlan.Rows[e.RowIndex].Cells[6].Value);
dbPayAmount = Convert.ToDouble(strPayUnitPrice) * Convert.ToDouble(dbPayQuantity);
dgvToPayPlan.Rows[e.RowIndex].Cells[10].Value = UtilityClass.MarkNumber(dbPayAmount); //付款金額
dbSumRestPayAmount = string.IsNullOrEmpty(strRestPayAmount) ? 0 : Convert.ToDouble(strRestPayAmount.Replace(",", "")); //可付款總額
for (int intCount = 0; intCount < dgvToPayPlan.Rows.Count; intCount++)
{
//重新整理期數
if (!dgvToPayPlan.Rows[intCount].IsNewRow)
{
dgvToPayPlan.Rows[intCount].Cells[3].Value = intCount + 1;
}
//重新計算相關資訊
if (strItemNo == (string)dgvToPayPlan.Rows[intCount].Cells[2].Value)
{
if (strPayClass != "")
{
strPayQuantity = (string)dgvToPayPlan.Rows[intCount].Cells[6].Value;
dbSumRestPay = dbSumRestPay - (string.IsNullOrEmpty(strPayQuantity) ? 0 : Convert.ToDouble(strPayQuantity.Replace(",", "")));
dgvToPayPlan.Rows[intCount].Cells[7].Value = UtilityClass.MarkNumber(dbSumRestPay, 2);
dbSumRestPayAmount = dbSumRestPayAmount - Convert.ToDouble(dgvToPayPlan.Rows[intCount].Cells[10].Value.ToString().Replace(",", ""));
dgvToPayPlan.Rows[intCount].Cells[11].Value = UtilityClass.MarkNumber(dbSumRestPayAmount);
}
}
}
}
}
}
catch (Exception ex)
{
ErrorHandler.WriteErrorLog("PayPlanManagement.cs", ex);
}
}
public void ReturnCustomer(string[] strCustomerData) //回傳客戶資料
{
txtCustomerID.Text = strCustomerData[0].ToString();
txtCustomerName.Text = strCustomerData[1].ToString();
}
private void GetHistoryList() //取得歷史資料
{
try
{
string strCustomerID = txtCustomerID.Text.Trim();
if (string.IsNullOrEmpty(strCustomerID)) return; //判斷空值即不執行
StringBuilder strPJSQL = new StringBuilder();
strPJSQL.Append("Select ProjectNumber,ProjectCName From OTB_PRJ_ProjectInfo Where CustomerID ='" + strCustomerID + "' ");
if (rbOrderStatusClose.Checked == true)
{
strPJSQL.Append("Union ");
strPJSQL.Append("Select ProjectNumber,ProjectCName From OTB_PRJ_ProjectInfo_Closed Where CustomerID ='" + strCustomerID + "' ");
}
DataTable dtTemp = UtilityClass.GetSQLResult(strPJSQL.ToString()).Tables["Result"];
}
catch (Exception ex)
{
ErrorHandler.WriteErrorLog("PayPlanManagement.cs", ex);
}
}
private string GetSalesOrderNo(string strAccontingBookID) //取得最新訂單編號
{
try
{
string strReturnValue = "";
string strBookID = "";
switch (strAccountingBookID)
{
case "Origtek":
strBookID = "OTK";
break;
case "OrigtekEnergy":
strBookID = "IPS";
break;
}
string strCHKSQL = string.Format("Select CountMax From OTB_SYS_MaxNumber Where Type='ORD' And CountYear ={0} And CountMonth={1}", DateTime.Now.Year, DateTime.Now.Month);
DataTable dtTemp = UtilityClass.GetSQLResult(strCHKSQL).Tables["Result"];
if (dtTemp.Rows.Count > 0)
{
int intMaxNo = Convert.ToInt32(dtTemp.Rows[0]["CountMax"].ToString()) + 1;
string strSQL = string.Format("Update OTB_SYS_MaxNumber Set CountMax = {0} Where Type='ORD' And CountYear ={1} And CountMonth={2}", intMaxNo, DateTime.Now.Year, DateTime.Now.Month);
UtilityClass.RunSQLNonReturn(strSQL);
strReturnValue = strBookID + DateTime.Now.Year.ToString("0000") + DateTime.Now.Month.ToString("00") + intMaxNo.ToString("000");
}
else
{
int intMaxNo = 1;
string strSQL = "Insert OTB_SYS_MaxNumber (Type, CountYear, CountMonth, CountDay, CountMax, CreateUser, CreateDate, ModifyUser, ModifyDate) ";
strSQL += "Values ('ORD','" + DateTime.Now.Year.ToString() + "','" + DateTime.Now.Month.ToString() + "',' ','" + intMaxNo + "','" + strActiveUserID + "',GetDate(),'" + strActiveUserID + "', GetDate())";
UtilityClass.RunSQLNonReturn(strSQL);
strReturnValue = strBookID + DateTime.Now.Year.ToString("0000") + DateTime.Now.Month.ToString("00") + intMaxNo.ToString("000");
}
return strReturnValue;
}
catch (Exception ex)
{
ErrorHandler.WriteErrorLog("PayPlanManagement.cs", ex);
return "";
}
}
public void CountOrderSum() //計算訂單總金額
{
try
{
if (dgvOrderContent.Rows.Count > 0)
{
double dbOrderSum = 0;
foreach (DataGridViewRow rwCount in dgvOrderContent.Rows)
{
string strCount = (string)rwCount.Cells["cAmount"].Value;
if (!string.IsNullOrEmpty(strCount)) dbOrderSum += Convert.ToDouble(strCount.Replace(",", ""));
}
txtOrderSum.Text = UtilityClass.MarkNumber(dbOrderSum);
}
}
catch (Exception ex)
{
ErrorHandler.WriteErrorLog("PayPlanManagement.cs", ex);
}
}
public void CountOutSourcingSum() //計算委外總金額
{
try
{
if (dgvOutSourcingContent.Rows.Count > 0)
{
double dbOutSourcingSum = 0;
foreach (DataGridViewRow rwCount in dgvOutSourcingContent.Rows)
{
string strCount = (string)rwCount.Cells["cOutAmount"].Value;
if (!string.IsNullOrEmpty(strCount)) dbOutSourcingSum += Convert.ToDouble(strCount.Replace(",", ""));
}
txtOutSourcingSum.Text = UtilityClass.MarkNumber(dbOutSourcingSum);
}
}
catch (Exception ex)
{
ErrorHandler.WriteErrorLog("PayPlanManagement.cs", ex);
}
}
private void GetOrderDetail(string strCustomerID, string strCustomerName, string strOrderID, string strProjectName, string strProjectNumber, string strPayType, string strOrderStatus) //取得付款細部資料
{
try
{
//物件宣告
StringBuilder sbSQL = new StringBuilder();
string strSalesOrderNo = ""; //訂單編號
string strOrderItem = ""; //項次(cOrderItem)
string strOrderContent = ""; //採購項目(cOrderContent)
string strUnitPrice = ""; //單價(cUnitPrice)
string strQuantity = ""; //數量(cQuantity)
string strTax = ""; //稅額(cTax、cReceiptTax)
string strMemo = ""; //備註(cOrderMemo)
string strOutOrderItem = ""; //項次(cOutOrderItem)
string strOutOrderContent = ""; //委外項目(cOutOrderContent)
string strOutUnitPrice = ""; //委外單價(cOutUnitPrice)
string strOutQuantity = ""; //委外數量(cOutQuantity)
string strOutMemo = ""; //備註(cOutOrderMemo)
string strReceiptItem = ""; //請款項目
string strItemNo = ""; //項次
string strPhase = ""; //期數
string strReceiptNo = ""; //請款單號
string strReceiptUnitPrice = ""; //請款單價
string strReceiptQuantity = ""; //請款數量
string strRestReceipt = ""; //請款餘量
string strExpectedReceiptDate = ""; //預計請款日期
string strActualReceiptDate = ""; //實際請款日期
string strExpectedReceiptedDate = ""; //預計收款日期
string strActualReceiptedDate = ""; //實際收款日期
string strReceiptAmount = ""; //請款金額
string strRestReceiptAmount = ""; //待請餘額
string strPhaseNo = ""; //期數
string strInvoiceNo = ""; //發票號碼
string strPayItem = ""; //請款項目
string strPayUnitPrice = ""; //請款單價
string strPayQuantity = ""; //請款數量
string strRestPay = ""; //請款餘量
string strExpectedPayDate = ""; //預計付款日期
string strActualPayDate = ""; //實際付款日期
string strPayAmount = ""; //付款金額
string strRestPayAmount = ""; //待付餘額
//取得訂單基本資料
txtCustomerID.Text = strCustomerID;
txtCustomerName.Text = strCustomerName;
txtSalesOrderNo.Text = strOrderID;
txtProjectName.Text = strProjectName;
txtProjectNumber.Text = strProjectNumber;
switch (strPayType) //設定付款方式
{
case "P":
rbPayType.Checked = true;
break;
case "M":
rbPayType1.Checked = true;
break;
case "D":
rbPayType2.Checked = true;
break;
case "H":
rbPayType3.Checked = true;
break;
}
switch (strOrderStatus) //設定訂單狀態
{
case "O":
rbOrderStatusOpen.Checked = true;
rbOrderStatusClose.Checked = false;
break;
case "C":
rbOrderStatusClose.Checked = true;
rbOrderStatusOpen.Checked = false;
break;
case " ":
rbOrderStatusOpen.Checked = true;
rbOrderStatusClose.Checked = false;
break;
}
//取得訂單內容資料
sbSQL.Clear();
sbSQL.Append("Select SalesOrderNo, ItemNo, OrderContent, UnitPrice, Quantity, Tax, Memo From OTB_SAL_OrderContent Where SalesOrderNo = '" + strOrderID + "' Order By ItemNo");
using (DataTable dtTemp = UtilityClass.GetSQLResult(sbSQL.ToString()).Tables["Result"])
{
foreach (DataRow drData in dtTemp.Rows)
{
strOrderItem = (string)drData["ItemNo"];
strSalesOrderNo = (string)drData["SalesOrderNo"];
strOrderContent = (string)drData["OrderContent"];
strUnitPrice = (string)drData["UnitPrice"];
strQuantity = (string)drData["Quantity"];
strTax = (string)drData["Tax"];
strMemo = (string)drData["Memo"];
//產生資料
DataGridViewRow dgvRow = new DataGridViewRow();
dgvRow.CreateCells(dgvOrderContent);
dgvRow.Cells[0].Value = strOrderItem; //項次
strUnitPrice = (string.IsNullOrEmpty(strUnitPrice) ? "" : UtilityClass.DecryptDES(strUnitPrice, strKey)); //單價
strQuantity = (string.IsNullOrEmpty(strQuantity) ? "" : UtilityClass.DecryptDES(strQuantity, strKey)); //數量
strTax = (string.IsNullOrEmpty(strTax) ? "" : UtilityClass.DecryptDES(strTax, strKey)); //稅額
dgvRow.Cells[2].Value = UtilityClass.MarkNumber(strUnitPrice);
dgvRow.Cells[3].Value = UtilityClass.MarkNumber(strQuantity, 2);
dgvRow.Cells[4].Value = UtilityClass.MarkNumber(strTax);
if (strQuantity.IndexOf("%") != -1)
{
dgvRow.Cells[5].Value = UtilityClass.MarkNumber((Convert.ToDouble(strUnitPrice.Replace(",", "")) * Convert.ToDouble(strQuantity.Replace("%", "")) / 100) + Convert.ToDouble(strTax.Replace(",","")));
}
else
{
dgvRow.Cells[5].Value = UtilityClass.MarkNumber((Convert.ToDouble(strUnitPrice.Replace(",", "")) * Convert.ToDouble(strQuantity.Replace(",", ""))) + Convert.ToDouble(strTax.Replace(",", "")));
}
dgvRow.Cells[6].Value = strMemo;
dgvOrderContent.Rows.Add(dgvRow);
}
CountOrderSum();
}
//取得委外內容資料
sbSQL.Clear();
sbSQL.Append("Select SalesOrderNo, ItemNo, OrderContent, UnitPrice, Quantity, Memo From OTB_SAL_OutSourcingContent Where SalesOrderNo = '" + strOrderID + "' Order By ItemNo");
using (DataTable dtOutTemp = UtilityClass.GetSQLResult(sbSQL.ToString()).Tables["Result"])
{
foreach (DataRow drData in dtOutTemp.Rows)
{
strSalesOrderNo = (string)drData["SalesOrderNo"];
strOutOrderItem = (string)drData["ItemNo"];
strOutOrderContent = (string)drData["OrderContent"];
strOutUnitPrice = (string)drData["UnitPrice"];
strOutQuantity = (string)drData["Quantity"];
strOutMemo = (string)drData["Memo"];
//產生資料
DataGridViewRow dgvRow = new DataGridViewRow();
dgvRow.CreateCells(dgvOutSourcingContent);
dgvRow.Cells[0].Value = strOutOrderItem; //項次
strOutUnitPrice = (string.IsNullOrEmpty(strOutUnitPrice) ? "" : UtilityClass.DecryptDES(strOutUnitPrice, strKey)); //單價
strOutQuantity = (string.IsNullOrEmpty(strOutQuantity) ? "" : UtilityClass.DecryptDES(strOutQuantity, strKey)); //數量
dgvRow.Cells[2].Value = UtilityClass.MarkNumber(strOutUnitPrice);
dgvRow.Cells[3].Value = UtilityClass.MarkNumber(strOutQuantity, 2);
if (strOutQuantity.IndexOf("%") != -1)
{
dgvRow.Cells[4].Value = UtilityClass.MarkNumber(Convert.ToDouble(strOutUnitPrice.Replace(",", "")) * Convert.ToDouble(strOutQuantity.Replace("%", "")) / 100);
}
else
{
dgvRow.Cells[4].Value = UtilityClass.MarkNumber(Convert.ToDouble(strOutUnitPrice.Replace(",", "")) * Convert.ToDouble(strOutQuantity.Replace(",", "")));
}
dgvRow.Cells[5].Value = strMemo;
dgvOutSourcingContent.Rows.Add(dgvRow);
}
CountOutSourcingSum();
}
//取得請款計劃
sbSQL.Clear();
sbSQL.Append("Select * From OTB_SAL_ReceiptPlan Where SalesOrderNo = '" + strOrderID + "' Order By Phase");
using (DataTable dtOutTemp = UtilityClass.GetSQLResult(sbSQL.ToString()).Tables["Result"])
{
foreach (DataRow drData in dtOutTemp.Rows)
{
strSalesOrderNo = drData["SalesOrderNo"].ToString();
strItemNo = drData["ItemNo"].ToString(); //項次
strPhase = drData["Phase"].ToString(); //期數
strReceiptNo = drData["ReceiptNo"].ToString(); //請款單號
strReceiptItem = drData["ReceiptItem"].ToString(); //請款項目
strReceiptUnitPrice = drData["ReceiptUnitPrice"].ToString(); //請款單價
strReceiptQuantity = drData["ReceiptQuantity"].ToString(); //請款數量
strRestReceipt = drData["RestReceipt"].ToString(); //請款餘量
strExpectedReceiptDate = drData["ExpectedReceiptDate"].ToString(); //預計請款日期
strActualReceiptDate = drData["ActualReceiptDate"].ToString(); //實際請款日期
strExpectedReceiptedDate = drData["ExpectedReceiptedDate"].ToString(); //預計收款日期
strActualReceiptedDate = drData["ActualReceiptedDate"].ToString(); //實際收款日期
strReceiptAmount = drData["ReceiptAmount"].ToString(); //請款金額
strTax = drData["Tax"].ToString(); //請款金額
strRestReceiptAmount = drData["RestReceiptAmount"].ToString(); //待請餘額
strMemo = drData["Memo"].ToString(); //備註
//產生資料
DataGridViewRow dgvRow = new DataGridViewRow();
dgvRow.CreateCells(dgvReceiptPlan);
dgvRow.Cells[1].Value = strReceiptItem; //請款項目
dgvRow.Cells[2].Value = strItemNo; //項次
dgvRow.Cells[3].Value = strPhase; //期數
dgvRow.Cells[4].Value = strReceiptNo; //請款單號
strReceiptUnitPrice = string.IsNullOrEmpty(strReceiptUnitPrice) ? "" : UtilityClass.DecryptDES(strReceiptUnitPrice, strKey); //請款單價
dgvRow.Cells[5].Value = UtilityClass.MarkNumber(strReceiptUnitPrice);
strReceiptQuantity = string.IsNullOrEmpty(strReceiptQuantity) ? "" : UtilityClass.DecryptDES(strReceiptQuantity, strKey); //請款數量
dgvRow.Cells[6].Value = UtilityClass.MarkNumber(strReceiptQuantity, 2);
strRestReceipt = string.IsNullOrEmpty(strRestReceipt) ? "" : UtilityClass.DecryptDES(strRestReceipt, strKey); //待請餘額
dgvRow.Cells[7].Value = UtilityClass.MarkNumber(strRestReceipt,2);
dgvRow.Cells[8].Value = string.IsNullOrEmpty(strExpectedReceiptDate) ? "" : Convert.ToDateTime(strExpectedReceiptDate).ToString("yyyy/MM/dd"); //預計請款日期
dgvRow.Cells[9].Value = string.IsNullOrEmpty(strActualReceiptDate) ? "" : Convert.ToDateTime(strActualReceiptDate).ToString("yyyy/MM/dd"); //實際請款日期
dgvRow.Cells[10].Value = string.IsNullOrEmpty(strExpectedReceiptedDate) ? "" : Convert.ToDateTime(strExpectedReceiptedDate).ToString("yyyy/MM/dd"); //預計收款日期
dgvRow.Cells[11].Value = string.IsNullOrEmpty(strActualReceiptedDate) ? "" : Convert.ToDateTime(strActualReceiptedDate).ToString("yyyy/MM/dd"); //實際收款日期
strTax = string.IsNullOrEmpty(strTax) ? "" : UtilityClass.DecryptDES(strTax, strKey); //稅額
dgvRow.Cells[12].Value = UtilityClass.MarkNumber(strTax);
strReceiptAmount = string.IsNullOrEmpty(strReceiptAmount) ? "" : UtilityClass.DecryptDES(strReceiptAmount, strKey); //請款金額
dgvRow.Cells[13].Value = UtilityClass.MarkNumber(strReceiptAmount);
strRestReceiptAmount = string.IsNullOrEmpty(strRestReceiptAmount) ? "" : UtilityClass.DecryptDES(strRestReceiptAmount, strKey); //待請餘額
dgvRow.Cells[14].Value = UtilityClass.MarkNumber(strRestReceiptAmount);
dgvRow.Cells[15].Value = strMemo; //備註
if (!string.IsNullOrEmpty(strReceiptNo)) //有請款記錄,設定為唯讀
{
dgvRow.ReadOnly = true;
}
dgvReceiptPlan.Rows.Add(dgvRow);
}
}
//取得付款計劃
sbSQL.Clear();
sbSQL.Append("Select * From OTB_SAL_PayPlan Where SalesOrderNo = '" + strOrderID + "' Order By PhaseNo");
using (DataTable dtOutTemp = UtilityClass.GetSQLResult(sbSQL.ToString()).Tables["Result"])
{
foreach (DataRow drData in dtOutTemp.Rows)
{
strSalesOrderNo = drData["SalesOrderNo"].ToString();
strItemNo = drData["ItemNo"].ToString(); //項次
strPhaseNo = drData["PhaseNo"].ToString(); //期數
strInvoiceNo = drData["InvoiceNo"].ToString(); //發票號碼
strPayItem = drData["PayItem"].ToString(); //請款項目
strPayUnitPrice = drData["PayUnitPrice"].ToString(); //請款單價
strPayQuantity = drData["PayQuantity"].ToString(); //請款數量
strRestPay = drData["RestPay"].ToString(); //請款餘量
strExpectedPayDate = drData["ExpectedPayDate"].ToString(); //預計付款日期
strActualPayDate = drData["ActualPayDate"].ToString(); //實際付款日期
strPayAmount = drData["PayAmount"].ToString(); //付款金額
strRestPayAmount = drData["RestPayAmount"].ToString(); //待付餘額
strMemo = drData["Memo"].ToString(); //備註
//產生資料
DataGridViewRow dgvRow = new DataGridViewRow();
dgvRow.CreateCells(dgvToPayPlan);
dgvRow.Cells[1].Value = strPayItem; //付款項目
dgvRow.Cells[2].Value = strItemNo; //項次
dgvRow.Cells[3].Value = strPhaseNo; //期數
dgvRow.Cells[4].Value = strInvoiceNo; //發票號碼
strPayUnitPrice = (string.IsNullOrEmpty(strPayUnitPrice) ? "" : UtilityClass.DecryptDES(strPayUnitPrice, strKey)); //付款單價
dgvRow.Cells[5].Value = UtilityClass.MarkNumber(strPayUnitPrice);
strPayQuantity = (string.IsNullOrEmpty(strPayQuantity) ? "" : UtilityClass.DecryptDES(strPayQuantity, strKey)); //付款數量
dgvRow.Cells[6].Value = UtilityClass.MarkNumber(strPayQuantity, 2);
strRestPay = (string.IsNullOrEmpty(strRestPay) ? "" : UtilityClass.DecryptDES(strRestPay, strKey)); //待付餘額
dgvRow.Cells[7].Value = UtilityClass.MarkNumber(strRestPay,2);
dgvRow.Cells[8].Value = (string.IsNullOrEmpty(strExpectedPayDate) ? "" : Convert.ToDateTime(strExpectedPayDate).ToString("yyyy/MM/dd")); //預計付款日期
dgvRow.Cells[9].Value = (string.IsNullOrEmpty(strActualPayDate) ? "" : Convert.ToDateTime(strActualPayDate).ToString("yyyy/MM/dd")); //實際付款日期
strPayAmount = (string.IsNullOrEmpty(strPayAmount) ? "" : UtilityClass.DecryptDES(strPayAmount, strKey)); //付款金額
dgvRow.Cells[10].Value = UtilityClass.MarkNumber(strPayAmount);
strRestPayAmount = (string.IsNullOrEmpty(strRestPayAmount) ? "" : UtilityClass.DecryptDES(strRestPayAmount, strKey)); //待付餘額
dgvRow.Cells[11].Value = UtilityClass.MarkNumber(strRestPayAmount);
dgvRow.Cells[12].Value = strMemo; //備註
if (!string.IsNullOrEmpty(strInvoiceNo)) //有付款記錄,設定為唯讀
{
dgvRow.ReadOnly = true;
}
dgvToPayPlan.Rows.Add(dgvRow);
}
}
}
catch (Exception ex)
{
ErrorHandler.WriteErrorLog("PayPlanManagement.cs", ex);
}
}
public void CreateAR(DataGridViewCellEventArgs e) //增加應收帳款記錄
{
try
{
//物件宣告
string strCustomerID = "";
string strCustomerName = "";
string strSalesOrderNo = "";
string strProjectCName = "";
string strProjectNumber = "";
string strReceiptNo = "";
string strReceiptDate = "";
string strReceiptAmount = "";
string strMemo = "";
string strDC = "";
string strSubAccountingForAR = "";
string strXMLPath = ConfigurationManager.AppSettings["XMLFilePath"].ToString() + this.Name.ToString() + "_Receipt.xml";
if (File.Exists(strXMLPath))
{
XDocument xmlContent = XDocument.Load(strXMLPath);
foreach (XElement xmlData in xmlContent.Descendants("Accounting"))
{
strDC = xmlData.Element("SubAccounting").Attribute("DC").Value.ToString();
switch (strDC)
{
case "D": //取得應收帳款的分錄編號
strSubAccountingForAR = xmlData.Element("SubAccounting").Value.ToString();
break;
}
}
//增加應收帳款
using (SqlDataAdapter sqlAdapter = new SqlDataAdapter())
{
string strSQL = "Insert Into OTB_FNC_AccountReceivable (AccountingBookID, SalesOrderNo, ProjectNumber, ProjectCName, ReceiptNo, CustomerID, CustomerName, ActualReceiptDate, ReceiptAmount, ReceiveStatus, Memo, CreateDate, CreateUser, ModifyDate, ModifyUser) Values ";
strSQL += "(@AccountingBookID, @SalesOrderNo, @ProjectNumber,@ProjectCName, @ReceiptNo, @CustomerID, @CustomerName, @ActualReceiptDate, @ReceiptAmount, 'N', @Memo, Getdate(), @CreateUser, Getdate(), @ModifyUser)";
strCustomerID = txtCustomerID.Text.Trim();
strCustomerName = txtCustomerName.Text.Trim();
strSalesOrderNo = txtSalesOrderNo.Text.Trim();
strProjectNumber = txtProjectNumber.Text.Trim();
strProjectCName = txtProjectName.Text.Trim();
strReceiptNo = (string)dgvReceiptPlan.Rows[e.RowIndex].Cells["cReceiptNo"].Value;
strReceiptDate = (string)dgvReceiptPlan.Rows[e.RowIndex].Cells["cActualReceiptDate"].Value;
strReceiptAmount = (string)dgvReceiptPlan.Rows[e.RowIndex].Cells["cReceiptAmount"].Value;
strMemo = (string)dgvReceiptPlan.Rows[e.RowIndex].Cells["cMemo"].Value;
//添加參數
sqlAdapter.InsertCommand = new SqlCommand();
sqlAdapter.InsertCommand.Connection = sqlConn;
sqlAdapter.InsertCommand.Transaction = sqlTran;
sqlAdapter.InsertCommand.CommandText = strSQL;
sqlAdapter.InsertCommand.Parameters.AddRange
(
new SqlParameter[]
{
new SqlParameter("@AccountingBookID",string.IsNullOrEmpty(strAccountingBookID) ? "" : strAccountingBookID),
new SqlParameter("@SalesOrderNo",string.IsNullOrEmpty(strSalesOrderNo) ? "" : strSalesOrderNo),
new SqlParameter("@ProjectNumber",string.IsNullOrEmpty(strProjectNumber) ? "" : strProjectNumber),
new SqlParameter("@ProjectCName",string.IsNullOrEmpty(strProjectCName) ? "" : strProjectCName),
new SqlParameter("@ReceiptNo",string.IsNullOrEmpty(strReceiptNo) ? "" : strReceiptNo),
new SqlParameter("@CustomerID",string.IsNullOrEmpty(strCustomerID) ? "" : strCustomerID),
new SqlParameter("@CustomerName",string.IsNullOrEmpty(strCustomerName) ? "" : strCustomerName),
new SqlParameter("@ReceiptAmount",string.IsNullOrEmpty(strReceiptAmount) ? "" : UtilityClass.EncryptDES(strReceiptAmount,strKey)),
new SqlParameter("@Memo",string.IsNullOrEmpty(strMemo) ? "" : strMemo),
new SqlParameter("@CreateUser",strActiveUserID),
new SqlParameter("@ModifyUser",strActiveUserID)
}
);
SqlParameter spActualReceiptDate = new SqlParameter("@ActualReceiptDate", SqlDbType.DateTime);
spActualReceiptDate.Value = !UtilityClass.IsDate(strReceiptDate) ? null : strReceiptDate + " 00:00:00";
sqlAdapter.InsertCommand.Parameters.Add(spActualReceiptDate);
if (sqlConn.State == ConnectionState.Closed) //判斷連線狀態
{
sqlConn.Open();
}
sqlAdapter.InsertCommand.ExecuteNonQuery();
}
}
}
catch (Exception ex)
{
throw ex;
}
}
public void CreateAP(DataGridViewCellEventArgs e) //增加應付帳款記錄
{
try
{
//物件宣告
string strCustomerID = "";
string strCustomerName = "";
string strSalesOrderNo = "";
string strProjectNumber = "";
string strProjectCName = "";
string strInvoiceNo = "";
string strActualPaiedDate = "";
string strPayAmount = "";
string strMemo = "";
string strDC = "";
string strSubAccountingForAP = "";
string strXMLPath = ConfigurationManager.AppSettings["XMLFilePath"].ToString() + this.Name.ToString() + "_Pay.xml";
if (File.Exists(strXMLPath))
{
XDocument xmlContent = XDocument.Load(strXMLPath);
foreach (XElement xmlData in xmlContent.Descendants("Accounting"))
{
strDC = xmlData.Element("SubAccounting").Attribute("DC").Value.ToString();
switch (strDC)
{
case "C": //取得應付帳款的分錄編號
strSubAccountingForAP = xmlData.Element("SubAccounting").Value.ToString();
break;
}
}
//增加應付帳款
using (SqlDataAdapter sqlAdapter = new SqlDataAdapter())
{
string strSQL = "Insert Into OTB_FNC_AccountPayable (AccountingBookID, SalesOrderNo, ProjectNumber, ProjectCName, InvoiceNo, CustomerID, CustomerName, ActualPaiedDate, PayAmount, PayStatus, Memo, CreateDate, CreateUser, ModifyDate, ModifyUser) Values ";
strSQL += "(@AccountingBookID, @SalesOrderNo, @ProjectNumber, @ProjectCName, @InvoiceNo, @CustomerID, @CustomerName, @ActualPaiedDate, @PayAmount, 'N', @Memo, Getdate(), @CreateUser, Getdate(), @ModifyUser)";
strCustomerID = txtCustomerID.Text.Trim();
strCustomerName = txtCustomerName.Text.Trim();
strSalesOrderNo = txtSalesOrderNo.Text.Trim();
strProjectNumber = txtProjectNumber.Text.Trim();
strProjectCName = txtProjectName.Text.Trim();
strInvoiceNo = (string)dgvToPayPlan.Rows[e.RowIndex].Cells["cInvoiceNo"].Value;
strActualPaiedDate = (string)dgvToPayPlan.Rows[e.RowIndex].Cells["cActualPaiedDate"].Value;
strPayAmount = (string)dgvToPayPlan.Rows[e.RowIndex].Cells["cPayAmount"].Value;
strMemo = (string)dgvToPayPlan.Rows[e.RowIndex].Cells["cPayMemo"].Value;
//添加參數
sqlAdapter.InsertCommand = new SqlCommand();
sqlAdapter.InsertCommand.Connection = sqlConn;
sqlAdapter.InsertCommand.Transaction = sqlTran;
sqlAdapter.InsertCommand.CommandText = strSQL;
sqlAdapter.InsertCommand.Parameters.AddRange
(
new SqlParameter[]
{
new SqlParameter("@AccountingBookID",string.IsNullOrEmpty(strAccountingBookID) ? "" : strAccountingBookID),
new SqlParameter("@SalesOrderNo",string.IsNullOrEmpty(strSalesOrderNo) ? "" : strSalesOrderNo),
new SqlParameter("@ProjectNumber",string.IsNullOrEmpty(strProjectNumber) ? "" : strProjectNumber),
new SqlParameter("@ProjectCName",string.IsNullOrEmpty(strProjectCName) ? "" : strProjectCName),
new SqlParameter("@InvoiceNo",string.IsNullOrEmpty(strInvoiceNo) ? "" : strInvoiceNo),
new SqlParameter("@CustomerID",string.IsNullOrEmpty(strCustomerID) ? "" : strCustomerID),
new SqlParameter("@CustomerName",string.IsNullOrEmpty(strCustomerName) ? "" : strCustomerName),
new SqlParameter("@PayAmount",string.IsNullOrEmpty(strPayAmount) ? "" : UtilityClass.EncryptDES(strPayAmount,strKey)),
new SqlParameter("@Memo",string.IsNullOrEmpty(strMemo) ? "" : strMemo),
new SqlParameter("@CreateUser",strActiveUserID),
new SqlParameter("@ModifyUser",strActiveUserID)
}
);
SqlParameter spActualPayDate = new SqlParameter("@ActualPaiedDate", SqlDbType.DateTime);
spActualPayDate.Value = !UtilityClass.IsDate(strActualPaiedDate) ? null : strActualPaiedDate + " 00:00:00";
sqlAdapter.InsertCommand.Parameters.Add(spActualPayDate);
if (sqlConn.State == ConnectionState.Closed) //判斷連線狀態
{
sqlConn.Open();
}
sqlAdapter.InsertCommand.ExecuteNonQuery();
}
}
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region 事件觸發及問題處理
private void PayPlanManagement_Load(object sender, EventArgs e)
{
SetupStatus();
LockForm();
GetOrderList();
}
private void tsbExit_Click(object sender, EventArgs e)
{
this.Close();
}
private void btnGetCustomer_Click(object sender, EventArgs e)
{
PickCustomer pkItemForm = new PickCustomer();
pkItemForm.txtCustomerName.Text = txtCustomerName.Text.Trim();
pkItemForm.strOwnerForm = "PayPlanManagement";
pkItemForm.Owner = this;
pkItemForm.StartPosition = FormStartPosition.CenterParent;
pkItemForm.ShowDialog();
}
private void tsbClean_Click(object sender, EventArgs e)
{
CleanForm();
}
private void tsbCancel_Click(object sender, EventArgs e)
{
CleanToolbar();
StatusChange("NONE");
}
private void tsbSearch_Click(object sender, EventArgs e)
{
StatusChange("SEARCH");
}
private void tsbDelete_Click(object sender, EventArgs e)
{
if (txtSalesOrderNo.Text.Trim() == "")
{
MessageBox.Show("請選擇要刪除的訂單請款資料", "提示");
}
else
{
if (MessageBox.Show("請問您是否要刪除本訂單的相關請款資料?", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
try
{
if (sqlConn.State == ConnectionState.Closed) //判斷連線狀態
{
sqlConn.Open();
}
sqlTran = sqlConn.BeginTransaction();
StringBuilder sbSQL = new StringBuilder();
string strSalesOrderNo = txtSalesOrderNo.Text.Trim();
//清除訂單及委外內容
using (SqlDataAdapter sqlAdapter = new SqlDataAdapter())
{
sbSQL.Clear();
sbSQL.Append("Delete OTB_SAL_OrderList Where SalesOrderNo = @SalesOrderNo ");
sbSQL.Append("Delete OTB_SAL_OrderContent Where SalesOrderNo = @SalesOrderNo ");
sbSQL.Append("Delete OTB_SAL_OutSourcingContent Where SalesOrderNo = @SalesOrderNo ");
//添加參數
sqlAdapter.DeleteCommand = new SqlCommand();
sqlAdapter.DeleteCommand.Connection = sqlConn;
sqlAdapter.DeleteCommand.Transaction = sqlTran;
sqlAdapter.DeleteCommand.CommandText = sbSQL.ToString();
sqlAdapter.DeleteCommand.Parameters.AddRange
(
new SqlParameter[]
{
new SqlParameter("@SalesOrderNo",string.IsNullOrEmpty(strSalesOrderNo) ? "" : strSalesOrderNo)
}
);
sqlAdapter.DeleteCommand.ExecuteNonQuery();
sqlTran.Commit();
StatusChange("SEARCH");
GoEvent();
}
}
catch (Exception ex)
{
ErrorHandler.WriteErrorLog("PayPlanManagement.cs", ex);
sqlTran.Rollback();
}
}
}
}
private void tsbEdit_Click(object sender, EventArgs e)
{
if (txtProjectName.Text.Trim() == "")
{
MessageBox.Show("請選擇要修改的資料!", "提示");
return;
}
else
{
StatusChange("MODIFY");
dgvOrderList.ReadOnly = true;
if (txtSalesOrderNo.Text != "")
{
txtSalesOrderNo.ReadOnly = true;
btnGetSalesOrderNo.Enabled = false;
txtCustomerName.ReadOnly = true;
btnGetCustomer.Enabled = false;
txtProjectName.ReadOnly = true;
tcOrderData.SelectedTab = OrderTab;
btnArrangeProject.Enabled = true;
btnArrangToPayProject.Enabled = true;
rbOrderStatusClose.Enabled = true;
rbOrderStatusOpen.Enabled = true;
}
}
}
private void tsbOK_Click(object sender, EventArgs e)
{
try
{
GoEvent();
//還原Toolbar狀態
tsbSearch.Enabled = true;
tsbOK.Visible = false;
//關閉查詢條件
LockForm();
StatusChange("NONE");
}
catch (Exception ex)
{
ErrorHandler.WriteErrorLog("PayPlanManagement.cs", ex);
}
}
private void cbHistory_CheckedChanged(object sender, EventArgs e)
{
GetHistoryList();
}
private void dgvOrderList_CellClick(object sender, DataGridViewCellEventArgs e)
{
CleanForm();
LockForm();
string strCustomerID = dgvOrderList.CurrentRow.Cells["cCustomerID"].Value.ToString();
string strCustomerName = dgvOrderList.CurrentRow.Cells["cCustomerName"].Value.ToString();
string strSalesOrderID = dgvOrderList.CurrentRow.Cells["cOrderID"].Value.ToString();
string strProjectName = dgvOrderList.CurrentRow.Cells["cProjectName"].Value.ToString();
string strProjectNumber = dgvOrderList.CurrentRow.Cells["cProjectNumber"].Value.ToString();
string strPayType = dgvOrderList.CurrentRow.Cells["cPayType"].Value.ToString();
string strOrderStatus = dgvOrderList.CurrentRow.Cells["cOrderStatus"].Value.ToString();
((MainForm)ParentForm).SsStatus.Items["tsslModifyUser"].Text = dgvOrderList.CurrentRow.Cells["cModifyUser"].Value.ToString();
((MainForm)ParentForm).SsStatus.Items["tsslModifyDate"].Text = dgvOrderList.CurrentRow.Cells["cModifyDate"].Value.ToString();
GetOrderDetail(strCustomerID, strCustomerName, strSalesOrderID, strProjectName, strProjectNumber, strPayType, strOrderStatus);
UtilityClass.SetGridColor(dgvOrderContent);
UtilityClass.SetGridColor(dgvOutSourcingContent);
UtilityClass.SetGridColor(dgvReceiptPlan);
UtilityClass.SetGridColor(dgvToPayPlan);
}
private void tsbSave_Click(object sender, EventArgs e)
{
GoEvent(); //儲存作業
}
private void btnGetSalesOrderNo_Click(object sender, EventArgs e)
{
txtSalesOrderNo.Text = GetSalesOrderNo(strAccountingBookID);
}
private void dgvOrderContent_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
//設定項次
string strOrderItem = (string)dgvOrderContent.Rows[e.RowIndex].Cells[0].Value;
if (!string.IsNullOrEmpty(strOrderItem))
{
string strSQL = "Select OrderContent From OTB_SAL_OrderContent Where SalesOrderNo='" + txtSalesOrderNo.Text.Trim() + "' And ItemNo = '" + strOrderItem + "'";
string strPayContent = UtilityClass.GetSQLResult(strSQL).Tables["Result"].Rows[0]["OrderContent"].ToString();
//設定採購項目
DataGridViewComboBoxCell cbCell = (DataGridViewComboBoxCell)dgvOrderContent.Rows[e.RowIndex].Cells["cOrderContent"];
cbCell.DataSource = UtilityClass.GetSystemArgument("PayItem", "zh-TW").Tables["Arguments"];
cbCell.DisplayMember = "ArgumentValue";
cbCell.ValueMember = "ArgumentID";
cbCell.Value = strPayContent;
}
}
private void dgvOrderContent_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
//物件宣告
string strUnitPrice = "";
string strQuantity = "";
string strTax = "";
string strSub = "";
//Cell[0] : 項次(cOrderItem)
//Cell[1] : 採購項目(cOrderContent)
//Cell[2] : 單價(cUnitPrice)
//Cell[3] : 數量(cQuantity)
//Cell[4] : 稅額(cTax)
//Cell[5] : 總計(cAmount)
//加上三位一撇效果
if (dgvOrderContent.Columns[e.ColumnIndex].Name == "cUnitPrice")
{
strUnitPrice = (string)dgvOrderContent.Rows[e.RowIndex].Cells["cUnitPrice"].Value;
if (string.IsNullOrEmpty(strUnitPrice))
{
return;
}
else
{
dgvOrderContent.Rows[e.RowIndex].Cells["cUnitPrice"].Value = UtilityClass.MarkNumber(strUnitPrice);
}
}
if (dgvOrderContent.Columns[e.ColumnIndex].Name == "cQuantity")
{
strQuantity = (string)dgvOrderContent.Rows[e.RowIndex].Cells["cQuantity"].Value;
if (string.IsNullOrEmpty(strQuantity))
{
return;
}
else
{
dgvOrderContent.Rows[e.RowIndex].Cells["cQuantity"].Value = UtilityClass.MarkNumber(strQuantity, 2);
}
}
if (dgvOrderContent.Columns[e.ColumnIndex].Name == "cTax")
{
strTax = (string)dgvOrderContent.Rows[e.RowIndex].Cells["cTax"].Value;
if (string.IsNullOrEmpty(strTax))
{
return;
}
else
{
dgvOrderContent.Rows[e.RowIndex].Cells["cTax"].Value = UtilityClass.MarkNumber(strTax);
}
}
//數量變動
if (dgvOrderContent.Columns[e.ColumnIndex].Name.ToString() == "cQuantity" | dgvOrderContent.Columns[e.ColumnIndex].Name.ToString() == "cUnitPrice")
{
strUnitPrice = (string)dgvOrderContent.Rows[e.RowIndex].Cells["cUnitPrice"].Value;
strQuantity = (string)dgvOrderContent.Rows[e.RowIndex].Cells["cQuantity"].Value;
strTax = (string)dgvOrderContent.Rows[e.RowIndex].Cells["cTax"].Value;
if (!string.IsNullOrEmpty(strUnitPrice) & !string.IsNullOrEmpty(strQuantity))
{
if (strQuantity.IndexOf("%") == -1)
{
strSub = (Convert.ToDouble(strUnitPrice.Replace(",", "")) * Convert.ToDouble(strQuantity.Replace(",", ""))).ToString();
double dbTax = Convert.ToDouble(strSub.Replace(",", "")) * 0.05;
dgvOrderContent.Rows[e.RowIndex].Cells["cTax"].Value = Utility.UtilityClass.MarkNumber(dbTax.ToString());
dgvOrderContent.Rows[e.RowIndex].Cells["cAmount"].Value = UtilityClass.MarkNumber(Convert.ToDouble(strSub) + dbTax);
}
else
{
strSub = (Convert.ToDouble(strUnitPrice.Replace(",", "")) * Convert.ToDouble(strQuantity.Replace("%", "")) / 100).ToString();
double dbTax = Convert.ToDouble(strSub.Replace(",", "")) * 0.05;
dgvOrderContent.Rows[e.RowIndex].Cells["cTax"].Value = Utility.UtilityClass.MarkNumber(dbTax.ToString());
dgvOrderContent.Rows[e.RowIndex].Cells["cAmount"].Value = UtilityClass.MarkNumber(Convert.ToDouble(strSub) + dbTax);
}
}
}
CountOrderSum(); //重新計算訂單總金額
}
private void dgvOrderContent_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
//物件宣告
string strUnitPrice = "";
string strQuantity = "";
//Cell[0] : 項次(cOrderItem)
//Cell[1] : 採購項目(cOrderContent)
//Cell[2] : 單價(cUnitPrice)
//Cell[3] : 數量(cQuantity)
//Cell[4] : 總計(cAmount)
if (dgvOrderContent.Columns[e.ColumnIndex].Name == "cUnitPrice")
{
strUnitPrice = (string)dgvOrderContent.Rows[e.RowIndex].Cells["cUnitPrice"].Value;
if (string.IsNullOrEmpty(strUnitPrice))
{
return;
}
else
{
dgvOrderContent.Rows[e.RowIndex].Cells["cUnitPrice"].Value = strUnitPrice.Replace(",", "");
}
}
if (dgvOrderContent.Columns[e.ColumnIndex].Name == "cQuantity")
{
strQuantity = (string)dgvOrderContent.Rows[e.RowIndex].Cells["cQuantity"].Value;
if (string.IsNullOrEmpty(strQuantity))
{
return;
}
else
{
dgvOrderContent.Rows[e.RowIndex].Cells["cQuantity"].Value = strQuantity.Replace(",", "");
}
}
}
private void dgvOrderContent_RowEnter(object sender, DataGridViewCellEventArgs e)
{
dgvOrderContent.Rows[e.RowIndex].Cells["cOrderItem"].Value = (e.RowIndex + 1).ToString();
DataGridViewComboBoxCell cbCell = (DataGridViewComboBoxCell)dgvOrderContent.Rows[e.RowIndex].Cells["cOrderContent"];
if (cbCell.Items.Count == 0)
{
cbCell.DataSource = UtilityClass.GetSystemArgument("PayItem", "zh-TW").Tables["Arguments"];
cbCell.DisplayMember = "ArgumentValue";
cbCell.ValueMember = "ArgumentID";
}
}
private void dgvOrderContent_RowValidating(object sender, DataGridViewCellCancelEventArgs e)
{
string strErrorMsg = "";
int intMsgCount = 0;
try
{
//進行資料檢查
DataGridViewComboBoxCell cbCheck = (DataGridViewComboBoxCell)dgvOrderContent.Rows[e.RowIndex].Cells["cOrderContent"];
if (string.IsNullOrEmpty((string)cbCheck.Value))
{
strErrorMsg = "請選擇採購項目";
intMsgCount += 1;
}
if (string.IsNullOrEmpty((string)dgvOrderContent.Rows[e.RowIndex].Cells["cUnitPrice"].Value))
{
strErrorMsg = "請輸入採購單價";
intMsgCount += 1;
}
if (string.IsNullOrEmpty((string)dgvOrderContent.Rows[e.RowIndex].Cells["cQuantity"].Value))
{
strErrorMsg = "請輸入採購數量";
intMsgCount += 1;
}
//else if(!rbPayType.Checked == true)
//{
// if (dgvOrderContent.Rows[e.RowIndex].Cells["cQuantity"].Value.ToString().IndexOf("%") != -1)
// {
// strErrorMsg = "請款方式為專案形態才能以百分比方式請款!";
// intMsgCount += 1;
// }
//}
if (strErrorMsg != "" && intMsgCount < 3)
{
dgvOrderContent.Rows[e.RowIndex].ErrorText = strErrorMsg;
e.Cancel = true;
}
}
catch (Exception ex)
{
ErrorHandler.WriteErrorLog("PayPlanManagement.cs", ex);
}
}
private void dgvOrderContent_RowValidated(object sender, DataGridViewCellEventArgs e)
{
dgvOrderContent.Rows[e.RowIndex].ErrorText = "";
}
private void btnArrangeProject_Click(object sender, EventArgs e)
{
string strPayType = "";
int intPayPlanItem = 1;
string strReceiptNo = ""; //發票編號
string strOrderSum = "0"; //訂單總金額
string strAmount = "0"; //請款金額
string strBalance = "0"; //餘額
string strQuantity = "0"; //數量
string strQuantityStyle = ""; //數量呈現模式(P:百分比、D:三位一撇)
string strQuantityAmount = "0"; //訂單總量
string strReceiptUnitPrice = "0"; //請款單價
string strReceiptQuantity = "0"; //請款數量
string strRestQuantity = "0"; //請款餘量
string strTax = "0"; //稅額
bool blFound = true; //允許建立
if (MessageBox.Show("請問您是否確認要產生請款計劃?", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
foreach (DataGridViewRow drData in dgvReceiptPlan.Rows)
{
strReceiptNo = (string)drData.Cells["cReceiptNo"].Value;
if (!string.IsNullOrEmpty(strReceiptNo))
{
MessageBox.Show("目前已有請款計劃,無法重新產生請款計劃!", "提示");
return;
}
}
dgvReceiptPlan.Rows.Clear(); //重新產生,先清除舊資料
//取得資訊
if (rbPayType.Checked == true)
{
strPayType = "P"; //專案類別
foreach (DataGridViewRow drData in dgvOrderContent.Rows) //數量加總
{
strQuantity = (string)drData.Cells["cQuantity"].Value;
if (!string.IsNullOrEmpty(strQuantity))
{
if (strQuantity.IndexOf("%") == -1)
{
strQuantityAmount = ((string.IsNullOrEmpty(strQuantityAmount) ? 0 : Convert.ToDouble(strQuantityAmount)) + Convert.ToDouble(strQuantity.Replace(",", ""))).ToString();
strQuantityStyle = "D";
}
else
{
strQuantityAmount = ((string.IsNullOrEmpty(strQuantityAmount) ? 0 : Convert.ToDouble(strQuantityAmount)) + Convert.ToDouble(strQuantity.Replace("%", ""))).ToString();
strQuantityStyle = "P";
}
}
strAmount = (string)drData.Cells["cAmount"].Value; //小計加總
strOrderSum = (Convert.ToDouble(strOrderSum) + (string.IsNullOrEmpty(strAmount) ? 0 : Convert.ToDouble(strAmount.Replace(",", "")))).ToString();
}
switch (strQuantityStyle)
{
case "P":
strQuantityAmount += "%";
break;
case "D":
strQuantityAmount = UtilityClass.MarkNumber(strQuantityAmount, 2);
break;
}
}
if (rbPayType1.Checked == true)
{
strPayType = "M"; //人月類別
foreach (DataGridViewRow drData in dgvOrderContent.Rows)
{
strAmount = (string)drData.Cells["cAmount"].Value;
strOrderSum = (Convert.ToDouble(strOrderSum) + (string.IsNullOrEmpty(strAmount) ? 0 : Convert.ToDouble(strAmount.Replace(",", "")))).ToString();
}
}
if (rbPayType2.Checked == true)
{
strPayType = "D";
}
if (rbPayType3.Checked == true)
{
strPayType = "H";
}
//資料處理
switch (strPayType)
{
case "P":
strBalance = strOrderSum; //訂單總金額
strRestQuantity = strQuantityAmount; //總數量
foreach (DataGridViewRow drData in dgvOrderContent.Rows)
{
DataGridViewComboBoxCell cbCHeck = (DataGridViewComboBoxCell)drData.Cells["cOrderContent"];
if (!string.IsNullOrEmpty((string)cbCHeck.Value))
{
DataGridViewRow dgvRow = new DataGridViewRow();
dgvRow.CreateCells(dgvReceiptPlan);
DataGridViewComboBoxCell cbCell = (DataGridViewComboBoxCell)dgvRow.Cells[1];
if (cbCell.Items.Count == 0)
{
cbCell.DataSource = UtilityClass.GetSystemArgument("PayItem", "zh-TW").Tables["Arguments"];
cbCell.DisplayMember = "ArgumentValue";
cbCell.ValueMember = "ArgumentID";
}
cbCell.Value = drData.Cells["cOrderContent"].Value; //請款項目
dgvRow.Cells[2].Value = drData.Cells["cOrderItem"].Value; //項次
dgvRow.Cells[3].Value = (intPayPlanItem++).ToString(); //期數
strReceiptUnitPrice = (string)drData.Cells["cUnitPrice"].Value;
dgvRow.Cells[5].Value = string.IsNullOrEmpty(strReceiptUnitPrice) ? "" : strReceiptUnitPrice; //請款單價
strReceiptQuantity = (string)drData.Cells["cQuantity"].Value;
dgvRow.Cells[6].Value = string.IsNullOrEmpty(strReceiptQuantity) ? "" : strReceiptQuantity; //請款數量
if (strQuantityAmount.IndexOf("%") != -1) //請款餘量
{
strRestQuantity = ((string.IsNullOrEmpty(strRestQuantity) ? 0 : Convert.ToDouble(strRestQuantity.Replace("%", ""))) - (string.IsNullOrEmpty(strReceiptQuantity) ? 0 : Convert.ToDouble(strReceiptQuantity.Replace("%", "")))).ToString() + "%";
dgvRow.Cells[7].Value = strRestQuantity;
}
else if (strQuantityAmount.IndexOf(",") != -1)
{
strRestQuantity = ((string.IsNullOrEmpty(strRestQuantity) ? 0 : Convert.ToDouble(strRestQuantity.Replace(",", ""))) - (string.IsNullOrEmpty(strReceiptQuantity) ? 0 : Convert.ToDouble(strReceiptQuantity.Replace(",", "")))).ToString();
dgvRow.Cells[7].Value = UtilityClass.MarkNumber(strRestQuantity, 2);
}
strAmount = (string)drData.Cells["cAmount"].Value; //請款金額
strTax = (Convert.ToDouble(strAmount.Replace(",", "")) / 1.05 * 0.05).ToString();
dgvRow.Cells[12].Value = string.IsNullOrEmpty(strAmount) ? "0" : UtilityClass.MarkNumber(strTax); //稅額
dgvRow.Cells[13].Value = string.IsNullOrEmpty(strAmount) ? "" : strAmount;
strBalance = ((string.IsNullOrEmpty(strBalance) ? 0 : Convert.ToDouble(strBalance.Replace(",", ""))) - (string.IsNullOrEmpty(strAmount) ? 0 : Convert.ToDouble(strAmount.Replace(",", "")))).ToString();
dgvRow.Cells[14].Value = UtilityClass.MarkNumber(strBalance); //待請餘額
dgvReceiptPlan.Rows.Add(dgvRow);
}
}
break;
case "M":
dgvReceiptPlan.Rows.Clear(); //重新產生計劃
double dbQuantity = 0;
double dbRestReceiptQuantity = 0;
double dbBalance = 0;
double dbSpendQuantity = 0;
double dbAmount = 0;
//確認每個月請款數量
InputDialog frmInput = new InputDialog();
frmInput.lbQuestionMessage.Text = "請輸入每月請款人力數!";
frmInput.txtInput.Text = "1";
frmInput.StartPosition = FormStartPosition.CenterParent;
DialogResult dr = frmInput.ShowDialog();
if (dr == DialogResult.OK)
{
dbSpendQuantity = Convert.ToDouble(frmInput.GetMsg());
}
foreach (DataGridViewRow drData in dgvOrderContent.Rows)
{
dbQuantity = 0;
strQuantity = (string)drData.Cells["cQuantity"].Value; //數量
dbRestReceiptQuantity = Convert.ToDouble(string.IsNullOrEmpty(strQuantity) ? 0 : Convert.ToDouble(strQuantity.Replace(",", "")));
dbAmount = Convert.ToDouble(drData.Cells["cAmount"].Value);
dbBalance = string.IsNullOrEmpty(dbAmount.ToString()) ? 0 : dbAmount;
DataGridViewComboBoxCell cbCHeck = (DataGridViewComboBoxCell)drData.Cells["cOrderContent"];
blFound = false;
if (!drData.IsNewRow)
{
dbQuantity = Convert.ToDouble(drData.Cells["cQuantity"].Value.ToString());
for (double dbCount = 1; dbCount <= dbQuantity; dbCount++)
{
DataGridViewRow dgvRow = new DataGridViewRow();
dgvRow.CreateCells(dgvReceiptPlan);
DataGridViewComboBoxCell cbCell = (DataGridViewComboBoxCell)dgvRow.Cells[1];
if (cbCell.Items.Count == 0)
{
cbCell.DataSource = UtilityClass.GetSystemArgument("PayItem", "zh-TW").Tables["Arguments"];
cbCell.DisplayMember = "ArgumentValue";
cbCell.ValueMember = "ArgumentID";
}
cbCell.Value = cbCHeck.Value; //請款項目
dgvRow.Cells[2].Value = drData.Cells["cOrderItem"].Value; //項次
dgvRow.Cells[3].Value = (intPayPlanItem++).ToString(); //期數
strReceiptUnitPrice = (string)drData.Cells["cUnitPrice"].Value;
dgvRow.Cells[5].Value = string.IsNullOrEmpty(strReceiptUnitPrice) ? "" : strReceiptUnitPrice; //請款單價
if (dbRestReceiptQuantity >= dbSpendQuantity)
{
dgvRow.Cells[6].Value = UtilityClass.MarkNumber(dbSpendQuantity, 2); //請款數量
dbRestReceiptQuantity = dbRestReceiptQuantity - dbSpendQuantity;
dgvRow.Cells[7].Value = UtilityClass.MarkNumber(dbRestReceiptQuantity, 2); //請款餘量
}
else
{
dgvRow.Cells[6].Value = UtilityClass.MarkNumber(dbRestReceiptQuantity, 2); //請款數量
dbRestReceiptQuantity = dbRestReceiptQuantity - dbSpendQuantity;
if (dbRestReceiptQuantity < 0) dgvRow.Cells[7].Value = UtilityClass.MarkNumber(0, 2); //請款餘量
}
dbAmount = Convert.ToDouble(drData.Cells["cUnitPrice"].Value) * Convert.ToDouble(dgvRow.Cells[6].Value);
strTax = (dbAmount * 0.05).ToString();
dgvRow.Cells[12].Value = string.IsNullOrEmpty(dbAmount.ToString()) ? "0" : UtilityClass.MarkNumber(strTax); //稅額
dgvRow.Cells[13].Value = string.IsNullOrEmpty(dbAmount.ToString()) ? "0" : UtilityClass.MarkNumber(dbAmount * 1.05); //請款金額
dbBalance = dbBalance - (dbAmount * 1.05);
dgvRow.Cells[14].Value = UtilityClass.MarkNumber(dbBalance); //請款餘額
if (Convert.ToDouble(dgvRow.Cells[6].Value) > 0)
{
dgvReceiptPlan.Rows.Add(dgvRow);
}
}
}
}
break;
case "D":
MessageBox.Show("人日無法產生請款計劃!","提示");
break;
case "H":
MessageBox.Show("人時無法產生請款計劃!", "提示");
break;
}
}
}
private void dgvOutSourcingContent_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
//物件宣告
string strUnitPrice = "";
string strQuantity = "";
//Cell[0] : 項次(cOutOrderItem)
//Cell[1] : 委外項目(cOutOrderContent)
//Cell[2] : 委外單價(cOutUnitPrice)
//Cell[3] : 委外數量(cOutQuantity)
//Cell[4] : 委外小計(cOutAmount)
if (dgvOutSourcingContent.Columns[e.ColumnIndex].Name == "cOutUnitPrice")
{
strUnitPrice = (string)dgvOutSourcingContent.Rows[e.RowIndex].Cells["cOutUnitPrice"].Value;
if (string.IsNullOrEmpty(strUnitPrice))
{
return;
}
else
{
dgvOutSourcingContent.Rows[e.RowIndex].Cells["cOutUnitPrice"].Value = strUnitPrice.Replace(",", "");
}
}
if (dgvOutSourcingContent.Columns[e.ColumnIndex].Name == "cOutQuantity")
{
strQuantity = (string)dgvOutSourcingContent.Rows[e.RowIndex].Cells["cOutQuantity"].Value;
if (string.IsNullOrEmpty(strQuantity))
{
return;
}
else
{
dgvOutSourcingContent.Rows[e.RowIndex].Cells["cOutQuantity"].Value = strQuantity.Replace(",", "");
}
}
}
private void dgvOutSourcingContent_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
//物件宣告
string strOutUnitPrice = "";
string strOutQuantity = "";
//Cell[0] : 項次(cOutOrderItem)
//Cell[1] : 委外項目(cOutOrderContent)
//Cell[2] : 委外單價(cOutUnitPrice)
//Cell[3] : 委外數量(cOutQuantity)
//Cell[4] : 委外總計(cOutAmount)
//加上三位一撇效果
if (dgvOutSourcingContent.Columns[e.ColumnIndex].Name == "cOutUnitPrice")
{
strOutUnitPrice = (string)dgvOutSourcingContent.Rows[e.RowIndex].Cells["cOutUnitPrice"].Value;
if (string.IsNullOrEmpty(strOutUnitPrice))
{
return;
}
else
{
dgvOutSourcingContent.Rows[e.RowIndex].Cells["cOutUnitPrice"].Value = UtilityClass.MarkNumber(strOutUnitPrice);
}
}
if (dgvOutSourcingContent.Columns[e.ColumnIndex].Name == "cOutQuantity")
{
strOutQuantity = (string)dgvOutSourcingContent.Rows[e.RowIndex].Cells["cOutQuantity"].Value;
if (string.IsNullOrEmpty(strOutQuantity))
{
return;
}
else
{
dgvOutSourcingContent.Rows[e.RowIndex].Cells["cOutQuantity"].Value = UtilityClass.MarkNumber(strOutQuantity, 2);
}
}
//數量變動
if (dgvOutSourcingContent.Columns[e.ColumnIndex].Name.ToString() == "cOutQuantity" | dgvOutSourcingContent.Columns[e.ColumnIndex].Name.ToString() == "cOutUnitPrice")
{
strOutUnitPrice = (string)dgvOutSourcingContent.Rows[e.RowIndex].Cells["cOutUnitPrice"].Value;
strOutQuantity = (string)dgvOutSourcingContent.Rows[e.RowIndex].Cells["cOutQuantity"].Value;
if (!string.IsNullOrEmpty(strOutUnitPrice) & !string.IsNullOrEmpty(strOutQuantity))
{
if (strOutQuantity.IndexOf("%") == -1)
{
dgvOutSourcingContent.Rows[e.RowIndex].Cells["cOutAmount"].Value = UtilityClass.MarkNumber(Convert.ToDouble(strOutUnitPrice.Replace(",", "")) * Convert.ToDouble(strOutQuantity.Replace(",", "")));
}
else
{
dgvOutSourcingContent.Rows[e.RowIndex].Cells["cOutAmount"].Value = UtilityClass.MarkNumber(Convert.ToDouble(strOutUnitPrice.Replace(",", "")) * Convert.ToDouble(strOutQuantity.Replace("%", "")) / 100);
}
}
}
CountOutSourcingSum(); //重新計算委外加總
}
private void dgvOutSourcingContent_RowEnter(object sender, DataGridViewCellEventArgs e)
{
dgvOutSourcingContent.Rows[e.RowIndex].Cells["cOutOrderItem"].Value = (e.RowIndex + 1).ToString();
DataGridViewComboBoxCell cbCell = (DataGridViewComboBoxCell)dgvOutSourcingContent.Rows[e.RowIndex].Cells["cOutOrderContent"];
if (cbCell.Items.Count == 0)
{
cbCell.DataSource = UtilityClass.GetSystemArgument("PayItem", "zh-TW").Tables["Arguments"];
cbCell.DisplayMember = "ArgumentValue";
cbCell.ValueMember = "ArgumentID";
}
}
private void dgvOutSourcingContent_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
//設定項次
string strOrderItem = (string)dgvOutSourcingContent.Rows[e.RowIndex].Cells[0].Value;
if (!string.IsNullOrEmpty(strOrderItem))
{
string strSQL = "Select OrderContent From OTB_SAL_OutSourcingContent Where SalesOrderNo='" + txtSalesOrderNo.Text.Trim() + "' And ItemNo = '" + strOrderItem + "'";
string strPayContent = UtilityClass.GetSQLResult(strSQL).Tables["Result"].Rows[0]["OrderContent"].ToString();
//設定採購項目
DataGridViewComboBoxCell cbCell = (DataGridViewComboBoxCell)dgvOutSourcingContent.Rows[e.RowIndex].Cells["cOutOrderContent"];
cbCell.DataSource = UtilityClass.GetSystemArgument("PayItem", "zh-TW").Tables["Arguments"];
cbCell.DisplayMember = "ArgumentValue";
cbCell.ValueMember = "ArgumentID";
cbCell.Value = strPayContent;
}
}
private void dgvOutSourcingContent_RowValidating(object sender, DataGridViewCellCancelEventArgs e)
{
string strErrorMsg = "";
int intMsgCount = 0;
try
{
//進行資料檢查
DataGridViewComboBoxCell cbCheck = (DataGridViewComboBoxCell)dgvOutSourcingContent.Rows[e.RowIndex].Cells["cOutOrderContent"];
if (!string.IsNullOrEmpty((string)cbCheck.Value))
{
if (string.IsNullOrEmpty((string)dgvOutSourcingContent.Rows[e.RowIndex].Cells["cOutUnitPrice"].Value))
{
strErrorMsg = "請輸入委外單價";
intMsgCount += 1;
}
if (string.IsNullOrEmpty((string)dgvOutSourcingContent.Rows[e.RowIndex].Cells["cOutQuantity"].Value))
{
strErrorMsg = "請輸入委外數量";
intMsgCount += 1;
}
if (strErrorMsg != "" && intMsgCount < 2)
{
dgvOutSourcingContent.Rows[e.RowIndex].ErrorText = strErrorMsg;
e.Cancel = true;
}
}
}
catch (Exception ex)
{
ErrorHandler.WriteErrorLog("PayPlanManagement.cs", ex);
}
}
private void dgvOutSourcingContent_RowValidated(object sender, DataGridViewCellEventArgs e)
{
dgvOutSourcingContent.Rows[e.RowIndex].ErrorText = "";
}
private void dgvReceiptPlan_RowEnter(object sender, DataGridViewCellEventArgs e)
{
dgvReceiptPlan.Rows[e.RowIndex].Cells["cPhase"].Value = (e.RowIndex + 1).ToString();
DataGridViewComboBoxCell cbCell = (DataGridViewComboBoxCell)dgvReceiptPlan.Rows[e.RowIndex].Cells["cReceiptItem"];
if (cbCell.Items.Count == 0)
{
cbCell.DataSource = UtilityClass.GetSystemArgument("PayItem", "zh-TW").Tables["Arguments"];
cbCell.DisplayMember = "ArgumentValue";
cbCell.ValueMember = "ArgumentID";
}
}
private void dgvReceiptPlan_RowValidating(object sender, DataGridViewCellCancelEventArgs e)
{
//項次(cItemNo)
//期數(cPhase)
//請款單號(cReceiptNo)
//請款項目(cReceiptItem)
//請款數量(cReceiptQuantity)
//請款餘量(cRestReceipt)
//預計請款日期(cPrePayDate)
//實際請款日期(cActualReceiptDate)
//預計付款日期(cExpectedReceiptedDate)
//實際付款日期(cActualReceiptedDate)
//請款金額(cReceiptAmount)
//餘額(cRestReceiptAmount)
//備註(cMemo)
string strErrorMsg = "";
string strExpectedReceiptDate = (string)dgvReceiptPlan.Rows[e.RowIndex].Cells["cExpectedReceiptDate"].Value;
string strExpectedReceiptedDate = (string)dgvReceiptPlan.Rows[e.RowIndex].Cells["cExpectedReceiptedDate"].Value;
string strReceiptNo = (string)dgvReceiptPlan.Rows[e.RowIndex].Cells["cReceiptNo"].Value;
string strItemNo = (string)dgvReceiptPlan.Rows[e.RowIndex].Cells["cItemNo"].Value;
string strReceiptAmount = (string)dgvReceiptPlan.Rows[e.RowIndex].Cells["cReceiptAmount"].Value;
string strActualReceiptDate = (string)dgvReceiptPlan.Rows[e.RowIndex].Cells["cActualReceiptDate"].Value;
string strActualReceiptedDate = (string)dgvReceiptPlan.Rows[e.RowIndex].Cells["cActualReceiptedDate"].Value;
string strReceiptQuantity = (string)dgvReceiptPlan.Rows[e.RowIndex].Cells["cReceiptQuantity"].Value;
try
{
//標準資料檢查
if (!dgvReceiptPlan.Rows[e.RowIndex].IsNewRow)
{
DataGridViewComboBoxCell cbCheck = (DataGridViewComboBoxCell)dgvReceiptPlan.Rows[e.RowIndex].Cells["cReceiptItem"];
if (string.IsNullOrEmpty((string)cbCheck.Value))
{
strErrorMsg = "請選擇請款項目";
}
if (!string.IsNullOrEmpty(strItemNo))
{
if (string.IsNullOrEmpty(strItemNo))
{
strErrorMsg = "請款項次為必填項目!";
}
}
if (!string.IsNullOrEmpty(strExpectedReceiptDate))
{
if (!UtilityClass.IsDate(strExpectedReceiptDate))
{
strErrorMsg = "預計請款日期格式錯誤(應為:yyyy/mm/dd)!";
}
}
if (!string.IsNullOrEmpty(strExpectedReceiptedDate))
{
if (!UtilityClass.IsDate(strExpectedReceiptedDate))
{
strErrorMsg = "預計收款日期格式錯誤(應為:yyyy/mm/dd)!";
}
if (DateTime.Compare(Convert.ToDateTime(strExpectedReceiptDate + " 00:00:00"), Convert.ToDateTime(strExpectedReceiptedDate + " 00:00:00")) > 0)
{
strErrorMsg = "預計收款日期應大於等於預計請款日期!";
}
}
}
//進行資料檢查
if (!string.IsNullOrEmpty(strReceiptNo))
{
if (string.IsNullOrEmpty(strReceiptQuantity))
{
strErrorMsg = "請輸入請款數量";
}
else
{
strReceiptQuantity = strReceiptQuantity.Replace(",", "");
if (strReceiptQuantity.IndexOf("%") == -1)
{
if (!UtilityClass.IsNumber(strReceiptQuantity))
{
strErrorMsg = "請款數量,數字格式有誤!";
}
}
}
if (!string.IsNullOrEmpty(strReceiptAmount))
{
strReceiptAmount = strReceiptAmount.Replace(",", "");
if (!UtilityClass.IsNumber(strReceiptAmount))
{
strErrorMsg = "請款金額,數字格式有誤!";
}
}
if (!string.IsNullOrEmpty(strActualReceiptDate))
{
if (!UtilityClass.IsDate(strActualReceiptDate))
{
strErrorMsg = "實際請款日期格式錯誤(應為:yyyy/mm/dd)!";
}
}
if (!string.IsNullOrEmpty(strActualReceiptedDate))
{
if (!UtilityClass.IsDate(strActualReceiptedDate))
{
strErrorMsg = "實際收款日期格式錯誤(應為:yyyy/mm/dd)!";
}
if (DateTime.Compare(Convert.ToDateTime(strActualReceiptDate + " 00:00:00"), Convert.ToDateTime(strActualReceiptedDate + " 00:00:00")) > 0)
{
strErrorMsg = "實際收款日期應大於等於實際請款日期!";
}
}
}
if (strErrorMsg != "")
{
dgvReceiptPlan.Rows[e.RowIndex].ErrorText = strErrorMsg;
e.Cancel = true;
}
}
catch (Exception ex)
{
ErrorHandler.WriteErrorLog("PayPlanManagement.cs", ex);
}
}
private void dgvReceiptPlan_RowValidated(object sender, DataGridViewCellEventArgs e)
{
ReArrangeReceipt(e);
dgvReceiptPlan.Rows[e.RowIndex].ErrorText = "";
}
private void dgvReceiptPlan_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
//設定項次
string strItemNo = (string)dgvReceiptPlan.Rows[e.RowIndex].Cells["cItemNo"].Value;
string strPhase = (string)dgvReceiptPlan.Rows[e.RowIndex].Cells["cPhase"].Value;
string strReceiptNo = (string)dgvReceiptPlan.Rows[e.RowIndex].Cells["cReceiptNo"].Value;
if (!string.IsNullOrEmpty(strPhase))
{
string strSQL = "Select ReceiptItem From OTB_SAL_ReceiptPlan Where SalesOrderNo='" + txtSalesOrderNo.Text.Trim() + "' And ItemNo = '" + strItemNo + "' And Phase = '" + strPhase + "'";
using(DataTable dtTemp =UtilityClass.GetSQLResult(strSQL).Tables["Result"])
{
if(dtTemp.Rows.Count >0)
{
string strReceiptItem = dtTemp.Rows[0]["ReceiptItem"].ToString();
//設定採購項目
DataGridViewComboBoxCell cbCell = (DataGridViewComboBoxCell)dgvReceiptPlan.Rows[e.RowIndex].Cells["cReceiptItem"];
cbCell.DataSource = UtilityClass.GetSystemArgument("PayItem", "zh-TW").Tables["Arguments"];
cbCell.DisplayMember = "ArgumentValue";
cbCell.ValueMember = "ArgumentID";
cbCell.Value = strReceiptItem;
}
}
}
if (!string.IsNullOrEmpty(strReceiptNo)) //判斷條件,設定該Row不可編輯
{
dgvReceiptPlan.Rows[e.RowIndex].ReadOnly = true;
}
}
private void tsbSetup_Click(object sender, EventArgs e)
{
PayPlanManagementSetup frmSettingForm = new PayPlanManagementSetup();
frmSettingForm.Owner = this;
frmSettingForm.strOwnerForm = this.Name.ToString();
frmSettingForm.strXMLName = this.Name.ToString();
frmSettingForm.StartPosition = FormStartPosition.CenterParent;
frmSettingForm.ShowDialog();
}
private void dgvReceiptPlan_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
//物件宣告
string strDC = "";
string strReceipt = (string)dgvReceiptPlan.Rows[e.RowIndex].Cells["cReceiptNo"].Value;
string strReceiptAmount = (string)dgvReceiptPlan.Rows[e.RowIndex].Cells["cReceiptAmount"].Value;
try
{
//當GridView中的Button被按下
var SenderGrid = (DataGridView)sender;
if (SenderGrid.Columns[e.ColumnIndex] is DataGridViewButtonColumn && e.RowIndex >= 0)
{
if (string.IsNullOrEmpty(strReceipt))
{
MessageBox.Show("請輸入發票號碼!", "提示");
return;
}
if (SenderGrid.Rows[e.RowIndex].ReadOnly == true) //判定唯讀則不處理
{
return;
}
//Form設定
AccountingEntries acItemForm = new AccountingEntries();
acItemForm.strOwnerForm = "PayPlanManagement_Receive";
acItemForm.Owner = this;
acItemForm.StartPosition = FormStartPosition.CenterParent;
acItemForm.strFrmStatus = "ADD";
acItemForm.txtProjectName.Text = txtProjectName.Text;
acItemForm.txtProjectNumber.Text = txtProjectNumber.Text;
string strXMLPath = ConfigurationManager.AppSettings["XMLFilePath"].ToString() + this.Name.ToString() + "_Receipt.xml";
if (File.Exists(strXMLPath))
{
XDocument xmlContent = XDocument.Load(strXMLPath);
foreach (XElement xmlData in xmlContent.Descendants("Accounting"))
{
DataGridViewRow dgvRow = new DataGridViewRow();
dgvRow.CreateCells(acItemForm.dgvDataMaintain);
strDC = xmlData.Element("SubAccounting").Attribute("DC").Value.ToString();
switch (strDC)
{
case "D":
dgvRow.Cells[1].Value = xmlData.Element("SubAccounting").Value.ToString();
dgvRow.Cells[2].Value = xmlData.Element("SubAccounting").Attribute("SubName").Value.ToString();
dgvRow.Cells[3].Value = "發票號碼:" + strReceipt;
dgvRow.Cells[4].Value = strReceiptAmount;
break;
case "C":
dgvRow.Cells[1].Value = xmlData.Element("SubAccounting").Value.ToString();
dgvRow.Cells[2].Value = xmlData.Element("SubAccounting").Attribute("SubName").Value.ToString();
dgvRow.Cells[3].Value = "發票號碼:" + strReceipt;
dgvRow.Cells[5].Value = strReceiptAmount;
break;
}
blIsAdded = false;
if (string.IsNullOrEmpty((string)dgvReceiptPlan.Rows[e.RowIndex].Cells["cActualReceiptDate"].Value))
{
dgvReceiptPlan.Rows[e.RowIndex].Cells["cActualReceiptDate"].Value = DateTime.Now.ToString("yyyy/MM/dd");
}
acItemForm.dgvDataMaintain.Rows.Add(dgvRow);
}
acItemForm.dgeArgs = e;
}
acItemForm.ShowDialog();
}
}
catch (Exception ex)
{
ErrorHandler.WriteErrorLog("PayPlanManagement.cs", ex);
}
}
private void dgvReceiptPlan_CellEnter(object sender, DataGridViewCellEventArgs e)
{
try
{
ReArrangeReceipt(e);
}
catch (Exception ex)
{
ErrorHandler.WriteErrorLog("PayPlanManagement.cs", ex);
}
}
private void dgvReceiptPlan_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
//宣告物件
string strReceiptUnitPrice = ""; //請款單價
string strReceiptQuantity = ""; //請款數量
string strReceiptNo = ""; //發票號碼
//發票號碼變大寫
if (dgvReceiptPlan.Columns[e.ColumnIndex].Name == "cReceiptNo")
{
strReceiptNo = (string)dgvReceiptPlan.Rows[e.RowIndex].Cells["cReceiptNo"].Value;
dgvReceiptPlan.Rows[e.RowIndex].Cells["cReceiptNo"].Value = string.IsNullOrEmpty(strReceiptNo) ? "" : strReceiptNo.ToUpper();
}
//加上三位一撇效果
if (dgvReceiptPlan.Columns[e.ColumnIndex].Name == "cReceiptUnitPrice")
{
strReceiptUnitPrice = (string)dgvReceiptPlan.Rows[e.RowIndex].Cells["cReceiptUnitPrice"].Value;
if (string.IsNullOrEmpty(strReceiptUnitPrice))
{
return;
}
else
{
dgvReceiptPlan.Rows[e.RowIndex].Cells["cReceiptUnitPrice"].Value = UtilityClass.MarkNumber(strReceiptUnitPrice);
}
}
if (dgvReceiptPlan.Columns[e.ColumnIndex].Name == "cReceiptQuantity")
{
//回傳處理後的數量
strReceiptQuantity = (string)dgvReceiptPlan.Rows[e.RowIndex].Cells["cReceiptQuantity"].Value;
if (string.IsNullOrEmpty(strReceiptQuantity))
{
return;
}
else
{
dgvReceiptPlan.Rows[e.RowIndex].Cells["cReceiptQuantity"].Value = UtilityClass.MarkNumber(strReceiptQuantity, 2);
}
}
//輸入值為請款金額回推試算
//if (dgvReceiptPlan.Columns[e.ColumnIndex].Name == "cReceiptAmount")
//{
// string strUnitPrice = (string)dgvReceiptPlan.Rows[e.RowIndex].Cells["cReceiptUnitPrice"].Value;
// if (!string.IsNullOrEmpty(strUnitPrice))
// {
// string strReceiptAmount = (string)dgvReceiptPlan.Rows[e.RowIndex].Cells["cReceiptAmount"].Value;
// double dbRecmiptAmount = Convert.ToDouble(strReceiptAmount.Replace(",",""));
// dgvReceiptPlan.Rows[e.RowIndex].Cells["cReceiptTax"].Value = UtilityClass.MarkNumber(dbRecmiptAmount / 1.05 * 0.05); //計算稅額
// dgvReceiptPlan.Rows[e.RowIndex].Cells["cReceiptQuantity"].Value = UtilityClass.MarkNumber(dbRecmiptAmount / Convert.ToDouble(strUnitPrice.Replace(",",""))); //計算數量
// }
//}
}
private void btnArrangToPayProject_Click(object sender, EventArgs e)
{
string strPayType = "";
int intPayPlanItem = 1;
string strInvoiceNo = ""; //付款單號
string strPurchaseOrderSum = "0"; //採購單總金額
string strPayAmount = "0"; //付款金額
string strPayBalance = "0"; //餘額
string strQuantityStyle = ""; //數量呈現模式(P:百分比、D:三位一撇)
string strPayQuantityAmount = "0"; //採購單總量
string strPayUnitPrice = "0"; //付款單價
string strPayQuantity = "0"; //付款數量
string strRestPayQuantity = "0"; //付款餘量
bool blFound = true; //允許建立
if (MessageBox.Show("請問您是否確認要產生付款計劃?", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
foreach (DataGridViewRow drData in dgvToPayPlan.Rows)
{
strInvoiceNo = (string)drData.Cells["cInvoiceNo"].Value;
if (!string.IsNullOrEmpty(strInvoiceNo))
{
MessageBox.Show("目前已有付款計劃,無法重新產生付款計劃!", "提示");
return;
}
}
dgvToPayPlan.Rows.Clear(); //重新產生,先清除舊資料
//取得資訊
if (rbPayType.Checked == true)
{
strPayType = "P"; //專案類別
foreach (DataGridViewRow drData in dgvOutSourcingContent.Rows) //數量加總
{
strPayQuantity = (string)drData.Cells["cOutQuantity"].Value;
if (!string.IsNullOrEmpty(strPayQuantity))
{
if (strPayQuantity.IndexOf("%") != -1)
{
strPayQuantityAmount = ((string.IsNullOrEmpty(strPayQuantity) ? 0 : Convert.ToDouble(strPayQuantityAmount)) + Convert.ToDouble(strPayQuantity.Replace("%", ""))).ToString();
strQuantityStyle = "P";
}
else
{
strPayQuantityAmount = ((string.IsNullOrEmpty(strPayQuantity) ? 0 : Convert.ToDouble(strPayQuantityAmount)) + Convert.ToDouble(strPayQuantity.Replace(",", ""))).ToString();
strQuantityStyle = "D";
}
}
strPayAmount = (string)drData.Cells["cOutAmount"].Value; //小計加總
strPurchaseOrderSum = (Convert.ToDouble(strPurchaseOrderSum) + (string.IsNullOrEmpty(strPayAmount) ? 0 : Convert.ToDouble(strPayAmount.Replace(",", "")))).ToString();
}
switch (strQuantityStyle)
{
case "P":
strPayQuantityAmount += "%";
break;
case "D":
strPayQuantityAmount = UtilityClass.MarkNumber(strPayQuantityAmount, 2);
break;
}
}
if (rbPayType1.Checked == true)
{
strPayType = "M"; //人月類別
foreach (DataGridViewRow drData in dgvOutSourcingContent.Rows)
{
strPayAmount = (string)drData.Cells["cOutAmount"].Value;
strPurchaseOrderSum = (Convert.ToDouble(strPurchaseOrderSum) + (string.IsNullOrEmpty(strPayAmount) ? 0 : Convert.ToDouble(strPayAmount.Replace(",", "")))).ToString();
}
}
if (rbPayType2.Checked == true)
{
strPayType = "D";
}
if (rbPayType3.Checked == true)
{
strPayType = "H";
}
//資料處理
switch (strPayType)
{
case "P":
strPayBalance = strPurchaseOrderSum; //採購總金額
strRestPayQuantity = strPayQuantityAmount; //採購總數量
foreach (DataGridViewRow drData in dgvOutSourcingContent.Rows)
{
DataGridViewComboBoxCell cbCHeck = (DataGridViewComboBoxCell)drData.Cells["cOutOrderContent"];
if (!string.IsNullOrEmpty((string)cbCHeck.Value))
{
DataGridViewRow dgvRow = new DataGridViewRow();
dgvRow.CreateCells(dgvToPayPlan);
DataGridViewComboBoxCell cbCell = (DataGridViewComboBoxCell)dgvRow.Cells[1];
if (cbCell.Items.Count == 0)
{
cbCell.DataSource = UtilityClass.GetSystemArgument("PayItem", "zh-TW").Tables["Arguments"];
cbCell.DisplayMember = "ArgumentValue";
cbCell.ValueMember = "ArgumentID";
}
cbCell.Value = drData.Cells["cOutOrderContent"].Value; //付款項目
dgvRow.Cells[2].Value = drData.Cells["cOutOrderItem"].Value; //項次
dgvRow.Cells[3].Value = (intPayPlanItem++).ToString(); //期數
strPayUnitPrice = (string)drData.Cells["cOutUnitPrice"].Value;
dgvRow.Cells[5].Value = string.IsNullOrEmpty(strPayUnitPrice) ? "" : strPayUnitPrice; //付款單價
strPayQuantity = (string)drData.Cells["cOutQuantity"].Value;
dgvRow.Cells[6].Value = string.IsNullOrEmpty(strPayQuantity) ? "" : strPayQuantity; //付款數量
if (strRestPayQuantity.IndexOf("%") != -1) //付款餘量
{
strRestPayQuantity = ((string.IsNullOrEmpty(strRestPayQuantity) ? 0 : Convert.ToDouble(strRestPayQuantity.Replace("%", ""))) - (string.IsNullOrEmpty(strPayQuantity) ? 0 : Convert.ToDouble(strPayQuantity.Replace("%", "")))).ToString() + "%";
dgvRow.Cells[7].Value = strRestPayQuantity;
}
else if (strRestPayQuantity.IndexOf(",") != -1)
{
strRestPayQuantity = ((string.IsNullOrEmpty(strRestPayQuantity) ? 0 : Convert.ToDouble(strRestPayQuantity.Replace(",", ""))) - (string.IsNullOrEmpty(strPayQuantity) ? 0 : Convert.ToDouble(strPayQuantity.Replace(",", "")))).ToString();
dgvRow.Cells[7].Value = UtilityClass.MarkNumber(strRestPayQuantity, 2);
}
strPayAmount = (string)drData.Cells["cOutAmount"].Value; //付款金額
dgvRow.Cells[10].Value = string.IsNullOrEmpty(strPayAmount) ? "" : strPayAmount;
strPayBalance = ((string.IsNullOrEmpty(strPayBalance) ? 0 : Convert.ToDouble(strPayBalance.Replace(",", ""))) - (string.IsNullOrEmpty(strPayAmount) ? 0 : Convert.ToDouble(strPayAmount.Replace(",", "")))).ToString();
dgvRow.Cells[11].Value = UtilityClass.MarkNumber(strPayBalance); //待付餘額
dgvToPayPlan.Rows.Add(dgvRow);
}
}
break;
case "M":
dgvToPayPlan.Rows.Clear(); //重新產生計劃
double dbQuantity = 0;
double dbRestPayQuantity = 0;
double dbBalance = 0;
double dbPayQuantity = 0;
double dbPayAmount = 0;
//確認每個月付款數量
InputDialog frmInput = new InputDialog();
frmInput.lbQuestionMessage.Text = "請輸入每月付款人力數!";
frmInput.txtInput.Text = "1";
frmInput.StartPosition = FormStartPosition.CenterParent;
DialogResult dr = frmInput.ShowDialog();
if (dr == DialogResult.OK)
{
dbPayQuantity = Convert.ToDouble(frmInput.GetMsg());
}
foreach (DataGridViewRow drData in dgvOutSourcingContent.Rows)
{
dbQuantity = 0;
strPayQuantity = (string)drData.Cells["cOutQuantity"].Value; //數量
dbRestPayQuantity = Convert.ToDouble(string.IsNullOrEmpty(strPayQuantity) ? 0 : Convert.ToDouble(strPayQuantity.Replace(",", "")));
dbPayAmount = Convert.ToDouble(drData.Cells["cOutAmount"].Value);
dbBalance = Convert.ToDouble(string.IsNullOrEmpty(dbPayAmount.ToString()) ? 0 : dbPayAmount);
DataGridViewComboBoxCell cbCHeck = (DataGridViewComboBoxCell)drData.Cells["cOutOrderContent"];
blFound = false;
if (!drData.IsNewRow)
{
dbQuantity = Convert.ToDouble(drData.Cells["cOutQuantity"].Value.ToString());
for (double dbCount = 1; dbCount <= dbQuantity; dbCount++)
{
DataGridViewRow dgvRow = new DataGridViewRow();
dgvRow.CreateCells(dgvToPayPlan);
DataGridViewComboBoxCell cbCell = (DataGridViewComboBoxCell)dgvRow.Cells[1];
if (cbCell.Items.Count == 0)
{
cbCell.DataSource = UtilityClass.GetSystemArgument("PayItem", "zh-TW").Tables["Arguments"];
cbCell.DisplayMember = "ArgumentValue";
cbCell.ValueMember = "ArgumentID";
}
cbCell.Value = cbCHeck.Value; //付款項目
dgvRow.Cells[2].Value = drData.Cells["cOutOrderItem"].Value; //項次
dgvRow.Cells[3].Value = (intPayPlanItem++).ToString(); //期數
strPayUnitPrice = (string)drData.Cells["cOutUnitPrice"].Value;
dgvRow.Cells[5].Value = string.IsNullOrEmpty(strPayUnitPrice) ? "" : UtilityClass.MarkNumber(strPayUnitPrice); //付款單價
if (dbRestPayQuantity >= dbPayQuantity)
{
dgvRow.Cells[6].Value = UtilityClass.MarkNumber(dbPayQuantity, 2); //付款數量
dbRestPayQuantity = dbRestPayQuantity - dbPayQuantity;
dgvRow.Cells[7].Value = UtilityClass.MarkNumber(dbRestPayQuantity, 2); //付款餘量
}
else
{
dgvRow.Cells[6].Value = UtilityClass.MarkNumber(dbRestPayQuantity, 2); //付款數量
dbRestPayQuantity = dbRestPayQuantity - dbPayQuantity;
if (dbRestPayQuantity < 0) dgvRow.Cells[7].Value = UtilityClass.MarkNumber(0, 2); //付款餘量
}
dbPayAmount = Convert.ToDouble(drData.Cells["cOutUnitPrice"].Value) * Convert.ToDouble(dgvRow.Cells[6].Value);
dgvRow.Cells[10].Value = string.IsNullOrEmpty(dbPayAmount.ToString()) ? "0" : UtilityClass.MarkNumber(dbPayAmount); //付款金額
dbBalance = dbBalance - dbPayAmount;
dgvRow.Cells[11].Value = UtilityClass.MarkNumber(dbBalance); //付款餘額
if (Convert.ToDouble(dgvRow.Cells[6].Value) > 0)
{
dgvToPayPlan.Rows.Add(dgvRow);
}
}
}
}
break;
case "D":
MessageBox.Show("人日無法產生付款計劃!", "提示");
break;
case "H":
MessageBox.Show("人時無法產生付款計劃!", "提示");
break;
}
}
}
private void dgvToPayPlan_CellEndEdit(object sender, DataGridViewCellEventArgs e)
{
//宣告物件
string strPayUnitPrice = ""; //請款單價
string strPayQuantity = ""; //請款數量
string strInvoiceNo = ""; //發票號碼
//發票號碼變大寫
if (dgvToPayPlan.Columns[e.ColumnIndex].Name == "cInvoiceNo")
{
strInvoiceNo = (string)dgvToPayPlan.Rows[e.RowIndex].Cells["cInvoiceNo"].Value;
dgvToPayPlan.Rows[e.RowIndex].Cells["cInvoiceNo"].Value = strInvoiceNo.ToUpper();
}
//加上三位一撇效果
if (dgvToPayPlan.Columns[e.ColumnIndex].Name == "cPayUnitPrice")
{
strPayUnitPrice = (string)dgvToPayPlan.Rows[e.RowIndex].Cells["cPayUnitPrice"].Value;
if (string.IsNullOrEmpty(strPayUnitPrice))
{
return;
}
else
{
dgvToPayPlan.Rows[e.RowIndex].Cells["cPayUnitPrice"].Value = UtilityClass.MarkNumber(strPayUnitPrice);
}
}
if (dgvToPayPlan.Columns[e.ColumnIndex].Name == "cPayQuantity")
{
strPayQuantity = (string)dgvToPayPlan.Rows[e.RowIndex].Cells["cPayQuantity"].Value;
if (string.IsNullOrEmpty(strPayQuantity))
{
return;
}
else
{
dgvToPayPlan.Rows[e.RowIndex].Cells["cPayQuantity"].Value = UtilityClass.MarkNumber(strPayQuantity, 2);
}
}
}
private void dgvToPayPlan_CellEnter(object sender, DataGridViewCellEventArgs e)
{
try
{
ReArrangePay(e);
}
catch (Exception ex)
{
ErrorHandler.WriteErrorLog("PayPlanManagement.cs", ex);
}
}
private void dgvToPayPlan_RowValidated(object sender, DataGridViewCellEventArgs e)
{
ReArrangePay(e);
dgvToPayPlan.Rows[e.RowIndex].ErrorText = "";
}
private void dgvToPayPlan_RowsAdded(object sender, DataGridViewRowsAddedEventArgs e)
{
//設定項次
string strItemNo = (string)dgvToPayPlan.Rows[e.RowIndex].Cells["cPayItemNo"].Value;
string strPayPhase = (string)dgvToPayPlan.Rows[e.RowIndex].Cells["cPayPhase"].Value;
string strInvoiceNo = (string)dgvToPayPlan.Rows[e.RowIndex].Cells["cInvoiceNo"].Value;
if (!string.IsNullOrEmpty(strPayPhase))
{
string strSQL = "Select PayItem From OTB_SAL_PayPlan Where SalesOrderNo='" + txtSalesOrderNo.Text.Trim() + "' And ItemNo = '" + strItemNo + "' And PhaseNo = '" + strPayPhase + "'";
using (DataTable dtTemp = UtilityClass.GetSQLResult(strSQL).Tables["Result"])
{
if (dtTemp.Rows.Count > 0)
{
string strPayItem = dtTemp.Rows[0]["PayItem"].ToString();
//設定採購項目
DataGridViewComboBoxCell cbCell = (DataGridViewComboBoxCell)dgvToPayPlan.Rows[e.RowIndex].Cells["cPayItem"];
cbCell.DataSource = UtilityClass.GetSystemArgument("PayItem", "zh-TW").Tables["Arguments"];
cbCell.DisplayMember = "ArgumentValue";
cbCell.ValueMember = "ArgumentID";
cbCell.Value = strPayItem;
}
}
}
if (!string.IsNullOrEmpty(strInvoiceNo)) //判斷條件,設定該Row不可編輯
{
dgvToPayPlan.Rows[e.RowIndex].ReadOnly = true;
}
}
private void dgvToPayPlan_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
//物件宣告
string strDC = "";
string strInvoiceNo = (string)dgvToPayPlan.Rows[e.RowIndex].Cells["cInvoiceNo"].Value;
string strPayAmount = (string)dgvToPayPlan.Rows[e.RowIndex].Cells["cPayAmount"].Value;
try
{
//當GridView中的Button被按下
var SenderGrid = (DataGridView)sender;
if (SenderGrid.Columns[e.ColumnIndex] is DataGridViewButtonColumn && e.RowIndex >= 0)
{
if (string.IsNullOrEmpty(strInvoiceNo))
{
MessageBox.Show("請輸入發票號碼!", "提示");
return;
}
if (SenderGrid.Rows[e.RowIndex].ReadOnly == true) //判定唯讀則不處理
{
return;
}
//Form設定
AccountingEntries acItemForm = new AccountingEntries();
acItemForm.strOwnerForm = "PayPlanManagement_Pay";
acItemForm.Owner = this;
acItemForm.StartPosition = FormStartPosition.CenterParent;
acItemForm.strFrmStatus = "ADD";
acItemForm.txtProjectName.Text = txtProjectName.Text;
acItemForm.txtProjectNumber.Text = txtProjectNumber.Text;
string strXMLPath = ConfigurationManager.AppSettings["XMLFilePath"].ToString() + this.Name.ToString() + "_Pay.xml";
if (File.Exists(strXMLPath))
{
XDocument xmlContent = XDocument.Load(strXMLPath);
foreach (XElement xmlData in xmlContent.Descendants("Accounting"))
{
DataGridViewRow dgvRow = new DataGridViewRow();
dgvRow.CreateCells(acItemForm.dgvDataMaintain);
strDC = xmlData.Element("SubAccounting").Attribute("DC").Value.ToString();
switch (strDC)
{
case "D":
dgvRow.Cells[1].Value = xmlData.Element("SubAccounting").Value.ToString();
dgvRow.Cells[2].Value = xmlData.Element("SubAccounting").Attribute("SubName").Value.ToString();
dgvRow.Cells[4].Value = strPayAmount;
break;
case "C":
dgvRow.Cells[1].Value = xmlData.Element("SubAccounting").Value.ToString();
dgvRow.Cells[2].Value = xmlData.Element("SubAccounting").Attribute("SubName").Value.ToString();
dgvRow.Cells[3].Value = "發票號碼:" + strInvoiceNo;
dgvRow.Cells[5].Value = strPayAmount;
break;
}
blIsAdded = false;
if (string.IsNullOrEmpty((string)dgvToPayPlan.Rows[e.RowIndex].Cells["cActualPaiedDate"].Value))
{
dgvToPayPlan.Rows[e.RowIndex].Cells["cActualPaiedDate"].Value = DateTime.Now.ToString("yyyy/MM/dd");
}
acItemForm.dgvDataMaintain.Rows.Add(dgvRow);
}
acItemForm.dgeArgs = e;
}
acItemForm.ShowDialog();
}
}
catch (Exception ex)
{
ErrorHandler.WriteErrorLog("PayPlanManagement.cs", ex);
}
}
private void dgvToPayPlan_RowValidating(object sender, DataGridViewCellCancelEventArgs e)
{
//期數(cPhase)
//發票號碼(cInvoiceNo)
//付款項目(cPayItem)
//付款數量(cReceiptQuantity)
//付款餘量(cRestReceipt)
//預計付款日期(cExpectedPayDate)
//實際付款日期(cActualPaiedDate)
//付款金額(cPayAmount)
//餘額(cRestPayAmount)
//備註(cPayMemo)
string strErrorMsg = "";
string strInvoiceNo = (string)dgvToPayPlan.Rows[e.RowIndex].Cells["cInvoiceNo"].Value;
string strPayAmount = (string)dgvToPayPlan.Rows[e.RowIndex].Cells["cPayAmount"].Value;
string strExpectedPayDate = (string)dgvToPayPlan.Rows[e.RowIndex].Cells["cExpectedPayDate"].Value;
string strActualPayDate = (string)dgvToPayPlan.Rows[e.RowIndex].Cells["cActualPaiedDate"].Value;
string strPayQuantity = (string)dgvToPayPlan.Rows[e.RowIndex].Cells["cPayQuantity"].Value;
try
{
//標準資料檢查
if (!dgvToPayPlan.Rows[e.RowIndex].IsNewRow)
{
if (!string.IsNullOrEmpty(strExpectedPayDate))
{
if (!UtilityClass.IsDate(strExpectedPayDate))
{
strErrorMsg = "預計付款日期格式錯誤(應為:yyyy/mm/dd)!";
}
}
if (!string.IsNullOrEmpty(strActualPayDate))
{
if (!UtilityClass.IsDate(strActualPayDate))
{
strErrorMsg = "實計付款日期格式錯誤(應為:yyyy/mm/dd)!";
}
}
}
//進行資料檢查
if (!string.IsNullOrEmpty(strInvoiceNo))
{
DataGridViewComboBoxCell cbCheck = (DataGridViewComboBoxCell)dgvToPayPlan.Rows[e.RowIndex].Cells["cPayItem"];
if (string.IsNullOrEmpty((string)cbCheck.Value))
{
strErrorMsg = "請選擇付款項目";
}
if (string.IsNullOrEmpty(strPayQuantity))
{
strErrorMsg = "請輸入付款數量";
}
else
{
strPayQuantity = strPayQuantity.Replace(",", "");
if (strPayQuantity.IndexOf("%") == -1)
{
if (!UtilityClass.IsNumber(strPayQuantity))
{
strErrorMsg = "請款數量,數字格式有誤!";
}
}
}
if (!string.IsNullOrEmpty(strPayAmount))
{
strPayAmount = strPayAmount.Replace(",", "");
if (!UtilityClass.IsNumber(strPayAmount))
{
strErrorMsg = "請款金額,數字格式有誤!";
}
}
}
if (strErrorMsg != "")
{
dgvToPayPlan.Rows[e.RowIndex].ErrorText = strErrorMsg;
e.Cancel = true;
}
}
catch (Exception ex)
{
ErrorHandler.WriteErrorLog("PayPlanManagement.cs", ex);
}
}
private void txtSalesOrderNo_Leave(object sender, EventArgs e)
{
txtSalesOrderNo.Text = txtSalesOrderNo.Text.ToUpper();
}
#endregion
}
}