Exemplo n.º 1
0
        // UPDATE ARECEBER SITUACAO || VALOR LIQUIDO || COMPENSACAO DATA
        //------------------------------------------------------------------------------------------------------------
        public bool UpdateAReceber(objAReceber rec, object dbTran = null)
        {
            try
            {
                AcessoDados db = dbTran == null ? new AcessoDados() : (AcessoDados)dbTran;

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

                //--- define Params
                db.AdicionarParametros("@IDAReceber", rec.IDAReceber);
                db.AdicionarParametros("@IDSituacao", rec.IDSituacao);
                db.AdicionarParametros("@ValorLiquido", rec.ValorLiquido);
                db.AdicionarParametros("@ValorRecebido", rec.ValorRecebido);
                db.AdicionarParametros("@CompensacaoData", rec.CompensacaoData);

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

                //--- create query
                string query = db.CreateUpdateSQL("tblAReceber", "@IDAReceber");

                //--- update
                db.ExecutarManipulacao(CommandType.Text, query);

                return(true);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }
        //--- MENU VER ORIGEM
        //-------------------------------------------------------------------------------------------------------
        private void mnuItemVerOrigem_Click(object sender, EventArgs e)
        {
            //--- verifica se existe alguma cell
            if (dgvListagem.SelectedRows.Count == 0)
            {
                return;
            }

            //--- Get A Pagar on list
            objAReceber item = (objAReceber)dgvListagem.SelectedRows[0].DataBoundItem;

            try
            {
                // --- Ampulheta ON
                Cursor.Current = Cursors.WaitCursor;

                Contribuicao.frmContribuicao frm = new Contribuicao.frmContribuicao(item.IDContribuicao);
                Visible = false;
                frm.ShowDialog();
                DesativaMenuPrincipal();
                Visible = true;
            }
            catch (Exception ex)
            {
                AbrirDialog("Uma exceção ocorreu ao Abrir a Contribuição..." + "\n" +
                            ex.Message, "Exceção", DialogType.OK, DialogIcon.Exclamation);
            }
            finally
            {
                // --- Ampulheta OFF
                Cursor.Current = Cursors.Default;
            }
        }
        //--- MENU ALTERAR ITEM
        //------------------------------------------------------------------------------------------------------------
        private void mnuItemAlterar_Click(object sender, EventArgs e)
        {
            //--- check selected item
            if (dgvListagem.SelectedRows.Count == 0)
            {
                AbrirDialog("Favor selecionar um registro para Alterar...",
                            "Selecionar Registro", DialogType.OK, DialogIcon.Information);
                return;
            }

            unCheckListagem();

            //--- get Selected item
            objAReceber item = (objAReceber)dgvListagem.SelectedRows[0].DataBoundItem;

            frmAReceberAlterar frm = new frmAReceberAlterar(item, this);

            frm.ShowDialog();

            if (frm.DialogResult != DialogResult.OK)
            {
                bindRec.CancelEdit();
            }
            else
            {
                bindRec.EndEdit();
                // save persist DB
                SalvarRegistro(item);
                CalculaTotais();
            }
        }
        // VERIFICA DADOS E EMITE MENSAGEM
        //------------------------------------------------------------------------------------------------------------
        private objAReceber CheckAlteraSituacao(string acao)
        {
            //--- verifica se existe alguma cell
            if (dgvListagem.SelectedRows.Count == 0)
            {
                return(null);
            }

            //--- verifica USER PERMIT
            if (!CheckAuthorization(EnumAcessoTipo.Usuario_Senior, $"{acao} a Receber", this))
            {
                return(null);
            }

            //--- Pergunta ao USER
            var resp = AbrirDialog($"Você deseja realmente {acao.ToUpper()} este registro de AReceber selecionado?",
                                   $"{acao} AReceber",
                                   DialogType.SIM_NAO, DialogIcon.Question, DialogDefaultButton.Second);

            if (resp == DialogResult.No)
            {
                return(null);
            }

            //--- Get A Pagar on list
            objAReceber item = (objAReceber)dgvListagem.SelectedRows[0].DataBoundItem;

            return(item);
        }
        // CALC CHECKED VALUES LABELS
        //------------------------------------------------------------------------------------------------------------
        private void dgvListagem_CellValueChanged(object sender, DataGridViewCellEventArgs e)
        {
            if (e.ColumnIndex == 0 && e.RowIndex >= 0)
            {
                var         row = dgvListagem.Rows[e.RowIndex];
                objAReceber pag = (objAReceber)row.DataBoundItem;

                if ((bool)row.Cells[0].Value == true)
                {
                    nItemsSelected      += 1;
                    _vlBrutoSelected    += pag.ValorBruto;
                    _vlRecebidoSelected += pag.ValorRecebido;
                    _vlLiquidoSelected  += pag.ValorLiquido;
                }
                else
                {
                    nItemsSelected      -= 1;
                    _vlBrutoSelected    -= pag.ValorBruto;
                    _vlRecebidoSelected -= pag.ValorRecebido;
                    _vlLiquidoSelected  -= pag.ValorLiquido;
                }

                CalculaTotaisSelected();
            }
        }
Exemplo n.º 6
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);
        }
