Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Digito da Agencia desaparece CNAB400 #31

Closed
duard opened this issue Jan 11, 2018 · 11 comments
Closed

Digito da Agencia desaparece CNAB400 #31

duard opened this issue Jan 11, 2018 · 11 comments

Comments

@duard
Copy link

duard commented Jan 11, 2018

Quando vou passar meus dados para gerar o HEADER do CNAB400 estou passando o digito da agência, porém quando o arquivo é gerado, o digito dela some

   $arquivo = new Remessa("756", "cnab400",array(
     'nome_empresa'              =>  $cabeca->beneficiario,
     'tipo_inscricao'            =>  2, // 1 para cpf, 2 cnpj
     'agencia'                   =>  $result->header->agencia,
     'agencia_dv'                =>  $result->header->agencia_dv,
     'codigo_beneficiario'       =>  $result->header->codigo_beneficiario,
     'codigo_beneficiario_dv'    =>  $result->header->codigo_beneficiario_dv,
     'numero_sequencial_arquivo' =>  $result->header->numero_sequencial_arquivo,
     'situacao_arquivo'          =>  $ambiente // use T para teste e P para produção
   ));
@Rctnet
Copy link
Collaborator

Rctnet commented Jan 11, 2018

Bom dia, é provável que exista algum erro no seu programa, o exemplo funciona gerando na linha 2 posição 31,basta mudar o banco para 756 e testar,
estou usando para testes xampp PHP 7.0.2 e produção nginx,

@duard
Copy link
Author

duard commented Jan 11, 2018

outro campo que eu preencho e que fica dizendo que é faltante

        <strong>Message:</strong> Campo faltante ou com valor nulo:numero_inscricao_empresa Boleto Numero:50

@duard
Copy link
Author

duard commented Jan 11, 2018

@Rctnet não tem erro, eu estou enviando os valores, e pegando eles e passando para a classe gerar os dados, porém, o dígito da agência simplesmente some após entrar na classe. E também não reconhece o campo numero_inscricao_empresa como estando preenchido


 $app->post("/remessa-756",  function ($request, $response) {
   $body = $request->getParsedBody();
   $result = json_decode(json_encode($body,true));
   $ambiente = 'T';

   $arquivo = new Remessa("756", "cnab400",array(
     'nome_empresa'              =>  $result->header->beneficiario,
     'tipo_inscricao'            =>  2, // 1 para cpf, 2 cnpj
     'agencia'                   =>  $result->header->agencia,
     'agencia_dv'                =>  $result->header->agencia_dv,
     'codigo_beneficiario'       =>  $result->header->codigo_beneficiario,
     'codigo_beneficiario_dv'    =>  $result->header->codigo_beneficiario_dv,
     'numero_sequencial_arquivo' =>  $result->header->numero_sequencial_arquivo,
     'situacao_arquivo'          =>  $ambiente // use T para teste e P para produção
   ));

   $lote  = $arquivo->addLote(array('tipo_servico'=> 1)); // tipo_servico  = 1 para cobrança registrada, 2 para sem registro

   $arrContas = $result->contas;
   /*
   $length = count($arrContas);
   for ($i = 0; $i < $length; $i++) {
     // print_r($arrContas[$i]);
     $myConta = $arrContas[$i];
     echo $myConta->endereco_pagador;
   }
   */
   for ($i = 0; $i < count($result->contas); $i++) {
     $conta = $result->contas[$i];
     echo $conta->numero_inscricao;
     $lote->inserirDetalhe(array(
          'codigo_movimento' =>  1, //1 = Entrada de título, para outras opções ver nota explicativa C004 manual Cnab_SIGCB na pasta docs
          'tipo_inscricao'   =>  2, // 1 para cpf, 2 cnpj
          'numero_inscricao_empresa' => $conta->numero_inscricao,
          'numero_inscricao'  => '123.122.123-56',//cpf ou ncpj do pagador
          'codigo_movimento' => 1, //1 = Entrada de título, para outras opções ver nota explicativa C004 manual Cnab_SIGCB na pasta docs
          'nosso_numero'      => 50, // numero sequencial de boleto
          'seu_numero'        => 43,// se nao informado usarei o nosso numero
          /* campos necessarios somente para itau e siccob,  não precisa comentar se for outro layout    */
          'carteira_banco'    => 109, // codigo da carteira ex: 109,RG esse vai o nome da carteira no banco
          'cod_carteira'      => "01", // I para a maioria ddas carteiras do itau
          /* campos necessarios somente para itau,  não precisa comentar se for outro layout    */
          'especie_titulo'    => "DM", // informar dm e sera convertido para codigo em qualquer laytou conferir em especie.php
          'valor'             => 100.00, // Valor do boleto como float valido em php
          'emissao_boleto'    => 2, // tipo de emissao do boleto informar 2 para emissao pelo beneficiario e 1 para emissao pelo banco
          'protestar'         => 3, // 1 = Protestar com (Prazo) dias, 3 = Devolver ap�s (Prazo) dias
          'prazo_protesto'    => 5, // Informar o numero de dias apos o vencimento para iniciar o protesto
          'nome_pagador'      => "JOSÉ da SILVA ALVES", // O Pagador � o cliente, preste atenção nos campos abaixo
          'tipo_inscricao'    => 1, //campo fixo, escreva '1' se for pessoa fisica, 2 se for pessoa juridica
          'numero_inscricao'  => '123.122.123-56',//cpf ou ncpj do pagador
          'endereco_pagador'  => 'Rua dos developers,123 sl 103',
          'bairro_pagador'    => 'Bairro da insonia',
          'cep_pagador'       => '12345-123', // com h�fem
          'cidade_pagador'    => 'Londrina',
          'uf_pagador'        => 'PR',
          'data_vencimento'   => '2016-04-09', // informar a data neste formato
          'data_emissao'      => '2016-04-09', // informar a data neste formato
          'vlr_juros'         => 0.15, // Valor do juros de 1 dia'
          'data_desconto'     => '2016-04-09', // informar a data neste formato
          'vlr_desconto'      => '0', // Valor do desconto
          'baixar'            => 1, // codigo para indicar o tipo de baixa '1' (Baixar/ Devolver) ou '2' (N�o Baixar / N�o Devolver)
          'prazo_baixa'       => 90, // prazo de dias para o cliente pagar ap�s o vencimento
          'mensagem'          => 'JUROS de R$0,15 ao dia'.PHP_EOL."Não receber apos 30 dias",
          'email_pagador'     => 'rogerio@ciatec.net', // data da multa
          'data_multa'        => '2016-04-09', // informar a data neste formato, // data da multa
          'vlr_multa'         => 30.00, // valor da multa
          // campos necessários somente para o sicoob
          'taxa_multa'         => 30.00, // taxa de multa em percentual
          'taxa_juros'         => 30.00 // taxa de juros em percentual
     ));
   }

   $resultado = $arquivo->getText(); // observar a header do seu php para não gerar comflitos de codificação de caracteres;
   if ($ambiente == 'T') {
     $arquivoGrava  = '756-remessa-teste'.'.rem';
   } else {
     $arquivoGrava  = '756-remessa-test-P-'.date('m-d-Y_hia').'.rem';
   }

   file_put_contents($arquivoGrava, $resultado);

   // echo $resultado;

   // echo $result->header->agencia.$result->header->agencia_dv;

   // echo count($result->contas);

 });

