Clipper On Line • Ver Tópico - ACBrLib
Página 1 de 7

ACBrLib

MensagemEnviado: 25 Jun 2020 00:43
por Itamar M. Lins Jr.
Ola!
Quem já trocou o ACBrMonitorPlus pela DLL ?
Estou vendo um tanto de coisas que terei que colocar na minha aplicação pq, muitas opções vou precisar puxar do ACBrMonitorPlus. A parte das configurações.
E não tem a opção que eu uso: NFe.CriarEnviarNFe, mas nada impede de usar uma função, e chamar as 3, a DLL para 64Bits testei aqui e está ok.

Saudações,
Itamar M. Lins Jr.

ACBrLib

MensagemEnviado: 26 Jun 2020 10:39
por MSDN
Normalmente quem usa outra linguagem que não seja pascal tem algums problemas para usar ACBr, seja por não ter disponibilizado para o Monitor tudo o que tem a nível de componentes, ou mesmo agora com o ACBr LIB a mesma situação, o que eu estou pensando em fazer é criar um software de integração, que recebe os XML do Harbour e faz a interface final com o usuário, gravando em SQLite localmente os retornos/erros, assim fica transparente para quem usa e nem vai notar que na hora de emitir o documento fiscal (seja qual for), a telinha é de um programa em Delphi/Lazarus, assim dá pra usar 100% do ACBr.

ACBrLib

MensagemEnviado: 26 Jun 2020 11:29
por Itamar M. Lins Jr.
Ola!
Pelo que estou percebendo, o tanto de coisas que já aprendi gerando e testando a DLL vejamos.
a) Ela gera um arquivo INI de configuração.(sem funcionar) não sabe onde está o PFX, nem senha etc...
b) Precisa de outras DLLs, OpenSSL etc...
c) Precisa dos arquivos da pasta Schemas
d) Esse arquivo não tem como ser configurado pela DLL, vou precisar desenhar as telas de configuração(ler/gravar no .INI) que já tem no ACBrMonitorPlus
e) Os comandos que usamos no ACBrMonitorPlus é diferente da DLL, vamos precisar atualizar no nosso aplicativo.
Com o ACBrMonitorPlus usamos NFe.ComandoX, com a DLL usamos ComandoX, sem o prefixo "NFe."

Não sei se neste caso especifico o melhor a fazer é usar a classe do José Quintas...
Além desses problemas, o inconveniente é que gero um arquivo texto que o ACBrMonitor Lê, e na rede todas as maquinas tiram NFCe. Tudo centralizado, ordem dos XML etc...
Estou estudando o caso ainda...
No caso eu terei que criar meu próprio ACBrMonitorPlus, rsrsrsr, e também acredito que posso usar a classe do Quintas... rsrsrsr, não estou enxergando muita vantagem em mudar para a DLL.
Melhor é unir forças e adicionar na classe do Quintas em HWGUI o JoseQuitasHBMonitor rsrsrs.

Saudações,
Itamar M. Lins Jr.

ACBrLib

MensagemEnviado: 26 Jun 2020 11:43
por MSDN
Hoje a forma mais fácil para quem precisa emitir NF-e e NFC-e no mundo xBase seria a Sefazclass, mas.....estamos no Brasil, todos os documentos importantes já são digitais, e o que ainda não é vai ser, então basta pensar um pouco além e imaginar que vc vai precisar emitir nota via SAT, ou emitir NFS-e onde a dinâmica é inversa à NF-e e NFC-e por exemplo, onde vc envia um XML de RPS para dai receber a nota e existem uma dezena de empresas Brasil afora fazendo as coisas do jeito que acham melhor.
Então na minha opinião, se vc quer fazer algo profissional, tem que ser "formiga" agora para poder dar uma de "cigarra" depois, tanto se o seu cliente pedir a implementação de um documento fiscal novo como se houver mudanças maiores nos documentos que vc já emite.
No futuro (breve), nós não vamos nos preocupar em fazer a roda, vamos usar a roda de terceiros, de quem só faz "roda", tipo Equipe ACBr e Tecnospeed por exemplo, essa é a dinâmica do que desejo passar.

ACBrLib

MensagemEnviado: 26 Jun 2020 11:53
por JoséQuintas
O que sempre comentei, é que o uso de pastas é o que fica complicando tudo no componente.
Se o ACBR deixasse essa parte por conta do usuário, a DLL seria muito mais enxuta e simples.

Basicamente só precisa configuração de UF, ambiente e certificado, o resto o usuário faz como quiser.
Quanto mais facilidades eles colocam, mais configuração precisa, e isso acaba precisando de pasta pra salvar a configuração.

Talvez alguém mais próximo pudesse mostrar isso pra eles.
Seria menos trabalho pra eles, e menos trabalho pra quem usa.

ACBrLib

MensagemEnviado: 26 Jun 2020 11:57
por Itamar M. Lins Jr.
Ola!
nota via SAT,

Esse negocio de SAT é só em SP... Pq não é aceito na maioria das UFs.
Se tiver que mexer com isso, vou comprar algum programa para terceirizar... Muita responsabilidade, para receber pouco.
Nessa quarentena infinda estou repensando muita coisa.
Estou tento muitos problemas entre as empresas e seus escritórios de contabilidade, todo mundo quer tudo pronto e pagar mixaria para desenvolvedor...
Verdadeiro jogo de empurra...Uma vez que o ERP pode entregar tudo mastigado para a contabilidade... Mas não pode ultrapassar a linha entre usuário de sistema, contador e o programador. Quando o usuário do sistema não é um técnico contábil a serviço da contabilidade e esta vai receber pronto como fazer ?

Saudações,
Itamar M. Lins Jr.

ACBrLib

MensagemEnviado: 26 Jun 2020 12:08
por Itamar M. Lins Jr.
Ola!
Por exemplo, hoje eu tenho menu sistema com zero DLL, consegui embutir tudo no .EXE
Então usando a DLL, terei que adicionar algumas coisas a mais no pacote, inclusive a pasta Schemas. Só que não resolve 100%.
Isso só para quem emite NFe em 1 CPU. No caso de vários PDV terei que usar algum Monitor. E já tenho isso tudo funcionando de maneira simples.
Um monitor desacoplado do meu sistema e que faz toda a parte de controle do DFe(Documentos fiscais eletrônicos).
Qual é a vantagem de criar um monitor ? e deixar de usar um que já funciona ?

Saudações,
Itamar M. Lins Jr.

ACBrLib

MensagemEnviado: 26 Jun 2020 12:25
por MSDN
Bom, só dei uma ideia, cada um continua fazendo da forma que gosta, precisa ou acha bonito, mas pensando dessa forma a concorrência agradece, e quanto a questão do SAT, da forma como vc falou parece que é algo secundário, mas leia a matéria desse link abaixo pra ver o que representa o estado de SP para o Brasil !
https://www.investe.sp.gov.br/por-que-sp/economia-diversificada/pib/

ACBrLib

MensagemEnviado: 26 Jun 2020 12:45
por Itamar M. Lins Jr.
Ola!
SAT só em SP! Por conta do LOBBY!
Não ajuda só atrapalha... Se a SEFAZ de outras UFs adotarem, disse que irei comprar, tudo pronto. Começar a mesma doidice de DLL, ELGIN, DARUMA, EPSON etc... Volta tudo como era na época do ECF, só não vê quem quer vender equipamento... Vai argumentar milhões de coisas, o fato é que é mais custos para o comerciante, mais problema, mais uma peça na engrenagem sem necessidade.

Saudações,
Itamar M. Lins Jr.

ACBrLib

MensagemEnviado: 26 Jun 2020 13:16
por Itamar M. Lins Jr.
Ola!
mas pensando dessa forma a concorrência agradece,

Acredito que vc não entendeu. Quem treina a pessoa para entregar os tais EFD ? Hoje o sistema faz tudo, só quê, quem vai treinar a pessoa para conferir o que está lá ?
a)Escrituração Fiscal Digital EFD-ICMS/IPI
b)SPED PIS e COFINS - EFD Contribuições
Isso ai é 100% a parte fiscal que o ERP faz, ai está a confusão pq o comerciante quer pagar mixaria para o desenvolvedor e o contador quer isso feito pelo ERP e quer receber muito bem... Entendeu ? Só que o comerciante não tem uma pessoa que saiba dessa parte. Vai treinar uma pessoa, pagar o desenvolvedor, pagar o contador que só vai assinar. No mínimo um conferente de impostos na loja, uma pessoa especializada em ICMS/PIS/COFINS.
São dois programas que é baixado da SEFAZ que importa um arquivo que o ERP faz.
Parece que o ACBRMonitor já tem isso também e o pessoal está entregando direto ao contador, os tais arquivos, sem conferir na loja e tem contador que quer que o lojista envie os arquivos via sistema do governo e tem contador que só quer os XMLs de NFCe e NFe nada mais.

