Clipper On Line • Ver Tópico - Tela de PDV

Tela de PDV

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

Tela de PDV

Mensagempor JoséQuintas » 22 Mar 2018 11:09

Tava olhando aqui: ando confundindo a WVG oficial com a minha.
WVG_LABEL() da GTWVG é em linguagem C, nem tem exemplo de uso.
Aliás são 3:
/* wvg_Label( nRow, nCol, aPxlOff, cLabel, nAlign,
              nEscapement, nTextColor, nBkColor, cFontFace, nFontHeight,
              nFontWidth, nFontWeight, nQuality,  nCharSet, lItalics,
              lUnderline, lStrikeOut ) */
/* wvg_LabelEx( nRow, nCol, aPxlOff, cLabel, nAlign, nTextColor, nBkColor, nSlotFont ) */
/* wvg_LabelEx2( nTop, nLeft, nBottom, nRight, aPxlOff, cLabel, nAlign,
                 nEscapement, nTextColor, nBkColor, cFontFace, nFontHeight,
                 nFontWidth, nFontWeight, nQuality, nCharSet, lItalics,
                 lUnderline, lStrikeOut ) */


E são usadas nesta função:
void hb_gt_wvt_PaintGObjects( PHB_GTWVT pWVT, RECT * uRect )
O que parece indicar que são estilo WVT e não GUI.

A opção GUI está amontoada no wvgStatic() que atende diversos controles Static, o que inclui frame, label, etc.

Se usar o que criei, vai ficar preso ao Harbour 3.4, não sei se é interessante pra você.
Não se trata de uma WVG modificada, mas de 2 fontes adicionados, que só funcionam corretamente no 3.4.

Mas vamos ao que você usa:
Provavelmente criou um array pra ser usado em wvt_paint(), onde um dos elementos é esse wvg_label().
A saída seria trocar esse elemento do array por um novo, com o novo texto.

Nota:
Até esta parte ainda pode ser considerada como tela de PDV, porque mostra que em WVG podemos ter um visual parecido, adicionando algumas coisas extras.
Mas a partir daqui, trata-se de dúvida relativa somente a GTWVG, se aprofundando em GTWVG, nesse caso melhor criar uma nova conversa em "outras bibliotecas visuais".
Justificando o que coloquei antes: a mesma solução em GTWVG poderia ser usada em outras bibliotecas visuais, até mesmo no VB6, então não era algo tão específico.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 9324
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 6 vezes
Mens.Curtidas: 538 vezes

Tela de PDV

Mensagempor microvolution » 22 Mar 2018 21:36

JoséQuintas escreveu:A saída seria trocar esse elemento do array por um novo, com o novo texto.
sim... exatamente é o que pensei e já estava tentando fazer há muito tempo.
Mas, não estou conseguindo juntar o quebra cabeças pra alterar apenas o elemento específico da wvg_label()
microvolution
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 934
Data de registro: 02 Set 2011 22:17
Curtiu: 56 vezes
Mens.Curtidas: 8 vezes

Tela de PDV

Mensagempor microvolution » 23 Mar 2018 10:56

veja aí QUINTAS a tela de PDV com uso do CONSOLE com GTWVG:
pdvwvg.png
pdv - wvg

