Subversion Repositories Integrator Subversion

Rev

Rev 106 | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
106 espaco 1
package br.com.ec.domain.service.vendavivo.impl;
2
 
3
import java.util.Date;
4
import java.util.List;
5
import java.util.Map;
6
 
7
import org.springframework.beans.factory.annotation.Autowired;
8
import org.springframework.stereotype.Service;
9
 
195 espaco 10
import br.com.ec.core.consulta.ParametrosConsulta;
11
import br.com.ec.core.exception.NegocioException;
12
import br.com.ec.core.generic.AbstractService;
13
import br.com.ec.core.generic.GenericRepository;
14
import br.com.ec.core.interfaces.Cadastrar;
15
import br.com.ec.core.util.DataUtils;
16
import br.com.ec.core.util.VerificadorUtil;
17
import br.com.ec.core.validador.Validador;
106 espaco 18
import br.com.ec.domain.dto.ParametrosConsultaVendasVivoDTO;
19
import br.com.ec.domain.dto.ProdutoVivoDTO;
20
import br.com.ec.domain.dto.VendasDTO;
21
import br.com.ec.domain.model.Loja;
22
import br.com.ec.domain.model.Usuario;
23
import br.com.ec.domain.model.VendaVivo;
24
import br.com.ec.domain.model.Vendedor;
25
import br.com.ec.domain.service.email.impl.GerenciadorEmailImpl;
26
import br.com.ec.domain.service.linhavivo.LinhaVivoService;
27
import br.com.ec.domain.service.vendavivo.VendaVivoService;
28
import br.com.ec.domain.shared.ConstantesSEC;
29
import br.com.ec.infrastructure.repository.VendaVivoRepository;
30
 
