nfephp-org / sped-nfe

API para geração e comunicação das NFe com as SEFAZ autorizadoras
Other
1.22k stars 536 forks source link

Pesquisar sefazDistDFe por chaNFe #396

Closed rabraga closed 6 years ago

rabraga commented 6 years ago

Possível implementação:

Pesquisar por chNFe no sefazDistDFe.

Segue alterações necessárias:

 /**
 * Service for the distribution of summary information and
 * electronic tax documents of interest to an actor.
 * @param integer $ultNSU  last NSU number recived
 * @param integer $numNSU  NSU number you wish to consult
 * @param string $fonte data source 'AN' and for some cases it may be 'RS'
 * @param string $chNFe number you wish to consult
 * @return string
 */
public function sefazDistDFe(
    $ultNSU = 0,
    $numNSU = 0,
    $fonte = 'AN',
    $chNFe = ''
) {
    //carrega serviço
    $servico = 'NfeDistribuicaoDFe';
    $this->checkContingencyForWebServices($servico);
    $this->servico(
        $servico,
        $fonte,
        $this->tpAmb,
        true
    );
    $cUF = UFList::getCodeByUF($this->config->siglaUF);
    if ($ultNSU) {
       $ultNSU = str_pad($ultNSU, 15, '0', STR_PAD_LEFT);
       $tagNSU = "<distNSU><ultNSU>$ultNSU</ultNSU></distNSU>";
    } 
    if ($numNSU != 0) {
        $numNSU = str_pad($numNSU, 15, '0', STR_PAD_LEFT);
        $tagNSU = "<consNSU><NSU>$numNSU</NSU></consNSU>";
    }
    if (trim($chNFe)) {
        $tagchNFe = "<consChNFe><chNFe>$chNFe</chNFe></consChNFe>";
    }

    //monta a consulta
    $consulta = "<distDFeInt xmlns=\"$this->urlPortal\" versao=\"$this->urlVersion\">"
        . "<tpAmb>".$this->tpAmb."</tpAmb>"
        . "<cUFAutor>$cUF</cUFAutor>"
        . "<CNPJ>".$this->config->cnpj."</CNPJ>".$tagNSU.$tagchNFe."</distDFeInt>";
    //var_dump($consulta);
    //echo "<hr>";
    //valida o xml da requisição
    $this->isValid($this->urlVersion, $consulta, 'distDFeInt');
    $this->lastRequest = $consulta;
    //montagem dos dados da mensagem SOAP
    $request = "<nfeDadosMsg xmlns=\"$this->urlNamespace\">$consulta</nfeDadosMsg>";
    //var_dump($request);
    //echo "<hr>";
    $parameters = ['nfeDistDFeInteresse' => $request];
    //var_dump($parameters);
    //echo "<hr>";
    $body = "<nfeDistDFeInteresse xmlns=\"$this->urlNamespace\">"
        . $request
        . "</nfeDistDFeInteresse>";
    //var_dump($body);
    //echo "<hr>";
    //este webservice não requer cabeçalho
    $this->objHeader = null;
    $this->lastResponse = $this->sendRequest($body, $parameters);
    return $this->lastResponse;
}
robmachado commented 6 years ago

Isso já existe no metodo $tools->sefazDownload($chave)