public OFX_Extrato(OFX_HeaderExtrato headerExtrato, OFX_Conta conta, String status) { this.headerExtrato = headerExtrato; this.conta = conta; this.status = status; }
public OFX_Extrato(OFX_HeaderExtrato headerExtrato, OFX_Conta conta, String status, DateTime dataInicio, DateTime dataFinal) { this.headerExtrato = headerExtrato; this.conta = conta; this.status = status; this.dataInicio = dataInicio; this.dataFinal = dataFinal; }
// Retorna objeto Extrato com os dados do OFX. public static OFX_Extrato getExtrato(String ofxOrigem) { Boolean temTransacao = false; Boolean temCabecalho = false; Boolean temDadosConta = false; Boolean temDadosPrincipaisExtrato = false; // Transformar em arquivo XML exportToXML(ofxOrigem, ofxOrigem + ".xml"); // Variáveis úteis para o Parse String elementoSendoLido = ""; OFX_Movimento transacaoAtual = null; // Variávies utilizadas para a leitura do XML OFX_HeaderExtrato cabecalho = new OFX_HeaderExtrato(); OFX_Conta conta = new OFX_Conta(); OFX_Extrato extrato = new OFX_Extrato(cabecalho, conta, ""); // Lendo o XML XmlTextReader meuXml = new XmlTextReader(ofxOrigem + ".xml"); try { while (meuXml.Read()) { if (meuXml.NodeType == XmlNodeType.EndElement) { switch (meuXml.Name) { case "STMTTRN": if (transacaoAtual != null) { extrato.addMovimento(transacaoAtual); transacaoAtual = null; temTransacao = true; } break; } } if (meuXml.NodeType == XmlNodeType.Element) { elementoSendoLido = meuXml.Name; switch (elementoSendoLido) { case "STMTTRN": transacaoAtual = new OFX_Movimento(); break; } } if (meuXml.NodeType == XmlNodeType.Text) { switch (elementoSendoLido) { case "DTSERVER": //cabecalho.DataServidor = convertOfxDateToDateTime(meuXml.Value); temCabecalho = true; break; case "LANGUAGE": cabecalho.Idioma = meuXml.Value; temCabecalho = true; break; case "ORG": cabecalho.NomeBanco = meuXml.Value; temCabecalho = true; break; case "DTSTART": extrato.DataInicio = convertOfxDateToDateTime(meuXml.Value); temDadosPrincipaisExtrato = true; break; case "DTEND": extrato.DataFinal = convertOfxDateToDateTime(meuXml.Value); temDadosPrincipaisExtrato = true; break; case "BANKID": conta.Banco = new OFX_Banco(Convert.ToInt32(meuXml.Value), ""); temDadosConta = true; break; case "BRANCHID": conta.Agencia = meuXml.Value; temDadosConta = true; break; case "ACCTID": conta.nConta = meuXml.Value; temDadosConta = true; break; case "ACCTTYPE": conta.Tipo = meuXml.Value; temDadosConta = true; break; case "TRNTYPE": transacaoAtual.Tipo = meuXml.Value; break; case "DTPOSTED": transacaoAtual.Data = convertOfxDateToDateTime(meuXml.Value); break; case "TRNAMT": transacaoAtual.Valor = Convert.ToDouble(meuXml.Value.Replace('.', ',')); break; case "FITID": transacaoAtual.Id = meuXml.Value; break; case "CHECKNUM": transacaoAtual.Checksum = Convert.ToInt64(meuXml.Value); break; case "MEMO": transacaoAtual.Descricao = meuXml.Value; break; } } } } catch (XmlException ex) { throw new OFXErros(Convert.ToString(ex.Message + "OFX Inválido!")); } finally { meuXml.Close(); } if ((temCabecalho == false) || (temDadosConta == false) || (temDadosPrincipaisExtrato == false)) { throw new OFXErros("OFX Inválido!"); } return(extrato); }
// Retorna objeto Extrato com os dados do OFX. public static OFX_Extrato getExtrato(String ofxOrigem) { Boolean temTransacao = false; Boolean temCabecalho = false; Boolean temDadosConta = false; Boolean temDadosPrincipaisExtrato = false; // Transformar em arquivo XML exportToXML(ofxOrigem, ofxOrigem + ".xml"); // Variáveis úteis para o Parse String elementoSendoLido = ""; OFX_Movimento transacaoAtual = null; // Variávies utilizadas para a leitura do XML OFX_HeaderExtrato cabecalho = new OFX_HeaderExtrato(); OFX_Conta conta = new OFX_Conta(); OFX_Extrato extrato = new OFX_Extrato(cabecalho, conta, ""); // Lendo o XML XmlTextReader meuXml = new XmlTextReader(ofxOrigem + ".xml"); try { while (meuXml.Read()) { if (meuXml.NodeType == XmlNodeType.EndElement) { switch (meuXml.Name) { case "STMTTRN": if (transacaoAtual != null) { extrato.addMovimento(transacaoAtual); transacaoAtual = null; temTransacao = true; } break; } } if (meuXml.NodeType == XmlNodeType.Element) { elementoSendoLido = meuXml.Name; switch (elementoSendoLido) { case "STMTTRN": transacaoAtual = new OFX_Movimento(); break; } } if (meuXml.NodeType == XmlNodeType.Text) { switch (elementoSendoLido) { case "DTSERVER": //cabecalho.DataServidor = convertOfxDateToDateTime(meuXml.Value); temCabecalho = true; break; case "LANGUAGE": cabecalho.Idioma = meuXml.Value; temCabecalho = true; break; case "ORG": cabecalho.NomeBanco = meuXml.Value; temCabecalho = true; break; case "DTSTART": extrato.DataInicio = convertOfxDateToDateTime(meuXml.Value); temDadosPrincipaisExtrato = true; break; case "DTEND": extrato.DataFinal = convertOfxDateToDateTime(meuXml.Value); temDadosPrincipaisExtrato = true; break; case "BANKID": conta.Banco = new OFX_Banco(Convert.ToInt32(meuXml.Value), ""); temDadosConta = true; break; case "BRANCHID": conta.Agencia = meuXml.Value; temDadosConta = true; break; case "ACCTID": conta.nConta = meuXml.Value; temDadosConta = true; break; case "ACCTTYPE": conta.Tipo = meuXml.Value; temDadosConta = true; break; case "TRNTYPE": transacaoAtual.Tipo = meuXml.Value; break; case "DTPOSTED": transacaoAtual.Data = convertOfxDateToDateTime(meuXml.Value); break; case "TRNAMT": transacaoAtual.Valor = Convert.ToDouble(meuXml.Value.Replace('.', ',')); break; case "FITID": transacaoAtual.Id = meuXml.Value; break; case "CHECKNUM": transacaoAtual.Checksum = Convert.ToInt64(meuXml.Value); break; case "MEMO": transacaoAtual.Descricao = meuXml.Value; break; } } } } catch (XmlException ex) { throw new OFXErros(Convert.ToString(ex.Message + "OFX Inválido!")); } finally { meuXml.Close(); } if ((temCabecalho == false) || (temDadosConta == false) || (temDadosPrincipaisExtrato == false)) { throw new OFXErros("OFX Inválido!"); } return extrato; }