Files
MBS/MOVIL401/MBSinventario/appmain.4gl
T

298 lines
13 KiB
Plaintext

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