Clipper On Line • Ver Tópico - Usar fontes do Danfe pra NFE, CTE, MDFE, CCE

Usar fontes do Danfe pra NFE, CTE, MDFE, CCE

Projeto hbNFe (Nota Fiscal Eletronica/Danfe) para [x]Harbour

Moderador: Moderadores

 

Usar fontes do Danfe pra NFE, CTE, MDFE, CCE

Mensagempor JoséQuintas » 16 Set 2016 19:35

Queria saber do autor se há alguma restrição em utilizar a parte de PDF da hbnfe.
Pra isso, teria que alterar as rotinas pra ficarem o mais independentes possíveis do restante da hbnfe.
Ainda não avaliei o que será necessário, na questão técnica.
Mas como a SefazClass está separada da hbnfe, não sei se há algum impedimento nesse uso.

Podemos fazer isso? Incluir no que está sendo chamado Sefazclass os fontes necessários para PDF da hbnfe?
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Usar fontes do Danfe pra NFE, CTE, MDFE, CCE

Mensagempor JoséQuintas » 17 Set 2016 07:42

Por acaso alguém confirmou se a Danfe da hbnfe está de acordo com a lei?

Achei a letra do Danfe relativamente pequena, pra certos campos.
Lembro de ter existido uma alteração na lei para usar uma letra maior no Danfe, por isso fiquei na dúvida se a lei pode ou não ter sido depois da 2.00, que é a versão aonde parou a hbnfe.

Por exemplo, a observação, onde costuma ir o endereço de entrega.
Se não ficar numa letra aceitável, o motorista nem sequer vai enxergá-lo, e pode ir entregar em endereço errado.

Alguém tem facilidade em alterar isso, e principalmente ajustar a observação para o tamanho correto, onde o limite é de 5.000 letras?

Só como referência, apesar das tarjas pretas, dá uma idéia do que estou falando.

danfeh.png


danfeu.png


Pra quem acha que a observação é exagerada....
Convém dizer que a empresa já foi multada no passado por faltar na observação "embalagem III"
Lembrando que são aqueles caminhões tanques, iguais os que abastecem posto de gasolina.
Dá pra imaginar pra que merd. serve mencionar na nota "embalagem III", ou que é inflamável?
Dá pra imaginar pra que merd. serve dizer que a mercadoria está devidamente embalada, se nem sequer tem embalagem??
Também não sei pra que serve, mas se não disser, pode ser multado, e por guarda de trânsito, nem é fiscalização especializada.

Nota: está na lei, se o espaço embaixo não for suficiente, pode ser usada a parte central, e/ou mais páginas.
Lembro que houve o comentário de que em ano de eleição inventam de fiscalizar um pouco mais, então as multas devem ter sido em 2012, já usando NFE.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Usar fontes do Danfe pra NFE, CTE, MDFE, CCE

Mensagempor JoséQuintas » 17 Set 2016 08:32

Tem também a opção de usar um fonte antigo que criei como ponto de partida.
É como se usasse linha/coluna, mas trabalha com centímetros.
Não dá pra dizer que é mais simples de mexer, porque sem preencher informações, qualquer fonte é mais simples... rs
Só fiz como curiosidade, usando minha classe pra PDF, pra ver o que ia dar.

danfej.png
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Usar fontes do Danfe pra NFE, CTE, MDFE, CCE

Mensagempor depaula.jau » 19 Set 2016 14:01

Bom dia

Quintas! Estou acompanhando, como posso ajudar ?
Avatar de usuário

depaula.jau
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 98
Data de registro: 15 Mai 2007 17:07
Cidade/Estado: JAU
Curtiu: 9 vezes
Mens.Curtidas: 14 vezes

Usar fontes do Danfe pra NFE, CTE, MDFE, CCE

Mensagempor JoséQuintas » 19 Set 2016 17:31

Se partir da hbnfe:

Criei um fork da hbnfe/Athayde pra isso.

https://github.com/JoseQuintas/hbnfe

- Confirmar se os fontes estão atualizados pra 3.10 (usei os do post aqui do fórum)

