class GerarRelatorioAjusteEstoqueON extends BaseBusiness {

	@SuppressWarnings({ "rawtypes", "unchecked"})
	public String gerarCSVRelatorioAjusteEstoque(Date dtCompetencia,
			List<String> siglasTipoMovimento) throws IOException, ApplicationBusinessException {
		List<RelatorioAjusteEstoqueVO> listaDados = getSceMovimentoMaterialDAO().pesquisarDadosRelatorioAjusteEstoque(dtCompetencia, siglasTipoMovimento);
		File file = File.createTempFile(DominioNomeRelatorio.RELATORIO_AJUSTE_ESTOQUE.toString(), EXTENSAO);
		Writer out = new OutputStreamWriter(new FileOutputStream(file), ENCODE);
		Date dataGeracao = null;
		Date dataGeracaoAux = null;
		Double totalAjsts = 0.0;
		Double totalAjste = 0.0;
		NumberFormat df = DecimalFormat.getCurrencyInstance(new Locale("pt","BR"));
		for (RelatorioAjusteEstoqueVO item : listaDados) {
			dataGeracao = br.gov.mec.aghu.core.utils.DateUtil.truncaData(item.getDataGeracao());
			if(!dataGeracao.equals(dataGeracaoAux)){
				out.write("\n\nDT GERAÇÃO: " + br.gov.mec.aghu.core.utils.DateUtil.obterDataFormatada(dataGeracao , "dd/MM/yyyy") +"\n\n");
				out.write("GR" + SEPARADOR + "CÓDIGO" + SEPARADOR + "NOME MATERIAL" + SEPARADOR + "QTDE AJ" + SEPARADOR + 
						  "VALOR UNIT" + SEPARADOR + "VALOR AJST" + SEPARADOR + "TIPO" + SEPARADOR + "MOTIVO AJUSTE\n");
				dataGeracaoAux = dataGeracao;
			}
			out.write(item.getCodigoGrupoMaterial() + SEPARADOR + item.getCodigoMaterial() + SEPARADOR + item.getNomeMaterial() + SEPARADOR +
					item.getQuantidadeAjuste() + SEPARADOR + df.format(item.getValorUnitario()) + SEPARADOR + df.format(item.getValorAjuste()) + SEPARADOR +
					item.getSiglaTipoMovimento() + SEPARADOR + item.getDescricaoMotivoMovimento() +"\n");
			if(getParametroFacade().buscarAghParametro(AghuParametrosEnum.P_SIGLA_TIPO_MOVIMENTO_AJUSTE_MENOS).getVlrTexto().equals(item.getSiglaTipoMovimento())){
				totalAjsts += item.getValorAjuste();
			}else if(getParametroFacade().buscarAghParametro(AghuParametrosEnum.P_SIGLA_TIPO_MOVIMENTO_AJUSTE_MAIS).getVlrTexto().equals(item.getSiglaTipoMovimento())){
				totalAjste += item.getValorAjuste();
			}
		}
		
		out.write("\n\nTOTAL AJSTS: "+df.format(totalAjsts)+"   "+"TOTAL AJSTE: "+df.format(totalAjste));
		out.write("\n\nVALOR TOTAL POR MOTIVO DE AJUSTE DE ESTOQUE\n");
		
		out.write("MOTIVO" + SEPARADOR + "VALOR TOTAL\n");
		for(RelatorioAjusteEstoqueVO item : listaDados){
			out.write(item.getDescricaoMotivoMovimento()+ SEPARADOR + df.format(item.getValorAjuste())+"\n");  
		}
		
		out.flush();
		out.close();
		
		return file.getAbsolutePath();
	}

}