예제 #1
0
        // 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;
            }
        }
예제 #2
0
        // 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;
            }
        }