Página 1 de 1

Minha rotina: preciso de ajuda

Enviado: 26 Mai 2012 00:53
por Vandi
Boa noite...

Estou precisando de uma pequena ajuda dos colaboradores dêsse forum.
Abaixo segue o código da minha rotina (como disse anteriormente, de forma bem arcaica).

Código: Selecionar todos

*---------------------------------------------------------------------------------------
Function Main()   
*---------------------------------------------------------------------------------------

#include "hwgui.ch"
STATIC Thisform
PRIVATE vEdit1 := SPACE(10), vEdit2:="",nLancto:=0,nPrecoDia:=0
PRIVATE oEdit1, oEdit2, oData, oQtd, oRefKg, oRefVr, oBebVr, oSobVr, oTpgto
PRIVATE vData,vQtd,vRefKg,vRefVr,vBebVr,vSobVr,vTpgto
PRIVATE vData :=SPAC(10),vQtd  :=0,vRefkg:=0,vRefVr:=0,vBebVr:=0,vSobVr:=0,vTpgto:=SPAC(02)
PRIVATE gData :=SPAC(10),gQtd  :=0,gRefkg:=0,gRefVr:=0,gBebVr:=0,gSobVr:=0 //,vTpgto:=SPAC(02)
PRIVATE tmesQtd,tmesRefKg,tmesRefVr,tmesBebVr,tmesSobVr

#define BLUE       16711680
#define DARKBLUE   10027008
#define WHITE      16777215
#define CYAN       16776960
#define BLACK             0
#define RED             255
#define GREEN         32768
#define GRAY        8421504
#define YELLOW        65535


REQUEST DBFCDX
RDDSETDEFAULT( "DBFCDX" )
DBSETDRIVER( "DBFCDX" )


SET DELETE ON
SET DATE TO BRIT
SET CENT ON
SET EXCL ON
SET CONF ON

   OpenArquivos()

   PREPARE FONT oFont002 NAME "Time New Roman" WIDTH 12 HEIGHT -14
   PREPARE FONT oFont003 NAME "Time New Roman" WIDTH 09 HEIGHT -14

   INIT DIALOG TelaVenda1 TITLE "Venda Diaria Analitica"   ICON HIcon():AddResource(1004)  ;
     AT 370,175 SIZE 830,520  FONT HFont():Add( '',0,-13,400,,,)   CLIPPER NOEXIT ;
     STYLE WS_POPUP+WS_CAPTION+DS_SYSMODAL +DS_CENTER +WS_SYSMENU+WS_MINIMIZEBOX+WS_SIZEBOX
     Thisform := TelaVenda1

     PegaUltimoLanc()

     MontaTelaVenda()

     @185, 68 GET oData VAR vData VALID {||VerData(vData)} PICTURE "99/99/9999" ID 307 SIZE  80, 24  TOOLTIP "" 

     @185,113 GET oQtd  VAR vQtd  PICTURE "99" SIZE  30, 24  TOOLTIP "" VALID {||vQtd>0}

     @185,158 GET oRefKg VAR vRefKg PICTURE "999.999" SIZE  80, 24  TOOLTIP "" VALID {||CalculaPrato(vRefKg)}

*    @185,203 GET oRefVr VAR vRefVr PICTURE "999,999.99" SIZE  80, 24  TOOLTIP "" 

     @185,248 GET oBebVr VAR vBebVr PICTURE "999,999.99" SIZE  80, 24  TOOLTIP "" 

     @185,293 GET oSobVr VAR vSobVr PICTURE "999,999.99" SIZE  80, 24  TOOLTIP "" 

     @185,338 GET oTpgto VAR vTpgto VALID {||VerCodPagto(vTpgto)} PICTURE "99" SIZE  30, 24  TOOLTIP "" 


     ACTIVATE DIALOG TelaVenda1 

RETURN



