Files
MBS/PROYECTO/ccdir/files_ordenes.4gl
T

96 lines
2.8 KiB
Plaintext

FUNCTION files_ordenes(xnum_oc,xusuario,xclave)
DEFINE xnum_oc INT,
files_ordenes DYNAMIC ARRAY OF RECORD
ruta_file VARCHAR(100),
descrip_file VARCHAR(60),
tipo_Doc VARCHAR(10),
num_doc INT,
nombre_file VARCHAR(100),
documento BYTE
END RECORD,
idx SMALLINT,p_res INT,
file_orden VARCHAR(100),
xusuario,xclave VARCHAR(50),
tmpdir_file,l_file STRING,
documentos BYTE
CONNECT to "smarmotech" USER xusuario USING xclave
OPEN WINDOW w1 WITH FORM "ccfmwd007"
DECLARE busca CURSOR FOR
SELECT a.url_file_destino,' ',a.tipo_file,a.num_doc,a.nombre_file,a.documento FROM prtb00029 a
WHERE a.num_oc = xnum_oc
LET idx = 1
LOCATE files_ordenes[idx].documento IN MEMORY
FOREACH busca INTO files_ordenes[idx].*
IF files_ordenes[idx].tipo_Doc = 'CO' THEN
LET files_ordenes[idx].descrip_file = 'CONDUCES'
END IF
IF files_ordenes[idx].tipo_Doc = 'OT' THEN
LET files_ordenes[idx].descrip_file = 'OTROS'
END IF
IF files_ordenes[idx].tipo_Doc = 'DI' THEN
LET files_ordenes[idx].descrip_file = 'DIBUJOS'
END IF
IF files_ordenes[idx].tipo_Doc IS NULL THEN
LET files_ordenes[idx].descrip_file = 'NO IDENTIFICADO'
END IF
IF files_ordenes[idx].tipo_Doc = 'DE' THEN
LET files_ordenes[idx].descrip_file = 'DEVOLUCIONES'
END IF
LET idx = idx + 1
LOCATE files_ordenes[idx].documento IN MEMORY
END FOREACH
IF idx = 1 THEN
CALL fgl_Winmessage("INFO","ORDEN SELECCIONADA NO TIENE DOCUMENTOS ASIGNADOS","INFO")
ELSE
DISPLAY ARRAY files_ordenes TO sfiles.*
ON ACTION abrir
LET idx = arr_curr()
{ TRY
LET file_orden=files_ordenes[idx].ruta_file CLIPPED
CALL ui.Interface.frontCall("standard","launchurl", [file_orden],[p_res])
CATCH
CALL fgl_winmessage("ERROR",err_get(STATUS),"INFO")
END TRY
}
TRY
LET tmpdir_file = "tmp\\",files_ordenes[arr_curr()].nombre_file
CALL files_ordenes[arr_curr()].documento.writeFile(tmpdir_file)
CALL ui.Interface.frontCall("standard","getenv", ["TEMP"], [l_file] )
LET l_file = l_file CLIPPED,"\\",files_ordenes[arr_curr()].nombre_file
CALL fgl_putfile(tmpdir_file,l_file)
CALL ui.Interface.frontCall("standard","shellexec", [l_file],[p_res])
CATCH
CALL fgl_winmessage("ERROR",err_get(STATUS),"INFO")
END TRY
AFTER DISPLAY
LET idx = arr_curr()
LET file_orden = files_ordenes[idx].ruta_file
EXIT DISPLAY
END DISPLAY
IF INT_FLAG THEN
CALL fgl_winmessage("INFO","OPERACION CANCELADA","INFO")
LET INT_FLAG = FALSE
LET file_orden = NULL
END IF
END IF
CLOSE WINDOW w1
RETURN
END FUNCTION