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