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

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@64285 d1611594-4594-4d17-8e1d-87c2c4800839
master
alberto 2016-12-28 19:04:57 +00:00
parent 81a8c7fab1
commit 3165f78959
4 changed files with 201 additions and 81 deletions

View File

@ -1230,6 +1230,7 @@ public class FiscalHibernateDAO implements FiscalDAO {
StringBuilder sb = new StringBuilder();
sb.append(" select distinct");
sb.append(" imp.numserie20 as ecf,");
sb.append(" imp.numserie as numserie,");
sb.append(" r2.datamov as datamov,");
sb.append(" r2.cooinicial as cooinicial,");
sb.append(" r2.coofinal as coofinal,");
@ -1306,7 +1307,7 @@ public class FiscalHibernateDAO implements FiscalDAO {
registro = new ExportacaoECFTipoCFC();
registro.setEstabelecimento(rs.getInt("codestabelecimento"));
registro.setDataEmissao(rs.getString("datamov"));
registro.setNumeroIdentificacaoECF(rs.getInt("numeroidentificacao"));
registro.setNumeroIdentificacaoECF(rs.getInt("numeroidentificacao") > 0 ? rs.getInt("numeroidentificacao") : rs.getInt("numserie"));
registro.setEcf(rs.getString("ecf"));
registro.setCooReducaoZ(Integer.valueOf(rs.getString("coo")));
registro.setCooInicial(Integer.valueOf(rs.getString("cooinicial")));
@ -1470,6 +1471,7 @@ public class FiscalHibernateDAO implements FiscalDAO {
StringBuilder sb = new StringBuilder();
sb.append(" select");
sb.append(" r4.numserie20 as ecf,");
sb.append(" r4.datamov as datamov,");
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,");
@ -1499,6 +1501,7 @@ public class FiscalHibernateDAO implements FiscalDAO {
sb.append(" left join estado eds on eds.estado_id = cds.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 nvl(CASE WHEN s.aliasorigen_id IS NULL THEN ei.activo ELSE eis.activo END, 0) = 1 and b.activo = 1 and r4.datamov >= ? and r4.datamov <= ? and b.empresacorrida_id = ? and ((CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) = ?)");
sb.append(" order by r4.numserie20, r4.datamov");
try {
PreparedStatement ps = connection.prepareStatement(sb.toString());
@ -1544,6 +1547,8 @@ public class FiscalHibernateDAO implements FiscalDAO {
BigDecimal valorICMSIsento = BigDecimal.ZERO;
BigDecimal valorICMSOutros = BigDecimal.ZERO;
String ecf = rs.getString("ecf");
String datamov = rs.getString("datamov");
String ufDestino = "";
String ufOrigem = "";
Integer municipioOrigem = 0;
@ -1574,7 +1579,7 @@ public class FiscalHibernateDAO implements FiscalDAO {
codigoSituacaoTribColunaB = rs.getInt("red_base_calc_icms") == 0 ? 0 : 20;
}
String key = ufDestino + "|" + cfop.toString() + "|" + codigoSituacaoTribColunaB.toString();
String key = ecf + "|" + datamov + "|" + ufDestino + "|" + cfop.toString() + "|" + codigoSituacaoTribColunaB.toString();
if (group.containsKey(key)) {
registro = group.get(key);
@ -1586,6 +1591,8 @@ public class FiscalHibernateDAO implements FiscalDAO {
valorICMSOutros = valorICMSOutros.add(registro.getValorICMSOutros());
} else {
registro = new ExportacaoECFTipoICF();
registro.setEcf(ecf);
registro.setDataEmissao(datamov);
registro.setUfDestino(ufDestino);
registro.setCfop(cfop); // IM=5357; Serviço IE= 6357
registro.setCodigoSituacaoTribColunaB(codigoSituacaoTribColunaB); // 00 - tributação normal; 20 - tributação com redução na base de calculo; 40 - isentos
@ -1622,11 +1629,12 @@ public class FiscalHibernateDAO implements FiscalDAO {
List<ExportacaoECFTipoPRC> retorno = new ArrayList<ExportacaoECFTipoPRC>();
StringBuilder sb = new StringBuilder();
sb.append(" select municipio_origem, estado_origem, estado_destino, red_base_calc_icms, porc_red_municipal, porc_red_estadual, tributacao_importacao, SUM(valortotal) as valortotal");
sb.append(" select ecf, datamov, municipio_origem, estado_origem, estado_destino, red_base_calc_icms, porc_red_municipal, porc_red_estadual, tributacao_importacao, SUM(valortotal) as valortotal");
sb.append(" from (");
sb.append(" select");
sb.append(" r4.numserie20 as ecf,");
sb.append(" r4.datamov as datamov,");
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.aliasorigen_id IS NULL THEN ed.cveestado ELSE eds.cveestado END) as estado_destino,");
@ -1655,7 +1663,7 @@ public class FiscalHibernateDAO implements FiscalDAO {
sb.append(" left join empresa_imposto eis on eis.empresa_id = b.empresacorrida_id and eis.estado_id = eos.estado_id");
sb.append(" where nvl(CASE WHEN s.aliasorigen_id IS NULL THEN ei.activo ELSE eis.activo END, 0) = 1 and b.activo = 1 and r4.datamov >= ? and r4.datamov <= ? and b.empresacorrida_id = ? and ((CASE WHEN s.aliasorigen_id IS NULL THEN eo.cveestado ELSE eos.cveestado END) = ?)");
sb.append(" ) group by municipio_origem, estado_origem, estado_destino, red_base_calc_icms, porc_red_municipal, porc_red_estadual, tributacao_importacao");
sb.append(" ) group by ecf, datamov, municipio_origem, estado_origem, estado_destino, red_base_calc_icms, porc_red_municipal, porc_red_estadual, tributacao_importacao");
try {
PreparedStatement ps = connection.prepareStatement(sb.toString());
@ -1668,6 +1676,8 @@ public class FiscalHibernateDAO implements FiscalDAO {
ExportacaoECFTipoPRC registro = null;
Map<String, ExportacaoECFTipoPRC> group = new HashMap<String, ExportacaoECFTipoPRC>();
while (rs.next()) {
BigDecimal valorTotal = BigDecimal.valueOf(Double.valueOf(rs.getString("valortotal")) / 100);
@ -1697,14 +1707,31 @@ public class FiscalHibernateDAO implements FiscalDAO {
BigDecimal valorICMS = (tributacao_importacao == null ? BigDecimal.ZERO : valorBaseCalculoICMS.multiply(tributacao_importacao));
String key = rs.getString("ecf") + "|" + rs.getString("datamov") + "|" + rs.getString("estado_origem") + "|" + rs.getString("municipio_origem");
if (group.containsKey(key)) {
registro = group.get(key);
registro.setValorTotal(registro.getValorTotal().add(valorTotal));
registro.setValorBaseCalculoICMS(registro.getValorBaseCalculoICMS().add(valorBaseCalculoICMS));
registro.setValorICMS(registro.getValorICMS().add(valorICMS));
} else {
registro = new ExportacaoECFTipoPRC();
registro.setEcf(rs.getString("ecf"));
registro.setDataEmissao(rs.getString("datamov"));
registro.setUfOrigem(rs.getString("estado_origem"));
registro.setMunicipioOrigem(Integer.valueOf(rs.getString("municipio_origem")));
registro.setValorTotal(valorTotal);
registro.setValorBaseCalculoICMS(valorBaseCalculoICMS);
registro.setValorICMS(valorICMS);
}
retorno.add(registro);
group.put(key, registro);
}
for (Map.Entry<String, ExportacaoECFTipoPRC> entry : group.entrySet()) {
retorno.add(entry.getValue());
}
rs.close();

View File

@ -53,9 +53,9 @@ public class ExportacaoFiscal {
adicionarRegistroECFTipoCAB(writer, dataInicial, dataFinal, nomeEmpresa);
// adicionarRegistroECFTipoCFC(writer, listaRegistroECFTipoCFC);
// adicionarRegistroECFTipoCCF(writer, listaRegistroECFTipoCCF);
adicionarRegistroECFTipoCFC_CCF(writer, listaRegistroECFTipoCFC, listaRegistroECFTipoCCF);
adicionarRegistroECFTipoICF(writer, listaRegistroECFTipoICF);
adicionarRegistroECFTipoPRC(writer, listaRegistroECFTipoPRC);
// adicionarRegistroECFTipoICF(writer, listaRegistroECFTipoICF);
// adicionarRegistroECFTipoPRC(writer, listaRegistroECFTipoPRC);
adicionarRegistroECF(writer, listaRegistroECFTipoCFC, listaRegistroECFTipoCCF, listaRegistroECFTipoICF, listaRegistroECFTipoPRC);
writer.close();
@ -83,43 +83,104 @@ public class ExportacaoFiscal {
writer.print(sb.toString() + UtiliteriasFiscal.QUEBRA_LINHA);
}
@SuppressWarnings("unused")
private void adicionarRegistroECFTipoCFC(PrintWriter writer, final List<ExportacaoECFTipoCFC> listaRegistroECFTipoCFC) {
for (ExportacaoECFTipoCFC registro : listaRegistroECFTipoCFC) {
adicionarLinhaCFC(writer, registro);
}
}
@SuppressWarnings("unused")
private void adicionarRegistroECFTipoCCF(PrintWriter writer, final List<ExportacaoECFTipoCCF> listaRegistroECFTipoCCF) {
for (ExportacaoECFTipoCCF registro : listaRegistroECFTipoCCF) {
adicionarLinhaCCF(writer, registro);
}
}
private void adicionarRegistroECFTipoCFC_CCF(PrintWriter writer, final List<ExportacaoECFTipoCFC> listaRegistroECFTipoCFC, final List<ExportacaoECFTipoCCF> listaRegistroECFTipoCCF) {
Map<String, List<ExportacaoECFTipoCCF>> groupCCF = new HashMap<String, List<ExportacaoECFTipoCCF>>();
List<ExportacaoECFTipoCCF> itens = new ArrayList<ExportacaoECFTipoCCF>();
for (ExportacaoECFTipoCCF registro : listaRegistroECFTipoCCF) {
itens = new ArrayList<ExportacaoECFTipoCCF>();
if (groupCCF.containsKey(registro.getEcf() + "|" + registro.getDataEmissao())) {
itens.addAll(groupCCF.get(registro.getEcf() + "|" + registro.getDataEmissao()));
@SuppressWarnings("unused")
private void adicionarRegistroECFTipoICF(PrintWriter writer, final List<ExportacaoECFTipoICF> listaRegistroECFTipoICF) {
for (ExportacaoECFTipoICF registro : listaRegistroECFTipoICF) {
adicionarLinhaICF(writer, registro);
}
}
itens.add(registro);
@SuppressWarnings("unused")
private void adicionarRegistroECFTipoPRC(PrintWriter writer, final List<ExportacaoECFTipoPRC> listaRegistroECFTipoPRC) {
for (ExportacaoECFTipoPRC registro : listaRegistroECFTipoPRC) {
adicionarLinhaPRC(writer, registro);
}
}
groupCCF.put(registro.getEcf() + "|" + registro.getDataEmissao(), itens);
private void adicionarRegistroECF(PrintWriter writer, final List<ExportacaoECFTipoCFC> listaRegistroECFTipoCFC, final List<ExportacaoECFTipoCCF> listaRegistroECFTipoCCF,
List<ExportacaoECFTipoICF> listaRegistroECFTipoICF, List<ExportacaoECFTipoPRC> listaRegistroECFTipoPRC) {
Map<String, List<ExportacaoECFTipoCCF>> groupCCF = new HashMap<String, List<ExportacaoECFTipoCCF>>();
Map<String, List<ExportacaoECFTipoICF>> groupICF = new HashMap<String, List<ExportacaoECFTipoICF>>();
Map<String, List<ExportacaoECFTipoPRC>> groupPRC = new HashMap<String, List<ExportacaoECFTipoPRC>>();
List<ExportacaoECFTipoCCF> itensCCF = new ArrayList<ExportacaoECFTipoCCF>();
List<ExportacaoECFTipoICF> itensICF = new ArrayList<ExportacaoECFTipoICF>();
List<ExportacaoECFTipoPRC> itensPRC = new ArrayList<ExportacaoECFTipoPRC>();
for (ExportacaoECFTipoCCF registro : listaRegistroECFTipoCCF) {
itensCCF = new ArrayList<ExportacaoECFTipoCCF>();
if (groupCCF.containsKey(registro.getEcf() + "|" + registro.getDataEmissao())) {
itensCCF.addAll(groupCCF.get(registro.getEcf() + "|" + registro.getDataEmissao()));
}
itensCCF.add(registro);
groupCCF.put(registro.getEcf() + "|" + registro.getDataEmissao(), itensCCF);
}
for (ExportacaoECFTipoICF registro : listaRegistroECFTipoICF) {
itensICF = new ArrayList<ExportacaoECFTipoICF>();
if (groupICF.containsKey(registro.getEcf() + "|" + registro.getDataEmissao())) {
itensICF.addAll(groupICF.get(registro.getEcf() + "|" + registro.getDataEmissao()));
}
itensICF.add(registro);
groupICF.put(registro.getEcf() + "|" + registro.getDataEmissao(), itensICF);
}
for (ExportacaoECFTipoPRC registro : listaRegistroECFTipoPRC) {
itensPRC = new ArrayList<ExportacaoECFTipoPRC>();
if (groupPRC.containsKey(registro.getEcf() + "|" + registro.getDataEmissao())) {
itensPRC.addAll(groupPRC.get(registro.getEcf() + "|" + registro.getDataEmissao()));
}
itensPRC.add(registro);
groupPRC.put(registro.getEcf() + "|" + registro.getDataEmissao(), itensPRC);
}
for (ExportacaoECFTipoCFC registro : listaRegistroECFTipoCFC) {
adicionarLinhaCFC(writer, registro);
itens = groupCCF.get(registro.getEcf() + "|" + registro.getDataEmissao());
itensCCF = groupCCF.get(registro.getEcf() + "|" + registro.getDataEmissao());
if (itens != null) {
for (ExportacaoECFTipoCCF item : itens) {
adicionarLinhaCCF(writer, item);
if (itensCCF != null) {
for (ExportacaoECFTipoCCF itemCCF : itensCCF) {
adicionarLinhaCCF(writer, itemCCF);
}
}
itensICF = groupICF.get(registro.getEcf() + "|" + registro.getDataEmissao());
if (itensICF != null) {
for (ExportacaoECFTipoICF itemICF : itensICF) {
adicionarLinhaICF(writer, itemICF);
}
}
itensPRC = groupPRC.get(registro.getEcf() + "|" + registro.getDataEmissao());
if (itensPRC != null) {
for (ExportacaoECFTipoPRC itemPRC : itensPRC) {
adicionarLinhaPRC(writer, itemPRC);
}
}
}
@ -229,19 +290,18 @@ public class ExportacaoFiscal {
writer.print(sb.toString() + UtiliteriasFiscal.QUEBRA_LINHA);
}
private void adicionarRegistroECFTipoICF(PrintWriter writer, final List<ExportacaoECFTipoICF> listaRegistroECFTipoICF) {
for (ExportacaoECFTipoICF registro : listaRegistroECFTipoICF) {
BigDecimal valorTotal = registro.getValorTotal();
String ufDestino = registro.getUfDestino();
Integer cfop = registro.getCfop(); // IM=5357; Serviço IE= 6357
BigDecimal valorBaseCalculoICMS = registro.getValorBaseCalculoICMS();
BigDecimal aliquotaICMS = registro.getAliquotaICMS();
BigDecimal valorICMSDebitado = registro.getValorICMSDebitado();
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();
private void adicionarLinhaICF(PrintWriter writer, ExportacaoECFTipoICF item) {
BigDecimal valorTotal = item.getValorTotal();
String ufDestino = item.getUfDestino();
Integer cfop = item.getCfop(); // IM=5357; Serviço IE= 6357
BigDecimal valorBaseCalculoICMS = item.getValorBaseCalculoICMS();
BigDecimal aliquotaICMS = item.getAliquotaICMS();
BigDecimal valorICMSDebitado = item.getValorICMSDebitado();
BigDecimal valorICMSIsento = item.getValorICMSIsento();
BigDecimal valorICMSOutros = item.getValorICMSOutros();
Integer codigoSituacaoTribColunaB = item.getCodigoSituacaoTribColunaB(); // 00 - tributação normal; 20 - tributação com redução na base de calculo; 40 - isentos
String ufOrigem = item.getUfOrigem();
Integer municipioOrigem = item.getMunicipioOrigem();
StringBuilder sb = new StringBuilder();
sb.append("ICF").append(SEPARADOR);
@ -267,15 +327,13 @@ public class ExportacaoFiscal {
writer.print(sb.toString() + UtiliteriasFiscal.QUEBRA_LINHA);
}
}
private void adicionarRegistroECFTipoPRC(PrintWriter writer, final List<ExportacaoECFTipoPRC> listaRegistroECFTipoPRC) {
for (ExportacaoECFTipoPRC registro : listaRegistroECFTipoPRC) {
String ufOrigem = registro.getUfOrigem();
Integer municipioOrigem = registro.getMunicipioOrigem();
BigDecimal valorTotal = registro.getValorTotal();
BigDecimal valorBaseCalculoICMS = registro.getValorBaseCalculoICMS();
BigDecimal valorICMS = registro.getValorICMS();
private void adicionarLinhaPRC(PrintWriter writer, ExportacaoECFTipoPRC item) {
String ufOrigem = item.getUfOrigem();
Integer municipioOrigem = item.getMunicipioOrigem();
BigDecimal valorTotal = item.getValorTotal();
BigDecimal valorBaseCalculoICMS = item.getValorBaseCalculoICMS();
BigDecimal valorICMS = item.getValorICMS();
StringBuilder sb = new StringBuilder();
sb.append("PRC").append(SEPARADOR);
@ -287,7 +345,6 @@ public class ExportacaoFiscal {
writer.print(sb.toString() + UtiliteriasFiscal.QUEBRA_LINHA);
}
}
public File gerarArquivoRMD(final Date dataInicial, final Date dataFinal, final String nomeEmpresa, List<ExportacaoRMDTipoPAR> listaRegistroRMDTipoPAR,
List<ExportacaoRMDTipoRMD> listaRegistroRMDTipoRMD, List<ExportacaoRMDTipoBPS> listaRegistroRMDTipoBPS, List<ExportacaoRMDTipoDBP> listaRegistroRMDTipoDBP) {

View File

@ -14,6 +14,8 @@ public class ExportacaoECFTipoICF {
private Integer codigoSituacaoTribColunaB; // 00 - tributação normal; 20 - tributação com redução na base de calculo; 40 - isentos
private String ufOrigem;
private Integer municipioOrigem;
private String ecf;
private String dataEmissao;
public ExportacaoECFTipoICF() {
@ -107,8 +109,24 @@ public class ExportacaoECFTipoICF {
this.municipioOrigem = municipioOrigem;
}
public String getEcf() {
return ecf;
}
public void setEcf(String ecf) {
this.ecf = ecf;
}
public String getDataEmissao() {
return dataEmissao;
}
public void setDataEmissao(String dataEmissao) {
this.dataEmissao = dataEmissao;
}
@Override
public String toString() {
return "ExportacaoECFTipoICF [valorTotal=" + valorTotal + ", ufDestino=" + ufDestino + ", cfop=" + cfop + ", valorBaseCalculoICMS=" + valorBaseCalculoICMS + ", aliquotaICMS=" + aliquotaICMS + ", valorICMSDebitado=" + valorICMSDebitado + ", valorICMSIsento=" + valorICMSIsento + ", valorICMSOutros=" + valorICMSOutros + ", codigoSituacaoTribColunaB=" + codigoSituacaoTribColunaB + ", ufOrigem=" + ufOrigem + ", municipioOrigem=" + municipioOrigem + "]";
return "ExportacaoECFTipoICF [valorTotal=" + valorTotal + ", ufDestino=" + ufDestino + ", cfop=" + cfop + ", valorBaseCalculoICMS=" + valorBaseCalculoICMS + ", aliquotaICMS=" + aliquotaICMS + ", valorICMSDebitado=" + valorICMSDebitado + ", valorICMSIsento=" + valorICMSIsento + ", valorICMSOutros=" + valorICMSOutros + ", codigoSituacaoTribColunaB=" + codigoSituacaoTribColunaB + ", ufOrigem=" + ufOrigem + ", municipioOrigem=" + municipioOrigem + ", ecf=" + ecf + ", dataEmissao=" + dataEmissao + "]";
}
}

View File

@ -8,6 +8,8 @@ public class ExportacaoECFTipoPRC {
private BigDecimal valorTotal;
private BigDecimal valorBaseCalculoICMS;
private BigDecimal valorICMS;
private String ecf;
private String dataEmissao;
public ExportacaoECFTipoPRC() {
@ -57,4 +59,20 @@ public class ExportacaoECFTipoPRC {
public String toString() {
return "ExportacaoECFTipoPRC [ufOrigem=" + ufOrigem + ", municipioOrigem=" + municipioOrigem + ", valorTotal=" + valorTotal + ", valorBaseCalculoICMS=" + valorBaseCalculoICMS + ", valorICMS=" + valorICMS + "]";
}
public String getEcf() {
return ecf;
}
public void setEcf(String ecf) {
this.ecf = ecf;
}
public String getDataEmissao() {
return dataEmissao;
}
public void setDataEmissao(String dataEmissao) {
this.dataEmissao = dataEmissao;
}
}