Ejemplo n.º 1
0
        public static void EnviarLoteCH(TRegistro_LoteCH val, BancoDados.TObjetoBanco banco)
        {
            bool       st_transacao = false;
            TCD_LoteCH qtb_lote     = new TCD_LoteCH();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_lote.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_lote.Banco_Dados = banco;
                }

                val.lCheques.ForEach(p =>
                {
                    //Realizar a transferencia dos cheques entre contas
                    p.Cd_contager_destino = val.Cd_contager;
                    p.Dt_compensacao      = val.Dt_enviolote;
                    //Setar status do cheque para enviado
                    p.Status_compensado = "E";     //Enviado
                    TCN_LanTitulo.TransferirTitulo(p, qtb_lote.Banco_Dados);
                    TCN_LanTitulo.GravarTitulo(p, qtb_lote.Banco_Dados);
                });
                //Gravar lote cheque
                val.St_registro = "E"; //Enviado
                val.Cd_contager = string.Empty;
                GravarLoteCH(val, qtb_lote.Banco_Dados);
                if (st_transacao)
                {
                    qtb_lote.Banco_Dados.Commit_Tran();
                }
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_lote.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro enviar lote: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_lote.deletarBanco_Dados();
                }
            }
        }
Ejemplo n.º 2
0
        public static string GravarDevolucaoCheque(TRegistro_DevolucaoCheque val, BancoDados.TObjetoBanco banco)
        {
            bool st_transacao           = false;
            TCD_DevolucaoCheque qtb_dev = new TCD_DevolucaoCheque();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_dev.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_dev.Banco_Dados = banco;
                }

                string retorno = string.Empty;
                if (val.lCheques.Count > 0)
                {
                    CamadaDados.Financeiro.Cadastros.TList_CFGCheque lCfgCheque =
                        CamadaNegocio.Financeiro.Cadastros.TCN_CFGCheque.Buscar(val.lCheques[0].Cd_empresa,
                                                                                string.Empty,
                                                                                string.Empty,
                                                                                string.Empty,
                                                                                string.Empty,
                                                                                string.Empty,
                                                                                string.Empty,
                                                                                string.Empty,
                                                                                string.Empty,
                                                                                string.Empty,
                                                                                1,
                                                                                string.Empty,
                                                                                qtb_dev.Banco_Dados);
                    if (lCfgCheque.Count < 1)
                    {
                        throw new Exception("Não existe configuração de cheque para a empresa " + val.lCheques[0].Cd_empresa.Trim());
                    }
                    if (val.lCheques[0].Tp_titulo.Trim().ToUpper().Equals("P"))
                    {
                        if (lCfgCheque[0].Cd_histdev_chemitidos.Trim().Equals(string.Empty))
                        {
                            throw new Exception("Não existe historico de devolução de cheques emitidos configurado para a empresa " + val.lCheques[0].Cd_empresa.Trim());
                        }
                        if (lCfgCheque[0].Cd_contadev_chemitidos.Trim().Equals(string.Empty))
                        {
                            throw new Exception("Não existe conta gerencial de devolução de cheques emitidos configurado para a empresa " + val.lCheques[0].Cd_empresa.Trim());
                        }
                    }
                    else
                    {
                        if (lCfgCheque[0].Cd_histdev_chrecebidos.Trim().Equals(string.Empty))
                        {
                            throw new Exception("Não existe historico de devolução de cheques recebidos configurado para a empresa " + val.lCheques[0].Cd_empresa.Trim());
                        }
                        if (lCfgCheque[0].Cd_contadev_chrecebidos.Trim().Equals(string.Empty))
                        {
                            throw new Exception("Não existe conta gerencial de devolução de cheques recebidos configurado para a empresa " + val.lCheques[0].Cd_empresa.Trim());
                        }
                    }
                    val.lCheques.ForEach(p =>
                    {
                        //Gravar devolucao cheque
                        val.Cd_banco        = p.Cd_banco;
                        val.Cd_empresa      = p.Cd_empresa;
                        val.Nr_lanctocheque = p.Nr_lanctocheque;
                        retorno             = qtb_dev.GravarDevolucaoCheque(val);
                        //Buscar lancamentos de caixa com st_titulo = S e alterar
                        CamadaDados.Financeiro.Caixa.TList_LanCaixa lCaixa =
                            new CamadaDados.Financeiro.Caixa.TCD_LanCaixa().Select(

                                new TpBusca[]
                        {
                            new TpBusca()
                            {
                                vNM_Campo = "isnull(a.st_estorno, 'N')",
                                vVL_Busca = "'S'",
                                vOperador = "<>"
                            },
                            new TpBusca()
                            {
                                vNM_Campo = "isnull(a.st_titulo, '')",
                                vOperador = "=",
                                vVL_Busca = "'S'"
                            },
                            new TpBusca()
                            {
                                vNM_Campo = string.Empty,
                                vOperador = "exists",
                                vVL_Busca = "(select 1 from tb_fin_titulo_x_caixa x " +
                                            "where x.cd_contager = a.cd_contager " +
                                            "and x.cd_lanctocaixa = a.cd_lanctocaixa " +
                                            "and x.cd_empresa = '" + val.Cd_empresa.Trim() + "' " +
                                            "and x.cd_banco = '" + val.Cd_banco.Trim() + "' " +
                                            "and x.nr_lanctocheque = " + val.Nr_lanctocheque.ToString() + " " +
                                            "and isnull(x.tp_lancto, '')<>'GC')"
                            }
                        }, 0, string.Empty);
                        lCaixa.ForEach(v =>
                        {
                            v.St_Titulo = "N";
                            CamadaNegocio.Financeiro.Caixa.TCN_LanCaixa.AlterarLanCaixa(v, qtb_dev.Banco_Dados);
                        });
                        if (p.Tp_titulo.Trim().ToUpper().Equals("P"))
                        {
                            //Cheques emitidos
                            //Gravar caixa dando entrada do cheque na conta compensada
                            string ret_caixaorig = CamadaNegocio.Financeiro.Caixa.TCN_LanCaixa.GravaLanCaixa(
                                new CamadaDados.Financeiro.Caixa.TRegistro_LanCaixa()
                            {
                                Cd_Empresa     = p.Cd_empresa,
                                Cd_ContaGer    = p.Cd_contager,
                                Nr_Docto       = p.Nr_cheque.Trim(),
                                Dt_lancto      = val.Dt_devolucao,
                                Cd_Historico   = lCfgCheque[0].Cd_histdev_chemitidos,
                                Vl_RECEBER     = p.Vl_titulo,
                                Vl_PAGAR       = decimal.Zero,
                                ComplHistorico = "DEVOLUCAO CHEQUE EMITIDO " + p.Nr_cheque.Trim(),
                                St_Titulo      = "N"
                            }, qtb_dev.Banco_Dados);
                            //Gravar cheque X Caixa
                            TCN_TituloXCaixa.GravarTituloCaixa(
                                new TRegistro_LanTituloXCaixa()
                            {
                                Cd_banco        = p.Cd_banco,
                                Cd_contager     = p.Cd_contager,
                                Cd_empresa      = p.Cd_empresa,
                                Cd_lanctocaixa  = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(ret_caixaorig, "@P_CD_LANCTOCAIXA")),
                                Nr_lanctocheque = p.Nr_lanctocheque,
                                Tp_caixa        = "N"
                            }, qtb_dev.Banco_Dados);
                            //Gravar caixa dando saida no cheque na conta de devolucao
                            string ret_caixa = CamadaNegocio.Financeiro.Caixa.TCN_LanCaixa.GravaLanCaixa(
                                new CamadaDados.Financeiro.Caixa.TRegistro_LanCaixa()
                            {
                                Cd_Empresa     = p.Cd_empresa,
                                Cd_ContaGer    = lCfgCheque[0].Cd_contadev_chemitidos,
                                Nr_Docto       = p.Nr_cheque.Trim(),
                                Dt_lancto      = val.Dt_devolucao,
                                Cd_Historico   = lCfgCheque[0].Cd_histdev_chemitidos,
                                Vl_RECEBER     = decimal.Zero,
                                Vl_PAGAR       = p.Vl_titulo,
                                ComplHistorico = "DEVOLUCAO CHEQUE EMITIDO " + p.Nr_cheque.Trim(),
                                St_Titulo      = "S"
                            }, qtb_dev.Banco_Dados);
                            //Gravar cheque X Caixa
                            TCN_TituloXCaixa.GravarTituloCaixa(
                                new TRegistro_LanTituloXCaixa()
                            {
                                Cd_banco        = p.Cd_banco,
                                Cd_contager     = lCfgCheque[0].Cd_contadev_chemitidos,
                                Cd_empresa      = p.Cd_empresa,
                                Cd_lanctocaixa  = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(ret_caixa, "@P_CD_LANCTOCAIXA")),
                                Nr_lanctocheque = p.Nr_lanctocheque,
                                Tp_caixa        = "S"
                            }, qtb_dev.Banco_Dados);
                        }
                        else
                        {
                            //Cheques recebidos
                            //Gravar caixa dando saida do cheque da conta que foi compensado
                            string ret_caixaorig = CamadaNegocio.Financeiro.Caixa.TCN_LanCaixa.GravaLanCaixa(
                                new CamadaDados.Financeiro.Caixa.TRegistro_LanCaixa()
                            {
                                Cd_Empresa     = p.Cd_empresa,
                                Cd_ContaGer    = p.Cd_contager,
                                Nr_Docto       = p.Nr_cheque.Trim(),
                                Dt_lancto      = val.Dt_devolucao,
                                Cd_Historico   = lCfgCheque[0].Cd_histdev_chrecebidos,
                                Vl_RECEBER     = decimal.Zero,
                                Vl_PAGAR       = p.Vl_titulo,
                                ComplHistorico = "DEVOLUCAO CHEQUE RECEBIDO " + p.Nr_cheque.Trim(),
                                St_Titulo      = "N"
                            }, qtb_dev.Banco_Dados);
                            //Gravar cheque X Caixa
                            TCN_TituloXCaixa.GravarTituloCaixa(
                                new TRegistro_LanTituloXCaixa()
                            {
                                Cd_banco        = p.Cd_banco,
                                Cd_contager     = p.Cd_contager,
                                Cd_empresa      = p.Cd_empresa,
                                Cd_lanctocaixa  = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(ret_caixaorig, "@P_CD_LANCTOCAIXA")),
                                Nr_lanctocheque = p.Nr_lanctocheque,
                                Tp_caixa        = "N"
                            }, qtb_dev.Banco_Dados);
                            //Gravar caixa dando entrada no cheque na conta de devolucao
                            string ret_caixa = CamadaNegocio.Financeiro.Caixa.TCN_LanCaixa.GravaLanCaixa(
                                new CamadaDados.Financeiro.Caixa.TRegistro_LanCaixa()
                            {
                                Cd_Empresa     = p.Cd_empresa,
                                Cd_ContaGer    = lCfgCheque[0].Cd_contadev_chrecebidos,
                                Nr_Docto       = p.Nr_cheque.Trim(),
                                Dt_lancto      = val.Dt_devolucao,
                                Cd_Historico   = lCfgCheque[0].Cd_histdev_chrecebidos,
                                Vl_RECEBER     = p.Vl_titulo,
                                Vl_PAGAR       = decimal.Zero,
                                ComplHistorico = "DEVOLUCAO CHEQUE RECEBIDO " + p.Nr_cheque.Trim(),
                                St_Titulo      = "S"
                            }, qtb_dev.Banco_Dados);
                            //Gravar cheque X Caixa
                            TCN_TituloXCaixa.GravarTituloCaixa(
                                new TRegistro_LanTituloXCaixa()
                            {
                                Cd_banco        = p.Cd_banco,
                                Cd_contager     = lCfgCheque[0].Cd_contadev_chrecebidos,
                                Cd_empresa      = p.Cd_empresa,
                                Cd_lanctocaixa  = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(ret_caixa, "@P_CD_LANCTOCAIXA")),
                                Nr_lanctocheque = p.Nr_lanctocheque,
                                Tp_caixa        = "S"
                            }, qtb_dev.Banco_Dados);
                        }
                        //Verificar se o lancamento de caixa esta amarrado ao repasse de cheque
                        CamadaDados.Financeiro.Titulo.TList_Rastreab_ChTerceiro lChequesRep =
                            CamadaNegocio.Financeiro.Titulo.TCN_Rastreab_ChTerceiro.Buscar(val.Cd_empresa,
                                                                                           val.Cd_banco,
                                                                                           val.Nr_lanctocheque.Value.ToString(),
                                                                                           string.Empty,
                                                                                           string.Empty,
                                                                                           string.Empty,
                                                                                           0,
                                                                                           string.Empty,
                                                                                           qtb_dev.Banco_Dados);
                        //Excluir os lancamentos de repasse
                        lChequesRep.ForEach(v =>
                                            TCN_Rastreab_ChTerceiro.DeletarRastreab_ChTerceiro(new TRegistro_Rastreab_ChTerceiro()
                        {
                            Cd_empresa       = v.Cd_empresa,
                            Cd_banco         = v.Cd_banco,
                            Nr_lanctocheque  = v.Nr_lanctocheque,
                            Cd_clifor_origem = v.Cd_clifor_origem
                        }, qtb_dev.Banco_Dados));
                        //Verificar se titulo esta a um lote de custodia
                        TCN_LoteCustodia_X_Titulo.Buscar(string.Empty,
                                                         val.Cd_empresa,
                                                         val.Nr_lanctocheque.Value.ToString(),
                                                         val.Cd_banco,
                                                         qtb_dev.Banco_Dados).ForEach(v => TCN_LoteCustodia_X_Titulo.Excluir(v, qtb_dev.Banco_Dados));
                        //Mudar status do cheque para devolvido
                        p.Status_compensado = "V";
                        TCN_LanTitulo.GravarTitulo(p, qtb_dev.Banco_Dados);
                    });
                }
                else
                {
                    qtb_dev.GravarDevolucaoCheque(val);
                }
                if (st_transacao)
                {
                    qtb_dev.Banco_Dados.Commit_Tran();
                }
                return(retorno);
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_dev.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro gravar devolucao cheque: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_dev.deletarBanco_Dados();
                }
            }
        }
