Skip to content

Commit

Permalink
Read Line SegmentT
Browse files Browse the repository at this point in the history
  • Loading branch information
fhferreira committed Nov 29, 2016
1 parent 4e830c1 commit 653cbfd
Show file tree
Hide file tree
Showing 25 changed files with 915 additions and 12 deletions.
31 changes: 31 additions & 0 deletions src/Helpers/Helper.php
Original file line number Diff line number Diff line change
Expand Up @@ -47,4 +47,35 @@ public static function calculateRegister($count, $type)
}
return $calculated;
}

public static function calculateStartAndLength($start, $end) {
return [
'start' => $start - 1,
'length' => ($end - $start) + 1,
];
}

public static function cutInterval($string, $start, $end)
{
$positions = self::calculateStartAndLength($start, $end);
return substr($string, $positions['start'], $positions['length']);
}

public static function formatNossoNumero($value)
{
$NumTitulo = self::cutInterval($value, 1, 10);
$Parcela = self::cutInterval($value, 11, 12);
$Modalidade = self::cutInterval($value, 13, 14);
$TipoFormulario = self::cutInterval($value, 15, 15);
$Brancos = self::cutInterval($value, 16, 20);

return [
'numTitulo' => $NumTitulo,
'parcela' => $Parcela,
'modalidade' => $Modalidade,
'tipo_formulario' => $TipoFormulario,
'brancos' => $Brancos,
];
}

}
27 changes: 27 additions & 0 deletions src/Retorno/CNAB240/Arquivo.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
<?php

namespace Sicoob\Retorno\CNAB240;

class Arquivo
{
public $filename;

public $header;

public $headerLote;

public $lines = [];

public $trailerLote;

public $trailer;


//Lines of File on Array

//Read the File

//Parse Line to Specific type of Object


}
11 changes: 11 additions & 0 deletions src/Retorno/CNAB240/Boleto.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
<?php

namespace Sicoob\Retorno\CNAB240;

class Boleto
{
public $segmentT;

public $segmentU;

}
38 changes: 38 additions & 0 deletions src/Retorno/CNAB240/Header.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
<?php

namespace Sicoob\Retorno\CNAB240;

class Header
{
/*
01.0 001 003 003 - Num Controle¹ Banco Código do Sicoob na Compensação: "756"
02.0 004 007 004 - Num Lote Lote de Serviço: "0000"
03.0 008 008 001 - Num Registro Tipo de Registro: "0"
04.0 009 017 009 - Alfa CNAB Uso Exclusivo FEBRABAN / CNAB: o sistema retorna com as posições em branco
05.0 018 018 001 - Num Empresa² Inscrição Tipo "Tipo de Inscrição da Empresa:
'1' = CPF
'2' = CGC / CNPJ"
06.0 019 032 014 - Num Número Número de Inscrição da Empresa
07.0 033 052 020 - Alfa Convênio Código do Convênio no Sicoob: o sistema retorna com as posições em branco
08.0 053 057 005 - Num Conta Corrente³ Agência Código Prefixo da Cooperativa: vide planilha "Contracapa" deste arquivo
09.0 058 058 001 - Alfa DV Dígito Verificador do Prefixo: o sistema retorna preenchimento com zero "0"
10.0 059 070 012 - Num Conta Número Conta Corrente: vide planilha "Contracapa" deste arquivo
11.0 071 071 001 - Alfa DV Dígito Verificador da Conta: vide planilha "Contracapa" deste arquivo
12.0 072 072 001 - Alfa DV Dígito Verificador da Ag/Conta: o sistema retorna com as posições em branco
13.0 073 102 030 - Alfa Nome Nome da Empresa
14.0 103 132 030 - Alfa Nome do Banco Nome do Banco: SICOOB
15.0 133 142 010 - Alfa CNAB Uso Exclusivo FEBRABAN / CNAB: o sistema retorna com as posições em branco
16.0 143 143 001 - Num Arquivo Código Código Remessa / Retorno: "2"
17.0 144 151 008 - Num Data de Geração Data de Geração do Arquivo
18.0 152 157 006 - Num Hora de Geração Hora de Geração do Arquivo
19.0 158 163 006 - Num Seqüência (NSA) Número Seqüencial do Arquivo: Número seqüencial adotado e controlado pelo responsável pela geração do arquivo para ordenar a disposição dos arquivos encaminhados. Evoluir um número seqüencial a cada header de arquivo.
20.0 164 166 003 - Num Layout do Arquivo No da Versão do Layout do Arquivo: "081"
21.0 167 171 005 - Num Densidade Densidade de Gravação do Arquivo: "00000"
22.0 172 191 020 - Alfa Reservado Banco Para Uso Reservado do Banco: o sistema retorna com as posições em branco
23.0 192 211 020 - Alfa Reservado Empresa Para Uso Reservado da Empresa: o sistema retorna com as posições em branco
24.0 212 240 029 - Alfa CNAB Uso Exclusivo FEBRABAN / CNAB: o sistema retorna com as posições em branco
¹ Controle - Banco origem ou destino do arquivo.
² Empresa - Beneficiário que firmou o convênio de prestação de serviços com o Sicoob
³ Conta Corrente (Empresa) - Número da conta do corrente do convênio firmado entre Sicoob e Beneficiário para a prestação do serviço de cobrança.
*/
}
39 changes: 39 additions & 0 deletions src/Retorno/CNAB240/HeaderLote.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
<?php

