class Loa::Relatorios::DemonstrativoConsolidadoDoOrcamentoReceita

	def self.dados orcamento
		dados = []
		total_geral_ordinario = 0
		total_geral_vinculado = 0
		total_geral = orcamento.valor_total_previsto_da_receita.to_f

		orcamento.naturezas_da_receita.where(rubrica: 0).order(:codigo).distinct{|t| t.codigo }.each { |receita|

			total = receita.total_previsto_agregado_por_tipo_de_arrecadacao('0').to_f + receita.total_previsto_agregado_por_tipo_de_arrecadacao('1').to_f

			if total > 0 && !dados.map {|x| x[:descricao]}.include?(receita.descricao)

				if receita.nivel_pai.nil?
					total_geral_ordinario += receita.total_previsto_agregado_por_tipo_de_arrecadacao('0')
					total_geral_vinculado += receita.total_previsto_agregado_por_tipo_de_arrecadacao('1')
				else
					tabulacao = receita.especie != "0" ? 24 : 12
				end
				percentual_ordinario = ((receita.total_previsto_agregado_por_tipo_de_arrecadacao('0') / total_geral) * 100)
				percentual_vinculado = ((receita.total_previsto_agregado_por_tipo_de_arrecadacao('1') / total_geral) * 100)
				dados << {
					descricao: receita.descricao,
					total: total,
					ordinario: receita.total_previsto_agregado_por_tipo_de_arrecadacao('0'),
					vinculado: receita.total_previsto_agregado_por_tipo_de_arrecadacao('1'),
					percentual_ordinario: percentual_ordinario > 0 ? percentual_ordinario : 0,
					percentual_vinculado: percentual_vinculado > 0 ? percentual_vinculado : 0,
					percentual_total: ((total / total_geral) * 100) > 0 ? ((total / total_geral) * 100) : 0,
					estilo:{
						negrito: receita.nivel_pai.nil? ? true : false,
						tabulacao: tabulacao
					}
				}
			end
		}
		dados << {
			descricao: "Total",
			total: total_geral,
			ordinario: total_geral_ordinario,
			vinculado: total_geral_vinculado,
			percentual_ordinario: 100,
			percentual_vinculado: 100,
			percentual_total: 100,
			estilo:{
				negrito: true
			}
		}
		return dados
	end
end
