julio 2017-05-26 20:17:58 +00:00
parent a6598ff990
commit a4a01bdc51
4 changed files with 165 additions and 49 deletions

View File

@ -53,5 +53,8 @@ public interface FiscalDAO {
public List<ImpressaoRMD> getRegistroImpressaoRMDTipoECF(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado, String rmd, String folio);
public void gravarRMDBoleto(Connection connection, List<ImpressaoRMD> rmds, Aidf aidf);
public void gravarRMDBoleto(Connection connection, List<ImpressaoRMD> rmds, Aidf aidf, String folio);
public void cancelarRMDBoleto(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado, Aidf aidf, String folio);
}

View File

@ -2363,15 +2363,52 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
}
@Override
public void gravarRMDBoleto(Connection connection, List<ImpressaoRMD> rmds, Aidf aidf) {
public void cancelarRMDBoleto(Connection connection, Date inicio, Date fim, Integer empresaId, String cveestado, Aidf aidf, String folio) {
String def = null;
for (DetalhadoRMD brp : buscarRegistroImpressaoRMD(connection, inicio, fim, empresaId, cveestado, aidf.getAidfId(), folio, false, false, true)) {
StringBuilder sb = new StringBuilder();
PreparedStatement pstmt = null;
try {
sb.append(" update boleto set rmd_id = ").append(def).append(", ");
sb.append(" foliormd = ").append(def).append(", ");
sb.append(" fecmodif = SYSDATE, usuario_id = ").append(UsuarioLogado.getUsuarioLogado().getUsuarioId());
sb.append(" where boleto_id = ").append(brp.getBoletoId());
pstmt = connection.prepareStatement(sb.toString());
pstmt.executeUpdate();
} catch (Exception e) {
log.error("", e);
} finally {
try {
pstmt.close();
} catch (Exception e) {
log.error("", e);
}
}
}
}
@Override
public void gravarRMDBoleto(Connection connection, List<ImpressaoRMD> rmds, Aidf aidf, String folio) {
int cont = 0;
int rmdIterate = Integer.parseInt(folio);
for (ImpressaoRMD imp : rmds) {
if (cont > 28) {
rmdIterate++;
cont = 0;
}
for (DetalhadoRMD det : imp.getDetalhada()) {
StringBuilder sb = new StringBuilder();
PreparedStatement pstmt = null;
try {
sb.append(" update boleto set rmd_id = ").append(aidf.getAidfId()).append(", ");
sb.append(" foliormd = ").append(rmdIterate).append(", ");
sb.append(" fecmodif = SYSDATE, usuario_id = ").append(UsuarioLogado.getUsuarioLogado().getUsuarioId());
sb.append(" where boleto_id = ").append(det.getBoletoId());
pstmt = connection.prepareStatement(sb.toString());
@ -2387,6 +2424,8 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
}
}
}
cont++;
}
}
@ -2404,7 +2443,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
ImpressaoRMD impRmd = null;
for (DetalhadoRMD brp : buscarRegistroImpressaoRMD(connection, inicio, fim, empresaId, cveestado, false)) {
for (DetalhadoRMD brp : buscarRegistroImpressaoRMD(connection, inicio, fim, empresaId, cveestado, null, null, true, false, false)) {
if (serie == null) {
impRmd = new ImpressaoRMD(brp.getEmpresa(), brp.getEnderecoEmpresa(), brp.getCnpjEmpresa(), brp.getIeEmpresa(),
@ -2439,7 +2478,6 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
BigDecimal baseCalculo = impRmd.getBaseCalculo() == null ? BigDecimal.ZERO : impRmd.getBaseCalculo().add(
brp.getTarifa() == null ? BigDecimal.ZERO : brp.getTarifa());
// BigDecimal aliquota = brp.getIcmsInterestadual();
BigDecimal aliquota = brp.getTributacaoImportacao();
BigDecimal icms = baseCalculo.multiply(aliquota.divide(BigDecimal.TEN.multiply(BigDecimal.TEN)));
@ -2473,54 +2511,33 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
// IMPRESSAO RMD ECF
String serie = null;
Date data = null;
int anteriorFolio = 0;
String datamov = null;
ImpressaoRMD impRmd = null;
for (DetalhadoRMD brp : buscarRegistroImpressaoRMD(connection, inicio, fim, empresaId, cveestado, true)) {
for (DetalhadoRMD brp : buscarRegistroImpressaoRMD(connection, inicio, fim, empresaId, cveestado, null, null, false, true, false)) {
if (serie == null) {
impRmd = new ImpressaoRMD(brp.getEmpresa(), brp.getEnderecoEmpresa(), brp.getCnpjEmpresa(), brp.getIeEmpresa(),
brp.getFechorVenta(), rmd, "SERVIÇO DE TRANSPORTE", "ECF", brp.getEcf(), brp.getEstadoOrigem(), folio);
serie = brp.getEcf();
data = brp.getFechorVenta();
datamov = brp.getDatamov();
} else {
} else if (!(serie.equals(brp.getEcf()) && datamov.equals(brp.getDatamov()))) {
impRmd.setNumero(brp.getCcf());
list.add(impRmd);
if (serie.equals(brp.getEcf()) && data.equals(brp.getFechorVenta())) {
int coo = Integer.parseInt(brp.getCcf());
if (anteriorFolio + 1 == coo) {
} else {
impRmd.setNumero(brp.getCcf());
list.add(impRmd);
impRmd = new ImpressaoRMD(brp.getEmpresa(), brp.getEnderecoEmpresa(), brp.getCnpjEmpresa(), brp.getIeEmpresa(),
brp.getFechorVenta(), rmd, "SERVIÇO DE TRANSPORTE", "ECF", brp.getEcf(), brp.getEstadoOrigem(), folio);
serie = brp.getEcf();
data = brp.getFechorVenta();
}
} else {
impRmd.setNumero(brp.getCcf());
list.add(impRmd);
impRmd = new ImpressaoRMD(brp.getEmpresa(), brp.getEnderecoEmpresa(), brp.getCnpjEmpresa(), brp.getIeEmpresa(),
brp.getFechorVenta(), rmd, "SERVIÇO DE TRANSPORTE", "ECF", brp.getEcf(), brp.getEstadoOrigem(), folio);
serie = brp.getEcf();
data = brp.getFechorVenta();
}
impRmd = new ImpressaoRMD(brp.getEmpresa(), brp.getEnderecoEmpresa(), brp.getCnpjEmpresa(), brp.getIeEmpresa(),
brp.getFechorVenta(), rmd, "SERVIÇO DE TRANSPORTE", "ECF", brp.getEcf(), brp.getEstadoOrigem(), folio);
serie = brp.getEcf();
datamov = brp.getDatamov();
}
impRmd.getDetalhada().add(brp);
anteriorFolio = Integer.parseInt(brp.getCcf());
}
list.add(impRmd);
if (impRmd != null)
list.add(impRmd);
agruparImpressaoRMD(list);
return list;
@ -2572,24 +2589,34 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
return total;
}
public List<DetalhadoRMD> buscarRegistroImpressaoRMD(Connection connection, Date inicio, Date fim,
Integer empresaId, String cveestado, boolean isECF) {
public List<DetalhadoRMD> buscarRegistroImpressaoRMD(Connection connection, Date inicio, Date fim, Integer empresaId,
String cveestado, Long rmdId, String foliormd, boolean isManual, boolean isECF, boolean isCancelamento) {
List<DetalhadoRMD> list = new ArrayList<DetalhadoRMD>();
try {
String sql = null;
if (isECF) {
sql = getSqlImpressaoRMDTipoECF();
} else {
} else if (isManual) {
sql = getSqlImpressaoRMDTipoDVB();
} else if (isCancelamento) {
sql = getSqlCancelarRMDTipoECF();
}
PreparedStatement ps = connection.prepareStatement(sql);
ps.setLong(1, Long.valueOf(empresaId));
ps.setTimestamp(2, new java.sql.Timestamp(DateUtil.inicioFecha(inicio).getTime()));
ps.setTimestamp(3, new java.sql.Timestamp(DateUtil.fimFecha(fim).getTime()));
ps.setString(4, cveestado);
if (isCancelamento) {
ps.setLong(5, rmdId);
ps.setString(6, foliormd);
}
ResultSet rs = ps.executeQuery();
while (rs.next()) {
@ -2645,7 +2672,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
return list;
}
public String getSqlImpressaoRMDTipoDVB() {
private String getSqlImpressaoRMDTipoDVB() {
StringBuilder sql = new StringBuilder();
sql.append("select ");
sql.append(" b.boleto_id as boletoId, ");
@ -2726,7 +2753,7 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
return sql.toString();
}
public String getSqlImpressaoRMDTipoECF() {
private String getSqlImpressaoRMDTipoECF() {
StringBuilder sql = new StringBuilder();
sql.append("select ");
@ -2808,7 +2835,85 @@ public class FiscalHibernateDAO extends HibernateDaoSupport implements FiscalDAO
sql.append(" and b.empresacorrida_id = ? ");
sql.append(" and b.fechorventa between ? and ? ");
sql.append(" and coalesce(eos.cveestado, eo.cveestado) = ? ");
sql.append("order by estadoId, fechorVenta, ecf, coo ");
sql.append("order by estadoId, datamov, ecf, coo ");
return sql.toString();
}
private String getSqlCancelarRMDTipoECF() {
StringBuilder sql = new StringBuilder();
sql.append("select ");
sql.append(" b.boleto_id as boletoId, ");
sql.append(" b.numoperacion as numoperacion, ");
sql.append(" b.numseriepreimpresa as serieCompl, ");
sql.append(" b.numfoliopreimpreso as folio, ");
sql.append(" a.acfiscal as numAidf, ");
sql.append(" a.serie as serieAidf, ");
sql.append(" a.subserie as subSerieAidf, ");
sql.append(" trunc(b.fechorventa) as fechorVenta, ");
sql.append(" e.nombempresa as empresa, ");
sql.append(" e.cnpj as cnpjEmpresa, ");
sql.append(" e.logradouro || ', ' || e.numero || ' - ' || e.bairro || ', ' || ce.nombciudad ");
sql.append(" || ' - ' || ee.cveestado || ', ' || e.cep ");
sql.append(" as enderecoEmpresa, ");
sql.append(" pv.nombpuntoventa as nombPuntoVenta, ");
sql.append(" pv.numpuntoventa as numPuntoVenta, ");
sql.append(" ie.numinscricaoestadual as ieEmpresa, ");
sql.append(" coalesce(eos.estado_id, eo.estado_id) as estadoId, ");
sql.append(" coalesce(ei.icms, eo.icms) as icmsInterestadual, ");
sql.append(" ei.icmsim as icmsIntermunicipal, ");
sql.append(" coalesce(eos.cveestado, eo.cveestado) as estadoOrigem, ");
sql.append(" coalesce(eds.cveestado, ed.cveestado) as estadoDestino, ");
sql.append(" coalesce(cos.codibge, co.codibge) as municipioOrigem, ");
sql.append(" case when((coalesce(eos.cveestado, eo.cveestado)) = ");
sql.append(" (coalesce(eds.cveestado, ed.cveestado))) ");
sql.append(" then 0 else 1 ");
sql.append(" end as isInterEstadual, ");
sql.append(" ei.porcredbaseicms as redBaseCalcIcms, ");
sql.append(" ei.porcredmunicipal as porcRedMunicipal, ");
sql.append(" ei.porcredestadual as porcRedEstadual, ");
sql.append(" ei.tributacaoimportacao as tributacaoImportacao, ");
sql.append(" case when (coalesce(pos.regionmetropolitana_id, po.regionmetropolitana_id, -1) = ");
sql.append(" coalesce(pds.regionmetropolitana_id, pd.regionmetropolitana_id, -2)) ");
sql.append(" then 1 else 0 end as isenta, ");
sql.append(" coalesce(b.preciopagado, 0) as tarifa, ");
sql.append(" coalesce(b.importetaxaembarque, 0) as taxaEmbarque, ");
sql.append(" coalesce(b.importepedagio, 0) as pedagio, ");
sql.append(" coalesce(b.importeseguro, 0) as seguro, ");
sql.append(" coalesce(b.importeoutros, 0) as outros ");
sql.append("from boleto b ");
sql.append(" join empresa e on e.empresa_id = b.empresacorrida_id ");
sql.append(" join punto_venta pv on pv.puntoventa_id = b.puntoventa_id ");
sql.append(" join ciudad ce on ce.ciudad_id = e.ciudad_id ");
sql.append(" join estado ee on ee.estado_id = ce.estado_id ");
sql.append(" join parada po on po.parada_id = b.origen_id ");
sql.append(" join ciudad co on co.ciudad_id = po.ciudad_id ");
sql.append(" join estado eo on eo.estado_id = co.estado_id ");
sql.append(" join parada pd on pd.parada_id = b.destino_id ");
sql.append(" join ciudad cd on cd.ciudad_id = pd.ciudad_id ");
sql.append(" join estado ed on ed.estado_id = cd.estado_id ");
sql.append(" left join alias_servico s on s.origen_id = b.origen_id ");
sql.append(" and s.destino_id = b.destino_id and (s.corrida_id = b.corrida_id or s.corrida_id is null) ");
sql.append(" and s.ruta_id = b.ruta_id ");
sql.append(" left join parada pos on pos.parada_id = s.aliasorigen_id ");
sql.append(" left join ciudad cos on cos.ciudad_id = pos.ciudad_id ");
sql.append(" left join estado eos on eos.estado_id = cos.estado_id ");
sql.append(" left join parada pds on pds.parada_id = s.aliasdestino_id ");
sql.append(" left join ciudad cds on cds.ciudad_id = pds.ciudad_id ");
sql.append(" left join estado eds on eds.estado_id = cds.estado_id ");
sql.append(" join inscricao_estadual ie on e.empresa_id = ie.empresa_id ");
sql.append(" and ie.estado_id = coalesce(eos.estado_id, eo.estado_id) and ie.activo = 1 ");
sql.append(" join empresa_imposto ei on ei.empresa_id = b.empresacorrida_id ");
sql.append(" and ei.estado_id = coalesce(eos.estado_id, eo.estado_id) and ei.activo = 1 ");
sql.append(" left join aidf a on a.serie = substr(b.numseriepreimpresa, 1, 3) ");
sql.append(" and a.estado_id = (CASE WHEN s.aliasorigen_id IS NULL ");
sql.append(" THEN eo.estado_id ELSE eos.estado_id END) ");
sql.append("where b.empresacorrida_id = ? ");
sql.append(" and b.fechorventa between ? and ? ");
sql.append(" and coalesce(eos.cveestado, eo.cveestado) = ? ");
sql.append(" and b.rmd_id = ? ");
sql.append(" and b.foliormd = ? ");
return sql.toString();
}

View File

@ -51,5 +51,8 @@ public interface FiscalService {
public List<ImpressaoRMD> getRegistroImpressaoRMDTipoECF(Connection connection, Date inicio, Date fim, Empresa empresa, Estado estado, String rmd, String folio);
public void gravarRMDBoleto(Connection connection, List<ImpressaoRMD> rmds, Aidf aidf);
public void gravarRMDBoleto(Connection connection, List<ImpressaoRMD> rmds, Aidf aidf, String folio);
public void cancelarRMDBoleto(Connection connection, Date inicio, Date fim, Empresa empresa, Estado estado, Aidf aidf, String folio);
}

View File

@ -91,8 +91,13 @@ public class FiscalServiceImpl implements FiscalService {
}
@Override
public void gravarRMDBoleto(Connection connection, List<ImpressaoRMD> rmds, Aidf aidf) {
fiscalDAO.gravarRMDBoleto(connection, rmds, aidf);
public void gravarRMDBoleto(Connection connection, List<ImpressaoRMD> rmds, Aidf aidf, String folio) {
fiscalDAO.gravarRMDBoleto(connection, rmds, aidf, folio);
}
@Override
public void cancelarRMDBoleto(Connection connection, Date inicio, Date fim, Empresa empresa, Estado estado, Aidf aidf, String folio) {
fiscalDAO.cancelarRMDBoleto(connection, inicio, fim, empresa.getEmpresaId(), estado.getCveestado(), aidf, folio);
}
@Override