Ir para conteúdo
  • Cadastre-se

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

Recommended Posts

  • Moderadores
Postado (editado)

atualizei o ACBrMDFe hoje 02/02/2015

atualizei todos os schemas conforme disponibilizado pelo portal do MDFe

atualizei as tags conforme NT 2015

mas ao gerar o xml ocorre o erro : '' is not a integer value

Debugo o aplicativo mas não consigo detectar o erro.

Como não gera o xml, não consigo ver qual a tag que está com conteúdo invalido.

Editado por Gr@c@
  • Moderadores
Postado

Pessoal, desculpem a insistência, mas já fiz de tudo por aqui e não consigo chegar ao erro e gostaria de saber se o pessoal de MG está conseguindo enviar MDFe conforme a NT 2015. Já fiz todas as alterações necessárias, mas não consigo gerar o xml, nem tão pouco chegar ao ponto do erro '' is not a integer value. Acredito que a única forma possível fosse gerar o xml incompleto até a tag que está dando o erro, mas isso também não é possível.

Isso começou a ocorrer depois da atualização ACBr de 02/02/2015.

Já chequei tudo com o layout, regras de validação e tudo o mais.

Por sorte, tenho o aplicativo com compilação antiga que está funcional.

  • Consultores
Postado

Boa tarde Graça,

 

Favor atualizar todos os fontes de todas as pastas.

 

Compare a sua rotina que alimenta o componente com a do programa exemplo.

 

Fiz um teste usando o programa exemplo e não tive esse erro.

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

  • Moderadores
Postado

Boa tarde Italo

fiz o que vc sugeriu, mas continua o erro.

No meu aplicativo anterior, usando os schemas antigos, e sem a tag RENAVAN não ocorre o erro e o MDF-e é enviado e autorizado.

No aplicativo novo, com schemas novos e tag RENAVAN o erro ocorre. Sem tag RENAVAN também.

E também ocorre se usar esse aplicativo novo com os schemas antigos.

O problema é que não consigo debugar até o erro e nem gerar o xml até onde é possível. Tem uma outra forma de conseguir fazer isso?

Já chequei o layout para ver se falta abastecer alguma tag mas está tudo aparentemente correto, inclusive os conteúdos (que consigo checar ao debugar o aplicativo).

  • Moderadores
Postado

hoje fiz o seguinte teste:

-compilei meu aplicativo emissor de MDF-e que estava funcional até ontem (com compilação anterior a 02/02/2015). Ontem por exemplo, sem compilar, ele estava enviando MDF-e com sucesso.

-Não alterei os schemas nem o aplicativo

-Após compilar, passou a dar o erro '' is not a valid integer e não gera o xml

portanto o problema não são os schemas. Deve ter sido feita alguma alteração no componente que eu não consigo detectar porque ao debugar não me permite chegar até o ponto. Já deletei dcu,dcr,res deixando apenas o dpr,dfm e pas, mas mesmo assim o debug não continua.

  • Moderadores
Postado (editado)

Ítalo, consegui debugar o aplicativo até o erro e detectei onde está retornando o '' is not a integer value;

No ACBrMDFe subversion mais antiga -> pmDFeMDFew.pas -> function TMDFeW.GerarXML:boolean

antes essa parte da unit estava assim:
----------------------------------------------------------
chave := '';

if not GerarChave(Chave, MDFe.ide.cUF, MDFe.ide.cMDF, StrToInt(MDFe.ide.modelo), MDFe.ide.serie,
MDFe.ide.nMDF, StrToInt(TpEmisToStr(MDFe.ide.tpEmis)), MDFe.ide.dhEmi, MDFe.emit.CNPJ) then
Gerador.wAlerta('#001', 'infMDFe', DSC_CHAVE, ERR_MSG_GERAR_CHAVE);

