{ ------------------------------------------------------------------------------- PROGRAMA : VEPRRP011 OBJETIVO : Clientes por Vendedor PROGRAMADOR : Lic. Abner Montalvo Z. FECHA REALIZACION : Enero 11, 1993 ------------------------------------------------------------------------------- } GLOBALS "veprgb000.4gl" DEFINE fecha1,fecha2 DATE, tipo_venta,chtipo CHAR(30), fecha_c1,fecha_c2 DATETIME YEAR TO MINUTE, estado VARCHAR(20), xlimite,correo VARCHAR(10), filtro_correo STRING MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CALL ARG_VAL(3) RETURNING impresor #let usuarios = 'lsoto' #let clave = 'lmmjvsd2010' CONNECT TO "smarmotech" USER usuarios USING clave SELECT * INTO p_companias.* FROM companias CALL veprrp011() END MAIN FUNCTION veprrp011() DEFINE vendedor RECORD sec_vend SMALLINT, nombre_vend CHAR(30), apellido_vend CHAR(30), cod_cliente SMALLINT, sec_cliente SMALLINT, nombre_cliente CHAR(30), telefono CHAR(15), limite_credito DECIMAL(10,2), zona SMALLINT, calle CHAR(30), casa_num CHAR(10), barrio CHAR(20), urbanizacion CHAR(20), localizacion VARCHAR(150), tipoNegocio VARCHAR(30), contacto VARCHAR(60), puesto VARCHAR(60), titulo VARCHAR(60), email VARCHAR(60), celular VARCHAR(20), telefono_casa VARCHAR(20), telefono_of VARCHAR(20), email2 VARCHAR(60), rnc VARCHAR(11), vendedor CHAR(30), fecha_ultima LIKE vetb00002.fecha_factura, cotizacion_no INT, codCliente CHAR(12) END RECORD 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 #WHENEVER ERROR CONTINUE OPTIONS FORM LINE 8, ERROR LINE 23, COMMENT LINE 21, PROMPT LINE 14 OPEN FORM vefmrp011 FROM "vefmrp011" DISPLAY FORM vefmrp011 DIALOG ATTRIBUTES(UNBUFFERED,FIELD ORDER FORM) CONSTRUCT criterio ON b.tipo_cliente,b.sec_cliente,d.sec_vend,b.nombre,f.ventas, x3.tipo_negocio,b.cod_zona FROM tipo_cliente,sec_cliente,kvendedor,nombre,tipo_venta,tipo_negocio,cod_zona { ON ACTION busca_zona CASE WHEN INFIELD(cod_zona) CALL consulta_zonas() DISPLAY BY NAME zona.cod_zona,descrip1 END CASE } BEFORE CONSTRUCT LET pventas = ui.ComboBox.forName("formonly.tipo_venta") CALL cventas() CALL cvendedor() CALL ctipoNegocio("formonly.tipo_negocio") END CONSTRUCT INPUT BY NAME xlimite,estado,fecha1,fecha2,fecha_c1,fecha_c2,correo AFTER INPUT IF fecha_c1 IS NULL THEN LET fecha_c2 = NULL END IF IF fecha_c2 IS NULL THEN LET fecha_c1 = NULL END IF END INPUT ON ACTION CANCEL EXIT PROGRAM ON ACTION genera IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = false RETURN END IF LET filtro_correo = "" IF correo = "SI" THEN DISPLAY "correo 1 ",correo LET filtro_correo = " x4.email IS NOT NULL AND " ELSE IF correo = "NO" THEN DISPLAY "correo 2 ",correo LET filtro_correo = " x4.email IS NULL AND " END IF END IF IF fecha_c1 IS NULL THEN IF estado = "ACTIVOS" THEN IF xlimite = "TODOS" THEN LET selec3 = "SELECT DISTINCT a.num_emp, a.nom1_emp, a.apell1_emp, b.tipo_cliente, b.sec_cliente, b.nombre, b.telefono, ", "b.limite_credito, b.cod_zona, c.calle, c.casa_num, c.barrio, c.urbanizacion, ", " RTRIM(ISNULL(x1.descrip,' '))+' '+RTRIM(ISNULL(x2.nombre_provincia,' ')),x3.descripcion,x4.contacto,x4.puesto1,x4.puesto,x4.email,x4.celular,x4.telefono_casa, ", " x4.telefono_of,b.patente,b.num_rnc ", "FROM adtb00003 AS a INNER JOIN ", "vetb00028 AS d ON a.num_emp = d.sec_vend LEFT OUTER JOIN ", "vetb00087 x4 ON d.tipo_cliente = x4.tipo_cliente and d.sec_cliente = x4.sec_cliente RIGHT OUTER JOIN ", "vetb00004 AS b INNER JOIN ", " vetb00008 x1 ON b.cod_zona = x1.cod_zona INNER JOIN ", " vetb00020 x2 ON b.cod_provincia = x2.cod_provincia INNER JOIN ", "vetb00060 AS f ON b.tipo_cliente = f.tipo_cliente ON d.tipo_cliente = b.tipo_cliente AND ", "d.sec_cliente = b.sec_cliente LEFT OUTER JOIN ", "vetb00005 AS c ON b.tipo_cliente = c.tipo_cliente AND b.sec_cliente = c.sec_cliente ", " LEFT OUTER JOIN cctb00013 x3 ON b.tipo_negocio = x3.tipo_negocio ", "WHERE (d.status_t IS NULL) AND (b.status_t IS NULL) AND ",filtro_correo,criterio CLIPPED, "ORDER BY a.num_emp,b.tipo_cliente, b.sec_cliente " ELSE LET selec3 = "SELECT DISTINCT a.num_emp, a.nom1_emp, a.apell1_emp, b.tipo_cliente, b.sec_cliente, b.nombre, b.telefono, ", "b.limite_credito, b.cod_zona, c.calle, c.casa_num, c.barrio, c.urbanizacion, ", " RTRIM(ISNULL(x1.descrip,' '))+' '+RTRIM(ISNULL(x2.nombre_provincia,' ')),x3.descripcion,x4.contacto,x4.puesto1,x4.puesto,x4.email,x4.celular,x4.telefono_casa, ", " x4.telefono_of,b.patente,b.num_rnc ", "FROM adtb00003 AS a INNER JOIN ", "vetb00028 AS d ON a.num_emp = d.sec_vend LEFT OUTER JOIN ", "vetb00087 x4 ON d.tipo_cliente = x4.tipo_cliente and d.sec_cliente = x4.sec_cliente RIGHT OUTER JOIN ", "vetb00004 AS b INNER JOIN ", " vetb00008 x1 ON b.cod_zona = x1.cod_zona INNER JOIN ", " vetb00020 x2 ON b.cod_provincia = x2.cod_provincia INNER JOIN ", "vetb00060 AS f ON b.tipo_cliente = f.tipo_cliente ON d.tipo_cliente = b.tipo_cliente AND ", "d.sec_cliente = b.sec_cliente LEFT OUTER JOIN ", "vetb00005 AS c ON b.tipo_cliente = c.tipo_cliente AND b.sec_cliente = c.sec_cliente ", " LEFT OUTER JOIN cctb00013 x3 ON b.tipo_negocio = x3.tipo_negocio ", "WHERE (d.status_t IS NULL) AND (b.status_t IS NULL) AND b.limite_credito > 0 AND ",filtro_correo,criterio CLIPPED, "ORDER BY a.num_emp,b.tipo_cliente, b.sec_cliente " END IF ELSE LET selec3 = "SELECT DISTINCT a.num_emp, a.nom1_emp, a.apell1_emp, b.tipo_cliente, b.sec_cliente, b.nombre, b.telefono, ", "b.limite_credito, b.cod_zona, c.calle, c.casa_num, c.barrio, c.urbanizacion, ", " RTRIM(ISNULL(x1.descrip,' '))+' '+RTRIM(ISNULL(x2.nombre_provincia,' ')),x3.descripcion,x4.contacto,x4.puesto1,x4.puesto,x4.email,x4.celular,x4.telefono_casa, ", " x4.telefono_of,b.patente,b.num_rnc ", "FROM adtb00003 AS a INNER JOIN ", "vetb00028 AS d ON a.num_emp = d.sec_vend LEFT OUTER JOIN ", "vetb00087 x4 ON d.tipo_cliente = x4.tipo_cliente and d.sec_cliente = x4.sec_cliente RIGHT OUTER JOIN ", "vetb00004 AS b INNER JOIN ", " vetb00008 x1 ON b.cod_zona = x1.cod_zona INNER JOIN ", " vetb00020 x2 ON b.cod_provincia = x2.cod_provincia INNER JOIN ", "vetb00060 AS f ON b.tipo_cliente = f.tipo_cliente ON d.tipo_cliente = b.tipo_cliente AND ", "d.sec_cliente = b.sec_cliente LEFT OUTER JOIN ", "vetb00005 AS c ON b.tipo_cliente = c.tipo_cliente AND b.sec_cliente = c.sec_cliente ", " LEFT OUTER JOIN cctb00013 x3 ON b.tipo_negocio = x3.tipo_negocio ", "WHERE (d.status_t IS NOT NULL) AND (b.status_t IS NULL) AND ",filtro_correo,criterio CLIPPED, "ORDER BY a.num_emp,b.tipo_cliente, b.sec_cliente " END IF ELSE IF estado = "ACTIVOS" THEN LET selec3 = "SELECT DISTINCT a.num_emp, a.nom1_emp, a.apell1_emp, b.tipo_cliente, b.sec_cliente, b.nombre, b.telefono, ", "b.limite_credito, b.cod_zona, c.calle, c.casa_num, c.barrio, c.urbanizacion, ", " RTRIM(ISNULL(x1.descrip,' '))+' '+RTRIM(ISNULL(x2.nombre_provincia,' ')),x3.descripcion,x4.contacto,x4.puesto1,x4.puesto,x4.email,x4.celular,x4.telefono_casa, ", " x4.telefono_of,b.patente,b.num_rnc ", "FROM adtb00003 AS a INNER JOIN ", "vetb00028 AS d ON a.num_emp = d.sec_vend LEFT OUTER JOIN ", "vetb00087 x4 ON d.tipo_cliente = x4.tipo_cliente and d.sec_cliente = x4.sec_cliente RIGHT OUTER JOIN ", "vetb00004 AS b INNER JOIN ", " vetb00008 x1 ON b.cod_zona = x1.cod_zona INNER JOIN ", " vetb00020 x2 ON b.cod_provincia = x2.cod_provincia INNER JOIN ", "vetb00060 AS f ON b.tipo_cliente = f.tipo_cliente ON d.tipo_cliente = b.tipo_cliente AND ", "d.sec_cliente = b.sec_cliente LEFT OUTER JOIN ", "vetb00005 AS c ON b.tipo_cliente = c.tipo_cliente AND b.sec_cliente = c.sec_cliente ", " LEFT OUTER JOIN cctb00013 x3 ON b.tipo_negocio = x3.tipo_negocio ", "WHERE (d.status_t IS NULL) AND (b.status_t IS NULL) AND ",filtro_correo,criterio CLIPPED, " AND b.fech_crea between '",fecha_c1,"' AND '",fecha_c2,"' ", "ORDER BY a.num_emp,b.tipo_cliente, b.sec_cliente " ELSE LET selec3 = "SELECT DISTINCT a.num_emp, a.nom1_emp, a.apell1_emp, b.tipo_cliente, b.sec_cliente, b.nombre, b.telefono, ", "b.limite_credito, b.cod_zona, c.calle, c.casa_num, c.barrio, c.urbanizacion, ", " RTRIM(ISNULL(x1.descrip,' '))+' '+RTRIM(ISNULL(x2.nombre_provincia,' ')),x3.descripcion,x4.contacto,x4.puesto1,x4.puesto,x4.email,x4.celular,x4.telefono_casa, ", " x4.telefono_of,b.patente,b.num_rnc ", "FROM adtb00003 AS a INNER JOIN ", "vetb00028 AS d ON a.num_emp = d.sec_vend LEFT OUTER JOIN ", "vetb00087 x4 ON d.tipo_cliente = x4.tipo_cliente and d.sec_cliente = x4.sec_cliente RIGHT OUTER JOIN ", "vetb00004 AS b INNER JOIN ", " vetb00008 x1 ON b.cod_zona = x1.cod_zona INNER JOIN ", " vetb00020 x2 ON b.cod_provincia = x2.cod_provincia INNER JOIN ", "vetb00060 AS f ON b.tipo_cliente = f.tipo_cliente ON d.tipo_cliente = b.tipo_cliente AND ", "d.sec_cliente = b.sec_cliente LEFT OUTER JOIN ", "vetb00005 AS c ON b.tipo_cliente = c.tipo_cliente AND b.sec_cliente = c.sec_cliente ", " LEFT OUTER JOIN cctb00013 x3 ON b.tipo_negocio = x3.tipo_negocio ", "WHERE (d.status_t IS NOT NULL) AND (b.status_t IS NULL) AND ",filtro_correo,criterio CLIPPED, " AND b.fech_crea between '",fecha_c1,"' AND '",fecha_c2,"' ", "ORDER BY a.num_emp,b.tipo_cliente, b.sec_cliente " END IF END IF PREPARE busca_datos FROM selec3 DECLARE datos SCROLL CURSOR FOR busca_datos OPEN datos USING tipo_venta LET idx =1 FOREACH datos INTO vendedor.* IF idx =1 THEN CALL seleccionarSalida() RETURNING r_output LET r_filename = "veprrp011.4rp" LET preview = 1 iF fgl_report_loadCurrentSettings(r_filename) THEN -- load the .4rp file CALL fgl_report_selectDevice(r_output) -- changing default CALL fgl_report_selectPreview(preview) -- changing default LET handler = fgl_report_commitCurrentSettings() -- commit changes START REPORT clivend TO XML HANDLER HANDLER END IF LET idx = idx + 1 END IF LET vendedor.vendedor = vendedor.sec_vend using "&&&&" # FECHA ULTIMA COMPRA LET vendedor.fecha_ultima = NULL SELECT CONVERT(VARCHAR(10),max(a.fecha_factura),101 ) INTO ch_fecha #vendedor.fecha_ultima FROM vetb00002 a WHERE a.tipo_cliente = vendedor.cod_cliente AND a.sec_cliente = vendedor.sec_cliente AND a.status_t IS NULL LET vendedor.fecha_ultima = ch_fecha LET vendedor.codCliente=vendedor.cod_cliente USING "&&","-", vendedor.sec_cliente USING "&&&&&&" LET vendedor.cotizacion_no = NULL SELECT MAX(a.orden) INTO vendedor.cotizacion_no FROM vetb00002 a WHERE a.tipo_cliente = vendedor.cod_cliente AND a.sec_cliente = vendedor.sec_cliente AND a.fecha_factura = vendedor.fecha_ultima AND a.status_t IS NULL IF fecha1 IS NULL THEN DISPLAY "aqui es ",vendedor.cod_cliente," ",vendedor.sec_cliente OUTPUT TO REPORT clivend(vendedor.*) END IF IF fecha1 IS NOT NULL THEN IF vendedor.fecha_ultima >= fecha1 AND vendedor.fecha_ultima <= fecha2 THEN OUTPUT TO REPORT clivend(vendedor.*) END IF END IF END FOREACH IF idx = 1 THEN CALL fgl_winmessage("INFO","NO EXISTEN DATOS CON ESTA CONDICION","INFO") ELSE FINISH REPORT clivend END IF CLEAR SCREEN END DIALOG END FUNCTION REPORT clivend(x) DEFINE x RECORD sec_vend SMALLINT, nombre_vend CHAR(30), apellido_vend CHAR(30), cod_cliente SMALLINT, sec_cliente SMALLINT, nombre_cliente CHAR(30), telefono CHAR(15), limite_credito DECIMAL(10,2), zona SMALLINT, calle CHAR(30), casa_num CHAR(10), barrio CHAR(20), urbanizacion CHAR(20), localizacion VARCHAR(150), tipoNegocio VARCHAR(30), contacto VARCHAR(60), puesto VARCHAR(60), titulo VARCHAR(60), email VARCHAR(60), celular VARCHAR(20), telefono_casa VARCHAR(20), telefono_of VARCHAR(20), email2 VARCHAR(60), rnc VARCHAR(11), vendedor CHAR(30), fecha_ultima LIKE vetb00002.fecha_factura, cotizacion_no INT, codCliente CHAR(12) END RECORD DEFINE total_clientes,ttotal_clientes smallint DEFINE hora CHAR(5), repfechas VARCHAR(30), visualizar_contactos BOOLEAN DEFINE fecha date ORDER BY x.vendedor,x.codcliente FORMAT FIRST PAGE HEADER LET hora = TIME LET fecha = TODAY LET ttotal_clientes = 0 IF fecha1 IS NOT NULL THEN LET repfechas = 'DESDE ',fecha1 USING "dd/mm/yyyy"," HASTA ",fecha2 USING 'dd/mm/yyyy' ELSE LET repfechas = NULL END IF BEFORE GROUP OF x.vendedor LET total_clientes = 0 ON EVERY ROW LET visualizar_contactos = TRUE PRINTX p_companias.*,hora,fecha, repfechas,estado printx x.*,fecha1,fecha2,visualizar_contactos AFTER GROUP OF x.vendedor PRINTX total_clientes AFTER GROUP OF x.codCliente LET total_clientes = total_clientes + 1 LET ttotal_clientes = ttotal_clientes + 1 ON LAST ROW PRINTX ttotal_clientes END REPORT