*---------------------------------------------------------------------------------------
Function VerData(vData)
*---------------------------------------------------------------------------------------

   nData:=CTOD(vData)
   If DAY(nData)=0
         MsgInfo("!!! Data invalida !!!","Mensagem de erro")
         vData:=SPAC(10)
         oData:Refresh()
         oData:SetFocus()
         Return.f.
   EndIf

   If!MsgYesNo("Confirma essa data "+vData+"?","Atencao!!!")
         vData:=SPAC(10)
         oData:Refresh()
         oData:SetFocus()
         Return.f.
   EndIf

   //Verificar se tem pre‡o/Kg cadastrado
   SELECT PRECOKG
   PRECOKG->(DbGoTop())
   If!PRECOKG->(DbSeek(DTOS(nData)))
        MsgInfo('Nao tem preco/Kg cadastrado para essa data!!!','ATENCAO!!!')
        oData:REFRESH()
        Return.f.
   Else
         nPrecoDia:=PRECOKG->pkValo
         @189,418 SAY PadL(Alltrim(TRANSFORM(nPrecoDia,"99,999.99")),10) ;
         COLOR RED SIZE 70, 30  FONT oFont003  STYLE SS_RIGHT
   EndIf

   PegaDadosTotalDia(vData)
   PegaDadosTotalMes(vData)
   oData:DISABLE()
Return.t.


*---------------------------------------------------------------------------------------
Function CalculaPrato(vRefKg)
*---------------------------------------------------------------------------------------
    vRefVr=ROUND(nPrecoDia*vRefKg,2)
    @138,207 Say  PadL(Alltrim(TRANSFORM(vRefVr,"999,999.99")),10) ;
    COLOR BLACK SIZE 120, 24  FONT oFont003  STYLE SS_RIGHT
Return Nil


*---------------------------------------------------------------------------------------
Function VerCodPagto(vTpgto)
*---------------------------------------------------------------------------------------

   Select TipPagto
   TipPagto->(DbGoTop())
   If!TipPagto->(DbSeek(vTpgto))
         MsgInfo("!!! Tipo de Pagamento Invalido !!!","Mensagem de erro")
         vTpgto:=SPAC(02)
         oTpgto:Refresh()
         oTpgto:SetFocus()
         Return.f.
   EndIf
   MsgInfo("Pagamento em "+TipPagto->pDesc,"Informacao")
   If MsgYesNo("CONFIRMA OS DADOS DIGITADOS?","ATENCAO")
      GravaLancto()
      If!MsgYesNo("Deseja incluir mais lancamentos?","ATENCAO")
         GravaDadosArquivo2()
         GravaDadosArquivo3()
         TelaVenda1:Close()
      EndIf
      LimpaVars()
   EndIf
Return.t.

*-------------------------------------------------
func gravalancto
*---------------------------------------------------------------------
nLancto=nLancto+1
SELECT VENDIA11
APPEND BLANK
    VENDIA11->fRegi = StrZero(nLancto,6)
    VENDIA11->fData = CTOD(vData)
    VENDIA11->fKilo = vRefKg
    VENDIA11->fValo = vRefVr
    VENDIA11->fQtde = vQtd
    VENDIA11->fPgto = vTpgto
    VENDIA11->fBebi = vBebVr
    VENDIA11->fSobr = vSobVr
    @195,385 SAY StrZero(nLancto,6)   COLOR BLUE SIZE 70, 30  FONT oFont003 OF TelaVenda1

    gQtd  =gQtd  +vQtd
    gRefkg=gRefKg+vRefKg
    gRefVr=gRefVr+vRefVr
    gBebVr=gBebVr+vBebVr
    gSobVr=gSobVr+vSobVr
    MostraDados()
Return Nil

*-------------------------------------------------
Function LimpaVars
*---------------------------------------------------------------------
*vData :=SPAC(10)
vQtd  :=SPAC(02)
vRefkg:=0
vRefVr:=0
vBebVr:=0
vSobVr:=0
vTpgto:=SPAC(02)
Get_Refresh()
Return Nil

