Ir para conteúdo
  • Cadastre-se

dev botao

ACBrLibSat - Demo e Classe em HARBOUR e xHARBOUR


Ver Solução Respondido por Rafael Dias,
  • Este tópico foi criado há 2010 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Pessoal boa tarde

 

O @Rafael Dias, desenvolveu uma classe e demo da lib acima para HARBOUR, a qual estou testando e fazendo ajustes para xHARBOUR, o empenho que ele dispôs nesse projeto,  é algo imensurável em termos de dedicação e conhecimento.

Com isso, acredito que esta classe , deva alavancar a adesão e migração de muitos assinantes FREE para SAC, pois o uso da DLL, trará muitas vantagens para todos, com maior controle dos seus aplicativos, sombreamento de suas aplicações e quiçá ,  independência em relação ao MONITOR, sem contar a economia, da não necessidade de assinaturas  de DLL's de terceiros por CNPJ.

Logo devo repassar ao Rafael os testes e os ajustes que fiz, a fim de atender também ao xHARBOUR, que passará pelo crivo dos seus conhecimentos para análise e demais ajustes que se fizerem necessários.

Estarei envolvendo usuários em geral dos grupos/fóruns de HARBOUR, xHARBOUR  e FIVEWIN, assinantes ou não do ACBR no intuito da difusão desta facilidade e de agregar colaboradores.

Obs: Está a caminho as demais classes de HARBOUR/xHARBOUR para ACBREMAIL, NFE e etc...

  • Curtir 7
  • Obrigado 1

Jorge Andrade

 

"Quem tem medo de perguntar, está fadado a eternizar-se na dúvida - [Jorge Andrade]";
 

"A soberba,  é o sentimento caracterizado pela pretensão de superioridade sobre as demais pessoas, levando a manifestações ostensivas de arrogância, por vezes sem fundamento algum em fatos ou variáveis reais - [Desconhecido";
 

"Aquele  que pesquisa antes de indagar, tem a grande chance de dirimir as suas dúvidas, fixar o aprendizado da pesquisa e evoluir para outros conhecimentos inesperados - [Jorge Andrade]";
 

"Os políticos e as fraldas devem ser trocados frequentemente e pela mesma razão - [Éça de Queiroz]".

  • 2 semanas depois ...
  • Administradores
Postado

Bom dia Jorge,

Que legal sua animação e contribuir com esse novo projeto, parabéns.

Att.

  • Curtir 2
Consultora ACBr Pro

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • 3 meses depois ...
  • Membros Pro
Postado

Ola Jorge, 

Ótima noticia, desenvolvo em Harbour, já consegui compilar os exemplos do SAT mas não estou conseguindo inicializar a LIB, podeira me ajudar

Postado

Boa tarde amigo,

 

Vc está usando a CLASSE desenvolvida pelo Rafael ou a DLL direta? Se for a CLASSE , além do exemplo que ele disponibilizou, para o formato INI, eu fiz alguns exemplos xHarbour usando a CLASSE,  só que eu gero o XML e não arquivo INI, mas de qualquer forma vou disponibilizar alguma coisa aqui, segue abaixo:

 

