IMPORT OS GLOBALS "prprgb000.4gl" DEFINE d_tipos,mensaje,f_tipos,filepath,extension,xdestino,l_file,tmpdir_file STRING FUNCTION busca_dibujos(xnum_oc) DEFINE nombre_cliente,vendedor CHAR(60), documentos DYNAMIC ARRAY OF RECORD idx INT, tipo_file CHAR(20), bodega SMALLINT, num_doc INT, nombre_file VARCHAR(100), filedestino BYTE, envio_correo CHAR(10) END RECORD, p_res,i SMALLINT, xnum_oc,cuenta INT LET i = 1 LET kprtb12.num_oc = xnum_oc # VERIFICA QUE LA ORDEN TENGA DIBUJOS SELECT ISNULL(COUNT(*),0) INTO cuenta FROM prtb00029 a WHERE a.num_oc = kprtb12.num_oc AND a.tipo_file IN ('DI', 'CO') IF cuenta = 0 THEN CALL fgl_winmessage("info","ORDEN NO TIENE DIBUJO NI CONDUCE","INFO") RETURN END IF OPEN WINDOW w1 WITH FORM "prfmwd012" CALL documentos.clear() DECLARE busca_dibujo CURSOR FOR SELECT a.id,a.tipo_file,a.bodega,a.num_doc,a.nombre_file, a.documento,a.envio_notificacion FROM prtb00029 a WHERE a.num_oc = kprtb12.num_oc ORDER BY a.id LET idx = 1 LOCATE documentos[idx].filedestino IN MEMORY FOREACH busca_dibujo INTO documentos[idx].* LET idx = idx + 1 LOCATE documentos[idx].filedestino IN MEMORY END FOREACH DISPLAY ARRAY documentos TO sdibujo.* BEFORE DISPLAY SELECT a.cotizacion_no,b.nombre,a.sec_vend,ISNULL(c.nom1_emp,' ')+ISNULL(c.apell1_emp,' '), a.tipo_cliente,a.sec_cliente INTO kprtb12.cotizacion_no,nombre_cliente,kprtb12.sec_vend,vendedor, kprtb12.tipo_cliente,kprtb12.sec_cliente FROM prtb00012 a,vetb00004 b,adtb00003 c WHERE a.num_oc = kprtb12.num_oc AND a.tipo_cliente = b.tipo_cliente AND a.sec_cliente = b.sec_cliente AND a.sec_vend = c.num_emp DISPLAY BY NAME kprtb12.num_oc,kprtb12.cotizacion_no,nombre_cliente,vendedor ON ACTION abrir WHENEVER ERROR CONTINUE TRY LET tmpdir_file = "tmp\\",usuarios CLIPPED,documentos[arr_curr()].nombre_file CALL documentos[arr_curr()].filedestino.writeFile(tmpdir_file) CALL ui.Interface.frontCall("standard","getenv", ["TEMP"], [l_file] ) LET l_file = l_file CLIPPED,"\\",documentos[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 IF INT_FLAG THEN EXIT DISPLAY END IF EXIT DISPLAY END DISPLAY LET INT_FLAG = FALSE CLOSE WINDOW w1 END FUNCTION FUNCTION showDir(path) DEFINE path STRING DEFINE child STRING DEFINE h INTEGER, contenido DYNAMIC ARRAY OF STRING, exito BOOLEAN OPEN WINDOW w2 WITH FORM "prtest" IF NOT os.Path.exists(path) THEN CALL fgl_winmessage("NO",path,"info") RETURN END IF IF NOT os.Path.isdirectory(path) THEN DISPLAY " ", os.Path.basename(path) RETURN END IF LET contenido[1]="[",path,"]" LET idx = 1 CALL os.Path.dirsort("name", 1) LET h = os.Path.diropen(path) WHILE h > 0 LET child = os.Path.dirnext(h) IF child IS NULL THEN EXIT WHILE END IF IF child == "." OR child == ".." THEN CONTINUE WHILE END IF LET contenido[idx] = os.Path.join( path, child ) LET idx = idx + 1 END WHILE CALL os.Path.dirclose(h) DISPLAY ARRAY contenido TO scontenido.* ON ACTION borrar CALL os.Path.delete(contenido[arr_curr()]) RETURNING exito IF NOT exito THEN CALL fgl_winmessage("E","NO BORRE EL FILE","INFO") CONTINUE DISPLAY END IF AFTER DISPLAY IF INT_FLAG THEN EXIT PROGRAM END IF EXIT DISPLAY END DISPLAY CLOSE WINDOW w2 END FUNCTION