Coder Social home page Coder Social logo

openboleto / opencnabphp Goto Github PK

View Code? Open in Web Editor NEW
188.0 32.0 116.0 15.15 MB

Biblioteca multibanco para geração e leitura de arquivos Cnab240 e Cna400 de remessa e retorno

License: MIT License

PHP 100.00%
remessa itau bradesco siccob cnab240 cnab400 caixa-economica santander uniprime sicredi

opencnabphp's Introduction

OpenCnabPHP

Considere doar fundos para nos apoiar

qr-code-plus

  • Um arquivo remessaAbstract cuida das questões sobre arquivos em geral.
  • A classe para cada Remessa herda remssaAbstract e seta o nome do banco que é a pasta para os layouts personalizados
  • RegistroAbstract cuida de metodos unicos para qualquer registro de qualquer layout,
  • Uma classe genérico herda registroAbstract e implementa setters e getters comuns ao registro de um determinado layout
  • e por fim uma classe registro herda de genérico e define o layout que sera usado e se por ventura for necessario sobrepõe ou implementa novos getters e setters do arquivo generico.

    Utilizando docker:

    Esteja na raiz do projeto e execute:

    docker-compose up -d

    Instalando via composer:

    Adicione "openboleto/opencnabphp": "dev-master" ao seu composer.json e rode update ou install

    Acesse a url de exemplo: http://localhost:8080/samples/ExemploRemessa.php

    Status de desenvolvimento

    REMESSA RETORNO
    Banco Layout Situação Layout Situação
    Banco do Brasil Cnab240 Homologado Cnab240 Beta
    Bradesco Cnab400 Homologado Cnab400 Beta
    Caixa Cnab240_SIGCB DESATIVADO** Cnab240_SIGCB Homologado
    Caixa Cnab240_Transf Homologado Cnab240_Transf Homologado
    Itau Cnab240 Beta Cnab240 Beta
    Itau Cnab400 Homologado Cnab400 Homologado
    Santander Cnab240 Homologado Cnab240 Beta
    SICOOB Cnab400 Homologado Cnab400 Homologado
    SICOOB Cnab240 Homologado Cnab240 Homologado
    SICREDI Cnab400 Homologado Cnab400 Beta
    UniPrime Cnab400 Homologado Cnab400 Beta
    UniCred - - Cnab400 Homologado
    C6 Bank Cnab400 Homologado Cnab400 Homologado
    Banco ABC Cnab240 Beta Cnab240 Beta
    Banco Votorantin Cnab240 Beta Cnab240 Beta

    ** o layout da caixa foi desativado pela caixa , modificações serão necessárias para que volte a funcionar veja essa issue para entender melhor #184

    <?php
    use \CnabPHP\Remessa;
    
    $arquivo = new Remessa(104,'cnab240_SIGCB',array(
        'nome_empresa' =>"Empresa ABC", // seu nome de empresa
        'tipo_inscricao'  => 2, // 1 para cpf, 2 cnpj 
        'numero_inscricao' => $empresa->empresas_cnpjcpf, // seu cpf ou cnpj completo
        'agencia'       => '1234', // agencia sem o digito verificador 
        'agencia_dv'    => 1, // somente o digito verificador da agencia 
        'conta'         => '12345', // número da conta
        'conta_dv'     => 1, // digito da conta
        'codigo_beneficiario'     => '123456', // codigo fornecido pelo banco
        'numero_sequencial_arquivo'     => 1, // sequencial do arquivo um numero novo para cada arquivo gerado
    ));
    $lote  = $arquivo->addLote(array('tipo_servico'=> 1)); // tipo_servico  = 1 para cobrança registrada, 2 para sem registro
    
    $lote->inserirDetalhe(array(
    
        'codigo_movimento'  => 1, //1 = Entrada de título, para outras opçoes 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
        /*----------------------------------------------------------------------------------------    */
         
        '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_baixar'       => 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'     => '[email protected]', // 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
    ));        
    echo $arquivo->getText();

    Lendo retorno

    <?php
    $fileContent = file_get_contents("retorno_cnab240_caixa.ret");
    
    $arquivo = new Retorno($fileContent);
    
    $registros = $arquivo->getRegistros();
    foreach($registros as $registro)
    {
        if($registro->R3U->codigo_movimento==6){
            $nossoNumero   = $registro->nosso_numero;
            $valorRecebido = $registro->R3U->vlr_pago;
            $dataPagamento = $registro->R3U->data_ocorrencia;
            $carteira      = $registro->carteira;
            // você ja pode dar baixa
        }
    }

    Caso o arquivo de retorno seja do Tipo 4 (Bradesco - Layout 400 - Pix), sugestão:

    $fileContent = file_get_contents("retorno_cnab240_caixa.ret");
    
    $arquivo = new Retorno($fileContent);
    
    $registros = $arquivo->getRegistros();
    
    for($i = 0; $i < count($registros); $i++) {
        $pix = null;
        if ($arquivo->hasPix() && $arquivo->getLayout() == 'L400') {
        if ($i%2 == 0) { // Dados do registro na posição 'Par'
            $registro = $registros[$i];
        }
        if (($i+1)%2 != 0) { // Dados do Pix na posição 'Ímpar'
            $pix = $registros[$i+1];
        }
        $i++;
    } else {
        $registro = $registros[$i];
    }
    
    $spiUrl = $pix->pix_url; // URL para geração do QR Code (Padrão EMV utilizado pelo Banco Central do Brasil)
    $txid = $pix->txid; // Identificador da transação

    Aguardando voluntarios para edição e testes dos layouts.

    Licença

    • MIT License

opencnabphp's People

Contributors

agnartus avatar brenodouglas avatar compusoftsinformatica avatar ctrl-mota avatar defineweb avatar deividya avatar erickmff avatar fabriciolangermt avatar fernandorech avatar foccos avatar gildonei avatar guaycuru avatar guilher-assis avatar joaonetodev avatar joaovictorsarzi avatar kaynanguarany avatar lucasrodrigobento avatar lukbarros avatar marqu3s avatar mauriciogeek avatar mrprompt avatar ramersonw avatar rctnet avatar recoha avatar unixelias avatar viniciusoliver avatar warquia avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

opencnabphp's Issues

Erro de variavel indefinida

Boa tarde Rogério Muniz, o sistema esta lançando uma mensagem de variável indefinida na classe BoletoAbstrac.php verifiquei que é controle de quebra de linha fiz esta correção acima da linha 1240

$counter = isset($counter) ? $counter : 1; //linha adicionada
$bageBreak = (is_int($counter/3))?"page-break-after:always;":""; // adiciona suporte a css page-break

sou novo github como faço para baixar seu projeto na minha conta e depois fazer este commit para você, qual q linha de comando que devo utilizar....

e depois como faço para sempre ter a última versão a mais atualizada do projeto...

outra coisa o arquivo samples/pdf.php esta dando pau dizendo que a classe do pdf não pode ser encontrada não deveria ter um mapeamento no arquivo composer.json?

Segmento P fora do padrão

Olá @Rctnet , estou usando o seu código para a geração do arquivo de remessa cnab 240 da caixa sigcb... Realizei todas as configurações e setei os valores e enviei para homologação, me responderam o seguinte sobre a analise:

O DV da agencia esta indo 1 favor informar 0
O segmento P esta fora do padrão, não foi possível validar, favor adequar de acordo com manual anexo.
Os demais campos da remessa estão certos

Será que se eu modificar apenas o DV da agencia para 0 o padrão do segmento P já vai ficar configurado corretamente ? O tipo da carteira que estou utilizando é a RG, não sei se isso vai influenciar.

Obrigado e até mais

Duvida sobre como expor o projeto

Posso expor este projeto como uma API que fica aguardando uma requisição com os dados e então me retorna uma REMESSA ou processa um RETORNO ?

Qual a maneira mais prática de realizar tal intento ?

Obrigado.

Travis CI

É preciso configurar o Travis-CI para rodar automaticamente os testes do projeto.

Já temos o .travis.yml no projeto, basta configurar a conta.

Problemas indesejados :-o

Olá,
tive que fazer algumas correções para minha remessa funcionar anteriormente, porém, quando atualizo o projeto pelo git, perco todas elas (óbvio), aqui algumas delas que me causam problemas.

Generico1.php

    protected function set_conta($value)
    {
        $this->data['conta'] =  RemessaAbstract::getLote(0)->entryData['conta'];
    }

    protected function set_conta_dv($value)
    {
        $this->data['conta_dv'] = RemessaAbstract::getLote(0)->entryData['conta_dv'];
    }

Outro problema chato é que, se eu não informar desconto e/ou data_desconto, fico recebendo notices/warnings que poluem meu arquivo de remessa :

\r\n<br />
<b>Notice</b>:  Undefined index: data_desconto in <b>C:\xampp\htdocs\cnab\vendor\rctnet\opencnabphp\src\RegistroRemAbstract.php</b> on line <b>63</b><br />
\r\n<br />
<b>Notice</b>:  Undefined index: data_desconto in <b>C:\xampp\htdocs\cnab\vendor\rctnet\opencnabphp\src\RegistroRemAbstract.php</b> on line <b>63</b><br />
\r\n<br />

Testes

O projeto é ótimo e extremamente útil, porém não existem testes unitários.

Vamos implementar? ;)

Bradesco cnab240

Com a ajuda do @Rctnet consegui gerar o arquivo para ser homologado porém, já de cara, deu erro de arquivo invalido! Busquei na internet e parece que isso se da devido o formato que foi salvo o txt, tem que ser com salvo codificação ANSI.
Antes de enviar novamente para homologar, estou verificando os campos das classes Registro porém bateu umas duvidas:

  • O Registro0 se refere ao Header?
  • O Registro1 se refere ao Trailer?
  • O Registro3P se refere ao Segmento P?

Tem ainda Header_lote e Trailer_lote, quais são suas classes Registro correspondentes?
Eu atualizei o Registro0 considerando que ele seja o Header do arquivo porem notei que o Registro0 do cnab400 tem uma campo chamado "identificacao_registro" e nesse cnab240 que atualizei não consta esse campo no Header do arquivo e sim no Header de lote, esse Header de lote onde atualizo, qual classe Registro se refere a ela?

Digito da Agencia desaparece CNAB400

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
   ));

Warnings chatos e indesejados

Minha remessa (BRADESCO CNAB400) até está sendo gerada corretamente, porém, eu não gostaria de tirar as mensagens de warning em modo desenvolvimento ... o que ocorre é que o projeto está gerando muitos warnings :

<br />
<b>Notice</b>:  Undefined index: data_desconto in <b>C:\xampp\htdocs\apifinanceiro\vendor\rctnet\opencnabphp\src\RegistroRemAbstract.php</b> on line <b>63</b><br />
<br />
<b>Notice</b>:  Undefined index: cod_instrucao1 in <b>C:\xampp\htdocs\apifinanceiro\vendor\rctnet\opencnabphp\src\RegistroRemAbstract.php</b> on line <b>63</b><br />
<br />
<b>Notice</b>:  Undefined index: cod_instrucao2 in <b>C:\xampp\htdocs\apifinanceiro\vendor\rctnet\opencnabphp\src\RegistroRemAbstract.php</b> on line <b>63</b><br />
<br />
<b>Notice</b>:  Undefined index: vlr_juros in <b>C:\xampp\htdocs\apifinanceiro\vendor\rctnet\opencnabphp\src\RegistroRemAbstract.php</b> on line <b>63</b><br />
<br />
<b>Notice</b>:  Undefined index: data_desconto in <b>C:\xampp\htdocs\apifinanceiro\vendor\rctnet\opencnabphp\src\RegistroRemAbstract.php</b> on line <b>63</b><br />
<br />
<b>Notice</b>:  Undefined index: cod_instrucao1 in <b>C:\xampp\htdocs\apifinanceiro\vendor\rctnet\opencnabphp\src\RegistroRemAbstract.php</b> on line <b>63</b><br />
<br />
<b>Notice</b>:  Undefined index: cod_instrucao2 in <b>C:\xampp\htdocs\apifinanceiro\vendor\rctnet\opencnabphp\src\RegistroRemAbstract.php</b> on line <b>63</b><br />
<br />
<b>Notice</b>:  Undefined index: vlr_juros in <b>C:\xampp\htdocs\apifinanceiro\vendor\rctnet\opencnabphp\src\RegistroRemAbstract.php</b> on line <b>63</b><br />
<br />
<b>Notice</b>:  Undefined index: data_desconto in <b>C:\xampp\htdocs\apifinanceiro\vendor\rctnet\opencnabphp\src\RegistroRemAbstract.php</b> on line <b>63</b><br />
<br />
<b>Notice</b>:  Undefined index: cod_instrucao1 in <b>C:\xampp\htdocs\apifinanceiro\vendor\rctnet\opencnabphp\src\RegistroRemAbstract.php</b> on line <b>63</b><br />
<br />
<b>Notice</b>:  Undefined index: cod_instrucao2 in <b>C:\xampp\htdocs\apifinanceiro\vendor\rctnet\opencnabphp\src\RegistroRemAbstract.php</b> on line <b>63</b><br />
<br />
<b>Notice</b>:  Undefined index: vlr_juros in <b>C:\xampp\htdocs\apifinanceiro\vendor\rctnet\opencnabphp\src\RegistroRemAbstract.php</b> on line <b>63</b><br />
<br />
<b>Notice</b>:  Undefined index: data_desconto in <b>C:\xampp\htdocs\apifinanceiro\vendor\rctnet\opencnabphp\src\RegistroRemAbstract.php</b> on line <b>63</b><br />
<br />
<b>Notice</b>:  Undefined index: data_desconto in <b>C:\xampp\htdocs\apifinanceiro\vendor\rctnet\opencnabphp\src\RegistroRemAbstract.php</b> on line <b>63</b><br />
<br />
<b>Notice</b>:  Undefined index: cod_instrucao1 in <b>C:\xampp\htdocs\apifinanceiro\vendor\rctnet\opencnabphp\src\RegistroRemAbstract.php</b> on line <b>63</b><br />
<br />
<b>Notice</b>:  Undefined index: cod_instrucao2 in <b>C:\xampp\htdocs\apifinanceiro\vendor\rctnet\opencnabphp\src\RegistroRemAbstract.php</b> on line <b>63</b><br />
<br />
<b>Notice</b>:  Undefined index: vlr_juros in <b>C:\xampp\htdocs\apifinanceiro\vendor\rctnet\opencnabphp\src\RegistroRemAbstract.php</b> on line <b>63</b><br />
<br />
<b>Notice</b>:  Undefined index: data_desconto in <b>C:\xampp\htdocs\apifinanceiro\vendor\rctnet\opencnabphp\src\RegistroRemAbstract.php</b> on line <b>63</b><br />

