Ir para conteúdo
  • Cadastre-se

dev botao

Erro Segunda Nfse


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

Recommended Posts

Postado (editado)

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
Postado

Bom dia Italo.

 

Obrigado pela resposta. Mas assim, utilizo o ACBrNFe em thread também e não tenho este problema. Existe alguma incompatibilidade do ACBrNFSe com a thread?

 

Obrigado.

  • Solution
Postado (editado)

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