From 42add6df0501466a6aebab88d03af2d91d680dd1 Mon Sep 17 00:00:00 2001 From: Stephen Paul Weber Date: Mon, 11 Apr 2022 13:00:20 -0500 Subject: [PATCH] Credit card transactions settle after 90 days, bills instantly --- lib/customer_plan.rb | 4 ++-- lib/transaction.rb | 21 +++++++++++++++------ test/test_transaction.rb | 6 +++--- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/lib/customer_plan.rb b/lib/customer_plan.rb index 2dbaf0cbda3418e5286791c3addbd48d3cbf373e..b01c36c7960b993814b63972bb12d76cc38b82b5 100644 --- a/lib/customer_plan.rb +++ b/lib/customer_plan.rb @@ -104,8 +104,8 @@ protected ] DB.exec(<<~SQL, params) INSERT INTO transactions - (customer_id, transaction_id, created_at, amount) - VALUES ($1, $2, LOCALTIMESTAMP, $3) + (customer_id, transaction_id, created_at, settled_after, amount) + VALUES ($1, $2, LOCALTIMESTAMP, LOCALTIMESTAMP, $3) SQL end diff --git a/lib/transaction.rb b/lib/transaction.rb index 3885ee10a1b8be2bbf25fb68431531686c5afbfe..2ad52aba9075801fb23429e34498d1b899d38f96 100644 --- a/lib/transaction.rb +++ b/lib/transaction.rb @@ -78,27 +78,36 @@ class Transaction "$#{'%.2f' % amount}#{plus if bonus.positive?}" end + def settled_after + @created_at + (90 * 24 * 60 * 60) + end + protected def insert_tx - params = [@customer_id, @transaction_id, @created_at, @amount] + params = [ + @customer_id, @transaction_id, @created_at, settled_after, @amount + ] DB.exec(<<~SQL, params) INSERT INTO transactions - (customer_id, transaction_id, created_at, amount, note) + (customer_id, transaction_id, created_at, settled_after, amount, note) VALUES - ($1, $2, $3, $4, 'Credit card payment') + ($1, $2, $3, $4, $5, 'Credit card payment') SQL end def insert_bonus return if bonus <= 0 - params = [@customer_id, "bonus_for_#{@transaction_id}", @created_at, bonus] + params = [ + @customer_id, "bonus_for_#{@transaction_id}", @created_at, + settled_after, bonus + ] DB.exec(<<~SQL, params) INSERT INTO transactions - (customer_id, transaction_id, created_at, amount, note) + (customer_id, transaction_id, created_at, settled_after, amount, note) VALUES - ($1, $2, $3, $4, 'Credit card payment bonus') + ($1, $2, $3, $4, $5, 'Credit card payment bonus') SQL end end diff --git a/test/test_transaction.rb b/test/test_transaction.rb index 69a4b0220f2573c34c157be566e88c9b3c7c7ccb..5bb348dd711ad245fa489364f3e3caad42535ab9 100644 --- a/test/test_transaction.rb +++ b/test/test_transaction.rb @@ -96,7 +96,7 @@ class TransactionTest < Minitest::Test EMPromise.resolve(nil), [ String, - ["customer", "transaction", Time.at(0), 12] + ["customer", "transaction", Time.at(0), Time.at(7776000), 12] ] ) Transaction.new(FAKE_BRAINTREE_TRANSACTION).insert.sync @@ -114,7 +114,7 @@ class TransactionTest < Minitest::Test EMPromise.resolve(nil), [ String, - ["customer", "transaction", Time.at(0), 100] + ["customer", "transaction", Time.at(0), Time.at(7776000), 100] ] ) Transaction::DB.expect( @@ -122,7 +122,7 @@ class TransactionTest < Minitest::Test EMPromise.resolve(nil), [ String, - ["customer", "bonus_for_transaction", Time.at(0), 3] + ["customer", "bonus_for_transaction", Time.at(0), Time.at(7776000), 3] ] ) tx = FAKE_BRAINTREE_TRANSACTION.dup