Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 2922 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

A consulta de MDFe Não Encerrados no trunk 2 esta dando erro!

no xml de envio a tag  <xServ>CONSULTAR NAO ENCERRADOS</xServ>  esta indo sem o acento acredito que seja esse o problema.

Mas mesmo eu colocando como false na propriedade 

MDFe1.Configuracoes.Geral.RetirarAcentos := False

esta retirando o acento.

Como posso resolver isso?

 

Postado

Bom dia Italo,

Fiz o procedimento que você me pediu mas agora   esta indo assim <xServ>CONSULTAR N?O ENCERRADOS</xServ>

com o ? no lugar do à acredito que seja na hora de converter para UTF8

Postado

No demo ainda não tem esta opção de consultar MDFEs não encerrados.

Mas eu faço assim.

primeiro configuro o componente.

  DM.MDFe1.Configuracoes.Certificados.ArquivoPFX :=DM.qrConf.FieldByName('END_CERT').AsString;;
  DM.MDFe1.Configuracoes.Certificados.Senha      :=DM.qrConf.FieldByName('SENHA_CERT').AsString;
  DM.MDFe1.Configuracoes.Certificados.NumeroSerie:=DM.qrConf.FieldByName('NR_SERIE_CERT').AsString;
  DM.MDFe1.Configuracoes.Geral.SSLLib := libCapicom;

  DM.MDFe1.Configuracoes.Geral.FormaEmissao:=StrToTpEmis(OK,IntToStr(DM.qrConf.FieldByName('FORMA_EMISS_WEB').AsInteger));
  DM.MDFe1.Configuracoes.Geral.Salvar:= True;
  DM.MDFe1.Configuracoes.Geral.RetirarAcentos := False;
  {Arquivos do MDFe}
  DM.MDFe1.Configuracoes.Arquivos.PathSchemas:=ExtractFilePath(application.exename)+'Schemas';
  DM.MDFe1.Configuracoes.Arquivos.PathSalvar :=DM.qrConf.FieldByName('END_ARQ_ENV_RESP').AsString;
  DM.MDFe1.Configuracoes.Arquivos.PathMDFe:=DM.qrConf.FieldByName('END_ARQ_ENV_RESP').AsString;
  DM.MDFe1.Configuracoes.Arquivos.PathEvento:=DM.qrConf.FieldByName('END_ARQ_ENV_RESP').AsString;

  DM.MDFe1.Configuracoes.WebServices.UF      :=DM.qrConf.FieldByName('UF_EMIT').AsString;
  DM.MDFe1.Configuracoes.WebServices.Ambiente:=StrToTpAmb(Ok,IntToStr(DM.qrConf.FieldByName('TP_AMB_WEB').AsInteger));
  DM.MDFe1.Configuracoes.WebServices.Visualizar:=True;

  DM.MDFe1.DAMDFe.TipoDAMDFe:=StrToTpImp(OK,IntToStr(DM.qrConf.FieldByName('TIPO_IMP_DACTE').AsInteger));
  DM.MDFe1.DAMDFe.Logo      :=DM.qrConf.FieldByName('END_LOGO_DACTE').AsString;
  DM.MDFe1.DAMDFe.PathPDF   :=DM.qrConf.FieldByName('END_ARQ_PDF').AsString;

 

depois faço a busca e insiro no clientdataset;

try
    DM.MDFe1.WebServices.ConsMDFeNaoEnc.InfMDFe.Clear;//Limpa antes de inserir
    if DM.MDFe1.WebServices.ConsultaMDFeNaoEnc(DM.qrConf.FieldByName('CNPJ_EMIT').AsString) then   //Nesta Linha da o erro
    begin
      cdsMdfe.EmptyDataSet;
      cdsMdfe.Close;
      cdsMdfe.Open;
      for i := 0 to DM.MDFe1.WebServices.ConsMDFeNaoEnc.InfMDFe.Count -1 do
      begin
        cdsMdfe.Insert;
        cdsMdfechave_acesso.AsString := DM.MDFe1.WebServices.ConsMDFeNaoEnc.InfMDFe.Items.chMDFe;
        cdsMdfenr_protocolo.AsString := DM.MDFe1.WebServices.ConsMDFeNaoEnc.InfMDFe.Items.nProt;
        cdsMdfe.Post;
      end;
    end;
  except
    on E:exception do
    begin
      Memo1.Lines.Add(DM.MDFe1.WebServices.ConsMDFeNaoEnc.xMotivo);
      Memo1.Lines.Add(' ');
      Memo1.Lines.Add('XML de Envio');
      Memo1.Lines.Add(DM.MDFe1.WebServices.ConsMDFeNaoEnc.DadosMsg);
      Memo1.Lines.Add(' ');
      Memo1.Lines.Add(e.Message);

    end;
  end;

 

  • Fundadores
