From 8b07e459b00b767c0beba08912eb8790dc414942 Mon Sep 17 00:00:00 2001 From: dequis Date: Tue, 11 Jun 2019 03:17:15 +0200 Subject: [PATCH] Set future/pending transactions to uncleared This adds support for sending 'uncleared' in the cleared field that goes to YNAB if the dumper passes a falsy value in that field. For the default dumper, this checks if the transaction date is in the future. For the N26 dumper, this reuses the pending transaction checks, so if skip_pending_transactions is disabled those pending transactions are sent to YNAB, to be hopefully picked up by the transaction matching. --- lib/dumper.rb | 7 ++++++- lib/dumper/n26.rb | 4 ++++ lib/transaction_creator.rb | 8 ++++++-- spec/dumper/n26_spec.rb | 19 ++++++++++++++++++- 4 files changed, 34 insertions(+), 4 deletions(-) diff --git a/lib/dumper.rb b/lib/dumper.rb index 9083022..674d4d1 100644 --- a/lib/dumper.rb +++ b/lib/dumper.rb @@ -27,7 +27,8 @@ def to_ynab_transaction(transaction) memo: memo(transaction), amount: amount(transaction), is_withdrawal: withdrawal?(transaction), - import_id: import_id(transaction) + import_id: import_id(transaction), + is_cleared: cleared?(transaction) ) end # rubocop:enable Metrics/MethodLength @@ -43,4 +44,8 @@ def category_id(_transaction) def normalize_iban(iban) iban.delete(' ') end + + def cleared?(transaction) + date(transaction) < Time.now + end end diff --git a/lib/dumper/n26.rb b/lib/dumper/n26.rb index 959ddc9..76cb447 100644 --- a/lib/dumper/n26.rb +++ b/lib/dumper/n26.rb @@ -87,6 +87,10 @@ def withdrawal?(transaction) WITHDRAWAL_CATEGORIES.include?(transaction['category']) end + def cleared?(transaction) + already_processed?(transaction) + end + def import_id(transaction) data = [transaction['visibleTS'], transaction['transactionNature'], diff --git a/lib/transaction_creator.rb b/lib/transaction_creator.rb index a71337d..b2b227b 100644 --- a/lib/transaction_creator.rb +++ b/lib/transaction_creator.rb @@ -5,7 +5,7 @@ class TransactionCreator attr_accessor :account_id, :date, :amount, :payee_name, :payee_id, :category_name, :category_id, :memo, - :import_id, :is_withdrawal + :import_id, :is_withdrawal, :is_cleared class <