Objeto Unidanfe

Projeto [x]Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Objeto Unidanfe

Mensagem por JoséQuintas »

Link com falha, mas cheguei na página de instalação.

O manual é de algum sonhador, que partiu de uma máquina já com tudo configurado, ou.... de alguém que não tem a menor idéia do que fez, ou .... alguém que vai receber pra dar suporte.

A parte de Harbour parou aqui, não há mais nada a acrescentar.
unimake.png
Só chamou a atenção o "xharbour (versão paga)", nada demais, apenas chamou a atenção.

O problema é a DLL, vai ter que pedir suporte lá, ou ver com alguém que use.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
Alexandre Silva
Usuário Nível 3
Usuário Nível 3
Mensagens: 376
Registrado em: 26 Mar 2007 00:16
Localização: Itapema - SC

Objeto Unidanfe

Mensagem por Alexandre Silva »

Obrigado
Se tiver alguma informacao repasso
* Clipper 5.2e/Gaspro 4.0 /CDX/Blinker 7.0 Harbour 3.2 Console Hbmk2
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Objeto Unidanfe

Mensagem por JoséQuintas »

Pra mim, o manual deveria ter ao menos referência à instalação do Net Framework.
Ou talvez precise instalar TODO UNIDFE além da DLL.
E talvez a DLL só faça a ponte intermediária entre os dois, e nada mais.
Como o manual não menciona porr.. nenhuma.... por adivinhação fica difícil.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
Avatar do usuário
JoséQuintas
Administrador
Administrador
Mensagens: 20267
Registrado em: 26 Fev 2007 11:59
Localização: São Paulo-SP

Objeto Unidanfe

Mensagem por JoséQuintas »

Só lembrando:
uninfe é em NET, o que obriga a instalar NET.
A DLL.... provavelmente é do tipo que fica de intermediária entre win32 e NET, porque isso de CreateObject() não existe pra NET.
Então.... suponho que a DLL seja só uma parte do conjunto, e por isso mencionei do manual ser pra máquina já configurada com algo mais, que não diz lá.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg mt, fivewin 25.04, multithread, dbfcdx, MySQL, ADOClass, PDFClass, SefazClass, (hwgui mt), (hmg3), (hmg extended), (oohg), PNotepad, ASP, stored procedure, stored function, Linux (Flagship/harbour 3.2)
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"

https://github.com/JoseQuintas/
malcarli
Usuário Nível 3
Usuário Nível 3
Mensagens: 239
Registrado em: 20 Ago 2015 18:14
Localização: marilia/sp

Objeto Unidanfe

Mensagem por malcarli »

Olhem isso pessoal


Você que programa em xHarbour, esta é para você.

Nesta quinta-feira (29/05/2022), às 9h, DLL Unimake.DFe com xHarbour na prática.

Integre seu ERP ou PDV para envio dos documentos fiscais eletrônicos (Nfe, Nfce, Cte, MDFe, NFSe, etc.) com a DLL Unimake.Dfe.

Vamos falar e praticar sobre:

- Instalando a DLL para uso na linguagem xHarbour;
- Consumindo o serviço "Consultar Status do Serviço da NFe";
- Consumindo o serviço "Consultar Situação da NFe".

Seja muito mais produtivo na integração com os documentos fiscais eletrônicos (NFe, NFCe, CTe, CTeOS, MDFe, GNRE, NFSe, etc.).

Link para participação:
https://youtu.be/YwQgMJmhNVA

Participe e compartilhe.
Avatar do usuário
jairfab
Usuário Nível 3
Usuário Nível 3
Mensagens: 252
Registrado em: 21 Mai 2007 09:43
Localização: São Paulo, Região Leste - Suzano

Objeto Unidanfe

Mensagem por jairfab »

Gostaria de saber se vai ser abordado o e-Social ?

Outra coisa mudou a data não seria para dia 26/05/2022 amanha!
Delpji 7, harbour 3.2, xharbour 1.2.3, Bcc7, Minigw, Minigui 19.11, hwgui 2.20, FiveWin 19.05 Gtwvw, Gtwvg, C# VS 2017
Avatar do usuário
Jairo Maia
Moderador
Moderador
Mensagens: 2785
Registrado em: 16 Ago 2010 13:46
Localização: Campinas-SP

