wilian 2016-02-25 20:46:43 +00:00
parent b2caceab1d
commit 3846a482f8
19 changed files with 914 additions and 71 deletions

View File

@ -4,6 +4,7 @@ import java.util.Date;
import java.util.List; import java.util.List;
import com.rjconsultores.ventaboletos.entidad.Comissao; import com.rjconsultores.ventaboletos.entidad.Comissao;
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
import com.rjconsultores.ventaboletos.vo.comissao.BoletoComissao; import com.rjconsultores.ventaboletos.vo.comissao.BoletoComissao;
import com.rjconsultores.ventaboletos.vo.comissao.HistoricoComissao; import com.rjconsultores.ventaboletos.vo.comissao.HistoricoComissao;
@ -14,4 +15,7 @@ public interface ComissaoDAO extends GenericDAO<Comissao, Integer> {
public Comissao buscaComissaoVigencia(Integer puntoVentaId, Integer empresaId, String competencia); public Comissao buscaComissaoVigencia(Integer puntoVentaId, Integer empresaId, String competencia);
public List<HistoricoComissao> buscaHistoricoComissao(Integer puntoVentaId, Integer empresaId, Date periodoInicio, Date periodoFim); public List<HistoricoComissao> buscaHistoricoComissao(Integer puntoVentaId, Integer empresaId, Date periodoInicio, Date periodoFim);
public List<PuntoVenta> buscaPuntoVentasEmpresaComComissaoParametrizada(Integer empresaId);
} }

View File

@ -51,4 +51,6 @@ public interface ConferenciaComissaoDAO extends GenericDAO<Conferencia, Long> {
public BigDecimal carregarTotalFechamentoContaCorrente(Conferencia conferencia) throws BusinessException; public BigDecimal carregarTotalFechamentoContaCorrente(Conferencia conferencia) throws BusinessException;
public boolean isConferenciaCompetenciaEncerrada(String competencia, Empresa empresa, PuntoVenta puntoVenta) throws BusinessException;
} }

View File

@ -17,6 +17,7 @@ import org.springframework.stereotype.Repository;
import com.rjconsultores.ventaboletos.dao.ComissaoDAO; import com.rjconsultores.ventaboletos.dao.ComissaoDAO;
import com.rjconsultores.ventaboletos.entidad.Comissao; import com.rjconsultores.ventaboletos.entidad.Comissao;
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
import com.rjconsultores.ventaboletos.utilerias.DateUtil; import com.rjconsultores.ventaboletos.utilerias.DateUtil;
import com.rjconsultores.ventaboletos.vo.comissao.BoletoComissao; import com.rjconsultores.ventaboletos.vo.comissao.BoletoComissao;
import com.rjconsultores.ventaboletos.vo.comissao.HistoricoComissao; import com.rjconsultores.ventaboletos.vo.comissao.HistoricoComissao;
@ -95,7 +96,7 @@ public class ComissaoHibernateDAO extends GenericHibernateDAO<Comissao, Integer>
StringBuilder hql = new StringBuilder(); StringBuilder hql = new StringBuilder();
hql.append(" from Comissao c "); hql.append(" from Comissao c ");
hql.append(" where c.activo = 1 "); hql.append(" where c.activo = 1 ");
hql.append(" AND c.puntoVentaId = :puntoventaId "); hql.append(" AND c.puntoVenta.puntoventaId = :puntoventaId ");
hql.append(" AND c.empresaId = :empresaId "); hql.append(" AND c.empresaId = :empresaId ");
hql.append(" AND c.competencia = :periodo "); hql.append(" AND c.competencia = :periodo ");
@ -130,9 +131,21 @@ public class ComissaoHibernateDAO extends GenericHibernateDAO<Comissao, Integer>
sql.append(" c.indpago AS indPago, "); sql.append(" c.indpago AS indPago, ");
sql.append(" CASE WHEN c.indpago = 1 THEN 'PAGO' ELSE 'PENDENTE' END AS pagamento, "); sql.append(" CASE WHEN c.indpago = 1 THEN 'PAGO' ELSE 'PENDENTE' END AS pagamento, ");
sql.append(" up.nombusuario || ' ' || up.nombmaterno || ' ' || up.nombpaterno AS usuarioPagamento, "); sql.append(" up.nombusuario || ' ' || up.nombmaterno || ' ' || up.nombpaterno AS usuarioPagamento, ");
sql.append(" ul.nombusuario || ' ' || ul.nombmaterno || ' ' || ul.nombpaterno AS usuarioLancamento "); sql.append(" ul.nombusuario || ' ' || ul.nombmaterno || ' ' || ul.nombpaterno AS usuarioLancamento, ");
sql.append(" e.nombempresa, e.cnpj, ");
sql.append(" pa.numagencia as agencia, pa.numconta || '-' || pa.digito as conta, if.nome as banco, ");
sql.append(" ci.nombciudad as cidade, pv.descCorreo ");
/*
private String sigla;
private String nome;
*/
sql.append("FROM comissao c "); sql.append("FROM comissao c ");
sql.append("JOIN punto_venta pv on pv.puntoventa_id = c.puntoventa_id "); sql.append("JOIN punto_venta pv on pv.puntoventa_id = c.puntoventa_id ");
sql.append("JOIN empresa e on e.empresa_id = c.empresa_id ");
sql.append("LEFT JOIN ptovta_agencia pa on pa.ptovtaagencia_id = pv.ptovtaagencia_id ");
sql.append("LEFT JOIN insti_financeira if on if.instifinanceira_id = pa.instifinanceira_id ");
sql.append("LEFT JOIN colonia co on co.colonia_id = pv.colonia_id ");
sql.append("LEFT JOIN ciudad ci on ci.ciudad_id = co.ciudad_id ");
sql.append("LEFT JOIN usuario up ON up.usuario_id = c.usuariopagamento_id "); sql.append("LEFT JOIN usuario up ON up.usuario_id = c.usuariopagamento_id ");
sql.append("LEFT JOIN usuario ul ON ul.usuario_id = c.usuario_id "); sql.append("LEFT JOIN usuario ul ON ul.usuario_id = c.usuario_id ");
sql.append("WHERE c.activo = 1 "); sql.append("WHERE c.activo = 1 ");
@ -163,6 +176,13 @@ public class ComissaoHibernateDAO extends GenericHibernateDAO<Comissao, Integer>
.addScalar("pagamento", StringType.INSTANCE) .addScalar("pagamento", StringType.INSTANCE)
.addScalar("usuarioPagamento", StringType.INSTANCE) .addScalar("usuarioPagamento", StringType.INSTANCE)
.addScalar("usuarioLancamento", StringType.INSTANCE) .addScalar("usuarioLancamento", StringType.INSTANCE)
.addScalar("nombempresa", StringType.INSTANCE)
.addScalar("cnpj", StringType.INSTANCE)
.addScalar("conta", StringType.INSTANCE)
.addScalar("banco", StringType.INSTANCE)
.addScalar("cidade", StringType.INSTANCE)
.addScalar("agencia", StringType.INSTANCE)
.addScalar("descCorreo", StringType.INSTANCE)
.setResultTransformer(new AliasToBeanResultTransformer(HistoricoComissao.class)); .setResultTransformer(new AliasToBeanResultTransformer(HistoricoComissao.class));
query.setString("periodoInicio", competenciaInicio); query.setString("periodoInicio", competenciaInicio);
@ -175,4 +195,19 @@ public class ComissaoHibernateDAO extends GenericHibernateDAO<Comissao, Integer>
return query.list(); return query.list();
} }
@Override
@SuppressWarnings("unchecked")
public List<PuntoVenta> buscaPuntoVentasEmpresaComComissaoParametrizada(Integer empresaId) {
StringBuilder sQuery = new StringBuilder("SELECT pv FROM PtovtaComissao c ");
sQuery.append("JOIN c.puntoventaId pv ")
.append("JOIN c.empresaId e ")
.append("WHERE pv.activo = 1 ")
.append("AND e.empresaId = :empresaId ")
.append("AND c.activo = 1");
Query qr = getSession().createQuery(sQuery.toString());
qr.setParameter("empresaId", empresaId);
return qr.list();
}
} }

