Ejemplo n.º 1
0
        // INSERT ENTRADA | ARECEBER CHEQUE
        //------------------------------------------------------------------------------------------------------------
        private objAReceber insertAReceberCheque(
            objAReceber receber,
            objMovimentacao entrada,
            Action <int, decimal> contaSaldoUpdate,
            AcessoDados dbTran)
        {
            // create TRANSFER SAIDA
            objMovimentacao transfSaida = new objMovimentacao(null)
            {
                MovTipo         = 3,                      // TRANSFERENCIA
                Origem          = EnumMovOrigem.AReceber, // tblAReceber
                IDOrigem        = (long)receber.IDAReceber,
                IDConta         = receber.IDContaProvisoria,
                IDSetor         = null,
                MovData         = entrada.MovData,
                MovValor        = entrada.MovValor * (-1),
                DescricaoOrigem = "TRANSFERÊNCIA: Depósito de Cheque",
            };

            // create TRANSFER ENTRADA
            objMovimentacao transfEntrada = new objMovimentacao(null)
            {
                MovTipo         = 3,                      // TRANSFERENCIA
                Origem          = EnumMovOrigem.AReceber, // tblAReceber
                IDOrigem        = (long)receber.IDAReceber,
                IDConta         = entrada.IDConta,
                IDSetor         = null,
                MovData         = entrada.MovData,
                MovValor        = entrada.MovValor,
                DescricaoOrigem = "TRANSFERÊNCIA: Compensação de Cheque",
            };

            try
            {
                MovimentacaoBLL mBLL = new MovimentacaoBLL();

                // Update FIRST Entrada: CONSOLIDADO = TRUE
                mBLL.UpdateConsolidado(receber.IDMovProvisoria, true, dbTran);

                // Insert transf saida
                mBLL.InsertMovimentacao(transfSaida, contaSaldoUpdate, null, dbTran);

                // Insert transf entrada
                mBLL.InsertMovimentacao(transfEntrada, contaSaldoUpdate, null, dbTran);

                // update AReceber
                UpdateAReceber(receber, dbTran);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return(receber);
        }
        // INSERT TRANSFERENCIA SETOR
        //------------------------------------------------------------------------------------------------------------
        public long InsertTransferenciaSetor(objTransfSetor Transf, Action <int, decimal> SetorSdlUpdate)
        {
            AcessoDados db = null;

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

                //--- 1. INSERT TRANSF SETOR
                //------------------------------------------------------------------------------------------------------------

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

                //--- params
                db.AdicionarParametros("@IDSetorEntrada", Transf.IDSetorEntrada);
                db.AdicionarParametros("@IDSetorSaida", Transf.IDSetorSaida);
                db.AdicionarParametros("@Descricao", Transf.Descricao);
                db.AdicionarParametros("@TransfData", Transf.TransfData);
                db.AdicionarParametros("@TransfValor", Transf.TransfValor);

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

                //--- create insert string
                string query = db.CreateInsertSQL("tblTransfSetor");

                //--- insert and Get new ID
                long newID = db.ExecutarInsertAndGetID(query);

                //--- 2. INSERT TRANSF ENTRADA
                //------------------------------------------------------------------------------------------------------------

                MovimentacaoBLL mBLL = new MovimentacaoBLL();

                //--- create transferencia de entrada
                objMovimentacao entrada = new objMovimentacao(null)
                {
                    IDSetor         = Transf.IDSetorEntrada,
                    IDCaixa         = null,
                    IDConta         = null,
                    Origem          = EnumMovOrigem.TransfSetor,
                    IDOrigem        = newID,
                    MovData         = Transf.TransfData,
                    MovValor        = Transf.TransfValor,
                    DescricaoOrigem = $"TRANSFERÊNCIA: entrada de {Transf.SetorSaida}",
                };

                //--- execute INSERT ENTRADA MOVIMENTACAO
                mBLL.InsertMovimentacao(entrada, SetorSdlUpdate, null, db);

                //--- 3. INSERT TRANSF SAIDA
                //------------------------------------------------------------------------------------------------------------

                //--- create transferencia de entrada
                objMovimentacao saida = new objMovimentacao(null)
                {
                    IDSetor         = Transf.IDSetorSaida,
                    IDCaixa         = null,
                    IDConta         = null,
                    Origem          = EnumMovOrigem.TransfSetor,
                    IDOrigem        = newID,
                    MovData         = Transf.TransfData,
                    MovValor        = Transf.TransfValor * (-1),
                    DescricaoOrigem = $"TRANSFERÊNCIA: saída para {Transf.SetorEntrada}",
                };

                //--- execute INSERT SAIDA MOVIMENTACAO
                mBLL.InsertMovimentacao(entrada, null, SetorSdlUpdate, db);

                //--- COMMIT and RETURN
                db.CommitTransaction();
                return(newID);
            }
            catch (Exception ex)
            {
                db.RollBackTransaction();
                throw ex;
            }
        }
Ejemplo n.º 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;
            }
        }