Merge branch 'insert-settled-after'

Stephen Paul Weber created

* insert-settled-after:
  Credit card transactions settle after 90 days, bills instantly

Change summary

lib/customer_plan.rb     |  4 ++--
lib/transaction.rb       | 21 +++++++++++++++------
test/test_transaction.rb |  6 +++---
3 files changed, 20 insertions(+), 11 deletions(-)

Detailed changes

lib/customer_plan.rb 🔗

@@ -105,8 +105,8 @@ protected
 		]
 		DB.exec(<<~SQL, params)
 			INSERT INTO transactions
-				(customer_id, transaction_id, created_at, amount, note)
-			VALUES ($1, $2, LOCALTIMESTAMP, $3, $4)
+				(customer_id, transaction_id, created_at, settled_after, amount, note)
+			VALUES ($1, $2, LOCALTIMESTAMP, LOCALTIMESTAMP, $3, $4)
 		SQL
 	end
 

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

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