Exemplo n.º 1
0
        public static ContaReceberVM GetContaReceber(Sistema.Model.Entities.ContaReceber model)
        {
            var _result = new ContaReceberVM
            {
                idOrigem = model.idOrigem,
                idContaReceber = model.idContaReceber,
                idCompra = model.idCompra,
                Cliente = RP.Sistema.Web.Models.Cliente.Consultar.GetModel(model.Cliente),
                Projeto = RP.Sistema.Web.Models.Projeto.Consultar.GetModel(model.Projeto),
                descricao = model.descricao,
                flFormaPagamento = model.flFormaPagamento,
                vencimento = model.vencimento,
                pagamento = model.pagamento,
                valorConta = model.valorConta,
                valorPago = model.valorPago,
            };

            return _result;
        }
        public ActionResult Create(ContaReceberVM model)
        {
            if (string.IsNullOrEmpty(model.Cliente.nome))
            {
                ModelState.AddModelError("Cliente.nome", "Informe o cliente");
            }
            if (ModelState.IsValid)
            {
                try
                {
                    LogBLL.Insert(new LogDado("Create", "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);
                            //bool receber = _contaReceber.vencimento.Date <= DateTime.Now.Date;
                            //_contaReceber.situacao = receber ? ContaReceber.SITUACAO_PAGO : ContaReceber.SITUACAO_AGUARDANDO_PAGAMENTO;
                            //_contaReceber.pagamento = receber ? (DateTime?)_contaReceber.vencimento : null;
                            //_contaReceber.valorPago = receber ? (decimal?)_contaReceber.valorConta : null;
                            _contaReceber.situacao = ContaReceber.SITUACAO_AGUARDANDO_PAGAMENTO;
                            _bll.Insert(_contaReceber);
                            //if (receber)
                            //{
                            //    var _caixaBLL = new BLL.CaixaBLL(db, _idUsuario);

                            //    _caixaBLL.Insert(new Caixa
                            //    {
                            //        ContaReceber = _contaReceber,
                            //        situacao = Caixa.CORENTE,
                            //        valor = (model.valorConta.Value),
                            //        descricao = "Conta recebida de " + model.Cliente.nome + " " + model.descricao,
                            //        dtLancamento = DateTime.Now
                            //    });
                            //}
                            _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);
        }
        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);
        }