@duard
Copy link
Author

duard commented Jan 11, 2018

Está bizarro, nem passando FIXO, o campo é reconhecido

   $lote->inserirDetalhe(array(
          'codigo_movimento' =>  1, //1 = Entrada de título, para outras opções ver nota explicativa C004 manual Cnab_SIGCB na pasta docs
          'tipo_inscricao'   =>  2, // 1 para cpf, 2 cnpj
          'numero_inscricao_empresa' => '16882069000191',
          'numero_inscricao'  => '16882069000191',//cpf ou ncpj do pagador
          'codigo_movimento' => 1, //1 = Entrada de título, para outras opções ver nota explicativa C004 manual Cnab_SIGCB na pasta docs
          'nosso_numero'      => 50, // numero sequencial de boleto
          'seu_numero'        => 43,// se nao informado usarei o nosso numero

@duard
Copy link
Author

duard commented Jan 11, 2018

Achei o problema cara, era aqui óh :

    protected function set_numero_inscricao_empresa($value)
    {
        $this->data['numero_inscricao_empresa'] = str_ireplace(array('.','/','-'),array(''), RemessaAbstract::$entryData['numero_inscricao']);

    }

Deve ser

  protected function set_numero_inscricao_empresa($value)
    {
        $this->data['numero_inscricao_empresa'] = str_ireplace(array('.','/','-'),array(''), $value);

    }

@duard duard closed this as completed Jan 11, 2018
@Rctnet
Copy link
Collaborator

Rctnet commented Jan 11, 2018

isso é em generico1?

@Rctnet Rctnet reopened this Jan 11, 2018
@Rctnet
Copy link
Collaborator

Rctnet commented Jan 11, 2018

se sim qual a versão do PHP que você esta usando, porque esse método é assim para que não seja necessário informar esse valor nos registros e somente na instanciação da classe.

@Rctnet
Copy link
Collaborator

Rctnet commented Jan 11, 2018

Li seu código acima e percebi que já esta passando os dados nos registros então no seu caso use assim mesmo e por favor nos passe a versão de PHP que esta usando para podermos alertar em caso de versão antiga, ou corrigirmos de outra forma se for mais nova.

@duard
Copy link
Author

duard commented Jan 11, 2018

PHP 7.1.4 usando XAMPP também 7.1.4

@Rctnet
Copy link
Collaborator

Rctnet commented Jan 11, 2018

ok, farei alguns testes com essa versão e em atualizações futuras criarei outra solução, mas por hora recomendo usar PHP 7.0 que é o que eu uso em produção, isso pode evitar mais surpresas indesejadas.

@Rctnet Rctnet closed this as completed Jan 11, 2018
@duard
Copy link
Author

duard commented Jan 12, 2018

Colocando $value funciona, aguardo seus testes para saber como proceder.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants