Quem usa como LIB, é só gerar a LIB pelo HBP, nem importa se é Harbour ou XHarbour....
Vou separar os métodos da classe, pra próximas mudanças.
Continua tudo junto, mas separado.... rs
Até inventei uma facilidade para o XHarbour...
#ifdef __XHARBOUR__
#define ALL_PARAMETERS P1, P2, P3, P4, P5, P6, P7, P8, P9, P10
#else
#define ALL_PARAMETERS ...
#endif
Por enquanto separei o BPE.
METHOD BpeConsulta( ALL_PARAMETERS ) INLINE Sefaz_BpeConsulta( SELF, ALL_PARAMETERS )
METHOD BpeStatusServico( ALL_PARAMETERS ) INLINE Sefaz_BpeStatusServico( SELF, ALL_PARAMETERS )
AÃ tem os fontes separados....
#include "Sefazclass.ch"
FUNCTION Sefaz_BpeConsulta( oSefaz, cChave, cCertificado, cAmbiente )
oSefaz:Setup( oSefaz:UfSigla( Substr( cChave, 1, 2 ) ), cCertificado, cAmbiente, WS_BPE_CONSULTA )
oSefaz:cXmlEnvio := [<consSitBPe> versao="] + WS_VERSAO_BPE + [" ] + WS_XMLNS_BPE + [>]
oSefaz:cXmlEnvio += XmlTag( "tpAmb", oSefaz:cAmbiente )
oSefaz:cXmlEnvio += XmlTag( "xServ", "CONSULTAR" )
oSefaz:cXmlEnvio += XmlTag( "chBPe", cChave )
oSefaz:cXmlEnvio += [</conssitBPe>]
IF Substr( cChave, 21, 2 ) != "63"
oSefaz:cXmlRetorno := "*ERRO* Chave não se refere a BPE"
ELSE
oSefaz:XmlSoapPost()
ENDIF
oSefaz:cStatus := XmlNode( oSefaz:cXmlRetorno, "cStat" )
oSefaz:cMotivo := XmlNode( oSefaz:cXmlRetorno, "xMotivo" )
RETURN oSefaz:cXmlRetorno
FUNCTION Sefaz_BpeStatusServico( oSefaz, cUF, cCertificado, cAmbiente )
oSefaz:Setup( cUF, cCertificado, cAmbiente, WS_BPE_STATUSSERVICO )
oSefaz:cXmlEnvio := [<consStatServBPe versao="] + WS_VERSAO_BPE + [" ] + WS_XMLNS_BPE + [>]
oSefaz:cXmlEnvio += XmlTag( "tpAmb", oSefaz:cAmbiente )
oSefaz:cXmlEnvio += XmlTag( "xServ", "STATUS" )
oSefaz:cXmlEnvio += [</consStatServBPe>]
oSefaz:XmlSoapPost()
RETURN oSefaz:cXmlRetorno
Ou seja, continua igual antes, até mesmo o fonte tá quase igual, só alterou :: pra oSefaz:
E recebe a classe como parâmetro
Vantagens:
Facilita pra expandir opções
A classe fica mais leve pra carregar, porque só tem métodos pequenos
Desvantagens:
Mais arquivos de fontes - o que não é muito problema como LIB
Os nomes das funções vão ficar visÃveis externamente, mesmo não sendo usadas diretamente
Já temos NFE, CTE, MDFE, BPE, NFCE... sabe mais o que vai aparecer.
Podemos ter NFSE, e outras coisas mais, sem ter um fonte quilométrico
E também podemos pensar em como facilitar pra XHarbour.
Com certeza a melhor coisa é usar HBMK2 MESMO NO XHARBOUR.