389 lines
17 KiB
Plaintext
389 lines
17 KiB
Plaintext
{
|
|
-------------------------------------------------------------------------------
|
|
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
|
|
|