Sha256: 2d1bebc5e2d560e2c890a2333163b788fba2283cec70b45c6892219f8114c9c4
Contents?: true
Size: 1.02 KB
Versions: 2
Compression:
Stored size: 1.02 KB
Contents
module Spree module Cart class RemoveItem prepend Spree::ServiceModule::Base def call(order:, variant:, quantity: nil, options: nil) options ||= {} quantity ||= 1 ActiveRecord::Base.transaction do line_item = remove_from_line_item(order: order, variant: variant, quantity: quantity, options: options) Spree::Cart::Recalculate.new.call(line_item: line_item, order: order, options: options) success(line_item) end end private def remove_from_line_item(order:, variant:, quantity:, options:) line_item = Spree::LineItems::FindByVariant.new.execute(order: order, variant: variant, options: options) raise ActiveRecord::RecordNotFound if line_item.nil? line_item.quantity -= quantity line_item.target_shipment = options[:shipment] if line_item.quantity.zero? order.line_items.destroy(line_item) else line_item.save! end line_item end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
spree_core-3.7.0.rc2 | app/services/spree/cart/remove_item.rb |
spree_core-3.7.0.rc1 | app/services/spree/cart/remove_item.rb |