From 2d76c2730a1f7533d48bc56fee0517db0ecfe30c Mon Sep 17 00:00:00 2001 From: Matt-Yorkley <9029026+Matt-Yorkley@users.noreply.github.com> Date: Sun, 16 May 2021 11:21:02 +0100 Subject: [PATCH] Update shipment updating --- app/controllers/line_items_controller.rb | 1 - app/controllers/spree/orders_controller.rb | 1 - app/models/spree/order_contents.rb | 14 +++++++++----- .../admin/bulk_line_items_controller_spec.rb | 4 ++-- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/app/controllers/line_items_controller.rb b/app/controllers/line_items_controller.rb index 123d03510f..b61d476d2e 100644 --- a/app/controllers/line_items_controller.rb +++ b/app/controllers/line_items_controller.rb @@ -40,7 +40,6 @@ class LineItemsController < BaseController order = item.order order.with_lock do order.contents.remove(item.variant) - order.update_shipping_fees! order.update_payment_fees! end end diff --git a/app/controllers/spree/orders_controller.rb b/app/controllers/spree/orders_controller.rb index c380d016c5..015ad64936 100644 --- a/app/controllers/spree/orders_controller.rb +++ b/app/controllers/spree/orders_controller.rb @@ -70,7 +70,6 @@ module Spree @order.recreate_all_fees! # Enterprise fees on line items and on the order itself if @order.complete? - @order.update_shipping_fees! @order.update_payment_fees! @order.create_tax_charge! end diff --git a/app/models/spree/order_contents.rb b/app/models/spree/order_contents.rb index 5a14d41642..7914256e7a 100644 --- a/app/models/spree/order_contents.rb +++ b/app/models/spree/order_contents.rb @@ -46,7 +46,7 @@ module Spree def update_cart(params) if order.update_attributes(params) discard_empty_line_items - order.ensure_updated_shipments + update_shipment update_order true else @@ -56,10 +56,10 @@ module Spree def update_item(line_item, params) if line_item.update_attributes(params) + discard_empty_line_items order.update_line_item_fees! line_item order.update_order_fees! if order.completed? - discard_empty_line_items - order.ensure_updated_shipments + update_shipment update_order true else @@ -73,8 +73,12 @@ module Spree order.line_items = order.line_items.select {|li| li.quantity.positive? } end - def update_shipment(shipment) - shipment.present? ? shipment.update_amounts : order.ensure_updated_shipments + def update_shipment(target_shipment = nil) + if order.completed? || target_shipment.present? + order.update_shipping_fees! + else + order.ensure_updated_shipments + end end def add_to_line_item(variant, quantity, shipment = nil) diff --git a/spec/controllers/admin/bulk_line_items_controller_spec.rb b/spec/controllers/admin/bulk_line_items_controller_spec.rb index 1e0cc40170..ea6cf9da30 100644 --- a/spec/controllers/admin/bulk_line_items_controller_spec.rb +++ b/spec/controllers/admin/bulk_line_items_controller_spec.rb @@ -347,7 +347,7 @@ describe Admin::BulkLineItemsController, type: :controller do let(:line_item_params) { { quantity: 3 } } let(:params) { { id: line_item1.id, order_id: order.number, line_item: line_item_params } } - xit "correctly updates order totals and states" do + it "correctly updates order totals and states" do expect(order.total).to eq 35.0 expect(order.shipment_adjustments.shipping.sum(:amount)).to eq 6.0 expect(order.shipment_adjustments.tax.sum(:amount)).to eq 0.29 @@ -374,7 +374,7 @@ describe Admin::BulkLineItemsController, type: :controller do describe "deleting a line item" do let(:params) { { id: line_item1.id, order_id: order.number } } - xit "correctly updates order totals and states" do + it "correctly updates order totals and states" do expect(order.total).to eq 35.0 expect(order.shipment_adjustments.shipping.sum(:amount)).to eq 6.0 expect(order.shipment_adjustments.tax.sum(:amount)).to eq 0.29