Ajuda para instalar este projeto

Olá,

este projeto funciona como o CNABPHP do Anderson?
Estou querendo gerar arquivo de remessa para a Caixa, e gostaria de ajuda para instalar.
Poderia explicar passo a passo?

Obrigado!

Homolagação de arquivo remessa CNAB 240

01 - Campo inválido na linha 3. Tipo de registro [Detalhe - Segmento P]. O campo [Identificação do título no Banco], posição 45 a 57, Digito verificador inserido: 4, Digito verificador valido: 0 [Digito verificador do nosso número é invalido.]. Valor atual [0000000000404].

numero_inscricao sendo gerado ZERADO

Aparentemente o NUMERO_INSCRICAO está sendo gerado somente com zeros

102000000000000003178000005880700000043 0000000005070100 109000000 000000 20101 09041600000000100007560000 010090416000030000030000020904160000000000000900000000000000000000000000112312212356 JOSE DA SILVA ALVES RUA DOS DEVELOPERS,123 SL 103 BAIRRO DA INSON12345123LONDRINA PR 05 000002

Cnab Remessa Sicoob

Bom dia amigo.
Estou seguindo seu exemplo e eu gerei o CNAB sem problemas mas ao enviá-lo ao Banco ele está apontando erro de que o registro possui mais de 400 caracteres.
Vou anexar o arquivo para ver se consegue me ajudar.
Também tentei enviar o seu exemplo da pasta samples sem alterar nenhuma variável e o mesmo retornou o mesmo erro.