Exemplos de comando e  configuração

 

   sat := ACBrSat():New("", "")
   sat:ConfigGravarValor("Principal", "LogNivel", "4")
   sat:ConfigGravarValor("SAT", "Modelo", "2")

   sat:ConfigGravarValor("SAT", "ArqLog", "C:\windows\temp\satlog")
   sat:ConfigGravarValor("SAT", "NomeDLL", "C:\ACBrMonitorPLUS\SAT\elgin\dllsat.dll")
   sat:ConfigGravarValor("SAT", "CodigoDeAtivacao", "123456789")
   sat:ConfigGravarValor("SAT", "SignAC", "SGR-SAT SISTEMA DE GESTAO E RETAGUARDA DO SAT")
   sat:ConfigGravarValor("SATConfig", "ide_numeroCaixa", "3") //ide_numeroCaixa Define o numero de caixa padrão da CFe.
   sat:ConfigGravarValor("SATConfig", "ide_tpAmb", "0") //ide_tpAmb  taProducao = 0  taHomologacao = 1
   sat:ConfigGravarValor("SATConfig", "EhUTF8", "") //EhUTF8 Define se devemos utilizar codificação UTF8 ao se comunicar com o SAT.
   sat:ConfigGravarValor("SATConfig", "infCFe_versaoDadosEnt", "0,07") //infCFe_versaoDadosEnt Define qual será a versão do CFe utilizada.Ex.: 0,07 ou 0,08
   sat:ConfigGravarValor("SATConfig", "PaginaDeCodigo", "0") //PaginaDeCodigo Define a pagina de código que se deve utilizar ao se comunicar com o SAT.

   sat:ConfigGravarValor("SATConfigArquivos", "PastaCFeVenda", "X:\acbr\NFESAI\AUTORIZA\59") //PastaCFeVenda Define o caminho onde será salvos os arquivos de venda.
   sat:ConfigGravarValor("SATConfigArquivos", "SalvarCFe","0" ) //SalvarCFe Define se será salvo o arquivo de venda.
   sat:ConfigGravarValor("SATConfigArquivos", "SalvarCFeCanc", "0") //SalvarCFeCanc Define se será salvo o arquivo de cancelamento.
   sat:ConfigGravarValor("SATConfigArquivos", "SalvarEnvio", "0") //SalvarEnvio Define se será salvo o arquivo de envio para o sat.

  //sat:ConfigGravarValor("SATConfigArquivos", "SepararPorCNPJ", "0") //SepararPorCNPJ Define se deverá separar os arquivos por CNPJ.
  //sat:ConfigGravarValor("SATConfigArquivos", "SepararPorModelo", "0") //SepararPorModelo Define se deverá separar os arquivos por modelo.
  //sat:ConfigGravarValor("SATConfigArquivos", "SepararPorAno", "0") //SepararPorAno Define se deverá separar os arquivos por ano.
  //sat:ConfigGravarValor("SATConfigArquivos", "SepararPorMes", "0") //SepararPorMes Define se deverá separar os arquivos por mês.
  //sat:ConfigGravarValor("SATConfigArquivos", "SepararPorDia", "0") //SepararPorDia Define se deverá separar os arquivos por dia.

   sat:ConfigGravarValor("SATConfig", "ide_CNPJ", "14200166000166") //ide_CNPJ Exemplo da elgin: 16716114000172 Define o padrão CNPJ do emitente da CFe.
   sat:ConfigGravarValor("SATConfig", "emit_IE", "144842258111") //emit_IE Define o IE padrão do emitente do CFe.
   //sat:ConfigGravarValor("SATConfig", "emit_IM", "inscricao municipal do emitente") //emit_IM Define o IM padrão do emitente do CFe.
   sat:ConfigGravarValor("SATConfig", "emit_cRegTrib","0") //emit_cRegTrib RTSimplesNacional = 0 RTRegimeNormal = 1
   sat:ConfigGravarValor("SATConfig", "emit_cRegTribISSQN", "6") //emit_cRegTribISSQN RTISS MicroempresaMunicipal = 0
   sat:ConfigGravarValor("SATConfig", "emit_indRatISSQN", "0") //emit_indRatISSQN  Define indicador de rateio do desconto sobre subtotal entre itens sujeitos a

   sat:ConfigGravarValor("SATConfig", "emit_CNPJ", "16716114000172") //emit_CNPJ Exemplo da elgin: 14200166000166 Define o CNPJ padrão do emitente da CFe.

   sat:ConfigGravarValor("SATRede", "tipoInter", "0") //0 = infETHE
   sat:ConfigGravarValor("SATRede", "tipoLan", "0")  
   
   sat:ConfigGravarValor("Extrato", "LarguraBobina", "302") //LarguraBobina Define a largura da bobina.
    sat:ConfigGravarValor("Extrato", "MargemSuperior", "2") //MargemSuperior Define a margem superior da impressão.
   sat:ConfigGravarValor("Extrato", "MargemInferior", "4") //MargemInferior Define a margem inferior da impressão.
    sat:ConfigGravarValor("Extrato", "MargemEsquerda", "2") //MargemEsquerda Define a margem esquerda da impressão.
    sat:ConfigGravarValor("Extrato", "MargemDireita", "2") //MargemDireita Define a margem direita da impressão.
   sat:ConfigGravarValor("Extrato", "Tipo", "0") //TipoDefine o tipo de impressão a ser utilizada.tpFortes = 0 tpEscPos = 1
   //sat:ConfigGravarValor("Extrato", "Impressora", "nome a impressora para emissão do cupom") //Impressora Define o nome da impressora padrão a ser utilizada pela impressão.
   sat:ConfigGravarValor("Extrato", "ImprimeChaveEmUmaLinha", "0") //ImprimeChaveEmUma Define se deve imprimir a chave do CFe em apenas uma linha.

 

 

 

