B4A=true Group=Default Group ModulesStructureVersion=1 Type=Class Version=9.85 @EndOfDesignText@ #Region Shared Files '#CustomBuildAction: folders ready, %WINDIR%\System32\Robocopy.exe,"..\..\Shared Files" "..\Files" 'Ctrl + click to sync files: ide://run?file=%WINDIR%\System32\Robocopy.exe&args=..\..\Shared+Files&args=..\Files&FilesSync=True '########################################################################################################### '###################### PULL ############################################################# 'Ctrl + click ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=git&Args=pull '########################################################################################################### '###################### PUSH ############################################################# 'Ctrl + click ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=github&Args=..\..\ '########################################################################################################### '###################### PUSH TORTOISE GIT ######################################################### 'Ctrl + click ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=TortoiseGitProc&Args=/command:commit&Args=/path:"./../../"&Args=/closeonend:2 '########################################################################################################### #End Region 'Ctrl + click to export as zip: ide://run?File=%B4X%\Zipper.jar&Args=Project.zip Sub Class_Globals Private Root As B4XView ' Dim rp As RuntimePermissions Private xui As XUI Public login As B4XMainPage Dim ime As IME Public principal As C_Principal Public clientes As C_Clientes Public cliente As C_Cliente Public updateAvailable As C_UpdateAvailable Public nuevoCliente As C_NuevoCliente Public mapa As C_Mapas Dim reqManager As DBRequestManager Dim v As String = Application.VersionName Dim ruta As String Dim tgl As Toggle Dim lat_gps, lon_gps As String Dim usuario As String Dim batt As Int Dim skmt As SQL Dim montoActual, clientesTotal, clientesVenta, clientesVisitados,almacen, rutaPreventa As String Dim server, fechaRuta As String ' Dim Logger As Boolean ' Dim mac_impresora As String ' Dim Phn As PhoneId Dim user As EditText Dim pass As EditText Dim c As Cursor Dim existe As String Dim paso1 As String Private IMEN As Label Dim IMEI As String = "" Dim alterno As String Private b_menu As Button ' Dim PopupMenu As RSPopupMenu Dim cmd As DBCommand Private PDF As Button Private bpv1 As BatteryProgressView Dim batterystatus(11) As Int Private bu As BatteryUtilities Private b_apk As Button Private i_engrane As ImageView Private p_Main As Panel Private p_appUpdate As Panel Private b_guardar As Button Private l_version As Label Private ImageView1 As ImageView Private Label2 As Label Private Entrar As Button Dim tipo_venta As String Dim bTerminarClicked As Boolean = False Private lv_server As ListView Private l_server As Label Private et_server As EditText Dim q As C_Cuestionario ' Private bAceptarPregunta As Button ' Dim encuestaIniciada As Boolean = False Private b_mandaUsrs As Button Private p_importarBDWA As Panel Private cb_importarBDWA As CheckBox Dim subirClientes As Int = 0 Private p_avanceSubirUsrs As Panel Private l_avanceSubirUsrs As Label End Sub Public Sub Initialize ' B4XPages.GetManager.LogEvents = True End Sub 'This event will be called once, before the page becomes visible. Private Sub B4XPage_Created (Root1 As B4XView) B4XPages.GetManager.LogEvents = True Root = Root1 Root.LoadLayout("login") B4XPages.SetTitle(Me, "Mariana Censos") login.Initialize B4XPages.AddPage("Login", login) principal.Initialize B4XPages.AddPage("Principal", principal) clientes.Initialize B4XPages.AddPage("Clientes", clientes) cliente.Initialize B4XPages.AddPageAndCreate("Cliente", cliente) ' productos.InitializeQuestionario ' B4XPages.AddPage("Productos", productos) updateAvailable.Initialize B4XPages.AddPage("updateAvailable", updateAvailable) ' mapas.Initialize ' B4XPages.AddPage("Mapas", mapas) nuevoCliente.Initialize B4XPages.AddPageAndCreate("NuevoCliente", nuevoCliente) mapa.Initialize B4XPages.AddPage("Mapa", mapa) ' ticketsDia.Initialize ' B4XPages.AddPage("TicketsDia", ticketsDia) ' noVenta.Initialize ' B4XPages.AddPage("NoVenta", noVenta) ' nota.Initialize ' B4XPages.AddPage("Nota", nota) ' pedidos.Initialize ' B4XPages.AddPage("Pedidos", pedidos) ' promos.Initialize ' B4XPages.AddPage("Promos", promos) ' historico.Initialize ' B4XPages.AddPage("Historico", historico) ruta = Starter.ruta p_Main.Height = Root.Height ' Subs.borraArribaDe100Errores ' Para Websockets ' Subs.borraArribaDe600RenglonesBitacora ' Para Websockets If File.Exists(ruta, "kmt.db") = False Then File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db") LogColor("copiamos kmt.db de "&File.DirAssets & " a " & ruta,Colors.Green) End If ' Log(ruta) skmt.Initialize(ruta,"kmt.db", True) skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_CUOTAS (HC_META6 TEXT, HC_META5 TEXT, HC_META4 TEXT, HC_META3 TEXT, HC_META2 TEXT, HC_META1 TEXT, HC_RUTA TEXT, HC_CUOTA1 TEXT, HC_CUOTA2 TEXT, HC_CUOTA3 TEXT, HC_CUOTA4 TEXT, HC_CUOTA5 TEXT, HC_CUOTA6 TEXT)") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_GPS (HGDATE TEXT, HGLAT TEXT, HGLON TEXT)") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_STAY_STORE (HSS_CODIGO TEXT, HSS_IN TEXT, HSS_OUT TEXT, HSS_TOT TEXT)") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_STAY_OUT (HSO_INI TEXT, HSO_FIN TEXT)") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS INVENT_X_ENVIAR (ALMACEN TEXT, PROID TEXT, CANTIDAD TEXT)") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_RESUM_APK (HIST_RA_OBJMES TEXT, HIST_RA_VENTA TEXT, HIST_RA_TENDENCIA TEXT, HIST_RA_ALCANCE TEXT, HISR_RA_DRAOBJ TEXT, HIST_RA_DRAVTA TEXT, HIST_RA_DSOBJ TEXT, HIST_RA_DSVTA TEXT, HIST_RA_VPOOBJ TEXT, HIST_RA_VPOVTA TEXT, HIST_RA_COBCCC TEXT, HIST_RA_CTES TEXT, HIST_RA_ECO TEXT, HIST_RA_VISITPLAN TEXT, HIST_RA_VISIREAL TEXT, HIST_RA_COBVISIT TEXT, HIST_RA_FRECCOMPOBJ TEXT, HIST_RA_FRECCOMREAL TEXT, HIST_RA_VENTAMES1 TEXT, HIST_RA_VENTAMES2 TEXT, HIST_RA_VENTAMES3 TEXT, HIST_RA_VENTAMES4 TEXT, HIST_RA_RECHAZO TEXT, HIST_RA_RECHAZOPORCEN TEXT, HIST_RA_SEMANA1 TEXT, HIST_RA_SEMANA1_DIAS TEXT, HIST_RA_SEMANA1_DRA TEXT, HIST_RA_SEMANA2 TEXT, HIST_RA_SEMANA2_DIAS TEXT, HIST_RA_SEMANA2_DRA TEXT, HIST_RA_SEMANA3 TEXT, HIST_RA_SEMANA3_DIAS TEXT, HIST_RA_SEMANA4 TEXT, HIST_RA_SEMANA3_DRA TEXT, HIST_RA_SEMANA4_DIAS TEXT, HIST_RA_SEMANA4_DRA TEXT, HIST_RA_SEMANA5 TEXT, HIST_RA_SEMANA5_DIAS TEXT, HIST_RA_SEMANA5_DRA TEXT, HIST_RA_SEMANA1_LPT TEXT, HIST_RA_SEMANA2_LPT TEXT, HIST_RA_SEMANA3_LPT TEXT, HIST_RA_SEMANA4_LPT TEXT, HIST_RA_SEMANA5_LPT TEXT, HIST_RA_RUTA TEXT, HIST_RA_IDALMACEN TEXT)") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_COMISIONES_MOVIL (HCM_IDALMACEN TEXT, HCM_RUTA TEXT, HCM_TOTAL_V TEXT, HCM_TOTAL_VIVE TEXT, HCM_TOTAL_GUNA TEXT, HCM_TOTAL_BEB TEXT)") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_GEOCERCA (HGCLIENTE TEXT, HGDATE TEXT, HGLAT TEXT, HGLON TEXT)") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_FACE (HFCLIENTE TEXT, HFALIAS TEXT, HFRUTA TEXT, HFALMACEN TEXT)") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS RUTA_GPS(FECHA INTEGER, LAT TEXT, LON TEXT)") skmt.ExecNonQuery("CREATE VIEW IF NOT EXISTS CATALOGO AS Select CAT_GP_CLASIF, CAT_GP_ID FROM CAT_GUNAPROD UNION Select CAT_GP_CLASIF, CAT_GP_ID FROM CAT_GUNAPROD GROUP BY CAT_GP_CLASIF, CAT_GP_ID") skmt.ExecNonQuery("CREATE VIEW IF NOT EXISTS total_marcas AS Select cat_gp_clasif, sum(pe_costo_tot) As total from CATALOGO, pedido where pe_proid = cat_gp_id And pe_cliente <> 0 group by cat_gp_clasif") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_MARCAS_CUOTAS (HMC_MARCA TEXT, HMC_TOTAL TEXT)") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_CODIGO_BARRAS(CODIGOKMTS TEXT, CODIGOB TEXT, LAT TEXT, LON TEXT)") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS ABONOS (a_usuario TEXT, a_ruta TEXT, a_cliente TEXT, a_abono TEXT, a_fecha TEXT, a_enviado TEXT)") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_GIROS (id TEXT, descripcion TEXT)") ' skmt.ExecNonQuery("drop table kmt_info") skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS kmt_info (CAT_CL_FOTO BLOB, CAT_CL_NUM_SERIEFISICO TEXT, CAT_CL_MTOCOMPRA TEXT, CAT_CL_CEDIS TEXT, CAT_CL_LAT TEXT, CAT_CL_LONG TEXT, CAT_CL_FBAJA TEXT, CAT_CL_FALTA TEXT, CAT_CL_CP TEXT, CAT_CL_EDO TEXT, CAT_CL_MUNI TEXT, CAT_CL_COLONIA TEXT, CAT_CL_CALLE2 TEXT, CAT_CL_CALLE1 TEXT, CAT_CL_NOINT TEXT, CAT_CL_NOEXT TEXT, CAT_CL_CALLE TEXT, CAT_CL_EMAIL TEXT, CAT_CL_TELEFONO TEXT, CAT_CL_ATIENTE2 TEXT, CAT_CL_ATIENDE1 TEXT, CAT_CL_NOMBRE TEXT, CAT_CL_GIRO TEXT, CAT_CL_DIAS_VISITA TEXT, CAT_CL_TIPO_RUTA TEXT, CAT_CL_RUTA TEXT, CAT_CL_CODIGO TEXT, gestion NUMERIC, CAT_CL_DIASEMANA TEXT, CAT_CL_SECUENCIA INT)") ' skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CUESTIONARIO (Q_IDCLIENTE TEXT, Q_IDPREGUNTA TEXT, Q_PREGUNTA TEXT, Q_IDRESPUESTA TEXT, Q_RESPUESTA TEXT, Q_FECHA TEXT)") Subs.agregaColumna("kmt_info", "CAT_CL_CRUCE1", "TEXT") Subs.agregaColumna("kmt_info", "CAT_CL_ESTATUS", "TEXT") Subs.agregaColumna("kmt_info", "CAT_CL_ENVIO_PENDIENTE", "TEXT") Subs.agregaColumna("kmt_info", "CAT_CL_FECHA_CAPTURA", "TEXT") Subs.agregaColumna("HIST_FOTO_CLIENTE", "ENVIO_PENDIENTE", "TEXT") Subs.agregaColumna("kmt_info", "NUEVO", "TEXT") Subs.agregaColumna("kmt_info", "LAT_CENSADOR", "TEXT") Subs.agregaColumna("kmt_info", "LON_CENSADOR", "TEXT") Subs.agregaColumna("kmt_info", "ESTATUS_ORIGINAL", "TEXT") Subs.agregaColumna("kmt_info", "CAMPOS_MODIFICADOS", "TEXT") Subs.agregaColumna("kmt_info", "HV_MOTIVO", "TEXT") Try 'Intentamos usar "pragma_table_info" para revisar si existe la columna "CAT_CL_DIASEMANA" en la tabla c=skmt.ExecQuery("SELECT COUNT(*) AS fCol FROM pragma_table_info('kmt_info') WHERE name='CAT_CL_DIASEMANA'") c.Position = 0 If c.GetString("fCol") = 0 Then 'Si no esta la columna FECHA la agregamos skmt.ExecNonQuery("ALTER TABLE kmt_info ADD COLUMN CAT_CL_DIASEMANA TEXT") End If Catch 'Si no funciona "pragma_table_info" lo hacemos con try/catch Try skmt.ExecNonQuery("ALTER TABLE kmt_info ADD COLUMN CAT_CL_DIASEMANA TEXT") Catch Log(LastException) End Try End Try Try 'Intentamos usar "pragma_table_info" para revisar si existe la columna "CAT_CL_SECUENCIA" en la tabla c=skmt.ExecQuery("SELECT COUNT(*) AS fCol FROM pragma_table_info('kmt_info') WHERE name='CAT_CL_SECUENCIA'") c.Position = 0 If c.GetString("fCol") = 0 Then 'Si no esta la columna FECHA la agregamos skmt.ExecNonQuery("ALTER TABLE kmt_info ADD COLUMN CAT_CL_SECUENCIA INT") End If Catch 'Si no funciona "pragma_table_info" lo hacemos con try/catch Try skmt.ExecNonQuery("ALTER TABLE kmt_info ADD COLUMN CAT_CL_SECUENCIA INT") Catch Log(LastException) End Try End Try 'Revisamos si se disparo el intent de cargar la base de datos desde WhatApp. If Subs.traeUsarIntentBDWA Then Subs.importaBDDesdeWhatsApp c=skmt.ExecQuery("select COUNT(*) AS CUANTOS from HIST_STAY_OUT ") C.Position = 0 If c.GetString("CUANTOS") = 0 Then ' skmt.ExecNonQuery("INSERT INTO HIST_STAY_OUT(HSO_INI, HSO_FIN) VALUES (0,0)") End If C.Close ' server = "http://keymon.com.mx:1782" 'server = "http://201.99.139.28:1783" ' reqManager.Initialize(Me, server) l_version.Text = "Ver. " & Application.VersionName 'este codigo es para lo del menu ' PopupMenu.Initialize("PopupMenu", b_menu) ' PopupMenu.AddMenuItem(0, 0, "View") ' PopupMenu.AddMenuItem(1, 1, "Edit") ' PopupMenu.AddMenuItem(2, 2, "Details") ' PopupMenu.AddMenuItem(3, 3, "Remove") ' menu fin montoActual = 0 clientesTotal = 0 clientesVenta = 0 clientesVisitados = 0 almacen = 0 rutaPreventa = 0 p_appUpdate.Visible = False Log(Starter.server) reqManager.Initialize(Me, Starter.server) ' q.Initialize(Me, "q", Root, skmt) End Sub Sub B4XPage_Appear 'Revisamos si se disparo el intent de cargar la base de datos desde WhatApp. If Subs.traeUsarIntentBDWA Then Log(111) Subs.importaBDDesdeWhatsApp End If LogColor("Revisa permisos Location", Colors.Green) Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_ACCESS_FINE_LOCATION) Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean) If Result Then Log("Con permisos de ubicacion") StartService(Tracker) ' Log("Start Tracker") Else Log("SIN permisos de ubicacion") End If Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_CAMERA) Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean) If Result Then ' camEx2.Initialize(p_cam, frontCamera, Me, "Camera1") ' frontCamera = camEx2.Front ' If logger Then Log("inicializamos Camara") Else ToastMessageShow("Sin permisos de camara!!!", True) End If p_Main.Width = Root.Width Dim ph As Phone 'Get Id Device Dim DeviceID As String = ph.GetSettings("android_id").ToUpperCase LogColor($"////////////////// DeviceID: ${DeviceID} ////////////////// "$, Colors.Blue) server = Starter.server Log(Starter.server) reqManager.Initialize(Me, Starter.server) tgl.Initialize() If Not(Starter.gps.GPSEnabled) Then ToastMessageShow("Es necesario tener el GPS encendido", True) Sleep(500) StartActivity(Starter.gps.LocationSettingsIntent) End If c=skmt.ExecQuery2("select count(*) as CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("FECHA")) c.Position = 0 If c.GetString("CUANTOS") = 0 Then LogColor($"No hay fecha: ${c.GetString("CUANTOS")}"$, Colors.Red) cmd.Initialize cmd.Name = "select_fecha" reqManager.ExecuteQuery(cmd , 0, "fecha") Msgbox("AJUSTAR FECHA","AVISO") 'Ignore B4XPage_Appear Else ' LogColor($"Si hay fecha: ${c.GetString("CUANTOS")}"$, Colors.Green) c=skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("FECHA")) c.Position =0 Dim sDate As String DateTime.DateFormat = "yyyyMMdd" sDate=DateTime.Date(DateTime.Now) ' If sDate > "20220701" Then ' Msgbox("INSTALAR NUEVO APK" ,"AVISO") 'Ignore ' B4XPage_Appear ' End If If c.GetString("CAT_VA_VALOR") > sDate Then Msgbox("AJUSTAR LA FECHA YA QUE ES MENOR AL SISTEMA" ,"AVISO") 'Ignore B4XPage_Appear End If End If bu.Initialize batterystatus = bu.BatteryInformation 'Obtenemos el usuario registrado ' CallSubDelayed(FirebaseMessaging, "SubscribeToTopics") dameUsuario ' If Not(q.encuestaIniciada) Then q.agregaPregunta("1", "¿Se puede acceder al negocio o está enrejado?", Array As String("No, está enrejado o no se tiene acceso", "Si se pude acceder")) End Sub 'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. Sub Entrar_Click Dim r As Reflector Dim Api As Int Dim PP As Phone user.Text = user.Text.trim pass.Text = pass.Text.trim Api = r.GetStaticField("android.os.Build$VERSION", "SDK_INT") If Api < 9 Then 'Old device If File.Exists(File.DirInternal, "__id") Then IMEI = File.ReadString(File.DirInternal, "__id") Log(1&"-"&IMEI) Else Dim id As Int id = Rnd(0x10000000, 0x7FFFFFFF) File.WriteString(File.DirInternal, "__id", id) IMEI = id Log(2&"-"&IMEI) End If Else 'New device IMEI = r.GetStaticField("android.os.Build", "SERIAL") ' Log(3&"-"&IMEI) End If If IMEI.ToLowerCase = "unknown" Then IMEI = PP.GetSettings("android_id") End If ' Log("IMEI = " & IMEI) If user.Text = "ALTERNO" Then c=skmt.ExecQuery2("select CAT_CO_CONFIGURACION, CAT_CO_RESULTADO from CAT_CODIGOS where CAT_CO_PONDERACION =1 AND CAT_CO_ACCION = ?", Array As String("SERVER")) c.Position =0 server = c.GetString("CAT_CO_CONFIGURACION") alterno = c.GetString("CAT_CO_RESULTADO") c.Close If alterno = 1 Then skmt.ExecNonQuery2("UPDATE CAT_CODIGOS SET CAT_CO_PONDERACION = 1 WHERE CAT_CO_ACCION = ? AND CAT_CO_RESULTADO = 2", Array As String ("SERVER")) skmt.ExecNonQuery2("UPDATE CAT_CODIGOS SET CAT_CO_PONDERACION = 0 WHERE CAT_CO_ACCION = ? AND CAT_CO_RESULTADO = 1", Array As String ("SERVER")) Else if alterno = 2 Then skmt.ExecNonQuery2("UPDATE CAT_CODIGOS SET CAT_CO_PONDERACION = 1 WHERE CAT_CO_ACCION = ? AND CAT_CO_RESULTADO = 1", Array As String ("SERVER")) skmt.ExecNonQuery2("UPDATE CAT_CODIGOS SET CAT_CO_PONDERACION = 0 WHERE CAT_CO_ACCION = ? AND CAT_CO_RESULTADO = 2", Array As String ("SERVER")) End If c=skmt.ExecQuery2("select CAT_CO_CONFIGURACION, CAT_CO_RESULTADO from CAT_CODIGOS where CAT_CO_PONDERACION =1 AND CAT_CO_ACCION = ?", Array As String("SERVER")) c.Position =0 server = c.GetString("CAT_CO_CONFIGURACION") user.Text = server c.Close ' reqManager.Initialize(Me, server) else if user.Text.Trim = "KMTS1" Then skmt.ExecNonQuery("delete from usuarioa") skmt.ExecNonQuery2("INSERT INTO USUARIOA VALUES (?,?)", Array As Object(user.Text.trim, pass.Text)) skmt.ExecNonQuery("delete from cat_almacen") skmt.ExecNonQuery2("INSERT INTO CAT_ALMACEN(ID_ALMACEN) VALUES (?)", Array As Object (pass.Text)) skmt.ExecNonQuery("delete from VERSION") skmt.ExecNonQuery2("INSERT INTO VERSION(NOVERSION) VALUES (?)", Array As Object ("2.1")) B4XPages.ShowPage("Clientes") else if user.Text = "BERNA1" Then skmt.ExecNonQuery("delete from usuarioa") skmt.ExecNonQuery2("INSERT INTO USUARIOA VALUES (?,?)", Array As Object(user.Text, "1")) skmt.ExecNonQuery("delete from cat_almacen") skmt.ExecNonQuery2("INSERT INTO CAT_ALMACEN(ID_ALMACEN) VALUES (?)", Array As Object ("1")) skmt.ExecNonQuery("delete from VERSION") skmt.ExecNonQuery2("INSERT INTO VERSION(NOVERSION) VALUES (?)", Array As Object ("2.1")) B4XPages.ShowPage("Clientes") else if user.Text = "IMEI" Then user.Text = IMEI End If c=skmt.ExecQuery2("select count(*) as EXISTE1 from usuarioa where usuario = ?", Array As String(user.Text)) c.Position = 0 existe = c.GetString("EXISTE1") Log($"|${existe}|${pass.Text}|"$) If existe = 0 Or pass.Text <> "" Then 'Si ya hay usuario registrado O ingresaron una nueva ontraseña, entonces buscamos info. Dim cmd As DBCommand cmd.Initialize cmd.Name = "select_usuario_MARDS_10" cmd.Parameters = Array As Object(user.Text.Trim, pass.Text.Trim) reqManager.ExecuteQuery(cmd , 0, "usuario_10") Dim cmd As DBCommand cmd.Initialize cmd.Name = "select_version_MARDS" reqManager.ExecuteQuery(cmd , 0, "version") Else usuario = user.Text B4XPages.ShowPage("Principal") End If End Sub Sub JobDone(Job As HttpJob) Log("Main.JobDone: " & Job.Success) If Job.Success = False Then LogColor("Error: " & Job.tag & " : " & Job.ErrorMessage, Colors.red) ToastMessageShow("Error: " & Job.ErrorMessage, True) ' LogColor("Error: " & Job.ErrorMessage, Colors.red) Else LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211027 If Job.JobName = "DBRequest" Then Dim result As DBResult = reqManager.HandleJob(Job) If result.Tag = "version" Then 'query tag For Each records() As Object In result.Rows skmt.ExecNonQuery("delete from VERSION") Dim CAT_VE_VERSION As String = records(result.Columns.Get("CAT_VE_VERSION")) skmt.ExecNonQuery2("INSERT INTO VERSION(NOVERSION) VALUES (?)", Array As Object (CAT_VE_VERSION)) Next End If If result.Tag = "select_fechat" Then 'query tag For Each records() As Object In result.Rows For Each k As String In result.Columns.Keys Log("select_fechat: " & k & ": " & records(result.Columns.Get(k))) Next Next End If End If If Job.JobName = "DBRequest" Then Dim result As DBResult = reqManager.HandleJob(Job) If result.Tag = "agencia" Then 'query tag For Each records() As Object In result.Rows Dim ID_ALMACEN As String = records(result.Columns.Get("ID_ALMACEN")) Next End If End If If Job.JobName = "DBRequest" Then Dim result As DBResult = reqManager.HandleJob(Job) If result.Tag = "fecha" Then 'query tag For Each records() As Object In result.Rows Dim FECHA_HOY As String = records(result.Columns.Get("FECHA")) skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("FECHA")) skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("FECHA",FECHA_HOY)) Next End If End If If Job.JobName = "DBRequest" Then Dim result As DBResult = reqManager.HandleJob(Job) If result.Tag = "usuario" Then 'query tag For Each records() As Object In result.Rows Dim name As String = records(result.Columns.Get("USUARIO")) Dim ID_ALMACEN As String = records(result.Columns.Get("CAT_LO_AGENCIA")) Dim IMEI_BASE As String = records(result.Columns.Get("CAT_LO_IDTELEFONO")) Log(records(result.Columns.Get("CAT_LO_IDTELEFONO")) ) Next paso1 = 1 ToastMessageShow(name, False) Log("////////////////////////// "&name) End If End If If Job.JobName = "DBRequest" Then Dim result As DBResult = reqManager.HandleJob(Job) If result.Tag = "usuario_10" Then 'query tag For Each records() As Object In result.Rows Dim name As String = records(result.Columns.Get("USUARIO")) Dim ID_ALMACEN As String = records(result.Columns.Get("CAT_LO_AGENCIA")) Dim IMEI_BASE As String = records(result.Columns.Get("CAT_LO_IDTELEFONO")) Next Log("|"&name&"|") paso1 = 1 IMEI_BASE = "" IMEI = "" End If End If If Job.JobName = "DBRequest" Then Dim result As DBResult = reqManager.HandleJob(Job) If result.Tag.As(String).Contains("guardaCliente_") Then 'query tag subirClientes = subirClientes - 1 l_avanceSubirUsrs.Text = $"Subiendo usuarios ${subirClientes}"$ Log($"Subiendo usuarios ${subirClientes}"$) If subirClientes = 0 Then ToastMessageShow("Usuarios mandados a web", False) p_avanceSubirUsrs.Visible = False End If End If End If Job.Release End If ' Log($"Paso1 = ${paso1} - Name: ${name} - IMEI: ${IMEI} - IMEI_BASE: ${IMEI_BASE}"$) If paso1 = 1 Then If IMEI = "" Then If user.Text = "KMTS1" Then name = "OKActivo" If name = "OKActivo" Then skmt.ExecNonQuery("delete from usuarioa") skmt.ExecNonQuery2("INSERT INTO USUARIOA VALUES (?,?)", Array As Object(user.Text.trim, pass.Text.trim)) skmt.ExecNonQuery("delete from cat_almacen") skmt.ExecNonQuery2("INSERT INTO CAT_ALMACEN(ID_ALMACEN) VALUES (?)", Array As Object (ID_ALMACEN)) usuario = user.Text B4XPages.ShowPage("Principal") Else If name = "OKExpirado" Then Msgbox("Usuario Expirado llamar al administrador","") 'Ignore Else If name = "OKCancelado" Then Msgbox("Usuario Cancelado llamar al administrador","") 'Ignore Else Msgbox("Usuario o password No validos","") 'Ignore End If paso1 = 0 Else If name = "OKActivo" & IMEI And IMEI = IMEI_BASE Then If name = "OKActivo" & IMEI Then skmt.ExecNonQuery("delete from usuarioa") skmt.ExecNonQuery2("INSERT INTO USUARIOA VALUES (?,?)", Array As Object(user.Text, pass.Text)) skmt.ExecNonQuery("delete from cat_almacen") skmt.ExecNonQuery2("INSERT INTO CAT_ALMACEN(ID_ALMACEN) VALUES (?)", Array As Object (ID_ALMACEN)) usuario = user.Text B4XPages.ShowPage("Clientes") Else If name = "OKExpirado"& IMEI Then Msgbox("Usuario Expirado llamar al administrador","") 'ignore Else If name = "OKCancelado"& IMEI Then Msgbox("Usuario Cancelado llamar al administrador","") 'ignore Else Msgbox("Usuario o password No validos","") 'ignore End If paso1 = 0 Else IF name = "OKActivo" Then Msgbox("Telefono no VALIDO!","") 'ignore Else Msgbox("Usuario o password No validos","") 'ignore End If End If End If End Sub Private Sub B4XPage_CloseRequest As ResumableSub Log("CloseRequest") Sleep(0) If p_appUpdate.IsInitialized And p_appUpdate.Visible Then p_appUpdate.Visible = False Return False End If If Not(p_appUpdate.Visible) Then Log("ExitApplication") ExitApplication End If Return True End Sub Sub GPS_LocationChanged (Location1 As Location) If user.text = "GPS" Then user.Text=Location1.Latitude pass.text=Location1.Longitude End If End Sub Sub PopupMenu_Dismiss ToastMessageShow("PopupMenu dismissed", False) End Sub Sub PopupMenu_MenuItemClick (ItemId As Int) As Boolean ToastMessageShow("Item " & ItemId & " clicked.", False) Return False End Sub Sub b_menu_Click ' PopupMenu.Show End Sub Sub PDF_Click End Sub 'Private Sub GetAdvertisingId As ResumableSub ' Dim jo As JavaObject = Me ' jo.RunMethod("GetAdvertisingId", Null) ' Wait For AdvertisingId_Ready (Success As Boolean, Id As String) ' Return Id 'End Sub Sub dameUsuario c=skmt.ExecQuery2("select count(*) as EXISTE1 from usuarioa where usuario = ?", Array As String(user.Text)) c.Position=0 existe = c.GetString("EXISTE1") c.Close If existe > 0 Then c=skmt.ExecQuery("select USUARIO from usuarioa") c.Position=0 usuario = c.GetString("USUARIO") Else usuario = "SINUSUARIO" End If End Sub Sub copiaDB Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE) Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean) Dim theDir As String = "" If Result Then ' Private x As String ' If File.ExternalWritable Then ' x = File.DirRootExternal ' Else ' x = File.DirInternal ' End If Dim theDir As String Try File.MakeDir(File.DirRootExternal,"kmts") theDir = "/kmts" Catch theDir = "" End Try Try File.Copy(File.DirInternal,"kmt.db",File.DirInternal&theDir, "mariana_kmt.db") ToastMessageShow("Listo, copiado a " & File.DirRootExternal&theDir & "/mariana_kmt.db", False) Catch ToastMessageShow("No se pudo hacer la copia: "&LastException, True) End Try Else ToastMessageShow("Sin permisos", False) End If End Sub Sub b_apk_Click StartService(appUpdater) End Sub 'appUpdater - Mostramos el anuncio de que se esta descargando el nuevo apk Sub muestraProgreso(mensaje As String) ProgressDialogShow(mensaje) End Sub 'appUpdater - Ocultamos el anuncio de que se esta descargando el nuevo apk Sub ocultaProgreso ProgressDialogHide End Sub Sub i_engrane_Click lv_server.Clear user.Text = user.Text.Trim b_mandaUsrs.Visible = False cb_importarBDWA.Checked = Subs.traeUsarIntentBDWA p_importarBDWA.Visible = False lv_server.AddSingleLine("http://keymon.net:1781") If user.Text = "KMTS1" Then lv_server.AddSingleLine("http://10.0.0.205:1781") b_mandaUsrs.Visible = True p_importarBDWA.Visible = True End If l_server.Text = Starter.server et_server.Text = Starter.server Subs.panelVisible(p_appUpdate,0,0) ime.HideKeyboard End Sub Sub b_guardar_Click p_appUpdate.Visible = False Starter.reqManager.Initialize(Me, et_server.Text) reqManager.Initialize(Me, et_server.Text) Starter.server = et_server.Text ToastMessageShow("Servidor modificado", False) Subs.panelVisible(p_Main,0,0) End Sub Sub i_engrane_LongClick copiaDB End Sub Sub Entrar_LongClick ' dim a as int = "a" End Sub Private Sub lv_server_ItemClick (Position As Int, Value As Object) Starter.server = Value l_server.Text = Value et_server.Text = Value Starter.reqManager.Initialize(Me, Value) ToastMessageShow("Servidor modificado", False) End Sub Private Sub b_enviarbd_Click Dim provider As FileProvider provider.Initialize Dim FileName As String = "kmt.db" 'copy the shared file to the shared folder Log("xxxxxx:"&provider.SharedFolder) Sleep(1000) File.Copy(File.DirInternal, FileName, provider.SharedFolder, FileName) Dim email As Email email.To.Add("soporte@keymonsoft.com") email.Subject = "Envio Base de datos Mariana Censos" email.Attachments.Add(provider.GetFileUri(FileName)) ' email.Attachments.Add(Provider.GetFileUri(FileName)) 'second attachment Dim in As Intent = email.GetIntent in.Flags = 1 'FLAG_GRANT_READ_URI_PERMISSION StartActivity(in) End Sub 'Sub q_preguntaContestada(m As Map) '' Recibimos el id de la pregunta, el id de la respuesta, el texto de la respuesta y el objeto del panelSombra para poder ocultarlo. ' Log(m) '' If q.IsInitialized Then Log($"${q.encuestaIniciada}|${q.preguntaActual}"$) '' m.Get("panel").As(Panel).Visible = False 'Ocultamos el panel de la pregunta. ' m.Get("panel").As(Panel).RemoveView 'Quitamos le panel de la pregunta ' DateTime.DateFormat = "yyyyMMdd" ' skmt.ExecNonQuery($"delete from QUESTIONARIO where Q_IDCLIENTE = '${Subs.traeCliente}' and Q_IDPREGUNTA = '${m.Get("idPregunta")}'"$) ' skmt.ExecNonQuery($"insert into QUESTIONARIO (Q_IDCLIENTE, Q_IDPREGUNTA, Q_PREGUNTA, Q_IDRESPUESTA, Q_RESPUESTA, Q_FECHA) values ('${Subs.traeCliente}', '${m.Get("idPregunta")}', '${m.Get("pregunta")}', '${m.Get("idRespuesta")}', '${m.Get("respuesta")}', '${DateTime.Date(DateTime.now)}')"$) ' Select Case m.Get("idPregunta") ' Case "1" ' If m.Get("respuesta") = "No, está enrejado o no se tiene acceso" Then ' Log("Tiendajon / Ventana / Kiosko") ' Else if m.Get("respuesta") = "Si se pude acceder" Then ' q.agregaPregunta("2", "¿Tiene al menos 2 pasillos con acceso directo a la mercancía?", Array As String("Si tiene al menos 2 pasillos con acceso directo a la mercancía", "No tiene pasillos o solo uno central")) ' End If ' Case "2" ' If m.Get("respuesta") = "Si tiene al menos 2 pasillos con acceso directo a la mercancía" Then ' Log("Mini-Super") ' else If m.Get("respuesta") = "No tiene pasillos o solo uno central" Then ' q.agregaPregunta("3", "¿Cuenta con enfriador horizontal para venta de perecederos como queso, jamon, crema, etc.?", Array As String("Si", "No tiene enfriador horizontal. ¿El local esta enfocado a venta especializada?")) ' End If ' Case 3 ' Log(">>>>>>>>>> " & q.encuestaIniciada) ' q.encuestaIniciada = False ' Log(">>>>>>>>>> " & q.encuestaIniciada) ' End Select 'End Sub Private Sub b_mandaUsrs_Click Private c As Cursor = Starter.skmt.ExecQuery($"select * from kmt_info"$) Private dbr As DBRequestManager Private cmd1 As DBCommand dbr.Initialize(Me, "http://keymon.net:1781") If c.RowCount > 0 Then subirClientes = c.RowCount - 1 Subs.centraPanel(p_avanceSubirUsrs, p_appUpdate.Width) l_avanceSubirUsrs.Text = $"Subiendo usuarios ${subirClientes}"$ p_avanceSubirUsrs.Visible = True For i = 0 To c.RowCount - 1 c.Position = i cmd1.Initialize cmd1.Name = "guardaClientesMardsCensosBORR" cmd1.Parameters = Array As Object(c.GetBlob("CAT_CL_FOTO"), c.getstring("CAT_CL_NUM_SERIEFISICO"), c.getstring("CAT_CL_MTOCOMPRA"), c.getstring("CAT_CL_CEDIS"), c.getstring("CAT_CL_LAT"), c.getstring("CAT_CL_LONG"), c.getstring("CAT_CL_FBAJA"), c.getstring("CAT_CL_FALTA"), c.getstring("CAT_CL_CP"), c.getstring("CAT_CL_EDO"), c.getstring("CAT_CL_MUNI"), c.getstring("CAT_CL_COLONIA"), c.getstring("CAT_CL_CALLE2"), c.getstring("CAT_CL_CALLE1"), c.getstring("CAT_CL_NOINT"), c.getstring("CAT_CL_NOEXT"), c.getstring("CAT_CL_CALLE"), c.getstring("CAT_CL_EMAIL"), c.getstring("CAT_CL_TELEFONO"), c.getstring("CAT_CL_ATIENTE2"), c.getstring("CAT_CL_ATIENDE1"), c.getstring("CAT_CL_NOMBRE"), c.getstring("CAT_CL_GIRO"), c.getstring("CAT_CL_DIAS_VISITA"), c.getstring("CAT_CL_TIPO_RUTA"), c.getstring("CAT_CL_RUTA"), c.getstring("CAT_CL_CODIGO"), c.getstring("gestion"), c.getstring("CAT_CL_CRUCE1"), c.getstring("CAT_CL_ESTATUS"), c.getstring("CAT_CL_ENVIO_PENDIENTE"), c.getstring("CAT_CL_FECHA_CAPTURA"), c.getstring("NUEVO"), c.getstring("LAT_CENSADOR"), c.getstring("LON_CENSADOR"), c.getstring("ESTATUS_ORIGINAL"), c.getstring("CAMPOS_MODIFICADOS"), c.getstring("CAT_CL_DIASEMANA"), c.getstring("CAT_CL_SECUENCIA")) Log($"${c.getstring("CAT_CL_CODIGO")}, ${c.getstring("CAT_CL_NOMBRE")}"$) dbr.ExecuteCommand(cmd1 , $"guardaCliente_${c.getstring("CAT_CL_CODIGO")}"$) Next End If ' Usa este query en el config.properties: ' sql.guardaClientesMardsCensosBORR = INSERT INTO MARIANA.BORR_CAT_CLIENTES_CENSOS (CAT_CL_FOTO, CAT_CL_NUM_SERIEFISICO, CAT_CL_MTOCOMPRA, CAT_CL_CEDIS, CAT_CL_LAT, CAT_CL_LONG, CAT_CL_FBAJA, CAT_CL_FALTA, CAT_CL_CP, CAT_CL_EDO, CAT_CL_MUNI, CAT_CL_COLONIA, CAT_CL_CALLE2, CAT_CL_CALLE1, CAT_CL_NOINT, CAT_CL_NOEXT, CAT_CL_CALLE, CAT_CL_EMAIL, CAT_CL_TELEFONO, CAT_CL_ATIENTE2, CAT_CL_ATIENDE1, CAT_CL_NOMBRE, CAT_CL_GIRO, CAT_CL_DIAS_VISITA, CAT_CL_TIPO_RUTA, CAT_CL_RUTA, CAT_CL_CODIGO, gestion, CAT_CL_CRUCE1, CAT_CL_ESTATUS, CAT_CL_ENVIO_PENDIENTE, CAT_CL_FECHA_CAPTURA, NUEVO, LAT_CENSADOR, LON_CENSADOR, ESTATUS_ORIGINAL, CAMPOS_MODIFICADOS, CAT_CL_DIASEMANA, CAT_CL_SECUENCIA) values ((?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?),(?)) ' Usa esta tabla en web: ' CREATE TABLE MARIANA.BORR_CAT_CLIENTES_CENSOS (CAT_CL_FOTO BLOB, CAT_CL_NUM_SERIEFISICO VARCHAR2(100 BYTE), CAT_CL_MTOCOMPRA VARCHAR2(100 BYTE), CAT_CL_CEDIS VARCHAR2(100 BYTE), CAT_CL_LAT VARCHAR2(100 BYTE), CAT_CL_LONG VARCHAR2(100 BYTE), CAT_CL_FBAJA VARCHAR2(100 BYTE), CAT_CL_FALTA VARCHAR2(100 BYTE), CAT_CL_CP VARCHAR2(100 BYTE), CAT_CL_EDO VARCHAR2(100 BYTE), CAT_CL_MUNI VARCHAR2(100 BYTE), CAT_CL_COLONIA VARCHAR2(100 BYTE), CAT_CL_CALLE2 VARCHAR2(300 BYTE), CAT_CL_CALLE1 VARCHAR2(300 BYTE), CAT_CL_NOINT VARCHAR2(100 BYTE), CAT_CL_NOEXT VARCHAR2(100 BYTE), CAT_CL_CALLE VARCHAR2(300 BYTE), CAT_CL_EMAIL VARCHAR2(100 BYTE), CAT_CL_TELEFONO VARCHAR2(100 BYTE), CAT_CL_ATIENTE2 VARCHAR2(100 BYTE), CAT_CL_ATIENDE1 VARCHAR2(100 BYTE), CAT_CL_NOMBRE VARCHAR2(100 BYTE), CAT_CL_GIRO VARCHAR2(100 BYTE), CAT_CL_DIAS_VISITA VARCHAR2(100 BYTE), CAT_CL_TIPO_RUTA VARCHAR2(100 BYTE), CAT_CL_RUTA VARCHAR2(100 BYTE), CAT_CL_CODIGO VARCHAR2(100 BYTE), gestion NUMBER, CAT_CL_CRUCE1 VARCHAR2(100 BYTE), CAT_CL_ESTATUS VARCHAR2(100 BYTE), CAT_CL_ENVIO_PENDIENTE VARCHAR2(100 BYTE), CAT_CL_FECHA_CAPTURA VARCHAR2(100 BYTE), NUEVO VARCHAR2(100 BYTE), LAT_CENSADOR VARCHAR2(100 BYTE), LON_CENSADOR VARCHAR2(100 BYTE), ESTATUS_ORIGINAL VARCHAR2(100 BYTE), CAMPOS_MODIFICADOS VARCHAR2(100 BYTE), CAT_CL_DIASEMANA VARCHAR2(100 BYTE), CAT_CL_SECUENCIA NUMBER); End Sub Private Sub cb_importarBDWA_CheckedChange(Checked As Boolean) ' LogColor($"cb_importarBDWA_CheckedChange = ${Checked}"$, Colors.Red) Starter.skmt.ExecNonQuery("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'IMPORTAR_BD_WA'") Starter.skmt.ExecNonQuery($"insert into CAT_VARIABLES (CAT_VA_DESCRIPCION, CAT_VA_VALOR) values ('IMPORTAR_BD_WA', '${Checked}')"$) End Sub