Jump to content

Embarcadero Conference 2019

22/10 - Visite o Stand do ACBr
Saiba mais

Nova Loja Oficial
loja.projetoacbr.com.br
Ajude o projeto a crescer, com estilo

Comprar

Balança SM100 performance surpreendente

Tecnologia Japonesa   Teclado e Visor resistentes a água
Consumo inteligente de etiquetas   Baixo custo de manutenção
Comunicação Ethernet e WIFI independentes

Saiba mais

Impressora de Etiquetas ELGIN - L42 PRO

Protocolos PPLA, PPLB, ZPL, EPL (automático)
Porta USB padrão Opcionais: Ethernet, Serial, Paralela
Sensor de Etiquetas Móvel Garantia de 18 meses

Saiba mais

amauridebarros

Erro "Rejeição Falha no schema XML"

Recommended Posts

Bom dia:

Estou utilizando o ACBR para emitir minhas Notas fiscais.

A emissão da NFE está funcionando sem problemas porem quando eu tento cancelar  a NFE ele me da
o seguinte erro:  "Rejeição: Falha no Schema XML", como ele da est mensagem e não da mais nenhuma 
referência eu não sei onde procurar o que pode estar errado, seguindo outros tópicos eu verifiquei
que poderia ser algum erro no arquivo XML mas ele está integro e sem erros, verifiquei um post que
dizia que o problema poderia ser em "ACBrNFe.Configuracoes.Geral.CamposFatObrigatorios:=False" eu 
colouei false com o post dizia a pasta schemas está atualizada e o cancelamento funciona em um 
outro software que também utiliza ACBR e eu confiro os atributos do componente que esta la e está
igual ao meu e também conferindo as informações que o outro software envia não consegui encontrar nada 
diferente do meu. Alguém pode me dar alguma luz de o que mais eu devo conferir?

Share this post


Link to post
Share on other sites

Ok mas conforme eu disse acho que estou enviando alguma informação errada só não consigo saber o que conferir pois em um outro software que utiliza exatamente a mesma pasta de eschema ele funciona, mas eu não consegui descobrir o que ele está fazendo diferente do meu. Eu  estou utilizando exatamente a mesma rotina de cancelamento. 

Share this post


Link to post
Share on other sites
1 hora atrás, amauridebarros disse:

Alguém pode me dar alguma luz de o que mais eu devo conferir?

Um erro comum é a justificativa menor que 15 caracteres.

Mas precisa conferir o XML gerado pra tentar identificar o problema.

Configure o componente pra gravar os arquivos de envio e retorno e anexe aqui o *-ped-can.xml e *-ped-can-soap.xml.

  • Like 1

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Share this post


Link to post
Share on other sites
36 minutos atrás, BigWings disse:

Um erro comum é a justificativa menor que 15 caracteres.

Mas precisa conferir o XML gerado pra tentar identificar o problema.

Configure o componente pra gravar os arquivos de envio e retorno e anexe aqui o *-ped-can.xml e *-ped-can-soap.xml.

Ele gerou estes  XML

 

0-eve.xml 0-ped-eve.xml 1905111145-eve.xml 1905111145-ped-eve.xml

Share this post


Link to post
Share on other sites
33 minutos atrás, amauridebarros disse:

Você está enviando dois eventos no seu arquivo 0-ped-eve.xml, um deles não tem justificativa, por isso o erro de schema.

Provavelmente é algo errado na sua rotina, e está chamando o método ACBrNFe.EventoNFe.Evento.Add mais de uma vez, ou faltando chamar ACBrNFe.EventoNFe.Evento.Clear antes de iniciar a rotina de cancelamento.


Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Share this post


Link to post
Share on other sites
3 horas atrás, BigWings disse:

Você está enviando dois eventos no seu arquivo 0-ped-eve.xml, um deles não tem justificativa, por isso o erro de schema.