Dll's Necessárias , a quais podem ser baixadas por qualquer usuário Sac do Acbr.

ACBrSAT32.dll
ACBrSAT64.dll

libeay32.dll
libexslt.dll
libiconv.dll
libxml2.dll
libxslt.dll
msvcr120.dll
ssleay32.dll

 

 

Espero que seja útil.

 

[]s,

  • Curtir 4

Jorge Andrade

 

"Quem tem medo de perguntar, está fadado a eternizar-se na dúvida - [Jorge Andrade]";
 

"A soberba,  é o sentimento caracterizado pela pretensão de superioridade sobre as demais pessoas, levando a manifestações ostensivas de arrogância, por vezes sem fundamento algum em fatos ou variáveis reais - [Desconhecido";
 

"Aquele  que pesquisa antes de indagar, tem a grande chance de dirimir as suas dúvidas, fixar o aprendizado da pesquisa e evoluir para outros conhecimentos inesperados - [Jorge Andrade]";
 

"Os políticos e as fraldas devem ser trocados frequentemente e pela mesma razão - [Éça de Queiroz]".

  • 2 semanas depois ...
  • Membros Pro
Postado

Obrigado Jorge, o erro era meu, fiz pela classe mas não coloquei estas dlls na pasta do executavel:

libeay32.dll
libexslt.dll
libiconv.dll
libxml2.dll
libxslt.dll
msvcr120.dll
ssleay32.dll

 

Só tinha colocado esta ACBrSAT32.dll.

Já conseguir criar o ini, agora vamos prosseguir o projeto

  • Curtir 1
Postado
14 horas atrás, BRIZOLLA disse:

Obrigado Jorge, o erro era meu, fiz pela classe mas não coloquei estas dlls na pasta do executavel:

libeay32.dll
libexslt.dll
libiconv.dll
libxml2.dll
libxslt.dll
msvcr120.dll
ssleay32.dll

 

Só tinha colocado esta ACBrSAT32.dll.

Já conseguir criar o ini, agora vamos prosseguir o projeto

Amigo bom dia. Maravilha, por favor, documente aqui a evolução, possíveis problemas e soluções para que sirvam de apoio para os demais colegas do fórum e qeum sabe possíveis melhorias na CLASSE criada pelo Rafael.

[],

  • Curtir 1

Jorge Andrade

 

"Quem tem medo de perguntar, está fadado a eternizar-se na dúvida - [Jorge Andrade]";
 

"A soberba,  é o sentimento caracterizado pela pretensão de superioridade sobre as demais pessoas, levando a manifestações ostensivas de arrogância, por vezes sem fundamento algum em fatos ou variáveis reais - [Desconhecido";
 

"Aquele  que pesquisa antes de indagar, tem a grande chance de dirimir as suas dúvidas, fixar o aprendizado da pesquisa e evoluir para outros conhecimentos inesperados - [Jorge Andrade]";
 

