Legalizacao Massiva Voucher feat bug#AL-4710

master
Fabio 2024-08-14 19:18:53 -03:00
parent d56489469e
commit 44e7b6bf44
15 changed files with 403 additions and 22 deletions

View File

@ -65,4 +65,6 @@ public interface ParadaDAO {
public List<Parada> obtenerOrigenPorListRutaIds(Integer orgaoConcendenteId, Integer empresaId,Integer[] listRuta); public List<Parada> obtenerOrigenPorListRutaIds(Integer orgaoConcendenteId, Integer empresaId,Integer[] listRuta);
public List<String> buscarDescOrigemDestino(Integer origemId, Integer destinoId);
} }

View File

@ -6,4 +6,6 @@ public interface TransportadoraDAO extends GenericDAO<Transportadora, Long> {
public boolean existe(String nit); public boolean existe(String nit);
public Transportadora buscarPorNit(String nit);
} }

View File

@ -9,4 +9,6 @@ public interface VoucherDAO extends GenericDAO<Voucher, Long> {
public List<Voucher> buscarConsulta(Long voucherId, String numContrato, String nit, String nomeTransportadora, Date dataInicial, Date dataFinal, Integer origemId, Integer destinoId); public List<Voucher> buscarConsulta(Long voucherId, String numContrato, String nit, String nomeTransportadora, Date dataInicial, Date dataFinal, Integer origemId, Integer destinoId);
public List<Voucher> buscarLegalizacao(Long numInicial, Long numFinal, String numContrato, Integer status, Integer origenId, Integer destinoId);
} }

View File

@ -282,4 +282,29 @@ public class ParadaHibernateDAO extends GenericHibernateDAO<Parada, Integer> imp
} }
return null; return null;
} }
@Override
public List<String> buscarDescOrigemDestino(Integer origemId, Integer destinoId) {
StringBuilder sb = new StringBuilder();
sb.append(" SELECT descparada AS descOrigem ");
sb.append(" FROM parada po ");
sb.append(" WHERE po.activo = 1 ");
sb.append(" and po.parada_id =:origemId ");
sb.append(" UNION ");
sb.append(" SELECT descparada AS descDestino ");
sb.append(" FROM parada pd ");
sb.append(" WHERE pd.activo = 1 ");
sb.append(" and pd.parada_id =:destinoId ");
Query qry = getSession().createSQLQuery(sb.toString());
qry.setInteger("origemId", origemId);
qry.setInteger("destinoId", destinoId);
List<String> list = qry.list();
return list;
}
} }

View File

@ -37,4 +37,18 @@ public class TransportadoraHibernateDAO extends GenericHibernateDAO<Transportado
return !c.list().isEmpty(); return !c.list().isEmpty();
} }
@Override
public Transportadora buscarPorNit(String nit) {
Criteria c = getSession().createCriteria(getPersistentClass());
c.add(Restrictions.eq("nit", nit.trim()));
c.add(Restrictions.eq(ACTIVO, Boolean.TRUE));
List<Transportadora> ret = castList(Transportadora.class, c.list());
if( ret.isEmpty()) {
return null;
}else {
return ret.get(0);
}
}
} }

View File

@ -45,10 +45,7 @@ public class VoucherHibernateDAO extends GenericHibernateDAO<Voucher, Long> impl
hql.append("SELECT v, ori.descParada AS descOrigem , des.descParada AS descDestino "); hql.append("SELECT v, ori.descParada AS descOrigem , des.descParada AS descDestino ");
hql.append("FROM Voucher v "); hql.append("FROM Voucher v ");
setJoins( numContrato, setJoins( hql);
nit,
nomeTransportadora,
hql);
hql.append("WHERE v.activo = 1 "); hql.append("WHERE v.activo = 1 ");
@ -58,8 +55,12 @@ public class VoucherHibernateDAO extends GenericHibernateDAO<Voucher, Long> impl
nomeTransportadora, nomeTransportadora,
dataInicial, dataInicial,
dataFinal, dataFinal,
null,
origemId, origemId,
destinoId, destinoId,
null,
null,
null,
hql); hql);
hql.append("ORDER BY voucherId "); hql.append("ORDER BY voucherId ");
@ -72,35 +73,117 @@ public class VoucherHibernateDAO extends GenericHibernateDAO<Voucher, Long> impl
nomeTransportadora, nomeTransportadora,
dataInicial, dataInicial,
dataFinal, dataFinal,
null,
origemId, origemId,
destinoId, destinoId,
null,
null,
null,
query); query);
return query.list(); return query.list();
} }
private void setJoins(String numContrato, String nit, String nomeTransportadora, StringBuilder hql) { @Override
hql.append("LEFT JOIN Parada ori ON v.origenId = ori.origenId "); public List<Voucher> buscarLegalizacao(Long numInicial,
hql.append("LEFT JOIN Parada des ON v.origenId = des.origenId "); Long numFinal,
String numContrato,
Integer status,
Integer origemId,
Integer destinoId) {
StringBuilder hql = new StringBuilder();
hql.append(" SELECT v ");
hql.append(" FROM Voucher v ");
hql.append(" WHERE v.activo = 1 ");
setClausulas(null,
numContrato,
null,
null,
null,
null,
status,
origemId,
destinoId,
null,
numInicial,
numFinal,
hql);
hql.append("ORDER BY v.voucherId ");
Query query = getSession().createQuery(hql.toString());
setParametros(null,
numContrato,
null,
null,
null,
null,
status,
origemId,
destinoId,
null,
numInicial,
numFinal,
query);
return query.list();
} }
private void setClausulas(Long voucherId, String numContrato, String nit, String nomeTransportadora,
Date dataInicial, Date dataFinal, Integer origemId, Integer destinoId, StringBuilder hql) { private void setJoins(StringBuilder hql) {
hql.append("LEFT JOIN com.rjconsultores.ventaboletos.entidad.Parada ori ON v.origenId = ori.paradaId ");
hql.append("LEFT JOIN com.rjconsultores.ventaboletos.entidad.Parada des ON v.destinoId = des.paradaId ");
}
private void setClausulas(Long voucherId,
String numContrato,
String nit,
String nomeTransportadora,
Date dataInicial,
Date dataFinal,
Integer status,
Integer origemId,
Integer destinoId,
Long transportadoraId,
Long numInicial,
Long numFinal,
StringBuilder hql) {
if(voucherId != null ){ if(voucherId != null ){
hql.append(" AND v.voucherId = :voucherId "); hql.append(" AND v.voucherId = :voucherId ");
} }
if(numInicial != null ){
hql.append(" AND v.voucherId >= :numInicial ");
}
if(numFinal != null ){
hql.append(" AND v.voucherId <= :numFinal ");
}
if(status != null ){
hql.append(" AND v.status = :status ");
}
if(numContrato != null ){ if(numContrato != null ){
hql.append(" AND v.voucherId = :voucherId "); hql.append(" AND v.contrato.numContrato = :numContrato ");
} }
if(nit != null ){ if(nit != null ){
hql.append(" AND v.voucherId = :voucherId "); hql.append(" AND v.transportadora.nit = :nit ");
} }
if(nomeTransportadora != null ){ if(nomeTransportadora != null ){
hql.append(" AND v.voucherId = :voucherId "); hql.append(" AND v.transportadora.nomeTransportadora like :nomeTransportadora ");
}
if(transportadoraId != null ){
hql.append(" AND v.transportadora.transportadoraId = :transportadoraId ");
} }
if(dataInicial != null ){ if(dataInicial != null ){
@ -126,14 +209,26 @@ public class VoucherHibernateDAO extends GenericHibernateDAO<Voucher, Long> impl
String nomeTransportadora, String nomeTransportadora,
Date dataInicial, Date dataInicial,
Date dataFinal, Date dataFinal,
Integer status,
Integer origemId, Integer origemId,
Integer destinoId, Integer destinoId,
Long transportadoraId,
Long numInicial,
Long numFinal,
Query query) { Query query) {
if(voucherId != null ){ if(voucherId != null ){
query.setLong("voucherId", voucherId); query.setLong("voucherId", voucherId);
} }
if(numInicial != null ){
query.setLong("numInicial", numInicial);
}
if(numFinal != null ){
query.setLong("numFinal", numFinal);
}
if(numContrato != null ){ if(numContrato != null ){
query.setString("numContrato", numContrato); query.setString("numContrato", numContrato);
} }
@ -146,6 +241,10 @@ public class VoucherHibernateDAO extends GenericHibernateDAO<Voucher, Long> impl
query.setString("nomeTransportadora", nomeTransportadora); query.setString("nomeTransportadora", nomeTransportadora);
} }
if(transportadoraId != null ){
query.setLong("transportadoraId", transportadoraId);
}
if(dataInicial != null ){ if(dataInicial != null ){
query.setDate("dataInicial", dataInicial); query.setDate("dataInicial", dataInicial);
} }
@ -154,6 +253,10 @@ public class VoucherHibernateDAO extends GenericHibernateDAO<Voucher, Long> impl
query.setDate("dataFinal", dataFinal); query.setDate("dataFinal", dataFinal);
} }
if(status != null ){
query.setInteger("status", status);
}
if(origemId != null ){ if(origemId != null ){
query.setInteger("origemId", origemId); query.setInteger("origemId", origemId);
} }

View File

@ -98,6 +98,14 @@ public class Voucher implements Serializable {
@JoinColumn(name = "TRANSPORTADORA_ID") @JoinColumn(name = "TRANSPORTADORA_ID")
private Transportadora transportadora; private Transportadora transportadora;
@Column(name = "DATA_FATURA")
@Temporal(TemporalType.TIMESTAMP)
private Date dataFatura;
@Column(name = "DATA_LEGALIZA")
@Temporal(TemporalType.TIMESTAMP)
private Date dataLegaliza;
@Column(name = "ACTIVO") @Column(name = "ACTIVO")
private boolean activo; private boolean activo;

View File

@ -15,7 +15,6 @@ import com.rjconsultores.ventaboletos.entidad.Ruta;
import com.rjconsultores.ventaboletos.entidad.TipoParada; import com.rjconsultores.ventaboletos.entidad.TipoParada;
import com.rjconsultores.ventaboletos.exception.BusinessException; import com.rjconsultores.ventaboletos.exception.BusinessException;
import com.rjconsultores.ventaboletos.utilerias.RegistroConDependenciaException; import com.rjconsultores.ventaboletos.utilerias.RegistroConDependenciaException;
import com.rjconsultores.ventaboletos.vo.parada.ParadaVO;
/** /**
* *
@ -52,4 +51,6 @@ public interface ParadaService {
public List<Parada> obtenerOrigenPorListRutaIds(Integer orgaoConcendenteId, Integer empresaId,Integer[] listRuta); public List<Parada> obtenerOrigenPorListRutaIds(Integer orgaoConcendenteId, Integer empresaId,Integer[] listRuta);
public List<String> buscarDescOrigemDestino(Integer origemId, Integer destinoId);
} }

View File

@ -6,4 +6,6 @@ public interface TransportadoraService extends GenericService<Transportadora, Lo
public boolean existe(String nit); public boolean existe(String nit);
public Transportadora buscarPorNit(String nit);
} }

View File

@ -1,12 +1,18 @@
package com.rjconsultores.ventaboletos.service; package com.rjconsultores.ventaboletos.service;
import java.math.BigDecimal;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.Transportadora;
import com.rjconsultores.ventaboletos.entidad.Voucher; import com.rjconsultores.ventaboletos.entidad.Voucher;
import com.rjconsultores.ventaboletos.vo.configuracioneccomerciales.VoucherVO;
public interface VoucherService extends GenericService<Voucher, Long> { public interface VoucherService extends GenericService<Voucher, Long> {
List<Voucher> buscarConsulta(Long voucherId, String numContrato, String nit, String nomeTransportadora, Date dataInicial, Date dataFinal, Integer origemId, Integer destinoId); List<Voucher> buscarConsulta(Long voucherId, String numContrato, String nit, String nomeTransportadora, Date dataInicial, Date dataFinal, Integer origemId, Integer destinoId);
List<VoucherVO> legalizar(Long numInicial, Long numFinal, String numContrato, Transportadora transportadora, BigDecimal valor, Parada origem, Parada destino);
} }

View File

@ -66,7 +66,8 @@ public class ImportacaoRetornoBancarioServiceImpl implements ImportacaoRetornoBa
&& !detalhe.getCodigoOcorrencia().equals(LIQUIDACAO_EM_CARTORIO) ) { && !detalhe.getCodigoOcorrencia().equals(LIQUIDACAO_EM_CARTORIO) ) {
erros++; erros++;
detalhado.append("Registro sem ocorrencia de quitação: ").append(detalhe.getNossoNumero()).append(".\n"); detalhado.append("Registro sem ocorrencia de quitação: ").append(detalhe.getNossoNumero()).append(".\n");
}else if( salvarRetornoBancario( detalhe, empresa.getEmpresaId(), usuarioId )) { }else
if( salvarRetornoBancario( detalhe, empresa.getEmpresaId(), usuarioId )) {
atualizados++; atualizados++;
detalhado.append("Quitado:").append(detalhe.getNossoNumero()).append(".\n"); detalhado.append("Quitado:").append(detalhe.getNossoNumero()).append(".\n");
}else { }else {

View File

@ -39,6 +39,7 @@ public class ParadaServiceImpl implements ParadaService {
@Autowired @Autowired
private ParadaDAO paradaDAO; private ParadaDAO paradaDAO;
@Autowired @Autowired
private TramoDAO tramoDAO; private TramoDAO tramoDAO;
@ -190,4 +191,9 @@ public class ParadaServiceImpl implements ParadaService {
public List<Parada> obtenerOrigenPorListRutaIds(Integer orgaoConcendenteId, Integer empresaId, Integer[] listRuta){ public List<Parada> obtenerOrigenPorListRutaIds(Integer orgaoConcendenteId, Integer empresaId, Integer[] listRuta){
return paradaDAO.obtenerOrigenPorListRutaIds(orgaoConcendenteId,empresaId,listRuta); return paradaDAO.obtenerOrigenPorListRutaIds(orgaoConcendenteId,empresaId,listRuta);
} }
@Override
public List<String> buscarDescOrigemDestino(Integer origemId, Integer destinoId) {
return paradaDAO.buscarDescOrigemDestino(origemId, destinoId);
}
} }

View File

@ -41,6 +41,7 @@ public class TransportadoraServiceImpl implements TransportadoraService {
@Transactional @Transactional
public Transportadora actualizacion(Transportadora entidad) { public Transportadora actualizacion(Transportadora entidad) {
entidad.setFecModif(Calendar.getInstance().getTime());
return transportadoraDAO.actualizacion(entidad); return transportadoraDAO.actualizacion(entidad);
} }
@ -57,4 +58,9 @@ public class TransportadoraServiceImpl implements TransportadoraService {
public boolean existe(String nit) { public boolean existe(String nit) {
return transportadoraDAO.existe(nit); return transportadoraDAO.existe(nit);
} }
@Override
public Transportadora buscarPorNit(String nit) {
return transportadoraDAO.buscarPorNit(nit);
}
} }

View File

@ -1,9 +1,7 @@
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package com.rjconsultores.ventaboletos.service.impl; package com.rjconsultores.ventaboletos.service.impl;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -11,11 +9,16 @@ import java.util.List;
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 org.zkoss.util.resource.Labels;
import com.rjconsultores.ventaboletos.dao.VoucherDAO; import com.rjconsultores.ventaboletos.dao.VoucherDAO;
import com.rjconsultores.ventaboletos.entidad.Parada;
import com.rjconsultores.ventaboletos.entidad.Transportadora;
import com.rjconsultores.ventaboletos.entidad.Voucher; import com.rjconsultores.ventaboletos.entidad.Voucher;
import com.rjconsultores.ventaboletos.enums.SituacaoVoucher;
import com.rjconsultores.ventaboletos.service.VoucherService; import com.rjconsultores.ventaboletos.service.VoucherService;
import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado; import com.rjconsultores.ventaboletos.utilerias.UsuarioLogado;
import com.rjconsultores.ventaboletos.vo.configuracioneccomerciales.VoucherVO;
@Service("voucherService") @Service("voucherService")
public class VoucherServiceImpl implements VoucherService { public class VoucherServiceImpl implements VoucherService {
@ -72,4 +75,72 @@ public class VoucherServiceImpl implements VoucherService {
origemId, origemId,
destinoId); destinoId);
} }
@Override
@Transactional
public List<VoucherVO> legalizar(Long numInicial,
Long numFinal,
String numContrato,
Transportadora transportadora,
BigDecimal valor,
Parada origem,
Parada destino) {
List<Voucher> dados = voucherDAO.buscarLegalizacao(numInicial,
numFinal,
null,
null,
null,
null);
List<VoucherVO> retorno = new ArrayList<VoucherVO>();
for (Voucher vou : dados) {
VoucherVO vo;
if( !vou.getContrato().getNumContrato().equals(numContrato)) {
vo = VoucherVO.converteVoucher(vou);
vo.setMensagem(Labels.getLabel("legalizacaoMassivaController.MSG.contratoDiferente"));
retorno.add(vo);
continue;
}
if( !vou.getStatus().equals(SituacaoVoucher.EMITIDO.getValor())) {
vo = VoucherVO.converteVoucher(vou);
vo.setMensagem(Labels.getLabel("legalizacaoMassivaController.MSG.statusDiferente"));
retorno.add(vo);
continue;
}
if( origem != null && !vou.getOrigenId().equals(origem.getParadaId())) {
vo = VoucherVO.converteVoucher(vou);
vo.setMensagem(Labels.getLabel("legalizacaoMassivaController.MSG.origemDiferente"));
retorno.add(vo);
continue;
}
if( destino != null && !vou.getDestinoId().equals(destino.getParadaId())) {
vo = VoucherVO.converteVoucher(vou);
vo.setMensagem(Labels.getLabel("legalizacaoMassivaController.MSG.destinoDiferente"));
retorno.add(vo);
continue;
}
try {
vou.setValorLegalizado(valor);
vou.setTransportadora(transportadora);
vou.setStatus(SituacaoVoucher.LEGALIZADO.getValor());
vou.setDataLegaliza(Calendar.getInstance().getTime());
vou = voucherDAO.actualizacion(vou);
vo = VoucherVO.converteVoucher(vou);
vo.setMensagem(Labels.getLabel("label.sucesso"));
}catch (Exception e) {
vo = VoucherVO.converteVoucher(vou);
vo.setMensagem(e.getMessage());
}
retorno.add(vo);
}
return retorno;
}
} }

View File

@ -0,0 +1,132 @@
package com.rjconsultores.ventaboletos.vo.configuracioneccomerciales;
import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import com.rjconsultores.ventaboletos.anotacao.Renderizado;
import com.rjconsultores.ventaboletos.entidad.ContratoCorporativo;
import com.rjconsultores.ventaboletos.entidad.Transportadora;
import com.rjconsultores.ventaboletos.entidad.Voucher;
import com.rjconsultores.ventaboletos.enums.SituacaoVoucher;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
@Getter
@Setter
@AllArgsConstructor
@NoArgsConstructor
public class VoucherVO implements Serializable {
private static final long serialVersionUID = -2339597073156311073L;
@Renderizado( posicao = 1)
private Long voucherId;
@Renderizado( posicao = 2)
private ContratoCorporativo contrato;
private String nomePassageiro;
private String numFatura;
@Renderizado( posicao = 5 )
private BigDecimal valorLicitado;
@Renderizado( posicao = 6)
private BigDecimal valorLegalizado;
@Renderizado( posicao = 4)
private Date dataValidade;
@Temporal(TemporalType.TIMESTAMP)
private Date dataInclusao;
private Integer origenId;
private Integer destinoId;
private Long claseServicioId;
@Renderizado( conversor = SituacaoVoucher.class, posicao = 3)
private Integer status;
private Long clienteCorporativoId;
private Long motivoCancelacionId;
private Long grupoContratoId;
private Transportadora transportadora;
private String descOrigem;
private String descDestino;
@Renderizado( posicao = 7 )
private String trecho;
@Renderizado( posicao = 8 )
private String mensagem;
public SituacaoVoucher getSituacaoVoucher() {
return SituacaoVoucher.buscarPeloValor(status);
}
public String getTrecho() {
return descOrigem +" X "+descDestino;
}
@Override
public boolean equals(Object obj) {
if (obj == null) {
return false;
}
if (getClass() != obj.getClass()) {
return false;
}
final VoucherVO other = (VoucherVO) obj;
return this.getVoucherId().equals(other.getVoucherId());
}
@Override
public int hashCode() {
int hash = 7;
hash = 59 * hash + (this.getVoucherId() != null ? this.getVoucherId().hashCode() : 0);
return hash;
}
public VoucherVO( Voucher pai ) {
this.voucherId = pai.getVoucherId();
this.claseServicioId = pai.getClaseServicioId();
this.clienteCorporativoId = pai.getClienteCorporativoId();
this.contrato = pai.getContrato();
this.dataInclusao = pai.getDataInclusao();
this.dataValidade = pai.getDataValidade();
this.descDestino = pai.getDescDestino();
this.descOrigem = pai.getDescOrigem();
this.destinoId = pai.getDestinoId();
this.origenId = pai.getOrigenId();
this.grupoContratoId = pai.getGrupoContratoId();
this.motivoCancelacionId = pai.getMotivoCancelacionId();
this.nomePassageiro = pai.getNomePassageiro();
this.numFatura = pai.getNumFatura();
this.status = pai.getStatus();
this.transportadora = pai.getTransportadora();
this.valorLegalizado = pai.getValorLegalizado();
this.valorLicitado = pai.getValorLicitado();
}
public static VoucherVO converteVoucher( Voucher pai ) {
return new VoucherVO(pai);
}
}