529 lines
19 KiB
Plaintext
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
|