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

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@62780 d1611594-4594-4d17-8e1d-87c2c4800839
master
alberto 2016-11-22 12:46:18 +00:00
parent d97992c6ef
commit 31f4aeba1a
1 changed files with 89 additions and 11 deletions

View File

@ -1409,13 +1409,39 @@ public class FiscalHibernateDAO implements FiscalDAO {
registro.setCodigoSituacaoTribColunaB(rs.getInt("red_base_calc_icms") == 0 ? 0 : 20);
}
registro.setValorTotal(BigDecimal.valueOf(Double.valueOf(rs.getString("valortotal")) / 100));
BigDecimal valorTotal = BigDecimal.valueOf(Double.valueOf(rs.getString("valortotal")) / 100);
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;
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)));
}
}
}
}
registro.setValorTotal(valorTotal);
// 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"
registro.setTributacaoICMS(registro.getCodigoSituacaoTribColunaB() == 40 ? 2 : 1);
registro.setValorBaseCalculoICMS(BigDecimal.valueOf(Double.valueOf(rs.getString("valortotal")) / 100));
registro.setAliquotaICMS(BigDecimal.valueOf(rs.getDouble("tributacao_importacao")));
registro.setValorBaseCalculoICMS(valorBaseCalculoICMS);
registro.setAliquotaICMS(tributacao_importacao);
retorno.add(registro);
}
@ -1481,10 +1507,33 @@ public class FiscalHibernateDAO implements FiscalDAO {
Map<String, ExportacaoECFTipoICF> group = new HashMap<String, ExportacaoECFTipoICF>();
while (rs.next()) {
BigDecimal aliquotaICMS = BigDecimal.valueOf(rs.getDouble("tributacao_importacao"));
BigDecimal valorTotal = BigDecimal.valueOf(Double.valueOf(rs.getString("valortotal")) / 100);
BigDecimal valorBaseCalculoICMS = BigDecimal.valueOf(Double.valueOf(rs.getString("valortotal")) / 100);
BigDecimal valorICMSDebitado = valorBaseCalculoICMS.multiply(aliquotaICMS);
BigDecimal valorTotal = BigDecimal.valueOf(Double.valueOf(rs.getString("valortotal")) / 100);
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;
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 valorICMSDebitado = valorBaseCalculoICMS.multiply(tributacao_importacao);
BigDecimal valorICMSIsento = BigDecimal.ZERO;
BigDecimal valorICMSOutros = BigDecimal.ZERO;
@ -1531,7 +1580,7 @@ public class FiscalHibernateDAO implements FiscalDAO {
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
registro.setAliquotaICMS(aliquotaICMS);
registro.setAliquotaICMS(tributacao_importacao);
registro.setUfOrigem(ufOrigem);
registro.setMunicipioOrigem(municipioOrigem);
}
@ -1564,6 +1613,9 @@ public class FiscalHibernateDAO implements FiscalDAO {
List<ExportacaoECFTipoPRC> retorno = new ArrayList<ExportacaoECFTipoPRC>();
StringBuilder sb = new StringBuilder();
sb.append(" select municipio_origem, estado_origem, red_base_calc_icms, porc_red_municipal, porc_red_estadual, SUM(valortotal) as valortotal");
sb.append(" from (");
sb.append(" select");
sb.append(" r4.numserie20 as ecf,");
sb.append(" (CASE WHEN s.aliasorigen_id IS NULL THEN co.codibge ELSE cos.codibge END) as municipio_origem,");
@ -1589,6 +1641,8 @@ 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 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, red_base_calc_icms, porc_red_municipal, porc_red_estadual");
try {
PreparedStatement ps = connection.prepareStatement(sb.toString());
ps.setLong(1, Long.valueOf(DateUtil.getStringDate(inicio, DATE_FORMAT_FISCAL)));
@ -1601,9 +1655,33 @@ public class FiscalHibernateDAO implements FiscalDAO {
ExportacaoECFTipoPRC registro = null;
while (rs.next()) {
BigDecimal valorTotal = BigDecimal.valueOf(Double.valueOf(rs.getString("valortotal")) / 100);
BigDecimal valorBaseCalculoICMS = BigDecimal.valueOf(Double.valueOf(rs.getString("valortotal")) / 100);
BigDecimal valorICMS = BigDecimal.ZERO; // FIXME: Falta definir informação para a Exportação Fiscal ECF
BigDecimal valorTotal = BigDecimal.valueOf(Double.valueOf(rs.getString("valortotal")) / 100);
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;
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 = new ExportacaoECFTipoPRC();
registro.setUfOrigem(rs.getString("estado_origem"));