Saudações,
Itamar M. Lins Jr.

ACBrLib

MensagemEnviado: 26 Jun 2020 14:31
por MSDN
Itamar, o mundo sempre foi cruel, não tem novidade nisso, uma vez que estamos nesse barco, temos que saber lidar com essas questões.
Por exemplo, tudo estava dentro de uma certa normalidade no mundo todo (a nível de negócios), dai veio a Covid-19 e virou tudo de ponta cabeça, o que vamos fazer, sentar e chorar !? Temos que achar maneiras de lidar com as situações, entendo tudo o que vc disse, mas não tem novidade nisso tudo, é a vida como ela é, não tem outra, só temos essa !

ACBrLib

MensagemEnviado: 26 Jun 2020 15:27
por JoséQuintas
A verdade é que hoje em dia a coisa tá complicada.

O cara abre uma lojinha...
paga pra maquininha de cartão, paga comissão pra cartão sobre venda, às vezes de vários cartões, paga pra internet, às vezes paga conta de celular pro cartão, paga pra software, etc. etc. etc.

Um cliente comprou caminhão novo pras entregas....
Mas com isso do covid, até agora não obteve todas as liberações necessárias.
Ou seja... o caminhão novo tá ficando velho... o que seria melhoria virou... nada, uma despesa com a desvalorização.

A gente sempre acha que o outro tá melhor, mas na prática tá ruim pra todo mundo.
Cada um tem suas complicações pra resolver.
Vamos tendo que nos adaptar a essa realidade.

Lembrando que, após a pandemia, vai vir a cobrança das depesas...
Adivinhem quem é que vai pagar as contas do governo....

ACBrLib

MensagemEnviado: 26 Jun 2020 22:17
por fladimir
Troquei o Monitor pela Dll na parte de Manifestação do Destinatário e Downloads dos XMLs

O INI pode ser manipulado pela Dll, inclusive faço isso.
Achei muito mais rápido a Dll e muito mais simples de tratar os retornos, a lógica muda um pouco mas depois q pega o jeito vai embora.
Não fiz a parte de NFe e NFCe devido outros projetos, mas será o próximo passo.
Não precisa criar um monitor, como eu disse a configuração pode ser feita toda pela dll.
Precisa de outras DLLs, OpenSSL sim, mas não vejo problema só mandar junto com o EXE
Precisa dos arquivos da pasta Schemas, sim, só mandar junto.
Os comandos que usamos no ACBrMonitorPlus é diferente da DLL, vamos precisar atualizar no nosso aplicativo, sim, mas no meu caso por exemplo q fiz via Classes são poucas mudanças, agora cada um vai ter q analisar seu código e ver se a mudança não será drástica.

Vantagem q achei é a velocidade melhora muito.
Simplicidade no tratamento do retorno (JSON) (pode ser INI, ou XML) lembrando q eu trato o retorno em memória, não precisa salvar o retorno pra manipular.
Qdo mudar algo já verifico se tem Dll mais recente e atualizo apenas a Dll, sem ter q conectar no cliente pra instalar uma nova versão do monitor.

No meu ponto de vista e experiência aki seria isto.

ACBrLib

MensagemEnviado: 27 Jun 2020 00:33
por Itamar M. Lins Jr.
Ola!
O INI pode ser manipulado pela DLL, inclusive faço isso.

Como eu escrevi lá em cima, pode, mas terá que desenhar as telas.
Não vai saber nada do que está lá no INI, a não ser que crie as telas com as informações do arquivo .INI
No caso de vários terminais PDV imprimindo NFCe pela DLL, como vai monitorar ?
Receber e enfileirar por ordem FIFO...Vou sobrecarregar o sistema com esse monitoramento extra. Fazer o trabalho do monitor é trocar 6 por meia dúzia.
Quando cada um manda NFCe na ordem que deseja pelo próṕrio aplicativo independente, isso é caixa de supermercado com serie diferente para cada PDV.
Balcão de loja, usa apenas uma Impressora para vários CPUs. O Monitor recebe o arquivo e se vira.
Não vi ganho excepcional da DLL e o Monitor, constatei diferença grande com o A3 e A1, pq o tempo para ler cartão pela USB no Win10 demora.
DLL lógico que é mais rápido mas não a ponto de afetar, pq depende de outros fatores e são externos, velocidade da internet, do CPU, rede etc...
No cenário de supermercado e padarias ou apenas com 1 PDV a DLL cai bem.
Mas com balcão de farmácias e materiais de construção, vai depender de como a gerência do estabelecimento trabalha.
Tenho clientes que o balconista tira NFCe no PDV para não sobrecarregar o CAIXA, neste caso o monitor é indispensável.
É o velho problema, tem n vendedores mas só um caixa. Mesmo se o caixa for fazer apenas o encerramento da venda, ainda assim perde tempo, dai algumas lojas liberarem a emissão da NFCe pelo vendedor, e o pagamento fica no caixa.
Então com o monitor eu tenho 1 .INI, 1 certificado A1 ou A3 apenas 1 configuração para tudo, e usando a DLL vou precisar de configurar isso em todas as CPUs, vários .INI, A1 ou A3, sequência/numeração de XML diferentes, e outros detalhes.

Saudações,
Itamar M. Lins Jr.

ACBrLib

MensagemEnviado: 27 Jun 2020 11:44
por MSDN
Resumindo, se vc não usa Delphi ou Lazarus, ACBr só quebra o galho, se quiser velocidade, teria que contratar uma empresa especializada no serviço, um exemplo seria a Tecnospeed https://tecnospeed.com.br/dfe/, e utilizar a API deles, vale a pena dar uma olhada.
Se programa em Delphi ou Lazarus, usa ACBr sem medo de ser feliz, e logo eles também terão API como alternativa para emissão de DFe, mas creio que também será cobrado, pois tem vários custos envolvidos nessa modalidade.
A realidade, Harbour é muito bom até um certo ponto, se vc vai emitir NFC-e, NF-e, não vai ter muita demanda, poucos usuários, não vai ter acesso na nuvem, etc, blz, passou disso, melhor mudar de ferramenta.

ACBrLib

MensagemEnviado: 27 Jun 2020 13:05
por Itamar M. Lins Jr.
Ola!
É isso.
Tenho um ERP que gerencia X coisas.
Mas se optar pelo uso da DLL vou aumentar consideravelmente o sistema e quem sabe sem necessidade.
Talvez desagregar o ERP em módulos resolva. Contrapartida mais outros .EXEs, separar as areas para facilitar a manutenção ou piorar ?
Quem sabe não é isso que os APPMobile estão fazendo, um bocado de coisinhas separadas.

Saudações,
Itamar M. Lins Jr.

ACBrLib

MensagemEnviado: 27 Jun 2020 14:15
por fladimir
Conheço o colegas q já estão usando a Dll pra NFCe tb com melhores resultados q o Monitor

Em relação a desenhar as telas não precisa só fazer no teu sistema apenas os campos q vc necessita e ai faz via Dll gravar no INI ou vc via Harbour e depois recarrega a Dll
O q vc quer q fique conforme teu padrão não precisa abrir campo pra configuração já seta direto, somente o q varia por cliente como CSC, Certificado, Senha, por exemplo q vc cria os campos.

No caso de vários terminais PDV imprimindo NFCe pela DLL, como vai monitorar ?

Cada terminal abre uma instancia da Dll ou seja não tem problema nenhum, vc teria q ter uma configuração por PDV pra setar por PDV alguma configuração diferente por exemplo um Path diferente algo assim.

Receber e enfileirar por ordem FIFO...Vou sobrecarregar o sistema com esse monitoramento extra. Fazer o trabalho do monitor é trocar 6 por meia dúzia.

Não existe isso com a Dll, cada terminal/PDV abre uma instancia do EXE na memória q por sua vez carrega uma instancia da Dll, ou seja, são processos separados, não tem nada de enfileirar etc.

