예제 #1
0
        // DELETE
        //------------------------------------------------------------------------------------------------------------
        public bool DeleteContribuicao(long IDContribuicao,
                                       Action <int, decimal> ContaSdlUpdate,
                                       Action <int, decimal> SetorSdlUpdate)
        {
            AcessoDados dbTran = null;

            try
            {
                dbTran = new AcessoDados();
                dbTran.BeginTransaction();

                // 1 - CHECK AReceber and Entradas
                //------------------------------------------------------------------------------------------------------------
                List <objAReceber>     listAReceber = new List <objAReceber>();
                List <objMovimentacao> listEntradas = new List <objMovimentacao>();

                if (!VerifyBeforeDelete(IDContribuicao, ref listAReceber, ref listEntradas, dbTran))
                {
                    return(false);
                }

                // 2 - delete ALL ARECEBER
                //------------------------------------------------------------------------------------------------------------
                if (listAReceber.Count > 0)
                {
                    AReceberBLL rBLL = new AReceberBLL();

                    foreach (objAReceber receber in listAReceber)
                    {
                        rBLL.DeleteAReceber((long)receber.IDAReceber, dbTran);
                    }
                }

                // 3 - delete ALL MOVIMENTACAO ENTRADA
                //------------------------------------------------------------------------------------------------------------
                if (listEntradas.Count > 0)
                {
                    MovimentacaoBLL mBLL = new MovimentacaoBLL();
                    mBLL.DeleteMovimentacaoList(listEntradas, ContaSdlUpdate, SetorSdlUpdate, dbTran);
                }

                // 4 - delete CONTRIBUICAO
                //------------------------------------------------------------------------------------------------------------

                //--- clear Params
                dbTran.LimparParametros();

                //--- define Params
                dbTran.AdicionarParametros("@IDContribuicao", IDContribuicao);

                //--- convert null parameters
                dbTran.ConvertNullParams();

                //--- create query
                string query = "DELETE tblContribuicao WHERE IDContribuicao = @IDContribuicao";

                //--- DELETE
                dbTran.ExecutarManipulacao(CommandType.Text, query);

                //--- COMMIT AND RETURN
                dbTran.CommitTransaction();
                return(true);
            }
            catch (AppException ex)
            {
                dbTran.RollBackTransaction();
                throw ex;
            }
            catch (Exception ex)
            {
                dbTran.RollBackTransaction();
                throw ex;
            }
        }