Postado

Não consigo reproduzir com as informações que você forneceu...

Observe que para mim é impossível saber o valor dos campos que estão na sua Query... (Ex:DM.qrConf.FieldByName('END_ARQ_ENV_RESP').AsString)

Por favor faça um mini projeto, atribuindo todos os valores necessários para o teste, antes de chamar o método de Consulta..

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Consultores
Postado

Bom dia Daniel,

O problema em si não é a rotina do nosso amigo Cleonir e sim o XML de consulta gerado pelo componente e enviado para SEFAZ.

Esse XML possui a TAG <xServ> onde consta a descrição do serviço a ser executado pelo Web Service, que por sinal até hoje não sei o motivo dessa TAG, uma vez que a TAG principal do XML é <consMDFeNaoEnc> e por ela acredito que o Web Service seja capaz de identificar o que desejamos.

Mas tudo bem, na Nota Técnica 2015/001 página 5 temos a estrutura dessa consulta, nota-se que o conteúdo da TAG <xServ> é: CONSULTAR NÃO ENCERRADOS.

Veja que a palavra: não, tem a vogal acentuada. 

Esse é o primeiro caso, e é ai onde mora o problema, se não acentuar o XML será rejeitado pois no schema o conteúdo dessa TAG esta definida da seguinte forma:

            <xs:element name="xServ" type="TServ" fixed="CONSULTAR NÃO ENCERRADOS">

Sendo assim temos que gerar o XML dessa consulta em UTF8 de tal forma que o conteúdo da referida TAG esteja de acordo com o schema.

 

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

  • Fundadores
Postado

Muito obrigado pelo Exemplo... Acho que encontrei o problema...

A confusão é que estava tratando o Delphi XE como se o mesmo gerasse código em UTF8, o que não é verdade (ele gera em Unicode)...

Estou aplicando algumas correções... vou testar em Lazarus e D7, volto a postar em breve

Se alguém desejar testar enquanto isso... Segue em anexo um Patch com as Units que foram modificadas

ACBrDFe_Delphi_Unicode.patch

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Fundadores
Postado

Apliquei várias modificações no SVN relativas a problemas de confusão entre UTF8 e UNICODE... (incluindo as modificações do Patch acima)

Pelo Debug do XE7 o XML está sendo gerado corretamente em UTF8, assim como todos os arquivos salvos no disco...

Favor atualizar e testar novamente...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Postado

Boa Tarde.

Atualizei os fontes pela última vez hoje pela manhã.

Estou realizando alguns testes no trunk2 nesse método de consulta de MDFes não encerrados e para mim está retornando o status 215 (Falha no schema XML). Fazendo a mesma consulta na versão do trunk está funcionando normal. Analisando o xml de solicitação que o componente no trunk2 gera, percebi duas situações:

1º - Não está sendo montado a tag versão no cabeçalho do xml, para resolver isso tive que alterar a função DefinirDadosMSG para que sete a propriedade Versao, como segue:

procedure TMDFeConsultaMDFeNaoEnc.DefinirDadosMsg;
var
  ConsMDFeNaoEnc: TConsMDFeNaoEnc;
begin
  ConsMDFeNaoEnc := TConsMDFeNaoEnc.create;
  try
    ConsMDFeNaoEnc.TpAmb := FPConfiguracoesMDFe.WebServices.Ambiente;
    ConsMDFeNaoEnc.CNPJ  := FCNPJ; // TMDFeConsultaMDFeNaoEnc(Self).CNPJ;

    ConsMDFeNaoEnc.Gerador.Opcoes.RetirarAcentos := FPConfiguracoesMDFe.Geral.RetirarAcentos;
    ConsMDFeNaoEnc.Versao := VersaoServico;


    ConsMDFeNaoEnc.GerarXML;

    FPDadosMsg := ConsMDFeNaoEnc.Gerador.ArquivoFormatoXML;
  finally
    ConsMDFeNaoEnc.Free;
  end;
