bug#12779

dev:wilian
qua:

git-svn-id: http://desenvolvimento.rjconsultores.com.br/repositorio/sco/AdmVenta/Model/trunk/modelWeb@87590 d1611594-4594-4d17-8e1d-87c2c4800839
master
wilian 2018-12-03 13:23:09 +00:00
parent a6b1add2ea
commit 32688dc210
9 changed files with 290 additions and 6 deletions

View File

@ -89,4 +89,6 @@ public class Constantes {
public static final String QTDE_MAX_DIAS_RETENCAO_DIARIA_COMISSAO = "QTDE_MAX_DIAS_RETENCAO_DIARIA_COMISSAO"; public static final String QTDE_MAX_DIAS_RETENCAO_DIARIA_COMISSAO = "QTDE_MAX_DIAS_RETENCAO_DIARIA_COMISSAO";
public static final String RETER_COMISSAO_ADM_FECHAMENTO_CAIXA = "RETER_COMISSAO_ADM_FECHAMENTO_CAIXA";
} }

View File

@ -0,0 +1,11 @@
package com.rjconsultores.ventaboletos.dao;
import java.util.Date;
import com.rjconsultores.ventaboletos.entidad.CtrlFechamentoCaixa;
public interface CtrlFechamentoCaixaDAO extends GenericDAO<CtrlFechamentoCaixa, Long> {
public CtrlFechamentoCaixa obtenerFeccorte(Date feccorte);
}

View File

@ -0,0 +1,37 @@
package com.rjconsultores.ventaboletos.dao.hibernate;
import java.util.Date;
import org.hibernate.Query;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.stereotype.Repository;
import com.rjconsultores.ventaboletos.dao.CtrlFechamentoCaixaDAO;
import com.rjconsultores.ventaboletos.entidad.CtrlFechamentoCaixa;
import com.rjconsultores.ventaboletos.utilerias.DateUtil;
@Repository("ctrlFechamentoCaixaDAO")
public class CtrlFechamentoCaixaHibernateDAO extends GenericHibernateDAO<CtrlFechamentoCaixa, Long> implements CtrlFechamentoCaixaDAO {
@Autowired
public CtrlFechamentoCaixaHibernateDAO(@Qualifier("sessionFactory") SessionFactory factory) {
setSessionFactory(factory);
}
@Override
public CtrlFechamentoCaixa obtenerFeccorte(Date feccorte) {
StringBuilder hql = new StringBuilder();
hql.append(" from CtrlFechamentoCaixa c ")
.append(" where c.activo = 1 ")
.append(" and c.feccorte = TO_DATE(:feccorte,'DD/MM/YYYY') ");
Query qr = getSession().createQuery(hql.toString());
qr.setParameter("feccorte", DateUtil.getStringDate(feccorte, "dd/MM/yyyy"));
qr.setMaxResults(1);
return (CtrlFechamentoCaixa) qr.uniqueResult();
}
}

View File

@ -0,0 +1,96 @@
package com.rjconsultores.ventaboletos.entidad;
import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.EnumType;
import javax.persistence.Enumerated;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;
import com.rjconsultores.ventaboletos.enums.CtrlFechamentoCaixaStatus;
/**
* Classe que controla a rotina de retenção de comissão após o fechamento do caixa
*
* @author wilian
* @since 29/11/2018
*
*/
@Entity
@SequenceGenerator(name = "CTRL_FECHAMENTO_CAIXA_SEQ", sequenceName = "CTRL_FECHAMENTO_CAIXA_SEQ", allocationSize = 1)
@Table(name = "CTRL_FECHAMENTO_CAIXA")
public class CtrlFechamentoCaixa implements Serializable {
private static final long serialVersionUID = 1L;
@Id
@Basic(optional = false)
@GeneratedValue(strategy = GenerationType.AUTO, generator = "CTRL_FECHAMENTO_CAIXA_SEQ")
@Column(name = "CTRLFECHAMENTOCAIXA_ID")
private Long ctrlfechamentocaixaId;
@Column(name = "FECCORTE")
@Temporal(TemporalType.DATE)
private Date feccorte;
@Enumerated(EnumType.STRING)
@Column(name = "FECHAMENTO_STATUS")
private CtrlFechamentoCaixaStatus status;
@Column(name = "FECMODIF")
@Temporal(TemporalType.DATE)
private Date fecmodif;
@Column(name = "ACTIVO")
private boolean activo;
public Long getCtrlfechamentocaixaId() {
return ctrlfechamentocaixaId;
}
public void setCtrlfechamentocaixaId(Long ctrlfechamentocaixaId) {
this.ctrlfechamentocaixaId = ctrlfechamentocaixaId;
}
public Date getFeccorte() {
return feccorte;
}
public void setFeccorte(Date feccorte) {
this.feccorte = feccorte;
}
public Date getFecmodif() {
return fecmodif;
}
public void setFecmodif(Date fecmodif) {
this.fecmodif = fecmodif;
}
public boolean isActivo() {
return activo;
}
public void setActivo(boolean activo) {
this.activo = activo;
}
public CtrlFechamentoCaixaStatus getStatus() {
return status;
}
public void setStatus(CtrlFechamentoCaixaStatus status) {
this.status = status;
}
}