Exemplo n.º 7
0
        // INSERT
        //------------------------------------------------------------------------------------------------------------
        public long InsertAReceber(objAReceber entrada, object dbTran = null)
        {
            AcessoDados db = dbTran == null ? new AcessoDados() : (AcessoDados)dbTran;

            try
            {
                if (dbTran == null)
                {
                    db.BeginTransaction();
                }

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

                //--- define Params
                db.AdicionarParametros("@CompensacaoData", entrada.CompensacaoData);
                db.AdicionarParametros("@IDContribuicao", entrada.IDContribuicao);
                db.AdicionarParametros("@ValorBruto", entrada.ValorBruto);
                db.AdicionarParametros("@ValorLiquido", entrada.ValorLiquido);
                db.AdicionarParametros("@ValorRecebido", 0);
                db.AdicionarParametros("@IDContaProvisoria", entrada.IDContaProvisoria);
                db.AdicionarParametros("@IDMovProvisoria", entrada.IDMovProvisoria);
                db.AdicionarParametros("@IDSituacao", 1);

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

                string query = db.CreateInsertSQL("tblAReceber");

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

                //--- altera o saldo da CONTA PROVISORIA
                //new ContaBLL().ContaSaldoChange(entrada.IDContaProvisoria, entrada.ValorBruto, db, ContaSldUpdate);

                if (dbTran == null)
                {
                    db.CommitTransaction();
                }
                return(newID);
            }
            catch (Exception ex)
            {
                if (dbTran == null)
                {
                    db.RollBackTransaction();
                }
                throw ex;
            }
        }
        //--- MENU ESTORNAR PAGAMENTOS
        //-------------------------------------------------------------------------------------------------------
        private void mnuItemEstornar_Click(object sender, EventArgs e)
        {
            //--- check selected item
            if (dgvListagem.SelectedRows.Count == 0)
            {
                AbrirDialog("Favor selecionar um registro para Estornar...",
                            "Selecionar Registro", DialogType.OK, DialogIcon.Information);
                return;
            }

            try
            {
                // --- Ampulheta ON
                Cursor.Current = Cursors.WaitCursor;

                objAReceber recItem = (objAReceber)dgvListagem.SelectedRows[0].DataBoundItem;

                var resp = AbrirDialog("Você deseja realmente ESTORNAR o recebimento do AReceber selecionado?",
                                       "Estornar Recebimento",
                                       DialogType.SIM_NAO,
                                       DialogIcon.Question,
                                       DialogDefaultButton.Second);

                if (resp != DialogResult.Yes)
                {
                    return;
                }

                //--- execute
                rBLL.estornaAReceber(recItem, ContaSaldoLocalUpdate, SetorSaldoLocalUpdate);
                //--- get Dados
                ObterDados();
                //--- message
                AbrirDialog("Recebimento estornado com sucesso!", "Estorno");
            }
            catch (Exception ex)
            {
                AbrirDialog("Uma exceção ocorreu ao ESTORNAR o Recebimento..." + "\n" +
                            ex.Message, "Exceção", DialogType.OK, DialogIcon.Exclamation);
            }
            finally
            {
                // --- Ampulheta OFF
                Cursor.Current = Cursors.Default;
            }
        }
        public frmAReceberAlterar(objAReceber pag, Form formOrigem)
        {
            InitializeComponent();
            _formOrigem = formOrigem;
            _areceber   = pag;

            bind.DataSource = _areceber;
            BindingCreator();

            HandlerKeyDownControl(this);
            _areceber.PropertyChanged += (a, b) => btnAlterar.Enabled = true;

            if (_areceber.IDEntradaForma != 3)
            {
                txtValorLiquido.KeyPress += (a, e) => e.Handled = true;
            }
        }