"Os políticos e as fraldas devem ser trocados frequentemente e pela mesma razão - [Éça de Queiroz]".

  • Membros Pro
Postado

Bom dia,

preciso de mais uma ajuda, como postei consegui rodar a lib, mas estou com um erro no comando DesInicializar(), não gera retorno, percebi que gera um log de erro mas não descobri o problema, segue erro:

14/10/19 10:45:58:834 - TLibNFeConfig.AplicarConfiguracoes: C:\mgi\ACBrLib.ini
14/10/19 10:45:58:839 - Travar
14/10/19 10:45:58:845 - TLibNFeConfig.AplicarConfiguracoes - Feito
14/10/19 10:45:58:850 - Destravar
14/10/19 10:45:59:036 - TLibNFeConfig.Ler - Feito
14/10/19 10:45:59:041 - Destravar
14/10/19 10:45:59:047 - LIB_Inicializar( ,  )
14/10/19 10:45:59:053 -    ACBrLibNFe - 0.1.1
14/10/19 10:45:59:058 -    SetRetorno(0, )
14/10/19 10:45:59:063 - TACBrLibNFe.Inicializar
14/10/19 10:45:59:069 - TACBrLibNFe.Inicializar - Feito
14/10/19 10:45:59:075 - Travar
14/10/19 10:45:59:080 - TLibNFeConfig.Ler: C:\mgi\ACBrLib.ini
14/10/19 10:45:59:086 - TLibNFeConfig.AplicarConfiguracoes: C:\mgi\ACBrLib.ini
14/10/19 10:45:59:144 - Travar
14/10/19 10:45:59:150 - TLibNFeConfig.AplicarConfiguracoes - Feito
14/10/19 10:45:59:155 - Destravar
14/10/19 10:45:59:160 - TLibNFeConfig.Ler - Feito
14/10/19 10:45:59:164 - Destravar
14/10/19 10:45:59:170 - LIB_Inicializar( , *** )
14/10/19 10:45:59:174 -    ACBrLibNFe - 0.1.1
14/10/19 10:45:59:179 -    SetRetorno(0, )
14/10/19 10:46:00:966 - Finalizar
 

a unica coisa que percebi foi nesta linha:

14/10/19 11:00:05:012 - LIB_Inicializar( , *** )
tem ***

 

este é o código:

//---------------------------------------------

Function ACBrLibConfig()
   local nfe
   nfe := ACBrNFe():New( "", "" )

   // Salvando configurações
   nfe:ConfigGravar("")
   nfe:Inicializar()
   nfe:DesInicializar()
   nfe:Destroy()
   nfe := nil
return NIL

//--------------------------------------------

a classe não fiz nenhuma alteração, é a mesmo da demonstração somente o nome dos comandos de SAT_ para NFE_.

se puderam me dar uma luz, agradeço

Postado
3 horas atrás, BRIZOLLA disse:

Bom dia,

preciso de mais uma ajuda, como postei consegui rodar a lib, mas estou com um erro no comando DesInicializar(), não gera retorno, percebi que gera um log de erro mas não descobri o problema, segue erro:

