105 lines
3.5 KiB
Plaintext
105 lines
3.5 KiB
Plaintext
SCHEMA smarmotech
|
|
FUNCTION buscacliente()
|
|
DEFINE criterio,selec2 STRING,
|
|
idx INT
|
|
DEFINE arr_clientes DYNAMIC ARRAY OF RECORD
|
|
tipo_cliente LIKE vetb00004.tipo_cliente,
|
|
sec_cliente LIKE vetb00004.sec_cliente,
|
|
nombre LIKE vetb00004.nombre,
|
|
direccion,ciudad STRING,
|
|
balance FLOAT,
|
|
cod_zona,cod_provincia INT
|
|
|
|
END RECORD,
|
|
ptipocliente,pseccliente,pcodzona,pcodprovincia INT,
|
|
pnombre,pdireccion,pciudad STRING,
|
|
pbalance FLOAT
|
|
|
|
call ui.Interface.loadStyles("mbsStyle")
|
|
|
|
OPEN WINDOW busqueda AT 7,12 WITH FORM "vefmwd002"
|
|
ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST)
|
|
|
|
LET INT_FLAG = false
|
|
CONSTRUCT criterio ON a.tipo_cliente,a.nombre,b.nombre_proyecto
|
|
FROM tipo_cliente,nombre,nombre_proyecto
|
|
|
|
AFTER CONSTRUCT
|
|
LET selec2 = "SELECT a.tipo_cliente, a.sec_cliente, a.nombre,
|
|
b.calle+b.casa_num+b.urbanizacion,c.nombre_provincia,a.cod_zona,a.cod_provincia,
|
|
IFNULL(SUM(d.valor+d.monto_desc),0)
|
|
FROM vetb00004 a LEFT outer JOIN vetb00005 b ON
|
|
a.tipo_cliente = b.tipo_cliente AND a.sec_cliente = b.sec_cliente
|
|
LEFT OUTER JOIN cctb00001 d ON
|
|
a.tipo_cliente = d.tipo_cliente AND a.sec_cliente = d.sec_cliente and d.status_t IS NULL
|
|
,
|
|
vetb00020 c
|
|
"
|
|
IF criterio IS NOT NULL THEN
|
|
LET selec2 = selec2 CLIPPED, " where a.cod_provincia = c.cod_provincia and ",
|
|
criterio CLIPPED,
|
|
" and a.status_t is NULL ",
|
|
|
|
" GROUP BY a.tipo_cliente, a.sec_cliente, a.nombre,b.calle,b.casa_num,b.urbanizacion,
|
|
c.nombre_provincia,a.cod_zona,a.cod_provincia
|
|
ORDER BY a.nombre
|
|
"
|
|
ELSE
|
|
LET selec2 = selec2 CLIPPED, " GROUP BY a.tipo_cliente, a.sec_cliente, a.nombre,b.calle,b.casa_num,b.urbanizacion,
|
|
c.nombre_provincia,a.cod_zona,a.cod_provincia
|
|
ORDER BY a.nombre
|
|
"
|
|
END IF
|
|
|
|
IF INT_FLAG THEN
|
|
CALL msg(2)
|
|
EXIT CONSTRUCT
|
|
END IF
|
|
END CONSTRUCT
|
|
IF int_flag THEN
|
|
LET int_flag = FALSE
|
|
CLOSE WINDOW busqueda
|
|
RETURN 0,0,0,0,0,0,0,0
|
|
END IF
|
|
PREPARE busca_cliente8s FROM selec2
|
|
|
|
DECLARE buscar_clientes CURSOR FOR busca_cliente8s
|
|
LET idx = 1
|
|
|
|
FOREACH buscar_clientes INTO arr_clientes[idx].*
|
|
IF status = NOTFOUND THEN
|
|
EXIT FOREACH
|
|
END IF
|
|
|
|
|
|
LET idx = idx + 1
|
|
END FOREACH
|
|
|
|
|
|
DISPLAY ARRAY arr_clientes TO s_clientes.*
|
|
AFTER DISPLAY
|
|
LET idx = arr_curr()
|
|
IF INT_FLAG THEN
|
|
CALL msg(2)
|
|
EXIT DISPLAY
|
|
END IF
|
|
|
|
LET int_flag = FALSE
|
|
|
|
LET ptipocliente = arr_clientes[idx].tipo_cliente
|
|
LET pseccliente = arr_clientes[idx].sec_cliente
|
|
LET pnombre = arr_clientes[idx].nombre
|
|
LET pdireccion = arr_clientes[idx].direccion
|
|
LET pciudad = arr_clientes[idx].ciudad
|
|
LET pbalance = arr_clientes[idx].balance
|
|
LET pcodzona = arr_clientes[idx].cod_zona
|
|
LET pcodprovincia = arr_clientes[idx].cod_provincia
|
|
|
|
EXIT DISPLAY
|
|
END DISPLAY
|
|
|
|
CLOSE WINDOW busqueda
|
|
RETURN ptipocliente,pseccliente,pnombre,pdireccion,pciudad,pcodzona,pcodprovincia, pbalance
|
|
|
|
END FUNCTION
|