Esempio n. 1
0
        public static string Excluir(TRegistro_CarregaCartaoPre val, BancoDados.TObjetoBanco banco)
        {
            bool st_transacao = false;
            TCD_CarregaCartaoPre qtb_fatura = new TCD_CarregaCartaoPre();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_fatura.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_fatura.Banco_Dados = banco;
                }
                //Estornar Caixa
                new TCD_LanCaixa(qtb_fatura.Banco_Dados).Select(
                    new Utils.TpBusca[]
                {
                    new Utils.TpBusca()
                    {
                        vNM_Campo = "a.CD_ContaGer",
                        vOperador = "=",
                        vVL_Busca = "'" + val.Cd_contager.Trim() + "'"
                    },
                    new Utils.TpBusca()
                    {
                        vNM_Campo = "a.CD_LanctoCaixa",
                        vOperador = "=",
                        vVL_Busca = val.Cd_lanctocaixa.ToString()
                    }
                }, 0, string.Empty).ForEach(x => TCN_LanCaixa.EstornarCaixa(x, null, qtb_fatura.Banco_Dados));
                qtb_fatura.Excluir(val);
                if (st_transacao)
                {
                    qtb_fatura.Banco_Dados.Commit_Tran();
                }
                return("OK");
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_fatura.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro excluir fatura: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_fatura.deletarBanco_Dados();
                }
            }
        }