Exemplo n.º 10
0
        // ESTORNA ARECEBER
        //------------------------------------------------------------------------------------------------------------
        public objAReceber estornaAReceber(objAReceber receber,
                                           Action <int, decimal> contaSaldoUpdate,
                                           Action <int, decimal> setorSaldoUpdate)
        {
            AcessoDados db = null;

            // UPDATE CONSOLIDADO ENTRADA = FALSE
            // DELETE TRANSFER ENTRADA / SAIDA
            // DELETE COMISSAO SAIDA
            // UPDATE A RECEBER
            try
            {
                db = new AcessoDados();
                db.BeginTransaction();

                MovimentacaoBLL mBLL = new MovimentacaoBLL();

                // Update FIRST Entrada: CONSOLIDADO = FALSE
                mBLL.UpdateConsolidado(receber.IDMovProvisoria, false, db);

                // REMOVE transf saida entrada
                mBLL.DeleteMovsByOrigem(EnumMovOrigem.AReceber, (long)receber.IDAReceber, contaSaldoUpdate, setorSaldoUpdate, db);

                // UPDATE Contribuicao
                var cBLL = new ContribuicaoBLL();
                cBLL.UpdateValorRecebidoEstorno(receber.IDContribuicao, receber.ValorRecebido, db);

                // UPDATE AReceber
                receber.ValorRecebido = 0;
                receber.IDSituacao    = 1;
                receber.Situacao      = "Em Aberto";
                UpdateAReceber(receber, db);

                // COMMIT
                db.CommitTransaction();
            }
            catch (Exception ex)
            {
                db.RollBackTransaction();
                throw ex;
            }

            return(receber);
        }
Exemplo n.º 11
0
        // QUITAR A RECEBER LIST
        //------------------------------------------------------------------------------------------------------------
        public List <objAReceber> AReceberConsolidacaoList(
            List <objAReceber> listRec,
            List <objMovimentacao> entradas,
            Action <int, decimal> contaSaldoUpdate,
            Action <int, decimal> setorSaldoUpdate)
        {
            List <objAReceber> retorno = new List <objAReceber>();
            AcessoDados        db      = null;

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

                ContribuicaoBLL contBLL = new ContribuicaoBLL();

                foreach (objMovimentacao entrada in entradas)
                {
                    objAReceber receber = listRec.First(r => r.IDAReceber == entrada.IDOrigem);

                    if (receber.IDEntradaForma == 3)                     // IDEntradaForma : CARTAO
                    {
                        objAReceber newRec = insertAReceberCartao(receber, entrada, contaSaldoUpdate, setorSaldoUpdate, db);
                        retorno.Add(newRec);
                    }
                    else
                    {
                        objAReceber newRec = insertAReceberCheque(receber, entrada, contaSaldoUpdate, db);
                        retorno.Add(newRec);
                    }

                    // update Contribuicao
                    contBLL.UpdateValorRecebidoAndCheckRealizado(receber.IDContribuicao, entrada.MovValor, db);
                }

                db.CommitTransaction();
                return(retorno);
            }
            catch (Exception ex)
            {
                db.RollBackTransaction();
                throw ex;
            }
        }
        // PERSISTIR ALTERAR SITUACAO NO BD
        //------------------------------------------------------------------------------------------------------------
        private void SalvarRegistro(objAReceber rec)
        {
            try
            {
                // --- Ampulheta ON
                Cursor.Current = Cursors.WaitCursor;

                rBLL.UpdateAReceber(rec);
            }
            catch (Exception ex)
            {
                AbrirDialog("Uma exceção ocorreu ao Salvar a alteração do Registro..." + "\n" +
                            ex.Message, "Exceção", DialogType.OK, DialogIcon.Exclamation);
            }
            finally
            {
                // --- Ampulheta OFF
                Cursor.Current = Cursors.Default;
            }
        }