end;

2 º - Na versão do trunk2, está sendo enviado no cabeçalho do xml a declaraçao "<?xml version="1.0" encoding="UTF-8"?>", o que não ocorre no xml do componente no Trunk, não fiz alteração nisso pois não achei o local que ele está adicionando isso ao xml, mas talvez seja esse o motivo da rejeição.

     Outro problema que encontrei foi na unit ACBrMDFeWebServices na function GerarMsgLog, a função format que existe nela está passando %s para o código da UF, mas essa propriedade é inteiro, portanto alterei a mesma para ficar como abaixo, se puderem avaliar e jogar a alteração para o SVN.

  Result := Format(ACBrStr('Versão Layout: %s ' + LineBreak +
                           'Ambiente: %s ' + LineBreak +
                           'Versão Aplicativo: %s ' + LineBreak +
                           'Status Código: %s ' + LineBreak +
                           'Status Descrição: %s ' + LineBreak +
                           'UF: %s ' + LineBreak),
                   [FRetConsMDFeNaoEnc.versao, TpAmbToStr(FRetConsMDFeNaoEnc.tpAmb),
                    FRetConsMDFeNaoEnc.verAplic, IntToStr(FRetConsMDFeNaoEnc.cStat),
                    FRetConsMDFeNaoEnc.xMotivo,
                    CodigoParaUF(FRetConsMDFeNaoEnc.cUF)]);

Vou anexar os dois xmls gerados no trunk2 e no trunk.

Trunk2_20150922151900-ped-cons.xml

Trunk_20150922144455-ped-cons.xml

  • Consultores
Postado

Boa tarde Matheus,

Muito obrigado pela colaboração, já esta disponível no SVN.

Com relação aos arquivos que você postou, poderia configurar o componente: Configuracoes.WebServices.Salvar := True;

Para salvar os XMLs de envio e de retorno com as TAGs de envelopamento.

Esses arquivos possuem a palavra soap no nome e nos ajuda bastante na detecção de erros.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

  • Consultores
Postado

Bom dia Matheus,

É estranho essa rejeição, uma vez que o XML de pedido de consulta esta exatamente igual ao definido na Nota Técnica.

Só resta fazer um último teste.

Alterar o schema tirando o acento da palavra NÃO e fazer o mesmo na Unit do componente.

Desta forma o XML será gerado sem o acento, será validado pois no schema também foi retirado o acento.

Se a SEFAZ aceitar isso significa que a Nota Técnica esta errada e o schema também, ou eles acertaram o Web Services e esqueceram de disponibilizar um novo schema e uma NT informando a alteração.

Se desejar fazer essas alterações e testar:

Unit do componente: pmdfeConsMDFeNaoEnc.pas (...\Fontes\ACBrDFe\ACBrMDFe\PCNMDFe)

Schema: consMDFeNaoEncTiposBasico_v1.00 (...\Exemplos\ACBrDFe\ACBrMDFe\Schemas)

No schema devemos alterar a linha:

            <xs:element name="xServ" type="TServ" fixed="CONSULTAR NÃO ENCERRADOS">

Tirar o acento da vogal.

Depois dessas alterações não esqueça de compilar a aplicação com a opção Build.

 

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

Postado (editado)

Bom dia Ítalo,

Nada feito, continua dando falha no schema xml.

Uma coisa que percebi abrindo os arquivos gerados no trunk e no trunk2, é que no trunk2 o arquivo está com codificação UTF8, enquanto no arquivo que é salvo pelo componente na versão do trunk, está com codificação ANSI.

20150923150603-ped-cons-soap.xml

Editado por Matheus
excluir arquivos desnecessários
  • Fundadores
Postado

Fiz um teste agora, com D7 e XE7 e aparentemente funcionou a contento... Veja a resposta:

<?xml version="1.0" encoding="UTF-8"?>
<retConsMDFeNaoEnc xmlns="http://www.portalfiscal.inf.br/mdfe" versao="1.00">
	<tpAmb>2</tpAmb>
	<verAplic>RS20150102093257</verAplic>
	<cStat>112</cStat>
	<xMotivo>Consulta não encerrados não localizou MDF-e nessa situação</xMotivo>
	<cUF>35</cUF>
</retConsMDFeNaoEnc>

 

  • Curtir 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

  • Este tópico foi criado há 2922 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...