public ActionResult Create(int idProjeto) { try { using (var db = new Context()) { var _bll = new BLL.ProjetoBLL(db, _idUsuario); var _projeto = _bll.FindSingle(e => e.idProjeto == idProjeto, u => u.Cliente, u => u.Produtos.Select(k => k.ProdutoMateriais.Select(j => j.Material)), u => u.Compras.Select(k => k.Fornecedor), u => u.Compras.Select(k => k.ItensCompra.Select(j => j.Material))); var _result = new CompraVM { Projeto = RP.Sistema.Web.Models.Projeto.Consultar.GetModel(_projeto), Itens = CompraVM.ItemCompraVM.GetItens(_projeto.Produtos.ToList()), Materiais = CompraVM.ItemCompraVM.GetItens(_projeto.Compras.ToList()) }; return View(_result); } } catch (Exception ex) { RP.Util.Entity.ErroLog.Add(ex, Session.SessionID, _idUsuario); return RedirectToAction("Index", "Erro", new { area = string.Empty }); } }
public static CompraVM GetCompra(Sistema.Model.Entities.Compra model) { var _result = new CompraVM { descricao = model.descricao, idCompra = model.idCompra, total = model.total, Parcelas = Parcela.GetParcelas(model.ContasPagar.ToList()), Projeto = Models.Projeto.Consultar.GetModel(model.Projeto), Fornecedor = Models.Fornecedor.Consultar.GetModel(model.Fornecedor) }; return _result; }
public ActionResult Vulso(CompraVM model) { if (string.IsNullOrEmpty(model.Fornecedor.nome)) { ModelState.AddModelError("Fornecedor.nome", "Informe o fornecedor"); } if (model.total <= 0) { ModelState.AddModelError("total", "Informe o total"); } if (ModelState.IsValid) { try { LogBLL.Insert(new LogDado("Vulso", "Compra", _idUsuario)); using (var db = new Context()) { using (var trans = new RP.DataAccess.RPTransactionScope(db)) { var _compra = model.GetCompra(); var _bll = new BLL.CompraBLL(db, _idUsuario); _bll.Insert(_compra); var _contaBLL = new ContaPagarBLL(db, _idUsuario); var _caixaBLL = new CaixaBLL(db, _idUsuario); if (model.Parcelas != null && model.Parcelas.Any()) { int nrParcelas = model.Parcelas.Count; foreach (var item in model.Parcelas) { string situacao = ContaPagar.SITUACAO_AGUARDANDO_PAGAMENTO; decimal? vlPago = null; DateTime? dtPagamento = null; if (item.dtVencimento <= DateTime.Now.Date) { vlPago = item.vlParcela; situacao = ContaPagar.SITUACAO_PAGO; dtPagamento = item.dtVencimento; } // Lança conta a pagar referente a parcela var _conta = new ContaPagar { idFornecedor = _compra.idFornecedor, parcela = item.nrParcela, descricao = "Conta a pagar referente a " + item.nrParcela + "º parcela. " + item.dsObservacao, vencimento = item.dtVencimento, pagamento = dtPagamento, valorConta = item.vlParcela, valorPago = vlPago, situacao = situacao, flFormaPagamento = item.flFormaPagamento, Compra = _compra }; _contaBLL.Insert(_conta); //se a data de vencimento for a atual lança a entrada no caixa if (item.dtVencimento <= DateTime.Now.Date) { _caixaBLL.Insert(new Caixa { ContaPagar = _conta, situacao = Caixa.CORENTE, valor = (item.vlParcela * -1), descricao = _compra.descricao + " [" + model.Fornecedor.nome + "] " + item.dsObservacao, dtLancamento = item.dtVencimento }); } } } else { var _conta = new ContaPagar { idFornecedor = _compra.idFornecedor, parcela = 1, descricao = "Conta a pagar referente a " + model.descricao + " [Fornecedor:" + model.Fornecedor.nome + "] ", vencimento = DateTime.Now, pagamento = DateTime.Now, valorConta = model.total, valorPago = model.total, situacao = ContaPagar.SITUACAO_PAGO, flFormaPagamento = string.Empty, Compra = _compra }; _contaBLL.Insert(_conta); _caixaBLL.Insert(new Caixa { ContaPagar = _conta, situacao = Caixa.CORENTE, valor = (model.total * -1), descricao = model.descricao + " [" + model.Fornecedor.nome + "] " + model.descricao, dtLancamento = DateTime.Now }); } _bll.SaveChanges(); trans.Complete(); this.AddFlashMessage("Compra realizada com sucesso!", FlashMessage.SUCCESS); return RedirectToAction("Index", "Compra"); } } } catch (Exception ex) { RP.Util.Entity.ErroLog.Add(ex, Session.SessionID, _idUsuario); return RedirectToAction("Index", "Erro", new { area = string.Empty }); } } return View(model); }