{ ------------------------------------------------------------------------------- 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 " Continua Consultando " AT 8,5 ATTRIBUTE (YELLOW,REVERSE) DISPLAY " 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 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