*-------------------------------------------------
Function Get_Refresh
*---------------------------------------------------------------------
Local TelaVenda1:=GetModalHandle()
*oData :Refresh()
oQtd  :Refresh()
oRefkg:Refresh()
*oRefVr:Refresh()
oBebVr:Refresh()
oSobVr:Refresh()
oTpgto:Refresh()
SetFocus(TelaVenda1,307)
Return Nil

*-------------------------------------------------
Function PegaUltimoLanc
*---------------------------------------------------------------------
   SELECT VENDIA11
   VENDIA11->(OrdSetFocus('nlanc'))
   VENDIA11->(DbGoBottom())
   nLancto=VAL(VENDIA11->fRegi)
Return Nil

*-------------------------------------------------
Function PegaDadosTotalDia(vData)
*---------------------------------------------------------------------
   SELECT VENDIA12
   VENDIA12->(OrdSetFocus('ndata'))
   VENDIA12->(DbGoTop())

*  If VENDIA12->(DbSeek(DTOS(nData)))
   If VENDIA12->(DbSeek(DTOS(CTOD(vData))))
      gData =DTOC(VENDIA12->mData)
      gQtd  =VENDIA12->mQtde
      gRefkg=VENDIA12->mKilo
      gRefVr=VENDIA12->mValo
      gBebVr=VENDIA12->mBebi
      gSobVr=VENDIA12->mSobr
   Else
      APPEND BLANK
      gQtd  =0
      gRefkg=0
      gRefVr=0
      gBebVr=0
      gSobVr=0
   EndIf
   @425, 68 SAY vData   COLOR BLUE SIZE 100, 30  FONT oFont003 OF TelaVenda1
   MostraDados()
Return Nil


*-------------------------------------------------
Function PegaDadosTotalMes(vData)
*---------------------------------------------------------------------
   SELECT VENDAMES
   VENDAMES->(OrdSetFocus('AnoMes'))
   VENDAMES->(DbGoTop())

*  If VENDIA12->(DbSeek(DTOS(nData)))
   If VENDAMES->(DbSeek(RIGHT(vData,4)+SUBSTR(vData,4,2)))
      tmesData =VENDAMES->mesData
      tmesQtd  =VENDAMES->mesQtde
      tmesRefkg=VENDAMES->mesKilo
      tmesRefVr=VENDAMES->mesValo
      tmesBebVr=VENDAMES->mesBebi
      tmesSobVr=VENDAMES->mesSobr
   Else
      APPEND BLANK
      tmesQtd  =0
      tmesRefkg=0
      tmesRefVr=0
      tmesBebVr=0
      tmesSobVr=0
   EndIf
   @705, 68 SAY SUBSTR(vData,4,2)+"/"+RIGHT(vData,4)   COLOR BLUE SIZE 100, 30  FONT oFont003 OF TelaVenda1
   MostraDadosMes()
Return Nil

*-------------------------------------------------
Function MostraDados()
*---------------------------------------------------------------------
/*
   @479,113 SAY StrZero(gQtd,5)    COLOR BLUE SIZE 65, 30  FONT oFont003 OF TelaVenda1
   @473,158 SAY TRANSFORM(gRefKg,"999.999")  COLOR BLUE SIZE 65, 30  FONT oFont003 OF TelaVenda1
   @420,203 SAY TRANSFORM(gRefVr,"999,999.99")  COLOR BLUE SIZE 120, 30  FONT oFont003 OF TelaVenda1
   @460,248 SAY TRANSFORM(gBebVr,"999,999.99")  COLOR BLUE SIZE 80, 30  FONT oFont003 OF TelaVenda1
   @460,293 SAY TRANSFORM(gSobVr,"999,999.99")  COLOR BLUE SIZE 80, 30  FONT oFont003 OF TelaVenda1
*/
      @450,113 SAY StrZero(gQtd,5)  COLOR BLUE SIZE 80, 30  FONT oFont003 OF TelaVenda1;
           STYLE SS_RIGHT
      @450,158 SAY PadL(Alltrim(TRANSFORM(gRefKg,"999.999")),10)      COLOR BLUE SIZE 80, 30  FONT oFont003 OF TelaVenda1;
           STYLE SS_RIGHT
      @410,203 SAY PadL(Alltrim(TRANSFORM(gRefVr,"999,999.99")),10)  COLOR BLUE SIZE 120, 30  FONT oFont003 OF TelaVenda1;
           STYLE SS_RIGHT
      @450,248 SAY PadL(Alltrim(TRANSFORM(gBebVr,"999,999.99")),10)  COLOR BLUE SIZE 80, 30  FONT oFont003 OF TelaVenda1;
           STYLE SS_RIGHT
      @450,293 SAY PadL(Alltrim(TRANSFORM(gSobVr,"999,999.99")),10)  COLOR BLUE SIZE 80, 30  FONT oFont003 OF TelaVenda1;
           STYLE SS_RIGHT

