mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-25 20:46:48 +00:00
56 lines
1.6 KiB
Ruby
56 lines
1.6 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.updater.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
|