// トランザクション解析 public override bool analyzeTransaction(Transaction t, byte[] data) { // ID t.id = read2b(data, 13); // 日付 int x = read4b(data, 18); int yy = x >> 27; int mm = (x >> 23) & 0xf; int dd = (x >> 18) & 0x1f; int hh = (x >> 13) & 0x1f; int min = (x >> 7) & 0x3f; t.date = new DateTime(yy + 2005, mm, dd, hh, min, 0); // 残高 x = read3b(data, 21); t.balance = (x >> 5) & 0x3ffff; // 出金額 x = read3b(data, 23); t.value = -((x >> 3) & 0x3ffff); // 入金額 x = read3b(data, 25); t.value += (x >> 2) & 0x1ffff; // 適用 switch (data[17]) { case 0x0c: case 0x10: t.desc = "WAONチャージ"; break; case 0x04: default: t.desc = "WAON支払"; break; } // TBD : 0-12 に備考が入っているのでこちらを使うべきか? // トランザクションタイプを自動設定 t.GuessTransType(t.value >= 0); return(true); }
// 1行解析 // CSV の各カラムはすでに分解されているものとする public Transaction parse(string[] row) { Transaction t = new Transaction(); // 日付 string date = getCol(row, "Date"); if (date != null) { t.date = CsvUtil.parseDate(date); } else { int year = getColInt(row, "Year"); int month = getColInt(row, "Month"); int day = getColInt(row, "Day"); if (year == 0 || month == 0 || day == 0) { return null; } if (year < 100) { year += 2000; } t.date = new DateTime(year, month, day, 0, 0, 0); } // ID string id = getCol(row, "Id"); if (id != null) { try { t.id = getColInt(row, "Id"); } catch (FormatException) { // just ignore : do not use ID } } // 金額 t.value = getColInt(row, "Income"); t.value -= getColInt(row, "Outgo"); // 残高 t.balance = getColInt(row, "Balance"); // 適用 t.desc = getMultiCol(row, "Desc"); // 備考 t.memo = getMultiCol(row, "Memo"); // トランザクションタイプを自動設定 t.GuessTransType(t.value >= 0); return t; }
// 1行解析 // CSV の各カラムはすでに分解されているものとする public Transaction parse(string[] row) { Transaction t = new Transaction(); // 日付 string date = getCol(row, "Date"); if (date != null) { t.date = CsvUtil.parseDate(date); } else { int year = getColInt(row, "Year"); int month = getColInt(row, "Month"); int day = getColInt(row, "Day"); if (year == 0 || month == 0 || day == 0) { return(null); } if (year < 100) { year += 2000; } t.date = new DateTime(year, month, day, 0, 0, 0); } // ID string id = getCol(row, "Id"); if (id != null) { try { t.id = getColInt(row, "Id"); } catch (FormatException) { // just ignore : do not use ID } } // 金額 t.value = getColInt(row, "Income"); t.value -= getColInt(row, "Outgo"); // 残高 t.balance = getColInt(row, "Balance"); // 適用 t.desc = getMultiCol(row, "Desc"); // 備考 t.memo = getMultiCol(row, "Memo"); // トランザクションタイプを自動設定 t.GuessTransType(t.value >= 0); return(t); }