EnvioCNAB.zip

Campos PROTESTAR , PRAZO_PROTESTO na Remessa BRADESCO

Olá, ao gerar minha remessa para o Bradesco, estou preenchendo os campos referentes ao protesto, porém não os encontro no arquivo gerado :

As variáveis tem valor, pois já conferi :

                    'protestar'                         => $protestar, // 1 = Protestar com (Prazo) dias, 3 = Devolver ap�s (Prazo) dias
                    'prazo_protesto'                    => $proteDias, // Informar o numero de dias apos o vencimento para iniciar o protesto

O problema e que após gerado o arquivo de remessa, não encontro os valores nas posições.

10000000000000000000000901956001888081832                     0002020000000181832800000000002N           2  01          31051800000000003330000000001N030418000000000000000000000000000000000000000000000000000000000000000205740310000166FARMACIA PEREIRA E GARCIA LTDA          RUA PADRE ABEL, 163                                 37925000                                                            000002
10000000000000000000000901956001888081833                     0002020000000181833600000000002N           2  01          30051800000000002500000000001N030418000000000000000000000000000000000000000000000000000000000000000205740310000166FARMACIA PEREIRA E GARCIA LTDA          RUA PADRE ABEL, 163                                 37925000                                                            000003
10000000000000000000000901956001888081834                     0002020000000181834400000000002N           2  01          18051800000000002500000000001N030418000000000000000000000000000000000000000000000000000000000000000205740310000166FARMACIA PEREIRA E GARCIA LTDA          RUA PADRE ABEL, 163                                 37925000                                                            000004

Modelo de remessa do Sicoob

Alguém já gerou remessa para o Sicoob e tem o preenchimento das variaveis para que eu possa rodar um exemplo aqui ? Tipo o exemplo na página inicial, só que do CNAB400 Sicoob.

?php
use \CnabPHP\Remessa;

$arquivo = new Remessa(104,'cnab240_SIGCB',array(
    'nome_empresa' =>"Empresa ABC", // seu nome de empresa
    'tipo_inscricao'  => 2, // 1 para cpf, 2 cnpj 
    'numero_inscricao' => $empresa->empresas_cnpjcpf, // seu cpf ou cnpj completo
    'agencia'       => '1234', // agencia sem o digito verificador 
    'agencia_dv'    => 1, // somente o digito verificador da agencia 
    'conta'         => '12345', // número da conta
    'conta_dv'     => 1, // digito da conta
    'codigo_beneficiario'     => '123456', // codigo fornecido pelo banco
    'numero_sequencial_arquivo'     => 1, // sequencial do arquivo um numero novo para cada arquivo gerado
));
$lote  = $arquivo->addLote(array('tipo_servico'=> 1)); // tipo_servico  = 1 para cobrança registrada, 2 para sem registro

$lote->inserirDetalhe(array(

    'codigo_movimento' => 1, //1 = Entrada de título, para outras opçoes 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
    /*----------------------------------------------------------------------------------------    */
     
    '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
    '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. 
    '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'     => '[email protected]', // 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
));        
echo $arquivo->getText();

Agência não é permitido ZERO

Meu problema com o dígito que desaparecia na agência no HEADER é algo relacionado ao mesmo ser ZERO. Se for maior que ZERO, funciona, se não ele fica vazio.

