diff --git a/src/NFe/Danfe.php b/src/NFe/Danfe.php index b959f064..cc911964 100644 --- a/src/NFe/Danfe.php +++ b/src/NFe/Danfe.php @@ -612,9 +612,9 @@ public function montaDANFE( if ($this->textoAdic != '') { $this->textoAdic .= ". \r\n"; } - $this->textoAdic .= !empty($this->getTagValue($this->infAdic, "infCpl")) ? - 'Inf. Contribuinte: ' . - $this->pAnfavea($this->getTagValue($this->infAdic, "infCpl")) : ''; + $this->textoAdic .= !empty($this->getTagValue($this->infAdic, "infCpl")) + ? 'Inf. Contribuinte: ' . $this->pAnfavea($this->getTagValue($this->infAdic, "infCpl")) + : ''; $infPedido = $this->pGeraInformacoesDaTagCompra(); if ($infPedido != "") { $this->textoAdic .= $infPedido; @@ -824,12 +824,18 @@ protected function pAnfavea($cdata = '') if ($cdata == '') { return ''; } + + // ajusta a quebra de linha para não interferir nas validações das informações complementares + $cdata = str_replace('
', "\n", $cdata); + $cdata = str_replace('
', "\n", $cdata); + //remove qualquer texto antes ou depois da tag CDATA $cdata = str_replace('', $cdata); $cdata = str_replace(']]>', '', $cdata); $cdata = preg_replace('/\s\s+/', ' ', $cdata); $cdata = str_replace("> <", "><", $cdata); $len = strlen($cdata); + $startPos = strpos($cdata, '<'); if ($startPos === false) { return $cdata; @@ -851,17 +857,20 @@ protected function pAnfavea($cdata = '') } else { $parte3 = ''; } + $texto = trim($parte1) . ' ' . trim($parte3); + if (strpos($parte2, '') === false) { $cdata = '' . $parte2 . ''; } else { $cdata = $parte2; } + //Retira a tag (caso existir) pois não é uma estrutura válida XML $cdata = str_replace('', '', $cdata); //carrega o xml CDATA em um objeto DOM $dom = new Dom(); - $dom->loadXML($cdata, LIBXML_NOBLANKS | LIBXML_NOEMPTYTAG); + @$dom->loadXML($cdata, LIBXML_NOBLANKS | LIBXML_NOEMPTYTAG); //$xml = $dom->saveXML(); //grupo CDATA infADprod $id = $dom->getElementsByTagName('id')->item(0); @@ -3085,6 +3094,7 @@ protected function pDadosAdicionaisDANFE($x, $y, $h) } $aFont = array('font' => $this->fontePadrao, 'size' => 7, 'style' => 'B'); $this->pTextBox($x, $y, $w, 8, $texto, $aFont, 'T', 'L', 0, ''); + //INFORMAÇÕES COMPLEMENTARES $texto = "INFORMAÇÕES COMPLEMENTARES"; $y += 3; @@ -3098,6 +3108,7 @@ protected function pDadosAdicionaisDANFE($x, $y, $h) $y += 1; $aFont = array('font' => $this->fontePadrao, 'size' => 7, 'style' => ''); $this->pTextBox($x, $y + 2, $w - 2, $h - 3, $this->textoAdic, $aFont, 'T', 'L', 0, '', false); + //RESERVADO AO FISCO $texto = "RESERVADO AO FISCO"; $x += $w;