{ ------------------------------------------------------------------ PROGRAMA : PRPRMT006 OBJETIVO : Matenimiento Ordenes Produccion PROGRAMADOR : JUAN F. SOTO FECHA REALIZACION : MARZO 09, 1998 ------------------------------------------------------------------ } GLOBALS "prprgb000.4gl" DEFINE nombre LIKE vetb00004.nombre, descrip_esp_c,descrip_esp LIKE iptb00002.descrip_esp, unidad LIKE iptb00002.unidad_med, unidad_c LIKE intb00001.unidad_med, descrip CHAR(20), esta,opt4 CHAR(1), nombre_vend,nombres,apellidos CHAR(40) DEFINE numero_oc INTEGER DEFINE datos_mt ARRAY[200] OF RECORD cod_n SMALLINT, cod_grupo SMALLINT, cod_tipo SMALLINT, cod_sec SMALLINT, descrip_esp CHAR(30), unidad_med CHAR(3) END RECORD MAIN DEFER INTERRUPT CALL ARG_VAL(1) RETURNING usuarios CALL ARG_VAL(2) RETURNING clave CONNECT to "smarmotech" USER usuarios USING clave CALL prprmt006() END MAIN FUNCTION prprmt006() # WHENEVER ERROR CONTINUE CLEAR SCREEN OPTIONS FORM LINE 9, ERROR LINE 23, COMMENT LINE 21 CALL pantalla() OPEN FORM ctfmmt006 FROM "prfmmt006" DISPLAY FORM ctfmmt006 CALL pantalla() DISPLAY "prprmt006" AT 4,3 DISPLAY "Ordenes De Produccion" AT 6,32 MENU "OPCIONES" COMMAND "Adicionar" " Adiciona Registro Cancela Operacion" LET int_flag = FALSE CLEAR FORM CALL prpcad006() COMMAND "Consultar" LET INT_FLAG = FALSE CALL prpcmf006() COMMAND "Salir" "Retorna Menu Anterior" EXIT MENU END MENU END FUNCTION FUNCTION prpcad006() ## Captura los datos que va a contener el registro LET int_flag = false SELECT MAX(a.num_oc) INTO prtb07.num_oc FROM prtb00007 a LET prtb07.num_oc = prtb07.num_oc + 1 INPUT BY NAME prtb07.num_oc THRU prtb07.cantidad WITHOUT DEFAULTS ON KEY(CONTROL-W) CASE WHEN INFIELD(cod_n) # CALL busca_pt() IF int_flag THEN LET int_flag = FALSE RETURN END IF DISPLAY BY NAME prtb07.cod_n,prtb07.cod_grupo,prtb07.cod_tipo,prtb07.cod_sec ATTRIBUTE (BLUE) EXIT CASE WHEN INFIELD(cod_grupo) # CALL busca_pt() IF int_flag THEN LET int_flag = FALSE RETURN END IF DISPLAY BY NAME prtb07.cod_n,prtb07.cod_grupo,prtb07.cod_tipo,prtb07.cod_sec ATTRIBUTE (BLUE) EXIT CASE WHEN INFIELD(cod_tipo) # CALL busca_pt() IF int_flag THEN LET int_flag = FALSE RETURN END IF DISPLAY BY NAME prtb07.cod_n,prtb07.cod_grupo,prtb07.cod_tipo,prtb07.cod_sec ATTRIBUTE (BLUE) EXIT CASE WHEN INFIELD(cod_sec) # CALL busca_pt() IF int_flag THEN LET int_flag = FALSE RETURN END IF DISPLAY BY NAME prtb07.cod_n,prtb07.cod_grupo,prtb07.cod_tipo,prtb07.cod_sec ATTRIBUTE (BLUE) EXIT CASE WHEN INFIELD(sec_vend) CALL vendedores() DISPLAY BY NAME prtb07.sec_vend,nombre_vend ATTRIBUTE(BLUE) EXIT CASE WHEN INFIELD (tipo_cliente) CALL busca_cliente() DISPLAY BY NAME prtb07.tipo_cliente,prtb07.sec_cliente, nombre ATTRIBUTE(BLUE) EXIT CASE WHEN INFIELD (sec_cliente) CALL busca_cliente() DISPLAY BY NAME prtb07.tipo_cliente,prtb07.sec_cliente, nombre ATTRIBUTE(BLUE) EXIT CASE END CASE BEFORE FIELD fecha_termina LET prtb07.fecha_termina = prtb07.fecha + 15 DISPLAY BY NAME prtb07.fecha_termina AFTER FIELD fecha_termina IF prtb07.fecha_termina IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD fecha_termina END IF IF prtb07.fecha_termina < prtb07.fecha THEN LET numero_msg =51 CALL msg(numero_msg) NEXT FIELD fecha_termina END IF AFTER FIELD orden_pedido IF prtb07.orden_pedido IS NOT NULL AND prtb07.orden_pedido != 0 THEN SELECT UNIQUE a.num_oc FROM prtb00012 a WHERE a.num_oc = prtb07.orden_pedido IF STATUS = NOTFOUND THEN LET numero_msg =3 CALL msg(numero_msg) NEXT FIELD orden_pedido END IF END IF AFTER FIELD sec_vend IF prtb07.sec_vend IS NOT NULL THEN SELECT a.nom1_emp,a.apell1_emp INTO nombres,apellidos FROM adtb00003 a WHERE a.num_emp = prtb07.sec_vend IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD sec_vend END IF LET nombre_vend = nombres CLIPPED," ",apellidos CLIPPED DISPLAY BY NAME nombre_vend ATTRIBUTE(BLUE) END IF BEFORE FIELD fecha LET prtb07.fecha = TODAY DISPLAY BY NAME prtb07.fecha ATTRIBUTE(BLUE) AFTER FIELD fecha IF prtb07.fecha > TODAY THEN LET numero_msg = 189 CALL msg(numero_msg) NEXT FIELD fecha END IF AFTER FIELD sec_cliente SELECT a.nombre INTO nombre FROM vetb00004 a WHERE a.tipo_cliente = prtb07.tipo_cliente AND a.sec_cliente = prtb07.sec_cliente AND a.status_t IS NULL IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD tipo_cliente END IF DISPLAY BY NAME nombre ATTRIBUTE(BLUE) AFTER FIELD cod_n SELECT a.producto INTO descrip FROM iptb00020 a WHERE a.cod_n = prtb07.cod_n DISPLAY BY NAME descrip ATTRIBUTE(BLUE) AFTER FIELD cod_sec SELECT a.descrip_esp,a.unidad_med INTO descrip_esp,unidad FROM iptb00002 a WHERE a.cod_n = prtb07.cod_n AND a.cod_grupo = prtb07.cod_grupo AND a.cod_tipo = prtb07.cod_tipo AND a.cod_sec = prtb07.cod_sec IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_n END IF DISPLAY BY NAME unidad,descrip_esp ATTRIBUTE(BLUE) SELECT UNIQUE a.num_oc FROM prtb00007 a WHERE a.num_oc = prtb07.num_oc AND a.cod_n = prtb07.cod_n AND a.cod_grupo = prtb07.cod_grupo AND a.cod_tipo = prtb07.cod_tipo AND a.cod_sec = prtb07.cod_sec IF STATUS != NOTFOUND THEN LET numero_msg = 12 CALL msg(numero_msg) NEXT FIELD num_oc END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF SELECT a.descrip_esp INTO descrip_esp FROM iptb00002 a WHERE a.cod_n = prtb07.cod_n AND a.cod_grupo = prtb07.cod_grupo AND a.cod_tipo = prtb07.cod_tipo AND a.cod_sec = prtb07.cod_sec IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_n END IF DISPLAY BY NAME unidad,descrip_esp ATTRIBUTE(BLUE) SELECT UNIQUE a.num_oc FROM prtb00007 a WHERE a.num_oc = prtb07.num_oc AND a.cod_n = prtb07.cod_n AND a.cod_grupo = prtb07.cod_grupo AND a.cod_tipo = prtb07.cod_tipo AND a.cod_sec = prtb07.cod_sec IF STATUS != NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD num_oc END IF SELECT a.nombre INTO nombre FROM vetb00004 a WHERE a.tipo_cliente = prtb07.tipo_cliente AND a.sec_cliente = prtb07.sec_cliente AND a.status_t IS NULL IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD tipo_cliente END IF DISPLAY BY NAME descrip_esp,nombre ATTRIBUTE(BLUE) END INPUT { ESTE QUERY ES PARA BUSCAR LA COMPOSICION DE LOS PRODUCTOS DECLARE buscame CURSOR FOR SELECT UNIQUE a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec FROM prtb00008 a,prtb00007 b WHERE b.cod_n = prtb07.cod_n AND b.cod_grupo = prtb07.cod_grupo AND b.cod_tipo = prtb07.cod_tipo AND b.cod_sec = prtb07.cod_sec AND a.num_oc = b.num_oc LET idx = 1 FOREACH buscame INTO prtb08[idx].* LET idx = idx + 1 END FOREACH CALL set_count(idx-1) } INPUT ARRAY prtb08 FROM s_orden.* ON KEY(CONTROL-W) CALL busca_material() BEFORE ROW LET curr = arr_curr() LET scr_l = scr_line() AFTER FIELD cod_sec_c LET descrip_esp_c = NULL IF prtb08[curr].cod_sec_c IS NOT NULL THEN SELECT a.descrip_esp,a.unidad_med INTO descrip_esp_c,unidad_c FROM intb00001 a WHERE a.cod_n = prtb08[curr].cod_n_c AND a.cod_grupo = prtb08[curr].cod_grupo_c AND a.cod_tipo = prtb08[curr].cod_tipo_c AND a.cod_sec = prtb08[curr].cod_sec_c AND a.status_t IS NULL IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) NEXT FIELD cod_n_c END IF END IF LET prtb08[curr].descrip_esp_c = descrip_esp_c LET prtb08[curr].unidad_c = unidad_c DISPLAY prtb08[curr].descrip_esp_c TO s_orden[scr_l].descrip_esp_c ATTRIBUTE(BLUE) DISPLAY prtb08[curr].unidad_c TO s_orden[scr_l].unidad_c ATTRIBUTE(BLUE) AFTER FIELD cantidad_c IF prtb08[curr].cod_n_c IS NOT NULL THEN IF prtb08[curr].cantidad_c IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cantidad_c END IF END IF AFTER INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF EXIT INPUT END INPUT PROMPT "TODA LA INFORMACION ESTA CORRECTA? " FOR opt4 LET opt4 = upshift(opt4) IF opt4 = "S" THEN START REPORT ordenes TO "c:\\archivo" INSERT INTO prtb00007 VALUES (prtb07.*) UPDATE prtb00007 set us_crea = SUSER_SNAME(), fech_crea = current WHERE num_oc = prtb07.num_oc INSERT INTO prtb00009 VALUES (prtb07.num_oc,prtb07.fecha,"S","INICIO ORDEN...",NULL,SUSER_SNAME(),CURRENT,NULL,NULL) # SE ESTA VALIDANDO EL PRODUCTO TERMINADO EN EL CODIGO DE LA MATERIA PRIMA # PARA CUANDO LA ORDEN SEA PARA PRODUCTOS IMPORTADOS QUE NO TIENEN COMPOSICION IF prtb08[1].cod_n_c IS NULL THEN LET prtb08[1].cod_n_c = prtb07.cod_n LET prtb08[1].cod_grupo_c = prtb07.cod_grupo LET prtb08[1].cod_tipo_c = prtb07.cod_tipo LET prtb08[1].cod_sec_c = prtb07.cod_Sec OUTPUT TO REPORT ordenes(prtb07.num_oc,prtb08[idx].*) END IF FOR idx = 1 TO arr_count() IF prtb08[idx].cod_n_c IS NOT NULL THEN INSERT INTO prtb00008 VALUES (prtb07.num_oc, prtb08[idx].cod_n_c, prtb08[idx].cod_grupo_c, prtb08[idx].cod_tipo_c, prtb08[idx].cod_sec_c, prtb08[idx].cantidad_c, SUSER_SNAME(),current,null,null) OUTPUT TO REPORT ordenes(prtb07.num_oc,prtb08[idx].*) END IF END FOR FINISH REPORT ordenes RUN "TYPE c:\\archivo > LPT3" LET numero_msg = 1 CALL msg(numero_msg) END IF CLEAR FORM END FUNCTION FUNCTION prpcmf006() ## Aqui se prepara para la captura del criterio de seleccion CONSTRUCT BY NAME criterio ON a.num_oc,a.tipo_cliente,a.sec_cliente IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET SELEC = " SELECT UNIQUE a.* FROM prtb00007 a ", " WHERE ",criterio CLIPPED, " AND a.status_t IS NULL" PREPARE busca FROM selec DECLARE datos SCROLL CURSOR FOR busca OPEN datos FETCH FIRST datos INTO prtb07.* IF STATUS = NOTFOUND THEN LET numero_msg = 3 CALL msg(numero_msg) RETURN END IF DISPLAY BY NAME prtb07.num_oc THRU prtb07.cantidad ATTRIBUTE(BLUE) LET numero_oc = prtb07.num_oc CALL busca_detalle() CALL busca_clientem() CALL busca_vendm() CALL busca_product() MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proprtb07.mo registro encontrado" FETCH NEXT datos INTO prtb07.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF DISPLAY BY NAME prtb07.num_oc THRU prtb07.cantidad ATTRIBUTE(BLUE) LET numero_oc = prtb07.num_oc CALL limpia() CALL busca_detalle() CALL busca_clientem() CALL busca_vendm() CALL busca_product() COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO prtb07.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF DISPLAY BY NAME prtb07.num_oc THRU prtb07.cantidad ATTRIBUTE(BLUE) LET numero_oc = prtb07.num_oc CALL limpia() CALL busca_detalle() CALL busca_clientem() CALL busca_vendm() CALL busca_product() COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO prtb07.* DISPLAY BY NAME prtb07.num_oc THRU prtb07.cantidad ATTRIBUTE(BLUE) LET numero_oc = prtb07.num_oc CALL limpia() CALL busca_detalle() CALL busca_clientem() CALL busca_vendm() CALL busca_product() LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO prtb07.* DISPLAY BY NAME prtb07.num_oc THRU prtb07.cantidad ATTRIBUTE(BLUE) LET numero_oc = prtb07.num_oc CALL limpia() CALL busca_detalle() CALL busca_clientem() CALL busca_vendm() CALL busca_product() LET numero_msg = 4 CALL msg(numero_msg) COMMAND KEY ("N") "aNular" PROMPT "Esta seguro?" FOR esta LET esta = UPSHIFT(esta) IF esta = "S" THEN UPDATE prtb00007 set status_t = "E", us_mod = SUSER_SNAME(), fech_mod = current WHERE num_oc = prtb07.num_oc UPDATE prtb00009 set status_t = "E", us_mod = SUSER_SNAME(), fech_mod = current WHERE num_oc = prtb07.num_oc LET numero_msg = 39 CALL msg(numero_msg) END IF COMMAND "Retornar" "Retorna al menu anterior" EXIT MENU END MENU END FUNCTION FUNCTION busca_pt() OPEN WINDOW busqueda AT 7,12 WITH FORM "vefmwd003" ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST) LET int_flag = false CONSTRUCT criterio ON a.descrip_esp FROM 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 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 IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) GOTO sale9 END IF CALL set_count(idx -1) MESSAGE " Selecciona Producto Terminado donde esta el cursor" DISPLAY ARRAY pilas TO s_pilas.* LET curr1 = arr_curr() LET prtb07.cod_n = pilas[curr1].cod_n LET prtb07.cod_grupo = pilas[curr1].cod_grupo LET prtb07.cod_tipo = pilas[curr1].cod_tipo LET prtb07.cod_sec = pilas[curr1].cod_sec LET descrip_esp = pilas[curr1].descrip_esp LABEL sale9: CLOSE WINDOW busqueda END FUNCTION FUNCTION limpia() FOR idx = 1 TO 10 LET prtb08[idx].cod_n_c = null LET prtb08[idx].cod_grupo_c = null LET prtb08[idx].cod_tipo_c = null LET prtb08[idx].cod_sec_c = null LET prtb08[idx].unidad_c = null LET prtb08[idx].cantidad_c = null LET prtb08[idx].descrip_esp_c = null END FOR FOR idx = 1 TO 5 DISPLAY prtb08[idx].cod_n_c TO s_orden[idx].cod_n_c DISPLAY prtb08[idx].cod_grupo_c TO s_orden[idx].cod_grupo_c DISPLAY prtb08[idx].cod_tipo_c TO s_orden[idx].cod_tipo_c DISPLAY prtb08[idx].cod_sec_c TO s_orden[idx].cod_sec_c DISPLAY prtb08[idx].cantidad_c TO s_orden[idx].cantidad_c DISPLAY prtb08[idx].descrip_esp_c TO s_orden[idx].descrip_esp_c ATTRIBUTE(BLUE) DISPLAY prtb08[idx].unidad_c TO s_orden[idx].unidad_c ATTRIBUTE(BLUE) END FOR END FUNCTION FUNCTION busca_detalle() DECLARE busca_d CURSOR FOR SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.cantidad FROM prtb00008 a WHERE a.num_oc = numero_oc LET idx = 1 FOREACH busca_d INTO prtb08[idx].* SELECT a.descrip_esp,a.unidad_med INTO descrip_esp_c,unidad_c FROM intb00001 a WHERE a.cod_n = prtb08[idx].cod_n_c AND a.cod_grupo = prtb08[idx].cod_grupo_c AND a.cod_tipo = prtb08[idx].cod_tipo_c AND a.cod_sec = prtb08[idx].cod_sec_c AND a.status_t IS NULL IF idx > 5 THEN EXIT FOREACH END IF LET prtb08[idx].descrip_esp_c = descrip_esp_c LET prtb08[idx].unidad_c = unidad_c DISPLAY prtb08[idx].cod_n_c TO s_orden[idx].cod_n_c DISPLAY prtb08[idx].cod_grupo_c TO s_orden[idx].cod_grupo_c DISPLAY prtb08[idx].cod_tipo_c TO s_orden[idx].cod_tipo_c DISPLAY prtb08[idx].cod_sec_c TO s_orden[idx].cod_sec_c DISPLAY prtb08[idx].cantidad_c TO s_orden[idx].cantidad_c DISPLAY prtb08[idx].descrip_esp_c TO s_orden[idx].descrip_esp_c ATTRIBUTE(BLUE) DISPLAY prtb08[idx].unidad_c TO s_orden[idx].unidad_c ATTRIBUTE(BLUE) LET idx = idx + 1 END FOREACH END FUNCTION REPORT ordenes(xnumero,z) DEFINE z RECORD cod_n_c LIKE prtb00008.cod_n, cod_grupo_c LIKE prtb00008.cod_grupo, cod_tipo_c LIKE prtb00008.cod_tipo, cod_sec_c LIKE prtb00008.cod_sec, cantidad_c LIKE prtb00008.cantidad , descrip_esp_c LIKE intb00001.descrip_esp, unidad_c LIKE intb00001.unidad_med END RECORD, i,xnumero INTEGER, negrillas_on,negrillas_off,doble CHAR(2) OUTPUT LEFT MARGIN 0 ORDER BY xnumero FORMAT PAGE HEADER LET negrillas_on = ASCII 27, ASCII 69 LET negrillas_off = ASCII 27, ASCII 70 LET doble = ASCII 14 LET l = (80 - LENGTH(p_compania.nombre CLIPPED))/2 PRINT COLUMN l, p_compania.nombre CLIPPED, COLUMN 70, TODAY USING "DD/MM/YY" LET l = (80 - LENGTH("ORDEN DE PRODUCCION"))/2 PRINT COLUMN l, "ORDEN DE PRODUCCION", COLUMN 70, TIME PRINT COLUMN 1, "NO. ORDEN: ",doble_on,xnumero USING "<<<<<<" PRINT COLUMN 1, "FECHA : ",negrillas_on,prtb07.fecha USING "DD/MM/YY",negrillas_off PRINT COLUMN 1, "VENDEDOR : ",negrillas_on,prtb07.sec_vend USING "<<<<", " ",nombre_vend,negrillas_off PRINT COLUMN 1, "CLIENTE : ",negrillas_on,prtb07.tipo_cliente USING "<<", prtb07.sec_cliente USING "<<<<"," "," ", nombre,negrillas_off PRINT COLUMN 1, "PRODUCTO : ",negrillas_on,prtb07.cod_n USING "&","-", prtb07.cod_grupo USING "&","-", prtb07.cod_tipo USING "&&","-", prtb07.cod_sec USING "&&&"," ",negrillas_off,descrip_esp," ", unidad,negrillas_off PRINT COLUMN 1, "CANTIDAD : ",negrillas_on, prtb07.cantidad USING "<<,<<<", negrillas_off FOR i = 1 TO 70 PRINT "-"; END FOR PRINT "-" PRINT "COMPOSICION PRODUCTO..." FOR i = 1 TO 70 PRINT "-"; END FOR PRINT "-" ON EVERY ROW PRINT COLUMN 1, z.cod_n_c USING "&","-", z.cod_grupo_c USING "&","-", z.cod_tipo_c USING "&&","-", z.cod_sec_c USING "&&&","-", " ",z.descrip_esp_c," ",z.unidad_c, " ",z.cantidad_c USING "###,###.###" PAGE TRAILER PRINT COLUMN 10, "-------------------", COLUMN 35, "-------------------" PRINT COLUMN 13, "AUTORIZADO POR", COLUMN 39, "REVISADO POR" END REPORT FUNCTION busca_material() LET int_flag = FALSE OPEN WINDOW material1 AT 10,9 WITH FORM "infmwd004" ATTRIBUTE(BORDER,FORM LINE FIRST + 2) CONSTRUCT criterio ON a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp, a.unidad_med FROM cod_n,cod_grupo,cod_tipo,cod_sec,descrip_esp, unidad_med LET selec = "SELECT a.cod_n,a.cod_grupo,a.cod_tipo,a.cod_sec,a.descrip_esp, ", "a.unidad_med FROM intb00001 a ", "WHERE a.status_t IS NULL AND ",criterio CLIPPED, "ORDER BY 1,2,3,4" PREPARE comando4 FROM selec DECLARE comp4 CURSOR FOR comando4 LET idx = 1 FOREACH comp4 INTO datos_mt[idx].* LET idx = idx + 1 END FOREACH CALL SET_COUNT(idx - 1) DISPLAY ARRAY datos_mt TO datos_mt1.* LET idx = ARR_CURR() CLOSE WINDOW material1 END FUNCTION FUNCTION vendedores() DEFINE descrip6 LIKE adtb00003.nom1_emp OPEN WINDOW busqueda2 AT 7,12 WITH FORM "vefmwd001" ATTRIBUTE (BORDER,FORM LINE FIRST + 2,COMMENT LINE LAST,MESSAGE LINE LAST) LET int_flag = false CONSTRUCT criterio ON a.nom1_emp FROM descrip6 LET selec2 = "SELECT UNIQUE a.num_emp,a.nom1_emp,a.apell1_emp ", " FROM adtb00003 a,vetb00028 b", " WHERE a.num_emp = b.sec_vend AND ", "a.status_t is null AND ", criterio clipped, "ORDER BY 1 " IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) GO TO salir_consulta_e END IF PREPARE busca_empleados 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_empleados CURSOR FOR busca_empleados LET idx = 1 FOREACH buscar_empleados INTO arr_empleados[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 empleados[idx].cod_emp_sec = arr_empleados[idx].num_emp LET empleados[idx].descrip6 = arr_empleados[idx].nom1_emp clipped," ",arr_empleados[idx].apell1_emp clipped LET idx = idx + 1 END FOREACH CALL set_count(idx-1) MESSAGE " Selecciona Empleado donde esta el cursor" DISPLAY ARRAY empleados TO s_empleados.* LET curr1 = scr_line() LET prtb07.sec_vend = empleados[curr1].cod_emp_sec LET nombre_vend = empleados[curr1].descrip6 LABEL salir_consulta_e: CLOSE WINDOW busqueda2 END FUNCTION FUNCTION busca_cliente() 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 prtb07.tipo_cliente = arr_clientes[curr1].tipo_cliente LET prtb07.sec_cliente = arr_clientes[curr1].sec_cliente LET nombre = arr_clientes[curr1].nombre LABEL salir_consulta_c: CLOSE WINDOW busqueda END FUNCTION FUNCTION busca_clientem() SELECT a.nombre INTO nombre FROM vetb00004 a WHERE a.tipo_cliente = prtb07.tipo_cliente AND a.sec_cliente = prtb07.sec_cliente AND a.status_t IS NULL DISPLAY BY NAME nombre ATTRIBUTE(BLUE) END FUNCTION FUNCTION busca_vendm() IF prtb07.sec_vend IS NOT NULL THEN SELECT a.nom1_emp,a.apell1_emp INTO nombres,apellidos FROM adtb00003 a WHERE a.num_emp = prtb07.sec_vend LET nombre_vend = nombres CLIPPED," ",apellidos CLIPPED DISPLAY BY NAME nombre_vend ATTRIBUTE(BLUE) END IF END FUNCTION FUNCTION busca_product() SELECT a.descrip_esp,a.unidad_med INTO descrip_esp,unidad FROM iptb00002 a WHERE a.cod_n = prtb07.cod_n AND a.cod_grupo = prtb07.cod_grupo AND a.cod_tipo = prtb07.cod_tipo AND a.cod_sec = prtb07.cod_sec DISPLAY BY NAME unidad,descrip_esp ATTRIBUTE(BLUE) END FUNCTION