os seguintes códigos inclusos:
1 ) desenhar a tela pela primeira vez:
   AAdd( aPaint, { "Box_1_descricao_produto", {|| wvt_DrawColorRect( 00, 00, 02, 79 , , RGB( 063, 096, 150 ))},                                                                            { WVT_BLOCK_LABEL, 00, 00, 03, 79 } } )
   AAdd( aPaint, { "Box_2_cupom_fiscal", {|| wvt_DrawColorRect( 03, 00, 20, 40 , , RGB( 255, 255, 206 ))},                                                                            { WVT_BLOCK_LABEL, 03, 00, 20, 40 } } )
   AAdd( aPaint, { "Box_3_codigo_produto", {|| Wvt_DrawBoxGroup( 03, 41, 05, 79 ) }, { WVT_BLOCK_BOX, 03, 41, 05, 79 } } ) // box pra dentro (fundo) 26/2/18w
   AAdd( aPaint, { "Box_4_quantidade", {|| Wvt_DrawBoxGroup( 07, 41, 09, 79 ) }, { WVT_BLOCK_BOX, 07, 41, 09, 79 } } ) // box alto relevo (pra fora) 26/2/18w
   AAdd( aPaint, { "Box_5_preco_unitario", {|| Wvt_DrawBoxGroup( 11, 41, 13, 79 ) }, { WVT_BLOCK_BOX, 11, 41, 13, 79 } } ) // box só desenhado por fora (não tem relevo algum) 26/2/18w
   AAdd( aPaint, { "Box_6_subtotal", {|| Wvt_DrawBoxGroup( 15, 41, 17, 79 ) }, { WVT_BLOCK_BOX, 15, 41, 17, 79 } } ) // desenha um box na cor selecionada (sem relevo algum) 26/2/18w
   AAdd( aPaint, { "Label1_descricao_produto", {|| Wvt_DrawLabel( 00, 00, HB_AnsiToOem("DESCRIÇÃO DO PRODUTO")   , 00, 00, RGB( 220, 220, 220 )   , RGB( 063, 096, 150 ), "Arial"         , 20, , , , , .f., .f., .f. ) },       { WVT_BLOCK_LABEL, 00, 00, 03, 50 } } )
   AAdd( aPaint, { "Label2_cupom_fiscal", {|| Wvt_DrawLabel( 03, 15, HB_AnsiToOem("CUPOM FISCAL")         , 00, 00, RGB( 000, 000, 000 )   , RGB( 255, 255, 206 ), "VisualLib"      , 24, , , , , .f., .f., .f. ) },    { WVT_BLOCK_LABEL, 03, 15, 03, 50 } } )
   AAdd( aPaint, { "Label3_item_cod_descrica_qt_vrunit_vrtot", {|| Wvt_DrawLabel( 04, 00, HB_AnsiToOem("Ítem Código   Descrição                       Qtd.     Unitário R$     SubTotal R$")         , 00, 00, RGB( 000, 000, 000 )   , RGB( 255, 255, 206 ), "VisualLib"      , 11, 08, , , , .f., .f., .f. ) },    { WVT_BLOCK_LABEL, 04, 00, 03, 50 } } )
   AAdd( aPaint, { "Label4_codigo_produto", {|| Wvt_DrawLabel( 03, 42, HB_AnsiToOem("CÓDIGO DO PRODUTO")      , 00, 00, RGB( 078, 078, 078 )   , RGB( 192, 192, 192 ), "Lucida Console"      , 14, , , , , .f., .f., .f. ) },          { WVT_BLOCK_LABEL, 03, 42, 03, 50 } } )
   AAdd( aPaint, { "Label5_quantidade", {|| Wvt_DrawLabel( 07, 42, HB_AnsiToOem("QUANTIDADE")            , 00, 00, RGB( 078, 078, 078 )   , RGB( 192, 192, 192 ), "Lucida Console"            , 14, , , , , .f., .f., .f. ) },                { WVT_BLOCK_LABEL, 07, 42, 03, 50 } } )
   AAdd( aPaint, { "Label6_preco_unitario", {|| Wvt_DrawLabel( 11, 42, HB_AnsiToOem("PREÇO UNITÁRIO R$")      , 00, 00, RGB( 078, 078, 078 )   , RGB( 192, 192, 192 ), "Lucida Console"      , 14, , , , , .f., .f., .f. ) },          { WVT_BLOCK_LABEL, 11, 42, 03, 50 } } )
   AAdd( aPaint, { "Label7_subtotal", {|| Wvt_DrawLabel( 15, 42, HB_AnsiToOem("SUBTOTAL R$")            , 00, 00, RGB( 078, 078, 078 )   , RGB( 192, 192, 192 ), "Lucida Console"            , 16, , , , , .f., .f., .f. ) },          { WVT_BLOCK_LABEL, 15, 42, 03, 50 } } )
   AAdd( aPaint, { "Gets"  , {|| AEval( GetList, {| oGet | Wvt_DrawBoxGet( oGet:Row, oGet:Col, Len( Transform( oGet:VarGet(), oGet:Picture ) ) ) } ) }, NIL } )
   ExecForm( aPaint )
