Files
2026-09-22 20:38:51 -04:00

166 lines
6.4 KiB
Plaintext

SCHEMA decomarmol
FUNCTION buscacliente(pnombre,ptipo,secliente)
DEFINE idx,ptipo,secliente,cuenta,secvend INT,
selec,pnombre,rnombre,rdireccion,rciudad,vende STRING,
arrclientes DYNAMIC ARRAY OF RECORD
tipo_cliente,sec_cliente INT,
nombre,direccion,ciudad,vendedor STRING,
sec_vend INT
END RECORD,
bdata STRING
LET bdata = ptipo USING "<<" ,secliente USING "<<<<<<<<<<" ,pnombre CLIPPED
LET bdata = bdata.trimLeft()
LET selec = "SELECT COUNT(*) FROM vetb00004 a WHERE RTRIM(CAST(a.tipo_cliente AS CHAR(2))+
RTRIM(CAST(a.sec_cliente AS CHAR(10)))+RTRIM(a.nombre)) LIKE '%",bdata CLIPPED,"%'"
PREPARE comando1 FROM selec
EXECUTE comando1 INTO cuenta
IF cuenta IS NULL OR cuenta = 0 THEN
LET rnombre ='NO EXISTEN CLIENTES CON ESA CONDICION'
LET ptipo=0
LET secliente=0
LET secvend =0
LET vende = NULL
RETURN rnombre,ptipo,secliente,rdireccion,rciudad,secvend,vende,false
END IF
IF cuenta > 1 THEN
LET selec = "SELECT a.tipo_cliente,a.sec_cliente,a.nombre,b.calle,b.urbanizacion,CONCAT(ISNULL(c.nom1_emp,' '),' ',ISNULL(c.apell1_Emp,' ')),a.sec_vend
FROM vetb00004 a LEFT OUTER JOIN vetb00005 b ON
a.tipo_cliente= b.tipo_cliente and a.sec_cliente = b.sec_cliente
INNER JOIN adtb00003 c ON c.num_emp = a.sec_vend
WHERE CONCAT(RTRIM(CAST(a.tipo_cliente AS CHAR(2))),
RTRIM(CAST(a.sec_cliente AS CHAR(10))),RTRIM(a.nombre)) LIKE '%",ptipo USING "<<",
secliente USING "<<<<<<<<<<",pnombre CLIPPED,"%'"
PREPARE comando2 FROM selec
DECLARE busca CURSOR FOR comando2
LET idx = 1
FOREACH busca INTO arrclientes[idx].*
LET idx = idx + 1
END FOREACH
IF idx = 1 THEN
LET rnombre = 'NO EXISTEN CLIENTES CON ESA CONDICION'
LET ptipo=0
LET secliente=0
LET secvend =0
LET vende = null
RETURN rnombre,ptipo,secliente,rdireccion,rciudad,secvend,vende,false
ELSE
OPEN WINDOW w1 WITH FORM "vefmwd002"
DISPLAY ARRAY arrclientes TO sclientes.*
AFTER DISPLAY
LET rnombre = arrclientes[arr_curr()].nombre
LET ptipo = arrclientes[arr_curr()].tipo_cliente
LET secliente = arrclientes[arr_curr()].sec_cliente
LET secvend = arrclientes[arr_curr()].sec_vend
LET vende = arrclientes[arr_curr()].vendedor
EXIT DISPLAY
END DISPLAY
END IF
ELSE
LET selec = "SELECT a.tipo_cliente,a.sec_cliente,a.nombre,b.calle,b.urbanizacion,ISNULL(c.nom1_emp,' ')+' '+ISNULL(c.apell1_Emp,' '),a.sec_vend
FROM vetb00004 a LEFT OUTER JOIN vetb00005 b ON
a.tipo_cliente= b.tipo_cliente and a.sec_cliente = b.sec_cliente
INNER JOIN adtb00003 c ON a.sec_vend = a.sec_vend
WHERE CAST(a.tipo_cliente AS CHAR(2))+
CAST(a.sec_cliente AS CHAR(10))+RTRIM(a.nombre) LIKE '%",bdata CLIPPED,"%'"
DISPLAY "en otro ",selec
PREPARE comando3 FROM selec
EXECUTE comando3 INTO ptipo,secliente,rnombre,rdireccion,rciudad,vende,secvend
END IF
IF cuenta > 1 THEN
CLOSE WINDOW w1
END IF
RETURN rnombre,ptipo,secliente,rdireccion,rciudad,secvend,vende, true
END FUNCTION
FUNCTION busca_cliente8()
DEFINE criterio CHAR(200)
DEFINE idx,ptipo,secliente,cuenta,secvend INT,
selec,pnombre,rnombre,rdireccion,rciudad,vende STRING,
arrclientes DYNAMIC ARRAY OF RECORD
tipo_cliente,sec_cliente INT,
nombre,direccion,ciudad,vendedor STRING,
sec_vend INT
END RECORD
DEFINE numero_msg LIKE msgtable.cod_msg,
curr1 int
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
FROM tipo_cliente,nombre
LET selec ="SELECT a.tipo_cliente,a.sec_cliente,a.nombre,b.calle,b.urbanizacion,ISNULL(c.nom1_emp,' ')+' '+ISNULL(c.apell1_Emp,' '),a.sec_vend
FROM vetb00004 a LEFT OUTER JOIN vetb00005 b ON
a.tipo_cliente= b.tipo_cliente and a.sec_cliente = b.sec_cliente
INNER JOIN adtb00003 c ON a.sec_vend = a.sec_vend
WHERE a.status_t is NULL AND ",
criterio clipped
IF INT_FLAG THEN
LET numero_msg = 2
CALL msg(numero_msg)
GO TO salir_consulta_c
END IF
PREPARE busca_cliente8s FROM selec
IF status >= 0 THEN
IF status = notfound THEN
LET numero_msg = 3
CALL msg(numero_msg)
END IF
ELSE
END IF
DECLARE buscar_clientes CURSOR FOR busca_cliente8s
LET idx = 1
FOREACH buscar_clientes INTO arrclientes[idx].*
IF status = NOTFOUND THEN
EXIT FOREACH
END IF
IF INT_FLAG THEN
LET numero_msg = 2
CALL msg(numero_msg)
EXIT FOREACH
END IF
LET idx = idx + 1
END FOREACH
CALL set_count(idx-1)
MESSAGE " <Esc> Selecciona Cliente donde esta el cursor"
DISPLAY ARRAY arrclientes TO sclientes.*
LET curr1 = arr_curr()
IF INT_FLAG THEN
LET numero_msg = 2
CALL msg(numero_msg)
GOTO salir_consulta_c
END IF
LET int_flag = FALSE
LET ptipo = arrclientes[curr1].tipo_cliente
LET secliente = arrclientes[curr1].sec_cliente
LET rnombre = arrclientes[curr1].nombre
LET rdireccion=arrclientes[curr1].ciudad
LET rciudad=arrclientes[curr1].ciudad
LET secvend=arrclientes[curr1].sec_vend
LET vende=arrclientes[curr1].vendedor
LABEL salir_consulta_c:
CLOSE WINDOW busqueda
RETURN rnombre,ptipo,secliente,rdireccion,rciudad,secvend,vende
END FUNCTION