Página 1 de 1
Quintas (SefazClass)
Enviado: 14 Mar 2018 16:44
por janio
Quintas,
Preciso usar sua classe apenas para o evento de CANCELAMENTO da NFCe (METHOD NFeEventoCancela)
Eh possível? Quais as dependências? que prg's devo acrescentar ao meu projeto?
Quintas (SefazClass)
Enviado: 14 Mar 2018 18:13
por JoséQuintas
Precisa assinatura e comunicação.
Assinatura: CAPICOM.DLL e MSXML5.DLL
Se compilar a sefazclass como LIB, é só adicionar a LIB na compilação do aplicativo.
Quintas (SefazClass)
Enviado: 14 Mar 2018 18:48
por janio
dei aqui um hbmk2 sefaclass.hbp, nao deu erro nenhum mas tbm nao gerou a bli
algo a mais?
Código: Selecionar todos
C:\Users\Notebook\Downloads\sefazclass-master\sefazclass-master>hbmk2 sefazclass.hbp
Harbour 3.2.0dev (r1705200225)
Copyright (c) 1999-2016, http://harbour-project.org/
Compiling 'source\ze_sefazclass.prg'...
Lines 3066, Functions/Procedures 55
Generating C source output to 'C:\Users\Notebook\AppData\Local\Temp\hbmk_gentd3.dir\ze_sefazclass.c'... Done.
Compiling 'source\ze_sefazcapicom.prg'...
Lines 797, Functions/Procedures 3
Generating C source output to 'C:\Users\Notebook\AppData\Local\Temp\hbmk_gentd3.dir\ze_sefazcapicom.c'... Done.
Compiling 'source\ze_sefazAssina.prg'...
Lines 1275, Functions/Procedures 9
Generating C source output to 'C:\Users\Notebook\AppData\Local\Temp\hbmk_gentd3.dir\ze_sefazAssina.c'... Done.
Compiling 'source\ze_sefazAssinachk.prg'...
Lines 69, Functions/Procedures 1
Generating C source output to 'C:\Users\Notebook\AppData\Local\Temp\hbmk_gentd3.dir\ze_sefazAssinachk.c'... Done.
Compiling 'source\ze_sefazDaCte.prg'...
Lines 2845, Functions/Procedures 6
Generating C source output to 'C:\Users\Notebook\AppData\Local\Temp\hbmk_gentd3.dir\ze_sefazDaCte.c'... Done.
Compiling 'source\ze_sefazDaEvento.prg'...
Lines 2365, Functions/Procedures 8
Generating C source output to 'C:\Users\Notebook\AppData\Local\Temp\hbmk_gentd3.dir\ze_sefazDaEvento.c'... Done.
Compiling 'source\ze_sefazDaMdfe.prg'...
Lines 2191, Functions/Procedures 6
Generating C source output to 'C:\Users\Notebook\AppData\Local\Temp\hbmk_gentd3.dir\ze_sefazDaMdfe.c'... Done.
Compiling 'source\ze_sefazDaNfe.prg'...
Lines 2883, Functions/Procedures 24
Generating C source output to 'C:\Users\Notebook\AppData\Local\Temp\hbmk_gentd3.dir\ze_sefazDaNfe.c'... Done.
Compiling 'source\ze_sefazDaNFCe.prg'...
Lines 2820, Functions/Procedures 17
Generating C source output to 'C:\Users\Notebook\AppData\Local\Temp\hbmk_gentd3.dir\ze_sefazDaNFCe.c'... Done.
Compiling 'source\ze_sefazDadfe.prg'...
Lines 2112, Functions/Procedures 16
Generating C source output to 'C:\Users\Notebook\AppData\Local\Temp\hbmk_gentd3.dir\ze_sefazDadfe.c'... Done.
Compiling 'source\ze_sefazSoapList.prg'...
Lines 1270, Functions/Procedures 1
Generating C source output to 'C:\Users\Notebook\AppData\Local\Temp\hbmk_gentd3.dir\ze_sefazSoapList.c'... Done.
Compiling 'source\ze_sefazxmlclass.prg'...
Lines 2190, Functions/Procedures 33
Generating C source output to 'C:\Users\Notebook\AppData\Local\Temp\hbmk_gentd3.dir\ze_sefazxmlclass.c'... Done.
Compiling 'source\ze_xmlfunc.prg'...
Lines 343, Functions/Procedures 17
Generating C source output to 'C:\Users\Notebook\AppData\Local\Temp\hbmk_gentd3.dir\ze_xmlfunc.c'... Done.
Compiling 'source\ze_miscfunc.prg'...
Lines 34, Functions/Procedures 2
Generating C source output to 'C:\Users\Notebook\AppData\Local\Temp\hbmk_gentd3.dir\ze_miscfunc.c'... Done.
Compiling 'source\ze_xharbour.prg'...
Lines 40, Functions/Procedures 0
Generating C source output to 'C:\Users\Notebook\AppData\Local\Temp\hbmk_gentd3.dir\ze_xharbour.c'... Done.
Compiling 'source\ze_digitodoc.prg'...
Lines 271, Functions/Procedures 12
Generating C source output to 'C:\Users\Notebook\AppData\Local\Temp\hbmk_gentd3.dir\ze_digitodoc.c'... Done.
Compiling 'source\ze_extenso.prg'...
Lines 969, Functions/Procedures 11
Generating C source output to 'C:\Users\Notebook\AppData\Local\Temp\hbmk_gentd3.dir\ze_extenso.c'... Done.
Compiling 'source\ze_inscestadual.prg'...
Lines 879, Functions/Procedures 29
Generating C source output to 'C:\Users\Notebook\AppData\Local\Temp\hbmk_gentd3.dir\ze_inscestadual.c'... Done.
Quintas (SefazClass)
Enviado: 14 Mar 2018 18:55
por JoséQuintas
Como está a variável HB_INSTALL_PREFIX
Se estiver d:\harbour, vai gerar a lib em:
d:\Harbour\add-ons\sefazclass
Se não existir a variável, provavelmente criou em \addons
Quintas (SefazClass)
Enviado: 14 Mar 2018 18:59
por JoséQuintas
Faltou dizer:
Depois de gerado em harbour\addons...
Quando quiser usar a LIB, será só adicionar sefazclass.hbc
Ou aparecerá nas dicas do HBMK2 pra adicionar, quando precisar...