2 ) após desenhar a TELA:
AAdd( aPaint1, { "Label_preco_unitario"      , {|| wvg_Label( 12, 64, , "210.0000"   , 00, 00, RGB( 255, 255, 255 )   , RGB( 192, 192, 192 ), "Arial"         , 36, , , , , .f., .f., .f. ) }   ,       { WVT_BLOCK_LABEL, 12, 64, 12, 64 } } ) // aqui é o preço unitário
AAdd( aPaint1, { "Label_descricao_produto"      , {|| Wvg_Label( 01, 00, , "KIT EMBREAGEM"      , 00, 00, RGB( 255, 255, 255 )   , RGB( 063, 096, 150 ), "verdana"      , 50, , , , , .f., .f., .f. ) }   ,       { WVT_BLOCK_LABEL, 01, 00, 01, 00 } } ) // aqui desenha o título do produto após a primeira desenhada de telas
AAdd( aPaint1, { "Label_preco_total" , {|| wvg_Label( 16, 66, , "0,00"   , 00, 00, RGB( 255, 255, 255 )   , RGB( 192, 192, 192 ), "Arial"         , 36, , , , , .f., .f., .f. ) }   ,       { WVT_BLOCK_LABEL, 12, 50, 12, 50 } } ) // esta linha é do preço de venda que está zerado, apenas pra teste
ExecForm1(aPaint1)

3 ) função EXECFORM()
STATIC FUNCTION ExecForm( aPaint )
   LOCAL cColor    := SetColor()
   LOCAL aPnt // sem estas 3 linhas não se consegue cancelar os gráficos da tela 12/3/18w
   aPnt := WvtSetPaint( aPaint ) // sem estas 3 linhas não se consegue cancelar os gráficos da tela 12/3/18w
********
******** se não houver essas linhas, tudo que é feito fica por cima do que já existe. dependendo fica uma coisa horrível 26/2/18w
   SetColor( "N/W" ) // cores básicas da tela
   CLS
   SetColor( "N/W,N/GR*,,,N/W*" ) // ativar cores após limpar a tela
******** se não houver essas linhas, tudo que é feito fica por cima do que já existe. dependendo fica uma coisa horrível 26/2/18w
********
   CAD_PRODUTOS_WVG ()
   WvtSetPaint( aPnt ) // esta função em conjunto a acima finaliza os gráficos da WVG 26/2/18w // se não for aplicada essas linhas, as imagens não desaparecem.  // sem estas 3 linhas não se consegue cancelar os gráficos da tela 12/3/18w
RETURN NIL

4 ) função EXECFORM1()
STATIC FUNCTION ExecForm1( aPaint )
   LOCAL cColor    := SetColor() , aPnt
   aPnt := WvtSetPaint( aPaint )
   SetColor( "N/W" ) // cores básicas da tela
   CLS
   SetColor( "N/W,N/GR*,,,N/W*" ) // ativar cores após limpar a tela
   GtSetupPalette() // funcionou só que preciso entender melhor 26/2/18w
   SetColor( cColor ) // esta função em conjunto a abaixo finaliza os gráficos da WVG 26/2/18w //se não for aplicada essas linhas, as imagens não desaparecem.
   WvtSetPaint( aPnt ) // esta função em conjunto a acima finaliza os gráficos da WVG 26/2/18w // se não for aplicada essas linhas, as imagens não desaparecem.
