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

            try
            {
                if (banco == null)
                {
                    st_transacao = qtb_lote.CriarBanco_Dados(true);
                }
                else
                {
                    qtb_lote.Banco_Dados = banco;
                }
                //Inicio do processo de estornar lote
                if (val.St_registro.Equals("P"))
                {
                    //Excluir registro Lote X Caixa
                    val.lFatCartao_Caixa.ForEach(p =>
                    {
                        TCN_FaturaCartao_X_Caixa.Excluir(new TRegistro_FaturaCartao_X_Caixa()
                        {
                            Cd_contager    = p.Cd_contager,
                            Cd_lanctocaixa = p.Cd_lanctocaixa,
                            Id_fatura      = p.Id_fatura
                        }, qtb_lote.Banco_Dados);
                    });

                    //Chamar metodo estorno de caixa
                    val.lLanCaixa.ForEach(p =>
                    {
                        Caixa.TCN_LanCaixa.EstornarCaixa(p, null, qtb_lote.Banco_Dados);
                    });

                    //Alterar o valor da taxa no bloquetos
                    val.lFatCartao.ForEach(p =>
                    {
                        p.Vl_taxa = decimal.Zero;
                        TCN_FaturaCartao.Gravar(p, null);
                    });
                    //Alterar o lote
                    val.St_registro = "A";
                    qtb_lote.Gravar(val);
                    if (st_transacao)
                    {
                        qtb_lote.Banco_Dados.Commit_Tran();
                    }
                }
                else
                {
                    throw new Exception("Lote não se encontra processado.");
                }
            }
            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();
                }
            }
        }