14/10/19 10:45:58:834 - TLibNFeConfig.AplicarConfiguracoes: C:\mgi\ACBrLib.ini
14/10/19 10:45:58:839 - Travar
14/10/19 10:45:58:845 - TLibNFeConfig.AplicarConfiguracoes - Feito
14/10/19 10:45:58:850 - Destravar
14/10/19 10:45:59:036 - TLibNFeConfig.Ler - Feito
14/10/19 10:45:59:041 - Destravar
14/10/19 10:45:59:047 - LIB_Inicializar( ,  )
14/10/19 10:45:59:053 -    ACBrLibNFe - 0.1.1
14/10/19 10:45:59:058 -    SetRetorno(0, )
14/10/19 10:45:59:063 - TACBrLibNFe.Inicializar
14/10/19 10:45:59:069 - TACBrLibNFe.Inicializar - Feito
14/10/19 10:45:59:075 - Travar
14/10/19 10:45:59:080 - TLibNFeConfig.Ler: C:\mgi\ACBrLib.ini
14/10/19 10:45:59:086 - TLibNFeConfig.AplicarConfiguracoes: C:\mgi\ACBrLib.ini
14/10/19 10:45:59:144 - Travar
14/10/19 10:45:59:150 - TLibNFeConfig.AplicarConfiguracoes - Feito
14/10/19 10:45:59:155 - Destravar
14/10/19 10:45:59:160 - TLibNFeConfig.Ler - Feito
14/10/19 10:45:59:164 - Destravar
14/10/19 10:45:59:170 - LIB_Inicializar( , *** )
14/10/19 10:45:59:174 -    ACBrLibNFe - 0.1.1
14/10/19 10:45:59:179 -    SetRetorno(0, )
14/10/19 10:46:00:966 - Finalizar
 

a unica coisa que percebi foi nesta linha:

14/10/19 11:00:05:012 - LIB_Inicializar( , *** )
tem ***

 

este é o código:

//---------------------------------------------

Function ACBrLibConfig()
   local nfe
   nfe := ACBrNFe():New( "", "" )

   // Salvando configurações
   nfe:ConfigGravar("")
   nfe:Inicializar()
   nfe:DesInicializar()
   nfe:Destroy()
   nfe := nil
return NIL

//--------------------------------------------

a classe não fiz nenhuma alteração, é a mesmo da demonstração somente o nome dos comandos de SAT_ para NFE_.

se puderam me dar uma luz, agradeço

Não entendi?  Pq vc não usa CFe que é o documento do Sat ao invés de nfe? Vc quer dizer o retorno do comando? Experimente enviar este comando:   nfe:ConfigGravarValor("SAT", "ArqLog", "path do log") e nfe:ExtrairLogs("nome do arquivo). De qualquer forma vou testar este trecho que vc postou, mas seria interessante vc postar todo o processo..

Jorge Andrade

 

"Quem tem medo de perguntar, está fadado a eternizar-se na dúvida - [Jorge Andrade]";
 

"A soberba,  é o sentimento caracterizado pela pretensão de superioridade sobre as demais pessoas, levando a manifestações ostensivas de arrogância, por vezes sem fundamento algum em fatos ou variáveis reais - [Desconhecido";
 

"Aquele  que pesquisa antes de indagar, tem a grande chance de dirimir as suas dúvidas, fixar o aprendizado da pesquisa e evoluir para outros conhecimentos inesperados - [Jorge Andrade]";
 

"Os políticos e as fraldas devem ser trocados frequentemente e pela mesma razão - [Éça de Queiroz]".

  • Membros Pro
Postado

O meu projeto é NFe, não o Sat, usei o exemplo do Sat porque é só esse que tem em Harbour, fiz somente as correções do nome do comando, porque é só que muda

  • Membros Pro
Postado

consegui pegar o retorno;

CStat=103
CUF=11
DhRecbto=14/10/2019 17:23:29
Msg=Lote recebido com sucesso
NRec=113065074417529
TMed=1
VerAplic=SVRSnfce201908091113
Versao=4.00
XMotivo=Lote recebido com sucesso
tpAmb=2

[Retorno]
CStat=104
CUF=11
ChaveDFe=11191021894569000118650030000004661000019818
Msg=Nota(s) não confirmadas:
466->704-Rejeicao: NFC-e com Data-Hora de emissao atrasada
Protocolo=
VerAplic=SVRSnfce201910020838
Versao=4.00
XMotivo=Lote processado
cMsg=0
nRec=113065074417529
tpAmb=2
xMsg=

[NFe466]
Id=
XML=<protNFe versao="4.00"><infProt><tpAmb>2</tpAmb><verAplic>SVRSnfce201910020838</verAplic><chNFe>11191021894569000118650030000004661000019818</chNFe><dhRecbto>2019-10-14T16:23:29-04:00</dhRecbto><digVal>kzO9skh8eyp15RlJ3sFvJUp7rWY=</digVal><cStat>704</cStat><xMotivo>Rejeicao: NFC-e com Data-Hora de emissao atrasada</xMotivo></infProt></protNFe>
cStat=704
chNFe=11191021894569000118650030000004661000019818
dhRecbto=14/10/2019 16:23:29
digVal=kzO9skh8eyp15RlJ3sFvJUp7rWY=
nProt=
tpAmb=2
verAplic=SVRSnfce201910020838
xMotivo=Rejeicao: NFC-e com Data-Hora de emissao atrasada
)
14/10/19 16:23:30:227 - Destravar
 

