module Contabilidade
class ControleDePagamentosController < ApplicationController
	include ControllerConcern
	before_action :authenticate_usuario!
	before_action :autoriza_usuario!, except: [:liquidacoes_sem_folha_de_pagamento, :liquidacoes_folha_de_pagamento, :editar_conta_liquidacao, :atualiza_conta_liquidacao, :adicionar_contas_retencao, :cadastrar_contas_retencao, :editar_contas_do_grupo_da_retencao, :atualiza_contas_do_grupo_da_retencao ]
	before_action :set_controle_de_pagamento, only: [:show, :edit, :update, :destroy, :cadastrar_contas_retencao, :adicionar_contas_retencao, :editar_contas_do_grupo_da_retencao, :atualiza_contas_do_grupo_da_retencao, :pagar_liquido, :pagar_retencoes, :pagar_total]
	before_action :disponibiliza_dependencias, only: [:new, :create, :edit, :update, :index]


	# GET /contabilidade/controle_de_pagamentos
	def index
		@action_controle_de_pagamento = ""
		@liquidacoes = nil
		liquidacoes = nil
		@controle_de_pagamentos = nil
		@url_controles = nil

		if params[:sem_folha].present?
			@controle_de_pagamentos = contexto_atual.controle_de_pagamentos.where(folha_de_pagamento: false).order(data: :desc).paginate(page: params[:page], per_page: 10)
			liquidacoes = current_usuario.liquidacoes.sem_controle_de_pagamento.autorizado.joins(empenho: :orcamento).joins(empenho: [orcamento_da_despesa: [elemento_de_despesa_por_subacao: :elemento_de_despesa]]).where('base_elementos_de_despesa.folha_de_pagamento <> 1 AND base_elementos_de_despesa.folha_de_pagamento <> 3').joins(empenho: [pessoa: :tipo_de_pessoa]).where('base_tipo_de_pessoas.codigo <> ?', '6').where("(orcamentos.exercicio = ? or (orcamentos.exercicio <= ? and contabilidade_liquidacoes.restos_a_pagar is true))", contexto_atual.exercicio, contexto_atual.exercicio - 1)
			@action_controle_de_pagamento = "sem_folha"
			@tipo_de_relatorio = "resumo_liquidacoes_sem_folha"
			@url_controles = sem_folha_contabilidade_controle_de_pagamentos_path
		elsif params[:com_folha].present?
			@controle_de_pagamentos = contexto_atual.controle_de_pagamentos.where(folha_de_pagamento: true).order(data: :desc).paginate(page: params[:page], per_page: 10)
			if params[:autorizados].present?
				liquidacoes = current_usuario.liquidacoes.sem_controle_de_pagamento.autorizado.joins(empenho: :orcamento).joins(empenho: [orcamento_da_despesa: [elemento_de_despesa_por_subacao: :elemento_de_despesa]]).joins(empenho: [pessoa: :tipo_de_pessoa]).where('base_elementos_de_despesa.folha_de_pagamento = 1 OR base_elementos_de_despesa.folha_de_pagamento = 3 OR base_tipo_de_pessoas.codigo = ?', '6').where("(orcamentos.exercicio = ? or (orcamentos.exercicio <= ? and contabilidade_liquidacoes.restos_a_pagar is true))", contexto_atual.exercicio, contexto_atual.exercicio - 1)
			else
				liquidacoes = current_usuario.liquidacoes.recebidos_pelo_financeiro.sem_controle_de_pagamento.joins(empenho: :orcamento).joins(empenho: [orcamento_da_despesa: [elemento_de_despesa_por_subacao: :elemento_de_despesa]]).joins(empenho: [pessoa: :tipo_de_pessoa]).where('base_elementos_de_despesa.folha_de_pagamento = 1 OR base_elementos_de_despesa.folha_de_pagamento = 3 OR base_tipo_de_pessoas.codigo = ?', '6').where("(orcamentos.exercicio = ? or (orcamentos.exercicio <= ? and contabilidade_liquidacoes.restos_a_pagar is true))", contexto_atual.exercicio, contexto_atual.exercicio - 1)
			end

			@action_controle_de_pagamento = "com_folha"
			@tipo_de_relatorio = "resumo_liquidacoes"
			@url_controles = com_folha_autorizados_contabilidade_controle_de_pagamentos_path
		else
			@controle_de_pagamentos = contexto_atual.controle_de_pagamentos.order(data: :desc).paginate(page: params[:page], per_page: 10)
			liquidacoes = current_usuario.liquidacoes.recebidos_pelo_financeiro.sem_controle_de_pagamento.joins(empenho: :orcamento).joins(empenho: [pessoa: :tipo_de_pessoa]).where('contabilidade_liquidacoes.data_de_emissao_da_folha IS NOT NULL OR base_tipo_de_pessoas.codigo = ?', '6').where("(orcamentos.exercicio = ? or (orcamentos.exercicio <= ? and contabilidade_liquidacoes.restos_a_pagar is true))", contexto_atual.exercicio, contexto_atual.exercicio - 1).order(:id)
			@tipo_de_relatorio = "resumo_liquidacoes"
			@url_controles = com_folha_autorizados_contabilidade_controle_de_pagamentos_path
		end
		@q = liquidacoes.search(params[:q])
		@unidades_orcamentarias = contexto_atual.unidades_orcamentarias
		@unidades_gestoras = contexto_atual.unidades_gestoras
		@pessoas = Base::Pessoa.order(:nome)
		@fontes_de_recurso = contexto_atual.fontes_de_recursos
		@liquidacoes = @q.result(distinct: false).select{|f| !(f.totalmente_pago?)}.sort_by(&:data_da_liquidacao).reverse.paginate(page: params[:page], per_page: 10)
	end

	# GET /contabilidade/controle_de_pagamentos/1
	def show
	end

	# GET /contabilidade/controle_de_pagamentos/new
	def new
		@controle_de_pagamento = Contabilidade::ControleDePagamento.new
	end

	# GET /contabilidade/controle_de_pagamentos/1/edit
	def edit
		@controle_de_pagamento.liquidacoes_do_controle_de_pagamento.build if @controle_de_pagamento.liquidacoes_do_controle_de_pagamento.empty?

		if @controle_de_pagamento.folha_de_pagamento.present?
			disponibiliza_dependencias_edit_folha
		else
			disponibiliza_dependencias_edit_sem_folha
		end

		adicionar_todas_liquidacoes
	end

	def adicionar_todas_liquidacoes
		if params[:todas_liquidacoes].present? && params[:todas_liquidacoes] == "true"
			liquidacoes_existentes = @controle_de_pagamento.liquidacoes_do_controle_de_pagamento.map(&:liquidacao)
			liquidacoes_restantes = @liquidacoes - liquidacoes_existentes
			liquidacoes_restantes.each do |liquidacao|
				@controle_de_pagamento.liquidacoes_do_controle_de_pagamento.build(liquidacao: liquidacao)
			end
		else
			@controle_de_pagamento.liquidacoes_do_controle_de_pagamento.build if @controle_de_pagamento.liquidacoes_do_controle_de_pagamento.empty?
		end
	end

	# POST /contabilidade/controle_de_pagamentos
	def create
		@controle_de_pagamento = Contabilidade::ControleDePagamento.new(controle_de_pagamento_params)
		@controle_de_pagamento.orcamento = contexto_atual
		if @controle_de_pagamento.save
			redirect_to @controle_de_pagamento, notice: 'Controle de pagamento foi criado com sucesso.'
		else
			if !@controle_de_pagamento.folha_de_pagamento.present?
				params[:sem_folha] = true
			end
			session[:liquidacoes_ids] = @controle_de_pagamento.liquidacoes_do_controle_de_pagamento.map { |liquidacao| liquidacao.liquidacao_id}
			render :new
		end
	end

	# PATCH/PUT /contabilidade/controle_de_pagamentos/1
	def update
		if @controle_de_pagamento.update( controle_de_pagamento_params )
			redirect_to @controle_de_pagamento, notice: 'Controle de pagamento foi atualizado com sucesso.'
		else
			if @controle_de_pagamento.folha_de_pagamento.present?
				disponibiliza_dependencias_edit_folha
			else
				disponibiliza_dependencias_edit_sem_folha
			end
			render :edit
		end
	end

	#GET /contabilidade/controle_de_pagamentos/1/editar_conta_liquidacao
	def editar_conta_liquidacao
		return if bloqueia_usuario_com_base_em 'update'
		@liquidacao_do_controle_de_pagamento = Contabilidade::LiquidacaoDoControleDePagamento.find(params[:id])
		@todas_as_contas = Base::ContaBancaria.all
		@controle_de_pagamento = Contabilidade::ControleDePagamento.where(id: @liquidacao_do_controle_de_pagamento.controle_de_pagamento_id ).last
	end

	#PATCH /contabilidade/controle_de_pagamentos/1/atualiza_conta_liquidacao
	def atualiza_conta_liquidacao
		@liquidacao_do_controle_de_pagamento = Contabilidade::LiquidacaoDoControleDePagamento.find(params[:id])

		if @liquidacao_do_controle_de_pagamento.update(liquidacao_do_controle_de_pagamento_params)
			if liquidacao_do_controle_de_pagamento_params[:avancar].to_s == 'true'
				@proximo = @liquidacao_do_controle_de_pagamento.controle_de_pagamento.liquidacoes_do_controle_de_pagamento.order(:id).where("id > ?", @liquidacao_do_controle_de_pagamento.id).first
				redirect_to editar_conta_liquidacao_path(@proximo || @liquidacao_do_controle_de_pagamento), notice: 'Conta Atualizada com Sucesso.'
			else
				redirect_to editar_conta_liquidacao_path(@liquidacao_do_controle_de_pagamento), notice: 'Conta Atualizada com Sucesso.'
			end
		else
			@todas_as_contas = Base::ContaBancaria.all
			@controle_de_pagamento = Contabilidade::ControleDePagamento.where(id: @liquidacao_do_controle_de_pagamento.controle_de_pagamento_id ).last
			flash.now[:alert] = 'Erro ao Atualizar a Conta da Liquidação.'
			render :editar_conta_liquidacao
		end
	end


	def liquidacoes_folha_de_pagamento
		return if bloqueia_usuario_com_base_em 'create'

		if params[:unidade_orcamentaria_id].present? || params[:elemento_de_despesa].present? || params[:fonte_de_recurso_id].present? || params[:fornecedor_id].present?
			liquidacoes_filtradas = Contabilidade::Liquidacao.sem_controle_de_pagamento.autorizado.joins(empenho: :orcamento).joins(empenho: [orcamento_da_despesa: [elemento_de_despesa_por_subacao: :elemento_de_despesa]]).joins(empenho: [pessoa: :tipo_de_pessoa]).where('base_elementos_de_despesa.folha_de_pagamento = 1 OR base_elementos_de_despesa.folha_de_pagamento = 3 OR base_tipo_de_pessoas.codigo = ?', '6').where("(orcamentos.exercicio = ? or (orcamentos.exercicio <= ? and contabilidade_liquidacoes.restos_a_pagar is true))", contexto_atual.exercicio, contexto_atual.exercicio - 1)
		end

		if params[:unidade_orcamentaria_id].present? && !params[:unidade_orcamentaria_id].blank?
			unidades_orcamentarias_vinculadas = [params[:unidade_orcamentaria_id].to_i]
			unidades_orcamentarias_vinculadas << Loa::UnidadeOrcamentariaVinculada.where(unidade_orcamentaria_id: params[:unidade_orcamentaria_id]).pluck(:unidade_orcamentaria_vinculada_id)
			liquidacoes_filtradas = liquidacoes_filtradas.joins(empenho: {orcamento_da_despesa: { elemento_de_despesa_por_subacao: :subacao }}).where(loa_subacoes: { unidade_orcamentaria_id: unidades_orcamentarias_vinculadas.flatten })
		end

		if params[:fornecedor_id].present? && !params[:fornecedor_id].blank?
			liquidacoes_filtradas = liquidacoes_filtradas.where('contabilidade_empenhos.pessoa_id = ?',params[:fornecedor_id])
		end

		if params[:elemento_de_despesa].present? && !params[:elemento_de_despesa].blank?
			elemento_de_despesa = Base::ElementoDeDespesa.find(params[:elemento_de_despesa] )
			liquidacoes_filtradas = liquidacoes_filtradas.where('base_elementos_de_despesa.id = ?', elemento_de_despesa.id)
		end

		if params[:fonte_de_recurso_id].present? && !params[:fonte_de_recurso_id].blank?
			fonte_de_recurso = Base::FonteDeRecursos.find(params[:fonte_de_recurso_id] )
			liquidacoes_filtradas = liquidacoes_filtradas.where('loa_orcamentos_da_despesa.fonte_de_recursos_id = ?', fonte_de_recurso.id)
		end
		if liquidacoes_filtradas.present?
			if session[:liquidacoes_ids].present?
				@liquidacoes = liquidacoes_filtradas.where(id: session[:liquidacoes_ids])
				session[:liquidacoes_ids] = nil
			else
				@liquidacoes = liquidacoes_filtradas.order('loa_subacoes.unidade_orcamentaria_id asc')
			end
		else
				@liquidacoes = []
		end

		@liquidacoes = @liquidacoes.left_outer_joins(:pagamentos).where(contabilidade_pagamentos: {id: nil} )

		respond_to do |format|
			format.json { render json: @liquidacoes.order(:numero)}
			format.js
		end
	end

	def liquidacoes_sem_folha_de_pagamento
		return if bloqueia_usuario_com_base_em 'create'

		if params[:unidade_orcamentaria_id].present? || params[:elemento_de_despesa].present? || params[:fonte_de_recurso_id].present? || params[:fornecedor_id].present?
			liquidacoes_filtradas = Contabilidade::Liquidacao.sem_controle_de_pagamento.autorizado.joins(empenho: :orcamento).joins(empenho: [orcamento_da_despesa: [elemento_de_despesa_por_subacao: :elemento_de_despesa]]).where('base_elementos_de_despesa.folha_de_pagamento <> 1 AND base_elementos_de_despesa.folha_de_pagamento <> 3').joins(empenho: [pessoa: :tipo_de_pessoa]).where('base_tipo_de_pessoas.codigo <> ?', '6').where("(orcamentos.exercicio = ? or (orcamentos.exercicio <= ? and contabilidade_liquidacoes.restos_a_pagar is true))", contexto_atual.exercicio, contexto_atual.exercicio - 1)
		end

		if params[:unidade_orcamentaria_id].present? && !params[:unidade_orcamentaria_id].blank?
			unidades_orcamentarias_vinculadas = [params[:unidade_orcamentaria_id].to_i]
			unidades_orcamentarias_vinculadas << Loa::UnidadeOrcamentariaVinculada.where(unidade_orcamentaria_id: params[:unidade_orcamentaria_id]).pluck(:unidade_orcamentaria_vinculada_id)
			liquidacoes_filtradas = liquidacoes_filtradas.joins(empenho: [orcamento_da_despesa: [elemento_de_despesa_por_subacao: :subacao]]).where(loa_subacoes: { unidade_orcamentaria_id: unidades_orcamentarias_vinculadas.flatten })
		end

		if params[:fornecedor_id].present? && !params[:fornecedor_id].blank?
			liquidacoes_filtradas = liquidacoes_filtradas.where('contabilidade_empenhos.pessoa_id = ?',params[:fornecedor_id])
		end

		if params[:elemento_de_despesa].present? && !params[:elemento_de_despesa].blank?
			elemento_de_despesa = Base::ElementoDeDespesa.find(params[:elemento_de_despesa] )
			liquidacoes_filtradas = liquidacoes_filtradas.where('base_elementos_de_despesa.id = ?', elemento_de_despesa.id)
		end

		if params[:fonte_de_recurso_id].present? && !params[:fonte_de_recurso_id].blank?
			fonte_de_recurso = Base::FonteDeRecursos.find(params[:fonte_de_recurso_id] )
			liquidacoes_filtradas = liquidacoes_filtradas.where('loa_orcamentos_da_despesa.fonte_de_recursos_id = ?', fonte_de_recurso.id)
		end

		if session[:liquidacoes_ids].present?
			@liquidacoes = liquidacoes_filtradas.where(id: session[:liquidacoes_ids])
			session[:liquidacoes_ids] = nil
		else
			@liquidacoes = liquidacoes_filtradas
		end

		@liquidacoes = @liquidacoes.left_outer_joins(:pagamentos).where(contabilidade_pagamentos: {id: nil} )

		respond_to do |format|
			format.json { render json: @liquidacoes.order(:numero)}
			format.js
		end
	end

	# DELETE /contabilidade/controle_de_pagamentos/1
	def destroy
		mensagem = apaga_e_retorna_mensagem(@controle_de_pagamento)
		if @controle_de_pagamento.folha_de_pagamento.present?
			redirect_to com_folha_contabilidade_controle_de_pagamentos_path, mensagem
		else
			redirect_to sem_folha_contabilidade_controle_de_pagamentos_path, mensagem
		end
	end

	def disponibiliza_dependencias
		@unidades_orcamentarias = contexto_atual.unidades_orcamentarias

		de_folha = '6'
		if params[:sem_folha].present?
			@pessoas = Base::Pessoa.joins(:tipo_de_pessoa).where.not("base_tipo_de_pessoas.codigo = ?", de_folha).includes(:tipo_de_pessoa).order(:nome)
		else
			@pessoas = Base::Pessoa.joins(:tipo_de_pessoa).where("base_tipo_de_pessoas.codigo = ?", de_folha).includes(:tipo_de_pessoa).order(:nome)
		end

		@fontes_de_recurso = contexto_atual.fontes_de_recursos
		@elementos_de_despesa = contexto_atual.elementos_de_despesa
		if params[:contabilidade_controle_de_pagamento].present? && params[:contabilidade_controle_de_pagamento][:unidade_orcamentaria_id].present?
			unidade_orcamentaria = Loa::UnidadeOrcamentaria.find(params[:contabilidade_controle_de_pagamento][:unidade_orcamentaria_id])
			@fontes_de_recurso = unidade_orcamentaria.fontes_de_recursos.distinct
			@elementos_de_despesa = unidade_orcamentaria.elementos_de_despesa.distinct
		elsif @controle_de_pagamento.present? && @controle_de_pagamento.unidade_orcamentaria.present?
			@fontes_de_recurso = @controle_de_pagamento.unidade_orcamentaria.fontes_de_recursos.distinct
			@elementos_de_despesa = @controle_de_pagamento.unidade_orcamentaria.elementos_de_despesa.distinct
		end
	end

	def disponibiliza_dependencias_edit_folha
		if @controle_de_pagamento.unidade_orcamentaria.present?
			liquidacoes_filtradas = @controle_de_pagamento.unidade_orcamentaria.liquidacoes.sem_controle_de_pagamento.recebidos_pelo_financeiro.where(data_de_emissao_da_folha: nil)
		else
			liquidacoes_filtradas = contexto_atual.liquidacoes.sem_controle_de_pagamento.recebidos_pelo_financeiro.where(data_de_emissao_da_folha: nil)
		end

		if @controle_de_pagamento.pessoa.present?
			liquidacoes_filtradas = liquidacoes_filtradas.joins(:empenho).where('contabilidade_empenhos.pessoa_id = ?', @controle_de_pagamento.pessoa.id)
		end

		if @controle_de_pagamento.fonte_de_recurso.present? && @controle_de_pagamento.elemento_de_despesa.present?
			fonte_de_recurso = @controle_de_pagamento.fonte_de_recurso
			elemento_de_despesa = @controle_de_pagamento.elemento_de_despesa
			liquidacoes_filtradas = liquidacoes_filtradas.joins(empenho: {orcamento_da_despesa: {elemento_de_despesa_por_subacao: :elemento_de_despesa}}).where('base_elementos_de_despesa.id = ?', elemento_de_despesa.id).where('loa_orcamentos_da_despesa.fonte_de_recursos_id = ?', fonte_de_recurso.id).where.not(data_de_emissao_da_folha: nil)
		end

		if @controle_de_pagamento.fonte_de_recurso.present?
			fonte_de_recurso = @controle_de_pagamento.fonte_de_recurso
			liquidacoes_filtradas = liquidacoes_filtradas.joins(empenho: :orcamento_da_despesa).where('loa_orcamentos_da_despesa.fonte_de_recursos_id = ?', fonte_de_recurso.id).where.not(data_de_emissao_da_folha: nil)
		end

		if @controle_de_pagamento.elemento_de_despesa.present?
			elemento_de_despesa = @controle_de_pagamento.elemento_de_despesa
			liquidacoes_filtradas = liquidacoes_filtradas.joins(empenho: {orcamento_da_despesa: {elemento_de_despesa_por_subacao: :elemento_de_despesa}}).where('base_elementos_de_despesa.id = ?', elemento_de_despesa.id).where.not(data_de_emissao_da_folha: nil)
		end

		@liquidacoes = liquidacoes_filtradas
	end

	def disponibiliza_dependencias_edit_sem_folha
		if @controle_de_pagamento.unidade_orcamentaria.present?
			liquidacoes_filtradas = @controle_de_pagamento.unidade_orcamentaria.liquidacoes.sem_controle_de_pagamento.recebidos_pelo_financeiro.where(data_de_emissao_da_folha: nil)
		else
			liquidacoes_filtradas = contexto_atual.liquidacoes.sem_controle_de_pagamento.recebidos_pelo_financeiro.where(data_de_emissao_da_folha: nil)
		end

		if @controle_de_pagamento.pessoa.present?
			liquidacoes_filtradas = liquidacoes_filtradas.joins(:empenho).where('contabilidade_empenhos.pessoa_id = ?', @controle_de_pagamento.pessoa.id)
		end
		if @controle_de_pagamento.elemento_de_despesa.present?
			liquidacoes_filtradas = liquidacoes_filtradas.joins(empenho: {orcamento_da_despesa: {elemento_de_despesa_por_subacao: :elemento_de_despesa}}).where('base_elementos_de_despesa.id = ?', @controle_de_pagamento.elemento_de_despesa.id)
		end
		if @controle_de_pagamento.fonte_de_recurso.present?
			liquidacoes_filtradas = liquidacoes_filtradas.joins(empenho: :orcamento_da_despesa).where('loa_orcamentos_da_despesa.fonte_de_recursos_id = ?', @controle_de_pagamento.fonte_de_recurso.id)
		end

		@liquidacoes = liquidacoes_filtradas
	end

	# PATCH/PUT /contabilidade/controle_de_pagamentos/1/pagar_liquido
	def pagar_liquido
		if @controle_de_pagamento.send(:pagar_valor_liquido, contexto_atual, true)
			redirect_to @controle_de_pagamento, notice: 'O valor liquido foi pago com sucesso.'
		end

		rescue => exception
			redirect_to @controle_de_pagamento, alert: "Não foi possivel pagar o líquido"
	end

	# PATCH/PUT /contabilidade/controle_de_pagamentos/1/pagar_retencoes
	def pagar_retencoes
		if @controle_de_pagamento.send(:pagar_impostos, true)
			redirect_to @controle_de_pagamento, notice: 'O valor retido foi pago com sucesso.'
		end

		rescue => exception
			redirect_to @controle_de_pagamento, alert: "Não foi possível pagar o valor retido"
	end

	# PATCH/PUT /contabilidade/controle_de_pagamentos/1/pagar_total
	def pagar_total
		if @controle_de_pagamento.send(:pagar_total, contexto_atual)
			redirect_to @controle_de_pagamento, notice: 'O valor total do controle foi pago com sucesso.'
		end

		rescue => exception
			redirect_to @controle_de_pagamento, alert: "Não foi possível pagar o valor total"
	end

	private
	def set_controle_de_pagamento
		@controle_de_pagamento = Contabilidade::ControleDePagamento.find( params[:id] )
	end


	# Permite apenas os parâmetros específicos
	def controle_de_pagamento_params
		params.require(:contabilidade_controle_de_pagamento)
			.permit(
				:data,
				:pessoa_id,
				:unidade_orcamentaria_id,
				:folha_de_pagamento,
				:fonte_de_recurso_id,
				:elemento_de_despesa_id,
				:status,
				:forma_de_pagamento,
				:forma_de_pagamento_das_retencoes,
				liquidacoes_do_controle_de_pagamento_attributes: [
					:id,
					:liquidacao_id,
					:controle_de_pagamento_id,
					:conta_destino_id,
					:_destroy,
					contas_das_liquidacoes_do_controle_de_pagamento_attributes: [
						:id,
						:liquidacoes_do_controle_de_pagamento_id,
						:conta_origem_id,
						:valor_da_conta_origem,
						:_destroy
					]
				]
			)
	end

	def liquidacao_do_controle_de_pagamento_params
		params.require(:contabilidade_liquidacao_do_controle_de_pagamento)
			.permit(
				:id,
				:liquidacao_id,
				:controle_de_pagamento_id,
				:conta_destino_id,
				:avancar,
				contas_das_liquidacoes_do_controle_de_pagamento_attributes: [
					:id,
					:liquidacoes_do_controle_de_pagamento_id,
					:conta_origem_id,
					:valor_da_conta_origem,
					:_destroy
				]
			)
	end

	def contas_das_retencoes_params
		params.require(:contabilidade_agrupamento_de_retencoes_do_controle_de_pg)
			.permit(
				:id,
				:folha,
				:controle_de_pagamento_id,
				:conta_extra_id,
				:imposto_type,
				:detalhamento_por_ug,
				:detalhamento_por_fonte,
				:tipo_de_acao,
				:_destroy,
				contas_do_grupo_de_retencoes_do_controle_de_pg_attributes: [
					:id,
					:agrupamento_id,
					:ug_id,
					:fonte_id,
					:conta_origem_id,
					:conta_destino_id,
					:_destroy
				]
		)
	end
end
end
