/// <summary> /// OFXファイル書き出し (backward compat) /// </summary> /// <param name="account">アカウント</param> public void WriteFile(Account account) { List<Account> accounts = new List<Account>(); accounts.Add(account); WriteFile(accounts); }
private void readAndGenerateOfx(Account c) { if (readTransactions(c)) { generateOfx(c); } }
// カードを読み込む // 正常に読み込んだら true を返す private bool readTransactions(Account c) { try { c.ReadTransactions(); } catch (Exception ex) { MessageBox.Show(ex.Message, Properties.Resources.Error); return false; } if (c.transactions == null) { MessageBox.Show(Properties.Resources.CardReadError, Properties.Resources.Error); return false; } // 無効な取引を削除する c.transactions.removeInvalidTransactions(); // 0円の取引を削除する if (Properties.Settings.Default.IgnoreZeroTransaction) { c.transactions.removeZeroTransactions(); } return true; }
// Statement Transaction Response (STMTTRNRS / CCSTMTTRNRS) private void statementTransactionResponse(XmlElement parent, Account account) { XmlElement e; if (!account.isCreditCard) { e = appendElement(parent, "STMTTRNRS"); } else { e = appendElement(parent, "CCSTMTTRNRS"); } // TRNUID appendElementWithText(e, "TRNUID", "0"); // STATUS XmlElement status = appendElement(e, "STATUS"); appendElementWithText(status, "CODE", "0"); appendElementWithText(status, "SEVERITY", "INFO"); // STMTRS / CCSTMTRS statementResponse(e, account); }
private void generateOfx(Account c) { List<Account> accounts = new List<Account>(); accounts.Add(c); generateOfx(accounts); }
// Statement Response (STMTRS or CCSTMTRS) private void statementResponse(XmlElement parent, Account account) { Transaction first, last; getFirstLastDate(account, out first, out last); XmlElement e; if (!account.isCreditCard) { e = appendElement(parent, "STMTRS"); } else { e = appendElement(parent, "CCSTMTRS"); } // CURDEF appendElementWithText(e, "CURDEF", "JPY"); // BANKACCTFROM / CCACCTFROM accountFrom(e, account); // BANKTRANLIST bankTransactionList(e, account, first, last); // LEDGERBAL ledgerBal(e, account, last); }
// 残高 private void ledgerBal(XmlElement parent, Account account, Transaction last) { XmlElement e = appendElement(parent, "LEDGERBAL"); int balance; if (account.hasBalance) { balance = account.balance; } else { balance = last.balance; } appendElementWithText(e, "BALAMT", balance.ToString()); appendElementWithText(e, "DTASOF", dateStr(last.date)); }
private void getFirstLastDate(Account account, out Transaction first, out Transaction last) { first = null; last = null; foreach (Transaction t in account.transactions) { // 先頭エントリ: 同じ日付の場合は、前のエントリを優先 if (first == null || t.date < first.date) { first = t; } // 最終エントリ: 同じ日付の場合は、後のエントリを優先 if (last == null || t.date >= last.date) { last = t; } } }
// Bank Transaction List private void bankTransactionList(XmlElement parent, Account account, Transaction first, Transaction last) { XmlElement e = appendElement(parent, "BANKTRANLIST"); appendElementWithText(e, "DTSTART", dateStr(first.date)); appendElementWithText(e, "DTEND", dateStr(last.date)); foreach (Transaction t in account.transactions.list) { statementTransaction(e, t); } }
// Account From (BANKACCTFROM or CCACCTFROM) private void accountFrom(XmlElement parent, Account account) { XmlElement e; if (!account.isCreditCard) { e = appendElement(parent, "BANKACCTFROM"); } else { e = appendElement(parent, "CCACCTFROM"); } if (!account.isCreditCard) { appendElementWithText(e, "BANKID", account.bankId != null ? account.bankId.ToString() : null); // TBD appendElementWithText(e, "BRANCHID", account.branchId); } appendElementWithText(e, "ACCTID", account.accountId); if (!account.isCreditCard) { appendElementWithText(e, "ACCTTYPE", "SAVINGS"); } }