Esempio n. 2
0
 private void BB_Buscar_Click(object sender, EventArgs e)
 {
     if (tabControl1.SelectedIndex == 0)
     {
         TList_RegLanDuplicata lDup = TCN_LanDuplicata.BuscaAudit(CD_Empresa.Text,
                                                                  NR_Docto.Text,
                                                                  nr_lancto.Text,
                                                                  CD_Clifor.Text,
                                                                  cd_moeda.Text,
                                                                  CD_Historico.Text,
                                                                  cd_condpgto.Text,
                                                                  Tp_Dup.Text,
                                                                  VL_Inicial.Value,
                                                                  VL_Final.Value,
                                                                  DT_Inicial.Text,
                                                                  DT_Final.Text,
                                                                  null);
         //Buscr Centro Resultado
         //lDup.ForEach(p => p.lCustoLancto = TCN_DuplicataXCCusto.BuscarCusto(p.Cd_empresa, p.Nr_lancto.ToString(), null));
         lDup.ForEach(r => r.St_liquidar = false);
         BS_Duplicata.DataSource         = lDup;
     }
     else
     {
         if (cbContaGer.SelectedItem != null)
         {
             bsCaixa.DataSource = TCN_LanCaixa.BuscaAudit(cbContaGer.SelectedValue.ToString(),
                                                          string.Empty,
                                                          string.Empty,
                                                          nr_doctoCaixa.Text,
                                                          cd_historicoCaixa.Text,
                                                          string.Empty,
                                                          Dt_iniCaixa.Text,
                                                          Dt_finCaixa.Text,
                                                          0,
                                                          0,
                                                          string.Empty,
                                                          string.Empty,
                                                          string.Empty,
                                                          false,
                                                          string.Empty,
                                                          0,
                                                          true,
                                                          null);
             (bsCaixa.DataSource as TList_LanCaixa).ForEach(r => r.St_conciliar = false);
             bsCaixa.ResetBindings(true);
         }
         else
         {
             MessageBox.Show("Obrigatório informar conta gerencial.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
         }
     }
 }
Esempio n. 3
0
 private void bb_corrigir_Click(object sender, EventArgs e)
 {
     if (cbContaGer.SelectedItem == null)
     {
         MessageBox.Show("Obrigatório informar conta gerencial.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
         cbContaGer.Focus();
         return;
     }
     if (bsSaldoAplic.Current == null)
     {
         MessageBox.Show("Obrigatório selecionar conta aplicação.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
         return;
     }
     if ((bsSaldoAplic.Current as TRegistro_SaldoContaGer).Vl_saldo.Equals(decimal.Zero))
     {
         MessageBox.Show("Aplicação não possui saldo para resgatar.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
         return;
     }
     using (TFAplicarResgatar fAplic = new TFAplicarResgatar())
     {
         if (fAplic.ShowDialog() == DialogResult.OK)
         {
             try
             {
                 TCN_LanCaixa.GravaLanCaixa(new TRegistro_LanCaixa()
                 {
                     Cd_ContaGer  = (bsSaldoAplic.Current as TRegistro_SaldoContaGer).Cd_contager,
                     Cd_Empresa   = fAplic.pCd_empresa,
                     Cd_Historico = fAplic.pCd_historico,
                     Dt_lancto    = fAplic.pDt_lancto,
                     Login        = Utils.Parametros.pubLogin,
                     Nr_Docto     = "CORRECAO",
                     St_avulso    = "S",
                     Vl_RECEBER   = fAplic.pValor - (bsSaldoAplic.Current as TRegistro_SaldoContaGer).Vl_saldo
                 }, null);
                 MessageBox.Show("Correção aplicação realizada com sucesso.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                 afterBusca();
             }
             catch (Exception ex)
             { MessageBox.Show(ex.Message.Trim(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error); }
         }
     }
 }
Esempio n. 4
0
 private void BB_Excluir_Click(object sender, EventArgs e)
 {
     if (bindingSourceCaixa.Current != null)
     {
         if ((bindingSourceCaixa.Current as TRegistro_LanCaixa).St_Estorno.Trim().ToUpper().Equals("S"))
         {
             MessageBox.Show("Lançamento de caixa ja esta estornado.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
             return;
         }
         if (!(bindingSourceCaixa.Current as TRegistro_LanCaixa).Status_avulso)
         {
             MessageBox.Show("Permitido estornar somente lançamento de caixa avulso.\r\n" +
                             "Para estornar lançamento de caixa que teve origem em outro processo,\r\n" +
                             "va a tela de origem do lançamento e estorne o processo completo.", "Mensagem",
                             MessageBoxButtons.OK, MessageBoxIcon.Information);
             return;
         }
         if (MessageBox.Show("Confirma Estorno do Lançamento de Caixa: " + (bindingSourceCaixa.Current as TRegistro_LanCaixa).Cd_LanctoCaixa.ToString(),
                             "Pergunta", MessageBoxButtons.YesNo, MessageBoxIcon.Question, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
         {
             try
             {
                 if (TCN_LanCaixa.EstornarCaixa((bindingSourceCaixa.Current as TRegistro_LanCaixa), null, null))
                 {
                     afterBusca();
                 }
             }
             catch (Exception ex)
             {
                 MessageBox.Show(ex.Message.Trim(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
             }
         }
     }
     else
     {
         MessageBox.Show("Obrigatorio selecionar registro caixa para estornar.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
     }
 }
Esempio n. 5
0
        private void BB_Alterar_Click(object sender, EventArgs e)
        {
            if (bindingSourceCaixa.Current != null)
            {
                TFLanCaixa FLanCaixa = new TFLanCaixa();
                FLanCaixa.CD_ContaGer.Enabled = false;
                FLanCaixa.BB_ContaGer.Enabled = false;
                FLanCaixa.CD_Empresa.Enabled  = false;
                FLanCaixa.BB_Empresa.Enabled  = false;
                FLanCaixa.DT_Lancto.Enabled   = false;
                FLanCaixa.RB_Pagar.Enabled    = false;
                FLanCaixa.RB_Receber.Enabled  = false;
                FLanCaixa.VL_Receber.Enabled  = false;
                FLanCaixa.VL_Pagar.Enabled    = false;
                FLanCaixa.RB_Receber.Checked  = (bindingSourceCaixa.Current as TRegistro_LanCaixa).Vl_RECEBER > 0;
                FLanCaixa.RB_Pagar.Checked    = (bindingSourceCaixa.Current as TRegistro_LanCaixa).Vl_PAGAR > 0;
                FLanCaixa.dsLanCaixa.Add(bindingSourceCaixa.Current as TRegistro_LanCaixa);

                if (FLanCaixa.ShowDialog() == DialogResult.OK)
                {
                    try
                    {
                        TCN_LanCaixa.AlterarLanCaixa((bindingSourceCaixa.Current as TRegistro_LanCaixa), null);
                        afterBusca();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message.Trim(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                }
            }
            else
            {
                MessageBox.Show("Obrigatorio selecionar registro de caixa para alterar.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
Esempio n. 6
0
        private void dt_fechamento_Leave(object sender, EventArgs e)
        {
            if ((dt_fechamento.Text.Trim().Equals(string.Empty)) || (dt_fechamento.Text.Trim().Equals("/  /")))
            {
                return;
            }
            DateTime dt;

            try
            {
                dt = Convert.ToDateTime(dt_fechamento.Text);
                if (dt > DateTime.Now)
                {
                    MessageBox.Show("Data de fechamento não pode ser maior que data atual.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    dt_fechamento.Focus();
                    return;
                }
                if ((bsFechamentoCaixa.Current as TRegistro_LanFechamentoCaixa).Dt_ultimofechamento != null)
                {
                    if (dt <= (bsFechamentoCaixa.Current as TRegistro_LanFechamentoCaixa).Dt_ultimofechamento.Value)
                    {
                        MessageBox.Show("Data de fechamento não pode ser menor ou igual a data do ultimo fechamento.\r\n" +
                                        "Data Ultimo Fechamento: " + (bsFechamentoCaixa.Current as TRegistro_LanFechamentoCaixa).Dt_ultimofechamento.Value.ToString("dd/MM/yyyy"),
                                        "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        dt_fechamento.Focus();
                        return;
                    }
                }
            }
            catch
            {
                MessageBox.Show("Data de fechamento invalida.", "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                return;
            }
            //Buscar valor atual da conta
            (bsFechamentoCaixa.Current as TRegistro_LanFechamentoCaixa).Vl_atual = TCN_LanCaixa.BuscarSaldoCaixaData(CD_ContaGer.Text, dt_fechamento.Data, null);
            object obj = new CamadaDados.Financeiro.Titulo.TCD_LanTitulo().BuscarEscalar(
                new TpBusca[]
            {
                new TpBusca()
                {
                    vNM_Campo = "isnull(a.status_compensado, 'N')",
                    vOperador = "=",
                    vVL_Busca = "'N'"
                },
                new TpBusca()
                {
                    vNM_Campo = "a.tp_titulo",
                    vOperador = "=",
                    vVL_Busca = "'R'"
                },
                new TpBusca()
                {
                    vNM_Campo = string.Empty,
                    vOperador = "exists",
                    vVL_Busca = "(select 1 from tb_fin_titulo_x_caixa x " +
                                "inner join tb_fin_caixa y " +
                                "on x.cd_contager = y.cd_contager " +
                                "and x.cd_lanctocaixa = y.cd_lanctocaixa " +
                                "where x.cd_empresa = a.cd_empresa " +
                                "and x.cd_banco = a.cd_banco " +
                                "and x.nr_lanctocheque = a.nr_lanctocheque " +
                                "and y.cd_contager = '" + CD_ContaGer.Text.Trim() + "' " +
                                "and isnull(y.st_estorno, 'N') <> 'S' " +
                                "and CONVERT(datetime, FLOOR(CONVERT(decimal(30,10), y.DT_Lancto))) <= '" + dt_fechamento.Data.ToString("yyyyMMdd") + "')"
                }
            }, "isnull(sum(a.vl_titulo), 0)");

            (bsFechamentoCaixa.Current as TRegistro_LanFechamentoCaixa).Vl_ch_rec_compensar = obj != null?decimal.Parse(obj.ToString()) : decimal.Zero;

            obj = new CamadaDados.Financeiro.Titulo.TCD_LanTitulo().BuscarEscalar(
                new TpBusca[]
            {
                new TpBusca()
                {
                    vNM_Campo = "isnull(a.status_compensado, 'N')",
                    vOperador = "=",
                    vVL_Busca = "'N'"
                },
                new TpBusca()
                {
                    vNM_Campo = "a.tp_titulo",
                    vOperador = "=",
                    vVL_Busca = "'R'"
                },
                new TpBusca()
                {
                    vNM_Campo = string.Empty,
                    vOperador = "exists",
                    vVL_Busca = "(select 1 from tb_fin_titulo_x_caixa x " +
                                "inner join tb_fin_caixa y " +
                                "on x.cd_contager = y.cd_contager " +
                                "and x.cd_lanctocaixa = y.cd_lanctocaixa " +
                                "inner join tb_fin_contager z " +
                                "on y.cd_contager = c.cd_contager_compensacao " +
                                "where x.cd_empresa = a.cd_empresa " +
                                "and x.cd_banco = a.cd_banco " +
                                "and x.nr_lanctocheque = a.nr_lanctocheque " +
                                "and z.cd_contager = '" + CD_ContaGer.Text.Trim() + "' " +
                                "and isnull(y.st_estorno, 'N') <> 'S' " +
                                "and CONVERT(datetime, FLOOR(CONVERT(decimal(30,10), y.DT_Lancto))) <= '" + dt_fechamento.Data.ToString("yyyyMMdd") + "')"
                }
            }, "isnull(sum(a.vl_titulo), 0)");
            (bsFechamentoCaixa.Current as TRegistro_LanFechamentoCaixa).Vl_ch_emit_compensar = obj != null?decimal.Parse(obj.ToString()) : decimal.Zero;

            //Verificar se a conta e de compensacao
            object obj_conta = new CamadaDados.Financeiro.Cadastros.TCD_CadContaGer().BuscarEscalar(
                new TpBusca[]
            {
                new TpBusca()
                {
                    vNM_Campo = "a.cd_contager",
                    vOperador = "=",
                    vVL_Busca = "'" + CD_ContaGer.Text.Trim() + "'"
                },
                new TpBusca()
                {
                    vNM_Campo = "isnull(a.st_contacompensacao, 'N')",
                    vOperador = "=",
                    vVL_Busca = "'S'"
                }
            }, "1");

            (bsFechamentoCaixa.Current as TRegistro_LanFechamentoCaixa).Vl_saldofuturo =
                (bsFechamentoCaixa.Current as TRegistro_LanFechamentoCaixa).Vl_atual -
                (obj_conta == null ? (bsFechamentoCaixa.Current as TRegistro_LanFechamentoCaixa).Vl_ch_emit_compensar :
                 (bsFechamentoCaixa.Current as TRegistro_LanFechamentoCaixa).Vl_ch_emit_compensar * -1);
            bsFechamentoCaixa.ResetCurrentItem();
        }
Esempio n. 7
0
        public static string Transfere_Caixa(TRegistro_Lan_Transfere_Caixa val, TObjetoBanco banco)
        {
            TCD_Lan_Transferencia_Caixa QTB_Transfere_Caixa = new TCD_Lan_Transferencia_Caixa();
            bool pode_liberar = false;
            try
            {
                if (banco == null)
                    pode_liberar = QTB_Transfere_Caixa.CriarBanco_Dados(true);
                else
                    QTB_Transfere_Caixa.Banco_Dados = banco;
                string retorno = string.Empty;
                //Grava Saida na conta origem
                if (val != null)
                {
                    retorno = TCN_LanCaixa.GravaLanCaixa(new TRegistro_LanCaixa()
                                                        {
                                                            Cd_ContaGer = val.CD_ContaGer_Saida,
                                                            Cd_Empresa = val.CD_Empresa,
                                                            Nr_Docto = val.NR_Docto,
                                                            Cd_Historico = val.CD_Historico,
                                                            ComplHistorico = val.Complemento,
                                                            Dt_lancto = val.DT_Lancto,
                                                            Vl_PAGAR = val.Valor_Transferencia,
                                                            Vl_RECEBER = decimal.Zero,
                                                            St_Titulo = "N",
                                                            St_Estorno = "N",
                                                            St_avulso = val.St_avulso ? "S" : "N"
                                                        }, QTB_Transfere_Caixa.Banco_Dados);
                    val.CD_LANCTOCAIXA_SAI = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(retorno, "@P_CD_LANCTOCAIXA"));
                }

                //Grava Entrada na conta destino
                if (val != null)
                {
                    retorno = TCN_LanCaixa.GravaLanCaixa(new TRegistro_LanCaixa()
                                                        {
                                                            Cd_ContaGer = val.CD_ContaGer_Entrada,
                                                            Cd_Empresa = val.CD_Empresa,
                                                            Nr_Docto = val.NR_Docto,
                                                            Cd_Historico = val.CD_Historico,
                                                            Dt_lancto = val.DT_Lancto,
                                                            Vl_PAGAR = decimal.Zero,
                                                            Vl_RECEBER = val.Vl_saida_transferencia,
                                                            St_Titulo = "N",
                                                            St_Estorno = "N",
                                                            St_avulso = val.St_avulso ? "S" : "N"
                                                        }, QTB_Transfere_Caixa.Banco_Dados);
                    val.CD_LANCTOCAIXA_ENT = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(retorno, "@P_CD_LANCTOCAIXA"));
                }

                //Grava na Transfere Caixa
                val.ID_TRANSF = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(QTB_Transfere_Caixa.Grava_Transferencia(val), "@P_ID_TRANSF"));
                
                if (pode_liberar)
                    QTB_Transfere_Caixa.Banco_Dados.Commit_Tran();
                return retorno;
            }
            catch(Exception ex)
            {
                if (pode_liberar)
                    QTB_Transfere_Caixa.Banco_Dados.RollBack_Tran();
                throw new Exception("Erro gravar transferencia caixa: " + ex.Message.Trim());
            }
            finally
            {
                if (pode_liberar)
                    QTB_Transfere_Caixa.deletarBanco_Dados();
            }

        }
Esempio n. 8
0
        private void BB_Alterar_Click(object sender, EventArgs e)
        {
            if (tabControl1.SelectedIndex == 0)
            {
                if (!(BS_Duplicata.List as IEnumerable <TRegistro_LanDuplicata>).ToList().Exists(r => r.St_liquidar))
                {
                    MessageBox.Show("Nenhum registro selecionado para auditar.", "Informativo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                else if (MessageBox.Show("Confirma auditar todos registros selecionados, está opção não poderá ser desfeita.",
                                         "Pergunta", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
                {
                    return;
                }

                TList_RegLanDuplicata _LanDuplicatas = new TList_RegLanDuplicata();
                (BS_Duplicata.List as IEnumerable <TRegistro_LanDuplicata>).ToList().FindAll(r => r.St_liquidar).ForEach(p =>
                {
                    _LanDuplicatas.Add(p);
                });

                try
                {
                    TCN_LanDuplicata.AuditarDuplicatas(_LanDuplicatas, null);
                    MessageBox.Show("Auditado com sucesso.", "Informativo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    (BS_Duplicata.DataSource as TList_RegLanDuplicata).RemoveAll(r => r.St_liquidar = true);
                    BS_Duplicata.ResetBindings(true);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
            else
            {
                if (!(bsCaixa.List as IEnumerable <TRegistro_LanCaixa>).ToList().Exists(r => r.St_conciliar))
                {
                    MessageBox.Show("Nenhum registro selecionado para auditar.", "Informativo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                else if (MessageBox.Show("Confirma auditar todos registros selecionados, está opção não poderá ser desfeita.",
                                         "Pergunta", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No)
                {
                    return;
                }

                TList_LanCaixa _LanCaixas = new TList_LanCaixa();
                (bsCaixa.List as IEnumerable <TRegistro_LanCaixa>).ToList().FindAll(r => r.St_conciliar).ForEach(p =>
                {
                    _LanCaixas.Add(p);
                });

                try
                {
                    TCN_LanCaixa.AuditarCaixa(_LanCaixas, null);
                    MessageBox.Show("Auditado com sucesso.", "Informativo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    (bsCaixa.DataSource as TList_LanCaixa).RemoveAll(r => r.St_conciliar);
                    bsCaixa.ResetBindings(true);
                }
                catch (Exception ex)
                {
                    MessageBox.Show(ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                }
            }
        }
Esempio n. 9
0
        public static string Gravar(TRegistro_CarregaCartaoPre val, BancoDados.TObjetoBanco banco)
        {
            bool st_transacao = false;
            TCD_CarregaCartaoPre qtb_fatura = new TCD_CarregaCartaoPre();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_fatura.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_fatura.Banco_Dados = banco;
                }
                CamadaDados.Financeiro.Cadastros.TList_CFGFaturaCartao lCfg =
                    new CamadaDados.Financeiro.Cadastros.TCD_CFGFaturaCartao(qtb_fatura.Banco_Dados).Select(
                        new Utils.TpBusca[]
                {
                    new Utils.TpBusca()
                    {
                        vNM_Campo = "a.cd_empresa",
                        vOperador = "=",
                        vVL_Busca = "'" + val.Cd_empresa.Trim() + "'"
                    }
                }, 1, string.Empty);
                if (lCfg.Count == 0)
                {
                    throw new Exception("Não existe CFG. Fatura Cartão!");
                }
                if (!string.IsNullOrEmpty(val.Cd_contager))
                {
                    //Gravar caixa
                    string ret =
                        TCN_LanCaixa.GravaLanCaixa(
                            new TRegistro_LanCaixa()
                    {
                        Cd_ContaGer    = val.Cd_contager,
                        Cd_Empresa     = val.Cd_empresa,
                        Nr_Docto       = "CRÉD. " + val.Nr_cartao.Trim(),
                        Cd_Historico   = lCfg[0].Cd_historico_pag,
                        Login          = Utils.Parametros.pubLogin,
                        ComplHistorico = "CRÉDITO CARTÃO",
                        Dt_lancto      = val.Dt_carga,
                        Vl_PAGAR       = val.Vl_carga,
                        Vl_RECEBER     = decimal.Zero,
                        St_Titulo      = "N",
                        St_Estorno     = "N",
                        St_avulso      = "N"
                    }, qtb_fatura.Banco_Dados);
                    val.Cd_lanctocaixa = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(ret, "@P_CD_LANCTOCAIXA"));
                }
                val.Id_cargastr = CamadaDados.TDataQuery.getPubVariavel(qtb_fatura.Gravar(val), "@P_ID_CARGA");
                if (st_transacao)
                {
                    qtb_fatura.Banco_Dados.Commit_Tran();
                }
                return(val.Id_cargastr);
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_fatura.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro gravar fatura: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_fatura.deletarBanco_Dados();
                }
            }
        }
Esempio n. 10
0
        public static void QuitarFatura(List <TRegistro_FaturaCartao> val,
                                        DateTime Dt_quitacao,
                                        string Cd_contager,
                                        string Cd_empresa,
                                        string Tp_movimento,
                                        BancoDados.TObjetoBanco banco)
        {
            bool             st_transacao = false;
            TCD_FaturaCartao qtb_fatura   = new TCD_FaturaCartao();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_fatura.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_fatura.Banco_Dados = banco;
                }
                //Buscar configuracao para quitar fatura
                TList_CFGFaturaCartao lCfg = TCN_CFGFaturaCartao.Buscar(Cd_empresa,
                                                                        string.Empty,
                                                                        string.Empty,
                                                                        string.Empty,
                                                                        string.Empty,
                                                                        qtb_fatura.Banco_Dados);
                if (lCfg.Count.Equals(0))
                {
                    throw new Exception("Não existe configuração para quitar fatura na empresa " + Cd_empresa.Trim());
                }
                //Incluir lancamento de caixa na conta de quitacao
                string cd_lanctocaixa_q = TCN_LanCaixa.GravaLanCaixa(
                    new TRegistro_LanCaixa()
                {
                    Cd_Empresa     = Cd_empresa,
                    Cd_ContaGer    = Cd_contager,
                    Nr_Docto       = "QUITARFAT",
                    ComplHistorico = "QUITACAO FATURA CARTAO",
                    Dt_lancto      = Dt_quitacao,
                    Cd_Historico   = Tp_movimento.Trim().ToUpper().Equals("P") ? lCfg[0].Cd_historico_pag : lCfg[0].Cd_historico_rec,
                    Vl_RECEBER     = Tp_movimento.Trim().ToUpper().Equals("R") ? val.Sum(p => p.Vl_nominal - p.Vl_quitado) : decimal.Zero,
                    Vl_PAGAR       = Tp_movimento.Trim().ToUpper().Equals("P") ? val.Sum(p => p.Vl_nominal - p.Vl_quitado) : decimal.Zero,
                    St_Estorno     = "N"
                }, qtb_fatura.Banco_Dados);
                //Gravar Juro
                string cd_lanctocaixajr = string.Empty;
                if (val.Sum(p => p.Vl_juro) > decimal.Zero)
                {
                    if (string.IsNullOrEmpty(lCfg[0].Cd_historico_juro))
                    {
                        throw new Exception("Não existe configuração para quitar juro da fatura na empresa " + Cd_empresa.Trim());
                    }
                    cd_lanctocaixajr = TCN_LanCaixa.GravaLanCaixa(new TRegistro_LanCaixa()
                    {
                        Cd_Empresa     = Cd_empresa,
                        Cd_ContaGer    = Cd_contager,
                        Nr_Docto       = "JUROFATURA",
                        ComplHistorico = "JURO FATURA CARTAO",
                        Dt_lancto      = Dt_quitacao,
                        Cd_Historico   = lCfg[0].Cd_historico_juro,
                        Vl_RECEBER     = decimal.Zero,
                        Vl_PAGAR       = val.Sum(p => p.Vl_juro),
                        St_Titulo      = "N",
                        St_Estorno     = "N"
                    }, qtb_fatura.Banco_Dados);
                }
                //Gravar Caixa Taxa
                string cd_lanctocaixatx = string.Empty;
                if (val.Sum(p => p.Vl_taxa) > decimal.Zero)
                {
                    if (string.IsNullOrEmpty(lCfg[0].Cd_historico_taxa))
                    {
                        throw new Exception("Não existe configuração para quitar taxa da fatura na empresa " + Cd_empresa.Trim());
                    }
                    cd_lanctocaixatx = TCN_LanCaixa.GravaLanCaixa(new TRegistro_LanCaixa()
                    {
                        Cd_Empresa     = Cd_empresa,
                        Cd_ContaGer    = Cd_contager,
                        Nr_Docto       = "TXFATURA",
                        ComplHistorico = "TAXA FATURA CARTAO",
                        Dt_lancto      = Dt_quitacao,
                        Cd_Historico   = lCfg[0].Cd_historico_taxa,
                        Vl_RECEBER     = decimal.Zero,
                        Vl_PAGAR       = Math.Round(val.Sum(p => p.Vl_taxa), 2),
                        St_Estorno     = "N",
                        St_Titulo      = "N"
                    }, qtb_fatura.Banco_Dados);
                }
                val.ForEach(p =>
                {
                    if ((p.Vl_fatura - p.Vl_quitado) > decimal.Zero)
                    {
                        if (p.Dt_fatura.Value.Date > Dt_quitacao.Date)
                        {
                            throw new Exception("Não é permitido quitar fatura com data de lançamento maior que a data de quitação.");
                        }
                        //Incluir lancamento de caixa contrario ao original
                        string cd_lanctocaixa_o = TCN_LanCaixa.GravaLanCaixa(new TRegistro_LanCaixa()
                        {
                            Cd_Empresa   = Cd_empresa,
                            Cd_ContaGer  = p.Cd_contager,
                            Nr_Docto     = p.Id_fatura.Value.ToString(),
                            Dt_lancto    = Dt_quitacao,
                            Cd_Historico = p.Tp_movimento.Trim().ToUpper().Equals("P") ? lCfg[0].Cd_historico_pag : lCfg[0].Cd_historico_rec,
                            Vl_RECEBER   = p.Tp_movimento.Trim().ToUpper().Equals("P") ? p.Vl_fatura - p.Vl_quitado : decimal.Zero,
                            Vl_PAGAR     = p.Tp_movimento.Trim().ToUpper().Equals("R") ? p.Vl_fatura - p.Vl_quitado : decimal.Zero,
                            St_Estorno   = "N"
                        }, qtb_fatura.Banco_Dados);
                        decimal?cd_tx = null;
                        if (p.Pc_taxa > decimal.Zero)
                        {
                            cd_tx = decimal.Parse(CamadaDados.TDataQuery.getPubVariavel(cd_lanctocaixatx, "@P_CD_LANCTOCAIXA"));
                        }
                        decimal?cd_jr = null;
                        if (!string.IsNullOrEmpty(cd_lanctocaixajr))
                        {
                            cd_jr = decimal.Parse(CamadaDados.TDataQuery.getPubVariavel(cd_lanctocaixajr, "@P_CD_LANCTOCAIXA"));
                        }
                        //Incluir Registo na Tabela de Quitacao
                        TCN_QuitarFatura.Gravar(
                            new TRegistro_Quitarfatura()
                        {
                            Id_quitar          = null,
                            Id_fatura          = p.Id_fatura,
                            Cd_contager        = p.Cd_contager,
                            Cd_lanctocaixa     = decimal.Parse(CamadaDados.TDataQuery.getPubVariavel(cd_lanctocaixa_o, "@P_CD_LANCTOCAIXA")),
                            Cd_contagerquit    = Cd_contager,
                            Cd_lanctocaixaquit = decimal.Parse(CamadaDados.TDataQuery.getPubVariavel(cd_lanctocaixa_q, "@P_CD_LANCTOCAIXA")),
                            Cd_lanctocaixajuro = cd_jr,
                            Cd_lanctocaixatx   = cd_tx,
                            Dt_lancto          = Dt_quitacao,
                            Vl_quitado         = p.Vl_fatura - p.Vl_quitado,
                            Vl_juro            = p.Vl_juro,
                            Vl_taxa            = p.Vl_taxa
                        }, qtb_fatura.Banco_Dados);
                    }
                });
                if (st_transacao)
                {
                    qtb_fatura.Banco_Dados.Commit_Tran();
                }
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_fatura.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro quitar fatura: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_fatura.deletarBanco_Dados();
                }
            }
        }
Esempio n. 11
0
        public static string Gravar(TRegistro_FaturaCartao val, BancoDados.TObjetoBanco banco)
        {
            bool             st_transacao = false;
            TCD_FaturaCartao qtb_fatura   = new TCD_FaturaCartao();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_fatura.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_fatura.Banco_Dados = banco;
                }
                string retorno = qtb_fatura.Gravar(val);
                val.Id_fatura = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(retorno, "@P_ID_FATURA"));
                if (!string.IsNullOrEmpty(val.Cd_contager))
                {
                    //Gravar caixa
                    string ret =
                        TCN_LanCaixa.GravaLanCaixa(
                            new TRegistro_LanCaixa()
                    {
                        Cd_ContaGer    = val.Cd_contager,
                        Cd_Empresa     = val.Cd_empresa,
                        Nr_Docto       = "FAT" + val.Id_fatura.Value.ToString(),
                        Cd_Historico   = val.Cd_historico,
                        Login          = Utils.Parametros.pubLogin,
                        ComplHistorico = "FATURA CARTAO AVULSA",
                        Dt_lancto      = val.Dt_fatura,
                        Vl_PAGAR       = decimal.Zero,
                        Vl_RECEBER     = val.Vl_nominal,
                        St_Titulo      = "N",
                        St_Estorno     = "N",
                        St_avulso      = "N",
                        Id_adto        = val.Id_adto
                    }, qtb_fatura.Banco_Dados);
                    //Amarrar caixa com fatura
                    TCN_FaturaCartao_X_Caixa.Gravar(new TRegistro_FaturaCartao_X_Caixa()
                    {
                        Cd_contager    = val.Cd_contager,
                        Cd_lanctocaixa = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(ret, "@P_CD_LANCTOCAIXA")),
                        Id_fatura      = val.Id_fatura
                    }, qtb_fatura.Banco_Dados);
                }
                if (st_transacao)
                {
                    qtb_fatura.Banco_Dados.Commit_Tran();
                }
                return(retorno);
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_fatura.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro gravar fatura: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_fatura.deletarBanco_Dados();
                }
            }
        }
Esempio n. 12
0
        private void BB_Novo_Click(object sender, EventArgs e)
        {
            using (TFLanCaixa FLanCaixa = new TFLanCaixa())
            {
                FLanCaixa.dsLanCaixa.DataSource = bindingSourceCaixa;

                FLanCaixa.dsLanCaixa.AddNew();

                (FLanCaixa.dsLanCaixa.Current as TRegistro_LanCaixa).Vl_Anterior = VL_DifCX.Value;
                (FLanCaixa.dsLanCaixa.Current as TRegistro_LanCaixa).Cd_ContaGer = cbContaGer.SelectedItem != null?cbContaGer.SelectedValue.ToString() : string.Empty;

                if (FLanCaixa.ShowDialog() == DialogResult.OK)
                {
                    //Lancar Centro Resultado
                    if (CamadaNegocio.ConfigGer.TCN_CadParamGer.BuscaVL_Bool("CRESULTADO_EMPRESA",
                                                                             (FLanCaixa.dsLanCaixa.Current as TRegistro_LanCaixa).Cd_Empresa,
                                                                             null).Trim().ToUpper().Equals("S"))
                    {
                        //Verificar se historico possui centro resultado cadastrado
                        object obj = new TCD_CadHistorico().BuscarEscalar(
                            new TpBusca[]
                        {
                            new TpBusca()
                            {
                                vNM_Campo = "a.cd_historico",
                                vOperador = "=",
                                vVL_Busca = "'" + (FLanCaixa.dsLanCaixa.Current as TRegistro_LanCaixa).Cd_Historico.Trim() + "'"
                            }
                        }, "a.cd_centroresult");
                        if (obj == null ? false : !string.IsNullOrEmpty(obj.ToString()))
                        {
                            (bindingSourceCaixa.Current as TRegistro_LanCaixa).lCustoLancto.Add(
                                new CamadaDados.Financeiro.CCustoLan.TRegistro_LanCCustoLancto()
                            {
                                Cd_empresa      = (bindingSourceCaixa.Current as TRegistro_LanCaixa).Cd_Empresa,
                                Cd_centroresult = obj.ToString(),
                                Vl_lancto       = (bindingSourceCaixa.Current as TRegistro_LanCaixa).Vl_PAGAR > decimal.Zero ?
                                                  (bindingSourceCaixa.Current as TRegistro_LanCaixa).Vl_PAGAR :
                                                  (bindingSourceCaixa.Current as TRegistro_LanCaixa).Vl_RECEBER,
                                Dt_lancto   = (bindingSourceCaixa.Current as TRegistro_LanCaixa).Dt_lancto,
                                Tp_registro = "A"
                            });
                        }
                        else
                        {
                            using (TFRateioCResultado fRateio = new TFRateioCResultado())
                            {
                                fRateio.vVl_Documento = (FLanCaixa.dsLanCaixa.Current as TRegistro_LanCaixa).Vl_PAGAR > decimal.Zero ?
                                                        (FLanCaixa.dsLanCaixa.Current as TRegistro_LanCaixa).Vl_PAGAR : (FLanCaixa.dsLanCaixa.Current as TRegistro_LanCaixa).Vl_RECEBER;
                                fRateio.Tp_mov       = (FLanCaixa.dsLanCaixa.Current as TRegistro_LanCaixa).Vl_PAGAR > decimal.Zero ? "P" : "R";
                                fRateio.Dt_movimento = (FLanCaixa.dsLanCaixa.Current as TRegistro_LanCaixa).Dt_lancto;
                                fRateio.ShowDialog();
                                (FLanCaixa.dsLanCaixa.Current as TRegistro_LanCaixa).lCustoLancto = fRateio.lCResultado;
                                (FLanCaixa.dsLanCaixa.Current as TRegistro_LanCaixa).lCustoLanDel = fRateio.lCResultadoDel;
                            }
                        }
                    }
                    try
                    {
                        //Setar como lancamento caixa avulso
                        (FLanCaixa.dsLanCaixa.Current as TRegistro_LanCaixa).St_avulso = "S";
                        TCN_LanCaixa.GravaLanCaixa((bindingSourceCaixa.Current as TRegistro_LanCaixa), null);
                        afterBusca();
                    }
                    catch (Exception ex)
                    {
                        MessageBox.Show(ex.Message.Trim(), "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
                        FLanCaixa.dsLanCaixa.CancelEdit();
                    }
                }
                else
                {
                    FLanCaixa.dsLanCaixa.CancelEdit();
                }
            }
        }
Esempio n. 13
0
        private void afterBusca()
        {
            if (cbContaGer.SelectedItem != null)
            {
                string cheque  = string.Empty;
                string estorno = string.Empty;
                if (ST_Cheques.Checked)
                {
                    cheque = string.Empty;
                }
                else
                {
                    cheque = ST_Cheques.Vl_False;
                }

                if (ST_Estorno.Checked)
                {
                    estorno = string.Empty;
                }
                else
                {
                    estorno = ST_Estorno.Vl_False;
                }

                bindingSourceCaixa.DataSource = TCN_LanCaixa.Busca(cbContaGer.SelectedValue.ToString(),
                                                                   string.Empty,
                                                                   string.Empty,
                                                                   nr_docto.Text,
                                                                   cd_historico.Text,
                                                                   string.Empty,
                                                                   DT_Inicial.Text,
                                                                   DT_Final.Text,
                                                                   vl_ini.Value,
                                                                   vl_fin.Value,
                                                                   rgValor.NM_Valor,
                                                                   cheque,
                                                                   estorno,
                                                                   false,
                                                                   string.Empty,
                                                                   0,
                                                                   cbAvulsos.Checked,
                                                                   null);
                //Buscar Totais
                object obj = new CamadaDados.Financeiro.Titulo.TCD_LanTitulo().BuscarEscalar(
                    new TpBusca[]
                {
                    new TpBusca()
                    {
                        vNM_Campo = "isnull(a.status_compensado, 'N')",
                        vOperador = "=",
                        vVL_Busca = "'N'"
                    },
                    new TpBusca()
                    {
                        vNM_Campo = "a.tp_titulo",
                        vOperador = "=",
                        vVL_Busca = "'R'"
                    },
                    new TpBusca()
                    {
                        vNM_Campo = string.Empty,
                        vOperador = "exists",
                        vVL_Busca = "(select 1 from tb_fin_titulo_x_caixa x " +
                                    "inner join tb_fin_caixa y " +
                                    "on x.cd_contager = y.cd_contager " +
                                    "and x.cd_lanctocaixa = y.cd_lanctocaixa " +
                                    "where x.cd_empresa = a.cd_empresa " +
                                    "and x.cd_banco = a.cd_banco " +
                                    "and x.nr_lanctocheque = a.nr_lanctocheque " +
                                    "and y.cd_contager = '" + cbContaGer.SelectedValue.ToString() + "' " +
                                    "and isnull(y.st_estorno, 'N') <> 'S')"
                    }
                }, "isnull(sum(a.vl_titulo), 0)");
                Tot_Ch_REC.Value = obj != null?decimal.Parse(obj.ToString()) : decimal.Zero;

                obj = new CamadaDados.Financeiro.Titulo.TCD_LanTitulo().BuscarEscalar(
                    new TpBusca[]
                {
                    new TpBusca()
                    {
                        vNM_Campo = "isnull(a.status_compensado, 'N')",
                        vOperador = "=",
                        vVL_Busca = "'N'"
                    },
                    new TpBusca()
                    {
                        vNM_Campo = "a.tp_titulo",
                        vOperador = "=",
                        vVL_Busca = "'P'"
                    },
                    new TpBusca()
                    {
                        vNM_Campo = string.Empty,
                        vOperador = "exists",
                        vVL_Busca = "(select 1 from tb_fin_titulo_x_caixa x " +
                                    "inner join tb_fin_caixa y " +
                                    "on x.cd_contager = y.cd_contager " +
                                    "and x.cd_lanctocaixa = y.cd_lanctocaixa " +
                                    "inner join tb_fin_contager z " +
                                    "on y.cd_contager = z.cd_contager_compensacao " +
                                    "where x.cd_empresa = a.cd_empresa " +
                                    "and x.cd_banco = a.cd_banco " +
                                    "and x.nr_lanctocheque = a.nr_lanctocheque " +
                                    "and z.cd_contager = '" + cbContaGer.SelectedValue.ToString() + "' " +
                                    "and isnull(y.st_estorno, 'N') <> 'S')"
                    }
                }, "isnull(sum(a.vl_titulo), 0)");
                Tot_Ch_PAG.Value = obj != null?decimal.Parse(obj.ToString()) : decimal.Zero;

                VL_DifCX.Value = TCN_LanCaixa.BuscarSaldoCaixa(cbContaGer.SelectedValue.ToString(), null);
                //Verificar se a conta e de compensacao
                object obj_conta = new TCD_CadContaGer().BuscarEscalar(
                    new TpBusca[]
                {
                    new TpBusca()
                    {
                        vNM_Campo = "a.cd_contager",
                        vOperador = "=",
                        vVL_Busca = "'" + cbContaGer.SelectedValue.ToString().Trim() + "'"
                    },
                    new TpBusca()
                    {
                        vNM_Campo = "isnull(a.st_contacompensacao, 'N')",
                        vOperador = "=",
                        vVL_Busca = "'S'"
                    }
                }, "1");
                VL_SaldoLiquido.Value = VL_DifCX.Value - (obj_conta == null ? Tot_Ch_PAG.Value : Tot_Ch_PAG.Value * -1);
                //Buscar Aplicações
                bsSaldoAplic.DataSource = new TCD_SaldoContaGer().Select(string.Empty, cbContaGer.SelectedValue.ToString());
                if (bsSaldoAplic.Count > 0)
                {
                    tlpTotais.ColumnStyles[1].Width = 405;
                }
                else
                {
                    tlpTotais.ColumnStyles[1].Width = 0;
                }
                bindingSourceCaixa_PositionChanged(this, new EventArgs());
            }
            else
            {
                MessageBox.Show("Obrigatório informar conta gerencial.", "Mensagem", MessageBoxButtons.OK, MessageBoxIcon.Information);
            }
        }
Esempio n. 14
0
        public static string Deletar(TRegistro_Lan_RetencaoFinanceiraGMO val, TObjetoBanco banco)
        {
            bool st_transacao = false;
            TCD_Lan_RetencaoFinanceiraGMO cd = new TCD_Lan_RetencaoFinanceiraGMO();

            try
            {
                if (banco == null)
                {
                    st_transacao = cd.CriarBanco_Dados(true);
                }
                else
                {
                    cd.Banco_Dados = banco;
                }
                cd.DeletarRetencaoFinanceiraGMO(val);
                //Excluir Royalties GMO
                TCN_LanRoyaltiesGMO.Buscar(val.Id_LanctoGMO.ToString(),
                                           string.Empty,
                                           string.Empty,
                                           string.Empty,
                                           string.Empty,
                                           string.Empty,
                                           string.Empty,
                                           cd.Banco_Dados).ForEach(p => TCN_LanRoyaltiesGMO.DeletarLanRoyaltiesGMO(p, cd.Banco_Dados));
                //Estornar caixa
                CamadaNegocio.Financeiro.Caixa.TCN_LanCaixa.Busca(val.Cd_ContaGer,
                                                                  val.Cd_LanctoCaixa.ToString(),
                                                                  val.Cd_Empresa,
                                                                  string.Empty,
                                                                  string.Empty,
                                                                  string.Empty,
                                                                  string.Empty,
                                                                  string.Empty,
                                                                  decimal.Zero,
                                                                  decimal.Zero,
                                                                  string.Empty,
                                                                  string.Empty,
                                                                  string.Empty,
                                                                  false,
                                                                  string.Empty,
                                                                  decimal.Zero,
                                                                  false,
                                                                  cd.Banco_Dados).ForEach(p => TCN_LanCaixa.EstornarCaixa(p, null, cd.Banco_Dados));
                //Estornar liquidacao
                TCN_LanLiquidacao.Busca(val.Cd_Empresa,
                                        val.Nr_Lancto.Value,
                                        val.Cd_Parcela.Value,
                                        Convert.ToInt16(val.Id_Liquid),
                                        val.Cd_ContaGer,
                                        decimal.Zero,
                                        decimal.Zero,
                                        decimal.Zero,
                                        decimal.Zero,
                                        decimal.Zero,
                                        decimal.Zero,
                                        decimal.Zero,
                                        false,
                                        string.Empty,
                                        0,
                                        string.Empty,
                                        cd.Banco_Dados).ForEach(p => TCN_LanLiquidacao.CancelarLiquidacao(p, null, cd.Banco_Dados));

                if (st_transacao)
                {
                    cd.Banco_Dados.Commit_Tran();
                }
                return("OK");
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    cd.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro excluir retenção: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    cd.deletarBanco_Dados();
                }
            }
        }
Esempio n. 15
0
        public static string ProcessarLote(TRegistro_LoteBloqueto val, BancoDados.TObjetoBanco banco)
        {
            bool             st_transacao = false;
            TCD_LoteBloqueto qtb_lote     = new TCD_LoteBloqueto();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_lote.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_lote.Banco_Dados = banco;
                }
                //Lancamento de caixa no valor liquido
                //Buscar historico na configuracao do banco
                TList_CadCFGBanco lCfg = Cadastros.TCN_CadCFGBanco.Buscar(val.Id_configstr,
                                                                          string.Empty,
                                                                          string.Empty,
                                                                          string.Empty,
                                                                          string.Empty,
                                                                          string.Empty,
                                                                          string.Empty,
                                                                          string.Empty,
                                                                          1,
                                                                          qtb_lote.Banco_Dados);
                if (lCfg.Count > 0)
                {
                    if (string.IsNullOrEmpty(lCfg[0].Cd_historico_desconto))
                    {
                        throw new Exception("Não existe configuração de historico para desconto de bloquetos\r\n" +
                                            "para a configuração " + val.Ds_config.Trim());
                    }
                    decimal total_bloquetos = val.ListaBloqueto.Sum(p => p.Vl_documento);
                    string  retorno         = TCN_LanCaixa.GravaLanCaixa(
                        new TRegistro_LanCaixa()
                    {
                        Cd_ContaGer    = val.Cd_contager,
                        Cd_Empresa     = val.Cd_empresa,
                        Cd_Historico   = lCfg[0].Cd_historico_desconto,
                        ComplHistorico = "DESCONTO DE BLOQUETOS DO LOTE " + val.Id_lotestr,
                        Dt_lancto      = val.Dt_processamento,
                        Nr_Docto       = "LOTE" + val.Id_lotestr,
                        St_Estorno     = "N",
                        Vl_PAGAR       = 0,
                        Vl_RECEBER     = total_bloquetos
                    }, qtb_lote.Banco_Dados);
                    //Amarrar este lancamento de caixa ao lote
                    //com o campo TP_Registro = D (DESCONTO)
                    TCN_Bloqueto_X_Caixa.Gravar(new TRegistro_Lote_X_Caixa()
                    {
                        Cd_contager    = val.Cd_contager,
                        Cd_lanctocaixa = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(retorno, "@P_CD_LANCTOCAIXA")),
                        Id_lote        = val.Id_lote.Value,
                        Tp_registro    = "D"
                    }, qtb_lote.Banco_Dados);
                    //Lancar Taxa
                    if (string.IsNullOrEmpty(lCfg[0].Cd_historico_taxadesc))
                    {
                        throw new Exception("Não existe configuração de historico para taxa desconto de bloquetos\r\n" +
                                            "para a configuração " + val.Ds_config.Trim());
                    }
                    retorno = TCN_LanCaixa.GravaLanCaixa(new TRegistro_LanCaixa()
                    {
                        Cd_ContaGer    = val.Cd_contager,
                        Cd_Empresa     = val.Cd_empresa,
                        Cd_Historico   = lCfg[0].Cd_historico_taxadesc,
                        ComplHistorico = "TAXA DESCONTO BLOQUETOS DO LOTE " + val.Id_lotestr,
                        Dt_lancto      = val.Dt_processamento,
                        Nr_Docto       = "LOTE" + val.Id_lote,
                        St_Estorno     = "N",
                        Vl_PAGAR       = val.Vl_taxa,
                        Vl_RECEBER     = decimal.Zero
                    }, qtb_lote.Banco_Dados);
                    //Amarrar este lancamento de caixa ao lote
                    //com o campo TP_Registro = T (TAXA)
                    TCN_Bloqueto_X_Caixa.Gravar(new TRegistro_Lote_X_Caixa()
                    {
                        Cd_contager    = val.Cd_contager,
                        Cd_lanctocaixa = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(retorno, "@P_CD_LANCTOCAIXA")),
                        Id_lote        = val.Id_lote.Value,
                        Tp_registro    = "T"
                    }, qtb_lote.Banco_Dados);
                    //Gravar centro resultado taxa cobrança
                    if (!string.IsNullOrEmpty(lCfg[0].Cd_centroresultTXCob))
                    {
                        //Gravar Lancto Resultado
                        string id = CCustoLan.TCN_LanCCustoLancto.Gravar(
                            new CamadaDados.Financeiro.CCustoLan.TRegistro_LanCCustoLancto()
                        {
                            Cd_empresa      = val.Cd_empresa,
                            Cd_centroresult = lCfg[0].Cd_centroresultTXCob,
                            Vl_lancto       = val.Vl_taxa,
                            Dt_lancto       = val.Dt_processamento
                        }, qtb_lote.Banco_Dados);
                        //Amarrar Lancto a Caixa
                        TCN_Caixa_X_CCusto.Gravar(new TRegistro_Caixa_X_CCusto()
                        {
                            Cd_contager    = val.Cd_contager,
                            Cd_lanctocaixa = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(retorno, "@P_CD_LANCTOCAIXA")),
                            Id_ccustolan   = decimal.Parse(id)
                        }, qtb_lote.Banco_Dados);
                    }
                    val.ListaBloqueto.ForEach(p =>
                    {
                        //Alterar status dos bloquetos para D - Descontado
                        p.St_registro = "D";
                        TCN_Titulo.Gravar(p, qtb_lote.Banco_Dados);
                        //Criar lista de lote x titulo
                        val.lBloquetos.Add(new TRegistro_Lote_X_Titulo()
                        {
                            Cd_empresa   = p.Cd_empresa,
                            Cd_parcela   = p.Cd_parcela,
                            Id_cobranca  = p.Id_cobranca,
                            Id_lote      = val.Id_lote.Value,
                            Nr_lancto    = p.Nr_lancto,
                            Vl_documento = p.Vl_documento
                        });
                    });
                    //Calcular valor taxa por bloqueto
                    val.lBloquetos.ForEach(p => p.Vl_taxa = Math.Round(((val.Vl_taxa / total_bloquetos) * p.Vl_documento), 2));
                    decimal total_taxa = val.lBloquetos.Sum(p => p.Vl_taxa);
                    if (val.Vl_taxa != total_taxa)
                    {
                        val.lBloquetos[val.lBloquetos.Count - 1].Vl_taxa += (val.Vl_taxa - total_taxa);
                    }
                    //Gravar lote x titulo com o valor da taxa
                    val.lBloquetos.ForEach(p => TCN_Lote_X_Titulo.Gravar(p, qtb_lote.Banco_Dados));
                    //Limpar lista de bloquetos para
                    //que a gravacao do lote nao altere
                    //novamente a lista de bloquetos
                    val.ListaBloqueto.Clear();
                    //Alterar status do lote para processado
                    val.St_registro = "P";
                    Gravar(val, qtb_lote.Banco_Dados);
                    if (st_transacao)
                    {
                        qtb_lote.Banco_Dados.Commit_Tran();
                    }
                    return(retorno);
                }
                else
                {
                    throw new Exception("Não existe configuração para emissão de bloquetos para a empresa " + val.Cd_empresa.Trim() +
                                        " e conta gerencial " + val.Cd_contager.Trim());
                }
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_lote.Banco_Dados.RollBack_Tran();
                }
                throw new Exception(ex.Message);
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_lote.deletarBanco_Dados();
                }
            }
        }