- Tentar encontrar a lei de alguns anos atrás, ou talvez a atual, pra ver se o tamanho de fontes está de acordo com a lei, ou se ficou desatualizado.

- Quem tiver facilidade, alterar o tamanho do fonte dos produtos e da observação.

- Mesma coisa pra observações, sendo que vai ser um trabalho extra imprimir a continuação na parte central e em mais folhas, porque vai ser uma análise "diferente".
Convém verificar se pra observação individual dos produtos há algum tratamento.

Por enquanto só procurei confirmar se os fontes estavam "compiláveis", ao juntar as versões.

No github dá pra criar forks, e transferir entre forks/matriz.
Ainda não sei como funciona isso direito pelo github, mas dá pra fazer alguma coisa manualmente pelo software git.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Usar fontes do Danfe pra NFE, CTE, MDFE, CCE

Mensagempor JoséQuintas » 21 Set 2016 11:33

Está funcionando mas não é pra usar ainda.
Se usar, é bom já ficar sabendo que os parâmetros vão ser alterados.
Já dá pra perceber, porque COMEÇOU a ficar diferente o uso de CCE e NFE.

Estou ajustando por etapas, pra não me perder.
O uso final será SEM ARQUIVO XML, igual ao restante.

Pensei em fazer SEM ARQUIVO PDF também, mas como precisa temporário pra salvar a saída da harupdf, acho que não compensa. (seria tudo na base de string)

Se alguém tiver feito alterações extras, a hora é agora, porque ainda vai estar relativamente fácil comparar os fontes.

De extra: formatação de alguns números que não estavam formatados.

Pra teste, só ajustar os nomes em testdanfe.prg, e fazer o teste usando testdanfe.hbp

https://github.com/JoseQuintas/sefazclass

Nota: título dos fontes hbnfedanfe.prg e hbnfedanfecce.prg

/*
HBNFEDANFE - Funcoes e Classes Relativas a Impressao Danfe PDF
Fontes originais do projeto hbnfe em https://github.com/fernandoathayde/hbnfe
*/
/*
HBNFEDANFECCE - Funcoes e Classes Relativas a Impressao da Carta de Correção
Fontes originais do projeto hbnfe em https://github.com/fernandoathayde/hbnfe
*/
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Usar fontes do Danfe pra NFE, CTE, MDFE, CCE

Mensagempor JoséQuintas » 21 Set 2016 13:04

Porque ainda não é pra usar, ou porque precisa atenção.

Carta de correção:

Uso ontem: retorno em variável hash
Uso hoje: retorno em string

Uso hoje de manhã: precisava nomes dos arquivos XML
uso agora à tarde: não precisa mais de nome, só do conteúdo, só string

Estou nos ajustes iniciais, preparando como vai funcionar.

Ia postar o fonte do teste de uso, mas o fórum rejeitou o fonte de 10 linhas.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Usar fontes do Danfe pra NFE, CTE, MDFE, CCE

Mensagempor JoséQuintas » 21 Set 2016 13:51

Agora danfe está igual.
O fórum não aceita postar este fonte.

geradanfe.png


Curiosidade interessante:
Dá até pra gerar um EXE que recebe o nome dos arquivos por parâmetro, e ao invés de usar a LIB, usar um EXE.
Acaba ficando bem flexível pra todos.
Nem precisa se preocupar se usa Clipper, Harbour, xHarbour, etc.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Usar fontes do Danfe pra NFE, CTE, MDFE, CCE

Mensagempor malcarli » 22 Set 2016 08:19

Bom dia Mestre, irei testar e qq novidade posto
malcarli
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 181
Data de registro: 20 Ago 2015 18:14
Cidade/Estado: marilia/sp
Curtiu: 81 vezes
Mens.Curtidas: 4 vezes

Usar fontes do Danfe pra NFE, CTE, MDFE, CCE

Mensagempor malcarli » 22 Set 2016 09:18

