public ActionResult Receber(ContaReceberVM model) { if (model.valorPago == null || model.valorPago <= 0) { ModelState.AddModelError("valorPago", "Informe o valor do pagamento"); } if (model.pagamento == null) { ModelState.AddModelError("pagamento", "Informe o data do pagamento"); } if (ModelState.IsValid) { try { LogBLL.Insert(new LogDado("Receber", "ContaReceber", _idUsuario)); using (var db = new Context()) { using (var trans = new RP.DataAccess.RPTransactionScope(db)) { var _contaReceber = model.GetContaReceber(); var _bll = new BLL.ContaReceberBLL(db, _idUsuario); _bll.Receber(_contaReceber); if (model.flDiferenca == "Sim") { // Lança conta a receber referente a diferença var _diferenca = new ContaReceber { idProjeto = model.Projeto != null ? model.Projeto.idProjeto : null, idCliente = _contaReceber.idCliente, parcela = _contaReceber.parcela, descricao = "Conta gerada da diferença. Valor original: " + model.valorConta + ". Valor pago: " + model.valorPago, vencimento = _contaReceber.vencimento, pagamento = _contaReceber.pagamento, valorConta = model.vlDiferenca ?? 0, situacao = ContaReceber.SITUACAO_AGUARDANDO_PAGAMENTO, flFormaPagamento = _contaReceber.flFormaPagamento, idCompra = _contaReceber.idCompra, idOrigem = _contaReceber.idOrigem == null ? _contaReceber.idContaReceber :_contaReceber.idOrigem }; _bll.Insert(_diferenca); } var _caixaBLL = new BLL.CaixaBLL(db, _idUsuario); _caixaBLL.Insert(new Caixa { ContaReceber = _contaReceber, situacao = Caixa.CORENTE, valor = (_contaReceber.valorPago.Value), descricao = _contaReceber.descricao + " [" + model.Cliente.nome + "] " + (model.Projeto != null ? model.Projeto.descricao : ""), dtLancamento = _contaReceber.pagamento.Value }); _bll.SaveChanges(); trans.Complete(); this.AddFlashMessage("Conta a receber adicionada com sucesso!", FlashMessage.SUCCESS); return RedirectToAction("Index"); } } } catch (Exception ex) { RP.Util.Entity.ErroLog.Add(ex, Session.SessionID, _idUsuario); return RedirectToAction("Index", "Erro", new { area = string.Empty }); } } return View(model); }