{ ------------------------------------------------------------------ PROGRAMA : IPPRMT009 OBJETIVO : Capturar, Modificar, Eliminar registros de la Tabla Catalogo Codigo de Barra Prod. Term. PROGRAMADOR : Tadeo A. Ferreras F. FECHA REALIZACION : Enero 30, 1996 ------------------------------------------------------------------ } GLOBALS "ipprgb000.4gl" DEFINE iptb12 RECORD LIKE iptb00012.* DEFINE sum1,sum2 INTEGER, opt1 CHAR(1), codigo CHAR(13) FUNCTION ipprmt009() CLEAR SCREEN OPTIONS FORM LINE 9, ERROR LINE 23, HELP FILE "ippray000.exe", HELP KEY CONTROL-W, MESSAGE LINE 24, COMMENT LINE 21 OPEN FORM ipfmmt009 FROM "ipfmmt009" DISPLAY FORM ipfmmt009 CALL pantalla() DISPLAY "ipprmt009" AT 4,3 DISPLAY "Codigos de Barra de DUN - 14" at 6,26 MENU "OPCIONES" COMMAND "Adicionar" " Adiciona Registro Cancela Operacion" LET INT_FLAG = FALSE CLEAR FORM CALL ippcad009() COMMAND "Consultar-modificar" " Realiza Busqueda Cancela Operacion" LET INT_FLAG = FALSE CALL ippcmf009() COMMAND "Salir" "Retorna Menu Anterior" EXIT MENU END MENU END FUNCTION FUNCTION ippcad009() DEFINE fech_ant CHAR(8) # WHENEVER ERROR CONTINUE MESSAGE "" ## Captura los datos que va a contener el registro INPUT BY NAME iptb12.* AFTER FIELD cod IF iptb12.cod IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod END IF AFTER FIELD ean13 IF iptb12.ean13 IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD ean13 END IF LET codigo = " " LET sum1 = 0 LET sum2 = 0 LET codigo = iptb12.cod,iptb12.ean13 LET sum1 = codigo[1] + codigo[3] + codigo[5] + codigo[7] + codigo[9] + codigo[11] + codigo[13] LET sum2 = codigo[2] + codigo[4] + codigo[6] + codigo[8] + codigo[10] + codigo[12] LET sum1 = sum1 * 3 LET sum1 = sum1 + sum2 LET sum2 = sum1/10 LET sum2 = sum2*10 LET sum1 = sum1 - sum2 IF sum1 = 0 OR sum1 >= 10 THEN LET sum1 = 10 END IF LET sum2 = 10 - sum1 LET iptb12.cd = sum2 USING "&" DISPLAY BY NAME iptb12.cd SELECT a.* INTO iptb12.* FROM iptb00012 a WHERE (a.cod = iptb12.cod AND a.ean13 = iptb12.ean13 AND a.cd=iptb12.cd) IF STATUS != NOTFOUND THEN LET numero_msg = 12 CALL msg(numero_msg) DISPLAY BY NAME iptb12.* NEXT FIELD cod END IF AFTER FIELD descripcion IF iptb12.descripcion IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD descripcion END IF AFTER FIELD unidades IF iptb12.unidades IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD unidades END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF INSERT INTO iptb00012 VALUES (iptb12.*) UPDATE iptb00012 SET (us_crea,fech_crea) = (USER,CURRENT) WHERE @cod = iptb12.cod AND @ean13 = iptb12.ean13 AND @cd = iptb12.cd LET numero_msg = 1 CALL msg(numero_msg) END FUNCTION FUNCTION ippcmf009() ## Aqui se prepara para la captura del criterio de seleccion CLEAR FORM CONSTRUCT criterio ON iptb00012.* FROM iptb00012.* IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF LET SELEC = "SELECT UNIQUE * FROM iptb00012 ", "WHERE status_t IS NULL AND ",criterio clipped, " ORDER BY 1,2,3" PREPARE busca FROM selec DECLARE datos SCROLL CURSOR FOR busca OPEN datos FETCH FIRST datos INTO iptb12.* DISPLAY BY NAME iptb12.* MENU "OPCIONES " COMMAND "Siguiente" "Presenta en pantalla el proximo registro encontrado" FETCH NEXT datos INTO iptb12.* IF STATUS = NOTFOUND THEN LET numero_msg = 4 CALL msg(numero_msg) END IF DISPLAY BY NAME iptb12.* COMMAND "Anterior" "Presenta en pantalla el registro anterior encontrado" FETCH PREVIOUS datos INTO iptb12.* IF STATUS = NOTFOUND THEN LET numero_msg = 5 CALL msg(numero_msg) END IF DISPLAY BY NAME iptb12.* COMMAND "Primero" "Presenta en pantalla el primer registro encontrado" FETCH FIRST datos INTO iptb12.* DISPLAY BY NAME iptb12.* LET numero_msg = 5 CALL msg(numero_msg) COMMAND "Ultimo" "Presenta en pantalla el ultimo registro encontrado" FETCH LAST datos INTO iptb12.* DISPLAY BY NAME iptb12.* LET numero_msg = 4 CALL msg(numero_msg) COMMAND "Escoger" " Actualiza Registro Cancela Operacion" INPUT BY NAME iptb12.descripcion THRU iptb12.fech_mod WITHOUT DEFAULTS AFTER FIELD descripcion IF iptb12.descripcion IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD descripcion END IF AFTER FIELD unidades IF iptb12.unidades IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD unidades END IF END INPUT IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) LET int_flag = FALSE RETURN END IF UPDATE iptb00012 SET (descripcion,unidades,us_mod,fech_mod) = (iptb12.descripcion,iptb12.unidades,USER,CURRENT) WHERE @cod = iptb12.cod AND @ean13 = iptb12.ean13 AND @cd = iptb12.cd LET numero_msg = 13 CALL msg(numero_msg) COMMAND KEY ("L") "eLiminar" "Eliminar Registros" LABEL nuevo: PROMPT "Esta Seguro de Eliminar este Registro (S/N)...? " FOR CHAR opt1 LET opt1 = UPSHIFT(opt1) IF opt1 != "S" AND opt1 != "N" THEN GOTO nuevo END IF IF opt1 = "S" THEN UPDATE iptb00012 SET (status_t,us_mod,fech_mod) = ("E",USER,CURRENT) WHERE @cod = iptb12.cod AND @ean13 = iptb12.ean13 AND @cd = iptb12.cd LET numero_msg = 39 CALL msg(numero_msg) END IF COMMAND "Retornar" "Retornar al Menu Anterior" EXIT MENU END MENU END FUNCTION