module Contabilidade
class ImpostoSobreServicosController < ApplicationController
	include ContabilidadeControllerConcern
	include ControllerConcern
	before_action :authenticate_usuario!
	before_action :autoriza_usuario!
	before_action :set_contabilidade, only: [:index, :new, :create]
	before_action :set_imposto_sobre_servico, only: [:show, :edit, :update, :destroy]

	# GET /contabilidade/imposto_sobre_servicos
	def index
		@q = @contabilidade.imposto_sobre_servicos.order(:id).search(params[:q])
		@imposto_sobre_servicos = @q.result(distinct: false).paginate(page: params[:page], per_page: 10)
	end

	# GET /contabilidade/imposto_sobre_servicos/1
	def show
		respond_to do |format|
			format.json{ render json: @imposto_sobre_servico }
			format.html
		end
	end

	# GET /contabilidade/imposto_sobre_servicos/new
	def new
		@imposto_sobre_servico = @contabilidade.imposto_sobre_servicos.new
	end

	# GET /contabilidade/imposto_sobre_servicos/1/edit
	def edit
	end

	# POST /contabilidade/imposto_sobre_servicos
	def create
		@imposto_sobre_servico = @contabilidade.imposto_sobre_servicos.new(imposto_sobre_servico_params)

		if @imposto_sobre_servico.save
			redirect_to @imposto_sobre_servico, notice: 'Imposto sobre servico foi criado(a) com sucesso.'
		else
			render :new
		end
	end

	# PATCH/PUT /contabilidade/imposto_sobre_servicos/1
	def update
		if @imposto_sobre_servico.update( imposto_sobre_servico_params )
			redirect_to @imposto_sobre_servico, notice: 'Imposto sobre servico foi atualizado(a) com sucesso.'
		else
			render :edit
		end
	end

	# DELETE /contabilidade/imposto_sobre_servicos/1
	def destroy
		mensagem = apaga_e_retorna_mensagem(@imposto_sobre_servico)
		redirect_to contabilidade_imposto_sobre_servicos_url(contabilidade_atual), mensagem
	end

	private
	def set_imposto_sobre_servico
		@imposto_sobre_servico = ImpostoSobreServico.find( params[:id] )
	end

	def set_contabilidade
		@contabilidade = Orcamento.find_by( exercicio: params[:exercicio] )
	end

	# Permite apenas os parâmetros específicos
	def imposto_sobre_servico_params
		params.require(:contabilidade_imposto_sobre_servico).permit(:descricao, :codigo, :aliquota, :credor_externo_paga_imposto)

	end
end
end
