public static string Gravar(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; } //Gravar Lote string retorno = qtb_lote.Gravar(val); //Deletar Bloquetos val.lBloquetosExcluir.ForEach(p => { TCN_Lote_X_Titulo.Excluir(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 }, qtb_lote.Banco_Dados); //Verificar se o bloqueto tem liquidacao object obj = new CamadaDados.Financeiro.Duplicata.TCD_LanLiquidacao(qtb_lote.Banco_Dados).BuscarEscalar( new TpBusca[] { new TpBusca() { vNM_Campo = "a.cd_empresa", vOperador = "=", vVL_Busca = "'" + p.Cd_empresa.Trim() + "'", }, new TpBusca() { vNM_Campo = "a.nr_lancto", vOperador = "=", vVL_Busca = p.Nr_lancto.ToString() }, new TpBusca() { vNM_Campo = "a.cd_parcela", vOperador = "=", vVL_Busca = p.Cd_parcela.ToString() }, new TpBusca() { vNM_Campo = "isnull(a.st_registro, 'A')", vOperador = "<>", vVL_Busca = "'C'" } }, "1"); if (obj != null) { if (obj.ToString().Equals("1")) { p.St_registro = "C"; } else { p.St_registro = "A"; } } else { p.St_registro = "A"; } TCN_Titulo.Gravar(p, qtb_lote.Banco_Dados); }); //Gravar Bloquetos val.ListaBloqueto.ForEach(p => { TCN_Lote_X_Titulo.Gravar(new TRegistro_Lote_X_Titulo() { Cd_empresa = p.Cd_empresa, Cd_parcela = p.Cd_parcela, Id_cobranca = p.Id_cobranca, Id_lote = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(retorno, "@P_ID_LOTE")), Nr_lancto = p.Nr_lancto }, qtb_lote.Banco_Dados); }); if (st_transacao) { qtb_lote.Banco_Dados.Commit_Tran(); } return(retorno); } 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(); } } }
public static void EstornarLote(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; } //Inicio do processo de estornar lote if (val.St_registro.Trim().ToUpper().Equals("P")) { if (val.ListaCaixa.Count > 0) { //Verificar se nao existe alguma parcela que originou bloqueto ja liquidada foreach (var p in val.ListaBloqueto) { CamadaDados.Financeiro.Duplicata.TList_RegLanParcela lParcela = new CamadaDados.Financeiro.Duplicata.TCD_LanParcela(qtb_lote.Banco_Dados).Select( new TpBusca[] { new TpBusca() { vNM_Campo = "isnull(a.st_registro, 'A')", vOperador = "in", vVL_Busca = "('L', 'P')" }, new TpBusca() { vNM_Campo = "isnull(d.st_registro, 'A')", vOperador = "=", vVL_Busca = "'A'" }, new TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from tb_cob_titulo x " + "where x.cd_empresa = a.cd_empresa " + "and x.nr_lancto = a.nr_lancto " + "and x.cd_parcela = a.cd_parcela " + "and x.cd_empresa = '" + p.Cd_empresa.Trim() + "'" + "and x.nr_lancto = " + p.Nr_lancto.ToString() + "and x.cd_parcela = " + p.Cd_parcela.ToString() + ")" } }, 0, string.Empty, "a.dt_vencto, c.nm_clifor", string.Empty); if (lParcela.Count > 0) { throw new Exception("Lote não podera ser estornado, existe parcela com liquidação.\r\n\r\n" + "Empresa: " + p.Cd_empresa.Trim() + "\r\n" + "Duplicata: " + p.Nr_lancto.ToString() + "/" + p.Cd_parcela.ToString() + "\r\n\r\n" + "Obrigatorio estornar primeiro a liquidação."); } } val.ListaCaixa.ForEach(p => { //Excluir registro Lote X Caixa TCN_Bloqueto_X_Caixa.Excluir(new TRegistro_Lote_X_Caixa() { Cd_contager = p.Cd_ContaGer, Cd_lanctocaixa = p.Cd_LanctoCaixa, Id_lote = val.Id_lote.Value }, qtb_lote.Banco_Dados); //Chamar metodo estorno de caixa Caixa.TCN_LanCaixa.EstornarCaixa(p, null, qtb_lote.Banco_Dados); }); //Alterar o valor da taxa no bloquetos val.ListaBloqueto.ForEach(p => TCN_Lote_X_Titulo.Gravar(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_taxa = 0 }, qtb_lote.Banco_Dados)); //Alterar o lote val.St_registro = "A"; val.Vl_taxa = 0; qtb_lote.Gravar(val); if (st_transacao) { qtb_lote.Banco_Dados.Commit_Tran(); } } else { throw new Exception("Não existe lançamento de caixa para ser estornado."); } } 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(); } } }