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.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);
}

View File

@ -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) {

View File

@ -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<Estacion> 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 {