SAT-Fiscal a mistica está desvendada.
Moderador: Moderadores
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
SAT-Fiscal a mistica está desvendada.
Amiguinho,
Minha opinião:
- utilizo hoje o AcBrEcfMonitor integrado ao sistema embora nenhum cliente use o módulo fiscal, sabem
se ele vai converter o método atual para emissão automática do cupom eletrônico?
Eu não uso o monitor, mas adaptei meu sistema para uso de OCX/DLL que me permitia o básico. Sem PAF. Mas "acho" que vi/li algo nas versões atuais do ECF Monitor relativo a isso. Inclusive já rola na internet download e código do DEMO do SAT-Fiscal, isto quer dizer que os testes iniciais são para a integração ao projeto ECF-Monitor.
- utilizo tambem o AcBrNfeMonitor, este já em produção, alguem sabe se através dele será possível
uso do SAT?
Não vejo ligação direta destes dois projetos tão distintos. Apesar de que as ultimas versões do SAT-Fiscal tenham começado a utilizar o XML, pode haver semelhança na programação. Se voce verificou meus posts relativos ao SAT-Fiscal deve ter encontrado ingredientes para esta portabilidade,
- qual fabricante de ECFs esta melhor preparado para a mudança, ou seja, que exigirá menos trabalho
por nossa parte.
DARUMA. Nesta é possivel apostar em produtos e suporte voltados para nos auxiliar.
Atualmente, meu sistema já agera o XML do SAT, apartir disso, qual seria o melhor caminho para implantar
o SAT
Verificando meus posts relativos voce já terá uma boa base, didática e codificada.
Minha opinião:
- utilizo hoje o AcBrEcfMonitor integrado ao sistema embora nenhum cliente use o módulo fiscal, sabem
se ele vai converter o método atual para emissão automática do cupom eletrônico?
Eu não uso o monitor, mas adaptei meu sistema para uso de OCX/DLL que me permitia o básico. Sem PAF. Mas "acho" que vi/li algo nas versões atuais do ECF Monitor relativo a isso. Inclusive já rola na internet download e código do DEMO do SAT-Fiscal, isto quer dizer que os testes iniciais são para a integração ao projeto ECF-Monitor.
- utilizo tambem o AcBrNfeMonitor, este já em produção, alguem sabe se através dele será possível
uso do SAT?
Não vejo ligação direta destes dois projetos tão distintos. Apesar de que as ultimas versões do SAT-Fiscal tenham começado a utilizar o XML, pode haver semelhança na programação. Se voce verificou meus posts relativos ao SAT-Fiscal deve ter encontrado ingredientes para esta portabilidade,
- qual fabricante de ECFs esta melhor preparado para a mudança, ou seja, que exigirá menos trabalho
por nossa parte.
DARUMA. Nesta é possivel apostar em produtos e suporte voltados para nos auxiliar.
Atualmente, meu sistema já agera o XML do SAT, apartir disso, qual seria o melhor caminho para implantar
o SAT
Verificando meus posts relativos voce já terá uma boa base, didática e codificada.
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.
SAT-Fiscal a mistica está desvendada.
Rochinha, obrigado pela resposta.
Baixei seus exemplos e esbarrei na compilação. Utilizo xHarbour Simplex 1.0.0 e não conheço muito bem como mexer com DLL, mais passei Sábado
lendo e procurando sobre as funções de dll no xHarbour.
Outra, no seu código tem #include "dll.ch", este arquivo não encontrei na pasta include do xHarbour. Talvez por isso, suas funções que iniciam com DLL32 não consigo compilar, dá esse erro:
xHarbour Compiler build 1.0.0 (SimpLex)
Copyright 1999-2007, http://www.xharbour.org http://www.harbour-project.org/
Compiling 'XSAT.PRG'...
♪XSAT.PRG(86) Error E0030 Syntax error: "syntax error at 'FUNCTION'"
♪100♪♪1 error
No code generated
Então mexi um pouco no código e passei a fazer a chamada direta às funções da SAT.DLL
Ou seja, não consigo obter o retorno das funções da DLL, a string formatada com "|" (pipe)
Notem que o parâmetro "1" no manual diz ser numérico, se deixo sem aspas da erro de runtime, então todos
os parâmetros númericos, estou colocando entre aspas e passa normal, pelo menos não da runtime.
Alguém teria alguma informação sobre isso?
Ate+
Baixei seus exemplos e esbarrei na compilação. Utilizo xHarbour Simplex 1.0.0 e não conheço muito bem como mexer com DLL, mais passei Sábado
lendo e procurando sobre as funções de dll no xHarbour.
Outra, no seu código tem #include "dll.ch", este arquivo não encontrei na pasta include do xHarbour. Talvez por isso, suas funções que iniciam com DLL32 não consigo compilar, dá esse erro:
xHarbour Compiler build 1.0.0 (SimpLex)
Copyright 1999-2007, http://www.xharbour.org http://www.harbour-project.org/
Compiling 'XSAT.PRG'...
♪XSAT.PRG(86) Error E0030 Syntax error: "syntax error at 'FUNCTION'"
♪100♪♪1 error
No code generated
Então mexi um pouco no código e passei a fazer a chamada direta às funções da SAT.DLL
Código: Selecionar todos
? "SAT.dll carregada",;
hACBrDLL:= LoadLibrary( "c:\SAT\SAT.DLL" ) // LoadLibrary LoadLib32
? "consultar se sat esta ativo"
B=DllCall(hACBrDLL,0x0020,"ConsultarSAT","335212")
? B (me retorna apenas um numero qualquer tipo 895400)
? "ativar sat"
A=DllCall(hACBrDll,0x0020,"AtivarSAT","1","12345678","11111111111111","35")
? A (me retorna apenas um numero qualquer tipo 895422)
Notem que o parâmetro "1" no manual diz ser numérico, se deixo sem aspas da erro de runtime, então todos
os parâmetros númericos, estou colocando entre aspas e passa normal, pelo menos não da runtime.
Alguém teria alguma informação sobre isso?
Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
SAT-Fiscal a mistica está desvendada.
Boa tarde
Pessoal, estou usando o exemplo do Rochinha. Já tentei com a versão antiga agora estou tentado com a versão 2.6.29 e nada. Não consigo nenhum retorno.
Voces conseguiram?
Tentamos em dois computadores: Um com "Windows Vista" e outro com "Windows 8 Pro"
O Compilador/Linkador que estamos usando é: "xHarbour 1.0.0 + BCC55 + FHW 808"
Obrigado
Marco
Pessoal, estou usando o exemplo do Rochinha. Já tentei com a versão antiga agora estou tentado com a versão 2.6.29 e nada. Não consigo nenhum retorno.
Voces conseguiram?
Tentamos em dois computadores: Um com "Windows Vista" e outro com "Windows 8 Pro"
O Compilador/Linkador que estamos usando é: "xHarbour 1.0.0 + BCC55 + FHW 808"
Obrigado
Marco
SAT-Fiscal a mistica está desvendada.
Outra coisa. Na versão antiga, fazendo uma venda pelo aplicativo comercial, no final esta venda era enviada para a impressora. Não esta mais imprimindo. Agora é assim mesmo?
- 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,
Fiz a instalação do a versão 2.6.29 e joguei a pasta SAT na raiz C:\.
Eis o código de um cupom enviado e validado:
Troquei CNPJ do emitente, coloquem um numero válido. O cupom foi enviado sem o conjunto Signature.
Não fiz testes com o AC portanto não sei dizer algo sobre a impressão.
Fiz a instalação do a versão 2.6.29 e joguei a pasta SAT na raiz C:\.
Eis o código de um cupom enviado e validado:
Código: Selecionar todos
<CFe>
<infCFe Id="CFe35140111111111111111599000001020000012229471" versao="0.03" versaoDadosEnt="1.00" versaoSB="000003">
<ide>
<cUF>35</cUF>
<cNF>222947</cNF>
<mod>59</mod>
<nserieSAT>900000102</nserieSAT>
<nCFe>000001</nCFe>
<dEmi>20140108</dEmi>
<hEmi>051009</hEmi>
<cDV>1</cDV>
<tpAmb>2</tpAmb>
<CNPJ>22222222222222</CNPJ>
<signAC>11111111111111222222222222221111111111111122222222222222111111111111112222222222222211111111111111222222222222221111111111111122222222222222111111111111112222222222222211111111111111222222222222221111111111111122222222222222111111111111112222222222222211111111111111222222222222221111111111111122222222222222111111111111112222222222222211111111</signAC>
<assinaturaQRCODE>XlmHqNiU1odjbVsolr84VtzkGDUCh8HllUI0OpVXYBIl6Lb3AXqpYEjrWvtqXatBRsJJfek/XpmssQn1dzkmY6fp8grNBTgcPylGdCX3mQAo3j9pG34PImCM7TYNPK+JeukhR4k/b+yx0Rs9BMUN7G/cLq0/5sFDCuH9s0h58ppBmQA6Prac3asWyjbxTbLcJTkG5+BxD/gK9st1mVhDbb9fJaXbCvoVXWRk3lWvUUsQGXUKhxEer86Ec7B7uj1jRjQ/idT7PxeDlw9N9ywTRht8/eBEOTcHq+BpkhVW/V7Ha/68VRy4tNgrC4cfQHLVZad5jodqP4gCkS0/0HUhPw==hygljwuohmmoewarfnmighlxzke7k2bjlto4sb2vltorgm26khhangknnfvpzydt5terudyw5vuvtzlhlqs3qrzvplfnlvw==</assinaturaQRCODE>
<numeroCaixa>001</numeroCaixa>
</ide>
<emit>
<CNPJ>11111111111111</CNPJ>
<xNome>Estabelecimento de Teste 2</xNome>
<xFant>Estabelecimento Fantasia 2</xFant>
<enderEmit>
<xLgr>rua das flores</xLgr>
<nro>1005</nro>
<xCpl>frente</xCpl>
<xBairro>centro</xBairro>
<xMun>Sao Paulo</xMun>
<CEP>00000000</CEP>
</enderEmit>
<IE>111111111111</IE>
<cRegTrib>3</cRegTrib>
<cRegTribISSQN>1</cRegTribISSQN>
<indRatISSQN>N</indRatISSQN>
</emit>
<dest>
<CNPJ>51098567000149</CNPJ>
<xNome>MADEIREX IND. E COM.LTDA</xNome>
</dest>
<det nItem="1">
<prod>
<cProd>AG80</cProd>
<xProd>AG80</xProd>
<CFOP>5101</CFOP>
<uCom>MT</uCom>
<qCom>1.0000</qCom>
<vUnCom>800.00</vUnCom>
<vProd>800.00</vProd>
<indRegra>A</indRegra>
<vItem>800.00</vItem>
</prod>
<imposto>
<ICMS>
<ICMS00>
<Orig>0</Orig>
<CST>00</CST>
<pICMS>18.00</pICMS>
<vICMS>144.00</vICMS>
</ICMS00>
</ICMS>
<PIS>
<PISAliq>
<CST>01</CST>
<vBC>800.00</vBC>
<pPIS>0.0065</pPIS>
<vPIS>5.20</vPIS>
</PISAliq>
</PIS>
<COFINS>
<COFINSAliq>
<CST>01</CST>
<vBC>800.00</vBC>
<pCOFINS>0.0300</pCOFINS>
<vCOFINS>24.00</vCOFINS>
</COFINSAliq>
</COFINS>
</imposto>
<infAdProd>Informacoes Adicionais do Produto</infAdProd>
</det>
<total>
<ICMSTot>
<vICMS>144.00</vICMS>
<vProd>800.00</vProd>
<vDesc>0.00</vDesc>
<vPIS>5.20</vPIS>
<vCOFINS>24.00</vCOFINS>
<vPISST>0.00</vPISST>
<vCOFINSST>0.00</vCOFINSST>
<vOutro>0.00</vOutro>
</ICMSTot>
<vCFe>800.00</vCFe>
<vCFeLei12741>0.00</vCFeLei12741>
</total>
<pgto>
<MP>
<cMP>01</cMP>
<vMP>800.00</vMP>
</MP>
<vTroco>0.00</vTroco>
</pgto>
<infAdic>
<infCpl></infCpl>
<obsFisco xCampo="null">
<xTexto>null</xTexto>
</obsFisco>
</infAdic>
</infCFe>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
<SignatureMethod Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
<Reference URI="#CFe35140111111111111111599000001020000012229471">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315"/>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
<DigestValue>8gpf+JjgHpU/6S/JZ57s00AXsfq7oTSYg/wUpl20hoQ=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>GqLphl9IYX3AOR37ebo4QdicKQYTxHEL8f3RsNPn56xc/LX0uiLEY6Kl41dFGIxVJ/Znumtpekoltas1XwiT2AVeWDg2ppmzJr41V0eReqedjFn57NGNkh7gwppzA3/G0NOo0XfFxePGf3TPrnHsJeFI6vmDjyVdxHTDFTet8/jhjOZlCfr4p0K0ePEHBDcLqSTMoeGt2fbLhWUXQgGCiW/mkCK9m9tBpCOIuNT5KNSkpBxo59/OPbTD3JW4TNWUrK/8/ik8DfILyN3mvGr/vBug2fzJOhUld9BpEm4PuGKVODLj3Cx5EOdlYg5GAcAK0hM357Tj46lWI8W0JMrFWg==</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>MIICyTCCAbGgAwIBAgIIUlXNWTlt+u8wDQYJKoZIhvcNAQELBQAwDjEMMAoGA1UEBhMDU0FUMB4XDTE0MDEwODA1MDEyNVoXDTE1MTIyOTA1MDEyNVowDjEMMAoGA1UECwwDU0FUMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoFEL0AaRSO04TMLTIK5NOTzb1elfF6ngO+ev6zLKtlvd73YX2lfd+B0k7rYXPCUs+CJEulZ3+IGNafUn1Juk7I6kK7yDTjN6gQ8mTHf9/U3f7BqMXtIHzUtVG39aOxu7E+ErqEOKJ+EHslEd0qNIpSVWtUinx/CSExG7pOfytVGqVzRTwiE4BZwytOzWj2O6466WoVddZ5zVI57nfgi82wFuAtDcO27fkLGPWQwvlwSH1ghievyuYj9vQKf5+wSCM4cxAe+70brWKodAIxwU6QP+lMGamt5aVACrx8KM5P/JQ92263T0nnoZxeazhic5jrFobS30HcrkBCk2j2fqhwIDAQABoyswKTAnBgNVHREEIDAeoBwGCCsGAQUFBwgFoBAMDnd3dy5zYXQuY29tLmJyMA0GCSqGSIb3DQEBCwUAA4IBAQAl9f5WAbDqCeNPJXZh7mvLDNJU80BpHOPP10jnGGnCjMcrrbKqHgvk6NEDfvAuyfQbIymMiUSr8UC3DoBsXMIr8VJz+zEjHgRw061Yr3fBJz+39V4Wwi8mLha50nQax3Y1xR5ENIz61rllvxd6Q1VCYfgsMLIMcn783GgqB3wmfZ8mNWULPCcMuKQ9OFlJphvvNiUGTRrT0GjOVKLFdC27El3if7IFNJysl51Xbe5vbrWM6GmrFi7uYBBx5HfsEeVX8PTR28DXnCJkmgtyqtLBFZ4CgbaQkGPK+XmYH8/R1HsBqifliAFiLZEcxU6Auly4IeBh2S82U3yUvT80mPLJ</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
</CFe>
Não fiz testes com o AC portanto não sei dizer algo sobre a impressão.
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.
SAT-Fiscal a mistica está desvendada.
Rochinha, não consigo se quer usar a SAT.DLL então não cheguei ao teste do xml.
Segui até seus exemplos e também não funcionou. Utilizo o mesma versão do emulador que a sua.
O que você usa xHarbour ou Harbour e qual versão?
Se possível poderia passar o script de no hbmake ou hbmk2?
Consigo linkar a SAT.DLL e fazer o ConsultarSAT, o emulador mostra INICIO CONSULTA e FIM CONSULTA, mais no meu aplicativo, não retorna a string que deveria retornar separada por pipe, retorna números aleatórios.
No seu exemplo voce criou um set de funções usando DLL32, não consegui utilizá-las por que ao compilar não aceita conforme coloquei no post acima.
Preciso conseguir passar desta fase para ai sim, ver o xml. Nunca utilizei DLL nos meus programas, talvez falte alguma declaração que passou despercebido.
Tenho xharbour 1.0.0 Simplex em um PC e Harbour 3.0 em outro se tiver algum script de linkagem para estas versões apenas para testar aqui, ficaria grato.
Ate+
Segui até seus exemplos e também não funcionou. Utilizo o mesma versão do emulador que a sua.
O que você usa xHarbour ou Harbour e qual versão?
Se possível poderia passar o script de no hbmake ou hbmk2?
Consigo linkar a SAT.DLL e fazer o ConsultarSAT, o emulador mostra INICIO CONSULTA e FIM CONSULTA, mais no meu aplicativo, não retorna a string que deveria retornar separada por pipe, retorna números aleatórios.
No seu exemplo voce criou um set de funções usando DLL32, não consegui utilizá-las por que ao compilar não aceita conforme coloquei no post acima.
Preciso conseguir passar desta fase para ai sim, ver o xml. Nunca utilizei DLL nos meus programas, talvez falte alguma declaração que passou despercebido.
Tenho xharbour 1.0.0 Simplex em um PC e Harbour 3.0 em outro se tiver algum script de linkagem para estas versões apenas para testar aqui, ficaria grato.
Ate+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / 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,
Segundo o seguinte codigo exemplo podemos ter uma base de como acessar funções de uma .DLL via função DLLCall()
No lugar de DC_CALL_STD pode-se usar o numero 32.
Eu não uso xHarbour e portanto não posso atestar o funcionamento desta função. No Harbour em conjunto com Fivewin a função que faz a ponte com .DLLs é chamada de CallDLL() onde DLLCall() é usada no xHarbour. Frescura pura.
Como no meu código faço uso do cabeçalho DLL.CH segue o conteúdo para se ter uma base, mas nada o impede de usar diretamente a função.
Perceba que no .CH se faz referência a CallDLL() e CallDLL32(), onde a segunda é usada para acesso em .DLLs 32 bits.
Caso queira, voce pode linkar a .LIB da .DLL em sua aplicação e chamá-la de outra forma. Para isto bastará usar o IMPLIB.EXE do Borland para criar a biblioteca.
IMPLIB sat.dll sat.lib
O número aleatório que voce esta visualizando é exatamente o número que vem no inicio do retorno, exemplo:
031538|04003|SAT-CFe já ativado||
Segundo o seguinte codigo exemplo podemos ter uma base de como acessar funções de uma .DLL via função DLLCall()
Código: Selecionar todos
#define DC_CALL_STD 0X0020
#define MAX_PATH 260
NDLL:=LoadLibrary("Daruma32.dll")
RET:= DllCall( NDLL, DC_CALL_STD, "Daruma_FI_AbrePortaSerial" )
IF RET#1
IF RET#(-27)
ALERT("Erro "+STR(RET)+" ao abrir porta de comunicacao")
ELSE
RETS:=RETERRO_DARUMA()
ALERT("Erro "+RETS+" ao abrir porta de comunicacao")
ENDIF
ENDIF
RET:= DllCall( NDLL, DC_CALL_STD, "Daruma_FIMFD_DownloadDaMFD","13/01/11","13/01/11")
IF RET#1
IF RET#(-27)
ALERT("Erro "+STR(RET)+" ao abrir cupom fiscal")
ELSE
RETS:=RETERRO_DARUMA()
ALERT("Erro "+RETS+" ao abrir cupom fiscal")
ENDIF
ENDIF
alert("arquivo gerado")
RET:= DllCall( NDLL, DC_CALL_STD, "Daruma_FI_FechaPortaSerial")
FreeLibrary(NDLL)
...
Eu não uso xHarbour e portanto não posso atestar o funcionamento desta função. No Harbour em conjunto com Fivewin a função que faz a ponte com .DLLs é chamada de CallDLL() onde DLLCall() é usada no xHarbour. Frescura pura.
Como no meu código faço uso do cabeçalho DLL.CH segue o conteúdo para se ter uma base, mas nada o impede de usar diretamente a função.
Código: Selecionar todos
// Copyright FiveTech 1993-03
#ifndef _DLL_CH
#define _DLL_CH
#ifndef _C_TYPES
#define _C_TYPES
#define VOID 0
#define BYTE 1
#define CHAR 2
#define WORD 3
#ifdef __CLIPPER__
#define _INT 4 // conflicts with Clipper Int()
#else
#define _INT 7
#endif
#define BOOL 5
#define HDC 6
#define LONG 7
#define STRING 8
#define LPSTR 9
#define PTR 10
#define _DOUBLE 11 // conflicts with BORDER DOUBLE
#define DWORD 12
#endif
#translate NOREF([@]<x>) => <x>
#ifndef __HARBOUR__
#ifndef __XPP__
#ifndef __CLIPPER__
#ifndef __C3__
#define __CLIPPER__
#endif
#endif
#endif
#endif
#ifndef __CLIPPER__
#translate DLL32 => DLL
#endif
//----------------------------------------------------------------------------//
#xcommand DLL [<static:STATIC>] FUNCTION <FuncName>( [ <uParam1> AS <type1> ] ;
[, <uParamN> AS <typeN> ] ) ;
AS <return> [<pascal:PASCAL>] [ FROM <SymName> ] LIB <*DllName*> ;
=> ;
[<static>] function <FuncName>( [NOREF(<uParam1>)] [,NOREF(<uParamN>)] ) ;;
local hDLL := If( ValType( <DllName> ) == "N", <DllName>, LoadLibrary( <(DllName)> ) ) ;;
local uResult ;;
local cFarProc ;;
if Abs( hDLL ) > 32 ;;
cFarProc = GetProcAddress( hDLL,;
If( [ Empty( <SymName> ) == ] .t., <(FuncName)>, <SymName> ),;
[<.pascal.>], <return> [,<type1>] [,<typeN>] ) ;;
uResult = CallDLL( cFarProc [,<uParam1>] [,<uParamN>] ) ;;
If( ValType( <DllName> ) == "N",, FreeLibrary( hDLL ) ) ;;
else ;;
MsgAlert( "Error code: " + LTrim( Str( hDLL ) ) + " loading " + ;
If( ValType( <DllName> ) == "C", <DllName>, Str( <DllName> ) ) ) ;;
end ;;
return uResult
//----------------------------------------------------------------------------//
#xcommand DLL32 [<static:STATIC>] FUNCTION <FuncName>( [ <uParam1> AS <type1> ] ;
[, <uParamN> AS <typeN> ] ) ;
AS <return> [<pascal:PASCAL>] [ FROM <SymName> ] LIB <*DllName*> ;
=> ;
[<static>] function <FuncName>( [NOREF(<uParam1>)] [,NOREF(<uParamN>)] ) ;;
local hDLL := If( ValType( <DllName> ) == "N", <DllName>, LoadLib32( <(DllName)> ) ) ;;
local uResult ;;
local cFarProc ;;
if Abs( hDLL ) <= 32 ;;
MsgAlert( "Error code: " + LTrim( Str( hDLL ) ) + " loading " + <DllName> ) ;;
else ;;
cFarProc = GetProc32( hDLL,;
If( [ Empty( <SymName> ) == ] .t., <(FuncName)>, <SymName> ),;
[<.pascal.>], <return> [,<type1>] [,<typeN>] ) ;;
uResult = CallDLL32( cFarProc [,<uParam1>] [,<uParamN>] ) ;;
If( ValType( <DllName> ) == "N",, FreeLib32( hDLL ) ) ;;
end ;;
return uResult
#define CTYPE_UNSIGNED_CHAR -1 // TCHAR, char, BCHAR, UCHAR
#define CTYPE_UNSIGNED_SHORT -2 // USHORT, WCHAR, WORD
#define CTYPE_UNSIGNED_INT -3 // UINT
#define CTYPE_UNSIGNED_LONG -4 // ULONG, DWORD, HANDLE, HICON, HBITMAP, HCURSOR, HBRUSH, COLORREF, HINSTANCE, HWND, HGLOBAL, HKEY
#define CTYPE_CHAR 1 // BYTE
#define CTYPE_SHORT 2 // SHORT
#define CTYPE_INT 3 // INT
#define CTYPE_LONG 4 // LONG
#define CTYPE_FLOAT 5 // FLOAT
#define CTYPE_DOUBLE 6 // DOUBLE
#define CTYPE_VOID 7 // VOID
#define CTYPE_BOOL 8 // BOOL
#define CTYPE_CHAR_POINTER 10 // LPTSTR, LPSTR, LPCSTR, LPCTSTR
#xcommand VDLL32 [<static:STATIC>] FUNCTION <FuncName>( [ <uParam1> AS <type1> ] ;
[, <uParamN> AS <typeN> ] ) ;
AS <return> [<pascal:PASCAL>] [ FROM <SymName> ] LIB <*DllName*> ;
=> ;
[<static>] function <FuncName>( [NOREF(<uParam1>)] [,NOREF(<uParamN>)] ) ;;
local hDLL := If( ValType( <DllName> ) == "N", <DllName>, LoadLib32( <(DllName)> ) ) ;;
local uResult ;;
local cFarProc ;;
if Abs( hDLL ) <= 32 ;;
MsgAlert( "Error code: " + LTrim( Str( hDLL ) ) + " loading " + <DllName> ) ;;
else ;;
cFarProc = GetProc32( hDLL,;
If( [ Empty( <SymName> ) == ] .t., <(FuncName)>, <SymName> ),;
[<.pascal.>], <return> [,<type1>] [,<typeN>] ) ;;
uResult = CallDLL32( cFarProc [,<uParam1>] [,<uParamN>] ) ;;
If( ValType( <DllName> ) == "N",, FreeLib32( hDLL ) ) ;;
end ;;
return uResult
#endif
//----------------------------------------------------------------------------//
Caso queira, voce pode linkar a .LIB da .DLL em sua aplicação e chamá-la de outra forma. Para isto bastará usar o IMPLIB.EXE do Borland para criar a biblioteca.
IMPLIB sat.dll sat.lib
O número aleatório que voce esta visualizando é exatamente o número que vem no inicio do retorno, exemplo:
031538|04003|SAT-CFe já ativado||
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.
- 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,
Pelo fato de voce ter de capturar a resposta e tratá-la sugiro que modifique as funções do meu set como segue o exemplo:
Set completo e renovado:
Pelo fato de voce ter de capturar a resposta e tratá-la sugiro que modifique as funções do meu set como segue o exemplo:
Código: Selecionar todos
Function ConsultarSAT( nSessionRandom )
// Consulta entre AC e Equipamento SAT
// numeroSessao - Número aleatório gerado pelo AC para controle da comunicação
cString := DllCall( hACBrDLL, 0x0020, "ConsultarSAT", nSessionRandom ) // SATConsultar( nSessionRandom )
aString := StringToArray( cString, "|" )
? cString
return iif(valtype(aString)#"A".or.len(aString)<1,{"0","","SAT-CFe: Sem Retorno","",""},aString)
Function AtivarSAT( numeroSessao, subComando, codigoDeAtivacao, CNPJ, cUF )
cString := DllCall( hACBrDll, 0x0020, "AtivarSAT", numeroSessao, subComando, codigoDeAtivacao, CNPJ, cUF ) // SATAtivar( numeroSessao, subComando, codigoDeAtivacao, CNPJ, cUF )
aString := StringToArray( cString, "|" )
? cString
return iif(valtype(aString)#"A".or.len(aString)<1,{"0","","SAT-CFe: Sem Retorno","",""},aString)
Código: Selecionar todos
Function ConsultarSAT( nSessionRandom )
// Consulta entre AC e Equipamento SAT
// numeroSessao - Número aleatório gerado pelo AC para controle da comunicação
cString := SATConsultar( nSessionRandom )
aString := StringToArray( cString, "|" )
? cString
return iif(valtype(aString)#"A".or.len(aString)<1,{"0","","SAT-CFe: Sem Retorno","",""},aString)
Function ConsultarStatusOperacionalSAT( nSessionRandom, codigoDeAtivacao )
// Consulta entre AC e Equipamento SAT
// numeroSessao - Número aleatório gerado pelo AC para controle da comunicação
cString := SATConsultarStatusOperacional( nSessionRandom, codigoDeAtivacao )
aString := StringToArray( cString, "|" )
? cString
return iif(valtype(aString)#"A".or.len(aString)<1,{"0","","SAT-CFe: Sem Retorno","",""},aString)
Function AtivarSAT( numeroSessao, subComando, codigoDeAtivacao, CNPJ, cUF )
cString := SATAtivar( numeroSessao, subComando, codigoDeAtivacao, CNPJ, cUF )
aString := StringToArray( cString, "|" )
? cString
return iif(valtype(aString)#"A".or.len(aString)<1,{"0","","SAT-CFe: Sem Retorno","",""},aString)
Function AssociarAssinaturaSAT( numeroSessao, codigoDeAtivacao, CNPJ, CNPJSH )
cString := SATAssociarAssinatura( numeroSessao, codigoDeAtivacao, CNPJ, CNPJSH )
aString := StringToArray( cString, "|" )
? cString
return iif(valtype(aString)#"A".or.len(aString)<1,{"0","","SAT-CFe: Sem Retorno","",""},aString)
Function DesligarSAT()
cString := SATDesligar()
aString := StringToArray( cString, "|" )
? cString
return iif(valtype(aString)#"A".or.len(aString)<1,{"0","","SAT-CFe: Sem Retorno","",""},aString)
Function ConsultarNumeroSessao( nSessionRandom, codigoAtivacao, numeroSessao )
// Consulta de número de sessão processada pelo Equipamento SAT
// numeroSessao - Número aleatório gerado pelo AC para controle da comunicação
// cNumeroDeSessao - Número de sessão a ser consultado no SAT-CF-e
cString := SATConsultarNumeroSessao( nSessionRandom, codigoAtivacao, numeroSessao )
aString := StringToArray( cString, "|" )
? cString
return iif(valtype(aString)#"A".or.len(aString)<1,{"0","","SAT-CFe: Sem Retorno","",""},aString)
Function TesteFimAFim( numeroSessao, codigoAtivacao, dados )
// Teste fim-a-fim de comunicação de venda (envio de dados para venda de teste).
cString := SATTesteFimAFim( numeroSessao, codigoAtivacao, dados )
aString := StringToArray( cString, "|" )
? cString
return iif(valtype(aString)#"A".or.len(aString)<1,{"0","","SAT-CFe: Sem Retorno","",""},aString)
Function EnviarDadosVenda( numeroSessao, codigoAtivacao, dados )
// Geração do Cupom de Venda
// numeroSessao - Número aleatório gerado pelo AC para controle da comunicação
// codigoDeAtivacao - senha definida pelo contribuinte no software de ativação.
// dadosVenda - refere-se aos dados de venda gerados pelo AC e utilizados para compor o CF-e-SAT.
cString := SATEnviarDadosVenda( numeroSessao, codigoAtivacao, dados )
aString := StringToArray( cString, "|" )
? cString
return iif(valtype(aString)#"A".or.len(aString)<1,{"0","","SAT-CFe: Sem Retorno","",""},aString)
Function CancelarUltimaVenda( numeroSessao, codigoAtivacao, chaveAcesso, dados )
// Cancelamento da última venda
// numeroSessao - Número aleatório gerado pelo AC para controle da comunicação e vendas
// codigoDeAtivacao - senha definida pelo contribuinte no software de ativação.
// chave - Chave de acesso do CF-e-SAT a ser cancelado
// dadosCancelamento - refere-se aos dados da venda gerados pelo AC e utilizados para compor o CF-e-SAT de cancelamento
cString := SATCancelarUltimaVenda( numeroSessao, codigoAtivacao, chaveAcesso, dados )
aString := StringToArray( cString, "|" )
? cString
return iif(valtype(aString)#"A".or.len(aString)<1,{"0","","SAT-CFe: Sem Retorno","",""},aString)
/* OK */ DLL32 FUNCTION SATConsultar( numeroSessao AS _INT ) AS STRING FROM "ConsultarSAT" LIB hSATDLL
/* OK */ DLL32 FUNCTION SATAtivar( numeroSessao AS _INT, subComando AS _INT, codigoDeAtivacao AS STRING, CNPJ AS STRING, cUF AS _INT ) AS STRING FROM "AtivarSAT" LIB hSATDLL
/* OK */ DLL32 FUNCTION SATAssociarAssinatura( numeroSessao AS _INT, codigoDeAtivacao AS STRING, CNPJ AS STRING, AssinaturaCNPJ AS STRING ) AS STRING FROM "AssociarAssinatura" LIB hSATDLL
/* OK */ DLL32 FUNCTION SATDesligar() AS STRING FROM "DesligarSAT" LIB hSATDLL
/* OK */ DLL32 FUNCTION SATConsultarNumeroSessao( getRandom AS _INT, codigoAtivacao AS STRING, numeroSessao AS STRING) AS STRING FROM "ConsultarNumeroSessao" LIB hSATDLL
/* OK */ DLL32 FUNCTION SATTesteFimAFim( numeroSessao AS _INT, codigoAtivacao AS STRING, dados AS STRING) AS STRING FROM "TesteFimAFim" LIB hSATDLL
/* OK */ DLL32 FUNCTION SATEnviarDadosVenda( numeroSessao AS _INT, codigoAtivacao AS STRING, dados AS STRING) AS STRING FROM "EnviarDadosVenda" LIB hSATDLL
/* OK */ DLL32 FUNCTION SATCancelarUltimaVenda( numeroSessao AS _INT, codigoAtivacao AS STRING, chaveAcesso AS STRING, dados AS STRING) AS STRING FROM "CancelarUltimaVenda" LIB hSATDLL
/* OK */ DLL32 FUNCTION SATConsultarStatusOperacional( numeroSessao AS _INT, codigoAtivacao AS STRING ) AS STRING FROM "ConsultarStatusOperacional" LIB hSATDLL
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.
SAT-Fiscal a mistica está desvendada.
Senhores,
Comecei hoje a desenvolver uma AC para o SAT e estou com dificuldades na instalação do emulador off line..
Solicito uma dica dos senhores, se é minha configuração ou o emulador off line está com problemas.
Emulador versão 2.6.29
Acontece que não consigo abrir o as opções do emulado off line (pág. 28 do manual)
Segue as configurações que eu tentei, se estou com algo erado por favor me digam:
Windows 7 64 bits
Java --> Tentei com as versões Java SE Runtime Environment 6u45 e com a 7
--> Tentei com uma VM do windows xp e Java SE Runtime Environment 6u45
Agradecido
Comecei hoje a desenvolver uma AC para o SAT e estou com dificuldades na instalação do emulador off line..
Solicito uma dica dos senhores, se é minha configuração ou o emulador off line está com problemas.
Emulador versão 2.6.29
Acontece que não consigo abrir o as opções do emulado off line (pág. 28 do manual)
Segue as configurações que eu tentei, se estou com algo erado por favor me digam:
Windows 7 64 bits
Java --> Tentei com as versões Java SE Runtime Environment 6u45 e com a 7
--> Tentei com uma VM do windows xp e Java SE Runtime Environment 6u45
Agradecido
- 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,
Na tela do emulador aparece algo como:
20140108194541|SAT|info|Iniciando Piloto SAT-CFe. v2.6.29
20140108194541|SAT|info|Carregando configuracoes iniciais.
20140108194541|SAT|info|Numero de Serie: 900000102
20140108194541|SAT|info|EMULADOR DO SAT OFF LINE
20140108194541|SAT|info|Debug ativado
20140108194541|SAT|info|Carregando parametrizacoes.
20140108194542|SAT|info|Sincronizando Relogio NTP.
20140108194542|SAT|info|Aguardando Comunicacao.
Se estiver assim já está pronto para receber comandos. O Segundo passo é rodar o Ativador e seguir as instruções do manual ou da uma olhada a seguir:
Leia_Esta_Dica.rtf
Na tela do emulador aparece algo como:
20140108194541|SAT|info|Iniciando Piloto SAT-CFe. v2.6.29
20140108194541|SAT|info|Carregando configuracoes iniciais.
20140108194541|SAT|info|Numero de Serie: 900000102
20140108194541|SAT|info|EMULADOR DO SAT OFF LINE
20140108194541|SAT|info|Debug ativado
20140108194541|SAT|info|Carregando parametrizacoes.
20140108194542|SAT|info|Sincronizando Relogio NTP.
20140108194542|SAT|info|Aguardando Comunicacao.
Se estiver assim já está pronto para receber comandos. O Segundo passo é rodar o Ativador e seguir as instruções do manual ou da uma olhada a seguir:
Leia_Esta_Dica.rtf
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.
SAT-Fiscal a mistica está desvendada.
Segundo o help do xHarbour, DllCall() deve ser utilizada para uma DLL criada fora da linguagem e CallDll() quando a DLL for criada com o xHarbour, pelo menos entendi isso, até criei uma Dll de teste e funcionou com CallDll() até porque o método de carregamento é diferente LoadDll(), já DllCall utiliza o LoadLibrary().rochinha escreveu:No Harbour em conjunto com Fivewin a função que faz a ponte com .DLLs é chamada de CallDLL() onde DLLCall() é usada no xHarbour. Frescura pura.
De qualquer forma, já tentei de todas as formas sem êxito. Agora que voce postou o arquivo .CH com as convenções DLL32 vou fazer os testes novamente.
Agradeço a atenção.
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
SAT-Fiscal a mistica está desvendada.
Hoje instalei a versao 2.7.7. Seguindo o manual de instalação, quando faço a troca do código de ativação e logo após o atualizar SAT, da o seguinte erro
[2014-01-21 16:50:21.032]:INICIO TROCAR CODIGO ATIVACAO
[2014-01-21 16:50:21.062]:FIM TROCAR CODIGO ATIVACAO
[2014-01-21 16:50:32.388]:ERRO NA Atualizacao, Codigo de ativacao invalido.
Se não faço a troca de código de ativação, quando Atualizo SAT da Erro na Atualização
Ta difícil
[2014-01-21 16:50:21.032]:INICIO TROCAR CODIGO ATIVACAO
[2014-01-21 16:50:21.062]:FIM TROCAR CODIGO ATIVACAO
[2014-01-21 16:50:32.388]:ERRO NA Atualizacao, Codigo de ativacao invalido.
Se não faço a troca de código de ativação, quando Atualizo SAT da Erro na Atualização
Ta difícil
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
SAT-Fiscal a mistica está desvendada.
Amiguinho,
Conforme o manual o código de ativação deve possuir 6 digitos, sendo 123123 ou 123456.
Por se tratar de um emulador, em fase de manutenção, os contornos de problemas devem estar sendo arredondados.
Num equipamento real, erros de ocorrerem serão mais do nosso código que do próprio aparelho.
Conforme o manual o código de ativação deve possuir 6 digitos, sendo 123123 ou 123456.
Por se tratar de um emulador, em fase de manutenção, os contornos de problemas devem estar sendo arredondados.
Num equipamento real, erros de ocorrerem serão mais do nosso código que do próprio aparelho.
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.
SAT-Fiscal a mistica está desvendada.
Rochinha
Obrigado pela atenção
Mas na última versão do Manual do Emulador na pagina 37 diz o seguinte:
"Código de ativação: Senha definida pelo contribuinte no Software de ativação do equipamento SAT. Deverá possuir um mínimo de 8 e um máximo de 32 caracteres alfanuméricos."
Obrigado
Obrigado pela atenção
Mas na última versão do Manual do Emulador na pagina 37 diz o seguinte:
"Código de ativação: Senha definida pelo contribuinte no Software de ativação do equipamento SAT. Deverá possuir um mínimo de 8 e um máximo de 32 caracteres alfanuméricos."
Obrigado
- rochinha
- Administrador

- Mensagens: 4664
- Registrado em: 18 Ago 2003 20:43
- Localização: São Paulo - Brasil
- Contato:
SAT-Fiscal a mistica está desvendada.
Amiguinho,
Esta linha se refere a senha para uso com equipamento e não emulador. Para uso com emulador as senhas de teste são 123456 ou 123123 e CNPJs são sequencias de 1 para contribuinte e 2 para software-house.
Esta linha se refere a senha para uso com equipamento e não emulador. Para uso com emulador as senhas de teste são 123456 ou 123123 e CNPJs são sequencias de 1 para contribuinte e 2 para software-house.
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.

