Clipper On Line • Ver Tópico - HTML impressora 60 colunas + PDF

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

 

HTML impressora 60 colunas + PDF

Mensagempor Itamar M. Lins Jr. » 26 Mai 2022 09:55

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.
   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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6956
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 312 vezes
Mens.Curtidas: 508 vezes

HTML impressora 60 colunas + PDF

Mensagempor Itamar M. Lins Jr. » 26 Mai 2022 10:58

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

   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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6956
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 312 vezes
Mens.Curtidas: 508 vezes

HTML impressora 60 colunas + PDF

Mensagempor Itamar M. Lins Jr. » 26 Mai 2022 11:09

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.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6956
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 312 vezes
Mens.Curtidas: 508 vezes




Retornar para Contribuições, Dicas e Tutoriais

Quem está online

Usuários vendo este fórum: Nenhum usuário registrado online e 18 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