SAT-Fiscal a mistica está desvendada.

Fórum sobre desenvolvimento de software para atender as exigências da legislação fiscal e tributária (NFe, NFCe, NFSe, SPEED, Projeto ACBr, TEF, ECD, EFD, etc.)

Moderador: Moderadores

Avatar do usuário
paulovirt
Usuário Nível 2
Usuário Nível 2
Mensagens: 69
Registrado em: 29 Jan 2007 10:00
Contato:

SAT-Fiscal a mistica está desvendada.

Mensagem por paulovirt »

Caro Andril

...continuando a saga...

Dessa vez compilou de boa, porém na hora de executar, deu este erro:

Error BASE/1099 Argument error: HB_Pointer2String Arguments: ( [ 1] = Type: C Val [ 2] = Type: N Val: 1000)

Error at ...: HB_POINTER2STRING(0) in Module:
Called from : MAIN(37) in Module: ECF.PRG
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

SAT-Fiscal a mistica está desvendada.

Mensagem por alaminojunior »

Passou parâmetro incorreto para a função HB_PointerToString
Confere aí.
Você precisa passar para ela um inteiro que é o ponteiro com o endereço das informações.
Ele é o retorno de:

Código: Selecionar todos

DLLCall(h1,32,"ConsultarStatusOperacional",Random(), CCHAVE_SAT)
Você esqueceu de declarar uma variável para receber este retorno.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

SAT-Fiscal a mistica está desvendada.

Mensagem por Jairo Maia »

Olá alaminojunior,

Como você fez para gerar a chave de vinculação do software com certificado A3? Para certificado A1 o fabricante do Tanka disponibilizou um utilitário que faz isso (e serve para qualquer sat), mas quanto ao A3 você desenvolveu alguma coisa ou tem alguma dica?

Depois de tanta coisa agora só preciso resolver isso. Se você ou algum colega puder dar alguma dica seria uma coisa a mais solucionada.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

SAT-Fiscal a mistica está desvendada.

Mensagem por alaminojunior »

Nesse exato momento estou quase na cadeira do dentista, mas se não me engano existe um aplicativo no site da Tanca que faz isso, e é o que usamos.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

SAT-Fiscal a mistica está desvendada.

Mensagem por Jairo Maia »

Olá alaminojunior,

Obrigado por responder.

É que este aplicativo da Tanka (que tenho também) gera a chave somente com certificado A1. Estou precisando uma solução para certificado A3.

Valeu, obrigado. Vou continuar tentando.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

SAT-Fiscal a mistica está desvendada.

Mensagem por alaminojunior »

Me lembro que o nome tem algo a ver com Assinador ... , e funciona com A3
Amanhã no escritório te passo com exatidão.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
paulovirt
Usuário Nível 2
Usuário Nível 2
Mensagens: 69
Registrado em: 29 Jan 2007 10:00
Contato:

SAT-Fiscal a mistica está desvendada.

Mensagem por paulovirt »

Meus caros colegas
Finalmente, após a ajuda de vocês consegui montar o código que se comunica com o SAT e "trata" as respostas. Já efetuei alguns testes para este comando simples (status operacional) e todos deram certo, informando se carregou a DLL, qual resposta veio, etc.

Segue abaixo o código, caso alguém tenha interesse em utilizar ou mesmo melhorar. Está bem simples, sem recursos gráficos. Vou transferir em breve para o sistema principal, assim que terminar os testes e conseguir carregar o XML e enviar ao SAT, desafio este grandioso e que conto com a ajuda de vocês.

Código: Selecionar todos

Function Main()

*** CODIGO BASICO PARA TESTES COM SAT DA SWEDA
*** AUTOR: PAULO FARIAS
*** CONTRIBUICOES (VIA FORUM CLIPPER ONLINE)
                  ** ALAMINO JUNIOR
                  ** ROCHINHA
                  ** ANDRIL


Clear

#command DEFAULT  :=  [,  :=  ];
=> ;
          := IIF( = NIL, ,  ) ;
         [;  := IIF( = NIL, ,  ) ]



