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

315 lines
9.6 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : VEPRRP001
OBJETIVO : Validacion Facturas
PROGRAMADOR : Juan Soto
FECHA REALIZACION : Enero 20, 1993
-------------------------------------------------------------------------------
}
GLOBALS "veprgb000.4gl"
DEFINE selec_v STRING
DEFINE p_ventas RECORD LIKE vetb00002.*
DEFINE p_vetb04 RECORD LIKE vetb00004.*,
psub LIKE vetb00002.sub_total,
p_ncf RECORD LIKE vetb00072.*,
vventas VARCHAR(40)
DEFINE sucid SMALLINT
DEFINE fecha1,fecha2 DATE,nom_cliente CHAR(100)
MAIN
DEFER INTERRUPT
CALL STARTLOG("veprrp01_1.log")
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CONNECT TO "marmotech" AS "MSSQL" USER usuarios USING clave
CALL veprrp001()
END MAIN
FUNCTION veprrp001()
DEFINE handler om.SaxDocumentHandler, -- return value from fgl_report_commitCurrentSettings()
r_filename STRING, -- filename of Report Design Document including .4rp extension
r_output STRING, -- output format option
preview INTEGER, -- TRUE/FALSE, to set preview option
matricial BOOLEAN,
orden VARCHAR(1)
# WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21,
PROMPT LINE 14
OPEN FORM vefmrp001 FROM "vefmrp061"
DISPLAY FORM vefmrp001
INPUT BY NAME sucid,fecha1,fecha2,orden
BEFORE INPUT
SELECT a.sucid INTO sucid FROM seg0001 a
WHERE a.usuario = usuarios
CALL localidades(sucid)
DISPLAY BY NAME sucid
AFTER FIELD sucid
SELECT a.sucnombre,a.direccion INTO p_companias.nombre,p_companias.direccion
FROM sucursales a
WHERE a.sucid = sucid
AFTER FIELD fecha1
IF fecha1 IS NULL OR fecha1 > TODAY THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha1
END IF
LET fecha2 = TODAY
DISPLAY BY NAME fecha2
AFTER FIELD fecha2
IF fecha2 IS NULL OR fecha2 < fecha1 THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha1
END IF
AFTER INPUT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
IF fecha1 IS NULL OR fecha1 > TODAY THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha1
END IF
IF fecha2 IS NULL OR fecha2 < fecha1 THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha1
END IF
IF orden IS NULL THEN
CALL msg(160)
NEXT FIELD orden
END IF
EXIT INPUT
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.ventas,a.factura,a.cond_pago,a.tipo_cliente,a.sec_cliente,b.nombre
FROM ventas,factura,cond_pago,tipo_cliente,sec_cliente,nom_cliente
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
CALL seleccionarSalida() RETURNING r_output
# Busca los codigos de los productos terminados
# Busca las ventas reales del ano actual hasta el mes indicado anteriormente
LET matricial = FALSE
LET selec_v =
"SELECT distinct a.ventas,CONVERT(CHAR(10),a.fecha_factura,103),a.factura,a.tipo_cliente,a.sec_cliente,a.sub_total,a.monto_desc,",
"a.monto_itbi,a.neto,a.status_t, ",
"concat(a.tipo_cliente,'-',a.sec_cliente,' ',b.nombre),a.ncf,a.conduce,a.orden,d.descripcion FROM vetb00002 a,vetb00004 b,vetb00060 d,vetb00061 e ",
"WHERE a.tipo_cliente=b.tipo_cliente AND a.sec_cliente=b.sec_cliente AND ",
" a.fecha_factura BETWEEN ? AND ? ",
" and a.cod_cia = ? and ",
" a.ventas = d.ventas AND a.ventas=e.ventas and ",
criterio CLIPPED," ORDER BY a.ventas,a.factura"
DISPLAY " " AT 19,14
DISPLAY "<<Buscando Informacion... Espere Por Favor" AT 19,14
PREPARE busca_vr FROM selec_v
DECLARE movi_vr CURSOR FOR busca_vr
OPEN movi_vr USING fecha1,fecha2,sucid
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
LET idx = 1
FOREACH movi_vr INTO p_ventas.ventas,p_ventas.fecha_factura ,p_ventas.factura,
p_ventas.tipo_cliente,p_ventas.sec_cliente,
p_ventas.sub_total,
p_ventas.monto_desc,
p_ventas.monto_itbi,
p_ventas.neto,p_ventas.status_t,
nom_cliente,p_ncf.codigo_dgii,
p_ventas.conduce,p_ventas.orden,vventas
IF STATUS = NOTFOUND THEN
CALL fgl_winmessage("ERROR","NO EXISTEN FACTURAS CON ESTA CONDICION","INFO")
EXIT FOREACH
END IF
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
IF idx = 1 THEN
LET r_filename ="veprrp061.4rp"
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
LET preview=1
CALL fgl_report_selectDevice(r_output) -- changing default
CALL fgl_report_selectPreview(preview) -- changing default
LET handler = fgl_report_commitCurrentSettings() -- commit changes
START REPORT p_ventas1 TO XML HANDLER HANDLER
END IF
END IF
LET idx = idx + 1
# Busca el sub_total
{ LET psub = 0
SELECT SUM(a.cantidad*a.precio) INTO psub
FROM vetb00003 a
WHERE a.factura = p_ventas.factura
LET p_ventas.sub_total = psub
}
IF p_ventas.status_t = "E" THEN
LET psub = 0
LET p_ventas.sub_total = 0
LET p_ventas.monto_desc = 0
LET p_ventas.monto_itbi = 0
LET p_ventas.neto = 0
LET p_vetb04.nombre = "FACTURA NULA"
END IF
DISPLAY "ventas ",vventas
OUTPUT TO REPORT p_ventas1(p_ventas.*,nom_cliente,p_ncf.codigo_dgii,p_ncf.ncf,vventas)
END FOREACH
IF idx > 1 THEN
FINISH REPORT p_ventas1
ELSE
CALL fgl_Winmessage("WARNING","NO EXISTEN REGISTROS CON ESTA CONDICION","INFO")
END IF
END FUNCTION
REPORT p_ventas1(x,vnombre,ccodigo_dgii,cncf,xventas)
DEFINE x RECORD LIKE vetb00002.*
DEFINE vnombre VARCHAR(100),
ccodigo_dgii VARCHAR(20),
cncf INT
DEFINE hora CHAR(5),
vtotal,vmonto_desc,vmonto_itbis,vneto DEC(12,2),
xventas VARCHAR(40),fecha DATE
ORDER BY x.ventas,vnombre
FORMAT
PAGE HEADER
LET hora = TIME
LET fecha =today
BEFORE GROUP OF x.ventas
PRINTX xventas
BEFORE GROUP OF vnombre
SKIP TO TOP OF PAGE
PRINT vnombre
ON EVERY ROW
PRINTX x.fecha_factura USING "dd/mm/yyyy"," ",x.factura USING "&&&&&",
x.sub_total ,
x.monto_desc ,
x.monto_itbi ,
x.neto ,
ccodigo_dgii,cncf,
p_companias.nombre,fecha1,fecha2,hora,x.conduce,x.orden,x.tipo_cliente ,
x.sec_cliente ,fecha
AFTER GROUP OF x.ventas
LET vtotal = GROUP SUM(x.sub_total)
LET vmonto_desc = GROUP SUM(x.monto_desc)
LET vmonto_itbis = GROUP SUM(x.monto_itbi)
LET vneto = GROUP SUM(x.neto)
PRINTX vtotal,
vmonto_desc,
vmonto_itbis,
vneto
END REPORT
{
REPORT p_ventas3(x,vnombre,ccodigo_dgii,cncf,xventas)
DEFINE x RECORD LIKE vetb00002.*
DEFINE vnombre VARCHAR(50),
ccodigo_dgii VARCHAR(20),
cncf INT
DEFINE hora CHAR(5),
vtotal,vmonto_desc,vmonto_itbis,vneto DEC(12,2),
xventas VARCHAR(40)
FORMAT
PAGE HEADER
LET hora = TIME
ON EVERY ROW
PRINTX x.fecha_factura USING "dd/mm/yyyy"," ",x.factura USING "&&&&&",
x.tipo_cliente ,
x.sec_cliente ,vnombre,
x.sub_total ,
x.monto_desc ,
x.monto_itbi ,
x.neto ,
ccodigo_dgii,cncf,
p_companias.nombre,fecha1,fecha2,hora,x.conduce,x.orden
ON LAST ROW
LET vtotal = SUM(x.sub_total)
LET vmonto_desc = SUM(x.monto_desc)
LET vmonto_itbis = SUM(x.monto_itbi)
LET vneto = SUM(x.neto)
PRINTX vtotal,
vmonto_desc,
vmonto_itbis,
vneto
END REPORT
}