Erro chamar funcção para leitura de arquivo OFX

Bom dia.

tenho um biblioteca chamada ofx.php que adicionei ao projeto.
e em uma aplicação blank no evento on-validate coloquei o seguinte codigo. mas não sei porque ele não roda, estou tentando adaptar codigo ao scriptcase. marquei em aplicação usar a biblioteca ofx.php, se criar o blank com a biblioteca marcada sem o codigo no on-validade ele executa mas quando chamo no on-validade não acontece nada.

<?php require_once 'ofx.php'; $ofx = new Ofx({Arquivo}); $saldo = $ofx->getBalance(); ?> Transações

Seu saldo em <?php echo date("d/m/Y", strtotime($saldo['date'])); ?> é de R$ <?echo $saldo['balance']; ?>

    <h2>Transações</h2>
    <table border="1" cellpadding="3" cellspacing="0">
        <thead>
            <tr>
                <th>Data</th>
                <th>Descrição</th>
                <th>Tipo</th>
                <th>Valor</th>
            </tr>
        </thead>
        <tbody>
            <?php foreach ($ofx->getTransactions() as $transaction) : ?>
                <tr>
                    <td><?php echo date("Y-m-d", strtotime(substr($transaction->DTPOSTED, 0, 8))); ?></td>
                    <td><?php echo $transaction->MEMO; ?></td>
                    <td><?php echo $transaction->TRNTYPE; ?></td>
                    <td><?php echo $transaction->TRNAMT; ?></td>
                </tr>
            <?php endforeach; ?>
        </tbody>
    </table>
</body>

acho que você esta se confundindo Blank apenas tem o evento onExecute

Rapaz não é assim! Use um controle, no controle crie um campo do tipo “arquivo banco de dados” e mude a rotina nas linhas:

require_once ‘ofx.php’;

para

sc_include(ofx.php);

Isso é um CNAB ?

desculpe eu me enganei é um controle eu ja criei um campo arquivo de dados.

e Agora fiz a alteração para sc_include(ofx.php);

mesmo assim não da erro mas também não executa.

a proposito não é CNAB é para ler arquivo de extrato bancario .ofx para conciliação bancaria.
segue o ofx.php abaixo

<?php class Ofx { private $ofxFile; public function __construct($ofxFile) { $this->ofxFile = $ofxFile; } /* * Converte o arquivo OFX para XML */ public function getOfxAsXML() { $content = file_get_contents($this->ofxFile); $line = strpos($content, ""); $ofx = substr($content, $line - 1); $buffer = $ofx; $count = 0; while ($pos = strpos($buffer, '<')) { $count++; $pos2 = strpos($buffer, '>'); $element = substr($buffer, $pos + 1, $pos2 - $pos - 1); if (substr($element, 0, 1) == '/') $sla[] = substr($element, 1); else $als[] = $element; $buffer = substr($buffer, $pos2 + 1); } $adif = array_diff($als, $sla); $adif = array_unique($adif); $ofxy = $ofx; foreach ($adif as $dif) { $dpos = 0; while ($dpos = strpos($ofxy, $dif, $dpos + 1)) { $npos = strpos($ofxy, '<', $dpos + 1); $ofxy = substr_replace($ofxy, "\n<", $npos, 1); $dpos = $npos + strlen($element) + 3; } } $ofxy = str_replace('&', '&', $ofxy); return $ofxy; } /* * Retorna o Saldo da conta na data de exportação do extrato */ public function getBalance() { $xml = new SimpleXMLElement($this->getOfxAsXML()); $balance = $xml->BANKMSGSRSV1->STMTTRNRS->STMTRS->LEDGERBAL->BALAMT; $dateOfBalance = $xml->BANKMSGSRSV1->STMTTRNRS->STMTRS->LEDGERBAL->DTASOF; $date = strtotime(substr($dateOfBalance, 0, 8)); $dateToReturn = date('Y-m-d', $date); return Array('date' => $dateToReturn, 'balance' => $balance); } /* * Retora um array de objetos com as transações * * DTPOSTED => Data da Transação * TRNAMT => Valor da Transação * TRNTYPE => Tipo da Transação (Débito ou Crédito) * MEMO => Descrição da transação */ public function getTransactions() { $xml = new SimpleXMLElement($this->getOfxAsXML()); $transactions = $xml->BANKMSGSRSV1->STMTTRNRS->STMTRS->BANKTRANLIST->STMTTRN; return $transactions; } } ?>

Cara, vou ter que fazer essa rotina… Pergunta: Esse layout serve pra qualquer banco?
Manda ele pro meu e-mail, hoje a noite faço ele.

fred@wizardsystem.com.br

Caso sua solução for essa : http://forum.imasters.com.br/topic/490216-leitura-de-arquivos-ofx-com-php/
não precisa mandar o e-mail, eu faço por ela.

Abraço.

Sandro já ta tudo feito! Com esse código abaixo, eu leio diretamente o arquivo OFX sem precisar converter em nada.
Aproveitei e trouxe os valores pra você colocar na Query.

Teste e confira, agora só montar o insert pra popular o banco e depois fazer a devida conciliação bancária.

$file = $this->Ini->path_doc.’/’.$arquivo;
$ofxFile = file_get_contents($file);

$firstPosition = strpos($ofxFile, “”); // Aqui inicio pelo primeiro nó e mato o cabeçalho antes do nó
$onlyBody = substr($ofxFile, $firstPosition); // posiciono os ponteiros
$onlyBodyUFT8 = utf8_encode($onlyBody); // codifico pra utf8
$xml = new SimpleXMLElement($onlyBodyUFT8); // uso a função SimpleXMLElement pra ler como um XML

// Aqui faço um foreach pra passar nó por nó e retornar o que eu desejar do arquivo OFX.

[code]foreach($xml->BANKMSGSRSV1->STMTTRNRS->STMTRS->BANKTRANLIST->STMTTRN as $list){

 echo $list->TRNAMT."</br>";
 echo $list->TRNAMT."</br>";
 echo $list->FITID."</br>";
 echo $list->CHECKNUM."</br>";
 echo $list->REFNUM."</br>";
 echo $list->MEMO."</br>=========================</br>";

}[/code]

Este código não tem na net, pode procurar, foi montado através de estudos e muita tentativa e erros.
Espero que ajude a você e a muita gente.

Atenciosamente;

Não encontrei nada que solucionasse a leitura do OFX.

FredKeyster a sua rotina também não fucnionou. pode dar um help?

Uso esta rotina OFX a muito tempo e nunca tive problemas.
Serve para todos os bancos, mas tive que fazer pequenos ajustes.

Qual a tua dificuldade ?

Att,
Paulo.

Pode ajudar a implementar?

pauloper ajuda ai dr, pls

Vou preparar aqui e te aviso.

Obrigado Pauloper, no aguardo.