Return Nil

*-------------------------------------------------
Function MostraDadosMes()
*---------------------------------------------------------------------
      @720,113 SAY StrZero(tmesQtd,5)  COLOR BLUE SIZE 80, 30  FONT oFont003 OF TelaVenda1;
           STYLE SS_RIGHT
      @720,158 SAY PadL(Alltrim(TRANSFORM(tmesRefKg,"999.999")),10)      COLOR BLUE SIZE 80, 30  FONT oFont003 OF TelaVenda1;
           STYLE SS_RIGHT
      @680,203 SAY PadL(Alltrim(TRANSFORM(tmesRefVr,"999,999.99")),10)  COLOR BLUE SIZE 120, 30  FONT oFont003 OF TelaVenda1;
           STYLE SS_RIGHT
      @720,248 SAY PadL(Alltrim(TRANSFORM(tmesBebVr,"999,999.99")),10)  COLOR BLUE SIZE 80, 30  FONT oFont003 OF TelaVenda1;
           STYLE SS_RIGHT
      @720,293 SAY PadL(Alltrim(TRANSFORM(tmesSobVr,"999,999.99")),10)  COLOR BLUE SIZE 80, 30  FONT oFont003 OF TelaVenda1;
           STYLE SS_RIGHT
/*
   @739,113 SAY StrZero(tmesQtd,5)    COLOR BLUE SIZE 65, 30  FONT oFont003 OF TelaVenda1
   @733,158 SAY TRANSFORM(tmesRefKg,"999.999")  COLOR BLUE SIZE 65, 30  FONT oFont003 OF TelaVenda1
   @680,203 SAY TRANSFORM(tmesRefVr,"999,999.99")  COLOR BLUE SIZE 80, 30  FONT oFont003 OF TelaVenda1
   @720,248 SAY TRANSFORM(tmesBebVr,"999,999.99")  COLOR BLUE SIZE 80, 30  FONT oFont003 OF TelaVenda1
   @720,293 SAY TRANSFORM(tmesSobVr,"999,999.99")  COLOR BLUE SIZE 80, 30  FONT oFont003 OF TelaVenda1
*/
Return Nil

*-------------------------------------------------
Function GravaDadosArquivo2
*---------------------------------------------------------------------
   SELECT VENDIA12
      VENDIA12->mData = CTOD(vData)
      VENDIA12->mKilo = gRefKg
      VENDIA12->mValo = gRefVr
      VENDIA12->mQtde = gQtd
      VENDIA12->mBebi = gBebVr
      VENDIA12->mSobr = gSobVr

      * ACUMULA DADOS DO DIA NAS VARIAVEIS DO MES
      tmesQtd  =tmesQtd  +VENDIA12->mQtde
      tmesRefkg=tmesRefkg+VENDIA12->mKilo
      tmesRefVr=tmesRefVr+VENDIA12->mValo
      tmesBebVr=tmesBebVr+VENDIA12->mBebi
      tmesSobVr=tmesSobVr+VENDIA12->mSobr

Return Nil

