Ir para conteúdo
  • Cadastre-se

dev botao

Erro Segunda Nfse


tiagoshimizu
Ver Solução Respondido por tiagoshimizu,
  • Este tópico foi criado há 3673 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Olá a todos.

 

Estou com um problema estranho em minha aplicação que está me deixando com dor de cabeça!

 

Tenho um aplicação para a emissão tanto das nf-e's quanto das nfs-e's. Esta rotina está em um thread. O problema dá ao emitir NFS-e e utilizar certificado tipo A3 onde a primeira nota funciona ok porem, a segunda nota ele sempre dá o seguinte erro:

"O identificador não está no estado correto para a operação solicitada - URL:https://isscuritiba.pr.gov.br/Iss.NfseWebService/Nfsews.asmx - SOAPAction:http://www.e-governeapps2.com.br/ConsultarNfsePorRps".

 

Alguém poderia me ajudar?

 

Utilizo Delphi 2010 + IssCuritiba. Acabei de atualizar os fontes do ACBr e o preblema continuou.

 

Obrigado.

Editado por tiagoshimizu
Link para o comentário
Compartilhar em outros sites

  • Consultores

Bom dia Tiago,

 

Acredito que o problema pode ser exatamente esse, a rotina estar em um thread.

Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Complementando ao Italo

lembre-se que ao criar uma thread terá que criar uma instancia do componente para cada vez que disparar a mesma! assim eu acredito que será necessário criar via código do componente e configurar ele!

Consultor SAC ACBr Juliomar Marchetti
 

Projeto ACBr

skype: juliomar
telegram: juliomar
e-mail: [email protected]
http://www.juliomarmarchetti.com.br
MVP_NewLogo_100x100_Black-02.png
 

 

Link para o comentário
Compartilhar em outros sites

  • Consultores

Tiago,

 

Acho que o Juliomar lhe respondeu no post anterior.

Consultor SAC ACBr

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

Projeto ACBr

Analista de Sistemas / e-mail: [email protected] / Fone: (16) 9-9701-5030 / Araraquara-SP

Araraquara - A era dos Trólebus

Link para o comentário
Compartilhar em outros sites

  • Solution

Italo, Juliomar, obrigado pela ajuda.

 

Bom, vamos lá. Pelo que entendi do comentário o Juliomar é que por utilizar thread tenho que criar, configurar e destruir o componente a cada vez que for fazer uso do mesmo. Ex:

  TNFSe = class(TThread)
    ACBrNFSe: TACBrNFSe;
    ACBrNFSeDANFSeRL: TACBrNFSeDANFSeRL;
    procedure Execute; override;
  public
    constructor Create; overload;
    destructor Destroy; override;
  end;

{ TNFSe }

constructor TNFSe.Create;
begin
  inherited Create(True);
  FreeOnTerminate := True;
  Priority := tpNormal;

  ACBrNFSe := TACBrNFSe.Create(nil);
  ACBrNFSeDANFSeRL := TACBrNFSeDANFSeRL.Create(ACBrNFSe);
  ACBrNFSe.DANFSE := ACBrNFSeDANFSeRL;

  ACBrNFSe.Configuracoes.Geral.Salvar := True;
  ACBrNFSe.Configuracoes.WebServices.Salvar := True;
  ACBrNFSe.Configuracoes.Geral.PathSalvar := PathSalvar;

  ACBrNFSe.Configuracoes.Certificados.NumeroSerie := NumeroSerie;
  ACBrNFSe.Configuracoes.Certificados.Senha := SenhaCertificado;

  ACBrNFSe.Configuracoes.Geral.PathSchemas := ExtractFilePath
    (Application.ExeName) + 'Schemas';
  ACBrNFSe.Configuracoes.WebServices.CodigoMunicipio := CódigoMunicípio;
  ACBrNFSe.Configuracoes.WebServices.SetConfigMunicipio;

  if ACBrNFSe.DANFSE <> nil then
  begin
    if FileExists(ExtractFilePath(Application.ExeName)
        + 'Imagens\' + ACBrNFSe.Configuracoes.WebServices.xProvedor + '.jpg')
      then
      ACBrNFSe.DANFSE.Logo := ExtractFilePath(Application.ExeName)
        + 'Imagens\' + ACBrNFSe.Configuracoes.WebServices.xProvedor +
        '.jpg';

    ACBrNFSe.DANFSE.ExpandirLogoMarca := False;

    // Path para salvar os arquivos PDF
    ACBrNFSe.DANFSE.PathPDF := ACBrNFSe.Configuracoes.Geral.PathSalvar;
    ACBrNFSe.DANFSE.Sistema := Sistema;
  end;

  ACBrNFSe.Configuracoes.Geral.PathSchemas := ExtractFilePath
    (Application.ExeName) + 'Schemas\' +
    ACBrNFSe.Configuracoes.WebServices.xProvedor;

  Synchronize(Resume);
end;

destructor TNFSe.Destroy;
begin
ACBrNFSe.Free;
  inherited;
end;

procedure TNFSe.Execute;
begin
  inherited;
  try
    CoInitialize(nil);
    // Cria e envia a NFSe!
  finally
    CoUninitialize;
  end;
end;

Tipo, se for isso, já realizava isso todas as vezes, pois utilizo a thread para não travar a aplicação.

 

Realizando vários testes aqui, verifiquei que o problema não está no uso da thread não e sim na configuração: ACBrNFSe.Configuracoes.Certificados.Senha := SenhaCertificado;

 

Na primeira vez que crio o componente, seja vcl ou runtime, somente posso passar a propriedade ACBrNFSe.Configuracoes.Certificados.Senha na primeira vez, caso contrário, começa a dar o erro da criação do tópico e vários outros erros!

 

Sendo assim, somente passei esta propriedade na primeira criação da thread e funcionou perfeitamente.

 

Mais uma vez agradeço pela ajuda.

Editado por tiagoshimizu
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

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