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

273 lines
7.9 KiB
Plaintext

{
-------------------------------------------------------------------------------
PROGRAMA : VEPRRP001
OBJETIVO : Validacion Facturas
PROGRAMADOR : Juan Soto
FECHA REALIZACION : Enero 20, 1993
-------------------------------------------------------------------------------
}
GLOBALS "veprgb000.4gl"
DEFINE selec_v CHAR(1000)
DEFINE p_ventas RECORD LIKE vetb00002.*
DEFINE p_vetb04 RECORD LIKE vetb00004.*,
psub LIKE vetb00002.sub_total,
pvalor_bruto, pdescuento,psub_total,pitbis,
pneto DEC(12,2),
factura_ext INT,
mercado VARCHAR(50)
DEFINE historico CHAR(2)
DEFINE fecha1,fecha2 DATE
MAIN
DEFER INTERRUPT
CALL ARG_VAL(1) RETURNING usuarios
CALL ARG_VAL(2) RETURNING clave
CALL ARG_VAL(3) RETURNING impresor
CONNECT TO "smarmotech" USER usuarios USING clave
SELECT * INTO p_companias.* FROM companias
CALL veprrp001()
END MAIN
FUNCTION veprrp001()
DEFINE data RECORD
ventas VARCHAR(1),
factura INT,
tipo_cliente INT,
sec_cliente INT,
sub_total,
monto_desc,
monto_itbi,
neto DEC(12,2),
status_t VARCHAR(1),
nombre VARCHAR(100),
factura_ext INT,
orden,
conduce INT,
mercado VARCHAR(100),
fecha_factura DATE,
bodega INT
END RECORD
OPTIONS
FORM LINE 8,
ERROR LINE 23,
COMMENT LINE 21,
PROMPT LINE 14
OPEN FORM vefmrp001 FROM "vefmrp001"
DISPLAY FORM vefmrp001
LET tipo_papel = 1
CALL msgrp000(tipo_papel)
INPUT BY NAME historico,fecha1,fecha2
AFTER FIELD fecha1
IF fecha1 IS NULL OR fecha1 > TODAY THEN
LET numero_msg = 16
CALL msg(numero_msg)
NEXT FIELD fecha1
END IF
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
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.sucid,a.cod_cia,a.ventas,a.factura,a.cotizacion_no,a.orden,a.cond_pago,a.conduce,a.tipo_cliente,a.sec_cliente
FROM sucid,cod_cia,ventas,factura,cotizacion_no,orden,cond_pago,conduce,tipo_cliente,sec_cliente
BEFORE CONSTRUCT
CALL localidades("1")
AFTER CONSTRUCT
IF int_flag THEN
LET numero_msg = 2
CALL msg(numero_msg)
LET int_flag = false
RETURN
END IF
END CONSTRUCT
# Busca los codigos de los productos terminados
# Busca las ventas reales del ano actual hasta el mes indicado anteriormente
IF historico = "NO" THEN
LET selec_v =
"SELECT a.ventas,a.factura,a.tipo_cliente,a.sec_cliente,a.sub_total,a.monto_desc,a.monto_itbi,a.neto,
a.status_t,a.nombre_cliente,a.factura_ext, ",
" a.orden,a.conduce,c.descripcion,a.fecha_factura,a.bodega ",
" FROM vetb00002 a,vetb00004 b,vetb00061 c ",
"WHERE a.tipo_cliente=b.tipo_cliente AND a.sec_cliente=b.sec_cliente AND ",
" a.fecha_factura BETWEEN ? AND ? and a.ventas = c.ventas",
" AND ",
criterio CLIPPED," ORDER BY a.ventas,a.factura"
ELSE
LET selec_v =
"SELECT a.ventas,a.factura,a.tipo_cliente,a.sec_cliente,a.sub_total,a.monto_desc,a.monto_itbi,a.neto,
a.status_t,a.nombre_cliente,a.factura_ext,a.orden,a.conduce,c.descripcion,a.fecha_factura,a.bodega ",
" FROM historicoMTECH.dbo.vetb00002 a,historicoMTECH.dbo.vetb00004 b,historicoMTECH.dbo.vetb00061 c ",
"WHERE a.tipo_cliente=b.tipo_cliente AND a.sec_cliente=b.sec_cliente AND ",
" a.fecha_factura BETWEEN ? AND ? AND a.ventas = c.ventas ",
" AND ",
criterio CLIPPED," ORDER BY a.ventas,a.factura"
END IF
DISPLAY " " AT 19,14
DISPLAY "<<Buscando Informacion... Espere Por Favor" AT 19,14
DISPLAY " " AT 19,14
DISPLAY "<< Reporte Generandose ... Por Favor Espere. >>"
AT 19,14 ATTRIBUTE (REVERSE)
PREPARE busca_vr FROM selec_v
DECLARE movi_vr CURSOR FOR busca_vr
OPEN movi_vr USING fecha1,fecha2
LET idx = 1
FOREACH movi_vr INTO data.*
IF idx = 1 THEN
LET r_filename ="veprrp001_2.4rp"
IF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file
LET preview=1
CALL seleccionarsalida() RETURNING r_output
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
LET idx = 2
END IF
END IF
# 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 data.status_t = "E" THEN
LET psub = 0
LET data.sub_total = 0
LET data.monto_desc = 0
LET data.monto_itbi = 0
LET data.neto = 0
LET data.nombre = "FACTURA NULA"
END IF
OUTPUT TO REPORT p_ventas1(data.*)
END FOREACH
FINISH REPORT p_ventas1
DISPLAY pvalor_bruto TO valor_bruto
DISPLAY pdescuento TO descuento
DISPLAY psub_total TO sub_total
DISPLAY pitbis TO itbis
DISPLAY pneto TO neto
END FUNCTION
REPORT p_ventas1(x)
DEFINE x RECORD
ventas VARCHAR(1),
factura INT,
tipo_cliente INT,
sec_cliente INT,
sub_total,
monto_desc,
monto_itbi,
neto DEC(12,2),
status_t VARCHAR(1),
nombre VARCHAR(100),
factura_ext INT,
orden,
conduce INT,
mercado VARCHAR(100),
fecha_factura DATE,
bodega INT
END RECORD
DEFINE hora CHAR(5)
OUTPUT
TOP MARGIN 0
LEFT MARGIN 0
BOTTOM MARGIN 2
PAGE LENGTH 100
ORDER BY x.ventas
FORMAT
FIRST PAGE HEADER
LET hora = time
PRINTX p_companias.nombre ,
hora,fecha1,fecha2
ON EVERY ROW
PRINTX x.factura,x.tipo_cliente,
x.sec_cliente,x.nombre,x.fecha_factura,
x.sub_total,
x.monto_desc,
x.monto_itbi,
x.neto,
x.factura_ext,
x.orden ,
x.conduce,x.bodega
AFTER GROUP OF x.ventas
LET pvalor_bruto = GROUP SUM(x.sub_total)
LET pdescuento = GROUP SUM(x.monto_desc)
LET psub_total = pvalor_bruto - pdescuento
LET pitbis = GROUP SUM(x.monto_itbi)
LET pneto = GROUP SUM(x.neto)
PRINTx pvalor_bruto,pdescuento,psub_total,pitbis,pneto,x.mercado,x.ventas
END REPORT