DCFP101Controller 是一組 Web API,用於進貨應付帳款傳票作業。該 API 包含多項功能,包括交易區分查詢、進貨應付帳款傳票暫存檔查詢、資料轉入、傳票生成,以及檢核 DC 代號等操作。本文將詳細描述每個 API 方法的運作流程、使用情境、輸入與輸出格式,以及檢核邏輯。
[Authorize] 屬性,任何用戶都可以調用。使用者在進行進貨資料管理時,需要選擇交易類型(例如:買賣、代購)。當使用者點擊前端的下拉選單時,前端會調用 GetBusTypeList API 來獲取交易類型選項。
GET 請求到 GetBusTypeList API。_commonService.QueryBusTypeForBPTypeResult(),從資料庫中取得交易類型列表。ACCT_MNO)、賬戶子編號(ACCT_RNO)。CodeReference_OutputVo)"A"(表示買賣)。"買賣"。{
    "RESULT_CODE": "S0000001",
    "RESULT_MESSAGE": "查詢成功",
    "RESULT": [
        {
            "CODE_NO": "A",
            "CODE_DESC": "買賣",
            "ACCT_MNO": "12345",
            "ACCT_RNO": "67890"
        },
        {
            "CODE_NO": "F",
            "CODE_DESC": "代購",
            "ACCT_MNO": "23456",
            "ACCT_RNO": "78901"
        },
        {
            "CODE_NO": "99",
            "CODE_DESC": "全部",
            "ACCT_MNO": "",
            "ACCT_RNO": ""
        }
    ]
}
[Authorize] 屬性,任何用戶都可以調用。使用者想要查詢某月份的進貨應付帳款,輸入查詢條件(結帳年月、結帳期間、DC 代號、交易區分),然後點擊查詢按鈕。
使用者在查詢條件輸入框中填寫以下資訊:
結帳年月: "202408"結帳期間 起: "2024-08-01"結帳期間 迄: "2024-08-31"DC 代號: "DC001"交易區分: "A"前端將這些資訊打包成 JSON 格式,並發送 POST 請求到 Query API:
{
    "P_YYMM": "202408",
    "P_SDATE": "2024-08-01",
    "P_EDATE": "2024-08-31",
    "P_DC_CODE": "DC001",
    "P_BUS_TYPE": "A"
}
API 調用 _service.QueryResult(inputVo),根據 DCFP101_InputVo 中的查詢條件到資料庫中檢索符合的進貨資料。
API 將查詢結果組合成 DCFP101Q_OutputVo 物件,並打包成 JSON 格式返回給前端。
DCFP101_InputVo)"202408")。"2024-08-01")。"2024-08-31")。"DC001")。"A")。DCFP101Q_OutputVo){
    "RESULT_CODE": "S0000001",
    "RESULT_MESSAGE": "查詢成功",
    "RESULT": [
        {
            "O_BUS_TYPE": "A",
            "O_ACCT_DATE": "2024-08-15T00:00:00",
            "O_CNT": 5,
            "O_AMT": 5000,
            "O_TAX": 250,
            "O_EXPECT": 200,
            "O_DIF": 50
        }
    ]
}
流程圖: : 流程圖
[Authorize] 屬性,必須經過身份驗證的用戶才能調用。使用者從供應商那裡獲取了一份進貨資料的 CSV 文件,希望將這些資料匯入系統中。該 API 包含前端資料檢核,以確保資料的正確性。
使用者點擊「資料轉入」按鈕,前端將 CSV 文件內容及相關資訊(如匯入月份、DC 代號、交易區分)打包成 JSON,並發送 POST 請求到 Procedure_Ins_WDS_Data API:
{
    "P_YYMM": "202408",
    "P_SDATE": "2024-08-01",
    "P_EDATE": "2024-08-31",
    "P_DC_CODE": "DC001",
    "P_BUS_TYPE": "A",
    "fileContent": "DOC_NO,INVOICE_NO,AMT,TAX\nDOC001,INV202408001,5000,250\nDOC002,INV202408002,3000,150"
}
資料檢核:
IsInsWDSDataFieldCheck 方法,對輸入的資料進行檢核,確保資料格式和內容的正確性。執行儲存程序:
P_BUS_TYPE 的值來決定執行哪個儲存程序:P_BUS_TYPE 為 "A",則執行 INS_WDS_DATA_A。P_BUS_TYPE 為 "F",則執行 INS_WDS_DATA_F。結果處理:
"RESULT_CODE": "S0000001" 並記錄成功訊息:「預存程序 INS_WDS_DATA_A 執行完成」。P_ERRMSG 欄位將包含錯誤資訊。DCFP101_InputVo):DC 代號。
DCFP101_OutputVo){
    "RESULT_CODE": "S0000001",
    "RESULT_MESSAGE": "預存程序 INS_WDS_DATA_A 執行完成",
    "RESULT": {
        "P_ERRMSG": ""
    }
}
[Authorize] 屬性,必須經過身份驗證的用戶才能調用。使用者已經匯入了某月份的進貨資料,並核對無誤。希望生成對應的會計傳票。
使用者點擊「生成傳票」按鈕,前端將條件打包成 JSON,發送 POST 請求到 Function_DCFP101v API:
{
    "P_YYMM": "202408",
    "P_SDATE": "2024-08-01",
    "P_EDATE": "2024-08-31",
    "P_DC_CODE": "DC001",
    "P_BUS_TYPE": "A"
}
資料檢核:
IsDCFP101vFieldCheck 方法對輸入資料進行檢核,確保內容正確。執行儲存程序檢核:
Procedure_Check_Data 進行進一步檢核,若有異常,則返回錯誤訊息。Function_DCFP101v 生成傳票。成功時提交資料,失敗則回滾。結果處理:
SUCCESS 並記錄成功訊息:「傳票產生完成」。DCFP101_OutputVo 中的 P_ERRMSG。DCFP101_OutputVo){
    "RESULT_CODE": "S0000001",
    "RESULT_MESSAGE": "傳票產生完成",
    "RESULT": {
        "P_ERRMSG": ""
    }
}
[Authorize] 屬性,任何用戶都可以調用。使用者在輸入 DC 代號時,想要確認該代號是否正確並存在於系統內。
POST 請求到 CheckDCCode API:{
    "DC_CODE": "DC001"
}
_ddpdDao 對 DC 代號進行檢核,確認該代號是否存在於 DCFM103 表中。ServiceResult<bool>)"S0000001" 代表成功。"檢核成功" 或 "在參數檔 DCFM103 中無 DC 代號"。true 代表 DC 代號有效,false 代表無效。成功情況:
{
    "RESULT_CODE": "S0000001",
    "RESULT_MESSAGE": "檢核成功",
    "RESULT": true
}
無效情況:
{
    "RESULT_CODE": "S0010001",
    "RESULT_MESSAGE": "在參數檔 DCFM103 中無 DC 代號",
    "RESULT": false
}