Files
MBS/PROYECTO/vedir/veprrp011.4gl
T

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