app/services/spree_cm_commissioner/checkout/advance_decorator.rb



module SpreeCmCommissioner
  module Checkout
    module AdvanceDecorator
      # override to capture seats error only, other errors is fine we can return success with latest order object instead of throw error.
      # seat is special case because we want to return error message.
      def call(order:)
        Spree::Dependencies.checkout_next_service.constantize.call(order: order) until cannot_make_transition?(order)

        if order.errors[:seats].present?
          failure(order)
        else
          success(order)
        end
      end
    end
  end
end

unless Spree::Checkout::Advance.included_modules.include?(SpreeCmCommissioner::Checkout::AdvanceDecorator)
  Spree::Checkout::Advance.prepend(SpreeCmCommissioner::Checkout::AdvanceDecorator)
end