// QUITAR A PAGAR AND INSERT NEW SAIDA //------------------------------------------------------------------------------------------------------------ public long QuitarAPagar( objAPagar apagar, objMovimentacao saida, Action <int, decimal> ContaSldLocalUpdate, Action <int, decimal> SetorSldLocalUpdate) { AcessoDados dbTran = null; try { dbTran = new AcessoDados(); dbTran.BeginTransaction(); // Verifica CONTA SALDO ContaBLL cBLL = new ContaBLL(); decimal saldoAtual = cBLL.ContaSaldoGet((int)saida.IDConta, dbTran); if (Math.Abs(saida.MovValor) > saldoAtual) { throw new AppException("Não existe SALDO SUFICIENTE na conta para realizar esse débito...", 1); } // Verifica CONTA BLOQUEIO if (!cBLL.ContaDateBlockPermit((int)saida.IDConta, saida.MovData, dbTran)) { throw new AppException("A Data da Conta está BLOQUEADA nesta Data de Débito proposto...", 2); } // Inserir SAIDA saida.DescricaoOrigem = apagar.DespesaDescricao; long newID = new MovimentacaoBLL().InsertMovimentacao(saida, ContaSldLocalUpdate, SetorSldLocalUpdate, dbTran); saida.IDMovimentacao = newID; // Change APAGAR decimal DoValor = Math.Abs(saida.MovValor) - (saida.AcrescimoValor ?? 0); apagar.ValorAcrescimo += saida.AcrescimoValor ?? 0; apagar.ValorPago += DoValor; if (apagar.ValorPago >= apagar.APagarValor - apagar.ValorDesconto) { apagar.PagamentoData = saida.MovData; apagar.IDSituacao = 2; apagar.Situacao = "Quitada"; } // Update APAGAR UpdateAPagar(apagar, dbTran); dbTran.CommitTransaction(); return(newID); } catch (Exception ex) { dbTran.RollBackTransaction(); throw ex; } }
// INSERT DESPESA REALIZADA | GASTO | DESPESA QUITADA //------------------------------------------------------------------------------------------------------------ public long InsertDespesaRealizada( objDespesaComum despesa, objAPagar pagar, objMovimentacao saida, Action <int, decimal> ContaSldLocalUpdate, Action <int, decimal> SetorSldLocalUpdate, object dbTran = null) { bool IsTran = dbTran != null; try { // create transaction if (!IsTran) { dbTran = new AcessoDados(); } if (!IsTran) { ((AcessoDados)dbTran).BeginTransaction(); } // Verifica CONTA SALDO ContaBLL cBLL = new ContaBLL(); decimal saldoAtual = cBLL.ContaSaldoGet((int)saida.IDConta, dbTran); if (saida.MovValor > saldoAtual) { throw new AppException("Não existe SALDO SUFICIENTE na conta para realizar esse débito...", 1); } // Verifica CONTA BLOQUEIO if (!cBLL.ContaDateBlockPermit((int)saida.IDConta, saida.MovData, dbTran)) { throw new AppException("A Data da Conta está BLOQUEADA nesta Data de Débito proposto...", 2); } // create APagar list List <objAPagar> listPag = new List <objAPagar>(); listPag.Add(pagar); // insert Despesa AND APagar despesa.IDSituacao = 2; // quitada long newID = InsertDespesaComum(despesa, ref listPag, dbTran); // insert Saida saida.MovTipo = 2; saida.Origem = EnumMovOrigem.APagar; saida.IDOrigem = (long)listPag[0].IDAPagar; saida.DescricaoOrigem = $"DESPESA: {despesa.DespesaDescricao}"; if (saida.DescricaoOrigem.Length > 250) { saida.DescricaoOrigem = saida.DescricaoOrigem.Substring(0, 250); } new MovimentacaoBLL().InsertMovimentacao(saida, ContaSldLocalUpdate, SetorSldLocalUpdate, dbTran); // commit and return if (!IsTran) { ((AcessoDados)dbTran).CommitTransaction(); } return(newID); } catch (Exception ex) { if (!IsTran) { ((AcessoDados)dbTran).RollBackTransaction(); } throw ex; } }