Está travando no fechamento mas é erro de programação, vou descobrir, obrigado..

  • Membros Pro
Postado
4 minutos atrás, BRIZOLLA disse:

consegui pegar o retorno;

CStat=103
CUF=11
DhRecbto=14/10/2019 17:23:29
Msg=Lote recebido com sucesso
NRec=113065074417529
TMed=1
VerAplic=SVRSnfce201908091113
Versao=4.00
XMotivo=Lote recebido com sucesso
tpAmb=2

[Retorno]
CStat=104
CUF=11
ChaveDFe=11191021894569000118650030000004661000019818
Msg=Nota(s) não confirmadas:
466->704-Rejeicao: NFC-e com Data-Hora de emissao atrasada
Protocolo=
VerAplic=SVRSnfce201910020838
Versao=4.00
XMotivo=Lote processado
cMsg=0
nRec=113065074417529
tpAmb=2
xMsg=

[NFe466]
Id=
XML=<protNFe versao="4.00"><infProt><tpAmb>2</tpAmb><verAplic>SVRSnfce201910020838</verAplic><chNFe>11191021894569000118650030000004661000019818</chNFe><dhRecbto>2019-10-14T16:23:29-04:00</dhRecbto><digVal>kzO9skh8eyp15RlJ3sFvJUp7rWY=</digVal><cStat>704</cStat><xMotivo>Rejeicao: NFC-e com Data-Hora de emissao atrasada</xMotivo></infProt></protNFe>
cStat=704
chNFe=11191021894569000118650030000004661000019818
dhRecbto=14/10/2019 16:23:29
digVal=kzO9skh8eyp15RlJ3sFvJUp7rWY=
nProt=
tpAmb=2
verAplic=SVRSnfce201910020838
xMotivo=Rejeicao: NFC-e com Data-Hora de emissao atrasada
)
14/10/19 16:23:30:227 - Destravar
 

Está travando no fechamento mas é erro de programação, vou descobrir, obrigado..

Creio que pode ser um erro no comando NFE_Enviar porque ele pega o retorno mas o sistema trava e não mostra, se alguém puder me dar uma luz;

METHOD Enviar(   ) CLASS ACBrNFe
    local hResult, buffer, bufferLen
    bufferLen := STR_LEN
    buffer := Space(bufferLen)   
    hResult := DllCall(::hHandle, DLL_OSAPI, "NFE_Enviar",  '1', .t., .t. , .f., '0', '0', @buffer, @bufferLen)
    ::CheckResult(hResult)

    RETURN  ::ProcessResult(buffer, bufferLen)

 

esta função não tem no DEMO da classe Harbour, pode ser que tenha criado errado.

  • Solution
Postado

Seu método esta implementado errado você colocou parâmetros a mais na chamada

hResult := DllCall(::hHandle, DLL_OSAPI, "NFE_Enviar",  '1', .t., .t. , .f., '0', '0', @buffer, @bufferLen)

os parâmetros destacados estão incorretos.

 

  • Este tópico foi criado há 2010 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.

The popup will be closed in 10 segundos...
The popup will be closed in 10 segundos...