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

Erro instalação no framework #195

Open RafaVitorSilva opened 3 years ago

RafaVitorSilva commented 3 years ago

eu inclui a lib no meu sistema, porem esta apresentando erro quando tento cria arquivo para o sicoob

eu estou utilizando o framework adianti

o log do php apresenta o seguinte erro

`20-Nov-2020 17:55:25 America/Sao_Paulo] PHP Stack trace: [20-Nov-2020 17:55:25 America/Sao_Paulo] PHP 1. {main}() /Volumes/Dados/dev/OrionFast07/engine.php:0 [20-Nov-2020 17:55:25 America/Sao_Paulo] PHP 2. TApplication::run() /Volumes/Dados/dev/OrionFast07/engine.php:68 [20-Nov-2020 17:55:25 America/Sao_Paulo] PHP 3. Adianti\Core\AdiantiCoreApplication::run() /Volumes/Dados/dev/OrionFast07/engine.php:27 [20-Nov-2020 17:55:25 America/Sao_Paulo] PHP 4. ContaReceberGeracaoCnab240Form->show() /Volumes/Dados/dev/OrionFast07/lib/adianti/core/AdiantiCoreApplication.php:82 [20-Nov-2020 17:55:25 America/Sao_Paulo] PHP 5. ContaReceberGeracaoCnab240Form->show() /Volumes/Dados/dev/OrionFast07/lib/adianti/base/AdiantiStandardCollectionTrait.php:428 [20-Nov-2020 17:55:25 America/Sao_Paulo] PHP 6. ContaReceberGeracaoCnab240Form->run() /Volumes/Dados/dev/OrionFast07/lib/adianti/control/TPage.php:213 [20-Nov-2020 17:55:25 America/Sao_Paulo] PHP 7. call_user_func:{/Volumes/Dados/dev/OrionFast07/lib/adianti/control/TPage.php:59}() /Volumes/Dados/dev/OrionFast07/lib/adianti/control/TPage.php:59 [20-Nov-2020 17:55:25 America/Sao_Paulo] PHP 8. ContaReceberGeracaoCnab240Form->onGerarRemessa() /Volumes/Dados/dev/OrionFast07/lib/adianti/control/TPage.php:59 [20-Nov-2020 17:55:25 America/Sao_Paulo] PHP 9. ContaReceberControl->GerarCNAB240() /Volumes/Dados/dev/OrionFast07/app/control/modulo/conta_receber/ContaReceberGeracaoCnab240Form.php:448 [20-Nov-2020 17:55:25 America/Sao_Paulo] PHP 10. ContaReceberControl->onArquivo() /Volumes/Dados/dev/OrionFast07/app/control/controle/conta_receber/ContaReceberControl.php:52 [20-Nov-2020 17:55:25 America/Sao_Paulo] PHP Fatal error: Uncaught Error: Class 'CnabPHP\resources\generico\retorno\L040\Generico0' not found in /Volumes/Dados/dev/OrionFast07/app/lib/CnabPHP/resources/B033/retorno/L040/Registro0.php:31 Stack trace:

0 /Volumes/Dados/dev/OrionFast07/lib/adianti/core/AdiantiApplicationLoader.php(82): require_once()

1 /Volumes/Dados/dev/OrionFast07/lib/adianti/core/AdiantiCoreLoader.php(78): Adianti\Core\AdiantiApplicationLoader::autoload('Registro0')

2 [internal function]: Adianti\Core\AdiantiCoreLoader::autoload('Registro0')

3 /Volumes/Dados/dev/OrionFast07/app/lib/CnabPHP/RemessaAbstract.php(29): spl_autoload_call('CnabPHP\resourc...')

4 /Volumes/Dados/dev/OrionFast07/app/lib/CnabPHP/Remessa.php(31): CnabPHP\RemessaAbstract->__construct('756', 'cnab240', Array)

5 /Volumes/Dados/dev/OrionFast07/app/control/controle/conta_receber/ContaReceberControl.php(138): CnabPHP\Remessa->__construct('756', 'cnab240', Array)

6 /Volumes/Dados/dev/OrionFast07/app/control/controle/conta_receber/ContaReceberControl.php(52): ContaReceberControl in /Volumes/Dados/dev/OrionFast07/app/lib/CnabPHP/resources/B033/retorno/L040/Registro0.php on line 31`

