107 lines
5.2 KiB
Java
107 lines
5.2 KiB
Java
package com.rjconsultores.ventaboletos.dao.hibernate;
|
|
|
|
import java.util.Date;
|
|
import java.util.List;
|
|
|
|
import org.hibernate.Query;
|
|
import org.hibernate.SessionFactory;
|
|
import org.hibernate.transform.AliasToBeanResultTransformer;
|
|
import org.hibernate.type.BigDecimalType;
|
|
import org.hibernate.type.BooleanType;
|
|
import org.hibernate.type.IntegerType;
|
|
import org.hibernate.type.StringType;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Qualifier;
|
|
import org.springframework.stereotype.Repository;
|
|
|
|
import com.rjconsultores.ventaboletos.dao.ComissaoDAO;
|
|
import com.rjconsultores.ventaboletos.entidad.Comissao;
|
|
import com.rjconsultores.ventaboletos.vo.comissao.BoletoComissao;
|
|
|
|
@Repository("comissaoHibernateDAO")
|
|
public class ComissaoHibernateDAO extends GenericHibernateDAO<Comissao, Integer> implements ComissaoDAO {
|
|
|
|
@Autowired
|
|
public ComissaoHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) {
|
|
setSessionFactory(factory);
|
|
}
|
|
|
|
@SuppressWarnings("unchecked")
|
|
@Override
|
|
public List<BoletoComissao> buscarReceitasComissoes(Integer puntoVentaId, Integer empresaId, Date periodo) {
|
|
|
|
StringBuffer sql = new StringBuffer();
|
|
sql.append("select ");
|
|
sql.append("b.marca_id as empresaId, b.puntoventa_id as puntoVentaId, ");
|
|
sql.append("to_char(b.fechorventa, 'dd-mm-yyyy') as datavenda, b.indstatusboleto as indstatusboleto, ");
|
|
sql.append("b.tipoventa_id as tipoVenta, b.motivocancelacion_id as motivoCancelacionId, ");
|
|
sql.append("coalesce(sum(b.preciopagado), 0) as valorpagado, coalesce(sum(b.importeseguro), 0) as seguro, ");
|
|
sql.append("coalesce(sum(b.importepedagio), 0) as pedagio, coalesce(sum(b.importetaxaembarque), 0) as embarque, ");
|
|
sql.append("coalesce(sum(case when ee.tipoeventoextra_id = 1 then ee.impingreso else 0 end), 0) as excessoBagagem, ");
|
|
sql.append("coalesce(sum(case when ee.tipoeventoextra_id = 21 then ee.impingreso else 0 end), 0) as seguroOpcional, ");
|
|
sql.append("coalesce(sum(case when ee.tipoeventoextra_id <> 21 ");
|
|
sql.append(" or ee.tipoeventoextra_id <> 1 then ee.impingreso else 0 end), 0) as seguroOutros, ");
|
|
sql.append("case when c.ptovtaventa_id = b.puntoventa_id then 1 else 0 end as ptoVtaOrigem, ");
|
|
sql.append("ei.icms as icmsBase ");
|
|
sql.append("from boleto b ");
|
|
sql.append("inner join parada origen on origen.parada_id = b.origen_id ");
|
|
sql.append("inner join ciudad ci on origen.ciudad_id = ci.ciudad_id ");
|
|
sql.append("inner join estado e on ci.estado_id = e.estado_id ");
|
|
sql.append("inner join empresa_imposto ei on (ei.estado_id = e.estado_id ");
|
|
sql.append(" and ei.empresa_id = b.marca_id and ei.activo = 1) ");
|
|
sql.append("left join caja c on c.numoperacion = b.numoperacion and c.numfoliosistema = b.numfoliosistema ");
|
|
sql.append(" and c.numfoliopreimpreso = b.numfoliopreimpreso and c.numseriepreimpresa = b.numseriepreimpresa ");
|
|
sql.append("left join evento_extra ee on ee.boleto_id = b.boleto_id ");
|
|
sql.append("where ");
|
|
sql.append("to_char(b.fechorventa, 'mmyyyy') = to_char(:periodo, 'mmyyyy') ");
|
|
sql.append("and b.marca_id = :empresaId and b.puntoventa_id = :puntoventaId ");
|
|
sql.append("group by b.marca_id, b.puntoventa_id, to_char(b.fechorventa, 'dd-mm-yyyy'), ");
|
|
sql.append("b.indstatusboleto, b.tipoventa_id, b.motivocancelacion_id, c.ptovtaventa_id, ei.icms ");
|
|
sql.append("order by datavenda ");
|
|
|
|
Query query = getSession().createSQLQuery(sql.toString())
|
|
.addScalar("empresaId", IntegerType.INSTANCE)
|
|
.addScalar("puntoVentaId", IntegerType.INSTANCE)
|
|
.addScalar("datavenda", StringType.INSTANCE)
|
|
.addScalar("tipoVenta", IntegerType.INSTANCE)
|
|
.addScalar("indstatusboleto", StringType.INSTANCE)
|
|
.addScalar("motivoCancelacionId", IntegerType.INSTANCE)
|
|
.addScalar("valorpagado", BigDecimalType.INSTANCE)
|
|
.addScalar("seguro", BigDecimalType.INSTANCE)
|
|
.addScalar("pedagio", BigDecimalType.INSTANCE)
|
|
.addScalar("embarque", BigDecimalType.INSTANCE)
|
|
.addScalar("excessoBagagem", BigDecimalType.INSTANCE)
|
|
.addScalar("seguroOpcional", BigDecimalType.INSTANCE)
|
|
.addScalar("seguroOutros", BigDecimalType.INSTANCE)
|
|
.addScalar("ptoVtaOrigem", BooleanType.INSTANCE)
|
|
.addScalar("icmsBase", BigDecimalType.INSTANCE)
|
|
.setResultTransformer(new AliasToBeanResultTransformer(BoletoComissao.class));
|
|
|
|
query.setTimestamp("periodo", periodo);
|
|
query.setInteger("puntoventaId", puntoVentaId);
|
|
query.setInteger("empresaId", empresaId);
|
|
|
|
return query.list();
|
|
}
|
|
|
|
@SuppressWarnings("unchecked")
|
|
@Override
|
|
public List<Comissao> buscaComissaoVigencia(Integer puntoVentaId, Integer empresaId, String competencia) {
|
|
|
|
StringBuilder hql = new StringBuilder();
|
|
hql.append(" from Comissao c ");
|
|
hql.append(" where c.activo = 1 ");
|
|
hql.append(" AND c.puntoVentaId = :puntoventaId ");
|
|
hql.append(" AND c.empresaId = :empresaId ");
|
|
hql.append(" AND c.competencia = :periodo ");
|
|
|
|
Query query = getSession().createQuery(hql.toString());
|
|
query.setString("periodo", competencia);
|
|
query.setInteger("puntoventaId", puntoVentaId);
|
|
query.setInteger("empresaId", empresaId);
|
|
|
|
return query.list();
|
|
|
|
}
|
|
}
|