RETURN NIL

obs.:
1 - a função CAD_PRODUTOS_WVG() não postei, pois é a parte dos GETs;
2 - percebi que se não colocar os GETs antes de chamar a função EXECFORM() eles não aparecem;
3 - as funções EXECFORM() e EXECFORM1() são idênticas, pois, se eu não fizer duas chamadas não aparecem os gráficos, ou não aparecem os GETs. Bom mesmo é resumir/limpar o código pra ficar mais enxuto/profissional com apenas uma chamada à função EXECFORM().
É isso aí, por enquanto.
Vlw pessoal!
:*
microvolution
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 934
Data de registro: 02 Set 2011 22:17
Curtiu: 56 vezes
Mens.Curtidas: 8 vezes

Tela de PDV

Mensagempor microvolution » 23 Mar 2018 11:00

ah! mais observações:
1 - se não colocar o CLS - mesmo depois da tela pronta, os gráficos da EXECFORM1() não são desenhados
2 - É como eu sempre disse e volto a dizer. As libs free não possuem manuais, apenas exemplos. No caso da GTWVG - até mesmo o QUINTAS, já disse por diversas vezes, que não tutoriais, apenas pouquíssimos exemplos de uso do WVT, mas, dos WVG, quase nada. Temos que ficar "chutando" e "atirando pedras em avião" por não saber o "caminho por onde andar" e o "porto pra ancorar".
microvolution
Usuário Nível 4

Usuário Nível 4
 
Mensagens: 934
Data de registro: 02 Set 2011 22:17
Curtiu: 56 vezes
Mens.Curtidas: 8 vezes

Tela de PDV

Mensagempor hazael » 16 Abr 2018 21:41

hazael escreveu:
PDV.jpg

Olá Hazael, boa noite!
Sua tela, parece ser uma mistura de CONSOLE/GUI... apesar de poucos gráficos, achei-a bem interessante.
Como você a desenvolveu?
Pode passar-me alguns exemplos?
Estou tentando fazer uma tela em HMG (minigui 3.4.2 - usando a IDE, sem uso de formulário à parte), mas, me esbarrei na mudança de ACHOICE (que é do modo CONSOLE) para GRID (que é bem simples), mas, ele trava ao clicar com o "mouse" na BARRA DE ROLAGEM.

Então, por hora, parei, até achar uma solução...
Você pode me dar umas dicas?
Grato!


Desculpe-me, somente agora ví sua mensagem.
Não sei usar o forum direito ainda.

O código é extremamente simples, usa somente GTWVT, segue:
#define FontGrande         CHR(27) + CHR(33) + CHR(16) 
#define FontGrande18       CHR(27) + CHR(33) + CHR(18)
#define FontGrandeNegrito  CHR(27) + CHR(33) + CHR(17)
#define FontNormal         CHR(27) + CHR(33) + CHR(2)
#define FontNormalNegrito  CHR(27) + CHR(33) + CHR(10)
#define FontPequena        CHR(27) + CHR(33) + CHR(1)
#define FontPequenaNegrito CHR(27) + CHR(33) + CHR(15)

#define CortePapel         CHR(29) + CHR(86) + CHR(0)

#define CortePapel2        CHR(29) + CHR(86) + '65' + '128' // roda e corta papel 0-255

#define AbrirGaveta        CHR(16) + CHR(20) + '0' + '5'  // 0 = PINO 2 CONECTOR GAVETA // 1 = PINO 5 CONECTOR GAVETA
                                                          // ULTIMO PARAMETRO ENTRE 1 E 8 (TEMPO X 100ms)

#define LigaNegrito        CHR(27) + CHR(69) + '1'
#define DeslNegrito        CHR(27) + CHR(69) + '0'

#DEFINE Fonte12x24         CHR(27) + CHR(77) + '0'
#DEFINE Fonte9X17          CHR(27) + CHR(77) + '1'

