Beispiel #1
0
 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;
 }
Beispiel #2
0
 /**
  * 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;
 }
Beispiel #3
0
 /**
  * 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;
 }
Beispiel #4
0
 /**
  * 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;
 }