public static string Gravar(TRegistro_FaturaCartao val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_FaturaCartao qtb_fatura = new TCD_FaturaCartao(); try { if (banco == null) { st_transacao = qtb_fatura.CriarBanco_Dados(true); } else { qtb_fatura.Banco_Dados = banco; } string retorno = qtb_fatura.Gravar(val); val.Id_fatura = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(retorno, "@P_ID_FATURA")); if (!string.IsNullOrEmpty(val.Cd_contager)) { //Gravar caixa string ret = TCN_LanCaixa.GravaLanCaixa( new TRegistro_LanCaixa() { Cd_ContaGer = val.Cd_contager, Cd_Empresa = val.Cd_empresa, Nr_Docto = "FAT" + val.Id_fatura.Value.ToString(), Cd_Historico = val.Cd_historico, Login = Utils.Parametros.pubLogin, ComplHistorico = "FATURA CARTAO AVULSA", Dt_lancto = val.Dt_fatura, Vl_PAGAR = decimal.Zero, Vl_RECEBER = val.Vl_nominal, St_Titulo = "N", St_Estorno = "N", St_avulso = "N", Id_adto = val.Id_adto }, qtb_fatura.Banco_Dados); //Amarrar caixa com fatura TCN_FaturaCartao_X_Caixa.Gravar(new TRegistro_FaturaCartao_X_Caixa() { Cd_contager = val.Cd_contager, Cd_lanctocaixa = Convert.ToDecimal(CamadaDados.TDataQuery.getPubVariavel(ret, "@P_CD_LANCTOCAIXA")), Id_fatura = val.Id_fatura }, qtb_fatura.Banco_Dados); } if (st_transacao) { qtb_fatura.Banco_Dados.Commit_Tran(); } return(retorno); } catch (Exception ex) { if (st_transacao) { qtb_fatura.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro gravar fatura: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_fatura.deletarBanco_Dados(); } } }
public static void CancelarFatura(TRegistro_FaturaCartao val, BancoDados.TObjetoBanco banco) { bool st_transacao = false; TCD_FaturaCartao qtb_fatura = new TCD_FaturaCartao(); try { if (banco == null) { st_transacao = qtb_fatura.CriarBanco_Dados(true); } else { qtb_fatura.Banco_Dados = banco; } //Verificar se a fatura possui quitacao if (new TCD_QuitarFatura(qtb_fatura.Banco_Dados).BuscarEscalar( new Utils.TpBusca[] { new Utils.TpBusca() { vNM_Campo = "a.id_fatura", vOperador = "=", vVL_Busca = val.Id_fatura.Value.ToString() } }, string.Empty) != null) { throw new Exception("Fatura cartão possui quitação. Obrigatorio extornar primeiro quitação."); } //Buscar lista de caixa da fatura TList_LanCaixa lCaixa = new TCD_LanCaixa(qtb_fatura.Banco_Dados).Select( new Utils.TpBusca[] { new Utils.TpBusca() { vNM_Campo = string.Empty, vOperador = "exists", vVL_Busca = "(select 1 from tb_fin_faturacartao_x_caixa x " + "where x.cd_contager = a.cd_contager " + "and x.cd_lanctocaixa = a.cd_lanctocaixa " + "and x.id_fatura = " + val.Id_fatura.Value.ToString() + ")" } }, 0, string.Empty); //Excluir caixa lCaixa.ForEach(p => TCN_FaturaCartao_X_Caixa.Excluir(new TRegistro_FaturaCartao_X_Caixa() { Cd_contager = p.Cd_ContaGer, Cd_lanctocaixa = p.Cd_LanctoCaixa, Id_fatura = val.Id_fatura }, qtb_fatura.Banco_Dados)); //Excluir fatura Excluir(val, qtb_fatura.Banco_Dados); //Cancelar lancamentos de caixa lCaixa.ForEach(p => { if (p.St_Estorno.Trim().ToUpper() != "S") { CamadaNegocio.Financeiro.Caixa.TCN_LanCaixa.EstornarCaixa(p, null, qtb_fatura.Banco_Dados); } }); if (st_transacao) { qtb_fatura.Banco_Dados.Commit_Tran(); } } catch (Exception ex) { if (st_transacao) { qtb_fatura.Banco_Dados.RollBack_Tran(); } throw new Exception("Erro estornar fatura: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_fatura.deletarBanco_Dados(); } } }
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(); } } }