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

Diego Papale
Usuário Nível 1
Usuário Nível 1
Mensagens: 9
Registrado em: 11 Mar 2016 09:21
Localização: Marília/SP

SAT-Fiscal a mistica está desvendada.

Mensagem por Diego Papale »

Boa tarde, eu utilizo a linha:

aString:= HB_ATOKENS(cString, [|])

com colchetes mesmo no meu sistema e está funcionando corretamente.
xHarbour 1.2.1 / Borland C++ Compiler 5.5 / MySQL
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á Pessoal,

Diego Papale, seja Bem Vindo ao Fórum.

Pessoal, uma string pode ser definida entre: aspas simples, aspas duplas ou colchetes:

Código: Selecionar todos

?
? [Teste de string]
? 'Teste de string'
? "Teste de string"
?
? ['Teste de string']    // retorna: 'Teste de string'
? "Teste [de] string"    // retorna: Teste [de] string
? ['Teste "de" string']  // retorna: 'Teste "de" string'
?
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 »

Jairo Maia escreveu:Pessoal, uma string pode ser definida entre: aspas simples, aspas duplas ou colchetes:
Pelo menos é o que se espera né !?
:%
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Edvaldo
Usuário Nível 1
Usuário Nível 1
Mensagens: 32
Registrado em: 17 Fev 2016 12:09
Localização: ubatuba

SAT-Fiscal a mistica está desvendada.

Mensagem por Edvaldo »

Ok amigos acho que me expressei mal: o erro não está na string pelo que percebi e sim na função em C me parece:
HB_FUNC( SATCONSULTAR )
{
HINSTANCE handle = LoadLibrary("sat.dll");

if (handle)
{
_CONSULTARSAT pFunc;
pFunc = (_CONSULTARSAT) GetProcAddress(handle, "ConsultarSAT");
hb_retc( ( LPSTR ) pFunc(hb_parni(1)) );
FreeLibrary( handle );
}
}
Uma vez que após a execução o controle do programa não retorna ao comando que fez esta chamada, simplesmente dá como programa executado sem dar continuidade a linha de programação que é:
Local cString:= SATCONSULTAR(Random()), aString:= HB_ATOKENS(cString, [|]). Só foi executado a primeira parte:
Local cString:= SATCONSULTAR(Random()) fica faltando executar: aString:= HB_ATOKENS(cString, [|])
Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

SAT-Fiscal a mistica está desvendada.

Mensagem por Claudio Soto »

Probar colocar en el codigo un
if(pFunc)
Antes ( de llamar la funcion) del hb_retc
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
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 »

Amiguinhos ...

Tivemos a sorte de eu ter pego neste exato momento um SAT Sweda de um cliente que chegou para liberação.

Fiz os testes conforme os últimos exemplos, e pelo menos a função CONSULTARSAT produziu o efeito esperado.

Vou tentar reproduzir uma venda para ver que tipo de retorno ele nos dá.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Edvaldo
Usuário Nível 1
Usuário Nível 1
Mensagens: 32
Registrado em: 17 Fev 2016 12:09
Localização: ubatuba

SAT-Fiscal a mistica está desvendada.

Mensagem por Edvaldo »

Ok, inseri o if (pFunc) e continua o mesmo problema.
HB_FUNC( SATCONSULTAR )
{
HINSTANCE handle = LoadLibrary("sat.dll");

if (handle)
{
_CONSULTARSAT pFunc;
pFunc = (_CONSULTARSAT) GetProcAddress(handle, "ConsultarSAT");
if (pFunc)
hb_retc( ( LPSTR ) pFunc(hb_parni(1)) );
FreeLibrary( handle );
}
}
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 »

Edvaldo, pode retirar este trecho citado no post anterior.
O que ocorre é, como você mesmo percebeu, o SAT recebe a solicitação e devolve. Porém você não consegue visualizar pois não está implementado de maneira que o faça.

Experimente

Código: Selecionar todos

Function ConsultarSAT()
Local cString:= SATCONSULTAR(Random()), aString:= HB_ATOKENS(cString, [|])

