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 | } |