From c40fd0a8b71fb4040efad786d764cbc3b391839c Mon Sep 17 00:00:00 2001 From: julio Date: Mon, 10 Nov 2014 12:55:10 +0000 Subject: [PATCH] Automatizar a checagem do folio para empresa que usa impressora fiscal (bug #5785) Tempo: 05 horas git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@39309 d1611594-4594-4d17-8e1d-87c2c4800839 --- .../service/AutorizaFolioService.java | 5 +- .../impl/AutorizaFolioServiceImpl.java | 85 +++++++++---------- .../service/impl/EstacionServiceImpl.java | 23 ++++- 3 files changed, 63 insertions(+), 50 deletions(-) diff --git a/src/com/rjconsultores/ventaboletos/service/AutorizaFolioService.java b/src/com/rjconsultores/ventaboletos/service/AutorizaFolioService.java index 8b4227d56..262d3d588 100644 --- a/src/com/rjconsultores/ventaboletos/service/AutorizaFolioService.java +++ b/src/com/rjconsultores/ventaboletos/service/AutorizaFolioService.java @@ -3,12 +3,13 @@ package com.rjconsultores.ventaboletos.service; import com.rjconsultores.ventaboletos.entidad.Aidf; import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.Estacion; +import com.rjconsultores.ventaboletos.entidad.EstacionImpresora; import com.rjconsultores.ventaboletos.entidad.TipoMovimentacion; public interface AutorizaFolioService { - + public Boolean noChequeFolioPreimpresos(Aidf aidf, Estacion origem, Estacion destino, String numfolioinicial, String numfoliofinal, String numseriepreimpresa, Empresa empresaUsuario, TipoMovimentacion tipoMovimentacion); - public Boolean noChequeFolioPreimpresos(Estacion estacion); + public String noChequeFolioPreimpresos(EstacionImpresora estacionImpresora, boolean isImpressoraFiscal); } diff --git a/src/com/rjconsultores/ventaboletos/service/impl/AutorizaFolioServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/AutorizaFolioServiceImpl.java index f22f334bb..2e34e7324 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/AutorizaFolioServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/AutorizaFolioServiceImpl.java @@ -3,6 +3,7 @@ package com.rjconsultores.ventaboletos.service.impl; import java.util.Calendar; import java.util.Date; +import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.math.NumberUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -45,38 +46,36 @@ public class AutorizaFolioServiceImpl implements AutorizaFolioService { private FolioPreimpresoService folioPreimpresoService; @Override - public Boolean noChequeFolioPreimpresos(Aidf aidf, Estacion origem, Estacion destino, String numfolioinicial, String numfoliofinal, String numseriepreimpresa, + public Boolean noChequeFolioPreimpresos(Aidf aidf, Estacion origem, Estacion destino, String numfolioinicial, String numfoliofinal, String numseriepreimpresa, Empresa empresaUsuario, TipoMovimentacion tipoMovimentacion) { - if(TipoMovimentacion.TIPO_ENVIO == tipoMovimentacion.getTipomovimentacionId() || - TipoMovimentacion.TIPO_TRANSFERENCIA == tipoMovimentacion.getTipomovimentacionId()){ - + if (TipoMovimentacion.TIPO_ENVIO == tipoMovimentacion.getTipomovimentacionId() || + TipoMovimentacion.TIPO_TRANSFERENCIA == tipoMovimentacion.getTipomovimentacionId()) { + FolioPreimpreso folio = folioPreimpresoService.buscaFolioPreImpressoEstacionImpresora(destino, empresaUsuario); RequisicionBoleto requisicionBoleto = geraRequisicionBoleto(aidf, destino, empresaUsuario); AbastoBoleto abastoBoleto = geraAbastoBoleto(requisicionBoleto); DetAbastoBoleto detAbastoBoleto = geraDetAbastoBoleto(abastoBoleto, numfolioinicial, numfoliofinal, numseriepreimpresa); actualizaStatusRequisicion(requisicionBoleto); - + if (folio == null) { - FolioPreimpreso folioPreimpreso = geraFolioPreimpreso(detAbastoBoleto, numfolioinicial); if (folioPreimpreso.getFoliopreimpresoId() == null) return Boolean.FALSE; - - } else { + + } else { actualizaFolioPreimpreso(folio, numseriepreimpresa, numfolioinicial); } } - - if(TipoMovimentacion.TIPO_TRANSFERENCIA == tipoMovimentacion.getTipomovimentacionId() || + + if (TipoMovimentacion.TIPO_TRANSFERENCIA == tipoMovimentacion.getTipomovimentacionId() || TipoMovimentacion.TIPO_VOLVER == tipoMovimentacion.getTipomovimentacionId() || TipoMovimentacion.TIPO_PERDIDO == tipoMovimentacion.getTipomovimentacionId()) - + detAbastoBoletoService.desabilitaDetAbastos(origem, numfolioinicial, numfoliofinal, numseriepreimpresa); - - + return Boolean.TRUE; } @@ -103,10 +102,6 @@ public class AutorizaFolioServiceImpl implements AutorizaFolioService { private DetAbastoBoleto geraDetAbastoBoleto(AbastoBoleto abastoBoleto, String numfolioinicial, String numfoliofinal, String numseriepreimpresa) { Integer statusoperacion = 1; -// String numseriepreimpresa = abastoBoleto.getEstacion().getEstacionId().toString() + abastoBoleto.getEmpresa().getEmpresaId().toString(); -// String numfolioinicial = INICIO_FOLIO.toString(); -// String numfoliofinal = MAX_CANT_FOLIOS.toString(); - Long nummovimiento = detAbastoBoletoService.getSecuencia(); DetAbastoBoleto detAbastoBoleto = new DetAbastoBoleto(); @@ -121,7 +116,7 @@ public class AutorizaFolioServiceImpl implements AutorizaFolioService { return detAbastoBoletoService.suscribir(detAbastoBoleto); } - + private void actualizaStatusRequisicion(RequisicionBoleto requisicionBoleto) { requisicionBoleto.setStatusenvio(Boolean.FALSE); requisicionBoletoService.actualizacion(requisicionBoleto); @@ -142,47 +137,45 @@ public class AutorizaFolioServiceImpl implements AutorizaFolioService { return folioPreimpresoService.suscribir(folioPreimpreso); } - + private FolioPreimpreso actualizaFolioPreimpreso(FolioPreimpreso folioPreimpreso, String serieFoliopreimpreso, String numfoliopreimpreso) { - + folioPreimpreso.setFoliopreimpreso(numfoliopreimpreso); folioPreimpreso.setNumeserie(serieFoliopreimpreso); return folioPreimpresoService.actualizacion(folioPreimpreso); } - @Override - public Boolean noChequeFolioPreimpresos(Estacion estacion) { + public String noChequeFolioPreimpresos(EstacionImpresora estacionImpresora, boolean isImpressoraFiscal) { - - for (EstacionImpresora estacionImpresora : estacion.getLsEstacionImpresora()) { - Empresa empresa = estacionImpresora .getEmpresa(); + Empresa empresa = estacionImpresora.getEmpresa(); + FolioPreimpreso folio = folioPreimpresoService.buscaFolioPreImpressoEstacionImpresora(estacionImpresora.getEstacion(), empresa); + + // condição para qd o folio foi gerado indevidamente pelo cliente de venda. + // antes de a rotina abaixo ter sido executada se o numserie é 0, é um folio inválido + if ((folio != null) && (folio.getNumeserie().equals("0"))) { + folioPreimpresoService.borrar(folio); + folio = null; + } + + if ((folio != null) && isImpressoraFiscal) { + return "estacionServiceImpl.msg.noChequeFolioPreimpresos"; + } + + if (folio == null) { + RequisicionBoleto requisicionBoleto = geraRequisicionBoleto(estacionImpresora.getEstacion(), empresa); + AbastoBoleto abastoBoleto = geraAbastoBoleto(requisicionBoleto); + DetAbastoBoleto detAbastoBoleto = geraDetAbastoBoleto(abastoBoleto); + actualizaStatusRequisicion(requisicionBoleto); - FolioPreimpreso folio = folioPreimpresoService.buscaFolioPreImpressoEstacionImpresora(estacion, empresa); - - //condição para qd o folio foi gerado indevidamente pelo cliente de venda. Antes de a rotina abaixo ter sido executada - //se o numserie é 0, é um folio inválido - if ( (folio != null) && (folio.getNumeserie().equals("0"))) { - folioPreimpresoService.borrar(folio); - folio = null; - } - - if ( folio == null ) { - - RequisicionBoleto requisicionBoleto = geraRequisicionBoleto(estacion, empresa); - AbastoBoleto abastoBoleto = geraAbastoBoleto(requisicionBoleto); - DetAbastoBoleto detAbastoBoleto = geraDetAbastoBoleto(abastoBoleto); - actualizaStatusRequisicion(requisicionBoleto); - FolioPreimpreso folioPreimpreso = geraFolioPreimpreso(detAbastoBoleto); - - if (folioPreimpreso.getFoliopreimpresoId() == null) { - return Boolean.FALSE; - } + FolioPreimpreso folioPreimpreso = geraFolioPreimpreso(detAbastoBoleto); + if (folioPreimpreso.getFoliopreimpresoId() == null) { + return "MSG.Error"; } } - return Boolean.TRUE; + return StringUtils.EMPTY; } private RequisicionBoleto geraRequisicionBoleto(Estacion estacion, Empresa empresa) { diff --git a/src/com/rjconsultores/ventaboletos/service/impl/EstacionServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/EstacionServiceImpl.java index 25cbf2992..d36f6a321 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/EstacionServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/EstacionServiceImpl.java @@ -7,12 +7,14 @@ package com.rjconsultores.ventaboletos.service.impl; import java.util.Calendar; import java.util.List; +import org.apache.commons.lang.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import com.rjconsultores.ventaboletos.dao.EstacionDAO; import com.rjconsultores.ventaboletos.entidad.Estacion; +import com.rjconsultores.ventaboletos.entidad.EstacionImpresora; import com.rjconsultores.ventaboletos.entidad.EstacionSitef; import com.rjconsultores.ventaboletos.entidad.PuntoVenta; import com.rjconsultores.ventaboletos.exception.BusinessException; @@ -34,6 +36,8 @@ public class EstacionServiceImpl implements EstacionService { @Autowired private AutorizaFolioService autorizaFolioService; + public static final String BEMATECH_FISCAL = "BEMATECHFISCAL"; + public List obtenerTodos() { return estacionDAO.obtenerTodos(); } @@ -79,18 +83,33 @@ public class EstacionServiceImpl implements EstacionService { estacion.setFecmodif(Calendar.getInstance().getTime()); estacion.setActivo(Boolean.TRUE); + String errorNoChequeFolio = null; + for (EstacionImpresora ei : estacion.getLsEstacionImpresora()) { + if (ApplicationProperties.getInstance().generarRotinaFolios()) + errorNoChequeFolio = autorizaFolioService.noChequeFolioPreimpresos(ei, false); + + if (validacionImpressoraFiscal(ei)) + errorNoChequeFolio = autorizaFolioService.noChequeFolioPreimpresos(ei, true); + } + if (estacion.getEstacionId() == null) { estacion = estacionDAO.suscribir(estacion); } else { estacion = estacionDAO.actualizacion(estacion); } - if (ApplicationProperties.getInstance().generarRotinaFolios()) { - autorizaFolioService.noChequeFolioPreimpresos(estacion); + if (StringUtils.isNotBlank(errorNoChequeFolio)) { + throw new BusinessException(errorNoChequeFolio); } return estacion; + } + private boolean validacionImpressoraFiscal(final EstacionImpresora ei) { + if (ei.getNombImpresora().equals(BEMATECH_FISCAL)) + return true; + else + return false; } private void validarEstoqueUpdate(Estacion estacion) throws BusinessException {