Como fazer para rolar venda no caixa

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
Gilberto M Silva
Usuário Nível 3
Usuário Nível 3
Mensagens: 230
Registrado em: 13 Mar 2007 18:00
Localização: Natal-RN / Parelhas(RN) / Natal(RN)
Contato:

Como fazer para rolar venda no caixa

Mensagem por Gilberto M Silva »

Amigos uso o clipper 5.3

estou precisando fazer um programa de caixa (vendas) que quando o usuário fazer uma venda, ao lado ir aparecendo em sequencia a venda efetuada, como em um supermercado. Se alguem poder me explicar com detalhes fico grato.

/desde já obrigado.
Gilberto[]
A cada conversasão realizada conquistamos mais amigos, isto é um lucro inestimável
Clip5.2 DBFCDX
marcolinosilva@click21.com.br gmarcolinosilva@hotmail.com / Skype:gilberto.marcolino
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Caro Gilberto, eu acho que não vai encontrar dificuldades alguma em fazer isso. Se utilizar uma função de procura de item e exibição dentro de um do while. Acho que a principio tudo deve estar cadastrado com um código de barras para localizar cada produto. Eu fiz agora improvisado só pra ter uma idéia:

Código: Selecionar todos

CLS
VLN:=2
VTOT:=0.00
@ 01,01 TO 22,32
DO WHILE .T.
   CODVAR:=SPACE(13)
   @ 12,38 SAY "Digite o codigo: "
   @ 12,55 GET CODVAR PICT "@9" VALID PROCURA(CODVAR)
   READ
   IF LASTKEY()=27
       EXIT
   ENDIF
ENDDO

FUNCTION PROCURA(CODVAR)
// SELE 1
// SEEK CODVAR
VRET:=.T.
VVLR:=2.99
VPROD:="BOLACHA DE MAIZENA  "+TRANSFORM(VVLR,"@E 999,999.99")
IF VRET=.T.
// IF FOUND()
   VRET:=.T.
   MOSTRA(VPROD,VVLR)
ELSE
   VRET:=.F.
   // MENSAGEM("Codigo nao cadastrado !",5)
ENDIF
RETURN VRET

FUNCTION MOSTRA(VPROD,VVAL)
VTOT:=VTOT+VVAL
@ VLN,02 SAY VPROD
@ VLN+1,02 SAY SPACE(20)+"----------"
@ VLN+2,02 SAY SPACE(20)+TRANSFORM(VTOT,"@E 999,999.99")
IF VLN+3>21
   VLN:=2
ELSE
   VLN:=VLN+1
ENDIF
RETURN
Claro que esse exemplo pode ser melhorado. Mas acredito que utilizar código de barras é a melhor opção quando se tem vários itens cadastrados. A margem de erro, se torna bem menor ou nula se tiverem bem cadastrados todos os titens. Sabe que o leitor de codigo de barras é apenas uma reprodução do que é digitado no teclado, assim que não será dificil implementar.... Boa sorte colega !.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Toledo
Administrador
Administrador
Mensagens: 3133
Registrado em: 22 Jul 2003 18:39
Localização: Araçatuba - SP
Contato:

Mensagem por Toledo »

Gilberto, segue mais um exemplo do que você pode fazer...

Código: Selecionar todos

CLEAR
SET SCOREBOARD OFF
@ 00,00 TO 24,79
@ 02,34 TO 22,77
@ 02,53 SAY "[ CUPOM ]"
@ 02,02 TO 04,32
@ 03,04 SAY "Codigo..:"
@ 06,02 TO 08,32
@ 06,04 SAY "[Descricao Produto]"
@ 09,02 TO 11,32
@ 10,04 SAY "Quantidade...:"
@ 12,02 TO 14,32
@ 13,04 SAY "Vr.Unitario..:"
@ 16,02 TO 18,32
@ 17,04 SAY "Sub-Total....:"
@ 21,04 SAY "F5 - Consulta Cupom"
PRIV aProd:={{1,"MICRO PENTIUM 4",2000.00},;
             {2,"MOUSE OPTICO",70.00},;
             {3,"CD-R SONY",1.60}}
