182 lines
5.3 KiB
Plaintext
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
|
|
|