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