{ ------------------------------------------------------------------ PROGRAMA : VEPRMT007 OBJETIVO : Capturar, Modificar, Eliminar registros de la Tabla de Transportistas. PROGRAMADOR : Lic. Abner Montalvo Z. FECHA REALIZACION : Noviembre 30, 1992. ------------------------------------------------------------------ } GLOBALS "veprgb000.4gl" DEFINE todos DYNAMIC ARRAY OF RECORD cod_transp2 INT, sec_transp2 INT, nombre2 VARCHAR(100), cedula2 VARCHAR(20), imagen VARCHAR(100) END RECORD, isnew,cust_touched,noTieneFoto INT, cmdcomando,filepath,filedestino,url_destino STRING DEFINE myd ui.Dialog --module dialog variable to avoid passing DIALOG DEFINE rec RECORD path STRING, name STRING, wildcards STRING, caption STRING 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 veprmt007() END MAIN FUNCTION veprmt007() # WHENEVER ERROR CONTINUE CLEAR SCREEN OPTIONS FORM LINE 9, ERROR LINE 23, HELP FILE "vepray000.exe", HELP KEY CONTROL-W, MESSAGE LINE 24, COMMENT LINE 21 OPEN FORM vefmmt007 FROM "vefmmt007" DISPLAY FORM vefmmt007 CALL ayuda() DISPLAY "veprmt007" AT 4,3 DISPLAY "Transportistas" AT 6,33 CALL buscartodos() CALL vepcad007() END FUNCTION FUNCTION vepcad007() ## Captura los datos que va a contener el registro DIALOG ATTRIBUTE(UNBUFFERED) DISPLAY ARRAY todos TO stodos.* BEFORE ROW LET isnew = 0 CALL get_data(arr_curr()) IF transportista.url_foto IS NULL THEN CALL myd.setActionActive("cardnet",FALSE) ELSE CALL myd.setActionActive("cardnet",TRUE) END IF IF transportista.sec_transp IS NULL THEN CALL myd.setActionActive("borrar",FALSE) ELSE CALL myd.setActionActive("borrar",TRUE) END IF ON ACTION nuevo ATTRIBUTE(TEXT="Nuevo",IMAGE="new") LET isnew = 1 CALL nuevo_reg() ON ACTION borrar ATTRIBUTE(TEXT="Borrar",IMAGE="delete") UPDATE vetb00015 SET status_t = 'E',us_mod=usuarios,fech_mod = getdate() WHERE cod_transp = transportista.cod_transp AND sec_transp = transportista.sec_transp CALL msg(39) CALL buscartodos() CALL ui.Interface.refresh() CONTINUE DIALOG END DISPLAY INPUT BY NAME transportista.* BEFORE INPUT CALL tiporegistro() CALL set_title() CALL cust_setup(TRUE) IF transportista.url_foto IS NULL THEN CALL myd.setActionActive("cardnet",FALSE) CALL myd.setActionActive("eliminaimagen",FALSE) ELSE CALL myd.setActionActive("cardnet",TRUE) CALL myd.setActionActive("eliminaimagen",TRUE) END IF LET transportista.codigo = 'DO' CALL paises() ON ACTION eliminaimagen LET filedestino = FGL_GETENV("IMAGENES") LET cmdcomando = "del ",filedestino CLIPPED,"\\otras\\", transportista.cod_transp USING "&&","-", transportista.sec_transp USING "&&&&&",".jpg" RUN cmdcomando LET transportista.url_foto = NULL ON ACTION busca_foto LET rec.path = "/tmp" LET rec.name = "Image files" LET rec.wildcards = "*.jpg *.png" LET rec.caption = "Select files" CALL ui.interface.frontcall("standard","openfile",[rec.*],filepath) IF filepath IS NOT NULL THEN LET filedestino = FGL_GETENV("IMAGENES") LET url_destino = FGL_GETENV("URLIMAGENES") LET filedestino = filedestino CLIPPED,"\\otras\\", transportista.cod_transp USING "&&","-", transportista.sec_transp USING "&&&&&",".jpg" LET transportista.url_foto = url_destino CLIPPED,"\\otras\\", transportista.cod_transp USING "&&","-", transportista.sec_transp USING "&&&&&",".jpg" CALL fgl_getfile(filepath,filedestino) DISPLAY "ruta: ",transportista.url_foto DISPLAY BY NAME transportista.url_foto END IF ON KEY (CONTROL-W) CASE WHEN INFIELD (cod_zona) CALL consulta_zonas(transportista.codigo) IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) NEXT FIELD cod_zona END IF IF NOT int_flag THEN DISPLAY zona.cod_zona TO cod_zona DISPLAY descrip1 TO descrip NEXT FIELD cod_provincia END IF LET int_flag = FALSE WHEN INFIELD (cod_provincia) CALL consulta_provincias(transportista.cod_zona) IF int_flag THEN LET numero_msg = 2 CALL msg(numero_msg) NEXT FIELD cod_provincia END IF IF NOT int_flag THEN DISPLAY zonap.cod_provincia TO cod_provincia DISPLAY descrip1 TO nombre_provincia NEXT FIELD telefono END IF LET int_flag = FALSE END CASE ## Verifica que el codigo no exista en la tabla de transportista. Si existe, ## entonces despliega los datos del registro existente. AFTER FIELD cod_transp IF transportista.cod_transp is null then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_transp END IF IF isnew = 1 THEN SELECT ISNULL(MAX(a.sec_transp),0) INTO transportista.sec_transp FROM vetb00015 a WHERE a.cod_transp = transportista.cod_transp LET transportista.sec_transp = transportista.sec_transp + 1 END IF DISPLAY BY NAME transportista.sec_transp AFTER FIELD nombre IF transportista.nombre IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD nombre END IF AFTER FIELD cedula IF transportista.cedula IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cedula END IF AFTER FIELD calle IF transportista.calle IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD calle END IF AFTER FIELD casa_num IF transportista.casa_num IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD casa_num END IF AFTER FIELD cod_zona IF transportista.cod_zona is null then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_zona ELSE SELECT descrip, status_t INTO descrip1, status_reg FROM vetb00008 WHERE cod_zona = transportista.cod_zona IF status >= 0 THEN IF status != NOTFOUND THEN IF status_reg = "E" THEN LET numero_msg = 43 CALL msg(numero_msg) NEXT FIELD cod_zona END IF DISPLAY descrip1 TO descrip ELSE LET numero_msg = 42 CALL msg(numero_msg) NEXT FIELD cod_zona END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF END IF AFTER FIELD cod_provincia IF transportista.cod_provincia is null then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_provincia ELSE SELECT nombre_provincia, status_t INTO descrip1, status_reg FROM vetb00020 WHERE cod_provincia = transportista.cod_provincia IF status >= 0 THEN IF status != NOTFOUND THEN IF status_reg = "E" THEN LET numero_msg = 66 CALL msg(numero_msg) NEXT FIELD cod_provincia END IF DISPLAY descrip1 TO nombre_provincia ELSE LET numero_msg = 65 CALL msg(numero_msg) NEXT FIELD cod_zona END IF ELSE CALL integridad() IF bandera = 1 THEN LET bandera = 0 RETURN END IF END IF END IF ON ACTION guardar # Verifica si el transportista existe. Si existe, despliega los datos del mismo IF isnew = 1 THEN SELECT ISNULL(MAX(a.sec_transp),0) INTO transportista.sec_transp FROM vetb00015 a WHERE a.cod_transp = transportista.cod_transp LET transportista.sec_transp = transportista.sec_transp + 1 END IF DISPLAY BY NAME transportista.sec_transp IF transportista.cod_transp is null then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_transp END IF IF transportista.nombre IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD nombre END IF IF transportista.cedula IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cedula END IF IF transportista.calle IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD calle END IF IF transportista.casa_num IS NULL THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD casa_num END IF IF transportista.cod_zona is null then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_zona ELSE SELECT descrip, status_t INTO descrip1, status_reg FROM vetb00008 WHERE cod_zona = transportista.cod_zona IF status != NOTFOUND THEN IF status_reg = "E" THEN LET numero_msg = 43 CALL msg(numero_msg) NEXT FIELD cod_zona END IF DISPLAY descrip1 TO descrip ELSE LET numero_msg = 42 CALL msg(numero_msg) NEXT FIELD cod_zona END IF END IF DISPLAY BY NAME transportista.url_foto IF transportista.cod_provincia is null then LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_provincia ELSE SELECT nombre_provincia, status_t INTO descrip1, status_reg FROM vetb00020 WHERE cod_provincia = transportista.cod_provincia IF status != NOTFOUND THEN IF status_reg = "E" THEN LET numero_msg = 66 CALL msg(numero_msg) NEXT FIELD cod_provincia END IF DISPLAY descrip1 TO nombre_provincia ELSE LET numero_msg = 65 CALL msg(numero_msg) NEXT FIELD cod_zona END IF END IF # Valida que el codigo del transportista no sea cero. Si no es cero, adiciona el # registro en la tabla, de lo contrario, presenta mensaje de error y acepta # el codigo de nuevo. IF transportista.cod_transp is null OR transportista.cod_transp = 0 OR transportista.sec_transp is null OR transportista.sec_transp = 0 THEN LET numero_msg = 16 CALL msg(numero_msg) NEXT FIELD cod_transp ELSE IF isnew = 1 THEN INSERT INTO vetb00015 VALUES (transportista.cod_transp, transportista.sec_transp, transportista.nombre, transportista.cedula, transportista.serie, transportista.calle, transportista.casa_num, transportista.barrio, transportista.urbanizacion, transportista.cod_zona, transportista.cod_provincia, transportista.telefono, null, SUSER_SNAME(), GETDATE(), null, null,transportista.codigo,transportista.url_foto) # Verifica el Status que retorna luego de insertar el registro en la tabla. # Si el Status es diferente de cero quiere decir que hubo problemas durante # la creacion del registro, entonces despliega un mensaje . CALL myd.setActionActive("cardnet",TRUE) LET numero_msg = 1 CALL msg(numero_msg) NEXT FIELD cod_transp ELSE DISPLAY "Actualiza: ",transportista.url_foto UPDATE vetb00015 SET nombre = transportista.nombre ,cedula = transportista.cedula ,serie = transportista.serie ,calle = transportista.calle ,casa_num = transportista.casa_num ,barrio = transportista.barrio ,urbanizacion = transportista.urbanizacion ,cod_zona = transportista.cod_zona ,cod_provincia = transportista.cod_provincia ,telefono = transportista.telefono ,us_crea = transportista.us_crea ,fech_crea = transportista.fech_crea ,us_mod = usuarios ,fech_mod = getdate() ,codigo = transportista.codigo ,url_foto = transportista.url_foto WHERE vetb00015.cod_transp = transportista.cod_transp AND vetb00015.sec_transp = transportista.sec_transp CALL myd.setActionActive("cardnet",TRUE) LET numero_msg = 13 CALL msg(numero_msg) NEXT FIELD nombre END IF END IF END INPUT ON ACTION CANCEL EXIT PROGRAM ON ACTION cardnet CALL get_data(arr_curr()) CALL cardnet(transportista.cod_transp,transportista.sec_transp) ON ACTION dialogtouched CALL cust_setup(TRUE) BEFORE DIALOG LET myd=DIALOG CALL set_title() CALL cust_setup(FALSE) END DIALOG END FUNCTION FUNCTION buscarTodos() DECLARE buscaTodos CURSOR FOR SELECT a.cod_transp,a.sec_transp,a.nombre,a.cedula,a.url_foto FROM vetb00015 a WHERE a.status_t IS NULL ORDER BY a.cod_transp,a.sec_transp LET idx = 1 FOREACH buscaTodos INTO todos[idx].* LET idx = idx +1 END FOREACH END FUNCTION FUNCTION get_data(i) DEFINE i INT IF i = 0 THEN INITIALIZE transportista.* TO NULL CLEAR reg.* RETURN END IF # BUSCA TRANSPORTISTA SELECT a.* INTO transportista.* FROM vetb00015 a WHERE a.cod_transp = todos[i].cod_transp2 AND a.sec_transp = todos[i].sec_transp2 SELECT a.nombre_provincia INTO descrip1 FROM vetb00020 a WHERE a.cod_provincia = transportista.cod_provincia DISPLAY descrip1 TO nombre_provincia SELECT a.descrip INTO descrip1 FROM vetb00008 a WHERE a.cod_zona = transportista.cod_zona DISPLAY descrip1 TO descrip DISPLAY BY NAME transportista.* END FUNCTION FUNCTION cust_setup(touched) DEFINE touched INT LET cust_touched=touched CLEAR FORM CALL myd.setActionActive("dialogtouched", NOT touched) CALL myd.setActionActive("cardnet", touched) TRY --we might not be in the INPUT context CALL myd.setActionActive("guardar", touched) END TRY END FUNCTION FUNCTION nuevo_reg() LET isNew=1 CALL cust_setup(0) --set the dialog in virgin state and reload the defaults INITIALIZE transportista TO NULL CALL myd.setFieldTouched("reg.*",FALSE) --jump to1st field of input CALL myd.nextField("cod_transp") CALL myd.appendRow("stodos") CALL myd.setCurrentRow("stodos",todos.getLength()) CALL set_title() END FUNCTION FUNCTION set_title() DEFINE row INT LET row=myd.getCurrentRow("stodos") IF myd.getCurrentItem()="stodos" THEN CALL fgl_settitle(sfmt("Registro %1 of %2",row,todos.getLength())) ELSE IF isNew>0 THEN CALL fgl_settitle("Entrada nuevo Registro") ELSE CALL fgl_settitle(sfmt("Modificando registro %1 of %2",row,todos.getLength())) END IF END IF END FUNCTION