Como posso corrigir ? em qual parte ?

        $arquivo = new Remessa(756, "cnab400", array(
            'nome_empresa'                  => $result->header->beneficiario,
            'tipo_inscricao'                => 2,
            'agencia'                       => $result->header->agencia,
            'agencia_dv'                    => $result->header->agencia_dv + 1,
            // 'conta'                         => $result->header->conta,
            // 'conta_dv'                      => $result->header->conta_dv,
            'codigo_beneficiario'           => $result->header->agencia,
            'codigo_beneficiario_dv'        => $result->header->agencia_dv,
            'numero_sequencial_arquivo'     => $result->header->numero_sequencial_arquivo,
            'situacao_arquivo'              => $ambiente
        ));

Problemas remessa BRADESCO

Ao tentar gerar a remessa Bradesco, recebo diversos erros relacionados à carteira


<br />
<b>Notice</b>:  Undefined variable: body in
<b>C:\xampp\htdocs\SigPHPAPIFinanceiro\src\routes.php</b> on line
<b>191</b>
<br />
<br />
<b>Notice</b>:  Undefined index: carteira_banco in
<b>C:\xampp\htdocs\SigPHPAPIFinanceiro\vendor\rctnet\opencnabphp\src\resources\B237\remessa\cnab400\Registro1.php</b> on line
<b>244</b>
<br />
<br />
<b>Notice</b>:  Undefined index: conta in
<b>C:\xampp\htdocs\SigPHPAPIFinanceiro\vendor\rctnet\opencnabphp\src\resources\B237\remessa\cnab400\Registro1.php</b> on line
<b>246</b>
<br />
<br />
<b>Notice</b>:  Undefined index: conta_dv in
<b>C:\xampp\htdocs\SigPHPAPIFinanceiro\vendor\rctnet\opencnabphp\src\resources\B237\remessa\cnab400\Registro1.php</b> on line
<b>247</b>
<br />
<br />
<b>Notice</b>:  Undefined index: carteira_banco in
<b>C:\xampp\htdocs\SigPHPAPIFinanceiro\vendor\rctnet\opencnabphp\src\resources\B237\remessa\cnab400\Registro1.php</b> on line
<b>258</b>
<br />

CÓDIGO DE INSTRUÇÃO INVÁLIDO

Olá,
antes de utilizar este projeto, eu enviava um arquivo e ele ia com esta posição de CÓDIGO DE INSTRUÇÃO => 00 e funcionava. Agora, utilizando o projeto, está dando este erro.

codigo de instrucao invalido

DUVIDA

Ola estou começando a desenvolver agora, e queria tira uma duvida por que nunca fiz um projeto assim, para eu gera o boleto precisa de outra classe que gere ou ele mesmo ja vai gera com o as imagens...

Ajuda Retorno Santander

Notice: Undefined index: valor in ...\vendor\quilhasoft\opencnabphp\src\RegistroRetAbstract.php on line 119

Notice: Undefined index: vlr_desconto in ...\vendor\quilhasoft\opencnabphp\src\RegistroRetAbstract.php on line 119

Alguém sabe me dizer o pq disso, dizendo que não vou definida

Usei o arquivo ExemploRetornoSantander.php

Arquivo de remassa SANTANDER

A geração de arquivos de remessa p/ Santander não está reconhecendo o parâmetro "nosso_numero", algum ideia de como resolver isso ?

Mover docs para outro repositório

Seria interessante mover o diretório docs para um novo repositório,como OpenCnabPHP-Docs, para diminuir o tamanho do repositório. Visto que não necessiamente, precisamos desse diretório para rodar projeto.

Remessa SICREDI

Alguma previsão p/ implementação da remessa p/ SICREDI ?

Implementar registros S do santander

Atualizei e gerou esse erro, poderia me ajudar

Fatal error: Uncaught Error: Class 'CnabPHP\resources\033\remessa\cnab240\Registro3Q' not found in Q:\W_SERVER\EASY\eds-www\Projects\Opera\App\Libraries\vendor\quilhasoft\opencnabphp\src\resources\B033\remessa\cnab240\Registro3P.php:357 Stack trace: #0 Q:\W_SERVER\EASY\eds-www\Projects\Opera\App\Libraries\vendor\quilhasoft\opencnabphp\src\resources\B033\remessa\cnab240\Registro3P.php(351): CnabPHP\resources\B033\remessa\cnab240\Registro3P->inserirDetalhe(Array) #1 Q:\W_SERVER\EASY\eds-www\Projects\Opera\App\Libraries\vendor\quilhasoft\opencnabphp\src\resources\generico\remessa\cnab240\Generico1.php(128): CnabPHP\resources\B033\remessa\cnab240\Registro3P->__construct(Array) #2 Q:\W_SERVER\EASY\eds-www\Projects\Opera\App\Models\Reports\AdminRemessa.php(215): CnabPHP\resources\generico\remessa\cnab240\Generico1->inserirDetalhe(Array) #3 Q:\W_SERVER\EASY\eds-www\Projects\Opera\App\Models\Reports\AdminRemessa.php(62): AdminRemessa->setRemessaSantander() #4 Q:\W_SERVER\EASY\eds-www\Projects\Opera\Admin\Remessas.php(84): AdminRe in Q:\W_SERVER\EASY\eds-www\Projects\Opera\App\Libraries\vendor\quilhasoft\opencnabphp\src\resources\B033\remessa\cnab240\Registro3P.php on line 357

