mtferreira/cnab_php

There is no license information available for the latest version (1.4.7) of this package.

Projeto para criar arquivos de remessas e processar arquivos de retorno no formato CNAB

1.4.7 2016-08-05 17:37 UTC

README

Build Status Latest Stable Version Latest Unstable Version Code Climate Test Coverage

Projeto para criar arquivos de remessas e processar arquivos de retorno no formato CNAB, utilizado nos bancos geralmente para boleto bancário.

Funcionalidades

  • Leitura e geração de arquivos de retorno e remessa nos formatos CNAB 240 e 400
Banco Versão da Remessa Versão do Retorno
Banco do Brasil 240
Bradesco 240
Caixa 240 240 e 400
Itaú 400 (Falta testar) 400
Santander 240
Sicoob 240 240 e 400

Instalação

Composer

Se você já conhece o Composer, adicione a dependência abaixo à diretiva "require" no seu composer.json:

"mtferreira/cnab_php": "dev-master"

Como Usar

Lendo um arquivo de Retorno

$cnabFactory = new Cnab\Factory();
$arquivo = $cnabFactory->createRetorno('AQUI VAI O CAMINHO DO ARQUIVO DE RETORNO, EX: RET1010.RET');
$detalhes = $arquivo->listDetalhes();
foreach($detalhes as $detalhe) {
    if($detalhe->getValorRecebido() > 0) {
        $nossoNumero   = $detalhe->getNossoNumero();
        $valorRecebido = $detalhe->getValorRecebido();
        $dataPagamento = $detalhe->getDataOcorrencia();
        $carteira      = $detalhe->getCarteira();
        // você já tem as informações, pode dar baixa no boleto aqui
    }
}

Criando um arquivo de remessa

$codigo_banco = Cnab\Banco::CEF;
$arquivo = new Cnab\Remessa\Cnab400\Arquivo($codigo_banco);
$arquivo->configure(array(
	'data_geracao'  => new DateTime(),
	'data_gravacao' => new DateTime(), 
	'nome_fantasia' => 'Nome Fantasia da sua empresa', 
	'razao_social'  => 'Razão social da sua empresa', 
	'cnpj'          => 'CPNJ da sua empresa',
	'banco'         => $codigo_banco, //código do banco
	'logradouro'    => 'Logradouro da Sua empresa',
	'numero'        => 'Número do endereço',
	'bairro'        => 'Bairro da sua empresa', 
    'cidade'        => 'Cidade da sua empresa',
    'uf'            => 'Sigla da cidade, ex SP',
    'cep'           => 'CEP do endereço da sua cidade',
    'agencia'       => 'Agencia da conta',
    'conta'         => 'Número da conta',
    'operacao'      => 'Operação',
    'codigo_cedente'     => 'Código do Cedente',
    'codigo_cedente_dac' => 'Digito verificador do código do cedente',
));

// você pode adicionar vários boletos em uma remessa
$arquivo->insertDetalhe(array(
	'codigo_ocorrencia' => 1, // 1 = Entrada de título, futuramente poderemos ter uma constante
	'nosso_numero'      => 'Nosso número do boleto',
	'numero_documento'  => 'Seu Número / Número do Documento',
	'carteira'          => 'Carteira do Boleto',
	'especie'           => Cnab\Especie::CEF_OUTROS, // Você pode consultar as especies Cnab\Especie::CEF_OUTROS, futuramente poderemos ter uma tabela na documentação
	'valor'             => 100.39, // Valor do boleto
	'instrucao1'        => 2, // 1 = Protestar com (Prazo) dias, 2 = Devolver após (Prazo) dias, futuramente poderemos ter uma constante
	'instrucao2'        => 0, // preenchido com zeros
	'sacado_nome'       => 'Nome do cliente', // O Sacado é o cliente, preste atenção nos campos abaixo
	'sacado_tipo'       => 'cpf', //campo fixo, escreva 'cpf' (sim as letras cpf) se for pessoa fisica, cnpj se for pessoa juridica
	'sacado_cpf'        => 'CPF do Cliente',
	'sacado_logradouro' => 'Logradouro do cliente',
	'sacado_bairro'     => 'Bairro do cliente',
	'sacado_cep'        => 'CEP do cliente (somente numeros, sem hífen)',
	'sacado_cidade'     => 'Cidade do cliente',
	'sacado_uf'         => 'Sigla do estado do cliente',
	'data_vencimento'   => new DateTime('Data de vencimento do Boleto, ex: 2014-06-08'),
	'data_cadastro'     => new DateTime('Data de criação do Boleto, ex: 2014-06-01'),
	'juros_de_um_dia'     => 0.10, // Valor do juros de 1 dia'
	'data_desconto'       => new DateTime('Data limite para desconto, ex: 2014-06-01'),
	'valor_desconto'      => 10.0, // Valor do desconto
	'prazo'               => 10, // prazo de dias para o cliente pagar após o vencimento
	'taxa_de_permanencia' => '0', //00 = Acata Comissão por Dia (recomendável), 51 Acata Condições de Cadastramento na CAIXA
	'mensagem'            => 'Descrição do boleto',
	'data_multa'          => new DateTime('Data da multa, ex: 2014-06-09'), // data da multa
	'valor_multa'         => 10.0, // valor da multa
));

// para salvar
$arquivo->save('meunomedearquivo');

Como Contribuir

Você pode contribuir com testes (unitários ou manuais), ou adaptando o formato para outro banco através do projeto cnab_yaml (https://github.com/andersondanilo/cnab_yaml) (que é utilidado pelo cnab_php). Leia a wiki

Licença

Este projeto esta sobre a licença MIT