diff --git a/src/Api/AbstractAPI.php b/src/Api/AbstractAPI.php index 88e67757..2b554caf 100644 --- a/src/Api/AbstractAPI.php +++ b/src/Api/AbstractAPI.php @@ -368,6 +368,7 @@ public function getBeneficiario() public function setBeneficiario($beneficiario) { Util::addPessoa($this->beneficiario, $beneficiario); + $this->beneficiario->setTipo('beneficiario'); return $this; } @@ -464,7 +465,7 @@ protected function setRequestInfo($requestInfo) * @throws UnauthorizedException * @throws CurlException */ - protected function post($url, array $post, $raw = false, $clear=true) + protected function post($url, array $post, $raw = false, $clear = true) { $url = ltrim($url, '/'); $this->init() @@ -474,7 +475,7 @@ protected function post($url, array $post, $raw = false, $clear=true) ])); // clean string - if($clear) { + if ($clear) { $post = $this->arrayMapRecursive(function ($data) { return Util::normalizeChars($data); }, $post); diff --git a/src/Boleto/AbstractBoleto.php b/src/Boleto/AbstractBoleto.php index 30dbf14f..667136ea 100644 --- a/src/Boleto/AbstractBoleto.php +++ b/src/Boleto/AbstractBoleto.php @@ -624,6 +624,7 @@ public function getCarteiras() public function setBeneficiario($beneficiario) { Util::addPessoa($this->beneficiario, $beneficiario); + $this->beneficiario->setTipo('beneficiario'); return $this; } @@ -1271,6 +1272,7 @@ public function getMoeda() public function setPagador($pagador) { Util::addPessoa($this->pagador, $pagador); + $this->pagador->setTipo('pagador'); return $this; } @@ -1296,6 +1298,7 @@ public function getPagador() public function setSacadorAvalista($sacadorAvalista) { Util::addPessoa($this->sacadorAvalista, $sacadorAvalista); + $this->sacadorAvalista->setTipo('sacadorAvalista'); return $this; } diff --git a/src/Cnab/Remessa/AbstractRemessa.php b/src/Cnab/Remessa/AbstractRemessa.php index b9e2cc08..0a403607 100644 --- a/src/Cnab/Remessa/AbstractRemessa.php +++ b/src/Cnab/Remessa/AbstractRemessa.php @@ -278,6 +278,7 @@ public function getBeneficiario() public function setBeneficiario($beneficiario) { Util::addPessoa($this->beneficiario, $beneficiario); + $this->beneficiario->setTipo('beneficiario'); return $this; } diff --git a/src/Cnab/Retorno/Cnab240/Detalhe.php b/src/Cnab/Retorno/Cnab240/Detalhe.php index 3b62541a..115d2c8f 100644 --- a/src/Cnab/Retorno/Cnab240/Detalhe.php +++ b/src/Cnab/Retorno/Cnab240/Detalhe.php @@ -601,6 +601,7 @@ public function getPagador() public function setPagador($pagador) { Util::addPessoa($this->pagador, $pagador); + $this->pagador->setTipo('pagador'); return $this; } diff --git a/src/Contracts/Pessoa.php b/src/Contracts/Pessoa.php index 6468e348..f0c54f89 100644 --- a/src/Contracts/Pessoa.php +++ b/src/Contracts/Pessoa.php @@ -4,6 +4,8 @@ interface Pessoa { + public function getTipo(); + public function getNome(); public function getNomeDocumento(); diff --git a/src/Pessoa.php b/src/Pessoa.php index 7c95c95f..391485f8 100644 --- a/src/Pessoa.php +++ b/src/Pessoa.php @@ -7,6 +7,11 @@ class Pessoa implements PessoaContract { + /** + * @var string + */ + protected $tipo; + /** * @var string */ @@ -72,15 +77,15 @@ class Pessoa implements PessoaContract public static function create($nome, $documento, $endereco = null, $bairro = null, $cep = null, $cidade = null, $uf = null, $email = null, $nomeFantasia = null) { return new static([ - 'nome' => $nome, - 'nomeFantasia' => $nomeFantasia, - 'endereco' => $endereco, - 'bairro' => $bairro, - 'cep' => $cep, - 'uf' => $uf, - 'cidade' => $cidade, - 'documento' => $documento, - 'email' => $email, + 'nome' => $nome, + 'nomeFantasia' => $nomeFantasia, + 'endereco' => $endereco, + 'bairro' => $bairro, + 'cep' => $cep, + 'uf' => $uf, + 'cidade' => $cidade, + 'documento' => $documento, + 'email' => $email, ]); } @@ -94,6 +99,39 @@ public function __construct($params = []) Util::fillClass($this, $params); } + /** + * Define o tipo + * + * @param $tipo + * @param bool $force + * @return Pessoa + * @throws ValidationException + */ + public function setTipo($tipo, $force = false) + { + if (! in_array($tipo, ['pagador', 'beneficiario', 'sacadorAvalista'])) { + throw new ValidationException("Tipo de pessoa inválido [$tipo]"); + } + + if ($this->getTipo() && ! $force) { + return $this; + } + + $this->tipo = $tipo; + + return $this; + } + + /** + * Retorna o bairro + * + * @return string + */ + public function getTipo() + { + return $this->tipo; + } + /** * Define o CEP * @@ -248,7 +286,7 @@ public function getNome() { return $this->nome; } - + /** * Define o Nome Fantasia *