nCod=0
nQtde=1
nUnit=0
nSubTot=0
mCupom=SPAC(10)
MEMOEDIT(mCupom,03,35,21,76,.F.,.F.)
SET KEY -4 TO CON_CUPOM()
vInicia:=.T.
DO WHILE .T.
 @ 3,14 GET nCod PICT "9999" VALID (nCod>0.and.nCod<4)
 READ
 IF LASTKEY()=27
  EXIT
 ENDIF
 @ 7,4 SAY aProd[nCod,2]
 @ 13,19 SAY TRANS(aProd[nCod,3],"@E 9,999.99")
 nUnit=aProd[nCod,3]
 @ 10,19 GET nQtde PICT "9999"
 READ
 nSubTot=aProd[nCod,3]*nQtde
 @ 17,19 SAY TRANS(nSubTot,"@E 9,999.99")
 IF vInicia
  mCupom:="             SUA EMPRESA S/A"+chr(13)+chr(10)
  mCupom+="  Rua Fulano de Tal, 123 - Cidade - SP"+chr(13)+chr(10)
  mCupom+="        CNPJ 99.999.999/9999-99"+chr(13)+chr(10)
  mCupom+="========================================"+chr(13)+chr(10)
  mCupom+="Codigo/Descricao Produto"+chr(13)+chr(10)
  mCupom+="Qtde  -  Vr.Unit.  =  Sub-Total"+chr(13)+chr(10)
  mCupom+="========================================"+chr(13)+chr(10)
  vInicia=.F.
 ENDIF
 mCupom+=STRZERO(nCod,4)+"/"+aProd[nCod,2]+chr(13)+chr(10)
 mCupom+=TRANS(nQtde,"9999")+"  -  "+TRANS(aProd[nCod,3],"@E 9,999.99")+;
         "  =  "+TRANS(nSubTot,"@E 9,999.99")+chr(13)+chr(10)
 MEMOEDIT(mCupom,03,35,21,76,.F.,.F.) 
ENDDO
RETU

PROC CON_CUPOM()
 MEMOEDIT(mCupom,03,35,21,76,.F.,"EDITAR")
RETU

FUNC EDITAR
IF LASTKEY()=27
    RETU 23
ENDIF
RETU 0
Para imprimir o cupom despois você pode até usar a variável mCupom, que é um campo memo.

Abraços,
Toledo - Clipper On Line
toledo@pctoledo.com.br
Harbour 3.2/MiniGui/HwGui
Faça uma doação para o fórum, clique neste link: http://www.pctoledo.com.br/doacao
Avatar do usuário
Marcos
Usuário Nível 3
Usuário Nível 3
Mensagens: 355
Registrado em: 20 Set 2003 09:16
Localização: Cáceres/Mato Grosso

Mensagem por Marcos »

Gilberto,
Use o Dbedit ou Tbrowse para fazer o que vc precisa, para o registro ir aparecendo na tela, basta vc pressionar seta a cima ou seta abaixo, ou para ficar mais profissional coloque uma opção <ATUALIZAR> dando um Refresh na tabela.
Espero que clareou mais para vc.
Marcos.
Atenciosamente,
_____________________________
Marcos Antonio da Silva
marcosilva90@hotmail.com
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

Legal este exemplo que o Toledo deu porque além de possibilitar a exibição do cupom por inteiro (através do MEMOEDIT) possibilitaria a impressão do cupom através de arquivo gerado. O que eu achei também interessante, é mostrar o sub-total bem visível, podendo até ser exibido com letras maiores. Também seria bom colocar o campo de valor de pagamento, para indicar o valor de troco na tela.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Gilberto M Silva
Usuário Nível 3
Usuário Nível 3
Mensagens: 230
Registrado em: 13 Mar 2007 18:00
Localização: Natal-RN / Parelhas(RN) / Natal(RN)
Contato:

Mensagem por Gilberto M Silva »

valeu amigo Pablo as informações vao ser puchadas por codigo de barras,
gato por sua atenção.
Gilberto[]
A cada conversasão realizada conquistamos mais amigos, isto é um lucro inestimável
Clip5.2 DBFCDX
marcolinosilva@click21.com.br gmarcolinosilva@hotmail.com / Skype:gilberto.marcolino
Avatar do usuário
Gilberto M Silva
Usuário Nível 3
Usuário Nível 3
Mensagens: 230
Registrado em: 13 Mar 2007 18:00
Localização: Natal-RN / Parelhas(RN) / Natal(RN)
Contato:

Mensagem por Gilberto M Silva »

valeu mesmo, vc são feras,
Gilberto[]
A cada conversasão realizada conquistamos mais amigos, isto é um lucro inestimável
Clip5.2 DBFCDX
marcolinosilva@click21.com.br gmarcolinosilva@hotmail.com / Skype:gilberto.marcolino
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Gilberto:
Segue abaixo um exemplo....

Código: Selecionar todos

nInicio := timetosec(time())
nFim := timetosec(time())
@ 06,10 say  "Tempo"+sectotime(nFim-nInicio)
Obs:Sempre que tiver uma duvida pode postar em um novo post...

