{ ------------------------------------------------------------------------------- PROGRAMA : VEPRRP025 OBJETIVO : Ventas Por Clientes en un Rango de Fecha PROGRAMADOR : Tadeo A. Ferreras FECHA REALIZACION : Enero 07, 1994 ------------------------------------------------------------------------------- } GLOBALS "veprgb000.4gl" FUNCTION veprrp025() DEFINE select_zona,select_cliente,select_pilas CHAR(1000) DEFINE idx_o,idx_e,idx_p,idx_m SMALLINT DEFINE esta,encontre,salir2,salir1,salir CHAR(1) DEFINE cliente25 RECORD tipo_cliente SMALLINT, sec_cliente SMALLINT, nombre CHAR(30), factura INTEGER, fecha DATE, neto DECIMAL(12,2), cliente CHAR(7) END RECORD #WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21, PROMPT LINE 14 OPEN FORM vefmrp025 FROM "vefmrp025" DISPLAY FORM vefmrp025 CALL pantalla() DISPLAY "veprrp025" AT 4,3 DISPLAY "Ventas Por Cliente" AT 6,31 LET tipo_papel = 1 CALL msgrp000(tipo_papel) INPUT BY NAME rango.* 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 DISPLAY BY NAME rango.fech_fi 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 = 149 CALL msg(numero_msg) NEXT FIELD fech_in END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF CONSTRUCT criterio ON a.tipo_cliente,a.sec_cliente FROM tipo_cliente,sec_cliente IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF LABEL pide: PROMPT "1- Unisys 1354 2- IBM PRO"C:\\archivo" " FOR tipo_imp IF tipo_imp != 1 AND tipo_imp != 2 THEN LET numero_msg = -1301 CALL msg(numero_msg) GOTO pide END IF # Busca Los Movimientos de las Facturas con su claiente LET select_cliente = "SELECT a.tipo_cliente,a.sec_cliente,c.nombre,a.factura, ", " a.fecha_factura,a.neto ", "FROM vetb00002 a,vetb00004 c ", "WHERE a.status_t is null AND a.tipo_cliente = c.tipo_cliente AND ", " a.sec_cliente = c.sec_cliente AND a.fecha_factura BETWEEN ? AND ? ", " AND ",criterio CLIPPED DISPLAY "<< Buscando Informacion ... Espere Por Favor. >>" AT 19,14 ATTRIBUTE (REVERSE,BOLD) PREPARE comando FROM select_cliente DECLARE buscara CURSOR FOR comando OPEN buscara USING rango.fech_in,rango.fech_fi IF tipo_imp = 2 THEN START REPORT ventas25 TO "C:\\archivo" ELSE START REPORT ventas25 TO PIPE "lp -dcentral" END IF DISPLAY " " AT 19,14 DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>" AT 19,14 ATTRIBUTE (REVERSE) LET salir1 = "N" WHILE salir1 != "S" FETCH buscara INTO cliente25.* IF STATUS = NOTFOUND THEN LET salir1 = "S" EXIT WHILE END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF LET cliente25.cliente = cliente25.tipo_cliente USING "&&", "-",cliente25.sec_cliente USING "&&&&" DISPLAY "Datos ",cliente25.cliente,"-", cliente25.factura USING "&&&&&&&&" AT 13,14 OUTPUT TO REPORT ventas25(cliente25.*,rango.fech_in,rango.fech_fi) END WHILE FINISH REPORT ventas25 CLEAR SCREEN RUN "type C:\\archivo > %USPRINT%" END FUNCTION REPORT ventas25(x,fecha1,fecha2) DEFINE x RECORD tipo_cliente SMALLINT, sec_cliente SMALLINT, nombre CHAR(30), factura INTEGER, fecha DATE, neto DECIMAL(12,2), cliente CHAR(7) END RECORD DEFINE fecha1,fecha2 DATE DEFINE vendedor,imp,imp1 CHAR (1) DEFINE descrip_zone CHAR(30) DEFINE doble_on CHAR(3) DEFINE doble_off CHAR(3) DEFINE negrillas_on CHAR(6) DEFINE negrillas_off CHAR(6) DEFINE comp_on CHAR(3) DEFINE comp_off CHAR(3) DEFINE doce CHAR(3) DEFINE normal CHAR(3) DEFINE hora CHAR(5) DEFINE total_gral,total_cli DECIMAL(12,2) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 ORDER BY x.cliente,x.factura FORMAT PAGE HEADER IF tipo_imp = 2 THEN LET doble_on = ASCII 14 LET doble_off = ASCII 20 LET negrillas_on = ASCII 27, ASCII 69 LET negrillas_off = ASCII 27, ASCII 70 LET comp_on = ASCII 15 LET comp_off = ASCII 18 LET doce = ASCII 27, ASCII 77 LET normal = ASCII 27, ASCII 80 ELSE LET doble_on = ASCII 001 LET doble_off = ASCII 002 LET negrillas_on = ASCII 027, ASCII 098 LET negrillas_off = ASCII 027, ASCII 099 LET comp_on = ASCII 31 LET comp_off = ASCII 29 LET doce = ASCII 30 LET normal = ASCII 029 END IF LET hora = time LET lj = (80 - LENGTH(p_companias.nombre CLIPPED))/2 PRINT COLUMN 1, doce ,negrillas_on PRINT COLUMN 1, "veprrp025", COLUMN lj, p_companias.nombre CLIPPED, COLUMN 73, "Pag. ",pageno using "###" PRINT COLUMN 17, " Sistema de Ventas ", COLUMN 73, today using "dd/mm/yy" PRINT COLUMN 17, " Ventas Por Cliente ", COLUMN 74, hora SKIP 1 LINES PRINT COLUMN 1, "Desde ",fecha1 USING "dd/mm/yy", " Hasta ",fecha2 using "dd/mm/yyyy" PRINT COLUMN 1, "--------------------------------------------------", "------------------------------" PRINT COLUMN 1, "Factura", COLUMN 47, "Fecha", COLUMN 68, "Valor Neto" PRINT COLUMN 1, "--------------------------------------------------", "------------------------------",negrillas_off SKIP 1 LINE BEFORE GROUP OF x.cliente PRINT COLUMN 1, negrillas_on, COLUMN 2, "Cliente (",x.cliente CLIPPED,") ",x.nombre CLIPPED, negrillas_off SKIP 1 LINE LET total_cli = 0 ON EVERY ROW PRINT COLUMN 1, x.factura, COLUMN 47, x.fecha USING "dd/mm/yy", COLUMN 65, x.neto USING "###,###,###.##" IF total_gral IS NULL THEN LET total_gral = 0 END IF LET total_gral = total_gral + x.neto LET total_cli = total_cli + x.neto AFTER GROUP OF x.cliente PRINT COLUMN 1,negrillas_on PRINT COLUMN 47, "Total Cliente --> ", COLUMN 65, total_cli USING "###,###,###.##", negrillas_off ON LAST ROW SKIP 1 LINE PRINT COLUMN 1,negrillas_on PRINT COLUMN 47, "Total General --> ", COLUMN 65, total_gral USING "###,###,###.##", negrillas_off LET total_gral = 0 END REPORT