Testei agora com um xml, que não tem a tag qVol. Na linha 1642 deu erro de conversão do Val

         hbNFe_Texto_Hpdf( ::oPdfPage,6, ::nLinhaPdf-5  , 99, Nil, Ltrim( FormatNumber( Val( ::aTransp[ "qVol" ] ), 15, 0 ) ), HPDF_TALIGN_RIGHT, Nil, ::oPdfFontCabecalho, 8 )
malcarli
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 181
Data de registro: 20 Ago 2015 18:14
Cidade/Estado: marilia/sp
Curtiu: 81 vezes
Mens.Curtidas: 4 vezes

Usar fontes do Danfe pra NFE, CTE, MDFE, CCE

Mensagempor malcarli » 22 Set 2016 09:40

Como solução do erro acima que mencionei, resolvi da seguinte maneira:

Alterei a função de formatação de números, em ze_xmlfun.prg

FUNCTION FormatNumber( nValor, nTamanho, nDecimais )

   LOCAL cPicture

   hb_Default( @nDecimais, 2 )
   hb_Default( @nTamanho, 15 )

   IF ValType( nValor ) == "C" // será perigoso ??
      nValor := Val( nValor )
   ELSEIF ValType( nValor ) == "U"  /// alterado por malcarli 22/09/2016
      nValor := ""
   ENDIF

   cPicture := Replicate( "9", nTamanho - iif( nDecimais == 0, 0, nDecimais + 1 ) )
   cPicture := Ltrim( Transform( Val( cPicture ), "999,999,999,999,999" ) )
   IF nDecimais != 0
      cPicture += "." + Replicate( "9", nDecimais )
   ENDIF

   RETURN Transform( nValor, "@E " + cPicture )


e na linha onde deu o erro, retirado a função Val, ficando assim:

         hbNFe_Texto_Hpdf( ::oPdfPage,6, ::nLinhaPdf-5  , 99, Nil, Ltrim( FormatNumber(  ::aTransp[ "qVol" ] , 15, 0 ) ), HPDF_TALIGN_RIGHT, Nil, ::oPdfFontCabecalho, 8 )


Desta forma, funcionou perfeitamente com os meus xmls.
malcarli
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 181
Data de registro: 20 Ago 2015 18:14
Cidade/Estado: marilia/sp
Curtiu: 81 vezes
Mens.Curtidas: 4 vezes

Usar fontes do Danfe pra NFE, CTE, MDFE, CCE

Mensagempor malcarli » 22 Set 2016 10:21

Outra sugestão: para padronizar a impressão entre a danfe e cce sugiro também colocar no rodapé da cce, a data de emissão e o desenvolvedor (que neste caso seria enviado por parâmetro). Fiz assim, em method rodape() da cce:

   VAR cTelefoneEmitente INIT ""
   VAR cSiteEmitente     INIT ""
   VAR cEmailEmitente    INIT ""
   VAR cDesenvolvedor    INIT ""  /// alterado por malcarli em 22/09/2016


   hbNFe_Texto_Hpdf( ::oPdfPage, 30,  ::nLinhaPDF - 94, 284, Nil,  trim( MemoLine( ::aDest[ "xNome" ],40,1 ) ) , HPDF_TALIGN_CENTER, Nil, ::oPdfFontCabecalho, 9 )
   hbNFe_Texto_Hpdf( ::oPdfPage, 30,  ::nLinhaPDF - 108, 284, Nil, trim( MemoLine( ::aDest[ "xNome" ],40,2 ) ) , HPDF_TALIGN_CENTER, Nil, ::oPdfFontCabecalho, 9 )
   hbNFe_Texto_Hpdf( ::oPdfPage, 300, ::nLinhaPDF - 94,  574, Nil, trim( MemoLine( ::aEmit[ "xNome" ],40,1 ) ) , HPDF_TALIGN_CENTER, Nil, ::oPdfFontCabecalho, 9 )
   hbNFe_Texto_Hpdf( ::oPdfPage, 300, ::nLinhaPDF - 108, 574, Nil, trim( MemoLine( ::aEmit[ "xNome" ],40,2 ) ) , HPDF_TALIGN_CENTER, Nil, ::oPdfFontCabecalho, 9 )