31
@Service
32
public class VendaVivoServiceImpl extends AbstractService<VendaVivo> implements VendaVivoService {
33
 
34
        private LinhaVivoService linhaVivoService;
35
        private VendaVivoRepository vendaVivoRepository;
36
 
37
        @Autowired
38
        public VendaVivoServiceImpl(Validador validador, LinhaVivoService linhaVivoService, VendaVivoRepository vendaVivoRepository) {
39
                super(validador);
40
                this.linhaVivoService = linhaVivoService;
41
                this.vendaVivoRepository = vendaVivoRepository;
42
        }
43
 
44
        @Override
45
        protected GenericRepository<VendaVivo> getRepository() {
46
                return vendaVivoRepository;
47
        }
48
 
49
        @Override
50
        protected void regrasNegocioCadastrar(VendaVivo vendaVivo) {
51
                if (VerificadorUtil.estaNulo(vendaVivo.getVendedor())) {
52
                        throw new NegocioException("Obrigatório informar o vendedor.");
53
                }
54
                if (VerificadorUtil.estaNulo(vendaVivo.getDataVenda())) {
55
                        vendaVivo.setDataVenda(DataUtils.getDataAtual());
56
                }
57
        }
58
 
59
        @Override
60
        public VendaVivo detalharVendaVivo(VendaVivo vendaVivo) {
61
                return vendaVivoRepository.detalharVendaVivo(vendaVivo);
62
        }
63
 
64
        @Override
65
        public void excluirVendaVivo(VendaVivo vendaVivo, Usuario usuario) {
66
                super.excluir(vendaVivo);
67
                enviarEmail(vendaVivo, usuario);
68
        }
69
 
70
        private void enviarEmail(VendaVivo vendaVivo, Usuario usuario) {
71
                String diaAtual = DataUtils.converterDataParaString(DataUtils.getDataAtual());
72
                StringBuilder conteudo = new StringBuilder();
73
                conteudo.append("OPERAÇÃO REALIZADA POR: " + usuario.getNome() + "\n");
74
                conteudo.append("DATA DA VENDA: " + DataUtils.converterDataComHorarioParaString(vendaVivo.getDataVenda()) + "\n");
75
                conteudo.append("LOJA: " + vendaVivo.getLoja().getDescricao() + "\n");
76
                conteudo.append("VENDEDOR: " + vendaVivo.getVendedor().getNomeDaPessoa() + "\n");
77
                conteudo.append("PRODUTO: " + vendaVivo.getProdutoVivo().getDescricaoCompleta() + "\n");
78
                conteudo.append("OBS.: " + vendaVivo.getObservacao() + "\n");
79
                conteudo.append("JUSTIFICATIVA: " + vendaVivo.getJustificativaParaExcluir() + "\n");
80
                conteudo.append("__________________________________________________\n\n");
81
                new GerenciadorEmailImpl()
82
                        .comEmailsDestino(ConstantesSEC.DESTINATARIOS_EMAIL_DIRECAO)
83
                        .comAssunto("ESPAÇO CASE - OPERAÇÃO DE EXCLUSÃO DE VENDA: " + diaAtual)
84
                        .comConteudo(conteudo.toString())
85
                        .enviar();
86
        }
87
 
88
        @Override
89
        public void cadastrarVendaVivoPeloPDV(VendaVivo vendaVivo) {
90
                lancarExcecaoCasoNaoSejaInformadoCamposObrigatorios(vendaVivo);
91
                validarEntidadeNoContextoInformado(vendaVivo, Cadastrar.class);
92
                if (VerificadorUtil.naoEstaNuloOuVazio(vendaVivo.getIndicadorMigracao())) {
93
                        if (!vendaVivo.getIndicadorMigracao()) {
94
                                vendaVivo.setValorAssinatura(vendaVivo.getProdutoVivo().getValorAssinatura());
95
                                if (vendaVivo.getIndicadorPortabilidade()) {
96
                                        vendaVivo.setValorRecebido(vendaVivo.getProdutoVivo().getValorAssinatura() * ConstantesSEC.Vivo.COMISSSAO_VIVO_PORTABILIDADE_1_9);
97
                                        vendaVivo.setValorComissao(vendaVivo.getProdutoVivo().getValorComissao() * ConstantesSEC.Vivo.COMISSSAO_PORTABILIDADE_1_3);
98
                                } else {
99
                                        vendaVivo.setValorRecebido(vendaVivo.getProdutoVivo().getValorAssinatura() * ConstantesSEC.Vivo.COMISSAO_VIVO_1_6);
100
                                        vendaVivo.setValorComissao(vendaVivo.getProdutoVivo().getValorComissao());
101
                                }
102
                        }
103
                }
104
                vendaVivo.getLinhaVivo().setPlanoAtual(vendaVivo.getProdutoVivo());
105
                vendaVivo.getLinhaVivo().setDataAtualizacao(DataUtils.getDataAtual());
106
                if (VerificadorUtil.estaNulo(vendaVivo.getSequencialDaLinha())) {
107
                        linhaVivoService.cadastrar(vendaVivo.getLinhaVivo());
108
                } else {
109
                        linhaVivoService.alterar(vendaVivo.getLinhaVivo());
110
                }
111
                cadastrar(vendaVivo);
112
        }
113
 
114
        @Override
115
        public void alterarVendaVivoPeloPDV(VendaVivo vendaVivo) {
116
                linhaVivoService.alterar(vendaVivo.getLinhaVivo());
117
                alterar(vendaVivo);
118
        }
119
 
120
        @Override
121
        public List<VendaVivo> consultarVendasVivoDoDia(Long sequencialLoja, Date dataVendas) {
122
                return vendaVivoRepository.consultarVendasDoDia(sequencialLoja, dataVendas);
123
        }
124
 
125
        @Override
126
        public Integer obterQuantidadeDeVendasPorLojaEePeriodo(VendaVivo vendaVivo, Date dataInicial, Date dataFinal) {
127
                return vendaVivoRepository.obterQuantidadeDeVendasPorLojaEePeriodo(vendaVivo, dataInicial, dataFinal);
128
        }
129
 
130
        @Override
131
        public Double obterValorTotalBrutoDeVendasPorLojaEePeriodo(Loja loja, Date dataInicial, Date dataFinal) {
132
                return vendaVivoRepository.obterValorTotalBrutoDeVendasPorLojaEePeriodo(loja, dataInicial, dataFinal);
133
        }
134
 
135
        @Override
136
        public Double obterValorTotalBrutoDeVendasPorLojaEePeriodo(ParametrosConsultaVendasVivoDTO parametrosConsulta) {
137
                return vendaVivoRepository.obterValorTotalBrutoDeVendasPorLojaEePeriodo(parametrosConsulta);
138
        }
139
 
140
        @Override
141
        public Integer obterQuantidadeProdutosVendidosPorLojaEePeriodo(ParametrosConsultaVendasVivoDTO parametrosConsultaVendas) {
142
                return vendaVivoRepository.obterQuantidadeProdutosVendidosPorLojaEePeriodo(parametrosConsultaVendas);
143
        }
144
 
145
        private void lancarExcecaoCasoNaoSejaInformadoCamposObrigatorios(VendaVivo vendaVivo) {
146
                if (VerificadorUtil.estaNulo(vendaVivo.getLoja())) {
147
                        throw new NegocioException("Informe a loja");
148
                }
149
        }
150
 
151
        @Override
152
        public List<VendaVivo> consultarVendasPorDemanda(ParametrosConsulta<VendaVivo> parametrosConsulta, Integer primeiroRegistro,
153
                        Integer tamanhoPagina, String sortField, String orderSort, Map<String, Object> filters) {
154
                return vendaVivoRepository.consultarVendasPorDemanda(parametrosConsulta, primeiroRegistro, tamanhoPagina, sortField, orderSort, filters);
155
        }
156
 
157
        @Override
158
        public List<VendaVivo> consultarVendaPorParametros(ParametrosConsultaVendasVivoDTO parametrosConsultaVendas) {
159
                return vendaVivoRepository.consultarVendaPorParametros(parametrosConsultaVendas);
160
        }
161
 
162
        @Override
163
        public List<ProdutoVivoDTO> consultarVendasVivo(Date dataInicial, Date dataFinal, Vendedor vendedor, Integer homologado) {
164
                return vendaVivoRepository.consultarVendasVivo(dataInicial, dataFinal, vendedor, homologado);
165
        }
166
 
167
        @Override
168
        public List<VendasDTO> consultarVendas(ParametrosConsultaVendasVivoDTO parametrosConsultaVendasDTO) {
169
                return vendaVivoRepository.consultarVendas(parametrosConsultaVendasDTO);
170
        }
171
 
172
}