chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore - 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
This commit is contained in:
@@ -0,0 +1,453 @@
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Configuration;
|
||||
using System.Collections;
|
||||
using System.Web;
|
||||
using System.Web.Security;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
using System.Web.UI.WebControls.WebParts;
|
||||
using System.Web.UI.HtmlControls;
|
||||
using System.Data.Common;
|
||||
using Wellan.Data;
|
||||
using Wellan.Common;
|
||||
using System.Text;
|
||||
using System.IO;
|
||||
using System.Drawing;
|
||||
|
||||
/// <summary>
|
||||
/// 年度科目設定(小類)
|
||||
/// </summary>
|
||||
public partial class forms_customer_fmBpabSmall : Wellan.Web.UI.WUserControlBase
|
||||
{
|
||||
protected string _BPNUM = "";
|
||||
protected string _BPPYN = "";
|
||||
private string _OLD_BPACC = "";
|
||||
private string select = "SELECT * ";
|
||||
private string from = " FROM BPAB ";
|
||||
private string where = " WHERE 1=1 ";
|
||||
private string order = " ORDER BY BPPYN, BPCLS, BPORD";
|
||||
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
//if (IsPostBack)
|
||||
// gvBPAB.DataBind();
|
||||
}
|
||||
|
||||
protected override void OnInit(EventArgs e)
|
||||
{
|
||||
base.OnInit(e);
|
||||
dsBPABForm.ConnectionString = ConnectionString;
|
||||
dsBPABGrid.ConnectionString = ConnectionString;
|
||||
dsBPABBig.ConnectionString = ConnectionString;
|
||||
|
||||
_BPNUM = GetStringParam("BPNUM");
|
||||
_BPPYN = GetStringParam("BPPYN");
|
||||
|
||||
dsBPABBig.SelectParameters["BPPYN"].DefaultValue = _BPPYN;
|
||||
|
||||
GetGridViewRowColor(gvBPAB);
|
||||
|
||||
Search();
|
||||
}
|
||||
|
||||
// 查詢動作
|
||||
private new void Search()
|
||||
{
|
||||
StringBuilder sql = new StringBuilder();
|
||||
sql.Append(select);
|
||||
sql.Append(from);
|
||||
sql.Append(where);
|
||||
|
||||
dsBPABGrid.SelectParameters.Clear();
|
||||
AddSearch(sql, dsBPABGrid, "BPPYN", _BPPYN, "", true);
|
||||
sql.Append(" AND SUBSTRING(BPACC,3,2) <> '00' AND SUBSTRING(BPACC,5,2) = '00' ");
|
||||
sql.Append(order);
|
||||
dsBPABGrid.SelectCommand = sql.ToString();
|
||||
}
|
||||
|
||||
private new void CalcFields(SqlDataSourceCommandEventArgs e)
|
||||
{
|
||||
Decimal bpbgt;
|
||||
if (Decimal.TryParse(e.Command.Parameters["@BPBGT"].Value.ToString(), out bpbgt))
|
||||
e.Command.Parameters["@BPBGT"].Value = bpbgt;
|
||||
else
|
||||
e.Command.Parameters["@BPBGT"].Value = 0;
|
||||
}
|
||||
|
||||
// 取得大類的排序號
|
||||
private string GetBigBPCLS(string bpacc, DbConnection conn, DbTransaction tran)
|
||||
{
|
||||
DbCommand cmd1 = Query.NewCommand("SELECT BPCLS FROM BPAB WHERE BPACC=@BPACC");
|
||||
cmd1.Connection = conn;
|
||||
cmd1.Transaction = tran;
|
||||
cmd1.Parameters.Add(Query.NewParameter("BPACC", bpacc.Substring(0, 2) + "0000"));
|
||||
return cmd1.ExecuteScalar().ToString();
|
||||
}
|
||||
|
||||
protected void dsBPABForm_Inserting(object sender, SqlDataSourceCommandEventArgs e)
|
||||
{
|
||||
CalcFields(e);
|
||||
string newBpacc = e.Command.Parameters["@BPACC"].Value.ToString();
|
||||
int newBpord = Convert.ToInt32(e.Command.Parameters["@BPORD"].Value);
|
||||
e.Command.Connection.Open();
|
||||
e.Command.Parameters["@BPCLS"].Value =
|
||||
String.Format("{0}{1:00}00", GetBigBPCLS(newBpacc, e.Command.Connection, e.Command.Transaction).Substring(0, 2), newBpord);
|
||||
}
|
||||
|
||||
protected void dsBPABForm_Updating(object sender, SqlDataSourceCommandEventArgs e)
|
||||
{
|
||||
CalcFields(e);
|
||||
|
||||
e.Command.Connection.Open();
|
||||
e.Command.Transaction = e.Command.Connection.BeginTransaction();
|
||||
|
||||
// 修改自己的排序號碼
|
||||
int newBpord = Convert.ToInt32(e.Command.Parameters["@BPORD"].Value);
|
||||
string oldBpcls = ViewState["OLD_BPCLS"] != null ? ViewState["OLD_BPCLS"].ToString() : "";
|
||||
string newBpacc = e.Command.Parameters["@BPACC"].Value.ToString();
|
||||
e.Command.Parameters["@BPCLS"].Value =
|
||||
String.Format("{0}{1:00}00", GetBigBPCLS(newBpacc, e.Command.Connection, e.Command.Transaction).Substring(0, 2), newBpord);
|
||||
}
|
||||
|
||||
protected void dsBPABForm_Updated(object sender, SqlDataSourceStatusEventArgs e)
|
||||
{
|
||||
int newBpord = Convert.ToInt32(e.Command.Parameters["@BPORD"].Value);
|
||||
int oldBpord = ViewState["OLD_BPORD"] != null && ViewState["OLD_BPORD"].ToString() != "" ? Convert.ToInt32(ViewState["OLD_BPORD"]) : 0;
|
||||
string oldBpcls = ViewState["OLD_BPCLS"] != null ? ViewState["OLD_BPCLS"].ToString() : "";
|
||||
string newBpacc = e.Command.Parameters["@BPACC"].Value.ToString();
|
||||
string oldBpacc = e.Command.Parameters["@OLD_BPACC"].Value.ToString();
|
||||
|
||||
try
|
||||
{
|
||||
if (oldBpacc.Substring(0, 2) != newBpacc.Substring(0, 2) || newBpord != oldBpord)
|
||||
{
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.Append("UPDATE BPAB SET TRDAT=GETDATE(), TRMOD='UPDATE', TRUSR=@TRUSR, APPNO = APPNO + 1 ");
|
||||
DbCommand cmd = Query.NewCommand();
|
||||
cmd.Connection = e.Command.Connection;
|
||||
cmd.Transaction = e.Command.Transaction;
|
||||
cmd.Parameters.Add(Query.NewParameter("TRUSR", UserId));
|
||||
|
||||
// 取得新大類的排序號
|
||||
string newBigBpcls = GetBigBPCLS(newBpacc, e.Command.Connection, e.Command.Transaction);
|
||||
|
||||
// 如果修改了大類,這個小類底下的科目都要移動過去
|
||||
if (oldBpacc.Substring(0, 2) != newBpacc.Substring(0, 2))
|
||||
{
|
||||
sb.Append(" , BPACC = @NEW_BPACC + SUBSTRING(BPACC, 5, 2) ");
|
||||
cmd.Parameters.Add(Query.NewParameter("NEW_BPACC", newBpacc.Substring(0, 4)));
|
||||
|
||||
sb.Append(" , BPCLS = @NEW_BPORD + SUBSTRING(BPCLS, 5, 2) ");
|
||||
cmd.Parameters.Add(Query.NewParameter("NEW_BPORD", newBigBpcls.Substring(0, 2) + newBpord.ToString("00")));
|
||||
}
|
||||
// 如果修改了排序號,那麼小類底下的排序號也要移動過去
|
||||
else if (newBpord != oldBpord)
|
||||
{
|
||||
sb.Append(" , BPCLS = @NEW_BPORD + SUBSTRING(BPCLS, 5, 2) ");
|
||||
cmd.Parameters.Add(Query.NewParameter("NEW_BPORD", newBigBpcls.Substring(0, 2) + newBpord.ToString("00")));
|
||||
}
|
||||
|
||||
sb.Append(" WHERE SUBSTRING(BPACC, 1, 4)=@OLD_BPACC");
|
||||
cmd.CommandText = sb.ToString();
|
||||
cmd.Parameters.Add(Query.NewParameter("OLD_BPACC", oldBpacc.Substring(0, 4)));
|
||||
cmd.ExecuteNonQuery();
|
||||
cmd.Dispose();
|
||||
}
|
||||
|
||||
// 連鎖更新科目對應
|
||||
ChainUpdateBPAA(oldBpacc, newBpacc, e.Command.Transaction);
|
||||
|
||||
e.Command.Transaction.Commit();
|
||||
e.Command.Connection.Close();
|
||||
}
|
||||
catch
|
||||
{
|
||||
e.Command.Transaction.Rollback();
|
||||
e.Command.Connection.Close();
|
||||
}
|
||||
}
|
||||
|
||||
protected void gvBPAB_DataBound(object sender, EventArgs e)
|
||||
{
|
||||
GridView_DataBound(sender, e);
|
||||
if (gvBPAB.Rows.Count > 0)
|
||||
{
|
||||
if (gvBPAB.SelectedIndex == -1)
|
||||
gvBPAB.SelectedIndex = 0;
|
||||
|
||||
fvBPAB.DataBind();
|
||||
|
||||
if (fvBPAB.DataItem != null)
|
||||
{
|
||||
ViewState["OLD_BPACC"] = (fvBPAB.DataItem as DataRowView)["BPACC"];
|
||||
ViewState["OLD_BPCLS"] = (fvBPAB.DataItem as DataRowView)["BPCLS"];
|
||||
ViewState["OLD_BPORD"] = (fvBPAB.DataItem as DataRowView)["BPORD"];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void gvBPAB_PageIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
Search();
|
||||
gvBPAB.SelectedIndex = 0;
|
||||
gvBPAB.DataBind();
|
||||
}
|
||||
|
||||
protected void dsBPABGrid_Selected(object sender, SqlDataSourceStatusEventArgs e)
|
||||
{
|
||||
if (e.AffectedRows == 0)
|
||||
{
|
||||
gvBPAB.Visible = false;
|
||||
fvBPAB.ChangeMode(FormViewMode.Insert);
|
||||
fvBPAB_ModeChanged(sender, e);
|
||||
}
|
||||
}
|
||||
|
||||
protected void fvBPAB_ItemCommand(object sender, FormViewCommandEventArgs e)
|
||||
{
|
||||
switch (e.CommandName)
|
||||
{
|
||||
case "Insert":
|
||||
break;
|
||||
case "Edit":
|
||||
break;
|
||||
case "Delete":
|
||||
break;
|
||||
case "Cancel":
|
||||
Search();
|
||||
fvBPAB.ChangeMode(FormViewMode.ReadOnly);
|
||||
fvBPAB_ModeChanged(sender, e);
|
||||
if (gvBPAB.Rows.Count == 0)
|
||||
DoAfterCommand("BIG");
|
||||
break;
|
||||
|
||||
case "Big":
|
||||
DoAfterCommand("BIG");
|
||||
break;
|
||||
|
||||
case "Small":
|
||||
DoAfterCommand("SMALL");
|
||||
break;
|
||||
|
||||
case "Detail":
|
||||
DoAfterCommand("DETAIL");
|
||||
break;
|
||||
|
||||
case "Return":
|
||||
//ParamList.Clear();
|
||||
DoAfterCommand("BPAA");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
protected void fvBPAB_ItemDeleted(object sender, FormViewDeletedEventArgs e)
|
||||
{
|
||||
Search();
|
||||
|
||||
gvBPAB.DataBind();
|
||||
if (gvBPAB.SelectedIndex > gvBPAB.Rows.Count - 1)
|
||||
{
|
||||
gvBPAB.SelectedIndex = gvBPAB.Rows.Count - 1;
|
||||
gvBPAB.DataBind();
|
||||
}
|
||||
fvBPAB.DataBind();
|
||||
}
|
||||
|
||||
protected void fvBPAB_ItemInserted(object sender, FormViewInsertedEventArgs e)
|
||||
{
|
||||
Search();
|
||||
}
|
||||
|
||||
protected void fvBPAB_ItemUpdated(object sender, FormViewUpdatedEventArgs e)
|
||||
{
|
||||
Search();
|
||||
}
|
||||
|
||||
protected void fvBPAB_ModeChanged(object sender, EventArgs e)
|
||||
{
|
||||
switch (fvBPAB.CurrentMode)
|
||||
{
|
||||
case FormViewMode.ReadOnly:
|
||||
gvBPAB.Visible = true;
|
||||
gvBPAB.DataBind();
|
||||
if (gvBPAB.Rows.Count > 0)
|
||||
{
|
||||
if (gvBPAB.SelectedIndex == -1)
|
||||
{
|
||||
gvBPAB.SelectedIndex = 0;
|
||||
}
|
||||
|
||||
if (OldMode == FormViewMode.Insert)
|
||||
{
|
||||
gvBPAB.PageIndex = gvBPAB.PageCount - 1;
|
||||
gvBPAB.DataBind();
|
||||
gvBPAB.SelectedIndex = gvBPAB.Rows.Count - 1;
|
||||
}
|
||||
|
||||
fvBPAB.DataBind();
|
||||
}
|
||||
break;
|
||||
|
||||
case FormViewMode.Edit:
|
||||
gvBPAB.Visible = false;
|
||||
break;
|
||||
|
||||
case FormViewMode.Insert:
|
||||
gvBPAB.Visible = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
protected void fvBPAB_ModeChanging(object sender, FormViewModeEventArgs e)
|
||||
{
|
||||
OldMode = (sender as FormView).CurrentMode;
|
||||
}
|
||||
|
||||
protected void fvBPAB_DataBound(object sender, EventArgs e)
|
||||
{
|
||||
switch (fvBPAB.CurrentMode)
|
||||
{
|
||||
case FormViewMode.Edit:
|
||||
SetClientFocus(fvBPAB, "txtBPAB_BPAME");
|
||||
break;
|
||||
case FormViewMode.Insert:
|
||||
SetClientFocus(fvBPAB, "txtBPAB_BPAME");
|
||||
break;
|
||||
case FormViewMode.ReadOnly:
|
||||
if (fvBPAB.DataItem != null)
|
||||
{
|
||||
ViewState["OLD_BPACC"] = (fvBPAB.DataItem as DataRowView)["BPACC"];
|
||||
ViewState["OLD_BPCLS"] = (fvBPAB.DataItem as DataRowView)["BPCLS"];
|
||||
ViewState["OLD_BPORD"] = (fvBPAB.DataItem as DataRowView)["BPORD"];
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
protected void fvBPAB_ItemCreated(object sender, EventArgs e)
|
||||
{
|
||||
switch (fvBPAB.CurrentMode)
|
||||
{
|
||||
case FormViewMode.Insert:
|
||||
(fvBPAB.FindControl("lbBPAB_BPNUM") as ITextControl).Text = _BPNUM;
|
||||
(fvBPAB.FindControl("lbBPAB_BPPYN") as ITextControl).Text = _BPPYN;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
protected void gvBPAB_RowDataBound(object sender, GridViewRowEventArgs e)
|
||||
{
|
||||
SetGridViewMouseBehavier(sender as GridView, e.Row);
|
||||
//GridView_RowDataBound_Shrink_ViewState(sender, e);
|
||||
}
|
||||
|
||||
protected void gvBPAB_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
foreach (GridViewRow row in gvBPAB.Rows)
|
||||
SetGridViewMouseBehavier(gvBPAB, row);
|
||||
}
|
||||
|
||||
// 取得大類名稱
|
||||
protected string GetBPACCBig(string bpacc)
|
||||
{
|
||||
DbCommand cmd = Query.NewCommand("SELECT BPAME FROM BPAB WHERE BPPYN=@BPPYN AND BPACC=@BPACC");
|
||||
cmd.Parameters.Add(Query.NewParameter("BPPYN", _BPPYN));
|
||||
cmd.Parameters.Add(Query.NewParameter("BPACC", bpacc.Substring(0, 2) + "0000"));
|
||||
object o = Query.ExecuteScalar(cmd);
|
||||
if (o == null || o == DBNull.Value)
|
||||
return "";
|
||||
else
|
||||
return o.ToString();
|
||||
}
|
||||
|
||||
// 取得自動編號的科目編號
|
||||
private string GetNewBPACC(string bpaccBig)
|
||||
{
|
||||
return WGuard1.WNextRen(DateTime.UtcNow.AddHours(8), "BPAB", "BPACC", String.Format("\"{0}\"<99>\"00\"", bpaccBig.Substring(0, 2)), string.Format(" BPPYN='{0}'", _BPPYN));
|
||||
}
|
||||
|
||||
protected void fvBPAB_ItemInserting(object sender, FormViewInsertEventArgs e)
|
||||
{
|
||||
string bpaccBig = (fvBPAB.FindControl("dlBPAB_BPACCBig") as DropDownList).SelectedValue;
|
||||
e.Values["BPACC"] = GetNewBPACC(bpaccBig);
|
||||
}
|
||||
|
||||
protected void fvBPAB_ItemUpdating(object sender, FormViewUpdateEventArgs e)
|
||||
{
|
||||
_OLD_BPACC = ViewState["OLD_BPACC"] != null ? ViewState["OLD_BPACC"].ToString() : "";
|
||||
string bpaccBig = (fvBPAB.FindControl("dlBPAB_BPACCBig") as DropDownList).SelectedValue;
|
||||
if (_OLD_BPACC.Substring(0, 2) != bpaccBig.Substring(0, 2))
|
||||
e.NewValues["BPACC"] = GetNewBPACC(bpaccBig);
|
||||
}
|
||||
|
||||
protected void cvBPORD_ServerValidate(object source, ServerValidateEventArgs args)
|
||||
{
|
||||
int i;
|
||||
args.IsValid = int.TryParse(args.Value, out i) && i > 0 && i < 100;
|
||||
}
|
||||
|
||||
protected void fvBPAB_ItemDeleting(object sender, FormViewDeleteEventArgs e)
|
||||
{
|
||||
// 刪除前檢查
|
||||
// 1. 是否已有科目設定
|
||||
DbCommand cmd1 = Query.NewCommand("SELECT COUNT(1) FROM BPAB WHERE BPPYN=@BPPYN AND BPACC >= @BPACC + '01' AND BPACC <= @BPACC + '99'");
|
||||
cmd1.Parameters.Add(Query.NewParameter("BPPYN", e.Values["BPPYN"]));
|
||||
cmd1.Parameters.Add(Query.NewParameter("BPACC", e.Values["BPACC"].ToString().Substring(0, 4)));
|
||||
int i = Convert.ToInt32(Query.ExecuteScalar(cmd1));
|
||||
if (i > 0)
|
||||
{
|
||||
cvMessage.ErrorMessage = "本小類之下有科目。不可刪除!";
|
||||
cvMessage.IsValid = false;
|
||||
e.Cancel = true;
|
||||
}
|
||||
}
|
||||
|
||||
protected void dsBPABForm_Deleting(object sender, SqlDataSourceCommandEventArgs e)
|
||||
{
|
||||
e.Command.Connection.Open();
|
||||
e.Command.Transaction = e.Command.Connection.BeginTransaction();
|
||||
}
|
||||
|
||||
protected void ChainUpdateBPAA(string old_bpacc, string new_bpacc, DbTransaction tran)
|
||||
{
|
||||
// 取得專案科目對應資料
|
||||
GetData gd = new GetData();
|
||||
gd.Query = Query;
|
||||
DataTable bpaa = gd.GetBPAA_BPPYN(_BPPYN);
|
||||
DataRow bpaaRow = bpaa.Rows[0];
|
||||
DbCommand cmdUpdateBPAA = Query.NewCommand();
|
||||
cmdUpdateBPAA.Connection = tran.Connection;
|
||||
cmdUpdateBPAA.Transaction = tran;
|
||||
cmdUpdateBPAA.Parameters.Add(Query.NewParameter("TRUSR", UserId));
|
||||
cmdUpdateBPAA.Parameters.Add(Query.NewParameter("BPPYN", _BPPYN));
|
||||
cmdUpdateBPAA.Parameters.Add(Query.NewParameter("BPSXX", new_bpacc));
|
||||
|
||||
// 核對科目對應資料,如果已有科目對應,則清除科目對應
|
||||
string[] fieldNames = {"BPS01", "BPS02", "BPS03", "BPS04", "BPS05",
|
||||
"BPS06", "BPS07", "BPS08", "BPS09", "BPS10",
|
||||
"BPS11", "BPS12", "BPS13", "BPS14", "BPS15",
|
||||
"BPS16", "BPS17", "BPS18", "BPS19", "BPS20",
|
||||
"BPS21", "BPS22", "BPS23", "BPS24", "BPS25",
|
||||
"BPS26", "BPS27", "BPS28", "BPS29", "BPS30"};
|
||||
for (int i = 0; i < fieldNames.Length; i++)
|
||||
{
|
||||
if (bpaaRow[fieldNames[i]] != DBNull.Value && bpaaRow[fieldNames[i]].ToString() == old_bpacc)
|
||||
{
|
||||
cvMessage.ErrorMessage += String.Format("\"{0}\" 的科目對應因科目刪除而清除<br/>", GetString("BPAA." + fieldNames[i]));
|
||||
cmdUpdateBPAA.CommandText = String.Format("UPDATE BPAA SET {0}=@BPSXX, TRDAT=GETDATE(), TRMOD='UPDATE', TRUSR=@TRUSR WHERE BPPYN=@BPPYN", fieldNames[i]);
|
||||
cmdUpdateBPAA.ExecuteNonQuery();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
protected void dsBPABForm_Deleted(object sender, SqlDataSourceStatusEventArgs e)
|
||||
{
|
||||
cvMessage.IsValid = true;
|
||||
cvMessage.ErrorMessage = "";
|
||||
ChainUpdateBPAA(e.Command.Parameters["@OLD_BPACC"].Value.ToString(), "", e.Command.Transaction);
|
||||
e.Command.Transaction.Commit();
|
||||
e.Command.Connection.Close();
|
||||
cvMessage.IsValid = cvMessage.ErrorMessage == "";
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user