Página 1 de 1

Como atribuir um mesmo valor de get em prg distintos ?

Enviado: 03 Jun 2007 21:58
por Gelson
?la, amigos do forum !

Tenho uma rotina que faz a inclus?o nas contas cadastradas no sistema e fiz uma outra rotina que verifica se o saldo da conta est? estourado, uma vez que cada conta possue um campo limite com um valor qualquer. O problema ? que analisando a quest?o o mais adequado seria a cada confirma??o de lan?amento o sistema mostrar se a conta estourou, e mediante a tecla acionada pelo usu?rio continuar os lan?amentos.

Neste caso precisaria que meu fonte ccop14 ( que verifica o estouro de limite ) assumisse automaticamente em get mconta o mesmo valor da conta digitada no fonte de inclus?o o ccop10 e que depois de exibida a mensagem de estouro de limite voltasse na tela de inclus?o de lan?amento.

Tentei chamar usando DO CCOP14 ap?s a linha de confirma??o dos lan?amentos no PRG de inclus?o, at? funciona por?m o usu?rio tem de sair da tela de inclus?o, e digitar a conta novamente por causa do GET do fonte que verifica o estouro de limite.

Os fontes separadamente funcionam perfeitamente como posso fazer este procedimento funcionar ?



Meu fonte de inclus?o ficou assim:

Código: Selecionar todos

CLEAR
mconta   = SPACE(5)
mct      = 0       
mdoc     = SPACE(10)
mdata    =  CTOD('01/01/00')
mdat_emi =  CTOD('  /  /  ')
mvalor   =  0.00
mresp    = SPACE(1)
DO WHILE mdata # DATE()
 @15,2  SAY 'DATA DO MOVIMENTO'
 @15,24 GET mdata PICTURE '  /  /  '
 READ


 IF mdata # DATE()
  @24,1 SAY 'DATA NAO CONFERE'
  WAIT ', ENTER'
  CLEAR
 ENDIF
ENDDO

USE MOVIM   INDEX IMOVIM,IMOVDOC,IMOVCON
SELECT 2
USE CLIENTES INDEX ICLIENTE
SELECT 3
USE HISTOR INDEX IHISTOR
SELECT 4
USE DATAS
GO BOTTOM
IF mdata > DATA_MOVIM
 APPEND BLANK
 REPLACE DATA_MOVIM WITH mdata
ENDIF
USE
DO CCCABP10
DO WHILE .T.
 @7,0 CLEAR
 @7,0 TO 22,79 DOUBLE
 @6,10 SAY 'INCLUSAO DE MOVIMENTO'
 @6,32 SAY 'DE '
 @6,35 SAY mdata PICTURE '  /  /  ' 
 @23,3 SAY 'INFORME 99999 NO CODIGO PARA ENCERRAR'
 @9,2  SAY 'CODIGO DO CORRENTISTA'
 @9,24 GET mconta  
 READ
 IF mconta = '99999'
  EXIT
 ENDIF
 IF mconta = '99998'
  @24,1 SAY 'ESTA CONTA NAO ACEITA INCLUSAO'
  WAIT ', ENTER PARA CONTINUAR'
  CLEAR
  DO CCCABP10
  LOOP
 ENDIF
 SELECT 2
 SEEK mconta  
 IF EOF()
    @24,1 SAY 'CONTA NAO CADASTRADA'
    WAIT ', ENTER'
    CLEAR
    DO CCCABP10
    LOOP
 ENDIF
 IF DESATIVADA = 'S'
  @24,1 SAY 'CONTA DESATIVADA'
  WAIT 'ENTER'
  CLEAR
  DO CCCABP10
  LOOP
 ENDIF
 mdat_atu = DAT_ATU
 @9,36 SAY NOME
 @11,2  SAY 'CODIGO DE TRANSACAO'
 @11,24 GET mct PICTURE '99'
 READ
 IF mct = 21
  LOOP
 ENDIF
 SELECT 3
 SEEK mct
 IF EOF()
  @24,1 SAY 'CODIGO NAO CADASTRADO'
  WAIT ', ENTER'
  CLEAR
  DO CCCABP10
  LOOP
 ENDIF
 @11,36 SAY HISTORICO
 @13,02 SAY 'DATA EMISSAO'
 mdat_emi = mdata
 @13,24 GET mdat_emi         
 @15,2  SAY 'DOCUMENTO'
 @15,24 GET mdoc
 READ

 IF mdat_emi <= mdat_atu
  @24,1 SAY 'JA EMITIMOS EXTRATO ALEM DESTA DATA'    
  WAIT ', ENTER'
  CLEAR 
  DO CCCABP10
  LOOP
 ENDIF
 @17,2  SAY 'VALOR'
 @17,24 GET mvalor PICTURE '9,999,999,999.99'
 READ
 @21,3  SAY 'CONFIRME -> S'
 @21,24 GET mresp
 READ
 IF mresp # 'S'
  LOOP
 ENDIF
 SELECT 1   
 APPEND BLANK
 REPLACE CONTA        WITH mconta  
 REPLACE CT           WITH mct  
 REPLACE DOC          WITH mdoc   
 REPLACE DATA         WITH mdat_emi
 REPLACE DAT_LANC     WITH mdata   
 REPLACE VALOR        WITH mvalor
 SELECT 2
 IF mct < 11
  REPLACE SAL_ATU2 WITH SAL_ATU2 - mvalor
 ELSE
  REPLACE SAL_ATU2 WITH SAL_ATU2 + mvalor
 ENDIF
 mct     =   0        
 mdoc    =   SPACE(10)
 mvalor  =   0.00
 @7,1 CLEAR
