Sha256: 9d79fafba1e88e909ff18a74618019ea6b89efea82c006285f50e0ba5e3b9aca

Contents?: true

Size: 1.16 KB

Versions: 26

Compression:

Stored size: 1.16 KB

Contents

module Spree
  class StockTransfer < Spree::Base
    has_many :stock_movements, :as => :originator

    belongs_to :source_location, :class_name => 'StockLocation'
    belongs_to :destination_location, :class_name => 'StockLocation'

    make_permalink field: :number, prefix: 'T'

    def to_param
      number
    end

    def source_movements
      stock_movements.joins(:stock_item)
        .where('spree_stock_items.stock_location_id' => source_location_id)
    end

    def destination_movements
      stock_movements.joins(:stock_item)
        .where('spree_stock_items.stock_location_id' => destination_location_id)
    end

    def transfer(source_location, destination_location, variants)
      transaction do
        variants.each_pair do |variant, quantity|
          source_location.unstock(variant, quantity, self) if source_location
          destination_location.restock(variant, quantity, self)

          self.source_location = source_location
          self.destination_location = destination_location
          self.save!
        end
      end
    end

    def receive(destination_location, variants)
      transfer(nil, destination_location, variants)
    end
  end
end

Version data entries

26 entries across 26 versions & 1 rubygems

Version Path
spree_core-2.4.9 app/models/spree/stock_transfer.rb
spree_core-2.3.12 app/models/spree/stock_transfer.rb
spree_core-2.4.8 app/models/spree/stock_transfer.rb
spree_core-2.3.11 app/models/spree/stock_transfer.rb
spree_core-2.4.7 app/models/spree/stock_transfer.rb
spree_core-2.3.10 app/models/spree/stock_transfer.rb
spree_core-2.4.6 app/models/spree/stock_transfer.rb
spree_core-2.3.9 app/models/spree/stock_transfer.rb
spree_core-2.3.8 app/models/spree/stock_transfer.rb
spree_core-2.4.5 app/models/spree/stock_transfer.rb
spree_core-2.4.4 app/models/spree/stock_transfer.rb
spree_core-2.3.7 app/models/spree/stock_transfer.rb
spree_core-2.4.3 app/models/spree/stock_transfer.rb
spree_core-2.4.2 app/models/spree/stock_transfer.rb
spree_core-2.3.6 app/models/spree/stock_transfer.rb
spree_core-2.4.1 app/models/spree/stock_transfer.rb
spree_core-2.4.0 app/models/spree/stock_transfer.rb
spree_core-2.3.5 app/models/spree/stock_transfer.rb
spree_core-2.4.0.rc3 app/models/spree/stock_transfer.rb
spree_core-2.4.0.rc2 app/models/spree/stock_transfer.rb