namespace Sicoob\Retorno\CNAB240;

class HeaderLote
{
/*
01.1 001 003 003 - Num Controle Banco Código do Banco na Compensação: "756"
02.1 004 007 004 - Num Lote "Lote de Serviço: Número seqüencial para identificar univocamente um lote de serviço. Criado e controlado pelo responsável pela geração magnética dos dados contidos no arquivo.
Preencher com '0001' para o primeiro lote do arquivo. Para os demais: número do lote anterior acrescido de 1. O número não poderá ser repetido dentro do arquivo."
03.1 008 008 001 - Num Registro Tipo de Registro: "1"
04.1 009 009 001 - Alfa Serviço Operação Tipo de Operação: "T"
05.1 010 011 002 - Num Serviço Tipo de Serviço: "01"
06.1 012 013 002 - Alfa CNAB Uso Exclusivo FEBRABAN/CNAB: o sistema retorna com as posições em branco
07.1 014 016 003 - Num Layout do Lote Nº da Versão do Layout do Lote: "044"
08.1 017 017 001 - Alfa CNAB Uso Exclusivo FEBRABAN/CNAB: o sistema retorna com as posições em branco
09.1 018 018 001 - Num Empresa Inscrição Tipo "Tipo de Inscrição da Empresa:
'1' = CPF
'2' = CGC / CNPJ"
10.1 019 033 015 - Num Número Nº de Inscrição da Empresa
11.1 034 053 020 - Alfa Convênio Código do Convênio no Banco: o sistema retorna com as posições em branco
12.1 054 058 005 - Num C/C Agência Código Prefixo da Cooperativa: vide planilha "Contracapa" deste arquivo
13.1 059 059 001 - Alfa DV Dígito Verificador do Prefixo: o sistema retorna preenchimento com zero "0"
14.1 060 071 012 - Num Conta Número Conta Corrente: vide planilha "Contracapa" deste arquivo
15.1 072 072 001 - Alfa DV Dígito Verificador da Conta: vide planilha "Contracapa" deste arquivo
16.1 073 073 001 - Alfa DV Dígito Verificador da Ag/Conta: o sistema retorna com as posições em branco
17.1 074 103 030 - Alfa Nome Nome da Empresa
18.1 104 143 040 - Alfa Informação 1 Mensagem 1: Estes campos não serão utilizados no arquivo retorno.
19.1 144 183 040 - Alfa Informação 2 Mensagem 2: Estes campos não serão utilizados no arquivo retorno.
20.1 184 191 008 - Num Controle da Cobrança Nº Rem./Ret. Número Remessa/Retorno: Número adotado e controlado pelo responsável pela geração magnética dos dados contidos no arquivo para identificar a seqüência de envio ou devolução do arquivo entre o Beneficiário e o Sicoob.
21.1 192 199 008 - Num Dt. Gravação Data de Gravação Remessa/Retorno
22.1 200 207 008 - Num Data do Crédito "Data do Crédito: Data de efetivação do crédito referente ao pagamento do título de cobrança. Informação enviada somente no arquivo de retorno.
Utilizar o formato DDMMAAAA, onde:
DD = dia
MM = mês
AAAA = ano"
23.1 208 240 033 - Alfa CNAB Uso Exclusivo FEBRABAN/CNAB: o sistema retorna com as posições em branco
*/
}
51 changes: 51 additions & 0 deletions src/Retorno/CNAB240/LineAbstract.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,51 @@
<?php

namespace Sicoob\Retorno\CNAB240;

use Sicoob\Helpers\Helper;
use Sicoob\Retorno\Fields\Field;

abstract class LineAbstract
{
public $line;

public $fields = [];

public $configs = [];

public function __construct($line = null)
{
if ($line)
$this->fill($line);
}

public function fill($line)
{
$this->line = $line;
foreach ($this->configs as $configName => $config) {
$field = new Field();
$field->type = $config['type'];
$field->start = $config['start'];
$field->end = $config['end'];
$field->length = $config['length'];
$field->type = $config['type'];
$field->values = isset($config['values']) ? $config['values'] : null;
$field->name = $configName;
$field->value = Helper::cutInterval($line, $config['start'], $config['end']);

if (isset($config['helper'])) {
$helper = $config['helper'];
$field->value = Helper::$helper($field->value);
}

$field->render();

if ($field->type == 'money') {
$field->value = (float) $field->value;
}

$this->fields[$configName] = $field;
}
}

}
Loading

0 comments on commit 653cbfd

Please sign in to comment.