fixes bug#23996

dev: VALDEVIR
qua: 

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@110362 d1611594-4594-4d17-8e1d-87c2c4800839
master
celio 2022-01-14 12:51:27 +00:00
parent 40b6dcb260
commit fcade5d279
3 changed files with 35 additions and 3 deletions

View File

@ -6,6 +6,7 @@ public interface CtrlSerieBPeDAO extends GenericDAO<CtrlSerieBPe, Long> {
public Boolean gerarSeqSerieBPe(Integer empresaId, String estado, Integer minvalue) throws RuntimeException;
public Integer buscarSequencia(Integer empresaId, String estado);
public Integer buscarSerieEmb(Integer empresaId, String estado) throws RuntimeException;
public CtrlSerieBPe buscarPorEmpresaEstado(Integer empresaId, Integer estadoId);

View File

@ -72,6 +72,33 @@ public class CtrlSerieBPeHibernateDAO extends GenericHibernateDAO<CtrlSerieBPe,
return retorno;
}
public Integer buscarSerieEmb(Integer empresaId, String estadoId) throws RuntimeException {
log.info(String.format("Conferindo sequence empresaId:%s, estado:%s",empresaId,estadoId));
try {
StringBuilder sb = new StringBuilder();
sb.append("select se.serie ");
sb.append("from CtrlSerieEmbarcada se ");
sb.append("where se.activo = 1 ");
sb.append("and se.empresa.empresaId = :empresaId ");
sb.append("and se.estado.estadoId = :estadoId ");
sb.append(" order by cast(se.serie as integer) DESC ");
Query qry = getSession().createQuery(sb.toString());
qry.setLong("empresaId", empresaId);
qry.setString("estadoId", estadoId);
qry.setMaxResults(1);
Integer serie = Integer.valueOf((String) (qry.uniqueResult() == null ? "1" : qry.uniqueResult()));
return (serie == 0 ? 1 : serie);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
return null;
}
public Integer buscarSequencia(Integer empresaId, String estado) {
Integer retorno = null;
@ -121,10 +148,12 @@ public class CtrlSerieBPeHibernateDAO extends GenericHibernateDAO<CtrlSerieBPe,
sb.append("SELECT ctrl ");
sb.append("FROM CtrlSerieBPe ctrl ");
sb.append("WHERE ctrl.activo = 1 AND ctrl.empresa.empresaId = :empresaId AND ctrl.estado.estadoId = :estadoId ");
sb.append(" order by cast(ctrl.serie as integer) DESC ");
Query qr = getSession().createQuery(sb.toString());
qr.setInteger("empresaId", empresaId);
qr.setInteger("estadoId", estadoId);
qr.setMaxResults(1);
return (CtrlSerieBPe) qr.uniqueResult();
}

View File

@ -53,10 +53,12 @@ public class ControleSerieEmbarcadaServiceImpl implements ControleSerieEmbarcada
// Caso não haja reaproveitamento de série, devo buscar a próxima série disponível na sequência padrão
if (serieembarcada == null) {
log.info("BuscarSerieEmbarcada :: Reaproveitamento nao disponivel");
Integer serieVlmax, SerieEmbarcada, serieBpe, serie;
CtrlSerieBPe ctrlSerieBpe = ctrlSerieBPeDAO.buscarPorEmpresaEstado(controleSerieEmbarcada.getEmpresa().getEmpresaId(), controleSerieEmbarcada.getEstado().getEstadoId());
Integer serie = (ctrlSerieBpe == null ? 1 : Integer.valueOf(ctrlSerieBpe.getSerie()) + 1);
serieBpe = Integer.valueOf(ctrlSerieBpe.getSerie());
SerieEmbarcada = ctrlSerieBPeDAO.buscarSerieEmb(controleSerieEmbarcada.getEmpresa().getEmpresaId(), controleSerieEmbarcada.getEstado().getEstadoId().toString());
serieVlmax = (serieBpe < SerieEmbarcada ? SerieEmbarcada : serieBpe);
serie = (serieVlmax == null ? 1 : serieVlmax + 1);
log.info(String.format("BuscarSerieEmbarcada :: Serie em uso [%d]", serie));