Como atribuir um mesmo valor de get em prg distintos ?
Enviado: 03 Jun 2007 21:58
?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:
Meu fonte de verifica??o de estouro de limite ficou assim:
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