Não vi ganho excepcional da DLL e o Monitor, constatei diferença grande com o A3 e A1, pq o tempo para ler cartão pela USB no Win10 demora.
DLL lógico que é mais rápido mas não a ponto de afetar, pq depende de outros fatores e são externos, velocidade da internet, do CPU, rede etc...
No cenário de supermercado e padarias ou apenas com 1 PDV a DLL cai bem.
Mas com balcão de farmácias e materiais de construção, vai depender de como a gerência do estabelecimento trabalha.
Tenho clientes que o balconista tira NFCe no PDV para não sobrecarregar o CAIXA, neste caso o monitor é indispensável.
É o velho problema, tem n vendedores mas só um caixa. Mesmo se o caixa for fazer apenas o encerramento da venda, ainda assim perde tempo, dai algumas lojas liberarem a emissão da NFCe pelo vendedor, e o pagamento fica no caixa.
Então com o monitor eu tenho 1 .INI, 1 certificado A1 ou A3 apenas 1 configuração para tudo, e usando a DLL vou precisar de configurar isso em todas as CPUs, vários .INI, A1 ou A3, sequência/numeração de XML diferentes, e outros detalhes.

Falar baseado em teorias é uma coisa, eu falo baseado na prática, tanto minha qdo de amigos q já utilizam.
A Dll na prática é mais rápida e melhor q o monitor é fato, q já venho do monitor desde 2009, e já uso a dll aki.

Agora se usar a Dll e não gostou, gosto não se discute, ou tb dependendo do jeito q seu sistema esta montador/estruturado, pode ser (não consigo pensar como) q ai não compense.

Resumindo cada uma tem q avaliar sua realidade, pode até mesmo ser q o FATO da Dll pra mim estar sendo melhor, não seja o q é melhor pra algum colega. Mas outro FATO é q antes de pensar q não é bom tem q fazer testes pelo menos.

ACBrLib

MensagemEnviado: 27 Jun 2020 16:23
por Itamar M. Lins Jr.
Ola!
somente o q varia por cliente como CSC, Certificado, Senha, por exemplo q vc cria os campos.

E não é isso que estou falando ?
vc teria q ter uma configuração por PDV pra setar por PDV alguma configuração diferente por exemplo um Path diferente algo assim.

E não é isso que estou me referindo ? Mais uma pasta compartilhada pra usar apenas 1 .INI. Faltou, e A3 faz como ?

não tem nada de enfileirar etc.

Não entendeu, essa parte.
Vou explicar em miúdos para vc.
a) Caixa 01 usando DLL tira NFCe 0001
b) Caixa 02 usando DLL tira NFCe ? Qual ? Se der xabu na primeira etc... Entendeu agora ? Só se vc usar uma serie 001,002 por caixa. E o controle mais
minucioso pq vai ter NFCe 000120 serie 01, NFCe 000120 serie 02 Mesmo numero com series diferentes. Só assim é possível.
c) Concentrar os XMLs, quem não tem, vai precisar mudar para gravar o XML no SGBD mudar para saber serie 01,02..., DBF nem pensar...
Ou vai largar XML espalhado pelas CPUs? Depois a gambiarra, um batzinho jogando na pasta compartilhada...
E vc acha que isso é teoria ? Algumas pessoas não usa assim, imagine uma loja com 2 PDVs apenas e outras com 10,15
Imagine manutenção, etc... nesses computadores com esse win10 com essas atualizações...Pq na pratica, CPU com 2MB Win7 etc...
Por isso o MSDN indicou lá a API, para livrar o sofware da gente desses controles.

Como eu disse a DLL tem vantagem em casos específicos.
1 CPU emitindo apenas.
Quando a carga/emissão passa de 3,4..10 CPUs emitindo NFCe simultaneamente e NFe A1 e A3 misturado, a coisa é para se pensar mais um pouco, pq vai precisar mudar até a estrutura do SGBD para guardar os XMLs.

Isso não é teoria, é pratica de quem trabalha com isso há mais de 30 anos...

Saudações,
Itamar M. Lins Jr.

ACBrLib

MensagemEnviado: 27 Jun 2020 17:31
por fladimir
Uso o Monitor desde 2009, já criei um tópico sobre como compilar o mesmo pra quem não quer assinar o SAC, já ajudei inúmeros colegas a usar o ACBrMonitor, já levei o Jr da equipe de desenvolvedores do ACBrMonitor em um congresso em Curitiba em 2018, conheço e uso a Dll em produção, tenho clientes em vários estados do Brasil, clientes de 1 PDV a 15 PDVs (não são gigantes mas tem volume de movimentação), trabalho com vários segmentos, além de trabalhar com automação desde 1998, se acreditam q não tenho experiência e respaldo suficiente pra falar com propriedade, tudo bem, continuem no ACBrMonitor e sejam felizes, o Monitor tb é ótimo.

Mas como disse pra mim a Dll esta melhor.

ACBrLib

MensagemEnviado: 27 Jun 2020 17:36
por Itamar M. Lins Jr.
Ola!
Olhem ai o tamanho da criança!
Tela para email, tela para loja, tela para DFe, tela para DANFE, NFCE...
Não vejo nada de mais, desenhar as telas, mas tem isso para fazer.

[Principal]
TipoResposta=0
CodificacaoResposta=0
LogNivel=4
LogPath=

[Versao]
ACBrLib=0.0.2
ACBrLibNFE=0.4.6.90

[Sistema]
Nome=
Versao=
Data=30/12/1899
Descricao=

[Email]
Nome=
Servidor=
Conta=
Usuario=
Senha=
Codificacao=27
Porta=0
SSL=0
TLS=0
Timeout=0
Confirmacao=0
ConfirmacaoEntrega=0
SegundoPlano=0
Tentativas=1
IsHTML=0
Priority=1

[PosPrinter]
ArqLog=
Modelo=0
Porta=
PaginaDeCodigo=2
ColunasFonteNormal=48
EspacoEntreLinhas=0
LinhasEntreCupons=21
CortaPapel=1
TraduzirTags=1
IgnorarTags=0
LinhasBuffer=0
ControlePorta=0
VerificarImpressora=0
TipoCorte=0

[PosPrinter_Barras]
MostrarCodigo=0
LarguraLinha=0
Altura=0
Margem=0

[PosPrinter_QRCode]
Tipo=2
LarguraModulo=4
ErrorLevel=0

[PosPrinter_Logo]
IgnorarLogo=0
KeyCode1=32
KeyCode2=32
FatorX=1
FatorY=1

[PosPrinter_Gaveta]
SinalInvertido=0
TempoON=50
TempoOFF=200

[PosPrinter_MPagina]
Largura=0
Altura=0
Esquerda=0
Topo=0
Direcao=0
EspacoEntreLinhas=0

[PosPrinter_Device]
Baud=9600
Data=8
Timeout=3
Parity=0
Stop=0
MaxBandwidth=0
SendBytesCount=0
SendBytesInterval=0
HandShake=0
SoftFlow=0
HardFlow=0

[Proxy]
Servidor=
Porta=
Usuario=
Senha=

[SoftwareHouse]
CNPJ=
RazaoSocial=
NomeFantasia=
WebSite=
Email=
Telefone=
Responsavel=

[Emissor]
CNPJ=
RazaoSocial=
NomeFantasia=
WebSite=
Email=
Telefone=
Responsavel=

[DFe]
SSLCryptLib=1
SSLHttpLib=3
SSLXmlSignLib=4
UF=BA
TimeZone.Modo=0
TimeZone.Str=
URLPFX=
ArquivoPFX=
DadosPFX=
Senha=RWtYHg==
NumeroSerie=
VerificarValidade=1

[NFe]
FormaEmissao=0
SalvarGer=1
ExibirErroSchema=1
FormatoAlerta=TAG:%TAGNIVEL% ID:%ID%/%TAG%(%DESCRICAO%) - %MSG%.
RetirarAcentos=1
RetirarEspacos=1
IdentarXML=0
ValidarDigest=1
IdCSC=
CSC=
ModeloDF=0
VersaoDF=3
AtualizarXMLCancelado=0
VersaoQRCode=2
CamposFatObrigatorios=1
TagNT2018005=0
Ambiente=0
SalvarWS=0
Timeout=5000
TimeoutPorThread=0
Visualizar=0
AjustaAguardaConsultaRet=0
AguardarConsultaRet=0
IntervaloTentativas=1000
Tentativas=5
SSLType=0
QuebradeLinha=|
PathSalvar=
PathSchemas=
IniServicos=
SalvarArq=1
AdicionarLiteral=0
SepararPorCNPJ=0
SepararPorIE=0
SepararPorModelo=0
SepararPorAno=0
SepararPorMes=0
SepararPorDia=0
Download.PathDownload=
Download.SepararPorNome=0
SalvarEvento=0
SalvarApenasNFeProcessadas=0
EmissaoPathNFe=0
NormatizarMunicipios=0
PathNFe=
PathInu=
PathEvento=
PathArquivoMunicipios=
IdCSRT=0
CSRT=

