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(); } } }