|
|
|
@ -55,6 +55,7 @@ namespace BunyMuny {
|
|
|
|
|
csv.Configuration.HasHeaderRecord = false;
|
|
|
|
|
|
|
|
|
|
var nabRegex = new Regex(@"^\d\d \w{3} \d\d");
|
|
|
|
|
var commbankRegex = new Regex(@"\d\d\/\d\d\/\d{4}");
|
|
|
|
|
|
|
|
|
|
if (header == null) {
|
|
|
|
|
Console.WriteLine("File is empty 0uo");
|
|
|
|
@ -74,12 +75,17 @@ namespace BunyMuny {
|
|
|
|
|
// i don't like it >:c
|
|
|
|
|
bank = Bank.NAB;
|
|
|
|
|
}
|
|
|
|
|
else if (commbankRegex.IsMatch(header)) {
|
|
|
|
|
bank = Bank.CommBank;
|
|
|
|
|
}
|
|
|
|
|
else {
|
|
|
|
|
Console.WriteLine($"Unknown header: [{header}]");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
while (csv.Read()) {
|
|
|
|
|
decimal value;
|
|
|
|
|
DateTime date;
|
|
|
|
|
string originalDescription;
|
|
|
|
|
string category;
|
|
|
|
|
string description;
|
|
|
|
|
|
|
|
|
@ -87,27 +93,22 @@ namespace BunyMuny {
|
|
|
|
|
case Bank.ME:
|
|
|
|
|
value = decimal.Parse(csv.GetField("Debits and credits").TrimStart().Replace("$", ""));
|
|
|
|
|
(category, description) = MatchAgainstRules(rules, csv.GetField("Description"));
|
|
|
|
|
|
|
|
|
|
statements.Add(new Statement() {
|
|
|
|
|
Date = DateTime.ParseExact(csv.GetField("Date"), "dd/MM/yyyy", CultureInfo.InvariantCulture),
|
|
|
|
|
OriginalDescription = csv.GetField("Description"),
|
|
|
|
|
Description = description,
|
|
|
|
|
Category = category,
|
|
|
|
|
Value = value
|
|
|
|
|
});
|
|
|
|
|
date = DateTime.ParseExact(csv.GetField("Date"), "dd/MM/yyyy", CultureInfo.InvariantCulture);
|
|
|
|
|
originalDescription = csv.GetField("Description");
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case Bank.NAB:
|
|
|
|
|
// return 1;
|
|
|
|
|
value = decimal.Parse(csv.GetField(1));
|
|
|
|
|
(category, description) = MatchAgainstRules(rules, csv.GetField(5));
|
|
|
|
|
statements.Add(new Statement() {
|
|
|
|
|
Date = DateTime.ParseExact(csv.GetField(0), "dd MMM yy", CultureInfo.CurrentCulture),
|
|
|
|
|
OriginalDescription = csv.GetField(5),
|
|
|
|
|
Description = description,
|
|
|
|
|
Category = category,
|
|
|
|
|
Value = value
|
|
|
|
|
});
|
|
|
|
|
date = DateTime.ParseExact(csv.GetField(0), "dd MMM yy", CultureInfo.CurrentCulture);
|
|
|
|
|
originalDescription = csv.GetField(5);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case Bank.CommBank:
|
|
|
|
|
value = decimal.Parse(csv.GetField(1));
|
|
|
|
|
(category, description) = MatchAgainstRules(rules, csv.GetField(2));
|
|
|
|
|
date = DateTime.ParseExact(csv.GetField(0), "dd/MM/yyyy", CultureInfo.InvariantCulture);
|
|
|
|
|
originalDescription = csv.GetField(2);
|
|
|
|
|
break;
|
|
|
|
|
|
|
|
|
|
case Bank.Other:
|
|
|
|
@ -118,6 +119,14 @@ namespace BunyMuny {
|
|
|
|
|
Console.WriteLine(":(");
|
|
|
|
|
return 1;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
statements.Add(new Statement() {
|
|
|
|
|
Date = date,
|
|
|
|
|
OriginalDescription = originalDescription,
|
|
|
|
|
Description = description,
|
|
|
|
|
Category = category,
|
|
|
|
|
Value = value
|
|
|
|
|
});
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
foreach (var statement in statements.
|
|
|
|
|