From 31e640512552859ee6c14d0dc9593a771864a286 Mon Sep 17 00:00:00 2001 From: Matt-Yorkley <9029026+Matt-Yorkley@users.noreply.github.com> Date: Mon, 31 Jan 2022 23:38:23 +0000 Subject: [PATCH] Handle setting of payment amount during checkout in OrderUpdater --- .../app/services/order_management/order/updater.rb | 8 ++++++++ spec/controllers/split_checkout_controller_spec.rb | 1 + spec/services/process_payment_intent_spec.rb | 2 ++ 3 files changed, 11 insertions(+) diff --git a/engines/order_management/app/services/order_management/order/updater.rb b/engines/order_management/app/services/order_management/order/updater.rb index 41d0374047..fc727d7e35 100644 --- a/engines/order_management/app/services/order_management/order/updater.rb +++ b/engines/order_management/app/services/order_management/order/updater.rb @@ -35,6 +35,14 @@ module OrderManagement end persist_totals + update_pending_payment + end + + def update_pending_payment + return unless order.state.in? ["payment", "confirmation"] + return unless order.pending_payments.any? + + order.pending_payments.first.update_attribute :amount, order.total end # Updates the following Order total values: diff --git a/spec/controllers/split_checkout_controller_spec.rb b/spec/controllers/split_checkout_controller_spec.rb index e70836fc02..43d799e9bc 100644 --- a/spec/controllers/split_checkout_controller_spec.rb +++ b/spec/controllers/split_checkout_controller_spec.rb @@ -165,6 +165,7 @@ describe SplitCheckoutController, type: :controller do expect(order.state).to eq "confirmation" expect(order.payments.first.adjustment.amount).to eq 1.23 + expect(order.payments.first.amount).to eq order.item_total + order.adjustment_total expect(order.adjustment_total).to eq 1.23 expect(order.total).to eq order.item_total + order.adjustment_total end diff --git a/spec/services/process_payment_intent_spec.rb b/spec/services/process_payment_intent_spec.rb index 515ee16065..8693bbba46 100644 --- a/spec/services/process_payment_intent_spec.rb +++ b/spec/services/process_payment_intent_spec.rb @@ -129,6 +129,8 @@ describe ProcessPaymentIntent do it "completes the order, but with failed payment state recorded" do service.call! + order.reload + expect(order.state).to eq("complete") expect(order.payment_state).to eq("failed") expect(order).to have_received(:deliver_order_confirmation_email)