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á 1870 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 SAC ACBr

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á 1870 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...