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

182 lines
5.3 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : VEPRCS101
OBJETIVO : Consulta Ventas de Productos por Tipo de Venta y Fechas
PROGRAMADOR : Lic. Abner Montalvo Zapata
FECHA REALIZACION : Febrero 2, 1993
-------------------------------------------------------------------------------
}
GLOBALS "veprgb000.4gl"
FUNCTION veprcs101()
# WHENEVER ERROR CONTINUE
CLEAR SCREEN
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21
OPEN FORM vefmcs101 FROM "vefmcs101"
DISPLAY FORM vefmcs101
CALL PANTALLA()
DISPLAY "veprcs101" AT 4,3
DISPLAY "Ventas Por Tipo de Venta" AT 6,28
DISPLAY " <Esc> Continua Consultando " AT 8,5 ATTRIBUTE (YELLOW,REVERSE)
DISPLAY " <Delete> Cancela Operacion " AT 8,50 ATTRIBUTE (YELLOW,REVERSE)
LABEL volver:
LET fact_gral.ventas = null
LET rango.fech_in = null
LET rango.fech_fi = null
INPUT BY NAME cliente_bas.tipo_cliente,cliente_bas.sec_cliente,
pterminado.cod_n,pterminado.cod_grupo,pterminado.cod_tipo,
pterminado.cod_sec,fact_gral.ventas,rango.*
AFTER FIELD cod_sec
SELECT descrip_esp INTO descrip1 FROM iptb00002
WHERE @cod_n = pterminado.cod_n and @cod_grupo = pterminado.cod_grupo and
@cod_tipo = pterminado.cod_tipo and @cod_sec = pterminado.cod_sec and
@status_t is null
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD cod_n
END IF
DISPLAY BY NAME descrip1 ATTRIBUTE (BOLD)
AFTER FIELD sec_cliente
SELECT @nombre INTO cliente_bas.nombre
FROM vetb00004
WHERE @tipo_cliente = cliente_bas.tipo_cliente and
@sec_cliente = cliente_bas.sec_cliente and
status_t is null
IF STATUS = NOTFOUND THEN
LET numero_msg = 3
CALL msg(numero_msg)
NEXT FIELD tipo_cliente
END IF
DISPLAY BY NAME cliente_bas.nombre ATTRIBUTE(BOLD)
AFTER FIELD ventas
IF fact_gral.ventas IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD ventas
END IF
BEFORE FIELD fech_in
LET rango.fech_in = today
AFTER FIELD fech_in
IF rango.fech_in IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fech_in
END IF
BEFORE FIELD fech_fi
LET rango.fech_fi = today
AFTER FIELD fech_fi
IF rango.fech_fi IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fech_fi
END IF
IF rango.fech_in > rango.fech_fi THEN
LET numero_msg = 86
CALL msg(numero_msg)
NEXT FIELD fech_fi
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
END IF
IF fact_gral.ventas IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD ventas
END IF
IF rango.fech_in IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fech_in
END IF
IF rango.fech_in IS NULL THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fech_fi
END IF
IF rango.fech_in > rango.fech_fi THEN
LET numero_msg = 86
CALL msg(numero_msg)
NEXT FIELD fech_fi
END IF
EXIT INPUT
END INPUT
## Seleccion de los campos que el usuario debe ver en la pantalla
DECLARE busca CURSOR FOR
SELECT b.fecha_factura,a.factura,a.cantidad,a.precio,SUM(a.cantidad * a.precio)
FROM vetb00003 a, vetb00002 b
WHERE b.sec_cliente = cliente_bas.sec_cliente AND a.factura = b.factura and
b.ventas = fact_gral.ventas and
b.fecha_factura between rango.fech_in and rango.fech_fi and
a.cod_n = pterminado.cod_n and a.cod_grupo = pterminado.cod_grupo and
a.cod_tipo = pterminado.cod_tipo and a.cod_sec = pterminado.cod_sec and
b.status_t is null
GROUP BY 1,2,3,4 ORDER BY 1,2
DISPLAY "Buscando Informacion... Espere Por Favor" AT 21,1 ATTRIBUTE(YELLOW)
LET idx = 1
LET unidades = 0
LET valor_orig = 0
FOREACH busca INTO reg_ventas.*
LET arr_ventas[idx].factura = reg_ventas.factura
LET arr_ventas[idx].fecha = reg_ventas.fecha
LET arr_ventas[idx].precio = reg_ventas.precio
LET arr_ventas[idx].unidades1 = reg_ventas.unidades1
using "##,###,###.###"
LET arr_ventas[idx].valor1 = reg_ventas.valor1
using "###,###,##&.&&"
LET unidades = unidades + reg_ventas.unidades1
# LET valor_orig = valor_orig + reg_ventas.valor1
LET idx = idx + 1
END FOREACH
DISPLAY " " AT 21,1
CALL set_count (idx - 1)
DISPLAY ARRAY arr_ventas TO cs_101.*
## Verifica si el usuario presiono la tecla <Delete>
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = FALSE
RETURN
ELSE
CLEAR FORM
GOTO volver
END IF
END FUNCTION