REQUEST HB_LANG_PT
REQUEST HB_CODEPAGE_PT850
REQUEST HB_CODEPAGE_PTISO

SET DATE BRITISH
SET ESCAPE ON
SET CENTURY ON
SET CURSOR ON
SET DELETE ON
SET WRAP ON
SET EPOCH TO 1954
SETCANCEL(.F.)

M->retorno:=""
M->h1:=""
M->cchave_sat:="container" // CHAVE DE ATIVACAO DO SAT

h1:=LoadLibrary("sat.dll") // CARREGAMENTO DA DLL SAT.DLL

If h1<=0
@ 01,01 Say "Sat.dll nao foi carregada"
Endif


@ 03,01 Say "Chave" get cchave_sat
Read

retorno:=DLLCall(h1,32,"ConsultarStatusOperacional",Random(), CCHAVE_SAT)
// COMANDO ENVIADO AO SAT


xRet:= HB_Pointer2String(retorno,1000)
// MONTA ARRAY COM INFORMACOES

xTxt:= StringToArray( trim(xRet), "|" )
// CONTRIBUICAO DO ROCHINHA


@ 10,01 say "RETORNO:"

If xTxt[2] != '10000'
// '10000' RESPOSTA COM SUCESSO


@ 10,01 Say (xTxt[3] + ' - ' + xTxt[2])
 inkey(0)
 return .F.
 
Else

@ 10,01 Say (xTxt[3] + ' - ' + xTxt[2])
 inkey(0)
 return .F.

Endif

if !empty(xTxt[5])
@ 01,01 Say (xTxt[5] + ' - ' + xTxt[4])
 inkey(0)
endif

@ 01,01 Say valtoprg(xTxt)
// MATRIZ COM INFORMACOES PERDIDAS


Return .T.




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

Function Random(nMaximo) // NUMERO RANDOMICO PARA OS COMANDOS

static nRandomico
local nTemporal
nMaximo = if(nMaximo == NIL, 65535, nMaximo)

If nRandomico == NIL
nRandomico = seconds()
Endif

nTemporal = (nRandomico * seconds()) % (nMaximo + 1)
nRandomico = (nTemporal + seconds() )
Return int(nTemporal)



***********************************************************************************************************************
Function StringToArray( cString, cSeparator ) 


LOCAL nPos, nCount:= 0
LOCAL aString := {} 
//DEFAULT cSeparator := ";"
****ALTERACAO AQUI****
cSeparator:=if(empty(cSeparator),";",cSeparator)
*****************************
cString := ALLTRIM( cString ) + cSeparator 

DO WHILE .T.
   nPos := AT( cSeparator, cString ) 
   IF nPos = 0 
      EXIT 
   ENDIF 
   AADD( aString, SUBSTR( cString, 1, nPos-1 ) ) 
   cString := SUBSTR( cString, nPos+1 ) 
   nCount ++
   if nCount = 5
*      hwg_processmessage()
      nCount = 0
   endif   
ENDDO 
RETURN ( aString ) 

***********************************************************************************************************************
casesistemas
Usuário Nível 1
Usuário Nível 1
Mensagens: 32
Registrado em: 04 Ago 2004 16:50
Localização: Campinas/SP
Contato:

SAT-Fiscal a mistica está desvendada.

Mensagem por casesistemas »

Bom Dia

Jairo

Usamos este para gerar a assinatura com A3

http://www.projetoacbr.com.br/forum/top ... s-a3-em-c/

Att

Joao Carlos
CASE Sistemas
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

SAT-Fiscal a mistica está desvendada.

Mensagem por Jairo Maia »

Olá casesistemas,

Muito obrigado pela dica. Usei o ACSN_AssinaSAT da ACSN e validou. Finalmente. Muito obrigado.
:-Y
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
betovsp
Usuário Nível 1
Usuário Nível 1
Mensagens: 4
Registrado em: 09 Set 2005 13:34

