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 'Ctrl + click to export as zip: ide://run?File=%B4X%\Zipper.jar&Args=Project.zip '########################################################################################################### '###################### 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 ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=github&Args=..\..\ Sub Class_Globals Private Root As B4XView Private xui As XUI Public login As B4XMainPage Dim rp As RuntimePermissions Public principal As C_Principal Public clientes As C_Clientes Public cliente As C_Cliente Public productos As C_Productos Public updateAvailable As C_updateAvailable Public mapas As C_Mapas Public nuevoCliente As C_NuevoCliente Public ticketsDia As C_TicketsDia Public noVenta As C_NoVenta Public nota As C_Nota Public pedidos As C_Pedidos Public promos As C_Promos Public historico As C_Historico Public checklist As C_CheckList Dim kh As kms_helperSubs Dim ime As IME Dim reqManager As DBRequestManager Dim ultimaActualizacionGPS As String = 235959 Dim almacen, ruta As String Dim user As EditText Dim pass As EditText Dim c As Cursor Dim D As Cursor Dim existe As String Dim paso1 As String Dim IMEI As String Dim alterno As String Private b_menu As Button ' Dim PopupMenu As RSPopupMenu Dim cmd As DBCommand Private IMEN As EditText Private Entrar As Button Private Panel1 As Panel Private i_engranes As ImageView Private E_SERVER As EditText Private B_SERVER As Button Private B_MACIMP As Button Private CUANTOS As String Private foto_g () As Byte Private ListView1 As ListView Private ImageView1 As ImageView Private Label1 As Label Private B_BorrarFinDia As Button Private b_fdCancelar As Button Private b_findiaOk As Button Private p_finDia As Panel Private et_autSup As EditText 'prueba downloadfile Dim ProgressBar1 As ProgressBar Dim Label1 As Label Dim btnDownload As Button Dim btnCancel As Button Private p_download As Panel Private Label6 As Label Dim logger As Boolean = True Dim lat_gps, lon_gps As String Dim tipo_venta As String Dim bTerminarClicked As Boolean = False Private lv_server As ListView Private l_server As Label Public rutaBDBackup As String = "" Private b_envioBD As Button Dim MES1 As ManageExternalStorage Dim device As Phone Private b_cargaLocal As Button Private p_cargaLocal As Panel Private et_cargaLocal As EditText Private b_cargaLocalOk As Button Private b_cargaLocalCancelar As Button Private p_botones As Panel Private b_importarBD As Button Private cb_geocerca As CheckBox Private p_extras As Panel Private et_geocerca As EditText Private b_extras As Button Private l_geocerca As Label Private b_aceptarExtras As Button Private cb_cartaPorte As CheckBox Private l_cartaPorte As Label Private et_maxClientesNuevos As EditText Private l_maxClientesNuevos As Label Dim in As Intent Dim intentUsado As Boolean = False Private p_importarBDWA As Panel Private cb_importarBDWA As CheckBox ' Type TResultado(Tag As String, Success As Boolean, resultado As DBResult, ErrorMessage As String) Private Label4 As Label Private clicked As Int = 0 Dim linker As C_deviceLinker End Sub Public Sub Initialize B4XPages.GetManager.LogEvents = True kh.Initialize(Me, "kh", Starter.skmt) #if not(DEBUG) Starter.logger = False #end if End Sub 'This event will be called once, before the page becomes visible. Private Sub B4XPage_Created (Root1 As B4XView) Log(">>>>>> CREATE - INICIAMOS MAIN PAGE <<<<<<<<<") If Not(Starter.Logger) Then logger = False Dim sDate, sTime As String DateTime.DateFormat = "yyyyMMdd" sDate=DateTime.Date(DateTime.Now) Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS PEDIDO3") Starter.skmt.ExecNonQuery("CREATE TABLE PEDIDO3 (PE_PRECIO2 TEXT,PE_TIPO TEXT,PE_FOLIO NUMERIC,PE_DESC NUMERIC,PE_COSTO_SIN TEXT,PE_RUTA TEXT,PE_CEDIS TEXT,PE_COSTO_TOT NUMERIC,PE_COSTOU NUMERIC,PE_CANT NUMERIC,PE_PRONOMBRE TEXT,PE_PROID TEXT,PE_CLIENTE TEXT,PE_FECHA TEXT,PE_USUARIO TEXT)") Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS PEDIDO_SUGERIDO (ID_PRODUCTO TEXT, PROMEDIO TEXT, RUTA TEXT, ALMACEN TEXT)") Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS DESC_CLIENTES (DC_CL_CLIENTE TEXT, CAT_CL_DESCUENTO_SS TEXT, CAT_CL_DESCUENTO_RTEC TEXT, CAT_CL_DESCUENTO_PING TEXT, CAT_CL_TIPOCLIENTE TEXT)") Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_ENCUESTA (HE_CLIE TEXT, HE_RES TEXT, HE_FECHA TEXT, HE_TIPO TEXT)") Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_DESCUENTOS_SKU (CAT_DS_CLIENTE TEXT, CAT_DS_PRODID TEXT, CAT_DS_PORCENTAJE TEXT)") Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_ENVIOS (HE_FECHA TEXT, HE_CUANTOS TEXT, HE_TIPO TEXT)") Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_ENCUESTA_PREGUNTA (CAT_EP_ID TEXT,CAT_EP_IDTIPOPREGUNTA TEXT,CAT_CE_DESCRIPCION TEXT,CAT_EP_PREGUNTA TEXT,CAT_EP_RES1_PRED TEXT,CAT_EP_RES2_PRED TEXT,CAT_EP_RES3_PRED TEXT,CAT_EP_ORDEN_PREGUNTA TEXT)") Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_FOTOS (HF_FOTO BLOB, HF_CUENTA TEXT, HF_IDENCUESTA TEXT)") Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CLIENTE_IMPRESO (CI_CUENTA TEXT)") Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_CLIENTE_CANT_PROMOS (HCCP_CLIENTE TEXT, HCCP_PROMO TEXT, HCCP_CANT TEXT, HCCP_CANT_VENDIDA TEXT)") kh.agregaColumna(Starter.skmt, "HIST_CLIENTE_CANT_PROMOS", "HCCP_CANT_VENDIDA", "TEXT") kh.agregaColumna(Starter.skmt, "kmt_info", "CAT_CL_LIMITECREDITO", "TEXT") Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_PROMO_MONTO (CPM_IDPROMO TEXT, CPM_MONTO TEXT, CPM_PROID TEXT, CPM_CLIENTE TEXT, CPM_CANT TEXT, CPM_RANGO TEXT, CPM_DESC TEXT)") Starter.skmt.ExecNonQuery2("INSERT INTO HIST_ENVIOS VALUES (?,0,?)", Array As Object(sTime, "PEDIDO")) Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_EXHIBIDORES2 (HIST_EX_ID_CLIENTE TEXT, HIST_EX_TIPO TEXT, HIST_EX_CANT TEXT)") Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_PROMO_WHATS(HIST_CLIENTE TEXT, HIST_RESPUESTA_PROMO)") ' Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_RMI(CAT_GP_ID TEXT,CAT_GP_NOMBRE TEXT,CAT_GP_PRECIO TEXT)") Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_RMI(CAT_ID TEXT, CAT_DESCRIPCION TEXT, CAT_MONTO TEXT)") Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS BITACORAGPS(fechab TEXT, usuariob TEXT, almacenb TEXT, rutab TEXT, eventob TEXT, clienteb TEXT, iniciob TEXT, finb TEXT, latitudb TEXT, longitudb TEXT, precision TEXT, motivonoventa TEXT, motivonovisita TEXT)") ''' PARA LO DE DOE--- Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_GUNAPROD_DOE (CAT_GP_ID TEXT,CAT_GP_NOMBRE TEXT,CAT_GP_IMP1 TEXT,CAT_GP_IMP2 TEXT,CAT_GP_PRECIO TEXT,CAT_GP_CLASIF TEXT,CAT_GP_STS TEXT,CAT_GP_TIPO TEXT,CAT_GP_SUBTIPO TEXT,CAT_GP_IMG TEXT,CAT_GP_ALMACEN TEXT,CAT_GP_TIPOPROD TEXT,CAT_GP_INICIATIVA TEXT,CAT_GP_DEV TEXT,CAT_GP_CODPROMO TEXT)") Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS PEDIDO_DOE (PE_PRECIO2 TEXT,PE_TIPO TEXT,PE_FOLIO NUMERIC,PE_DESC NUMERIC,PE_COSTO_SIN TEXT,PE_RUTA TEXT,PE_CEDIS TEXT,PE_COSTO_TOT NUMERIC,PE_COSTOU NUMERIC,PE_CANT NUMERIC,PE_PRONOMBRE TEXT,PE_PROID TEXT,PE_CLIENTE TEXT,PE_FECHA TEXT,PE_USUARIO TEXT)") Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS PEDIDOS_DOE_ENTREGA (PC_CLIENTE TEXT, PC_ENTREGA TEXT)") Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_TREND_SPENDING_SEMANAL (HIST_TSS_RUTA TEXT, HIST_TSS_IDALMACEN TEXT, HIST_TSS_TIPO TEXT, HIST_TSS_SEMANA1 TEXT, HIST_TSS_SEMANA1_ACUM TEXT, HIST_TSS_SEMANA2 TEXT, HIST_TSS_SEMANA2_ACUM TEXT, HIST_TSS_SEMANA3 TEXT, HIST_TSS_SEMANA3_ACUM TEXT, HIST_TSS_SEMANA4 TEXT, HIST_TSS_SEMANA4_ACUM TEXT, HIST_TSS_SEMANA5 TEXT, HIST_TSS_SEMANA5_ACUM TEXT, HIST_TSS_SEMANA6 TEXT, HIST_TSS_SEMANA6_ACUM TEXT, HIST_TSS_GRUPO TEXT)") Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS TREND_SPENDING (TIPO TEXT, MONTO_SEMANA TEXT, ACUMULADO TEXT)") Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS VERSIONES (VERSION TEXT, FECHA TEXT)") ''' FIN DOE kh.agregaColumna(Starter.skmt, "kmt_info", "IMPRESION", "INTEGER") kh.agregaColumna(Starter.skmt, "kmt_info", "CREDITO", "INTEGER") kh.agregaColumna(Starter.skmt, "USUARIOA", "FECHA", "TEXT") kh.agregaColumna(Starter.skmt, "PROMOS_COMP", "CAT_PA_PORCENTAJE_PAQUETE", "TEXT") kh.agregaColumna(Starter.skmt, "PROMOS_COMP", "CAT_PA_PRECIO1", "TEXT") kh.agregaColumna(Starter.skmt, "PROMOS_COMP", "CAT_PA_PRECIO2", "TEXT") kh.agregaColumna(Starter.skmt, "PROMOS_COMP", "CAT_PA_TIPO_PROMONTO", "TEXT") kh.agregaColumna(Starter.skmt, "CAT_GUNAPROD", "CAT_GP_TIPOPROD2", "TEXT") kh.agregaColumna(Starter.skmt, "CAT_GUNAPROD2", "CAT_GP_TIPOPROD2", "TEXT") kh.agregaColumna(Starter.skmt, "CAT_GUNAPROD", "CAT_GP_PROMOCION", "TEXT") kh.agregaColumna(Starter.skmt, "CAT_GUNAPROD2", "CAT_GP_PROMOCION", "TEXT") kh.agregaColumna(Starter.skmt, "TREND_SPENDING", "TIPO", "TEXT") kh.agregaColumna(Starter.skmt, "CAT_DETALLES_PAQ", "CAT_DP_PRECIOB", "TEXT") Root = Root1 ' Root.LoadLayout("MainPage") Root.LoadLayout("login") B4XPages.SetTitle(Me, "Kelloggs Preventa") 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.Initialize B4XPages.AddPage("Productos", productos) updateAvailable.Initialize B4XPages.AddPage("updateAvailable", updateAvailable) mapas.Initialize B4XPages.AddPage("Mapas", mapas) nuevoCliente.Initialize B4XPages.AddPageAndCreate("NuevoCliente", nuevoCliente) 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) checklist.Initialize B4XPages.AddPage("CheckList", checklist) Panel1.Top = 0 : Panel1.left = 0 ruta = Starter.ruta Starter.tiempos.Initialize kh.guardaAppInfo Log(111) 'Revisamos si se disparo el intent de cargar la base de datos desde WhatApp. If kh.traeUsarIntentBDWA Then kh.importaBDDesdeWhatsApp ' Try 'Intentamos usar "pragma_table_info" para revisar si existe la columna "IMPRESION" en la tabla ' c=Starter.skmt.ExecQuery("SELECT COUNT(*) AS fCol FROM pragma_table_info('kmt_info') WHERE name='IMPRESION'") ' c.Position = 0 ' If c.GetString("fCol") = 0 Then 'Si no esta la columna FECHA la agregamos ' Starter.skmt.ExecNonQuery("ALTER TABLE kmt_info ADD COLUMN IMPRESION INTEGER") ' End If ' Catch 'Si no funciona "pragma_table_info" lo hacemos con try/catch ' Try ' Starter.skmt.ExecNonQuery("ALTER TABLE kmt_info ADD COLUMN IMPRESION INTEGER") ' Catch ' Log(LastException) ' End Try ' End Try ' Try 'Agregamos columna fecha a usuarioa ' c=Starter.skmt.ExecQuery("SELECT fecha FROM usuarioa") ' Catch ' LogColor("Agregamos columna fecha a usuarioa", Colors.red) ' Starter.skmt.ExecNonQuery("ALTER TABLE usuarioa ADD COLUMN FECHA TEXT") ' End Try ' If sDate = "20190523" Then ' Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("SERVER")) ' Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("SERVER", Starter.DBReqServer)) ' End If ' Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("ULTIMOMODULO")) ' Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("ULTIMOMODULO", "MAIN")) c = Starter.skmt.ExecQuery2("select count(*) as CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SERVER")) c.Position = 0 If c.GetString("CUANTOS") = 0 Then Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("SERVER", Starter.DBReqServer)) ' Else ' c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SERVER")) ' c.Position = 0 ' Starter.server = c.GetString("CAT_VA_VALOR") ' reqManager.Initialize(Me, Starter.server) End If ' reqManager.Initialize(Me, Starter.server) ' Activity.LoadLayout("login") Label1.Text = Application.VersionName ' Log("Pedimos permisos de almacenamiento externo") ' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE) ' Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean) ' If Result Then Log("Tenemos permisos de escritura externa.") c = Starter.skmt.ExecQuery("SELECT COUNT(*) as CUANTOS FROM TMP_INSPECCION_AUTO_DIARIA") c.Position = 0 CUANTOS = c.GetString("CUANTOS") c.Close If CUANTOS = 0 Then Dim theDir As String If File.IsDirectory("/","kmts") Then theDir = "/kmts" End If Try File.MakeDir(File.DirInternal,"kmts") theDir = "/kmts" Catch theDir = "" End Try Try foto_g = Bit.InputStreamToBytes(File.OpenInput(File.DirAssets, "vista1.png")) Dim SALIDA As OutputStream SALIDA = File. OpenOutput (File.DirInternal&theDir, "FOTO1.jpg", False) SALIDA.WriteBytes(foto_g, 0, foto_g.Length) SALIDA.Close ' If Logger Then LogColor("** ** Creamos FOTO1.jpg en "&File.DirInternal, Colors.Blue) Catch Msgbox("No se puede crear el archivo de foto","Aviso") 'ignore End Try Try foto_g = Bit.InputStreamToBytes(File.OpenInput(File.DirAssets, "vista3.png")) Dim SALIDA As OutputStream SALIDA = File. OpenOutput (File.DirInternal&theDir, "FOTO2.jpg", False) SALIDA.WriteBytes(foto_g, 0, foto_g.Length) SALIDA.Close Catch Msgbox("No se puede crear el archivo de foto","Aviso") 'ignore End Try Try foto_g = Bit.InputStreamToBytes(File.OpenInput(File.DirAssets, "vista2.png")) Dim SALIDA As OutputStream SALIDA = File. OpenOutput (File.DirInternal&theDir, "FOTO3.jpg", False) SALIDA.WriteBytes(foto_g, 0, foto_g.Length) SALIDA.Close Catch Msgbox("No se puede crear el archivo de foto","Aviso") 'ignore End Try Try foto_g = Bit.InputStreamToBytes(File.OpenInput(File.DirAssets, "vista4.png")) Dim SALIDA As OutputStream SALIDA = File. OpenOutput (File.DirInternal&theDir, "FOTO4.jpg", False) SALIDA.WriteBytes(foto_g, 0, foto_g.Length) SALIDA.Close Catch Msgbox("No se puede crear el archivo de foto","Aviso") 'ignore End Try End If Log(222) ' Dim ph As Phone 'Get Id Device ' Dim DeviceID As String = Starter.ph.GetSettings("android_id").ToUpperCase ' If logger Then Log($"Marca: ${Starter.ph.manufacturer}, Modelo: ${Starter.ph.model}"$) ' If logger Then LogColor($"////////////////// DeviceID: ${DeviceID} ////////////////// "$, Colors.Blue) ' If Logger Then LogColor("Revisa permisos Phone_State", Colors.Green) '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 ' Subs.borraArribaDe100Errores ' Log("Pedimos permisos de estado del cel") ' rp.CheckAndRequest(rp.PERMISSION_READ_PHONE_STATE) ' Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean) ' If Result Then '' Dim Phn As PhoneId ' IMEN.Text = "" 'Phn.GetDeviceId ' IMEI ="" ' Phn.GetDeviceId ' If logger Then LogColor($"////////////////// IMEI: ${IMEI} ////////////////// "$, Colors.Blue) ' End If ' Log("Permisos cel terminados") IMEN.Text = "" IMEI ="" ' Phn.GetDeviceId Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_ACCESS_FINE_LOCATION) Wait For B4XPAge_PermissionResult (Permission As String, Result As Boolean) If Result Then StartService(Tracker) If logger Then Log("Start Tracker") Else ToastMessageShow("Sin permisos para GPS", True) End If Log("33***********************************************33") MES1.Initialize(Me, "MES1") ' Log("SDK: " & device.SdkVersion) ' Get the device SDK version Dim SdkVersion As Int = device.SdkVersion ' Choose which permission to request in order to access external storgage If SdkVersion < 30 Then Log("SDK = " & SdkVersion & " : Requesting WRITE_EXTERNAL_STORAGE permission") Dim rp As RuntimePermissions rp.CheckAndRequest(rp.PERMISSION_WRITE_EXTERNAL_STORAGE) ' Implicit read capability if granted Wait For B4XPage_PermissionResult (Permission As String, ResultY As Boolean) Log($"PERMISSION_WRITE_EXTERNAL_STORAGE = ${ResultY}"$) Log("SDK = " & SdkVersion & " : Requesting READ_EXTERNAL_STORAGE permission") Dim rp As RuntimePermissions rp.CheckAndRequest(rp.PERMISSION_READ_EXTERNAL_STORAGE) ' Implicit read capability if granted Wait For B4XPage_PermissionResult (Permission As String, ResultX As Boolean) Log($"PERMISSION_READ_EXTERNAL_STORAGE = ${ResultX}"$) Else Log("SDK = " & SdkVersion & " : Requesting MANAGE_EXTERNAL_STORAGE permission") Log("On Entry MANAGE_EXTERNAL_STORAGE = " & MES1.HasPermission) If Not(MES1.HasPermission) Then MsgboxAsync("This app requires access to all files, please enable the option", "Manage All Files") Wait For Msgbox_Result(Res As Int) Log("Getting MES permission") MES1.GetPermission Wait For MES_StorageAvailable End If End If Log(MES1.IsInitialized) Log(MES1.HasPermission) Log("44***********************************************44") MES1.Initialize(Me, "MES1") ' Log("Permisos BT: " & rp.Check("android.permission.BLUETOOTH_CONNECT")) ' Log("REVISAMOS PERMISOS DE BT") ' rp.CheckAndRequest("android.permission.BLUETOOTH_CONNECT") ' Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean) ' If Result Then Log("Tenemos permisos de bluetooth.") ' Log("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX") ' Log("Check phone state: " & rp.Check(rp.PERMISSION_READ_PHONE_STATE)) kh.centraPanel(p_botones, Root.Width) End Sub Sub B4XPage_Appear Log(">>>>>> APPEAR - INICIAMOS MAIN PAGE <<<<<<<<<") linker.Initialize(Me, "Linker", True) clicked = 0 If Not(MES1.IsInitialized) Then MES1.Initialize(Me, "MES1") ' Log(DateTime.GetDayOfWeek(DateTime.Now)) kh.RD_Init kh.SetButtonTintList(cb_geocerca, Colors.LightGray, Colors.RGB(43, 154, 211)) kh.SetButtonTintList(cb_cartaPorte, Colors.LightGray, Colors.RGB(43, 154, 211)) cb_geocerca.Checked = kh.traeUsarGeocerca cb_cartaPorte.Checked = kh.traeUsarCartaPorte ' Log("LLAMAMOS traeUsarIntentBDWA") cb_importarBDWA.Checked = kh.traeUsarIntentBDWA et_maxClientesNuevos.Text = kh.traeMaxClientesNuevos ' server = "http://keymon.com.mx:1782" ' server = "http://201.99.139.28:1782" ' server = "http://177.244.63.54:1782" reqManager.Initialize(Me, Starter.DBReqServer) Starter.montoActual = 0 Starter.clientesTotal = 0 Starter.clientesVenta = 0 Starter.clientesVisitados = 0 almacen = 0 Starter.rutaPreventa = 0 Starter.CANTIDADPROD = 0 c.Close c = Starter.skmt.ExecQuery2("select count(*) as CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("CODIGO")) c.Position = 0 CUANTOS = c.GetString("CUANTOS") c.Close If CUANTOS > 0 Then c = Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("CODIGO")) c.Position = 0 If c.GetString("CAT_VA_VALOR") = "743" Then Entrar.Visible = True End If c.Close Else Log("INSERTAMOS CODIGO EN CAT_VARIABLES") Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("CODIGO","743")) End If c = Starter.skmt.ExecQuery2("select COUNT(*) AS CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("MACIMP")) c.Position = 0 If c.GetString("CUANTOS") = 0 Then Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("MACIMP","0")) End If ' D = Starter.skmt.ExecQuery("select COUNT(*) AS CUANTOS from version") ' D.Position = 0 ' If D.GetString("CUANTOS") > 0 Then ' c = Starter.skmt.ExecQuery("select NOVERSION from version") ' c.Position = 0 ' If c.GetString("NOVERSION") = "2.1" Then ' Starter.skmt.ExecNonQuery("delete from VERSION") ' End If ' c.Close ' End If ' D.Close ' D = Starter.skmt.ExecQuery("select COUNT(*) AS CUANTOS from version") ' D.Position = 0 ' If D.GetString("CUANTOS") > 0 Then ' c = Starter.skmt.ExecQuery("select NOVERSION from version") ' c.Position = 0 ' If c.GetString("NOVERSION") <> "2.95" Then ' Msgbox("INSTALAR NUEVO APK" ,"AVISO") 'ignore ' B4XPage_Appear ' End If ' c.Close ' End If ' Log(">>>>>> FECHA") cmd.Initialize cmd.Name = "select_fecha" ' cmd.Parameters = Array As Object(Null) reqManager.ExecuteQuery(cmd , 0, "fecha") Log("############### PAGE_APPEAR ####################") Log(MES1.IsInitialized) If MES1.IsInitialized Then LogColor("Permisos de almacenamiento: " & MES1.HasPermission, Colors.Magenta) ' If MES1.HasPermission Then kh.revisaSiExisteRespaldo '' Se comenta causa el error de que en el primer cliente,al guardar la venta se trabe la aplicacion!! End If DateTime.DateFormat = "yyyy-MM-dd HH:mm:ss" Starter.skmt.ExecNonQuery($"insert into versiones (version, fecha) values ('${Application.VersionName}', '${DateTime.Date(DateTime.Now)}')"$) End Sub 'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. Sub pass_EnterPressed Entrar_Click End Sub Sub Entrar_Click DateTime.DateFormat = "yyyyMMdd" user.Text = user.Text.Trim If user.Text = "KMTSKLL1" Then Starter.skmt.ExecNonQuery("delete from usuarioa") Starter.skmt.ExecNonQuery2("INSERT INTO USUARIOA VALUES (?,?,?)", Array As Object(user.Text, pass.Text, DateTime.Date(DateTime.Now))) Starter.skmt.ExecNonQuery("delete from cat_almacen") Starter.skmt.ExecNonQuery2("INSERT INTO CAT_ALMACEN(ID_ALMACEN) VALUES (?)", Array As Object (pass.Text)) ' Starter.skmt.ExecNonQuery("delete from VERSION") ' Starter.skmt.ExecNonQuery2("INSERT INTO VERSION(NOVERSION) VALUES (?)", Array As Object ("2.95")) B4XPages.ShowPage("Principal") End If ' c=Starter.skmt.ExecQuery2("select count(*) as EXISTE1 from usuarioa where usuario = ?", Array As String(user.Text)) c = Starter.skmt.ExecQuery2($"select count(*) as EXISTE1 from usuarioa where usuario = ? and fecha = ${DateTime.Date(DateTime.Now)}"$, Array As String(user.Text)) c.Position = 0 existe = c.GetString("EXISTE1") ' Log($"${existe}, ${DateTime.Date(DateTime.Now)}, ${user.Text}"$ ) 'existe = 1 If existe = 0 Then 'skmt.ExecNonQuery("delete from usuarioa") Dim cmd As DBCommand cmd.Initialize cmd.Name = "select_usuario_guna_KELL" cmd.Parameters = Array As Object(user.Text, pass.Text) reqManager.ExecuteQuery(cmd , 0, "usuario") Dim cmd As DBCommand cmd.Initialize cmd.Name = "select_version_KELL" reqManager.ExecuteQuery(cmd , 0, "version") Else Subs.iniciaActividad("Principal") ' B4XPages.ShowPage("Principal") End If End Sub Sub JobDone(Job As HttpJob) Log("JOBDONE MAINPAGE") If Job.Tag.As(String).StartsWith("_KMS_") Then Job.tag = Job.Tag.As(String).SubString(16) If Job.Success = False Then LogColor("Error: " & Job.tag & " : " & Subs.parseHTTPError(Job.ErrorMessage), Colors.red) ToastMessageShow("Error: " & Job.ErrorMessage, True) Else ' If logger Then LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211110 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 Starter.skmt.ExecNonQuery("delete from VERSION") Dim CAT_VE_VERSION As String = records(result.Columns.Get("CAT_VE_VERSION")) Starter.skmt.ExecNonQuery("delete from VERSION") Starter.skmt.ExecNonQuery2("INSERT INTO VERSION(NOVERSION) VALUES (?)", Array As Object (CAT_VE_VERSION)) Next End If 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 Dim result As DBResult = reqManager.HandleJob(Job) If result.Tag = "fecha" Then 'query tag For Each records() As Object In result.Rows Starter.FECHA_HOY = records(result.Columns.Get("FECHA")) Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("FECHA")) Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("FECHA", Starter.FECHA_HOY)) Next End If 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")) If logger Then Log(name) ' Dim IMEI_BASE As String = records(result.Columns.Get("CAT_LO_IDTELEFONO")) Next paso1 = 1 End If 'BYPASS EXTRAS If result.Tag = "traeBypass" Then 'query tag If result.Rows.Size = 1 Then ' Si hay contraseña de bypass For Each records() As Object In result.Rows Starter.passSupervisor = records(result.Columns.Get("BYPASS")) Next Log("CONTRASEÑA VALIDA " & Starter.passSupervisor) b_importarBD.Visible = True p_importarBDWA.Visible = True Starter.passSupervisor = user.Text.Trim Else Log("CONTRASEÑA INVALIDA") b_importarBD.Visible = False p_importarBDWA.Visible = False End If End If 'BYPASS IMPORTAR BD WA If result.Tag = "bypass" Then 'query tag If result.Rows.Size = 1 Then ' Si hay contraseña de bypass Log("CONTRASEÑA VALIDA " & Starter.passSupervisor) b_importarBD.Visible = True p_importarBDWA.Visible = True Starter.passSupervisor = user.Text.Trim Else Log("CONTRASEÑA INVALIDA") b_importarBD.Visible = False p_importarBDWA.Visible = False End If End If If result.tag = "traeConexion" Then Subs.logJobDoneResultados(result) End If End If Job.Release End If If paso1 =1 Then If name = "OKActivo" Then LogColor("Borramos e insertamos a usuarioa", Colors.green) DateTime.DateFormat = "yyyyMMdd" Starter.skmt.ExecNonQuery("delete from usuarioa") Starter.skmt.ExecNonQuery2("INSERT INTO USUARIOA VALUES (?,?,?)", Array As Object(user.Text, pass.Text, DateTime.Date(DateTime.Now))) Starter.skmt.ExecNonQuery("delete from cat_almacen") Starter.skmt.ExecNonQuery2("INSERT INTO CAT_ALMACEN(ID_ALMACEN) VALUES (?)", Array As Object (ID_ALMACEN)) almacen = ID_ALMACEN Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("NUMERO_PEDIDO")) Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("NUMERO_PEDIDO",0)) ' B4XPages.ShowPage("Principal") Subs.iniciaActividad("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 End If End Sub Private Sub B4XPage_CloseRequest As ResumableSub ' BACK key pressed 'Return True to close, False to cancel Log("BACK") If p_extras.Visible Then p_extras.Visible = False Return False else If Panel1.Visible Then Panel1.Visible = False Entrar.Visible = True p_extras.Visible = False Return False Else If logger Then Log("Saliendo") B4XPages.ClosePage(Me) Subs.cierraActividades Return True End If 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 IMEN_EnterPressed End Sub Sub user_EnterPressed If user.Text = "CODIGO" Then IMEN.Visible = True user.Text = "" End If DateTime.DateFormat = "yyyyMMdd" c = Starter.skmt.ExecQuery2($"select count(*) as EXISTE1 from usuarioa where usuario = ? and fecha = ${DateTime.Date(DateTime.Now)}"$, Array As String(user.Text)) c.Position = 0 existe = c.GetString("EXISTE1") If existe = 1 Then Subs.iniciaActividad("Principal") End Sub Sub i_engranes_Click Entrar.Visible = False ime.HideKeyboard user.Text = user.Text.Trim ' Starter.server = "http://201.99.139.28:1782" ' Starter.server = "http://177.244.63.54:1782" ' Starter.server = "http://keymon.com.mx:1782" ListView1.Clear Dim Label1 As Label Label1 = ListView1.SingleLineLayout.Label Label1.TextSize = 20 Label1.TextColor = Colors.Black et_geocerca.Text = "." et_geocerca.Text = "" If user.Text = "KMTS1" Then ListView1.AddSingleLine("http://192.99.93.204:1781") ListView1.AddSingleLine("http://keymon.net:1781") c = Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SERVER")) c.Position = 0 E_SERVER.text = c.GetString("CAT_VA_VALOR") Panel1.Visible = True Panel1.Width = Root.Width * 0.95 Panel1.Left = (Root.Width/2) - (Panel1.Width/2) Panel1.Top = (Root.Height/2) - (Panel1.Height/2) Panel1.Elevation = 100 Panel1.BringToFront Dim cmd As DBCommand cmd.Initialize cmd.Name = "selectBypass" ' Trae la contraseña desde la tabla "BYPASS" en web. (La ultima es KMT2025) cmd.Parameters = Array As Object(user.Text.Trim) reqManager.ExecuteQuery(cmd , 0, "bypass") ' Log($"${Starter.DBReqServer}, ${user.Text}, ${Subs.traeAlmacen}, ${Subs.traeRuta}"$) End Sub Private Sub i_engranes_LongClick ' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE) ' Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean) ' Subs.copiaDB(Result) ' Dim x As Int = "a" Dim reqManagerW As DBRequestManagerW reqManagerW.Initialize cmd.Initialize cmd.Name = "select_usuario_guna_KELL" cmd.Parameters = Array As Object(user.Text, pass.Text) reqManagerW.ExecuteQuery(Starter.DBReqServer, cmd, Me, "elUsuario") Wait For elUsuario_Completed (res1 As TResultado) Log("tag: " & res1.tag & " Success: " & res1.Success) If res1.Success Then Subs.logJobDoneResultados(res1.resultado) Else Log(res1.ErrorMessage) End If cmd.Name = "select_version_KELL" cmd.Parameters = Array() reqManagerW.ExecuteQuery(Starter.DBReqServer, cmd, Me, "laVersion") Wait For laVersion_Completed (res2 As TResultado) Log("tag: " & res2.tag & " Success: " & res2.Success) If res2.Success Then Subs.logJobDoneResultados(res2.resultado) Else Log(res2.ErrorMessage) End If cmd.Name = "delete_geoPass" cmd.Parameters = Array As Object( Subs.traeAlmacen, Subs.traeRuta) reqManagerW.ExecuteCommand(Starter.DBReqServer, cmd, Me, "borraGeoPass") Wait For borraGeoPass_Completed (res3 As TResultado) Log("tag: " & res3.tag & " Success: " & res3.Success) If res3.Success Then Subs.logJobDoneResultados(res3.resultado) Else Log(res3.ErrorMessage) End If End Sub Sub elUsuario_Completed (res As DBResult) Log("abc: " & res.tag) Log("wrapper: " & res) End Sub Sub laVersion_Completed (res As DBResult) Log("def: " & res.tag) Log("wrapper2: " & res) End Sub Sub B_SERVER_Click Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("SERVER")) Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("SERVER",E_SERVER.text)) Starter.DBReqServer = E_SERVER.text If logger Then Log("Inicializamos reqManager con " & Starter.DBReqServer) reqManager.Initialize(Me, Starter.DBReqServer) CallSubDelayed2(Starter, "reinicializaReqManager", Starter.DBReqServer) Panel1.Visible = False Entrar.Visible = True End Sub Sub B_MACIMP_Click Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("MACIMP")) Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("MACIMP","0")) Panel1.Visible = False End Sub Sub ListView1_ItemClick (Position As Int, Value As Object) E_SERVER.text = Value End Sub Sub ImageView1_Click End Sub Sub B_BorrarFinDia_Click p_finDia.Visible = True p_finDia.BringToFront End Sub Sub b_fdCancelar_Click p_finDia.Visible = False p_finDia.SendToBack End Sub Sub b_findiaOk_Click c = Starter.skmt.ExecQuery2("select count(*) as passOk from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ? and CAT_VA_VALOR = ?", Array As String ("FINDIA_PASS", et_autSup.Text)) c.Position = 0 If c.GetString("passOk") = 1 Or et_autSup.Text = "FinDiaAutOk" Then Starter.skmt.ExecNonQuery("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'FINDIA_FECHA'") ToastMessageShow("Ya se puede hacer FIN DIA!!", True) p_finDia.Visible = False p_finDia.SendToBack Else Msgbox("Código de autorización equivocado", "AVISO") 'ignore End If c.Close End Sub 'Enviamos la base de datos por correo Private Sub b_envioBD_Click Public Provider As FileProvider Provider.Initialize Dim FileName As String = "kmt.db" Log("************* : "&Provider.SharedFolder) Sleep(1000) 'Copy the shared file to the shared folder File.Copy(File.DirInternal, FileName, Provider.SharedFolder, "kmt_kelloggs.db") Dim email As Email email.To.Add("soporte@keymonsoft.com") email.Subject = "Envío base de datos de ruta con problemas." email.Attachments.Add(Provider.GetFileUri("kmt_kelloggs.db")) ' 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 Private Sub b_cargaLocal_Click p_cargaLocal.left = (Root.Width / 2) - (p_cargaLocal.Width / 2) p_cargaLocal.BringToFront p_cargaLocal.Elevation = 100dip p_cargaLocal.Top = E_SERVER.top p_cargaLocal.Visible = True ' kh.string2date("10/03/2023") Log("CL" & (3 * DateTime.GetDayOfMonth(DateTime.now)) & (DateTime.GetMonth(DateTime.now) * 4)) End Sub Private Sub p_cargaLocal_Click End Sub 'Recibe la contraseña para la carga local -> "CL" + diaMes * 3 + numMes * 4 'Ej: Si por ejemplo, hoy es 5 de agosto, ponemos : CL1532 'Si se agrega un numero despues de la contraseña, lo toma como los dia hacia atras para tomar el dìa de respaldo. 'Ej: CL1532-2 Serìa restaurar el respaldo del dìa 3 de agosto (5-2), puede haber espacios entre la clave y el numero de dìas. Private Sub b_cargaLocalOk_Click Private pass1 As String = "CL" & (3 * DateTime.GetDayOfMonth(DateTime.now)) & (DateTime.GetMonth(DateTime.now) * 4) If et_cargaLocal.Text.StartsWith(pass1) Then p_cargaLocal.Visible = False ' Log(et_cargaLocal.Text.Length > pass1.Length) Log(et_cargaLocal.text) If et_cargaLocal.Text.Length = pass1.Length Then ' Si no se especifica nada, la fecha es hoy MENOS un día. et_cargaLocal.text = et_cargaLocal.text & "-1" If DateTime.GetDayOfWeek(DateTime.Now) = 2 Then ' Si hoy es LUNES, la fecha es hoy menos 2 dias. et_cargaLocal.text = et_cargaLocal.text & "-2" End If End If Log(et_cargaLocal.text) Log(DateTime.GetDayOfWeek(DateTime.Now)) ' RD_fechaRestauracion - Si esta en blanco, la fecha de restauracion es HOY, si no, es la especificada en "ticks". kh.RD_fechaRestauracion = "" ' Si a la contraseña se le agrega un -1 o -2, aqui se procesa para saber de cuantos dias antes traemos el respaldo. If et_cargaLocal.Text.Length > pass1.Length Then Private dias As String = et_cargaLocal.Text.SubString(pass1.Length).Trim ' Log("|" & dias & "|") If IsNumber(dias) Then Dim p As Period p.Days = dias Dim nextdate As Long = DateUtils.AddPeriod(DateTime.Now, p) kh.RD_fechaRestauracion = nextdate Log($"Restauramos respaldo de fecha: $Date{nextdate}"$) Else Log("NOT NUMBER") End If End If DateTime.DateFormat = "YYYY-MMM-dd" Private fechaRes As String = DateTime.Date(DateTime.now) If kh.RD_fechaRestauracion <> "" Then fechaRes = DateTime.Date(kh.RD_fechaRestauracion) Msgbox($"Se va a restaurar el respaldo de la fecha: ${fechaRes}"$, "AVISO") kh.revisaRkmtAttached kh.RD_restaura_cat_variables kh.RD_restaura_cat_gunaprod kh.RD_restaura_cat_gunaprod2 kh.RD_restaura_cat_detalle_paq kh.RD_restaura_promos_comp Sleep(500) kh.RD_restaura_kmt_info ime.HideKeyboard ' DateTime.DateFormat = "yyyyMMdd" ' Starter.skmt.ExecNonQuery($"update USUARIOA set fecha = '${DateTime.Date(DateTime.Now)}'"$) ToastMessageShow("¡¡CARGA EXITOSA!!", True) Else ToastMessageShow("CODIGO EQUIVOCADO", True) End If et_cargaLocal.Text = "" End Sub Private Sub b_cargaLocalCancelar_Click p_cargaLocal.Visible = False End Sub Private Sub b_importarBD_Click Private FH As FileHandler FH.Initialize Wait For (FH.Load) Complete (Result As LoadResult) 'Abre un fileManager para seleccionar la base de datos a importar. File.Copy(Result.Dir, Result.FileName, File.DirInternal, "kmt.db") 'Copia la base de datos seleccionada al directorio interno. Starter.skmt.Initialize(Starter.ruta,"kmt.db", True) 'Reiniciliza la base de datos con la recien importada. Private c As Cursor = Starter.skmt.ExecQuery("select CAT_VA_VALOR from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'APP_NAME'") If c.RowCount > 1 Then c.Position = 0 ToastMessageShow($"BD de ${c.GetString("APP_NAME")} importada!"$, True) Else ToastMessageShow($"¡BD importada!"$, True) End If End Sub Private Sub cb_geocerca_CheckedChange(Checked As Boolean) Starter.skmt.ExecNonQuery("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'GEOCERCA'") Starter.skmt.ExecNonQuery($"insert into CAT_VARIABLES (CAT_VA_DESCRIPCION, CAT_VA_VALOR) values ('GEOCERCA', '${Checked}')"$) End Sub Private Sub cb_cartaPorte_CheckedChange(Checked As Boolean) Starter.skmt.ExecNonQuery("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'CARTAPORTE'") Starter.skmt.ExecNonQuery($"insert into CAT_VARIABLES (CAT_VA_DESCRIPCION, CAT_VA_VALOR) values ('CARTAPORTE', '${Checked}')"$) End Sub Private Sub et_maxClientesNuevos_TextChanged (Old As String, New As String) If IsNumber(New) Then Starter.skmt.ExecNonQuery("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'MAXCTESNUEVOS'") Starter.skmt.ExecNonQuery($"insert into CAT_VARIABLES (CAT_VA_DESCRIPCION, CAT_VA_VALOR) values ('MAXCTESNUEVOS', '${New}')"$) End If End Sub private Sub l_geocerca_Click If cb_geocerca.Enabled = False Then ToastMessageShow("Ingrese la contraseña para modificar", True) End Sub Private Sub et_geocerca_TextChanged (Old As String, New As String) Private x As Cursor = Starter.skmt.ExecQuery($"select CAT_VA_VALOR from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'FINDIA_PASS'"$) Log(New & "|" & Starter.passSupervisor) If x.RowCount > 0 Then x.Position = 0 If New = x.GetString("CAT_VA_VALOR") Or New = Starter.passSupervisor Then cb_geocerca.Enabled = True cb_cartaPorte.Enabled = True et_maxClientesNuevos.Enabled = True l_geocerca.TextColor = Colors.RGB(43, 154, 211) l_cartaPorte.TextColor = Colors.RGB(43, 154, 211) l_maxClientesNuevos.TextColor = Colors.RGB(43, 154, 211) et_maxClientesNuevos.TextColor = Colors.RGB(43, 154, 211) Else cb_geocerca.Enabled = False cb_cartaPorte.Enabled = False et_maxClientesNuevos.Enabled = False l_geocerca.TextColor = Colors.LightGray l_cartaPorte.TextColor = Colors.LightGray l_maxClientesNuevos.TextColor = Colors.LightGray et_maxClientesNuevos.TextColor = Colors.LightGray End If Else if New = Starter.passSupervisor Then cb_geocerca.Enabled = True cb_cartaPorte.Enabled = True et_maxClientesNuevos.Enabled = True l_geocerca.TextColor = Colors.RGB(43, 154, 211) l_cartaPorte.TextColor = Colors.RGB(43, 154, 211) l_maxClientesNuevos.TextColor = Colors.RGB(43, 154, 211) End If End Sub Private Sub b_extras_Click p_extras.Top = E_SERVER.Top kh.centraPanel(p_extras, Root.Width) p_extras.Elevation = 100dip p_extras.BringToFront p_extras.Visible = True End Sub Private Sub p_extras_Click End Sub Private Sub b_aceptarExtras_Click et_geocerca.Text = "" p_extras.Visible = False 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 Sub CreateRequest As DBRequestManager Dim req As DBRequestManager req.Initialize(Me, Starter.DBReqServer) Return req End Sub Sub CreateCommand(Name As String, Parameters() As Object) As DBCommand Dim cmd As DBCommand cmd.Initialize cmd.Name = Name If Parameters <> Null Then cmd.Parameters = Parameters Return cmd End Sub Sub GetFecha Dim req As DBRequestManager = CreateRequest Dim cmd As DBCommand = CreateCommand("select_fecha", Array(Null)) Wait For (req.ExecuteQuery(cmd, 0, Null)) JobDone(j As HttpJob) If j.Success Then req.HandleJob(j) Wait For (req) req_Result(res As DBResult) 'work with result req.PrintTable(res) Else Log("ERROR: " & j.ErrorMessage) End If j.Release End Sub Private Sub ImageView1_LongClick ' Log("###### TRAEMOS FECHA #######") ' GetFecha ' Log("traeConexion") ' Private reqManagerX As DBRequestManager ' reqManagerX.Initialize(Me, "http://keymon.net:9010") ' Private cmdX As DBCommand ' cmdX.Initialize ' cmdX.Name = "update_usuario_guna_nobajas" ' cmdX.Parameters = Array As Object("CDAZA") ' reqManagerX.Executequery(cmdX, 0, "traeConexion") If Subs.traeAlmacen <> "" Then linker.VerifyAndLinkDevice(Subs.traeAlmacen, Subs.traeRuta) End If End Sub Sub ponUsuario Private cu As Cursor = Starter.skmt.ExecQuery("select USUARIO from USUARIOA") If cu.RowCount > 0 Then cu.Position = 0 If cu.GetString("USUARIO") <> "" Then user.Text = cu.GetString("USUARIO") End If End Sub Private Sub Label4_Click clicked = clicked + 1 Log(clicked) If clicked >= 5 Then clicked = 0 ponUsuario End If End Sub Sub Linker_Response(Status As String) ' << AÑADE ESTE SUB [New Query] If Starter.Logger Then LogColor($"Respuesta de DeviceLinker para la verificación del dispositivo: ${Status}"$, Colors.Magenta) ' Select Status Case "UUID_ERROR" Log("Error interno al obtener el identificador único del dispositivo.") ToastMessageShow("Error interno al obtener el identificador único del dispositivo.", True) Case "HTTP_ERROR" LogColor("Error HTTP al verificar el dispositivo: " & linker.lastJobDoneError, Colors.Red) ToastMessageShow("Error de conexión al servidor durante la verificación del dispositivo.", True) Case "SERVER_LOGIC_ERROR" Log("El servidor no proporcionó un estado de verificación válido. Contacte a soporte.") ToastMessageShow("El servidor no proporcionó un estado de verificación válido. Contacte a soporte.", True) Case "OK" Log("Dispositivo ligado y verificado exitosamente.") ToastMessageShow("Dispositivo verificado y ligado correctamente.", False) ' Aquí puedes añadir lógica adicional si la verificación es exitosa, por ejemplo, habilitar ciertos botones o continuar con el flujo normal. Case "NO_REGISTRADO" Log("Dispositivo NO registrado.") ToastMessageShow("Dispositivo NO registrado.", False) Case "REGISTRO_NUEVO" Log("¡¡Registro nuevo!!") ToastMessageShow("¡¡Registro nuevo!!", False) Case "YA_REGISTRADO" Log("¡¡El dispositivo ya esta registrado con otra ruta!!") ToastMessageShow("¡¡El dispositivo ya esta registrado con otra ruta!!", True) Case Else ' Otros estados que tu servidor pueda devolver (ej. "UNAUTHORIZED", "PENDING_APPROVAL") Log($"Estado de verificación del dispositivo: ${Status}"$) ToastMessageShow($"Verificación del dispositivo: ${Status}"$, True) ' Puedes decidir si bloquear la funcionalidad o mostrar un mensaje específico según el estado. End Select End Sub