Ejemplo n.º 3
0
        public static void ProcessarLoteCH(TRegistro_LoteCH val, BancoDados.TObjetoBanco banco)
        {
            bool       st_transacao = false;
            TCD_LoteCH qtb_lote     = new TCD_LoteCH();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_lote.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_lote.Banco_Dados = banco;
                }
                //Buscar config para descontar cheque
                CamadaDados.Financeiro.Cadastros.TList_CFGCheque lCfg =
                    CamadaNegocio.Financeiro.Cadastros.TCN_CFGCheque.Buscar(val.Cd_empresa,
                                                                            string.Empty,
                                                                            string.Empty,
                                                                            string.Empty,
                                                                            string.Empty,
                                                                            string.Empty,
                                                                            string.Empty,
                                                                            string.Empty,
                                                                            string.Empty,
                                                                            string.Empty,
                                                                            1,
                                                                            string.Empty,
                                                                            qtb_lote.Banco_Dados);
                if (lCfg.Count < 1)
                {
                    throw new Exception("Não existe configuração para processar desconto de cheques.");
                }
                if (lCfg[0].Cd_historico_desconto.Trim().Equals(string.Empty))
                {
                    throw new Exception("Não existe configuração de historico de desconto para processar cheques.");
                }
                if (lCfg[0].Cd_historico_taxa.Trim().Equals(string.Empty))
                {
                    throw new Exception("Não existe configuração de historico de taxa para processar cheques.");
                }
                if (lCfg[0].Cd_historico_creddesconto.Trim().Equals(string.Empty))
                {
                    throw new Exception("Não existe configuração de historico de credito de desconto para processar cheques.");
                }
                //Total cheque descontar
                decimal tot_ch_descontar = val.lCheques.Where(p => p.St_conciliar).Sum(p => p.Vl_titulo);
                //Total taxa
                decimal tot_taxa = decimal.Zero;
                int     cont     = 0;
                //Buscar conta de compensacao do cheque
                object obj = new CamadaDados.Financeiro.Cadastros.TCD_CadContaGer().BuscarEscalar(
                    new TpBusca[]
                {
                    new TpBusca()
                    {
                        vNM_Campo = "a.cd_contager_compensacao",
                        vOperador = "=",
                        vVL_Busca = "'" + val.lCheques[0].Cd_contager.Trim() + "'"
                    }
                }, "a.cd_contager");
                if (obj == null)
                {
                    throw new Exception("Não existe conta de compensação configurada para a conta gerencial " + val.lCheques[0].Cd_contager.Trim());
                }
                if (obj.ToString().Trim().Equals(string.Empty))
                {
                    throw new Exception("Não existe conta de compensação configurada para a conta gerencial " + val.lCheques[0].Cd_contager.Trim());
                }
                val.lCheques.ForEach(p =>
                {
                    if (p.St_conciliar)
                    {
                        //Compensar cheque descontado
                        p.Dt_compensacao      = val.Dt_processamento;
                        p.Cd_contager_destino = obj.ToString();
                        CamadaNegocio.Financeiro.Titulo.TCN_LanTitulo.CompensarCheques(
                            new TList_RegLanTitulo()
                        {
                            p
                        },
                            qtb_lote.Banco_Dados);
                        decimal taxa = Math.Round((val.Vl_taxa * (p.Vl_titulo / tot_ch_descontar * 100) / 100), 2);
                        if (cont.Equals(val.lCheques.Count - 1))
                        {
                            taxa += (val.Vl_taxa - (tot_taxa + taxa));
                        }
                        //Gravar lancamento de caixa devolvendo credito adiantado pelo banco
                        string ret_caixa = CamadaNegocio.Financeiro.Caixa.TCN_LanCaixa.GravaLanCaixa(
                            new CamadaDados.Financeiro.Caixa.TRegistro_LanCaixa()
                        {
                            Cd_ContaGer    = obj.ToString(),
                            Cd_Empresa     = p.Cd_empresa,
                            Cd_Historico   = lCfg[0].Cd_historico_desconto,
                            Cd_LanctoCaixa = 0,
                            ComplHistorico = "DEVOLUCAO CREDITO DESCONTO CHEQUE " + p.Nr_cheque.Trim(),
                            Dt_lancto      = val.Dt_processamento,
                            NM_Clifor      = p.Nomeclifor,
                            Nr_Docto       = p.Nr_cheque,
                            Vl_PAGAR       = Math.Round(p.Vl_titulo - taxa, 2),
                            Vl_RECEBER     = decimal.Zero
                        }, qtb_lote.Banco_Dados);
                        //Gravar Cheque X Caixa
                        CamadaNegocio.Financeiro.Titulo.TCN_TituloXCaixa.GravarTituloCaixa(
                            new TRegistro_LanTituloXCaixa()
                        {
                            Cd_banco        = p.Cd_banco,
                            Cd_contager     = obj.ToString(),
                            Cd_empresa      = p.Cd_empresa,
                            Cd_lanctocaixa  = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(ret_caixa, "@P_CD_LANCTOCAIXA")),
                            Nr_lanctocheque = p.Nr_lanctocheque
                        }, qtb_lote.Banco_Dados);
                        //Gravar Lote X Caixa
                        CamadaNegocio.Financeiro.Titulo.TCN_LoteCH_X_Caixa.GravarLoteCH_X_Caixa(
                            new TRegistro_LoteCH_X_Caixa()
                        {
                            Cd_banco        = p.Cd_banco,
                            Cd_contager     = obj.ToString(),
                            Cd_empresa      = p.Cd_empresa,
                            Cd_lanctocaixa  = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(ret_caixa, "@P_CD_LANCTOCAIXA")),
                            Nr_lanctocheque = p.Nr_lanctocheque
                        }, qtb_lote.Banco_Dados);
                        //Gravar lancamento de caixa debitando taxa cobrada pelo banco
                        string ret_taxa = CamadaNegocio.Financeiro.Caixa.TCN_LanCaixa.GravaLanCaixa(
                            new CamadaDados.Financeiro.Caixa.TRegistro_LanCaixa()
                        {
                            Cd_ContaGer    = obj.ToString(),
                            Cd_Empresa     = p.Cd_empresa,
                            Cd_Historico   = lCfg[0].Cd_historico_taxa,
                            Cd_LanctoCaixa = 0,
                            ComplHistorico = "TAXA DESCONTO CHEQUE " + p.Nr_cheque.Trim(),
                            Dt_lancto      = val.Dt_processamento,
                            NM_Clifor      = p.Nomeclifor,
                            Nr_Docto       = p.Nr_cheque,
                            Vl_PAGAR       = taxa,
                            Vl_RECEBER     = decimal.Zero
                        }, qtb_lote.Banco_Dados);
                        //Gravar cheque X Caixa
                        CamadaNegocio.Financeiro.Titulo.TCN_TituloXCaixa.GravarTituloCaixa(
                            new TRegistro_LanTituloXCaixa()
                        {
                            Cd_banco        = p.Cd_banco,
                            Cd_contager     = obj.ToString(),
                            Cd_empresa      = p.Cd_empresa,
                            Cd_lanctocaixa  = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(ret_taxa, "@P_CD_LANCTOCAIXA")),
                            Nr_lanctocheque = p.Nr_lanctocheque
                        }, qtb_lote.Banco_Dados);
                        //Gravar Lote X Caixa
                        CamadaNegocio.Financeiro.Titulo.TCN_LoteCH_X_Caixa.GravarLoteCH_X_Caixa(
                            new TRegistro_LoteCH_X_Caixa()
                        {
                            Cd_banco        = p.Cd_banco,
                            Cd_contager     = obj.ToString(),
                            Cd_empresa      = p.Cd_empresa,
                            Cd_lanctocaixa  = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(ret_taxa, "@P_CD_LANCTOCAIXA")),
                            Nr_lanctocheque = p.Nr_lanctocheque
                        }, qtb_lote.Banco_Dados);
                        //Totalizar taxas
                        tot_taxa += taxa;
                    }
                    else
                    {
                        //Os cheques que nao forem descontados,
                        //transferir de volta para a conta de origem
                        CamadaDados.Financeiro.Titulo.TList_TransfTitulo lTransf =
                            CamadaNegocio.Financeiro.Titulo.TCN_TransfTitulo.Buscar(p.Cd_empresa,
                                                                                    string.Empty,
                                                                                    p.Cd_contager,
                                                                                    decimal.Zero,
                                                                                    decimal.Zero,
                                                                                    decimal.Zero,
                                                                                    p.Cd_banco,
                                                                                    1,
                                                                                    string.Empty,
                                                                                    qtb_lote.Banco_Dados);
                        if (lTransf.Count < 1)
                        {
                            throw new Exception("Registro transferencia nao encontrado.");
                        }
                        //Realizar a transferencia dos cheques entre contas
                        p.Cd_contager_destino = lTransf[0].Cd_conta_orig;
                        p.Dt_compensacao      = val.Dt_processamento;
                        //Setar status do cheque para enviado
                        p.Status_compensado = "N";     //A Compensar
                        TCN_LanTitulo.TransferirTitulo(p, qtb_lote.Banco_Dados);
                        //Gravar somente o cheque sem mecher no lancamento de caixa
                        p.St_lancarcaixa = false;
                        TCN_LanTitulo.GravarTitulo(p, qtb_lote.Banco_Dados);
                        //Deletar amarracao do cheque com o lote
                        TCN_LoteCH_X_Titulo.DeletarLoteCh_X_Titulo(
                            new TRegistro_LoteCH_X_Titulo()
                        {
                            Cd_banco        = p.Cd_banco,
                            Cd_empresa      = p.Cd_empresa,
                            Id_lote         = val.Id_lote,
                            Nr_lanctocheque = p.Nr_lanctocheque
                        }, qtb_lote.Banco_Dados);
                    }
                    cont++;
                });
                //Gravar lancamento de caixa creditando o valor adiantado pelo banco
                string ret_cred = CamadaNegocio.Financeiro.Caixa.TCN_LanCaixa.GravaLanCaixa(
                    new CamadaDados.Financeiro.Caixa.TRegistro_LanCaixa()
                {
                    Cd_ContaGer    = obj.ToString(),
                    Cd_Empresa     = val.Cd_empresa,
                    Cd_Historico   = lCfg[0].Cd_historico_creddesconto,
                    Cd_LanctoCaixa = 0,
                    ComplHistorico = "CREDITO DESCONTO CHEQUE DO LOTE" + val.Id_lote.ToString(),
                    Dt_lancto      = val.Dt_processamento,
                    NM_Clifor      = string.Empty,
                    Nr_Docto       = val.Id_lote.ToString(),
                    Vl_PAGAR       = decimal.Zero,
                    Vl_RECEBER     = val.Vl_credito
                }, qtb_lote.Banco_Dados);
                //Gravar lote
                val.St_registro    = "P";//Processado
                val.Cd_contager    = string.Empty;
                val.Cd_lanctocaixa = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(ret_cred, "@P_CD_LANCTOCAIXA"));
                qtb_lote.GravarLoteCH(val);
                if (st_transacao)
                {
                    qtb_lote.Banco_Dados.Commit_Tran();
                }
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_lote.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro processar lote: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_lote.deletarBanco_Dados();
                }
            }
        }