View File

@ -983,4 +983,27 @@ public class ConferenciaComissaoHibernateDAO extends GenericHibernateDAO<Confere
} }
} }
@Override
public boolean isConferenciaCompetenciaEncerrada(String competencia, Empresa empresa, PuntoVenta puntoVenta) throws BusinessException {
try {
List<ConferenciaComissaoVO> lsConferencias = new ArrayList<ConferenciaComissaoVO>();
carregarConferenciasRegistradas(lsConferencias, competencia, empresa, puntoVenta);
carregarDiasSemMovimento(lsConferencias, competencia, empresa, puntoVenta);
for (ConferenciaComissaoVO conferenciaComissao : lsConferencias) {
for (DiaConferenciaComissaoVO diaConferenciaComissao : conferenciaComissao.getDias()) {
if(!diaConferenciaComissao.getIndsemmovimento() && !diaConferenciaComissao.getIndconferido()) {
return false;
}
}
}
return true;
} catch (Exception e) {
log.error(e.getMessage(), e);
throw new BusinessException(e.getMessage(), e);
}
}
} }

View File

@ -56,7 +56,7 @@ public class PtovtaComissaoHibernateDAO extends GenericHibernateDAO<PtovtaComiss
StringBuilder sql = new StringBuilder(); StringBuilder sql = new StringBuilder();
sql.append("from PtovtaComissao pc "); sql.append("from PtovtaComissao pc ");
sql.append("where pc.puntoventaId.puntoventaId = :puntoventaId "); sql.append("where pc.activo = 1 and pc.puntoventaId.puntoventaId = :puntoventaId ");
sql.append(" and pc.empresaId.empresaId = :empresaId "); sql.append(" and pc.empresaId.empresaId = :empresaId ");
Query query = getSession().createQuery(sql.toString()); Query query = getSession().createQuery(sql.toString());

View File

@ -7,9 +7,12 @@ import java.util.Date;
import javax.persistence.Basic; import javax.persistence.Basic;
import javax.persistence.Column; import javax.persistence.Column;
import javax.persistence.Entity; import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue; import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType; import javax.persistence.GenerationType;
import javax.persistence.Id; import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator; import javax.persistence.SequenceGenerator;
import javax.persistence.Table; import javax.persistence.Table;
import javax.persistence.Temporal; import javax.persistence.Temporal;
@ -62,11 +65,26 @@ public class Comissao implements Serializable {
private Date fecmodif; private Date fecmodif;
@Column(name = "USUARIO_ID") @Column(name = "USUARIO_ID")
private Integer usuarioId; private Integer usuarioId;
@Column(name = "PUNTOVENTA_ID") @ManyToOne(fetch = FetchType.LAZY)
private Integer puntoVentaId; @JoinColumn(name = "PUNTOVENTA_ID")
private PuntoVenta puntoVenta;
@Column(name = "EMPRESA_ID") @Column(name = "EMPRESA_ID")
private Integer empresaId; private Integer empresaId;
public Comissao() {
super();
setComissaoBpr(BigDecimal.ZERO);
setReceitaExcessobagagem(BigDecimal.ZERO);
setReceitaSeguroopcional(BigDecimal.ZERO);
setReceitaOutros(BigDecimal.ZERO);
setDescontosFixos(BigDecimal.ZERO);
setDescontosEventuais(BigDecimal.ZERO);
setRoyaties(BigDecimal.ZERO);
setIssRetido(BigDecimal.ZERO);
setBonificacaoMetas(BigDecimal.ZERO);
setEntregasPassagem(BigDecimal.ZERO);
}
public Integer getComissaoId() { public Integer getComissaoId() {
return comissaoId; return comissaoId;
} }
@ -203,14 +221,6 @@ public class Comissao implements Serializable {
this.usuarioId = usuarioId; this.usuarioId = usuarioId;
} }
public Integer getPuntoVentaId() {
return puntoVentaId;
}
public void setPuntoVentaId(Integer puntoVentaId) {
this.puntoVentaId = puntoVentaId;
}
public Integer getEmpresaId() { public Integer getEmpresaId() {
return empresaId; return empresaId;
} }
@ -227,4 +237,12 @@ public class Comissao implements Serializable {
this.receitaOutros = receitaOutros; this.receitaOutros = receitaOutros;
} }
public PuntoVenta getPuntoVenta() {
return puntoVenta;
}
public void setPuntoVenta(PuntoVenta puntoVenta) {
this.puntoVenta = puntoVenta;
}
} }

View File

@ -5,7 +5,6 @@
package com.rjconsultores.ventaboletos.entidad; package com.rjconsultores.ventaboletos.entidad;
import java.io.Serializable; import java.io.Serializable;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.List; import java.util.List;
@ -18,8 +17,6 @@ import javax.persistence.GenerationType;
import javax.persistence.Id; import javax.persistence.Id;
import javax.persistence.JoinColumn; import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne; import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany; import javax.persistence.OneToMany;
import javax.persistence.SequenceGenerator; import javax.persistence.SequenceGenerator;
import javax.persistence.Table; import javax.persistence.Table;

View File

@ -0,0 +1,22 @@
package com.rjconsultores.ventaboletos.enums;
public enum MimeType {
PDF("application/pdf"),
XLS("application/vnd.ms-excel"),
DOC("application/msword"),
TXT("text/plain"),
ZIP("application/zip, application/x-compressed-zip");
private String descricao;
private MimeType(String descricao) {
this.descricao = descricao;
}
@Override
public String toString() {
return this.descricao;
}
}

View File

@ -28,4 +28,8 @@ public class ComissaoException extends Exception {
super(new MessageFormat(Labels.getLabel(message)).format(oMsg)); super(new MessageFormat(Labels.getLabel(message)).format(oMsg));
} }
public ComissaoException(String message, Object oMsg, Object... parametros) {
super(new MessageFormat(Labels.getLabel(message, parametros)).format(oMsg));
}
} }

View File

@ -1,16 +1,30 @@
package com.rjconsultores.ventaboletos.service; package com.rjconsultores.ventaboletos.service;
import java.util.Date; import java.util.Date;
import java.util.List;
import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.PuntoVenta;
import com.rjconsultores.ventaboletos.exception.ComissaoException; import com.rjconsultores.ventaboletos.exception.ComissaoException;
import com.rjconsultores.ventaboletos.vo.comissao.HistoricoComissao;
import com.rjconsultores.ventaboletos.vo.comissao.RegistroCalculo; import com.rjconsultores.ventaboletos.vo.comissao.RegistroCalculo;
public interface CalculoComissaoService { 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;
public void registrarCalculoComissao(Integer puntoVentaId, Integer empresaId, Date periodo) throws ComissaoException; 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 void cancelarCalculoComissao(Integer puntoVentaId, Integer empresaId, Date periodo) throws ComissaoException;
public List<RegistroCalculo> relatorioCalculoComissao(Integer empresaId, Date periodo) throws ComissaoException;
public void registrarCalculoComissao(Empresa empresa, Date periodo, boolean ignorarComissaoGerada) throws ComissaoException;
public void cancelarCalculoComissao(Integer empresaId, Date periodo) throws ComissaoException;
public List<HistoricoComissao> relatorioReciboComissao(Integer puntoVentaId, Integer empresaId, String competencia) throws ComissaoException;
public void enviarEmailReciboComissao(HistoricoComissao historicoComissao, byte[] recibo);
} }