#DEFINE CDPFrance          CHR(27) + CHR(82) + '1'

#DEFINE Altura1x           CHR(29) + CHR(33) + '0'
#DEFINE Altura2x           CHR(29) + CHR(33) + '1'
#DEFINE Altura3x           CHR(29) + CHR(33) + '2'
#DEFINE Altura4x           CHR(29) + CHR(33) + '3'
#DEFINE Altura5x           CHR(29) + CHR(33) + '4'
#DEFINE Altura6x           CHR(29) + CHR(33) + '5'
#DEFINE Altura7x           CHR(29) + CHR(33) + '6'
#DEFINE Altura8x           CHR(29) + CHR(33) + '7'

#DEFINE Largura1x          CHR(29) + CHR(33) + '0'
#DEFINE Largura2x          CHR(29) + CHR(33) + '1'
#DEFINE Largura3x          CHR(29) + CHR(33) + '2'
#DEFINE Largura4x          CHR(29) + CHR(33) + '3'
#DEFINE Largura5x          CHR(29) + CHR(33) + '4'
#DEFINE Largura6x          CHR(29) + CHR(33) + '5'
#DEFINE Largura7x          CHR(29) + CHR(33) + '6'
#DEFINE Largura8x          CHR(29) + CHR(33) + '7'

/*******************************************************************************
*
*  Simple PDV
*
*  Copyright (c) 2018 - Mario Wan Stadnik
*  wanstadnik(at)gmail.com
*
******************************************************************************/

#include 'inkey.ch'
#include 'rddsys.ch'
#include 'dbinfo.ch'
#include 'setcurs.ch'
#include 'hbgtinfo.ch'

announce HB_GTSYS
request  HB_GT_WVT_DEFAULT
request  HB_CODEPAGE_FRISO

/*******************************************************************************
*  Main( ... ) --> NIL
*  -------------------
*
******************************************************************************/ 
PROCEDURE Main( ... )

   hb_cdpSelect( 'FRISO' )

   hb_gtInfo( HB_GTI_COMPATBUFFER, .F. )

//hb_GtInfo( HB_GTI_CLOSEMODE, 1 )

   hb_gtInfo( HB_GTI_SELECTCOPY, "Selecione e Copie" )

   hb_gtInfo( HB_GTI_RESIZABLE, .T. )         
   hb_gtInfo( HB_GTI_RESIZEMODE, HB_GTI_RESIZEMODE_FONT )

   IF hb_osIsWinVista()
      hb_gtInfo( HB_GTI_FONTNAME, 'Consolas' )       
   ELSE
      hb_gtInfo( HB_GTI_FONTNAME, 'Lucida Console' )       
   ENDIF
 
   hb_gtInfo( HB_GTI_ALTENTER, .T. )