// alterado abaixo por malcarli em 22/09/2016
   hbNFe_Texto_Hpdf( ::oPdfPage, 5,   ::nLinhaPdf - 148, 110, Nil, "DATA DA IMPRESSÃO: " + DTOC(DATE())        , HPDF_TALIGN_LEFT  , Nil, ::oPdfFontCabecalho, 6 )
   hbNFe_Texto_Hpdf( ::oPdfPage, 115, ::nLinhaPdf - 148, 589, Nil, ::cDesenvolvedor                            , HPDF_TALIGN_RIGHT , Nil, ::oPdfFontCabecalho, 6 )
   RETURN NIL
malcarli
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 181
Data de registro: 20 Ago 2015 18:14
Cidade/Estado: marilia/sp
Curtiu: 81 vezes
Mens.Curtidas: 4 vezes

Usar fontes do Danfe pra NFE, CTE, MDFE, CCE

Mensagempor JoséQuintas » 22 Set 2016 11:42

Só explicando:
Tem campo no XML que não é obrigatório, então tem XML que não contém determinados campos.
No seu caso foi a quantidade de volumes, que seu XML não tem, e os que testei tem.

Sem saber, e sem querer, já estava resolvendo o erro que mencionou.

Estou trocando de hbnfe_PegaDadosXml() pra minha XmlNode() que já tem na classe.

Uma grande diferença é que a primeira retorna NIL se não existir conteúdo, e a segunda retorna uma string vazia.
Com isso, muitas checagens de NIL vão poder ser removidas, e esse tipo de erro não vai acontecer mais..

O lado chato é que os parâmetros são ao contrário, então estou alterando manualmente.
De quebra, o fonte fica muito mais elegante, acho que foi por isso que deixei os parâmetros dessa forma na época que criei a XmlNode().

xmlnode.png


Também já tinha reparado nisso, que a carta de correção não tem essas opções.
Estou dando uma geral no fonte primeiro, pra ficar mais fácil de mexer depois.
Nessa geral, algumas coisas já estão sendo resolvidas, e nem estava fazendo isso pra resolver alguma coisa.... rs
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Usar fontes do Danfe pra NFE, CTE, MDFE, CCE

Mensagempor JoséQuintas » 22 Set 2016 11:54

E olhando o fonte agora.... dá vontade de mexer de novo..... rs

XmlNodeToHash( ::aItem, cItem, "cProd" )
XmlNodeToHash( ::aItem, cItem, "cEAN" )
XmlNodeToHash( ::aItem, cItem, "xProd" )

FUNCTION XmlNodeToHash( aHash, cXml, cTag )

   aHash[ cTag ] := XmlNode( cXml, cTag )
   RETURN NLI


E isso poderia ser expandido pra uma classe ou algo assim.
É só uma idéia que ocorreu durante o post, não vou mexer nisso agora.
Ainda é cedo pra colocar a idéia em prática, e pode atrapalhar.
José M. C. Quintas
Harbour 3.2, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, PNotepad
"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 de usuário

JoséQuintas
Membro Master

Membro Master
 
Mensagens: 18013
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 15 vezes
Mens.Curtidas: 1206 vezes

Usar fontes do Danfe pra NFE, CTE, MDFE, CCE

Mensagempor depaula.jau » 22 Set 2016 14:24

Quintas, Boa tarde!

Hoje me deparei com uma situação. Cancelei uma nota fora do prazo das 24 horas.

O Sefaz cancelou normalmente mas com uma ressalva, Cancelamento fora do prazo.

O Status re retorno foi 155.

Eu inclui na rotina para aceitar, Você sabe algo a respeito ?
Avatar de usuário

depaula.jau
Usuário Nível 2

Usuário Nível 2
 
Mensagens: 98
Data de registro: 15 Mai 2007 17:07
Cidade/Estado: JAU
Curtiu: 9 vezes
Mens.Curtidas: 14 vezes

Próximo



Retornar para Projeto hbNFe

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 9 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro