/// <summary> /// 傳入參數: /// 〔@發票號碼〕 /// 傳回訊息: /// 〔@刪除是否成功〕 /// //spec中的語法為參考,pg撰寫程式時需要調整程式語法。 /// TABLE: /// A=VDS_VAM_INVOICE_MAIN(進項發票主檔) /// B=VDS_VAM_INVOICE_DETL(進項發票明細檔) /// C= VDS_VAM_DIFF_INVOICE(物料差主檔) /// /// /// 檢查: /// 1.已經被折讓的發票資料A. NON_DISC_AMT <> A.INV_UAMT 則不能刪除,顯示提醒無法刪除。 /// 2.已經被折讓的物料差資料C. NON_DISC_AMT <> C. DIFF_INV_UAMT 則不能刪除,顯示提醒無法刪除。 /// 3.回傳無法刪除訊息。 /// /// 說明: /// 呼叫VDS_ACM_VAM06.SP_DeletePurchaseInvoice利用sp進行 /// </summary> public string DeletePurchaseInvoice(ArrayList ParameterList1, DbTransaction RootDBT) { bool IsRootTranscation = false; try { DBO.VAM061_DBO dbo = new VAM061_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 int N_ID = 0; int N_ID1 = 0; string V_MSG, V_RESULT; //先刪除原發票資料 dbo.doDeletePurchaseInvoice(ParameterList1, DBT, out V_MSG, out V_RESULT); if (V_RESULT == "1")//刪除成功 { V_MSG = "刪除成功"; if (IsRootTranscation) { //獨立呼叫Transcation成立 DBT.Commit(); } } else { DBT.Rollback(); } return V_MSG; } catch (Exception ex) { #region 交易失敗 DBT.Rollback(); #endregion throw ex; } finally { #region 判斷是否關閉交易連線 if (IsRootTranscation) { //獨立呼叫Transcation,關閉連線 if (Conn.State == ConnectionState.Connecting) { Conn.Close(); } } #endregion } }
public string UpdatePurchaseInvoice(ArrayList ParameterList1, ArrayList ParameterList2, DataTable dtA, DbTransaction RootDBT) { bool IsRootTranscation = false; try { DBO.VAM061_DBO dbo = new VAM061_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 int N_ID = 0; int N_ID1 = 0; string V_MSG, V_RESULT; //先刪除原發票資料 dbo.doDeletePurchaseInvoice(ParameterList1, DBT, out V_MSG, out V_RESULT); if (V_RESULT == "1")//刪除成功 { //做發票主檔新增 dbo.doInsertPurchaseInvoiceMain(ParameterList2, out N_ID, DBT); //做發票明細檔新增 ArrayList Parameter_Det = new ArrayList(); if (dtA != null) { for (int i = 0; i < dtA.Rows.Count; i++) { Parameter_Det.Clear(); //N_PID Parameter_Det.Add(N_ID); //V_INV_NO Parameter_Det.Add(ParameterList2[0]); //V_TAX_TYPE Parameter_Det.Add(ParameterList2[3]); //V_SOURCE_TYPE Parameter_Det.Add(GetValueSetParameter(dtA.Rows[i]["SOURCE_TYPE"].ToString(), "string", false)); //V_SOURCE_NO Parameter_Det.Add(GetValueSetParameter(dtA.Rows[i]["SOURCE_NO"].ToString(), "string", false)); //N_REMAIN_AMT目前沒用到該欄位所以填NULL Parameter_Det.Add(GetValueSetParameter("", "float", false)); //N_AMT Parameter_Det.Add(GetValueSetParameter(dtA.Rows[i]["AMT"].ToString(), "float", false)); //D_UPDATEDATE Parameter_Det.Add(ParameterList2[8]); //V_UPDATEUID Parameter_Det.Add(ParameterList2[9]); //V_CREATEUID Parameter_Det.Add(ParameterList2[10]); //D_CREATEDATE Parameter_Det.Add(ParameterList2[11]); dbo.doInsertPurchaseInvoiceDetl(Parameter_Det, out N_ID1, DBT); } } //會產生物料差單號 dbo.doGenDiffInvoice(ParameterList2, DBT); if (IsRootTranscation) { //獨立呼叫Transcation成立 DBT.Commit(); } } else { DBT.Rollback(); } return V_MSG; } catch (Exception ex) { #region 交易失敗 DBT.Rollback(); #endregion throw ex; } finally { #region 判斷是否關閉交易連線 if (IsRootTranscation) { //獨立呼叫Transcation,關閉連線 if (Conn.State == ConnectionState.Connecting) { Conn.Close(); } } #endregion } }