Skip to content

Commit

Permalink
inicio banco daycoval
Browse files Browse the repository at this point in the history
  • Loading branch information
eduardokum committed Sep 27, 2024
1 parent 0648f08 commit 38a4585
Show file tree
Hide file tree
Showing 15 changed files with 699 additions and 8 deletions.
47 changes: 47 additions & 0 deletions exemplos/daycoval_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',
'bairro' => 'Bairro',
'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\Daycoval([
'logo' => realpath(__DIR__ . '/../logos/') . DIRECTORY_SEPARATOR . '707.png',
'dataVencimento' => new Carbon\Carbon(),
'valor' => 100,
'multa' => false,
'juros' => false,
'numero' => '0004309540',
'numeroDocumento' => 1,
'descricaoDemonstrativo' => ['demonstrativo 1', 'demonstrativo 2', 'demonstrativo 3'],
'instrucoes' => ['instrucao 1', 'instrucao 2', 'instrucao 3'],
'aceite' => 'S',
'especieDoc' => 'DM',
'pagador' => $pagador,
'beneficiario' => $beneficiario,
'carteira' => 3,
'operacao' => 1234567,
'agencia' => '0001',
'conta' => '7654321',
]);

$pdf = new Eduardokum\LaravelBoleto\Boleto\Render\Pdf();
$pdf->addBoleto($boleto);
echo $pdf->gerarBoleto();
//$pdf->gerarBoleto($pdf::OUTPUT_SAVE, __DIR__ . DIRECTORY_SEPARATOR . 'arquivos' . DIRECTORY_SEPARATOR . 'daycoval.pdf');
159 changes: 159 additions & 0 deletions exemplos/index.php

Large diffs are not rendered by default.

Binary file added logos/707.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/DAYCOVAL/CNAB_400.pdf
Binary file not shown.
2 changes: 1 addition & 1 deletion src/Api/AbstractAPI.php
Original file line number Diff line number Diff line change
Expand Up @@ -368,7 +368,7 @@ public function getBeneficiario()
public function setBeneficiario($beneficiario)
{
Util::addPessoa($this->beneficiario, $beneficiario);
$this->beneficiario->setTipo('beneficiario');
$this->beneficiario->setTipo(Pessoa::TIPO_BENEFICIARIO);

return $this;
}
Expand Down
7 changes: 4 additions & 3 deletions src/Boleto/AbstractBoleto.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@
use chillerlan\QRCode\QROptions;
use Eduardokum\LaravelBoleto\Util;
use chillerlan\QRCode\Data\QRMatrix;
use Eduardokum\LaravelBoleto\Pessoa;
use Eduardokum\LaravelBoleto\MagicTrait;
use Eduardokum\LaravelBoleto\NotaFiscal;
use chillerlan\QRCode\Output\QROutputInterface;
Expand Down Expand Up @@ -624,7 +625,7 @@ public function getCarteiras()
public function setBeneficiario($beneficiario)
{
Util::addPessoa($this->beneficiario, $beneficiario);
$this->beneficiario->setTipo('beneficiario');
$this->beneficiario->setTipo(Pessoa::TIPO_BENEFICIARIO);

return $this;
}
Expand Down Expand Up @@ -1272,7 +1273,7 @@ public function getMoeda()
public function setPagador($pagador)
{
Util::addPessoa($this->pagador, $pagador);
$this->pagador->setTipo('pagador');
$this->pagador->setTipo(Pessoa::TIPO_PAGADOR);

return $this;
}
Expand All @@ -1298,7 +1299,7 @@ public function getPagador()
public function setSacadorAvalista($sacadorAvalista)
{
Util::addPessoa($this->sacadorAvalista, $sacadorAvalista);
$this->sacadorAvalista->setTipo('sacadorAvalista');
$this->sacadorAvalista->setTipo(Pessoa::TIPO_SACADOR);

return $this;
}
Expand Down
195 changes: 195 additions & 0 deletions src/Boleto/Banco/Daycoval.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,195 @@
<?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\Contracts\Boleto\Boleto as BoletoContract;

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

