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

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@67354 d1611594-4594-4d17-8e1d-87c2c4800839
master
alberto 2017-03-29 18:08:03 +00:00
parent aa2a500034
commit 260cfc451e
4 changed files with 51 additions and 17 deletions

View File

@ -1349,7 +1349,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
sb.append(" r5.numserie20 as ecf,");
sb.append(" r5.datamov as datamov,");
sb.append(" r5.coo as coo,");
sb.append(" r5.impunitario as valortarifa,");
sb.append(" r5.imptotalliquido as valortarifa,");
sb.append(" (CASE WHEN s.aliasorigen_id IS NULL THEN co.codibge ELSE cos.codibge END) as municipio_origem,");
sb.append(" (CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) as estado_origem,");
sb.append(" (CASE WHEN s.aliasdestino_id IS NULL THEN cd.codibge ELSE cds.codibge END) as municipio_destino,");
@ -1359,7 +1359,8 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
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 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(" r4.impsubtotal as valortotal,");
sb.append(" b.numfoliosistema as numfoliosistema");
sb.append(" from fiscal_r5 r5");
sb.append(" join fiscal_r4 r4 on r4.numserie20 = r5.numserie20 and r4.coo = r5.coo");
sb.append(" join fiscal_r2 r2 on r2.numserie20 = r4.numserie20 and r2.datamov = r4.datamov");
@ -1402,6 +1403,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
registro.setCodigoParticipante(null);
registro.setSituacaoCOO(0); // 0 - Documento Regular; 2 - Documento Cancelado
registro.setAcrescimo(null);
registro.setNumFolioSistema(rs.getString("numFolioSistema"));
registro.setCodigoSituacaoTribColunaB(null);
@ -1782,6 +1784,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
registro.setValorTotal(valorTotal);
registro.setValorBaseCalculoICMS(valorBaseCalculoICMS);
registro.setValorICMS(valorICMS);
registro.setTributacao(tributacao_importacao);
}
group.put(key, registro);

View File

