openboleto / OpenCnabPHP

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

Registro 9 #180

Open nandodigi opened 4 years ago

nandodigi commented 4 years ago

Bom dia pessoal Estou montando a remessa do Banrisul 400 e neste o registro 9 tem um somatório dos valores de todos os boletos daquela remessa. Não estou conseguindo fazer com que esse valor apareça. Tentei $lote->inserirDetalhe(array( 'total_geral' => fsem_milhar($valortotal,2) ));

Mas não apareceu o valor no registro 9 (Trailler) Acho que não é ali no inserirDetalhe que se coloca esse valor. Alguem pode ajudar ?

Rctnet commented 4 years ago

Ola, penso que a melhor forma de fazer isso é fazendo com que a biblioteca some esses valores para vc, incluindo um acumulador interno no registro1.php ficaria mais ou menos assim protected function set_valor($value){// o nome da função é o nome de variável que usar no layout junto com a palavra set_ $this->data['valor'] = $value; RemessaAbstract::$entryData['total_valor'] = RemessaAbstract::$entryData['total_valor'] + $value; }

Depois inclua no registro9.php

protected function set_total_valor($value){ // o nome da função é o nome de variável que usar no layout junto com a palavra set_ $this->data['total_valor'] = RemessaAbstract::$entryData['total_valor']; }

nandodigi commented 4 years ago

Olá Rogério Ajustei no programa sua ideia e não esta dando erro, mas não esta somando Quando coloco no nome da função o nome set_total_geral no registro9, que é o nome do campo ele da o seguinte erro: Fatal error: Uncaught Error: Class 'CnabPHP\resources\B041\remessa\cnab400\RemessaAbstract' not found in C:\xampp\htdocs\Boletos\vendor\OpenCnab\src\resources\B041\remessa\cnab400\Registro9.php:39 Stack trace: #0 [internal function]: CnabPHP\resources\B041\remessa\cnab400\Registro9->set_total_geral('0') #1 C:\xampp\htdocs\Boletos\vendor\OpenCnab\src\RegistroRemAbstract.php(34): call_user_func(Array, '0') #2 C:\xampp\htdocs\Boletos\vendor\OpenCnab\src\RegistroRemAbstract.php(21): CnabPHP\RegistroRemAbstract->__set('total_geral', '0') #3 C:\xampp\htdocs\Boletos\vendor\OpenCnab\src\RemessaAbstract.php(116): CnabPHP\RegistroRemAbstract->__construct(Array) #4 C:\xampp\htdocs\Boletos\remessa041.php(205): CnabPHP\RemessaAbstract->getText() #5 {main} thrown in C:\xampp\htdocs\Boletos\vendor\OpenCnab\src\resources\B041\remessa\cnab400\Registro9.php on line 39 Abaixo o registro9: `<?php namespace CnabPHP\resources\B041\remessa\cnab400;

use CnabPHP\resources\generico\remessa\cnab400\Generico9;

class Registro9 extends Generico9 { protected $meta = array( 'tipo_registro'=>array( 'tamanho'=>1, 'default'=>'9', 'tipo'=>'int', 'required'=>true), 'filler23'=>array( 'tamanho'=>26, 'default'=>' ', 'tipo'=>'alfa', 'required'=>true), 'total_geral'=>array( 'tamanho' => 11, 'default' => '0', 'tipo' => 'decimal', 'precision' => 2, 'required' => true), 'filler24'=>array( 'tamanho'=>354, 'default'=>' ', 'tipo'=>'alfa', 'required'=>true), 'numero_registro'=>array( 'tamanho'=>6, 'default'=>'0', 'tipo'=>'int', 'required'=>true), );

protected function set_total_geral($value)
{
    $this->data['total_geral'] = RemessaAbstract::$entryData['total_valor'];
}

}` No Registro1 esta assim e a principio não esta dando erro nenhum:

No campo esta: 'valor' => array(//21.3P 'tamanho' => 11, 'default' => '', 'tipo' => 'decimal', 'precision' => 2, 'required' => true), ..... // Na função de soma esta assim: protected function set_total_geral($value) {// o nome da função é o nome de variável que usar no layout junto com a palavra set_ $this->data['valor'] = $value; RemessaAbstract::$entryData['total_valor'] = RemessaAbstract::$entryData['total_valor'] + $value; }

Se puderes me ajudar onde estou errando agradeço. Fernando Pereira fernando@digiterm.com.br

Rctnet commented 4 years ago

Ola @nandodigi , parece ser um erro de namespace, se quiser, atualize seu fork com o código do jeito que está e eu dou uma olhada

nandodigi commented 4 years ago

Oi Rogério Problema resolvido Registro1 protected function set_valor($value){ $this->data['valor'] = $value; RemessaAbstract::$entryData['total_valor'] = RemessaAbstract::$entryData['total_valor'] + $value; }

Registro9 Sem nenhuma function

Generico9 protected function set_total_geral($value) { $this->data['total_geral'] = RemessaAbstract::$entryData['total_valor']; }

Como Registro9 é uma extensão do Generico9 funcionou OK