Skip to content

Commit

Permalink
Arquivo de Retorno Leitura
Browse files Browse the repository at this point in the history
  • Loading branch information
ewerson@e-htl.com.br committed Aug 30, 2018
1 parent db8aa3f commit 90811a8
Show file tree
Hide file tree
Showing 7 changed files with 344 additions and 61 deletions.
119 changes: 64 additions & 55 deletions examples/examples.php
Original file line number Diff line number Diff line change
Expand Up @@ -6,61 +6,70 @@
use Ewersonfc\CNABPagamento\Entities\DataFile;
use Ewersonfc\CNABPagamento\Helpers\Helper;

$header = [
'numero_conta' => '12345678',
'codigo_agencia' => '11200',
'nome_cliente' => 'NOME CLIENT BANCARIO',
'data_arquivo' => Helper::formatDateToRemessa('20/06/2018'), // (20/06/2018) OPCIONAL
'origem' => '1',
'terceiro' => '11',
'numero_arquivo' => '000025', // SEQUENCIA CRIADA POR VOCÊ.
];
//$header = [
// 'numero_conta' => '12345678',
// 'codigo_agencia' => '11200',
// 'nome_cliente' => 'NOME CLIENT BANCARIO',
// 'data_arquivo' => Helper::formatDateToRemessa('20/06/2018'), // (20/06/2018) OPCIONAL
// 'origem' => '1',
// 'terceiro' => '11',
// 'numero_arquivo' => '000025', // SEQUENCIA CRIADA POR VOCÊ.
//];
//
//$detail = [];
//$detail[] = [
// 'tipo_transacao' => 'boleto',
// 'codigo_inscricao' => Helper::verifyTipoPessoa('09127271000187'),
// 'numero_inscricao' => '09127271000187',
// 'numero_conta' => 2887679,
// 'codigo_agencia' => 11200,
// 'exclusivo' => "Textôôôôôããããé",
// 'codigo_fornecedor' => 41386638862,
// 'tipo_documento' => 'DUP',
// 'numero_compromisso' => 1, // irá preencher com 0 à esquerda
// 'sequencia_compromisso' => 1,
// 'codigo_ocorrencia' => 01,
// 'seu_numero_compromisso' => 1, // irá preencher com 0 à esquerda
// 'vencimento' => Helper::formatDateToRemessa('25/07/18'),
// 'valor_pagamento' => Helper::valueToNumber('100.00'), // irá preencher com 0 à esquerda
// 'banco_destino' => 001,
// 'agencia_pagamento' => '1234567', //Verificar se não houver
// 'banco_portador' => 001, // Verificar
// 'abatimento' => Helper::valueToNumber(20.00), // // irá preencher com 0 à esquerda
// 'nome_fornecedor' => 'Ewerson Ferreira Carvalho',
// 'codigo_barras' => '00191761000000113330000003071378005071620317', // linha digitável informada de acordo com a documentação do banco safra
// 'juros_de_mora' => Helper::valueToNumber(5.00), // informar se houver | irá preencher com 0 à esquerda
// 'data_pagamento' => Helper::formatDateToRemessa('25/07/2018'), // data que deseja liquidar o título
// 'valor_autorizado' => Helper::valueToNumber(80.10), // Valor total - abatimento + juros se houver
// 'carteira' => '1727',
//];
//
//
//$trailer = [
// 'valortotal' => Helper::valueToNumber(100.00),
// 'total_abatimento' => Helper::valueToNumber(20.00),
// 'total_juros_mora' => Helper::valueToNumber(5.00),
// 'total_valor_autorizado' => Helper::valueToNumber(80.00),
//];
//
//$datafile = new DataFile;
//$datafile->header = $header;
//$datafile->detail = $detail;
//$datafile->trailer = $trailer;
//
//$CNABPagamento = new CNABPagamento(\Ewersonfc\CNABPagamento\Bancos::SAFRA);
//$file = $CNABPagamento->gerarArquivo($datafile);
//
//
//print_r($file);