[DANFE]
PathPDF=
UsaSeparadorPathPDF=0
Impressora=
NomeDocumento=
MostraSetup=0
MostraPreview=1
MostraStatus=1
Copias=1
PathLogo=
MargemInferior=8
MargemSuperior=8
MargemEsquerda=6
MargemDireita=5,1
AlterarEscalaPadrao=0
NovaEscala=96
ExpandeLogoMarca=0
ExpandeLogoMarca.Altura=0
ExpandeLogoMarca.Esquerda=0
ExpandeLogoMarca.Topo=0
ExpandeLogoMarca.Largura=0
ExpandeLogoMarca.Dimensionar=0
ExpandeLogoMarca.Esticar=1
CasasDecimais.Formato=0
CasasDecimais.MaskqCom=,0.00
CasasDecimais.MaskvUnCom=,0.00
CasasDecimais.qCom=2
CasasDecimais.vUnCom=2
Protocolo=
Cancelada=0
TipoDANFE=1
ImprimeTotalLiquido=1
vTribFed=0
vTribEst=0
vTribMun=0
FonteTributos=
ChaveTributos=
ImprimeTributos=1
ExibeTotalTributosItem=0
ImprimeCodigoEan=0
ImprimeNomeFantasia=0
ExibeInforAdicProduto=1
QuebraLinhaEmDetalhamentos=1

[DANFENFe]
FormularioContinuo=0
ImprimeValor=0
ImprimeDescPorPercentual=0
ImprimeDetalhamentoEspecifico=1
PosCanhoto=0
PosCanhotoLayout=0
ExibeResumoCanhoto=1
TextoResumoCanhoto=
ExibeCampoFatura=1
ExibeDadosISSQN=0
ExibeDadosDocReferenciados=1
DetVeiculos=[dv_chassi,dv_xCor,dv_nSerie,dv_tpComb,dv_nMotor,dv_anoMod,dv_anoFab]
DetMedicamentos=[dm_nLote,dm_qLote,dm_dFab,dm_dVal,dm_vPMC]
DetArmamentos=[da_tpArma,da_nSerie,da_nCano,da_descr]
DetCombustiveis=[dc_cProdANP,dc_CODIF,dc_qTemp,dc_UFCons,dc_CIDE,dc_qBCProd,dc_vAliqProd,dc_vCIDE]
TributosPercentual=0
TributosPercentualPersonalizado=0
MarcadAgua=
LarguraCodProd=54
ExibeEAN=0
AltLinhaComun=30
EspacoEntreProdutos=7
AlternaCoresProdutos=0
CorDestaqueProdutos=clWhite
TamanhoLogoHeight=0
TamanhoLogoWidth=0
RecuoEndereco=0
RecuoEmpresa=0
LogoemCima=0
RecuoLogo=0
ExpandirDadosAdicionaisAuto=0
ImprimeContDadosAdPrimeiraPagina=0
ExibeCampoDePagamento=0
Fonte.Nome=0
Fonte.Negrito=0
Fonte.TamanhoFonteRazaoSocial=8
Fonte.TamanhoFonteEndereco=0
Fonte.TamanhoFonteDemaisCampos=8

[DANFENFCe]
TipoRelatorioBobina=0
TipoRelatorioEvento=0
LarguraBobina=302
ImprimeDescAcrescItem=1
ImprimeItens=1
ViaConsumidor=0
vTroco=0
ImprimeQRCodeLateral=0
ImprimeLogoLateral=0
EspacoFinal=38
TamanhoLogoHeight=50
TamanhoLogoWidth=77
DescricaoPagamentos=[icaTipo,icaBandeira]
ImprimeEmUmaLinha=0
ImprimeEmDuasLinhas=0
MargemInferior=0
MargemSuperior=0
MargemEsquerda=0
MargemDireita=0
FonteLinhaItem.Name=Lucida Console
FonteLinhaItem.Color=536870912
FonteLinhaItem.Size=7
FonteLinhaItem.Bold=0
FonteLinhaItem.Italic=0
FonteLinhaItem.Underline=0
FonteLinhaItem.StrikeOut=0

[Integrador]
ArqLog=
PastaInput=C:\Integrador\Input\
PastaOutput=C:\Integrador\Output\
Timeout=30

Objetivo deste post é saber os prós e contras da DLL e o que vamos mudar passando a usar ela.
Conheço o monitor da época do ECF, não tenho problemas com ele.

Saudações,
Itamar M. Lins Jr.

ACBrLib

MensagemEnviado: 27 Jun 2020 17:46
por Itamar M. Lins Jr.
Ola!
e acreditam q não tenho experiência e respaldo suficiente pra falar com propriedade, tudo bem

Sempre procuro ir pelo caminho técnico. Não fui eu que usei a palavra "teoria".
Se nos atermos a ACBRLib e ao ACBrMonitorPlus, as postagens serão mais produtivas, uma vez que aqui é forum da linguagem Harbour.
Não se trata de ter ou não experiência, mas no que vamos mudar, adicionar etc, para ter êxito na implantação da DLL.
Tenho clientes que ela vai se encaixar bem, outros talvez não compense.

Saudações,
Itamar M. Lins Jr.

ACBrLib

MensagemEnviado: 28 Jun 2020 06:40
por JoséQuintas
Não tem nada a ver.... ou tem.....

Faz tempo que pensava em consultar MDFE não encerrados, mas não fazia.
Acabo de fazer... a rotina ficou ridícula.

/*
PDFENAOENC - MDFE NAO ENCERRADO
*/

PROCEDURE PDfeNaoEnc

   LOCAL aList, aList2, oElement
   LOCAL oSefaz := SefazClass():New()

   IF ! AbreArquivos( "jpempresa" )
      RETURN
   ENDIF
   oSefaz:cCertificado := NomeCertificado( AppEmpresaApelido() )
   oSefaz:MDFEConsNaoEnc( "SP", SoNumeros( jpempresa->emCnpj ) )
   CLOSE DATABASES
   aList := MultipleNodeToArray( oSefaz:cXmlRetorno, "chMDFe" )
   IF Len( aList ) == 0
      MsgExclamation( "Nenhum MDFe em aberto" )
      RETURN
   ENDIF
   aList2 := {}
   FOR EACH oElement IN aList
      AAdd( aList2, DfeNumero( oElement ) + " " + oElement )
   NEXT
   wAChoice( 5, 5, aList2, 1, "Em Aberto" )

   RETURN


mdfe.png


Como dá pra ver acima, só precisa UF, CNPJ, e certificado.
Como fica isso no ACBR?

parte que faz consulta:
   LOCAL oSefaz := SefazClass():New()
   oSefaz:cCertificado := NomeCertificado( AppEmpresaApelido() )
   oSefaz:MDFEConsNaoEnc( "SP", SoNumeros( jpempresa->emCnpj ) )
? oSefaz:cXmlRetorno


Porque tá simples?
porque não usa disco, fica por conta do programador se quiser salvar o cXmlRetorno, ou qualquer outra informação.
Então.... não tem configuração de pasta de entrada, pasta de saída, pasta de erro, schemma de validação, etc. etc. etc.

ACBrLib

MensagemEnviado: 28 Jun 2020 14:04
por fladimir
   
        LOCAL ACBrLib := ACBrMDFe():New()
   
   IF ACBrLib:MDFe_ConsultaMDFeNaoEnc(cCNPJ) = 0 // retorno ok
      Lista(07,10, ACBrLib:aRetorno)
   ELSE
      ACBrLib:MostraErro()
   ENDIF      
   ACBrLib:End()


No INI estão as definições dos dados da empresa ou podem ser setados no método New()

ACBrLib

MensagemEnviado: 28 Jun 2020 19:49
por JoséQuintas
Mas isso é usando rotinas intermediárias, e não diretamente com ACBRLib, certo?
O que mostrei é usando o retorno direto do webservice da fazenda.

ACBrLib

