Files
MBS/PROYECTO/vedir/veprmt007.4gl
T

529 lines
19 KiB
Plaintext

{
------------------------------------------------------------------
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