public ActionResult Create(ContaPagarVM model)
        {
            if (string.IsNullOrEmpty(model.Fornecedor.nome) || model.Fornecedor.idFornecedor == 0 || model.Fornecedor.idFornecedor == null)
            {
                ModelState.AddModelError("Fornecedor.nome", "Informe o fornecedor");
            }
            if (ModelState.IsValid)
            {
                try
                {
                    LogBLL.Insert(new LogDado("Create", "ContaPagar", _idUsuario));
                    using (var db = new Context())
                    {
                        using (var trans = new RP.DataAccess.RPTransactionScope(db))
                        {
                            var _contaPagar = model.GetContaPagar();

                            var _bll = new BLL.ContaPagarBLL(db, _idUsuario);
                            _contaPagar.situacao =ContaPagar.SITUACAO_AGUARDANDO_PAGAMENTO;
                            _bll.Insert(_contaPagar);
                            //if (pagar)
                            //{
                            //    var _caixaBLL = new BLL.CaixaBLL(db, _idUsuario);

                            //    _caixaBLL.Insert(new Caixa
                            //    {
                            //        ContaPagar = _contaPagar,
                            //        situacao = Caixa.CORENTE,
                            //        valor = (model.valorConta.Value * -1),
                            //        descricao = "Conta paga para " + model.Fornecedor.nome + " " + model.descricao,
                            //        dtLancamento = DateTime.Now
                            //    });
                            //}
                            _bll.SaveChanges();

                            trans.Complete();

                            this.AddFlashMessage("Conta a pagar 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);
        }
        public ActionResult Pagar(ContaPagarVM 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("Pagar", "ContaPagar", _idUsuario));
                    using (var db = new Context())
                    {
                        using (var trans = new RP.DataAccess.RPTransactionScope(db))
                        {
                            var _contaPagar = model.GetContaPagar();

                            var _bll = new BLL.ContaPagarBLL(db, _idUsuario);
                            _bll.Pagar(_contaPagar);
                            if (model.flDiferenca == "Sim")
                            {
                                // Lança conta a pagar referente a diferença
                                var _diferenca = new ContaPagar
                                {
                                    idProjeto = model.Projeto != null ? model.Projeto.idProjeto : null,
                                    idFornecedor = _contaPagar.idFornecedor,
                                    parcela = _contaPagar.parcela,
                                    descricao = "Conta gerada da diferença. Valor original: " + model.valorConta + ". Valor pago: " + model.valorPago,
                                    vencimento = _contaPagar.vencimento,
                                    pagamento = _contaPagar.pagamento,
                                    valorConta = model.vlDiferenca ?? 0,
                                    situacao = ContaPagar.SITUACAO_AGUARDANDO_PAGAMENTO,
                                    flFormaPagamento = _contaPagar.flFormaPagamento,
                                    idCompra = _contaPagar.idCompra,
                                    idOrigem = _contaPagar.idOrigem == null ? _contaPagar.idContaPagar :_contaPagar.idOrigem
                                };
                                _bll.Insert(_diferenca);
                            }
                            var _caixaBLL = new BLL.CaixaBLL(db, _idUsuario);

                            _caixaBLL.Insert(new Caixa
                            {
                                ContaPagar = _contaPagar,
                                situacao = Caixa.CORENTE,
                                valor = (_contaPagar.valorPago.Value * -1),
                                descricao =  _contaPagar.descricao + " [" + model.Fornecedor.nome + "] " + (model.Projeto != null ? model.Projeto.descricao : ""),
                                dtLancamento = _contaPagar.pagamento.Value
                            });
                            _bll.SaveChanges();

                            trans.Complete();

                            this.AddFlashMessage("Conta a pagar 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);
        }