special_prices_controller.rb 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. class SpecialPricesController < ApplicationController
  2. ##--- Abilities
  3. load_and_authorize_resource
  4. ##--- Breadcrum_rails
  5. add_breadcrumb I18n.t("breadcrumbs." + controller_name), :special_prices_path
  6. add_breadcrumb "Nuevo precio(s) especial " , :new_special_price_path, only: :new
  7. add_breadcrumb "Detalle de precio(s) especial " , :special_price_path, only: :show
  8. add_breadcrumb "Editar precio(s) especial" , :edit_special_price_path, only: :edit
  9. before_action :set_special_price, only: [:show, :edit, :update, :destroy]
  10. # GET /special_prices/new
  11. def new
  12. @special_price = SpecialPrice.new
  13. end
  14. # POST /special_prices
  15. # POST /special_prices.json
  16. def create
  17. @special_price = SpecialPrice.new(special_price_params)
  18. @special_price.user_id = current_user.id
  19. existence = SpecialPrice.where(:product_id => @special_price.product_id, :customer_id => @special_price.customer_id).any?
  20. @variantes = Product.where(:parent_id => @special_price.product_id)
  21. respond_to do |format|
  22. if existence == true
  23. @error = true
  24. else
  25. @special_price.save
  26. end
  27. format.js
  28. end
  29. end
  30. # PATCH/PUT /special_prices/1
  31. # PATCH/PUT /special_prices/1.json
  32. def update
  33. respond_to do |format|
  34. unless params[:special_price][:percent].blank?
  35. @special_price.price = nil
  36. else
  37. @special_price.percent = nil
  38. end
  39. @special_price.audit_comment = "Precio especial #{@special_price.product.name} #{@special_price.product.display_attributes} con #{'$' + params[:special_price][:price] if params[:special_price][:price].present?} #{params[:special_price][:percent] + '%' if params[:special_price][:percent].present?} de descuento"
  40. if @special_price.update(special_price_params)
  41. format.html { redirect_to @special_price, notice: 'Special price was successfully updated.' }
  42. format.json { render :show, status: :ok, location: @special_price }
  43. else
  44. format.html { render :edit }
  45. format.json { render json: @special_price.errors, status: :unprocessable_entity }
  46. end
  47. end
  48. end
  49. # DELETE /special_prices/1
  50. # DELETE /special_prices/1.json
  51. def destroy
  52. @special_price.audit_comment = "Precio especial #{@special_price.product.name} #{@special_price.product.display_attributes} eliminado"
  53. @special_price.destroy
  54. respond_to do |format|
  55. format.html { redirect_to special_prices_url, notice: 'Special price was successfully destroyed.' }
  56. format.json { head :no_content }
  57. end
  58. end
  59. def get_special_price_by_customer
  60. @special_prices = SpecialPrice.includes(:product).where(:customer_id => params[:customer_id]).order("id ASC")
  61. respond_to do |format|
  62. format.js
  63. end
  64. end
  65. def add_special_price_by_barcode
  66. respond_to do |format|
  67. @product = Product.find_by(:barcode => params[:barcode])
  68. unless @product.blank?
  69. @special_price = SpecialPrice.new
  70. @special_price.product_id = @product.id
  71. @special_price.customer_id = params[:customer_id]
  72. @special_price.user_id = current_user.id
  73. @existence = SpecialPrice.where(:product_id => @special_price.product_id, :customer_id => @special_price.customer_id).any?
  74. @special_price.save
  75. end
  76. format.js
  77. end
  78. end
  79. private
  80. # Use callbacks to share common setup or constraints between actions.
  81. def set_special_price
  82. @special_price = SpecialPrice.find(params[:id])
  83. end
  84. # Never trust parameters from the scary internet, only allow the white list through.
  85. def special_price_params
  86. params.require(:special_price).permit(:product_id, :customer_id, :price, :percent, :status, :user_id)
  87. end
  88. end