Exportação Fiscal : ECF e RMD (issue 8120)
git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@64730 d1611594-4594-4d17-8e1d-87c2c4800839master
parent
e09208eab0
commit
0962ad9d77
|
@ -17,11 +17,13 @@ import javax.sql.DataSource;
|
||||||
|
|
||||||
import org.apache.commons.lang.StringUtils;
|
import org.apache.commons.lang.StringUtils;
|
||||||
import org.apache.log4j.Logger;
|
import org.apache.log4j.Logger;
|
||||||
|
import org.hibernate.jdbc.Work;
|
||||||
import org.springframework.beans.factory.annotation.Autowired;
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
import org.springframework.stereotype.Repository;
|
import org.springframework.stereotype.Repository;
|
||||||
|
|
||||||
import com.rjconsultores.ventaboletos.dao.FiscalDAO;
|
import com.rjconsultores.ventaboletos.dao.FiscalDAO;
|
||||||
import com.rjconsultores.ventaboletos.entidad.Aidf;
|
import com.rjconsultores.ventaboletos.entidad.Aidf;
|
||||||
|
import com.rjconsultores.ventaboletos.entidad.EsquemaAgrupacion;
|
||||||
import com.rjconsultores.ventaboletos.entidad.EsquemaCorrida;
|
import com.rjconsultores.ventaboletos.entidad.EsquemaCorrida;
|
||||||
import com.rjconsultores.ventaboletos.utilerias.DateUtil;
|
import com.rjconsultores.ventaboletos.utilerias.DateUtil;
|
||||||
import com.rjconsultores.ventaboletos.utilerias.StringHelper;
|
import com.rjconsultores.ventaboletos.utilerias.StringHelper;
|
||||||
|
@ -44,7 +46,7 @@ import com.rjconsultores.ventaboletos.vo.impressaofiscal.ItemFiscalVO;
|
||||||
import com.rjconsultores.ventaboletos.vo.impressaofiscal.SituacaoTributaria;
|
import com.rjconsultores.ventaboletos.vo.impressaofiscal.SituacaoTributaria;
|
||||||
|
|
||||||
@Repository("fiscalDAO")
|
@Repository("fiscalDAO")
|
||||||
public class FiscalHibernateDAO implements FiscalDAO {
|
public class FiscalHibernateDAO extends GenericHibernateDAO<EsquemaAgrupacion, Integer> implements FiscalDAO {
|
||||||
public static final String DATE_FORMAT_FISCAL = "yyyyMMdd";
|
public static final String DATE_FORMAT_FISCAL = "yyyyMMdd";
|
||||||
|
|
||||||
private static Logger log = Logger.getLogger(FiscalHibernateDAO.class);
|
private static Logger log = Logger.getLogger(FiscalHibernateDAO.class);
|
||||||
|
@ -1624,10 +1626,10 @@ public class FiscalHibernateDAO implements FiscalDAO {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<ExportacaoECFTipoPRC> buscarRegistroECFTipoPRC(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado) {
|
public List<ExportacaoECFTipoPRC> buscarRegistroECFTipoPRC(Connection connection, final Date inicio, final Date fim, final Integer empresaId, final String cveestado) {
|
||||||
List<ExportacaoECFTipoPRC> retorno = new ArrayList<ExportacaoECFTipoPRC>();
|
final List<ExportacaoECFTipoPRC> retorno = new ArrayList<ExportacaoECFTipoPRC>();
|
||||||
|
|
||||||
StringBuilder sb = new StringBuilder();
|
final StringBuilder sb = new StringBuilder();
|
||||||
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(" 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(" from (");
|
||||||
|
|
||||||
|
@ -1665,81 +1667,86 @@ public class FiscalHibernateDAO implements FiscalDAO {
|
||||||
sb.append(" ) group by ecf, datamov, 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 {
|
try {
|
||||||
PreparedStatement ps = connection.prepareStatement(sb.toString());
|
getSession().doWork(new Work() {
|
||||||
ps.setLong(1, Long.valueOf(DateUtil.getStringDate(inicio, DATE_FORMAT_FISCAL)));
|
@Override
|
||||||
ps.setLong(2, Long.valueOf(DateUtil.getStringDate(fim, DATE_FORMAT_FISCAL)));
|
public void execute(Connection conn) throws SQLException {
|
||||||
ps.setLong(3, Long.valueOf(empresaId));
|
PreparedStatement ps = conn.prepareStatement(sb.toString());
|
||||||
ps.setString(4, cveestado);
|
ps.setLong(1, Long.valueOf(DateUtil.getStringDate(inicio, DATE_FORMAT_FISCAL)));
|
||||||
|
ps.setLong(2, Long.valueOf(DateUtil.getStringDate(fim, DATE_FORMAT_FISCAL)));
|
||||||
ResultSet rs = ps.executeQuery();
|
ps.setLong(3, Long.valueOf(empresaId));
|
||||||
|
ps.setString(4, cveestado);
|
||||||
ExportacaoECFTipoPRC registro = null;
|
|
||||||
|
|
||||||
Map<String, ExportacaoECFTipoPRC> group = new HashMap<String, ExportacaoECFTipoPRC>();
|
ResultSet rs = ps.executeQuery();
|
||||||
|
|
||||||
while (rs.next()) {
|
ExportacaoECFTipoPRC registro = null;
|
||||||
BigDecimal valorTotal = BigDecimal.valueOf(Double.valueOf(rs.getString("valortotal")) / 100);
|
|
||||||
|
Map<String, ExportacaoECFTipoPRC> group = new HashMap<String, ExportacaoECFTipoPRC>();
|
||||||
BigDecimal red_base_calc_icms = rs.getBigDecimal("red_base_calc_icms");
|
|
||||||
BigDecimal porc_red_municipal = rs.getBigDecimal("porc_red_municipal");
|
while (rs.next()) {
|
||||||
BigDecimal porc_red_estadual = rs.getBigDecimal("porc_red_estadual");
|
BigDecimal valorTotal = BigDecimal.valueOf(Double.valueOf(rs.getString("valortotal")) / 100);
|
||||||
BigDecimal tributacao_importacao = rs.getBigDecimal("tributacao_importacao");
|
|
||||||
BigDecimal valorBaseCalculoICMS = BigDecimal.ZERO;
|
BigDecimal red_base_calc_icms = rs.getBigDecimal("red_base_calc_icms");
|
||||||
|
BigDecimal porc_red_municipal = rs.getBigDecimal("porc_red_municipal");
|
||||||
if (red_base_calc_icms != null) {
|
BigDecimal porc_red_estadual = rs.getBigDecimal("porc_red_estadual");
|
||||||
valorBaseCalculoICMS = valorTotal.subtract(valorTotal.multiply(red_base_calc_icms.divide(BigDecimal.valueOf(100d))));
|
BigDecimal tributacao_importacao = rs.getBigDecimal("tributacao_importacao");
|
||||||
} else {
|
BigDecimal valorBaseCalculoICMS = BigDecimal.ZERO;
|
||||||
if (tributacao_importacao != null) {
|
|
||||||
if (rs.getString("estado_origem").equals(rs.getString("estado_destino"))) {
|
if (red_base_calc_icms != null) {
|
||||||
if (porc_red_municipal != null) {
|
valorBaseCalculoICMS = valorTotal.subtract(valorTotal.multiply(red_base_calc_icms.divide(BigDecimal.valueOf(100d))));
|
||||||
BigDecimal porc = tributacao_importacao.subtract(tributacao_importacao.multiply(porc_red_municipal.divide(BigDecimal.valueOf(100d))));
|
|
||||||
valorBaseCalculoICMS = valorTotal.multiply(porc.divide(BigDecimal.valueOf(100d)));
|
|
||||||
}
|
|
||||||
} else {
|
} else {
|
||||||
if (porc_red_estadual != null) {
|
if (tributacao_importacao != null) {
|
||||||
BigDecimal porc = tributacao_importacao.subtract(tributacao_importacao.multiply(porc_red_estadual.divide(BigDecimal.valueOf(100d))));
|
if (rs.getString("estado_origem").equals(rs.getString("estado_destino"))) {
|
||||||
valorBaseCalculoICMS = valorTotal.multiply(porc.divide(BigDecimal.valueOf(100d)));
|
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 = (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);
|
||||||
|
}
|
||||||
|
|
||||||
|
group.put(key, registro);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (Map.Entry<String, ExportacaoECFTipoPRC> entry : group.entrySet()) {
|
||||||
|
retorno.add(entry.getValue());
|
||||||
|
}
|
||||||
|
|
||||||
|
rs.close();
|
||||||
|
ps.close();
|
||||||
}
|
}
|
||||||
|
});
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
group.put(key, registro);
|
|
||||||
}
|
|
||||||
|
|
||||||
for (Map.Entry<String, ExportacaoECFTipoPRC> entry : group.entrySet()) {
|
|
||||||
retorno.add(entry.getValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
rs.close();
|
|
||||||
ps.close();
|
|
||||||
|
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error(e.getMessage(), e);
|
log.error(e.getMessage(), e);
|
||||||
}
|
}
|
||||||
|
|
||||||
return retorno;
|
return retorno;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -55,8 +55,6 @@ public class ExportacaoFiscal {
|
||||||
writer.print("-- " + tempo + UtiliteriasFiscal.QUEBRA_LINHA);
|
writer.print("-- " + tempo + UtiliteriasFiscal.QUEBRA_LINHA);
|
||||||
}
|
}
|
||||||
|
|
||||||
long begin = Calendar.getInstance().getTimeInMillis();
|
|
||||||
|
|
||||||
adicionarRegistroECFTipoCAB(writer, dataInicial, dataFinal, nomeEmpresa);
|
adicionarRegistroECFTipoCAB(writer, dataInicial, dataFinal, nomeEmpresa);
|
||||||
// adicionarRegistroECFTipoCFC(writer, listaRegistroECFTipoCFC);
|
// adicionarRegistroECFTipoCFC(writer, listaRegistroECFTipoCFC);
|
||||||
// adicionarRegistroECFTipoCCF(writer, listaRegistroECFTipoCCF);
|
// adicionarRegistroECFTipoCCF(writer, listaRegistroECFTipoCCF);
|
||||||
|
@ -64,8 +62,6 @@ public class ExportacaoFiscal {
|
||||||
// adicionarRegistroECFTipoPRC(writer, listaRegistroECFTipoPRC);
|
// adicionarRegistroECFTipoPRC(writer, listaRegistroECFTipoPRC);
|
||||||
adicionarRegistroECF(writer, listaRegistroECFTipoCFC, listaRegistroECFTipoCCF, listaRegistroECFTipoICF, listaRegistroECFTipoPRC);
|
adicionarRegistroECF(writer, listaRegistroECFTipoCFC, listaRegistroECFTipoCCF, listaRegistroECFTipoICF, listaRegistroECFTipoPRC);
|
||||||
|
|
||||||
writer.print("-- " + infoTempo("Arquivo", begin) + UtiliteriasFiscal.QUEBRA_LINHA);
|
|
||||||
|
|
||||||
writer.close();
|
writer.close();
|
||||||
|
|
||||||
return arquivo;
|
return arquivo;
|
||||||
|
@ -76,13 +72,6 @@ public class ExportacaoFiscal {
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
private String infoTempo(final String descricao, final Long inicio) {
|
|
||||||
final Long termino = Calendar.getInstance().getTimeInMillis();
|
|
||||||
final Long tempo = termino - inicio;
|
|
||||||
|
|
||||||
return descricao + ": " + String.format("%dm %ds", TimeUnit.MILLISECONDS.toMinutes(tempo), TimeUnit.MILLISECONDS.toSeconds(tempo) - TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(tempo)));
|
|
||||||
}
|
|
||||||
|
|
||||||
private void adicionarRegistroECFTipoCAB(final PrintWriter writer, final Date dataInicial, final Date dataFinal, final String nomeEmpresa) {
|
private void adicionarRegistroECFTipoCAB(final PrintWriter writer, final Date dataInicial, final Date dataFinal, final String nomeEmpresa) {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
|
|
Loading…
Reference in New Issue