MensagemEnviado: 28 Jun 2020 23:03
por JoséQuintas
acbr.png


Com base no link acima, realmente é só pagando que pode baixar.

No link abaixo mostra de um jeito interessante, criando a classe a partir da LIB, mas não sei se isso é só usando Delphi.

https://www.devmedia.com.br/acbrnfe-componente-opensource-para-nota-fiscal-eletronica/12237

Se der pra usar desse jeito, aí sim fica interessante.

ACBrLib

MensagemEnviado: 28 Jun 2020 23:25
por lucimauro
Eu também uso o acbrmonitorPlus a muito tempo para emissão de NFe e CFe e acho muito bom, no meu caso 95% das configurações do acbr são feitas automáticas pelo meu sistema para não ter que esta entrando no monitor e configurar tudo manualmente que dar muito trabalho e sempre podemos esquecer algo.
Pretendo migrar para acbrlib pelo motivos que o fladirmir mencionou, tenho que criar mais alguns campos na tela de configuração para tornar 100% a configuração do INI da lib automático. Sei que o arquivo INI da lib e grande mais nem tudo se usa.

ACBrLib

MensagemEnviado: 29 Jun 2020 09:24
por Itamar M. Lins Jr.
Ola!
Com base no link acima, realmente é só pagando que pode baixar.

Para quem não usa lazarus ou se usa não sabe nada do assunto e quer se meter com isso, ai precisa pagar por uma consultoria mesmo.
Pq vc baixa tudo do SVN e tem n vídeos ensinado na internet. Até deles mesmo.
Eu tenho as 4 DLLs etc.. tudo gerado pelo prório Lazarus... E o que não falta e correções no SVN.
Infelizmente é a cultura do xBase, cada um por si.
Roberto Lopez fez a Minigui, depois apareceu a Minigui Extend, depois a OOHG... e cada um vai pra onde deseja.
No Delphi depois de encerrado/vendido pela Borland tem a linguagem FreePASCAL e a IDE Lazarus.
No xBase, depois da morte do FoxPro tem Fivewin,dBase,xBase++, FlagShip, Harbour, xHarbour, Xailer, etc...
Minigui, Minigui extend, OOHG, Hwgui, Marinas Gui, QtCOntribs, GTWVG, GTWVW... quer dizer tudo isso dentro da IDE Lazarus seria só mais um componente.

Saudações,
Itamar M. Lins Jr.

ACBrLib

MensagemEnviado: 29 Jun 2020 09:28
por AutomoSistema
Bom dia, desculpa em entrar nesta conversa. Pergunto aos senhores qual é o investimento inicial e a manutenção mensal para cada um de nós podemos trabalhar com NFe, NFCe, MDFe , CTe e outros?. Porque todos sabe que o Governo sempre esta alterando algo ou ajustando algo e sempre estamos correndo contra o tempo. No meu caso trabalho com parceiros nesta área como por exemplo Daruma, Acbr entre outros por vários anos e no decorrer do tempo. Sempre Acbr vem inovando tecnologicamente em soluções simples, praticas e baratas, no inicio do ano eles lançaram uma Api muito boa que são as DLLs até o momento não conheço algo melhor do que estas Api em relação custo e beneficio. Agora pensam da seguinte forma "Eles cobram um plano mais caro que é de R$ 1.200,00 anuais ou seja R$ 100,00 por mês com um suporte que de fato que é 24 horas por dia e 7 dias por semana". Bom até o momento de hoje estou feliz com eles OBRIGADO PELA ATENÇÃO.

ACBrLib

MensagemEnviado: 29 Jun 2020 12:37
por JoséQuintas
AutomoSistema escreveu:no inicio do ano eles lançaram uma Api muito boa que são as DLLs até o momento não conheço algo melhor do que estas Api em relação custo e beneficio.


Pois é, agora eles estão ficando igual a SefazClass de 10 anos atrás, que aliás, nem é DLL, é no próprio fonte.
Mudanças do governo... sei lá, acho que teve há mais de um ano, nem lembro, pelo menos pra NFE,CTE,MDFE,NFCE.
E isso tudo começou em 2008, pra quem até hoje ainda não entendeu XML, qualquer mudança em TXT ou INI precisa de versão nova.

Mas de qualquer forma, no ACBR há outras coisas além de NFE, CTE, MDFE, e NFCE.
Se é pra usar ACBR pra outras coisas, não há porque trocar só uma parte.

ACBrLib

MensagemEnviado: 29 Jun 2020 13:25
por JoséQuintas
Só pra lembrar:

A HBNFE era exatamente igual ao ACBR, por isso era complicada.
Falar bem da DLL do ACBR, é concordar com o que eu disse há mais de 10 anos kkkkk

Só repassando a história:

hbnfe mostrou como assinar XML, foi assim que nasceu a SefazClass.
Eu até ia atualizar hbnfe, mas o objetivo da hbnfe era ser compatível com ACBR, e isso era só complicação.
Por não ser compatível com ACBR, SefazClass virou projeto separado.
Depois, por contribuição, usuários me enviaram os danfes, baseados na HBNFE, alguns modificados da hbnfe, e outros novos.
O Danfe de NFE atualizei pra se configurar automático conforme o XML, e eliminei as opções de modo paisagem de tudo, pra facilitar.
Na época eram versões antigas de NFE, CTE, MDFE e nem existia NFCE.

Eu só uso NFE, CTE e MDFE, e somente São Paulo.
Todo restante, que eu não uso, incluindo NFCE foi feito conforme usuários testavam, ou usuário que enviou o Danfe pra NFCE/QRCode.

Lógico, se eu NÃO USO, não tenho como testar, e muito menos testar várias possibilidades, ou UFs que não tenho certificado.

Converter TXT pra XML? Basta usar a cabeça
O usuário não quer aprender a gerar XML...
Mas pra ele usar de graça, vou aprender a gerar TXT e a converter txt? e alterar sempre que tiver mudança?
Praticamente teria que virar funcionário dele? tenha dó né, aí já é querer demais.

O fonte é Harbour puro.
Tem lá o método e os parâmetros necessários, igual chamar uma função passando parâmetros.
Precisa de ajuda? pra que? pra dizer que cUF é a UF, cAmbiente é o ambiente, cCertificado é o certificado?

Ou pra dizer que o webservice de autorizar nota é pra autorizar nota, que de cancelar é pra cancelar, que de consultar status é pra consultar status?

Talvez um dia eu use o ACBR, se eles não vincularem atualização obrigatória, até mesmo quando não precisa atualizar.
É... porque faz mais de um ano que não precisa mudar nada.
Se obriga a atualizar, é só pra continuar pagando mensalidade....

Se não for isso, me digam, qual foi a última mudança que obrigou a atualizar o ACBR?

ACBrLib

MensagemEnviado: 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

MensagemEnviado: 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

MensagemEnviado: 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

MensagemEnviado: 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

MensagemEnviado: 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

MensagemEnviado: 29 Jun 2020 14:22
por JoséQuintas
Chamou atenção no fonte VB de exemplo

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/trunk2/Projetos/ACBrLib/Demos/VB6/NFe/Imports/ACBrNFe.cls

ACBrLib

MensagemEnviado: 29 Jun 2020 14:26
por JoséQuintas
Em Harbour.... apesar de esquisito...

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/trunk2/Projetos/ACBrLib/Demos/Harbour/NFe/ACBrNFe.prg

ACBrLib

MensagemEnviado: 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.

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

MensagemEnviado: 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

MensagemEnviado: 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

MensagemEnviado: 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

MensagemEnviado: 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

MensagemEnviado: 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.

#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

MensagemEnviado: 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

MensagemEnviado: 27 Out 2020 14:54
por pauloa1
Olá!

vc está usando isso nfe:LimparLista()
antes de enviar o camando pra imprimir ?

Paulo

ACBrLib

MensagemEnviado: 27 Out 2020 14:58
por pauloa1
Se não for o limpalista()
coloca nesse código:

Onde tem if !Empty(hResult)
bufferLen := STR_LEN
buffer := Space(bufferLen)
oErr := DllCall(oDll, DLL_STDCALL, "NFE_UltimoRetorno", @buffer, @bufferLen)
MsgStop(buffer, "Erro: "+Str(hResult))
endif

coloca

Onde tem if !Empty(hResult)
bufferLen := STR_LEN

If bufferLen > STR_LEN
buffer := Space(bufferLen + 256 )
endif

