From a23f2a26190f58f51b20c70911dbf64bbbbcf9c6 Mon Sep 17 00:00:00 2001 From: Keenan Tims Date: Thu, 1 May 2025 17:14:40 -0700 Subject: [PATCH] parsers: rogers parser handle cashbacks probably need something similar for refunds but don't know the format until one happens --- parsers.py | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/parsers.py b/parsers.py index 502705b..a0df0d7 100644 --- a/parsers.py +++ b/parsers.py @@ -49,7 +49,7 @@ class TransactionParsingFailed(Exception): class RogersBankParser(TransactionParser): EXTRACT_RE = re.compile( - r"Attempt of \$([0-9,]+\.\d{2}) was made on ([A-z]{3} \d{1,2}, \d{4})[^<]*at ([^<]+) in" + r"Attempt of \$([0-9,]+\.\d{2}) was made on ([A-z]{3} \d{1,2}, \d{4})[^<]*at ([^<]+) in ([^<]+)" # noqa: E501 ) def __init__(self, account_id: UUID): @@ -72,15 +72,21 @@ class RogersBankParser(TransactionParser): if matches is None: raise TransactionParsingFailed("No matches for extraction RE") amount = Decimal(matches[1].replace(",", "")) * -1 + date_raw = matches[2] payee = matches[3] + location = matches[4] + + if "Rebate" == location and "CashBack" in payee: + amount = amount * -1 + date = datetime.strptime(date_raw, "%b %d, %Y").date() return Transaction( account=self.account_id, date=date, amount=amount, payee=payee, - notes="via email", + notes=f"in {location} (via email)", imported_id=msg["Message-ID"], )