*-------------------------------------------------
Function GravaDadosArquivo3
*---------------------------------------------------------------------
   SELECT VENDAMES
      VENDAMES->mesData = SUBSTR(vData,4,2)+"/"+RIGHT(vData,4)
      VENDAMES->mesKilo = tmesRefKg
      VENDAMES->mesValo = tmesRefVr
      VENDAMES->mesQtde = tmesQtd
      VENDAMES->mesBebi = tmesBebVr
      VENDAMES->mesSobr = tmesSobVr

Return Nil



*---------------------------------------------------------------------------------------
Function OpenArquivos()
*---------------------------------------------------------------------------------------

   Local vTab1:={},vTab2:={},vTab3:={},vTab4:={}
   Local vTab5:={},vTab6:={},vTab7:={},vTab8:={}
   Local vTab9:={},vTab10:={}

   *==== ARQUIVO VENDA DIA 11 =====
   If !File("VENDIA11.DBF")
      AADD(vTab1,{"fRegi ", "C", 6, 0 })
      AADD(vTab1,{"fData ", "D", 8, 0 })
      AADD(vTab1,{"fKilo ", "N", 8, 3 })
      AADD(vTab1,{"fValo ", "N",14, 2 })
      AADD(vTab1,{"fQtde ", "N", 5, 0 })
      AADD(vTab1,{"fPgto ", "C", 2, 0 })
      AADD(vTab1,{"fBebi ", "N",14, 2 })
      AADD(vTab1,{"fSobr ", "N",14, 2 })
      dBCreate("VENDIA11.DBF", vTab1)
   EndIf

   *==== ARQUIVO VENDA DIA 12 =====
   If !File("VENDIA12.DBF")
      AADD(vTab2,{"mData ", "D", 8, 0 })
      AADD(vTab2,{"mKilo ", "N", 8, 3 })
      AADD(vTab2,{"mValo ", "N",14, 2 })
      AADD(vTab2,{"mQtde ", "N", 5, 0 })
      AADD(vTab2,{"mPgto ", "C", 2, 0 })
      AADD(vTab2,{"mBebi ", "N",14, 2 })
      AADD(vTab2,{"mSobr ", "N",14, 2 })
      dBCreate("VENDIA12.DBF", vTab2)
   EndIf

   *==== ARQUIVO TIPO DE PAGAMENTO =====
   If !File("TIPPAGTO.DBF")
      AADD(vTab3,{"pCodi ", "C", 2, 0 })
      AADD(vTab3,{"pDesc ", "C",30, 0 })
      dBCreate("TIPPAGTO.DBF", vTab3)
   EndIf

   *==== ARQUIVO VENDA MENSAL =====
   If !File("VENDAMES.DBF")
      AADD(vTab5,{"mesData ", "C", 7, 0 })
      AADD(vTab5,{"mesKilo ", "N", 8, 3 })
      AADD(vTab5,{"mesValo ", "N",14, 2 })
      AADD(vTab5,{"mesQtde ", "N", 5, 0 })
      AADD(vTab5,{"mesBebi ", "N",14, 2 })
      AADD(vTab5,{"mesSobr ", "N",14, 2 })
      dBCreate("VENDAMES.DBF", vTab5)
   EndIf

   *======= PREÇO DA REFEIÇÃO ========
   If !File("PRECOKG.DBF")
      AADD(vTab10,{"pkData", "D", 8, 0 })
      AADD(vTab10,{"pkValo", "N",10, 2 })
      dBCreate("PRECOKG.DBF", vTab10)
   EndIf




IF!FILE( 'VENDIA11.CDX' )
    USE VENDIA11
    INDEX ON DTOS(VENDIA11->fData)    TAG nData  TO VENDIA11.CDX
    INDEX ON VENDIA11->fRegi          TAG nLanc  TO VENDIA11.CDX
    USE
ENDIF

IF!FILE( 'VENDIA12.CDX' )
    USE VENDIA12
    INDEX ON DTOS(VENDIA12->mData)    TAG nData  TO VENDIA12.CDX
    USE
ENDIF