Provavelmente é algo errado na sua rotina, e está chamando o método ACBrNFe.EventoNFe.Evento.Add mais de uma vez, ou faltando chamar ACBrNFe.EventoNFe.Evento.Clear antes de iniciar a rotina de cancelamento.

*****************************************************************************************************************************************************************************

Esta é a minha rotina não consigo achar onde enviei duas vezes o mesmo evento debugando a aplicação o erro ocorre logo apos a linha:

      ******************************************************
      if ACBrNFe.EnviarEvento(NumeroLote) then

      *****************************************************

 

*******************************************************************************************************************************************

procedure TFrmM005HK.SB_CanNfeClick(Sender: TObject);
Var
  DataHoraEvento:TDateTime;
  NumeroLote    :Integer;
  AnoDoc, MesDoc: string;
  VdAuxili      :TDateTime;
  VtAuxili      :TTime;
  VsAuxili      :String;
  VsCnpCpf      :String;
  VsNomArq      :String;
  vfcnpcpf      :Real;
    Vidatemi      :Integer;
    Vidatsai      :Integer;
    Vihorsai      :Integer;
  VlrVal:String;
  vinped:Integer;
  teste:String;
begin
    ViNroNfe:=StrToInt(EdtNumNfe.Text);
    VdAtbNfe:=DmAtbCadNfe.RetCadNfe(ViNroNfe
                                   ,'1'
                                   ,VdTabPed.fVinumped
                                   ,VlrNfe
                                   ,StrToDate(EdtPriPar.Text)
                                   ,1
                                   ,StrToDate(EdtDatSai.Text)
                                   ,0
                                   ,1
                                   ,VdTabPed.fVsprzfat
                                   ,VdTabPed.fVsnroped );
      DmAtbCadPed.Qry_LocNfePed.Close;
      DmAtbCadPed.Qry_LocNfePed.Parameters.ParamByName('PrNfe').Value:=VdAtbNfe.fVinumnfe;
      DmAtbCadPed.Qry_LocNfePed.Open;
      VsNomArq:=DmAtbCadPed.Qry_LocNfePed.FieldByName('nomarq').AsString;
      Vs_RetChvNfe:=DmAtbCadPed.Qry_LocNfePed.FieldByName('chanfe').AsString;
      Vs_Retnropro:=DmAtbCadPed.Qry_LocNfePed.FieldByName('codpro').AsString;
      If DmAtbCadPed.Qry_LocNfePed.FieldByName('codpro').AsString='' then
      Begin
         Showmessage('Nota sem protocolo de transmissão...');
         abort;
      End
      Else
     begin
         Application.CreateForm(TFrmA003Hk, FrmA003Hk);
         FrmA003Hk.Lbl_definicao.Caption:='Justificativa com no minimo 15 caracteres';
         FrmA003Hk.Mm_descricao.Lines.Clear;
         FrmA003Hk.ShowModal;
     end;
     if FrmA003Hk.Vb_cancelarNFE then
     Begin
         DmAtbCadPed.Qry_LocNfePed.Close;
         DmAtbCadPed.Qry_LocNfePed.Parameters.ParamByName('PrNfe').Value:=DmAtbCadPed.Tbl_BasePed.FieldByName('numnfe').AsInteger;
         DmAtbCadPed.Qry_LocNfePed.Open;
         ACBrNFe.Configuracoes.Arquivos.PathSchemas:='C:\Dsystem\NFE\Schemas\';
         ACBrNFe.Configuracoes.Geral.CamposFatObrigatorios:=False;
         ACBrNFe.Configuracoes.Geral.IdCSC := VdAtbNfe.fVsidtcer;
         ACBrNFe.Configuracoes.Geral.CSC := VdAtbNfe.fVsidttok;
         ACBrNFe.Configuracoes.Certificados.NumeroSerie := VdAtbNfe.fVsidtcer;
         ACBrNFe.SSL.NumeroSerie := VdAtbNfe.fVsidtcer;
         ACBrNFe.SSL.CarregarCertificado ;
         // numero do lote de envio      ****
         DataHoraEvento := NOW;
         NumeroLote     := StrToInt(FormatDateTime('yymmddhhmm', NOW));

         AnoDoc := Copy(DateToStr(Vd_Retdatemi),7,4);
         MesDoc := Copy(DateToStr(Vd_Retdatemi),4,2);
         if not FrmM005hk.ACBrNFe.NotasFiscais.LoadFromFile( FrmM004HK.Vs_arqxmlnfe + '\' + VsNomArq) then
         raise Exception.Create('Nao foi possivel carregar o xml da nota');
     End;
     ACBrNFe.EventoNFe.idLote := NumeroLote;
     ACBrNFe.EventoNFe.Evento.Clear;
     with ACBrNFe.EventoNFe.Evento.Add do
     begin
        infEvento.CNPJ            := FloatToStr(VdAtbNfe.fVicnpemi);
        infEvento.dhEvento        := DataHoraEvento;
        infEvento.tpEvento        := tecancelamento;
        infEvento.chNFe           := Vs_RetChvNfe;
        infEvento.detEvento.nProt := Vs_Retnropro;
        infEvento.detEvento.xJust := FrmA003Hk.Mm_descricao.Text;
     end;

      ******************************************************
      if ACBrNFe.EnviarEvento(NumeroLote) then

      *****************************************************
      begin
        with ACBrNFe.WebServices do
        begin
          if EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.cStat <> 135 then
          begin
            raise Exception.CreateFmt(
              'Ocorreu o seguinte erro ao cancelar a nota fiscal eletrônica:'  + sLineBreak +
              'Código:%d' + sLineBreak +
              'Motivo: %s', [
                EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.cStat,
                EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.xMotivo
            ]);
          end;
        end;
      end
      else
      begin
        with ACBrNFe.WebServices.EnvEvento do
        begin
          raise Exception.Create(
            'Ocorreram erros ao tentar efetuar o cancelamento:' + sLineBreak +
            'Lote: '     + IntToStr(EventoRetorno.idLote) + sLineBreak +
            'Ambiente: ' + TpAmbToStr(EventoRetorno.tpAmb) + sLineBreak +
            'Orgao: '    + IntToStr(EventoRetorno.cOrgao) + sLineBreak +
            sLineBreak +
            'Status: '   + IntToStr(EventoRetorno.cStat) + sLineBreak +
            'Motivo: '   + EventoRetorno.xMotivo
          );
        end;
      end;
      if (ACBrNFe.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.cStat = 135) or
         (ACBrNFe.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.cStat = 155) then
      begin
         Showmessage('NFe cancelada com sucesso.');
         //Altera o Status da NFE no banco para 3 - NFE Cancelada/////////////////////////
         // Inserido por amauri para pegar o valor do cnpj e numero
         VsCnpCpf           := Floattostr(VdTabPed.fVfinscli);
         Dm_AtlBas.Atlcabnfe( DmAtbCadPed.Qry_LocNfePed.FieldByName('numnfe').AsInteger
                             ,'1'
                             ,DmAtbCadPed.Qry_LocNfePed.FieldByName('numnfe').AsInteger
                             ,'1'
                             ,DmAtbCadPed.Qry_LocNfePed.FieldByName('datemi').AsInteger
                             ,DmAtbCadPed.Qry_LocNfePed.FieldByName('datsai').AsInteger
                             ,DmAtbCadPed.Qry_LocNfePed.FieldByName('horsai').AsInteger
                             ,0
                             ,1
                             ,VdTabPed.fVfinscli
                             ,0
                             ,'NFE'
                             ,0
                             ,0
                             ,0
                             ,0
                             ,0
                             ,0
                             ,0
                             ,0
                             ,0
                             ,0
                             ,0
                             ,0
                             ,DmAtbCadPed.Qry_LocNfePed.FieldByName('nomarq').AsString
                             ,DmAtbCadPed.Qry_LocNfePed.FieldByName('chanfe').AsString
                             ,DmAtbCadPed.Qry_LocNfePed.FieldByName('codpro').AsString
                             ,3 //Status 03 - NFE Cancelada
                             ,'0' //Numero da Inscrição estadual da Transportadora
                             ,0 //Codigo da Transportadora
                             ,'A');
         /////////////////////////////////////////////////////////////////////////////////
      end;

 

*******************************************************************

Share this post


Link to post
Share on other sites

Bom dia pessoal,

Eu sei que não deveria estar pedindo este tipo de ajuda e sim lendo a documentação, e eu estou fazendo isto aos poucos mas no momento a situação é emergencial, alguem poderia me passar algum exemplo de cancelamento de nfe que esteja funcionando.

Muito obrigado...

Share this post


Link to post
Share on other sites
Em 11/05/2019 at 15:10, amauridebarros disse:

Esta é a minha rotina não consigo achar onde enviei duas vezes o mesmo evento debugando a aplicação o erro ocorre logo apos a linha:

A única coisa que me chamou atenção no trecho de código é você estar manipulando dois objetos ACBrNFe na mesma rotina, um na classe FrmA003Hk e outro na classe TFrmM005HK.

Fora isso não identifiquei o que possa estar causando o problema, será necessário debugar.

Tente analisar o valor de ACBrNFe.EventoNFe.Evento.Count antes da chamada ao método ACBrNFe.EnviarEvento.

22 horas atrás, amauridebarros disse:

Eu sei que não deveria estar pedindo este tipo de ajuda e sim lendo a documentação, e eu estou fazendo isto aos poucos mas no momento a situação é emergencial, alguem poderia me passar algum exemplo de cancelamento de nfe que esteja funcionando.

O demo do componente tem um exemplo de cancelamento funcionando.


Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Share this post


Link to post
Share on other sites
36 minutos atrás, BigWings disse:

A única coisa que me chamou atenção no trecho de código é você estar manipulando dois objetos ACBrNFe na mesma rotina, um na classe FrmA003Hk e outro na classe TFrmM005HK.

Fora isso não identifiquei o que possa estar causando o problema, será necessário debugar.

Tente analisar o valor de ACBrNFe.EventoNFe.Evento.Count antes da chamada ao método ACBrNFe.EnviarEvento.

O demo do componente tem um exemplo de cancelamento funcionando.

"Tente analisar o valor de ACBrNFe.EventoNFe.Evento.Count antes da chamada ao método ACBrNFe.EnviarEvento"

ele retorna 1, então o eventoo está sendo enviado certo?

Share this post


Link to post
Share on other sites
10 minutos atrás, amauridebarros disse:

"Tente analisar o valor de ACBrNFe.EventoNFe.Evento.Count antes da chamada ao método ACBrNFe.EnviarEvento"

ele retorna 1, então o eventoo está sendo enviado certo?

O correto é 1 sim, mas isso vai contra o que está sendo gerado no XML.

Como disse, é preciso debugar.


Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Share this post


Link to post
Share on other sites

Obtive o seguinte erro ao tentar cancelar uma nfe usando NFE.CANCLEARNFE agora a pouco

ERRO: leiauteEvento_v1.00.xsd#/schema/complexType[2][@name = 'TRetEvento']/sequence[1]/element[1][@name = 'infEvento']/complexType[1]/sequence[1]/element[3][@name = 'cOrgao']
Undeclared XSD type : '{http://www.portalfiscal.inf.br/nfe}TCOrgaoIBGE'.

Share this post


Link to post
Share on other sites

Bom dia pessoal, pelo jeito o problema é mais complexo do que eu imaginava...

Meus sinceros agradecimentos ao pessoal que tentou me ajudar, vou pesquisar a documentação e assim que conseguir algo eu posto a solução aqui.

Mais uma vez muito obrigado e bom trabalho ou estudos a todos.

  • Like 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...