Subversion Repositories Integrator Subversion

Rev

Rev 402 | Rev 575 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 402 Rev 439
Line 8... Line 8...
8
8
9
import br.com.ec.core.consulta.ParametrosConsulta;
9
import br.com.ec.core.consulta.ParametrosConsulta;
10
import br.com.ec.core.exception.NegocioException;
10
import br.com.ec.core.exception.NegocioException;
11
import br.com.ec.core.generic.AbstractService;
11
import br.com.ec.core.generic.AbstractService;
12
import br.com.ec.core.generic.GenericRepository;
12
import br.com.ec.core.generic.GenericRepository;
-
 
13
import br.com.ec.core.util.DataUtils;
13
import br.com.ec.core.util.VerificadorUtil;
14
import br.com.ec.core.util.VerificadorUtil;
14
import br.com.ec.core.validador.Validador;
15
import br.com.ec.core.validador.Validador;
15
import br.com.ec.domain.dto.FormaPagamentoDTO;
16
import br.com.ec.domain.dto.FormaPagamentoDTO;
16
import br.com.ec.domain.dto.ParcelaDTO;
17
import br.com.ec.domain.dto.ParcelaDTO;
-
 
18
import br.com.ec.domain.dto.VigenciaDTO;
17
import br.com.ec.domain.dto.consulta.ParametrosConsultaParcelasDTO;
19
import br.com.ec.domain.dto.consulta.ParametrosConsultaParcelasDTO;
-
 
20
import br.com.ec.domain.model.Conta;
18
import br.com.ec.domain.model.Parcela;
21
import br.com.ec.domain.model.Parcela;
-
 
22
import br.com.ec.domain.model.Vigencia;
-
 
23
import br.com.ec.domain.model.tipos.TipoFrequencia;
-
 
24
import br.com.ec.domain.service.ContaService;
19
import br.com.ec.domain.service.ParcelaService;
25
import br.com.ec.domain.service.ParcelaService;
-
 
