Reinstate old logic for adjustments controller

Certain types of adjustments (eg enterprise fees) cannot really be changed arbitrarily; when the order is saved and "recalculated" the values will be reset. The adjustments are still shown in the main order edit tab, but are not editable in the adjustments tab.
This commit is contained in:
Matt-Yorkley
2021-04-15 13:05:01 +01:00
parent 50da77c6db
commit 206d9e06ea
2 changed files with 29 additions and 7 deletions

View File

@@ -18,7 +18,12 @@ module Spree
end
def collection
parent.all_adjustments.eligible
order_adjustments = parent.adjustments.where.not(originator_type: 'EnterpriseFee')
admin_adjustments = parent.adjustments.admin
payment_fees = parent.all_adjustments.payment_fee.eligible
shipping_fees = parent.all_adjustments.shipping
order_adjustments.or(admin_adjustments) | payment_fees.or(shipping_fees)
end
def find_resource

View File

@@ -9,20 +9,37 @@ module Spree
before { controller_login_as_admin }
describe "index" do
let!(:order) { create(:order) }
let!(:order) { create(:completed_order_with_totals) }
let!(:adjustment1) {
create(:adjustment, originator_type: "Spree::ShippingMethod", order: order)
create(:adjustment, originator_type: "Spree::ShippingMethod", order: order,
adjustable: order.shipment)
}
let!(:adjustment2) {
create(:adjustment, originator_type: "Spree::PaymentMethod", eligible: true, order: order)
}
let!(:adjustment3) {
create(:adjustment, originator_type: "Spree::PaymentMethod", eligible: false, order: order)
}
let!(:adjustment3) { create(:adjustment, originator_type: "EnterpriseFee", order: order) }
let!(:adjustment4) { create(:adjustment, originator_type: "EnterpriseFee", order: order) }
let!(:adjustment5) { create(:adjustment, originator: nil, adjustable: order, order: order) }
it "loads all eligible adjustments" do
it "displays eligible adjustments" do
spree_get :index, order_id: order.number
expect(assigns(:collection)).to include adjustment1, adjustment3
expect(assigns(:collection)).to_not include adjustment2
expect(assigns(:collection)).to include adjustment1, adjustment2
expect(assigns(:collection)).to_not include adjustment3
end
it "displays admin adjustments" do
spree_get :index, order_id: order.number
expect(assigns(:collection)).to include adjustment5
end
it "does not display enterprise fee adjustments" do
spree_get :index, order_id: order.number
expect(assigns(:collection)).to_not include adjustment4
end
end