ENDDO
CLEAR
CLOSE ALL
RETURN

Meu fonte de verifica??o de estouro de limite ficou assim:

Código: Selecionar todos


mlimite    = 0.00 
USE CLIENTES INDEX ICLIENTE
SELECT 2
USE MOVIM   INDEX IMOVIM 
SELECT 3
USE HISTOR INDEX IHISTOR
 
DO WHILE .T.
 mconta = SPACE(5)
 CLEAR 
 @10,34 GET  mconta
 READ
 IF mconta = '99999'
  CLOSE ALL      
  CLEAR    
  RETURN
 ENDIF

SELECT 1

msal_ini = SAL_INI
mdat_sal = DAT_INI

SELECT 2
DO WHILE mconta = CONTA .AND. DATA < mdata .AND. .NOT. EOF() 
 IF CT < 10
  msal_ini = msal_ini - VALOR
 ELSE
  msal_ini = msal_ini + VALOR
 ENDIF
 mdat_sal = DATA
 SKIP
ENDDO


DO WHILE .T.
 SELECT 2
 DO WHILE mconta = CONTA .AND. .NOT. EOF()

  mdat_sal = DATA
  mct = CT
  SELECT 3
  SEEK mct
  IF EOF()

   CLOSE ALL
   RETURN
  ENDIF

  SELECT 2

  IF CT < 10
   msal_ini = msal_ini - VALOR

  ELSE

   msal_ini = msal_ini + VALOR
  ENDIF
  IF msal_ini < 0.00
  @mlinha,55 SAY -msal_ini PICTURE '9,999,999,999.99D'
  ELSE
  @mlinha,55 SAY  msal_ini PICTURE '9,999,999,999.99C'
  ENDIF
  mlinha = mlinha + 1 
  SKIP
  IF mlinha > 20
   EXIT
  ENDIF
 ENDDO


   @7,0 CLEAR
   mlinha = 7

  IF EOF() .OR. mconta # CONTA
   EXIT
  ENDIF
ENDDO
IF mlinha > 19
 @7,0 CLEAR
 mlinha = 8
ELSE
 mlinha = mlinha + 1
ENDIF

@mlinha,20  SAY mdat_sal PICTURE '  /  /  '
@mlinha,29 SAY 'SALDO ATUAL'
IF msal_ini < 0.00
 @mlinha,43 SAY -msal_ini PICTURE '9,999,999,999.99D'
ELSE
 @mlinha,43 SAY  msal_ini PICTURE '9,999,999,999.99C'
ENDIF

***

 SELECT 1
 if -msal_ini >  LIMITE
 ALERT ("     LIMITE ESTOURADO !!!       ")
 endif
 clear
 close all
 return