26
import br.com.ec.domain.service.VigenciaService;
20
import br.com.ec.repository.ParcelaRepository;
27
import br.com.ec.repository.ParcelaRepository;
21
28
22
@Service
29
@Service
23
public class ParcelaServiceImpl extends AbstractService<Parcela> implements ParcelaService {
30
public class ParcelaServiceImpl extends AbstractService<Parcela> implements ParcelaService {
24
31
25
        private ParcelaRepository parcelaRepository;
32
        private ParcelaRepository parcelaRepository;
-
 
33
        private ContaService contaService;
-
 
34
        private VigenciaService vigenciaService;
-
 
35
       
26
        /*
36
        /*
27
        private TaxaService taxaService;
37
        private TaxaService taxaService;
28
        private ContaService contaService;
-
 
29
        private CategoriaService categoriaService;
38
        private CategoriaService categoriaService;
30
        private ContaFormaPagamentoService contaFormaPagamentoService;
39
        private ContaFormaPagamentoService contaFormaPagamentoService;
31
        private VendaFormaPagamentoService vendaFormaPagamentoService;
40
        private VendaFormaPagamentoService vendaFormaPagamentoService;
32
        private VigenciaService vigenciaService;*/
-
 
-
 
41
        */
33
       
42
       
34
        @Autowired
43
        @Autowired
35
        public ParcelaServiceImpl(Validador validador, ParcelaRepository parcelaRepository/*, TaxaService taxaService,
-
 
36
                        ContaService contaService, CategoriaService categoriaService, ContaFormaPagamentoService contaFormaPagamentoService,
-
 
37
                        VendaFormaPagamentoService vendaFormaPagamentoService, VigenciaService vigenciaService*/) {
-
 
-
 
44
        public ParcelaServiceImpl(Validador validador, ParcelaRepository parcelaRepository, ContaService contaService,
-
 
45
                        VigenciaService vigenciaService/*, TaxaService taxaService,
-
 
46
                        CategoriaService categoriaService, ContaFormaPagamentoService contaFormaPagamentoService,
-
 
47
                        VendaFormaPagamentoService vendaFormaPagamentoService*/) {
38
                super(validador);
48
                super(validador);
39
                this.parcelaRepository = parcelaRepository;
49
                this.parcelaRepository = parcelaRepository;
-
 
50
                this.contaService = contaService;
-
 
51
                this.vigenciaService = vigenciaService;
40
                /*
52
                /*
41
                this.taxaService = taxaService;
53
                this.taxaService = taxaService;
42
                this.contaService = contaService;
-
 
43
                this.contaFormaPagamentoService = contaFormaPagamentoService;
54
                this.contaFormaPagamentoService = contaFormaPagamentoService;
44
                this.vendaFormaPagamentoService = vendaFormaPagamentoService;
55
                this.vendaFormaPagamentoService = vendaFormaPagamentoService;
45
                this.categoriaService = categoriaService;
56
                this.categoriaService = categoriaService;
46
                this.vigenciaService = vigenciaService;
-
 
47
                */
57
                */
48
        }
58
        }
49
59
50
        @Override
60
        @Override
51
        protected GenericRepository<Parcela> getRepository() {
61
        protected GenericRepository<Parcela> getRepository() {
52
                return this.parcelaRepository;
62
                return this.parcelaRepository;
-
 
63
        }
-
 
64
       
-
 
65
        @Override
-
 
66
        protected void regrasNegocioCadastrar(Parcela parcela) {
-
 
67
                verificarParcela(parcela);
-
 
68
        }
-
 
69
       
-
 
70
        @Override
-
 
71
        protected void regrasNegocioAlterar(Parcela parcela) {
-
 
72
                verificarParcela(parcela);
-
 
73
        }
-
 
74
-
 
75
        private void verificarParcela(Parcela parcela) {
-
 
76
                if (VerificadorUtil.estaNulo(parcela.getDataVencimento()) && VerificadorUtil.estaNulo(parcela.getDataPagamento())) {
-
 
77
                        throw new NegocioException("INFORME A DATA DE VENCIMENTO OU A DATA DE PAGAMENTO");
-
 
78
                }
-
 
79
                cadastrarContaCasoNaoTenhaSidoCadastrada(parcela.getConta());
53
        }
80
        }
54
       
81
       
55
        @Override
82
        @Override
56
        public List<ParcelaDTO> consultarParcelas(ParametrosConsultaParcelasDTO parametrosConsultaParcelasDTO) {
83
        public List<ParcelaDTO> consultarParcelas(ParametrosConsultaParcelasDTO parametrosConsultaParcelasDTO) {
57
                return parcelaRepository.consultarParcelas(parametrosConsultaParcelasDTO);
84
                return parcelaRepository.consultarParcelas(parametrosConsultaParcelasDTO);
Line 95... Line 122...
95
                for (ParcelaDTO parcelaDTO : parcelas) {
122
                for (ParcelaDTO parcelaDTO : parcelas) {
96
                        parcelaRepository.alterarObservacao(parcelaDTO.getSequencial(), parcelaDTO.getObservacao());
123
                        parcelaRepository.alterarObservacao(parcelaDTO.getSequencial(), parcelaDTO.getObservacao());
97
                }
124
                }
98
        }
125
        }
99
       
126
       
100
        /*
-
 
101
        @Override
127
        @Override
102
        protected void regrasNegocioCadastrar(Parcela parcela) {
-
 
103
                verificarParcela(parcela);
-
 
-
 
128
        public void efetuarPagamentoRecebimento(ParcelaDTO parcelaDTO, Date dataEfetuar) {
-
 
129
                Parcela parcela = this.consultarPorId(new Parcela(parcelaDTO.getSequencial()));
-
 
130
                if (VerificadorUtil.estaNulo(parcela.getDataPagamento())) {
-
 
131
                        parcela.setDataPagamento(dataEfetuar);
-
 
132
                        this.alterar(parcela);
-
 
133
                        cadastrarNovaParcelaPelaFrequencia(parcela);
-
 
134
                }
104
        }
135
        }
105
       
136
       
106
        @Override
-
 
107
        protected void regrasNegocioAlterar(Parcela parcela) {
-
 
108
                verificarParcela(parcela);
-
 
-
 
137
        private Conta cadastrarContaCasoNaoTenhaSidoCadastrada(Conta conta) {
-
 
138
                if (VerificadorUtil.naoEstaNulo(conta)) {
-
 
139
                        if (VerificadorUtil.estaNulo(conta.getSequencial())) {
-
 
140
                                contaService.cadastrar(conta);
-
 
141
                        }
-
 
142
                }
-
 
143
        return conta;
109
        }
144
        }
110

-
 
111
       
145
       
112
        private void verificarParcela(Parcela parcela) {
-
 
113
                if (VerificadorUtil.estaNulo(parcela.getDataVencimento()) && VerificadorUtil.estaNulo(parcela.getDataPagamento())) {
-
 
114
                        throw new NegocioException("INFORME A DATA DE VENCIMENTO OU A DATA DE PAGAMENTO");
-
 
-
 
146
        @Override
-
 
147
        public void cadastrarNovaParcelaPelaFrequencia(Parcela parcela) {
-
 
148
                if (VerificadorUtil.naoEstaNulo(parcela.getConta())) {
-
 
149
                        if (!this.verificarPossuiParcelaEmAberta(parcela.getConta().getSequencial(), parcela.getConta().getSequencialDaVenda())) {
-
 
150
                                if (!parcela.getConta().getTipoFrequencia().equals(TipoFrequencia.UNICA.getValor())) {
-
 
151
                                        Conta contaNova = new Conta(parcela.getConta());
-
 
152
                                        contaNova.setSequencial(null);
-
 
153
                                        if (parcela.getConta().getTipoFrequencia().equals(TipoFrequencia.MENSAL.getValor())) {
-
 
154
                                                Vigencia proximaVigencia = vigenciaService.consultarProximaVigencia(parcela.getConta().getVigencia().getSequencial());
-
 
155
                                                contaNova.setVigencia(proximaVigencia);
-
 
156
                                        }
-
 
157
                                        contaService.cadastrar(contaNova);
-
 
158
                                       
-
 
159
                                        List<Parcela> parcelas = parcelaRepository.consultarParcelasDaConta(parcela.getConta().getSequencial());
-
 
160
                                        for (Parcela parcelaAnterior : parcelas) {
-
 
161
                                                Parcela parcelaNova = new Parcela(parcelaAnterior);
-
 
162
                                                parcelaNova.setConta(contaNova);
-
 
163
                                                parcelaNova.setDataEmissao(DataUtils.getDataAtual());
-
 
164
                                                parcelaNova.provisionarNovaDataVencimentoPelaFrequencia();
-
 
165
                                                parcelaNova.setDataPagamento(null);
-
 
166
                                                this.cadastrar(parcelaNova);
-
 
167
                                        }
-
 
168
//                                      ContaGerenciadorDTO contaGerenciador = new ContaGerenciadorDTO();
-
 
169
//                                      contaGerenciador.setConta(contaAPagar);
-
 
170
//                                      return contaGerenciador;
-
 
171
                                }
-
 
172
                        }
115
                }
173
                }
116
                //TODO: VERIFICAR CADASTRO
-
 
117
                cadastrarContaCasoNaoTenhaSidoCadastrada(parcela.getConta());
-
 
118
//              cadastrarContaCasoNaoTenhaSidoCadastrada(parcela.getConta(), TipoConta.CONTA_A_PAGAR.getValor());
-
 
119
//              cadastrarContaCasoNaoTenhaSidoCadastrada(parcela.getConta(), TipoConta.CONTA_A_RECEBER.getValor());
-
 
-
 
174
                //return null;
120
        }
175
        }
121
       
176
       
-
 
177
        @Override
-
 
178
        public Boolean verificarPossuiParcelaEmAberta(Long sequencialConta, Long sequencialVenda) {
-
 
179
                return parcelaRepository.verificarPossuiParcelaEmAberta(sequencialConta, sequencialVenda);
-
 
180
        }
-
 
181
       
-
 
182
        /*
122
        @Override
183
        @Override
123
        public void cancelarParcela(Parcela parcela) {
184
        public void cancelarParcela(Parcela parcela) {
124
                parcela.setIndicadorAtivo(false);
185
                parcela.setIndicadorAtivo(false);
125
                this.alterar(parcela);
186
                this.alterar(parcela);
126
                cancelarContaSemParcelaAtiva(parcela);
187
                cancelarContaSemParcelaAtiva(parcela);
Line 292... Line 353...
292
                                if (vendaFormaPagamento.getFormaPagamento().formaPagamentoEhCredito()) {criarParcelaCredito(valorParcelaCalculado, taxa.getContaBancaria(), vendaFormaPagamento, conta);}
353
                                if (vendaFormaPagamento.getFormaPagamento().formaPagamentoEhCredito()) {criarParcelaCredito(valorParcelaCalculado, taxa.getContaBancaria(), vendaFormaPagamento, conta);}
293
                        }
354
                        }
294
                        return conta;
355
                        return conta;
295
                }
356
                }
296
                throw new NegocioException("NENHUMA PARCELA FOI CRIADA");
357
                throw new NegocioException("NENHUMA PARCELA FOI CRIADA");
297
        }
-
 
298
       
-
 
299
        private Conta cadastrarContaCasoNaoTenhaSidoCadastrada(Conta conta) {
-
 
300
                if (VerificadorUtil.naoEstaNulo(conta)) {
-
 
301
                        if (VerificadorUtil.estaNulo(conta.getSequencial())) {
-
 
302
                                contaService.cadastrar(conta);
-
 
303
                        }
-
 
304
                }
-
 
305
        return conta;
-
 
306
        }
358
        }
307
       
359
       
308
        private Conta criarParcelaDinheiro(VendaFormaPagamento vendaFormaPagamento, Conta contaAReceber) {
360
        private Conta criarParcelaDinheiro(VendaFormaPagamento vendaFormaPagamento, Conta contaAReceber) {
309
                cadastrarParcelas(vendaFormaPagamento, new ContaBancaria(ContaBancaria.getContaCaixa()), vendaFormaPagamento.getVenda().getDataVenda(), vendaFormaPagamento.getValorPagamento(), contaAReceber, "VALOR");
361
                cadastrarParcelas(vendaFormaPagamento, new ContaBancaria(ContaBancaria.getContaCaixa()), vendaFormaPagamento.getVenda().getDataVenda(), vendaFormaPagamento.getValorPagamento(), contaAReceber, "VALOR");
310
                return contaAReceber;
362
                return contaAReceber;
Line 366... Line 418...
366
        }
418
        }
367
       
419
       
368
        @Override
420
        @Override
369
        public Boolean verificarPossuiParcela(Venda venda) {
421
        public Boolean verificarPossuiParcela(Venda venda) {
370
                return parcelaRepository.verificarPossuiParcela(venda);
422
                return parcelaRepository.verificarPossuiParcela(venda);
371
        }
-
 
372
       
-
 
373
        @Override
-
 
374
        public ContaGerenciadorDTO cadastrarNovaParcelaPelaFrequencia(Parcela parcela) {
-
 
375
                if (VerificadorUtil.naoEstaNulo(parcela.getConta())) {
-
 
376
                        if (!this.verificarPossuiParcelaAbertaParaPagamento(parcela.getConta())) {
-
 
377
                                if (!parcela.getConta().getTipoFrequencia().equals(TipoFrequencia.UNICA.getValor())) {
-
 
378
                                        Conta contaAPagar = new Conta();
-
 
379
                                        contaAPagar.setCategoria(parcela.getConta().getCategoria());
-
 
380
                                        contaAPagar.setPessoa(parcela.getConta().getPessoa());
-
 
381
                                        contaAPagar.setObservacao(parcela.getConta().getObservacao());
-
 
382
                                        contaAPagar.setTipoFrequencia(parcela.getConta().getTipoFrequencia());
-
 
383
                                        contaAPagar.setIndicadorAtivo(true);
-
 
384
                                        contaAPagar.setTipoConta(TipoConta.CONTA_A_PAGAR.getValor());
-
 
385
                                        contaAPagar.setLoja(parcela.getConta().getLoja());
-
 
386
                                        contaAPagar.setVigencia(parcela.getConta().getVigencia());
-
 
387
                                        if (parcela.getConta().getTipoFrequencia().equals(TipoFrequencia.MENSAL.getValor())) {
-
 
388
                                                contaAPagar.setVigencia(vigenciaService.consultarProximaVigencia(parcela.getConta().getVigencia()));
-
 
389
                                        }
-
 
390
                                        contaService.cadastrar(contaAPagar);
-
 
391
                                       
-
 
392
                                        List<Parcela> parcelas = parcelaRepository.consultarParcelasDaConta(parcela.getConta());
-
 
393
                                        for (Parcela p : parcelas) {
-
 
394
                                                Parcela novaParcela = new Parcela();
-
 
395
                                                novaParcela.setConta(contaAPagar);
-
 
396
                                                novaParcela.setDataEmissao(DataUtils.getDataAtual());
-
 
397
                                                novaParcela.setContaBancaria(p.getContaBancaria());
-
 
398
                                                novaParcela.setObservacao(p.getObservacao());
-
 
399
                                                novaParcela.setValor(p.getValor());
-
 
400
                                                novaParcela.setIndicadorAtivo(true);
-
 
401
                                                novaParcela.setIndicadorOficial(p.getIndicadorOficial());
-
 
402
                                                if (p.getConta().getTipoFrequencia().equals(TipoFrequencia.DIARIAMENTE.getValor())) {
-
 
403
                                                        novaParcela.setDataVencimento(DataUtils.acrescentarDias(p.getDataVencimento(), 1));
-
 
404
                                                }
-
 
405
                                                if (p.getConta().getTipoFrequencia().equals(TipoFrequencia.SEMANAL.getValor())) {
-
 
406
                                                        novaParcela.setDataVencimento(DataUtils.acrescentarDias(p.getDataVencimento(), 7));
-
 
407
                                                }
-
 
408
                                                if (p.getConta().getTipoFrequencia().equals(TipoFrequencia.MENSAL.getValor())) {
-
 
409
                                                        novaParcela.setDataVencimento(DataUtils.acrescentarMeses(p.getDataVencimento(), 1));
-
 
410
                                                }
-
 
411
                                                if (p.getConta().getTipoFrequencia().equals(TipoFrequencia.ANUAL.getValor())) {
-
 
412
                                                        novaParcela.setDataVencimento(DataUtils.acrescentarAnos(p.getDataVencimento(), 1));
-
 
413
                                                }
-
 
414
                                                this.cadastrar(novaParcela);
-
 
415
                                                novaParcela.setConta(contaAPagar);
-
 
416
                                        }
-
 
417
                                       
-
 
418
                                        ContaGerenciadorDTO contaGerenciador = new ContaGerenciadorDTO();
-
 
419
                                        contaGerenciador.setConta(contaAPagar);
-
 
420
                                        return contaGerenciador;
-
 
421
                                }
-
 
422
                        }
-
 
423
                } else if (VerificadorUtil.naoEstaNulo(parcela.getConta())) {
-
 
424
                        if (!parcela.getConta().getTipoFrequencia().equals(TipoFrequencia.UNICA.getValor())) {
-
 
425
                                Conta contaAReceber = new Conta();
-
 
426
                                contaAReceber.setCategoria(parcela.getConta().getCategoria());
-
 
427
                                contaAReceber.setPessoa(parcela.getConta().getPessoa());
-
 
428
                                contaAReceber.setObservacao(parcela.getConta().getObservacao());
-
 
429
                                contaAReceber.setTipoFrequencia(parcela.getConta().getTipoFrequencia());
-
 
430
                                contaAReceber.setIndicadorAtivo(true);
-
 
431
                                contaAReceber.setTipoConta(TipoConta.CONTA_A_RECEBER.getValor());
-
 
432
                                contaAReceber.setLoja(parcela.getConta().getLoja());
-
 
433
                                contaService.cadastrar(contaAReceber);
-
 
434
                               
-
 
435
                                Parcela novaParcela = new Parcela();
-
 
436
                                novaParcela.setConta(contaAReceber);
-
 
437
                                novaParcela.setDataEmissao(DataUtils.getDataAtual());
-
 
438
                                novaParcela.setContaBancaria(parcela.getContaBancaria());
-
 
439
                                novaParcela.setObservacao(parcela.getObservacao());
-
 
440
                                novaParcela.setValor(parcela.getValor());
-
 
441
                                novaParcela.setIndicadorAtivo(true);
-
 
442
                                if (parcela.getConta().getTipoFrequencia().equals(TipoFrequencia.DIARIAMENTE.getValor())) {
-
 
443
                                        novaParcela.setDataVencimento(DataUtils.acrescentarDias(parcela.getDataVencimento(), 1));
-
 
444
                                }
-
 
445
                                if (parcela.getConta().getTipoFrequencia().equals(TipoFrequencia.SEMANAL.getValor())) {
-
 
446
                                        novaParcela.setDataVencimento(DataUtils.acrescentarDias(parcela.getDataVencimento(), 7));
-
 
447
                                }
-
 
448
                                if (parcela.getConta().getTipoFrequencia().equals(TipoFrequencia.MENSAL.getValor())) {
-
 
449
                                        novaParcela.setDataVencimento(DataUtils.acrescentarMeses(parcela.getDataVencimento(), 1));
-
 
450
                                }
-
 
451
                                if (parcela.getConta().getTipoFrequencia().equals(TipoFrequencia.ANUAL.getValor())) {
-
 
452
                                        novaParcela.setDataVencimento(DataUtils.acrescentarAnos(parcela.getDataVencimento(), 1));
-
 
453
                                }
-
 
454
                                this.cadastrar(novaParcela);
-
 
455
                                novaParcela.setConta(contaAReceber);
-
 
456
                               
-
 
457
                                ContaGerenciadorDTO contaGerenciador = new ContaGerenciadorDTO();
-
 
458
                                contaGerenciador.setConta(contaAReceber);
-
 
459
                                return contaGerenciador;
-
 
460
                        }
-
 
461
                }
-
 
462
                return null;
-
 
463
        }
423
        }
464
       
424
       
465
        @Override
425
        @Override
466
        public List<CartaoDTO> gerarContasDosCartoes(List<VendaFormaPagamento> listaVendaFormaPagamento) {
426
        public List<CartaoDTO> gerarContasDosCartoes(List<VendaFormaPagamento> listaVendaFormaPagamento) {
467
                List<CartaoDTO> contas = new ArrayList<CartaoDTO>();
427
                List<CartaoDTO> contas = new ArrayList<CartaoDTO>();