{ ------------------------------------------------------------------------------- PROGRAMA : VEPRRP001 OBJETIVO : Validacion Facturas PROGRAMADOR : Juan Soto FECHA REALIZACION : Enero 20, 1993 ------------------------------------------------------------------------------- } GLOBALS "cgprgb000.4gl" DEFINE p_vetb03 RECORD LIKE vetb00003.* DEFINE p_iptb02 RECORD bodega LIKE iptb00002.bodega, cod_cia LIKE iptb00002.cod_cia, cod_grupo LIKE iptb00002.cod_grupo, cod_n LIKE iptb00002.cod_n, cod_sec LIKE iptb00002.cod_sec, cod_tipo LIKE iptb00002.cod_tipo, codid LIKE iptb00002.codid, control_existencia LIKE iptb00002.control_existencia, control_itbis LIKE iptb00002.control_itbis, descrip_esp LIKE iptb00002.descrip_esp, descrip_ing LIKE iptb00002.descrip_ing, nomenclatura LIKE iptb00002.nomenclatura, porc_desc LIKE iptb00002.porc_desc, status_t LIKE iptb00002.status_t, unidad_med LIKE iptb00002.unidad_med, us_crea LIKE iptb00002.us_crea, us_mod LIKE iptb00002.us_mod END RECORD 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 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 "decomarmol" USER usuarios USING clave SELECT * INTO p_compania.* FROM companias CALL edprrp004() END MAIN FUNCTION edprrp004() # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21, PROMPT LINE 14 OPEN FORM vefmrp001 FROM "edfmrp004" 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.cod_cia,a.ventas,a.factura,a.cond_pago,a.tipo_cliente,a.sec_cliente FROM cod_cia,ventas,factura,cond_pago,tipo_cliente,sec_cliente IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF # 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.*,b.*,c.bodega,c.cod_cia,c.cod_grupo ", " ,c.cod_n,c.cod_sec,c.cod_tipo,c.codid,c.control_existencia,c.control_itbis ", " ,c.descrip_esp,c.descrip_ing ,c.nomenclatura, ", " c.porc_desc,c.status_t,c.unidad_med,c.us_crea,c.us_mod,d.nombre ", " FROM vetb00002 a,vetb00003 b, iptb00002 c,vetb00004 d ", " WHERE a.factura = b.factura AND b.cod_n = c.cod_n AND ", " b.cod_grupo = c.cod_grupo AND b.cod_tipo = c.cod_tipo AND ", " b.cod_sec = c.cod_sec AND CONVERT(date,a.fecha_factura,103) BETWEEN ? ", " AND ? AND a.ventas = '1' AND ", " a.status_t IS NULL and a.tipo_cliente=d.tipo_cliente AND a.sec_cliente=d.sec_cliente " { "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,b.nombre,a.factura_ext FROM vetb00002 a,vetb00004 b ", "WHERE a.tipo_cliente=b.tipo_cliente AND a.sec_cliente=b.sec_cliente AND ", " a.fecha_factura BETWEEN ? AND ? ", " 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,b.nombre,a.factura_ext ", " FROM historicoMTECH.dbo.vetb00002 a,historicoMTECH.dbo.vetb00004 b ", "WHERE a.tipo_cliente=b.tipo_cliente AND a.sec_cliente=b.sec_cliente AND ", " a.fecha_factura BETWEEN ? AND ? ", " AND ", criterio CLIPPED," ORDER BY a.ventas,a.factura"} END IF { 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,b.nombre FROM vetb00002 a,vetb00004 b ", "WHERE a.tipo_cliente=b.tipo_cliente AND a.sec_cliente=b.sec_cliente AND a.factura = c.factura and ", criterio CLIPPED," ORDER BY a.ventas,a.factura" } DISPLAY " " AT 19,14 DISPLAY "<>" AT 19,14 ATTRIBUTE (REVERSE) FOREACH movi_vr INTO p_ventas.*,p_vetb03.*,p_iptb02.bodega,p_iptb02.cod_cia,p_iptb02.cod_grupo, p_iptb02.cod_n,p_iptb02.cod_sec,p_iptb02.cod_tipo,p_iptb02.codid,p_iptb02.control_existencia,p_iptb02.control_itbis, p_iptb02.descrip_esp,p_iptb02.descrip_ing, p_iptb02.nomenclatura, p_iptb02.porc_desc,p_iptb02.status_t,p_iptb02.unidad_med,p_iptb02.us_crea,p_iptb02.us_mod,p_vetb04.nombre#,p_cgtb34.* IF status = NOTFOUND THEN # LET salir = "S" EXIT foreach END IF IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN 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 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 OUTPUT TO REPORT p_ventas1(p_ventas.*,p_vetb04.*) LET idx = idx + 1 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,v) DEFINE x RECORD LIKE vetb00002.* DEFINE v RECORD LIKE vetb00004.* DEFINE vendedor,imp,imp1 CHAR (1) DEFINE descrip_venta CHAR(22) DEFINE descrip1 CHAR(30) DEFINE doble_on,doble_off,negrillas_on,negrillas_off,comp_on,comp_off, doce,normal CHAR(2) DEFINE hora CHAR(5) OUTPUT TOP MARGIN 0 LEFT MARGIN 0 BOTTOM MARGIN 2 PAGE LENGTH 100 FORMAT PAGE HEADER { 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 } LET hora = time #LET lj = (100 - LENGTH(p_compania.nombre CLIPPED))/2 PRINT COLUMN 1,doce PRINT COLUMN 1,"edprrp004", COLUMN p_compania.nombre CLIPPED, COLUMN 93, "Pag. ", pageno using "###" PRINT COLUMN 41, "Sistema de Ventas", COLUMN 93, today using "dd/mm/yy" PRINT COLUMN 40, "Validacion Facturas", COLUMN 96, hora PRINT COLUMN 1, "DEL ",fecha1 USING "DD/MM/YYYY"," AL ", fecha2 USING "DD/MM/YYYY" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------" PRINT COLUMN 56, "MONTO", COLUMN 65, "MONTO", COLUMN 82, "MONTO", COLUMN 95, "MONTO" PRINT COLUMN 1, "FACTURA", COLUMN 9, "CLIENTE", COLUMN 56, "BRUTO", COLUMN 65, "DESCUENTO", COLUMN 82, "ITBI", COLUMN 95, "NETO" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------" BEFORE GROUP OF x.ventas IF x.ventas = "1" THEN PRINT "MERCADO LOCAL" ELSE IF x.ventas = "2" THEN PRINT "MERCADO EXPORTACION" END IF IF x.ventas = "3" THEN PRINT "MERCADO LOCAL USD$" END IF END IF ON EVERY ROW PRINT COLUMN 1, x.factura USING "&&&&&&", COLUMN 9, x.tipo_cliente USING "&&","-", x.sec_cliente USING "&&&&&&"," ",v.nombre[1,30], COLUMN 48, x.sub_total USING "##,###,###.##", COLUMN 62, x.monto_desc USING "#,###,###.##", COLUMN 74, x.monto_itbi USING "#,###,###.##", COLUMN 87, x.neto USING "#,###,###.##", 2 SPACES, factura_ext AFTER GROUP OF x.ventas PRINT COLUMN 48, "-------------", COLUMN 62, "-------------", COLUMN 74, "-------------", COLUMN 87, "-------------" PRINT COLUMN 1, "Total Facturado Rango de Fechas Por Mercado: ", COLUMN 48, GROUP SUM(x.sub_total) USING "##,###,###.##", COLUMN 62, GROUP SUM(x.monto_desc) USING "#,###,###.##", COLUMN 74, GROUP SUM(x.monto_itbi) USING "##,###,###.##", COLUMN 87, GROUP SUM(x.neto) USING "###,###,###,###.##" 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) ON LAST ROW PRINT ASCII 27, ASCII 80 END REPORT