SAT-Fiscal a mistica está desvendada.
Moderador: Moderadores
SAT-Fiscal a mistica está desvendada.
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
...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
- alaminojunior
- Colaborador

- Mensagens: 1717
- Registrado em: 16 Dez 2005 21:26
- Localização: Ubatuba - SP
SAT-Fiscal a mistica está desvendada.
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:
Você esqueceu de declarar uma variável para receber este retorno.
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)Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
MySQL c/ SQLRDD
HwGui + GTWVG
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
SAT-Fiscal a mistica está desvendada.
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.
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)
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)
- alaminojunior
- Colaborador

- Mensagens: 1717
- Registrado em: 16 Dez 2005 21:26
- Localização: Ubatuba - SP
SAT-Fiscal a mistica está desvendada.
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
MySQL c/ SQLRDD
HwGui + GTWVG
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
SAT-Fiscal a mistica está desvendada.
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.
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)
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)
- alaminojunior
- Colaborador

- Mensagens: 1717
- Registrado em: 16 Dez 2005 21:26
- Localização: Ubatuba - SP
SAT-Fiscal a mistica está desvendada.
Me lembro que o nome tem algo a ver com Assinador ... , e funciona com A3
Amanhã no escritório te passo com exatidão.
Amanhã no escritório te passo com exatidão.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
MySQL c/ SQLRDD
HwGui + GTWVG
SAT-Fiscal a mistica está desvendada.
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.
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

- Mensagens: 32
- Registrado em: 04 Ago 2004 16:50
- Localização: Campinas/SP
- Contato:
SAT-Fiscal a mistica está desvendada.
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
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
- Jairo Maia
- Moderador
- Mensagens: 2785
- Registrado em: 16 Ago 2010 13:46
- Localização: Campinas-SP
SAT-Fiscal a mistica está desvendada.
Olá casesistemas,
Muito obrigado pela dica. Usei o ACSN_AssinaSAT da ACSN e validou. Finalmente. Muito obrigado.
:-Y
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)
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)
SAT-Fiscal a mistica está desvendada.
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.
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
Beto
betovsp@hotmail.com
(16)9112-5798
FWH 9.08 @SAY Xharb 1.2.1
Ribeirão Preto/SP
- alaminojunior
- Colaborador

- Mensagens: 1717
- Registrado em: 16 Dez 2005 21:26
- Localização: Ubatuba - SP
SAT-Fiscal a mistica está desvendada.
Beto, boa noite !A única coisa que preciso é que vc verifique meu xml
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
MySQL c/ SQLRDD
HwGui + GTWVG
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
SAT-Fiscal a mistica está desvendada.
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.
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.
@braços : ? )
A justiça divina tarda mas não falha, enquanto que a justiça dos homens falha porque tarda.
- alaminojunior
- Colaborador

- Mensagens: 1717
- Registrado em: 16 Dez 2005 21:26
- Localização: Ubatuba - SP
SAT-Fiscal a mistica está desvendada.
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 ?
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
MySQL c/ SQLRDD
HwGui + GTWVG
SAT-Fiscal a mistica está desvendada.
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:
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?
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)
- alaminojunior
- Colaborador

- Mensagens: 1717
- Registrado em: 16 Dez 2005 21:26
- Localização: Ubatuba - SP
SAT-Fiscal a mistica está desvendada.
Bom dia !
O parâmetro 'dados' é o conteúdo do arquivo XML.
O parâmetro 'dados' é o conteúdo do arquivo XML.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
MySQL c/ SQLRDD
HwGui + GTWVG
