Skip to content

Commit

Permalink
Merge pull request #12 from jefersonmenegaldo/feat/adequacoes-para-pe…
Browse files Browse the repository at this point in the history
…rmitir-carregamento-modelo-55

Feat/adequacoes para permitir carregamento modelo 55
  • Loading branch information
mazinsw authored Jun 29, 2023
2 parents fef2b41 + 4e2f145 commit 3ee0887
Show file tree
Hide file tree
Showing 5 changed files with 510 additions and 13 deletions.
85 changes: 84 additions & 1 deletion src/NFe/Core/Nota.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@
use NFe\Exception\ValidationException;
use FR3D\XmlDSig\Adapter\AdapterInterface;
use FR3D\XmlDSig\Adapter\XmlseclibsAdapter;
use NFe\Entity\Cobranca;

/**
* Classe base para a formação da nota fiscal
Expand Down Expand Up @@ -201,6 +202,13 @@ abstract class Nota implements Node
*/
private $pagamentos;

/**
* Cobrancas realizadas
*
* @var Cobranca[]
*/
private $cobrancas;

/**
* Data e Hora da saída ou de entrada da mercadoria / produto
*/
Expand Down Expand Up @@ -559,6 +567,37 @@ public function addPagamento($pagamento)
return $this;
}

/**
* Cobranças realizadas
* @return mixed cobranças da Nota
*/
public function getCobrancas()
{
return $this->cobrancas;
}

/**
* Altera o valor da Cobrança para o informado no parâmetro
* @param mixed $cobrancas novo valor para Cobranças
* @return self
*/
public function setCobrancas($cobrancas)
{
$this->cobrancas = $cobrancas;
return $this;
}

/**
* Adiciona um(a) Cobrança para a lista de cobranças
* @param Cobranca $cobranca Instância da Cobrança que será adicionada
* @return self
*/
public function addCobranca($cobranca)
{
$this->cobrancas[] = $cobranca;
return $this;
}

/**
* Data e Hora da saída ou de entrada da mercadoria / produto
* @param boolean $normalize informa se a data_movimentacao deve estar no formato do XML
Expand Down Expand Up @@ -1397,6 +1436,16 @@ public function toArray($recursive = false)
} else {
$nota['pagamentos'] = $this->getPagamentos();
}
if ($recursive) {
$cobrancas = [];
$_cobrancas = $this->getCobrancas();
foreach ($_cobrancas as $_cobranca) {
$cobrancas[] = $_cobranca->toArray($recursive);
}
$nota['cobrancas'] = $cobrancas;
} else {
$nota['cobrancas'] = $this->getCobrancas();
}
$nota['data_movimentacao'] = $this->getDataMovimentacao($recursive);
$nota['data_contingencia'] = $this->getDataContingencia($recursive);
$nota['justificativa'] = $this->getJustificativa();
Expand Down Expand Up @@ -1467,6 +1516,11 @@ public function fromArray($nota = [])
} else {
$this->setPagamentos($nota['pagamentos']);
}
if (!isset($nota['cobrancas'])) {
$this->setCobrancas([]);
} else {
$this->setCobrancas($nota['cobrancas']);
}
if (isset($nota['data_movimentacao'])) {
$this->setDataMovimentacao($nota['data_movimentacao']);
} else {
Expand Down Expand Up @@ -1811,7 +1865,16 @@ public function getNode($name = null)
$transporte = $this->getTransporte()->getNode();
$transporte = $dom->importNode($transporte, true);
$info->appendChild($transporte);
// TODO: adicionar cobrança
$_cobrancas = $this->getCobrancas();
if (count($_cobrancas ?: []) > 0) {
$cobr = $dom->createElement('cobr');
foreach ($_cobrancas as $_cobranca) {
$cobranca = $_cobranca->getNode();
$cobranca = $dom->importNode($cobranca, true);
$cobr->appendChild($cobranca);
}
$info->appendChild($cobr);
}
$pag = $dom->createElement('pag');
$_pagamentos = $this->getPagamentos();
foreach ($_pagamentos as $_pagamento) {
Expand Down Expand Up @@ -2084,6 +2147,26 @@ public function loadNode($element, $name = null)
}
}
$this->setPagamentos($pagamentos);

$cobrancas = [];
$_items = $info->getElementsByTagName('cobr');
foreach ($_items as $_item) {
$_det_items = $_item->getElementsByTagName('fat');
foreach ($_det_items as $_det_item) {
$cobranca = new Cobranca();
$cobranca->loadNode($_det_item, 'fat');
$cobrancas[] = $cobranca;
}
$_det_items = $_item->getElementsByTagName('dup');
foreach ($_det_items as $_det_item) {
$cobranca = new Cobranca();
$cobranca->loadNode($_det_item, 'dup');
$cobrancas[] = $cobranca;
}
}
$this->setCobrancas($cobrancas);


$_fields = $info->getElementsByTagName('total');
if ($_fields->length > 0) {
$total = new Total();
Expand Down
Loading

0 comments on commit 3ee0887

Please sign in to comment.