예제 #2
0
        private bool VerifyBeforeDelete(long IDContribuicao,
                                        ref List <objAReceber> listAReceber,
                                        ref List <objMovimentacao> listEntradas,
                                        AcessoDados dbTran)
        {
            try
            {
                // GET ARECEBER
                //------------------------------------------------------------------------------------------------------------
                listAReceber = new AReceberBLL().GetListAReceberByIDContribuicao(IDContribuicao, dbTran);

                // VERIFY ARECEBER
                //------------------------------------------------------------------------------------------------------------
                bool   err        = false;
                string errMessage = "Os ARECEBER abaixo possuem recebimentos...\n";

                foreach (objAReceber receber in listAReceber)
                {
                    if (receber.IDSituacao == 2)
                    {
                        errMessage += $"Reg.: {receber.IDAReceber:D4}    {receber.CompensacaoData.ToShortDateString()}\n";
                        err         = true;
                    }
                }

                if (err == true)
                {
                    errMessage += "Favor estornar antes os recebimentos se deseja EXCLUIR a contribuição.";
                    throw new AppException(errMessage);
                }

                // VERIFY MOVIMENTACAO ENTRADA FROM CONTRIBUICAO
                //------------------------------------------------------------------------------------------------------------
                MovimentacaoBLL mBLL = new MovimentacaoBLL();
                listEntradas = mBLL.GetMovimentacaoListByOrigem(EnumMovOrigem.Contribuicao, IDContribuicao, false, dbTran);

                // VERIFY MOVIMENTACAO ENTRADA FROM ARECEBER
                //------------------------------------------------------------------------------------------------------------
                if (listAReceber.Count > 0)
                {
                    foreach (objAReceber receber in listAReceber)
                    {
                        listEntradas.AddRange(mBLL.GetMovimentacaoListByOrigem(EnumMovOrigem.AReceber, (long)receber.IDAReceber, false, dbTran));
                    }
                }

                // VERIFY RECEBIMENTOS WITH CAIXA OR BLOCKED
                //------------------------------------------------------------------------------------------------------------
                errMessage = "Essa Contribuição possui entradas que foram inseridas no caixa...\n";

                foreach (objMovimentacao entrada in listEntradas)
                {
                    if (entrada.IDCaixa != null)
                    {
                        errMessage += $"Reg.: {entrada.IDMovimentacao:D4} | {entrada.MovData.ToShortDateString()} | Caixa: {entrada.IDCaixa:D4}\n";
                        err         = true;
                    }
                }

                if (err == true)
                {
                    errMessage += "Favor remover o(s) caixa(s) se desejar EXCLUIR a(s) contribuição.";
                    throw new AppException(errMessage);
                }

                return(true);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
예제 #3
0
        // INSERT
        //------------------------------------------------------------------------------------------------------------
        public long InsertContribuicao(
            objContribuicao cont,
            Action <int, decimal> ContaSldLocalUpdate,
            Action <int, decimal> SetorSldLocalUpdate,
            object forma = null)
        {
            AcessoDados     db       = new AcessoDados();
            long?           newID    = null;
            long?           newMovID = null;
            objMovimentacao entrada  = null;

            try
            {
                db.BeginTransaction();

                //--- Check Conta Bloqueio
                if (!new ContaBLL().ContaDateBlockPermit(cont.IDConta, cont.ContribuicaoData, db))
                {
                    throw new AppException("A Data da Conta está BLOQUEADA nesta Data de Crédito proposta...", 2);
                }

                switch (cont.IDEntradaForma)
                {
                case 1:                         // DINHEIRO

                    //--- Insert Contribuicao
                    cont.Realizado     = true;
                    cont.ValorRecebido = cont.ValorBruto;
                    newID = AddContribuicao(cont, db);

                    //--- Create NEW Entrada
                    entrada = new objMovimentacao(null)
                    {
                        MovTipo         = 1,
                        IDConta         = cont.IDConta,
                        IDSetor         = cont.IDSetor,
                        IDOrigem        = (long)newID,
                        Origem          = EnumMovOrigem.Contribuicao,
                        MovData         = cont.ContribuicaoData,
                        MovValor        = cont.ValorBruto,
                        Consolidado     = true,
                        DescricaoOrigem = "CONTRIBUIÇÃO: " + cont.OrigemDescricao,
                    };

                    //--- Insert MOVIMENTACAO Entrada
                    new MovimentacaoBLL().InsertMovimentacao(entrada, ContaSldLocalUpdate, SetorSldLocalUpdate, db);

                    break;

                case 2:                         // CHEQUE

                    if (forma == null || forma.GetType() != typeof(objContribuicaoCheque))
                    {
                        throw new Exception("Não há registro de informação do cheque...");
                    }

                    //--- Insert Contribuicao
                    cont.Realizado     = false;
                    cont.ValorRecebido = 0;
                    newID = AddContribuicao(cont, db);
                    cont.IDContribuicao = newID;

                    //--- Insert ContribuicaoCheque
                    objContribuicaoCheque cheque = (objContribuicaoCheque)forma;

                    cheque.IDContribuicao = newID;
                    AddContribuicaoCheque(cheque, db);

                    //--- Create NEW MOVIMENTACAO ENTRADA
                    entrada = new objMovimentacao(null)
                    {
                        MovTipo         = 1,
                        IDConta         = cont.IDConta,
                        IDSetor         = cont.IDSetor,
                        IDOrigem        = (long)newID,
                        Origem          = EnumMovOrigem.Contribuicao,
                        MovData         = cont.ContribuicaoData,
                        MovValor        = cont.ValorBruto,
                        Consolidado     = false,
                        DescricaoOrigem = $"CONTRIBUIÇÃO: Cheque no. {cheque.ChequeNumero} {cheque.Banco}",
                    };

                    //--- Insert MOVIMENTACAO Entrada
                    newMovID = new MovimentacaoBLL().InsertMovimentacao(entrada, ContaSldLocalUpdate, SetorSldLocalUpdate, db);

                    //--- Create AReceber
                    var areceber = new objAReceber(null)
                    {
                        CompensacaoData   = cheque.DepositoData,
                        IDContaProvisoria = cont.IDConta,
                        IDContribuicao    = (long)cont.IDContribuicao,
                        IDSituacao        = 1,
                        Situacao          = "Em Aberto",
                        ValorBruto        = cont.ValorBruto,
                        ValorLiquido      = cont.ValorBruto,
                        ValorRecebido     = 0,
                        IDMovProvisoria   = (long)newMovID,
                    };

                    //--- Insert AReceber Parcela
                    new AReceberBLL().InsertAReceber(areceber, db);

                    break;

                case 3:                         // CARTAO

                    if (forma == null || forma.GetType() != typeof(objContribuicaoCartao))
                    {
                        throw new Exception("Não há registro de informação do cartão...");
                    }

                    //--- Check Conta Bloqueio
                    objContribuicaoCartao cartao = (objContribuicaoCartao)forma;

                    if (!new ContaBLL().ContaDateBlockPermit(cartao.IDContaProvisoria, cont.ContribuicaoData, db))
                    {
                        throw new AppException("A Data da Conta está BLOQUEADA nesta Data de Crédito proposta...", 2);
                    }

                    //--- Insert Contribuicao
                    cont.Realizado     = false;
                    cont.ValorRecebido = 0;
                    newID = AddContribuicao(cont, db);
                    cont.IDContribuicao = newID;

                    //--- Insert ContribuicaoCartao
                    cartao.IDContribuicao = newID;
                    AddContribuicaoCartao(cartao, db);

                    //--- Insert ListOf AReceber
                    var listAReceber = new List <objAReceber>();

                    int parcelas = cartao.Parcelas == 0 ? 1 : cartao.Parcelas;

                    // create PARCELAS
                    for (int i = 0; i < parcelas; i++)
                    {
                        var parcela = new objAReceber(null)
                        {
                            CompensacaoData   = cont.ContribuicaoData.AddDays(cartao.Prazo * (i + 1)),
                            IDContaProvisoria = cartao.IDContaProvisoria,
                            IDContribuicao    = (long)cont.IDContribuicao,
                            IDSituacao        = 1,
                            Situacao          = "Em Aberto",
                            ValorBruto        = cont.ValorBruto / parcelas,
                            ValorLiquido      = (cont.ValorBruto / parcelas) * (100 - cartao.TaxaAplicada) / 100,
                            ValorRecebido     = 0
                        };

                        listAReceber.Add(parcela);
                    }

                    var rBLL = new AReceberBLL();
                    var mBLL = new MovimentacaoBLL();

                    int numParcela = 1;

                    //--- Insert ListOf AReceber Parcelas
                    foreach (var parcela in listAReceber)
                    {
                        //--- Create NEW MOVIMENTACAO Entrada
                        entrada = new objMovimentacao(null)
                        {
                            MovTipo     = 1,
                            IDConta     = parcela.IDContaProvisoria,
                            IDSetor     = cont.IDSetor,
                            IDOrigem    = (long)newID,
                            Origem      = EnumMovOrigem.Contribuicao,
                            MovData     = cont.ContribuicaoData,
                            MovValor    = parcela.ValorBruto,
                            Consolidado = false,
                        };

                        //--- define descricao origem of movimentacao
                        if (cartao.Parcelas == 0)
                        {
                            entrada.DescricaoOrigem = $"CONTRIBUIÇÃO: Cartão de Débito {cartao.CartaoBandeira}";
                        }
                        else if (cartao.Parcelas == 1)
                        {
                            entrada.DescricaoOrigem = $"CONTRIBUIÇÃO: Cartão de Crédito {cartao.CartaoBandeira}";
                        }
                        else
                        {
                            entrada.DescricaoOrigem = $"CONTRIBUIÇÃO: Cartão Parcelado {cartao.CartaoBandeira} parcela {numParcela:D2}";
                        }

                        //--- add Parcela
                        numParcela += 1;

                        //--- Insert Entrada
                        newMovID = mBLL.InsertMovimentacao(entrada, ContaSldLocalUpdate, SetorSldLocalUpdate, db);

                        //--- Insert AReceber
                        parcela.IDMovProvisoria = (long)newMovID;
                        rBLL.InsertAReceber(parcela, db);
                    }

                    break;

                default:
                    break;
                }

                if (newID == 0)
                {
                    throw new Exception("Não foi possível inserir um novo registro de Contribuição...");
                }

                db.CommitTransaction();
                return((long)newID);
            }
            catch (Exception ex)
            {
                db.RollBackTransaction();
                throw ex;
            }
        }