diff --git a/app/models/spree/payment.rb b/app/models/spree/payment.rb index a1f635db45..c664a59a32 100644 --- a/app/models/spree/payment.rb +++ b/app/models/spree/payment.rb @@ -135,7 +135,7 @@ module Spree adjustment.label = adjustment_label adjustment.save else - payment_method.create_adjustment(adjustment_label, self, self, true) + payment_method.create_adjustment(adjustment_label, self, true) adjustment.reload end end diff --git a/app/models/spree/shipment.rb b/app/models/spree/shipment.rb index baf32391b0..9dff6d6cac 100644 --- a/app/models/spree/shipment.rb +++ b/app/models/spree/shipment.rb @@ -276,7 +276,6 @@ module Spree fee_adjustment.reload elsif selected_shipping_rate_id shipping_method.create_adjustment(adjustment_label, - self, self, true, "open") diff --git a/app/models/spree/tax_rate.rb b/app/models/spree/tax_rate.rb index c415efa324..5d90c1d7bc 100644 --- a/app/models/spree/tax_rate.rb +++ b/app/models/spree/tax_rate.rb @@ -61,8 +61,8 @@ module Spree label = create_label if included_in_price if default_zone_or_zone_match? order - order.line_items.each { |line_item| create_adjustment(label, line_item, line_item, false, "open") } - order.shipments.each { |shipment| create_adjustment(label, shipment, shipment, false, "open") } + order.line_items.each { |line_item| create_adjustment(label, line_item, false, "open") } + order.shipments.each { |shipment| create_adjustment(label, shipment, false, "open") } else amount = -1 * calculator.compute(order) label = Spree.t(:refund) + label @@ -76,7 +76,7 @@ module Spree ) end else - create_adjustment(label, order, order, false, "open") + create_adjustment(label, order, false, "open") end order.adjustments.reload diff --git a/lib/open_food_network/enterprise_fee_applicator.rb b/lib/open_food_network/enterprise_fee_applicator.rb index 76f6e78a53..fe4544c604 100644 --- a/lib/open_food_network/enterprise_fee_applicator.rb +++ b/lib/open_food_network/enterprise_fee_applicator.rb @@ -1,17 +1,17 @@ module OpenFoodNetwork class EnterpriseFeeApplicator < Struct.new(:enterprise_fee, :variant, :role) def create_line_item_adjustment(line_item) - create_adjustment(line_item_adjustment_label, line_item, line_item) + create_adjustment(line_item_adjustment_label, line_item) end def create_order_adjustment(order) - create_adjustment(order_adjustment_label, order, order) + create_adjustment(order_adjustment_label, order) end private - def create_adjustment(label, target, calculable) - adjustment = enterprise_fee.create_adjustment(label, target, calculable, true) + def create_adjustment(label, adjustable) + adjustment = enterprise_fee.create_adjustment(label, adjustable, true) AdjustmentMetadata.create! adjustment: adjustment, enterprise: enterprise_fee.enterprise, fee_name: enterprise_fee.name, fee_type: enterprise_fee.fee_type, enterprise_role: role diff --git a/lib/spree/core/calculated_adjustments.rb b/lib/spree/core/calculated_adjustments.rb index ab220f365a..690dcb19a7 100644 --- a/lib/spree/core/calculated_adjustments.rb +++ b/lib/spree/core/calculated_adjustments.rb @@ -26,25 +26,24 @@ module Spree # (which is any class that has_many :adjustments) and sets amount based on the # calculator as applied to the given calculable (Order, LineItems[], Shipment, etc.) # By default the adjustment will not be considered mandatory - def create_adjustment(label, target, calculable, mandatory = false, state = "closed") - amount = compute_amount(calculable) + def create_adjustment(label, adjustable, mandatory = false, state = "closed") + amount = compute_amount(adjustable) return if amount.zero? && !mandatory adjustment_attributes = { amount: amount, - source: calculable, originator: self, - order: order_object_for(target), + order: order_object_for(adjustable), label: label, mandatory: mandatory, state: state, - included: tax_included?(self, target) + included: tax_included?(self, adjustable) } - if target.respond_to?(:adjustments) - target.adjustments.create(adjustment_attributes) + if adjustable.respond_to?(:adjustments) + adjustable.adjustments.create(adjustment_attributes) else - target.create_adjustment(adjustment_attributes) + adjustable.create_adjustment(adjustment_attributes) end end diff --git a/spec/models/enterprise_fee_spec.rb b/spec/models/enterprise_fee_spec.rb index 9cf76958d5..11ca441912 100644 --- a/spec/models/enterprise_fee_spec.rb +++ b/spec/models/enterprise_fee_spec.rb @@ -104,10 +104,10 @@ describe EnterpriseFee do line_item1 = create(:line_item, order: order, variant: order_cycle.variants.first) line_item2 = create(:line_item, order: order, variant: order_cycle.variants.second) - order_cycle.coordinator_fees[0].create_adjustment('foo1', line_item1.order, line_item1, true) - order_cycle.coordinator_fees[0].create_adjustment('foo2', line_item2.order, line_item2, true) - order_cycle.exchanges[0].enterprise_fees[0].create_adjustment('foo3', line_item1.order, line_item1, true) - order_cycle.exchanges[0].enterprise_fees[0].create_adjustment('foo4', line_item2.order, line_item2, true) + order_cycle.coordinator_fees[0].create_adjustment('foo1', line_item1, true) + order_cycle.coordinator_fees[0].create_adjustment('foo2', line_item2, true) + order_cycle.exchanges[0].enterprise_fees[0].create_adjustment('foo3', line_item1, true) + order_cycle.exchanges[0].enterprise_fees[0].create_adjustment('foo4', line_item2, true) expect do EnterpriseFee.clear_all_adjustments order diff --git a/spec/models/spree/order_spec.rb b/spec/models/spree/order_spec.rb index e5e2c156e2..6757d9da18 100644 --- a/spec/models/spree/order_spec.rb +++ b/spec/models/spree/order_spec.rb @@ -539,7 +539,7 @@ describe Spree::Order do it "returns the sum of eligible enterprise fee adjustments" do ef = create(:enterprise_fee, calculator: Calculator::FlatRate.new ) ef.calculator.set_preference :amount, 123.45 - a = ef.create_adjustment("adjustment", o, o, true) + a = ef.create_adjustment("adjustment", o, true) expect(o.admin_and_handling_total).to eq(123.45) end @@ -547,7 +547,7 @@ describe Spree::Order do it "does not include ineligible adjustments" do ef = create(:enterprise_fee, calculator: Calculator::FlatRate.new ) ef.calculator.set_preference :amount, 123.45 - a = ef.create_adjustment("adjustment", o, o, true) + a = ef.create_adjustment("adjustment", o, true) a.update_column :eligible, false @@ -557,7 +557,7 @@ describe Spree::Order do it "does not include adjustments that do not originate from enterprise fees" do sm = create(:shipping_method, calculator: Calculator::FlatRate.new ) sm.calculator.set_preference :amount, 123.45 - sm.create_adjustment("adjustment", o, o, true) + sm.create_adjustment("adjustment", o, true) expect(o.admin_and_handling_total).to eq(0) end @@ -565,7 +565,7 @@ describe Spree::Order do it "does not include adjustments whose source is a line item" do ef = create(:enterprise_fee, calculator: Calculator::PerItem.new ) ef.calculator.set_preference :amount, 123.45 - ef.create_adjustment("adjustment", li.order, li, true) + ef.create_adjustment("adjustment", li, true) expect(o.admin_and_handling_total).to eq(0) end