AdmMono/src/com/rjconsultores/ventaboletos/service/impl/MovimentacionBilhetesServic...

200 lines
7.7 KiB
Java

package com.rjconsultores.ventaboletos.service.impl;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.rjconsultores.ventaboletos.dao.AbastoCentralDAO;
import com.rjconsultores.ventaboletos.dao.AbastoHistoDAO;
import com.rjconsultores.ventaboletos.dao.PtovtaTipoEstoqueDAO;
import com.rjconsultores.ventaboletos.dao.PuntoVentaDAO;
import com.rjconsultores.ventaboletos.dao.TipoMovimentacionDAO;
import com.rjconsultores.ventaboletos.entidad.AbastoCentral;
import com.rjconsultores.ventaboletos.entidad.AbastoHisto;
import com.rjconsultores.ventaboletos.entidad.Aidf;
import com.rjconsultores.ventaboletos.entidad.Estacion;
import com.rjconsultores.ventaboletos.entidad.PtovtaTipoEstoque;
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
import com.rjconsultores.ventaboletos.entidad.TipoMovimentacion;
import com.rjconsultores.ventaboletos.service.AutorizaFolioService;
import com.rjconsultores.ventaboletos.service.MovimentacionBilhetesService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
@Service("movimentacioBilhetesService")
public class MovimentacionBilhetesServiceImpl implements MovimentacionBilhetesService {
@Autowired
private AbastoCentralDAO abastoCentralDAO;
@Autowired
private AbastoHistoDAO abastoHistoDAO;
@Autowired
private TipoMovimentacionDAO tipoMovimentacionDAO;
@Autowired
private PuntoVentaDAO puntoVentaDAO;
@Autowired
private PtovtaTipoEstoqueDAO ptovtaTipoEstoqueDAO;
@Autowired
private AutorizaFolioService autorizaFolioService;
@Override
public List<AbastoHisto> obtenerHistoricoMovimetacion(String numBilhete) {
return null;
}
@Override
public List<AbastoHisto> obtenerHistoricoMovimetacion(Aidf aidf) {
// TODO Auto-generated method stub
return null;
}
@Override
public List<AbastoHisto> obtenerHistoricoMovimetacion(Aidf aidf, Date fecInicial, Date fecFinal) {
// TODO Auto-generated method stub
return null;
}
@Transactional
public void realizaAdquisicionBilhetes(Aidf aidf){
PuntoVenta suprimento = buscarAgSuprimento();
long formInicial = Long.valueOf(aidf.getForminicial());
long formFinal = Long.valueOf(aidf.getFormfinal());
List<AbastoCentral> bilhetes = new ArrayList<AbastoCentral>();
for(long formCorrente = formInicial; formCorrente <= formFinal; formCorrente++){
AbastoCentral nuevoBilhete = new AbastoCentral();
nuevoBilhete.setAidf(aidf);
nuevoBilhete.setNumfoliopreimpreso(formCorrente+"");
nuevoBilhete.setNumseriepreimpresa(aidf.getSerie());
nuevoBilhete.setNumsubseriepreimpreso(aidf.getSubserie());
nuevoBilhete.setPuntoventa(suprimento);
nuevoBilhete.setFecmodif(Calendar.getInstance().getTime());
nuevoBilhete.setUsuarioId(UsuarioLogado.getUsuarioLogado().getUsuarioId());
nuevoBilhete.setActivo(true);
bilhetes.add(nuevoBilhete);
}
abastoCentralDAO.suscribirBilhetes(bilhetes);
TipoMovimentacion adquisicion = tipoMovimentacionDAO.buscarTipoMovimentacio(TipoMovimentacion.TIPO_ADQUISICION);
abastoHistoDAO.grabaHistoricoBilhetes(bilhetes, adquisicion);
}
@Transactional
public void realizaMovimentacionBilhetes(Aidf aidf, PuntoVenta origem, PuntoVenta destino, TipoMovimentacion tipoMovimentacion) {
if(validaTipoMovimentacao(tipoMovimentacion)){
List<AbastoCentral> bilhetes = abastoCentralDAO.obtenerBilhetes(aidf, origem);
atualizaBilhetesEGrabaHistorico(bilhetes, destino, tipoMovimentacion);
}
}
@Transactional
public void realizaMovimentacionBilhetes(Aidf aidf, PuntoVenta origem, PuntoVenta destino, Long cantidad, TipoMovimentacion tipoMovimentacion) {
if(validaTipoMovimentacao(tipoMovimentacion)){
Long formInicial = Long.valueOf(aidf.getForminicial());
Long formFinal = formInicial + cantidad.longValue();
realizaMovimentacionBilhetes(aidf, origem, destino, formInicial.toString(), formFinal.toString(), tipoMovimentacion);
}
}
@Transactional
public void realizaMovimentacionBilhetes(Aidf aidf, PuntoVenta origem, PuntoVenta destino, String formInicial, String formFinal, TipoMovimentacion tipoMovimentacion) {
if(validaTipoMovimentacao(tipoMovimentacion)){
List<AbastoCentral> bilhetes = abastoCentralDAO.obtenerBilhetes(aidf, formInicial, formFinal, origem);
atualizaBilhetesEGrabaHistorico(bilhetes, destino, tipoMovimentacion);
}
}
private boolean validaTipoMovimentacao(TipoMovimentacion tipoMovimentacion){
TipoMovimentacion adquisicion = tipoMovimentacionDAO.buscarTipoMovimentacio(TipoMovimentacion.TIPO_ADQUISICION);
return !tipoMovimentacion.equals(adquisicion);
}
public List<TipoMovimentacion> obtenerTiposMovimetacion() {
List<TipoMovimentacion> tiposMovimentacion = tipoMovimentacionDAO.obtenerTodos();
return tiposMovimentacion;
}
public PuntoVenta buscarAgSuprimento() {
PtovtaTipoEstoque tipoSuprimento = ptovtaTipoEstoqueDAO.buscarTipoSuprimento();
PuntoVenta suprimento = puntoVentaDAO.buscarPuntoVentaPorTipoEstoque(tipoSuprimento).get(0);
return suprimento;
}
public PuntoVenta buscarAgContabilidade() {
PtovtaTipoEstoque tipoContabilidade = ptovtaTipoEstoqueDAO.buscarTipoContabilidade();
PuntoVenta contabilidade = puntoVentaDAO.buscarPuntoVentaPorTipoEstoque(tipoContabilidade).get(0);
return contabilidade;
}
public List<TipoMovimentacion> obtenerTiposMovimetacionPuntoVenta() {
List<TipoMovimentacion> tipos = tipoMovimentacionDAO.obtenerTiposMovimetacionPuntoVenta();
return tipos;
}
@Transactional
public void realizaMovimentacionBilhetes(PuntoVenta puntoVentaBilhetes, Estacion origem, Estacion destino, String numSerie, String formInicial, String formFinal, TipoMovimentacion tipoMovimentacion) {
List<AbastoCentral> bilhetes = abastoCentralDAO.obtenerBilhetesPorPuntoVenta(numSerie, formInicial, formFinal, puntoVentaBilhetes, origem);
atualizaBilhetesEGrabaHistorico(bilhetes, destino, tipoMovimentacion);
trataRequisicionBilhetesEstacion(bilhetes, origem, destino, formInicial, formFinal, tipoMovimentacion);
}
private void trataRequisicionBilhetesEstacion(List<AbastoCentral> bilhetes, Estacion origem, Estacion destino, String numfolioinicial, String numfoliofinal, TipoMovimentacion tipoMovimentacion){
Aidf aidfCorrente = null;
for(AbastoCentral bilhete : bilhetes){
if(aidfCorrente == null || (aidfCorrente != null && !aidfCorrente.equals(bilhete.getAidf()))){
aidfCorrente = bilhete.getAidf();
String numseriepreimpresa = aidfCorrente.getSerie();
autorizaFolioService.noChequeFolioPreimpresos(aidfCorrente, origem, destino, numfolioinicial, numfoliofinal, numseriepreimpresa, aidfCorrente.getEmpresa(), tipoMovimentacion);
}
}
}
private void atualizaBilhetesEGrabaHistorico(List<AbastoCentral> bilhetes, Estacion destino, TipoMovimentacion tipoMovimentacion){
abastoCentralDAO.actualizaBilhetes(bilhetes, destino);
abastoHistoDAO.grabaHistoricoBilhetes(bilhetes, tipoMovimentacion);
}
private void atualizaBilhetesEGrabaHistorico(List<AbastoCentral> bilhetes, PuntoVenta destino, TipoMovimentacion tipoMovimentacion){
abastoCentralDAO.actualizaBilhetes(bilhetes, destino);
abastoHistoDAO.grabaHistoricoBilhetes(bilhetes, tipoMovimentacion);
}
@Override
public List<String> buscarSeriesBilhetesPorEstacion(Estacion estacion) {
List<String> seriesEstacion = abastoCentralDAO.buscarSeriesBilhetesPorEstacion(estacion);
return seriesEstacion;
}
}