$detail = [];
$detail[] = [
'tipo_transacao' => 'boleto',
'codigo_inscricao' => Helper::verifyTipoPessoa('09127271000187'),
'numero_inscricao' => '09127271000187',
'numero_conta' => 2887679,
'codigo_agencia' => 11200,
'exclusivo' => "Textôôôôôããããé",
'codigo_fornecedor' => 41386638862,
'tipo_documento' => 'DUP',
'numero_compromisso' => 1, // irá preencher com 0 à esquerda
'sequencia_compromisso' => 1,
'codigo_ocorrencia' => 01,
'seu_numero_compromisso' => 1, // irá preencher com 0 à esquerda
'vencimento' => Helper::formatDateToRemessa('25/07/18'),
'valor_pagamento' => Helper::valueToNumber('100.00'), // irá preencher com 0 à esquerda
'banco_destino' => 001,
'agencia_pagamento' => '1234567', //Verificar se não houver
'banco_portador' => 001, // Verificar
'abatimento' => Helper::valueToNumber(20.00), // // irá preencher com 0 à esquerda
'nome_fornecedor' => 'Ewerson Ferreira Carvalho',
'codigo_barras' => '00191761000000113330000003071378005071620317', // linha digitável informada de acordo com a documentação do banco safra
'juros_de_mora' => Helper::valueToNumber(5.00), // informar se houver | irá preencher com 0 à esquerda
'data_pagamento' => Helper::formatDateToRemessa('25/07/2018'), // data que deseja liquidar o título
'valor_autorizado' => Helper::valueToNumber(80.10), // Valor total - abatimento + juros se houver
'carteira' => '1727',
];


$trailer = [
'valortotal' => Helper::valueToNumber(100.00),
'total_abatimento' => Helper::valueToNumber(20.00),
'total_juros_mora' => Helper::valueToNumber(5.00),
'total_valor_autorizado' => Helper::valueToNumber(80.00),
];

$datafile = new DataFile;
$datafile->header = $header;
$datafile->detail = $detail;
$datafile->trailer = $trailer;

$CNABPagamento = new CNABPagamento(\Ewersonfc\CNABPagamento\Bancos::SAFRA);
$file = $CNABPagamento->gerarArquivo($datafile);


print_r($file);

$cnab = new CNABPagamento(\Ewersonfc\CNABPagamento\Bancos::SAFRA);
//$tipoRetorno = 'confirmacao_rejeicao';
//$data = $cnab->processarRetorno('/home/ewerson/Downloads/RETORNO_701EHTLRONL0042119206.txt', $tipoRetorno);
$tipoRetorno = 'liquidacao';
$data = $cnab->processarRetorno('/home/ewerson/Downloads/RETORNO_701EHTLRONL0042123031.txt', $tipoRetorno);

echo '<pre>';
print_r($data);
echo '</pre>';
30 changes: 27 additions & 3 deletions src/CNABPagamento.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,21 +7,27 @@
*/
namespace Ewersonfc\CNABPagamento;

use Ewersonfc\CNABPagamento\Constants\TipoRetorno;
use Ewersonfc\CNABPagamento\Entities\DataFile;
use Ewersonfc\CNABPagamento\Exceptions\FileRetornoException;
use Ewersonfc\CNABPagamento\Services\ServiceRemessa;
use Ewersonfc\CNABPagamento\Services\ServiceRetorno;

/**
* Class CNABPagamento
*/
class CNABPagamento
{
/**
* @var Bancos
* @var ServiceRemessa
*/
private $banco;

private $serviceRemessa;

/**
* @var ServiceRetorno
*/
private $serviceRetorno;

/**
* CNABPagamento constructor.
* @param $banco
Expand All @@ -30,6 +36,7 @@ class CNABPagamento
function __construct($banco)
{
$this->serviceRemessa = new ServiceRemessa(Bancos::getBankData($banco));
$this->serviceRetorno = new ServiceRetorno(Bancos::getBankData($banco));
}

/**
Expand All @@ -46,4 +53,21 @@ public function gerarArquivo(DataFile $dataFile)
'file' => $file,
]);
}

/**
* @param $archivePath
* @throws \Exception
*/
public function processarRetorno($archivePath, $tipoRetorno)
{
if(!in_array($tipoRetorno, [
TipoRetorno::CONFIRMACAO_REJEICAO,
TipoRetorno::LIQUIDACAO,
TipoRetorno::DDA,
])) {
throw new FileRetornoException("Tipo de retorno definido não existe.");
};
$data = $this->serviceRetorno->readFile($archivePath, $tipoRetorno);
return $data;
}
}
28 changes: 28 additions & 0 deletions src/Constants/TipoRetorno.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
<?php
/**
* Created by PhpStorm.
* User: ewerson
* Date: 30/08/18
* Time: 10:18
*/

