166 lines
6.4 KiB
Plaintext
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 |