Skip to content

Commit

Permalink
grafeno
Browse files Browse the repository at this point in the history
  • Loading branch information
eduardokum committed Jun 19, 2024
1 parent 9f9f289 commit 415c0d5
Show file tree
Hide file tree
Showing 37 changed files with 1,065 additions and 125 deletions.
47 changes: 47 additions & 0 deletions exemplos/grafeno_boleto.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
<?php

require 'autoload.php';
$beneficiario = new Eduardokum\LaravelBoleto\Pessoa([
'nome' => 'ACME',
'endereco' => 'Rua um, 123',
'cep' => '99999-999',
'uf' => 'UF',
'cidade' => 'CIDADE',
'documento' => '99.999.999/9999-99',
]);

$pagador = new Eduardokum\LaravelBoleto\Pessoa([
'nome' => 'Cliente',
'endereco' => 'Rua um, 123',
'bairro' => 'Bairro',
'cep' => '99999-999',
'uf' => 'UF',
'cidade' => 'CIDADE',
'documento' => '999.999.999-99',
]);

$boleto = new Eduardokum\LaravelBoleto\Boleto\Banco\Grafeno([
'logo' => realpath(__DIR__ . '/../logos/') . DIRECTORY_SEPARATOR . '274.png',
'dataVencimento' => new Carbon\Carbon(),
'valor' => 100,
'multa' => false,
'juros' => false,
'numero' => 1,
'numeroDocumento' => 1,
'pagador' => $pagador,
'beneficiario' => $beneficiario,
'carteira' => '1',
'agencia' => '0001',
'conta' => '08118228',
'contaDv' => '9',
'range' => '25000000001',
'conveio' => '81153330',
'descricaoDemonstrativo' => ['demonstrativo 1', 'demonstrativo 2', 'demonstrativo 3'],
'instrucoes' => ['instrucao 1', 'instrucao 2', 'instrucao 3'],
'aceite' => 'S',
'especieDoc' => 'DM',
]);

$pdf = new Eduardokum\LaravelBoleto\Boleto\Render\Pdf();
$pdf->addBoleto($boleto);
$pdf->gerarBoleto($pdf::OUTPUT_SAVE, __DIR__ . DIRECTORY_SEPARATOR . 'arquivos' . DIRECTORY_SEPARATOR . 'grafeno .pdf');
55 changes: 55 additions & 0 deletions exemplos/grafeno_remessa.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
<?php

require 'autoload.php';
$beneficiario = new Eduardokum\LaravelBoleto\Pessoa([
'nome' => 'ACME',
'endereco' => 'Rua um, 123',
'cep' => '99999-999',
'uf' => 'UF',
'cidade' => 'CIDADE',
'documento' => '99.999.999/9999-99',
]);

$pagador = new Eduardokum\LaravelBoleto\Pessoa([
'nome' => 'Cliente',
'endereco' => 'Rua um, 123',
'bairro' => 'Bairro',
'cep' => '99999-999',
'uf' => 'UF',
'cidade' => 'CIDADE',
'documento' => '999.999.999-99',
]);

$boleto = new Eduardokum\LaravelBoleto\Boleto\Banco\Grafeno([
'logo' => realpath(__DIR__ . '/../logos/') . DIRECTORY_SEPARATOR . '274.png',
'dataVencimento' => new Carbon\Carbon(),
'valor' => 100,
'multa' => false,
'juros' => false,
'numero' => 1,
'numeroDocumento' => 1,
'pagador' => $pagador,
'beneficiario' => $beneficiario,
'carteira' => '1',
'agencia' => '0001',
'conta' => '12345678',
'contaDv' => '9',
'range' => '25000000000',
'descricaoDemonstrativo' => ['demonstrativo 1', 'demonstrativo 2', 'demonstrativo 3'],
'instrucoes' => ['instrucao 1', 'instrucao 2', 'instrucao 3'],
'aceite' => 'S',
'especieDoc' => 'DM',
]);

$remessa = new Eduardokum\LaravelBoleto\Cnab\Remessa\Cnab400\Banco\Grafeno([
'idRemessa' => 1,
'agencia' => '0001',
'carteira' => '1',
'conta' => '12345678',
'contaDv' => '9',
'convenio' => '12345678',
'beneficiario' => $beneficiario,
]);
$remessa->addBoleto($boleto);

