Files
openfoodnetwork/app/controllers/spree/admin/adjustments_controller.rb
2023-06-05 23:54:04 +01:00

56 lines
1.5 KiB
Ruby

# frozen_string_literal: true
module Spree
module Admin
class AdjustmentsController < ::Admin::ResourceController
belongs_to 'spree/order', find_by: :number
before_action :set_order_id, only: [:create, :update]
before_action :skip_changing_canceled_orders, only: [:create, :update]
after_action :update_order, only: [:create, :update, :destroy]
after_action :apply_tax, only: [:create, :update]
private
def update_order
@order.reload
@order.update_totals_and_states
end
def collection
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
parent.all_adjustments.eligible.find(params[:id])
end
def set_order_id
@adjustment.order_id = parent.id
end
def skip_changing_canceled_orders
return unless @order.canceled?
flash[:error] = t("admin.adjustments.skipped_changing_canceled_order")
redirect_to admin_order_adjustments_path(@order) if @order.canceled?
end
def apply_tax
Spree::TaxRate.adjust(@order, [@adjustment])
end
def permitted_resource_params
params.require(:adjustment).permit(
:label, :amount, :tax_category_id
)
end
end
end
end