Sha256: 278f26b743c8e6e5c8154bb2e14ed14f13ee5d01cad20ad1ace28a6346d556cb

Contents?: true

Size: 840 Bytes

Versions: 33

Compression:

Stored size: 840 Bytes

Contents

module Spree
  module Cart
    class Empty
      prepend Spree::ServiceModule::Base

      def call(order:)
        run :check_if_can_be_empty
        run :empty_order
      end

      private

      def check_if_can_be_empty(order:)
        return failure(Spree.t(:cannot_empty)) if order.nil? || order.completed?

        success(order: order)
      end

      def empty_order(order:)
        ActiveRecord::Base.transaction do
          order.line_items.destroy_all
          order.updater.update_item_count
          order.adjustments.destroy_all
          order.shipments.destroy_all
          order.state_changes.destroy_all
          order.order_promotions.destroy_all
          order.update_totals
          order.persist_totals
          order.restart_checkout_flow

          success(order)
        end
      end
    end
  end
end

Version data entries

33 entries across 33 versions & 1 rubygems

Version Path
spree_core-4.10.1 app/services/spree/cart/empty.rb
spree_core-4.10.0 app/services/spree/cart/empty.rb
spree_core-4.9.0 app/services/spree/cart/empty.rb
spree_core-4.8.3 app/services/spree/cart/empty.rb
spree_core-4.8.2 app/services/spree/cart/empty.rb
spree_core-4.7.3 app/services/spree/cart/empty.rb
spree_core-4.6.6 app/services/spree/cart/empty.rb
spree_core-4.5.5 app/services/spree/cart/empty.rb
spree_core-4.3.3 app/services/spree/cart/empty.rb
spree_core-4.4.1 app/services/spree/cart/empty.rb
spree_core-4.5.4 app/services/spree/cart/empty.rb
spree_core-4.6.5 app/services/spree/cart/empty.rb
spree_core-4.7.2 app/services/spree/cart/empty.rb
spree_core-4.7.1 app/services/spree/cart/empty.rb
spree_core-4.6.4 app/services/spree/cart/empty.rb
spree_core-4.7.0 app/services/spree/cart/empty.rb
spree_core-4.6.3 app/services/spree/cart/empty.rb
spree_core-4.6.2 app/services/spree/cart/empty.rb
spree_core-4.6.1 app/services/spree/cart/empty.rb
spree_core-4.6.0 app/services/spree/cart/empty.rb