diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDevolucaoBilhetes.java b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDevolucaoBilhetes.java index 8d815bc2c..d0d68e944 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDevolucaoBilhetes.java +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/impl/RelatorioDevolucaoBilhetes.java @@ -8,6 +8,7 @@ import java.util.Date; import java.util.List; import java.util.Map; +import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import com.rjconsultores.ventaboletos.entidad.Estado; @@ -17,8 +18,10 @@ import com.rjconsultores.ventaboletos.relatorios.utilitarios.DevolucaoBilhetes; import com.rjconsultores.ventaboletos.relatorios.utilitarios.Relatorio; import com.rjconsultores.ventaboletos.utilerias.DateUtil; import com.rjconsultores.ventaboletos.utilerias.UtiliteriasFiscal; +import com.rjconsultores.ventaboletos.utilerias.exportacao.bpe.ExportacaoBPEVo; import com.rjconsultores.ventaboletos.web.utilerias.NamedParameterStatement; +import br.inf.portalfiscal.bpe.TBPe; import net.sf.jasperreports.engine.data.JRBeanCollectionDataSource; public class RelatorioDevolucaoBilhetes extends Relatorio { @@ -94,10 +97,10 @@ public class RelatorioDevolucaoBilhetes extends Relatorio { DevolucaoBilhetes db = new DevolucaoBilhetes(); db.setAidf((String) rset.getObject("AIDF")); db.setNumFolioSistema((String) rset.getObject("NUMFOLIOSISTEMA")); -// db.setSerieSubSerie((String) rset.getObject("SERIE_SUBSERIE")); + // db.setSerieSubSerie((String) rset.getObject("SERIE_SUBSERIE")); db.setSerieSubSerie(isBpe ? (String) rset.getObject("TIPO_SIT") : (String) rset.getObject("SERIE_SUBSERIE")); - + db.setFolio((String) rset.getObject("FOLIO")); db.setUf((String) rset.getObject("UF")); db.setEstado((String) rset.getObject("ESTADO")); @@ -134,84 +137,163 @@ public class RelatorioDevolucaoBilhetes extends Relatorio { db.setIsenta(rset.getInt("ISENTA") == 1); db.setTotalBilhete(rset.getBigDecimal("TOTAL")); + String xml = null; if (isBpe) { db.setChbpe((String) rset.getObject("CHBPE")); db.setChbpeSubstituicao((String) rset.getObject("CHBPE_SUBSTITUICAO")); + + String xml_bpe = rset.getNString("XML_BPE"); + String xml_bpe_2 = rset.getNString("XML_BPE_2"); + String xml_bpe_3 = rset.getNString("XML_BPE_3"); + String[] array = new String[3]; + array[0] = xml_bpe; + array[1] = xml_bpe_2; + array[2] = xml_bpe_3; + + xml = StringUtils.join(array); } db.setValorIcms(BigDecimal.ZERO); db.setValorIsenta(BigDecimal.ZERO); - boolean isEstadual = rset.getInt("IS_ESTADUAL") == 1; - db.setEstadual(isEstadual); - - BigDecimal valorContabil = BigDecimal.ZERO; - if (isEstadual) { - if (db.getIndPedadioEstdual()) { - valorContabil = valorContabil.add(db.getImportepedagio()); - } - if (db.getIndSeguroEstadual()) { - valorContabil = valorContabil.add(db.getImporteseguro()); - } - if (db.getIndTarifaEstadual()) { - valorContabil = valorContabil.add(db.getPrecioPagado()); - } - if (db.getIndTxEmbarqueEstadual()) { - valorContabil = valorContabil.add(db.getImportetaxaembarque()); - } - } else { - if (db.getIndPedagioMunicipal()) { - valorContabil = valorContabil.add(db.getImportepedagio()); - } - if (db.getIndSeguroMunicipal()) { - valorContabil = valorContabil.add(db.getImporteseguro()); - } - if (db.getIndTarifaMunicipal()) { - valorContabil = valorContabil.add(db.getPrecioPagado()); - } - if (db.getIndTxEmbarqueMunicipal()) { - valorContabil = valorContabil.add(db.getImportetaxaembarque()); - } - } - db.setValorContabil(valorContabil); - db.setPorcMunicipal(rset.getBigDecimal("PORC_MUNICIPAL")); db.setPorcEstadual(rset.getBigDecimal("PORC_ESTADUAL")); - BigDecimal baseCalculoIcms = BigDecimal.ZERO; - BigDecimal valorIcms = BigDecimal.ZERO; - if (db.isIsenta()) { - db.setValorIsenta(valorContabil); - } else { + if (isBpe) { - BigDecimal redBaseCalcIcms = BigDecimal.ZERO; + ExportacaoBPEVo exportacaoBPEVo = new ExportacaoBPEVo(); + TBPe tbpe = null; + if (StringUtils.isNotBlank(xml)) + tbpe = exportacaoBPEVo.convertXmlToBpe(xml); - redBaseCalcIcms = db.getPorcredbaseicms() == null ? BigDecimal.ZERO : db.getPorcredbaseicms().divide(UtiliteriasFiscal.CEM); + String estadoOrigem = (StringUtils.isNotBlank(xml) ? tbpe.getInfBPe().getIde().getUFIni().value() : db.getUf()); + String estadoDestino = (StringUtils.isNotBlank(xml) ? tbpe.getInfBPe().getIde().getUFFim().value() : db.getUf()); + boolean isEstadual = !estadoOrigem.equals(estadoDestino); - BigDecimal redutor = valorContabil.multiply(redBaseCalcIcms); - baseCalculoIcms = valorContabil.subtract(redutor); + String vBC = null; + String pICMS = null; + String vICMS = null; + String pRedBC = null; + String vBP = null; - BigDecimal aliquota = BigDecimal.ZERO; - if (isEstadual) { - aliquota = db.getTributacaoimportacao() == null ? db.getIcmsInterestadual() : db.getTributacaoimportacao(); - } else { - aliquota = db.getTributacaoimportacao() == null ? db.getIcmsIntermunicipal() : db.getTributacaoimportacao(); + if (StringUtils.isNotBlank(xml)) { + if (tbpe.getInfBPe().getImp().getICMS().getICMS00() != null) { + vBC = tbpe.getInfBPe().getImp().getICMS().getICMS00().getVBC(); + pICMS = tbpe.getInfBPe().getImp().getICMS().getICMS00().getPICMS(); + vICMS = tbpe.getInfBPe().getImp().getICMS().getICMS00().getVICMS(); + } else if (tbpe.getInfBPe().getImp().getICMS().getICMS20() != null) { + vBC = tbpe.getInfBPe().getImp().getICMS().getICMS20().getVBC(); + pICMS = tbpe.getInfBPe().getImp().getICMS().getICMS20().getPICMS(); + vICMS = tbpe.getInfBPe().getImp().getICMS().getICMS20().getVICMS(); + pRedBC = tbpe.getInfBPe().getImp().getICMS().getICMS20().getPRedBC(); + } + + if (tbpe.getInfBPe().getInfValorBPe() != null) { + vBP = tbpe.getInfBPe().getInfValorBPe().getVBP(); + } } - valorIcms = baseCalculoIcms.multiply(aliquota.divide(UtiliteriasFiscal.CEM)); + + // db.setPrecioBase(rset.getBigDecimal("PRECIOBASE")); + // db.setPrecioPagado(rset.getBigDecimal("PRECIOPAGADO")); + // db.setImporteoutros(rset.getBigDecimal("IMPORTEOUTROS")); + // db.setImportepedagio(rset.getBigDecimal("IMPORTEPEDAGIO")); + // db.setImporteseguro(rset.getBigDecimal("IMPORTESEGURO")); + // db.setImportetaxaembarque(rset.getBigDecimal("IMPORTETAXAEMBARQUE")); + + // BigDecimal valorContabil = StringUtils.isNotBlank(xml) && db.getTotalBilhete().floatValue() > 0 ? new BigDecimal(vBP == null ? "0.0" : vBP) : db.getTotalBilhete(); + BigDecimal valorContabil = new BigDecimal(vBC == null ? "0.0" : vBC); + db.setValorContabil(valorContabil); + + BigDecimal baseCalculoICMS = new BigDecimal(vBC == null ? "0.0" : vBC); + db.setBaseCalculoIcms(baseCalculoICMS); + + BigDecimal icms = new BigDecimal(pICMS == null ? "0.0" : pICMS); + db.setAliquota(icms); + BigDecimal valorIcms = new BigDecimal(vICMS == null ? "0.0" : vICMS); db.setValorIcms(valorIcms); - } + BigDecimal outras = new BigDecimal(pRedBC == null ? "0.0" : pRedBC); + db.setValorOutras(outras); - db.setBaseCalculoIcms(baseCalculoIcms); - db.setEstornoEstadual(BigDecimal.ZERO); - db.setEstornoMunicipal(BigDecimal.ZERO); + db.setEstornoEstadual(BigDecimal.ZERO); + db.setEstornoMunicipal(BigDecimal.ZERO); + + if (isEstadual) { + db.setEstornoEstadual(valorContabil); + } else { + db.setEstornoMunicipal(valorContabil); + } - if (isEstadual) { - db.setEstornoEstadual(valorContabil); } else { - db.setEstornoMunicipal(valorContabil); + + boolean isEstadual = rset.getInt("IS_ESTADUAL") == 1; + db.setEstadual(isEstadual); + + BigDecimal valorContabil = BigDecimal.ZERO; + if (isEstadual) { + if (db.getIndPedadioEstdual()) { + valorContabil = valorContabil.add(db.getImportepedagio()); + } + if (db.getIndSeguroEstadual()) { + valorContabil = valorContabil.add(db.getImporteseguro()); + } + if (db.getIndTarifaEstadual()) { + valorContabil = valorContabil.add(db.getPrecioPagado()); + } + if (db.getIndTxEmbarqueEstadual()) { + valorContabil = valorContabil.add(db.getImportetaxaembarque()); + } + } else { + if (db.getIndPedagioMunicipal()) { + valorContabil = valorContabil.add(db.getImportepedagio()); + } + if (db.getIndSeguroMunicipal()) { + valorContabil = valorContabil.add(db.getImporteseguro()); + } + if (db.getIndTarifaMunicipal()) { + valorContabil = valorContabil.add(db.getPrecioPagado()); + } + if (db.getIndTxEmbarqueMunicipal()) { + valorContabil = valorContabil.add(db.getImportetaxaembarque()); + } + } + db.setValorContabil(valorContabil); + + BigDecimal baseCalculoIcms = BigDecimal.ZERO; + BigDecimal valorIcms = BigDecimal.ZERO; + if (db.isIsenta()) { + db.setValorIsenta(valorContabil); + } else { + + BigDecimal redBaseCalcIcms = BigDecimal.ZERO; + + redBaseCalcIcms = db.getPorcredbaseicms() == null ? BigDecimal.ZERO : db.getPorcredbaseicms().divide(UtiliteriasFiscal.CEM); + + BigDecimal redutor = valorContabil.multiply(redBaseCalcIcms); + baseCalculoIcms = valorContabil.subtract(redutor); + + BigDecimal aliquota = BigDecimal.ZERO; + if (isEstadual) { + aliquota = db.getTributacaoimportacao() == null ? db.getIcmsInterestadual() : db.getTributacaoimportacao(); + } else { + aliquota = db.getTributacaoimportacao() == null ? db.getIcmsIntermunicipal() : db.getTributacaoimportacao(); + } + valorIcms = baseCalculoIcms.multiply(aliquota.divide(UtiliteriasFiscal.CEM)); + db.setValorIcms(valorIcms); + } + + db.setBaseCalculoIcms(baseCalculoIcms); + db.setEstornoEstadual(BigDecimal.ZERO); + db.setEstornoMunicipal(BigDecimal.ZERO); + + if (isEstadual) { + db.setEstornoEstadual(valorContabil); + } else { + db.setEstornoMunicipal(valorContabil); + } } lsDev.add(db); + } setLsDadosRelatorio(lsDev); @@ -257,10 +339,20 @@ public class RelatorioDevolucaoBilhetes extends Relatorio { sql.append(" NVL(EI.INDTARIFAMUNICIPAL,0) AS INDTARIFAMUNICIPAL, NVL(EI.INDSEGUROMUNICIPAL,0) AS INDSEGUROMUNICIPAL, NVL(EI.INDTXEMBARQUEMUNICIPAL,0) AS INDTXEMBARQUEMUNICIPAL, NVL(EI.INDPEDAGIOMUNICIPAL,0) AS INDPEDAGIOMUNICIPAL, "); sql.append(" NVL(EI.INDTARIFAESTADUAL,0) AS INDTARIFAESTADUAL, NVL(EI.INDSEGUROESTADUAL,0) AS INDSEGUROESTADUAL, NVL(EI.INDTXEMBARQUEESTADUAL,0) AS INDTXEMBARQUEESTADUAL, NVL(EI.INDPEDAGIOESTDUAL,0) AS INDPEDAGIOESTDUAL, "); sql.append(" NVL(B.PRECIOPAGADO,0) + NVL(B.IMPORTEOUTROS,0) + NVL(B.IMPORTEPEDAGIO,0) + NVL(B.IMPORTESEGURO,0) + NVL(B.IMPORTETAXAEMBARQUE,0) AS TOTAL "); - sql.append(isBpe ? ", BPE.CHBPE AS CHBPE " : " "); - sql.append(isBpe ? ", BPE.CHBPE_SUBSTITUICAO as CHBPE_SUBSTITUICAO " : " "); - sql.append(isBpe ? ", CASE WHEN BPE.TIPOEVENTO = 110111 THEN 'CANCELAMENTO' " : " "); - sql.append(isBpe ? " WHEN BPE.TIPOEVENTO IS NULL AND BPE.CHBPE_SUBSTITUICAO IS NOT NULL THEN 'SUBTITUIÇÃO' ELSE 'RECUSA' END AS TIPO_SIT " : " "); + + if (isBpe) { + sql.append(", ") + .append(" CASE WHEN BPE.TIPOEVENTO = 110111 THEN 'CANCELAMENTO' "); + sql.append(" WHEN BPE.TIPOEVENTO IS NULL AND BPE.CHBPE_SUBSTITUICAO IS NOT NULL AND BPE.TIPOSUBSTITUICAO = 1 THEN 'REMARCACAO' "); + sql.append(" WHEN BPE.TIPOEVENTO IS NULL AND BPE.CHBPE_SUBSTITUICAO IS NOT NULL AND BPE.TIPOSUBSTITUICAO = 2 THEN 'TRANSFERENCIA' "); + sql.append(" WHEN BPE.TIPOEVENTO IS NULL AND BPE.CHBPE_SUBSTITUICAO IS NOT NULL AND BPE.TIPOSUBSTITUICAO = 3 THEN 'TRANSFERENCIA/REMARCACAO' ELSE '' END AS TIPO_SIT, "); + sql.append(" BPE.CHBPE AS CHBPE, "); + sql.append(" BPE.CHBPE_SUBSTITUICAO AS CHBPE_SUBSTITUICAO, "); + sql.append(" DBMS_LOB.SUBSTR(COALESCE(BPE.XMLREGULAR, BPEORI.XMLREGULAR), 3000) AS XML_BPE, "); + sql.append(" DBMS_LOB.SUBSTR(COALESCE(BPE.XMLREGULAR, BPEORI.XMLREGULAR), 3000, 3001) AS XML_BPE_2, "); + sql.append(" DBMS_LOB.SUBSTR(COALESCE(BPE.XMLREGULAR, BPEORI.XMLREGULAR), 3000, 6001) AS XML_BPE_3 "); + } + sql.append("FROM BOLETO B "); sql.append("INNER JOIN MARCA M ON M.MARCA_ID = B.MARCA_ID AND M.ACTIVO = 1 "); sql.append("INNER JOIN EMPRESA E ON E.EMPRESA_ID = M.EMPRESA_ID "); @@ -275,7 +367,7 @@ public class RelatorioDevolucaoBilhetes extends Relatorio { /* JOIN COM TABELAS DE ALIAS */ sql.append("LEFT JOIN ALIAS_SERVICO S ON S.ORIGEN_ID = B.ORIGEN_ID "); sql.append(" AND S.DESTINO_ID = B.DESTINO_ID AND (S.CORRIDA_ID = B.CORRIDA_ID OR S.CORRIDA_ID IS NULL) "); - sql.append(" AND S.RUTA_ID = B.RUTA_ID "); + sql.append(" AND S.RUTA_ID = B.RUTA_ID AND S.ACTIVO = 1 "); sql.append("LEFT JOIN PARADA POS ON POS.PARADA_ID = S.ALIASORIGEN_ID "); sql.append("LEFT JOIN CIUDAD COS ON COS.CIUDAD_ID = POS.CIUDAD_ID "); sql.append("LEFT JOIN ESTADO EOS ON EOS.ESTADO_ID = COS.ESTADO_ID "); @@ -288,15 +380,20 @@ public class RelatorioDevolucaoBilhetes extends Relatorio { sql.append(" AND EI.ESTADO_ID = COALESCE(EOS.ESTADO_ID, EST.ESTADO_ID) AND EI.ACTIVO = 1 "); sql.append("LEFT JOIN AIDF AIDF ON AIDF.AIDF_ID = B.AIDF_ID AND B.TIPOVENTA_ID = 3 "); sql.append("LEFT JOIN ESTADO ESAIDF ON ESAIDF.ESTADO_ID = AIDF.ESTADO_ID "); - sql.append("LEFT JOIN BOLETO BORI ON BORI.BOLETO_ID = B.BOLETOORIGINAL_ID "); + sql.append(isBpe ? "INNER JOIN BPE BPE ON BPE.BOLETO_ID = B.BOLETO_ID " : ""); sql.append(isBpe ? "INNER JOIN ESTADO EST_BPE ON BPE.UF = EST_BPE.CODIBGE " : ""); + + sql.append("LEFT JOIN BOLETO BORI ON BORI.BOLETO_ID = ") + .append(isBpe ? " COALESCE(B.BOLETOANTERIOR_ID, B.BOLETOORIGINAL_ID) " : " B.BOLETOORIGINAL_ID "); + + sql.append(isBpe ? "LEFT JOIN BPE BPEORI ON BPEORI.BOLETO_ID = BORI.BOLETO_ID " : ""); +// sql.append(isBpe ? "LEFT JOIN TIPO_VENTA TP ON TP.TIPOVENTA_ID = B.TIPOVENTA_ID " : ""); + sql.append("WHERE "); sql.append(isBpe ? " " : " B.MOTIVOCANCELACION_ID IN (31,32,10,37,99,36) AND B.INDSTATUSBOLETO = 'C' AND B.INDCANCELACION = 1 "); sql.append(isBpe ? " ( BPE.CHBPE_SUBSTITUICAO IS NOT NULL OR (BPE.CODSTAT = 135 AND TO_CHAR(BORI.FECHORVENTA, 'MM/YYYY') < TO_CHAR(B.FECHORVENTA, 'MM/YYYY'))) " : " "); - sql.append(isBpe ? " AND (BPE.TIPOEVENTO <> 110115 OR BPE.TIPOEVENTO IS NULL) " : " "); - if (isApenasBilhetesImpressos) { sql.append("AND B.NUMFOLIOPREIMPRESO IS NOT NULL "); diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDevolucaoBilhetes_pt_BR.properties b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDevolucaoBilhetes_pt_BR.properties index 9db277c43..75c91d5ee 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDevolucaoBilhetes_pt_BR.properties +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/internacionalizacao/RelatorioDevolucaoBilhetes_pt_BR.properties @@ -32,5 +32,5 @@ label.fechorDevolucao=Dt Devolu label.impEstornarInterestadual=Receita Interestadual label.impEstornarIntermunicipal=Receita Intermunicipal label.impEstornarTotal=ReceitaTotal -label.chaveBpe=Chave BPE -label.chaveSubstituicaoBpe=Chave Substituição \ No newline at end of file +label.chaveBpe=Chave BPE Substituida +label.chaveSubstituicaoBpe=Chave Substituta \ No newline at end of file diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDevolucaoBilhetes.jasper b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDevolucaoBilhetes.jasper index e02712513..bd032103a 100644 Binary files a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDevolucaoBilhetes.jasper and b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDevolucaoBilhetes.jasper differ diff --git a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDevolucaoBilhetes.jrxml b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDevolucaoBilhetes.jrxml index 894fca510..d4bea2bbc 100644 --- a/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDevolucaoBilhetes.jrxml +++ b/src/java/com/rjconsultores/ventaboletos/relatorios/templates/RelatorioDevolucaoBilhetes.jrxml @@ -1,7 +1,7 @@ - +