echo $remessa->save(__DIR__ . DIRECTORY_SEPARATOR . 'arquivos' . DIRECTORY_SEPARATOR . 'grafeno.txt');
Binary file modified logos/077.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified logos/133.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified logos/208.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added logos/274.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added manuais/GRAFENO/Grafeno CNAB 400 - Retorno.pdf
Binary file not shown.
Binary file added manuais/GRAFENO/Grafeno CNAB 444 - Remessa.pdf
Binary file not shown.
14 changes: 11 additions & 3 deletions src/Boleto/Banco/Fibra.php
Original file line number Diff line number Diff line change
Expand Up @@ -149,18 +149,26 @@ public function setModalidadeCarteira($modalidadeCarteira)
return $this;
}

/**
* Retorna o número definido pelo cliente para compor o nosso número
*
* @return int
*/
public function getNumero()
{
return $this->numero < $this->getRange() ? $this->getRange() + $this->numero : $this->numero;
}

/**
* Gera o Nosso Número.
*
* @return string
* @throws ValidationException
*/
protected function gerarNossoNumero()
{
$nn = 0;
if (Util::upper($this->getModalidadeCarteira()) == 'D') {
$nn = ((int) $this->getRange()) + ((int) $this->getNumero());
$nn .= CalculoDV::fibraNossoNumero($this->getAgencia(), $this->getCarteira(), $nn);
$nn = $this->getNumero() . CalculoDV::fibraNossoNumero($this->getAgencia(), $this->getCarteira(), $nn);
}

return Util::numberFormatGeral($nn, 11);
Expand Down
168 changes: 168 additions & 0 deletions src/Boleto/Banco/Grafeno.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,168 @@
<?php

namespace Eduardokum\LaravelBoleto\Boleto\Banco;

use Eduardokum\LaravelBoleto\Util;
use Eduardokum\LaravelBoleto\CalculoDV;
use Eduardokum\LaravelBoleto\Boleto\AbstractBoleto;
use Eduardokum\LaravelBoleto\Contracts\Boleto\Boleto;
use Eduardokum\LaravelBoleto\Exception\ValidationException;
use Eduardokum\LaravelBoleto\Contracts\Boleto\Boleto as BoletoContract;

class Grafeno extends AbstractBoleto implements BoletoContract
{
/**
* Código do banco
*
* @var string
*/
protected $codigoBanco = Boleto::COD_BANCO_GRAFENO;

/**
* Define as carteiras disponíveis para este banco
* '1' => Com registro | '2' => Simples | '3' => Escritural
*
* @var array
*/
protected $carteiras = [1, 2, 3];

/**
* Espécie do documento, coódigo para remessa
*
* @var string
*/
protected $especiesCodigo = [
'DM' => '01', // Duplicata Mercantil
'NP' => '02', // Nota Promissória
'NS' => '03', // Nota de Seguro
'CS' => '04', // Cobrança Seriada
'RC' => '05', // Recibo
'LC' => '10', // Letra de Câmbio
'ND' => '11', // Nota de Débito
'DS' => '12', // Duplicata de Serviço
'CC' => '31', // Cartão de Crédito
'BDP' => '32', // Boleto de Proposta
'O' => '99', // Outros
];

/**
* Código de range de composição do nosso número.
*
* @var int
*/
protected $range = 0;

/**
* @return int
*/
public function getRange()
{
return $this->range;
}

/**
* @param int $range
*
* @return Grafeno
*/
public function setRange($range)
{
$this->range = (int) $range;

return $this;
}

/**
* Retorna o número definido pelo cliente para compor o nosso número
*
* @return int
*/
public function getNumero()
{
return $this->numero < $this->getRange() ? $this->getRange() + $this->numero : $this->numero;
}

/**
* Gera o Nosso Número.
*
* @return string
*/
protected function gerarNossoNumero()
{
$nn = $this->getNumero();
$dv = CalculoDV::grafenoNossoNumero($this->getCarteira(), $nn);

return Util::numberFormatGeral($nn, 11) . $dv;
}

/**
* Seta dia para baixa automática
*
* @param int $baixaAutomatica
*
* @return Grafeno
* @throws ValidationException
*/
public function setDiasBaixaAutomatica($baixaAutomatica)
{
if ($this->getDiasProtesto() > 0) {
throw new ValidationException('Você deve usar dias de protesto ou dias de baixa, nunca os 2');
}
$baixaAutomatica = (int) $baixaAutomatica;
$this->diasBaixaAutomatica = $baixaAutomatica > 0 ? $baixaAutomatica : 0;

return $this;
}

/**
* Método que retorna o nosso número usado no boleto. Alguns bancos possuem algumas diferenças.
*
* @return string
*/
public function getNossoNumeroBoleto()
{
return substr_replace($this->getNossoNumero(), '-', -1, 0);
}

/**
* Método para gerar o código da posição de 20 a 44
*
* @return string
*/
protected function getCampoLivre()
{
if ($this->campoLivre) {
return $this->campoLivre;
}

$campoLivre = Util::numberFormatGeral($this->getAgencia(), 4);
$campoLivre .= Util::numberFormatGeral($this->getCarteira(), 2);
$campoLivre .= Util::numberFormatGeral($this->getNumero(), 11);
$campoLivre .= Util::numberFormatGeral($this->getConta(), 7);
$campoLivre .= '0';

return $this->campoLivre = $campoLivre;
}

/**
* Método onde qualquer boleto deve extender para gerar o código da posição de 20 a 44
*
* @param $campoLivre
*
* @return array
*/
public static function parseCampoLivre($campoLivre)
{
return [
'convenio' => null,
'agenciaDv' => null,
'contaCorrenteDv' => null,
'agencia' => substr($campoLivre, 0, 4),
'carteira' => substr($campoLivre, 4, 2),
'nossoNumero' => substr($campoLivre, 6, 11),
'nossoNumeroDv' => null,
'nossoNumeroFull' => substr($campoLivre, 6, 11),
'contaCorrente' => substr($campoLivre, 17, 7),
];
}
}
14 changes: 11 additions & 3 deletions src/Boleto/Banco/Pine.php
Original file line number Diff line number Diff line change
Expand Up @@ -142,18 +142,26 @@ public function setModalidadeCarteira($modalidadeCarteira)
return $this;
}

