Rev 685 | Rev 688 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 685 | blopes | 1 | package br.com.ec.domain.service.cashback.impl; |
| 2 | |||
| 3 | import java.util.List; |
||
| 4 | |||
| 5 | import org.springframework.beans.factory.annotation.Autowired; |
||
| 6 | import org.springframework.stereotype.Service; |
||
| 7 | |||
| 8 | import br.com.ec.core.generic.AbstractService; |
||
| 9 | import br.com.ec.core.generic.GenericRepository; |
||
| 10 | import br.com.ec.core.util.DataUtils; |
||
| 11 | import br.com.ec.core.util.VerificadorUtil; |
||
| 12 | import br.com.ec.core.validador.Validador; |
||
| 13 | import br.com.ec.domain.dto.CashbackDTO; |
||
| 14 | import br.com.ec.domain.dto.ParametrosVendaDTO; |
||
| 15 | import br.com.ec.domain.model.Cashback; |
||
| 16 | import br.com.ec.domain.model.Lancamento; |
||
| 17 | import br.com.ec.domain.model.Venda; |
||
| 18 | import br.com.ec.domain.model.tipos.TipoCashback; |
||
| 686 | blopes | 19 | import br.com.ec.domain.model.tipos.TipoProduto; |
| 685 | blopes | 20 | import br.com.ec.domain.service.cashback.CashbackService; |
| 21 | import br.com.ec.infrastructure.repository.CashbackRepository; |
||
| 22 | |||
| 23 | @Service |
||
| 24 | public class CashbackServiceImpl extends AbstractService<Cashback> implements CashbackService { |
||
| 25 | |||
| 26 | private CashbackRepository cashbackRepository; |
||
| 27 | |||
| 28 | @Autowired |
||
| 29 | public CashbackServiceImpl(Validador validador, CashbackRepository cashbackRepository) { |
||
| 30 | super(validador); |
||
| 31 | this.cashbackRepository = cashbackRepository; |
||
| 32 | } |
||
| 33 | |||
| 34 | @Override |
||
| 35 | protected GenericRepository<Cashback> getRepository() { |
||
| 36 | return cashbackRepository; |
||
| 37 | } |
||
| 38 | |||
| 39 | @Override |
||
| 40 | public List<CashbackDTO> consultarCashbackCliente(Long sequencialCliente) { |
||
| 686 | blopes | 41 | return cashbackRepository.consultarCashbackCliente(sequencialCliente); |
| 685 | blopes | 42 | } |
| 43 | |||
| 44 | @Override |
||
| 686 | blopes | 45 | public Double consultarSaldoCliente(Long sequencialCliente) { |
| 46 | Double saldo = 0.0; |
||
| 47 | Double valorCreditado = cashbackRepository.consultarSaldoCliente(sequencialCliente, TipoCashback.ENTRADA.getValor()); |
||
| 48 | Double valorUtilizado = cashbackRepository.consultarSaldoCliente(sequencialCliente, TipoCashback.SAIDA.getValor()); |
||
| 49 | if (VerificadorUtil.naoEstaNulo(valorCreditado)) { |
||
| 50 | saldo += valorCreditado; |
||
| 51 | if (VerificadorUtil.naoEstaNulo(valorUtilizado)) { |
||
| 52 | saldo -= valorUtilizado; |
||
| 53 | } |
||
| 54 | } |
||
| 55 | return saldo; |
||
| 685 | blopes | 56 | } |
| 57 | |||
| 58 | @Override |
||
| 59 | public void gerarCashback(ParametrosVendaDTO parametrosVendaDTO, Venda venda) { |
||
| 60 | // TODO: 10% capas e películas e 5% no geral (sem descontos ou cupons) |
||
| 61 | Double valorCashback = 0.0; |
||
| 62 | if (VerificadorUtil.naoEstaNulo(parametrosVendaDTO.getCliente())) { |
||
| 63 | if (VerificadorUtil.naoEstaNuloOuVazio(parametrosVendaDTO.getLancamentos())) { |
||
| 64 | for (Lancamento lancamento : parametrosVendaDTO.getLancamentos()) { |
||
| 65 | if (VerificadorUtil.naoEstaNulo(lancamento.getValorVenda()) && VerificadorUtil.naoEstaNulo(lancamento.getValorVarejo())) { |
||
| 66 | if (VerificadorUtil.estaNulo(lancamento.getCupom()) && lancamento.getValorVenda() >= lancamento.getValorVarejo()) { |
||
| 686 | blopes | 67 | valorCashback = valorCashback + lancamento.getValorVenda()/100 * TipoProduto.parse(lancamento.getProduto().getTipo()).getPercentualCashback(); |
| 685 | blopes | 68 | } |
| 69 | } |
||
| 70 | } |
||
| 71 | } |
||
| 72 | if (valorCashback > 0.0) { |
||
| 73 | Cashback cashback = new Cashback(); |
||
| 74 | cashback.setCliente(parametrosVendaDTO.getCliente()); |
||
| 75 | cashback.setVenda(venda); |
||
| 76 | cashback.setDataHoraEmissao(DataUtils.getDataAtual()); |
||
| 77 | cashback.setPrazoInicial(DataUtils.acrescentarDias(DataUtils.getDataAtual(), 7)); |
||
| 78 | cashback.setPrazoFinal(DataUtils.acrescentarDias(DataUtils.getDataAtual(), 365)); |
||
| 79 | cashback.setTipoCashback(TipoCashback.ENTRADA.getValor()); |
||
| 80 | cashback.setValor(valorCashback); |
||
| 81 | cashback.setAtivo(true); |
||
| 82 | cashbackRepository.cadastrar(cashback); |
||
| 83 | } |
||
| 84 | } |
||
| 85 | } |
||
| 86 | |||
| 87 | @Override |
||
| 88 | public void utilizarCashback(CashbackDTO cashbackDTO) { |
||
| 89 | // TODO Auto-generated method stub |
||
| 90 | |||
| 91 | } |
||
| 92 | |||
| 686 | blopes | 93 | @Override |
| 94 | public void utilizarCashback(Venda venda, Double valorCashback) { |
||
| 95 | // TODO Auto-generated method stub |
||
| 96 | if (valorCashback > 0.0) { |
||
| 97 | Cashback cashback = new Cashback(); |
||
| 98 | cashback.setCliente(venda.getCliente()); |
||
| 99 | cashback.setVenda(venda); |
||
| 100 | cashback.setDataHoraEmissao(DataUtils.getDataAtual()); |
||
| 101 | cashback.setPrazoInicial(DataUtils.acrescentarDias(DataUtils.getDataAtual(), 7)); |
||
| 102 | cashback.setPrazoFinal(DataUtils.acrescentarDias(DataUtils.getDataAtual(), 365)); |
||
| 103 | cashback.setTipoCashback(TipoCashback.ENTRADA.getValor()); |
||
| 104 | cashback.setValor(valorCashback); |
||
| 105 | cashback.setAtivo(true); |
||
| 106 | cashbackRepository.cadastrar(cashback); |
||
| 107 | } else { |
||
| 108 | |||
| 109 | } |
||
| 110 | } |
||
| 111 | |||
| 685 | blopes | 112 | } |