Bloqueio de cadastro duplicado AIDF fixes bug#AL-4011

master
fabio.fbarreto 2024-03-15 20:14:24 -03:00
parent 259ac0239e
commit aefae1bed8
5 changed files with 42 additions and 10 deletions

View File

@ -3,7 +3,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>br.com.rjconsultores</groupId>
<artifactId>ModelWeb</artifactId>
<version>1.42.0</version>
<version>1.42.1</version>
<distributionManagement>
<repository>

View File

@ -13,7 +13,7 @@ public interface AidfDAO extends GenericDAO<Aidf, Long> {
public List<Aidf> buscaAidfsPorEmpresas(List<Empresa> empresas);
public List<AidfVo> obtenerAidfFromSerieDocfiscal(String serie, String docfiscal, Connection conn);
public List<AidfVo> obtenerAidfFromSerieDocfiscal(String serie, String subSerie, String docfiscal, Connection conn);
public Boolean existeAidfComCodFiscalEEstado(Long idAidf, Integer especieId, String docFiscal, Estado estado);

View File

@ -43,7 +43,7 @@ public class AidfHibernateDAO extends GenericHibernateDAO<Aidf, Long> implements
}
@Override
public List<AidfVo> obtenerAidfFromSerieDocfiscal(String serie, String docfiscal, Connection conn) {
public List<AidfVo> obtenerAidfFromSerieDocfiscal(String serie, String subSerie, String docfiscal, Connection conn) {
PreparedStatement pstmt = null;
ResultSet rs = null;
@ -68,8 +68,15 @@ public class AidfHibernateDAO extends GenericHibernateDAO<Aidf, Long> implements
sb.append(" x.SUBSERIE, ");
sb.append(" x.CNPJ, ");
sb.append(" x.TIPOVALIDAVENTA ");
sb.append(" from AIDF x where x.SERIE like '" + serie + "' ");
sb.append(" from AIDF x where x.SERIE = '" + serie + "' ");
if( !subSerie.equals("") ) {
sb.append(" AND x.SUBSERIE = '" + subSerie + "' ");
}
if( docfiscal != null ) {
sb.append(" and REGEXP_REPLACE( x.docfiscal ,'[^[:alnum:]'' '']', NULL) like '" + docfiscal + "' ");
}
sb.append(" and x.activo = 1 ");
List<AidfVo> ls = new ArrayList<AidfVo>();
@ -83,6 +90,7 @@ public class AidfHibernateDAO extends GenericHibernateDAO<Aidf, Long> implements
a.setAidfId(rs.getLong(1));
a.setDocfiscal(rs.getString(3));
a.setSerie(rs.getString(5));
a.setSubserie(rs.getString(17)!=null?rs.getString(17):"");
a.setForminicial(rs.getString(6));
a.setFormfinal(rs.getString(7));
ls.add(a);
@ -107,6 +115,7 @@ public class AidfHibernateDAO extends GenericHibernateDAO<Aidf, Long> implements
}
}
return ls;
};

View File

@ -33,7 +33,9 @@ public interface AidfService {
public Long validarDocFiscalSerieFormInicialFinal(Aidf entidad, Connection conn);
public List<AidfVo> obtenerAidfFromSerieDocfiscal(String serie, String docfiscal, Connection conn);
public Long validarSerieFormInicialFinal(Aidf entidad, Connection conn);
public List<AidfVo> obtenerAidfFromSerieDocfiscal(String serie, String subSerie, String docfiscal, Connection conn);
public Boolean validarDocFiscalPorEstado(Long idAidf, Integer especieId, String docFiscal, Estado estado);

View File

@ -97,13 +97,14 @@ public class AidfServiceImpl implements AidfService {
return aidfDAO.buscaAidfsPorEmpresaAgencia(empresa, pontoVenda);
}
public List<AidfVo> obtenerAidfFromSerieDocfiscal(String serie, String docfiscal, Connection conn) {
return aidfDAO.obtenerAidfFromSerieDocfiscal(serie, docfiscal, conn);
public List<AidfVo> obtenerAidfFromSerieDocfiscal(String serie, String subSerie, String docfiscal, Connection conn) {
return aidfDAO.obtenerAidfFromSerieDocfiscal(serie, subSerie, docfiscal, conn);
}
public Long validarDocFiscalSerieFormInicialFinal(Aidf entidad, Connection conn) {
List<AidfVo> list = obtenerAidfFromSerieDocfiscal(entidad.getSerie(), entidad.getDocfiscal().replaceAll("[^a-zA-Z0-9]+", ""), conn);
List<AidfVo> list = obtenerAidfFromSerieDocfiscal(
entidad.getSerie(), null, entidad.getDocfiscal().replaceAll("[^a-zA-Z0-9]+", ""), conn);
for (AidfVo aidf : list) {
// desconsiderar o próprio ID, caso contrário o erro de validação sempre acontece qdo o registro é editado.
@ -121,6 +122,26 @@ public class AidfServiceImpl implements AidfService {
return -1l;
}
public Long validarSerieFormInicialFinal(Aidf entidad, Connection conn) {
List<AidfVo> list = obtenerAidfFromSerieDocfiscal(entidad.getSerie(), entidad.getSubserie(), null, conn);
for (AidfVo aidf : list) {
// desconsiderar o próprio ID, caso contrário o erro de validação sempre acontece qdo o registro é editado.
if ((entidad.getAidfId() == null) || (aidf.getAidfId().compareTo(entidad.getAidfId()) != 0)) {
if (aidf.getSerie().trim().equals(entidad.getSerie().trim())) {
if (entidad.getSubserie() != null && aidf.getSubserie().equals(entidad.getSubserie())) {
if ((Long.parseLong(entidad.getForminicial()) >= Long.parseLong(aidf.getForminicial()) && Long.parseLong(entidad.getForminicial()) <= Long.parseLong(aidf.getFormfinal()))
|| (Long.parseLong(entidad.getFormfinal()) >= Long.parseLong(aidf.getForminicial()) && Long.parseLong(entidad.getFormfinal()) <= Long.parseLong(aidf.getFormfinal()))) {
return aidf.getAidfId();
}
}
}
}
}
return -1l;
}
public Boolean validarDocFiscalPorEstado(Long idAidf, Integer especieId, String docFiscal, Estado estado) {
return aidfDAO.existeAidfComCodFiscalEEstado(idAidf, especieId, docFiscal, estado);
}