Integrar com Slim

Pessoal, alguém poderia publicar um exemplo de como integrar o projeto com o framework slim ?
Gostaria de expor rotas para gerar REMESSA e PROCESSAR RETORNO.

Não sei como encaixar este projeto no meu mini projeto slim.

Obrigado.

Campos problemáticos

Sempre que pego a última versão do sistema, tenho que alterar alguns campos, como por exemplo o campo CONTA, passando $VALUE para ele, pois, caso contrário, recebo o erro :

Notice: Undefined index: conta in
C:\xampp\htdocs\SigPHPAPIFinanceiro\vendor\rctnet\opencnabphp\src\resources\generico\remessa\cnab400\Generico1.php on line
63

Isto é problemático, pois, se eu corrigir LOCALMENTE, quando precisar atualizar o projeto, preciso corrigir novamente.

$value tem valor
RemessaAbstract::getLote(0)->entryData['conta']; está nulo

    protected function set_conta($value)
    {
        echo "VAlor de Conta " . $value;
        $this->data['conta'] = RemessaAbstract::getLote(0)->entryData['conta'];
    }

Valores de configuração do emissor do boleto somem ao entrar na classe

Quando vou passar meus dados para gerar o HEADER do CNAB400 Itaú estou passando os dados do emissor do boleto, porém quando o arquivo é gerado os valores somem e dá vários erros de validação como:
O tipo de incrição deve ser 1 para CPF e 2 para CNPJ, o valor informado foi: [null]

Estou instanciando o objeto remessa assim

$arquivo = new Remessa("341, "cnab400", [ 'nome_empresa' => $nomeEmpresa, 'tipo_inscricao' => 2, // 1 para cpf, 2 cnpj 'agencia' => $agencia, 'agencia_dv' => $agencia_dv, 'codigo_beneficiario' => $codigo_beneficiario, 'codigo_beneficiario_dv' => $codigo_beneficiario_dv, 'numero_sequencial_arquivo' => $numero_sequencial_arquivo, ]);

Já tentei passar esses dados das variáveis manualmente também e nada.
A exception é gerada no arquivo remessa\cnab400\Generico1.php

Ambiente:
php 7.2 - XAMPP Windows 10 64 bits

Ví que na issue #31 também deu um erro bem parecido mais seguindo o que ele fez lá não consegui resolver.

SICOOB 400 não processa retorno

Estive tentando alguns testes e não processou o RET ( arquivo de retorno ) do Sicoob 756

Fatal error: Uncaught Error: Class 'CnabPHP\resources\756\retorno\L400\Registro1' not found in C:\xampp\htdocs\OpenCnabPHP\src\resources\B756\retorno\L400\Registro0.php:136 Stack trace: #0 C:\xampp\htdocs\OpenCnabPHP\src\resources\B756\retorno\L400\Registro0.php(129): CnabPHP\resources\b756\retorno\L400\Registro0->inserirDetalhe() #1 C:\xampp\htdocs\OpenCnabPHP\src\RetornoAbstract.php(56): CnabPHP\resources\b756\retorno\L400\Registro0->__construct('02RETORNO01COBR...') #2 C:\xampp\htdocs\OpenCnabPHP\src\Retorno.php(32): CnabPHP\RetornoAbstract->__construct('02RETORNO01COBR...') #3 C:\xampp\htdocs\OpenCnabPHP\src\samples\ExemploRetorno.php(31): CnabPHP\Retorno->__construct('02RETORNO01COBR...') #4 {main} thrown in C:\xampp\htdocs\OpenCnabPHP\src\resources\B756\retorno\L400\Registro0.php on line 136

Cnab240 CAIXA - ERRO

Bom, como vi na descrição do projeto, está ainda em teste para o Cnab240 Caixa, fiz o teste e enviei a remessa.
O retorno do banco:

Erro ao processar arquivo FEBRABAN 240 (registro #2): Tipo de inscrição de empresa não é suportado: 0 (Exception)

Arquivo de REMESSA não aceito no SICOOB

Após processar meu arquivo de REMESSA, o banco me retorna. Comparei ele com um meu gerado em outra ferramente e aparentemente não tem diferenças. Existe alguma ferramenta para validar o arquivo de remessa antes de enviar ?

capturar

Banco Itau - cnab240

Boa noite precisa da ajuda de voces sobre o boleto ITAU carteira 157

Erro:
Fatal error: Class 'CnabPHP\resources\341\remessa\cnab240\Registro3Q' not found in /home/storage/9/52/56/ws32/public_html/boleto/src/resources/B341/remessa/cnab240/Registro3P.php on line 262

Fiz os ajustes abaixo:

$arquivo = new Remessa(341,'cnab240',array(
'nome_empresa' =>"Empresa ABC", // seu nome de empresa
'tipo_inscricao' => 1, // 1 para cpf, 2 cnpj
'numero_inscricao' => '123.122.123-56', // seu cpf ou cnpj completo
'agencia' => "3300", // agencia sem o digito verificador
'agencia_dv' => '1', // somente o digito verificador da agencia
'conta' => '3264', // número da conta
'conta_dv' => (string)0, // digito da conta
'codigo_beneficiario' => '10668', // codigo fornecido pelo banco
'codigo_beneficiario_dv' => '2', // codigo fornecido pelo banco
'numero_sequencial_arquivo' => 1,
'situacao_arquivo' =>'P', // use T para teste e P para produ��o
'mensagem_1'=>'Sua mensagem personalizada para todos os boletos do arquivo aqui' // suportado somente para SICOOB cnab400, mudar o numero 1 para 2,3,4,5 para incluir mais mensagens
));
$lote = $arquivo->addLote(array('tipo_servico'=> 1)); // tipo_servico = 1 para cobrança registrada, 2 para sem registro

$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
'nosso_numero' => 12345678, // 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'    => 157, // codigo da carteira ex: 109,RG esse vai o nome da carteira no banco
'cod_carteira'      => "I", // 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'     => '[email protected]', // 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
'cod_instrucao1'     => 1, //instrução para cobrar juros novas regras da base de boletos unificada 
'cod_instrucao2'     => 1, //instrução para cobrar juros novas regras da base de boletos unificada 
'taxa_multa'         => 0.00, // taxa de multa em percentual
'taxa_juros'         => 0.00, // taxa de juros em percentual

));