IF!FILE( 'TIPPAGTO.CDX' )
    USE TIPPAGTO
    INDEX ON pCodi    TAG codigo  TO TIPPAGTO.CDX
    USE
ENDIF

IF!FILE( 'VENDAMES.CDX' )
    USE VENDAMES
    INDEX ON RIGHT(MesData,4)+LEFT(MesData,2)    TAG AnoMes  TO VENDAMES.CDX
    USE
ENDIF

IF!FILE( 'PRECOKG.CDX' )
    USE PRECOKG
    INDEX ON DTOS(pkData)    TAG nData  TO PRECOKG.CDX
    USE
ENDIF

*=======================================================

USE VenDia11 INDEX VenDia11 NEW //SHARED NEW
SET ORDER TO TAG nData
GO TOP

USE VenDia12 INDEX VenDia12 NEW //SHARED NEW
SET ORDER TO TAG nData
GO TOP

USE TipPagto INDEX TipPagto NEW //SHARED NEW
SET ORDER TO TAG Codigo
GO TOP

USE VendaMes   INDEX VendaMes   NEW //SHARED NEW
SET ORDER TO TAG AnoMes
GO TOP

USE PrecoKg   INDEX PrecoKg   NEW
SET ORDER TO TAG nData
GO TOP

Return Nil






*---------------------------------------------------------------------
Function MontaTelaVenda()
*---------------------------------------------------------------------
     @ 18, 55,275,465 RECT quadro1 OF TelaVenda1 RECT_STYLE 3
     @288, 55,545,465 RECT quadro2 OF TelaVenda1 RECT_STYLE 3
     @558, 55,815,465 RECT quadro3 OF TelaVenda1 RECT_STYLE 3

     @ 50,25 say "VENDA DIARIA"  SIZE 220,30  FONT oFont002 
     @300,25 say "RESUMO DO DIA" SIZE 250,30  FONT oFont002 
     @570,25 say "RESUMO DO MES" SIZE 250,30  FONT oFont002 

     @ 30, 70 Say "Data"  SIZE 100,20  
     @300, 70 Say "Data"  SIZE 100,20  
     @570, 70 Say "Mes/Ano"  SIZE 100,20  

     @ 30,115 Say "Pessoas"  SIZE 100,20  
     @300,115 Say "Pessoas"  SIZE 100,20  
     @570,115 Say "Pessoas"  SIZE 100,20  

     @ 30,160 Say "Refeicao (em Kg)"  SIZE 140,20  
     @300,160 Say "Refeicao (em Kg)"  SIZE 140,20  
     @570,160 Say "Refeicao (em Kg)"  SIZE 140,20  

     @ 30,205 Say "Refeicao (valor)"  SIZE 140,20

     @138,207 Say  PadL(Alltrim(TRANSFORM(vRefVr,"999,999.99")),10) ;
     COLOR BLACK SIZE 120, 24  FONT oFont003  STYLE SS_RIGHT

     @300,205 Say "Refeicao (valor)"  SIZE 140,20  
     @570,205 Say "Refeicao (valor)"  SIZE 140,20  

     @ 30,250 Say "Bebidas (valor)"  SIZE 140,20
     @300,250 Say "Bebidas (valor)"  SIZE 140,20  
     @570,250 Say "Bebidas (valor)"  SIZE 140,20  

     @ 30,295 Say "Sobremesa (valor)"  SIZE 140,20
     @300,295 Say "Sobremesa (valor)"  SIZE 140,20  
     @570,295 Say "Sobremesa (valor)"  SIZE 140,20  

     @ 30,340 Say "Forma de Pagto"  SIZE 140,20

     @ 30,385 Say "Nro.Lancamento"  SIZE 140,20
     @195,385 SAY StrZero(nLancto,6)   COLOR BLUE SIZE 70, 30  FONT oFont003

     @ 30,430 Say "Valor preço/Kg"  SIZE 140,20