Objeto Unidanfe

Mensagem por Jairo Maia »

jairfab escreveu:Outra coisa mudou a data não seria para dia 26/05/2022 amanha!
Jair, não trabalho com o e-Social, mas pelo que me consta a tolerância de convivência de versões expirou no último dia 22/05/2022. A partir dessa data somente dados enviados com a versão S-1.0 são aceitos.
Abraços, Jairo
Harbour / Clipper 5.2e - Blinker 7
(Não respondo dúvidas por MP ou E-mail. Por favor, não encaminhe via mensagem privada ou e-mail, dúvidas que podem ser compartilhadas com todos no fórum)
Avatar do usuário
jairfab
Usuário Nível 3
Usuário Nível 3
Mensagens: 252
Registrado em: 21 Mai 2007 09:43
Localização: São Paulo, Região Leste - Suzano

Objeto Unidanfe

Mensagem por jairfab »

Isto mesmo Jairo. eu já enviei vários registros nesta versão porem utilizo o componente unimake pra fazer os envio mas queria saber nesta nova modalidade de uso via dll se tem esocial também?
Delpji 7, harbour 3.2, xharbour 1.2.3, Bcc7, Minigw, Minigui 19.11, hwgui 2.20, FiveWin 19.05 Gtwvw, Gtwvg, C# VS 2017
Avatar do usuário
dbsh
Usuário Nível 3
Usuário Nível 3
Mensagens: 128
Registrado em: 14 Jul 2004 14:19
Localização: ES

Objeto Unidanfe

Mensagem por dbsh »

Vi este tópico ontem
Comecei fazer um teste hoje

Baixe estes dois instaladores em:
http://www.unimake.com.br/downloads.php
1 - DLL UniNFe
2 - DLL de geracao do Danfe

TesteDLLDFe_ValidarCertificadoA1, não funcionou, vou testar mais

CLASSE

Código: Selecionar todos

#pragma /w2
#pragma /es2

//#include 'boni_cmd.ch'
#include 'hbclass.ch'

#define __DFE_NFE_CERT_DIG__   iif(File('certificado.pfx'), Lower(PathAtual()) + 'certificado.pfx', '')
#define __DFE_NFE_CERT_SENHA__ iif(File('certificado.pfx'), '12345678', '')
#define __DFE_NFE_TBAMB__      2
#define __DFE_NFE_CUF__        32
#define __DFE_NFE_VERSAO__     '4.00'

CREATE CLASS DFe

CLASS VAR CertDigArq   INIT __DFE_NFE_CERT_DIG__   //AS TYPE CHARACTER
CLASS VAR CertDigSenha INIT __DFE_NFE_CERT_SENHA__ //AS TYPE CHARACTER 

CLASS VAR TpAmb        INIT __DFE_NFE_TBAMB__      //AS TYPE NUMERIC  // 1-Producao, 2-Homologacao
CLASS VAR CUF          INIT __DFE_NFE_CUF__        //AS TYPE NUMERIC
CLASS VAR Versao       INIT __DFE_NFE_VERSAO__     //AS TYPE CHARACTER

//VAR oDFe PROTECTED INIT NIL   // [[EXPORTED | VISIBLE] | [PROTECTED] | [HIDDEN]] [READONLY | RO]

VAR ConfBasica
VAR DFeError
VAR Error

VAR Certificado
VAR CertDigSel

VAR consStatServ
VAR statusServico

VAR DanfeConf
VAR DanfeServ

METHOD New() CONSTRUCTOR
DESTRUCTOR Destroy

METHOD CarregarCertificadoA1

METHOD Status
METHOD Danfe

//ON ERROR ErrorHandler()

ENDCLASS

/*
METHOD ErrorHandler(e) CLASS DFe
Self:Error := e
RETURN Self
*/

METHOD New(nServico, sCertDigArq, sCertDigSenha) CLASS DFe
LOCAL aCert, xx