================================================

Bradesco

Olá, bom dia
alguém ai já testou Bradesco ?
Remessa e Retorno ?

O Layout do Bradesco me pareceu ser idêntico ao do SICOOB, procede ?

Obrigado.

Homologação de arquivo remessa SANTANDER CNAB 240

Não sei se aqui é o lugar certo p/ pedir ajudar mas se puderem me ajudar eu agradeço. Fiz o envio do arquivo remessa p/ banco p/ homologação e me retornaram às seguintes ocorrências. Estou usando o OpenBoleto p/ geração de boletos.

01 - Campo inválido na linha 3. Tipo de registro [Detalhe - Segmento P]. O campo [Identificação do título no Banco], posição 45 a 57, Digito verificador inserido: 4, Digito verificador valido: 0 [Digito verificador do nosso número é invalido.]. Valor atual [0000000000404].

02 - Campo inválido na linha 3. Tipo de registro [Detalhe - Segmento P]. O campo [Código do juros de mora], posição 118 a 118, deve ser [1] Valor por dia - Informar no campo o valor/dia a mora a ser cobrada. ou [2] Taxa Mensal - Informar no campo taxa mensal o percentual a ser aplicado sobre valor do titulo que será calculado por dia de atraso. ou [3] Isento ou [4] Utilizar comissão permanência do Banco por dia de atraso ou [5] Tolerância valor por dia (cobrar juros a partir de) ou [6] Tolerância taxa mensal (cobrar juros a partir de). Valor atual [0].

03 - Campo inválido na linha 5. Tipo de registro [Detalhe - Segmento P]. O campo [Identificação do título no Banco], posição 45 a 57, Digito verificador inserido: 5, Digito verificador valido: 0 [Digito verificador do nosso número é invalido.]. Valor atual [0000000000405].

04 - Campo inválido na linha 5. Tipo de registro [Detalhe - Segmento P]. O campo [Código do juros de mora], posição 118 a 118, deve ser [1] Valor por dia - Informar no campo o valor/dia a mora a ser cobrada. ou [2] Taxa Mensal - Informar no campo taxa mensal o percentual a ser aplicado sobre valor do titulo que será calculado por dia de atraso. ou [3] Isento ou [4] Utilizar comissão permanência do Banco por dia de atraso ou [5] Tolerância valor por dia (cobrar juros a partir de) ou [6] Tolerância taxa mensal (cobrar juros a partir de). Valor atual [0].

05 - Campo inválido na linha 7. Tipo de registro [Detalhe - Segmento P]. O campo [Identificação do título no Banco], posição 45 a 57, Digito verificador inserido: 6, Digito verificador valido: 0 [Digito verificador do nosso número é invalido.]. Valor atual [0000000000406].

06 - Campo inválido na linha 7. Tipo de registro [Detalhe - Segmento P]. O campo [Código do juros de mora], posição 118 a 118, deve ser [1] Valor por dia - Informar no campo o valor/dia a mora a ser cobrada. ou [2] Taxa Mensal - Informar no campo taxa mensal o percentual a ser aplicado sobre valor do titulo que será calculado por dia de atraso. ou [3] Isento ou [4] Utilizar comissão permanência do Banco por dia de atraso ou [5] Tolerância valor por dia (cobrar juros a partir de) ou [6] Tolerância taxa mensal (cobrar juros a partir de). Valor atual [0].

