mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-02-27 01:43:22 +00:00
Add reflex for shipping orders
This commit is contained in:
@@ -1,18 +1,34 @@
|
||||
# frozen_string_literal: true
|
||||
|
||||
class Admin::OrdersReflex < ApplicationReflex
|
||||
def capture
|
||||
order = Spree::Order.find_by(id: element.dataset[:id])
|
||||
authorize! :admin, order
|
||||
before_reflex :authorize_order, only: [:capture, :ship]
|
||||
|
||||
payment_capture = OrderCaptureService.new(order)
|
||||
def capture
|
||||
payment_capture = OrderCaptureService.new(@order)
|
||||
|
||||
if payment_capture.call
|
||||
morph dom_id(order), render(partial: "spree/admin/orders/table_row",
|
||||
locals: { order: order.reload, success: true })
|
||||
morph dom_id(@order), render(partial: "spree/admin/orders/table_row",
|
||||
locals: { order: @order.reload, success: true })
|
||||
else
|
||||
flash[:error] = with_locale{ payment_capture.gateway_error || I18n.t(:payment_processing_failed) }
|
||||
morph_admin_flashes
|
||||
end
|
||||
end
|
||||
|
||||
def ship
|
||||
if @order.ship
|
||||
morph dom_id(@order), render(partial: "spree/admin/orders/table_row",
|
||||
locals: { order: @order.reload, success: true })
|
||||
else
|
||||
flash[:error] = with_locale{ I18n.t("api.orders.failed_to_update") }
|
||||
morph_admin_flashes
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def authorize_order
|
||||
@order = Spree::Order.find_by(id: element.dataset[:id])
|
||||
authorize! :admin, @order
|
||||
end
|
||||
end
|
||||
|
||||
@@ -43,6 +43,6 @@
|
||||
%i.success.icon-ok-sign{"data-controller": "ephemeral"}
|
||||
%a.icon_link.with-tip.icon-edit.no-text{href: edit_admin_order_path(order), 'ofn-with-tip' => t('spree.admin.orders.index.edit')}
|
||||
- if order.ready_to_ship?
|
||||
%button.icon-road.icon_link.with-tip.no-text{rel: 'nofollow', 'ofn-with-tip' => t('spree.admin.orders.index.ship')}
|
||||
%button.icon-road.icon_link.with-tip.no-text{"data-reflex": "click->Admin::OrdersReflex#ship", "data-id": order.id.to_s, 'ofn-with-tip' => t('spree.admin.orders.index.ship')}
|
||||
- if order.payment_required? && order.pending_payments.reject(&:requires_authorization?).any?
|
||||
%button.icon-capture.icon_link.no-text{"data-reflex": "click->Admin::OrdersReflex#capture", "data-id": order.id.to_s, 'ofn-with-tip' => t('spree.admin.orders.index.capture')}
|
||||
|
||||
Reference in New Issue
Block a user