public static void EstornarQuitacaoFatura(TRegistro_Quitarfatura 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; } //Buscar caixa da quitacao string aux = string.Empty; string virg = string.Empty; if (!string.IsNullOrEmpty(val.Cd_lanctocaixaquitstr)) { aux = val.Cd_lanctocaixaquitstr; virg = ","; } if (!string.IsNullOrEmpty(val.Cd_lanctocaixajurostr)) { aux += virg + val.Cd_lanctocaixajurostr; virg = ","; } if (!string.IsNullOrEmpty(val.Cd_lanctocaixatxstr)) { aux += virg + val.Cd_lanctocaixatxstr; } TList_LanCaixa lCaixa = new TCD_LanCaixa(qtb_fatura.Banco_Dados).Select( new Utils.TpBusca[] { new Utils.TpBusca() { vNM_Campo = "isnull(a.st_estorno, 'N')", vOperador = "<>", vVL_Busca = "'S'" }, new Utils.TpBusca() { vNM_Campo = string.Empty, vOperador = string.Empty, vVL_Busca = "((a.cd_contager = '" + val.Cd_contager.Trim() + "' " + "and a.cd_lanctocaixa = " + val.Cd_lanctocaixastr + ") or " + "(a.cd_contager = '" + val.Cd_contagerquit.Trim() + "' " + "and a.cd_lanctocaixa in(" + aux + ")))" } }, 0, string.Empty); //Excluir registro quitacao TCN_QuitarFatura.Excluir(val, qtb_fatura.Banco_Dados); lCaixa.ForEach(p => 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 quitação fatura: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_fatura.deletarBanco_Dados(); } } }
public static void QuitarFatura(List <TRegistro_FaturaCartao> val, DateTime Dt_quitacao, string Cd_contager, string Cd_empresa, string Tp_movimento, 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; } //Buscar configuracao para quitar fatura TList_CFGFaturaCartao lCfg = TCN_CFGFaturaCartao.Buscar(Cd_empresa, string.Empty, string.Empty, string.Empty, string.Empty, qtb_fatura.Banco_Dados); if (lCfg.Count.Equals(0)) { throw new Exception("Não existe configuração para quitar fatura na empresa " + Cd_empresa.Trim()); } //Incluir lancamento de caixa na conta de quitacao string cd_lanctocaixa_q = TCN_LanCaixa.GravaLanCaixa( new TRegistro_LanCaixa() { Cd_Empresa = Cd_empresa, Cd_ContaGer = Cd_contager, Nr_Docto = "QUITARFAT", ComplHistorico = "QUITACAO FATURA CARTAO", Dt_lancto = Dt_quitacao, Cd_Historico = Tp_movimento.Trim().ToUpper().Equals("P") ? lCfg[0].Cd_historico_pag : lCfg[0].Cd_historico_rec, Vl_RECEBER = Tp_movimento.Trim().ToUpper().Equals("R") ? val.Sum(p => p.Vl_nominal - p.Vl_quitado) : decimal.Zero, Vl_PAGAR = Tp_movimento.Trim().ToUpper().Equals("P") ? val.Sum(p => p.Vl_nominal - p.Vl_quitado) : decimal.Zero, St_Estorno = "N" }, qtb_fatura.Banco_Dados); //Gravar Juro string cd_lanctocaixajr = string.Empty; if (val.Sum(p => p.Vl_juro) > decimal.Zero) { if (string.IsNullOrEmpty(lCfg[0].Cd_historico_juro)) { throw new Exception("Não existe configuração para quitar juro da fatura na empresa " + Cd_empresa.Trim()); } cd_lanctocaixajr = TCN_LanCaixa.GravaLanCaixa(new TRegistro_LanCaixa() { Cd_Empresa = Cd_empresa, Cd_ContaGer = Cd_contager, Nr_Docto = "JUROFATURA", ComplHistorico = "JURO FATURA CARTAO", Dt_lancto = Dt_quitacao, Cd_Historico = lCfg[0].Cd_historico_juro, Vl_RECEBER = decimal.Zero, Vl_PAGAR = val.Sum(p => p.Vl_juro), St_Titulo = "N", St_Estorno = "N" }, qtb_fatura.Banco_Dados); } //Gravar Caixa Taxa string cd_lanctocaixatx = string.Empty; if (val.Sum(p => p.Vl_taxa) > decimal.Zero) { if (string.IsNullOrEmpty(lCfg[0].Cd_historico_taxa)) { throw new Exception("Não existe configuração para quitar taxa da fatura na empresa " + Cd_empresa.Trim()); } cd_lanctocaixatx = TCN_LanCaixa.GravaLanCaixa(new TRegistro_LanCaixa() { Cd_Empresa = Cd_empresa, Cd_ContaGer = Cd_contager, Nr_Docto = "TXFATURA", ComplHistorico = "TAXA FATURA CARTAO", Dt_lancto = Dt_quitacao, Cd_Historico = lCfg[0].Cd_historico_taxa, Vl_RECEBER = decimal.Zero, Vl_PAGAR = Math.Round(val.Sum(p => p.Vl_taxa), 2), St_Estorno = "N", St_Titulo = "N" }, qtb_fatura.Banco_Dados); } val.ForEach(p => { if ((p.Vl_fatura - p.Vl_quitado) > decimal.Zero) { if (p.Dt_fatura.Value.Date > Dt_quitacao.Date) { throw new Exception("Não é permitido quitar fatura com data de lançamento maior que a data de quitação."); } //Incluir lancamento de caixa contrario ao original string cd_lanctocaixa_o = TCN_LanCaixa.GravaLanCaixa(new TRegistro_LanCaixa() { Cd_Empresa = Cd_empresa, Cd_ContaGer = p.Cd_contager, Nr_Docto = p.Id_fatura.Value.ToString(), Dt_lancto = Dt_quitacao, Cd_Historico = p.Tp_movimento.Trim().ToUpper().Equals("P") ? lCfg[0].Cd_historico_pag : lCfg[0].Cd_historico_rec, Vl_RECEBER = p.Tp_movimento.Trim().ToUpper().Equals("P") ? p.Vl_fatura - p.Vl_quitado : decimal.Zero, Vl_PAGAR = p.Tp_movimento.Trim().ToUpper().Equals("R") ? p.Vl_fatura - p.Vl_quitado : decimal.Zero, St_Estorno = "N" }, qtb_fatura.Banco_Dados); decimal?cd_tx = null; if (p.Pc_taxa > decimal.Zero) { cd_tx = decimal.Parse(CamadaDados.TDataQuery.getPubVariavel(cd_lanctocaixatx, "@P_CD_LANCTOCAIXA")); } decimal?cd_jr = null; if (!string.IsNullOrEmpty(cd_lanctocaixajr)) { cd_jr = decimal.Parse(CamadaDados.TDataQuery.getPubVariavel(cd_lanctocaixajr, "@P_CD_LANCTOCAIXA")); } //Incluir Registo na Tabela de Quitacao TCN_QuitarFatura.Gravar( new TRegistro_Quitarfatura() { Id_quitar = null, Id_fatura = p.Id_fatura, Cd_contager = p.Cd_contager, Cd_lanctocaixa = decimal.Parse(CamadaDados.TDataQuery.getPubVariavel(cd_lanctocaixa_o, "@P_CD_LANCTOCAIXA")), Cd_contagerquit = Cd_contager, Cd_lanctocaixaquit = decimal.Parse(CamadaDados.TDataQuery.getPubVariavel(cd_lanctocaixa_q, "@P_CD_LANCTOCAIXA")), Cd_lanctocaixajuro = cd_jr, Cd_lanctocaixatx = cd_tx, Dt_lancto = Dt_quitacao, Vl_quitado = p.Vl_fatura - p.Vl_quitado, Vl_juro = p.Vl_juro, Vl_taxa = p.Vl_taxa }, 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 quitar fatura: " + ex.Message.Trim()); } finally { if (st_transacao) { qtb_fatura.deletarBanco_Dados(); } } }