//  hb_gtInfo( HB_GTI_ISFULLSCREEN, .T. )

   hb_gtInfo( HB_GTI_FONTSIZE , 40 )
   hb_gtInfo( HB_GTI_FONTWIDTH, 16   )

   hb_gtInfo( HB_GTI_WINTITLE, "uPDV 1.0" )   

   
   SETBLINK( .F. )
   SET MESSAGE TO MAXROW()-1
   SET SCOREBOARD OFF
   SET CONFIRM ON
   SET DELETED ON
   SET WRAP ON
   SET DEFAULT TO
   SET DATE FORMAT TO 'DD/MM/YYYY'
   SET DEVICE TO SCREEN
   SET PRINTER OFF
   SET PRINTER TO
   SET TYPEAHEAD TO 16
   SET EVENTMASK TO INKEY_ALL + HB_INKEY_GTEVENT - INKEY_MOVE
   READINSERT( .F. )
   SETCURSOR( IF( READINSERT(), SC_INSERT, SC_NORMAL ) )

   SETMODE( 25,90 )
   
   aLista := {;
               { '7898452103423', 'CHA VANILLA PEACH - CAIXA 27G', 'UN', 10 },;
               { '7898452103454', 'CHA MATE CHAI - CAIXA 27G', 'UN', 10 },;
               { '7898452103478', 'CHA HIBISCUS LIME - CAIXA 27G', 'UN', 10 },;
               { '7898452103485', 'CHA LEMON GINGER - CAIXA 27G', 'UN', 10 },;
               { '7898452103492', 'CHA CAPIM LIMAO - CAIXA 27G', 'UN', 10 },;
               { '7898452103508', 'CHA CAMOMILA - CAIXA 27G', 'UN', 10 },;
               { '7898452103515', 'CHA VERDE - CAIXA 27G', 'UN', 10 },;
               { '7898452103522', 'CHA MANDARINA - CAIXA 27G', 'UN', 10 },;
               { '7898452103546', 'CHA ERVA DOCE - CAIXA 27G', 'UN', 10 },;
               { '7898452103553', 'CHA ACAI E GUARANA - CAIXA 27G', 'UN', 10 },;
               { '7898452103560', 'CHA VERDE COM BERGAMOTA - CAIXA 27G', 'UN', 10 };
             }

   SETCOLOR( ',W+/B*,,,W/B' )

   DO WHILE .T.
     
      SETCOLOR( 'W/N*' )
      CLS
     
      SETCOLOR( 'N+/W*' )
      @ 03,00 CLEAR
      @ 03,00 SAY "Item  Código         Descrição                            Qtd  Un  X  Vlr.Unit  Vlr.Total"
      @ 04,00 SAY '------------------------------------------------------------------------------------------'

      nLin := 5
      nTot := 0

      DO WHILE .T.
         SETCOLOR( 'N/GR*' )
         @ 01,75 SAY nTot PICTURE '@E 99,999,999.99'

         SETCOLOR( 'W/N*' )
         wCODIGO := space( 13 )
         @ 01,68 SAY "Total:"
         @ 01,02 SAY "Código:" GET wCODIGO PICTURE '@!'
         READ

         wCODIGO := ALLTRIM( wCODIGO )

         IF LEFT( wCODIGO, 1 ) == '9' .AND. !EMPTY( nTot )
            IF ! Pagamento( nTot, aLista )
               EXIT
            ENDIF   
         ENDIF
           
         nPos := ascan( aLista, { |a| a[1] == wCODIGO } )

         IF nPos > 0
            SETCOLOR( 'N+/W*' )
            @ nLin,01 SAY 1 PICTURE '999'
            @ nLin,06 SAY aLista[nPos][1]
            @ nLin,21 SAY aLista[nPos][2]
            @ nLin,58 SAY 2 PICTURE '999'
            @ nLin,63 SAY aLista[nPos][3]
            @ nLin,67 SAY 'X'
            @ nLin,70 SAY aLista[nPos][4] PICTURE '@E 9,999.99'
            @ nLin,80 SAY aLista[nPos][4] * 2 PICTURE '@E 99,999.99'
            nTot += aLista[nPos][4] * 2
            nLin := MIN( ++nLin, 24 )
         ELSEIF LASTKEY() != K_ESC .AND. LEFT( wCODIGO, 1 ) != '9'
            hb_Alert( "Produto não cadastrado!",,'W+/R*' )   
         ENDIF

         IF LASTKEY() == K_ESC .OR. LEFT( wCODIGO, 1 ) == '9'
            EXIT
         ENDIF

     ENDDO

     IF LASTKEY() == K_ESC .AND. EMPTY( nTot )
        EXIT
     ENDIF

   ENDDO

RETURN

/*

Codigo de Barras
Descrição
Preço Venda
Unidade

*/

