Subversion Repositories Integrator Subversion

Rev

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
}