wilian 2017-08-03 20:10:41 +00:00
parent 2f95e70e95
commit 5ce838803f
7 changed files with 183 additions and 87 deletions

View File

@ -4,7 +4,6 @@ import java.util.Date;
import java.util.List;
import com.rjconsultores.ventaboletos.entidad.Comissao;
import com.rjconsultores.ventaboletos.entidad.PtovtaComissao;
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
import com.rjconsultores.ventaboletos.vo.comissao.BoletoComissao;
import com.rjconsultores.ventaboletos.vo.comissao.HistoricoComissao;

View File

@ -32,7 +32,6 @@ 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 org.zkoss.util.resource.Labels;
import com.rjconsultores.ventaboletos.constantes.Constantes;
import com.rjconsultores.ventaboletos.dao.ConferenciaComissaoDAO;
@ -158,6 +157,7 @@ public class ConferenciaComissaoHibernateDAO extends GenericHibernateDAO<Confere
return;
}
@SuppressWarnings("unchecked")
private void carregarPuntoVentas(List<ConferenciaComissaoVO> lsConferencias, String competencia,
Empresa empresa, PuntoVenta puntoVenta, Date dataMovimento) throws BusinessException {
try {
@ -205,20 +205,19 @@ public class ConferenciaComissaoHibernateDAO extends GenericHibernateDAO<Confere
}
}
@SuppressWarnings("unchecked")
private void carregarConferenciasRegistradas(List<ConferenciaComissaoVO> lsConferencias,
String competencia, Empresa empresa, PuntoVenta puntoVenta, Date dataMovimento, Map<String, Object> parametros) throws BusinessException {
try {
if(parametros == null){
parametros = carregarParametros(null, null, competencia, empresa, puntoVenta, dataMovimento, false);
parametros = carregarParametros(null, null, competencia, empresa, puntoVenta, dataMovimento, false);
}
StringBuilder sQuery = new StringBuilder("SELECT co FROM Conferencia co ");
sQuery.append("JOIN co.empresa em ").append("JOIN co.puntoVenta pv ")
.append("WHERE co.activo = 1 ");
if(dataMovimento != null){
sQuery.append("AND co.datamovimento BETWEEN TO_DATE(:dataInicial,'DD/MM/YYYY HH24:MI') AND TO_DATE(:dataFinal,'DD/MM/YYYY HH24:MI')");
}else{
sQuery.append("AND co.datamovimento BETWEEN :dataInicial AND :dataFinal ");
}
sQuery.append("JOIN co.empresa em ")
.append("JOIN co.puntoVenta pv ")
.append("WHERE co.activo = 1 ")
.append("AND co.datamovimento BETWEEN TO_DATE(:dataInicial,'DD/MM/YYYY HH24:MI') AND TO_DATE(:dataFinal,'DD/MM/YYYY HH24:MI') ");
if (parametros.containsKey("empresaId")) {
sQuery.append("AND em.empresaId = :empresaId ");
}
@ -228,7 +227,9 @@ public class ConferenciaComissaoHibernateDAO extends GenericHibernateDAO<Confere
Query qr = getSession().createQuery(sQuery.toString());
setParametros(qr, parametros);
processarQueryConferencia(qr.list(), lsConferencias, competencia, dataMovimento, (Date) parametros.get("dataInicial"),(Date) parametros.get("dataFinal"));
Date dataInicial = parametros.get("dataInicial") != null ? DateUtil.getDateFromString(parametros.get("dataInicial").toString(), "dd/MM/yyyy HH:mm") : null;
Date dataFinal = parametros.get("dataFinal") != null ? DateUtil.getDateFromString(parametros.get("dataFinal").toString(), "dd/MM/yyyy HH:mm") : null;
processarQueryConferencia(qr.list(), lsConferencias, competencia, dataMovimento, dataInicial, dataFinal);
}
catch (Exception e) {
log.error(e.getMessage(), e);
@ -236,6 +237,7 @@ public class ConferenciaComissaoHibernateDAO extends GenericHibernateDAO<Confere
}
}
@SuppressWarnings("rawtypes")
private void setParametros(Query qr, Map<String, Object> parametros) {
for (Entry<String, Object> parametro : parametros.entrySet()) {
if (parametro.getValue() instanceof Collection) {
@ -257,7 +259,7 @@ public class ConferenciaComissaoHibernateDAO extends GenericHibernateDAO<Confere
ResultSet rset = null;
try {
Map<String, Object> parametros = carregarParametros(dataInicialDate, dataFinalDate, competencia, empresa, puntoVenta, dataMovimento, false);
Map<String, Object> parametros = carregarParametros(dataInicialDate, dataFinalDate, competencia, empresa, puntoVenta, dataMovimento, false);
StringBuilder sQuery = new StringBuilder()
.append("SELECT PV.PUNTOVENTA_ID AS \"puntoventaId\", PV.NUMPUNTOVENTA as \"numPuntoVenta\", ")
@ -279,19 +281,8 @@ public class ConferenciaComissaoHibernateDAO extends GenericHibernateDAO<Confere
int idxParametro = 1;
stmt = con.prepareStatement(sQuery.toString());
String dataIncial = null;
String dataFinal = null;
if (dataInicialDate != null) {
dataIncial = DateUtil.getStringDate(DateUtil.inicioFecha(dataInicialDate), "dd/MM/yyyy HH:mm");
dataFinal = DateUtil.getStringDate(DateUtil.fimFecha(dataFinalDate), "dd/MM/yyyy HH:mm");
} else if (parametros.get("dataInicial") instanceof String) {
dataIncial = (String) parametros.get("dataInicial");
dataFinal = (String) parametros.get("dataFinal");
} else {
dataIncial = DateUtil.getStringDate(DateUtil.inicioFecha((Date) parametros.get("dataInicial")), "dd/MM/yyyy HH:mm");
dataFinal = DateUtil.getStringDate(DateUtil.fimFecha((Date) parametros.get("dataFinal")), "dd/MM/yyyy HH:mm");
}
String dataIncial = (String) parametros.get("dataInicial");
String dataFinal = (String) parametros.get("dataFinal");
stmt.setString(idxParametro++, dataIncial );
stmt.setString(idxParametro++, dataFinal);
if (parametros.containsKey("empresaId")) {
@ -488,20 +479,14 @@ public class ConferenciaComissaoHibernateDAO extends GenericHibernateDAO<Confere
parametros.put("dataFinal", DateUtil.getStringDate(DateUtil.fimFecha(datamovimento), formatoData));
}
if (StringUtils.isNotBlank(competencia)) {
String[] vetCompetencia = competencia.split("/");
Calendar cal = Calendar.getInstance();
cal.set(Calendar.MONTH, Integer.valueOf(vetCompetencia[0]) - 1);
cal.set(Calendar.YEAR, Integer.valueOf(vetCompetencia[1]));
parametros.put("dataInicial", DateUtil.getDateFromString(
cal.getActualMinimum(Calendar.DAY_OF_MONTH) + "/" + competencia + " 00:00:00", formatoData));
parametros.put("dataFinal", DateUtil.getDateFromString(
cal.getActualMaximum(Calendar.DAY_OF_MONTH) + "/" + competencia + " 23:59:59", formatoData));
if (StringUtils.isNotBlank(competencia) && datamovimento == null) {
parametros.put("dataInicial", DateUtil.getStringDate(DateUtil.inicioFecha(DateUtil.getDataInicialCompetencia(competencia)), formatoData));
parametros.put("dataFinal", DateUtil.getStringDate(DateUtil.fimFecha(DateUtil.getDataFinalCompetencia(competencia)), formatoData));
}
if(parametros.get("dataInicial") == null && dataInicial != null){
parametros.put("dataInicial", dataInicial);
parametros.put("dataFinal", dataFinal);
parametros.put("dataInicial", DateUtil.getStringDate(dataInicial, formatoData));
parametros.put("dataFinal", DateUtil.getStringDate(dataFinal, formatoData));
}
return parametros;
@ -609,10 +594,11 @@ public class ConferenciaComissaoHibernateDAO extends GenericHibernateDAO<Confere
}
@Override
@SuppressWarnings("unchecked")
public List<EventosFinanceirosVO> carregarEventosFinanceiros(Conferencia conferencia)
throws BusinessException {
try {
Map<String, Object> parametros = carregarParametros(null, null, null, conferencia.getEmpresa(),
Map<String, Object> parametros = carregarParametros(null, null, conferencia.getCompetencia(), conferencia.getEmpresa(),
conferencia.getPuntoVenta(), conferencia.getDatamovimento(), true);
StringBuilder sQuery = new StringBuilder()
.append("SELECT EE.BOLETO_ID AS \"boletoId\", EE.EVENTOEXTRA_ID AS \"eventoextraId\", EE.NUMDOCUMENTO AS \"numdocumento\", ")
@ -621,7 +607,9 @@ public class ConferenciaComissaoHibernateDAO extends GenericHibernateDAO<Confere
.append("TEE.INDTIPO AS \"indtipo\", U.NOMBUSUARIO AS \"nombusuario\", LOG.LOGCONFERENCIA_ID AS \"logconferenciaId\", ")
.append("COMFP.COMEMPFORMAPAGO_ID AS \"comempformapagoId\", COMTEE.COMEMPTIPOEVENTOEXTRA_ID AS \"comemptipoeventoextraId\", ")
.append("COALESCE(CEC.INDTIPO_DEB_CRED, 0) AS \"tipoeventoextradebcred\", ")
.append("CEC.INDEVENTOSFINANCEIROS AS \"exigeConferenciaAba\", B.NUMFOLIOSISTEMA \"numFolioSistema\" ")
.append("CEC.INDEVENTOSFINANCEIROS AS \"exigeConferenciaAba\", B.NUMFOLIOSISTEMA \"numFolioSistema\", ")
.append("TEE.CVETIPOEVENTO AS \"cvetipoevento\", CD.FECCORTE AS \"feccorte\", ")
.append("EI.ICMS as \"icmsBase\", NVL(EST.ESTADO_ID,0) as \"estadoId\" ")
.append("FROM EVENTO_EXTRA EE ")
.append("JOIN TIPO_EVENTO_EXTRA TEE ON EE.TIPOEVENTOEXTRA_ID = TEE.TIPOEVENTOEXTRA_ID ")
.append("JOIN CAJA_DIVERSOS CD ON CD.EVENTOEXTRA_ID = EE.EVENTOEXTRA_ID ")
@ -633,6 +621,12 @@ public class ConferenciaComissaoHibernateDAO extends GenericHibernateDAO<Confere
.append("LEFT JOIN COM_EMP_FORMAPAGO COMFP ON COMFP.FORMAPAGO_ID = FP.FORMAPAGO_ID AND COMFP.EMPRESA_ID = EE.EMPRESA_ID AND COMFP.ACTIVO = 1 ")
.append("LEFT JOIN COM_EMP_TIPOEVENTOEXTRA COMTEE ON COMTEE.TIPOEVENTOEXTRA_ID = TEE.TIPOEVENTOEXTRA_ID AND COMTEE.EMPRESA_ID = EE.EMPRESA_ID AND COMTEE.ACTIVO = 1 ")
.append("LEFT JOIN BOLETO B ON B.BOLETO_ID = EE.BOLETO_ID ")
.append("LEFT JOIN PARADA ORI ON ORI.PARADA_ID = B.ORIGEN_ID ")
.append("LEFT JOIN CIUDAD CID ON CID.CIUDAD_ID = ORI.CIUDAD_ID ")
.append("LEFT JOIN ESTADO EST ON EST.ESTADO_ID = CID.ESTADO_ID ")
.append("LEFT JOIN MARCA M ON B.MARCA_ID = M.MARCA_ID ")
.append("LEFT JOIN EMPRESA E ON E.EMPRESA_ID = M.EMPRESA_ID ")
.append("LEFT JOIN EMPRESA_IMPOSTO EI ON (EI.ESTADO_ID = EST.ESTADO_ID AND EI.EMPRESA_ID = E.EMPRESA_ID AND EI.ACTIVO = 1) ")
.append("WHERE EE.ACTIVO = 1 ")
.append("AND CD.FECCORTE BETWEEN TO_DATE(:dataInicial, 'DD/MM/YYYY') AND TO_DATE(:dataFinal, 'DD/MM/YYYY') ")
;
@ -652,7 +646,8 @@ public class ConferenciaComissaoHibernateDAO extends GenericHibernateDAO<Confere
.addScalar("numdocumento", Hibernate.STRING)
.addScalar("impingreso", Hibernate.BIG_DECIMAL)
.addScalar("desctipoevento", Hibernate.STRING)
.addScalar("descinfo", Hibernate.STRING).addScalar("status", Hibernate.INTEGER)
.addScalar("descinfo", Hibernate.STRING)
.addScalar("status", Hibernate.INTEGER)
.addScalar("formapagoId", Hibernate.INTEGER)
.addScalar("descpago", Hibernate.STRING)
.addScalar("comempformapagoId", Hibernate.INTEGER)
@ -663,6 +658,10 @@ public class ConferenciaComissaoHibernateDAO extends GenericHibernateDAO<Confere
.addScalar("logconferenciaId", Hibernate.LONG)
.addScalar("exigeConferenciaAba", Hibernate.BOOLEAN)
.addScalar("numFolioSistema", Hibernate.STRING)
.addScalar("cvetipoevento", Hibernate.STRING)
.addScalar("feccorte", Hibernate.DATE)
.addScalar("icmsBase", Hibernate.BIG_DECIMAL)
.addScalar("estadoId", Hibernate.INTEGER)
.setResultTransformer(Transformers.aliasToBean(EventosFinanceirosVO.class));
setParametros(qr, parametros);
@ -681,6 +680,7 @@ public class ConferenciaComissaoHibernateDAO extends GenericHibernateDAO<Confere
}
@Override
@SuppressWarnings("unchecked")
public List<LogConferenciaVO> carregarLogConferencia(Conferencia conferencia)
throws BusinessException {
try {
@ -793,12 +793,12 @@ public class ConferenciaComissaoHibernateDAO extends GenericHibernateDAO<Confere
}
}
@SuppressWarnings("unchecked")
@Override
@SuppressWarnings("unchecked")
public List<BoletoComissao> carregarBilhetesComissao(Conferencia conferencia)
throws BusinessException {
try {
Map<String, Object> parametros = carregarParametros(null, null, null, conferencia.getEmpresa(),
Map<String, Object> parametros = carregarParametros(null, null, conferencia.getCompetencia(), conferencia.getEmpresa(),
conferencia.getPuntoVenta(), conferencia.getDatamovimento(), true);
StringBuilder sQuery = new StringBuilder()
@ -810,7 +810,9 @@ public class ConferenciaComissaoHibernateDAO extends GenericHibernateDAO<Confere
.append("CF.IMPORTE AS \"importeFp\", COMFP.COMEMPFORMAPAGO_ID AS \"comempformapagoId\", COMCAT.COMEMPCATEGORIA_ID AS \"comempcategoriaId\", C.NOMBPASAJERO AS \"nombpasajero\", ")
.append("E.INDCARBOLETOSDEVOLVIDOSCONF AS \"indcarboletosdevolvidosconf\", C.FECCORRIDA AS \"feccorrida\", C.CORRIDA_ID \"corridaId\", ")
.append("NVL(T.PRECIO,0) + NVL(T.IMPORTEPEDAGIO,0) + NVL(T.IMPORTETAXAEMBARQUE,0) + NVL(T.IMPORTESEGURO,0) + NVL(T.IMPORTEOUTROS,0) AS \"valorTabela\", ")
.append("C.INDCANCELACION AS \"indCancelacion\", C.INDREIMPRESION AS \"indreimpresion\" ")
.append("C.INDCANCELACION AS \"indCancelacion\", C.INDREIMPRESION AS \"indreimpresion\", C.FECCORTE AS \"feccorte\", ")
.append("EI.ICMS as \"icmsBase\", EST.ESTADO_ID as \"estadoId\", ")
.append("CASE WHEN C.PTOVTAVENTA_ID = C.PUNTOVENTA_ID THEN 1 ELSE 0 END AS ptoVtaOrigem ")
.append("FROM CAJA C ")
.append("LEFT JOIN PARADA ORI ON ORI.PARADA_ID = C.ORIGEN_ID ")
.append("LEFT JOIN CIUDAD CID ON CID.CIUDAD_ID = ORI.CIUDAD_ID ")
@ -823,6 +825,7 @@ public class ConferenciaComissaoHibernateDAO extends GenericHibernateDAO<Confere
.append("INNER JOIN USUARIO U ON C.USUARIO_ID = U.USUARIO_ID ")
.append("INNER JOIN MARCA M ON C.MARCA_ID = M.MARCA_ID ")
.append("INNER JOIN EMPRESA E ON E.EMPRESA_ID = M.EMPRESA_ID ")
.append("LEFT JOIN EMPRESA_IMPOSTO EI ON (EI.ESTADO_ID = EST.ESTADO_ID AND EI.EMPRESA_ID = E.EMPRESA_ID AND EI.ACTIVO = 1) ")
.append("LEFT JOIN COM_EMP_FORMAPAGO COMFP ON COMFP.FORMAPAGO_ID = FP.FORMAPAGO_ID AND COMFP.EMPRESA_ID = M.EMPRESA_ID AND COMFP.ACTIVO = 1 ")
.append("LEFT JOIN COM_EMP_CATEGORIA COMCAT ON COMCAT.CATEGORIA_ID = C.CATEGORIA_ID AND COMCAT.EMPRESA_ID = M.EMPRESA_ID AND COMCAT.ACTIVO = 1 ")
.append("INNER JOIN TARIFA T ON (T.DESTINO_ID = C.DESTINO_ID AND T.CLASESERVICIO_ID = C.CLASESERVICIO_ID AND T.MARCA_ID = M.MARCA_ID AND T.ORIGEN_ID = C.ORIGEN_ID AND T.RUTA_ID = C.RUTA_ID) ")
@ -878,9 +881,12 @@ public class ConferenciaComissaoHibernateDAO extends GenericHibernateDAO<Confere
.addScalar("corridaId", Hibernate.INTEGER)
.addScalar("indCancelacion", Hibernate.BOOLEAN)
.addScalar("indreimpresion", Hibernate.BOOLEAN)
.addScalar("feccorte", Hibernate.DATE)
.addScalar("icmsBase", Hibernate.BIG_DECIMAL)
.addScalar("estadoId", Hibernate.INTEGER)
.addScalar("ptoVtaOrigem", Hibernate.BOOLEAN)
.setResultTransformer(Transformers.aliasToBean(BoletoComissao.class));
setParametros(qr, parametros);
//qr.setParameter("motivocancelacionIdQuitacaoOcd", Constantes.MVO_CANCEL_QUITACAO_OCD.intValue());
List<BoletoComissao> lsBoletoComissao = new ArrayList<BoletoComissao>();
List<BoletoComissao> auxLsBoletoComissao = qr.list();
@ -928,6 +934,7 @@ public class ConferenciaComissaoHibernateDAO extends GenericHibernateDAO<Confere
}
@Override
@SuppressWarnings("unchecked")
public List<OcdVO> carregarOcds(Conferencia conferencia) throws BusinessException {
try {
Map<String, Object> parametros = carregarParametros(null, null, null, conferencia.getEmpresa(),
@ -1064,6 +1071,7 @@ public class ConferenciaComissaoHibernateDAO extends GenericHibernateDAO<Confere
}
@Override
@SuppressWarnings("unchecked")
public List<LogConferencia> carregarLogConferencia(Long conferenciaId) throws BusinessException {
try {
StringBuilder sQuery = new StringBuilder()
@ -1124,15 +1132,16 @@ public class ConferenciaComissaoHibernateDAO extends GenericHibernateDAO<Confere
}
@Override
@SuppressWarnings("unchecked")
public DiaConferenciaComissaoVO carregarConferenciaRegistrada(Date datamovimento,
Empresa empresa, PuntoVenta puntoVenta) throws BusinessException {
try {
String competencia = DateUtil.getStringDate(datamovimento, "MM/yyyy");
Map<String, Object> parametros = carregarParametros(null, null, competencia, empresa, puntoVenta, null, false);
Map<String, Object> parametros = carregarParametros(null, null, competencia, empresa, puntoVenta, datamovimento, false);
StringBuilder sQuery = new StringBuilder("SELECT co FROM Conferencia co ")
.append("JOIN co.empresa em ").append("JOIN co.puntoVenta pv ")
.append("WHERE co.activo = 1 ")
.append("AND co.datamovimento BETWEEN :dataInicial AND :dataFinal ");
.append("AND co.datamovimento BETWEEN TO_DATE(:dataInicial,'DD/MM/YYYY HH24:MI') AND TO_DATE(:dataFinal,'DD/MM/YYYY HH24:MI') ");
if (parametros.containsKey("empresaId")) {
sQuery.append("AND em.empresaId = :empresaId ");
@ -1143,8 +1152,6 @@ public class ConferenciaComissaoHibernateDAO extends GenericHibernateDAO<Confere
Query qr = getSession().createQuery(sQuery.toString());
setParametros(qr, parametros);
qr.setParameter("dataInicial", datamovimento);
qr.setParameter("dataFinal", datamovimento);
List<ConferenciaComissaoVO> lsConferenciaComissao = new ArrayList<ConferenciaComissaoVO>();
processarQueryConferencia(qr.list(), lsConferenciaComissao, competencia, datamovimento, null, null);

View File

@ -85,6 +85,9 @@ public class Conferencia implements Serializable {
@Transient
private boolean semPendenciaConferencia;
@Transient
private String competencia;
public Conferencia() {
super();
this.indboletogerado = Boolean.FALSE;
@ -253,4 +256,12 @@ public class Conferencia implements Serializable {
this.semPendenciaConferencia = semPendenciaConferencia;
}
public String getCompetencia() {
return competencia;
}
public void setCompetencia(String competencia) {
this.competencia = competencia;
}
}

View File

@ -5,19 +5,20 @@ import java.util.List;
import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
import com.rjconsultores.ventaboletos.exception.BusinessException;
import com.rjconsultores.ventaboletos.exception.ComissaoException;
import com.rjconsultores.ventaboletos.vo.comissao.HistoricoComissao;
import com.rjconsultores.ventaboletos.vo.comissao.RegistroCalculo;
public interface CalculoComissaoService {
public RegistroCalculo relatorioCalculoComissao(Integer puntoVentaId, Integer empresaId, Date periodo) throws ComissaoException;
public RegistroCalculo relatorioCalculoComissao(Integer puntoVentaId, Integer empresaId, Date periodo) throws ComissaoException, BusinessException;
public void registrarCalculoComissao(PuntoVenta puntoVenta, Empresa empresa, Date periodo, boolean ignorarComissaoGerada) throws ComissaoException;
public void cancelarCalculoComissao(Integer puntoVentaId, Integer empresaId, Date periodo) throws ComissaoException;
public List<RegistroCalculo> relatorioCalculoComissao(Integer empresaId, Date periodo) throws ComissaoException;
public List<RegistroCalculo> relatorioCalculoComissao(Integer empresaId, Date periodo) throws ComissaoException, BusinessException;
public void registrarCalculoComissao(Empresa empresa, Date periodo, boolean ignorarComissaoGerada) throws ComissaoException;

View File

@ -21,8 +21,11 @@ import org.springframework.stereotype.Service;
import org.zkoss.util.resource.Labels;
import com.rjconsultores.ventaboletos.constantes.Constantes;
import com.rjconsultores.ventaboletos.constantes.TipoEventoExtra;
import com.rjconsultores.ventaboletos.dao.ComissaoDAO;
import com.rjconsultores.ventaboletos.dao.ConferenciaComissaoDAO;
import com.rjconsultores.ventaboletos.entidad.Comissao;
import com.rjconsultores.ventaboletos.entidad.Conferencia;
import com.rjconsultores.ventaboletos.entidad.Constante;
import com.rjconsultores.ventaboletos.entidad.DescontoComissao;
import com.rjconsultores.ventaboletos.entidad.Empresa;
@ -32,6 +35,7 @@ import com.rjconsultores.ventaboletos.entidad.PtovtaComissao.Receita;
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
import com.rjconsultores.ventaboletos.enums.IndStatusBoleto;
import com.rjconsultores.ventaboletos.enums.MimeType;
import com.rjconsultores.ventaboletos.exception.BusinessException;
import com.rjconsultores.ventaboletos.exception.ComissaoException;
import com.rjconsultores.ventaboletos.service.CalculoComissaoService;
import com.rjconsultores.ventaboletos.service.ComissaoService;
@ -47,6 +51,7 @@ import com.rjconsultores.ventaboletos.vo.comissao.BoletoComissao;
import com.rjconsultores.ventaboletos.vo.comissao.ComissaoDesconto;
import com.rjconsultores.ventaboletos.vo.comissao.ComissaoDesconto.TipoDesconto;
import com.rjconsultores.ventaboletos.vo.comissao.ComissaoReceita;
import com.rjconsultores.ventaboletos.vo.comissao.EventosFinanceirosVO;
import com.rjconsultores.ventaboletos.vo.comissao.HistoricoComissao;
import com.rjconsultores.ventaboletos.vo.comissao.RegistroCalculo;
@ -68,6 +73,9 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService {
@Autowired
private ComissaoDAO comissaoDAO;
@Autowired
private ConferenciaComissaoDAO conferenciaComissaoDAO;
@Autowired
private ConferenciaComissaoService conferenciaComissaoService;
@ -186,7 +194,7 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService {
}
@Override
public RegistroCalculo relatorioCalculoComissao(Integer puntoVentaId, Integer empresaId, Date periodo) throws ComissaoException {
public RegistroCalculo relatorioCalculoComissao(Integer puntoVentaId, Integer empresaId, Date periodo) throws ComissaoException, BusinessException {
return realizarCalculoComissao(puntoVentaId, empresaId, periodo);
}
@ -291,12 +299,17 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService {
}
@SuppressWarnings("unchecked")
public RegistroCalculo realizarCalculoComissao(Integer puntoVentaId, Integer empresaId, Date periodo) throws ComissaoException {
public RegistroCalculo realizarCalculoComissao(Integer puntoVentaId, Integer empresaId, Date periodo) throws ComissaoException, BusinessException {
PtovtaComissao ptovtaComissao = ptovtaComissaoService.buscarPuntaVentaEmpresa(puntoVentaId, empresaId);
if (ptovtaComissao != null) {
List<BoletoComissao> receitasBoleto = comissaoDAO.buscarReceitasComissoes(puntoVentaId, empresaId, periodo);
Conferencia conferencia = new Conferencia();
conferencia.setPuntoVenta(new PuntoVenta(puntoVentaId));
conferencia.setEmpresa(new Empresa(empresaId));
conferencia.setCompetencia(DateUtil.getStringDate(periodo, "MM/yyyy"));
List<BoletoComissao> receitasBoleto = conferenciaComissaoDAO.carregarBilhetesComissao(conferencia);
List<EventosFinanceirosVO> eventosFinanceirosVOs = conferenciaComissaoDAO.carregarEventosFinanceiros(conferencia);
Calendar calendario = Calendar.getInstance();
calendario.setTime(periodo);
@ -305,7 +318,7 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService {
int mes = calendario.get(Calendar.MONTH) + 1;
int ano = calendario.get(Calendar.YEAR);
List<ComissaoReceita> receitas = calculaReceitaComissao(empresaId, ptovtaComissao, receitasBoleto, ultimodia, mes, ano);
List<ComissaoReceita> receitas = calculaReceitaComissao(empresaId, ptovtaComissao, receitasBoleto, ultimodia, mes, ano, eventosFinanceirosVOs);
RegistroCalculo rc = new RegistroCalculo();
rc.setNombpuntoventa(ptovtaComissao.getPuntoventaId().getNombpuntoventa());
@ -422,7 +435,7 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService {
return false;
}
private List<ComissaoReceita> calculaReceitaComissao(Integer empresaId, PtovtaComissao ptovtaComissao, List<BoletoComissao> receitasBoleto, Integer ultimodia, Integer mes, Integer ano) {
private List<ComissaoReceita> calculaReceitaComissao(Integer empresaId, PtovtaComissao ptovtaComissao, List<BoletoComissao> receitasBoleto, Integer ultimodia, Integer mes, Integer ano, List<EventosFinanceirosVO> eventosFinanceirosVOs) {
List<EmpresaImposto> impostos = empresaImpostoService.buscarEmpresaImposto(empresaId);
@ -471,6 +484,7 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService {
isReceitaLiquida = true;
}
/* Calculando comissão para os boletos */
for (BoletoComissao rcc : list) {
boolean isAltaTemporada = validaAltaTemporada(impostos, mes, rcc.getEstadoId());
@ -536,19 +550,6 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService {
} else {
// Receitas calculadas sempre
receitaExcessoBagagem = MoneyHelper.somar(receitaExcessoBagagem, rcc.getExcessoBagagem());
BigDecimal excessoBagagem = calculoExcessoBagagem(isAltaTemporada, ptovtaComissao, rcc.getExcessoBagagem());
comissaoExcessoBagagem = MoneyHelper.somar(comissaoExcessoBagagem, excessoBagagem);
receitaSeguroOpcional = MoneyHelper.somar(receitaSeguroOpcional, rcc.getSeguroOpcional());
BigDecimal segOpcional = calculoSeguroOpcional(isAltaTemporada, ptovtaComissao, rcc.getSeguroOpcional());
comissaoSegOpcional = MoneyHelper.somar(comissaoSegOpcional, segOpcional);
receitaSeguroOutros = MoneyHelper.somar(receitaSeguroOutros, rcc.getSeguroOutros());
BigDecimal outros = calculoOutros(isAltaTemporada, ptovtaComissao, rcc.getSeguroOutros());
comissaoOutros = MoneyHelper.somar(comissaoOutros, outros);
// Receita GAP
if (rcc.getTipoVenta().equals(Constantes.TPV_BOLETO_REMOTO.intValue())) {
receitaGAP = MoneyHelper.somar(receitaGAP, receitaItem);
@ -575,7 +576,7 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService {
if (statusBoleto.equals(IndStatusBoleto.C)) {
// Devolução Receita
if (rcc.getMotivoCancelacionId().equals(Constantes.MVO_CANCEL_DEVOLUCAO) || rcc.getMotivoCancelacionId().equals(Constantes.MVO_CANCEL_GERACAO_OCD)) {
if (rcc.getMotivoCancelacionId().equals(Constantes.MVO_CANCEL_DEVOLUCAO.intValue()) || rcc.getMotivoCancelacionId().equals(Constantes.MVO_CANCEL_GERACAO_OCD.intValue())) {
// Devolução Receita GAP
if (rcc.getTipoVenta().equals(Constantes.TPV_BOLETO_REMOTO.intValue())) {
@ -609,6 +610,26 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService {
}
}
/* Calculando comissão para os eventos extras */
List<EventosFinanceirosVO> listEventosFinanceiros = verificaEventoFinanceiroProDia(eventosFinanceirosVOs, dia, mes);
for (EventosFinanceirosVO eventosFinanceiros : listEventosFinanceiros) {
boolean isAltaTemporada = validaAltaTemporada(impostos, mes, eventosFinanceiros.getEstadoId());
if(TipoEventoExtra.EXCESSO_BAGAGEM.toString().equals(eventosFinanceiros.getCvetipoevento())) {
receitaExcessoBagagem = MoneyHelper.somar(receitaExcessoBagagem, eventosFinanceiros.getImpingreso());
BigDecimal excessoBagagem = calculoExcessoBagagem(isAltaTemporada, ptovtaComissao, eventosFinanceiros.getImpingreso());
comissaoExcessoBagagem = MoneyHelper.somar(comissaoExcessoBagagem, excessoBagagem);
} else if(TipoEventoExtra.SEGURO_OPCIONAL.toString().equals(eventosFinanceiros.getCvetipoevento())) {
receitaSeguroOpcional = MoneyHelper.somar(receitaSeguroOpcional, eventosFinanceiros.getImpingreso());
BigDecimal segOpcional = calculoSeguroOpcional(isAltaTemporada, ptovtaComissao, eventosFinanceiros.getImpingreso());
comissaoSegOpcional = MoneyHelper.somar(comissaoSegOpcional, segOpcional);
} else {
receitaSeguroOutros = MoneyHelper.somar(receitaSeguroOutros, eventosFinanceiros.getImpingreso());
BigDecimal outros = calculoOutros(isAltaTemporada, ptovtaComissao, eventosFinanceiros.getImpingreso());
comissaoOutros = MoneyHelper.somar(comissaoOutros, outros);
}
}
cr.setCancelados(cancelados);
cr.setCanceladosGAP(canceladosGAP);
cr.setDevolvidos(devolvidos);
@ -656,31 +677,40 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService {
}
private List<BoletoComissao> verificaCalculoComissaoProDia(List<BoletoComissao> list, Integer dia, Integer mes) {
private List<EventosFinanceirosVO> verificaEventoFinanceiroProDia(List<EventosFinanceirosVO> eventosFinanceirosVOs, Integer dia, Integer mes) {
List<EventosFinanceirosVO> aux = new ArrayList<EventosFinanceirosVO>();
for (EventosFinanceirosVO rcc : eventosFinanceirosVOs) {
Calendar calendario = Calendar.getInstance();
calendario.setTime(rcc.getFeccorte());
List<BoletoComissao> aux = new ArrayList<BoletoComissao>();
for (BoletoComissao rcc : list) {
try {
Calendar calendario = Calendar.getInstance();
calendario.setTime(DateUtil.getDateFromString(rcc.getDatavenda(), "dd-MM-yyyy"));
int diaItem = calendario.get(Calendar.DAY_OF_MONTH);
int mesItem = calendario.get(Calendar.MONTH) + 1;
int diaItem = calendario.get(Calendar.DAY_OF_MONTH);
int mesItem = calendario.get(Calendar.MONTH) + 1;
if (dia.equals(diaItem) && mes.equals(mesItem)) {
aux.add(rcc);
}
} catch (ParseException e) {
log.error("ERRO - ao converter data", e);
if (dia.equals(diaItem) && mes.equals(mesItem)) {
aux.add(rcc);
}
}
return aux;
}
private List<BoletoComissao> verificaCalculoComissaoProDia(List<BoletoComissao> list, Integer dia, Integer mes) {
List<BoletoComissao> aux = new ArrayList<BoletoComissao>();
for (BoletoComissao rcc : list) {
Calendar calendario = Calendar.getInstance();
calendario.setTime(rcc.getFeccorte());
int diaItem = calendario.get(Calendar.DAY_OF_MONTH);
int mesItem = calendario.get(Calendar.MONTH) + 1;
if (dia.equals(diaItem) && mes.equals(mesItem)) {
aux.add(rcc);
}
}
return aux;
}
@Override
public List<RegistroCalculo> relatorioCalculoComissao(Integer empresaId, Date periodo) throws ComissaoException {
public List<RegistroCalculo> relatorioCalculoComissao(Integer empresaId, Date periodo) throws ComissaoException, BusinessException {
List<RegistroCalculo> registrosCalculo = new ArrayList<RegistroCalculo>();
List<PuntoVenta> puntoventas = comissaoDAO.buscaPuntoVentasEmpresaComComissaoParametrizada(empresaId);
for (PuntoVenta puntoVenta : puntoventas) {

View File

@ -85,6 +85,8 @@ public class BoletoComissao {
private Conferencia conferencia;
private Date feccorte;
public Integer getEmpresaId() {
return empresaId;
}
@ -1009,4 +1011,12 @@ public class BoletoComissao {
this.conferencia = conferencia;
}
public Date getFeccorte() {
return feccorte;
}
public void setFeccorte(Date feccorte) {
this.feccorte = feccorte;
}
}

View File

@ -40,6 +40,12 @@ public class EventosFinanceirosVO {
private Conferencia conferencia;
private String cvetipoevento;
private Date feccorte;
private BigDecimal icmsBase;
private Integer estadoId;
public Long getEventoextraId() {
return eventoextraId;
@ -248,4 +254,36 @@ public class EventosFinanceirosVO {
this.conferencia = conferencia;
}
public String getCvetipoevento() {
return cvetipoevento;
}
public void setCvetipoevento(String cvetipoevento) {
this.cvetipoevento = cvetipoevento;
}
public Date getFeccorte() {
return feccorte;
}
public void setFeccorte(Date feccorte) {
this.feccorte = feccorte;
}
public BigDecimal getIcmsBase() {
return icmsBase;
}
public void setIcmsBase(BigDecimal icmsBase) {
this.icmsBase = icmsBase;
}
public Integer getEstadoId() {
return estadoId;
}
public void setEstadoId(Integer estadoId) {
this.estadoId = estadoId;
}
}