{ ------------------------------------------------------------------ PROGRAMA : PRPRMT006 OBJETIVO : Matenimiento Ordenes Produccion PROGRAMADOR : JUAN F. SOTO FECHA REALIZACION : MARZO 09, 1998 ------------------------------------------------------------------ } GLOBALS "prprgb000.4gl" DEFINE arrprtb08 DYNAMIC ARRAY OF 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 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 # (pantalla() es el encabezado de la pantalla de texto antigua; no aplica en GUI) OPEN FORM ctfmmt006 FROM "prfmmt006" DISPLAY FORM ctfmmt006 CALL ui.Window.getCurrent().setText("Ordenes de Produccion") # (pantalla() es el encabezado de la pantalla de texto antigua; no aplica en GUI) 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 arrprtb08[idx].* LET idx = idx + 1 END FOREACH CALL set_count(idx-1) } INPUT ARRAY arrprtb08 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 arrprtb08[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 = arrprtb08[curr].cod_n_c AND a.cod_grupo = arrprtb08[curr].cod_grupo_c AND a.cod_tipo = arrprtb08[curr].cod_tipo_c AND a.cod_sec = arrprtb08[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 arrprtb08[curr].descrip_esp_c = descrip_esp_c LET arrprtb08[curr].unidad_c = unidad_c DISPLAY arrprtb08[curr].descrip_esp_c TO s_orden[scr_l].descrip_esp_c ATTRIBUTE(BLUE) DISPLAY arrprtb08[curr].unidad_c TO s_orden[scr_l].unidad_c ATTRIBUTE(BLUE) AFTER FIELD cantidad_c IF arrprtb08[curr].cod_n_c IS NOT NULL THEN IF arrprtb08[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 arrprtb08[1].cod_n_c IS NULL THEN LET arrprtb08[1].cod_n_c = prtb07.cod_n LET arrprtb08[1].cod_grupo_c = prtb07.cod_grupo LET arrprtb08[1].cod_tipo_c = prtb07.cod_tipo LET arrprtb08[1].cod_sec_c = prtb07.cod_Sec OUTPUT TO REPORT ordenes(prtb07.num_oc,arrprtb08[idx].*) END IF FOR idx = 1 TO arr_count() IF arrprtb08[idx].cod_n_c IS NOT NULL THEN INSERT INTO prtb00008 VALUES (prtb07.num_oc, arrprtb08[idx].cod_n_c, arrprtb08[idx].cod_grupo_c, arrprtb08[idx].cod_tipo_c, arrprtb08[idx].cod_sec_c, arrprtb08[idx].cantidad_c, SUSER_SNAME(),current,null,null) OUTPUT TO REPORT ordenes(prtb07.num_oc,arrprtb08[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 arrprtb08[idx].cod_n_c = null LET arrprtb08[idx].cod_grupo_c = null LET arrprtb08[idx].cod_tipo_c = null LET arrprtb08[idx].cod_sec_c = null LET arrprtb08[idx].unidad_c = null LET arrprtb08[idx].cantidad_c = null LET arrprtb08[idx].descrip_esp_c = null END FOR FOR idx = 1 TO 5 DISPLAY arrprtb08[idx].cod_n_c TO s_orden[idx].cod_n_c DISPLAY arrprtb08[idx].cod_grupo_c TO s_orden[idx].cod_grupo_c DISPLAY arrprtb08[idx].cod_tipo_c TO s_orden[idx].cod_tipo_c DISPLAY arrprtb08[idx].cod_sec_c TO s_orden[idx].cod_sec_c DISPLAY arrprtb08[idx].cantidad_c TO s_orden[idx].cantidad_c DISPLAY arrprtb08[idx].descrip_esp_c TO s_orden[idx].descrip_esp_c ATTRIBUTE(BLUE) DISPLAY arrprtb08[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 arrprtb08[idx].* SELECT a.descrip_esp,a.unidad_med INTO descrip_esp_c,unidad_c FROM intb00001 a WHERE a.cod_n = arrprtb08[idx].cod_n_c AND a.cod_grupo = arrprtb08[idx].cod_grupo_c AND a.cod_tipo = arrprtb08[idx].cod_tipo_c AND a.cod_sec = arrprtb08[idx].cod_sec_c AND a.status_t IS NULL IF idx > 5 THEN EXIT FOREACH END IF LET arrprtb08[idx].descrip_esp_c = descrip_esp_c LET arrprtb08[idx].unidad_c = unidad_c DISPLAY arrprtb08[idx].cod_n_c TO s_orden[idx].cod_n_c DISPLAY arrprtb08[idx].cod_grupo_c TO s_orden[idx].cod_grupo_c DISPLAY arrprtb08[idx].cod_tipo_c TO s_orden[idx].cod_tipo_c DISPLAY arrprtb08[idx].cod_sec_c TO s_orden[idx].cod_sec_c DISPLAY arrprtb08[idx].cantidad_c TO s_orden[idx].cantidad_c DISPLAY arrprtb08[idx].descrip_esp_c TO s_orden[idx].descrip_esp_c ATTRIBUTE(BLUE) DISPLAY arrprtb08[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