SAT-Fiscal a mistica está desvendada.

Mensagem por betovsp »

Bom dia.
Gostaria de pedir ajuda novamente aos amigos.
AlaminoJunior vc poderia me ajudar, vejo que você entende bastante de Cf-e SAT.

A única coisa que preciso é que vc verifique meu xml, pois a conexão com o SAT meu sistema já faz, mas retorna o erro na função EnviarDadosVenda():
(6010|1999|Rejeição:Erro não identificado), esse erro foi tirado do log do SAT Elgin.

Código: Selecionar todos

  <?xml version="1.0" encoding="UTF-8" ?> 
- <CFe>
- <infCFe versaoDadosEnt="0.06">
- <ide>
  <CNPJ>05009035000105</CNPJ> 
  <signAC>UXNfiCOIAZ2XfEgvppeeaEXeBB4smzAf2GeEjrbCy+2LwFnjn4nEv+tn2Sxp9j834r0aebXeP17XBcExSjCdy2O/OXopVOWSXz6eya9AVVb0AhT7IF+zT7URR2lYm8kOgQoYTbaP13iO2ba7kqO1LlB4WspF+TAYAmOmYOrwToQ8PmL3/lank86ZxMp6vOqOXLugrbO4umfS0btp7u+ZpVhSWCbkEHVI+N1ZL6S0iCABQG0WFyjTKjKViVloiZ/FKzkV14Jy2g66zE9/9o1mtJoGA0IKVtGOU4mwh1xAvZfIkiT/4hlsx4LzRrn1DKpMUsxEs6JF3XSSgNCbiuuzFA==</signAC> 
  <numeroCaixa>001</numeroCaixa> 
  </ide>
- <emit>
  <CNPJ>05009035000105</CNPJ> 
  <IE>582622325111</IE> 
  <indRatISSQN>N</indRatISSQN> 
  </emit>
- <dest>
  <CNPJ>14111050875</CNPJ> 
  <xNome>CONSUMIDOR FINAL</xNome> 
  </dest>
- <det nItem="1">
- <prod>
  <cProd>209115</cProd> 
  <xProd>VELA 14 DIAS</xProd> 
  <NCM>34060000</NCM> 
  <CFOP>5102</CFOP> 
  <uCom>UN</uCom> 
  <qCom>1.0000</qCom> 
  <vUnCom>12.00</vUnCom> 
  <indRegra>A</indRegra> 
  <vDesc>0.00</vDesc> 
  <vOutro>0.00</vOutro> 
  </prod>
- <imposto>
  <vItem12741>3.86</vItem12741> 
- <ICMS>
- <ICMSSN102>
  <Orig>0</Orig> 
  <CSOSN>102</CSOSN> 
  </ICMSSN102>
  </ICMS>
- <PIS>
- <PISSN>
  <CST>49</CST> 
  </PISSN>
  </PIS>
- <COFINS>
- <COFINSSN>
  <CST>49</CST> 
  </COFINSSN>
  </COFINS>
  </imposto>
  </det>
- <total>
  <vCFeLei12741>3.86</vCFeLei12741> 
  </total>
- <pgto>
- <MP>
  <cMP>01</cMP> 
  <vMP>12.00</vMP> 
  </MP>
  </pgto>
- <infAdic>
  <infCpl>Val. Aprox.Tributos:R$ 3.86 (32.20%)Fonte:IBPT</infCpl> 
  </infAdic>
  </infCFe>
  </CFe>
Abraços.

Beto
betovsp@hotmail.com
(16)9112-5798
FWH 9.08 @SAY Xharb 1.2.1
Ribeirão Preto/SP
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

SAT-Fiscal a mistica está desvendada.

Mensagem por alaminojunior »

A única coisa que preciso é que vc verifique meu xml
Beto, boa noite !

Confesso que olhei o seu XML, mas sinceramente ... rsrsrsrs é muita coisa para olhar, e meus lindos olhos castanhos podem me trair.
Recomendo sempre nestes casos, gerar o log do aparelho e visualiza-lo.
Ele lhe dará a resposta exata do que precisa tratar.

