openboleto / OpenCnabPHP

Biblioteca multibanco para geração e leitura de arquivos Cnab240 e Cna400 de remessa e retorno
MIT License
190 stars 116 forks source link

Capturar dados do Header #215

Closed bianchi closed 2 years ago

bianchi commented 2 years ago

Estou tratando um arquivo de remessa do Itaú e preciso pegar os dados do header do retorno.

Olhando no RetornoAbstract me parece que deveria estar no hearder, porém o código está comentado. Alguém pegou as informações do header com sucesso?

https://github.com/QuilhaSoft/OpenCnabPHP/blob/master/src/RetornoAbstract.php

Rctnet commented 2 years ago

As remessas do Itaú para cnab240 estão em faze beta, então com certeza deverá haver algum esforço de programação, porem eu acho que vc deve estar usando 400 mesmo, nesse caso não existe header de lote, só header do arquivo, nessa linha deve obter os dados que deseja https://github.com/QuilhaSoft/OpenCnabPHP/blob/c97823ff87aa2603e7eaa391887c8c02e4b86791/samples/ExemploRetorno.php#L31

bianchi commented 2 years ago

As remessas do Itaú para cnab240 estão em faze beta, então com certeza deverá haver algum esforço de programação, porem eu acho que vc deve estar usando 400 mesmo, nesse caso não existe header de lote, só header do arquivo, nessa linha deve obter os dados que deseja

https://github.com/QuilhaSoft/OpenCnabPHP/blob/c97823ff87aa2603e7eaa391887c8c02e4b86791/samples/ExemploRetorno.php#L31

Sim, você está certo, é cnab400.

Foi a primeira tentativa que fiz. Os dados até estão na propriedade data, porém ela é protected e não é possível acessar.

image

bianchi commented 2 years ago

Por enquanto estou usando ReflectionClass pra fazer uma gambiarra e pegar esse atributo data, porém não é o ideal.


$reflection = new ReflectionClass($this->arquivoRetorno->getRegistrosRaiz()[0]);
$property = $reflection->getProperty('data');
$property->setAccessible(true);
$data = $property->getValue($this->arquivoRetorno->getRegistrosRaiz()[0]);
Rctnet commented 2 years ago

Tem métodos mágicos set e get nas propriedades, acho que você pode acessar as propriedades de data diretamente tipo $data = $this->arquivoRetorno->getRegistrosRaiz()[0]; $data->data_gravacao;

bianchi commented 2 years ago

Tem métodos mágicos set e get nas propriedades, acho que você pode acessar as propriedades de data diretamente tipo $data = $this->arquivoRetorno->getRegistrosRaiz()[0]; $data->data_gravacao;

Obrigado, assim realmente deu certo. Eu estava tentando $this->arquivoRetorno->data_gravacao.