//Self:oDFe := CriaVarObjectTemp()
DEFAULT nServico      TO 0 // 0=nfe status serviço, 5=Envio de evento
DEFAULT sCertDigArq   TO Self:CertDigArq
DEFAULT sCertDigSenha TO Self:CertDigSenha

Self:DFeError := CreateObject("Unimake.Exceptions.ThrowHelper")

//colocar certififcado na pasta do sistema "certififcado_cliente_tal-senha.pfx", carrega automático sem precisar configurar
//EX: "certificado_teste-12345678.pfx"
IF Empty(sCertDigArq)
  aCert := Directory('certificado*.pfx')
  IF Len(aCert) > 0
    sCertDigArq := ''
    FOR xx := 1 TO Len(aCert)
      sCertDigArq += (',' + Left(aCert[xx, 1], Rat('-', aCert[xx, 1]) - 1))
    NEXT
    sCertDigArq := SubStr(sCertDigArq, 2)
    IF Len(aCert) = 1
      xx := 1
    ELSE
      xx := Alerta('Certificados encontrados', Split(sCertDigArq, ','))
    ENDIF
    IF xx > 0
      sCertDigArq   := aCert[xx, 1]
      sCertDigSenha := SubStr(aCert[xx, 1], Rat('-', aCert[xx, 1]) + 1)
      sCertDigSenha := Left(sCertDigSenha, Len(sCertDigSenha) - 4)
      Self:CertDigArq := sCertDigArq
      Self:CertDigSenha := sCertDigSenha
    ELSE
      sCertDigArq := ''
    ENDIF
  ENDIF
ENDIF

* Criar configuração básica para consumir o serviço
Self:ConfBasica = CreateObject("Unimake.Business.DFe.Servicos.Configuracao")
Self:ConfBasica:TipoDfe := 0 // 0=nfe
Self:ConfBasica:Servico := nServico
Self:ConfBasica:CertificadoArquivo := sCertDigArq
Self:ConfBasica:CertificadoSenha   := sCertDigSenha

Self:CarregarCertificadoA1()

RETURN Self


METHOD Destroy() CLASS DFe

Self:ConfBasica := NIL
Self:DFeError := NIL
Self:Error := NIL

Self:Certificado := NIL
Self:CertDigSel := NIL

Self:consStatServ := NIL
Self:statusServico := NIL

Self:DanfeConf := NIL
Self:DanfeServ := NIL

RETURN Self


METHOD CarregarCertificadoA1(sCertDigArq, sCertDigSenha) CLASS DFe

DEFAULT sCertDigArq TO Self:ConfBasica:CertificadoArquivo
DEFAULT sCertDigSenha   TO Self:ConfBasica:CertificadoSenha

* Criar objeto com Certificado A1 informado
Self:Certificado := CreateObject("Unimake.Security.Platform.CertificadoDigital")
Self:CertDigSel := Self:Certificado:CarregarCertificadoDigitalA1(sCertDigArq, sCertDigSenha)

RETURN Self


METHOD Status(nTpAmb, nUf, sVersao) CLASS DFe

DEFAULT nTpAmb  TO Self:tpAmb
DEFAULT nUf     TO Self:CUF
DEFAULT sVersao TO Self:Versao

// Criar XML
Self:consStatServ = CreateObject("Unimake.Business.DFe.Xml.NFe.ConsStatServ")
Self:consStatServ:Versao := sVersao
Self:consStatServ:TpAmb  := nTpAmb
Self:consStatServ:CUF    := nUf

* Consumir o serviço
Self:statusServico := CreateObject("Unimake.Business.DFe.Servicos.NFe.StatusServico")
Self:statusServico:Executar(Self:consStatServ, Self:ConfBasica)

RETURN Self


METHOD Danfe(sArqXML, lImprimir, lVisualizar, lExecutar ) CLASS DFe

DEFAULT sArqXML     TO ''
DEFAULT lImprimir   TO .F.
DEFAULT lVisualizar TO .T.
DEFAULT lExecutar   TO .T.