PHP Fatal error: Uncaught Error: Class 'CnabPHP\resources\generico\retorno\L040\Generico0' not found in /Volumes/Dados/dev/OrionFast07/app/lib/CnabPHP/resources/B033/retorno/L040/Registro0.php:31

analisando o erro ele, informa que não localizou a classe, porem como não estou utilizando a parte de retorno, e o erro seria no autoloader do framework pelo oque eu entendi.

preciso de ajuda para resolver esse problema, para implementar

Obrigado.

Rctnet commented 3 years ago

Ola @RafaVitorSilva , parece um erro de autoload, tente carregar o autoload do exemploremessa.php https://github.com/QuilhaSoft/OpenCnabPHP/blob/21745e1df8e3e377ae1961a78933ef536ca02316/samples/ExemploRemessa.php#L30 talvez resolva

RafaVitorSilva commented 3 years ago

bom dia, Desculpe a demora @Rctnet e obrigado pela ajuda. eu fiz isso porem me retorna o mesmo erro

PHP Fatal error: Uncaught Error: Class 'CnabPHP\resources\generico\retorno\L040\Generico0' not found in /Volumes/Dados/dev/OrionFast07/app/lib/CnabPHP/resources/B033/retorno/L040/Registro0.php:31

segue o meu codigo

public function GerarCNAB240($contas_receber,$ContaBancaria){
        require_once 'app/lib/CnabPHP/autoloader.php';
        TTransaction::open('permission');
        $SytemUnit = new SystemUnit(TSession::getValue('userunitid'));
        $SystemUnitInfo = $SytemUnit->get_system_unit_info();
        TTransaction::close();
        //todo orion marcar
        $tipo_cobranca = 1;
        $arquivo = $this->onArquivo($SytemUnit, $SystemUnitInfo, $ContaBancaria);
//        $lote  = $arquivo->addLote(array('tipo_servico'=> $tipo_cobranca)); // tipo_servico  = 1 para cobrança registrada, 2 para sem registro
//
//        $lote->inserirDetalhe(array(
//                        //Registro 3P Dados do Boleto
//                        'nosso_numero'      => '1800001', // numero sequencial de boleto
//                        //'nosso_numero_dv'   =>  1, // pode ser informado ou calculado pelo sistema
//                        'parcela'             =>  '01',
//                        'modalidade'      =>  '1',
//                        'tipo_formulario' =>  '4',
//                        'codigo_carteira'   =>    '1', // codigo da carteira
//                        'carteira'        =>  '1', // codigo da carteira
//                        'seu_numero'        =>    "DEV180001",// se nao informado usarei o nosso numero
//                        'data_vencimento'   =>    '2018-04-30', // informar a data neste formato AAAA-MM-DD
//                        'valor'             =>    '5.00', // Valor do boleto como float valido em php
//                        'cod_emissao_boleto'=>    '2', // tipo de emissao do boleto informar 2 para emissao pelo beneficiario e 1 para emissao pelo banco
//                        'especie_titulo'    =>    "DM", // informar dm e sera convertido para codigo em qualquer laytou conferir em especie.php
//                        'data_emissao'      =>    '2018-04-05', // informar a data neste formato AAAA-MM-DD
//                        'codigo_juros'        =>  '2', // Taxa por mês,
//                        'data_juros'          =>  '2018-04-30', // data dos juros, mesma do vencimento
//                        'vlr_juros'         =>    '0000000000001.00', // Valor do juros/mora informa 1% e o sistema recalcula a 0,03% por 
//                        // Você pode inserir desconto se houver, ou deixar em branco
//                        //'codigo_desconto'   =>  '1',
//                        //'data_desconto'     =>  '2018-04-15', // inserir data para calcular desconto
//                        //'vlr_desconto'      =>  '0', // Valor do desconto
//                        //'vlr_IOF'           =>  '0',
//                        'protestar'         =>    '1', // 1 = Protestar com (Prazo) dias, 3 = Devolver após (Prazo) dias
//                        'prazo_protesto'    =>    '90', // Informar o numero de dias apos o vencimento para iniciar o protesto
//                        'identificacao_contrato'  =>  "Contrato 32156",
//
//
//                        // Registro 3Q [PAGADOR]
//                        'tipo_inscricao'    => '1', //campo fixo, escreva '1' se for pessoa fisica, 2 se for pessoa juridica
//                        'numero_inscricao'  => '638.035.884-64',//cpf ou ncpj do pagador
//                        'nome_pagador'      => "Elias Alves", // O Pagador é o cliente, preste atenção nos campos abaixo
//                        'endereco_pagador'  => 'Rua Esquerda, 42',
//                        'bairro_pagador'    => 'Bairro Queluz',
//                        'cep_pagador'       => '36400-000', // com hífem
//                        'cidade_pagador'    => 'Conselheiro Lafaiete',
//                        'uf_pagador'        => 'MG',
//
//                        // Registro 3R Multas, descontos, etc
//                        // Você pode inserir desconto se houver, ou deixar em branco, mas quando informar
//                        // deve preencher os 3 campos: codigo, data e valor
//                        'codigo_multa'        =>  '2', // Taxa por mês
//                        'data_multa'          =>  '2018-04-30', // data dos juros, mesma do vencimento
//                        'vlr_multa'         =>    '0000000000002.00', // Valor do juros de 2% ao mês
//
//                        // Registro 3S3 Mensagens a serem impressas
//                        'mensagem_sc_1'   => "Após venc. Mora 0,03%/dia e Multa 2,00%",
//                        'mensagem_sc_2'   => "Não conceder desconto",
//                        'mensagem_sc_3'   => "Sujeito a protesto após o vencimento",
//                        'mensagem_sc_4'   => "VelvetTux Soluções em Sistemas <('')",
//
//        ));
//
        $remessa = utf8_decode($arquivo->getText()); // observar a header do seu php para não gerar comflitos de codificação de caracteres;

        // Grava o arquivo
        $base_dir = dir('./files/'.TSession::getValue('userunitid').'/remessas/'.$ContaBancaria->id_conta_bancaria);
        file_put_contents($this->verificaPastas($base_dir)->path.$arquivo->getFileName(), $remessa);
        verificaPastas()->close();
    }

    private function onArquivo($SystemUnit,$SystemUnitInfo,$ContaBancaria,$ambiente = 'T',$layout = 'cnab240'){
        $cnpj = $SystemUnitInfo->cnpj;
        $cnpj = str_replace('.', '', $cnpj);
        $cnpj = str_replace('-', '', $cnpj);

        $array_agencia = explode('-', $ContaBancaria->agencia);
        $array_conta = explode('-', $ContaBancaria->conta_bancaria);
        $array_codigo_beneficiario = explode('-', $ContaBancaria->codigo_beneficiario);

        $arquivo = new \CnabPHP\Remessa($ContaBancaria->codigo_febraban,$layout,array(
        //Informações da emrpesa recebedora
        'tipo_inscricao'    =>  '2', // 1 para cpf, 2 cnpj
        'numero_inscricao'  =>  $cnpj, // seu cpf ou cnpj completo
        'agencia'           =>  $array_agencia[0], // agencia sem o digito verificador
        'agencia_dv'        =>  $array_agencia[1], // somente o digito verificador da agencia
        'conta'             =>  $array_conta[0], // número da conta
        'conta_dv'          =>  $array_conta[1], // digito da conta
        'nome_empresa'      =>  $SystemUnit->name, // seu nome de empresa
        'numero_sequencial_arquivo' =>  $ContaBancaria->lote_envio,
        'codigo_beneficiario'   => $array_codigo_beneficiario[0], // codigo fornecido pelo banco
        'codigo_beneficiario_dv'=> $array_codigo_beneficiario[1], // codigo fornecido pelo banco
        'situacao_arquivo' =>$ambiente // use T para teste e P para produção
        ));
        return $arquivo;
    }
MathDev00 commented 1 year ago

Olá,

Provavelmente você deve ter resolvido o problema, devido ao tempo do envio. Mas tente comparar seu código com engine.php do framework puro, pode ser que tenha um problema nessa parte do código. Lembrando que o engine.php participa do projeto de carregamento da classe, que é justamente o erro (não encontrar a classe)