@ -21,6 +21,7 @@ import org.springframework.stereotype.Service;
import com.rjconsultores.ventaboletos.constantes.Constantes;
import com.rjconsultores.ventaboletos.utilerias.DateUtil;
import com.rjconsultores.ventaboletos.utilerias.MoneyHelper;
import com.rjconsultores.ventaboletos.utilerias.UtiliteriasFiscal;
import com.rjconsultores.ventaboletos.utilerias.exportacaofiscal.vo.ExportacaoECFTipoCCF;
import com.rjconsultores.ventaboletos.utilerias.exportacaofiscal.vo.ExportacaoECFTipoCFC;
@ -166,12 +167,14 @@ public class ExportacaoFiscal {
Map<String, BigDecimal> valoresBaseCalculoICMS = new HashMap<String, BigDecimal>(0);
Map<Integer, BigDecimal> totalBaseCalculoICMS = new HashMap<Integer, BigDecimal>(0);
for (ExportacaoECFTipoCFC registro : listaRegistroECFTipoCFC) {
adicionarLinhaCFC(writer, registro);
itensCCF = groupCCF.get(registro.getEcf() + "|" + registro.getDataEmissao());
BigDecimal totalBaseCalculoICMS = BigDecimal.ZERO;
totalBaseCalculoICMS.clear();
if (itensCCF != null) {
for (ExportacaoECFTipoCCF itemCCF : itensCCF) {
@ -187,19 +190,24 @@ public class ExportacaoFiscal {
adicionarLinhaCCF(writer, itemCCF);
totalBaseCalculoICMS = totalBaseCalculoICMS.add(itemCCF.getValorBaseCalculoICMS().setScale(2, BigDecimal.ROUND_HALF_EVEN));
BigDecimal valor = BigDecimal.ZERO;
if (totalBaseCalculoICMS.containsKey(itemCCF.getMunicipioOrigem())) {
valor = totalBaseCalculoICMS.get(itemCCF.getMunicipioOrigem());
}
valor = valor.add(itemCCF.getValorBaseCalculoICMS().setScale(2, BigDecimal.ROUND_HALF_EVEN));
totalBaseCalculoICMS.put(itemCCF.getMunicipioOrigem(), valor);
}
}
BigDecimal valorBaseCalculoICMS = BigDecimal.ZERO;
BigDecimal valorICMS = BigDecimal.ZERO;
itensICF = groupICF.get(registro.getEcf() + "|" + registro.getDataEmissao());
if (itensICF != null) {
for (ExportacaoECFTipoICF itemICF : itensICF) {
valorICMS = valorICMS.add(itemICF.getValorICMSDebitado().setScale(2, BigDecimal.ROUND_HALF_EVEN));
valorBaseCalculoICMS = BigDecimal.ZERO;
if (valoresBaseCalculoICMS.containsKey(itemICF.getUfDestino())) {
@ -214,7 +222,7 @@ public class ExportacaoFiscal {
if (itensPRC != null) {
for (ExportacaoECFTipoPRC itemPRC : itensPRC) {
adicionarLinhaPRC(writer, itemPRC, totalBaseCalculoICMS, valorICMS);
adicionarLinhaPRC(writer, itemPRC, totalBaseCalculoICMS);
}
}
}
@ -295,6 +303,7 @@ public class ExportacaoFiscal {
Integer tributacaoICMS = item.getTributacaoICMS(); // 1 - Demais; 2 - Região Metropolitanao ou seja, quando o campo CSTB for "40", esse campo deve vir "2". Do contrário, deve vir "1"
BigDecimal valorBaseCalculoICMS = item.getValorBaseCalculoICMS();
BigDecimal aliquotaICMS = item.getAliquotaICMS();
String numFolioSistema = item.getNumFolioSistema();
if (municipioOrigem != null && municipioOrigem.length() > 5) {
municipioOrigem = municipioOrigem.substring(municipioOrigem.length() - 5, municipioOrigem.length());
@ -302,7 +311,7 @@ public class ExportacaoFiscal {
StringBuilder sb = new StringBuilder();
sb.append("CCF").append(SEPARADOR);
sb.append(formataNumerico(coo.toString(), true, 6)).append(SEPARADOR);
sb.append(formataCaracter(numFolioSistema, true, 6)).append(SEPARADOR);
sb.append(formataValor(valorServico, 15)).append(SEPARADOR);
sb.append(descontoGlobal == null ? "" : formataValor(descontoGlobal, 15)).append(SEPARADOR);
sb.append(codigoParticipante == null ? "" : formataNumerico(codigoParticipante, true, 15)).append(SEPARADOR);
@ -380,17 +389,21 @@ public class ExportacaoFiscal {
writer.print(sb.toString() + UtiliteriasFiscal.QUEBRA_LINHA);
}
private void adicionarLinhaPRC(PrintWriter writer, ExportacaoECFTipoPRC item, BigDecimal valorBaseCalculoICMSSoma, BigDecimal valorICMSSoma) {
private void adicionarLinhaPRC(PrintWriter writer, ExportacaoECFTipoPRC item, Map<Integer, BigDecimal> totalBaseCalculoICMS) {
String ufOrigem = item.getUfOrigem();
String municipioOrigem = item.getMunicipioOrigem() == null ? null : item.getMunicipioOrigem().toString();
BigDecimal valorTotal = item.getValorTotal();
BigDecimal valorBaseCalculoICMS = item.getValorBaseCalculoICMS();
BigDecimal valorBaseCalculoICMS = totalBaseCalculoICMS.containsKey(item.getMunicipioOrigem()) ? totalBaseCalculoICMS.get(item.getMunicipioOrigem()) : item.getValorBaseCalculoICMS();
BigDecimal valorICMS = item.getValorICMS();
if (municipioOrigem != null && municipioOrigem.length() > 5) {
municipioOrigem = municipioOrigem.substring(municipioOrigem.length() - 5, municipioOrigem.length());
}
if (item.getTributacao() != null && item.getTributacao().compareTo(BigDecimal.ZERO) > 0) {
valorICMS = MoneyHelper.multiplicar(valorBaseCalculoICMS, item.getTributacao());
}
StringBuilder sb = new StringBuilder();
sb.append("PRC").append(SEPARADOR);
sb.append(formataCaracter(ufOrigem, true, 2)).append(SEPARADOR);

View File

@ -20,6 +20,7 @@ public class ExportacaoECFTipoCCF {
private BigDecimal aliquotaICMS;
private String ecf;
private String dataEmissao;
private String numFolioSistema;
public ExportacaoECFTipoCCF() {
@ -161,8 +162,16 @@ public class ExportacaoECFTipoCCF {
this.dataEmissao = dataEmissao;
}
public String getNumFolioSistema() {
return numFolioSistema;
}
public void setNumFolioSistema(String numFolioSistema) {
this.numFolioSistema = numFolioSistema;
}
@Override
public String toString() {
return "ExportacaoECFTipoCCF [coo=" + coo + ", valorServico=" + valorServico + ", descontoGlobal=" + descontoGlobal + ", codigoParticipante=" + codigoParticipante + ", situacaoCOO=" + situacaoCOO + ", acrescimo=" + acrescimo + ", ufOrigem=" + ufOrigem + ", municipioOrigem=" + municipioOrigem + ", ufDestino=" + ufDestino + ", cfop=" + cfop + ", codigoSituacaoTribColunaB=" + codigoSituacaoTribColunaB + ", valorTotal=" + valorTotal + ", tributacaoICMS=" + tributacaoICMS + ", valorBaseCalculoICMS=" + valorBaseCalculoICMS + ", aliquotaICMS=" + aliquotaICMS + ", ecf=" + ecf + ", dataEmissao=" + dataEmissao + "]";
return "ExportacaoECFTipoCCF [coo=" + coo + ", valorServico=" + valorServico + ", descontoGlobal=" + descontoGlobal + ", codigoParticipante=" + codigoParticipante + ", situacaoCOO=" + situacaoCOO + ", acrescimo=" + acrescimo + ", ufOrigem=" + ufOrigem + ", municipioOrigem=" + municipioOrigem + ", ufDestino=" + ufDestino + ", cfop=" + cfop + ", codigoSituacaoTribColunaB=" + codigoSituacaoTribColunaB + ", valorTotal=" + valorTotal + ", tributacaoICMS=" + tributacaoICMS + ", valorBaseCalculoICMS=" + valorBaseCalculoICMS + ", aliquotaICMS=" + aliquotaICMS + ", ecf=" + ecf + ", dataEmissao=" + dataEmissao + ", numFolioSistema=" + numFolioSistema + "]";
}
}

View File

@ -10,6 +10,7 @@ public class ExportacaoECFTipoPRC {
private BigDecimal valorICMS;
private String ecf;
private String dataEmissao;
private BigDecimal tributacao;
public ExportacaoECFTipoPRC() {
@ -55,11 +56,6 @@ public class ExportacaoECFTipoPRC {
this.valorICMS = valorICMS;
}
@Override
public String toString() {
return "ExportacaoECFTipoPRC [ufOrigem=" + ufOrigem + ", municipioOrigem=" + municipioOrigem + ", valorTotal=" + valorTotal + ", valorBaseCalculoICMS=" + valorBaseCalculoICMS + ", valorICMS=" + valorICMS + "]";
}
public String getEcf() {
return ecf;
}
@ -75,4 +71,17 @@ public class ExportacaoECFTipoPRC {
public void setDataEmissao(String dataEmissao) {
this.dataEmissao = dataEmissao;
}
public BigDecimal getTributacao() {
return tributacao;
}
public void setTributacao(BigDecimal tributacao) {
this.tributacao = tributacao;
}
@Override
public String toString() {
return "ExportacaoECFTipoPRC [ufOrigem=" + ufOrigem + ", municipioOrigem=" + municipioOrigem + ", valorTotal=" + valorTotal + ", valorBaseCalculoICMS=" + valorBaseCalculoICMS + ", valorICMS=" + valorICMS + ", ecf=" + ecf + ", dataEmissao=" + dataEmissao + ", tributacao=" + tributacao + "]";
}
}