Ejemplo n.º 4
0
        public static string DeletarLoteCH(TRegistro_LoteCH val, BancoDados.TObjetoBanco banco)
        {
            if (val.St_registro.Trim().ToUpper().Equals("P"))
            {
                throw new Exception("Não é permitido excluir lote <PROCESSADO>.");
            }
            bool       st_transacao = false;
            TCD_LoteCH qtb_lote     = new TCD_LoteCH();

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_lote.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_lote.Banco_Dados = banco;
                }
                if (val.St_registro.Trim().ToUpper().Equals("E"))
                {
                    val.lCheques.ForEach(p =>
                    {
                        //transferir os cheques de volta para a conta de origem
                        CamadaDados.Financeiro.Titulo.TList_TransfTitulo lTransf =
                            CamadaNegocio.Financeiro.Titulo.TCN_TransfTitulo.Buscar(p.Cd_empresa,
                                                                                    string.Empty,
                                                                                    p.Cd_contager,
                                                                                    decimal.Zero,
                                                                                    decimal.Zero,
                                                                                    decimal.Zero,
                                                                                    p.Cd_banco,
                                                                                    1,
                                                                                    string.Empty,
                                                                                    qtb_lote.Banco_Dados);
                        if (lTransf.Count < 1)
                        {
                            throw new Exception("Registro transferencia nao encontrado.");
                        }
                        //Realizar a transferencia dos cheques entre contas
                        p.Cd_contager_destino = lTransf[0].Cd_conta_orig;
                        p.Dt_compensacao      = val.Dt_enviolote;
                        //Setar status do cheque para enviado
                        p.Status_compensado = "N";     //A Compensar
                        TCN_LanTitulo.TransferirTitulo(p, qtb_lote.Banco_Dados);
                        //Gravar somente o cheque sem mecher no lancamento de caixa
                        p.St_lancarcaixa = false;
                        TCN_LanTitulo.GravarTitulo(p, qtb_lote.Banco_Dados);
                        //Deletar amarracao do cheque com o lote
                        TCN_LoteCH_X_Titulo.DeletarLoteCh_X_Titulo(
                            new TRegistro_LoteCH_X_Titulo()
                        {
                            Cd_banco        = p.Cd_banco,
                            Cd_empresa      = p.Cd_empresa,
                            Id_lote         = val.Id_lote,
                            Nr_lanctocheque = p.Nr_lanctocheque
                        }, qtb_lote.Banco_Dados);
                    });
                }
                //Deletar cheques amarrados
                val.lCheques.ForEach(p => TCN_LoteCH_X_Titulo.DeletarLoteCh_X_Titulo(
                                         new TRegistro_LoteCH_X_Titulo()
                {
                    Cd_banco        = p.Cd_banco,
                    Cd_empresa      = p.Cd_empresa,
                    Id_lote         = val.Id_lote,
                    Nr_lanctocheque = p.Nr_lanctocheque
                }, qtb_lote.Banco_Dados));
                //Deletar lote
                qtb_lote.DeletarLoteCH(val);
                if (st_transacao)
                {
                    qtb_lote.Banco_Dados.Commit_Tran();
                }
                return("OK");
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_lote.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro excluir lote: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_lote.deletarBanco_Dados();
                }
            }
        }