<commit_before><?php
namespace CnabPHP;

abstract class RemessaAbstract
{
	public static $banco; // sera atribuido o nome do banco que tambem ? o nome da pasta que contem os layouts
	public static $layout;// recebera o nome do layout na instacia?ao  
	public static $hearder; // armazena o objeto registro 0 do arquivo
	public static $entryData; // mantem os dados passados em $data na instanciao
	public static $loteCounter = 1; // contador de lotes
	private static $children = array(); // armazena os registros filhos da classe remessa
	public static $retorno = array(); // durante a gerao do txt de retorno se tornara um array com as linhas do arquvio

	/*
	* mtodo __construct()
	* Recebe os parametros
	* @$banco = nome do banco no momento so Caixa
	* @$layout = nome do layout no momento so Cnab240_SIGCB
	* @$data = um array contendo os dados nessesarios para o arquvio
	*/
	
	public function __construct($banco,$layout,$data){
		
		self::$banco = "B".$banco;
		self::$layout = $layout;
		$class = '\CnabPHP\resources\\'.self::$banco.'\remessa\\'.self::$layout.'\Registro0';
		self::$entryData = $data; 
		self::$hearder = new $class($data);
		self::$children[] = self::$hearder;
	}
	/*
	* mtodo inserirDetalhe()
	* Recebe os parametros
	* @$data = um array contendo os dados nessesarios para o arquvio
	*/
	public function inserirDetalhe($data){
		
		$class = '\CnabPHP\resources\\'.self::$banco.'\remessa\\'.self::$layout.'\Registro1';
		self::addChild(new $class($data));
		//self::$counter++;
	}
	/*
	* m?todo changeLayout()
	* Recebe os parametros
	* @$newLayout = altera o layout do lote , servira para enviar lotes de layouts diferentes no mesmo arquvio //(ALERTA) nao testado
	*/
	public function changeLayout($newLayout)
	{
		self::$layout = $newLayout;
	}
	/*
	* m?todo addChild()
	* Recebe os parametros abaixo e insere num array para uso fururo
	* @RegistroRemAbstract $child = recebe um filho de RegistroRemAbstract
	*/

	static private function addChild(RegistroRemAbstract $child){
		self::$children[] = $child;   
	}
	/*
	* mtodo addLote()
	* Recebe os parametros abaixo e insere num array para uso fururo
	* @array $data = recebe um array contendo os dados do lote a sera aberto e retorna para qualqer layout 240 o lote criado ou $this se outro 
	*/
	public function addLote(array $data)
	{
		if(strpos(self::$layout,'240'))
		{
			$class = '\CnabPHP\resources\\'.self::$banco.'\remessa\\'.self::$layout.'\Registro1';
			$loteData = $data ? $data:RemessaAbstract::$entryData; 
			$lote = new $class($loteData);
			self::addChild($lote);
		}else{
			$lote = $this;
		} 
		return $lote;
		self::$loteCounter++;
	}
	/*
	* mtodo getLote()
	* Metodo statico para pegar o objeto do lote
	* @$index = o indice do lote , normalmente 1
	*/
	public static function getLote($index){
		return self::$children[$index];
	}	
	/*
	* mtodo getText()
	* Metodo que percorre todos os filhos acionando o metodo getText() deles
	*/
	public function getText(){
		foreach(self::$children as $child){
			$child->getText();
		}
		$class = '\CnabPHP\resources\\'.self::$banco.'\remessa\\'.self::$layout.'\Registro9';
		$headerArquivo = new $class(array('1'=>1));
		$headerArquivo->getText();
		return implode(PHP_EOL,self::$retorno);
	}
}
?><commit_msg>Adicionado utf_decode no retorno do metodo getText<commit_after><?php
namespace CnabPHP;

abstract class RemessaAbstract
{
	public static $banco; // sera atribuido o nome do banco que tambem ? o nome da pasta que contem os layouts
	public static $layout;// recebera o nome do layout na instacia?ao  
	public static $hearder; // armazena o objeto registro 0 do arquivo
	public static $entryData; // mantem os dados passados em $data na instanciao
	public static $loteCounter = 1; // contador de lotes
	private static $children = array(); // armazena os registros filhos da classe remessa
	public static $retorno = array(); // durante a gerao do txt de retorno se tornara um array com as linhas do arquvio

	/*
	* mtodo __construct()
	* Recebe os parametros
	* @$banco = nome do banco no momento so Caixa
	* @$layout = nome do layout no momento so Cnab240_SIGCB
	* @$data = um array contendo os dados nessesarios para o arquvio
	*/
	
	public function __construct($banco,$layout,$data){
		
		self::$banco = "B".$banco;
		self::$layout = $layout;
		$class = '\CnabPHP\resources\\'.self::$banco.'\remessa\\'.self::$layout.'\Registro0';
		self::$entryData = $data; 
		self::$hearder = new $class($data);
		self::$children[] = self::$hearder;
	}
	/*
	* mtodo inserirDetalhe()
	* Recebe os parametros
	* @$data = um array contendo os dados nessesarios para o arquvio
	*/
	public function inserirDetalhe($data){
		
		$class = '\CnabPHP\resources\\'.self::$banco.'\remessa\\'.self::$layout.'\Registro1';
		self::addChild(new $class($data));
		//self::$counter++;
	}
	/*
	* m?todo changeLayout()
	* Recebe os parametros
	* @$newLayout = altera o layout do lote , servira para enviar lotes de layouts diferentes no mesmo arquvio //(ALERTA) nao testado
	*/
	public function changeLayout($newLayout)
	{
		self::$layout = $newLayout;
	}
	/*
	* m?todo addChild()
	* Recebe os parametros abaixo e insere num array para uso fururo
	* @RegistroRemAbstract $child = recebe um filho de RegistroRemAbstract
	*/

	static private function addChild(RegistroRemAbstract $child){
		self::$children[] = $child;   
	}
	/*
	* mtodo addLote()
	* Recebe os parametros abaixo e insere num array para uso fururo
	* @array $data = recebe um array contendo os dados do lote a sera aberto e retorna para qualqer layout 240 o lote criado ou $this se outro 
	*/
	public function addLote(array $data)
	{
		if(strpos(self::$layout,'240'))
		{
			$class = '\CnabPHP\resources\\'.self::$banco.'\remessa\\'.self::$layout.'\Registro1';
			$loteData = $data ? $data:RemessaAbstract::$entryData; 
			$lote = new $class($loteData);
			self::addChild($lote);
		}else{
			$lote = $this;
		} 
		return $lote;
		self::$loteCounter++;
	}
	/*
	* mtodo getLote()
	* Metodo statico para pegar o objeto do lote
	* @$index = o indice do lote , normalmente 1
	*/
	public static function getLote($index){
		return self::$children[$index];
	}	
	/*
	* mtodo getText()
	* Metodo que percorre todos os filhos acionando o metodo getText() deles
	*/
	public function getText(){
		foreach(self::$children as $child){
			$child->getText();
		}
		$class = '\CnabPHP\resources\\'.self::$banco.'\remessa\\'.self::$layout.'\Registro9';
		$headerArquivo = new $class(array('1'=>1));
		$headerArquivo->getText();
		return utf8_encode(implode(PHP_EOL,self::$retorno));
	}
}
?>
{'fraction_non_alphanumeric': 0.14041514041514042, 'fraction_numerical': 0.005647130647130647, 'mean_word_length': 4.05242868157286, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 11, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6577418', 'n_tokens_mistral': 2419, 'n_tokens_neox': 2370, 'n_words': 666}