/backend/app/controllers/spree/admin/stock_transfers_controller.rb

https://gitlab.com/shinvdu/spree · Ruby · 51 lines · 41 code · 10 blank · 0 comment · 0 complexity · c79f8597694ed3473f9b7613c0bf441d MD5 · raw file

  1. module Spree
  2. module Admin
  3. class StockTransfersController < Admin::BaseController
  4. before_action :load_stock_locations, only: :index
  5. def index
  6. @q = StockTransfer.ransack(params[:q])
  7. @stock_transfers = @q.result.
  8. includes(stock_movements: { stock_item: :stock_location }).
  9. order(created_at: :desc).
  10. page(params[:page])
  11. end
  12. def show
  13. @stock_transfer = StockTransfer.friendly.find(params[:id])
  14. end
  15. def new; end
  16. def create
  17. variants = Hash.new(0)
  18. params[:variant].each_with_index do |variant_id, i|
  19. variants[variant_id] += params[:quantity][i].to_i
  20. end
  21. stock_transfer = StockTransfer.create(reference: params[:reference])
  22. stock_transfer.transfer(source_location,
  23. destination_location,
  24. variants)
  25. flash[:success] = Spree.t(:stock_successfully_transferred)
  26. redirect_to admin_stock_transfer_path(stock_transfer)
  27. end
  28. private
  29. def load_stock_locations
  30. @stock_locations = Spree::StockLocation.active.order_default
  31. end
  32. def source_location
  33. @source_location ||= params.has_key?(:transfer_receive_stock) ? nil :
  34. StockLocation.find(params[:transfer_source_location_id])
  35. end
  36. def destination_location
  37. @destination_location ||= StockLocation.find(params[:transfer_destination_location_id])
  38. end
  39. end
  40. end
  41. end