/**
* Define as carteiras disponíveis para este banco
* 3 Cobrança Caucionada
* @var array
*/
protected $carteiras = [3];

/**
* Espécie do documento, coódigo para remessa
*
* @var string
*/
protected $especiesCodigo = [
'DM' => '01', // Duplicata Mercantil
'RC' => '05', // Recibo
'DS' => '12', // Duplicata de Serviço
'O' => '99', // Outros
];

/**
* Moeda
*
* @var int
*/
protected $moeda = 9;

/**
* @var string
*/
protected $operacao;

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

public function __construct(array $params = [])
{
parent::__construct($params);
$this->setCamposObrigatorios('numero', 'agencia', 'carteira', 'operacao');
}

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

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

return $this;
}

/**
* @return string
*/
public function getOperacao()
{
return $this->operacao;
}

/**
* @param $operacao
*
* @return Daycoval
*/
public function setOperacao($operacao)
{
$this->operacao = $operacao;

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

/**
* Retorna o código da carteira (Com ou sem registro)
*
* @return string
*/
public function getCarteira()
{
return '112';
}

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

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

/**
* 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(), 3);
$campoLivre .= Util::numberFormatGeral($this->getOperacao(), 7);
$campoLivre .= Util::numberFormatGeral($this->getNossoNumero(), 11);

return $this->campoLivre = $campoLivre;
}

/**
* @return bool
*/
public function imprimeBoleto()
{
return $this->getCarteira() == 112;
}

/**
* 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, 3),
'operacao' => substr($campoLivre, 7, 7),
'nossoNumero' => substr($campoLivre, 14, 10),
'nossoNumeroDv' => substr($campoLivre, 24, 1),
'nossoNumeroFull' => substr($campoLivre, 14, 11),
];
}
}
24 changes: 23 additions & 1 deletion src/CalculoDV.php
Original file line number Diff line number Diff line change
Expand Up @@ -328,7 +328,7 @@ public static function bradescoNossoNumero($carteira, $nossoNumero)

/*
|--------------------------------------------------------------------------
| 246 - Grafeno
| 246 - ABC
|--------------------------------------------------------------------------
*/

Expand Down Expand Up @@ -489,6 +489,28 @@ public static function pineNossoNumero($agencia, $nossaCarteira, $numero_boleto)
return 10 - $sum % 10;
}

/*
|--------------------------------------------------------------------------
| 707 - Daycoval
|--------------------------------------------------------------------------
*/

public static function daycovalNossoNumero($agencia, $carteira, $nossoNumero)
{
$numero = Util::numberFormatGeral($agencia, 4) . Util::numberFormatGeral($carteira, 3) . Util::numberFormatGeral($nossoNumero, 10);
$factors = [2, 1];
$sum = 0;

for ($i = strlen($numero) - 1, $j = 0; $i >= 0; $i--, $j++) {
$result = intval($numero[$i]) * $factors[$j % 2];
$sum += ($result > 9) ? ($result - 9) : $result;
}

$mod = $sum % 10;

return ($mod == 0) ? 0 : 10 - $mod;
}

/*
|--------------------------------------------------------------------------
| 748 - Sicredi - Falta o calculo agencia e conta
Expand Down
3 changes: 2 additions & 1 deletion src/Cnab/Remessa/AbstractRemessa.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
use Illuminate\Support\Str;
use Eduardokum\LaravelBoleto\Util;
use Illuminate\Support\Collection;
use Eduardokum\LaravelBoleto\Pessoa;
use Eduardokum\LaravelBoleto\Exception\ValidationException;
use Eduardokum\LaravelBoleto\Contracts\Pessoa as PessoaContract;
use Eduardokum\LaravelBoleto\Contracts\Boleto\Boleto as BoletoContract;
Expand Down Expand Up @@ -278,7 +279,7 @@ public function getBeneficiario()
public function setBeneficiario($beneficiario)
{
Util::addPessoa($this->beneficiario, $beneficiario);
$this->beneficiario->setTipo('beneficiario');
$this->beneficiario->setTipo(Pessoa::TIPO_BENEFICIARIO);

return $this;
}
Expand Down
Loading

0 comments on commit 38a4585

Please sign in to comment.