Rev 710 | 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; |
||
| 710 | blopes | 16 | import br.com.ec.domain.model.Cliente; |
| 685 | blopes | 17 | import br.com.ec.domain.model.Lancamento; |
| 18 | import br.com.ec.domain.model.Venda; |
||
| 19 | import br.com.ec.domain.model.tipos.TipoCashback; |
||
| 686 | blopes | 20 | import br.com.ec.domain.model.tipos.TipoProduto; |
| 685 | blopes | 21 | import br.com.ec.domain.service.cashback.CashbackService; |
| 22 | import br.com.ec.infrastructure.repository.CashbackRepository; |
||
| 23 | |||
| 24 | @Service |
||
| 25 | public class CashbackServiceImpl extends AbstractService<Cashback> implements CashbackService { |
||
| 26 | |||
| 27 | private CashbackRepository cashbackRepository; |
||
| 28 | |||
| 29 | @Autowired |
||
| 30 | public CashbackServiceImpl(Validador validador, CashbackRepository cashbackRepository) { |
||
| 31 | super(validador); |
||
| 32 | this.cashbackRepository = cashbackRepository; |
||
| 33 | } |
||
| 34 | |||
| 35 | @Override |
||
| 36 | protected GenericRepository<Cashback> getRepository() { |
||
| 37 | return cashbackRepository; |
||
| 38 | } |
||
| 39 | |||
| 40 | @Override |
||
| 41 | public List<CashbackDTO> consultarCashbackCliente(Long sequencialCliente) { |
||
| 686 | blopes | 42 | return cashbackRepository.consultarCashbackCliente(sequencialCliente); |
| 685 | blopes | 43 | } |
| 44 | |||
| 45 | @Override |
||
| 686 | blopes | 46 | public Double consultarSaldoCliente(Long sequencialCliente) { |
| 47 | Double saldo = 0.0; |
||
| 48 | Double valorCreditado = cashbackRepository.consultarSaldoCliente(sequencialCliente, TipoCashback.ENTRADA.getValor()); |
||
| 49 | Double valorUtilizado = cashbackRepository.consultarSaldoCliente(sequencialCliente, TipoCashback.SAIDA.getValor()); |
||
| 50 | if (VerificadorUtil.naoEstaNulo(valorCreditado)) { |
||
| 51 | saldo += valorCreditado; |
||
| 52 | if (VerificadorUtil.naoEstaNulo(valorUtilizado)) { |
||
| 53 | saldo -= valorUtilizado; |
||
| 54 | } |
||
| 55 | } |
||
| 56 | return saldo; |
||
| 685 | blopes | 57 | } |
| 58 | |||
| 59 | @Override |
||
| 710 | blopes | 60 | public void gerarCashback(ParametrosVendaDTO parametrosVendaDTO, Long sequencialVenda) { |
| 685 | blopes | 61 | // TODO: 10% capas e películas e 5% no geral (sem descontos ou cupons) |
| 62 | Double valorCashback = 0.0; |
||
| 63 | if (VerificadorUtil.naoEstaNulo(parametrosVendaDTO.getCliente())) { |
||
| 64 | if (VerificadorUtil.naoEstaNuloOuVazio(parametrosVendaDTO.getLancamentos())) { |
||
| 65 | for (Lancamento lancamento : parametrosVendaDTO.getLancamentos()) { |
||
| 727 | blopes | 66 | valorCashback += lancamento.valorCashbackGerado(); |
| 685 | blopes | 67 | } |
| 68 | } |
||
| 69 | if (valorCashback > 0.0) { |
||
| 70 | Cashback cashback = new Cashback(); |
||
| 71 | cashback.setCliente(parametrosVendaDTO.getCliente()); |
||
| 710 | blopes | 72 | cashback.setVenda(new Venda(sequencialVenda)); |
| 685 | blopes | 73 | cashback.setDataHoraEmissao(DataUtils.getDataAtual()); |
| 74 | cashback.setPrazoInicial(DataUtils.acrescentarDias(DataUtils.getDataAtual(), 7)); |
||
| 689 | blopes | 75 | cashback.setPrazoFinal(DataUtils.acrescentarDias(cashback.getPrazoInicial(), 365)); |
| 685 | blopes | 76 | cashback.setTipoCashback(TipoCashback.ENTRADA.getValor()); |
| 77 | cashback.setValor(valorCashback); |
||
| 78 | cashback.setAtivo(true); |
||
| 79 | cashbackRepository.cadastrar(cashback); |
||
| 80 | } |
||
| 81 | } |
||
| 82 | } |
||
| 83 | |||
| 84 | @Override |
||
| 710 | blopes | 85 | public void utilizarCashback(Long sequencialVenda, Long sequencialCliente, Double valorCashback) { |
| 689 | blopes | 86 | Cashback cashback = new Cashback(); |
| 710 | blopes | 87 | cashback.setCliente(new Cliente(sequencialCliente)); |
| 88 | cashback.setVenda(new Venda(sequencialVenda)); |
||
| 689 | blopes | 89 | cashback.setDataHoraEmissao(DataUtils.getDataAtual()); |
| 90 | cashback.setPrazoInicial(null); |
||
| 91 | cashback.setPrazoFinal(null); |
||
| 92 | cashback.setTipoCashback(TipoCashback.SAIDA.getValor()); |
||
| 93 | cashback.setValor(valorCashback); |
||
| 94 | cashback.setAtivo(true); |
||
| 95 | cashbackRepository.cadastrar(cashback); |
||
| 685 | blopes | 96 | } |
| 97 | |||
| 686 | blopes | 98 | @Override |
| 689 | blopes | 99 | public void excluirCashbackVenda(Long sequencialVenda) { |
| 100 | cashbackRepository.excluirCashbackVenda(sequencialVenda); |
||
| 686 | blopes | 101 | } |
| 102 | |||
| 685 | blopes | 103 | } |