Dúvida na leitura do arquivo de retorno

Olá,
estou com uma dúvida, caso alguém possa me esclarecer
onde vejo o que é $codigo_movimento e porque ele é fixo == 6 no código ?


            [data:protected] => Array
                (
                    [tipo_registro] => 1
                    [tipo_inscricao_empresa] => 2
                    [numero_inscricao_empresa] => 12025570000115
                    [agencia] => 3178
                    [agencia_dv] => 0
                    [conta] => 5880
                    [conta_dv] => 7
                    [numero_convenio] => 0
                    [seu_numero] => 
                    [nosso_numero] => 2017261
                    [nosso_numero_dv] => 0
                    [numero_parcela] => 1
                    [grupo_valor] => 0
                    [codigo_baixa] => 0
                    [especie_titulo_lit] => 0
                    [carteira] => 000
                    [conta_caucao] => 0
                    [cod_responsabilidade] => 00000
                    [cod_responsabilidade_dv] => 0
                    [taxa_desconto] => 0
                    [taxa_IOF] => 0
                    [filler41] => 
                    [cod_carteira] => 1
                    [codigo_movimento] => 2
                    [data_ocorrencia] => 2017-12-05
                    [seu_numero2] => 
                    [filler42] => 
                    [data_vencimento] => 2017-12-08
                    [valor] => 2
                    [codigo_banco] => 0
                    [agencia_cobradora] => 0
                    [agencia_cobradora_dv] => 0
                    [especie_titulo] => 99
                    [data_credito] => 1999-11-30
                    [vlr_tarifas] => 0
                    [vlr_outras_despesas] => 0
                    [vlr_juros_desconto] => 0
                    [vlr_iof] => 0
                    [vlr_abatimento] => 0
                    [vlr_desconto] => 0
                    [vlr_pago] => 0
                    [vlr_juros_multa] => 0
                    [vlr_outros] => 0
                    [vlr_abatimento_na] => 0
                    [vlr_lancamento] => 0
                    [indicativo_debito_credito] => 1
                    [indicativo_valor] => 0
                    [vlr_ajuste] => 0
                    [filler45] => 1
                    [numero_inscricao_pagador] => 64220690001430
                    [filler47] => 00000000000000000000000000000000000000
                    [numero_registro] => 3
                )

            [children:protected] => 

Dúvida no campo [ SEU NUMERO ]

Qual propriedade do projeto que eu preencho o caampo SEU NUMERO , que acredito, se refere ao código interno dentro do meu sistema. Minhas contas foram registradas via REMESSA SICOOB perfeitamente, apeans faltou este número.

Muito obrigado a todos os colegas do projeto que ajudaram até aqui, remessa sicoob está ok agora.

imagemeditada

Bairro => bairro_pagador NULL (Bradesco CNAB400)

Olá,
quando envio a propriedade BAIRRO PAGADOR, a mesma está indo null no arquivo gerado, sendo que há valor. ( remessa bradesco )


                    'endereco_pagador'                  => $conta->endereco_pagador,
                    'cep_pagador'                       => $conta->cep_pagador,
                    'cidade_pagador'                    => $conta->cidade_pagador,
                    'bairro_pagador'                    => $conta->bairro_pagador,
                    'uf_pagador'                        => $conta->uf_pagador,

mesmo forçando, está sendo gerado null

                    'endereco_pagador'                  => $conta->endereco_pagador,
                    'cep_pagador'                       => $conta->cep_pagador,
                    'cidade_pagador'                    => $conta->cidade_pagador,
                    'bairro_pagador'                    => 'testando bairro', // $conta->bairro_pagador,
                    'uf_pagador'                        => $conta->uf_pagador,

Gerar arquivo de remessa/retorno do itaú

olá!
estou usando a lib para criar e ler os arquivos de remessa/retorno para o banco itau (cod: 341)
no entanto estou tendo dificuldades com a documentação do projeto. uma dica seria adicionar uma sample de geração de remessa/retorno do itau em src/samples para facilitar visto que muitos utilizam esse banco.
na home do projeto o readme.md traz um pequeno tutorial de como gerar os arquivos. entretanto na configuração de lote tem umas chaves de array duplicadas que eu não entendi. ex:

`'codigo_ocorrencia' => 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
'codigo_movimento' => 1, // 1 = Entrada de título, para outras opçoes ver nota explicativa C004 manual Cnab_SIGCB na pasta docs
'nosso_numero' => 1, // numero sequencial de boleto
'seu_numero' => 1, // 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`

no exemplo acima temos duas chaves nosso/seu numero. não entendi muito bem...

TODO

Aqui colocaremos coisas que precisamos fazer para o projeto.

Juros e Multa não aceita 0.00

Olá amigos,
os campos juros e multa no arquivo de remessa, não aceitam ZERO

Erro No Sistema : Campo faltante ou com valor nulo:taxa_multa Boleto Numero:18296

                'taxa_multa'                        => 0.0000,
                'taxa_juros'                        => 0.0001

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.