Пример #1
0
        public static string DeletarDevolucaoCheque(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;
                }
                //Deletar devolucao cheque
                qtb_dev.DeletarDevolucaoCheque(val);
                if (st_transacao)
                {
                    qtb_dev.Banco_Dados.Commit_Tran();
                }
                return("OK");
            }
            catch (Exception ex)
            {
                if (st_transacao)
                {
                    qtb_dev.Banco_Dados.RollBack_Tran();
                }
                throw new Exception("Erro deletar devolucao cheque: " + ex.Message.Trim());
            }
            finally
            {
                if (st_transacao)
                {
                    qtb_dev.deletarBanco_Dados();
                }
            }
        }
Пример #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();
                }
            }
        }