Return Nil
Pois bem, a primeira coisa, se possível, seria fazer uma análise superficial da codificação e adequá-la a um modo mais atualizado, mudando o que for necessário. Creio que, com isso eu me atualizaria um pouco.
Mas, na realidade, o que eu quero mesmo é o seguinte: logo no início, na linha

Código: Selecionar todos

     @185,113 GET oQtd  VAR vQtd  PICTURE "99" SIZE  30, 24  TOOLTIP "" VALID {||vQtd>0}
Ao se entrar com o valor de vQtd, se o mesmo for igual a 1 (uma pessoa) a rotina segue normal. Porém, se for maior que 1 (mais de uma pessoa) abriria uma tela ao lado para digitação dos 4 próximos itens (vRefKg, vRefVr, vBebVr, vSobVr) para "tantas quantas forem as pessoas", acumulando a soma de cada item e, ao final, transportá-las para as variáveis da janela anterior.
Para rodar a rotina será preciso alimentar (via dbu) os arquivos TIPPAGTO (ex: pCodi=10, pDesc="Pagamento em R$") e o arquivo PRECOKG com uma data e um valor qualquer.
Espero não estar abusando dos amigos colaboradores.
Antecipadamente, agradeço a todos...

Gilvandi

Minha rotina: preciso de ajuda

Enviado: 26 Mai 2012 22:52
por sygecom
Olá Gilvandi,
Talvez hoje eu estou meio lerdo, pode dar uma resumida do que você quer ?

Minha rotina: preciso de ajuda

Enviado: 27 Mai 2012 12:38
por Vandi
Leonardo,
Bom dia...

É o seguinte: não sei se vc já rodou essa rotina, mas ela faz o seguinte:
1- pede a data (vc confirma sim ou não)
2- pede um número (quantidade de pessoas)
3- pede um valor em Kg
4- o valor em R$ é calculado pelo sistema
5- pede o valor de bebidas
6- pede o valor de sobremesas

então, é o seguinte: se no ítem 2 for informado o valor 1 (apenas uma pessoa), a rotina segue normal.
Agora, se o valor informado for acima de 1, eu preciso abrir uma tela para lançar os ítens 3, 5 e 6 individualmente (por pessoa), conforme abaixo:

valor p/pessoa valor acumulado
------------------ -------------------
3-Valor em Kg 0,423 0,423
4-Valor em R$ (calculado) (acumula aqui)
5-Valor de Bebidas 2,80 2,80
6-Valor de Sobremesas 1,70 1,70

Ao final, os valores da coluna "valor acumulado" serão transportados para os respectivos ítens da janela anterior.
Espero ter esclarecido sua dúvida.

Gilvandi

Minha rotina: preciso de ajuda

Enviado: 30 Mai 2012 19:38
por sygecom
Olá Gilvandi,
Não roda por que não tem os DBF, tente postar um anexo com .DBF e tudo que possamos compilar e executar para entender o queres.

Minha rotina: preciso de ajuda

Enviado: 30 Mai 2012 23:19
por Vandi
Leonardo,
Boa noite...

Estou mexendo nessa rotina e talvez obtenha êxito. De qualquer forma, depois eu posto ela aqui com os DBFs necessários para você dar uma olhada e ver no que pode me ajudar, ok?

Atenciosamente,

Gilvandi

Minha rotina: preciso de ajuda

Enviado: 31 Mai 2012 11:46
por sygecom
ok

Minha rotina: preciso de ajuda

Enviado: 31 Mai 2012 23:15
por Vandi
Leonardo,
Boa noite...

Para simplificar eu fiz uma rotina teste compilada com o hbmake, sem necessidade de arquivos.
No item <quantidade>, digitando-se um valor maior que 1, abre-se uma tela para digitar os valores (embora os valores não estejam retornando acumulados, mas não faz mal).
Pois bem, eu queria essa rotina em HwGui. Seria possível vc me fazer mais êsse favor?
Logo abaixo, o código:

Código: Selecionar todos

#include 'Box.ch'
#include "hbgtinfo.ch"
REQUEST	HB_LANG_PT

