{ ------------------------------------------------------------------------------- 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 "decomarmol" 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 "vefmrp001" 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(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 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 FROM ventas,factura,cond_pago,tipo_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 orden = "T" THEN 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, ", "CAST(a.tipo_cliente AS CHAR(6))+'-'+CAST(a.sec_cliente AS CHAR(10))+' '+b.nombre,c.codigo_dgii,c.ncf,a.conduce FROM vetb00002 a,vetb00004 b,vetb00072 c,vetb00060 d ", "WHERE a.tipo_cliente=b.tipo_cliente AND a.sec_cliente=b.sec_cliente AND ", " a.fecha_factura BETWEEN ? AND ? ", " AND a.factura = c.documento and c.tipo_Doc = 'FT' AND ", " a.cod_cia = ? and ", " a.ventas = d.ventas AND ", criterio CLIPPED," ORDER BY a.ventas,a.factura" ELSE IF orden = "F" THEN 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, ", "CAST(a.tipo_cliente AS CHAR(6))+'-'+CAST(a.sec_cliente AS CHAR(10))+' '+b.nombre,c.codigo_dgii,c.ncf,a.conduce FROM vetb00002 a,vetb00004 b,vetb00072 c,vetb00060 d ", "WHERE a.tipo_cliente=b.tipo_cliente AND a.sec_cliente=b.sec_cliente AND ", " a.fecha_factura BETWEEN ? AND ? ", " AND a.factura = c.documento and c.tipo_Doc = 'FT' AND ", " a.cod_cia = ? and ", " a.ventas = d.ventas AND ", criterio CLIPPED," ORDER BY a.factura" END IF IF orden = "N" THEN 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, ", "CAST(a.tipo_cliente AS CHAR(6))+'-'+CAST(a.sec_cliente AS CHAR(10))+' '+b.nombre,c.codigo_dgii,c.ncf,a.conduce FROM vetb00002 a,vetb00004 b,vetb00072 c,vetb00060 d ", "WHERE a.tipo_cliente=b.tipo_cliente AND a.sec_cliente=b.sec_cliente AND ", " a.fecha_factura BETWEEN ? AND ? ", "' AND a.factura = c.documento and c.tipo_Doc = 'FT' AND ", " a.cod_cia = ",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 "<>" 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, p_ventas.conduce 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 orden = "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 orden = "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" END IF IF orden = "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 orden = "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 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 BEFORE GROUP OF x.ventas PRINTX xventas 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 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 VARCHAR(50), 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 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_companias.nombre CLIPPED))/2 PRINT COLUMN 1,doce,comp_on PRINT COLUMN 1,"veprrp001", COLUMN lj, p_companias.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 84, "MONTO", 7 SPACES, "MONTO", 9 SPACES, "MONTO", 5 SPACES, "MONTO" PRINT COLUMN 1, "FECHA", 2 SPACES, "FACTURA", 2 SPACES, "CLIENTE", 60 SPACES, "BRUTO", 7 SPACES, "DESCUENTO", 6 SPACES, "ITBI", 8 SPACES, "NETO", 8 SPACES, "NCF" PRINT COLUMN 1, "--------------------------------------------------", "--------------------------------------------------", "--------------------------------------------------" BEFORE GROUP OF x.ventas PRINTX xventas ON EVERY ROW { PRINT COLUMN 1, x.fecha_factura USING "dd/mm/yyyy"," ",x.factura USING "&&&&&", 2 SPACES, x.tipo_cliente USING "&&","-", x.sec_cliente USING "&&&&"," ",vnombre, 2 SPACES, x.sub_total USING "##,###,###.##", 2 SPACES, x.monto_desc USING "#,###,###.##", 2 SPACES, x.monto_itbi USING "#,###,###.##", 2 SPACES, x.neto USING "#,###,###.##", 2 SPACES, ccodigo_dgii CLIPPED,cncf USING "&&&&&&&&"} 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 AFTER GROUP OF x.ventas PRINT COLUMN 78, "-------------", 7 SPACES, "-------------", 9 SPACES, "-------------", 5 SPACES, "-------------" PRINT COLUMN 1, "Total Facturado Rango de Fechas Por Mercado: ", COLUMN 78, GROUP SUM(x.sub_total) USING "##,###,###.##", 2 SPACES, GROUP SUM(x.monto_desc) USING "#,###,###.##", 2 SPACES, GROUP SUM(x.monto_itbi) USING "#,###,###.##", 2 SPACES, GROUP SUM(x.neto) USING "###,###,###.##" 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 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