Página 16 de 21

SAT-Fiscal a mistica está desvendada.

Enviado: 22 Mar 2016 13:22
por Diego Papale
Boa tarde, eu utilizo a linha:

aString:= HB_ATOKENS(cString, [|])

com colchetes mesmo no meu sistema e está funcionando corretamente.

SAT-Fiscal a mistica está desvendada.

Enviado: 22 Mar 2016 13:34
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'
?

SAT-Fiscal a mistica está desvendada.

Enviado: 22 Mar 2016 13:37
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é !?
:%

SAT-Fiscal a mistica está desvendada.

Enviado: 22 Mar 2016 14:33
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, [|])

SAT-Fiscal a mistica está desvendada.

Enviado: 22 Mar 2016 15:15
por Claudio Soto
Probar colocar en el codigo un
if(pFunc)
Antes ( de llamar la funcion) del hb_retc

SAT-Fiscal a mistica está desvendada.

Enviado: 22 Mar 2016 15:44
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á.

SAT-Fiscal a mistica está desvendada.

Enviado: 22 Mar 2016 17:15
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 );
}
}

SAT-Fiscal a mistica está desvendada.

Enviado: 22 Mar 2016 17:22
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))

SAT-Fiscal a mistica está desvendada.

Enviado: 22 Mar 2016 18:39
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.

SAT-Fiscal a mistica está desvendada.

Enviado: 22 Mar 2016 19:29
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))

SAT-Fiscal a mistica está desvendada.

Enviado: 22 Mar 2016 19:48
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))

SAT-Fiscal a mistica está desvendada.

Enviado: 22 Mar 2016 20:20
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))

SAT-Fiscal a mistica está desvendada.

Enviado: 23 Mar 2016 00:24
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 ?

SAT-Fiscal a mistica está desvendada.

Enviado: 23 Mar 2016 00:47
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.

SAT-Fiscal a mistica está desvendada.

Enviado: 23 Mar 2016 10:56
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