Exportação Fiscal : ECF e RMD (issue 8120)

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@63969 d1611594-4594-4d17-8e1d-87c2c4800839
master
alberto 2016-12-22 12:47:10 +00:00
parent b556a5ff8f
commit 93f95a2ee2
4 changed files with 95 additions and 58 deletions

View File

@ -1249,7 +1249,7 @@ public class FiscalHibernateDAO implements FiscalDAO {
sb.append(" left join parada posi on posi.parada_id = si.aliasorigen_id");
sb.append(" left join parada pdsi on pdsi.parada_id = si.aliasdestino_id");
sb.append(" where r5i.numserie20 = r4.numserie20 and r5i.datamov = r2.datamov and r5i.codproduto like '%-TA'");
sb.append(" and (nvl(case when posi.regionmetropolitana_id is null then poi.regionmetropolitana_id else posi.regionmetropolitana_id end, -1) = nvl(case when pdsi.regionmetropolitana_id is null then pdi.regionmetropolitana_id else pdsi.regionmetropolitana_id end, -2))");
sb.append(" and (nvl(case when si.aliasorigen_id is null then poi.regionmetropolitana_id else posi.regionmetropolitana_id end, -1) = nvl(case when si.aliasorigen_id is null then pdi.regionmetropolitana_id else pdsi.regionmetropolitana_id end, -2))");
sb.append(" ) as totalisenta,");
sb.append(" r2.vendabrutadiaria as vendabrutadiaria,");
sb.append(" r2.totgeral as totgeral,");
@ -1548,6 +1548,8 @@ public class FiscalHibernateDAO implements FiscalDAO {
if (rs.getInt("isenta") == 1) {
codigoSituacaoTribColunaB = 40;
valorICMSIsento = valorTotal;
}
ufDestino = rs.getString("estado_destino");
@ -1803,7 +1805,7 @@ public class FiscalHibernateDAO implements FiscalDAO {
sb.append(" and (CASE WHEN s.aliasorigen_id IS NULL THEN ei.activo ELSE eis.activo END) = 1");
sb.append(" and (b.indstatusboleto like 'V' or b.indstatusboleto like 'C')");
sb.append(" and b.empresacorrida_id = ?");
sb.append(" and (b.feccorrida >= ? and b.feccorrida >= ?)");
sb.append(" and (b.feccorrida >= ? and b.feccorrida <= ?)");
sb.append(" and (CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) like ?");
try {
@ -1881,9 +1883,9 @@ public class FiscalHibernateDAO implements FiscalDAO {
sb.append(" and b.tipoventa_id = 3");
sb.append(" and (b.indstatusboleto like 'V' or b.indstatusboleto like 'C')");
sb.append(" and b.empresacorrida_id = ?");
sb.append(" and (b.feccorrida >= ? and b.feccorrida >= ?)");
sb.append(" and (b.feccorrida >= ? and b.feccorrida <= ?)");
sb.append(" and (CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) like ?");
sb.append(" order by r.docfiscal, b.numfoliopreimpreso");
sb.append(" order by b.feccreacion,a.acfiscal,b.numfoliopreimpreso");
try {
PreparedStatement ps = connection.prepareStatement(sb.toString());
@ -1902,7 +1904,7 @@ public class FiscalHibernateDAO implements FiscalDAO {
Integer numeroFinal = null;
while (rs.next()) {
String key = rs.getInt("num_rmd") + "|" + rs.getInt("num_formulario");
String key = sdf.format(rs.getDate("data_emissao")) + "|" + rs.getInt("num_aidf") + "|" + rs.getInt("num_formulario");
if (group.containsKey(key)) {
registro = group.get(key);
@ -1992,7 +1994,8 @@ public class FiscalHibernateDAO implements FiscalDAO {
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 po.regionmetropolitana_id ELSE pos.regionmetropolitana_id END),-1) = nvl((CASE WHEN s.aliasorigen_id IS NULL THEN pd.regionmetropolitana_id ELSE pds.regionmetropolitana_id END),-2)) THEN 1 ELSE 0 END) as isenta,");
sb.append(" (nvl(b.preciopagado,0) - nvl(b.importetaxaembarque,0) - nvl(b.importepedagio,0) - nvl(b.importeseguro,0) - nvl(b.importeoutros,0)) as valor_tarifa,");
sb.append(" b.preciopagado as valor_total");
sb.append(" b.preciopagado as valor_total,");
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.aliasorigen_id is null then pd.regionmetropolitana_id else pds.regionmetropolitana_id end, -2) THEN 1 ELSE 0 END) as reg_metropolitana");
sb.append(" from boleto b");
sb.append(" join empresa e on e.empresa_id = b.empresacorrida_id");
sb.append(" join parada po on po.parada_id = b.origen_id");
@ -2001,6 +2004,7 @@ public class FiscalHibernateDAO implements FiscalDAO {
sb.append(" join parada pd on pd.parada_id = b.destino_id");
sb.append(" join ciudad cd on cd.ciudad_id = pd.ciudad_id");
sb.append(" join estado ed on ed.estado_id = cd.estado_id");
sb.append(" join parada pd on pd.parada_id = b.destino_id");
sb.append(" left join alias_servico s on s.origen_id = b.origen_id and s.destino_id = b.destino_id and s.corrida_id = b.corrida_id and s.ruta_id = b.ruta_id");
sb.append(" left join parada pos on pos.parada_id = s.aliasorigen_id");
sb.append(" left join ciudad cos on cos.ciudad_id = pos.ciudad_id");
@ -2008,6 +2012,7 @@ public class FiscalHibernateDAO implements FiscalDAO {
sb.append(" left join parada pds on pds.parada_id = s.aliasdestino_id");
sb.append(" left join ciudad cds on cds.ciudad_id = pds.ciudad_id");
sb.append(" left join estado eds on eds.estado_id = cds.estado_id");
sb.append(" left join parada pds on pds.parada_id = s.aliasdestino_id");
sb.append(" join empresa_imposto ei on ei.empresa_id = b.empresacorrida_id and ei.estado_id = eo.estado_id");
sb.append(" left join empresa_imposto eis on eis.empresa_id = b.empresacorrida_id and eis.estado_id = eos.estado_id");
sb.append(" where");
@ -2016,7 +2021,7 @@ public class FiscalHibernateDAO implements FiscalDAO {
sb.append(" and (b.indstatusboleto like 'V' or b.indstatusboleto like 'C')");
sb.append(" and (CASE WHEN s.aliasorigen_id IS NULL THEN ei.activo ELSE eis.activo END) = 1");
sb.append(" and b.empresacorrida_id = ?");
sb.append(" and (b.feccorrida >= ? and b.feccorrida >= ?)");
sb.append(" and (b.feccorrida >= ? and b.feccorrida <= ?)");
sb.append(" and (CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) like ?");
try {
@ -2034,18 +2039,9 @@ public class FiscalHibernateDAO implements FiscalDAO {
registro = new ExportacaoRMDTipoDBP();
registro.setUfDestino(rs.getString("estado_destino"));
registro.setCfop(rs.getInt("cod_operacao")); // IM=5357; Serviço IE= 6357
registro.setValorTotal(rs.getBigDecimal("valor_total"));
registro.setUfOrigem(rs.getString("estado_origem"));
registro.setMunicipioOrigem(rs.getInt("municipio_origem"));
/*
registro.setValorBaseCalculoICMS();
registro.setAliquotaICMS();
registro.setValorICMSDebitado();
registro.setValorICMSIsento();
registro.setValorICMSOutros();
*/
registro.setCodigoSituacaoTribColunaB(null);
// 00 - tributação normal; 20 - tributação com redução na base de calculo; 40 - isentos
@ -2058,6 +2054,49 @@ public class FiscalHibernateDAO implements FiscalDAO {
registro.setCodigoSituacaoTribColunaB(rs.getInt("red_base_calc_icms") == 0 ? 0 : 20);
}
BigDecimal valorTotal = rs.getBigDecimal("valor_total");
BigDecimal red_base_calc_icms = rs.getBigDecimal("red_base_calc_icms");
BigDecimal porc_red_municipal = rs.getBigDecimal("porc_red_municipal");
BigDecimal porc_red_estadual = rs.getBigDecimal("porc_red_estadual");
BigDecimal tributacao_importacao = rs.getBigDecimal("tributacao_importacao");
BigDecimal valorBaseCalculoICMS = BigDecimal.ZERO;
BigDecimal valorIsenta = BigDecimal.ZERO;
BigDecimal valorIsentaOutros = BigDecimal.ZERO;
if (rs.getInt("reg_metropolitana") == 1) {
valorIsenta = valorTotal;
valorTotal = BigDecimal.ZERO;
} else {
if (red_base_calc_icms != null) {
valorBaseCalculoICMS = valorTotal.subtract(valorTotal.multiply(red_base_calc_icms.divide(BigDecimal.valueOf(100d))));
} else {
if (tributacao_importacao != null) {
if (rs.getString("estado_origem").equals(rs.getString("estado_destino"))) {
if (porc_red_municipal != null) {
BigDecimal porc = tributacao_importacao.subtract(tributacao_importacao.multiply(porc_red_municipal.divide(BigDecimal.valueOf(100d))));
valorBaseCalculoICMS = valorTotal.multiply(porc.divide(BigDecimal.valueOf(100d)));
}
} else {
if (porc_red_estadual != null) {
BigDecimal porc = tributacao_importacao.subtract(tributacao_importacao.multiply(porc_red_estadual.divide(BigDecimal.valueOf(100d))));
valorBaseCalculoICMS = valorTotal.multiply(porc.divide(BigDecimal.valueOf(100d)));
}
}
}
}
}
BigDecimal valorICMS = valorBaseCalculoICMS.multiply(tributacao_importacao);
registro.setValorBaseCalculoICMS(valorBaseCalculoICMS);
registro.setValorTotal(valorTotal);
registro.setAliquotaICMS(tributacao_importacao);
registro.setValorICMS(valorICMS);
registro.setValorICMSIsento(valorIsenta);
registro.setValorICMSOutros(valorIsentaOutros);
retorno.add(registro);
}

View File

@ -1,7 +1,3 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.rjconsultores.ventaboletos.service.impl;
import java.net.MalformedURLException;

View File

@ -260,7 +260,7 @@ public class ExportacaoFiscal {
adicionarRegistroRMDTipoPAR(writer, listaRegistroRMDTipoPAR);
adicionarRegistroRMDTipoRMD(writer, listaRegistroRMDTipoRMD);
adicionarRegistroRMDTipoBPS(writer, listaRegistroRMDTipoBPS);
adicionarRegistroRMDTipoDBP(writer, listaRegistroRMDTipoBPS);
adicionarRegistroRMDTipoDBP(writer, listaRegistroRMDTipoDBP);
writer.close();
@ -452,35 +452,37 @@ public class ExportacaoFiscal {
}
}
private void adicionarRegistroRMDTipoDBP(PrintWriter writer, List<ExportacaoRMDTipoBPS> listaRegistroRMDTipoBPS) {
String ufDestino = "MA";
Integer cfop = 6357; // IM=5357; Serviço IE= 6357
BigDecimal valorTotal = new BigDecimal("114.82");
BigDecimal valorBaseCalculoICMS = new BigDecimal("114.82");
String aliquotaICMS = "17";
BigDecimal valorICMSDebitado = new BigDecimal("114.82");
BigDecimal valorICMSIsento = BigDecimal.ZERO;
BigDecimal valorICMSOutros = BigDecimal.ZERO;
Integer codigoSituacaoTribColunaB = 0; // 00 - tributação normal; 20 - tributação com redução na base de calculo; 40 - isentos
String ufOrigem = "RN";
Integer municipioOrigem = 8003;
private void adicionarRegistroRMDTipoDBP(PrintWriter writer, List<ExportacaoRMDTipoDBP> listaRegistroRMDTipoDBP) {
for (ExportacaoRMDTipoDBP registro : listaRegistroRMDTipoDBP) {
String ufDestino = registro.getUfDestino();
Integer cfop = registro.getCfop(); // IM=5357; Serviço IE= 6357
BigDecimal valorTotal = registro.getValorTotal();
BigDecimal valorBaseCalculoICMS = registro.getValorBaseCalculoICMS();
BigDecimal aliquotaICMS = registro.getAliquotaICMS();
BigDecimal valorICMS = registro.getValorICMS();
BigDecimal valorICMSIsento = registro.getValorICMSIsento();
BigDecimal valorICMSOutros = registro.getValorICMSOutros();
Integer codigoSituacaoTribColunaB = registro.getCodigoSituacaoTribColunaB(); // 00 - tributação normal; 20 - tributação com redução na base de calculo; 40 - isentos
String ufOrigem = registro.getUfOrigem();
Integer municipioOrigem = registro.getMunicipioOrigem();
StringBuilder sb = new StringBuilder();
sb.append("DBP").append(SEPARADOR);
sb.append(formataCaracter(ufDestino, true, 2)).append(SEPARADOR);
sb.append(formataNumerico(cfop, true, 4)).append(SEPARADOR);
sb.append(formataValor(valorTotal, 15)).append(SEPARADOR);
sb.append(formataValor(valorBaseCalculoICMS, 15)).append(SEPARADOR);
sb.append(formataCaracter(aliquotaICMS, false, 5)).append(SEPARADOR);
sb.append(formataValor(valorICMSDebitado, 15)).append(SEPARADOR);
sb.append(formataValor(valorICMSIsento, 15)).append(SEPARADOR);
sb.append(formataValor(valorICMSOutros, 15)).append(SEPARADOR);
sb.append(formataNumerico(codigoSituacaoTribColunaB, true, 2)).append(SEPARADOR);
sb.append(formataCaracter(ufOrigem, true, 2)).append(SEPARADOR);
sb.append(formataNumerico(municipioOrigem, true, 5)).append(SEPARADOR);
sb.append(formataCaracter(VAZIO, false, 3)); // Posição 13
StringBuilder sb = new StringBuilder();
sb.append("DBP").append(SEPARADOR);
sb.append(formataCaracter(ufDestino, true, 2)).append(SEPARADOR);
sb.append(formataNumerico(cfop, true, 4)).append(SEPARADOR);
sb.append(formataValor(valorTotal, 15)).append(SEPARADOR);
sb.append(formataValor(valorBaseCalculoICMS, 15)).append(SEPARADOR);
sb.append(formataValor(aliquotaICMS, 5)).append(SEPARADOR);
sb.append(formataValor(valorICMS, 15)).append(SEPARADOR);
sb.append(formataValor(valorICMSIsento, 15)).append(SEPARADOR);
sb.append(formataValor(valorICMSOutros, 15)).append(SEPARADOR);
sb.append(formataNumerico(codigoSituacaoTribColunaB, true, 2)).append(SEPARADOR);
sb.append(formataCaracter(ufOrigem, true, 2)).append(SEPARADOR);
sb.append(formataNumerico(municipioOrigem, true, 5)).append(SEPARADOR);
sb.append(formataCaracter(VAZIO, false, 3)); // Posição 13
writer.print(sb.toString() + UtiliteriasFiscal.QUEBRA_LINHA);
writer.print(sb.toString() + UtiliteriasFiscal.QUEBRA_LINHA);
}
}
private String formataCaracter(String valor, boolean removeMascara, int tamanho) {

View File

@ -7,8 +7,8 @@ public class ExportacaoRMDTipoDBP {
private Integer cfop; // IM=5357; Serviço IE= 6357
private BigDecimal valorTotal;
private BigDecimal valorBaseCalculoICMS;
private String aliquotaICMS;
private BigDecimal valorICMSDebitado;
private BigDecimal aliquotaICMS;
private BigDecimal valorICMS;
private BigDecimal valorICMSIsento;
private BigDecimal valorICMSOutros;
private Integer codigoSituacaoTribColunaB; // 00 - tributação normal; 20 - tributação com redução na base de calculo; 40 - isentos
@ -51,20 +51,20 @@ public class ExportacaoRMDTipoDBP {
this.valorBaseCalculoICMS = valorBaseCalculoICMS;
}
public String getAliquotaICMS() {
public BigDecimal getAliquotaICMS() {
return aliquotaICMS;
}
public void setAliquotaICMS(String aliquotaICMS) {
public void setAliquotaICMS(BigDecimal aliquotaICMS) {
this.aliquotaICMS = aliquotaICMS;
}
public BigDecimal getValorICMSDebitado() {
return valorICMSDebitado;
public BigDecimal getValorICMS() {
return valorICMS;
}
public void setValorICMSDebitado(BigDecimal valorICMSDebitado) {
this.valorICMSDebitado = valorICMSDebitado;
public void setValorICMS(BigDecimal valorICMS) {
this.valorICMS = valorICMS;
}
public BigDecimal getValorICMSIsento() {
@ -109,6 +109,6 @@ public class ExportacaoRMDTipoDBP {
@Override
public String toString() {
return "ExportacaoRMDTipoDBP [ufDestino=" + ufDestino + ", cfop=" + cfop + ", valorTotal=" + valorTotal + ", valorBaseCalculoICMS=" + valorBaseCalculoICMS + ", aliquotaICMS=" + aliquotaICMS + ", valorICMSDebitado=" + valorICMSDebitado + ", valorICMSIsento=" + valorICMSIsento + ", valorICMSOutros=" + valorICMSOutros + ", codigoSituacaoTribColunaB=" + codigoSituacaoTribColunaB + ", ufOrigem=" + ufOrigem + ", municipioOrigem=" + municipioOrigem + "]";
return "ExportacaoRMDTipoDBP [ufDestino=" + ufDestino + ", cfop=" + cfop + ", valorTotal=" + valorTotal + ", valorBaseCalculoICMS=" + valorBaseCalculoICMS + ", aliquotaICMS=" + aliquotaICMS + ", valorICMS=" + valorICMS + ", valorICMSIsento=" + valorICMSIsento + ", valorICMSOutros=" + valorICMSOutros + ", codigoSituacaoTribColunaB=" + codigoSituacaoTribColunaB + ", ufOrigem=" + ufOrigem + ", municipioOrigem=" + municipioOrigem + "]";
}
}