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

268 lines
7.7 KiB
Plaintext

{
-------------------------------------------------------------------------------
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