mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-10 23:07:47 +00:00
Simplify arguments of #create_adjustment method
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -276,7 +276,6 @@ module Spree
|
||||
fee_adjustment.reload
|
||||
elsif selected_shipping_rate_id
|
||||
shipping_method.create_adjustment(adjustment_label,
|
||||
self,
|
||||
self,
|
||||
true,
|
||||
"open")
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user