Quintas (SefazClass)
Enviado: 14 Mar 2018 19:26
por janio
Ok. faltava defini a variavel HB_INSTALL_PREFIX. caminhando
No parametro certificado deve ser passado o "Numero de Serie do certificado", conforme imagem anexa?
Estou passando esse numero mas esta me retornando: "Erro assinatura: Certificado não encontrado ou vencido"
O certificado esta instalado na maquina e esta funcional
Quintas (SefazClass)
Enviado: 14 Mar 2018 21:06
por JoséQuintas
A Sefazclass trabalha com o nome do certificado, fica em CN=.
Quintas (SefazClass)
Enviado: 14 Mar 2018 21:44
por janio
Quintas,
Me tira so uma duvida, eh que sou meio brabo (burro) nessas coisas.
Quando um xml eh assinado, eh automaticamente acrescentado no seu final todos aqueles dados (caracteres) da assinatura? Ou isso eh opcional?
Estou olhando o seu codigo aqui e me parece que isso nao acontece.
Código: Selecionar todos
METHOD NFeEventoCancela( cChave, nSequencia, nProt, xJust, cCertificado, cAmbiente ) CLASS SefazClass
hb_Default( @nSequencia, 1 )
::cNFCe := iif( DfeModFis( cChave ) == "65", "S", "N" )
::Setup( ::UFSigla( Substr( cChave, 1, 2 ) ), cCertificado, cAmbiente, WS_NFE_RECEPCAOEVENTO )
::cXmlDocumento := [<evento versao="] + WS_VERSAO_NFEEVENTO + [" ] + WS_XMLNS_NFE + [>]
::cXmlDocumento += [<infEvento Id="ID110111] + cChave + StrZero( nSequencia, 2 ) + [">]
::cXmlDocumento += XmlTag( "cOrgao", Substr( cChave, 1, 2 ) )
::cXmlDocumento += XmlTag( "tpAmb", ::cAmbiente )
::cXmlDocumento += XmlTag( "CNPJ", DfeEmitente( cChave ) )
::cXmlDocumento += XmlTag( "chNFe", cChave )
::cXmlDocumento += XmlTag( "dhEvento", ::DateTimeXml() )
::cXmlDocumento += XmlTag( "tpEvento", "110111" )
::cXmlDocumento += XmlTag( "nSeqEvento", Ltrim( Str( nSequencia, 4 ) ) )
::cXmlDocumento += XmlTag( "verEvento", WS_VERSAO_NFEEVENTO )
::cXmlDocumento += [<detEvento versao="] + WS_VERSAO_NFEEVENTO + [">]
::cXmlDocumento += XmlTag( "descEvento", "Cancelamento" )
::cXmlDocumento += XmlTag( "nProt", Ltrim( Str( nProt ) ) )
::cXmlDocumento += XmlTag( "xJust", xJust )
::cXmlDocumento += [</detEvento>]
::cXmlDocumento += [</infEvento>]
::cXmlDocumento += [</evento>]
IF ::AssinaXml() == "OK"
::cXmlEnvio := [<envEvento versao="] + WS_VERSAO_NFEEVENTO + [" ] + WS_XMLNS_NFE + [>]
::cXmlEnvio += XmlTag( "idLote", DfeNumero( cChave ) ) // usado numero da nota
::cXmlEnvio += ::cXmlDocumento
::cXmlEnvio += [</envEvento>]
::XmlSoapPost()
::cXmlProtocolo := ::cXmlRetorno
::NFeGeraEventoAutorizado( ::cXmlDocumento, ::cXmlProtocolo )
ENDIF
RETURN ::cXmlRetorno
Quintas (SefazClass)
Enviado: 14 Mar 2018 21:49
por JoséQuintas
Quintas (SefazClass)
Enviado: 14 Mar 2018 21:50
por JoséQuintas
E lembrando que como é classe, o ::XmlDocumento já vai estar disponível na rotina de assinatura, por isso não precisa passar em ::AssinaXml()
Quintas (SefazClass)
Enviado: 14 Mar 2018 21:56
por JoséQuintas
No início da classe:
Código: Selecionar todos
METHOD AssinaXml() INLINE ::cXmlRetorno := CapicomAssinaXml( @::cXmlDocumento, ::cCertificado,,::cPassword )
Aquele ::AssinaXml() equivale a chamar a rotina de assinatura passando o documento por referência (pra ser alterado), e certificado (senha só se usar o PFX, mas não compensa)