HTML impressora 60 colunas + PDF

Aqui você poderá oferecer suas Contribuições, Dicas e Tutoriais (Texto ou Vídeo) que sejam de interesse de todos.

Moderador: Moderadores

Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

HTML impressora 60 colunas + PDF

Mensagem por Itamar M. Lins Jr. »

Olá!
Primeiro esboço.
Estou convertendo antigo relatório 60 colunas que usa replicate("-"... etc.
Captura de tela 2022-05-26 094308.png
Ainda não está do meu agrado, removerei as linhas e ajustar para esquerda os campos numéricos... bastante intuitivo e simples.
Vamos colocando um em baixo do outro e o navegador vai organizando tudo. Depois que pegamos a "manha" é bem rápido.

Código: Selecionar todos

   cHtml += '<img src="./imagens/logoempresa.png" width="120" height="60" alt="Logo Empresa" >'

   cHtml += '<table cellpadding="1" cellspacing="1">'
   
   cHtml += '<tr><th align="center" colspan="5">ORÇAMENTO</th></tr>'
   cHtml += '<tr><th align="left" colspan="5">Empresa.: ' + em->fantasia + '<br>'
   cHtml += 'Telefone: ' + Transform(AllTrim(em->telefone),'@R (99) 9999-9999') + '<br>'
   cHtml += 'Cliente.: ' + LTrim(SubStr(cCliente,1,37)) + '<br>'
   cHtml += 'Vendedor: ' + AllTrim(cVendedor)+'<br>'
   cHtml += 'PDV.....: ' + StrZero(nPdv,3)+'<br>'
   cHtml += Str(Day(Date()),2)+" de "+SubStr(CMonth(Date()),1,3)+' de '+Str(Year(Date()),4)+' '+AMPM(Time())+'</th></tr>'
   
   cHtml += '<tr><th>Descrição</th><th>Qtd</th><th>Preço</th><th>Total</th><th>Desc</th></tr>'
   
   Do WHILE pd->(!eof())

      IF Empty(pd->cod_mercad)
         pd->(dbSkip())
         LOOP 
      ENDIF 

      IF eq->(DbSeek(pd->cod_mercad))
      ELSE 
         hwg_Msginfo('Não Foi Encontrado no Estoque')
         pd->(DbSkip())
         LOOP
      ENDIF 
      
      cEAN := val(pd->cod_fiscal)
      cHtml += '<tr><td colspan="5">' + padl(pd->mercadoria,48) + '</td></tr>'
      cHtml += '<tr><td>' + pd->cod_mercad + '</td>'
      IF es->(dbseek(eq->unidade))
         IF es->precisao = 0
            cHtml += '<td>' + Transform(pd->quantidade,'99999') + eq->unidade + '</td>'
         ELSEIF es->precisao = 1
            cHtml += '<td>' + Transform(pd->quantidade,'999999.9') + '</td>'
         ELSEIF es->precisao = 2
            cHtml += '<td>' + Transform(pd->quantidade,'99999.99') + '</td>'
         ELSEIF es->precisao = 3
            cHtml += '<td>' + Transform(pd->quantidade,'9999.999') + '</td>'
         ENDIF 
      ELSE 
           cHtml += '<td>' + Transform(pd->quantidade,'99999') + eq->unidade + '</td>'
      ENDIF 

        cHtml += '<td>' + SubStr(Transform(pd->preco_unit,'@e 999,999.99'),3,10) + '</td>'
        cHtml += '<td>' + SubStr(Transform(Round(pd->quantidade*pd->preco_unit,2),'@e 999,999.99'),3,10) + '</td>'
        cHtml += '<td>' + SubStr(Transform(pd->desconto, '@e 99,999.99'),3,9) + '</td></tr>'

        nTotal += Round(pd->quantidade*pd->preco_unit,2)

        pd->(dbSkip())

   EndDo
   
   IF nSemdesc-nTotal>0
      cHtml += '<tr><td colspan="5" align="left"> Total Sem Desconto: '+Transform(nSemdesc,'@e 9999,999.99') + '</td></tr>'
      cHtml += '<tr><td colspan="5" align="left"> Desconto de.......: '+Transform(nSemdesc-nTotal,'@e 9999,999.99') + '</td></tr>'
   ENDIF 
   
   cHtml += '<tr><td colspan="5" align="left"> Total do Orçamento: ' + Transform(nTotal,'@e 9999,999.99') + '</td></tr>'
   cHtml += '<tr><td colspan="5" align="left"> Forma de Pagamento: ' + SubStr(aFormVend[oFinaliza][1],1,20) + '</td></tr>'
   cHtml += '<tr><td colspan="5" align="left"> Atenção, Controle Interno Sem Valor Fiscal. </td></tr>'
       

   cHtml += '</table></div></body></html>'

   hb_MemoWrit("orcamento.html",cHtml)
PS. O Forum "come" algumas tags.

Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

HTML impressora 60 colunas + PDF

Mensagem por Itamar M. Lins Jr. »

Olá!
Com algumas modificações.
Captura de tela 2022-05-26 105440.png

Código: Selecionar todos

   cHtml += '<img src="./imagens/logoempresa.png" width="120" height="60" alt="Logo Empresa" >'

   cHtml += '<table cellpadding="1" cellspacing="1">'
   
   cHtml += '<tr><th style="border:0;" align="center" colspan="5">ORÇAMENTO</th></tr>'
   cHtml += '<tr><th style="border:0;" align="left" colspan="5">Empresa.: ' + em->fantasia + '<br>'
   cHtml += 'Telefone: ' + Transform(AllTrim(em->telefone),'@R (99) 9999-9999') + '<br>'
   cHtml += 'Cliente.: ' + LTrim(SubStr(cCliente,1,37)) + '<br>'
   cHtml += 'Vendedor: ' + AllTrim(cVendedor)+'<br>'
   cHtml += 'PDV.....: ' + StrZero(nPdv,3)+'</th></tr>'
   cHtml += '<tr><th style="border:0;" colspan="5" align="right">' + Str(Day(Date()),2)+" de "+SubStr(CMonth(Date()),1,3)+' de '+Str(Year(Date()),4)+' '+AMPM(Time())+'</th></tr>'
   
   cHtml += '<tr><th>Descrição</th><th>Qtd</th><th>Preço</th><th>Total</th><th>Desc</th></tr>'
   
   Do WHILE pd->(!eof())

      IF Empty(pd->cod_mercad)
         pd->(dbSkip())
         LOOP 
      ENDIF 

      IF eq->(DbSeek(pd->cod_mercad))
      ELSE 
         hwg_Msginfo('Não Foi Encontrado no Estoque')
         pd->(DbSkip())
         LOOP
      ENDIF 
      
      cEAN := val(pd->cod_fiscal)
      cHtml += '<tr><td style="border: 0;" colspan="5">' + padl(pd->mercadoria,48) + '</td></tr>'
      cHtml += '<tr><td style="border: 0;">' + pd->cod_mercad + '</td>'
      IF es->(dbseek(eq->unidade))
         IF es->precisao = 0
            cHtml += '<td align="right">' + Transform(pd->quantidade,'99999') + eq->unidade + '</td>'
         ELSEIF es->precisao = 1
            cHtml += '<td align="right">' + Transform(pd->quantidade,'999999.9') + '</td>'
         ELSEIF es->precisao = 2
            cHtml += '<td align="right">' + Transform(pd->quantidade,'99999.99') + '</td>'
         ELSEIF es->precisao = 3
            cHtml += '<td align="right">' + Transform(pd->quantidade,'9999.999') + '</td>'
         ENDIF 
      ELSE 
           cHtml += '<td align="right">' + Transform(pd->quantidade,'99999') + eq->unidade + '</td>'
      ENDIF 

        cHtml += '<td align="right">' + SubStr(Transform(pd->preco_unit,'@e 999,999.99'),3,10) + '</td>'
        cHtml += '<td align="right">' + SubStr(Transform(Round(pd->quantidade*pd->preco_unit,2),'@e 999,999.99'),3,10) + '</td>'
        cHtml += '<td align="right">' + SubStr(Transform(pd->desconto, '@e 99,999.99'),3,9) + '</td></tr>'

        pd->(dbSkip())

   EndDo
   
   IF nSemdesc-nTotal>0
      cHtml += '<tr><td colspan="3" align="left"> Total Sem Desconto: ' + '</td><td align="right" colspan="2">' + Transform(nSemdesc,'@e 9999,999.99') + '</td></tr>'
      cHtml += '<tr><td colspan="3" align="left"> Desconto de.......: ' + '</td><td align="right" colspan="2">' + Transform(nSemdesc-nTotal,'@e 9999,999.99') + '</td></tr>'
   ENDIF 
   
   cHtml += '<tr><td colspan="3" align="left"> Total do Orçamento: ' + '</td><td align="right" colspan="2">' + Transform(nTotal,'@e 9999,999.99') + '</td></tr>'
   cHtml += '<tr><td colspan="5" align="left"> Forma de Pagamento: ' + SubStr(aFormVend[oFinaliza][1],1,20) + '</td></tr>'
   cHtml += '<tr><td colspan="5" align="left"> Atenção, Controle Interno Sem Valor Fiscal. </td></tr>'
       

   cHtml += '</table></div></body></html>'

   hb_MemoWrit("orcamento.html",cHtml)
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Avatar do usuário
Itamar M. Lins Jr.
Administrador
Administrador
Mensagens: 7928
Registrado em: 30 Mai 2007 11:31
Localização: Ilheus Bahia
Curtiu: 1 vez

HTML impressora 60 colunas + PDF

Mensagem por Itamar M. Lins Jr. »

Olá!
Veja que o navegador já sabe que o papel é fino, sem fim. enddoc() dele faz o corte do papel. "assim espero" não testei.
Captura de tela 2022-05-26 110411.png
Saudações,
Itamar M. Lins Jr.
Saudações,
Itamar M. Lins Jr.
Responder