724 lines
32 KiB
Java
724 lines
32 KiB
Java
package com.rjconsultores.ventaboletos.dao.hibernate;
|
|
|
|
import java.math.BigDecimal;
|
|
import java.text.SimpleDateFormat;
|
|
import java.util.ArrayList;
|
|
import java.util.Date;
|
|
import java.util.HashMap;
|
|
import java.util.List;
|
|
import java.util.Map;
|
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
import org.apache.logging.log4j.LogManager;
|
|
import org.apache.logging.log4j.Logger;
|
|
import org.apache.logging.log4j.LogManager;
|
|
import org.hibernate.Query;
|
|
import org.hibernate.SQLQuery;
|
|
import org.hibernate.SessionFactory;
|
|
import org.hibernate.transform.AliasToBeanResultTransformer;
|
|
import org.hibernate.type.BigDecimalType;
|
|
import org.hibernate.type.BooleanType;
|
|
import org.hibernate.type.DateType;
|
|
import org.hibernate.type.IntegerType;
|
|
import org.hibernate.type.LongType;
|
|
import org.hibernate.type.StringType;
|
|
import org.hibernate.type.TimestampType;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Qualifier;
|
|
import org.springframework.stereotype.Repository;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
import com.rjconsultores.ventaboletos.dao.CajaDAO;
|
|
import com.rjconsultores.ventaboletos.dao.sqlbuilder.SQLBuilder;
|
|
import com.rjconsultores.ventaboletos.entidad.Aidf;
|
|
import com.rjconsultores.ventaboletos.entidad.Caja;
|
|
import com.rjconsultores.ventaboletos.entidad.Empresa;
|
|
import com.rjconsultores.ventaboletos.entidad.Marca;
|
|
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
|
|
import com.rjconsultores.ventaboletos.enums.TipoFormapago;
|
|
import com.rjconsultores.ventaboletos.exception.BusinessException;
|
|
import com.rjconsultores.ventaboletos.exception.VendaEmbarcadaBoletoException;
|
|
import com.rjconsultores.ventaboletos.exception.VendaEmbarcadaBoletoFormapagoException;
|
|
import com.rjconsultores.ventaboletos.exception.VendaEmbarcadaCajaException;
|
|
import com.rjconsultores.ventaboletos.exception.VendaEmbarcadaCajaFormapagoException;
|
|
import com.rjconsultores.ventaboletos.utilerias.OcdUtil;
|
|
import com.rjconsultores.ventaboletos.vo.busquedapacotes.DadosBancarioVO;
|
|
import com.rjconsultores.ventaboletos.vo.busquedapacotes.NotaCreditoVendaPacoteVO;
|
|
import com.rjconsultores.ventaboletos.vo.busquedapacotes.transformer.DatosDadosBancarioResultTransformer;
|
|
import com.rjconsultores.ventaboletos.vo.busquedapacotes.transformer.RelatorioVendaCartaoCashMonitorResultTransformer;
|
|
import com.rjconsultores.ventaboletos.vo.caja.CajaCerradoVO;
|
|
import com.rjconsultores.ventaboletos.vo.caja.CajaDetalleVO;
|
|
import com.rjconsultores.ventaboletos.vo.caja.CajaVO;
|
|
import com.rjconsultores.ventaboletos.vo.caja.PagamentoCartaoVO;
|
|
import com.rjconsultores.ventaboletos.vo.caja.PagamentoVO;
|
|
import com.rjconsultores.ventaboletos.vo.caja.ReceitaDespesaVO;
|
|
import com.rjconsultores.ventaboletos.vo.caja.UsuarioVO;
|
|
import com.rjconsultores.ventaboletos.vo.caja.VendaEmbarcadaVO;
|
|
import com.rjconsultores.ventaboletos.vo.cashmonitor.RelatorioVendaCartaoCashMonitorVO;
|
|
|
|
@Repository("cajaDAO")
|
|
@SuppressWarnings("unchecked")
|
|
public class CajaHibernateDAO extends GenericHibernateDAO<Object, Long> implements CajaDAO {
|
|
|
|
private static Logger log = LogManager.getLogger(CajaHibernateDAO.class);
|
|
|
|
@Autowired
|
|
private SQLBuilder sqlBuilder;
|
|
|
|
@Autowired
|
|
public CajaHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) {
|
|
setSessionFactory(factory);
|
|
}
|
|
|
|
@Override
|
|
public List<CajaVO> buscarCajaFecha(boolean yaCerrado, Date fechaDesde, Date fechaHasta) {
|
|
List<CajaVO> list = new ArrayList<CajaVO>();
|
|
HashMap<Long, CajaVO> map = new HashMap<Long, CajaVO>();
|
|
|
|
String sqlBuscarCajaFecha = sqlBuilder.getSQLBuscarCajaFecha(yaCerrado, fechaDesde, fechaHasta);
|
|
SQLQuery sql = getSession().createSQLQuery(sqlBuscarCajaFecha)
|
|
.addScalar("cajaId", LongType.INSTANCE)
|
|
.addScalar("numAsiento", StringType.INSTANCE)
|
|
.addScalar("categoriaId", IntegerType.INSTANCE)
|
|
.addScalar("numFolioSistema", StringType.INSTANCE)
|
|
.addScalar("claseServicioId", IntegerType.INSTANCE)
|
|
.addScalar("marcaId", IntegerType.INSTANCE)
|
|
.addScalar("origenId", IntegerType.INSTANCE)
|
|
.addScalar("destinoId", IntegerType.INSTANCE)
|
|
.addScalar("corridaId", IntegerType.INSTANCE)
|
|
.addScalar("fecCorrida", DateType.INSTANCE)
|
|
.addScalar("nombPasajero", StringType.INSTANCE)
|
|
.addScalar("precioBase", BigDecimalType.INSTANCE)
|
|
.addScalar("precioPagado", BigDecimalType.INSTANCE)
|
|
.addScalar("tipoVentaId", IntegerType.INSTANCE)
|
|
.addScalar("numSeriePreimpresa", StringType.INSTANCE)
|
|
.addScalar("numFolioPreImpreso", StringType.INSTANCE)
|
|
.addScalar("fecHorViaje", TimestampType.INSTANCE)
|
|
.addScalar("fecHorVenta", TimestampType.INSTANCE)
|
|
.addScalar("puntoVentaId", IntegerType.INSTANCE)
|
|
.addScalar("numPuntoVenta", StringType.INSTANCE)
|
|
.addScalar("numKmViaje", BigDecimalType.INSTANCE)
|
|
.addScalar("numOperacion", StringType.INSTANCE)
|
|
.addScalar("motivoCancelacionId", IntegerType.INSTANCE)
|
|
.addScalar("empresaPuntoVentaId", IntegerType.INSTANCE)
|
|
.addScalar("empresaCorridaId", IntegerType.INSTANCE)
|
|
.addScalar("turnoId", IntegerType.INSTANCE)
|
|
.addScalar("importeTaxaEmbarque", BigDecimalType.INSTANCE)
|
|
.addScalar("importePedagio", BigDecimalType.INSTANCE)
|
|
.addScalar("importeOutros", BigDecimalType.INSTANCE)
|
|
.addScalar("importeSeguro", BigDecimalType.INSTANCE)
|
|
.addScalar("rutaId", IntegerType.INSTANCE)
|
|
.addScalar("usuarioId", IntegerType.INSTANCE)
|
|
.addScalar("numAutorizacion", StringType.INSTANCE)
|
|
.addScalar("ordenSevicio", StringType.INSTANCE);
|
|
|
|
sql.setResultTransformer(new AliasToBeanResultTransformer(CajaVO.class));
|
|
|
|
for (CajaVO cv : (List<CajaVO>) sql.list()) {
|
|
if (map.containsKey(cv.getCajaId()) && map.get(cv.getCajaId()).getImporteTaxaEmbarque() != null &&
|
|
!map.get(cv.getCajaId()).getImporteTaxaEmbarque().equals(0)) {
|
|
cv.setImporteTaxaEmbarque(new BigDecimal(0));
|
|
} else {
|
|
map.put(cv.getCajaId(), cv);
|
|
}
|
|
list.add(cv);
|
|
}
|
|
|
|
return list;
|
|
}
|
|
|
|
@Override
|
|
public List<CajaDetalleVO> buscarDetalleCaja(Date fechaDesde, Date fechaHasta, Boolean sembilhetesPacote) {
|
|
|
|
String sqlBuscarCajaFecha = sqlBuilder.getSQLBuscarDatosCaja(fechaDesde, fechaHasta, sembilhetesPacote);
|
|
|
|
SQLQuery sql = getSession().createSQLQuery(sqlBuscarCajaFecha)
|
|
.addScalar("cajaId", LongType.INSTANCE)
|
|
.addScalar("numAsiento", StringType.INSTANCE)
|
|
.addScalar("categoriaId", IntegerType.INSTANCE)
|
|
.addScalar("numFolioSistema", StringType.INSTANCE)
|
|
.addScalar("claseServicioId", IntegerType.INSTANCE)
|
|
.addScalar("marcaId", IntegerType.INSTANCE)
|
|
.addScalar("origenId", IntegerType.INSTANCE)
|
|
.addScalar("destinoId", IntegerType.INSTANCE)
|
|
.addScalar("corridaId", IntegerType.INSTANCE)
|
|
.addScalar("fecCorrida", DateType.INSTANCE)
|
|
.addScalar("nombPasajero", StringType.INSTANCE)
|
|
.addScalar("precioBase", BigDecimalType.INSTANCE)
|
|
.addScalar("precioPagado", BigDecimalType.INSTANCE)
|
|
.addScalar("tipoVentaId", IntegerType.INSTANCE)
|
|
.addScalar("numSeriePreimpresa", StringType.INSTANCE)
|
|
.addScalar("numFolioPreImpreso", StringType.INSTANCE)
|
|
.addScalar("fecHorViaje", TimestampType.INSTANCE)
|
|
.addScalar("fecHorVenta", TimestampType.INSTANCE)
|
|
.addScalar("puntoVentaId", IntegerType.INSTANCE)
|
|
.addScalar("numPuntoVenta", StringType.INSTANCE)
|
|
.addScalar("numKmViaje", BigDecimalType.INSTANCE)
|
|
.addScalar("numOperacion", StringType.INSTANCE)
|
|
.addScalar("motivoCancelacionId", IntegerType.INSTANCE)
|
|
.addScalar("empresaPuntoVentaId", IntegerType.INSTANCE)
|
|
.addScalar("empresaCorridaId", IntegerType.INSTANCE)
|
|
.addScalar("turnoId", IntegerType.INSTANCE)
|
|
.addScalar("importeTaxaEmbarque", BigDecimalType.INSTANCE)
|
|
.addScalar("importePedagio", BigDecimalType.INSTANCE)
|
|
.addScalar("importeOutros", BigDecimalType.INSTANCE)
|
|
.addScalar("importeSeguro", BigDecimalType.INSTANCE)
|
|
.addScalar("rutaId", IntegerType.INSTANCE)
|
|
.addScalar("usuarioId", IntegerType.INSTANCE)
|
|
.addScalar("numAutorizacion", StringType.INSTANCE)
|
|
.addScalar("ordenSevicio", StringType.INSTANCE)
|
|
.addScalar("descPago", StringType.INSTANCE)
|
|
.addScalar("cveCategoria", StringType.INSTANCE)
|
|
.addScalar("formaPagoId", IntegerType.INSTANCE)
|
|
.addScalar("vlrFormaPago", BigDecimalType.INSTANCE)
|
|
.addScalar("descMotivo", StringType.INSTANCE)
|
|
.addScalar("transacaoId", LongType.INSTANCE)
|
|
.addScalar("transacaooriginalId", LongType.INSTANCE)
|
|
.addScalar("descnumdoc", StringType.INSTANCE)
|
|
.addScalar("descnumdoc2", StringType.INSTANCE)
|
|
.addScalar("desctipodoc", StringType.INSTANCE)
|
|
.addScalar("desctipodoc2", StringType.INSTANCE)
|
|
.addScalar("desctelefono", StringType.INSTANCE)
|
|
.addScalar("tipotarjeta", StringType.INSTANCE)
|
|
.addScalar("cantparcelas", IntegerType.INSTANCE)
|
|
.addScalar("numtarjeta", StringType.INSTANCE)
|
|
.addScalar("fecoperacion", TimestampType.INSTANCE)
|
|
.addScalar("nombtitular", StringType.INSTANCE)
|
|
.addScalar("ocdId", LongType.INSTANCE)
|
|
.addScalar("numoperacionOcd", StringType.INSTANCE)
|
|
.addScalar("notacreditovendapacoteId", LongType.INSTANCE)
|
|
.addScalar("operadoracartao", StringType.INSTANCE)
|
|
.addScalar("cvesecretaria", StringType.INSTANCE)
|
|
.addScalar("tipoPago", IntegerType.INSTANCE)
|
|
.addScalar("indEncargoVenta", BooleanType.INSTANCE)
|
|
.addScalar("descconvenio", StringType.INSTANCE)
|
|
.addScalar("cveconvenio", StringType.INSTANCE)
|
|
.addScalar("descsecretaria", StringType.INSTANCE);
|
|
|
|
sql.setResultTransformer(new AliasToBeanResultTransformer(CajaDetalleVO.class));
|
|
|
|
List<CajaDetalleVO> lsBusca = sql.list();
|
|
|
|
List<CajaDetalleVO> lsResultado = new ArrayList<CajaDetalleVO>();
|
|
|
|
for (CajaDetalleVO cd : lsBusca) {
|
|
|
|
int indexOf = lsResultado.indexOf(cd);
|
|
|
|
CajaDetalleVO cajaDetalleVO = null;
|
|
|
|
if (indexOf != -1) {
|
|
cajaDetalleVO = lsResultado.get(indexOf);
|
|
} else {
|
|
cajaDetalleVO = cd;
|
|
}
|
|
|
|
if (cajaDetalleVO.getFormaspagamento() == null) {
|
|
cajaDetalleVO.setFormaspagamento(new ArrayList<PagamentoVO>());
|
|
}
|
|
|
|
if (!cd.getDescPago().equalsIgnoreCase("TROCA DE PASSAGEM")) {
|
|
PagamentoVO pagamentoVO = new PagamentoVO();
|
|
pagamentoVO.setFormapagamento(cd.getDescPago());
|
|
pagamentoVO.setMoeda("R$");
|
|
pagamentoVO.setValor(cd.getVlrFormaPago());
|
|
pagamentoVO.setIdentificacaoEmpresa(cd.getCvesecretaria());
|
|
pagamentoVO.setRazaoSocial(cd.getDescsecretaria());
|
|
|
|
if (cd.getNotacreditovendapacoteId() != null) {
|
|
NotaCreditoVendaPacoteVO notacredito = new NotaCreditoVendaPacoteVO();
|
|
notacredito.setVouchernotacredito(cd.getNotacreditovendapacoteId().toString());
|
|
pagamentoVO.setNotacredito(notacredito);
|
|
}
|
|
|
|
if (cd.getOcdId() != null) {
|
|
NotaCreditoVendaPacoteVO notacredito = new NotaCreditoVendaPacoteVO();
|
|
notacredito.setVouchernotacredito(OcdUtil.generaLocalizadorOCD(cd.getNumoperacionOcd(), cd.getOcdId()));
|
|
pagamentoVO.setNotacredito(notacredito);
|
|
}
|
|
|
|
if (StringUtils.isNotBlank(cd.getNumAutorizacion())) {
|
|
PagamentoCartaoVO cartao = new PagamentoCartaoVO();
|
|
cartao.setNumautorizacao(cd.getNumAutorizacion());
|
|
cartao.setBandeira(cd.getTipotarjeta());
|
|
cartao.setDatapagamento(cd.getFecoperacion());
|
|
cartao.setNumcartao(cd.getNumtarjeta());
|
|
cartao.setParcelas(cd.getCantparcelas());
|
|
cartao.setTitular(cd.getNombtitular());
|
|
cartao.setOperadoracartao(cd.getOperadoracartao());
|
|
|
|
pagamentoVO.setCartao(cartao);
|
|
}
|
|
|
|
cajaDetalleVO.getFormaspagamento().add(pagamentoVO);
|
|
|
|
if (pagamentoVO.getDadosBancarios() == null) {
|
|
pagamentoVO.setDadosBancarios(new ArrayList<DadosBancarioVO>());
|
|
}
|
|
|
|
if (isPagamentoDeposito(TipoFormapago.getTipoFormapagoByValor(cd.getTipoPago()))) {
|
|
pagamentoVO.getDadosBancarios().addAll(carregarDadosDeposito(cd.getCajaId(), cd.getFormaPagoId()));
|
|
}
|
|
|
|
if (pagamentoVO.getDadosBancarios().isEmpty()) {
|
|
pagamentoVO.setDadosBancarios(null);
|
|
}
|
|
}
|
|
if (indexOf == -1) {
|
|
lsResultado.add(cajaDetalleVO);
|
|
}
|
|
}
|
|
|
|
List<CajaDetalleVO> filtrados = new ArrayList<CajaDetalleVO>();
|
|
for (CajaDetalleVO c : lsResultado) {
|
|
if (c.getFormaspagamento() != null && !c.getFormaspagamento().isEmpty() && !existeApenasFpReserva(c)) {
|
|
filtrados.add(c);
|
|
}
|
|
}
|
|
|
|
return filtrados;
|
|
}
|
|
|
|
private Boolean existeApenasFpReserva(CajaDetalleVO c) {
|
|
if (c.getFormaspagamento().size() == 1
|
|
&& c.getFormaspagamento().get(0).getFormapagamento().equals("RESERVA")) {
|
|
return true;
|
|
}
|
|
|
|
return false;
|
|
}
|
|
|
|
@Override
|
|
public List<UsuarioVO> buscarCajaCerrado(Date fecha, String cveusuario, String turnoid) {
|
|
return buscarCajaCerrado(fecha, cveusuario, turnoid, false);
|
|
}
|
|
|
|
@Override
|
|
public List<UsuarioVO> buscarUsuarioCerrado(Date fecha) {
|
|
return buscarCajaCerrado(fecha, "*", "*", true);
|
|
}
|
|
|
|
private List<UsuarioVO> buscarCajaCerrado(Date fecha, String cveusuario, String turnoid, boolean sinDatosCaja) {
|
|
List<CajaCerradoVO> list = new ArrayList<CajaCerradoVO>();
|
|
HashMap<Long, CajaCerradoVO> map = new HashMap<Long, CajaCerradoVO>();
|
|
|
|
try {
|
|
String sqlBuscarUsuariosCajaCerrado = sqlBuilder.getSQLBuscarUsuariosCajaCerrado(fecha, cveusuario, turnoid);
|
|
|
|
SQLQuery sql = getSession().createSQLQuery(sqlBuscarUsuariosCajaCerrado)
|
|
.addScalar("usuarioId", IntegerType.INSTANCE)
|
|
.addScalar("cveusuario", StringType.INSTANCE)
|
|
.addScalar("puntoVentaId", IntegerType.INSTANCE)
|
|
.addScalar("numPuntoVenta", StringType.INSTANCE)
|
|
.addScalar("fecCorte", DateType.INSTANCE)
|
|
.addScalar("turnoId", IntegerType.INSTANCE)
|
|
.addScalar("importeTotal", BigDecimalType.INSTANCE);
|
|
|
|
sql.setResultTransformer(new AliasToBeanResultTransformer(UsuarioVO.class));
|
|
|
|
List<UsuarioVO> usuarios = sql.list();
|
|
if (sinDatosCaja) {
|
|
return usuarios;
|
|
}
|
|
for (UsuarioVO u : usuarios) {
|
|
String sqlBuscarCajaFecha = sqlBuilder.getSQLBuscarCajaCerrado(u.getUsuarioId(), fecha, turnoid);
|
|
|
|
sql = getSession().createSQLQuery(sqlBuscarCajaFecha)
|
|
.addScalar("cajaId", LongType.INSTANCE)
|
|
.addScalar("numFolioSistema", StringType.INSTANCE)
|
|
.addScalar("origen", StringType.INSTANCE)
|
|
.addScalar("destino", StringType.INSTANCE)
|
|
.addScalar("corridaId", IntegerType.INSTANCE)
|
|
.addScalar("precioPagado", BigDecimalType.INSTANCE)
|
|
.addScalar("fecHorVenta", DateType.INSTANCE)
|
|
.addScalar("importeTaxaEmbarque", BigDecimalType.INSTANCE)
|
|
.addScalar("ruta", StringType.INSTANCE)
|
|
.addScalar("numAutorizacion", StringType.INSTANCE)
|
|
.addScalar("ordenSevicio", StringType.INSTANCE)
|
|
.addScalar("secretaria", StringType.INSTANCE)
|
|
.addScalar("cvesecretaria", StringType.INSTANCE)
|
|
.addScalar("emissorTarjeta", StringType.INSTANCE)
|
|
.addScalar("tipoPasaje", StringType.INSTANCE)
|
|
.addScalar("formaPago", StringType.INSTANCE);
|
|
|
|
sql.setResultTransformer(new AliasToBeanResultTransformer(CajaCerradoVO.class));
|
|
|
|
for (CajaCerradoVO cv : (List<CajaCerradoVO>) sql.list()) {
|
|
if (map.containsKey(cv.getCajaId()) && map.get(cv.getCajaId()).getImporteTaxaEmbarque() != null &&
|
|
!map.get(cv.getCajaId()).getImporteTaxaEmbarque().equals(0)) {
|
|
cv.setImporteTaxaEmbarque(new BigDecimal(0));
|
|
} else {
|
|
map.put(cv.getCajaId(), cv);
|
|
}
|
|
list.add(cv);
|
|
}
|
|
|
|
u.setPasajes(list);
|
|
|
|
String sqlBuscarReceitaDespesa = sqlBuilder.getSQLBuscarReceitasDespesasCaja(u.getUsuarioId(), fecha);
|
|
sql = getSession().createSQLQuery(sqlBuscarReceitaDespesa)
|
|
.addScalar("precio", BigDecimalType.INSTANCE)
|
|
.addScalar("tipoEvento", StringType.INSTANCE);
|
|
sql.setResultTransformer(new AliasToBeanResultTransformer(ReceitaDespesaVO.class));
|
|
u.setDiversos(sql.list());
|
|
}
|
|
return usuarios;
|
|
} catch (Exception e) {
|
|
log.error("", e);
|
|
|
|
return null;
|
|
}
|
|
}
|
|
|
|
@Override
|
|
@Transactional(rollbackFor = { BusinessException.class, VendaEmbarcadaBoletoException.class, VendaEmbarcadaBoletoFormapagoException.class, VendaEmbarcadaCajaException.class, VendaEmbarcadaCajaFormapagoException.class })
|
|
public void gerarVendaEmbarcada(VendaEmbarcadaVO vendaEmbarcada) throws VendaEmbarcadaBoletoException, VendaEmbarcadaBoletoFormapagoException, VendaEmbarcadaCajaException, VendaEmbarcadaCajaFormapagoException {
|
|
inserirBoletoVendaEmbarcada(vendaEmbarcada);
|
|
inserirBoletoFormaPagoVendaEmbarcada(vendaEmbarcada);
|
|
inserirCajaVendaEmbarcada(vendaEmbarcada);
|
|
inserirCajaFormaPagoVendaEmbarcada(vendaEmbarcada);
|
|
}
|
|
|
|
private void inserirCajaVendaEmbarcada(VendaEmbarcadaVO vendaEmbarcada) throws VendaEmbarcadaCajaException {
|
|
|
|
try {
|
|
|
|
SQLQuery query = getSession().createSQLQuery(sqlBuilder.getSQLInserirCajaVendaEmbarcada());
|
|
|
|
vendaEmbarcada.setCajaId(obterIdCaja().longValue());
|
|
|
|
query.setLong("cajaId", vendaEmbarcada.getCajaId());
|
|
query.setString("numAsiento", vendaEmbarcada.getNumAsiento());
|
|
query.setInteger("categoriaId", vendaEmbarcada.getCategoriaId());
|
|
query.setInteger("claseServicioId", vendaEmbarcada.getClaseServicioId());
|
|
query.setInteger("marcaId", vendaEmbarcada.getMarcaId());
|
|
query.setInteger("origemId", vendaEmbarcada.getOrigemId());
|
|
query.setInteger("destinoId", vendaEmbarcada.getDestinoId());
|
|
query.setInteger("corridaId", vendaEmbarcada.getCorridaId());
|
|
query.setDate("fecCorrida", vendaEmbarcada.getFecCorrida());
|
|
query.setBigDecimal("precioBase", vendaEmbarcada.getPrecio());
|
|
query.setBigDecimal("precioPagado", vendaEmbarcada.getPrecio());
|
|
query.setInteger("tipoVentaId", vendaEmbarcada.getTipoVentaId());
|
|
query.setDate("fechorViaje", vendaEmbarcada.getFechorViaje());
|
|
query.setDate("fechorVenta", vendaEmbarcada.getFechorVenta());
|
|
query.setInteger("puntoVentaId", vendaEmbarcada.getPuntoVentaId());
|
|
query.setString("numOperacion", vendaEmbarcada.getNumOperacion());
|
|
query.setBigInteger("empresaPuntoVentaId", vendaEmbarcada.getEmpresaId());
|
|
query.setBigInteger("empresaCorridaId", vendaEmbarcada.getEmpresaId());
|
|
query.setInteger("estacionId", vendaEmbarcada.getEstacionId());
|
|
query.setInteger("usuarioId", vendaEmbarcada.getUsuarioId());
|
|
query.setBigDecimal("importeTaxaEmbarque", vendaEmbarcada.getImporteTaxaEmbarque());
|
|
query.setBigDecimal("importePedagio", vendaEmbarcada.getImportePedagio());
|
|
query.setBigDecimal("importeOutros", vendaEmbarcada.getImporteOutros());
|
|
query.setBigDecimal("importeSeguro", vendaEmbarcada.getImporteSeguro());
|
|
query.setDate("fecCreacion", vendaEmbarcada.getFechorVenta());
|
|
query.setInteger("rutaId", vendaEmbarcada.getRutaId());
|
|
query.setTimestamp("fecModIf", vendaEmbarcada.getFecModIf());
|
|
query.setString("numFolioPreimpresso", vendaEmbarcada.getNumFolioPreimpresso());
|
|
query.setString("serieImpFiscal", vendaEmbarcada.getSerieImpFiscal());
|
|
|
|
if (query.executeUpdate() != 1) {
|
|
throw new VendaEmbarcadaCajaException("Erro ao gerar caixa venda embarcada");
|
|
}
|
|
|
|
} catch (VendaEmbarcadaCajaException e) {
|
|
throw e;
|
|
} catch (Exception e) {
|
|
log.error(e.getMessage(), e);
|
|
throw new VendaEmbarcadaCajaException(e.getMessage(), e);
|
|
}
|
|
|
|
}
|
|
|
|
private void inserirCajaFormaPagoVendaEmbarcada(VendaEmbarcadaVO vendaEmbarcada) throws VendaEmbarcadaCajaFormapagoException {
|
|
try {
|
|
SQLQuery query = getSession().createSQLQuery(sqlBuilder.getSQLInserirCajaFormaPagoVendaEmbarcada());
|
|
|
|
query.setInteger("formaPagoId", vendaEmbarcada.getFormaPagoId());
|
|
query.setLong("cajaId", vendaEmbarcada.getCajaId());
|
|
query.setBigDecimal("importe", vendaEmbarcada.getPrecio());
|
|
query.setInteger("usuarioId", vendaEmbarcada.getUsuarioId());
|
|
query.setLong("cajaFormaPagoId", obterIdCajaFormaPago().longValue());
|
|
query.setTimestamp("fecModIf", vendaEmbarcada.getFecModIf());
|
|
|
|
if (query.executeUpdate() != 1) {
|
|
throw new VendaEmbarcadaCajaFormapagoException("Erro ao gerar forma de pagamento do caixa venda embarcada");
|
|
}
|
|
|
|
} catch (VendaEmbarcadaCajaFormapagoException e) {
|
|
throw e;
|
|
} catch (Exception e) {
|
|
log.error(e.getMessage(), e);
|
|
throw new VendaEmbarcadaCajaFormapagoException(e.getMessage(), e);
|
|
}
|
|
}
|
|
|
|
private void inserirBoletoVendaEmbarcada(VendaEmbarcadaVO vendaEmbarcada) throws VendaEmbarcadaBoletoException {
|
|
try {
|
|
|
|
SQLQuery query = getSession().createSQLQuery(sqlBuilder.getSQLInserirBoletoVendaEmbarcada());
|
|
|
|
vendaEmbarcada.setBoletoId(obterIdBoleto().longValue());
|
|
vendaEmbarcada.setNumOperacion(obterNumOperacion().toString());
|
|
|
|
query.setBigInteger("empresaCorridaId", vendaEmbarcada.getEmpresaId());
|
|
query.setInteger("destinoId", vendaEmbarcada.getDestinoId());
|
|
query.setInteger("tipoVentaId", vendaEmbarcada.getTipoVentaId());
|
|
query.setInteger("categoriaId", vendaEmbarcada.getCategoriaId());
|
|
query.setInteger("corridaId", vendaEmbarcada.getCorridaId());
|
|
query.setInteger("claseServicioId", vendaEmbarcada.getClaseServicioId());
|
|
query.setDate("fecCorrida", vendaEmbarcada.getFecCorrida());
|
|
query.setInteger("puntoVentaId", vendaEmbarcada.getPuntoVentaId());
|
|
query.setBigInteger("empresaPuntoVentaId", vendaEmbarcada.getEmpresaId());
|
|
query.setInteger("origemId", vendaEmbarcada.getOrigemId());
|
|
query.setInteger("marcaId", vendaEmbarcada.getMarcaId());
|
|
query.setString("numAsiento", vendaEmbarcada.getNumAsiento());
|
|
query.setBigDecimal("precioPagado", vendaEmbarcada.getPrecio());
|
|
query.setDate("fechorViaje", vendaEmbarcada.getFechorViaje());
|
|
query.setDate("fechorVenta", vendaEmbarcada.getFechorVenta());
|
|
query.setString("numOperacion", vendaEmbarcada.getNumOperacion());
|
|
query.setInteger("usuarioId", vendaEmbarcada.getUsuarioId());
|
|
query.setBigDecimal("precioBase", vendaEmbarcada.getPrecio());
|
|
query.setInteger("estacionId", vendaEmbarcada.getEstacionId());
|
|
query.setBigDecimal("importeTaxaEmbarque", vendaEmbarcada.getImporteTaxaEmbarque());
|
|
query.setBigDecimal("importePedagio", vendaEmbarcada.getImportePedagio());
|
|
query.setBigDecimal("importeOutros", vendaEmbarcada.getImporteOutros());
|
|
query.setBigDecimal("importeSeguro", vendaEmbarcada.getImporteSeguro());
|
|
query.setInteger("rutaId", vendaEmbarcada.getRutaId());
|
|
query.setLong("boletoId", vendaEmbarcada.getBoletoId());
|
|
query.setTimestamp("fecModIf", vendaEmbarcada.getFecModIf());
|
|
query.setBigDecimal("precioPricing", vendaEmbarcada.getPrecio());
|
|
query.setString("numFolioPreimpresso", vendaEmbarcada.getNumFolioPreimpresso());
|
|
query.setString("serieImpFiscal", vendaEmbarcada.getSerieImpFiscal());
|
|
|
|
if (query.executeUpdate() != 1) {
|
|
throw new VendaEmbarcadaBoletoException("Erro ao gerar boleto venda embarcada");
|
|
}
|
|
|
|
} catch (VendaEmbarcadaBoletoException e) {
|
|
throw e;
|
|
} catch (Exception e) {
|
|
log.error(e.getMessage(), e);
|
|
throw new VendaEmbarcadaBoletoException(e.getMessage(), e);
|
|
}
|
|
}
|
|
|
|
private void inserirBoletoFormaPagoVendaEmbarcada(VendaEmbarcadaVO vendaEmbarcada) throws VendaEmbarcadaBoletoFormapagoException {
|
|
try {
|
|
|
|
SQLQuery query = getSession().createSQLQuery(sqlBuilder.getSQLInserirBoletoFormaPagoVendaEmbarcada());
|
|
|
|
query.setInteger("formaPagoId", vendaEmbarcada.getFormaPagoId());
|
|
query.setLong("boletoId", vendaEmbarcada.getBoletoId());
|
|
query.setBigDecimal("importe", vendaEmbarcada.getPrecio());
|
|
query.setTimestamp("fecModIf", vendaEmbarcada.getFecModIf());
|
|
query.setInteger("usuarioId", vendaEmbarcada.getUsuarioId());
|
|
query.setBigDecimal("boletoFormaPagoId", obterIdBoletoFormaPago());
|
|
|
|
if (query.executeUpdate() != 1) {
|
|
throw new VendaEmbarcadaBoletoFormapagoException("Erro ao gerar forma de pagamento do boleto venda embarcada");
|
|
}
|
|
|
|
} catch (VendaEmbarcadaBoletoFormapagoException e) {
|
|
throw e;
|
|
} catch (Exception e) {
|
|
log.error(e.getMessage(), e);
|
|
throw new VendaEmbarcadaBoletoFormapagoException(e.getMessage(), e);
|
|
}
|
|
}
|
|
|
|
private BigDecimal obterIdBoletoFormaPago() {
|
|
SQLQuery sql = getSession().createSQLQuery(sqlBuilder.getSQLObterSequenceBoletoFormaPago());
|
|
|
|
return gerarChave((BigDecimal) sql.uniqueResult());
|
|
}
|
|
|
|
private BigDecimal obterIdCajaFormaPago() {
|
|
SQLQuery sql = getSession().createSQLQuery(sqlBuilder.getSQLObterSequenceCajaFormaPago());
|
|
|
|
return gerarChave((BigDecimal) sql.uniqueResult());
|
|
}
|
|
|
|
private BigDecimal obterIdBoleto() {
|
|
SQLQuery sql = getSession().createSQLQuery(sqlBuilder.getSQLObterSequenceCajaFormaPago());
|
|
|
|
return gerarChave((BigDecimal) sql.uniqueResult());
|
|
}
|
|
|
|
private BigDecimal obterIdCaja() {
|
|
SQLQuery sql = getSession().createSQLQuery(sqlBuilder.getSQLObterSequenceCaja());
|
|
|
|
return gerarChave((BigDecimal) sql.uniqueResult());
|
|
}
|
|
|
|
private BigDecimal obterNumOperacion() {
|
|
SQLQuery sql = getSession().createSQLQuery(sqlBuilder.getSQLObterSequenciaNumOperacion());
|
|
|
|
return gerarChave((BigDecimal) sql.uniqueResult());
|
|
}
|
|
|
|
private BigDecimal gerarChave(BigDecimal seq) {
|
|
Integer tamChave = 13;
|
|
|
|
String chave = "1";
|
|
|
|
--tamChave;
|
|
|
|
while ((seq.toString().length() + chave.length()) <= (tamChave)) {
|
|
chave += "0";
|
|
}
|
|
|
|
return new BigDecimal(chave += seq);
|
|
}
|
|
|
|
private List<DadosBancarioVO> carregarDadosDeposito(Long cajaId, Integer formapagoId) {
|
|
StringBuilder sQuery = new StringBuilder();
|
|
sQuery.append("SELECT CDDP.IDENTIFICACAO_DEPOSITO, CDDP.IMPORTE, CDDP.FECDEPOSITO ")
|
|
.append("FROM CAJA_DET_DEPOSITO_PAGO CDDP ")
|
|
.append("JOIN CAJA_FORMAPAGO CFP ON CFP.CAJAFORMAPAGO_ID = CDDP.CAJAFORMAPAGO_ID ")
|
|
.append("WHERE CDDP.ACTIVO = 1 ")
|
|
.append("AND CFP.CAJA_ID = :cajaId ")
|
|
.append("AND CFP.FORMAPAGO_ID = :formapagoId ");
|
|
|
|
SQLQuery query = getSession().createSQLQuery(sQuery.toString())
|
|
.addScalar("IDENTIFICACAO_DEPOSITO", StringType.INSTANCE)
|
|
.addScalar("IMPORTE", BigDecimalType.INSTANCE)
|
|
.addScalar("FECDEPOSITO", DateType.INSTANCE);
|
|
|
|
query.setResultTransformer(new DatosDadosBancarioResultTransformer());
|
|
query.setParameter("cajaId", cajaId);
|
|
query.setParameter("formapagoId", formapagoId);
|
|
|
|
return query.list();
|
|
}
|
|
|
|
private boolean isPagamentoDeposito(TipoFormapago tipoFormapago) {
|
|
return TipoFormapago.DEPOSITO.equals(tipoFormapago);
|
|
}
|
|
|
|
@Override
|
|
public Map<String, List<Caja>> buscarCajaYTarjeta(String... numoperacionList) {
|
|
|
|
String queryString = "SELECT DISTINCT c FROM Caja c "
|
|
+ "LEFT JOIN FETCH c.cajaFormaPago cfp "
|
|
+ "LEFT JOIN FETCH cfp.cajaDetPago cdp "
|
|
+ "LEFT JOIN FETCH cdp.cajaTarjetas ct "
|
|
+ "WHERE c.numoperacion IN(:numoperacion) ";
|
|
|
|
Query query = getSession().createQuery(queryString);
|
|
query.setParameterList("numoperacion", numoperacionList);
|
|
|
|
List<Caja> cajaList = query.list();
|
|
HashMap<String, List<Caja>> result = new HashMap<String, List<Caja>>();
|
|
for (Caja caja : cajaList) {
|
|
String numoperacion = caja.getNumoperacion();
|
|
List<Caja> cajaListTemp = result.get(numoperacion);
|
|
if (cajaListTemp == null) {
|
|
cajaListTemp = new ArrayList<Caja>();
|
|
result.put(numoperacion, cajaListTemp);
|
|
}
|
|
cajaListTemp.add(caja);
|
|
}
|
|
|
|
return result;
|
|
|
|
}
|
|
|
|
@Override
|
|
@Transactional(rollbackFor = { BusinessException.class })
|
|
public Integer atualizaCajasIntegracaoTotvs(Marca marca, Date dataIncial, Date dataFinal, PuntoVenta puntoVenta) throws BusinessException {
|
|
|
|
// update caja set integradototvs = 0 where PUNTOVENTA_ID = 269 and FECHORVENTA >= '30/03/2018' and FECHORVENTA <= '01/04/2018';
|
|
StringBuilder sb = new StringBuilder();
|
|
sb.append(" update caja set integradototvs = 2, CONTADORINTEGRADOTOTVS = 0 ");
|
|
sb.append(" where FECHORVENTA >= :fechorInicial ");
|
|
sb.append(" and FECHORVENTA <= :fechorFinal ");
|
|
sb.append(" and PUNTOVENTA_ID = :puntoVentaId ");
|
|
if (marca != null) {
|
|
sb.append(" and MARCA_ID = :marcaId ");
|
|
}
|
|
SQLQuery query = getSession().createSQLQuery(sb.toString());
|
|
if (marca != null) {
|
|
query.setInteger("marcaId", marca.getMarcaId());
|
|
}
|
|
query.setInteger("puntoVentaId", puntoVenta.getPuntoventaId());
|
|
query.setTimestamp("fechorInicial", dataIncial);
|
|
query.setTimestamp("fechorFinal", dataFinal);
|
|
Integer result = query.executeUpdate();
|
|
return result;
|
|
}
|
|
|
|
@Override
|
|
public List<RelatorioVendaCartaoCashMonitorVO> buscarVendaCartaoCashMonitor(Date dataIncial, Date dataFinal, Empresa empresa, PuntoVenta puntoVenta) {
|
|
SimpleDateFormat formatadorData = new SimpleDateFormat("dd/MM/yyyy");
|
|
|
|
StringBuilder sql = new StringBuilder();
|
|
sql.append("select to_char(ct.fecoperacion, 'dd/mm/yyyy') as data_transacao, ");
|
|
sql.append("pv.nombpuntoventa as loja, ");
|
|
sql.append("ct.nombtitular as adquirente, ");
|
|
sql.append("ct.nsu as nsu, ");
|
|
sql.append("ct.numautorizacion as autorizacao, ");
|
|
sql.append("sum(cfp.importe) as valor_bruto, ");
|
|
sql.append("fp.formapago_id as formapago_id, ");
|
|
sql.append("ct.tipotarjeta as bandeira, ");
|
|
sql.append("c.numoperacion as codigo_pedido, ");
|
|
sql.append("cfp.importe valor_parcela, ");
|
|
sql.append("count(ct.cajatarjeta_id) as parcelas ");
|
|
sql.append("from caja c ");
|
|
sql.append("inner join caja_formapago cfp on c.caja_id = cfp.caja_id and cfp.activo = 1 ");
|
|
sql.append("inner join marca ma on ma.marca_id = c.marca_id ");
|
|
sql.append("inner join forma_pago fp on cfp.formapago_id = fp.formapago_id ");
|
|
sql.append("inner join caja_det_pago cdp on c.caja_id = cdp.caja_id and cdp.cajaformapago_id = cfp.cajaformapago_id ");
|
|
sql.append("inner join caja_tarjeta ct on ct.cajadetpago_id = cdp.cajadetpago_id ");
|
|
sql.append("inner join punto_venta pv on pv.puntoventa_id = c.puntoventa_id ");
|
|
sql.append("where c.activo = 1 ");
|
|
sql.append("and c.indreimpresion = 0 ");
|
|
sql.append("and fp.formapago_id in (2, 3) "); // Débito e Crédito
|
|
sql.append("and ct.fecoperacion between to_date('" + formatadorData.format(dataIncial) + " 00:00', 'dd/mm/yyyy hh24:mi') and to_date('" + formatadorData.format(dataFinal) + " 23:59', 'dd/mm/yyyy hh24:mi') ");
|
|
|
|
if (empresa!=null) {
|
|
sql.append(" and ma.empresa_id = " + empresa.getEmpresaId());
|
|
}
|
|
|
|
if (puntoVenta!=null) {
|
|
sql.append(" and c.puntoventa_id = " + puntoVenta.getPuntoventaId());
|
|
}
|
|
|
|
sql.append(" group by to_char(ct.fecoperacion, 'dd/mm/yyyy'), pv.nombpuntoventa, ct.nombtitular, ct.nsu, ct.numautorizacion, fp.formapago_id, ct.tipotarjeta, c.numoperacion, cfp.importe");
|
|
sql.append(" order by 1, 2, 3, 4, 5");
|
|
|
|
SQLQuery query = getSession().createSQLQuery(sql.toString())
|
|
.addScalar("data_transacao", StringType.INSTANCE)
|
|
.addScalar("loja", StringType.INSTANCE)
|
|
.addScalar("adquirente", StringType.INSTANCE)
|
|
.addScalar("nsu", StringType.INSTANCE)
|
|
.addScalar("autorizacao", StringType.INSTANCE)
|
|
.addScalar("valor_bruto", BigDecimalType.INSTANCE)
|
|
.addScalar("formapago_id", IntegerType.INSTANCE)
|
|
.addScalar("bandeira", StringType.INSTANCE)
|
|
.addScalar("codigo_pedido", StringType.INSTANCE)
|
|
.addScalar("valor_parcela", BigDecimalType.INSTANCE)
|
|
.addScalar("parcelas", IntegerType.INSTANCE);
|
|
|
|
query.setResultTransformer(new RelatorioVendaCartaoCashMonitorResultTransformer());
|
|
|
|
return query.list();
|
|
}
|
|
|
|
@Override
|
|
public String validarEstoqueUtilizado(Aidf aidf, String folioInicial, String folioFinal) {
|
|
StringBuilder sql = new StringBuilder();
|
|
sql.append(" SELECT coalesce(min( numfoliosistema), '0') ");
|
|
sql.append(" FROM caja ");
|
|
sql.append(" where activo = 1 ");
|
|
sql.append(" and numseriepreimpresa = :serie ");
|
|
sql.append(" and numfoliosistema between :folioInicial and :folioFinal ");
|
|
|
|
SQLQuery query = getSession().createSQLQuery(sql.toString());
|
|
query.setString("serie", aidf.getSerie());
|
|
query.setString("folioInicial", folioInicial);
|
|
query.setString("folioFinal", folioFinal);
|
|
return (String)query.uniqueResult();
|
|
}
|
|
}
|