public function addB2B($pathNFefile = '', $pathB2Bfile = '', $tagB2B = '')
{
if (!is_file($pathNFefile) || !is_file($pathB2Bfile)) {
$msg = "Algum dos arquivos não foi localizado no caminho indicado ! {$pathNFefile} ou {$pathB2Bfile}";
throw new Exception\InvalidArgumentException($msg);
}
if ($tagB2B == '') {
//padrão anfavea
$tagB2B = 'NFeB2BFin';
}
$docnfe = new Dom();
$docnfe->loadXMLFile($pathNFefile);
$nodenfe = $docnfe->getNode('nfeProc', 0);
if ($nodenfe == '') {
$msg = "O arquivo indicado como NFe não está protocolado ou não é uma NFe!!";
throw new Exception\RuntimeException($msg);
}
//carrega o arquivo B2B
$docb2b = new Dom();
$docb2b->loadXMLFile($pathNFefile);
$nodeb2b = $docnfe->getNode($tagB2B, 0);
if ($nodeb2b == '') {
$msg = "O arquivo indicado como B2B não contên a tag requerida!!";
throw new Exception\RuntimeException($msg);
}
//cria a NFe processada com a tag do protocolo
$procb2b = new Dom();
//cria a tag nfeProc
$nfeProcB2B = $procb2b->createElement('nfeProcB2B');
$procb2b->appendChild($nfeProcB2B);
//inclui a tag NFe
$node1 = $procb2b->importNode($nodenfe, true);
$nfeProcB2B->appendChild($node1);
//inclui a tag NFeB2BFin
$node2 = $procb2b->importNode($nodeb2b, true);
$nfeProcB2B->appendChild($node2);
//salva o xml como string em uma variável
$nfeb2bXML = $procb2b->saveXML();
//remove as informações indesejadas
$nfeb2bXMLString = str_replace(array("\n", "\r", "\\s"), '', $nfeb2bXML);
return (string) $nfeb2bXMLString;
}