chave := StringReplace(chave,'NFe','MDFe',[rfReplaceAll]);
MDFe.infMDFe.ID := chave;
MDFe.ide.cDV := RetornarDigito(MDFe.infMDFe.ID);
MDFe.Ide.cMDF := RetornarCodigoNumerico(MDFe.infMDFe.ID, 2);


agora está assim:
-----------------------------------
 
chave := '';

if not GerarChave(Chave, MDFe.ide.cUF, MDFe.ide.cMDF, StrToInt(MDFe.ide.modelo), MDFe.ide.serie,
MDFe.ide.nMDF, StrToInt(TpEmisToStr(MDFe.ide.tpEmis)), MDFe.ide.dhEmi, MDFe.emit.CNPJ) then
Gerador.wAlerta('#001', 'infMDFe', DSC_CHAVE, ERR_MSG_GERAR_CHAVE);

chave := StringReplace(chave,'NFe','MDFe',[rfReplaceAll]);
 
 
----> acontece que nesse ponto a minha tag MDFe.infMDFe.Id = numero do MDFe = 13 e não igual a '', portando esse if não executa.  Existe algum motivo especial para ter sido acrescentado esse if ?
Nos outros componentes não está sendo tratado dessa forma. Verifiquei meu aplicativo de NFe e nele também estou movendo o numero da NFe para o infNFe.Id.
if trim(MDFe.infMDFe.Id) = '' then    MDFe.infMDFe.Id := chave;

MDFe.ide.cDV := RetornarDigito(MDFe.infMDFe.Id);
MDFe.Ide.cMDF := RetornarCodigoNumerico(MDFe.infMDFe.Id, 2);


-----> setei o infMDFe.ID = '' e deu certo.
-----> mais um detalhe: só consegui debugar o aplicativo completamente, depois de desinstalar todo o ACBr e reinstalar. Então, com certeza o que estava travando o debugger eram bpls ou dcus do componente.
 
 
analisando o pcnNFew.pas está assim (por isso não ocorre o erro no meu aplicativo de NFe)

----------------------------------------------------------------------------------------

if (Trim(nfe.infNFe.ID) = '') or (not ValidarChave(nfe.infNFe.ID)) then
nfe.infNFe.ID := chave
else
begin
NFe.infNFe.ID := StringReplace( UpperCase(NFe.infNFe.ID), 'NFE', '', [rfReplaceAll] ) ;
NFe.infNFe.ID := 'NFe' + NFe.infNFe.ID;
end;

Editado por Gr@c@
  • Consultores
Postado

Boa tarde Graça,

 

Ai que esta o problema.

 

A propriedade ID tanto na NF-e, CT-e e MDF-e não devemos atribuir nada, ou melhor atribuir uma string vazia.

 

Lembre que a propriedade ID é o identificado do documento fiscal, que no caso é a chave precedido de NFe ou CTe ou MDFe dependendo do modelo do documento.

 

A propriedade ID é gerado automaticamente pelo componente, se você atribuir algo a ID o componente ignora a chave gerada e usa a informação atribuída como sendo o Identificador.

 

O IF foi incluído para ficar compatível com os demais componentes.

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

  • Moderadores
Postado

Concordo. Mas como sempre funcionou, deixei passar batido. Deve ser um erro que vem desde quando desenvolvi o meu aplicativo emissor de NFe. Já arrumei aqui e ficou correto. O problema é que, como não conseguia debugar o aplicativo, não achava um erro tão bobo.

Mas, para ficar mais compatível com os demais componentes, nos NFe tem essa checagem que não tem no MDFe (no caso, o ValidarChave):

if (Trim(nfe.infNFe.ID) = '') or (not ValidarChave(nfe.infNFe.ID)) then

nfe.infNFe.ID := chave

else

begin

NFe.infNFe.ID := StringReplace( UpperCase(NFe.infNFe.ID), 'NFE', '', [rfReplaceAll] ) ;

NFe.infNFe.ID := 'NFe' + NFe.infNFe.ID;

end;

  • Este tópico foi criado há 3573 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.