View File

@ -64,4 +64,6 @@ public interface ConferenciaComissaoService extends GenericService<Conferencia,
public void confirmarChegadaMalote(EtiquetaMalote etiquetaMalote) throws BusinessException; public void confirmarChegadaMalote(EtiquetaMalote etiquetaMalote) throws BusinessException;
public boolean isConferenciaCompetenciaEncerrada(String competencia, Empresa empresa, PuntoVenta puntoVenta) throws BusinessException;
} }

View File

@ -1,39 +1,52 @@
package com.rjconsultores.ventaboletos.service.impl; package com.rjconsultores.ventaboletos.service.impl;
import java.io.ByteArrayOutputStream;
import java.math.BigDecimal; import java.math.BigDecimal;
import java.text.ParseException; import java.text.ParseException;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date; import java.util.Date;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import org.apache.commons.lang.BooleanUtils; import org.apache.commons.lang.BooleanUtils;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
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.zkoss.util.resource.Labels;
import com.rjconsultores.ventaboletos.constantes.Constantes; import com.rjconsultores.ventaboletos.constantes.Constantes;
import com.rjconsultores.ventaboletos.dao.ComissaoDAO; import com.rjconsultores.ventaboletos.dao.ComissaoDAO;
import com.rjconsultores.ventaboletos.entidad.Comissao; import com.rjconsultores.ventaboletos.entidad.Comissao;
import com.rjconsultores.ventaboletos.entidad.Constante;
import com.rjconsultores.ventaboletos.entidad.DescontoComissao; import com.rjconsultores.ventaboletos.entidad.DescontoComissao;
import com.rjconsultores.ventaboletos.entidad.Empresa;
import com.rjconsultores.ventaboletos.entidad.EmpresaImposto; 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.enums.IndStatusBoleto; import com.rjconsultores.ventaboletos.enums.IndStatusBoleto;
import com.rjconsultores.ventaboletos.enums.MimeType;
import com.rjconsultores.ventaboletos.exception.ComissaoException; import com.rjconsultores.ventaboletos.exception.ComissaoException;
import com.rjconsultores.ventaboletos.service.CalculoComissaoService; import com.rjconsultores.ventaboletos.service.CalculoComissaoService;
import com.rjconsultores.ventaboletos.service.ComissaoService; import com.rjconsultores.ventaboletos.service.ComissaoService;
import com.rjconsultores.ventaboletos.service.ConferenciaComissaoService;
import com.rjconsultores.ventaboletos.service.ConstanteService;
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.PtovtaComissaoService; import com.rjconsultores.ventaboletos.service.PtovtaComissaoService;
import com.rjconsultores.ventaboletos.utilerias.DateUtil; import com.rjconsultores.ventaboletos.utilerias.DateUtil;
import com.rjconsultores.ventaboletos.utilerias.SendMail;
import com.rjconsultores.ventaboletos.vo.comissao.BoletoComissao; import com.rjconsultores.ventaboletos.vo.comissao.BoletoComissao;
import com.rjconsultores.ventaboletos.vo.comissao.ComissaoDesconto; import com.rjconsultores.ventaboletos.vo.comissao.ComissaoDesconto;
import com.rjconsultores.ventaboletos.vo.comissao.ComissaoDesconto.TipoDesconto; import com.rjconsultores.ventaboletos.vo.comissao.ComissaoDesconto.TipoDesconto;
import com.rjconsultores.ventaboletos.vo.comissao.ComissaoReceita; import com.rjconsultores.ventaboletos.vo.comissao.ComissaoReceita;
import com.rjconsultores.ventaboletos.vo.comissao.HistoricoComissao;
import com.rjconsultores.ventaboletos.vo.comissao.RegistroCalculo; import com.rjconsultores.ventaboletos.vo.comissao.RegistroCalculo;
@Service("calculoComissaoService") @Service("calculoComissaoService")
@ -54,9 +67,15 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService {
@Autowired @Autowired
private ComissaoDAO comissaoDAO; private ComissaoDAO comissaoDAO;
@Autowired
private ConferenciaComissaoService conferenciaComissaoService;
@Autowired @Autowired
private DescontoComissaoService descontoComissaoService; private DescontoComissaoService descontoComissaoService;
@Autowired
private ConstanteService constanteService;
public boolean validaCompetencia(Date periodo) { public boolean validaCompetencia(Date periodo) {
Calendar calendario = Calendar.getInstance(); Calendar calendario = Calendar.getInstance();
calendario.setTime(periodo); calendario.setTime(periodo);
@ -81,48 +100,63 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService {
} }
@Override @Override
public void registrarCalculoComissao(Integer puntoVentaId, Integer empresaId, Date periodo) throws ComissaoException { public void registrarCalculoComissao(PuntoVenta puntoVenta, Empresa empresa, Date periodo, boolean ignorarComissaoGerada) throws ComissaoException {
if (validaCompetencia(periodo)) { try {
String competencia = DateUtil.getStringDate(periodo, "MM/yyyy"); if (validaCompetencia(periodo)) {
Comissao comissaoCadastrada = comissaoDAO.buscaComissaoVigencia(puntoVentaId, empresaId, competencia);
if (comissaoCadastrada == null) {
RegistroCalculo rc = realizarCalculoComissao(puntoVentaId, empresaId, periodo); String competencia = DateUtil.getStringDate(periodo, "MM/yyyy");
Comissao comissao = new Comissao(); if(conferenciaComissaoService.isConferenciaCompetenciaEncerrada(competencia, empresa, puntoVenta)) {
comissao.setCompetencia(competencia); Comissao comissaoCadastrada = comissaoDAO.buscaComissaoVigencia(puntoVenta.getPuntoventaId(), empresa.getEmpresaId(), competencia);
comissao.setEmpresaId(empresaId); if (comissaoCadastrada == null) {
comissao.setPuntoVentaId(puntoVentaId);
comissao.setBonificacaoMetas(rc.getComissaoBonificaoMetas());
comissao.setComissaoBpr(rc.getComissaoBPR());
comissao.setEntregasPassagem(rc.getComissaoEntregaPassagem());
comissao.setReceitaExcessobagagem(rc.getComissaoExcessoBagagem());
comissao.setReceitaSeguroopcional(rc.getComissaoSegOpcional());
comissao.setReceitaOutros(rc.getComissaoOutros());
comissao.setRoyaties(rc.getRoyaties());
comissao.setIssRetido(rc.getRetidoISS());
comissao.setBonificacaoMetas(rc.getComissaoBonificaoMetas());
comissao.setIndPago(false); RegistroCalculo rc = realizarCalculoComissao(puntoVenta.getPuntoventaId(), empresa.getEmpresaId(), periodo);
comissao.setUsuarioPagamentoId(null);
comissao.setDataPagamento(null);
for (ComissaoDesconto cd : rc.getLsDescontos()) { Comissao comissao = new Comissao();
if (cd.getTipo().equals(TipoDesconto.EVENTUAL)) { comissao.setCompetencia(competencia);
comissao.setDescontosEventuais(cd.getValorDesconto()); comissao.setEmpresaId(empresa.getEmpresaId());
} else if (cd.getTipo().equals(TipoDesconto.FIXO)) { comissao.setPuntoVenta(puntoVenta);
comissao.setDescontosFixos(cd.getValorDesconto()); comissao.setBonificacaoMetas(rc.getComissaoBonificaoMetas());
comissao.setComissaoBpr(rc.getComissaoBPR());
comissao.setEntregasPassagem(rc.getComissaoEntregaPassagem());
comissao.setReceitaExcessobagagem(rc.getComissaoExcessoBagagem());
comissao.setReceitaSeguroopcional(rc.getComissaoSegOpcional());
comissao.setReceitaOutros(rc.getComissaoOutros());
comissao.setRoyaties(rc.getRoyaties());
comissao.setIssRetido(rc.getRetidoISS());
comissao.setIndPago(false);
comissao.setUsuarioPagamentoId(null);
comissao.setDataPagamento(null);
comissao.setDescontosEventuais(BigDecimal.ZERO);
comissao.setDescontosFixos(BigDecimal.ZERO);
for (ComissaoDesconto cd : rc.getLsDescontos()) {
if (cd.getTipo().equals(TipoDesconto.EVENTUAL)) {
comissao.setDescontosEventuais(cd.getValorDesconto());
} else if (cd.getTipo().equals(TipoDesconto.FIXO)) {
comissao.setDescontosFixos(cd.getValorDesconto());
}
}
comissao = comissaoService.suscribir(comissao);
} else if(!ignorarComissaoGerada){
throw new ComissaoException("busquedaCalculoComissaoController.registro.exception", null, comissaoCadastrada.getPuntoVenta().getNombpuntoventa());
} }
} else {
throw new ComissaoException("busquedaCalculoComissaoController.conferenciaNaoEncerrada.exception", null, puntoVenta.getNombpuntoventa());
} }
comissao = comissaoService.suscribir(comissao);
} else { } else {
throw new ComissaoException("busquedaCalculoComissaoController.registro.exception"); throw new ComissaoException("busquedaCalculoComissaoController.competencia.exception");
} }
} else {
throw new ComissaoException("busquedaCalculoComissaoController.competencia.exception"); } catch (ComissaoException e) {
throw e;
} catch (Exception e) {
log.error(e.getMessage(), e);
throw new ComissaoException(e.getMessage(), e);
} }
} }
@ -150,9 +184,9 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService {
BigDecimal recbpr = BigDecimal.ZERO; BigDecimal recbpr = BigDecimal.ZERO;
BigDecimal receitaBPR = bpr.add(gap); BigDecimal receitaBPR = bpr.add(gap);
if (isAltaTemporada) { if (isAltaTemporada) {
recbpr = receitaBPR.multiply(ptovtaComissao.getPassagemAlta().divide(CEM)); recbpr = receitaBPR.multiply(ptovtaComissao.getPassagemAlta() != null ? ptovtaComissao.getPassagemAlta().divide(CEM) : BigDecimal.ZERO);
} else { } else {
recbpr = receitaBPR.multiply(ptovtaComissao.getPassagemBaixa().divide(CEM)); recbpr = receitaBPR.multiply(ptovtaComissao.getPassagemBaixa() != null ? ptovtaComissao.getPassagemBaixa().divide(CEM) : BigDecimal.ZERO);
} }
return recbpr; return recbpr;
@ -165,9 +199,9 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService {
BigDecimal receitaEntrega = gapImpressa.add(internet); BigDecimal receitaEntrega = gapImpressa.add(internet);
if(ptovtaComissao.getValorImpressaoGap() != null) { if(ptovtaComissao.getValorImpressaoGap() != null) {
if (BooleanUtils.toBoolean(ptovtaComissao.getIndimpressaogapporc())) { if (BooleanUtils.toBoolean(ptovtaComissao.getIndimpressaogapporc())) {
entregaPassagem = receitaEntrega.multiply(ptovtaComissao.getValorImpressaoGap().divide(CEM)); entregaPassagem = receitaEntrega.multiply(ptovtaComissao.getValorImpressaoGap() != null ? ptovtaComissao.getValorImpressaoGap().divide(CEM) : BigDecimal.ZERO);
} else { } else {
entregaPassagem = ptovtaComissao.getValorImpressaoGap().multiply(new BigDecimal(contImpressa)); entregaPassagem = ptovtaComissao.getValorImpressaoGap() != null ? ptovtaComissao.getValorImpressaoGap().multiply(new BigDecimal(contImpressa)) : BigDecimal.ZERO;
} }
} }
@ -179,9 +213,9 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService {
// Comissão Excesso = Receita Excesso Bagagem * (% Com. Exc. Bag) // Comissão Excesso = Receita Excesso Bagagem * (% Com. Exc. Bag)
BigDecimal excessoBagagem = BigDecimal.ZERO; BigDecimal excessoBagagem = BigDecimal.ZERO;
if (isAltaTemporada) { if (isAltaTemporada) {
excessoBagagem = excBag.multiply(ptovtaComissao.getExcessoAlta().divide(CEM)); excessoBagagem = excBag.multiply(ptovtaComissao.getExcessoAlta() != null ? ptovtaComissao.getExcessoAlta().divide(CEM) : BigDecimal.ZERO);
} else { } else {
excessoBagagem = excBag.multiply(ptovtaComissao.getExcessoBaixa().divide(CEM)); excessoBagagem = excBag.multiply(ptovtaComissao.getExcessoBaixa() != null ? ptovtaComissao.getExcessoBaixa().divide(CEM) : BigDecimal.ZERO);
} }
return excessoBagagem; return excessoBagagem;
@ -192,9 +226,9 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService {
// Comissão Seg. Opcional = Receita Seguro Opcional * (% Com. Seg. Pol) // Comissão Seg. Opcional = Receita Seguro Opcional * (% Com. Seg. Pol)
BigDecimal recsegOpcional = BigDecimal.ZERO; BigDecimal recsegOpcional = BigDecimal.ZERO;
if (isAltaTemporada) { if (isAltaTemporada) {
recsegOpcional = segOpcional.multiply(ptovtaComissao.getSeguroAlta().divide(CEM)); recsegOpcional = segOpcional.multiply(ptovtaComissao.getSeguroAlta() != null ? ptovtaComissao.getSeguroAlta().divide(CEM) : BigDecimal.ZERO);
} else { } else {
recsegOpcional = segOpcional.multiply(ptovtaComissao.getSeguroBaixa().divide(CEM)); recsegOpcional = segOpcional.multiply(ptovtaComissao.getSeguroBaixa() != null ? ptovtaComissao.getSeguroBaixa().divide(CEM) : BigDecimal.ZERO);
} }
return recsegOpcional; return recsegOpcional;
} }
@ -204,9 +238,9 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService {
// Comissão Seg. Opcional = Receita Seguro Opcional * (% Com. Seg. Pol) // Comissão Seg. Opcional = Receita Seguro Opcional * (% Com. Seg. Pol)
BigDecimal recoutros = BigDecimal.ZERO; BigDecimal recoutros = BigDecimal.ZERO;
if (isAltaTemporada) { if (isAltaTemporada) {
recoutros = outros.multiply(ptovtaComissao.getOutrosAlta().divide(CEM)); recoutros = outros.multiply(ptovtaComissao.getOutrosAlta() != null ? ptovtaComissao.getOutrosAlta().divide(CEM) : BigDecimal.ZERO);
} else { } else {
recoutros = outros.multiply(ptovtaComissao.getOutrosBaixa().divide(CEM)); recoutros = outros.multiply(ptovtaComissao.getOutrosBaixa() != null ? ptovtaComissao.getOutrosBaixa().divide(CEM) : BigDecimal.ZERO);
} }
return recoutros; return recoutros;
} }
@ -262,6 +296,8 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService {
List<ComissaoReceita> receitas = calculaReceitaComissao(empresaId, ptovtaComissao, receitasBoleto, ultimodia, mes, ano); List<ComissaoReceita> receitas = calculaReceitaComissao(empresaId, ptovtaComissao, receitasBoleto, ultimodia, mes, ano);
RegistroCalculo rc = new RegistroCalculo(); RegistroCalculo rc = new RegistroCalculo();
rc.setNombpuntoventa(ptovtaComissao.getPuntoventaId().getNombpuntoventa());
rc.setNumPuntoVenta(ptovtaComissao.getPuntoventaId().getNumPuntoVenta());
BigDecimal comissaoBPR = BigDecimal.ZERO; BigDecimal comissaoBPR = BigDecimal.ZERO;
BigDecimal comissaoExcessoBagagem = BigDecimal.ZERO; BigDecimal comissaoExcessoBagagem = BigDecimal.ZERO;
@ -300,12 +336,16 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService {
// Royaties // Royaties
BigDecimal royaties = BigDecimal.ZERO; BigDecimal royaties = BigDecimal.ZERO;
royaties = receitaTotal.multiply(ptovtaComissao.getRoyalties().divide(CEM)); if(ptovtaComissao.getRoyalties() != null) {
royaties = receitaTotal.multiply(ptovtaComissao.getRoyalties().divide(CEM));
}
rc.setRoyaties(royaties); rc.setRoyaties(royaties);
// ISS retido // ISS retido
BigDecimal issRetido = BigDecimal.ZERO; BigDecimal issRetido = BigDecimal.ZERO;
issRetido = receitaTotal.multiply(ptovtaComissao.getIssretido().divide(CEM)); if(ptovtaComissao.getIssretido() != null) {
issRetido = receitaTotal.multiply(ptovtaComissao.getIssretido().divide(CEM));
}
rc.setRetidoISS(issRetido); rc.setRetidoISS(issRetido);
// Comissão à pagar = Comissão BPR + Comissão Excesso Bagagem + Comissão Seg. Opcional + Bonificação Metas + Internet(EntregaPassagem) // Comissão à pagar = Comissão BPR + Comissão Excesso Bagagem + Comissão Seg. Opcional + Bonificação Metas + Internet(EntregaPassagem)
@ -612,4 +652,125 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService {
return aux; return aux;
} }
@Override
public List<RegistroCalculo> relatorioCalculoComissao(Integer empresaId, Date periodo) throws ComissaoException {
List<RegistroCalculo> registrosCalculo = new ArrayList<RegistroCalculo>();
List<PuntoVenta> puntoventas = comissaoDAO.buscaPuntoVentasEmpresaComComissaoParametrizada(empresaId);
for (PuntoVenta puntoVenta : puntoventas) {
RegistroCalculo registroCalculo = relatorioCalculoComissao(puntoVenta.getPuntoventaId(), empresaId, periodo);
totalizarRegistroCalculo(registroCalculo);
registrosCalculo.add(registroCalculo);
}
Collections.sort(registrosCalculo, new Comparator<RegistroCalculo>() {
@Override
public int compare(RegistroCalculo o1, RegistroCalculo o2) {
return o1.getNombpuntoventa().compareToIgnoreCase(o2.getNombpuntoventa());
}
});
return registrosCalculo;
}
private void totalizarRegistroCalculo(RegistroCalculo registroCalculo) {
ComissaoReceita comissaoReceitaTotal = new ComissaoReceita();
for (ComissaoReceita comissaoReceita : registroCalculo.getLsReceitas()) {
comissaoReceitaTotal.setReceitaComissao(comissaoReceitaTotal.getReceitaComissao().add(comissaoReceita.getReceitaComissao()));
comissaoReceitaTotal.setReceitaBPR(comissaoReceitaTotal.getReceitaBPR().add(comissaoReceita.getReceitaBPR()));
comissaoReceitaTotal.setReceitaGAP(comissaoReceitaTotal.getReceitaGAP().add(comissaoReceita.getReceitaGAP()));
comissaoReceitaTotal.setGapImpressa(comissaoReceitaTotal.getGapImpressa().add(comissaoReceita.getGapImpressa()));
comissaoReceitaTotal.setInternet(comissaoReceitaTotal.getInternet().add(comissaoReceita.getInternet()));
comissaoReceitaTotal.setCancelados(comissaoReceitaTotal.getReceitaGAP().add(comissaoReceita.getCancelados()));
comissaoReceitaTotal.setCanceladosGAP(comissaoReceitaTotal.getCanceladosGAP().add(comissaoReceita.getCanceladosGAP()));
comissaoReceitaTotal.setDevolvidos(comissaoReceitaTotal.getDevolvidosGAP().add(comissaoReceita.getDevolvidos()));
comissaoReceitaTotal.setDevolvidosGAP(comissaoReceitaTotal.getDevolvidosGAP().add(comissaoReceita.getDevolvidosGAP()));
comissaoReceitaTotal.setDevolucoesOrigem(comissaoReceitaTotal.getDevolucoesOrigem().add(comissaoReceita.getDevolucoesOrigem()));
comissaoReceitaTotal.setDevolucoesOrigemGAP(comissaoReceitaTotal.getDevolucoesOrigemGAP().add(comissaoReceita.getDevolucoesOrigemGAP()));
comissaoReceitaTotal.setReceitaExcessoBagagem(comissaoReceitaTotal.getReceitaExcessoBagagem().add(comissaoReceita.getReceitaExcessoBagagem()));
comissaoReceitaTotal.setReceitaSeguroOpcional(comissaoReceitaTotal.getReceitaSeguroOpcional().add(comissaoReceita.getReceitaSeguroOpcional()));
comissaoReceitaTotal.setReceitaSeguroOutros(comissaoReceitaTotal.getReceitaSeguroOutros().add(comissaoReceita.getReceitaSeguroOutros()));
comissaoReceitaTotal.setContImpressa(comissaoReceitaTotal.getContImpressa() + comissaoReceita.getContImpressa());
comissaoReceitaTotal.setComissaoBPRDiaria(comissaoReceitaTotal.getComissaoBPRDiaria().add(comissaoReceita.getComissaoBPRDiaria()));
comissaoReceitaTotal.setComissaoExcessoBagagemDiaria(comissaoReceitaTotal.getComissaoExcessoBagagemDiaria().add(comissaoReceita.getComissaoExcessoBagagemDiaria()));
comissaoReceitaTotal.setComissaoSegOpcionalDiaria(comissaoReceitaTotal.getComissaoSegOpcionalDiaria().add(comissaoReceita.getComissaoSegOpcionalDiaria()));
comissaoReceitaTotal.setComissaoEntregaPassagemDiaria(comissaoReceitaTotal.getComissaoEntregaPassagemDiaria().add(comissaoReceita.getComissaoEntregaPassagemDiaria()));
comissaoReceitaTotal.setComissaoOutrosDiaria(comissaoReceitaTotal.getComissaoOutrosDiaria().add(comissaoReceita.getComissaoOutrosDiaria()));
}
registroCalculo.getLsReceitas().clear();
registroCalculo.getLsReceitas().add(comissaoReceitaTotal);
}
@Override
public void registrarCalculoComissao(Empresa empresa, Date periodo, boolean ignorarComissaoGerada) throws ComissaoException {
List<PuntoVenta> puntoventas = comissaoDAO.buscaPuntoVentasEmpresaComComissaoParametrizada(empresa.getEmpresaId());
for (PuntoVenta puntoVenta : puntoventas) {
registrarCalculoComissao(puntoVenta, empresa, periodo, ignorarComissaoGerada);
}
}
@Override
public void cancelarCalculoComissao(Integer empresaId, Date periodo) throws ComissaoException {
List<PuntoVenta> puntoventas = comissaoDAO.buscaPuntoVentasEmpresaComComissaoParametrizada(empresaId);
for (PuntoVenta puntoVenta : puntoventas) {
cancelarCalculoComissao(puntoVenta.getPuntoventaId(), empresaId, periodo);
}
}
@Override
public List<HistoricoComissao> relatorioReciboComissao(Integer puntoVentaId, Integer empresaId, String competencia) throws ComissaoException {
try {
return comissaoDAO.buscaHistoricoComissao(puntoVentaId, empresaId, DateUtil.getDateFromString(competencia, "MM/yyyy"), DateUtil.getDateFromString(competencia, "MM/yyyy"));
} catch (Exception e) {
throw new ComissaoException(e.getMessage(), e);
}
}
@Override
public void enviarEmailReciboComissao(HistoricoComissao historicoComissao, byte[] recibo) {
try {
if(StringUtils.isNotBlank(historicoComissao.getDescCorreo())) {
SendMail mail = new SendMail();
mail.setEmailToCO(historicoComissao.getDescCorreo());
Constante constante = constanteService.buscarPorNomeConstante("SMTP_COMISSAO_EMAIL");
if(constante != null) {
mail.setEmailFrom(constante.getValorconstante());
}
constante = constanteService.buscarPorNomeConstante("SMTP_COMISSAO_HOST");
if(constante != null) {
mail.setSmtpHost(constante.getValorconstante());
}
constante = constanteService.buscarPorNomeConstante("SMTP_COMISSAO_PASS");
if(constante != null) {
mail.setSmtpPassword(constante.getValorconstante());
}
constante = constanteService.buscarPorNomeConstante("SMTP_COMISSAO_PORT");
if(constante != null) {
mail.setSmtpPort(constante.getValorconstante());
}
constante = constanteService.buscarPorNomeConstante("SMTP_COMISSAO_USER");
if(constante != null) {
mail.setSmtpUser(constante.getValorconstante());
}
String assunto = Labels.getLabel("busquedaCalculoComissaoController.recibo.email.assunto", historicoComissao.getCompetencia());
mail.setSubject(assunto);
String texto = Labels.getLabel("busquedaCalculoComissaoController.recibo.email.texto", historicoComissao.getCompetencia());
mail.setText(texto);
ByteArrayOutputStream baos = new ByteArrayOutputStream(recibo.length);
baos.write(recibo, 0, recibo.length);
mail.addAnexo(Labels.getLabel("busquedaCalculoComissaoController.recibo.email.nomeAnexo", historicoComissao.getCompetencia()), baos, MimeType.PDF);
mail.send();
}
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
} }

View File

@ -441,4 +441,9 @@ public class ConferenciaComissaoServiceImpl implements ConferenciaComissaoServic
} }
} }
@Override
public boolean isConferenciaCompetenciaEncerrada(String competencia, Empresa empresa, PuntoVenta puntoVenta) throws BusinessException {
return conferenciaComissaoDAO.isConferenciaCompetenciaEncerrada(competencia, empresa, puntoVenta);
}
} }

