{ ------------------------------------------------------------------ PROGRAMA : IPPRMT017 OBJETIVO : Capturar, Modificar, Eliminar registros de la Tabla de Precio por Cliente PROGRAMADOR : JUAN SOTO FECHA REALIZACION : Febrero 1997 MODIFICADO POR : JUAN SOTO DESCRIPCION MOD : ADICION LISTA DE PRECIOS EN TAB SEPARADOS ADMINISTRACION PRECIOS POR ITEMS ------------------------------------------------------------------ } GLOBALS "ipprgb000.4gl" DEFINE cliente_dir RECORD LIKE vetb00005.*, costo_std,costo_lq,existencia DEC (12,5) DEFINE selec_pt CHAR(1000) DEFINE nom_cliente CHAR(30), pventas ui.combobox DEFINE descuento RECORD LIKE vetb00013.* DEFINE arr_clientes DYNAMIC ARRAY OF RECORD tipo_cliente LIKE vetb00004.tipo_cliente, sec_cliente LIKE vetb00004.sec_cliente, nombre CHAR(30) END RECORD DEFINE listproduct DYNAMIC ARRAY OF RECORD codlista SMALLINT, codn SMALLINT, codgrupo SMALLINT, codtipo SMALLINT, codsec SMALLINT, descripcion_p CHAR(30), unidad_med CHAR(4), tipoCliente SMALLINT, secCliente INT, nombreCliente CHAR(30), moneda CHAR(4), pprecio DEC(12,2), costo_std1 DEC(12,4), costo_r DEC(12,4), ventas SMALLINT END RECORD, respuesta CHAR(3) MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave # LET usuarios = 'jsoto' # LET clave = 'lmmjvsd2009' CONNECT to "smarmotech" USER usuarios USING clave SELECT * INTO p_companias.* FROM companias CALL ipprmt017() END MAIN FUNCTION ipprmt017() # WHENEVER ERROR CONTINUE OPTIONS FORM LINE 9, ERROR LINE 23, HELP FILE "ippray000.exe", HELP KEY CONTROL-W, COMMENT LINE 21 OPEN WINDOW w1 AT 5,10 WITH FORM "ipfmmt017" MENU ON ACTION nuevo CLEAR FORM CALL listproduct.clear() LET int_flag = FALSE CALL ippcad017() ON ACTION salir EXIT MENU END MENU END FUNCTION FUNCTION ippcad017() ## Captura los datos que va a contener el registro # WHENEVER ERROR CONTINUE DEFINE kdescripcion CHAR(30) DIALOG ATTRIBUTES (UNBUFFERED, FIELD ORDER FORM) CONSTRUCT criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp FROM codn,codgrupo,codtipo,codsec,descripcion_p BEFORE CONSTRUCT INITIALIZE p_vetb25.* TO NULL END CONSTRUCT INPUT BY NAME p_vetb25.* ATTRIBUTE(WITHOUT DEFAULTS) BEFORE INPUT CALL cventas() IF p_vetb25.cod_n IS NOT NULL THEN # EXISTENCIA LET existencia = 0 SELECT SUM(a.cantidad_2) INTO existencia FROM iptb00006 a WHERE a.cod_n = p_vetb25.cod_n AND a.cod_grupo = p_vetb25.cod_grupo AND a.cod_tipo = p_vetb25.cod_tipo AND a.cod_sec = p_vetb25.cod_sec AND a.status_t IS NULL DISPLAY BY NAME existencia END IF ON KEY (CONTROL-W) CASE WHEN INFIELD(tipo_cliente) CALL consulta_clientes() LET p_vetb25.tipo_cliente = cliente_dir.tipo_cliente LET p_vetb25.sec_cliente = cliente_dir.sec_cliente LET nom_cliente = NULL SELECT nombre INTO nom_cliente FROM vetb00004 WHERE tipo_cliente = p_vetb25.tipo_cliente and sec_cliente = p_vetb25.sec_cliente DISPLAY BY NAME p_vetb25.tipo_cliente,p_vetb25.sec_cliente,nom_cliente NEXT FIELD precio WHEN INFIELD(sec_cliente) CALL consulta_clientes() LET p_vetb25.tipo_cliente = cliente_dir.tipo_cliente LET p_vetb25.sec_cliente = cliente_dir.sec_cliente LET nom_cliente = NULL SELECT nombre INTO nom_cliente FROM vetb00004 WHERE tipo_cliente = p_vetb25.tipo_cliente and sec_cliente = p_vetb25.sec_cliente DISPLAY BY NAME p_vetb25.tipo_cliente,p_vetb25.sec_cliente,nom_cliente NEXT FIELD precio END CASE AFTER FIELD cod_n IF p_vetb25.cod_n IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_n END IF AFTER FIELD cod_grupo IF p_vetb25.cod_grupo IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_grupo END IF AFTER FIELD cod_tipo IF p_vetb25.cod_tipo IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_tipo END IF AFTER FIELD cod_sec IF (p_vetb25.cod_n is NULL OR p_vetb25.cod_grupo is NULL OR p_vetb25.cod_tipo is NULL OR p_vetb25.cod_sec IS NULL) THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_n END IF SELECT a.descrip_esp,a.descrip_ing,a.unidad_med INTO p_VETB25.descripcion,descrip2,medida FROM iptb00002 a WHERE a.cod_n=p_vetb25.cod_n and a.cod_grupo=p_vetb25.cod_grupo and a.cod_tipo=p_vetb25.cod_tipo and a.cod_sec=p_vetb25.cod_sec and a.status_t is NULL IF status = notfound THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_n END IF DISPLAY BY NAME p_vetb25.descripcion DISPLAY BY NAME medida # BUSCA COSTO LET costo_std = 0 LET costo_lq = 0 SELECT a.material+a.labor+a.gastos INTO costo_std FROM iptb00004 a WHERE a.ano = YEAR(TODAY) and a.mes_ini = "01" AND a.mes_fin = "12" AND a.cod_n = p_vetb25.cod_n AND a.cod_grupo = p_vetb25.cod_grupo AND a.cod_tipo = p_vetb25.cod_tipo AND a.cod_sec = p_vetb25.cod_sec AND a.status_t IS NULL LET selec = "SELECT CONVERT(CHAR(10),max(a.fecha_lq),103) FROM cttb00013 a WHERE a.cod_n = ? AND a.cod_grupo = ? AND a.cod_tipo = ? AND a.cod_sec = ? AND a.status_t IS NULL " PREPARE cfecha FROM selec EXECUTE cfecha INTO fecha1 USING p_vetb25.cod_n,p_vetb25.cod_grupo, p_vetb25.cod_tipo,p_vetb25.cod_sec SELECT avg(a.costo_lq) INTO costo_lq FROM cttb00013 a WHERE a.fecha_lq = fecha1 AND a.cod_n = p_vetb25.cod_n AND a.cod_grupo = p_vetb25.cod_grupo AND a.cod_tipo = p_vetb25.cod_tipo AND a.cod_sec = p_vetb25.cod_sec AND a.status_t IS NULL DISPLAY BY NAME costo_std,costo_lq DISPLAY fecha1 TO fecha_liq AFTER FIELD sec_cliente IF p_vetb25.sec_cliente is not null THEN LET nom_cliente = NULL SELECT a.nombre INTO nom_cliente FROM vetb00004 a WHERE a.tipo_cliente = p_vetb25.tipo_cliente and a.sec_cliente = p_vetb25.sec_cliente and a.status_t is NULL IF STATUS = NOTFOUND THEN CALL msg(3) NEXT FIELD tipo_cliente END IF DISPLAY BY NAME nom_cliente # CONTROL INTEGRIDAD VENTAS / CLIENTES SELECT a.tipo_cliente FROM vetb00060 a WHERE a.ventas = p_vetb25.ventas AND a.tipo_cliente = p_vetb25.tipo_cliente IF STATUS = NOTFOUND THEN CALL msg(386) NEXT FIELD tipo_cliente END IF ELSE SELECT a.precio INTO p_vetb25.precio FROM vetb00025 a WHERE a.cod_n = p_vetb25.cod_n AND a.cod_grupo = p_vetb25.cod_grupo AND a.cod_tipo = p_vetb25.cod_tipo AND a.cod_sec = p_vetb25.cod_sec AND a.ventas = p_vetb25.ventas AND a.status_t IS NULL IF STATUS = NOTFOUND THEN CALL msg(3) DISPLAY BY NAME p_vetb25.precio ATTRIBUTE(RED) NEXT FIELD cod_n END IF END IF AFTER FIELD precio IF p_vetb25.precio IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD precio END IF END INPUT ON ACTION limpia CALL listproduct.clear() CLEAR FORM ON ACTION desactiva LET opt = fgl_winquestion("ADVERTENCIA","ESTA SEGURO DE DESACTIVAR ESTE PRECIO?","no","yes|no","question",0) LET opt = UPSHIFT(opt) IF opt = "YES" THEN UPDATE vetb00025 set status_t = 'E', us_mod = usuarios, fech_mod = getdate() WHERE cod_n = p_vetb25.cod_n AND cod_grupo = p_vetb25.cod_n AND cod_grupo = p_vetb25.cod_grupo AND cod_tipo = p_vetb25.cod_tipo END IF ON ACTION buscaLista LET selec2 = " SELECT CONVERT(CHAR(10),MAX(a.fecha_lq),103) ", " FROM cttb00013 a ", " WHERE a.cod_n = ? AND ", " a.cod_grupo = ? AND ", " a.cod_tipo = ? AND ", " a.cod_sec = ? AND ", " a.status_t IS NULL " PREPARE bfecha FROM selec2 LET selec = "SELECT b.cod_lista,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp,a.unidad_med, ", " b.tipo_cliente,b.sec_cliente,c.nombre,e.simbolo,b.precio,d.material+d.labor+d.gastos, ", " '0',b.ventas ", " FROM iptb00002 a LEFT OUTER JOIN vetb00025 b ON a.cod_n = b.cod_n and a.cod_grupo = b.cod_grupo and ", " a.cod_tipo = b.cod_tipo and a.cod_sec = b.cod_sec ", " INNER JOIN vetb00061 e ON b.ventas = e.ventas ", " LEFT OUTER JOIN vetb00004 c on b.tipo_cliente = c.tipo_cliente and b.sec_cliente = c.sec_cliente ", " LEfT OUTER JOIN iptb00004 d ON a.cod_n = d.cod_n and a.cod_grupo = d.cod_grupo and ", " a.cod_tipo = d.cod_tipo and a.cod_sec = d.cod_sec and d.ano = '2010' and d.mes_fin = '12' ", "WHERE ",criterio CLIPPED," and a.status_t IS NULL AND b.status_t IS NULL ", " ORDER BY b.cod_lista,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec" PREPARE comando FROM selec DECLARE lista CURSOR FOR comando LET idx = 1 FOREACH lista INTO listproduct[idx].codlista,listproduct[idx].codn,listproduct[idx].codgrupo, listproduct[idx].codtipo,listproduct[idx].codsec, listproduct[idx].descripcion_p,listproduct[idx].unidad_med, listproduct[idx].tipocliente,listproduct[idx].secCliente, listproduct[idx].nombreCliente,listproduct[idx].moneda, listproduct[idx].pprecio, listproduct[idx].costo_std1,listproduct[idx].costo_r, listproduct[idx].ventas # BUSCA FECHA DE LA ULTIMA LIQUIDACION EXECUTE bfecha INTO fecha1 USING listproduct[idx].codn, listproduct[idx].codgrupo, listproduct[idx].codtipo, listproduct[idx].codsec LET listproduct[idx].costo_r = 0 SELECT AVG(a.costo_lq) INTO listproduct[idx].costo_r FROM cttb00013 a WHERE a.cod_n = listproduct[idx].codn AND a.cod_grupo = listproduct[idx].codgrupo AND a.cod_tipo = listproduct[idx].codtipo AND a.cod_sec = listproduct[idx].codsec AND a.fecha_lq= fecha1 AND a.status_t IS NULL LET idx = idx + 1 END FOREACH IF idx = 1 THEN CALL fgl_winmessage("INFO","NO EXISTEN REGISTROS CON ESA CONDICION","INFO") CONTINUE DIALOG END IF CALL listaproducto() ON ACTION guardar IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF IF p_vetb25.ventas is not NULL and p_vetb25.cod_n is not NULL and p_vetb25.cod_grupo is not NULL and p_vetb25.cod_tipo is not NULL and p_vetb25.cod_sec is not NULL and p_vetb25.precio is not NULL THEN IF p_vetb25.tipo_cliente is NULL and p_vetb25.sec_cliente is NULL THEN SELECT unique cod_n INTO p_vetb25.cod_n FROM vetb00025 WHERE ventas = p_vetb25.ventas and cod_n = p_vetb25.cod_n and cod_grupo=p_vetb25.cod_grupo and cod_tipo=p_vetb25.cod_tipo and cod_sec = p_vetb25.cod_sec and tipo_cliente is NULL and sec_cliente is NULL ELSE SELECT unique cod_n INTO p_vetb25.cod_n FROM vetb00025 WHERE ventas = p_vetb25.ventas and cod_n = p_vetb25.cod_n and cod_grupo=p_vetb25.cod_grupo and cod_tipo=p_vetb25.cod_tipo and cod_sec=p_vetb25.cod_sec and tipo_cliente=p_vetb25.tipo_cliente AND sec_cliente = p_vetb25.sec_cliente END IF IF STATUS != NOTFOUND THEN IF p_vetb25.tipo_cliente is NULL AND p_vetb25.sec_cliente is NULL THEN UPDATE vetb00025 SET precio = p_vetb25.precio, us_mod = sUSER_sname(), fech_mod = GETDATE() WHERE ventas = p_vetb25.ventas and cod_n = p_vetb25.cod_n and cod_grupo = p_vetb25.cod_grupo and cod_tipo = p_vetb25.cod_tipo and cod_sec = p_vetb25.cod_sec and tipo_cliente is NULL and sec_cliente is NULL ELSE UPDATE vetb00025 SET precio = p_vetb25.precio, us_mod = SUSER_SNAME(), fech_mod = GETDATE() WHERE ventas = p_vetb25.ventas and cod_n = p_vetb25.cod_n and cod_grupo = p_vetb25.cod_grupo and cod_tipo = p_vetb25.cod_tipo and cod_sec=p_vetb25.cod_sec and tipo_cliente=p_vetb25.tipo_cliente and sec_cliente = p_vetb25.sec_cliente END IF ELSE INSERT INTO vetb00025 (ventas,cod_n,cod_grupo,cod_tipo,cod_Sec,tipo_cliente,sec_cliente, precio,status_t,us_crea,fech_crea,cod_lista) VALUES (p_vetb25.ventas,p_vetb25.cod_n,p_vetb25.cod_grupo, p_vetb25.cod_tipo,p_vetb25.cod_sec,p_vetb25.tipo_cliente, p_vetb25.sec_cliente,p_vetb25.precio,NULL,SUSER_SNAME(),GETDATE(), p_vetb25.cod_lista) END IF CALL fgl_winmessage("Mensajes","Actualizacion Exitosa","info") CALL listaproducto() END IF ON ACTION cancel LET respuesta = fgl_winquestion("Pregunta","Esta seguro de salir del programa?","no","yes|no","question",0) IF respuesta = "yes" THEN EXIT DIALOG ELSE CALL listproduct.clear() CONTINUE DIALOG END IF END DIALOG END FUNCTION FUNCTION ippcmf017() # WHENEVER ERROR CONTINUE MESSAGE "" LET int_flag = false ## Aqui se prepara para la captura del criterio de seleccion CONSTRUCT criterio ON a.ventas,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec FROM ventas,cod_n,cod_grupo,cod_tipo,cod_sec BEFORE CONSTRUCT CALL cventas() AFTER CONSTRUCT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CLEAR FORM RETURN END IF END CONSTRUCT LET SELEC = "SELECT a.* FROM vetb00025 a ", "WHERE a.status_t IS NULL AND ",criterio clipped, " ORDER BY a.ventas,a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_Sec" PREPARE busca FROM selec CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF DECLARE datos SCROLL CURSOR FOR busca OPEN datos FETCH FIRST datos INTO p_vetb25.* IF status >= 0 THEN IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF SELECT descrip_esp,descrip_ing,unidad_med INTO descrip1,descrip2,medida FROM iptb00002 WHERE cod_n = p_vetb25.cod_n and cod_grupo = p_vetb25.cod_grupo and cod_tipo = p_vetb25.cod_tipo and cod_sec= p_vetb25.cod_sec LET nom_cliente = NULL SELECT nombre INTO nom_cliente FROM vetb00004 WHERE tipo_cliente = p_vetb25.tipo_cliente and sec_cliente = p_vetb25.sec_cliente LET descripcion = descrip1 CLIPPED DISPLAY BY NAME p_vetb25.*,descripcion,medida,nom_cliente MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO p_vetb25.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF SELECT descrip_esp,unidad_med INTO descrip1,medida FROM iptb00002 WHERE cod_n = p_vetb25.cod_n and cod_grupo = p_vetb25.cod_grupo and cod_tipo = p_vetb25.cod_tipo and cod_sec = p_vetb25.cod_sec LET nom_cliente = NULL SELECT nombre INTO nom_cliente FROM vetb00004 WHERE tipo_cliente = p_vetb25.tipo_cliente and sec_cliente = p_vetb25.sec_cliente LET descripcion = descrip1 CLIPPED DISPLAY BY NAME p_vetb25.*,descripcion,medida,nom_cliente COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO p_vetb25.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF SELECT descrip_esp,unidad_med INTO descrip1,medida FROM iptb00002 WHERE cod_n = p_vetb25.cod_n and cod_grupo = p_vetb25.cod_grupo and cod_tipo = p_vetb25.cod_tipo and cod_sec= p_vetb25.cod_sec LET nom_cliente = NULL SELECT nombre INTO nom_cliente FROM vetb00004 WHERE tipo_cliente = p_vetb25.tipo_cliente and sec_cliente = p_vetb25.sec_cliente LET descripcion = descrip1 CLIPPED DISPLAY BY NAME p_vetb25.*,descripcion,medida,nom_cliente COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO p_vetb25.* SELECT descrip_esp,unidad_med INTO descrip1,medida FROM iptb00002 WHERE cod_n = p_vetb25.cod_n and cod_grupo = p_vetb25.cod_grupo and cod_tipo = p_vetb25.cod_tipo and cod_sec = p_vetb25.cod_sec LET nom_cliente = NULL SELECT nombre INTO nom_cliente FROM vetb00004 WHERE tipo_cliente = p_vetb25.tipo_cliente and sec_cliente = p_vetb25.sec_cliente LET descripcion = descrip1 CLIPPED DISPLAY BY NAME p_vetb25.*,descripcion,medida,nom_cliente IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO p_vetb25.* SELECT descrip_esp,unidad_med INTO descrip1,medida FROM iptb00002 WHERE cod_n = p_vetb25.cod_n and cod_grupo = p_vetb25.cod_grupo and cod_tipo = p_vetb25.cod_tipo and cod_sec = p_vetb25.cod_sec LET nom_cliente = NULL SELECT nombre INTO nom_cliente FROM vetb00004 WHERE tipo_cliente = p_vetb25.tipo_cliente and sec_cliente = p_vetb25.sec_cliente LET descripcion = descrip1 CLIPPED DISPLAY BY NAME p_vetb25.*,descripcion,medida,nom_cliente IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF COMMAND "Escoger" " Actualiza Registro Cancela Operacion" IF p_vetb25.status_t= "E" THEN LET numero_msg= 36 CALL msg(numero_msg) RETURN END IF INPUT BY NAME p_vetb25.precio WITHOUT DEFAULTS AFTER FIELD precio IF p_vetb25.precio IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD precio END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CLEAR FORM RETURN END IF IF p_vetb25.precio IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD precio END IF EXIT INPUT END INPUT #### Verifica si el usuario presiono la tecla IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE CLEAR FORM RETURN END IF IF p_vetb25.tipo_cliente is NULL AND p_vetb25.sec_cliente is NULL THEN UPDATE vetb00025 SET precio = p_vetb25.precio, us_mod = USER, fech_mod = CURRENT WHERE ventas = p_vetb25.ventas and cod_n = p_vetb25.cod_n and cod_grupo = p_vetb25.cod_grupo and cod_tipo = p_vetb25.cod_tipo and cod_sec = p_vetb25.cod_sec and tipo_cliente is NULL and sec_cliente is NULL ELSE UPDATE vetb00025 SET precio = p_vetb25.precio, us_mod = USER, fech_mod = CURRENT WHERE ventas = p_vetb25.ventas and cod_n = p_vetb25.cod_n and cod_grupo = p_vetb25.cod_grupo and cod_tipo = p_vetb25.cod_tipo and cod_sec=p_vetb25.cod_sec and tipo_cliente=p_vetb25.tipo_cliente and sec_cliente = p_vetb25.sec_cliente END IF LET numero_msg = 13 CALL msg(numero_msg) COMMAND KEY ("L") "eLiminar" "Elimina registro que esta en la pantalla" UPDATE vetb00025 SET status_t ="E" WHERE ventas = p_vetb25.ventas and cod_n = p_vetb25.cod_n and cod_grupo = p_vetb25.cod_grupo and cod_tipo = p_vetb25.cod_tipo and cod_sec=p_vetb25.cod_sec and tipo_cliente =p_vetb25.tipo_cliente and sec_cliente = p_vetb25.sec_cliente LET numero_msg = 39 CALL msg(numero_msg) COMMAND "Retornar" "Retorna al menu anterior" CLEAR FORM EXIT MENU END MENU END FUNCTION FUNCTION busca_pt1() OPEN WINDOW busqueda AT 7,12 WITH FORM "ipfmwd008" ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST) LET int_flag = false CONSTRUCT BY NAME criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec, a.descrip_esp LET selec2 = "SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp ", "FROM iptb00002 a ", "WHERE a.status_t is NULL AND ", criterio clipped, " ORDER BY 5 " IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) GO TO sale9 END IF PREPARE busca_pila FROM selec2 IF status >= 0 THEN IF status = notfound THEN LET numero_msg = 12 CALL msg(numero_msg) END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 END IF END IF DECLARE buscar_pila CURSOR FOR busca_pila LET idx = 1 FOREACH buscar_pila INTO pilas[idx].* 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 " Selecciona Producto Terminado donde esta el cursor" DISPLAY ARRAY pilas TO s_pilas.* LET curr1 = arr_curr() LET m_articulos.cod_n = pilas[curr1].cod_n LET m_articulos.cod_grupo = pilas[curr1].cod_grupo LET m_articulos.cod_tipo = pilas[curr1].cod_tipo LET m_articulos.cod_sec = pilas[curr1].cod_sec LET descuento.cod_n = pilas[curr1].cod_n LET descuento.cod_grupo = pilas[curr1].cod_grupo LET descuento.cod_tipo = pilas[curr1].cod_tipo LET descuento.cod_sec = pilas[curr1].cod_sec LET descrip1 = pilas[curr1].descrip_esp LABEL sale9: CLOSE WINDOW busqueda END FUNCTION FUNCTION consulta_clientes() 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.nombre FROM nombre LET selec2 = "SELECT a.tipo_cliente, a.sec_cliente, a.nombre ", " FROM vetb00004 a", " WHERE ", "a.status_t is NULL AND ", criterio clipped, "ORDER BY 1,2 " IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) GO TO salir_consulta_c END IF PREPARE busca_clientes FROM selec2 IF status >= 0 THEN IF status = notfound THEN LET numero_msg = 3 CALL msg(numero_msg) END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 END IF END IF DECLARE buscar_clientes CURSOR FOR busca_clientes LET idx = 1 FOREACH buscar_clientes INTO arr_clientes[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 " Selecciona Cliente donde esta el cursor" DISPLAY ARRAY arr_clientes TO s_clientes.* LET curr1 = arr_curr() LET cliente_dir.tipo_cliente = arr_clientes[curr1].tipo_cliente LET cliente_dir.sec_cliente = arr_clientes[curr1].sec_cliente LET descrip1 = arr_clientes[curr1].nombre LABEL salir_consulta_c: CLOSE WINDOW busqueda END FUNCTION FUNCTION cventas() DEFINE kventas SMALLINT, dventas CHAR(30) LET pventas = ui.combobox.forname("formonly.ventas") DECLARE bventas CURSOR FOR SELECT a.ventas,a.descripcion FROM vetb00061 a CALL pventas.clear() FOREACH bventas INTO kventas,dventas CALL pventas.additem(kventas,dventas) END FOREACH END FUNCTION FUNCTION listaproducto() DISPLAY ARRAY listproduct TO lproducto.* BEFORE ROW LET curr1 = arr_curr() LET p_vetb25.cod_lista = listproduct[curr1].codlista LET p_vetb25.ventas = listproduct[curr1].ventas LET p_vetb25.cod_n = listproduct[curr1].codn LET p_vetb25.cod_grupo = listproduct[curr1].codgrupo LET p_vetb25.cod_tipo = listproduct[curr1].codtipo LET p_vetb25.cod_sec = listproduct[curr1].codsec LET p_vetb25.descripcion = listproduct[curr1].descripcion_p LET p_vetb25.tipo_cliente = listproduct[curr1].tipocliente LET p_vetb25.sec_cliente = listproduct[curr1].seccliente LET nom_cliente = listproduct[curr1].nombrecliente LET medida = listproduct[curr1].unidad_med LET p_vetb25.precio = listproduct[curr1].pprecio LET costo_std = listproduct[idx].costo_std1 LET costo_lq = listproduct[idx].costo_r DISPLAY BY NAME p_vetb25.*,nom_cliente,costo_std,costo_lq AFTER ROW LET p_vetb25.cod_lista = listproduct[curr1].codlista LET p_vetb25.cod_n = listproduct[curr1].codn LET p_vetb25.cod_grupo = listproduct[curr1].codgrupo LET p_vetb25.cod_tipo = listproduct[curr1].codtipo LET p_vetb25.cod_sec = listproduct[curr1].codsec LET p_vetb25.descripcion = listproduct[curr1].descripcion_p LET p_vetb25.tipo_cliente = listproduct[curr1].tipocliente LET p_vetb25.sec_cliente = listproduct[curr1].seccliente LET nom_cliente = listproduct[curr1].nombrecliente LET medida = listproduct[curr1].unidad_med LET p_vetb25.precio = listproduct[curr1].pprecio LET costo_std = listproduct[curr1].costo_std1 LET costo_lq = listproduct[curr1].costo_r LET p_vetb25.ventas = listproduct[curr1].ventas DISPLAY BY NAME p_vetb25.*,nom_cliente,costo_std,costo_lq END DISPLAY END FUNCTION