* Configuracoes
Self:DanfeConf := CreateObject('Unimake.Unidanfe.Configurations.UnidanfeConfiguration')
Self:DanfeConf:Arquivo = sArqXML
Self:DanfeConf:Imprimir = lImprimir
Self:DanfeConf:Visualizar = lVisualizar

* Executar Impressao
Self:DanfeServ = CreateObject('Unimake.Unidanfe.UnidanfeServices')
IF lExecutar .and. !Empty(Self:DanfeConf:Arquivo)
  Self:DanfeServ:Execute(Self:DanfeConf)
ENDIF

RETURN Self
Teste

Código: Selecionar todos

PROCEDURE TesteDllDFe()
LOCAL oDFe, oError

BEGIN SEQUENCE WITH {|e| Break(e)}
  ? procline(0)
  oDFe := DFe()
  oDFe:New()
  //TesteDLLDFe_ValidarCertificadoA1(oDFe)
  TesteDLLDFe_Status(oDFe)
  TesteDLLDFe_Danfe(oDFe)
RECOVER USING oError
  ? oError:Description
  ? oError:Operation
  IF !Empty(oDFe:Error)
    ? oDFe:Error:Description
    ? oDFe:Error:Operation
  ENDIF
  ? oDFe:DFeError:GetMessage()
  ? oDFe:DFeError:GetErrorCode()
END SEQUENCE

RETURN


PROCEDURE TesteDLLDFe_Status(oDFe)
LOCAL oError

BEGIN SEQUENCE WITH {|e| Break(e)}
  oDFe:Status()
  ? "XML Retornado pela SEFAZ"
  ? "========================"
  ? oDFe:statusServico:RetornoWSString
  ?
  ? "Codigo de Status e Motivo"
  ? "========================="
  ? AllTrim(Str(oDFe:statusServico:Result:CStat, 5))
  ? oDFe:statusServico:Result:XMotivo
  ?
RECOVER USING oError
  ? oError:Description
  ? oError:Operation
  IF !Empty(oDFe:Error)
    ? oDFe:Error:Description
    ? oDFe:Error:Operation
  ENDIF
  ? oDFe:DFeError:GetMessage()
  ? oDFe:DFeError:GetErrorCode()
END SEQUENCE

RETURN


PROCEDURE TesteDLLDFe_ValidarCertificadoA1(oDFe)
Local Certificado, CertificadoSelecionado

True(oDFe)

* Criar objeto com Certificado A1 informado
Certificado := CreateObject("Unimake.Security.Platform.CertificadoDigital")
CertificadoSelecionado := Certificado:CarregarCertificadoDigitalA1(oDFe:CertDigArq, oDFe:CertDigSenha)

//? "ID do Certificado....: ", oDFe:Certificado:GetThumbPrint(oDFe:CertDigSel)
? "ID do Certificado....: ", Certificado:GetThumbPrint(CertificadoSelecionado) //oDFe:CertDigSel
? "Dados do proprietario: ", Certificado:GetSubject(CertificadoSelecionado)
? "Numero de Serie......: ", Certificado:GetSerialNumber(CertificadoSelecionado)
? "Validade Inicial.....: ", Certificado:GetNotBefore(CertificadoSelecionado)
? "Validade Final.......: ", Certificado:GetNotAfter(CertificadoSelecionado)
? "Certificado vencido?.: ", Certificado:Vencido(CertificadoSelecionado)
?

RETURN


PROCEDURE TesteDLLDFe_Danfe(oDFe)

oDFe:Danfe('.\arquivo_nfe.xml', .F./*imprimir*/, .T./*visualizar*/, .T./*executar*/)

RETURN
010011110010000001110011011101010110001101100101011100110111001101101111001000001110100100100000011000110110111101101110011100110111010001110010011101011110110101100100011011110010000001100001001000000110111001101111011010010111010001100101
01001101011000010111001001100011011011110111001100100000010000010110111001110100011011110110111001101001011011110010000001000100011001010010000001000010011011110110111001101001
0101010001100101011011000011101000100000001010000011001000110111001010010011100100101101001110010011100000110100001100110010110100110101001100100011100100110000
Responder