Files
openfoodnetwork/app/helpers/admin/orders_helper.rb
2024-06-03 13:04:36 +08:00

48 lines
1.3 KiB
Ruby

# frozen_string_literal: true
module Admin
module OrdersHelper
AdjustmentData = Struct.new(:label, :amount)
# Adjustments to display under "Order adjustments".
#
# We exclude shipping method adjustments because they are displayed in a
# separate table together with the order line items.
def order_adjustments_for_display(order)
order.adjustments +
voucher_included_tax_representations(order) +
additional_tax_total_representation(order) +
order.all_adjustments.payment_fee.eligible
end
def additional_tax_total_representation(order)
adjustment = Spree::Adjustment.additional.tax.where(
order_id: order.id, adjustable_type: 'Spree::Adjustment'
).sum(:amount)
return [] unless adjustment != 0
[
AdjustmentData.new(
I18n.t("admin.orders.edit.tax_on_fees"),
adjustment
)
]
end
def voucher_included_tax_representations(order)
return [] unless VoucherAdjustmentsService.new(order).voucher_included_tax.negative?
adjustment = order.voucher_adjustments.first
[
AdjustmentData.new(
I18n.t("admin.orders.edit.voucher_tax_included_in_price",
label: adjustment.label),
adjustment.included_tax
)
]
end
end
end