/// <summary> /// 新增入庫表單 /// </summary> /// <param name="ParameterList">輸入變數 0.CheckFreeze_Flag 1.ReasonNo 2.ADJNo 3.SourceNo 4.UserID </param> /// <param name="RootDBT">是否有主交易,無主交易輸入null</param> /// <returns>回傳新增之ID</returns> public int CreateStockIn(ArrayList ParameterList, DataTable dataDetail, DbTransaction RootDBT ) { #region string CheckFreeze_Flag = ParameterList[0].ToString(); string ReasonNo = ParameterList[1].ToString(); string ADJNo = ParameterList[2].ToString(); string SourceNo = ParameterList[3].ToString(); string UserID = ParameterList[4].ToString(); int PID = -1; string StockInNo = string.Empty; bool IsRootTranscation = false; try { VDS_IVM025_DBO dbo = new VDS_IVM025_DBO(ref USEDB); //判斷是否有傳入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 建立主檔取得PID StockInNo = dbo.InsertStockInNo(ParameterList, DBT, out PID); for (int i = 0; i < dataDetail.Rows.Count; i++) { int StockIn_Qty = int.Parse(dataDetail.Rows[i][4].ToString()); ArrayList InsertParameter = new ArrayList(); InsertParameter.Add(PID); InsertParameter.Add(UserID); InsertParameter.Add(ADJNo); InsertParameter.Add(dataDetail.Rows[i][0].ToString()); //LocateNo InsertParameter.Add(dataDetail.Rows[i][1].ToString()); //LocateSec InsertParameter.Add(dataDetail.Rows[i][2].ToString()); //Item InsertParameter.Add(dataDetail.Rows[i][3].ToString()); //Period InsertParameter.Add(int.Parse(dataDetail.Rows[i][4].ToString())); //In_Qty InsertParameter.Add(double.Parse(dataDetail.Rows[i][5].ToString())); //Cost dbo.InsertStockInDetail(InsertParameter, DBT); #region 更新庫存表 ArrayList UpdateParameter = new ArrayList(); UpdateParameter.Clear(); UpdateParameter.Add(CheckFreeze_Flag); UpdateParameter.Add(dataDetail.Rows[i][1].ToString()); //Locate_Section UpdateParameter.Add(dataDetail.Rows[i][1].ToString().Substring(0, 1)); //Locate_No UpdateParameter.Add(dataDetail.Rows[i][2].ToString()); //Item UpdateParameter.Add(dataDetail.Rows[i][3].ToString()); //Period UpdateParameter.Add("I"); UpdateParameter.Add(dataDetail.Rows[i][4].ToString()); //In_Qty UpdateParameter.Add(UserID); UpdateParameter.Add(""); UpdateParameter.Add(""); dbo.UpdateINVQty(UpdateParameter, DBT); #endregion } #endregion #region 交易成功 if (IsRootTranscation) { //獨立呼叫Transcation成立 DBT.Commit(); } #endregion return PID; } 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 } #endregion }