buffer := Space(bufferLen)
oErr := DllCall(oDll, DLL_STDCALL, "NFE_UltimoRetorno", @buffer, @bufferLen)
MsgStop(buffer, "Erro: "+Str(hResult))
endif

Paulo

ACBrLib

MensagemEnviado: 27 Out 2020 16:18
por oribeiro
Paulo,

Obrigado por tentar ajudar.

Tentei com o comando nfe_limparlista e sem ele, mas o resultado é o mesmo.

Alguma outra sugestão?

ACBrLib

MensagemEnviado: 28 Out 2020 09:11
por pauloa1
Tentou a segunda opção que passei?

Paulo

ACBrLib

MensagemEnviado: 29 Out 2020 13:28
por oribeiro
Tentei. Mas não deu resultado.
Você conseguiu rodar o exemplo que eu enviei anexo?

ACBrLib

MensagemEnviado: 29 Out 2020 14:55
por pauloa1
No seu exe anexado abre a danfe normal.

Você carregou o xml antes do comando imprimir?

nfe:LimparLista()
NFE:CarregarXML(xml )
NFE:Imprimir( ,0, ,"True" , , , )

Paulo

ACBrLib

MensagemEnviado: 29 Out 2020 15:54
por oribeiro
O meu EXE abre normal, mas você tentou abrir o SAT logo depois da NFE? Ou abrir primeiro o SAT e depois a NFe? Aqui dá erro.

ACBrLib

MensagemEnviado: 30 Out 2020 09:17
por pauloa1
Eu não uso SAT.

Paulo

ACBrLib

MensagemEnviado: 30 Out 2020 09:55
por oribeiro
Paulo,
Tente executar o meu exemplo e imprimir a NFe e logo depois o SAT, sem sair do programa. Você vai ver o erro.

ACBrLib

MensagemEnviado: 30 Out 2020 11:03
por JoséQuintas
Que eu me lembre, no fonte da ACBRDLL pode ser feito em duas etapas.

O que acontece? Precisa caber o resultado na variável.
Quando o resultado não cabe, é chamado novamente, ou como complemento, pra pegar a mensagem maior.

Tipo:

buffer := 256
variavel := Space(buffer)
ChamaRotina( @variavel, @buffer )
IF buffer > 256
   novavariavel := Space(buffer)
   // outra rotina com variavel maior
ENDIF


Variável por referência é pointer, uma posição da memória.
Cada linguagem de programação tem seu próprio estilo de controle disso.
Ao passar a string por referência, está indicando a posição da memória.
A DLL vai gravar a nova string nesse espaço de memória, e se a string for maior, é quando invade posição de memória que não faz parte da variável, causando GPF.
Pra evitar esse erro, é onde o ACBR usou a limitação de tamanho.
Acontece que pode existir conteúdo maior que esse tamanho, então o conteúdo fica incompleto.
O ACBR tem lá no PRG uma segunda chamada, pra quando acontece isso, usando uma string maior pra pegar o resultado completo.

Verifica se na parte que fez colocou essa "chamada de complemento".
Ela usa o tamanho que foi retornado na primeira chamada.

ACBrLib

MensagemEnviado: 30 Out 2020 11:22
por JoséQuintas
Usando o que postaram antes:

bufferLen := STR_LEN
buffer := Space(bufferLen)
oErr := DllCall(oDll, DLL_STDCALL, "NFE_UltimoRetorno", @buffer, @bufferLen)


Esse bufferlen tem duas funções:

1 - avisar o ACBR sobre o limite de texto que cabe
2 - por referência é para que o ACBR retorne nela qual o tamanho usado/necessário.

Se o tamanho é maior do que o texto, significa que faltou espaço, e é onde entra a segunda chamada.

Outra alternativa seria alterar de Space(256) pra Space(50000), pelo menos vai ter menos exceções.
E sempre usar Substr( variavel, ntamanho ) no resultado, porque o espaço adicional vai conter "lixo".

ACBrLib

MensagemEnviado: 30 Out 2020 15:31
por oribeiro
José Quintas,
Se possível, por favor, compile o exemplo que coloquei acima e veja se consegue me ajudar.
Não consigo imprimir NFe e SAT sem antes sair da aplicação. Isso está me tirando o sono.
Obrigado.

ACBrLib

MensagemEnviado: 30 Out 2020 18:29
por Itamar M. Lins Jr.
Olá!
Não consigo imprimir NFe e SAT sem antes sair da aplicação. Isso está me tirando o sono.


Já testou com o Harbour usando GCC ?

Está usando xHarbour com qual compilador ? BCC 5x ?

Saudações,
Itamar M. Lins Jr.

ACBrLib

MensagemEnviado: 30 Out 2020 19:28
por oribeiro
Uso xHarbour 1.2.3. Build 20180311
Bcc73

Itamar,
Por favor, tente compilar o exemplo que coloquei num zip anexo acima para ver se imprime NFe e Sat .
Obrigado

ACBrLib

MensagemEnviado: 31 Out 2020 07:23
por Itamar M. Lins Jr.
Ola!
Cadê o PRG PURO! sem fivewin, etc... para compilar com qualquer Harbour ?
O ZIP só tem EXE

Saudações,
Itamar M. Lins Jr.

ACBrLib

MensagemEnviado: 31 Out 2020 14:00
por oribeiro
Itamar,

O Anexo contém o PRG com FiveWin (não sei usar somente o xHarbour).

Contém também as DLL, Acbrlib.ini e dois xmls de exemplo, um de nfe e outro de sat.

Obrigado pelo seu interesse em ajudar.

ACBrLib

MensagemEnviado: 02 Nov 2020 09:50
por rubens
Bom dia...
No anexo que baixei aqui não tem prg não...
Os teste que fiz no executável aqui... só imprime um independente da ordem... quando vai imprimir o outro dá pau...
Lista.JPG


att..
Rubens

ACBrLib

MensagemEnviado: 02 Nov 2020 11:59
por JoséQuintas
Agora faça outro teste.
Salve quantos XML quiser em uma pasta, e nessa pasta chame o test.exe, e acione a primeira opção, de gerar danfe.

test.zip
(769.65 KiB) Baixado 236 vezes


FUNCTION TestDanfe()

   LOCAL oDanfe, oFile, oFileList, cFilePdf

   oFileList := Directory( "*.xml" )
   FOR EACH oFile IN oFileList
      oDanfe := hbNfeDaGeral():New()
      cFilePdf := Substr( oFile[ F_NAME ], 1, At( ".", oFile[ F_NAME ] ) ) + "pdf"
      fErase( cFilePdf )
      //oDanfe:cLogoFile := JPEGImage()
      oDanfe:cDesenvolvedor := "www.josequintas.com.br"
      oDanfe:ToPDF( oFile[ F_NAME ], cFilePdf )
      ? oFile[ F_NAME ], oDanfe:cRetorno
      PDFOpen( cFilePdf )
   NEXT

   RETURN NIL

FUNCTION PDFOpen( cFile )

   IF File( cFile )
      WAPI_ShellExecute( NIL, "open", cFile, "",, WIN_SW_SHOWNORMAL )
      Inkey(1)
   ENDIF

   RETURN NIL

ACBrLib

MensagemEnviado: 03 Nov 2020 10:57
por rubens
Bom dia...
Quintas...
Usei muito a sua solução.. e foi muito satisfatória e sou muito grato a você.
Não querendo cuspir no prato que comi... mas fica muito dependente de você...
Qualquer alteração que precisa a gente precisa mudar os fontes... e daí não consegue acompanhar as suas atualizações..
Daí o interesse pelo ACBRLIB ou ACBRDLL.. Já estou usando para impressão e colocarei para emitir nfce. Então quanto mais gente aderir e pudermos ajudar uns aos outros menos bugs aparecerão nos clientes..
Houve mudança em algo, tipo layout etc o time do acbr faz as mudanças e a gente só baixa a DLL de novo..
E isso vale para toda a parte fiscal.. .

Att..

Rubens

ACBrLib

MensagemEnviado: 03 Nov 2020 12:03
por oribeiro
Rubens,
Bom dia. Me ajuda a resolver esse erro. Não consigo imprimir NFe e SAT no mesmo programa, sem ter que sair dele antes. É ruim heim! Risos
Segue o programa:

