MemoStatus.Lines.Add('------------------------------------------------------'); MemoStatus.Lines.Add(' => Consultando NFe Destinadas'); MemoStatus.Lines.Add('------------------------------------------------------'); // TpcnIndicadorNFe = (inTodas, inSemManifestacaoComCiencia, inSemManifestacaoSemCiencia); // TpcnIndicadorEmissor = (ieTodos, ieRaizCNPJDiferente); Memo1.Text := ''; k := 0; repeat inc(k); DMDFe.NFe.ConsultaNFeDest( CNPJ, inSemManifestacaoSemCiencia, ieTodos, edtUltNSU.Text ); sStat := IntToStr(DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.cStat); sMotivo := DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.xMotivo; case DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.indCont of icNaoPossuiMaisDocumentos: sTemMais := 'N'; icPossuiMaisDocumentos: sTemMais := 'S'; end; sUltimoNSU := DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.ultNSU; GravaUltimaConsulta; // TpcnIndicadorContinuacao = (icNaoPossuiMaisDocumentos, icPossuiMaisDocumentos); // TpcnSituacaoNFe = (snAutorizado, snDenegado, snCancelada); // TpcnSituacaoManifDest = (smdSemManifestacao, smdConfirmada, smdDesconhecida, smdOperacaoNaoRealizada, smdCiencia); // TpcnTipoNFe = (tnEntrada, tnSaida); if DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.cStat = 138 then begin // Documentos Localizados para o Destinatário if DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.indCont = icPossuiMaisDocumentos then begin edtUltNSU.Text := DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.ultNSU; MemoStatus.Lines.Add(' Documento Localizado para o Destinatário'); MemoStatus.Lines.Add(' Utilizar o número que esta no campo: Último NSU'); MemoStatus.Lines.Add(' Para uma nova pesquisa.'); MemoStatus.Lines.Add(' '); end else begin edtUltNSU.Text := '0'; MemoStatus.Lines.Add(' Documento Localizado para o Destinatário'); MemoStatus.Lines.Add(' '); end; j := DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.ret.Count -1; lstChave1.Clear; chkListaNotas.Clear; for i := 0 to j do begin sSerie := ''; sNumero := ''; sCNPJ := ''; sNome := ''; sIEst := ''; sNSU := ''; sEmissao := ''; sTipoNFe := ''; Valor := 0.0; Impresso := ' '; if DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.ret.Items[i].resNFe.chNFe <> '' then begin // Conjunto de informações resumo da NF-e localizadas. // Este conjunto de informação será gerado quando a NF-e for autorizada ou denegada. sChave := DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.ret.Items[i].resNFe.chNFe; sSerie := Copy(sChave, 23, 3); sNumero := Copy(sChave, 26, 9); sCNPJ := DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.ret.Items[i].resNFe.CNPJCPF; sNome := DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.ret.Items[i].resNFe.xNome; sIEst := DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.ret.Items[i].resNFe.IE; case DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.ret.Items[i].resNFe.tpNF of tnEntrada: sTipoNFe := 'E'; tnSaida: sTipoNFe := 'S'; end; sNSU := DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.ret.Items[i].resNFe.NSU; sEmissao := DateToStr(DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.ret.Items[i].resNFe.dEmi); Valor := DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.ret.Items[i].resNFe.vNF; case DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.ret.Items[i].resNFe.cSitNFe of snAutorizado: Impresso := 'A'; snDenegado: Impresso := 'D'; snCancelada: Impresso := 'C'; end; end; if DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.ret.Items[i].resCanc.chNFe <> '' then begin // Conjunto de informações resumo da NF-e localizadas. // Este conjunto de informação será gerado quando o Cancelamento da NF-e for homologado. sChave := DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.ret.Items[i].resCanc.chNFe; sSerie := Copy(sChave, 23, 3); sNumero := Copy(sChave, 26, 9); sCNPJ := DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.ret.Items[i].resCanc.CNPJCPF; sNome := DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.ret.Items[i].resCanc.xNome; sIEst := DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.ret.Items[i].resCanc.IE; case DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.ret.Items[i].resCanc.tpNF of tnEntrada: sTipoNFe := 'E'; tnSaida: sTipoNFe := 'S'; end; sNSU := DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.ret.Items[i].resCanc.NSU; sEmissao := DateToStr(DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.ret.Items[i].resCanc.dEmi); Valor := DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.ret.Items[i].resCanc.vNF; case DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.ret.Items[i].resCanc.cSitNFe of snAutorizado: Impresso := 'A'; snDenegado: Impresso := 'D'; snCancelada: Impresso := 'C'; end; end; // Registra no Banco de Dados as Notas Retornadas pela Consulta DM_VEN.Manifestacao.Close; DM_VEN.Manifestacao.SQL.Clear; DM_VEN.Manifestacao.SQL.Add('Select * From Eve_Manifestacao'); DM_VEN.Manifestacao.SQL.Add('Where Empresa = :xEmpresa'); DM_VEN.Manifestacao.SQL.Add('and Chave = :xChave'); DM_VEN.Manifestacao.Params[0].AsString:=DM_CTA.xCodEmpresa; DM_VEN.Manifestacao.Params[1].AsString:=sChave; DM_VEN.Manifestacao.Active:=True; DM_VEN.Manifestacao.Open; if not ((DM_VEN.ManifestacaoEmpresa.AsString = DM_CTA.xCodEmpresa) and (DM_VEN.ManifestacaoChave.AsString = sChave)) then begin DM_VEN.IncAltDel.SQL.Clear; DM_VEN.IncAltDel.SQL.Add('Insert into Eve_Manifestacao'); DM_VEN.IncAltDel.SQL.Add('(Empresa, Chave, CNPJ, Nome, IE, Emissao, Tipo, Valor,'); DM_VEN.IncAltDel.SQL.Add('Situacao, Confirmacao, NSU, DataEvento, Protocolo)'); DM_VEN.IncAltDel.SQL.Add('Values (:xEmpresa, :xChave, :xCNPJ, :xNome, :xIE, :xEmissao, :xTipo,'); DM_VEN.IncAltDel.SQL.Add(':xValor, :xSituacao, :xConfirmacao, :xNSU, :xDataEve, :xProtocolo)'); DM_VEN.IncAltDel.Params[0].AsString:=DM_CTA.xCodEmpresa; DM_VEN.IncAltDel.Params[1].AsString:=sChave; DM_VEN.IncAltDel.Params[2].AsString:=sCNPJ; DM_VEN.IncAltDel.Params[3].AsString:=sNome; DM_VEN.IncAltDel.Params[4].AsString:=sIEst; DM_VEN.IncAltDel.Params[5].AsDateTime:=StrToDate(sEmissao); DM_VEN.IncAltDel.Params[6].AsString:=sTipoNFe; DM_VEN.IncAltDel.Params[7].AsFloat:=Valor; DM_VEN.IncAltDel.Params[8].AsString:=Impresso; DM_VEN.IncAltDel.Params[9].AsInteger:=-1; DM_VEN.IncAltDel.Params[10].AsString:=sNSU; DM_VEN.IncAltDel.Params[11].AsDateTime:=0; DM_VEN.IncAltDel.Params[12].AsString:=''; DM_VEN.IncAltDel.ExecSQL; end; end; // Fim do For end else begin // Nenhum Documento Localizado para o Destinatário if DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.cStat = 137 then begin if DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.indCont = icPossuiMaisDocumentos then begin edtUltNSU.Text := DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.ultNSU; MemoStatus.Lines.Add(' Nenhum Documento Localizado para o Destinatário'); MemoStatus.Lines.Add(' Utilizar o número que esta no campo: Último NSU'); MemoStatus.Lines.Add(' Para uma nova pesquisa ('+edtUltNSU.Text+').'); MemoStatus.Lines.Add(' '); end else begin edtUltNSU.Text := '0'; MemoStatus.Lines.Add(' Nenhum Documento Localizado para o Destinatário'); MemoStatus.Lines.Add(' '); end; end else begin MemoStatus.Lines.Add(' Falha ao realizar a consulta.'); MemoStatus.Lines.Add(' ' + sStat + ' - ' + sMotivo); MemoStatus.Lines.Add(' '); end; end; MontaChkLista; until (k = edtConsultas.ValueInt) or (DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.indCont <> icPossuiMaisDocumentos); if DMDFe.NFe.WebServices.ConsNFeDest.retConsNFeDest.indCont = icPossuiMaisDocumentos then Memo1.Text := IntToStr(k) + ' Consultas Realizadas e tem mais Documentos.' else Memo1.Text := IntToStr(k) + ' Consultas Realizadas e não tem mais Documentos.';