Página 1 de 1

Atualizando informações do Danfe

Enviado: 13 Jan 2017 21:12
por JoséQuintas
Mudanças nos Documentos Auxiliares:

Antes o método pra gerar o PDF era Execute(), mas cada documento tinha uma ordem diferente.
A fim de evitar problemas, foi gerado um novo método, igual pra todos, e na mesma ordem.
Adicionalmente, tudo foi centralizado em DaGeral.

O uso agora é assim:

Código: Selecionar todos

LOCAL oDanfe, cLogoFile, cXmlEmissao, cFilePDF, cXmlCancelamento

cLogoFile := "JPEGLogotipo" // pode ser arquivo.jpg ou MemoRead( "arquivo.jpg" ) ou equivalente
cXmlEmissao := "XMLEmissao" // pode ser arquivo.xml ou MemoRead( "emissao.xml" ) ou equivalente
cXmlCancelamento := "XMLCancelamento" // pode ser arquivo.xml ou MemoRead( "cancelamento.xml" ) ou equivalente
cFilePdf := "arquivo.pdf" // aqui é nome mesmo

oDanfe := hbNFeDaGeral():New()
oDanfe:cLogoFile := cLogoFile
oDanfe:cDesenvolvedor := "JoseQuintas"
oDanfe:ToPDF( cXmlEmissao, cFilePDF, cXmlCancelamento )
o primeiro parâmetro é sempre o documento que será gerado PDF: pode ser NFE, CTE, MDFE ou um xml de evento

O segundo parâmetro é o nome do PDF

o terceiro parâmetro é opcional, será usado pra complementar informações.

- Se é uma emissão, o complemento poderá ser um xml de cancelamento, pra imprimir a tarja de cancelamento

- Se é um evento, o complemento será o XML de emissão, pra poder pegar as informações da nota e preencher todo PDF de evento


Nota:
Poderá ser usada a chamada direta de cada tipo de documento auxiliar, mas neste caso não vai haver a opção de usar nome de arquivo para XMLs.
É só pra informação. Mas pra que usar diferente, se dá pra usar sempre a mesma coisa?

Código: Selecionar todos

oDanfe := hbNfeDaNfe():New()
oDanfe := hbNfeDaCte():New()
oDanfe := hbNFeDaMDFe():New()
oDanfe := hbNfeDaEvento():New()


// não precisa mais usar as classes acima, basta usar:

oDanfe := hbNFeDaGeral():New()
O opcional de arquivo ou conteúdo é pra atender quem usa MySQL ou base de dados pra guardar os XMLs, assim não precisa criar arquivo temporário.
Esta foi a forma inicial criada, mas como muitos ainda usam arquivos em disco, passou a permitir os dois tipos de uso.

Será considerado arquivo quando o tamanho do texto for inferior a 100 caracteres.
Acho difícil alguém usar um nome de arquivo ( incluindo diretório + nome ) com 100 caracteres.
E também nenhum XML é menor que 100 caracteres.
Então acredito que desta forma seja suficiente pra detectar nome de arquivo ou texto.

Atualizando informações do Danfe

Enviado: 13 Jan 2017 21:23
por JoséQuintas
Faltou dizer:
Todo projeto da classe Sefaz continua aqui:

https://github.com/JoseQuintas/sefazclass


Cheguei a rascunhar uma classe em VB6 equivalente, só por curiosidade.
Quem também ficar curioso, está aqui:

https://github.com/JoseQuintas/vbsefazclass

Nota:
Faz falta no VB6 os recursos do Harbour de testar NIL, a compilação -w3 -es2, e os nomes de propriedades mais específicos dentro do fonte da classe, sem confundir com variável comum.

Atualizando informações do Danfe

Enviado: 16 Jan 2017 09:46
por malcarli
Bom dia, mestre. Grande trabalho. obrigado