Página 2 de 2

Objeto Unidanfe

Enviado: 13 Mai 2022 18:28
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.

Objeto Unidanfe

Enviado: 13 Mai 2022 20:34
por Alexandre Silva
Obrigado
Se tiver alguma informacao repasso

Objeto Unidanfe

Enviado: 13 Mai 2022 21:00
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.

Objeto Unidanfe

Enviado: 13 Mai 2022 21:03
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á.

Objeto Unidanfe

Enviado: 24 Mai 2022 14:04
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.

Objeto Unidanfe

Enviado: 25 Mai 2022 08:19
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!

Objeto Unidanfe

Enviado: 25 Mai 2022 11:28
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.

Objeto Unidanfe

Enviado: 25 Mai 2022 18:05
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?

Objeto Unidanfe

Enviado: 28 Mai 2022 19:56
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