msginfo( cString ) // com hwgui
ou
alert( cString ) // console

Return (Iif(Valtype(aString) # [A] .or. len(aString) < 1, {[0], [], [SAT-CFe: Sem Retorno], [], []}, aString))
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
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 »

Senhores, alterei todas as minhas rotinas SAT que utilizavam chamadas com DllCall() para chamadas em C
Nos testes que fiz, rodou muito bem. Creio até que mais redondo, mais rápido.
Preparando novas versões aqui para colocar em produção.

Obrigado Rochinha e demais colegas.
Compilador xHarbour 1.2.3 + Embarcadero C++ 7.30
MySQL c/ SQLRDD
HwGui + GTWVG
Edvaldo
Usuário Nível 1
Usuário Nível 1
Mensagens: 32
Registrado em: 17 Fev 2016 12:09
Localização: ubatuba

SAT-Fiscal a mistica está desvendada.

Mensagem por Edvaldo »

Ok, fiz a alteração, mas como eu disse anteriormente o programa não chega a executar as linhas msginfo(cstring),alert(cstring) e nem mesmo aString:= HB_ATOKENS(cString, [|])
Após executar Local cString:= SATCONSULTAR(Random()) ele sai pro dos como seja tivesse terminado e sem dar nenhuma mensagem de erro;
Function ConsultarSAT()
Local cString:= SATCONSULTAR(Random()), aString:= HB_ATOKENS(cString, [|])

msginfo(cString)
Alert(cString)

Return (Iif(Valtype(aString) # [A] .or. len(aString) < 1, {[0], [], [SAT-CFe: Sem Retorno], [], []}, aString))
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,

edvaldo
Você está encontrando muito dificuldade num só trecho. A afinidade com linguagens exigem que tomemos medidas mais drásticas.
Faça assim:

Código: Selecionar todos

Function ConsultarSAT()
Local cString
Local aString

cString:= SATCONSULTAR(Random())

msginfo( cString ) // com hwgui
ou
alert( cString ) // console

aString:= HB_ATOKENS(cString, [|])

msginfo( str(len( aString )) ) // com hwgui
ou
alert( str(len( aString )) ) // console

Return (Iif(Valtype(aString) # [A] .or. len(aString) < 1, {[0], [], [SAT-CFe: Sem Retorno], [], []}, aString))
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.
Edvaldo
Usuário Nível 1
Usuário Nível 1
Mensagens: 32
Registrado em: 17 Fev 2016 12:09
Localização: ubatuba

SAT-Fiscal a mistica está desvendada.

Mensagem por Edvaldo »

Ok, pra tirar a dúvida fiz a alteração mas o erro não está nesta rotina e sim na rotina em C. Continua comunicando normal porém como cString:= SATCONSULTAR(Random()) é a chamada a rotina em C o programa executa até esta linha e sai para o prompt de comando sem erros.

Function ConsultarSAT()
Local cString
Local aString

cString:= SATCONSULTAR(Random())

msginfo( cString ) // com hwgui
*ou
alert( cString ) // console

aString:= HB_ATOKENS(cString, [|])

msginfo( str(len( aString )) ) // com hwgui
*ou
alert( str(len( aString )) ) // console

Return (Iif(Valtype(aString) # [A] .or. len(aString) < 1, {[0], [], [SAT-CFe: Sem Retorno], [], []}, aString))
Claudio Soto
Colaborador
Colaborador
Mensagens: 566
Registrado em: 27 Ago 2012 12:31
Localização: Uruguay
Contato:

SAT-Fiscal a mistica está desvendada.

Mensagem por Claudio Soto »

Edvaldo escreveu:Ok, inseri o if (pFunc) e continua o mesmo problema.
HB_FUNC( SATCONSULTAR )
{
HINSTANCE handle = LoadLibrary("sat.dll");

if (handle)
{
_CONSULTARSAT pFunc;
pFunc = (_CONSULTARSAT) GetProcAddress(handle, "ConsultarSAT");
if (pFunc)
hb_retc( ( LPSTR ) pFunc(hb_parni(1)) );
FreeLibrary( handle );
}
}
Podrías postear como esta difinido: _CONSULTARSAT, es una función definida como __cdecl o __stdcall ?
Saludos.
Dr. Claudio Soto
(Uruguay)
http://srvet.blogspot.com
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,

Claudio Soto
Mira aca

Necesito conseguir un resultado que es una cadena en el formato string, "numeroSessao|EEEEE|mensagem|cod|mensagemSEFAZ", que se muestra en la 185 de la página del manual sobre el enlace para Inves sin embargo para obtener una string está trayendo un puntero.
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.
Edvaldo
Usuário Nível 1
Usuário Nível 1
Mensagens: 32
Registrado em: 17 Fev 2016 12:09
Localização: ubatuba

SAT-Fiscal a mistica está desvendada.

Mensagem por Edvaldo »

Ok, peguei o exemplo aqui mesmo na pagina 15 e não mudei nada.

***********************************************************************************
* Chamadas para DLL Funções de manipulação do cupom fiscal eletrônico Sweda
***********************************************************************************

#include "fivewin.ch"


Function Main()
local xRet:=Consultarsat()
?"Resposta",xRet
Return Nil

Function EnviarDadosVenda(nNumeroSessao, cCodigoAtivacao, cDados)
Local cString:= SATENVIARDADOSVENDA(nNumeroSessao, cCodigoAtivacao, cDados), aString:= HB_ATOKENS(cString, [|])
Return (Iif(Valtype(aString) # [A] .or. len(aString) < 1, {[0], [], [SAT-CFe: Sem Retorno], [], []}, aString))

Function ConsultarSAT()
Local cString
Local aString

cString:= SATCONSULTAR(Random())

msginfo( cString ) // com hwgui
*ou
alert( cString ) // console

aString:= HB_ATOKENS(cString, [|])

msginfo( str(len( aString )) ) // com hwgui
*ou
alert( str(len( aString )) ) // console

Return (Iif(Valtype(aString) # [A] .or. len(aString) < 1, {[0], [], [SAT-CFe: Sem Retorno], [], []}, aString))

*Function ConsultarSAT()
*Local cString:= SATCONSULTAR(Random()), aString:= HB_ATOKENS(cString, [|])
*msginfo(cString)
*Alert(cString)
*Return (Iif(Valtype(aString) # [A] .or. len(aString) < 1, {[0], [], [SAT-CFe: Sem Retorno], [], []}, aString))


*Function ConsultarSAT()
* Local cString:= SATCONSULTAR(Random()), aString:= HB_ATOKENS(cString, [|])
* Return (Iif(Valtype(aString) # [A] .or. len(aString) < 1, {[0], [], [SAT-CFe: Sem Retorno], [], []}, aString))

Function ConsultarStatusOperacionalSAT(nNumeroSessao, cCodigoAtivacao)
Local cString:= SATCONSULTARSTATUSOPERACIONAL(nNumeroSessao, cCodigoAtivacao), aString:= HB_ATOKENS(cString, [|])
Return (Iif(Valtype(aString) # [A] .or. len(aString) < 1, {[0], [], [SAT-CFe: Sem Retorno], [], []}, aString))

Function AtivarSAT(nNumeroSessao, subComando, cCodigoAtivacao, CNPJ, cUF)
Local cString:= SATATIVAR(nNumeroSessao, subComando, cCodigoAtivacao, CNPJ, cUF), aString:= HB_ATOKENS(cString, [|])
Return (Iif(Valtype(aString) # [A] .or. len(aString) < 1, {[0], [], [SAT-CFe: Sem Retorno], [], []}, aString))

Function AssociarAssinaturaSAT(nNumeroSessao, cCodigoAtivacao, CNPJ, CNPJSH )
Local cString:= SATASSOCIARASSINATURA(nNumeroSessao, cCodigoAtivacao, CNPJ, CNPJSH), aString:= HB_ATOKENS(cString, [|])
Return (Iif(Valtype(aString) # [A] .or. len(aString) < 1, {[0], [], [SAT-CFe: Sem Retorno], [], []}, aString))

Function ConsultarNumeroSessao(nNumeroSessao, cCodigoAtivacao, nNumeroSessao2)
Local cString:= SATCONSULTARNUMEROSESSAO(nNumeroSessao, cCodigoAtivacao,nNumeroSessao2), aString:= HB_ATOKENS(cString, [|])
Return (Iif(Valtype(aString) # [A] .or. len(aString) < 1, {[0], [], [SAT-CFe: Sem Retorno], [], []}, aString))

Function TesteFimAFim(nNumeroSessao, cCodigoAtivacao, cDados)
Local cString := SATTESTEFIMAFIM(nNumeroSessao, cCodigoAtivacao, cDados), aString:= HB_ATOKENS(cString, [|])
Return (Iif(Valtype(aString) # [A] .or. len(aString) < 1, {[0], [], [SAT-CFe: Sem Retorno], [], []}, aString))

Function CancelarUltimaVenda(nNumeroSessao, cCodigoAtivacao, chaveAcesso, cDados)
Local cString:= SATCANCELARULTIMAVENDA(nNumeroSessao, cCodigoAtivacao, chaveAcesso, cDados), aString:= HB_ATOKENS(cString, [|])
Return (Iif(Valtype(aString) # [A] .or. len(aString) < 1, {[0], [], [SAT-CFe: Sem Retorno], [], []}, aString))

Function ExtrairLogsSAT(nNumeroSessao, cCodigoAtivacao)
Local cString:= SATEXTRAIRLOGS(nNumeroSessao, cCodigoAtivacao), aString:= HB_ATOKENS(cString, [|])
Return (Iif(Valtype(aString) # [A] .or. len(aString) < 1, {[0], [], [SAT-CFe: Sem Retorno], [], []}, aString))

#pragma BEGINDUMP

#include "hbapi.h"
#include "windows.h"

typedef LPSTR (WINAPI *_CONSULTARSAT) ( INT nRandom );
typedef LPSTR (WINAPI *_ATIVARSAT) ( INT nRandom, INT nSubComando , LPSTR cCodAtivacao, LPSTR cCNPJ, INT nUF );
typedef LPSTR (WINAPI *_ASSOCIARASSINATURASAT) ( INT nRandom, LPSTR cCodAtivacao, LPSTR cCNPJ, LPSTR cAssCNPJ );
typedef LPSTR (WINAPI *_CONSULTARSECAOSAT) ( INT nRandom, LPSTR cCodAtivacao, LPSTR cNumSecao );
typedef LPSTR (WINAPI *_TESTEFIMAFIMSAT) ( INT nRandom, LPSTR cCodAtivacao, LPSTR cDadosVenda);
typedef LPSTR (WINAPI *_ENVIARVENDASAT) ( INT nRandom, LPSTR cCodAtivacao, LPSTR cDadosVenda);
typedef LPSTR (WINAPI *_CANULTIMAVENDASAT) ( INT nRandom, LPSTR cCodAtivacao, LPSTR cChave, LPSTR cDadosVenda);
typedef LPSTR (WINAPI *_CONSULTARSTATUSSAT) ( INT nRandom, LPSTR cCodAtivacao);
typedef LPSTR (WINAPI *_ATUALIZARSOFTWARE) ( INT nRandom, LPSTR cCodAtivacao);
typedef LPSTR (WINAPI *_EXTRAIRLOGS) ( INT nRandom, LPSTR cCodAtivacao);

HB_FUNC( SATCONSULTAR )
{
HINSTANCE handle = LoadLibrary("sat.dll");

if (handle)
{
_CONSULTARSAT pFunc;
pFunc = (_CONSULTARSAT) GetProcAddress(handle, "ConsultarSAT");
hb_retc( ( LPSTR ) pFunc(hb_parni(1)) );
FreeLibrary( handle );
}
}

HB_FUNC( SATATIVAR )
{
HINSTANCE handle = LoadLibrary("sat.dll");

if (handle)
{
_ATIVARSAT pFunc;
pFunc = (_ATIVARSAT) GetProcAddress(handle, "AtivarSAT");
hb_retc( ( LPSTR ) pFunc(hb_parni(1), hb_parni(2), hb_parc(3), hb_parc(4), hb_parni(5)) );
FreeLibrary( handle );
}
}

HB_FUNC( SATASSOCIARASSINATURA )
{
HINSTANCE handle = LoadLibrary("sat.dll");

if (handle)
{
_ASSOCIARASSINATURASAT pFunc;
pFunc = (_ASSOCIARASSINATURASAT) GetProcAddress(handle, "AssociarAssinatura");
hb_retc( ( LPSTR ) pFunc(hb_parni(1), hb_parc(2), hb_parc(3), hb_parc(4)) );
FreeLibrary( handle );
}
}

HB_FUNC( SATCONSULTARNUMEROSESSAO )
{
HINSTANCE handle = LoadLibrary("sat.dll");

if (handle)
{
_CONSULTARSECAOSAT pFunc;
pFunc = (_CONSULTARSECAOSAT) GetProcAddress(handle, "ConsultarNumeroSessao");
hb_retc( ( LPSTR ) pFunc(hb_parni(1), hb_parc(2), hb_parc(3)) );
FreeLibrary( handle );
}
}

HB_FUNC( SATTESTEFIMAFIM )
{
HINSTANCE handle = LoadLibrary("sat.dll");

if (handle)
{
_TESTEFIMAFIMSAT pFunc;
pFunc = (_TESTEFIMAFIMSAT) GetProcAddress(handle, "TesteFimAFim");
hb_retc( ( LPSTR ) pFunc(hb_parni(1), hb_parc(2), hb_parc(3)) );
FreeLibrary( handle );
}
}

HB_FUNC( SATENVIARDADOSVENDA )
{
HINSTANCE handle = LoadLibrary("sat.dll");

if (handle)
{
_ENVIARVENDASAT pFunc;
pFunc = (_ENVIARVENDASAT) GetProcAddress(handle, "EnviarDadosVenda");
hb_retc( ( LPSTR ) pFunc(hb_parni(1), hb_parc(2), hb_parc(3)) );
FreeLibrary( handle );
}
}
HB_FUNC( SATCANCELARULTIMAVENDA )
{
HINSTANCE handle = LoadLibrary("sat.dll");

if (handle)
{
_CANULTIMAVENDASAT pFunc;
pFunc = (_CANULTIMAVENDASAT) GetProcAddress(handle, "CancelarUltimaVenda");
hb_retc( ( LPSTR ) pFunc(hb_parni(1), hb_parc(2), hb_parc(3), hb_parc(4)) );
FreeLibrary( handle );
}
}

HB_FUNC( SATCONSULTARSTATUSOPERACIONAL )
{
HINSTANCE handle = LoadLibrary("sat.dll");

if (handle)
{
_CONSULTARSTATUSSAT pFunc;
pFunc = (_CONSULTARSTATUSSAT) GetProcAddress(handle, "ConsultarStatusOperacional");
hb_retc( ( LPSTR ) pFunc(hb_parni(1), hb_parc(2)) );
FreeLibrary( handle );
}
}

HB_FUNC( SATATUALIZARSOFTWARE )
{
HINSTANCE handle = LoadLibrary("sat.dll");

if (handle)
{
_ATUALIZARSOFTWARE pFunc;
pFunc = (_ATUALIZARSOFTWARE) GetProcAddress(handle, "AtualizarSoftwareSAT");
hb_retc( ( LPSTR ) pFunc(hb_parni(1), hb_parc(2)) );
FreeLibrary( handle );
}
}

HB_FUNC( SATEXTRAIRLOGS )
{
HINSTANCE handle = LoadLibrary("sat.dll");

if (handle)
{
_EXTRAIRLOGS pFunc;
pFunc = (_EXTRAIRLOGS) GetProcAddress(handle, "ExtrairLogs");
hb_retc( ( LPSTR ) pFunc(hb_parni(1), hb_parc(2)) );
FreeLibrary( handle );
}
}

#pragma ENDDUMP
Responder