public ActionResult Create(AprovarVM model) { if (string.IsNullOrEmpty(model.Vendedor.nome)) { ModelState.AddModelError("Vendedor.nome", "Selecione um vendedor"); } if (string.IsNullOrEmpty(model.Cliente.nome)) { ModelState.AddModelError("Cliente.nome", "Selecione um cliente"); } if (ModelState.IsValid) { try { LogBLL.Insert(new LogDado("Create", "Projeto", _idUsuario)); using (var db = new Context()) { using (var trans = new RP.DataAccess.RPTransactionScope(db)) { var _projeto = model.GetProjeto(); var _bll = new BLL.ProjetoBLL(db, _idUsuario); _bll.Insert(_projeto); _bll.SaveChanges(); trans.Complete(); model.idProjeto = _projeto.idProjeto; this.AddFlashMessage(RP.Util.Resource.Message.INSERT_SUCCESS, 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 Aprovar(AprovarVM model) { if (ModelState.IsValid) { try { LogBLL.Insert(new LogDado("Aprovar", "Projeto", _idUsuario)); using (var db = new Context()) { using (var trans = new RP.DataAccess.RPTransactionScope(db)) { var _projeto = model.GetProjeto(); var _bll = new BLL.ProjetoBLL(db, _idUsuario); if (_projeto.status == Projeto.VENDIDO) { var _movimentoBLL = new MovimentoProfissionalBLL(db, _idUsuario); var _contaBLL = new ContaReceberBLL(db, _idUsuario); int nrParcelas = model.Parcelas.Count; foreach (var item in model.Parcelas) { //comissao do vendedor _movimentoBLL.Insert(new MovimentoProfissional { tipo = MovimentoProfissional.TIPO_COMISSAO, idFuncionario = model.Vendedor.idFuncionario ?? 0, valor = ((model.porcentagemVendedor / 100) * item.vlParcela), idProjeto = _projeto.idProjeto, situacao = MovimentoProfissional.SITUACAO_PENDENTE, descricao = "Comissão referente a " + item.nrParcela + "º parcela do projeto " + _projeto.descricao, dtVencimento = item.dtVencimento }); foreach (var produto in _projeto.Produtos) { decimal vlParcela = (produto.vlVenda ?? 0) / nrParcelas; //comissao do projetista _movimentoBLL.Insert(new MovimentoProfissional { tipo = MovimentoProfissional.TIPO_COMISSAO, idFuncionario = produto.idProjetista ?? 0, valor = (((produto.porcentagemProjetista ?? 0) / 100) * vlParcela), idProjeto = _projeto.idProjeto, situacao = MovimentoProfissional.SITUACAO_PENDENTE, descricao = "Comissão referente a " + item.nrParcela + "º parcela do projeto " + _projeto.descricao + " [" + produto.nome + "]", dtVencimento = item.dtVencimento }); //comissao do marceneiro _movimentoBLL.Insert(new MovimentoProfissional { tipo = MovimentoProfissional.TIPO_COMISSAO, idFuncionario = produto.idMarceneiro ?? 0, valor = (((produto.porcentagemMarceneiro ?? 0) / 100) * vlParcela), idProjeto = _projeto.idProjeto, situacao = MovimentoProfissional.SITUACAO_PENDENTE, descricao = "Comissão referente a " + item.nrParcela + "º parcela do projeto " + _projeto.descricao + " [" + produto.nome + "]", dtVencimento = item.dtVencimento }); } string situacao = ContaReceber.SITUACAO_AGUARDANDO_PAGAMENTO; decimal? vlPago = null; DateTime? dtPagamento = null; if (item.dtVencimento <= DateTime.Now.Date) { vlPago = item.vlParcela; situacao = ContaReceber.SITUACAO_PAGO; dtPagamento = item.dtVencimento; } // Lança conta a receber referente a parcela var _conta = new ContaReceber { idCliente = _projeto.idCliente, parcela = item.nrParcela, descricao = "Conta a receber referente a " + item.nrParcela + "º parcela do projeto " + _projeto.descricao + ". " + item.dsObservacao, vencimento = item.dtVencimento, pagamento = dtPagamento, valorConta = item.vlParcela, valorPago = vlPago, situacao = situacao, flFormaPagamento = item.flFormaPagamento, idProjeto = _projeto.idProjeto }; _contaBLL.Insert(_conta); //se a data de vencimento for a atual lança a entrada no caixa if (item.dtVencimento <= DateTime.Now.Date) { var _caixaBLL = new CaixaBLL(db, _idUsuario); _caixaBLL.Insert(new Caixa { ContaReceber = _conta, situacao = Caixa.CORENTE, valor = item.vlParcela, descricao = _conta.descricao + " [" +model.Cliente.nome + "] " + item.dsObservacao, dtLancamento = dtPagamento.Value }); } } } _bll.Aprovar(_projeto); _bll.SaveChanges(); trans.Complete(); this.AddFlashMessage("Projeto atualizado 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 Edit(AprovarVM model) { if (ModelState.IsValid) { try { LogBLL.Insert(new LogDado("Edit", "Projeto", _idUsuario)); using (var db = new Context()) { using (var trans = new RP.DataAccess.RPTransactionScope(db)) { var _projeto = model.GetProjeto(); var _bll = new BLL.ProjetoBLL(db, _idUsuario); _bll.Update(_projeto); _bll.SaveChanges(); trans.Complete(); this.AddFlashMessage(RP.Util.Resource.Message.EDIT_SUCCESS, FlashMessage.SUCCESS); return RedirectToAction("Index"); } } } catch (Exception ex) { Util.Entity.ErroLog.Add(ex, Session.SessionID, _idUsuario); return RedirectToAction("Index", "Erro", new { area = string.Empty }); } } return View(model); }
public ActionResult AddItem(AprovarVM model) { try { LogBLL.Insert(new LogDado("AddItem", "Projeto", _idUsuario)); using (var db = new Context()) { using (var trans = new RP.DataAccess.RPTransactionScope(db)) { var _bll = new BLL.ProjetoBLL(db, _idUsuario); var margemGanho = model.margemGanhoMaterial; var _projeto = _bll.FindSingle(e => e.idProjeto == model.idProjeto, u => u.Cliente, u => u.Vendedor, u => u.Produtos, u => u.ProjetoCustos, u => u.Produtos.Select(l => l.ProdutoMateriais), u => u.Produtos.Select(k => k.Marceneiro), u => u.Produtos.Select(k => k.Projetista)); model = AprovarVM.GetProjeto(_projeto); _projeto.vlProjeto = model.Produtos.Sum(u => u.vlProduto); _projeto.vlVenda = model.Produtos.Sum(u => u.vlVenda); _projeto.vlDesconto = model.Produtos.Sum(u => u.vlDesconto); foreach (var item in _projeto.Produtos) { item.vlVenda = model.Produtos.First(u => u.idProduto == item.idProduto).vlVenda; item.vlProduto = model.Produtos.First(u => u.idProduto == item.idProduto).vlProduto; item.vlDesconto = model.Produtos.First(u => u.idProduto == item.idProduto).vlDesconto; } _bll.Aprovar(_projeto); _bll.SaveChanges(); if (margemGanho != null) { _bll.AlterarMargemGanhoMaterial(margemGanho.Value, model.idProjeto); } _bll.SaveChanges(); model = AprovarVM.GetProjeto(_projeto); _projeto.vlProjeto = model.Produtos.Sum(u => u.vlProduto); _projeto.vlVenda = model.Produtos.Sum(u => u.vlVenda); _projeto.vlDesconto = model.Produtos.Sum(u => u.vlDesconto); foreach (var item in _projeto.Produtos) { item.vlVenda = model.Produtos.First(u => u.idProduto == item.idProduto).vlVenda; item.vlProduto = model.Produtos.First(u => u.idProduto == item.idProduto).vlProduto; item.vlDesconto = model.Produtos.First(u => u.idProduto == item.idProduto).vlDesconto; } _bll.Aprovar(_projeto); _bll.SaveChanges(); trans.Complete(); this.AddFlashMessage("Projeto atualizado 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 }); } }
public static AprovarVM GetProjeto(Sistema.Model.Entities.Projeto model) { var _result = new AprovarVM { descricao = model.descricao, idProjeto = model.idProjeto, status = model.status, dtInicio = model.dtInicio, dtFim = model.dtFim, Cliente = Models.Cliente.Consultar.GetModel(model.Cliente), Vendedor = Models.Funcionario.Consultar.GetModel(model.Vendedor), Produtos = ProdutoVM.GetProdutos(model.Produtos, model.Compras.ToList()), porcentagemVendedor = model.porcentagemVendedor ?? (model.Vendedor.comissao ?? 0), vlCustos = model.ProjetoCustos.Sum(u => u.valor) }; return _result; }