Exemplo n.º 13
0
        // CONVERT ROW IN CLASS
        //------------------------------------------------------------------------------------------------------------
        public objAReceber ConvertRowInClass(DataRow row)
        {
            objAReceber entrada = new objAReceber((long)row["IDAReceber"])
            {
                CompensacaoData   = (DateTime)row["CompensacaoData"],
                IDContribuicao    = (long)row["IDContribuicao"],
                ValorBruto        = (decimal)row["ValorBruto"],
                ValorLiquido      = (decimal)row["ValorLiquido"],
                ValorRecebido     = (decimal)row["ValorRecebido"],
                IDContaProvisoria = (int)row["IDContaProvisoria"],
                IDMovProvisoria   = (long)row["IDMovProvisoria"],
                Conta             = (string)row["Conta"],
                IDSituacao        = (byte)row["IDSituacao"],
                Situacao          = (string)row["Situacao"],
                IDEntradaForma    = (byte)row["IDEntradaForma"],
                EntradaForma      = (string)row["EntradaForma"],
                IDSetor           = row["IDSetor"] == DBNull.Value ? null : (int?)row["IDSetor"],
            };

            return(entrada);
        }
        //--- MENU NORMALIZAR
        //-------------------------------------------------------------------------------------------------------
        private void mnuItemNormalizar_Click(object sender, EventArgs e)
        {
            // check and ask to user
            objAReceber item = CheckAlteraSituacao("Normalizar");

            if (item == null)
            {
                return;
            }

            //--- EXECUTE
            try
            {
                // --- Ampulheta ON
                Cursor.Current = Cursors.WaitCursor;

                item.IDSituacao = 1;
                item.Situacao   = "Em Aberto";

                // save aPagar
                SalvarRegistro(item);

                // Confirm AND CalcTotais
                //--- update list
                bindRec.RemoveCurrent();
                CalculaTotais();
            }
            catch (Exception ex)
            {
                AbrirDialog("Uma exceção ocorreu ao Normalizar o a Pagar..." + "\n" +
                            ex.Message, "Exceção", DialogType.OK, DialogIcon.Exclamation);
            }
            finally
            {
                // --- Ampulheta OFF
                Cursor.Current = Cursors.Default;
            }
        }
        // CONTROLA AS CORES DA LISTAGEM
        //------------------------------------------------------------------------------------------------------------
        private void dgvListagem_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if (e.ColumnIndex == clnSituacao.Index)
            {
                objAReceber pagar = (objAReceber)dgvListagem.Rows[e.RowIndex].DataBoundItem;

                if (pagar.Situacao == "Vencida")
                {
                    dgvListagem.Rows[e.RowIndex].DefaultCellStyle.BackColor          = Color.MistyRose;
                    dgvListagem.Rows[e.RowIndex].DefaultCellStyle.SelectionBackColor = Color.Firebrick;
                    e.CellStyle.ForeColor          = Color.Red;
                    e.CellStyle.SelectionForeColor = Color.Yellow;
                }
                else
                {
                    if ((e.RowIndex + 1) % 2 != 0)                     // row ODD (impar)
                    {
                        dgvListagem.Rows[e.RowIndex].DefaultCellStyle.BackColor          = Color.OldLace;
                        dgvListagem.Rows[e.RowIndex].DefaultCellStyle.SelectionBackColor = SystemColors.Highlight;
                    }
                    else                     // row EVEN (par)
                    {
                        dgvListagem.Rows[e.RowIndex].DefaultCellStyle.BackColor          = Color.White;
                        dgvListagem.Rows[e.RowIndex].DefaultCellStyle.SelectionBackColor = SystemColors.Highlight;
                    }
                }
            }
            else if (e.ColumnIndex == clnCompensacaoData.Index)
            {
                objAReceber pagar = (objAReceber)dgvListagem.Rows[e.RowIndex].DataBoundItem;

                if (pagar.Situacao == "Vencida")
                {
                    e.CellStyle.ForeColor          = Color.Red;
                    e.CellStyle.SelectionForeColor = Color.Yellow;
                }
            }
        }
Exemplo n.º 16
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;
            }
        }
        private void dgvListagem_MouseDown(object sender, MouseEventArgs e)
        {
            // check button
            if (e.Button != MouseButtons.Right)
            {
                return;
            }

            Control c = (Control)sender;

            DataGridView.HitTestInfo hit = dgvListagem.HitTest(e.X, e.Y);
            dgvListagem.ClearSelection();

            if (hit.Type != DataGridViewHitTestType.Cell)
            {
                return;
            }

            // seleciona o ROW
            dgvListagem.SelectionMode = DataGridViewSelectionMode.FullRowSelect;
            dgvListagem.CurrentCell   = dgvListagem.Rows[hit.RowIndex].Cells[2];
            dgvListagem.Rows[hit.RowIndex].Selected = true;

            // mostra o MENU ativar e desativar
            objAReceber recItem = (objAReceber)dgvListagem.Rows[hit.RowIndex].DataBoundItem;

            // mnuVerPagamentos
            mnuItemEstornar.Enabled = recItem.ValorRecebido > 0;

            switch (recItem.IDSituacao)
            {
            case 1:                     // EM ABERTO
                mnuItemAlterar.Enabled    = true;
                mnuItemAlterar.Text       = "Alterar";
                mnuItemCancelar.Enabled   = true;
                mnuItemNormalizar.Enabled = false;
                mnuItemReceber.Enabled    = true;
                mnuItemEstornar.Enabled   = false;
                break;

            case 2:                     // RECEBIDAS
                mnuItemAlterar.Enabled    = false;
                mnuItemCancelar.Enabled   = false;
                mnuItemNormalizar.Enabled = false;
                mnuItemReceber.Enabled    = false;
                mnuItemEstornar.Enabled   = true;
                break;

            case 3:                     // CANCELADAS
                mnuItemAlterar.Enabled    = false;
                mnuItemCancelar.Enabled   = false;
                mnuItemNormalizar.Enabled = true;
                mnuItemReceber.Enabled    = false;
                mnuItemEstornar.Enabled   = false;
                break;

            default:
                break;
            }

            // revela menu
            mnuOperacoes.Show(c.PointToScreen(e.Location));
        }