diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java index 8bde126ff..13a652aee 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/FiscalHibernateDAO.java @@ -58,6 +58,8 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO 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 String CODIGO_INDICADOR_CONTR_PREVIDENCIARIA = "00000060"; + private static Logger log = Logger.getLogger(FiscalHibernateDAO.class); @Autowired @@ -1383,7 +1385,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO registro.setValorIsentas(totalIsenta); registro.setEstabelecimentoECF(rs.getString("codestabelecimentoimpressora")); registro.setNumeroSerie(rs.getString("numserie")); - registro.setInfoPadraoBilhetePassagem("00000060"); + registro.setInfoPadraoBilhetePassagem(CODIGO_INDICADOR_CONTR_PREVIDENCIARIA); retorno.add(registro); } @@ -1544,6 +1546,10 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO BigDecimal tributacao_importacao = rs.getBigDecimal("tributacao_importacao"); BigDecimal valorBaseCalculoICMS = BigDecimal.ZERO; + if ("30|40|41|50|60".contains(registro.getCodigoSituacaoTribColunaB().toString())) { + tributacao_importacao = BigDecimal.ZERO; + } + if (red_base_calc_icms != null) { valorBaseCalculoICMS = valorTotal.subtract(valorTotal.multiply(red_base_calc_icms.divide(BigDecimal.valueOf(100d)))); } else { @@ -1607,7 +1613,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO sb.append(" (CASE WHEN s.aliasorigen_id IS NULL THEN ei.porcredmunicipal ELSE eis.porcredmunicipal END) as porc_red_municipal,"); sb.append(" (CASE WHEN s.aliasorigen_id IS NULL THEN ei.porcredestadual ELSE eis.porcredestadual END) as porc_red_estadual,"); sb.append(" (CASE WHEN s.aliasorigen_id IS NULL THEN ei.tributacaoimportacao ELSE eis.tributacaoimportacao END) as tributacao_importacao,"); - sb.append(" (CASE WHEN (nvl((CASE WHEN s.aliasorigen_id IS NULL THEN pos.regionmetropolitana_id ELSE po.regionmetropolitana_id END),-1) = nvl((CASE WHEN s.aliasdestino_id IS NULL THEN pds.regionmetropolitana_id ELSE pd.regionmetropolitana_id END),-2)) THEN 1 ELSE 0 END) as isenta,"); + sb.append(" (CASE WHEN (nvl((CASE WHEN s.aliasorigen_id IS NULL THEN po.regionmetropolitana_id ELSE pos.regionmetropolitana_id END),-1) = nvl((CASE WHEN s.aliasdestino_id IS NULL THEN pd.regionmetropolitana_id ELSE pds.regionmetropolitana_id END),-2)) THEN 1 ELSE 0 END) as isenta,"); sb.append(" r4.impsubtotal as valortotal"); sb.append(" from fiscal_r4 r4"); sb.append(" join fiscal_r2 r2 on r2.numserie20 = r4.numserie20 and r2.datamov = r4.datamov"); @@ -1724,6 +1730,8 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO String key = ecf + "|" + datamov + "|" + ufDestino + "|" + cfop.toString() + "|" + codigoSituacaoTribColunaB.toString(); + log.info(key.toString()); + if (group.containsKey(key)) { registro = group.get(key); @@ -1746,6 +1754,8 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO registro.setRedutorBaseCalculoIcms(red_base_calc_icms); registro.setRedutorMunicipalIcms(porc_red_municipal); registro.setRedutorEstadualIcms(porc_red_estadual); + + group.put(key, registro); } registro.setValorTotal(valorTotal.setScale(2, BigDecimal.ROUND_HALF_EVEN)); @@ -1753,8 +1763,6 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO registro.setValorICMSDebitado(valorICMSDebitado.setScale(2, BigDecimal.ROUND_HALF_EVEN)); registro.setValorICMSIsento(valorICMSIsento.setScale(2, BigDecimal.ROUND_HALF_EVEN)); registro.setValorICMSOutros(valorICMSOutros.setScale(2, BigDecimal.ROUND_HALF_EVEN)); - - group.put(key, registro); } for (Map.Entry entry : group.entrySet()) { @@ -2077,7 +2085,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO return retorno; } - @Override + @Override @Deprecated public List buscarRegistroRMDTipoBPS(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado) { List retorno = new ArrayList(); @@ -2212,7 +2220,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO return retorno; } - @Override + @Override @Deprecated public List buscarRegistroRMDTipoDBP(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado) { List retorno = new ArrayList(); @@ -2456,7 +2464,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO ResultSet rs = ps.executeQuery(); - ExportacaoRMDTipoSeqBPS registroBPR = null; + ExportacaoRMDTipoSeqBPS registroBPS = null; ExportacaoRMDTipoSeqDBP registroDBP = null; Integer numeroInicial = 0; @@ -2499,20 +2507,21 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO dataEmissaoControle = dataEmissao; cfopControle = cfop; - registroBPR = new ExportacaoRMDTipoSeqBPS(); - registroBPR.setEspecie("BPR"); - registroBPR.setNumeroInicial(numeroInicial); - registroBPR.setCodigoEstabelecimento(codigoEstabelecimento); - registroBPR.setNumeroAIDF(numeroAIDF); - registroBPR.setSerieAIDF(serieAIDF); - registroBPR.setSubSerieAIDF(subSerieAIDF); - registroBPR.setNumeroAIDFRMD(numeroAIDFRMD); - registroBPR.setSerieAIDFRMD(serieAIDFRMD); - registroBPR.setSubSerieAIDFRMD(subSerieAIDFRMD); - registroBPR.setNumeroRMD(numeroRMD); - registroBPR.setDataEmissao(dataEmissao); - - listaBPS.add(registroBPR); + registroBPS = new ExportacaoRMDTipoSeqBPS(); + registroBPS.setEspecie("BPR"); + registroBPS.setNumeroInicial(numeroInicial); + registroBPS.setCodigoEstabelecimento(codigoEstabelecimento); + registroBPS.setNumeroAIDF(numeroAIDF); + registroBPS.setSerieAIDF(serieAIDF); + registroBPS.setSubSerieAIDF(subSerieAIDF); + registroBPS.setNumeroAIDFRMD(numeroAIDFRMD); + registroBPS.setSerieAIDFRMD(serieAIDFRMD); + registroBPS.setSubSerieAIDFRMD(subSerieAIDFRMD); + registroBPS.setNumeroRMD(numeroRMD); + registroBPS.setDataEmissao(dataEmissao); + registroBPS.setInfoPadraoBilhetePassagem(CODIGO_INDICADOR_CONTR_PREVIDENCIARIA); + + listaBPS.add(registroBPS); quantidadeTotal = 0; quantidadeCancelado = 0; @@ -2530,19 +2539,19 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO numeroFinal = numeroFormulario; - registroBPR.setNumeroFinal(numeroFinal); + registroBPS.setNumeroFinal(numeroFinal); - registroBPR.setQuantidadeTotal(quantidadeTotal); - registroBPR.setQuantidadeCancelados(quantidadeCancelado); - registroBPR.setValorTotal(totalizador); + registroBPS.setQuantidadeTotal(quantidadeTotal); + registroBPS.setQuantidadeCancelados(quantidadeCancelado); + registroBPS.setValorTotal(totalizador); // DBP registroDBP = new ExportacaoRMDTipoSeqDBP(ufDestino); - Integer indice = registroBPR.getListaDBP().indexOf(registroDBP); + Integer indice = registroBPS.getListaDBP().indexOf(registroDBP); if (indice == -1) { - registroBPR.getListaDBP().add(registroDBP); + registroBPS.getListaDBP().add(registroDBP); registroDBP.setCfop(cfop); // IM=5357; Serviço IE= 6357 registroDBP.setUfOrigem(ufOrigem); @@ -2566,7 +2575,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO registroDBP.setValorICMSIsento(BigDecimal.ZERO); registroDBP.setValorICMSOutros(BigDecimal.ZERO); } else { - registroDBP = registroBPR.getListaDBP().get(indice); + registroDBP = registroBPS.getListaDBP().get(indice); } BigDecimal valorBaseCalculoICMS = BigDecimal.ZERO; diff --git a/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/ExportacaoFiscal.java b/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/ExportacaoFiscal.java index b8cf77184..6029663c3 100644 --- a/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/ExportacaoFiscal.java +++ b/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/ExportacaoFiscal.java @@ -576,13 +576,14 @@ public class ExportacaoFiscal { sb.append(formataCaracter(VAZIO, false, 9)).append(SEPARADOR); // Posição 32 sb.append(formataCaracter(VAZIO, false, 8)).append(SEPARADOR); // Posição 33 sb.append(formataCaracter(VAZIO, false, 3)).append(SEPARADOR); // Posição 34 - sb.append(formataCaracter(VAZIO, false, 3)); // Posição 35 + sb.append(formataCaracter(VAZIO, false, 3)).append(SEPARADOR); // Posição 35 sb.append(formataCaracter("N", false, 3)); // Posição 36 writer.print(sb.toString() + UtiliteriasFiscal.QUEBRA_LINHA); } } + @Deprecated private void adicionarRegistroRMDTipoBPS(PrintWriter writer, List listaRegistroRMDTipoBPS) { for (ExportacaoRMDTipoBPS registro : listaRegistroRMDTipoBPS) { Integer codigoEstabelecimento = registro.getCodigoEstabelecimento(); @@ -639,6 +640,7 @@ public class ExportacaoFiscal { } } + @Deprecated private void adicionarRegistroRMDTipoDBP(PrintWriter writer, List listaRegistroRMDTipoDBP) { for (ExportacaoRMDTipoDBP registro : listaRegistroRMDTipoDBP) { String ufDestino = registro.getUfDestino(); @@ -695,7 +697,8 @@ public class ExportacaoFiscal { String serieAIDFRMD = registro.getSerieAIDFRMD(); String subSerieAIDFRMD = registro.getSubSerieAIDFRMD(); Integer numeroRMD = registro.getNumeroRMD(); - + String infoPadraoBilhetePassagem = registro.getInfoPadraoBilhetePassagem(); + StringBuilder sb = new StringBuilder(); sb.append("BPS").append(SEPARADOR); sb.append(String.format("%04d", codigoEstabelecimento)).append(SEPARADOR); @@ -728,7 +731,7 @@ public class ExportacaoFiscal { sb.append("01").append(SEPARADOR); sb.append(formataCaracter(VAZIO, false, 3)).append(SEPARADOR); // Posição 30 sb.append(formataCaracter(VAZIO, false, 3)).append(SEPARADOR); // Posição 31 - sb.append(formataCaracter(VAZIO, false, 8)); // Posição 32 + sb.append(formataCaracter(infoPadraoBilhetePassagem, false, 8)); writer.print(sb.toString() + UtiliteriasFiscal.QUEBRA_LINHA); diff --git a/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/vo/ExportacaoRMDTipoSeqBPS.java b/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/vo/ExportacaoRMDTipoSeqBPS.java index 363c54a9a..36f4fab92 100644 --- a/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/vo/ExportacaoRMDTipoSeqBPS.java +++ b/src/com/rjconsultores/ventaboletos/utilerias/exportacaofiscal/vo/ExportacaoRMDTipoSeqBPS.java @@ -20,6 +20,7 @@ public class ExportacaoRMDTipoSeqBPS { private String subSerieAIDFRMD; private Integer numeroRMD; private Integer quantidadeTotal; + private String infoPadraoBilhetePassagem; private List listaDBP; public ExportacaoRMDTipoSeqBPS() { @@ -161,6 +162,14 @@ public class ExportacaoRMDTipoSeqBPS { this.quantidadeTotal = quantidadeTotal; } + public String getInfoPadraoBilhetePassagem() { + return infoPadraoBilhetePassagem; + } + + public void setInfoPadraoBilhetePassagem(String infoPadraoBilhetePassagem) { + this.infoPadraoBilhetePassagem = infoPadraoBilhetePassagem; + } + public List getListaDBP() { return listaDBP; }