IMPORT util IMPORT os TYPE t_sync_cmd RECORD oper STRING, data STRING END RECORD DEFINE codn INT MAIN DEFINE archivo STRING CALL init_mobile_log("err_gm_maps.log") TRY DATABASE dbmbs CATCH CREATE DATABASE dbmbs END TRY DATABASE dbmbs # CALL FGL_WINMESSAGE("INFO",os.Path.homeDir(),"info") CALL menu_principal() END MAIN FUNCTION menu_principal() # call ui.Interface.loadStyles("menu") case frontend() when "GMA" call ui.Interface.loadActionDefaults("menu_android") # CALL fgl_winmessage(" ","GMA","info") when "GMI" call ui.Interface.loadActionDefaults("menu_ios") otherwise call ui.Interface.loadActionDefaults("menu") end CASE CALL execute() # CALL splash() END FUNCTION function execute() open window splash with form "menu" call splash() close window splash end function private function splash() define splash,opcion1 string define l_result,fecha_crea STRING, kusuario,kclave VARCHAR(50), fecha_date DATETIME YEAR TO MINUTE DEFINE id_num,idx INT, url STRING, estado BOOLEAN, tipo_inventario VARCHAR(100), chk_tramo,chk_productos,chk_seccion,chk_bodegas,chk_usuarios, chk_fechaConteo,chk_fila,chk_posicion SMALLINT, cuenta_existencia,cuenta_productos,cuenta_bodegas,cuenta_secciones, cuenta_tramos,cuenta_fechaConteo,cuenta_filas,cuenta_posiciones INT, arrayOfCalendars dynamic ARRAY OF STRING, tipo,pfecha CHAR(70) DEFINE arr_info DYNAMIC ARRAY OF RECORD xtipo,xfecha STRING END RECORD CALL conexion() RETURNING url call inicio(url) RETURNING kusuario,kclave IF kusuario = "demo" THEN CALL conexion_demo() RETURNING url END IF # call ui.interface.frontcall("webcomponent","call",["formonly.splash","setById","root",splash_html()],l_result) { input by name splash attributes(unbuffered, without defaults=true, cancel=false, accept=false) before input -- set to false before deployment call dialog.setActionActive("settings", TRUE) on ACTION settings menu "" attributes(style="dialog") ON ACTION inventario ATTRIBUTE(TEXT="Gestion Inventario") CALL CONTEO(kusuario) ON ACTION sincroniza ATTRIBUTE(TEXT="Download Data") OPEN WINDOW ws1 WITH FORM "sincroniza" INPUT BY NAME tipo_inventario,codn,chk_productos,chk_tramo,chk_seccion,chk_bodegas,chk_usuarios, chk_fechaConteo BEFORE INPUT IF LENGTH(url) > 1 THEN DISPLAY "SERVIDOR ACTIVO" TO url ELSE DISPLAY "SERVIDOR INACTIVO" TO url END IF SELECT COUNT(*) INTO cuenta_productos FROM productos SELECT COUNT(*) INTO cuenta_secciones FROM secciones SELECT COUNT(*) INTO cuenta_bodegas FROM bodegas SELECT COUNT(*) INTO cuenta_tramos FROM tramos SELECT COUNT(*) INTO cuenta_fechaConteo FROM intb00044 SELECT COUNT(*) INTO cuenta_existencia FROM existencia DISPLAY BY NAME cuenta_productos DISPLAY BY NAME cuenta_secciones DISPLAY BY NAME cuenta_bodegas DISPLAY BY NAME cuenta_tramos DISPLAY BY NAME cuenta_fechaConteo DISPLAY BY NAME cuenta_existencia AFTER INPUT IF int_flag THEN EXIT INPUT END IF # CALL valida_usuario(kusuario,kclave,"ABIERTA",url) RETURNING estado,id_num # IF chk_usuarios = 1 THEN # CALL usuarios_download(url,kusuario,kclave) # END IF IF chk_productos = 1 THEN IF tipo_inventario IS NOT NULL THEN IF tipo_inventario = 'PRODUCTOS TERMINADOS' THEN # IF codn IS NULL THEN # ERROR "DEBE COLOCAR LA CLASE A SINCRONIZAR" # NEXT FIELD codn # END IF END IF CALL productos_download(url,tipo_inventario,kusuario,kclave,codn) ELSE CALL fgl_winmessage("ERROR","FAVOR DE ELEJIR INVENTARIO","INFO") NEXT FIELD tipo_inventario END IF END IF IF chk_bodegas = 1 THEN CALL bodegas_download(url,kusuario,kclave) END IF IF chk_seccion = 1 THEN CALL seccion_download(url,kusuario,kclave) END if IF chk_tramo = 1 THEN CALL tramo_download(url,kusuario,kclave) END IF IF chk_fechaConteo = 1 THEN CALL fechaConteo_download(url,kusuario,kclave) END IF # CALL valida_usuario(kusuario,kclave,"CERRAR",url) RETURNING estado,id_num END INPUT CLOSE WINDOW ws1 # ON ACTION visualiza ATTRIBUTE(TEXT="view") # SELECT a.* INTO tipo,Pfecha FROM intb00044 a # OPEN WINDOW w10 WITH FORM "form" # DISPLAY tipo TO record1[1].edit1 # DISPLAY pfecha TO record1[1].edit2 # CLOSE WINDOW w10 # ON ACTION actualiza ATTRIBUTE(TEXT="CONSULTA PRODUCTOS") LET fecha_date = CURRENT LET fecha_crea = fecha_date CALL fgl_winmessage("info",fecha_crea,"info") UPDATE iptb00012 SET fech_crea = fecha_crea} # OPEN WINDOW w20 WITH FORM "form" # DECLARE busca_fecha CURSOR FOR # SELECT a.descrip_esp,a.codid FROM productos a WHERE # a.tipo_inventario = 'REPUESTOS' # LET idx = 1 # FOREACH busca_fecha INTO arr_info[idx].* # LET idx = idx +1 # END FOREACH # DISPLAY ARRAY arr_info TO record1.* # CLOSE WINDOW w20 # ON ACTION reporte ATTRIBUTE(TEXT="Reporte") # CALL transacciones() # ON ACTION crea_index ATTRIBUTE(TEXT="Crear Index") # CALL db_add_indexes() # ON ACTION etiquetas ATTRIBUTE(TEXT="Impresion Etiquetas") # CALL imp_etiquetas(url,kusuario,kclave) #ON ACTION descargar ATTRIBUTE(TEXT="Descargar Data") # CALL valida_usuario(kusuario,kclave,"ABIERTA",url) RETURNING estado,id_num # IF estado THEN # CALL descargar(url,kusuario,kclave) # CALL valida_usuario(kusuario,kclave,"CERRAR",url) RETURNING estado,id_num # ELSE # CALL fgl_winmessage("INFO","CONEXION INEXISNTETE, CONTACTE AL ADMINISTRADOR","INFO") # CONTINUE MENU # END IF #ON ACTION limpia_conteo ATTRIBUTES(TEXT="Borrar Datos") # CALL borra_info() # on action CANCEL ATTRIBUTE(TEXT="Salir Aplicacion") # exit program #end menu # on action help # call browser.browser("Help","https://demo.4js.com/gas/help.htm") -- this could use a PDF but the PDF is slow to load when it contains images -- could also consider embedding PDF inside application #call browser.browser("help","https://demo.4js.com/gas/help.pdf") # on action about # call show_message(about_text(), true) #end input MENU ON ACTION CANCEL EXIT PROGRAM ON ACTION inventario CALL CONTEO(kusuario) ON ACTION descargar CALL descargar(url,kusuario,kclave) ON ACTION sincroniza OPEN WINDOW ws1 WITH FORM "sincroniza" INPUT BY NAME tipo_inventario,codn,chk_productos,chk_tramo,chk_fila,chk_posicion, chk_seccion,chk_bodegas,chk_usuarios, chk_fechaConteo BEFORE INPUT IF LENGTH(url) > 1 THEN DISPLAY "SERVIDOR ACTIVO" TO url ELSE DISPLAY "SERVIDOR INACTIVO" TO url END IF SELECT COUNT(*) INTO cuenta_productos FROM productos SELECT COUNT(*) INTO cuenta_secciones FROM secciones SELECT COUNT(*) INTO cuenta_bodegas FROM bodegas SELECT COUNT(*) INTO cuenta_tramos FROM tramos SELECT COUNT(*) INTO cuenta_filas FROM filas SELECT COUNT(*) INTO cuenta_posiciones FROM posiciones SELECT COUNT(*) INTO cuenta_fechaConteo FROM intb00044 SELECT COUNT(*) INTO cuenta_existencia FROM existencia DISPLAY BY NAME cuenta_productos DISPLAY BY NAME cuenta_secciones DISPLAY BY NAME cuenta_bodegas DISPLAY BY NAME cuenta_tramos,cuenta_posiciones,cuenta_filas DISPLAY BY NAME cuenta_fechaConteo DISPLAY BY NAME cuenta_existencia AFTER INPUT IF int_flag THEN EXIT INPUT END IF # CALL valida_usuario(kusuario,kclave,"ABIERTA",url) RETURNING estado,id_num # IF chk_usuarios = 1 THEN # CALL usuarios_download(url,kusuario,kclave) # END IF IF chk_productos = 1 THEN IF tipo_inventario IS NOT NULL THEN IF tipo_inventario = 'PRODUCTOS TERMINADOS' THEN # IF codn IS NULL THEN # ERROR "DEBE COLOCAR LA CLASE A SINCRONIZAR" # NEXT FIELD codn # END IF END IF CALL productos_download(url,tipo_inventario,kusuario,kclave,codn) ELSE CALL fgl_winmessage("ERROR","FAVOR DE ELEJIR INVENTARIO","INFO") NEXT FIELD tipo_inventario END IF END IF IF chk_bodegas = 1 THEN CALL bodegas_download(url,kusuario,kclave) END IF IF chk_seccion = 1 THEN CALL seccion_download(url,kusuario,kclave) END if IF chk_tramo = 1 THEN CALL tramo_download(url,kusuario,kclave) END IF IF chk_fila = 1 THEN CALL filas_download(url,kusuario,kclave) END IF IF chk_posicion = 1 THEN CALL posicion_download(url,kusuario,kclave) END IF IF chk_fechaConteo = 1 THEN CALL fechaConteo_download(url,kusuario,kclave) END IF # CALL valida_usuario(kusuario,kclave,"CERRAR",url) RETURNING estado,id_num END INPUT CLOSE WINDOW ws1 on action about call show_message(about_text(), true) END MENU if int_flag then let int_flag = 0 end if end function function frontend() define l_frontend string call ui.Interface.frontCall("standard","feinfo","fename",l_frontend) return l_frontend end FUNCTION