From 4b7747719ab5829533ff64bd6d342adfc2dbb3a9 Mon Sep 17 00:00:00 2001 From: julio Date: Tue, 1 Aug 2017 14:21:49 +0000 Subject: [PATCH] fixes bug #9386 git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@72115 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../dao/hibernate/FiscalHibernateDAO.java | 117 ++++++++++++++---- .../utilerias/fiscal/vo/FiscalRdi.java | 46 ------- .../utilerias/fiscal/vo/RdiValidacion.java | 85 +++++++++++++ 3 files changed, 175 insertions(+), 73 deletions(-) create mode 100644 src/com/rjconsultores/ventaboletos/utilerias/fiscal/vo/RdiValidacion.java diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java index f7d24ddcf..970344c43 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java @@ -47,6 +47,7 @@ import com.rjconsultores.ventaboletos.utilerias.exportacaofiscal.vo.ExportacaoRM import com.rjconsultores.ventaboletos.utilerias.exportacaofiscal.vo.ExportacaoRMDTipoSeqDBP; import com.rjconsultores.ventaboletos.utilerias.fiscal.vo.DetalhadoFiscal; import com.rjconsultores.ventaboletos.utilerias.fiscal.vo.FiscalRdi; +import com.rjconsultores.ventaboletos.utilerias.fiscal.vo.RdiValidacion; import com.rjconsultores.ventaboletos.utilerias.impressaormd.vo.DetalhadoRMD; import com.rjconsultores.ventaboletos.utilerias.impressaormd.vo.ImpressaoRMD; import com.rjconsultores.ventaboletos.vo.impressaofiscal.ImportacionFiscalReducaoZVO; @@ -62,6 +63,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO private static final String DATE_FORMAT_FISCAL = "yyyyMMdd"; private static final String DATE_FORMAT_DMYHMS = "dd/MM/yyyy hh:mm:ss"; private static final String DATE_FORMAT_DMY = "dd/MM/yyyy"; + private static final BigDecimal ZERO = BigDecimal.ZERO; private static final String CODIGO_INDICADOR_CONTR_PREVIDENCIARIA = "00000060"; @@ -3872,7 +3874,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO List list = montaRelatorioRDI(connection, inicio, fim, empresaId, ufs, false); list.addAll(montaRelatorioRDI(connection, inicio, fim, empresaId, ufs, true)); - List rdis = calcularRelatorioRDI(list); + List rdis = calcularRelatorioRDI(list, isReceitaTerceiros); return agrupaRdi(rdis); } @@ -3890,31 +3892,86 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO int index = aux.indexOf(atual); FiscalRdi agr = aux.get(index); - agr.setQuantBilhetes(agr.getQuantBilhetes() == null ? BigDecimal.ZERO : agr.getQuantBilhetes().add(BigDecimal.ONE)); - agr.setTarifa(agr.getTarifa() == null ? BigDecimal.ZERO : agr.getTarifa().add(detail.getTarifa() == null ? BigDecimal.ZERO : detail.getTarifa())); - agr.setSeguro(agr.getSeguro() == null ? BigDecimal.ZERO : agr.getSeguro().add(detail.getSeguro() == null ? BigDecimal.ZERO : detail.getSeguro())); - agr.setTxEmbarque(agr.getTxEmbarque() == null ? BigDecimal.ZERO : agr.getTxEmbarque().add(detail.getTxEmbarque() == null ? BigDecimal.ZERO : detail.getTxEmbarque())); - agr.setPedagio(agr.getPedagio() == null ? BigDecimal.ZERO : agr.getPedagio().add(detail.getPedagio() == null ? BigDecimal.ZERO : detail.getPedagio())); - agr.setPassagem(agr.getPassagem() == null ? BigDecimal.ZERO : agr.getPassagem().add(detail.getPassagem() == null ? BigDecimal.ZERO : detail.getPassagem())); - agr.setIsentos(agr.getIsentos() == null ? BigDecimal.ZERO : agr.getIsentos().add(detail.getIsentos() == null ? BigDecimal.ZERO : detail.getIsentos())); - agr.setOutros(agr.getOutros() == null ? BigDecimal.ZERO : agr.getOutros().add(detail.getOutros() == null ? BigDecimal.ZERO : detail.getOutros())); - agr.setRbc(detail.getRbc() == null ? BigDecimal.ZERO : detail.getRbc()); - agr.setBaseCalculo(agr.getBaseCalculo() == null ? BigDecimal.ZERO : agr.getBaseCalculo().add(detail.getBaseCalculo() == null ? BigDecimal.ZERO : detail.getBaseCalculo())); - agr.setAliquota(detail.getAliquota() == null ? BigDecimal.ZERO : detail.getAliquota()); - agr.setIcms(agr.getIcms() == null ? BigDecimal.ZERO : agr.getIcms().add(detail.getIcms() == null ? BigDecimal.ZERO : detail.getIcms())); - agr.setCp(detail.getCp() == null ? BigDecimal.ZERO : detail.getCp()); - agr.setCredPres(agr.getCredPres() == null ? BigDecimal.ZERO : agr.getCredPres().add(detail.getCredPres() == null ? BigDecimal.ZERO : detail.getCredPres())); - agr.setIcmsRec(agr.getIcmsRec() == null ? BigDecimal.ZERO : agr.getIcmsRec().add(detail.getIcmsRec() == null ? BigDecimal.ZERO : detail.getIcmsRec())); - + montarParametros(agr, detail); aux.set(index, agr); } + List validacion = new ArrayList(); + for (FiscalRdi detail : aux) { + + RdiValidacion rv = new RdiValidacion(detail.getEstado()); + if (!validacion.contains(rv)) { + rv = new RdiValidacion(detail.getEstado()); + validacion.add(rv); + } + + int indice = validacion.indexOf(rv); + RdiValidacion rvAux = validacion.get(indice); + + if (detail.getTipoReceita().equals("REC") && detail.getTipoViagem().equals("IM")) + rvAux.setTemIMRec(true); + + if (detail.getTipoReceita().equals("DEV") && detail.getTipoViagem().equals("IM")) + rvAux.setTemIMDev(true); + + if (detail.getTipoReceita().equals("REC") && detail.getTipoViagem().equals("IE")) + rvAux.setTemIERec(true); + + if (detail.getTipoReceita().equals("DEV") && detail.getTipoViagem().equals("IE")) + rvAux.setTemIEDev(true); + + validacion.set(indice, rvAux); + } + + for (RdiValidacion val : validacion) { + + if (!val.isTemIMRec()) { + FiscalRdi rdiAux = new FiscalRdi(val.getEstado(), "IM", "REC"); + aux.add(montarParametros(rdiAux, new FiscalRdi())); + } + + if (!val.isTemIMDev()) { + FiscalRdi rdiAux = new FiscalRdi(val.getEstado(), "IM", "DEV"); + aux.add(montarParametros(rdiAux, new FiscalRdi())); + } + + if (!val.isTemIERec()) { + FiscalRdi rdiAux = new FiscalRdi(val.getEstado(), "IE", "REC"); + aux.add(montarParametros(rdiAux, new FiscalRdi())); + } + + if (!val.isTemIEDev()) { + FiscalRdi rdiAux = new FiscalRdi(val.getEstado(), "IE", "DEV"); + aux.add(montarParametros(rdiAux, new FiscalRdi())); + } + } + Collections.sort(aux); return aux; } - private List calcularRelatorioRDI(List list) { + private FiscalRdi montarParametros(FiscalRdi agr, FiscalRdi detail) { + agr.setQuantBilhetes(agr.getQuantBilhetes() == null ? BigDecimal.ZERO : agr.getQuantBilhetes().add(BigDecimal.ONE)); + agr.setTarifa(agr.getTarifa() == null ? BigDecimal.ZERO : agr.getTarifa().add(detail.getTarifa() == null ? BigDecimal.ZERO : detail.getTarifa())); + agr.setSeguro(agr.getSeguro() == null ? BigDecimal.ZERO : agr.getSeguro().add(detail.getSeguro() == null ? BigDecimal.ZERO : detail.getSeguro())); + agr.setTxEmbarque(agr.getTxEmbarque() == null ? BigDecimal.ZERO : agr.getTxEmbarque().add(detail.getTxEmbarque() == null ? BigDecimal.ZERO : detail.getTxEmbarque())); + agr.setPedagio(agr.getPedagio() == null ? BigDecimal.ZERO : agr.getPedagio().add(detail.getPedagio() == null ? BigDecimal.ZERO : detail.getPedagio())); + agr.setPassagem(agr.getPassagem() == null ? BigDecimal.ZERO : agr.getPassagem().add(detail.getPassagem() == null ? BigDecimal.ZERO : detail.getPassagem())); + agr.setIsentos(agr.getIsentos() == null ? BigDecimal.ZERO : agr.getIsentos().add(detail.getIsentos() == null ? BigDecimal.ZERO : detail.getIsentos())); + agr.setOutros(agr.getOutros() == null ? BigDecimal.ZERO : agr.getOutros().add(detail.getOutros() == null ? BigDecimal.ZERO : detail.getOutros())); + agr.setRbc(detail.getRbc() == null ? BigDecimal.ZERO : detail.getRbc()); + agr.setBaseCalculo(agr.getBaseCalculo() == null ? BigDecimal.ZERO : agr.getBaseCalculo().add(detail.getBaseCalculo() == null ? BigDecimal.ZERO : detail.getBaseCalculo())); + agr.setAliquota(detail.getAliquota() == null ? BigDecimal.ZERO : detail.getAliquota()); + agr.setIcms(agr.getIcms() == null ? BigDecimal.ZERO : agr.getIcms().add(detail.getIcms() == null ? BigDecimal.ZERO : detail.getIcms())); + agr.setCp(detail.getCp() == null ? BigDecimal.ZERO : detail.getCp()); + agr.setCredPres(agr.getCredPres() == null ? BigDecimal.ZERO : agr.getCredPres().add(detail.getCredPres() == null ? BigDecimal.ZERO : detail.getCredPres())); + agr.setIcmsRec(agr.getIcmsRec() == null ? BigDecimal.ZERO : agr.getIcmsRec().add(detail.getIcmsRec() == null ? BigDecimal.ZERO : detail.getIcmsRec())); + + return agr; + } + + private List calcularRelatorioRDI(List list, boolean isReceitaTerceiros) { List rdis = new ArrayList(); @@ -3932,9 +3989,9 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO BigDecimal icmsRec = BigDecimal.ZERO; if (det.getIsenta()) { - isentos = somarTotalBilhete(det); + isentos = somarTotalBilhete(det, isReceitaTerceiros); } else { - passagem = somarTotalBilhete(det); + passagem = somarTotalBilhete(det, isReceitaTerceiros); if (det.isInterEstadual()) { aliquota = det.getIcmsInterestadual() != null ? det.getIcmsInterestadual() : det.getTributacaoImportacao(); @@ -3969,26 +4026,32 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO tipoViagem = "IM"; } - rdis.add(new FiscalRdi(det.getEstadoOrigem(), tipoViagem, det.getTipoReceita(), det.getTarifa(), - det.getSeguro(), det.getTaxaEmbarque(), det.getPedagio(), passagem, isentos, outros, det.getRedBaseCalcIcms(), - baseCalculo, aliquota, icms, cp, credPres, icmsRec)); + if (isReceitaTerceiros) { + rdis.add(new FiscalRdi(det.getEstadoOrigem(), tipoViagem, det.getTipoReceita(), det.getTarifa(), + det.getSeguro(), det.getTaxaEmbarque(), det.getPedagio(), passagem, isentos, outros, det.getRedBaseCalcIcms(), + baseCalculo, aliquota, icms, cp, credPres, icmsRec)); + } else { + rdis.add(new FiscalRdi(det.getEstadoOrigem(), tipoViagem, det.getTipoReceita(), det.getTarifa(), + ZERO, ZERO, ZERO, passagem, isentos, outros, det.getRedBaseCalcIcms(), + baseCalculo, aliquota, icms, cp, credPres, icmsRec)); + } } return rdis; } - private BigDecimal somarTotalBilhete(DetalhadoFiscal det) { + private BigDecimal somarTotalBilhete(DetalhadoFiscal det, boolean isReceitaTerceiros) { BigDecimal total = BigDecimal.ZERO; total = total.add(det.getTarifa() == null ? BigDecimal.ZERO : det.getTarifa()); - if (det.isInterEstadual() && det.getIndTxembarqueEstadual() || !det.isInterEstadual() && det.getIndTxembarqueMunicipal()) + if (isReceitaTerceiros && (det.isInterEstadual() && det.getIndTxembarqueEstadual() || !det.isInterEstadual() && det.getIndTxembarqueMunicipal())) total = total.add(det.getTaxaEmbarque() == null ? BigDecimal.ZERO : det.getTaxaEmbarque()); - if (det.isInterEstadual() && det.getIndPedagioEstdual() || !det.isInterEstadual() && det.getIndPedagioMunicipal()) + if (isReceitaTerceiros && (det.isInterEstadual() && det.getIndPedagioEstdual() || !det.isInterEstadual() && det.getIndPedagioMunicipal())) total = total.add(det.getPedagio() == null ? BigDecimal.ZERO : det.getPedagio()); - if (det.isInterEstadual() && det.getIndSeguroEstadual() || !det.isInterEstadual() && det.getIndSeguroMunicipal()) + if (isReceitaTerceiros && (det.isInterEstadual() && det.getIndSeguroEstadual() || !det.isInterEstadual() && det.getIndSeguroMunicipal())) total = total.add(det.getSeguro() == null ? BigDecimal.ZERO : det.getSeguro()); return total; diff --git a/src/com/rjconsultores/ventaboletos/utilerias/fiscal/vo/FiscalRdi.java b/src/com/rjconsultores/ventaboletos/utilerias/fiscal/vo/FiscalRdi.java index d5978b066..a42ecd714 100644 --- a/src/com/rjconsultores/ventaboletos/utilerias/fiscal/vo/FiscalRdi.java +++ b/src/com/rjconsultores/ventaboletos/utilerias/fiscal/vo/FiscalRdi.java @@ -4,12 +4,6 @@ import java.math.BigDecimal; public class FiscalRdi implements Comparable { - private BigDecimal totalImEstado; - private BigDecimal totalIEEstado; - private BigDecimal receitaEstado; - private BigDecimal devolucaoEstado; - private BigDecimal liquidoEstado; - private String estado; private String tipoViagem; private String tipoReceita; @@ -205,46 +199,6 @@ public class FiscalRdi implements Comparable { this.icmsRec = icmsRec; } - public BigDecimal getTotalImEstado() { - return totalImEstado; - } - - public void setTotalImEstado(BigDecimal totalImEstado) { - this.totalImEstado = totalImEstado; - } - - public BigDecimal getTotalIEEstado() { - return totalIEEstado; - } - - public void setTotalIEEstado(BigDecimal totalIEEstado) { - this.totalIEEstado = totalIEEstado; - } - - public BigDecimal getReceitaEstado() { - return receitaEstado; - } - - public void setReceitaEstado(BigDecimal receitaEstado) { - this.receitaEstado = receitaEstado; - } - - public BigDecimal getDevolucaoEstado() { - return devolucaoEstado; - } - - public void setDevolucaoEstado(BigDecimal devolucaoEstado) { - this.devolucaoEstado = devolucaoEstado; - } - - public BigDecimal getLiquidoEstado() { - return liquidoEstado; - } - - public void setLiquidoEstado(BigDecimal liquidoEstado) { - this.liquidoEstado = liquidoEstado; - } - @Override public int hashCode() { final int prime = 31; diff --git a/src/com/rjconsultores/ventaboletos/utilerias/fiscal/vo/RdiValidacion.java b/src/com/rjconsultores/ventaboletos/utilerias/fiscal/vo/RdiValidacion.java new file mode 100644 index 000000000..71d4be6d9 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/utilerias/fiscal/vo/RdiValidacion.java @@ -0,0 +1,85 @@ +package com.rjconsultores.ventaboletos.utilerias.fiscal.vo; + +public class RdiValidacion { + + private String estado; + private boolean temIMRec; + private boolean temIMDev; + private boolean temIERec; + private boolean temIEDev; + + public RdiValidacion(String estado) { + super(); + this.estado = estado; + this.temIMRec = false; + this.temIMDev = false; + this.temIERec = false; + this.temIEDev = false; + } + + public String getEstado() { + return estado; + } + + public void setEstado(String estado) { + this.estado = estado; + } + + public boolean isTemIMRec() { + return temIMRec; + } + + public void setTemIMRec(boolean temIMRec) { + this.temIMRec = temIMRec; + } + + public boolean isTemIMDev() { + return temIMDev; + } + + public void setTemIMDev(boolean temIMDev) { + this.temIMDev = temIMDev; + } + + public boolean isTemIERec() { + return temIERec; + } + + public void setTemIERec(boolean temIERec) { + this.temIERec = temIERec; + } + + public boolean isTemIEDev() { + return temIEDev; + } + + public void setTemIEDev(boolean temIEDev) { + this.temIEDev = temIEDev; + } + + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + ((estado == null) ? 0 : estado.hashCode()); + return result; + } + + @Override + public boolean equals(Object obj) { + if (this == obj) + return true; + if (obj == null) + return false; + if (getClass() != obj.getClass()) + return false; + RdiValidacion other = (RdiValidacion) obj; + if (estado == null) { + if (other.estado != null) + return false; + } else if (!estado.equals(other.estado)) + return false; + return true; + } + +}