public function rodoTag($RNTRC = '', $dPrev = '', $lota = '', $CIOT = '') { $identificador = '#1 <rodo> - '; $this->rodo = $this->dom->createElement('rodo'); $this->dom->addChild($this->rodo, 'RNTRC', $RNTRC, true, $identificador . 'Registro nacional de transportadores rodoviários de carga'); $this->dom->addChild($this->rodo, 'dPrev', $dPrev, true, $identificador . 'Data prevista para entrega da carga no recebedor'); $this->dom->addChild($this->rodo, 'lota', $lota, true, $identificador . 'Indicador de lotação'); $this->dom->addChild($this->rodo, 'CIOT', $CIOT, false, $identificador . 'Codigo identificador da operacao de ' . 'transporte'); return $this->rodo; }
/** * zPutQRTag * Monta a URI para o QRCode e coloca a tag * no xml já assinado * @param Dom $dom * @return string * NOTA: O Campo QRCode está habilitado para uso a partir de * 01/10/2015 homologação * 03/11/2015 Produção */ protected function zPutQRTag(Dom $dom, $saveFile) { //pega os dados necessários para a montagem da URI a partir do xml $nfe = $dom->getNode('NFe'); $ide = $dom->getNode('ide'); $dest = $dom->getNode('dest'); $icmsTot = $dom->getNode('ICMSTot'); $signedInfo = $dom->getNode('SignedInfo'); $chNFe = $dom->getChave('infNFe'); $cUF = $dom->getValue($ide, 'cUF'); $tpAmb = $dom->getValue($ide, 'tpAmb'); $dhEmi = $dom->getValue($ide, 'dhEmi'); $cDest = ''; if (!empty($dest)) { //pode ser CNPJ , CPF ou idEstrageiro $cDest = $dom->getValue($dest, 'CNPJ'); if ($cDest == '') { $cDest = $dom->getValue($dest, 'CPF'); if ($cDest == '') { $cDest = $dom->getValue($dest, 'idEstrangeiro'); } } } $vNF = $dom->getValue($icmsTot, 'vNF'); $vICMS = $dom->getValue($icmsTot, 'vICMS'); $digVal = $dom->getValue($signedInfo, 'DigestValue'); $token = $this->aConfig['tokenNFCe']; $idToken = $this->aConfig['tokenNFCeId']; $versao = '100'; //pega a URL para consulta do QRCode do estado emissor //essa url está em nfe_ws3_mode65.xml //carrega serviço $servico = 'NfeConsultaQR'; $siglaUF = $this->zGetSigla($cUF); $this->zLoadServico('nfe', $servico, $siglaUF, $tpAmb); if ($this->urlService == '') { $this->errors[] = "A consulta por QRCode não está disponível na SEFAZ {$siglaUF}!!!"; return $dom->saveXML(); } $url = $this->urlService; //usa a função zMakeQRCode para gerar a string da URI $qrcode = $this->zMakeQRCode($chNFe, $url, $tpAmb, $dhEmi, $vNF, $vICMS, $digVal, $token, $cDest, $idToken, $versao); if ($qrcode == '') { return $dom->saveXML(); } //inclui a TAG NFe/infNFeSupl com o qrcode $infNFeSupl = $dom->createElement("infNFeSupl"); $nodeqr = $infNFeSupl->appendChild($dom->createElement('qrCode')); $nodeqr->appendChild($dom->createCDATASection($qrcode)); $signature = $dom->getElementsByTagName('Signature')->item(0); $nfe->insertBefore($infNFeSupl, $signature); $dom->formatOutput = false; $xmlSigned = $dom->saveXML(); //salva novamente o xml assinado e agora com o QRCode if ($saveFile) { $anomes = date('Ym', DateTime::convertSefazTimeToTimestamp($dhEmi)); $filename = "{$chNFe}-nfe.xml"; $this->zGravaFile('nfe', $tpAmb, $filename, $xmlSigned, 'assinadas', $anomes); } //retorna a string com o xml assinado e com o QRCode return $xmlSigned; }
/** * addB2B * Adiciona tags de comunicação B2B, especialmente ANFAVEA * @param string $pathNFefile * @param string $pathB2Bfile * @param string $tagB2B * @return string * @throws Exception\InvalidArgumentException * @throws Exception\RuntimeException */ 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; }
/** * Gera as tags para o elemento: "Entrega" (Informações ref. a previsão de entrega) * #69 * Nível: 2 * Os parâmetros para esta função são todos os elementos da tag "Entrega" do tipo elemento (Ele = E|CE|A) e nível 3 * * @return \DOMElement */ private function zEntregaTag() { $this->entrega = $this->dom->createElement('Entrega'); return $this->entrega; }