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

411 lines
14 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
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,
ordenamiento VARCHAR(1)
# WHENEVER ERROR CONTINUE
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21,
PROMPT LINE 14
OPEN FORM vefmrp001 FROM "vefmrp001"
DISPLAY FORM vefmrp001
INPUT BY NAME sucid,fecha1,fecha2,ordenamiento
BEFORE INPUT
SELECT a.sucid INTO sucid FROM seg0001 a
WHERE a.usuario = usuarios
CALL localidades(1)
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 ordenamiento IS NULL THEN
CALL msg(160)
NEXT FIELD ordenamiento
END IF
IF sucid IS NULL THEN
CALL msg(16)
NEXT FIELD sucid
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.conduce,a.tipo_cliente,a.sec_cliente
FROM ventas,factura,cond_pago,conduce,tipo_cliente,sec_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
CALL defecto(usuarios,clave,impresor) RETURNING imprime,negrilla_on,negrillas_of,
doble_on,doble_off,comp_on,comp_off,
doce,normal,archivo,copia
LET matricial = FALSE
IF ordenamiento = "T" THEN
LET selec_v =
"SELECT 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, ",
"CAST(a.tipo_cliente AS CHAR(6))+'-'+CAST(a.sec_cliente AS CHAR(10))+' '+a.nombre_cliente,c.codigo_dgii,c.ncf,d.descripcion,a.conduce,
ISNULL(f.calle,' ')+' '+ISNULL(f.casa_num,' ')+' '+ISNULL(f.urbanizacion,' ')+' '+ISNULL(f.barrio,' '),a.conduce
FROM vetb00002 a,vetb00072 c,vetb00060 d,vetb00005 f ",
"WHERE a.tipo_cliente = f.tipo_cliente and a.sec_cliente = f.sec_cliente and ",
" a.fecha_factura BETWEEN ? AND ? ",
" AND a.factura = c.documento and c.tipo_Doc = 'FT' AND ",
" a.sucid = ? and a.sucid = c.sucid and ",
" a.ventas = d.ventas AND ",
criterio CLIPPED," ORDER BY a.ventas,a.factura"
ELSE
IF ordenamiento = "F" THEN
LET selec_v =
"SELECT 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, ",
"CAST(a.tipo_cliente AS CHAR(6))+'-'+CAST(a.sec_cliente AS CHAR(10))+' '+a.nombre_cliente,c.codigo_dgii,c.ncf,d.descripcion,a.conduce,
ISNULL(f.calle,' ')+' '+ISNULL(f.casa_num,' ')+' '+ISNULL(f.urbanizacion,' ')+' '+ISNULL(f.barrio,' '),a.conduce
FROM vetb00002 a,vetb00072 c,vetb00060 d,vetb00005 f ",
"WHERE a.tipo_cliente = f.tipo_cliente and a.sec_cliente = f.sec_cliente and ",
" a.fecha_factura BETWEEN ? AND ? ",
" AND a.factura = c.documento and c.tipo_Doc = 'FT' AND ",
" a.sucid = ? and a.sucid = c.sucid and ",
" a.ventas = d.ventas AND ",
criterio CLIPPED," ORDER BY a.factura"
END IF
IF ordenamiento = "N" THEN
LET selec_v =
"SELECT 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, ",
"CAST(a.tipo_cliente AS CHAR(6))+'-'+CAST(a.sec_cliente AS CHAR(10))+' '+a.nombre_cliente,c.codigo_dgii,c.ncf,d.descripcion,a.conduce,
ISNULL(f.calle,' ')+' '+ISNULL(f.casa_num,' ')+' '+ISNULL(f.urbanizacion,' ')+' '+ISNULL(f.barrio,' '),a.conduce
FROM vetb00002 a,vetb00072 c,vetb00060 d,vetb00005 f ",
"WHERE a.tipo_cliente = f.tipo_cliente and a.sec_cliente = f.sec_cliente and ",
" a.fecha_factura BETWEEN ? AND ? ",
" AND a.factura = c.documento and c.tipo_Doc = 'FT' AND ",
" a.sucid = ? and a.sucid = c.sucid and ",
" a.ventas = d.ventas AND ",
criterio CLIPPED," ORDER BY c.codigo_dgii,c.ncf"
END IF
END IF
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,
p_vetb04.nombre,p_ncf.codigo_dgii,p_ncf.ncf,
vventas,p_ventas.conduce,p_ventas.direccion_cliente
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
IF ordenamiento = "T" THEN
LET r_filename ="veprrp001.4rp"
ELSE
LET r_filename = "veprrp001_1.4rp"
END IF
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
IF ordenamiento = "T" THEN
START REPORT p_ventas1 TO XML HANDLER HANDLER
ELSE
START REPORT p_ventas3 TO XML HANDLER HANDLER
END IF
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"
LET p_ventas.direccion_cliente = NULL
END IF
IF ordenamiento = "T" THEN
OUTPUT TO REPORT p_ventas1(p_ventas.*,p_vetb04.nombre,p_ncf.codigo_dgii,p_ncf.ncf,vventas)
ELSE
OUTPUT TO REPORT p_ventas3(p_ventas.*,p_vetb04.nombre,p_ncf.codigo_dgii,p_ncf.ncf,vventas)
END IF
END FOREACH
IF idx > 1 THEN
IF ordenamiento = "T" THEN
FINISH REPORT p_ventas1
ELSE
FINISH REPORT p_ventas3
END IF
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 STRING,
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
BEFORE GROUP OF x.ventas
PRINTX xventas
ON EVERY ROW
LET vnombre = vnombre CLIPPED,' / ',x.direccion_cliente
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.direccion_cliente,
x.conduce
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_ventas2(x,vnombre,ccodigo_dgii,cncf,xventas)
DEFINE x RECORD LIKE vetb00002.*
DEFINE vnombre STRING,
ccodigo_dgii VARCHAR(20),
cncf INT
DEFINE doble_on,doble_off,negrillas_on,negrillas_off,comp_on,comp_off,
doce,normal CHAR(2)
DEFINE hora CHAR(5),
vtotal,vmonto_desc,vmonto_itbis,vneto DEC(12,2),
xventas VARCHAR(40)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
FORMAT
PAGE HEADER
LET hora = TIME
BEFORE GROUP OF x.ventas
PRINTX xventas
ON EVERY ROW
LET vnombre = vnombre CLIPPED,' / ',x.direccion_cliente
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.direccion_cliente
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 STRING,
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
LET vnombre = vnombre CLIPPED,' / ',x.direccion_cliente
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.direccion_cliente,x.conduce
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