/// <summary> /// 【功能】:查詢檔期活動折扣資料 /// /// 【傳入值】: /// 〔@依照傳入的查詢條件〕 /// /// 【回傳值】: /// 〔@參考web ui spec〕 /// /// 【主要TABLE】: /// A=VDS_STM_PROMOTE_MST /// B=VDS_STM_PROMOTE_DTL /// /// 【說明】: /// 1.正確回傳查詢的dataset,欄位請參照web ui spec。 /// 2.關聯A.PROMOTE_ID=B.PROMOTE_ID /// 3.ENABLE=1 /// </summary> public string QueryPromoteExhibition(string V_PROMOTE_ID) { try { DBO.STM_STM20_DBO dbo = new STM_STM20_DBO(ref USEDB); string V_EXIST_FLAG = ""; dbo.doCheckPromoteExists(V_PROMOTE_ID, out V_EXIST_FLAG); return V_EXIST_FLAG; } catch (Exception ex) { throw ex; } }
/// <summary> /// 目的:查詢上傳後的成功筆數 /// Table:VDS_STM_PROMOTE_DTL_TMP /// 條件:V_CREATEUID /// </summary> public void QueryPromoteTelTmpImportStat(int N_IMPORT_KIND,string V_CREATEUID, out int N_TMP_CNT, out int N_TAB_CNT) { try { DBO.STM_STM20_DBO dbo = new STM_STM20_DBO(ref USEDB); dbo.doQueryPromoteDtlTmpImportStat(N_IMPORT_KIND,V_CREATEUID, out N_TMP_CNT, out N_TAB_CNT); } catch (Exception ex) { throw ex; } }
/// <summary> /// 目的:查詢錯誤訊息資料 /// Table: /// C=VDS_STM_PROMOTE_DTL_TMP /// 條件:[資料型態]=2:錯誤資料、[建立人員]=@登入者 /// 回傳: /// Improt_kind=1的錯誤資料顯示在第一個gridview。 /// Improt_kind=2的錯誤資料顯示在第二個gridview。 /// </summary> public DataTable QueryErrorByFind(int N_IMPORT_KIND,string V_CREATEUID, DateTime D_CREATEDATE_S, DateTime D_CREATEDATE_E) { try { DBO.STM_STM20_DBO dbo = new STM_STM20_DBO(ref USEDB); return dbo.doQueryPromoteDtlTmpError(N_IMPORT_KIND,V_CREATEUID, D_CREATEDATE_S, D_CREATEDATE_E); } catch (Exception ex) { throw ex; } }
/// <summary> /// 目的:將上傳檔案內容,存入暫存檔 /// 傳入參數: /// 〔@檔期編號〕 /// 1.先清除前一次,同一使用者執行的匯入暫存資訊與錯誤資訊。 /// 相關Table: /// C=VDS_STM_PROMOTE_DTL_TMP /// 2.讀取匯入檔案到暫存DataSet。 /// C.PROMOTE_ID=〔@檔期編號〕,其他欄位參照檔案格式。 /// 3.檢查匯入檔案格式內容是否正確,如有任何錯誤,則停止上傳流程,並回傳錯誤訊息。 /// 『XX檔案,檔案內容錯誤:@錯誤說明』 (格式請參考資料庫Table Shcema) /// * 日期:檢查日期格式。 /// * 數字:檢查內容是否為數字。 /// * 文字:檢查長度是否溢位。 /// * 檔案欄位數是否不足。 /// * 兩個工作表匯入內容有任一筆錯,皆視為錯誤,整批放棄。 /// * 匯入表格細節說明請參考:WEB UI SPEC 文件 /// 4. 格式檢查正確無誤後 /// a) 暫存檔中的[狀態]欄位調整為1:FILE TO TMP /// b) 呼叫 [CheckData] ,檢查資料內容邏輯正確性 /// 5.無論CheckData()檢查結果是否為True, /// 皆將上傳檔案內容新增到資料庫Tmp Table:, /// 並記錄錯誤原因、匯入者、匯入日期、處理檔案名稱=上傳檔名。 /// c)上述匯入需一併Commit,處理期間有任何錯誤,皆視為異常,整批Rollback,並回傳錯誤訊息。 /// 6. 如果CheckData()檢查結果=false 上傳流程完成,回傳處理筆數訊息:上傳總筆數、成功筆數、失敗筆數。 /// 7.如果import_kind=2 CheckData()檢查結果=True,表示2個檔案都沒有錯誤,才呼叫[ImportPromoteDiscount. /// TmpToDB],處理匯入正式表單。* 匯入檔案對應,請參考工作表:STM20 檔期活動折扣匯入(檔案格式)。 /// </summary> public void FileToTmp(DataTable dt, DbTransaction RootDBT, string V_CREATEUID, out string ErrorMsg) { bool IsRootTranscation = false; try { DBO.STM_STM20_DBO dbo = new STM_STM20_DBO(ref USEDB); ErrorMsg = ""; //判斷是否有傳入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 清空VDS_STM_PROMOTE_DTL_TMP dbo.doDeletePromoteDtlTmp(V_CREATEUID, DBT); #endregion #region FileToTmp ArrayList ParameterList = new ArrayList(); string V_RESULT = "1"; if (dt != null) { for (int i = 0; i < dt.Rows.Count; i++) { ParameterList.Clear(); ParameterList.Add(dt.Rows[i]["DATASOURCE"].ToString()); ParameterList.Add(Convert.ToInt32(dt.Rows[i]["ROW_NUM"].ToString())); ParameterList.Add(Convert.ToInt32(dt.Rows[i]["IMPORT_KIND"].ToString())); ParameterList.Add(dt.Rows[i]["PROMOTE_CODE"].ToString()); ParameterList.Add(dt.Rows[i]["STORE"].ToString()); ParameterList.Add(dt.Rows[i]["ITEM"].ToString()); ParameterList.Add(dt.Rows[i]["PERIOD"].ToString()); ParameterList.Add(GetValueSetParameter(dt.Rows[i]["COST_SUBSIDY_PERCENT"].ToString(),"float",false)); ParameterList.Add(GetValueSetParameter(dt.Rows[i]["PRICE_SUBSIDY_PERCENT"].ToString(), "float", false)); ParameterList.Add(System.DateTime.Now); ParameterList.Add(V_CREATEUID); dbo.doCreatePromoteDtlTmp(ParameterList, DBT); } } #endregion #region TmpToDB dbo.doCreatePromoteDtl(V_CREATEUID, DBT, out V_RESULT); if (V_RESULT == "0") ErrorMsg = "轉入正式檔期活動折扣失敗,請檢視異常報表!"; #endregion if (IsRootTranscation) { //獨立呼叫Transcation成立 DBT.Commit(); } } catch (Exception ex) { #region 交易失敗 DBT.Rollback(); #endregion throw ex; } finally { #region 判斷是否關閉交易連線 if (IsRootTranscation) { //獨立呼叫Transcation,關閉連線 if (Conn.State == ConnectionState.Connecting) { Conn.Close(); } } #endregion } }