diff --git a/src/com/rjconsultores/ventaboletos/dao/ComissaoDAO.java b/src/com/rjconsultores/ventaboletos/dao/ComissaoDAO.java index 43199ab35..7932dd6f9 100644 --- a/src/com/rjconsultores/ventaboletos/dao/ComissaoDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/ComissaoDAO.java @@ -4,6 +4,7 @@ import java.util.Date; import java.util.List; 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.HistoricoComissao; @@ -14,4 +15,7 @@ public interface ComissaoDAO extends GenericDAO { public Comissao buscaComissaoVigencia(Integer puntoVentaId, Integer empresaId, String competencia); public List buscaHistoricoComissao(Integer puntoVentaId, Integer empresaId, Date periodoInicio, Date periodoFim); + + public List buscaPuntoVentasEmpresaComComissaoParametrizada(Integer empresaId); + } diff --git a/src/com/rjconsultores/ventaboletos/dao/ConferenciaComissaoDAO.java b/src/com/rjconsultores/ventaboletos/dao/ConferenciaComissaoDAO.java index ffeaa6688..5e30dafd3 100644 --- a/src/com/rjconsultores/ventaboletos/dao/ConferenciaComissaoDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/ConferenciaComissaoDAO.java @@ -51,4 +51,6 @@ public interface ConferenciaComissaoDAO extends GenericDAO { public BigDecimal carregarTotalFechamentoContaCorrente(Conferencia conferencia) throws BusinessException; + public boolean isConferenciaCompetenciaEncerrada(String competencia, Empresa empresa, PuntoVenta puntoVenta) throws BusinessException; + } diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/ComissaoHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/ComissaoHibernateDAO.java index 8dc2dfa72..fa9868cfc 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/ComissaoHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/ComissaoHibernateDAO.java @@ -17,6 +17,7 @@ import org.springframework.stereotype.Repository; import com.rjconsultores.ventaboletos.dao.ComissaoDAO; import com.rjconsultores.ventaboletos.entidad.Comissao; +import com.rjconsultores.ventaboletos.entidad.PuntoVenta; import com.rjconsultores.ventaboletos.utilerias.DateUtil; import com.rjconsultores.ventaboletos.vo.comissao.BoletoComissao; import com.rjconsultores.ventaboletos.vo.comissao.HistoricoComissao; @@ -95,7 +96,7 @@ public class ComissaoHibernateDAO extends GenericHibernateDAO StringBuilder hql = new StringBuilder(); hql.append(" from Comissao c "); hql.append(" where c.activo = 1 "); - hql.append(" AND c.puntoVentaId = :puntoventaId "); + hql.append(" AND c.puntoVenta.puntoventaId = :puntoventaId "); hql.append(" AND c.empresaId = :empresaId "); hql.append(" AND c.competencia = :periodo "); @@ -130,9 +131,21 @@ public class ComissaoHibernateDAO extends GenericHibernateDAO sql.append(" c.indpago AS indPago, "); 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(" 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("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 ul ON ul.usuario_id = c.usuario_id "); sql.append("WHERE c.activo = 1 "); @@ -163,8 +176,15 @@ public class ComissaoHibernateDAO extends GenericHibernateDAO .addScalar("pagamento", StringType.INSTANCE) .addScalar("usuarioPagamento", 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)); - + query.setString("periodoInicio", competenciaInicio); query.setString("periodoFim", competenciaFim); query.setInteger("empresaId", empresaId); @@ -175,4 +195,19 @@ public class ComissaoHibernateDAO extends GenericHibernateDAO return query.list(); } + + @Override + @SuppressWarnings("unchecked") + public List 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(); + } + } diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/ConferenciaComissaoHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/ConferenciaComissaoHibernateDAO.java index 4bf4c35cc..88e315b90 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/ConferenciaComissaoHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/ConferenciaComissaoHibernateDAO.java @@ -982,5 +982,28 @@ public class ConferenciaComissaoHibernateDAO extends GenericHibernateDAO lsConferencias = new ArrayList(); + + 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); + } + } } diff --git a/src/com/rjconsultores/ventaboletos/dao/hibernate/PtovtaComissaoHibernateDAO.java b/src/com/rjconsultores/ventaboletos/dao/hibernate/PtovtaComissaoHibernateDAO.java index 6a2cce42a..d1631e27f 100644 --- a/src/com/rjconsultores/ventaboletos/dao/hibernate/PtovtaComissaoHibernateDAO.java +++ b/src/com/rjconsultores/ventaboletos/dao/hibernate/PtovtaComissaoHibernateDAO.java @@ -56,7 +56,7 @@ public class PtovtaComissaoHibernateDAO extends GenericHibernateDAO 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 relatorioReciboComissao(Integer puntoVentaId, Integer empresaId, String competencia) throws ComissaoException; + + public void enviarEmailReciboComissao(HistoricoComissao historicoComissao, byte[] recibo); + } diff --git a/src/com/rjconsultores/ventaboletos/service/ConferenciaComissaoService.java b/src/com/rjconsultores/ventaboletos/service/ConferenciaComissaoService.java index 4c885bfa4..2c02ae4a2 100644 --- a/src/com/rjconsultores/ventaboletos/service/ConferenciaComissaoService.java +++ b/src/com/rjconsultores/ventaboletos/service/ConferenciaComissaoService.java @@ -63,5 +63,7 @@ public interface ConferenciaComissaoService extends GenericService receitas = calculaReceitaComissao(empresaId, ptovtaComissao, receitasBoleto, ultimodia, mes, ano); RegistroCalculo rc = new RegistroCalculo(); + rc.setNombpuntoventa(ptovtaComissao.getPuntoventaId().getNombpuntoventa()); + rc.setNumPuntoVenta(ptovtaComissao.getPuntoventaId().getNumPuntoVenta()); BigDecimal comissaoBPR = BigDecimal.ZERO; BigDecimal comissaoExcessoBagagem = BigDecimal.ZERO; @@ -300,12 +336,16 @@ public class CalculoComissaoServiceImpl implements CalculoComissaoService { // Royaties 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); // ISS retido 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); // 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; } + @Override + public List relatorioCalculoComissao(Integer empresaId, Date periodo) throws ComissaoException { + List registrosCalculo = new ArrayList(); + List 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() { + @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 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 puntoventas = comissaoDAO.buscaPuntoVentasEmpresaComComissaoParametrizada(empresaId); + for (PuntoVenta puntoVenta : puntoventas) { + cancelarCalculoComissao(puntoVenta.getPuntoventaId(), empresaId, periodo); + } + } + + @Override + public List 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); + } + } + } diff --git a/src/com/rjconsultores/ventaboletos/service/impl/ConferenciaComissaoServiceImpl.java b/src/com/rjconsultores/ventaboletos/service/impl/ConferenciaComissaoServiceImpl.java index 2255fd3ae..6fd8ecfe4 100644 --- a/src/com/rjconsultores/ventaboletos/service/impl/ConferenciaComissaoServiceImpl.java +++ b/src/com/rjconsultores/ventaboletos/service/impl/ConferenciaComissaoServiceImpl.java @@ -131,7 +131,7 @@ public class ConferenciaComissaoServiceImpl implements ConferenciaComissaoServic logConferencia.setFecmodif(new Date()); conferenciaComissaoDAO.borrarLogConferencia(logConferencia); } - + @Override public LogConferencia obtenerLogConferenciaID(Long logconferenciaId) { return conferenciaComissaoDAO.obtenerLogConferenciaID(logconferenciaId); @@ -440,5 +440,10 @@ public class ConferenciaComissaoServiceImpl implements ConferenciaComissaoServic log.error(e.getMessage(), e); } } + + @Override + public boolean isConferenciaCompetenciaEncerrada(String competencia, Empresa empresa, PuntoVenta puntoVenta) throws BusinessException { + return conferenciaComissaoDAO.isConferenciaCompetenciaEncerrada(competencia, empresa, puntoVenta); + } } diff --git a/src/com/rjconsultores/ventaboletos/utilerias/DateUtil.java b/src/com/rjconsultores/ventaboletos/utilerias/DateUtil.java index 358e04f9b..00e956c91 100644 --- a/src/com/rjconsultores/ventaboletos/utilerias/DateUtil.java +++ b/src/com/rjconsultores/ventaboletos/utilerias/DateUtil.java @@ -609,4 +609,20 @@ public final class DateUtil { 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; + } + } \ No newline at end of file diff --git a/src/com/rjconsultores/ventaboletos/utilerias/SendMail.java b/src/com/rjconsultores/ventaboletos/utilerias/SendMail.java new file mode 100644 index 000000000..df48da043 --- /dev/null +++ b/src/com/rjconsultores/ventaboletos/utilerias/SendMail.java @@ -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 emailCopy = new ArrayList(); + private String localhost; + private String auth; + private String subject; + private String text; + private Map anexosBytes; + private Map anexosArquivos; + private Map 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 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 removed = new ArrayList(); + 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 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 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 getEmailCopy() { + return emailCopy; + } + + public void setEmailCopy(List 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(); + } + if(mimeTypes == null) { + mimeTypes = new HashMap(); + } + anexosBytes.put(nome, anexo); + mimeTypes.put(nome, mimeType); + } + + public void addAnexo(String nome, String anexo) { + if(anexosArquivos== null) { + anexosArquivos = new HashMap(); + } + anexosArquivos.put(nome, anexo); + } + +} diff --git a/src/com/rjconsultores/ventaboletos/vo/comissao/ComissaoReceita.java b/src/com/rjconsultores/ventaboletos/vo/comissao/ComissaoReceita.java index 712c530aa..069a5ac9a 100644 --- a/src/com/rjconsultores/ventaboletos/vo/comissao/ComissaoReceita.java +++ b/src/com/rjconsultores/ventaboletos/vo/comissao/ComissaoReceita.java @@ -27,6 +27,30 @@ public class ComissaoReceita { private BigDecimal comissaoSegOpcionalDiaria; private BigDecimal comissaoEntregaPassagemDiaria; 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() { return data; diff --git a/src/com/rjconsultores/ventaboletos/vo/comissao/DiaConferenciaComissaoVO.java b/src/com/rjconsultores/ventaboletos/vo/comissao/DiaConferenciaComissaoVO.java index 313d522df..948e720f3 100644 --- a/src/com/rjconsultores/ventaboletos/vo/comissao/DiaConferenciaComissaoVO.java +++ b/src/com/rjconsultores/ventaboletos/vo/comissao/DiaConferenciaComissaoVO.java @@ -18,6 +18,11 @@ public class DiaConferenciaComissaoVO implements Comparable lsDescontos; private List lsReceitas; + + private String nombpuntoventa; + private String numPuntoVenta; public BigDecimal getComissaoPagar() { 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 + "]"; } + 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; + } + }