namespace Ewersonfc\CNABPagamento\Constants;


class TipoRetorno
{
/**
* @var
*/
const CONFIRMACAO_REJEICAO = 'confirmacao_rejeicao';

/**
* @var
*/
const LIQUIDACAO = 'liquidacao';

/**
* @var
*/
const DDA = 'DDA';
}
27 changes: 27 additions & 0 deletions src/Exceptions/FileRetornoException.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?php
/**
* Created by PhpStorm.
* User: ewerson
* Date: 29/08/18
* Time: 15:09
*/

namespace Ewersonfc\CNABPagamento\Exceptions;


class FileRetornoException extends CNABPagamentoException
{
/**
* FileRetornoException constructor.
* @param string $message
* @param int $code
* @param Throwable|null $previous
*/
function __construct(string $message = "", int $code = 0, Throwable $previous = null)
{
if($message == "")
$message = "Não foi possível ler o arquivo, verifique o caminho ou a permissão de leitura.";

parent::__construct($message, $code, $previous);
}
}
49 changes: 49 additions & 0 deletions src/Factories/RetornoFactory.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
<?php
/**
* Created by PhpStorm.
* User: ewerson
* Date: 29/08/18
* Time: 15:13
*/

namespace Ewersonfc\CNABPagamento\Factories;


use Ewersonfc\CNABPagamento\Entities\DataFile;

class RetornoFactory
{
/**
* @var
*/
private $header;

/**
* @var
*/
private $detail;

/**
* RetornoFactory constructor.
* @param $header
* @param $detail
* @param $trailer
*/
function __construct($header, $detail)
{
$this->header = $header;
$this->detail = $detail;
}

/**
* @return DataFile
*/
public function generateResponse()
{
$dataFile = new DataFile();
$dataFile->header = $this->header;
$dataFile->detail = $this->detail;

return $dataFile;
}
}
16 changes: 13 additions & 3 deletions src/Format/Yaml.php
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
*/
namespace Ewersonfc\CNABPagamento\Format;
use Ehtl\Model\TipoPagamento;
use Ewersonfc\CNABPagamento\Constants\TipoRetorno;
use Ewersonfc\CNABPagamento\Constants\TipoTransacao;
use Ewersonfc\CNABPagamento\Exceptions\HeaderYamlException;
use Ewersonfc\CNABPagamento\Exceptions\LayoutException;
Expand Down Expand Up @@ -59,9 +60,9 @@ public function readHeader()
* @throws HeaderYamlException
* @throws LayoutException
*/
public function readDetail($typeLayout)
public function readDetail($type)
{
switch ($typeLayout) {
switch ($type) {
case TipoTransacao::BOLETO:
$filename = "{$this->path}/detalhe_boleto.yml";
break;
Expand All @@ -71,10 +72,19 @@ public function readDetail($typeLayout)
case TipoTransacao::CHEQUE:
$filename = "{$this->path}/detalhe_cheque.yml";
break;
case TipoRetorno::CONFIRMACAO_REJEICAO:
$filename = "{$this->path}/confirmacao_rejeicao.yml";
break;
case TipoRetorno::LIQUIDACAO:
$filename = "{$this->path}/liquidacao.yml";
break;
case TipoRetorno::DDA:
$filename = "{$this->path}/NULL.yml";
break;
}

if(!file_exists($filename))
throw new HeaderYamlException("Arquivo de configuração detail_{$typeLayout}.yml não encontrado em: $this->path");
throw new HeaderYamlException("Arquivo de configuração detail_{$type}.yml não encontrado em: $this->path");

$this->fields = $this->parse(file_get_contents($filename));

Expand Down
Loading

0 comments on commit 90811a8

Please sign in to comment.