``` *multipleSendMobile( final List<TwTransferTransaction> txs 要執行的交易清單, final TwTransferTransaction tx 臺幣轉帳交易基本資料檔, final Integer companyKey , boolean timelyResponse 是否即時回應訊息)* ``` 1. 確認要執行的交易清單不為空(txs is not empty) 2. 執行 AccountUtils.findCompanyOwnAcntByCustomerId 產生Account list (所有帳號(不含關係戶及轉入帳號)) * 用付款戶名ID(TWN.TW_TRANSFER_PAYEE.GROUP_CUSTOMER_ID) *tx.getPayer().getGroupCustomerId()* 去UAA.UAA_COMPANY找COMPANY_KEY 再去UAA.UAA_COMPANY_ACNT找包裝成UAAAccount 的BO物件 * **再將UAAAccount轉成Account List Object *[AccountUtils.transformToAccountsListFrom(uaaAccountList)]*** 1. account type(帳戶類型)從UAAAccount 的BO物件取得 2. 財富管理帳號之判斷 **從session取得 自 SYSTEM_CODE 表中, 以 SYSTEM_CODE='accountTypeWealth' 取 財富管理帳號類型之值** *TCBConfigurationsDynamic.getSessional("accountTypeWealth", StringUtils.EMPTY);* 3. 根據 account type 來產生對應的 Account 實體 *AccountFactory.createAccount(uaaAccount.getBranchId(), uaaAccount.getAccountNo(), accountType);* 4. 一筆一筆加入TreeSet<Account> accounts * 若為轉入帳號且為合庫發行帳號: (1) 會從**session** ***VisitUtils.getCurrentVisit().getOutwardAccounts()* (所有約定的轉出帳號) 比對AccountNo**後加入帳號資訊 (2) 或再從uaa.UAA_COMPANY_ACNT找狀態正常的帳號存入account中 * 其他直接set Account BO資料 ``` 3. executeMultipleSend( List<TwTransferTransaction> txs 要執行的交易清單(此傳入的交易清單,皆為同一個批號), TwTransferTransaction tx 臺幣轉帳交易基本資料檔, Integer companyKey, String batchPageNo 分批頁數, String batchCount 分批筆數, List<Account> companyOwnAccounts 轉出戶名的歸戶帳號, boolean timelyResponse 是否即時回應訊息) ``` *executeMultipleSend(txs, tx, companyKey, null, null, companyOwnAccounts, timelyResponse)* * 建立eai request (MCHAPT01SvcRqType) * 從TwTransferTransaction取得 總筆數、總金額、付款人手續費、執行模式 R:即時回應 ,非R:非即時... * 從交易清單TwTransferTransaction List取得 1. 判斷transferType (1) 為edi扣他帳號 *TWN.TW_TRANSFER_PAYER.EDI_ACCOUNT* transferType=02 (2) 若不是edi扣他帳號: 2.1 companyOwnAccounts 轉出戶名的歸戶帳號是空的 -> **`執行 AccountUtils.findCompanyOwnAcntByCustomerId`** 2.2 判斷新企銀與原企銀之限額設定,true 為新企銀,false 為原企銀*TwTransferAmountLimitedUtils.isConfigTransferAmountLimit* 2.3 由2.1、2.2之參數判斷transferType 2. 轉入帳號約定註記(Y:有註記/N:無註記)(約定轉入帳號傳入Y,反之傳N) (1) 依約定收款人資訊查詢約定轉入帳號資訊(UAA.UAA_COMPANY_RELATED_IN_ACNT) (2) **將UAA Account(轉入帳號資訊)轉成Account List Object** 判斷是否為空來設定不同條件(TransferInType、LimitType) 3. 依據公司鍵值找尋線上約定轉入帳號(UAA.UAA_COMPANY_RELATED_IN_ACNT) 4. 判斷**flowProcessInfo.getTxNo() &FlowSecurityInfo().getApproveSecurityType()** 設定SSLType (管理限額傳入參數【個銀才要傳SSLType、LimitType】【個銀判斷為TX_NO第9碼為P/行動為M】) 5. 取得 TWN.TwTransferPayee.VAB_DATA (FEDI VAB DATA) 把VAB內容轉成Hex塞入InputData 6. BatchNOSeqNO 5位數向左補零 7. 判斷TWN.TwTransferTransaction.SCHEDULED(是否為預約交易) 設定OrderType 8. 判斷TWN.TwTransferPayee.COMPULSIVE_REMIT(是否強制通匯 compulsiveRemit Y / N)、TWN.TwTransferPayee.BANK_ID 設定轉帳通道(TransferWay) 9. 判斷TWN.TwTransferPayee.CHECK_CUSTOMER_ID_NAME(是否檢核收款方戶名及統編)設定檢核戶名及統編註記(CheckNameType) 10. 判斷EDI註記(TWN.TwTransferPayee.ACCOUNT_KEY startsWith("EDI")) 10-1. 是EDI: UAA_COMPANY_ACNT取得付款人統編 10-2. 不是EDI: 付款統編直接從DB取得(TWN.TW_TRANSFER_PAYEE.GROUP_CUSTOMER_ID) 11. 判斷傳真通知方式 TWN.TwTransferPayee.FAX_NOTICE 設定FaxType 12. UAA.UAA_COMPANY取得轉出戶名 13. 判斷是否有憑證資料組憑證明細資料(TWN.TW_TRANSFER_PAYEE_CRET) 14. 發送電文