Files
MBS/PROYECTO/vedir/veprcs002.4gl
T

178 lines
4.6 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : VEPRCS002
OBJETIVO : Cantidad de Cheques Devueltos
PROGRAMADOR : Tadeo A. Ferreras F.
FECHA REALIZACION : Febrero 21, 1996
-------------------------------------------------------------------------------
}
GLOBALS "veprgb000.4gl"
DEFINE cons_2 RECORD
tipo_cliente SMALLINT,
sec_cliente SMALLINT,
nombre CHAR(30)
END RECORD
DEFINE x ARRAY[200] OF RECORD
fecha DATE,
num_doc INTEGER,
valor DECIMAL(12,2)
END RECORD,
ma_cli1 ARRAY[1000] OF RECORD
tipo_cliente SMALLINT,
sec_cliente SMALLINT,
nombre CHAR(30)
END RECORD,
idx1,cu_1,fi_1,canti INTEGER,
monto DECIMAL(12,2)
FUNCTION veprcs002()
# WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM vefmcs002 FROM "vefmcs002"
DISPLAY FORM vefmcs002
CALL pantalla()
DISPLAY "veprcs002" AT 4,3
DISPLAY "Cheques Devueltos Al Cliente" AT 6,26
LABEL volver:
CLEAR FORM
INPUT BY NAME cons_2.tipo_cliente,cons_2.sec_cliente
ON KEY (CONTROL-W)
CASE
WHEN INFIELD(tipo_cliente)
CALL maestra_cli()
DISPLAY BY NAME cons_2.*
IF cons_2.tipo_cliente IS NOT NULL AND cons_2.tipo_cliente > 0 THEN
NEXT FIELD sec_cliente
END IF
WHEN INFIELD(sec_cliente)
CALL maestra_cli()
DISPLAY BY NAME cons_2.*
END CASE
AFTER FIELD tipo_cliente
IF cons_2.tipo_cliente IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD tipo_cliente
END IF
AFTER FIELD sec_cliente
IF cons_2.sec_cliente IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD sec_cliente
END IF
SELECT UNIQUE a.nombre INTO cons_2.nombre FROM vetb00004 a,cctb00001 b
WHERE (a.tipo_cliente=b.tipo_cliente AND a.sec_cliente = b.sec_cliente) AND
(a.tipo_cliente = cons_2.tipo_cliente AND
a.sec_cliente = cons_2.sec_cliente) AND (b.tipo_doc = "ND") AND
(b.valor_cheque IS NOT NULL) AND (b.status_t IS NULL)
IF STATUS = NOTFOUND THEN
LET numero_msg = 255
CALL msg(numero_msg)
NEXT FIELD sec_cliente
END IF
DISPLAY BY NAME cons_2.nombre
END INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
# Busca los codigos de los Centes
DECLARE busca CURSOR FOR
SELECT MIN(b.fecha_orig),b.num_doc,SUM(b.valor+b.monto_desc)
FROM cctb00001 b
WHERE b.tipo_cliente = cons_2.tipo_cliente AND
b.sec_cliente = cons_2.sec_cliente AND b.status_t IS NULL AND
b.tipo_doc = 'ND' AND b.valor_cheque IS NOT NULL
GROUP BY 2 ORDER BY 1,2
LET idx = 1
LET monto = 0
LET canti = 0
FOREACH busca INTO x[idx].*
IF x[idx].valor IS NULL THEN
LET x[idx].valor = 0
END IF
LET canti = canti + 1
LET monto = monto + x[idx].valor
LET idx = idx + 1
END FOREACH
CALL SET_COUNT(idx-1)
DISPLAY BY NAME canti,monto
DISPLAY ARRAY x TO s_cons2.*
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
GOTO volver
ELSE
GOTO volver
END IF
END FUNCTION
FUNCTION maestra_cli()
OPEN WINDOW ma_cli AT 8,2 WITH FORM "vefmwd015"
ATTRIBUTE(BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST)
CONSTRUCT criterio ON a.tipo_cliente,a.sec_cliente,a.nombre
FROM tipo_cliente,sec_cliente,nombre
IF int_flag THEN
LET int_flag = FALSE
LET numero_msg = 2
CALL msg(numero_msg)
GOTO salir1
END IF
LET selec = "SELECT a.tipo_cliente,a.sec_cliente,a.nombre FROM vetb00004 a ",
"WHERE a.status_t IS NULL AND ",criterio CLIPPED," ORDER BY 1,2"
PREPARE comando FROM selec
DECLARE busca1 CURSOR FOR comando
LET idx1 = 1
FOREACH busca1 INTO ma_cli1[idx1].*
LET idx1 = idx1 + 1
END FOREACH
CALL SET_COUNT(idx1 - 1)
DISPLAY ARRAY ma_cli1 TO p_cli1.*
LET cu_1 = ARR_CURR()
LET fi_1 = SCR_LINE()
IF int_flag THEN
LET int_flag = FALSE
LET numero_msg = 2
CALL msg(numero_msg)
GOTO salir1
END IF
LET cons_2.tipo_cliente = ma_cli1[cu_1].tipo_cliente
LET cons_2.sec_cliente = ma_cli1[cu_1].sec_cliente
LET cons_2.nombre = ma_cli1[cu_1].nombre
LABEL salir1:
CLOSE WINDOW ma_cli
END FUNCTION