View File

@ -0,0 +1,9 @@
package com.rjconsultores.ventaboletos.enums;
public enum CtrlFechamentoCaixaStatus {
LIBERADO_RETENCAO_COMISSAO,
RETENCAO_COMISSAO_EM_ANDAMENTO,
RETENCAO_COMISSAO_CONCLUIDA;
}

View File

@ -43,7 +43,7 @@ public interface CalculoComissaoService {
public void registrarCalculoComissao(PuntoVenta puntoVenta, Empresa empresa, Date dataInicial, Date dataFinal, Integer usuarioId) throws ComissaoException, BusinessException; public void registrarCalculoComissao(PuntoVenta puntoVenta, Empresa empresa, Date dataInicial, Date dataFinal, Integer usuarioId) throws ComissaoException, BusinessException;
public void retencaoAutomaticaComissao(); public void retencaoAutomaticaComissao(Date dataRetencao);
public RegistroCalculo realizarCalculoComissao(Integer puntoVentaId, Integer empresaId, Date periodo, Boolean isRetencaoDiaria, Integer usuarioId, Boolean isRefazerCalculo) throws ComissaoException, BusinessException; public RegistroCalculo realizarCalculoComissao(Integer puntoVentaId, Integer empresaId, Date periodo, Boolean isRetencaoDiaria, Integer usuarioId, Boolean isRefazerCalculo) throws ComissaoException, BusinessException;

View File

@ -0,0 +1,25 @@
package com.rjconsultores.ventaboletos.service;
import java.util.Date;
import com.rjconsultores.ventaboletos.entidad.CtrlFechamentoCaixa;
import com.rjconsultores.ventaboletos.enums.CtrlFechamentoCaixaStatus;
public interface CtrlFechamentoCaixaService extends GenericService<CtrlFechamentoCaixa, Long> {
/**
* Metodo que verifica se a rotina de retencao de comissao pode ser executada,
* baseado no fechamento automatico dos caixas
* @param feccorte
* @return
*/
public boolean autorizarExecutarRotinaRetencao(Date feccorte);
/**
* Metodo que atualiza o controle de fechamento de caixa para retencao de comissao
* @param status
* @param dataRetencao
*/
public void atualizarCtrlFechamentoCaixaStatus(CtrlFechamentoCaixaStatus status, Date dataRetencao);
}

View File

@ -34,6 +34,7 @@ import com.rjconsultores.ventaboletos.entidad.EmpresaImposto;
import com.rjconsultores.ventaboletos.entidad.PtovtaComissao; import com.rjconsultores.ventaboletos.entidad.PtovtaComissao;
import com.rjconsultores.ventaboletos.entidad.PtovtaComissao.Receita; import com.rjconsultores.ventaboletos.entidad.PtovtaComissao.Receita;
import com.rjconsultores.ventaboletos.entidad.PuntoVenta; import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
import com.rjconsultores.ventaboletos.enums.CtrlFechamentoCaixaStatus;
import com.rjconsultores.ventaboletos.enums.IndStatusBoleto; import com.rjconsultores.ventaboletos.enums.IndStatusBoleto;
import com.rjconsultores.ventaboletos.enums.MimeType; import com.rjconsultores.ventaboletos.enums.MimeType;
import com.rjconsultores.ventaboletos.exception.BusinessException; import com.rjconsultores.ventaboletos.exception.BusinessException;
@ -43,6 +44,7 @@ import com.rjconsultores.ventaboletos.service.ComissaoReceitaService;
import com.rjconsultores.ventaboletos.service.ComissaoService; import com.rjconsultores.ventaboletos.service.ComissaoService;
import com.rjconsultores.ventaboletos.service.ConferenciaComissaoService; import com.rjconsultores.ventaboletos.service.ConferenciaComissaoService;
import com.rjconsultores.ventaboletos.service.ConstanteService; import com.rjconsultores.ventaboletos.service.ConstanteService;
import com.rjconsultores.ventaboletos.service.CtrlFechamentoCaixaService;
import com.rjconsultores.ventaboletos.service.DescontoComissaoService; import com.rjconsultores.ventaboletos.service.DescontoComissaoService;
import com.rjconsultores.ventaboletos.service.EmpresaImpostoService; import com.rjconsultores.ventaboletos.service.EmpresaImpostoService;
import com.rjconsultores.ventaboletos.service.EmpresaService; import com.rjconsultores.ventaboletos.service.EmpresaService;
@ -100,6 +102,9 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService {
@Autowired @Autowired
private PuntoVentaService puntoVentaService; private PuntoVentaService puntoVentaService;
@Autowired
private CtrlFechamentoCaixaService ctrlFechamentoCaixaService;
public boolean validaCompetencia(Date periodo) { public boolean validaCompetencia(Date periodo) {
Calendar calendario = Calendar.getInstance(); Calendar calendario = Calendar.getInstance();
calendario.setTime(periodo); calendario.setTime(periodo);
@ -1217,7 +1222,7 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService {
@Override @Override
@Transactional(readOnly = true, propagation = Propagation.SUPPORTS) @Transactional(readOnly = true, propagation = Propagation.SUPPORTS)
public void retencaoAutomaticaComissao() { public void retencaoAutomaticaComissao(Date dataRetencao) {
Integer usuarioId = 1; Integer usuarioId = 1;
if (UsuarioLogado.getUsuarioLogado() != null && UsuarioLogado.getUsuarioLogado().getUsuarioId() != null) { if (UsuarioLogado.getUsuarioLogado() != null && UsuarioLogado.getUsuarioLogado().getUsuarioId() != null) {
usuarioId = UsuarioLogado.getUsuarioLogado().getUsuarioId(); usuarioId = UsuarioLogado.getUsuarioLogado().getUsuarioId();
@ -1226,10 +1231,6 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService {
List<Empresa> empresas = empresaService.buscarEmpresaPtoVtaComissao(); List<Empresa> empresas = empresaService.buscarEmpresaPtoVtaComissao();
List<PuntoVenta> puntoVentas = puntoVentaService.buscarPuntoVentaPtoVtaComissao(empresas); List<PuntoVenta> puntoVentas = puntoVentaService.buscarPuntoVentaPtoVtaComissao(empresas);
Calendar cDataRetencao = Calendar.getInstance();
cDataRetencao.add(Calendar.DAY_OF_MONTH, -2);
Date dataRetencao = DateUtil.normalizarToFecha(cDataRetencao.getTime());
String sDataRetencao = DateUtil.getStringDate(dataRetencao, "dd/MM/yyyy"); String sDataRetencao = DateUtil.getStringDate(dataRetencao, "dd/MM/yyyy");
for (Empresa empresa : empresas) { for (Empresa empresa : empresas) {
@ -1245,6 +1246,13 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService {
} }
} }
} }
/* Atualizando controle da retencao automatica */
try {
ctrlFechamentoCaixaService.atualizarCtrlFechamentoCaixaStatus(CtrlFechamentoCaixaStatus.RETENCAO_COMISSAO_CONCLUIDA, dataRetencao);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
} }
@Override @Override

View File

@ -0,0 +1,96 @@
package com.rjconsultores.ventaboletos.service.impl;
import java.util.Calendar;
import java.util.Date;
import java.util.List;
import org.apache.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.rjconsultores.ventaboletos.dao.CtrlFechamentoCaixaDAO;
import com.rjconsultores.ventaboletos.entidad.CtrlFechamentoCaixa;
import com.rjconsultores.ventaboletos.enums.CtrlFechamentoCaixaStatus;
import com.rjconsultores.ventaboletos.service.CtrlFechamentoCaixaService;
import com.rjconsultores.ventaboletos.utilerias.DateUtil;
@Service("ctrlFechamentoCaixaService")
public class CtrlFechamentoCaixaServiceImpl implements CtrlFechamentoCaixaService {
private static Logger log = Logger.getLogger(CtrlFechamentoCaixaServiceImpl.class);
@Autowired
CtrlFechamentoCaixaDAO ctrlFechamentoCaixaDAO;
@Override
public List<CtrlFechamentoCaixa> obtenerTodos() {
return ctrlFechamentoCaixaDAO.obtenerTodos();
}
@Override
public CtrlFechamentoCaixa obtenerID(Long id) {
return ctrlFechamentoCaixaDAO.obtenerID(id);
}
@Override
@Transactional
public CtrlFechamentoCaixa suscribir(CtrlFechamentoCaixa entidad) {
entidad.setFecmodif(Calendar.getInstance().getTime());
entidad = ctrlFechamentoCaixaDAO.suscribir(entidad);
return entidad;
}
@Override
@Transactional
public CtrlFechamentoCaixa actualizacion(CtrlFechamentoCaixa entidad) {
entidad.setFecmodif(Calendar.getInstance().getTime());
entidad = ctrlFechamentoCaixaDAO.actualizacion(entidad);
return entidad;
}
@Override
@Transactional
public void borrar(CtrlFechamentoCaixa entidad) {
entidad.setFecmodif(Calendar.getInstance().getTime());
entidad.setActivo(Boolean.FALSE);
ctrlFechamentoCaixaDAO.borrar(entidad);
}
@Override
@Transactional
public boolean autorizarExecutarRotinaRetencao(Date feccorte) {
try {
String sFeccorte = DateUtil.getStringDate(feccorte, "dd/MM/yyyy");
CtrlFechamentoCaixa ctrlFechamentoCaixa = ctrlFechamentoCaixaDAO.obtenerFeccorte(feccorte);
if(ctrlFechamentoCaixa == null) {
log.info("Nenhum controle de retencao foi localizado para data: " + sFeccorte);
} else if(CtrlFechamentoCaixaStatus.RETENCAO_COMISSAO_EM_ANDAMENTO.equals(ctrlFechamentoCaixa.getStatus())) {
log.info("Retencao de comissao em andamento para data: " + sFeccorte);
} else if(CtrlFechamentoCaixaStatus.RETENCAO_COMISSAO_CONCLUIDA.equals(ctrlFechamentoCaixa.getStatus())) {
log.info("Retencao de comissao concluida para data: " + sFeccorte);
} else if(CtrlFechamentoCaixaStatus.LIBERADO_RETENCAO_COMISSAO.equals(ctrlFechamentoCaixa.getStatus())) {
log.info("Retencao de comissao liberada para data: " + sFeccorte);
ctrlFechamentoCaixa.setStatus(CtrlFechamentoCaixaStatus.RETENCAO_COMISSAO_EM_ANDAMENTO);
actualizacion(ctrlFechamentoCaixa);
return true;
}
} catch (Exception e) {
log.error(e.getMessage(), e);
}
return false;
}
@Override
@Transactional
public void atualizarCtrlFechamentoCaixaStatus(CtrlFechamentoCaixaStatus status, Date dataRetencao) {
try {
CtrlFechamentoCaixa ctrlFechamentoCaixa = ctrlFechamentoCaixaDAO.obtenerFeccorte(dataRetencao);
ctrlFechamentoCaixa.setStatus(status);
actualizacion(ctrlFechamentoCaixa);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
}