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")); }