package gcom.relatorio.cobranca; import gcom.cadastro.sistemaparametro.SistemaParametro; import gcom.fachada.Fachada; import gcom.relatorio.ConstantesRelatorios; import gcom.relatorio.RelatorioDataSource; import gcom.seguranca.acesso.usuario.Usuario; import gcom.tarefa.TarefaException; import gcom.tarefa.TarefaRelatorio; import gcom.util.Util; import gcom.util.agendadortarefas.AgendadorTarefas; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; public class RelatorioBoletimMedicaoCobranca extends TarefaRelatorio { private static final long serialVersionUID = 1L; public RelatorioBoletimMedicaoCobranca(Usuario usuario) { super(usuario, ConstantesRelatorios.RELATORIO_BOLETIM_MEDICAO_COBRANCA); } @Deprecated public RelatorioBoletimMedicaoCobranca() { super(null, ""); } /** * < <Descri��o do m�todo>> * */ public Object executar() throws TarefaException { // valor de retorno byte[] retorno = null; FiltrarRelatorioBoletimMedicaoCobrancaHelper relatorioHelper = (FiltrarRelatorioBoletimMedicaoCobrancaHelper) getParametro("filtrarRelatorioBoletimMedicaoCobrancaHelper"); int tipoFormatoRelatorio = (Integer) getParametro("tipoFormatoRelatorio"); // cole��o de beans do relat�rio List relatorioBeans = new ArrayList(); Fachada fachada = Fachada.getInstancia(); Object[] dadosGerais = fachada.pesquisarDadosBoletimMedicaoCobranca( new Integer(relatorioHelper.getMesAnoReferencia()), new Integer(relatorioHelper.getGrupoCobranca())); RelatorioBoletimMedicaoCobrancaBean relatorioBoletimMedicaoCobrancaBean = null; Collection<RelatorioBoletimMedicaoCobrancaHelper> colecaoHelperExecutado = fachada.pesquisarItensServico(relatorioHelper, "executado"); Collection<RelatorioBoletimMedicaoCobrancaHelper> colecaoHelperDesconto = fachada.pesquisarItensServico(relatorioHelper, "desconto"); Collection<RelatorioBoletimMedicaoCobrancaHelper> colecaoHelperSucesso = fachada.pesquisarItensServico(relatorioHelper, "sucesso"); Collection<RelatorioBoletimMedicaoCobrancaBean> colecaoBeanExecutado = this .inicializarBeanRelatorioExecutado(colecaoHelperExecutado); Collection<RelatorioBoletimMedicaoCobrancaBean> colecaoBeanDesconto = this .inicializarBeanRelatorioDesconto(colecaoHelperDesconto); Collection<RelatorioBoletimMedicaoCobrancaBean> colecaoBeanSucesso = this .inicializarBeanRelatorioSucesso(colecaoHelperSucesso); List<RelatorioBoletimMedicaoCobrancaBean> colecaoBean = new ArrayList(); if (colecaoBeanExecutado != null && !colecaoBeanExecutado.isEmpty()) { colecaoBean.addAll(colecaoBeanExecutado); } if (colecaoBeanDesconto != null && !colecaoBeanDesconto.isEmpty()) { colecaoBean.addAll(colecaoBeanDesconto); } if (colecaoBeanSucesso != null && !colecaoBeanSucesso.isEmpty()) { colecaoBean.addAll(colecaoBeanSucesso); } if (colecaoBean == null || colecaoBean.isEmpty()) { relatorioBoletimMedicaoCobrancaBean = new RelatorioBoletimMedicaoCobrancaBean(); relatorioBeans.add(relatorioBoletimMedicaoCobrancaBean); } else { relatorioBeans = colecaoBean; } // __________________________________________________________________ // Par�metros do relat�rio Map parametros = new HashMap(); // adiciona os par�metros do relat�rio SistemaParametro sistemaParametro = fachada.pesquisarParametrosDoSistema(); if (dadosGerais != null && dadosGerais[0] != null) { parametros.put("empresa", dadosGerais[0].toString()); } if (dadosGerais != null && dadosGerais[1] != null) { parametros.put("numeroContrato", dadosGerais[1].toString()); } if (dadosGerais != null && dadosGerais[2] != null) { parametros.put("valorTotal", dadosGerais[2]); } parametros.put("imagem", sistemaParametro.getImagemRelatorio()); parametros.put("grupoCobranca", relatorioHelper.getNomeGrupoCobranca()); parametros.put("mesAnoCronograma", Util.formatarAnoMesParaMesAno(relatorioHelper.getMesAnoReferencia())); // cria uma inst�ncia do dataSource do relat�rio RelatorioDataSource ds = new RelatorioDataSource(relatorioBeans); if(colecaoBean != null && colecaoBean.size() > 0){ retorno = gerarRelatorio(ConstantesRelatorios.RELATORIO_BOLETIM_MEDICAO_COBRANCA, parametros, ds, tipoFormatoRelatorio); } else { this.nomeRelatorio = ConstantesRelatorios.RELATORIO_VAZIO; retorno = gerarRelatorio(ConstantesRelatorios.RELATORIO_VAZIO, parametros, ds, tipoFormatoRelatorio); } // retorna o relat�rio gerado return retorno; } private Collection<RelatorioBoletimMedicaoCobrancaBean> inicializarBeanRelatorioExecutado( Collection<RelatorioBoletimMedicaoCobrancaHelper> colecaoHelper) { Collection<RelatorioBoletimMedicaoCobrancaBean> colecaoBean = new ArrayList(); if (colecaoHelper != null && !colecaoHelper.isEmpty()) { Iterator iterator = colecaoHelper.iterator(); while (iterator.hasNext()) { RelatorioBoletimMedicaoCobrancaHelper helper = (RelatorioBoletimMedicaoCobrancaHelper) iterator.next(); RelatorioBoletimMedicaoCobrancaBean bean = new RelatorioBoletimMedicaoCobrancaBean(); Object[] valores = null; BigDecimal valorUnitario = BigDecimal.ZERO, valorItem = BigDecimal.ZERO, quantidade = BigDecimal.ZERO; String unidade = ""; switch (helper.getItemServico().getCodigoConstanteCalculo()) { case 15: case 16: case 17: valores = Fachada.getInstancia().obterSomatorioOSBoletimMedicaoCobranca(helper); if (valores != null) { if (valores[0] != null) { quantidade = (BigDecimal) valores[0]; } if (valores[1] != null) { valorUnitario = (BigDecimal) valores[1]; } if (valores[0] != null && valores[1] != null) { valorItem = quantidade.multiply(valorUnitario); } if (valores[0] != null && valores[1] != null) { unidade = "M�"; } } break; default: valores = Fachada.getInstancia().obterQuantidadeOSBoletimMedicaoCobranca(helper); if (valores != null) { if (valores[0] != null) { quantidade = new BigDecimal((Integer) valores[0]); } if (valores[1] != null) { valorUnitario = (BigDecimal) valores[1]; } if (valores[0] != null && valores[1] != null) { valorItem = quantidade.multiply(valorUnitario); } if (valores[0] != null && valores[1] != null) { unidade = "UND"; } } break; } if (valorUnitario.compareTo(BigDecimal.ZERO) != 0 || valorItem.compareTo(BigDecimal.ZERO) != 0 || quantidade.compareTo(BigDecimal.ZERO) != 0) { bean.setItemDescricao(helper.getItemServico().getDescricao()); bean.setItemCodigo(helper.getItemServico().getCodigoItem().toString()); bean.setGerenciaRegional(helper.getNomeGerenciaRegional()); bean.setLocalidade(helper.getNomeLocalidade()); bean.setUnidadeNegocio(helper.getNomeUnidadeNegocio()); bean.setDataGeracao(Util.formatarData(helper.getDataGeracao())); bean.setQuantidade(quantidade); bean.setValorUnitario(valorUnitario); bean.setValorItem(valorItem); bean.setColuna01(unidade); bean.setTotalizacao("Servi�os Executados"); bean.setNomeColuna01("Unidade do Item"); bean.setNomeColuna02("Valor Unit�rio"); bean.setNomeColuna03("Valor Item"); colecaoBean.add(bean); } } } return colecaoBean; } private Collection<RelatorioBoletimMedicaoCobrancaBean> inicializarBeanRelatorioDesconto( Collection<RelatorioBoletimMedicaoCobrancaHelper> colecaoHelper) { Collection<RelatorioBoletimMedicaoCobrancaBean> colecaoBean = new ArrayList(); if (colecaoHelper != null && !colecaoHelper.isEmpty()) { Iterator iterator = colecaoHelper.iterator(); while (iterator.hasNext()) { RelatorioBoletimMedicaoCobrancaHelper helper = (RelatorioBoletimMedicaoCobrancaHelper) iterator.next(); RelatorioBoletimMedicaoCobrancaBean bean = new RelatorioBoletimMedicaoCobrancaBean(); Object[] valores = null; BigDecimal valorUnitario = BigDecimal.ZERO, valorItem = BigDecimal.ZERO, quantidade = BigDecimal.ZERO; String unidade = ""; switch (helper.getItemServico().getCodigoConstanteCalculo()) { case 1: case 2: case 5: valores = Fachada.getInstancia().obterQuantidadeOSBoletimMedicaoCobrancaDesconto(helper); break; default: break; } if (valores != null) { if (valores[0] != null) { quantidade = new BigDecimal((Integer) valores[0]); } if (valores[1] != null) { valorUnitario = (BigDecimal) valores[1]; } if (valores[0] != null && valores[1] != null) { valorItem = valorItem.subtract(quantidade.multiply(valorUnitario)); } if (valores[0] != null && valores[1] != null) { unidade = "UND"; } } if (valorUnitario.compareTo(BigDecimal.ZERO) != 0 || valorItem.compareTo(BigDecimal.ZERO) != 0 || quantidade.compareTo(BigDecimal.ZERO) != 0) { bean.setItemDescricao(helper.getItemServico().getDescricao()); bean.setItemCodigo(helper.getItemServico().getCodigoItem().toString()); bean.setGerenciaRegional(helper.getNomeGerenciaRegional()); bean.setLocalidade(helper.getNomeLocalidade()); bean.setUnidadeNegocio(helper.getNomeUnidadeNegocio()); bean.setDataGeracao(Util.formatarData(helper.getDataGeracao())); bean.setQuantidade(quantidade); bean.setValorUnitario(valorUnitario); bean.setValorItem(valorItem); bean.setColuna01(unidade); bean.setTotalizacao("Descontos Efetuados"); bean.setNomeColuna01("Unidade do Item"); bean.setNomeColuna02("Valor Unit�rio"); bean.setNomeColuna03("Valor Item"); colecaoBean.add(bean); } } } return colecaoBean; } private Collection<RelatorioBoletimMedicaoCobrancaBean> inicializarBeanRelatorioSucesso( Collection<RelatorioBoletimMedicaoCobrancaHelper> colecaoHelper) { Collection<RelatorioBoletimMedicaoCobrancaBean> colecaoBean = new ArrayList(); if (colecaoHelper != null && !colecaoHelper.isEmpty()) { Iterator iterator = colecaoHelper.iterator(); while (iterator.hasNext()) { RelatorioBoletimMedicaoCobrancaHelper helper = (RelatorioBoletimMedicaoCobrancaHelper) iterator.next(); RelatorioBoletimMedicaoCobrancaBean bean = new RelatorioBoletimMedicaoCobrancaBean(); Object[] valores = Fachada.getInstancia().obterTotalizacaoOSBoletimMedicaoCobrancaSucesso(helper); BigDecimal percentual = BigDecimal.ZERO, valorTotal = BigDecimal.ZERO, valorCalculado = BigDecimal.ZERO, quantidade = BigDecimal.ZERO; if (valores != null) { if (valores[0] != null) { quantidade = new BigDecimal((Integer) valores[0]); } if (valores[1] != null) { percentual = (BigDecimal) valores[1]; } if (valores[2] != null) { valorTotal = (BigDecimal) valores[2]; } if (valores[3] != null) { valorCalculado = (BigDecimal) valores[3]; } } if (percentual.compareTo(BigDecimal.ZERO) != 0 || valorTotal.compareTo(BigDecimal.ZERO) != 0 || valorCalculado.compareTo(BigDecimal.ZERO) != 0 || quantidade.compareTo(BigDecimal.ZERO) != 0) { bean.setItemDescricao("Taxa de Sucesso"); bean.setItemCodigo(null); bean.setGerenciaRegional(helper.getNomeGerenciaRegional()); bean.setLocalidade(helper.getNomeLocalidade()); bean.setUnidadeNegocio(helper.getNomeUnidadeNegocio()); bean.setDataGeracao(Util.formatarData(helper.getDataGeracao())); bean.setQuantidade(quantidade); bean.setColuna01(Util.formatarBigDecimalParaStringComVirgula(percentual)); bean.setValorUnitario(valorTotal); bean.setValorItem(valorCalculado); bean.setTotalizacao("Taxa de Sucesso"); bean.setNomeColuna01("Percentual a ser aplicado"); bean.setNomeColuna02("Valor Recuperado"); bean.setNomeColuna03("Valor Calculado"); colecaoBean.add(bean); } } } return colecaoBean; } @Override public int calcularTotalRegistrosRelatorio() { int retorno = 2; return retorno; } public void agendarTarefaBatch() { AgendadorTarefas.agendarTarefa("RelatorioBoletimMedicaoCobranca", this); } }