NFePHP\NFe\ToolsNFe::sefazEnviaLote PHP Method

sefazEnviaLote() public method

sefazEnviaLote Solicita a autorização de uso de Lote de NFe
public sefazEnviaLote ( array $aXml, string $tpAmb = '2', string $idLote = '', array &$aRetorno = [], integer $indSinc, boolean $compactarZip = false, $salvarMensagens = true ) : string
$aXml array
$tpAmb string
$idLote string
$aRetorno array
$indSinc integer
$compactarZip boolean
return string
    public function sefazEnviaLote($aXml, $tpAmb = '2', $idLote = '', &$aRetorno = array(), $indSinc = 0, $compactarZip = false, $salvarMensagens = true)
    {
        $sxml = $aXml;
        if (empty($aXml)) {
            $msg = "Pelo menos uma NFe deve ser informada.";
            throw new Exception\InvalidArgumentException($msg);
        }
        if (is_array($aXml)) {
            if (count($aXml) > 1) {
                //multiplas nfes, não pode ser sincrono
                $indSinc = 0;
            }
            $sxml = implode("", $sxml);
        }
        $sxml = preg_replace("/<\\?xml.*\\?>/", "", $sxml);
        $siglaUF = $this->aConfig['siglaUF'];
        if ($tpAmb == '') {
            $tpAmb = $this->aConfig['tpAmb'];
        }
        if ($idLote == '') {
            $idLote = LotNumber::geraNumLote(15);
        }
        //carrega serviço
        $servico = 'NfeAutorizacao';
        $this->zLoadServico('nfe', $servico, $siglaUF, $tpAmb);
        if ($this->urlService == '') {
            $msg = "O envio de lote não está disponível na SEFAZ {$siglaUF}!!!";
            throw new Exception\RuntimeException($msg);
        }
        //montagem dos dados da mensagem SOAP
        $cons = "<enviNFe xmlns=\"{$this->urlPortal}\" versao=\"{$this->urlVersion}\">" . "<idLote>{$idLote}</idLote>" . "<indSinc>{$indSinc}</indSinc>" . "{$sxml}" . "</enviNFe>";
        //valida a mensagem com o xsd
        //validar mensagem com xsd
        //if (! $this->validarXml($cons)) {
        //    $msg = 'Falha na validação. '.$this->error;
        //    throw new Exception\RuntimeException($msg);
        //}
        //montagem dos dados da mensagem SOAP
        $body = "<nfeDadosMsg xmlns=\"{$this->urlNamespace}\">{$cons}</nfeDadosMsg>";
        $method = $this->urlMethod;
        if ($compactarZip) {
            $gzdata = base64_encode(gzencode($cons, 9, FORCE_GZIP));
            $body = "<nfeDadosMsgZip xmlns=\"{$this->urlNamespace}\">{$gzdata}</nfeDadosMsgZip>";
            $method = $this->urlMethod . "Zip";
        }
        //envia a solicitação via SOAP
        $retorno = $this->oSoap->send($this->urlService, $this->urlNamespace, $this->urlHeader, $body, $method);
        $this->soapDebug = $this->oSoap->soapDebug;
        //salva mensagens
        if ($salvarMensagens) {
            $lastMsg = $this->oSoap->lastMsg;
            $filename = "{$idLote}-enviNFe.xml";
            $this->zGravaFile('nfe', $tpAmb, $filename, $lastMsg);
            $filename = "{$idLote}-retEnviNFe.xml";
            $this->zGravaFile('nfe', $tpAmb, $filename, $retorno);
        }
        //tratar dados de retorno
        $aRetorno = ReturnNFe::readReturnSefaz($servico, $retorno);
        //caso o envio seja recebido com sucesso mover a NFe da pasta
        //das assinadas para a pasta das enviadas
        return (string) $retorno;
    }

Usage Example

Ejemplo n.º 1
0
<?php

error_reporting(E_ALL);
ini_set('display_errors', 'On');
include_once '../../bootstrap.php';
use NFePHP\NFe\ToolsNFe;
$nfe = new ToolsNFe('../../config/config.json');
$nfe->setModelo('55');
$aResposta = array();
$chave = '35150258716523000119550010000000091000000090';
$tpAmb = '2';
$aXml = file_get_contents("/var/www/nfe/homologacao/assinadas/{$chave}-nfe.xml");
$idLote = '';
$indSinc = '0';
$flagZip = false;
$retorno = $nfe->sefazEnviaLote($aXml, $tpAmb, $idLote, $aResposta, $indSinc, $flagZip);
echo '<br><br><PRE>';
echo htmlspecialchars($nfe->soapDebug);
echo '</PRE><BR>';
print_r($aResposta);
echo "<br>";