Página 3 de 7
ACBrLib
Enviado: 29 Jun 2020 13:30
por Itamar M. Lins Jr.
Ola!
Pois é, agora eles estão ficando igual a SefazClass de 10 anos atrás, que aliás, nem é DLL, é no próprio fonte.
Santo de casa não faz milagre. Só não usei pq na época bem antes já usava a AcbrMonitor.
Mas voltando ao assunto pq, estão achando que estou denegrindo a DLL ?
O objetivo do post não é esse. O objetivo é saber o que vamos fazer, adicionar mudar no sistema para usar a DLL.
Quais as vantagens de adicionar essa DLL ? Se compensa ressuscitar um modulo meu, de ECF de padaria/supermercado...
É o que estou tentando ver nessas minhas postagens.
Eu tenho 1 EXE sem DLL. Só vou tirar NFCe por 1 CPU, mas vou precisar mudar deixar isso aberto para vários emitir.
Interface de Programação de Aplicações ou Interface de Programação de Aplicação), cuja sigla API provém do Inglês Application Programming Interface, é um ...
Não enxergo a DLL como API, falta algumas características para ser API. No caso as telas que uma API faz e linguagem própria.
Quem disse que compensa não explicou como está fazendo.
Sim compensa usar a DLL é legal, pagam suporte etc... Mas cadê, tá fazendo como ?
Tem um sistema aparte ou apenas um módulo único EXE com tudo ? Usam DBF ou algum SGBD ?
Saudações,
Itamar M. Lins Jr.
ACBrLib
Enviado: 29 Jun 2020 13:52
por JoséQuintas
Postaram há tempos atrás, mas diferente daquele link que mostrei.
Como eu disse.... quando se trata de algo que se pode ganhar dinheiro, parece que a ajuda para.
Talvez porque pagam pra receber ajuda, acabam não ajudando.... rs
ACBrLib
Enviado: 29 Jun 2020 13:59
por JoséQuintas
Usando as Classes de Alto Nível.
Para os usuários SAC existe um recurso ainda mais poderoso para se trabalhar com o ACBrLib, que seriam, as Classes de Alto Nível as quais farão a comunicação entre sua aplicação e as bibliotecas ACBr, com elas é possível utilizar os comandos de forma mais simples sem qualquer preocupação com as chamadas diretas das bibliotecas ACBr.
Pelo jeito, pagando, dá pra usar do jeito que foi mostrado.
Talvez parecido com o uso de ADO, com win_OleCreateObject() e usar a classe Delphi como se fosse parte do Harbour.
Mas se é comercial.... não pode ser distribuído.
ACBrLib
Enviado: 29 Jun 2020 14:12
por JoséQuintas
Se postarem o uso real, poderíamos criar as classes pra fazer exatamente igual, sem precisar pagar.
Até ajudo, mesmo sem usar, mas não vou ficar pesquisando isso, e muito menos ficar testando.
No ACBR com certeza não vão mostrar, porque isso tiraria a necessidade de pagar pela outra DLL.
Recapitulando:
Tem a DLL grátis, de livre distribuição.
Pode ser criada uma classe baseada nela, TALVEZ equivalente à DLL paga.
Podemos fazer isso juntos, com vantagem pra todos, ou cada um que se vire.
E aí? o fórum é uma comunidade, ou é cada um por si?
ACBrLib
Enviado: 29 Jun 2020 14:18
por Itamar M. Lins Jr.
Ola!
que seriam, as Classes de Alto Nível as quais farão a comunicação entre sua aplicação e as bibliotecas ACBr,
Bem que gostaria de ver essa classe para Harbour, se é diferente do que usamos, se bem que a classe da ACBrLib para Harbour está no SVN, e é igual a todas as outras que já existem e usamos.
Saudações,
Itamar M. Lins Jr.
ACBrLib
Enviado: 29 Jun 2020 14:22
por JoséQuintas
Chamou atenção no fonte VB de exemplo
Código: Selecionar todos
Public Sub InicializarLib(Optional ByVal eArqConfig As String = "", _
Optional ByVal eChaveCrypt As String = "")
SetLibPath
Dim retorno As Long
retorno = NFE_Inicializar(eArqConfig, eChaveCrypt)
CheckResult retorno
End Sub
precisa chave criptográfica pra liberar o uso?
http://svn.code.sf.net/p/acbr/code/trun ... CBrNFe.cls
ACBrLib
Enviado: 29 Jun 2020 14:26
por JoséQuintas
Em Harbour.... apesar de esquisito...
Código: Selecionar todos
METHOD New(eArqConfig, eChaveCrypt) CLASS ACBrNFe
local hResult, buffer, bufferLen, oErr
eArqConfig :=if(eArqConfig = nil, '', eArqConfig)
eChaveCrypt:=if(eChaveCrypt = nil, '', eChaveCrypt)
::hHandle := DllLoad(ACBrLIB)
if EMPTY(::hHandle) // Eric.Developer: xHarbour retorna 0x00000000
oErr := ErrorNew()
oErr:Severity := ES_ERROR
oErr:Description := "Erro a carregar a dll [" + ACBrLIB + "]"
Throw(oErr)
endif
hResult := DllCall(::hHandle, DLL_OSAPI, "NFE_Inicializar", hb_StrToUTF8(eArqConfig), hb_StrToUTF8(eChaveCrypt))
::CheckResult(hResult)
RETURN Self
http://svn.code.sf.net/p/acbr/code/trun ... CBrNFe.prg
ACBrLib
Enviado: 29 Jun 2020 14:39
por JoséQuintas
Sei lá...
Não gostei, mas vai ficar mais rápido que EXE separado.
E com certeza os fontes são direcionados pra Xharbour, e poderiam ser muito melhores.
Não só em fonte Harbour, mas na DLL, que talvez aqui seja o uso da grátis, e não da versão paga.
Código: Selecionar todos
Function Main ()
local nfe
nfe := ACBrNFe():New()
nfe:ConfigGravarValor("Principal", "LogNivel", "4") // logParanoico
nfe:ConfigGravarValor("Principal", "LogPath", hb_dirBase() + "Logs")
nfe:ConfigGravar()
nfe:CarregarXML(hb_dirBase() + "nfe.xml")
nfe:Imprimir("", 1, "", "True", hb_dirBase() + "rftd.jpg", "", "")
?nfe:Nome
?nfe:Versao
return NIL
ACBrLib
Enviado: 29 Jun 2020 14:50
por JoséQuintas
teste rápido: coisa de principiante.
declarou #include com nome de pasta
ACBrNFe.prg:1: error F0029 Can't open #include file '..\Comum\acbrlib.ch'
variáveis pra nada
ACBrNFe.prg:93: warning W0003 Variable 'BUFFER' declared but not used in function '77:ACBRNFE_NEW'
ACBrNFe.prg:93: warning W0003 Variable 'BUFFERLEN' declared but not used in function '77:ACBRNFE_NEW'
Além da LIB de compatibilidade XHarbour, que já é problema, ainda tem a lib de compatibilidade xbase++
c:/temp/ACBrNFe.o:ACBrNFe.c:(.data+0x3e8): undefined reference to `HB_FUN_DLLLOAD'
c:/temp/ACBrNFe.o:ACBrNFe.c:(.data+0x448): undefined reference to `HB_FUN_THROW'
c:/temp/ACBrNFe.o:ACBrNFe.c:(.data+0x458): undefined reference to `HB_FUN_DLLCALL'
c:/temp/ACBrNFe.o:ACBrNFe.c:(.data+0x488): undefined reference to `HB_FUN_DLLUNLOAD'
hbmk2: Hint: Add input file 'hbxpp.hbc' for missing Harbour function(s):
DllUnload(), DllCall(), DllLoad()
hbmk2: Hint: Add input file 'xhb.hbc' for missing Harbour function(s): Throw()
compilando com compatibilidade xharbour, xbase++ e desativando checagens do Harbour, compilou o exemplo.
Provavelmente vai gerar problemas com outras coisas, mas compilou.
ACBrLib
Enviado: 29 Jun 2020 15:05
por Itamar M. Lins Jr.
Ola!
Isso eu já tinha visto... Tô levantado a questão aqui no grupo...
Pq estão usando a contrib do Pritpal Bedi para isso ?
Saudações,
Itamar M. Lins Jr.
ACBrLib
Enviado: 29 Jun 2020 22:00
por AutomoSistema
Boa noite, acredito que no tempo em que vivemos tecnologicamente as SoftHouse estão começando ou já começamos a enfrentar um problema em que palavras não vou conseguir explicar para os senhores porem vou colocar um link de uma palestra da Gertech onde perto do final o palestrante vai clarear o que já vem acontecendo e a importância da nossa soberania na cadeia da automação comercial.
https://www.youtube.com/watch?v=WAYhjxNUgqo , neste link os senhores vão ver o que vem acontecendo nas falsas promessas destas empresas grandes com soluções milagrosas para emissão de documentos eletrônicos para SoftHouse!!!
ACBrLib
Enviado: 29 Jun 2020 22:26
por JoséQuintas
Itamar M. Lins Jr. escreveu:Isso eu já tinha visto... Tô levantado a questão aqui no grupo...
Pq estão usando a contrib do Pritpal Bedi para isso ?
Suposição apenas:
Infelizmente, para quem olha o Harbour, a versão oficial é 3.0
Provavelmente por isso acaba ficando com fonte problemático.
ACBrLib
Enviado: 27 Out 2020 10:07
por oribeiro
Pessoal,
Espero que todos estejam bem.
Estou migrando do ACBrMonitor para o ACBrLib e estou com um sério problema.
Não consigo imprimir NFe e SAT sem antes sair da aplicação.
Por favor, deem uma olhada onde estou errando.
Código: Selecionar todos
#include 'FIVEWIN.CH'
#define DLL_CDECL 0x08
#define DLL_STDCALL 0x20
#define DLL_SYSTEM 0x04
#define STR_LEN 256
function Main()
local oWnd
define window oWnd from 5,5 to 30,85 title "ACBrLib Teste"
@ 3,10 BUTTON "Imprime NF-e" size 100,50 OF oWnd ACTION ImprimirNFE()
@ 3,40 BUTTON "Imprime SAT" size 100,50 OF oWnd ACTION ImprimirSAT()
set message of oWnd to "Teste ACBrLib" date time noinset
activate window oWnd centered
return nil
static function ImprimirNFE(eArquivoOuXml, cImpressora, nNumCopias, cProtocolo, bMostrarPreview, cMarcaDagua, bViaConsumidor, bSimplificado)
local hResult, bufferLen, buffer, oErr
local oDll := DllLoad( 'ACBrNFe32.dll' )
eArquivoOuXml := if(eArquivoOuXml=nil, "acbrnfe.xml", eArquivoOuXml)
cImpressora := if(cImpressora=nil, "", cImpressora)
nNumCopias := if(nNumCopias=nil, 1, nNumCopias)
cProtocolo := if(cProtocolo=nil, "", cProtocolo)
bMostrarPreview := if(bMostrarPreview=nil, "True", bMostrarPreview)
cMarcaDagua := if(cMarcaDagua=nil, "", cMarcaDagua)
bViaConsumidor := if(bViaConsumidor=nil, "", bViaConsumidor)
bSimplificado := if(bSimplificado=nil, "", bSimplificado)
hResult := DllCall(oDll, DLL_STDCALL, "NFE_Inicializar", hb_StrToUTF8("ACBrLib.Ini"), hb_StrToUTF8(""))
hResult := DllCall(oDll, DLL_STDCALL, "NFE_CarregarXML", hb_StrToUTF8(eArquivoOuXml))
hResult := DllCall(oDll, DLL_STDCALL, "NFE_Imprimir", hb_StrToUTF8(cImpressora), nNumCopias, hb_StrToUTF8(cProtocolo), hb_StrToUTF8(bMostrarPreview), hb_StrToUTF8(cMarcaDagua), hb_StrToUTF8(bViaConsumidor), hb_StrToUTF8(bSimplificado))
if !Empty(hResult)
bufferLen := STR_LEN
buffer := Space(bufferLen)
oErr := DllCall(oDll, DLL_STDCALL, "NFE_UltimoRetorno", @buffer, @bufferLen)
MsgStop(buffer, "Erro: "+Str(hResult))
endif
DllCall(oDll, DLL_STDCALL, "NFE_Finalizar")
DllUnload(oDll)
return nil
static function ImprimirSAT(eArquivoOuXml, cImpressora)
local hResult, bufferLen, buffer, oErr
local oDll := DllLoad( 'ACBrSat32.dll' )
eArquivoOuXml := if(eArquivoOuXml=nil, "acbrsat.xml", eArquivoOuXml)
cImpressora := if(cImpressora=nil, "", cImpressora)
hResult := DllCall(oDll, DLL_STDCALL, "SAT_Inicializar", hb_StrToUTF8("ACBrLib.Ini"), hb_StrToUTF8(""))
hResult := DllCall(oDll, DLL_STDCALL, "SAT_ImprimirExtratoVenda", hb_StrToUTF8(eArquivoOuXml), hb_StrToUTF8(cImpressora))
if !Empty(hResult)
bufferLen := STR_LEN
buffer := Space(bufferLen)
oErr := DllCall(oDll, DLL_STDCALL, "SAT_UltimoRetorno", @buffer, @bufferLen)
MsgStop(buffer, "Erro: "+Str(hResult))
endif
DllCall(oDll, DLL_STDCALL, "SAT_Finalizar")
DllUnload(oDll)
return nil
ACBrLib
Enviado: 27 Out 2020 10:11
por oribeiro
Ahh, utilizo o FHW + xHarbour.
Segue o programa teste compilado.
Ao executar, tente imprimir NFe e depois SAT ou vice-versa sem sair do programa.
ACBrLib
Enviado: 27 Out 2020 14:54
por pauloa1
Olá!
vc está usando isso nfe:LimparLista()
antes de enviar o camando pra imprimir ?
Paulo