Skip to content

Commit

Permalink
linhas adicionadas para informações detalhadas
Browse files Browse the repository at this point in the history
  • Loading branch information
andersondanilo committed Feb 9, 2016
1 parent 861bbec commit a5fcb8b
Show file tree
Hide file tree
Showing 4 changed files with 65 additions and 2 deletions.
22 changes: 20 additions & 2 deletions src/Cnab/Retorno/Cnab240/Arquivo.php
Original file line number Diff line number Diff line change
@@ -1,13 +1,16 @@
<?php
namespace Cnab\Retorno\Cnab240;

use Cnab\Factory;
use Cnab\Retorno\Linha;

class Arquivo implements \Cnab\Retorno\IArquivo
{
private $content;

public $header = false;
public $lotes = array();
public $linhas = array();
public $trailer = false;

public $codigo_banco;
Expand Down Expand Up @@ -35,15 +38,25 @@ public function __construct($codigo_banco, $filename, $layoutVersao=null)

$lastLote = null;

$posLinha = 0;

foreach($linhas as $linha)
{
if(!$linha)
if(!trim($linha))
continue;

$linhaRetorno = new Linha;
$linhaRetorno->pos = $posLinha++;
$linhaRetorno->texto = $linha;

$this->linhas[] = $linhaRetorno;

$tipo_registro = substr($linha, 7, 1);
if($tipo_registro == '0')
{
// header
$this->header->loadFromString($linha);
$linhaRetorno->linhaCnab = $this->header;
}
else if($tipo_registro == '1')
{
Expand All @@ -53,6 +66,8 @@ public function __construct($codigo_banco, $filename, $layoutVersao=null)
$lastLote = new Lote($this);
$lastLote->header = new HeaderLote($this);
$lastLote->header->loadFromString($linha);

$linhaRetorno->linhaCnab = $lastLote->header;
}
else if($tipo_registro == '2')
{
Expand All @@ -62,7 +77,7 @@ public function __construct($codigo_banco, $filename, $layoutVersao=null)
{
// registros de detalhe - Segmentos
if($lastLote)
$lastLote->insertSegmento($linha);
$linhaRetorno->linhaCnab = $lastLote->insertSegmento($linha);
}
else if($tipo_registro == '4')
{
Expand All @@ -74,12 +89,15 @@ public function __construct($codigo_banco, $filename, $layoutVersao=null)
$lastLote->trailer = new TrailerLote($this);
$lastLote->trailer->loadFromString($linha);
$this->lotes[] = $lastLote;
$linhaRetorno->linhaCnab = $lastLote->trailer;
$lastLote = null;
}
else if($tipo_registro == '9')
{
// trailer do arquivo
$this->trailer->loadFromString($linha);

$linhaRetorno->linhaCnab = $this->trailer;
}
}
}
Expand Down
1 change: 1 addition & 0 deletions src/Cnab/Retorno/Cnab240/Lote.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ public function insertSegmento($linha)
if($this->lastDetalhe)
$this->lastDetalhe->segmento_w = $segmento;
}
return $segmento;
}

public function listDetalhes()
Expand Down
24 changes: 24 additions & 0 deletions src/Cnab/Retorno/Cnab400/Arquivo.php
Original file line number Diff line number Diff line change
@@ -1,15 +1,20 @@
<?php
namespace Cnab\Retorno\Cnab400;

use Cnab\Retorno\Linha;

class Arquivo implements \Cnab\Retorno\IArquivo
{
private $content;

public $header = false;
public $detalhes = array();
public $linhas = array();
public $trailer = false;
public $layoutVersao; // ex: sicoob, sigcb

public $lines;

public $codigo_banco;

private $filename;
Expand All @@ -31,22 +36,41 @@ public function __construct($codigo_banco, $filename, $layoutVersao=null)
$linhas = explode("\n", $this->content);
$this->header = new Header($this);
$this->trailer = new Trailer($this);

$posLinha = 0;

foreach($linhas as $linha)
{
if(!trim($linha))
continue;

$linhaRetorno = new Linha;
$linhaRetorno->pos = $posLinha++;
$linhaRetorno->texto = $linha;

$this->linhas[] = $linhaRetorno;

$tipo_registro = substr($linha, 0, 1);

if($tipo_registro == '0' && $linha)
{
$this->header->loadFromString($linha);

$linhaRetorno->linhaCnab = $this->header;
}
else if(in_array((int)$tipo_registro,array(1,7)))
{
$detalhe = new Detalhe($this);
$detalhe->loadFromString($linha);
$this->detalhes[] = $detalhe;

$linhaRetorno->linhaCnab = $detalhe;
}
else if($tipo_registro == '9')
{
$this->trailer->loadFromString($linha);
$linhaRetorno->linhaCnab = $this->trailer;
}
}
}

Expand Down
20 changes: 20 additions & 0 deletions src/Cnab/Retorno/Linha.php
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<?php
namespace Cnab\Retorno;

class Linha
{
/**
* @var int
*/
public $pos;

/**
* @var string
*/
public $texto;

/**
* @var \Cnab\Format\Linha $linha
*/
public $linhaCnab;
}

0 comments on commit a5fcb8b

Please sign in to comment.