cash_registers_controller.rb 5.0 KB

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