Esempio n. 1
0
 public function danfe()
 {
     require_once 'nfephp/libs/NFe/DanfeNFePHP.class.php';
     if ($_FILES['nota']['type'] != "text/xml") {
         $this->Session->setFlash('O arquivo deve ser do tipo xml! ', 'default');
         return $this->redirect('/nfe/gerar_danfe');
     }
     $arq = $_FILES["nota"]["tmp_name"];
     if (is_file($arq)) {
         $docxml = file_get_contents($arq);
         $danfe = new DanfeNFePHP($docxml, 'P', 'A4', '../images/logo.jpg', 'I', '');
         $id = $danfe->montaDANFE();
         $imprime_danfe = $danfe->printDANFE($id . '.pdf', 'I');
     }
     unlink($arq);
 }
Esempio n. 2
0
<?php

// Passe para este script o arquivo da NFe
// Ex. testaDANFE.php?nfe=35100258716523000119550000000033453539003003-nfe.xml
require_once '../libs/DanfeNFePHP.class.php';
//$arq = $_GET['nfe'];
$arq = 'xml/35101158716523000119550010000000011003000000-nfe.xml';
if (is_file($arq)) {
    $docxml = file_get_contents($arq);
    $danfe = new DanfeNFePHP($docxml, 'P', 'A4', '../images/logo.jpg', 'I', '');
    $id = $danfe->montaDANFE();
    $teste = $danfe->printDANFE($id . '.pdf', 'I');
}
Esempio n. 3
0
 public function __construct($docXML = '', $sOrientacao = '', $sPapel = '', $sPathLogo = '', $sDestino = 'I', $sDirPDF = '', $fonteDANFE = '', $exibirPIS = 1, $mododebug = 2)
 {
     parent::__construct($docXML, $sOrientacao, $sPapel, $sPathLogo, $sDestino, $sDirPDF, $fonteDANFE, $exibirPIS, $mododebug);
 }
 /**
  * autoPrintSend
  * Este método deve imprmir automaticamente as DANFEs de todas as
  * NFe localizadas na pasta aprovadas, enviar o email ao destinatário
  * com a DANFE em pdf e o arquivo xml e ainda mover a NFe em xml
  * para o diretorio de armazenamento com o ANOMES da nota para facilitação
  * da adminstração e backup
  *
  * @version   2.07
  * @package NFePHP
  * @author Roberto L. Machado <linux.rlm at gmail dot com>
  * @param  boolean $fixpdf Indica de deve ser gravado ou não o pdf da NFe
  * @return boolean True se OK ou False se falha
  */
 public function autoPrintSend($fixpdf = false)
 {
     //varre a pasta de enviadas/aprovadas
     $aNApr = $this->listDir($this->aprDir, '*-nfe.xml', false);
     //se houver algum arquivo *-nfe.xml continua, caso contrario sai
     if (count($aNApr) > 0) {
         //para cada arquivo nesta pasta imprimir a DANFE em pdf
         // e enviar para a printer
         // SÓ FUNCIONA ATÉ 2099 !!!!!
         foreach ($aNApr as $file) {
             $anomes = '20' . substr($file, 2, 4);
             $docxml = file_get_contents($this->aprDir . $file);
             $danfe = new DanfeNFePHP($docxml, $this->danfepaper, $this->danfeform, $this->danfelogopath, 'I', '', $this->danfefont);
             $id = (string) $danfe->montaDANFE();
             $pdfName = $id . '.pdf';
             //carrega a DANFE como uma string para gravação no diretorio escolhido
             $pdfFile = (string) $danfe->printDANFE($this->pdfDir . $pdfName, 'S');
             if ($pdfFile != '') {
                 //grava a DANFE como pdf no diretorio
                 if (!file_put_contents($this->pdfDir . $pdfName, $pdfFile)) {
                     //houve falha na gravação
                     $this->errMsg = "Falha na gravação do pdf.\n";
                     $this->errStatus = true;
                 } else {
                     //em caso de sucesso, verificar se foi definida a printer se sim imprimir
                     //este comando de impressão funciona tanto em linux como em wndows se o
                     //ambiente estiver corretaente preparado
                     if ($this->danfeprinter != '') {
                         $command = "lpr -P {$this->danfeprinter} {$this->pdfDir}{$pdfName}";
                         system($command);
                     }
                 }
             } else {
                 //houve falha na geração da DANFE
                 $this->errMsg = "Falha na geração da DANFE.\n";
                 $this->errStatus = true;
             }
             //arquivo da NFe com o protocolo
             $dom = new DOMDocument();
             //cria objeto DOM
             $dom->formatOutput = false;
             $dom->preserveWhiteSpace = false;
             $dom->loadXML($docxml);
             $ide = $dom->getElementsByTagName("ide")->item(0);
             $emit = $dom->getElementsByTagName("emit")->item(0);
             $dest = $dom->getElementsByTagName("dest")->item(0);
             $ICMSTot = $dom->getElementsByTagName("ICMSTot")->item(0);
             $obsCont = $dom->getElementsByTagName("obsCont")->item(0);
             $infNFe = $dom->getElementsByTagName('infNFe')->item(0);
             //obtem a versão do layout da NFe
             $ver = trim($infNFe->getAttribute("versao"));
             $razao = utf8_decode($dest->getElementsByTagName("xNome")->item(0)->nodeValue);
             $numero = str_pad($ide->getElementsByTagName('nNF')->item(0)->nodeValue, 9, "0", STR_PAD_LEFT);
             $serie = str_pad($ide->getElementsByTagName('serie')->item(0)->nodeValue, 3, "0", STR_PAD_LEFT);
             $emitente = utf8_decode($emit->getElementsByTagName("xNome")->item(0)->nodeValue);
             $vtotal = number_format($ICMSTot->getElementsByTagName("vNF")->item(0)->nodeValue, 2, ",", ".");
             $email = '';
             $contato = '';
             //NFe ver 1.10 - obter o email de envio
             //na proxima revisão não será mais inclusa a verificação da
             //versão 1.10 que passará a ser resconsiderada
             if ($ver == '1.10') {
                 if (isset($obsCont)) {
                     foreach ($obsCont as $obs) {
                         $campo = $obsCont->item($i)->getAttribute("xCampo");
                         $xTexto = !empty($obsCont->item($i)->getElementsByTagName("xTexto")->item(0)->nodeValue) ? $obsCont->item($i)->getElementsByTagName("xTexto")->item(0)->nodeValue : '';
                         if (substr($campo, 0, 5) == 'email' && $xTexto != '') {
                             $email .= $xTexto . ',';
                         }
                         $i++;
                     }
                 }
             } else {
                 //NFe ver 2.00
                 $email = !empty($dest->getElementsByTagName("email")->item(0)->nodeValue) ? utf8_decode($dest->getElementsByTagName("email")->item(0)->nodeValue) : '';
                 if (isset($obsCont)) {
                     foreach ($obsCont as $obs) {
                         $campo = $obsCont->item($i)->getAttribute("xCampo");
                         $xTexto = !empty($obsCont->item($i)->getElementsByTagName("xTexto")->item(0)->nodeValue) ? $obsCont->item($i)->getElementsByTagName("xTexto")->item(0)->nodeValue : '';
                         if (substr($campo, 0, 5) == 'email' && $xTexto != '') {
                             $email .= $xTexto . ',';
                         }
                         $i++;
                     }
                 }
             }
             //endif
             if ($email != '') {
                 //montar a matriz de dados para envio do email
                 $aEMail = array('emitente' => $emitente, 'para' => $email, 'contato' => '', 'razao' => $razao, 'numero' => $numero, 'serie' => $serie, 'vtotal' => $vtotal);
                 //inicalizar a classe de envio
                 $nfeMail = new MailNFePHP($this->aMail);
                 if (!$nfeMail->sendNFe($docxml, $pdfFile, $file, $pdfName, $aEMail)) {
                     $this->errMsg = "Falha no envio do email ao destinatário!!\n";
                     $this->errStatus = true;
                 }
             }
             //mover o arquivo xml para a pasta de arquivamento identificada com o ANOMES
             $diretorio = $this->aprDir . $anomes . DIRECTORY_SEPARATOR;
             if (!is_dir($diretorio)) {
                 mkdir($diretorio, 0777);
             }
             rename($this->aprDir . $file, $diretorio . $file);
             //apagar o pdf criado para envio
             if (!$fixpdf) {
                 if (is_file($this->pdfDir . $pdfName)) {
                     unlink($this->pdfDir . $pdfName);
                 }
             }
         }
         //end foreach
     }
     //endif
     return true;
 }
Esempio n. 5
0
<?php

require_once '../libs/NFe/DanfeNFePHP.class.php';
$docxml = $_POST['xml'];
$cnpj = $_POST['cnpj'];
$logo = 'logos/' . $cnpj;
if (is_file($logo)) {
    $danfe = new DanfeNFePHP($docxml, 'P', 'A4', $logo, 'I', '');
} else {
    $danfe = new DanfeNFePHP($docxml, 'P', 'A4', '', 'I', '');
}
$id = $danfe->montaDANFE();
$impresso = $danfe->printDANFE($id . '.pdf', 'I');