class Loa::Relatorios::DemonstrativoDeMetasDeArrecadacao

	def self.dados loa_atual, unidade_orcamentaria_id = nil, percentuais
		dados_relatorio = []

		total_tesouro_primeiro_bimestre = 0
		total_tesouro_segundo_bimestre = 0
		total_tesouro_terceiro_bimestre = 0
		total_tesouro_quarto_bimestre = 0
		total_tesouro_quinto_bimestre = 0
		total_tesouro_sexto_bimestre = 0

		total_outros_primeiro_bimestre = 0
		total_outros_segundo_bimestre = 0
		total_outros_terceiro_bimestre = 0
		total_outros_quarto_bimestre = 0
		total_outros_quinto_bimestre = 0
		total_outros_sexto_bimestre = 0

		total_tesouro = 0
		total_outros = 0


		fontes_de_recurso = loa_atual.fontes_de_recursos.order(:codigo)
			fontes_de_recurso.each do |fonte|
				if fonte.total_da_receita > 0
					valor_total_da_fonte = 0

					if unidade_orcamentaria_id.to_i > 0
						receitas = fonte.orcamento_da_receita.joins(:unidade_orcamentaria_por_natureza_da_receita).where(loa_unidades_orcamentarias_por_natureza_da_receita: {unidade_orcamentaria_id: unidade_orcamentaria_id})
					else
						receitas = fonte.orcamento_da_receita
					end

					receitas.each do |receita|
						valor_total_da_fonte += receita.valor.to_f > 0 ? receita.valor.to_f : 0
					end

					if percentuais.sum > 0
						dados = {
							fonte: fonte.codigo_completo,
							tipo_de_arrecadacao: fonte.grupo_da_fonte_de_recursos.descricao == "Recursos do Tesouro" ? "T" : "O",
							titulo: fonte.tipo_de_arrecadacao.humanize + ' - ' + fonte.descricao,
							primeiro_bimestre: (valor_total_da_fonte.to_f * percentuais[0].to_f/100),
							segundo_bimestre: (valor_total_da_fonte.to_f * percentuais[1].to_f / 100),
							terceiro_bimestre: (valor_total_da_fonte.to_f * percentuais[2].to_f / 100),
							quarto_bimestre: (valor_total_da_fonte.to_f * percentuais[3].to_f / 100),
							quinto_bimestre: (valor_total_da_fonte.to_f * percentuais[4].to_f / 100),
							sexto_bimestre: (valor_total_da_fonte.to_f * percentuais[5].to_f / 100),
							total: valor_total_da_fonte
						}
					else
							dados = {
								fonte: fonte.codigo_completo,
								tipo_de_arrecadacao: fonte.grupo_da_fonte_de_recursos.descricao == "Recursos do Tesouro" ? "T" : "O",
								titulo: fonte.tipo_de_arrecadacao.humanize + ' - ' + fonte.descricao,
								primeiro_bimestre: (valor_total_da_fonte.to_f/6),
								segundo_bimestre: (valor_total_da_fonte.to_f/6),
								terceiro_bimestre: (valor_total_da_fonte.to_f/6),
								quarto_bimestre: (valor_total_da_fonte.to_f/6),
								quinto_bimestre: (valor_total_da_fonte.to_f/6),
								sexto_bimestre: (valor_total_da_fonte.to_f/6),
								total: valor_total_da_fonte,
							}
					end

			dados_relatorio << dados
			end
		end

		dados_relatorio.each do |dado|
			total_outros_primeiro_bimestre += dado[:primeiro_bimestre] if dado[:tipo_de_arrecadacao] == 'O'
			total_outros_segundo_bimestre += dado[:segundo_bimestre].to_f if dado[:tipo_de_arrecadacao] == 'O'
			total_outros_terceiro_bimestre += dado[:terceiro_bimestre].to_f if dado[:tipo_de_arrecadacao] == 'O'
			total_outros_quarto_bimestre += dado[:quarto_bimestre].to_f if dado[:tipo_de_arrecadacao] == 'O'
			total_outros_quinto_bimestre += dado[:quinto_bimestre].to_f if dado[:tipo_de_arrecadacao] == 'O'
			total_outros_sexto_bimestre += dado[:sexto_bimestre].to_f if dado[:tipo_de_arrecadacao] == 'O'
			total_outros +=  dado[:total].to_f if dado[:tipo_de_arrecadacao] == 'O'

			total_tesouro_primeiro_bimestre += dado[:primeiro_bimestre].to_f if dado[:tipo_de_arrecadacao] == 'T'
			total_tesouro_segundo_bimestre += dado[:segundo_bimestre].to_f if dado[:tipo_de_arrecadacao] == 'T'
			total_tesouro_terceiro_bimestre += dado[:terceiro_bimestre].to_f if dado[:tipo_de_arrecadacao] == 'T'
			total_tesouro_quarto_bimestre += dado[:quarto_bimestre].to_f if dado[:tipo_de_arrecadacao] == 'T'
			total_tesouro_quinto_bimestre += dado[:quinto_bimestre].to_f if dado[:tipo_de_arrecadacao] == 'T'
			total_tesouro_sexto_bimestre += dado[:sexto_bimestre].to_f if dado[:tipo_de_arrecadacao] == 'T'
			total_tesouro +=  dado[:total].to_f if dado[:tipo_de_arrecadacao]  == 'T'
		end

		dados_relatorio << {
			fonte: '',
			titulo: 'Total Fonte de recursos do tesouro',
			primeiro_bimestre: total_tesouro_primeiro_bimestre ,
			segundo_bimestre: total_tesouro_segundo_bimestre,
			terceiro_bimestre: total_tesouro_terceiro_bimestre,
			quarto_bimestre: total_tesouro_quarto_bimestre,
			quinto_bimestre: total_tesouro_quinto_bimestre,
			sexto_bimestre:  total_tesouro_sexto_bimestre,
			total: total_tesouro,
			estilo: {negrito: true}
		}

		dados_relatorio << {
			fonte: '',
			titulo: 'Total Demais fontes',
			primeiro_bimestre: total_outros_primeiro_bimestre,
			segundo_bimestre: total_outros_segundo_bimestre,
			terceiro_bimestre: total_outros_terceiro_bimestre,
			quarto_bimestre: total_outros_quarto_bimestre,
			quinto_bimestre: total_outros_quinto_bimestre,
			sexto_bimestre:  total_outros_sexto_bimestre,
			total: total_outros,
			estilo: {negrito: true}
		}

		dados_relatorio << {
			fonte: '',
			titulo: 'Total geral das fontes',
			primeiro_bimestre: total_tesouro_primeiro_bimestre.to_f + total_outros_primeiro_bimestre.to_f,
			segundo_bimestre: total_tesouro_segundo_bimestre.to_f + total_outros_segundo_bimestre.to_f,
			terceiro_bimestre: total_tesouro_terceiro_bimestre.to_f + total_outros_terceiro_bimestre.to_f,
			quarto_bimestre: total_tesouro_quarto_bimestre.to_f + total_outros_quarto_bimestre.to_f,
			quinto_bimestre: total_tesouro_quinto_bimestre.to_f + total_outros_quinto_bimestre.to_f,
			sexto_bimestre: total_tesouro_sexto_bimestre.to_f + total_outros_sexto_bimestre.to_f,
			total: total_tesouro.to_f + total_outros.to_f,
			estilo: {negrito: true}
		}
		return dados_relatorio
	end

end
