public void UpdStockIn(ArrayList ParameterList, DataTable dataDetail, DbTransaction RootDBT) { bool IsRootTranscation = false; string SourceNo = string.Empty; string CheckFreeze_Flag = string.Empty; string UserID = string.Empty; try { VDS_IVM025_DBO dbo = new VDS_IVM025_DBO(ref USEDB); CheckFreeze_Flag = ParameterList[0].ToString(); SourceNo = ParameterList[1].ToString(); UserID = ParameterList[2].ToString(); //判斷是否有傳入Root Transcation IsRootTranscation = (RootDBT == null) ? true : false; #region 啟動交易或指定RootTranscation if (IsRootTranscation) { //獨立呼叫啟動Transcation Conn = USEDB.CreateConnection(); Conn.Open(); DBT = Conn.BeginTransaction(); } else { DBT = RootDBT; } #endregion #region 逐筆更新入庫單 DateTime dtNow = DateTime.Now; for (int i = 0; i < dataDetail.Rows.Count; i++) { int New_Qty = int.Parse(dataDetail.Rows[i][5].ToString()); int Old_Qty = int.Parse(dataDetail.Rows[i][4].ToString()); ArrayList QueryParameters = new ArrayList(); QueryParameters.Add(SourceNo); QueryParameters.Add(dataDetail.Rows[i][0].ToString()); QueryParameters.Add(dataDetail.Rows[i][1].ToString()); QueryParameters.Add(dataDetail.Rows[i][2].ToString()); QueryParameters.Add(dataDetail.Rows[i][3].ToString()); DataTable dataUpdate = dbo.QueryStockInDetl_BySouceID(QueryParameters); ArrayList UpdateParameter = new ArrayList(); UpdateParameter.Add(dataUpdate.Rows[0]["ID"]); UpdateParameter.Add(dataUpdate.Rows[0]["PID"]); UpdateParameter.Add(dataUpdate.Rows[0]["locate_no"]); UpdateParameter.Add(dataUpdate.Rows[0]["locate_section"]); UpdateParameter.Add(dataUpdate.Rows[0]["item"]); UpdateParameter.Add(dataUpdate.Rows[0]["period"]); UpdateParameter.Add(dataUpdate.Rows[0]["inout_qty"]); UpdateParameter.Add(dataUpdate.Rows[0]["adjust_qty"]); UpdateParameter.Add(dataUpdate.Rows[0]["cost"]); UpdateParameter.Add(dataUpdate.Rows[0]["pick_no"]); UpdateParameter.Add(dataUpdate.Rows[0]["createuid"]); UpdateParameter.Add(dataUpdate.Rows[0]["createdate"]); UpdateParameter.Add(dataUpdate.Rows[0]["updateuid"]); UpdateParameter.Add(dataUpdate.Rows[0]["updatedate"]); UpdateParameter.Add(dataDetail.Rows[i][5]); UpdateParameter.Add(UserID); dbo.UpdateStockInDetl(UpdateParameter, DBT); #region 更新庫存表 UpdateParameter.Clear(); UpdateParameter.Add(CheckFreeze_Flag); UpdateParameter.Add(dataDetail.Rows[i][1].ToString()); UpdateParameter.Add(dataDetail.Rows[i][0].ToString()); UpdateParameter.Add(dataDetail.Rows[i][2].ToString()); UpdateParameter.Add(dataDetail.Rows[i][3].ToString()); UpdateParameter.Add("I"); UpdateParameter.Add(New_Qty - Old_Qty); UpdateParameter.Add(UserID); UpdateParameter.Add(""); UpdateParameter.Add(""); dbo.UpdateINVQty(UpdateParameter, DBT); #endregion } #endregion #region 交易成功 if (IsRootTranscation) { //獨立呼叫Transcation成立 DBT.Commit(); } #endregion } catch (Exception ex) { #region 交易失敗 if (IsRootTranscation) { //獨立呼叫Transcation失敗 DBT.Rollback(); } #endregion throw ex; } finally { #region 判斷是否關閉交易連線 if (IsRootTranscation) { //獨立呼叫Transcation,關閉連線 if (Conn.State == ConnectionState.Connecting) { Conn.Close(); } } #endregion } }