Func Main()
ConfigurarAmbiente()
Set Scor off
Set Talk off

Public v1:=0,v2:=0,v3:=0,v4:=0,v5:=0,tt:=0
*Priv v1:=0

SetColor("0/7,0/15")
Scroll()
MontaTela()
Do whil.t.
   EntraGets()
   If LastKey()=27
       Exit
   EndIf
EndDo
setcolor('w/n')
@00,00 clea
retu


Func MontaTela()
*---------------
   @04,15 say 'Entre com os valores' color 'b/w'
   @08,10 say 'Quantidade      :'
   @10,10 say 'Valor refeicao  :'
   @12,10 say 'Valor bebidas   :'
   @14,10 say 'Valor sobremesas:'
   @16,10 say 'Outras despesas :'
retu nil

Func EntraGets()
*---------------
   @08,30 get v1 pict '99' valid {||iif(v1 > 1, SomaValores(), Volta())}
   @10,30 get v2 pict '999,999.99'
   @12,30 get v3 pict '999,999.99'
   @14,30 get v4 pict '999,999.99'
   @16,30 get v5 pict '999,999.99'
   read
   conf:=spac(01)
   SetColor("0/7,0/15")
   @23,28 say 'Pressione uma tecla '
   @23,Col() get conf  //  pict '@!' valid conf$'SN'
   Read
   @23,28 say spac(30)
   SetColor("w/b")
   stor 0 to v1,v2,v3,v4,v5
retu nil

Func SomaValores()
*-----------------
SAVE SCRE TO TELA1
*SETCOLOR('W/B')
SETCOLOR('W/B')
@04,43 CLEA TO 18,75
@04,43,18,75 BOX B_DOUBLE COLOR 'W/B'
@05,45 say 'Somar os valores individuais'
@06,45 say 'aqui quando a <quantidade>'
@07,45 say 'digitada for maior que <1>'
@08,55 say '   Valor     Total ' color 'r/w'
@10,45 say 'Vlr ref  :'
@12,45 say 'Vlr beb  :'
@14,45 say 'Vlr sobr :'
@16,45 say 'Out desp :'
Priv n2:=0,n3:=0,n4:=0,n5:=0
Clear Gets
EntraGets2()
alert('Pressione qualquer tecla')
SETCOLOR('W/N')
REST SCRE FROM TELA1
Keyb Chr(13)
v1:=0
return(.t.)


Func Volta()
*-----------------
return.t.

Func EntraGets2()
*---------------
nConta:=1
stor 0 to v2,v3,v4,v5
Do Whil.t.

   @10,55 get n2 pict '9,999.99'
   @12,55 get n3 pict '9,999.99'
   @14,55 get n4 pict '9,999.99'
   @16,55 get n5 pict '9,999.99'
   read
   conf:=spac(01)
   SetColor("0/7,0/15")
   @23,45 say 'Confirma os valores(S/N)? '
   @23,Col() get conf pict '@!' valid conf$'SN'
   Read

   @23,45 say spac(30)
   SetColor("w/b")
   If conf='S'
      v2=v2+n2
      v3=v3+n3
      v4=v4+n4
      v5=v5+n5

      @10,66 say v2 pict '9,999.99'
      @12,66 say v3 pict '9,999.99'
      @14,66 say v4 pict '9,999.99'
      @16,66 say v5 pict '9,999.99'
      nConta=nConta+1
      If nConta>v1
         Exit
      EndIf
   Else
      LOOP
   EndIf
EndDo
retu(.t.)

Function ConfigurarAmbiente()
*----------------------------
      Hb_LangSelect( 'PT' )
      wvw_SetCodePage( 0, 255 )
      wvw_SetTitle( 0, "Teste: digitacao acumulada de valores" )
      wvw_EnableMaximize( 0, .t. )
      wvw_SetFont( 0 , "Consolas", 24, 11, 100, 4 )
      SetMode( 25, 80 )
RETURN
Gilvandi