Files
DECOMARMOL/PROYECTO/vedir/vebuscaclientes.4gl
T
2026-09-22 20:38:51 -04:00

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