View File

@ -609,4 +609,20 @@ public final class DateUtil {
return false; return false;
} }
public static Date getDataFinalCompetencia(String competencia) throws ParseException {
if(isCompetenciaValida(competencia)) {
Date dataInicio = getDateFromString("01/"+competencia, "dd/MM/yyyy");
Calendar cal = Calendar.getInstance(LocaleUtil.getLocale());
cal.setTime(dataInicio);
return getDateFromString(cal.getActualMaximum(Calendar.DAY_OF_MONTH)+"/"+competencia, "dd/MM/yyyy");
}
return null;
}
public static Date getDataInicialCompetencia(String competencia) throws ParseException {
if(isCompetenciaValida(competencia)) {
return getDateFromString("01/"+competencia, "dd/MM/yyyy");
}
return null;
}
} }

View File

@ -0,0 +1,316 @@
package com.rjconsultores.ventaboletos.utilerias;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.util.ByteArrayDataSource;
import org.apache.commons.lang.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.rjconsultores.ventaboletos.enums.MimeType;
public class SendMail {
private static Logger log = LoggerFactory.getLogger(SendMail.class);
private String smtpHost;
private String smtpUser;
private String smtpPassword;
private String smtpPort;
private String emailFrom;
private String emailTo;
private String emailToCO;
private List<String> emailCopy = new ArrayList<String>();
private String localhost;
private String auth;
private String subject;
private String text;
private Map<String, ByteArrayOutputStream> anexosBytes;
private Map<String, String> anexosArquivos;
private Map<String, com.rjconsultores.ventaboletos.enums.MimeType> mimeTypes;
public SendMail(){
this.smtpHost = "";
this.smtpUser = "";
this.smtpPassword = "";
this.smtpPort = "";
this.emailFrom = "";
this.localhost = "";
this.auth = "true";
this.emailTo = "";
this.emailToCO = "";
}
public SendMail(String smtpHost, String smtpUser, String smtpPassword, String smtpPort,
String emailFrom, String emailTo, List<String> emailCopy, String localhost,
String auth, String subject, String text) {
this.smtpHost = smtpHost;
this.smtpUser = smtpUser;
this.smtpPassword = smtpPassword;
this.smtpPort = smtpPort;
this.emailFrom = emailFrom;
this.emailTo = emailTo;
this.emailCopy = emailCopy;
this.localhost = localhost;
this.auth = auth;
this.subject = subject;
this.text = text;
}
public String[] removeNull(String[] a) {
List<String> removed = new ArrayList<String>();
for (String str : a)
if (!StringUtils.isBlank(str) && !str.equals("null"))
removed.add(str);
return removed.toArray(new String[0]);
}
public void send() {
try {
String[] to = {};
String[] bcc = {};
if (emailTo.contains(";")){
to = emailTo.split(";");
} else if (!StringUtils.isBlank(emailTo)){
to = new String[1];
to[0] = emailTo;
}
if (emailToCO.contains(";")){
bcc = emailToCO.split(";");
} else if (!StringUtils.isBlank(emailToCO)){
bcc = new String[1];
bcc[0] = emailToCO;
}
to = removeNull(to);
bcc = removeNull(bcc);
Boolean vAuth = (auth == null ? Boolean.TRUE : Boolean.valueOf(auth));
Properties props = System.getProperties();
props.put("mail.smtp.host", smtpHost);
if (localhost != null) {
props.put("mail.smtp.localhost", localhost);
}
if (vAuth) {
props.setProperty("mail.smtp.starttls.enable", "true");
props.setProperty("mail.smtp.auth", "true");
}
props.setProperty("mail.smtp.port", smtpPort);
props.setProperty("mail.smtp.user", smtpUser);
Session session = Session.getInstance(props, null);
Message message = new MimeMessage(session);
message.setFrom(new InternetAddress(emailFrom));
InternetAddress[] toAddress = new InternetAddress[to.length];
for (int i = 0; i < to.length; i++) {
toAddress[i] = new InternetAddress(to[i]);
}
message.setRecipients(Message.RecipientType.TO, toAddress);
InternetAddress[] toBccAddress = new InternetAddress[bcc.length];
for (int i = 0; i < bcc.length; i++) {
toBccAddress[i] = new InternetAddress(bcc[i]);
}
message.setRecipients(Message.RecipientType.BCC, toBccAddress);
InternetAddress[] copyAddress = new InternetAddress[emailCopy.size()];
int i = 0;
for (String eCopy : emailCopy) {
copyAddress[i] = new InternetAddress(eCopy);
i++;
}
if (copyAddress.length > 0) {
message.setRecipients(Message.RecipientType.CC, copyAddress);
}
message.setSubject(subject);
BodyPart messageBodyPart = new MimeBodyPart();
messageBodyPart.setText(text);
Multipart multipart = new MimeMultipart();
multipart.addBodyPart(messageBodyPart);
message.setContent(multipart);
adicionarAnexos(multipart);
Transport t = session.getTransport("smtp");
t.connect(smtpUser, smtpPassword);
t.sendMessage(message, message.getAllRecipients());
t.close();
} catch (Exception e) {
log.error(e.getMessage(), e);
}
}
private void adicionarAnexos(Multipart multipart) throws MessagingException, IOException {
anexarArquivosBytes(multipart);
anexarArquivos(multipart);
}
private void anexarArquivosBytes(Multipart multipart) throws MessagingException, IOException {
if(anexosBytes != null) {
for (Entry<String, ByteArrayOutputStream> anexo : anexosBytes.entrySet()) {
BodyPart bodyPart = new MimeBodyPart();
com.rjconsultores.ventaboletos.enums.MimeType mimeType = mimeTypes.get(anexo.getKey());
DataSource bds = new ByteArrayDataSource(new ByteArrayInputStream(anexo.getValue().toByteArray()), mimeType.toString());
bodyPart.setDataHandler(new DataHandler(bds));
bodyPart.setFileName(anexo.getKey());
multipart.addBodyPart(bodyPart);
}
}
}
private void anexarArquivos(Multipart multipart) throws MessagingException {
if(anexosArquivos != null) {
for (Entry<String, String> anexo : anexosArquivos.entrySet()) {
BodyPart bodyPart = new MimeBodyPart();
DataSource bds = new FileDataSource(anexo.getValue());
bodyPart.setDataHandler(new DataHandler(bds));
bodyPart.setFileName(anexo.getKey());
multipart.addBodyPart(bodyPart);
}
}
}
public String getSmtpHost() {
return smtpHost;
}
public void setSmtpHost(String smtpHost) {
this.smtpHost = smtpHost;
}
public String getSmtpUser() {
return smtpUser;
}
public void setSmtpUser(String smtpUser) {
this.smtpUser = smtpUser;
}
public String getSmtpPassword() {
return smtpPassword;
}
public void setSmtpPassword(String smtpPassword) {
this.smtpPassword = smtpPassword;
}
public String getSmtpPort() {
return smtpPort;
}
public void setSmtpPort(String smtpPort) {
this.smtpPort = smtpPort;
}
public String getEmailFrom() {
return emailFrom;
}
public void setEmailFrom(String emailFrom) {
this.emailFrom = emailFrom;
}
public String getEmailTo() {
return emailTo;
}
public void setEmailTo(String emailTo) {
this.emailTo = emailTo;
}
public List<String> getEmailCopy() {
return emailCopy;
}
public void setEmailCopy(List<String> emailCopy) {
this.emailCopy = emailCopy;
}
public String getLocalhost() {
return localhost;
}
public void setLocalhost(String localhost) {
this.localhost = localhost;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getText() {
return text;
}
public void setText(String text) {
this.text = text;
}
public String getEmailToCO() {
return emailToCO;
}
public void setEmailToCO(String emailToCO) {
this.emailToCO = emailToCO;
}
public void addAnexo(String nome, ByteArrayOutputStream anexo, MimeType mimeType) {
if(anexosBytes == null) {
anexosBytes = new HashMap<String, ByteArrayOutputStream>();
}
if(mimeTypes == null) {
mimeTypes = new HashMap<String, MimeType>();
}
anexosBytes.put(nome, anexo);
mimeTypes.put(nome, mimeType);
}
public void addAnexo(String nome, String anexo) {
if(anexosArquivos== null) {
anexosArquivos = new HashMap<String, String>();
}
anexosArquivos.put(nome, anexo);
}
}

View File

@ -28,6 +28,30 @@ public class ComissaoReceita {
private BigDecimal comissaoEntregaPassagemDiaria; private BigDecimal comissaoEntregaPassagemDiaria;
private BigDecimal comissaoOutrosDiaria; private BigDecimal comissaoOutrosDiaria;
public ComissaoReceita() {
super();
this.receitaComissao = BigDecimal.ZERO;
this.receitaBPR = BigDecimal.ZERO;
this.receitaGAP = BigDecimal.ZERO;
this.gapImpressa = BigDecimal.ZERO;
this.internet = BigDecimal.ZERO;
this.cancelados = BigDecimal.ZERO;
this.canceladosGAP = BigDecimal.ZERO;
this.devolvidos = BigDecimal.ZERO;
this.devolvidosGAP = BigDecimal.ZERO;
this.devolucoesOrigem = BigDecimal.ZERO;
this.devolucoesOrigemGAP = BigDecimal.ZERO;
this.receitaExcessoBagagem = BigDecimal.ZERO;
this.receitaSeguroOpcional = BigDecimal.ZERO;
this.receitaSeguroOutros = BigDecimal.ZERO;
this.contImpressa = 0;
this.comissaoBPRDiaria = BigDecimal.ZERO;
this.comissaoExcessoBagagemDiaria = BigDecimal.ZERO;
this.comissaoSegOpcionalDiaria = BigDecimal.ZERO;
this.comissaoEntregaPassagemDiaria = BigDecimal.ZERO;
this.comissaoOutrosDiaria = BigDecimal.ZERO;
}
public Date getData() { public Date getData() {
return data; return data;
} }

View File

@ -18,6 +18,11 @@ public class DiaConferenciaComissaoVO implements Comparable<DiaConferenciaComiss
public DiaConferenciaComissaoVO() { public DiaConferenciaComissaoVO() {
super(); super();
this.indboletogerado = Boolean.FALSE;
this.indconferido = Boolean.FALSE;
this.indpendencia = Boolean.FALSE;
this.indsemmovimento = Boolean.FALSE;
this.indmaloterecebido = Boolean.FALSE;
} }
public DiaConferenciaComissaoVO(Integer dia) { public DiaConferenciaComissaoVO(Integer dia) {

View File

@ -1,16 +1,55 @@
package com.rjconsultores.ventaboletos.vo.comissao; package com.rjconsultores.ventaboletos.vo.comissao;
import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.NumberFormat;
import java.text.ParseException;
import org.brazilutils.text.RealToWords;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.zkoss.util.resource.Labels;
import com.rjconsultores.ventaboletos.entidad.Comissao; import com.rjconsultores.ventaboletos.entidad.Comissao;
import com.rjconsultores.ventaboletos.utilerias.DateUtil;
import com.rjconsultores.ventaboletos.utilerias.LocaleUtil;
public class HistoricoComissao extends Comissao { public class HistoricoComissao extends Comissao {
private static final Logger log = LoggerFactory.getLogger(HistoricoComissao.class);
private static final long serialVersionUID = 1L; private static final long serialVersionUID = 1L;
private static final NumberFormat NF = NumberFormat.getCurrencyInstance(LocaleUtil.getLocale());
private String pagamento; private String pagamento;
private String usuarioPagamento; private String usuarioPagamento;
private String usuarioLancamento; private String usuarioLancamento;
private String nombpuntoventa; private String nombpuntoventa;
private String numpuntoventa; private String numpuntoventa;
private String sigla;
private String nome;
private String banco;
private String conta;
private String agencia;
private String cidade;
private String nombempresa;
private String cnpj;
private String descCorreo;
public HistoricoComissao() {
super();
setComissaoBpr(BigDecimal.ZERO);
setReceitaExcessobagagem(BigDecimal.ZERO);
setReceitaSeguroopcional(BigDecimal.ZERO);
setReceitaOutros(BigDecimal.ZERO);
setDescontosFixos(BigDecimal.ZERO);
setDescontosEventuais(BigDecimal.ZERO);
setRoyaties(BigDecimal.ZERO);
setIssRetido(BigDecimal.ZERO);
setBonificacaoMetas(BigDecimal.ZERO);
setEntregasPassagem(BigDecimal.ZERO);
}
public String getPagamento() { public String getPagamento() {
return pagamento; return pagamento;
@ -52,4 +91,141 @@ public class HistoricoComissao extends Comissao {
this.numpuntoventa = numpuntoventa; this.numpuntoventa = numpuntoventa;
} }
public BigDecimal getTotal() {
BigDecimal total = BigDecimal.ZERO;
total = total.add(getComissaoBpr() != null ? getComissaoBpr() : BigDecimal.ZERO)
.add(getReceitaExcessobagagem() != null ? getReceitaExcessobagagem() : BigDecimal.ZERO)
.add(getReceitaSeguroopcional() != null ? getReceitaSeguroopcional() : BigDecimal.ZERO)
.add(getReceitaOutros() != null ? getReceitaOutros() : BigDecimal.ZERO)
.add(getBonificacaoMetas() != null ? getBonificacaoMetas() : BigDecimal.ZERO)
.add(getEntregasPassagem() != null ? getEntregasPassagem() : BigDecimal.ZERO);
total = total.setScale(2, RoundingMode.HALF_UP);
return total;
}
public BigDecimal getTotalLiquido() {
BigDecimal totalLiquido = getTotal();
totalLiquido = totalLiquido.subtract(getDescontosEventuais() != null ? getDescontosEventuais() : BigDecimal.ZERO)
.subtract(getDescontosFixos() != null ? getDescontosFixos() : BigDecimal.ZERO)
.subtract(getIssRetido() != null ? getIssRetido() : BigDecimal.ZERO)
.subtract(getRoyaties() != null ? getRoyaties() : BigDecimal.ZERO);
totalLiquido = totalLiquido.setScale(2, RoundingMode.HALF_UP);
return totalLiquido;
}
public String getSigla() {
return sigla;
}
public void setSigla(String sigla) {
this.sigla = sigla;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getBanco() {
return banco;
}
public void setBanco(String banco) {
this.banco = banco;
}
public String getConta() {
return conta;
}
public void setConta(String conta) {
this.conta = conta;
}
public String getAgencia() {
return agencia;
}
public void setAgencia(String agencia) {
this.agencia = agencia;
}
public String getCidade() {
return cidade;
}
public void setCidade(String cidade) {
this.cidade = cidade;
}
public String getTexto() {
return Labels.getLabel("busquedaCalculoComissaoController.recibo.texto",
new String[]{getNombempresa(),
getCnpj(),
getTextoValor()});
}
public String getTexto1() {
try {
return Labels.getLabel("busquedaCalculoComissaoController.recibo.texto1",
new String[]{DateUtil.getStringDate(DateUtil.getDataInicialCompetencia(getCompetencia()), "dd/MM/yyyy"),
DateUtil.getStringDate(DateUtil.getDataFinalCompetencia(getCompetencia()), "dd/MM/yyyy")});
} catch (ParseException e) {
log.error(e.getMessage(), e);
}
return null;
}
public String getTexto2() {
return Labels.getLabel("busquedaCalculoComissaoController.recibo.texto2");
}
private String getTextoValor() {
StringBuilder sTextoValor = new StringBuilder();
sTextoValor.append(NF.format(getTotalLiquido().doubleValue()))
.append(" (")
.append(new RealToWords().toWords(getTotalLiquido()))
.append(") **********");
return sTextoValor.toString();
}
public String getMsg() {
return Labels.getLabel("busquedaCalculoComissaoController.recibo.msg", new String[]{getNombempresa()});
}
public String getMsg1() {
return Labels.getLabel("busquedaCalculoComissaoController.recibo.msg1", new String[]{getNombempresa()});
}
public String getCnpj() {
return cnpj;
}
public void setCnpj(String cnpj) {
this.cnpj = cnpj;
}
public String getNombempresa() {
return nombempresa;
}
public void setNombempresa(String nombempresa) {
this.nombempresa = nombempresa;
}
public String getDescCorreo() {
return descCorreo;
}
public void setDescCorreo(String descCorreo) {
this.descCorreo = descCorreo;
}
} }

View File

@ -20,6 +20,9 @@ public class RegistroCalculo {
private List<ComissaoDesconto> lsDescontos; private List<ComissaoDesconto> lsDescontos;
private List<ComissaoReceita> lsReceitas; private List<ComissaoReceita> lsReceitas;
private String nombpuntoventa;
private String numPuntoVenta;
public BigDecimal getComissaoPagar() { public BigDecimal getComissaoPagar() {
return comissaoPagar; return comissaoPagar;
} }
@ -121,4 +124,20 @@ public class RegistroCalculo {
return "RegistroCalculo [comissaoPagar=" + comissaoPagar + ", comissaoBPR=" + comissaoBPR + ", comissaoSegOpcional=" + comissaoSegOpcional + ", comissaoExcessoBagagem=" + comissaoExcessoBagagem + ", comissaoEntregaPassagem=" + comissaoEntregaPassagem + ", comissaoBonificaoMetas=" + comissaoBonificaoMetas + ", royaties=" + royaties + ", retidoISS=" + retidoISS + ", descontos=" + descontos + ", lsDescontos=" + lsDescontos + ", lsReceitas=" + lsReceitas + "]"; return "RegistroCalculo [comissaoPagar=" + comissaoPagar + ", comissaoBPR=" + comissaoBPR + ", comissaoSegOpcional=" + comissaoSegOpcional + ", comissaoExcessoBagagem=" + comissaoExcessoBagagem + ", comissaoEntregaPassagem=" + comissaoEntregaPassagem + ", comissaoBonificaoMetas=" + comissaoBonificaoMetas + ", royaties=" + royaties + ", retidoISS=" + retidoISS + ", descontos=" + descontos + ", lsDescontos=" + lsDescontos + ", lsReceitas=" + lsReceitas + "]";
} }
public String getNombpuntoventa() {
return nombpuntoventa;
}
public void setNombpuntoventa(String nombpuntoventa) {
this.nombpuntoventa = nombpuntoventa;
}
public String getNumPuntoVenta() {
return numPuntoVenta;
}
public void setNumPuntoVenta(String numPuntoVenta) {
this.numPuntoVenta = numPuntoVenta;
}
} }