Exemple #1
0
        double valorEmAberto = 0; // VARIÁVEL QUE SERÁ EDITADA PELA REGRA DE NEGÓCIO EM PAGAMENTO.CONTROLLER

        // GET: Contrato
        public ActionResult Adicionar(int idCliente, string nomeTitular, double valorContrato, int quantidadeParcelas, DateTime primeiroVencimento, string garantia, int empresaIdEmpresa)
        {
            Contrato    contrato = new Contrato();
            ContratoDAO dao      = new ContratoDAO();
            Cliente     cliente  = new Cliente();

            contrato.IdCliente          = idCliente;
            contrato.NomeTitular        = nomeTitular;
            contrato.ValorContrato      = valorContrato;
            contrato.QuantidadeParcelas = quantidadeParcelas;
            contrato.PrimeiroVencimento = primeiroVencimento;
            contrato.Garantia           = garantia;
            contrato.EmpresaIdEmpresa   = empresaIdEmpresa;


            contrato.ValorEmAberto = valorEmAberto;

            dao.Adicionar(contrato);

            double auxiliarValorParcela = 0;                                // Usada para ALTERAR a entidade valorEmABerto na entidade CONTRATO depois
            //que o método do método de valor de parcelas ter calculado o montante total

            double valorParcela;

            for (var i = 0; i < quantidadeParcelas; i++)
            {
                Pagamento pagamento = new Pagamento();

                valorParcela = pagamento.CalculoContrato(valorContrato, quantidadeParcelas);


                // INSERINDO NA TABELA PAGAMENTOS

                PagamentoDAO daoPagamento = new PagamentoDAO();
                pagamento.ValorIntegralDaParcela = valorParcela;
                pagamento.Status     = 0;
                pagamento.IdContrato = contrato.IdContrato;
                // ^ Metodo precisa vir depois de ADICIONAR CONTRATO, para que ele tenha uma ID pra ser registrada na table pagamentos
                pagamento.IdCliente = idCliente;
                // ^ Este dado não é pedido na entidade CONTRATO

                pagamento.DataVencimento = primeiroVencimento.AddMonths(i);
                daoPagamento.Adicionar(pagamento);

                auxiliarValorParcela = valorParcela * quantidadeParcelas;
            }

            contrato.ValorEmAberto = auxiliarValorParcela;

            dao.Alterar(contrato);

            return(RedirectToAction("Form"));
        }
        // GET: Pagamento
        public ActionResult Adicionar(double valorIntegralDaParcela, DateTime dataVencimento, int contratoIdContrato,
                                      int clienteIdCliente)
        {
            Pagamento    pagamento = new Pagamento();
            PagamentoDAO dao       = new PagamentoDAO();

            pagamento.ValorIntegralDaParcela = valorIntegralDaParcela;
            pagamento.Status         = 0;
            pagamento.DataVencimento = dataVencimento;
            pagamento.IdContrato     = contratoIdContrato;
            pagamento.IdCliente      = clienteIdCliente;

            dao.Adicionar(pagamento);

            return(View());
        }
        public ActionResult AlterarPagamento(int idpagamento, double valorIntegralDaParcela, int status, DateTime dataVencimento, double valorPago, int contratoIdContrato,
                                             int clienteIdCliente)
        {
            PagamentoDAO dao       = new PagamentoDAO();
            Pagamento    pagamento = dao.Listar().FirstOrDefault(x => x.IdPagamento == idpagamento);

            ContratoDAO CtDao    = new ContratoDAO();
            var         contrato = new Contrato();


            pagamento.Status = 1; // STATUS DE RECEBIMENTO

            var dataAtual = DateTime.Now;
            var outraData = pagamento.DataVencimento;

            TimeSpan Atraso = dataAtual.Subtract(outraData);

            double diasDeAtraso = Atraso.TotalDays;


            var novoValorPagamento = pagamento.CalculaJuroDiario(valorIntegralDaParcela, diasDeAtraso);

            if (valorPago < valorIntegralDaParcela)
            {
                var proximoPagamento = dao.BuscarProximoPagamento(pagamento);
                if (proximoPagamento == null)
                {
                    pagamento.ValorIntegralDaParcela = valorIntegralDaParcela;
                    pagamento.Status         = status;
                    pagamento.DataVencimento = dataVencimento;
                    pagamento.IdContrato     = contratoIdContrato;
                    pagamento.IdCliente      = clienteIdCliente;

                    dao.Adicionar(pagamento);
                }
            }

            pagamento.ValorIntegralDaParcela = valorIntegralDaParcela;
            pagamento.Status         = status;
            pagamento.DataVencimento = dataVencimento;
            pagamento.IdContrato     = contratoIdContrato;
            pagamento.IdCliente      = clienteIdCliente;

            dao.Alterar(pagamento);

            return(View(pagamento));
        }