Ir para conteúdo
  • Cadastre-se

dev botao

Acbrsat - Novo Componente


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

Recommended Posts

  • Moderadores

Pessoal,

Já estamos trabalhando num novo componente para compatibilizar o ACBr com o SAT Fiscal, fiz um post no meu blog explicando a idéia de como o componente irá funcionar - http://anfm.blogspot.com.br/2013/02/acbrsat-primeiros-passos-do-sat-cfe-com.html

  • Curtir 5
djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

Muito bom, começei a trabalhar com a DLL do SAT a pouco e tive alguns problemas.. nos primeiros testes que eu fiz, só consegui ter o retorno da DLL de forma legível quando delimitava o tamanho da variável STRING que recebia o retorno da DLL, algo do tipo Var strRetorno[200].

 

De que forma vcs estão tratando o retorno? Outra coisa, dando uma forçada na DLL eu observei que a calling convention da DLL é C, precisa do sinal "cdecl" ou vcs estão usando "stdcall"?

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Veja as declarações das funções do SAT em http://anfm.blogspot.com.br/2013/02/usando-dll-satdll-no-delphi.html

djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

  • Moderadores

Não sei o que pode estar de errado na sua aplicação, estou fazendo da seguinte forma:

var
  sessao : string;
  nSessao : Longint;
  codigoDeAtivacao: PChar;
begin
 sessao := RandomSessao;

 if not(InputQuery('SAT', 'Número da Sessão', sessao)) then
    exit;

 nSessao := StrToInt(sessao);
 codigoDeAtivacao := PChar(edtCodigoAtivacao.Text);
 mmResposta.Text := ConsultarStatusOperacional(nSessao,codigoDeAtivacao);
end;
djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

Comigo está ocorrendo o seguinte, com o código:

 

memo1.Text  := ConsultarSAT(GeraSessao);

 

O TMemo fica com a seguinte respota: "ㄱ㜷〴ぼ〸〰卼呁䌭敆攠灯牥捡潡簮|몭몭몭몭몭몭몭몭몭몭몭몭꯮ꮫꮫꮫﺫﻮ"

 

Mas com o código:

 

Var
  Resposta: String[200];
begin
  resposta := ConsultarSAT(GeraSessao);
  memo1.Text := resposta;
end; 

 

Consigo então ver normalmente a resposta: "76516|08000|SAT-CFe em operacao.||"

 

Neste teste usei as declarações que você postou, mas com as que eu mesmo escrevi anteriormente (basicamente a mesma coisa, só fiz carregamento dinâmico) deu o mesmo resultado.

 

Usando Delphi 2010 no Windows 7

 

Obs: GeraSessao é apenas uma função do tipo LongInt que gera o numero de sessão com sempre 6 dígitos (sei lá dessa DLL maluca):

 

Begin
  Randomize;
  result := RandomRange(100000, 999999);
end;
Link para o comentário
Compartilhar em outros sites

pAnsiChar() é uma solução, mas ao invés de converter a resposta, mudei a declaração de pChar pra pAnsiChar.

 

Declaração: 

 

function ConsultarSAT( numeroSessao : Longint ) : pAnsiChar ; cdecl; External 'SAT.DLL';

Uso:

 

memo1.Text := ConsultarSAT(GeraSessao);

Dessa forma funcionou normalmente.

 

A documentação da DLL é um tanto pobre. André, algum motivo em especial para você ter declarado a função como pChar?

Link para o comentário
Compartilhar em outros sites

  • Moderadores

A documentação da DLL é um tanto pobre. André, algum motivo em especial para você ter declarado a função como pChar?

Foi o jeito que consegui fazer funcionar no Delphi 7, como a documentação é pobre, fui na base de tentativa e erro.
djsystem-logo.png
 youtube.png facebook.png instagram.png linkedin.png
André Ferreira de Moraes | Analista de Sistemas
www.djsystem.com.br | www.djpdv.com.br
www.tefhouse.com.br | www.lambretinha.com.br
Link para o comentário
Compartilhar em outros sites

Então provavelmente é o velho problema de como delphi mais antigo e delphi Unicode tratam chars, pchars e strings.. pra que o componente final seja universal, e ter compatibilidade com delphi anterior ou posterior ao 2009, a declaração vai ter de ser tratada com sinais diretiva pro compilador.

Link para o comentário
Compartilhar em outros sites

HOMOLOGAÇÃO DO APLICATIVO COMERICIAL (AC)
P: O AC para o SAT precisa ser homologado? Existe algum roteiro ou órgão técnico credenciado? 
 
Diferentemente do PAF-ECF, não será necessário homologar o Aplicativo Comercial (AC) para o SAT. 
Haverá obrigações apenas quanto ao cadastramento da empresa desenvolvedora e dos AC junto ao 
fisco, porém não se tratará de homologação dos programas. Aguarde a publicação de legislação 
específica.
 
 
O PAF-ECF E O SAT
P: O PAF-ECF poderá ser utilizado com o SAT?
 
O equipamento SAT efetuará a geração do Cupom Fiscal Eletrônico-SAT, documento eletrônico que 
substitui o atual Cupom Fiscal, emitido pelo equipamento ECF.
Pela natureza do novo documento eletrônico e do equipamento SAT, não é possível que este trabalhe 
com o PAF-ECF, cujo objetivo é interagir com o ECF
Ressaltamos que o Estado de São Paulo nunca exigiu o uso do PAF-ECF junto com o ECF.
 
 
Para maiores informações, consulte sempre documentação oficial.
 
Dúvidas de desenvolvedores respondidas:
 
Dúvidas de contribuítes (quem vai usar o SAT) respondidas:
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • 3 semanas depois ...

Pessoal bom dia,

 

Acredito que já é de conhecimento de todos que haverá o SAT-ISS, aparelho específico para emissão de NFS-e no município de São Paulo.

Minha dúvida é a seguinte: seja o SAT-CFe ou mesmo os atuais ECFs, estes possuem aliquota para registro de serviços. Qual a diferente e a questão de obrigatoriedade entre o uso de ISS no ECF ou no SAT-CFe versus a nota de serviço NFS-e ou o SAT-ISS?

Link para o comentário
Compartilhar em outros sites

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