#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_CDECL, "NFE_Inicializar", hb_StrToUTF8("ACBrLib.Ini"), hb_StrToUTF8(""))
    hResult := DllCall(oDll, DLL_CDECL, "NFE_CarregarXML", hb_StrToUTF8(eArquivoOuXml))
    hResult := DllCall(oDll, DLL_CDECL, "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_CDECL, "NFE_UltimoRetorno", @buffer, @bufferLen)
       MsgStop(buffer, "Erro: "+Str(hResult))
    endif
    DllCall(oDll, DLL_CDECL, "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_CDECL, "SAT_Inicializar", hb_StrToUTF8("ACBrLib.Ini"), hb_StrToUTF8(""))
    hResult := DllCall(oDll, DLL_CDECL, "SAT_ImprimirExtratoVenda", hb_StrToUTF8(eArquivoOuXml), hb_StrToUTF8(cImpressora))
    if !Empty(hResult)
       bufferLen := STR_LEN
       buffer    := Space(bufferLen)
       oErr := DllCall(oDll, DLL_CDECL, "SAT_UltimoRetorno", @buffer, @bufferLen)
       MsgStop(buffer, "Erro: "+Str(hResult))
    endif
    DllCall(oDll, DLL_CDECL, "SAT_Finalizar")
    DllUnload(oDll)
return nil


ACBrLib

MensagemEnviado: 03 Nov 2020 16:58
por rubens
Boa tarde...
Pelo que vi de diferente aí do que eu uso.... é só a liberação da DLL...
Tenta depois do dllunload aí colocar

oDll := NIL

Não consigo compilar seu exemplo agora... mas a noite vou compilar (com harbour sem lib) e te falo o resultado...

Att..
Rubens

ACBrLib

MensagemEnviado: 03 Nov 2020 17:45
por oribeiro
Obrigado Rubens, pela sua disposição em ajudar.
Não havia colocado oDll:=Nil antes porque a variável está definida como local em cada função.
Mesmo assim, eu coloquei agora, compilei e infelizmente o problema persiste.
Só dá para imprimir o outro documento se sair do programa e entrar novamente. Parece que algo está ficando na memória depois da impressão.
Aguardo a sua compilação a noite para ver se descobre algo que possa ser feito.

ACBrLib

MensagemEnviado: 03 Nov 2020 19:05
por JoséQuintas
Vai no chute....

Tente uma coisa: usar variáveis diferentes das usadas nas chamadas.
Algumas podem ser passadas como pointer, como referência com a variável da DLL.
De repente, alguma dessas variáveis podem estar prendendo a DLL.

Ou outra tentativa:
Uma vez carregada a DLL, não descarregue a não ser no final do programa.
Se o problema está em carregar/descarregar, estaria sendo eliminado isso.

ACBrLib

MensagemEnviado: 04 Nov 2020 09:40
por MSDN
Minha sugestão é que olhe com atenção o arquivo INI, ali é que realmente importa no caso do ACBr LIB, pois ele configura o comportamento da DLL.
Link com as informações possíveis no INI : https://acbr.sourceforge.io/ACBrLib/ConfiguracoesdaBiblioteca17.html
Muitas vezes, a falta de informar no INI que era para salvar um arquivo pode ocasionar erros incompreensíveis no ACBr ( o Quintas vai comentar sobre isso...rss ), já passei por isso, tanto com o ACBr LIB como programando em Delphi com ACBr.

ACBrLib

MensagemEnviado: 04 Nov 2020 11:20
por Itamar M. Lins Jr.
Olá!
Infelizmente(no caso de testes) ele usar xHarbour com Fivewin.
Acredito que aqui usamos Harbour com Minigui, Hwgui.
Dificulta fazermos testes. Um exemplo CRU(sem lib visual) seria mais fácil para todos testarem.

Saudações,
Itamar M. Lins Jr.

ACBrLib

MensagemEnviado: 04 Nov 2020 11:45
por Itamar M. Lins Jr.
Olá!
Não querendo cuspir no prato que comi... mas fica muito dependente de você...
Qualquer alteração que precisa a gente precisa mudar os fontes... e daí não consegue acompanhar as suas atualizações..
Daí o interesse pelo ACBRLIB ou ACBRDLL.. Já estou usando para impressão e colocarei para emitir nfce. Então quanto mais gente aderir e pudermos ajudar uns aos outros menos bugs aparecerão nos clientes..


Não vejo dessa forma.
e daí não consegue acompanhar as suas atualizações..

Este pensamento se aplica para o ACBr. Quem está acompanho o "calhamaço" de atualizações que sofre quase diariamente o ACBr ?

A SEFAZCLASS não tem essas mudanças. Apenas correções simples e possíveis atualizações ditadas pelo governo.

Para nós que usamos xBase o projeto do Quintas é bem melhor, pq quanto mais programadores xBase usarem, melhor será(ia). Ainda mais que as correções e adições no código é de fácil entendimento para qualquer programador xBase e usando ACBr é exatamente o contrário. Usando ACBr, estamos dependentes dos programadores de outra linguagem que não é a nossa padrão.
Infelizmente se não cobrar e ter uma equipe com marketing etc... não é valorizado. (Santo de casa não faz milagres.)
Se tivesse BUGs no projeto ou o projeto deixasse a desejar, tudo bem, mais é exatamente o contrário, é bem documentado, os fontes são de fácil entendimento, qualquer pessoa pode fazer forks e mandar paths.
Quando comecei com NFe não tinha o SEFAZCLASS, infelizmente. Mas vejo que é muito mais leve que a ACBRLIB.
Lembrando que pode ser criada a SEFAZCLASS LIB/DLL. Que seria muito mais simples para nós.

Lembrando: Aqui nesse senário não tem segredos, usamos o que MANDA a legislação, toda correção e adição partem do governo, não é exclusividade do pessoal do ACBr.

Agora, podemos nos sentir mais seguros e cômodos usando ACBr, porque estamos pagando.

Saudações,
Itamar M. Lins Jr.

ACBrLib

MensagemEnviado: 04 Nov 2020 13:25
por MSDN
Itamar chegou dando uma voadora e um mata-leão....e tem razão dessa vez !
Eu estudei e fiz muitos e muitos testes para conseguir usar a DLL do Projeto ACBr e emitir NFC-e para o sistema de restaurante que vendo no Mercado Livre.
Ficou uma beleza, é muito rápido o processo de enviar o XML e receber a resposta, não tenho do que me queixar...mas....
1 - Eu tive que fazer um cadastro no site do ACBr com meu CNPJ para ter 15 dias de acesso grátis aos arquivos que são obtidos de forma paga, por isso consegui ter acesso à DLL e fazer os testes necessários para poder ter o sistema OK, após esse período vc não tem mais acesso e pode escolher entre os planos mensais, de 3 meses, de 6 meses ou de 1 ano, sendo que caso queira pagar o valor do plano mensal e ter acesso total por 30 dias corridos ao site e baixar o que precisar nesse período, e depois não pagar mais e só voltar dali a uns 4 meses e pagar novamente o valor mensal, pode ser feito.
No sistema de restaurante anteriormente eu usava a Sefazclass do Quintas para enviar e receber o retorno da Sefaz, no caso da emissão de NFC-e, e a diferença é somente em velocidade, mais nada, o XML é todo criado usando o que o Quintas disponibilizou, então, no fringir do "ovos", o que eu vi nos meus testes ? A Sefazclass usa CAPICOM que só roda no Windows para fazer a comunicação com a Sefaz, e outra DLL para assinar o XML, o ACBr não usa CAPICOM, utiliza outras DLL que funcionam tanto em Windows como Linux, e que são mais rápidas que a CAPICOM, fora isso, no ACBr vc precisa ter a pasta Schemas para que ele valide o XML que vc fez contra as "matrizes" para ver se tudo está ok, mas esse serviço é totalmente dispensável se vc como programador fizer o que está escrito no site da Sefazclass, que é ler a documentação oficial do governo e entender de uma vez por todas como deve dispor as informações dentro do XML, pq criar o XML é a coisa mais fácil do mundo, o problema todo é entender o que e como colocar dentro do XML.
RESUMINDO - eu já programei com ACBr no Delphi para NF-e e NFC-e, e vendo o projeto ACBr LIB que usa DLL, ficou claro que o que falta para a Sefazclass decolar é só trocar o CAPICOM por outra DLL (a usada pelo ACBr).
Tanto o ACBr como os componentes da Tecnospeed por exemplo, não criam o XML pra vc, eles só cuidam de enviar e dar retorno do que foi enviado, a parte mais dificil de todo o processo é entender as regras fiscais para montar o XML, e não enviar ele para a Receita !!!!
De minha parte, quero ver se ainda este ano consigo dar inicio nos testes com Sefazclass+SSL, e claro, tendo sucesso vou passar pro Quintas disponibilizar no Git da Sefazclass.

ACBrLib

MensagemEnviado: 04 Nov 2020 15:00
por oribeiro
Grande Quintas,
Foi só não descarregar a DLL que resolveu o meu problema.
A sua sugestão foi certeira!
Muitíssimo obrigado.

ACBrLib

MensagemEnviado: 05 Nov 2020 13:16
por Itamar M. Lins Jr.
Olá!
quero ver se ainda este ano consigo dar inicio nos testes com Sefazclass+SSL,


Aguardando.
Será bom para a SEFAZCLASS, não sabia dessa limitação, fui olhar os fontes e só funciona com CAPICOM e está desfasado mesmo.
Bom também que o
oribeiro escreveu:Grande Quintas,
Foi só não descarregar a DLL que resolveu o meu problema.
A sua sugestão foi certeira!
Muitíssimo obrigado.
resolveu o problema dele.

Saudações,
Itamar M. Lins Jr.

ACBrLib

MensagemEnviado: 07 Nov 2020 00:13
por rochinha
Amiguinhos,

Sei que resolveu seu problema. Mas como o uso de carregamentos de DLL/OCX geralmente faço no corpo principal uma unica vez para evitar travamentos pense nas seguintes mudanças:

#include 'FIVEWIN.CH'
#define DLL_CDECL   0x08
#define DLL_STDCALL 0x20
#define DLL_SYSTEM  0x04
#define STR_LEN     256
   
function Main()
   local oWnd
   public oACBrNFe32 := DllLoad( 'ACBrNFe32.dll' )
   public oACBrSat32 := DllLoad( 'ACBrSat32.dll' )
   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 := oACBrNFe32 // DllLoad( 'ACBrNFe32.dll' )
...   

static function ImprimirSAT(eArquivoOuXml, cImpressora)
    local hResult, bufferLen, buffer, oErr
    local oDll := oACBrSat32 // DllLoad( 'ACBrSat32.dll' )
...


Assim o carregamento estará na memória sempre mas a chamada poderá ocorrer quantas vezes necessárias sem precisar descarregar.

ACBrLib

MensagemEnviado: 07 Nov 2020 05:38
por oribeiro
Grande Rochinha,
Muito obrigado pela dica.
No meu sistema, eu estou utilizando três classes, uma para cada DLL: NFe, SAT e CTe. Agora estão todas funcionando 100%. Se alguém desejar utilizá-las, avise que eu disponibilizo.
Um abraço a todos.

ACBrLib

MensagemEnviado: 10 Mar 2021 10:34
por rossine
Olá,

Sobre esta AcbrLib, ela é o acbrnfe32.dll ?

Tem alguem usando ela para NFC-e ?

Obrigado,

ACBrLib

MensagemEnviado: 28 Out 2021 20:59
por jairfab
Como fazer e enviar carta de correção de uma nota fiscal com esta dll?

Alguém estar fazendo isto com esta dll e poderia postar um exemplo?

ACBrLib

MensagemEnviado: 29 Out 2021 08:30
por lucimauro
Bom dia Jair;
Voce usa o acbrmoniturplus para emitir CCe e agora queria fazer com acbrlib?

ACBrLib

MensagemEnviado: 02 Nov 2021 20:22
por oribeiro
Estou usando o ACBrLib

ACBrLib

MensagemEnviado: 02 Nov 2021 22:33
por jairfab
Queria emitir com o acbrdll hoje uso o flexdoc e queria cancelar e fazer carta de correcao e enviar email com pdf em anexo para o cliente.
Ja configurei o acbr ja consigo enviar nfe para o ambiente de homologacao so falta fazer cancelamento e carta de correcao tambem nao estou conseguindo enviar email com a dll acbrdll32. voces poderia me passar um exemplo de enviar email e fazer carta de correcao e cancelamentos para mim ver se vai dar certo

ACBrLib

MensagemEnviado: 02 Nov 2021 22:37
por jairfab
Lucimario eu uso atualmente o flexdoc e estou tentando trocar para acbrnfe dll

ACBrLib

MensagemEnviado: 03 Nov 2021 10:13
por oribeiro
Para todos esses eventos eu uso a função da ACBrLib:

lRet:=nfe:EnviarEvento()

ACBrLib

MensagemEnviado: 03 Nov 2021 14:47
por jairfab
Quanto aos retorno você pega em json ou xml. Neste caso basta gerar então o arquivo .ini que estar na documentação certo

ACBrLib

MensagemEnviado: 05 Nov 2021 10:29
por lucimauro
Bom dia,
Nas configurações da acbrlib voce configura a tag [TipoResposta]
0 = Formato INI (Padrão);
1 = Formato XML;
2 = Formato JSON

Sat,Nfe,Nfce ,Mdfe, Email e boleto bem mais fácil quando agente pega o jeito com a DLL mesmo sendo pago vale a pena ao meu ver.
Mais também pode compilar os fontes com o lazarus.

ACBrLib

MensagemEnviado: 16 Out 2023 09:25
por Mario Mesquita
Bom dia a todos.

Pessoal, dá pra usar essa lib do Acbr numa boa pelo Harbour? Dei de cara com um vídeo deles dizendo que tem versão pra nossa amada linguagem. Fui no site ver que ela tem de bom que eu possa eventualmente usar mas não explica muito bem.

Lendo esse tópico, li algo de assinador digital. Tem mesmo isso e dá pra embarcar nos nossos programas? Isso me interessa, se funciona mesmo...

Agradeço as dicas.

Abraço e boa semana a todos,
Mario.

ACBrLib

MensagemEnviado: 16 Out 2023 10:21
por jairfab
sim funciona 100% no xharbour e no harbour

ACBrLib

MensagemEnviado: 16 Out 2023 13:36
por Mario Mesquita
Boa tarde a todos.

Legal, estou vendo no site quais são as funcionalidades que eles tem a oferecer. Isso de assinador digital me interessa, hoje uso um externo, se for algo que pode ser ativado e gerenciado de dentro do programa, ótimo.

Mas queria saber o que tem mais e como incorpora isso no sistema. Já fiz algo com DLL para gerar QR Code, mas essa eu não conheço.

Saudações,
Mario.

ACBrLib

MensagemEnviado: 16 Out 2023 14:57
por jairfab
Documentação de todas as dll aqui
https://acbr.sourceforge.io/ACBrLib/BemVindo.html

ACBrLib

MensagemEnviado: 16 Out 2023 16:20
por Mario Mesquita
Valeu!

Vi que eles dão os fontes em Delphi/Lazarus, né? Dá pra embutir em sistemas, muito interessante.

Obrigado mesmo.

ACBrLib

MensagemEnviado: 16 Out 2023 18:51
por jairfab
sim eu compilo as dll em lazarus e utilizo em harbour e xharbour

Uso para e-social, nfe, email. boleto etc.

ACBrLib

MensagemEnviado: 17 Out 2023 08:39
por Mario Mesquita
Bom dia a todos.

Então não dá pra usar as DLLs originais diretamente? Tem que gerar pelo Lazarus? Ou vc dá um tempero seu nas funcionalidades pra adaptar ao seu sistema?

Saudações,
Mario.

ACBrLib

MensagemEnviado: 17 Out 2023 08:56
por lucimauro
Ola,
As DLL originais são geradas semanalmente e distribuídas para os assinantes AcbrPRO, então para quem não é tem que gerar as DLL usando o lazarus

ACBrLib

MensagemEnviado: 17 Out 2023 09:57
por Itamar M. Lins Jr.
Olá!
Até onde sei, o ACBr não tem assinatura de documentos.
Eu gero aqui a DLL e o ACBRMonitor, em 64Bits e 32Bits usando o Lazarus.
Não uso a DLL pois não vejo necessidade como falei de agregar esse módulo em TODO o sistema pois ele é para o CAIXA e a parte de emissão de NFe, geralmente em outro setor das empresas.
Meu sistema é monolítico, 1 modulo apenas. Teria que dividir em no mínimo 2 (exe) para usar a DLL(caixa) e emissão da NFe.
Usando ACBrMonitor fico mais a vontade de instalar ele onde convém.

Saudações,
Itamar M. Lins Jr.