cash_registers_controller.rb 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130
  1. class CashRegistersController < ApplicationController
  2. ##--- Abilities
  3. load_and_authorize_resource
  4. ##--- Breadcrum_rails
  5. add_breadcrumb I18n.t("breadcrumbs." + controller_name), :cash_registers_path
  6. add_breadcrumb "Nueva Caja registradora ", :new_cash_register_path, only: :new
  7. add_breadcrumb "Detalle de la Caja registradora ", :cash_register_path, only: :show
  8. add_breadcrumb "Editar Caja registradora ", :edit_cash_register_path, only: :edit
  9. before_action :set_cash_register, only: [:show, :edit, :update, :destroy]
  10. #before_action :get_pointsale, only: [:index]
  11. # GET /cash_registers
  12. # GET /cash_registers.json
  13. def index
  14. if current_user.usertype == "A" || current_user.usertype == "SS"
  15. @cash_registers = CashRegister.vigentes.includes(:pointsale)
  16. else
  17. @cash_registers = CashRegister.includes(:pointsale).where(:pointsale_id => current_user.pointsale_id ).vigentes
  18. end
  19. end
  20. # GET /cash_registers/1
  21. # GET /cash_registers/1.json
  22. def show; end
  23. # GET /cash_registers/new
  24. def new
  25. @cash_register = CashRegister.new
  26. end
  27. # GET /cash_registers/1/edit
  28. def edit; end
  29. # POST /cash_registers
  30. # POST /cash_registers.json
  31. def create
  32. @cash_register = CashRegister.new(cash_register_params)
  33. @cash_register.pointsale_id = @current_user.pointsale_id
  34. respond_to do |format|
  35. if @cash_register.save
  36. format.html { redirect_to cash_registers_url, success: "La caja " + @cash_register.name + " fue registrada." }
  37. format.js
  38. else
  39. format.html { render :new }
  40. format.js
  41. format.json { render json: @cash_register.errors, status: :unprocessable_entity }
  42. end
  43. end
  44. end
  45. # PATCH/PUT /cash_registers/1
  46. # PATCH/PUT /cash_registers/1.json
  47. def update
  48. respond_to do |format|
  49. cash_register_opened = OpenCashRegister.where(cash_register_id: @cash_register.id, status: 0).any?
  50. if cash_register_opened == true && params[:cash_register][:status] == 'inactive'
  51. @cash_register.errors.add(:status, "No se puede desactivar una caja abierta.")
  52. format.html { render :edit }
  53. format.js
  54. format.json { render json: @cash_register.errors, status: :unprocessable_entity }
  55. else
  56. @cash_register.update(cash_register_params)
  57. format.js
  58. end
  59. end
  60. end
  61. def update_status
  62. cash_register = CashRegister.find(params[:cash_register_id])
  63. cash_register.status =
  64. if cash_register.active?
  65. 2
  66. elsif cash_register.inactive?
  67. 1
  68. end
  69. respond_to do |format|
  70. if cash_register.save(validate: false)
  71. format.html { redirect_to cash_registers_url, warning: "La caja registradora " + cash_register.name + " fue " + (cash_register.active? ? "activada" : "desactivada") + "." }
  72. # format.json { render :show, status: :ok, location: @pointsale }
  73. format.json { head :no_content }
  74. else
  75. format.html { redirect_to cash_registers_url }
  76. format.json { render json: @cash_register.errors, status: :unprocessable_entity }
  77. end
  78. end
  79. end
  80. # DELETE /cash_registers/1
  81. # DELETE /cash_registers/1.json
  82. def destroy
  83. #@cash_register.destroy
  84. respond_to do |format|
  85. cash_register_opened = OpenCashRegister.where(:cash_register_id => @cash_register.id, :status => 0).any?
  86. if cash_register_opened == true
  87. @cash_register.errors.add(:status, "No se puede eliminar una caja abierta.")
  88. format.html { render :edit }
  89. format.json { render json: @cash_register.errors, status: :unprocessable_entity }
  90. else
  91. if @cash_register.main == 'yes'
  92. @cash_register.errors.add(:base, "No se puede eliminar la caja principal.")
  93. format.html { redirect_to cash_registers_url, warning: "La caja " + @cash_register.name + " no se puede eliminar por ser la principal." }
  94. format.json { render json: @cash_register.errors, status: :unprocessable_entity }
  95. else
  96. @cash_register.update_attributes(status: 0)
  97. format.html { redirect_to cash_registers_url, warning: "La caja " + @cash_register.name + " fue eliminada." }
  98. format.json { head :no_content }
  99. end
  100. end
  101. end
  102. end
  103. def get_cash_fund
  104. last_cash_out = CashRegister.find(params[:cash_register_id]).cash_outs.last
  105. render :json => last_cash_out.present? ? last_cash_out.cash_fund : 0
  106. end
  107. private
  108. # Use callbacks to share common setup or constraints between actions.
  109. def set_cash_register
  110. @cash_register = CashRegister.find(params[:id])
  111. end
  112. # Never trust parameters from the scary internet, only allow the white list through.
  113. def cash_register_params
  114. params.require(:cash_register).permit(:name, :description, :pointsale_id, :status)
  115. end
  116. end