e seja bem vindo...

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

sygecom escreveu:

Código: Selecionar todos

nInicio := timetosec(time())
nFim := timetosec(time())
@ 06,10 say  "Tempo"+sectotime(nFim-nInicio)
Tchê Leonardo, você pensou que o colega estava perguntando como fazer intervalos de horas ?.
Desculpe, mas isto ja aconteceu há tempos atrás novamente (e se não me engano por vocês mesmos), mas é que:
como fazer calculo com a hora?

Ex: hor1 := time()
hor2 := time()
hor3 := hor2 - hor1
Faz parte da assinatura do colega.... hihihihi
Imagem
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
sygecom
Administrador
Administrador
Mensagens: 7131
Registrado em: 21 Jul 2006 10:12
Localização: Alvorada-RS
Contato:

Mensagem por sygecom »

Tchê Leonardo, você pensou que o colega estava perguntando como fazer intervalos de horas ?.
Desculpe, mas isto ja aconteceu há tempos atrás novamente (e se não me engano por vocês mesmos), mas é que:
Tche, eu não pensei...ele realmente esta perguntando....só acho que ele não soube postar....
Faz parte da assinatura do colega.... hihihihi
Eu sei disso....e colega que esta chegando agora é novo...e não deve saber...

Abraços
Leonardo Machado
Leonardo Machado
xHarbour.org + Hwgui + PostgreSql
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Em fóruns e grupos de notícias algumas pessoas tem o hábito de postar dicas em suas assinaturas. Não é muito comum, mas é louvável. :)
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Pablo César
Usuário Nível 7
Usuário Nível 7
Mensagens: 5312
Registrado em: 31 Mai 2006 10:22
Localização: Curitiba - Paraná

Mensagem por Pablo César »

sygecom escreveu:Tche, eu não pensei...ele realmente esta perguntando....só acho que ele não soube postar....
Desculpa, Leonardo, isto ja aconteceu antes, mas com outro colega... hihihi

Encontrei a mensagem que eu mencionava: Veja aqui
Maligno escreveu:Em fóruns e grupos de notícias algumas pessoas tem o hábito de postar dicas em suas assinaturas.
Tudo bem, fazer uma menção até entendo. Eu mesmo coloquei várias mensagens com GIF animado para destacar algo. Mas fazer uma pergunta dentro da assinatura (desculpa Gilberto) mas causa confusão...

Mas tudo bem... ninguém morre por isso ! Só causou-me graça porque realmente parece que fosse outro questionamento.
Um clip-abraço !

Pablo César Arrascaeta
Compartilhe suas dúvidas e soluções com todos os colegas aqui do fórum.
Evite enviar as dúvidas técnicas por MPs ou eMails, assim todos iremos beneficiar-nos.
Avatar do usuário
Gilberto M Silva
Usuário Nível 3
Usuário Nível 3
Mensagens: 230
Registrado em: 13 Mar 2007 18:00
Localização: Natal-RN / Parelhas(RN) / Natal(RN)
Contato:

Mensagem por Gilberto M Silva »

como pode ser feito para que os itens listados na tela quando encher a tela, o ultimo listado ficar sempre visivel, isto é, o relatorio na tela ficar rolando a medida que sempre um novo item seja adicionado.
Gilberto[]
A cada conversasão realizada conquistamos mais amigos, isto é um lucro inestimável
Clip5.2 DBFCDX
marcolinosilva@click21.com.br gmarcolinosilva@hotmail.com / Skype:gilberto.marcolino
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Pablo César escreveu:Mas fazer uma pergunta dentro da assinatura (desculpa Gilberto) mas causa confusão...
Confusão nenhuma. Você que se distraiu e acabou não entendendo. Ele fez como se faz em FAQs. Uma pergunta e sua resposta na seqüência. Absolutamente normal.
Aliás, ele tirou a dica da assinatura. Gilberto, minha sugestão: coloque de volta e vá trocando as dicas de tempos em tempos. Fica bem legal.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Avatar do usuário
Gilberto M Silva
Usuário Nível 3
Usuário Nível 3
Mensagens: 230
Registrado em: 13 Mar 2007 18:00
Localização: Natal-RN / Parelhas(RN) / Natal(RN)
Contato:

Mensagem por Gilberto M Silva »

O explo do Toledo tá perfeito qual seria o camando para rolar o itens listados a medida que fossem adicionados novos itens.
Gilberto[]
A cada conversasão realizada conquistamos mais amigos, isto é um lucro inestimável
Clip5.2 DBFCDX
marcolinosilva@click21.com.br gmarcolinosilva@hotmail.com / Skype:gilberto.marcolino
Responder