FUNCTION Pagamento( nTotal, aLista )

   LOCAL nOpc
   LOCAL wDINHEIRO := 0

   SETCOLOR( 'W+/B' )
   @ 09,28 CLEAR TO 21,50
   @ 10,32 SAY "   Pagamento   " COLOR 'N/BG*'
   @ 20,32 SAY "ESC - Abandona" COLOR 'W/B'
   @ 13,35 PROMPT "DINHEIRO"
   @ 15,35 PROMPT " CARTÃO "
   @ 17,35 PROMPT " CHEQUE "
   MENU TO nOpc
   
   IF nOpc = 1
      @ 13,28 CLEAR TO 21,50
      @ 13,30 SAY "   TOTAL:"
      @ 15,30 SAY "DINHEIRO:"
      @ 17,30 SAY "   TROCO:"
      @ 13,40 SAY nTotal PICTURE '@E 999999.99' COLOR 'GR+/B'
      @ 15,40 GET wDINHEIRO PICTURE '@E 999999.99' VALID( wDINHEIRO >= nTotal )
      READ
      IF EMPTY( wDINHEIRO )
         RETURN .F.
      ENDIF

      @ 17,40 SAY wDINHEIRO - nTotal PICTURE '@E 999999.99' COLOR 'R+/B'
     
      @ 20,30 SAY "F2 - Imprime Cupom" COLOR 'W/B'
     
      DO WHILE INKEY(0) != K_F2
         IF LASTKEY() == K_ESC
            RETURN .F.
         ENDIF   
      ENDDO

   ELSEIF nOpc = 2
   ELSEIF nOpc = 3
   ELSE
      RETURN .F.
   ENDIF

   Imprime( aLista )
RETURN .T.

FUNCTION Imprime( aLista )

Local ArqImp := "cupom.txt"
Local nHandle
Local cHoraSaida
Local cPermanencia
Local gPrinterName := win_PrinterGetDefault()
Local cPrinterName

SET PRINT ON
SET PRINTER TO &ArqImp
SET DEVICE TO PRINTER
SET CONSOLE OFF

SetPrc(0,0)

@ PROW() + 01, 00 SAY FontGrandeNegrito + Padr(AllTrim("Loja Modelo Comércio de Chás"),48)
@ PROW() + 01, 00 SAY FontNormal + "CNPJ 00.000.000/000100"
@ PROW() + 01, 00 SAY "Travessa Jesuíno Marcondes, 00"
@ PROW() + 01, 00 SAY "Centro - Praça Osório - Curitiba-PR"
@ PROW() + 01, 00 SAY REPLICATE("-",48)
@ PROW() + 01, 00 SAY Padc( " CUPOM NAO FISCAL " ,48 )
@ PROW() + 01, 00 SAY REPLICATE("-",48) + FontPequena

FOR i := 1 TO LEN( aLista )
     @ PROW() + 1, 00 SAY aLista[i][1]
     @ PROW()    , 15 SAY LEFT( aLista[i][2], 30 )
     @ PROW() + 1, 15 SAY 2 PICT "@E 99"
     @ PROW()    , 20 SAY "x"
     @ PROW()    , 25 SAY 10 PICT "@E 9999.99"
     @ PROW()    , 37 SAY 20 PICT "@E 9,999.99"
NEXT i

@ PROW() + 01, 00 SAY FontNormal
@ PROW()     , 39 SAY "------------"

@ PROW() + 01, 28 SAY "SUB-TOTAL"
@ PROW()     , 39 SAY 20 PICT "@E 99,999.99"

@ PROW() + 01, 00 SAY FontNormalNegrito

   @ PROW() + 01, 00 SAY FontNormal
   @ PROW() + 01, 28 SAY " RECEBIDO"
   @ PROW()     , 39 SAY 50  PICT "@E 99,999.99"

   @ PROW() + 01, 28 SAY "T R O C O"
   @ PROW()     , 39 SAY 30 PICT "@E 99,999.99"

@ PROW() + 02, 00 SAY REPLICATE("-",48)
@ PROW() + 05, 00 SAY CortePapel

SET CONSOLE ON
SET PRINTER OFF
SET PRINTER TO
SET DEVICE TO SCREEN
SET DATE FORMAT TO "DD/MM/YYYY"
SET RELATION TO

