class Loa::Relatorios::CalculoParaContribuicaoDoPASEP

	def self.dados orcamento
		dados = {}
		receitas = []
		deducoes = []
		calculos = []

		total_receitas_correntes = orcamento.naturezas_da_receita.where("origem = '0' and categoria_economica = '001'").to_a.sum(&:total_previsto_agregado)
		sumario = {}
		sumario['nome'] = "Receitas Correntes"
		sumario['estilo'] = 'negrito'
		sumario['valor'] = total_receitas_correntes
		receitas.push(sumario)

		total_receitas_tributarias = orcamento.naturezas_da_receita.where("origem = '1' and categoria_economica = '001'").sum(:valor_previsto)
		sumario = {}
		sumario['nome'] = "Receitas Tributárias"
		sumario['estilo'] = 'tabulacao_1'
		sumario['valor'] = total_receitas_tributarias
		receitas.push(sumario)

		total_receitas_contribuicao = orcamento.naturezas_da_receita.where("origem = '2' and categoria_economica = '001'").sum(:valor_previsto)
		sumario = {}
		sumario['nome'] = "Receita de Contribuição"
		sumario['estilo'] = 'tabulacao_1'
		sumario['valor'] = total_receitas_contribuicao
		receitas.push(sumario)

		total_receitas_patrimoniais = orcamento.naturezas_da_receita.where("origem = '3' and categoria_economica = '001'").sum(:valor_previsto)
		sumario = {}
		sumario['nome'] = "Receita Patrimonial"
		sumario['estilo'] = 'tabulacao_1'
		sumario['valor'] = total_receitas_patrimoniais
		receitas.push(sumario)

		total_receitas_agropecuarias = orcamento.naturezas_da_receita.where("origem = '4' and categoria_economica = '001'").sum(:valor_previsto)
		sumario = {}
		sumario['nome'] = "Receita Agropecuária"
		sumario['estilo'] = 'tabulacao_1'
		sumario['valor'] = total_receitas_agropecuarias
		receitas.push(sumario)

		total_receitas_industriais = orcamento.naturezas_da_receita.where("origem = '5' and categoria_economica = '001'").sum(:valor_previsto)
		sumario = {}
		sumario['nome'] = "Receita Industrial"
		sumario['estilo'] = 'tabulacao_1'
		sumario['valor'] = total_receitas_industriais
		receitas.push(sumario)

		total_receitas_servicos = orcamento.naturezas_da_receita.where("origem = '6' and categoria_economica = '001'").sum(:valor_previsto)
		sumario = {}
		sumario['nome'] = "Receita de Serviços"
		sumario['estilo'] = 'tabulacao_1'
		sumario['valor'] = total_receitas_servicos
		receitas.push(sumario)

		total_receitas_transferencias = orcamento.naturezas_da_receita.where("origem = '7' and categoria_economica = '001'").sum(:valor_previsto)
		sumario = {}
		sumario['nome'] = "Transferências Correntes"
		sumario['estilo'] = 'tabulacao_1'
		sumario['valor'] = total_receitas_transferencias
		receitas.push(sumario)

		total_receitas_outras = orcamento.naturezas_da_receita.where("origem = '9' and categoria_economica = '001'").sum(:valor_previsto)
		sumario = {}
		sumario['nome'] = "Outras Transferências Correntes"
		sumario['estilo'] = 'tabulacao_1'
		sumario['valor'] = total_receitas_outras
		receitas.push(sumario)

		total_receitas = total_receitas_outras + total_receitas_transferencias + total_receitas_servicos + total_receitas_industriais + total_receitas_agropecuarias  + total_receitas_tributarias + total_receitas_contribuicao + total_receitas_patrimoniais
		sumario = {}
		sumario['nome'] = "Subtotal (I)"
		sumario['valor'] = total_receitas
		sumario['estilo'] = 'negrito'
		receitas.push(sumario)

		total_transferencias_capital = orcamento.naturezas_da_receita.where("origem = '4' and categoria_economica = '002'").sum(:valor_previsto)
		sumario = {}
		sumario['nome'] = "Transferências de Capital"
		sumario['estilo'] = ''
		sumario['valor'] = total_transferencias_capital
		receitas.push(sumario)

		sumario = {}
		sumario['nome'] = "Subtotal (II)"
		sumario['valor'] = total_transferencias_capital
		sumario['estilo'] = 'negrito'
		receitas.push(sumario)

		total_receitas =  total_receitas + total_transferencias_capital
		sumario = {}
		sumario['nome'] = "Total das Receitas (III = I+II)"
		sumario['valor'] = total_receitas
		sumario['estilo'] = 'negrito'
		receitas.push(sumario)

		dados[:receitas] = receitas

		receitas_convenio = ['0017181000000000','0017281000000000',"0024181000000000","0024281000000000"]

		total_convenios = orcamento.naturezas_da_receita.where("codigo in (?)", receitas_convenio).to_a.sum(&:total_previsto_agregado)
		sumario = {}
		sumario['nome'] = "Transferências de Convênios (§7º, do art. 2°, da Lei nº 9.715/98)"
		sumario['estilo'] = ''
		sumario['valor'] = total_convenios
		deducoes.push(sumario)

		total_convenios_outros = orcamento.naturezas_da_receita.where("origem = '0' and categoria_economica = '007'").to_a.sum(&:total_previsto_agregado)
		sumario = {}
		sumario['nome'] = "Transferências a Outras Entidades de Direito Público Interno (art. 7º da Lei nº 9.715/98)"
		sumario['estilo'] = ''
		sumario['valor'] = total_convenios_outros
		deducoes.push(sumario)

		total_deduncao_fundeb = orcamento.naturezas_da_receita.where("substring(base_naturezas_da_receita.codigo from 1 for 1) = '9' and substring(base_naturezas_da_receita.codigo from 2 for 1) = '4'").to_a.sum(&:valor_previsto)
		total_deduncao_fundeb = total_deduncao_fundeb < 0 ? total_deduncao_fundeb * -1 : total_deduncao_fundeb
		sumario = {}
		sumario['nome'] = "Dedução para a Formação do FUNDEB (Solução de Consulta nº 278/2017 – COSIT, item 21.3.3)"
		sumario['estilo'] = ''
		sumario['valor'] = total_deduncao_fundeb
		deducoes.push(sumario)

		total_retencoes = total_convenios + total_convenios_outros + total_deduncao_fundeb
		sumario = {}
		sumario['nome'] = "Total das Retenções na Fonte (VI)"
		sumario['valor'] = total_retencoes
		sumario['estilo'] = 'negrito'
		deducoes.push(sumario)

		base_calculo =   total_receitas - total_retencoes
		sumario = {}
		sumario['nome'] = "BASE DE CÁLCULO PARA O PASEP (V = III – IV)"
		sumario['valor'] = base_calculo
		sumario['estilo'] = 'negrito'
		deducoes.push(sumario)

		dados[:deducoes] = deducoes

		sumario = {}
		sumario['nome'] = "A) Base de Cálculo do PASEP (V)"
		sumario['valor'] = base_calculo
		calculos.push(sumario)

		percentual_do_pasep = base_calculo * 0.01
		sumario = {}
		sumario['nome'] = "B) 1% da Base de Cálculo (1% x (V))"
		sumario['valor'] = percentual_do_pasep
		calculos.push(sumario)

		dados[:calculos] = calculos
		return dados
	end
end
