Subversion Repositories Integrator Subversion

Rev

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
}