Boa sorte.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
rochinha
Administrador
Administrador
Mensagens: 4664
Registrado em: 18 Ago 2003 20:43
Localização: São Paulo - Brasil
Contato:

SAT-Fiscal a mistica está desvendada.

Mensagem por rochinha »

Amiguinhos,

Os erros desconhecidos são de dificil identificação, mas são relacionados a escrita errada de TAGs.

Exemplo se existir uma TAG chamada ORochinhaELegal e ela for formatada como ORochinhaeleGAL provoca o erro.
TAGs com campos numéricos exigem tamanhos de digitos de centavos especificos depois da virgula, conforme os manuais.
TAGs com ZERO, exemplo <vDESC>0</vDesc> nem são necessários mas causam erros.
Caracteres especiais no conteúdo também causam erros.
Existe um numero reduzido de CFOPs e CSTs/CSOSNs que podem ser usados, ou seja, estar contidos no XML.
OPS! LINK QUEBRADO? Veja ESTE TOPICO antes e caso não encontre ENVIE seu email com link do tópico para [url=mailto://fivolution@hotmail.com]fivolution@hotmail.com[/url]. Agradecido.

@braços : ? )

A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

SAT-Fiscal a mistica está desvendada.

Mensagem por alaminojunior »

Não sei qual a experiência dos colegas, mas venho sofrendo com um problema com arquivos XML´s maiores que 50 Kbytes.

O fluxo é o seguinte:

Eu monto o arquivo XML com aproximadamente uns 50 Kb, dependendo da quantidade de itens ;

Envio para o SAT, EnviarDadosVenda ;

Em seguida, pego o retorno deste método ;
Ex.
xRet:= HB_Pointer2String( retorno de EnviarDadosVenda , tamanho em nbytes ) esse último parâmetro é o bicho
Aqui já fica meio obscura a coisa, pois não dá para saber de antemão qual o tamanho da string que a função anterior retorna.
Com isso, eu faço um cálculo um tanto estrambólico tentando adivinhar esse tamanho. Pelo que vi, não pode ser menor e nem muito maior.

Neste ponto está o problema: pois se for um cupom com muitos itens (uns 100 aprox. que dá ~ 60 Kbytes) neste ponto o sistema trava, e deixa a tela toda esbranquiçada.

Esse método (HB_Pointer2String) retorna como eu disse, uma string (que preciso depois submeter ao StringToArray, para organizar os dados) um pouco maior que o XML de origem, pois o de retorno vem com outros campos e assinaturas, etc ...

Alguém faz ideia do que poderia ser ?
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Avatar do usuário
paulovirt
Usuário Nível 2
Usuário Nível 2
Mensagens: 69
Registrado em: 29 Jan 2007 10:00
Contato:

SAT-Fiscal a mistica está desvendada.

Mensagem por paulovirt »

Meus caros colegas
A batalha continua. Já consegui implementar as funções de teste do meu SAT graças a ajuda de vocês. Sem ela, nada teria acontecido.
Meu sistema já gera O XML da venda, porém estou em dúvida sobre onde ou como informar esse arquivo e enviá-lo ao SAT, conforme o exemplo abaixo:

Código: Selecionar todos

retorno:=DLLCall(h1,32,"EnviarDadosVenda",Random(), CCHAVE_SAT, dados)
Este exemplo peguei aqui mesmo no fórum, seguindo o que eu já vinha utilizado para outras funções. Porém, essa variável "dados", como posso informar o arquivo XML da venda por meio dela?
Avatar do usuário
alaminojunior
Colaborador
Colaborador
Mensagens: 1717
Registrado em: 16 Dez 2005 21:26
Localização: Ubatuba - SP

SAT-Fiscal a mistica está desvendada.

Mensagem por alaminojunior »

Bom dia !

O parâmetro 'dados' é o conteúdo do arquivo XML.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Responder