/**
* Retorna o número definido pelo cliente para compor o nosso número
*
* @return int
*/
public function getNumero()
{
return $this->numero < $this->getRange() ? $this->getRange() + $this->numero : $this->numero;
}

/**
* Gera o Nosso Número.
*
* @return string
* @throws ValidationException
*/
protected function gerarNossoNumero()
{
$nn = 0;
if (Util::upper($this->getModalidadeCarteira()) == 'D') {
$nn = ((int) $this->getRange()) + ((int) $this->getNumero());
$nn .= CalculoDV::pineNossoNumero($this->getAgencia(), $this->getCarteira(), $nn);
$nn = $this->getNumero() . CalculoDV::pineNossoNumero($this->getAgencia(), $this->getCarteira(), $nn);
}

return Util::numberFormatGeral($nn, 11);
Expand Down
14 changes: 11 additions & 3 deletions src/Boleto/Banco/Rendimento.php
Original file line number Diff line number Diff line change
Expand Up @@ -149,18 +149,26 @@ public function setModalidadeCarteira($modalidadeCarteira)
return $this;
}

/**
* Retorna o número definido pelo cliente para compor o nosso número
*
* @return int
*/
public function getNumero()
{
return $this->numero < $this->getRange() ? $this->getRange() + $this->numero : $this->numero;
}

/**
* Gera o Nosso Número.
*
* @return string
* @throws ValidationException
*/
protected function gerarNossoNumero()
{
$nn = 0;
if ($this->getModalidadeCarteira() == 6) {
$nn = ((int) $this->getRange()) + ((int) $this->getNumero());
$nn .= CalculoDV::rendimentoNossoNumero($this->getAgencia(), $this->getCarteira(), $nn);
$nn = $this->getNumero() . CalculoDV::rendimentoNossoNumero($this->getAgencia(), $this->getCarteira(), $nn);
}

return Util::numberFormatGeral($nn, 11);
Expand Down
Loading

0 comments on commit 415c0d5

Please sign in to comment.