public ActionResult Pagar(PagarVM model) { if (ModelState.IsValid) { try { LogBLL.Insert(new LogDado("Pagar", "FolhaPagamento", _idUsuario)); using (var db = new Context()) { using (var trans = new RP.DataAccess.RPTransactionScope(db)) { var _bll = new BLL.FolhaPagamentoBLL(db, _idUsuario); var _folha = _bll.FindSingle(u => u.idFolhaPagamento == model.idFolha); _folha.situacao = FolhaPagamento.PAGO; _folha.total = model.totalReceber ?? 0; if (model.Movimentos != null) { _folha.comissao = model.Movimentos.Sum(u => u.comissao) ?? 0; _folha.vale = model.Movimentos.Sum(u => u.vale) ?? 0; } _folha.salario = model.salario ?? 0; _folha.bonificacao = model.bonificacao ?? 0; _folha.outrosDescontos = model.outrosDescontos ?? 0; _folha.dsBonificacao = string.IsNullOrEmpty(model.dsBonificacao) ? "Bonificação referente ao mês de " + model.dsMes : model.dsBonificacao; _folha.dsOutrosDescontos = string.IsNullOrEmpty(model.dsOutrosDescontos) ? "Descontos adicionais referente ao mês de " + model.dsMes : model.dsOutrosDescontos; _folha.inss = model.inss ?? 0; _folha.FGTS = model.FGTS ?? 0; _folha.horaExtra = model.horaExtra ?? 0; _bll.Update(_folha); //realizar pagamento e retirada do caixa var _caixaBLL = new BLL.CaixaBLL(db, _idUsuario); var _conta = new ContaPagar { descricao = "Pagamento realizado para " + model.Funcionario.nome + " referente ao mes " + model.dsMes + " de " + model.nrAno, valorConta = _folha.total, valorPago = _folha.total, vencimento = DateTime.Now, pagamento = DateTime.Now, parcela = 1, flFormaPagamento = "Dinheiro", situacao = ContaPagar.SITUACAO_PAGO, idUsuario = this._idUsuario, idFolhaPagamento = model.idFolha }; var _caixa = new Caixa { ContaPagar = _conta, situacao = Caixa.CORENTE, valor = (_folha.total * -1), descricao = "Pagamento realizado para " + model.Funcionario.nome + " referente ao mes " + model.dsMes + " de " + model.nrAno, dtLancamento = DateTime.Now }; _caixaBLL.Insert(_caixa); // atualiza os movimentos if (model.Movimentos != null) { var _movimentoBLL = new MovimentoProfissionalBLL(db, _idUsuario); foreach (var item in model.Movimentos) { _movimentoBLL.AtualizaMovimento(item.idMovimento, MovimentoProfissional.SITUACAO_PAGO, _folha); } } _bll.SaveChanges(); trans.Complete(); this.AddFlashMessage("Pagamento reaizado com sucesso, verifique contas a pagar!", 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 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 Create(FolhaVM model) { if (ModelState.IsValid) { try { LogBLL.Insert(new LogDado("Create", "FolhaPagamento", _idUsuario)); using (var db = new Context()) { using (var trans = new RP.DataAccess.RPTransactionScope(db)) { var _bll = new CartaoPontoBLL(db, _idUsuario); var _movimentoBLL = new MovimentoProfissionalBLL(db, _idUsuario); var _folhaBLL = new FolhaPagamentoBLL(db, _idUsuario); foreach (var item in model.Pontos) { var cartao = new CartaoPonto { dsObservacao = item.dsObservacao, entradaExtra = string.IsNullOrEmpty(item.entradaExtra) ? null : (TimeSpan?)TimeSpan.Parse(item.entradaExtra + ":00"), entradaManha = string.IsNullOrEmpty(item.entradaManha) ? null : (TimeSpan?)TimeSpan.Parse(item.entradaManha + ":00"), entraTarde = string.IsNullOrEmpty(item.entraTarde) ? null : (TimeSpan?)TimeSpan.Parse(item.entraTarde + ":00"), saidaExtra = string.IsNullOrEmpty(item.saidaExtra) ? null : (TimeSpan?)TimeSpan.Parse(item.saidaExtra + ":00"), saidaManha = string.IsNullOrEmpty(item.saidaManha) ? null : (TimeSpan?)TimeSpan.Parse(item.saidaManha + ":00"), saidaTarde = string.IsNullOrEmpty(item.saidaTarde) ? null : (TimeSpan?)TimeSpan.Parse(item.saidaTarde + ":00"), flSituacao = item.flSituacao, idFuncionario = model.Funcionario.idFuncionario ?? 0, dtPonto = new DateTime(model.nrAno, item.nrMes, item.nrDia), }; _bll.Insert(cartao); } if (model.Comissoes != null) { foreach (var item in model.Comissoes) { _movimentoBLL.AtualizaMovimento(item.idMovimento, MovimentoProfissional.SITUACAO_AGUARDANDO_PAGAMENTO); } } var folha = new FolhaPagamento { idFuncionario = model.Funcionario.idFuncionario ?? 0, nrAno = model.nrAno, nrMes = model.nrMes, situacao = FolhaPagamento.AGUARDANDO_PAGAMENTO }; _folhaBLL.Insert(folha); _bll.SaveChanges(); trans.Complete(); this.AddFlashMessage("Folha de pagamento gerada com sucesso!", 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); }