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
master
julio 2014-11-10 12:55:10 +00:00
parent 54ecf74e15
commit c40fd0a8b7
3 changed files with 63 additions and 50 deletions

View File

@ -3,12 +3,13 @@ package com.rjconsultores.ventaboletos.service;
import com.rjconsultores.ventaboletos.entidad.Aidf; import com.rjconsultores.ventaboletos.entidad.Aidf;
import com.rjconsultores.ventaboletos.entidad.Empresa; import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.Estacion; import com.rjconsultores.ventaboletos.entidad.Estacion;
import com.rjconsultores.ventaboletos.entidad.EstacionImpresora;
import com.rjconsultores.ventaboletos.entidad.TipoMovimentacion; import com.rjconsultores.ventaboletos.entidad.TipoMovimentacion;
public interface AutorizaFolioService { 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(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);
} }

View File

@ -3,6 +3,7 @@ package com.rjconsultores.ventaboletos.service.impl;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.math.NumberUtils; import org.apache.commons.lang.math.NumberUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
@ -48,8 +49,8 @@ public class AutorizaFolioServiceImpl implements AutorizaFolioService {
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) { Empresa empresaUsuario, TipoMovimentacion tipoMovimentacion) {
if(TipoMovimentacion.TIPO_ENVIO == tipoMovimentacion.getTipomovimentacionId() || if (TipoMovimentacion.TIPO_ENVIO == tipoMovimentacion.getTipomovimentacionId() ||
TipoMovimentacion.TIPO_TRANSFERENCIA == tipoMovimentacion.getTipomovimentacionId()){ TipoMovimentacion.TIPO_TRANSFERENCIA == tipoMovimentacion.getTipomovimentacionId()) {
FolioPreimpreso folio = folioPreimpresoService.buscaFolioPreImpressoEstacionImpresora(destino, empresaUsuario); FolioPreimpreso folio = folioPreimpresoService.buscaFolioPreImpressoEstacionImpresora(destino, empresaUsuario);
@ -59,7 +60,6 @@ public class AutorizaFolioServiceImpl implements AutorizaFolioService {
actualizaStatusRequisicion(requisicionBoleto); actualizaStatusRequisicion(requisicionBoleto);
if (folio == null) { if (folio == null) {
FolioPreimpreso folioPreimpreso = geraFolioPreimpreso(detAbastoBoleto, numfolioinicial); FolioPreimpreso folioPreimpreso = geraFolioPreimpreso(detAbastoBoleto, numfolioinicial);
if (folioPreimpreso.getFoliopreimpresoId() == null) if (folioPreimpreso.getFoliopreimpresoId() == null)
@ -70,13 +70,12 @@ public class AutorizaFolioServiceImpl implements AutorizaFolioService {
} }
} }
if(TipoMovimentacion.TIPO_TRANSFERENCIA == tipoMovimentacion.getTipomovimentacionId() || if (TipoMovimentacion.TIPO_TRANSFERENCIA == tipoMovimentacion.getTipomovimentacionId() ||
TipoMovimentacion.TIPO_VOLVER == tipoMovimentacion.getTipomovimentacionId() || TipoMovimentacion.TIPO_VOLVER == tipoMovimentacion.getTipomovimentacionId() ||
TipoMovimentacion.TIPO_PERDIDO == tipoMovimentacion.getTipomovimentacionId()) TipoMovimentacion.TIPO_PERDIDO == tipoMovimentacion.getTipomovimentacionId())
detAbastoBoletoService.desabilitaDetAbastos(origem, numfolioinicial, numfoliofinal, numseriepreimpresa); detAbastoBoletoService.desabilitaDetAbastos(origem, numfolioinicial, numfoliofinal, numseriepreimpresa);
return Boolean.TRUE; return Boolean.TRUE;
} }
@ -103,10 +102,6 @@ public class AutorizaFolioServiceImpl implements AutorizaFolioService {
private DetAbastoBoleto geraDetAbastoBoleto(AbastoBoleto abastoBoleto, String numfolioinicial, String numfoliofinal, String numseriepreimpresa) { private DetAbastoBoleto geraDetAbastoBoleto(AbastoBoleto abastoBoleto, String numfolioinicial, String numfoliofinal, String numseriepreimpresa) {
Integer statusoperacion = 1; 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(); Long nummovimiento = detAbastoBoletoService.getSecuencia();
DetAbastoBoleto detAbastoBoleto = new DetAbastoBoleto(); DetAbastoBoleto detAbastoBoleto = new DetAbastoBoleto();
@ -151,38 +146,36 @@ public class AutorizaFolioServiceImpl implements AutorizaFolioService {
return folioPreimpresoService.actualizacion(folioPreimpreso); return folioPreimpresoService.actualizacion(folioPreimpreso);
} }
@Override @Override
public Boolean noChequeFolioPreimpresos(Estacion estacion) { public String noChequeFolioPreimpresos(EstacionImpresora estacionImpresora, boolean isImpressoraFiscal) {
Empresa empresa = estacionImpresora.getEmpresa();
FolioPreimpreso folio = folioPreimpresoService.buscaFolioPreImpressoEstacionImpresora(estacionImpresora.getEstacion(), empresa);
for (EstacionImpresora estacionImpresora : estacion.getLsEstacionImpresora()) { // condição para qd o folio foi gerado indevidamente pelo cliente de venda.
Empresa empresa = estacionImpresora .getEmpresa(); // 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;
}
FolioPreimpreso folio = folioPreimpresoService.buscaFolioPreImpressoEstacionImpresora(estacion, empresa); if ((folio != null) && isImpressoraFiscal) {
return "estacionServiceImpl.msg.noChequeFolioPreimpresos";
}
//condição para qd o folio foi gerado indevidamente pelo cliente de venda. Antes de a rotina abaixo ter sido executada if (folio == null) {
//se o numserie é 0, é um folio inválido RequisicionBoleto requisicionBoleto = geraRequisicionBoleto(estacionImpresora.getEstacion(), empresa);
if ( (folio != null) && (folio.getNumeserie().equals("0"))) { AbastoBoleto abastoBoleto = geraAbastoBoleto(requisicionBoleto);
folioPreimpresoService.borrar(folio); DetAbastoBoleto detAbastoBoleto = geraDetAbastoBoleto(abastoBoleto);
folio = null; actualizaStatusRequisicion(requisicionBoleto);
}
if ( folio == null ) { FolioPreimpreso folioPreimpreso = geraFolioPreimpreso(detAbastoBoleto);
if (folioPreimpreso.getFoliopreimpresoId() == null) {
RequisicionBoleto requisicionBoleto = geraRequisicionBoleto(estacion, empresa); return "MSG.Error";
AbastoBoleto abastoBoleto = geraAbastoBoleto(requisicionBoleto);
DetAbastoBoleto detAbastoBoleto = geraDetAbastoBoleto(abastoBoleto);
actualizaStatusRequisicion(requisicionBoleto);
FolioPreimpreso folioPreimpreso = geraFolioPreimpreso(detAbastoBoleto);
if (folioPreimpreso.getFoliopreimpresoId() == null) {
return Boolean.FALSE;
}
} }
} }
return Boolean.TRUE;
return StringUtils.EMPTY;
} }
private RequisicionBoleto geraRequisicionBoleto(Estacion estacion, Empresa empresa) { private RequisicionBoleto geraRequisicionBoleto(Estacion estacion, Empresa empresa) {

View File

@ -7,12 +7,14 @@ package com.rjconsultores.ventaboletos.service.impl;
import java.util.Calendar; import java.util.Calendar;
import java.util.List; import java.util.List;
import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import com.rjconsultores.ventaboletos.dao.EstacionDAO; import com.rjconsultores.ventaboletos.dao.EstacionDAO;
import com.rjconsultores.ventaboletos.entidad.Estacion; import com.rjconsultores.ventaboletos.entidad.Estacion;
import com.rjconsultores.ventaboletos.entidad.EstacionImpresora;
import com.rjconsultores.ventaboletos.entidad.EstacionSitef; import com.rjconsultores.ventaboletos.entidad.EstacionSitef;
import com.rjconsultores.ventaboletos.entidad.PuntoVenta; import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
import com.rjconsultores.ventaboletos.exception.BusinessException; import com.rjconsultores.ventaboletos.exception.BusinessException;
@ -34,6 +36,8 @@ public class EstacionServiceImpl implements EstacionService {
@Autowired @Autowired
private AutorizaFolioService autorizaFolioService; private AutorizaFolioService autorizaFolioService;
public static final String BEMATECH_FISCAL = "BEMATECHFISCAL";
public List<Estacion> obtenerTodos() { public List<Estacion> obtenerTodos() {
return estacionDAO.obtenerTodos(); return estacionDAO.obtenerTodos();
} }
@ -79,18 +83,33 @@ public class EstacionServiceImpl implements EstacionService {
estacion.setFecmodif(Calendar.getInstance().getTime()); estacion.setFecmodif(Calendar.getInstance().getTime());
estacion.setActivo(Boolean.TRUE); 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) { if (estacion.getEstacionId() == null) {
estacion = estacionDAO.suscribir(estacion); estacion = estacionDAO.suscribir(estacion);
} else { } else {
estacion = estacionDAO.actualizacion(estacion); estacion = estacionDAO.actualizacion(estacion);
} }
if (ApplicationProperties.getInstance().generarRotinaFolios()) { if (StringUtils.isNotBlank(errorNoChequeFolio)) {
autorizaFolioService.noChequeFolioPreimpresos(estacion); throw new BusinessException(errorNoChequeFolio);
} }
return estacion; 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 { private void validarEstoqueUpdate(Estacion estacion) throws BusinessException {