If !Empty(gPrinterName)
   win_PrintFileRaw( gPrinterName, ArqImp, "IMPRESSAO")
Endif

RETURN .T.

Para compilar: hbmk2 uPDV HBWIN.HBC -GTWVT -ouPDV

Note que não tem banco de dados, mas tem um array com alguns produtos exemplo. Veja no código.
Imprime cupom (testei apenas na Elgin i9). O cupom não é resultado da compra, é apenas um exemplo.
Eu fiz esse código apenas como um demonstrativo, nunca foi aplicado na prática, mas estou certo que funcionaria.
A parte mais trabalhosa é a fiscal (XML, assinar, enviar, retorno, etc...) - para variar...
Harbour | GTWVT | MingW | Visual Studio Code
Avatar de usuário

hazael
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 196
Data de registro: 27 Nov 2016 12:59
Curtiu: 2 vezes
Mens.Curtidas: 14 vezes

Tela de PDV

Mensagempor evaldo » 26 Abr 2018 22:31

https://prnt.sc/jamrtj
https://prnt.sc/jamrtj
olá pessoal,
esse PDV eu fiz em 2001 com clipper 5,2 (100%) sem usar lib de terceiro, ele estava em produção ate 2007, eu tinha cliente com ele com 8PDV on line
como vi esse tópico resolvi postar, com poucos ajuste podera implementar NFC-e com ACBR, se alguem tiver interesse e for utilizar posso enviar os fonte sem custo.

skype: soft.tres
e-mail: soft-tres.com.br
evaldo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 111
Data de registro: 27 Out 2005 22:29
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Tela de PDV

Mensagempor JoséQuintas » 26 Abr 2018 22:49

evaldo escreveu:esse PDV eu fiz em 2001 com clipper 5,2 (100%) sem usar lib de terceiro


Eu diria que é impossível.
Visivelmente usa recursos gráficos e o Clipper 5.2 não tinha isso.
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 9324
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 6 vezes
Mens.Curtidas: 538 vezes

Tela de PDV

Mensagempor JoséQuintas » 26 Abr 2018 22:55

microvolution escreveu:veja aí QUINTAS a tela de PDV com uso do CONSOLE com GTWVG:


Estranhei esta parte. Não deveria ser função?
Pelo que imagino é pra bloquear uma parte da tela.

{ WVT_BLOCK_BOX, 03, 41, 05, 79 } 
José M. C. Quintas
Harbour 3.4, mingw, gtwvg, multithread, dbfcdx, ADO+MySql, hbnetio, PNotepad
"The world is full of kings and queens, who blind our eyes and steal our dreams Its Heaven and Hell"
Avatar de usuário

JoséQuintas
Colaborador

Colaborador
 
Mensagens: 9324
Data de registro: 26 Fev 2007 11:59
Cidade/Estado: São Paulo-SP
Curtiu: 6 vezes
Mens.Curtidas: 538 vezes

Tela de PDV

Mensagempor evaldo » 26 Abr 2018 23:48

https://prnt.sc/janckf

corrigindo a versao do COMPILADOR 5.3B rev. 338 1996
evaldo
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 111
Data de registro: 27 Out 2005 22:29
Curtiu: 0 vez
Mens.Curtidas: 0 vez

Tela de PDV

Mensagempor hazael » 27 Abr 2018 08:13

Bem, se puder, envia os fontes para nós, eu mesmo gostaria de ver como foi feito.
Obrigado
Harbour | GTWVT | MingW | Visual Studio Code
Avatar de usuário

hazael
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 196
Data de registro: 27 Nov 2016 12:59
Curtiu: 2 vezes
Mens.Curtidas: 14 vezes

Anterior



Retornar para Harbour

Quem está online

Usuários vendo este fórum: Ahrefs [Bot] e 3 visitantes


Faça uma doação para o forum
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro