Subversion Repositories Integrator Subversion

Rev

Rev 397 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

package br.com.ec.controller.managedbean;

import java.io.Serializable;
import java.util.List;

import javax.inject.Inject;
import javax.inject.Named;

import org.primefaces.event.SelectEvent;
import org.springframework.context.annotation.Scope;

import br.com.ec.core.generic.GenericService;
import br.com.ec.core.util.DataUtils;
import br.com.ec.core.util.VerificadorUtil;
import br.com.ec.domain.model.Categoria;
import br.com.ec.domain.model.Conta;
import br.com.ec.domain.model.ContaBancaria;
import br.com.ec.domain.model.ContaBancariaTransferencia;
import br.com.ec.domain.model.Pagamento;
import br.com.ec.domain.model.Parcela;
import br.com.ec.domain.model.Pessoa;
import br.com.ec.domain.model.tipos.TipoConta;
import br.com.ec.domain.service.conta.ContaService;
import br.com.ec.domain.service.contabancariatransferencia.ContaBancariaTransferenciaService;
import br.com.ec.domain.service.pagamento.PagamentoService;
import br.com.ec.domain.service.parcela.ParcelaService;
import br.com.ec.web.exception.VerificadorLancamentoException;
import br.com.ec.web.exception.VerificadorLancamentoException.CommandBean;
import br.com.ec.web.generic.AbstractBean;
import br.com.ec.web.message.LancadorMensagem;

@Named
@Scope("view")
public class ParcelaBean extends AbstractBean<Parcela> implements Serializable {

        private static final long serialVersionUID = 1L;
       
        private ContaBancariaTransferencia transferenciaContaBancaria;
        private List<ContaBancariaTransferencia> transferenciasContaBancaria;
       
        private ParcelaService parcelaService;
        private ContaService contaService;
        private PagamentoService pagamentoService;
        private ContaBancariaTransferenciaService contaBancariaTransferenciaService;
       
        @Inject
        public ParcelaBean(ParcelaService parcelaService, ContaService contaService, PagamentoService pagamentoService,
                        ContaBancariaTransferenciaService contaBancariaTransferenciaService) {
                this.parcelaService = parcelaService;
                this.contaService = contaService;
                this.pagamentoService = pagamentoService;
                this.contaBancariaTransferenciaService = contaBancariaTransferenciaService;
        }
       
        @Override
        public void preCarregamento() {
                if (VerificadorUtil.estaNulo(entidade)) {
                        entidade = new Parcela();
                }
        }
       
        @Override
        public void limparEntidade() {
                setEntidade(new Parcela());
        }

        @Override
        public GenericService<Parcela> getService() {
                return parcelaService;
        }
       
        @Override
        public Parcela getEntidade() {
                return entidade;
        }

        @Override
        public Parcela getId() {
                return getEntidade();
        }
       
        public void onRowSelect(SelectEvent event) {
                setEntidade(parcelaService.consultarPorId((Parcela) event.getObject()));
    }
       
        public ContaBancariaTransferencia getTransferenciaContaBancaria() {
                return transferenciaContaBancaria;
        }
        public void setTransferenciaContaBancaria(ContaBancariaTransferencia transferenciaContaBancaria) {
                this.transferenciaContaBancaria = transferenciaContaBancaria;
        }
       
        public List<ContaBancariaTransferencia> getTransferenciasContaBancaria() {
                return transferenciasContaBancaria;
        }
        public void setTransferenciasContaBancaria(List<ContaBancariaTransferencia> transferenciasContaBancaria) {
                this.transferenciasContaBancaria = transferenciasContaBancaria;
        }
       
        /***************************************************************/
       
        public void iniciarParcelaAReceber(ContaBancaria contaBancaria) {
                entidade = new Parcela();
                entidade.setContaBancaria(contaBancaria);
                entidade.setConta(new Conta(TipoConta.CONTA_A_RECEBER.getValor()));
                entidade.setIndicadorConciliado(false);
        }
       
        public void iniciarParcelaAPagar(ContaBancaria contaBancaria) {
                entidade = new Parcela();
                entidade.setContaBancaria(contaBancaria);
                entidade.setConta(new Conta(TipoConta.CONTA_A_PAGAR.getValor()));
                entidade.setIndicadorConciliado(false);
        }
       
        public void iniciarParcelaAPagar(Pagamento pagamento) {
                entidade = new Parcela();
                entidade.setContaBancaria(new ContaBancaria(ContaBancaria.getContaCaixa()));
                Conta conta = new Conta(TipoConta.CONTA_A_PAGAR.getValor());
                conta.setLoja(pagamento.getLoja());
                entidade.setConta(conta);
                entidade.setDataPagamento(pagamento.getData());
                entidade.setDataVencimento(pagamento.getData());
                entidade.setObservacao(pagamento.getDescricao());
                entidade.setValor(pagamento.getValor());
                entidade.setIndicadorConciliado(false);
        }
       
        public void depositar() {
        new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                parcelaService.lancarParcela(getEntidade());
                                LancadorMensagem.lancarSucesso("DEPÓSITO REALIZADO COM SUCESSO!");
                        }
                });
    }
       
        public void pagar() {
        new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                parcelaService.lancarParcela(getEntidade());
                                LancadorMensagem.lancarSucesso("PAGAMENTO REALIZADO COM SUCESSO!");
                        }
                });
    }
       
        public void cancelarParcela() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                parcelaService.cancelarParcela(getEntidade());
                                LancadorMensagem.lancarSucesso("PAGAMENTO CANCELADO COM SUCESSO!");
                        }
                });
        }
       
        public void selecionarCategoria(Categoria categoria) {
                getEntidade().getConta().setCategoria(categoria);
        }

        public void retirarCategoria() {
                getEntidade().getConta().setCategoria(null);
        }
       
        public void selecionarPessoa(Pessoa pessoa) {
                getEntidade().getConta().setPessoa(pessoa);
        }

        public void retirarPessoa() {
                getEntidade().getConta().setPessoa(null);
        }
       
        @Override
        public void alterar() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                modificarEntidadeAntesDaOperacao();
                                getService().alterar(getEntidade());
                                contaService.alterar(getEntidade().getConta());
                                limparEntidade();
                                modificarEntidadeDepoisDaOperacao();
                                LancadorMensagem.lancarSucesso(getMensagens().get(IDENTIFICADOR_MENSAGEM_ALTERADO_COM_SUCESSO));
                        }
                });
        }
       
        public void inicializarParcelaAReceber(final Conta conta) {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                Parcela parcela = new Parcela();
                                parcela.setIndicadorAtivo(true);
                                if (VerificadorUtil.naoEstaNulo(conta)) {
                                        parcela.setConta(conta);
                                        if (VerificadorUtil.naoEstaNulo(conta.getVenda())) {
                                                parcela.setDataEmissao(conta.getVenda().getDataVenda());
                                                parcela.setObservacao("PARCELA DA VENDA: " + conta.getSequencialDaVenda());
                                        } else {
                                                parcela.setDataEmissao(DataUtils.getDataAtual());
                                        }
                                }
                                setEntidade(parcela);
                        }
                });
        }
       
        public void inicializarParcelaAPagar(final Conta conta) {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                Parcela parcela = new Parcela();
                                parcela.setIndicadorAtivo(true);
                                if (VerificadorUtil.naoEstaNulo(conta)) {
                                        parcela.setDataEmissao(DataUtils.getDataAtual());
                                        parcela.setConta(conta);
                                        parcela.setObservacao("PARCELA: " + conta.getSequencial());
                                }
                                setEntidade(parcela);
                        }
                });
        }
       
        public void cadastrarFinalizandoPagamento(final Pagamento pagamento) {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                parcelaService.lancarParcela(getEntidade());
                                limparEntidade();
                                pagamento.setLancado(true);
                                pagamentoService.alterar(pagamento);
                                LancadorMensagem.lancarSucesso("Conta lançada e pagamento finalizado com sucesso!");
                        }
                });
        }
       
        public void iniciarTransferenciaContaBancaria() {
                new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                ContaBancariaTransferencia transferenciaContaBancaria = new ContaBancariaTransferencia();
                                transferenciaContaBancaria.setDataOperacao(DataUtils.getDataAtual());
                                transferenciaContaBancaria.setIndicadorConciliado(false);
                                setTransferenciaContaBancaria(transferenciaContaBancaria);
                        }
                });
        }
       
        public void transferirContaBancaria() {
        new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                contaBancariaTransferenciaService.cadastrar(getTransferenciaContaBancaria());
                                setTransferenciaContaBancaria(null);
                                LancadorMensagem.lancarSucesso("TRANSFERÊNCIA REALIZADA COM SUCESSO!");
                        }
                });
    }
       
        public void consultarUltimasTransferencias() {
        new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                setTransferenciasContaBancaria(contaBancariaTransferenciaService.consultarUltimasTransferencias());
                        }
                });
    }
       
        public void excluirTransferenciaBancaria(final ContaBancariaTransferencia contaBancariaTransferencia) {
        new VerificadorLancamentoException().tratarIhRelancarExcecaoSemLimparEntidade(new CommandBean() {
                        public void execute() {
                                contaBancariaTransferenciaService.excluir(contaBancariaTransferencia);
                                consultarUltimasTransferencias();
                                LancadorMensagem.lancarSucesso("TRANSFERÊNCIA EXCLUÍDA COM SUCESSO!");
                        }
                });
    }
       
}