# 南寶關務系統-ERP資料API串接說明 ## ERP位置 進入裝櫃資料表,右側頁面表格「立案案號」欄位第一筆資料處,其為一按鈕元件。該元件之OnSelcet屬性中,捲動程式至最底部,便會出現呼叫ERP資料API串接程式。 ![2024-01-02_08-56-50](https://hackmd.io/_uploads/BykSEJW_a.png) ![2024-01-02_08-57-49](https://hackmd.io/_uploads/BJIyry-OT.png) ## 程式碼說明 ```mermaid graph TD A([點選案號]) --> B["包裝參數為JSON\n"] -->|傳入JSON| C[["呼叫'Nanpao_getSalesOrderLists'\n取得顧客訂單資料"]] -->|回傳訂單編號資料| E subgraph 收集訂單明細 E[包裝參數與訂單編號為JSON] -->|傳入JSON| F[["呼叫'Nanpao_getSalesOrderDetailLists'\n取得編號明細資料"]] --> G["存入Collection\n'CustomersItemsListCollection'"] end ``` ```clike= // Call commodity list through APIs //包裝參數為JSON Set( getSalesOrderList_json, JSON( { customerid: varRecord.客戶編號, account: "igateAccount00", password: "igetP@ssw0rdW#e4!Du%" } ) ); //呼叫'Nanpao_getSalesOrderLists'取得顧客訂單資料 Set( DoFlow_getSalesOrderLists, Nanpao_getSalesOrderLists.Run(getSalesOrderList_json) ); //存入Collection'CustomersItemsListCollection' Clear(CustomersItemsListCollection); ForAll( DoFlow_getSalesOrderLists.data As OrderslistforCustomer, Collect( CustomersItemsListCollection, AddColumns( //呼叫'Nanpao_getSalesOrderDetailLists'取得編號明細資料 Nanpao_getSalesOrderDetailLists.Run( //包裝參數與訂單編號為JSON JSON( { customerid: varRecord.客戶編號, orderNo: OrderslistforCustomer.orderNumber, account: "igateAccount00", password: "igetP@ssw0rdW#e4!Du%" } ) ).data, "order_number", OrderslistforCustomer.orderNumber ) ) ); ``` ## Power Automate 工作流程 在PowerApps中,呼叫API需透過呼叫Power Automate 工作流程方式,傳入參數與取得資料。 在本系統中,呼叫ERP資料所使用之工作流程包含'Nanpao_getSalesOrderLists'以及'Nanpao_getSalesOrderDetailLists'。 ![2024-01-02_10-25-25](https://hackmd.io/_uploads/Sk6iLxbdT.png) ![2024-01-02_10-30-42](https://hackmd.io/_uploads/S1CiUxbu6.png) ![2024-01-02_10-32-20](https://hackmd.io/_uploads/Bk6sUeWup.png) ### 工作流程結構 ```mermaid graph TD A[PowerApp Initator] -->|傳入JSON| B[[JSON Parser]] -->|傳入參數| C[[HTTP Requester]] -->|回傳資料| E[[Response Receiver]] ``` ### PowerApps Initator 此流程會在從PowerApps中呼叫流程時觸發流程。 ![2024-01-02_10-43-41](https://hackmd.io/_uploads/rJX7FeWd6.png) ### Json Parser 此流程將傳入JSON解析為下個流程(HTTP Requester)可代入之動態參數。需提供JSON Schema,可點選「Generate from example」,提供範例讓系統生成Schema。 ![2024-01-02_10-44-09](https://hackmd.io/_uploads/B1Px5xWOT.png) ### HTTP Requester 此流程發出HTTP request,在此帶入API所需參數,包含Method、URL、Headers及body。body部分需撰寫JSON語法,並動態代入由前面流程解析之參數物件。 ![2024-01-02_10-44-29](https://hackmd.io/_uploads/H1pyjgZuT.png) ### Response Receiver 此流程取得API回傳之資料,解析後傳送回PowerApps中,以供使用PowerApps Fx存取。需提供回傳body之JSON Schema,可點選「Generate from example」,提供範例讓系統生成Schema。 ![2024-01-02_10-44-53](https://hackmd.io/_uploads/SkrDogZ_p.png) ## Remarks 若API規格更動,需修改兩個部分,包含PowerApps中的Power Apps Fx,以及Power Automate 工作流程中各流程中的資訊。