From e4c820a3b4ae81869360d1b939229f0733b04911 Mon Sep 17 00:00:00 2001 From: cheveguerra Date: Mon, 11 Sep 2023 21:57:21 -0600 Subject: [PATCH 1/5] 11/9/23 - Cambio de ligas de Github. --- B4A/B4XMainPage.bas | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/B4A/B4XMainPage.bas b/B4A/B4XMainPage.bas index 6ca03c3..b3c85d6 100644 --- a/B4A/B4XMainPage.bas +++ b/B4A/B4XMainPage.bas @@ -10,12 +10,13 @@ Version=9.85 '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=..\..\gitpull.bat +'Ctrl + click ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=git&Args=pull '########################################################################################################### '###################### PUSH ############################################################# -'Ctrl + click ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=github&Args=..\..\ +'Ctrl + click ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=github&Args=..\..\ '########################################################################################################### #End Region +'Ctrl + click ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=github&Args=..\..\ Sub Class_Globals From 482ec71297f9e6dcc5efb70f6c6782bf6d8f3593 Mon Sep 17 00:00:00 2001 From: cheveguerra Date: Fri, 15 Sep 2023 17:03:14 -0600 Subject: [PATCH 2/5] 15/9/23 - Codigo de prueba en C_Subs MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Código de prueba para hacer un DBRequest desde una clase y "tratar" de simplificar algunas funciones. --- B4A/B4XMainPage.bas | 1 - B4A/C_Principal.bas | 17 ++ B4A/C_Promos.bas | 12 +- B4A/C_Subs.bas | 497 +++++++++++++++++++++++++++++++++++++++++ B4A/CameraExClass2.bas | 2 +- B4A/Mariana.b4a | 21 +- B4A/Starter.bas | 10 +- 7 files changed, 537 insertions(+), 23 deletions(-) create mode 100644 B4A/C_Subs.bas diff --git a/B4A/B4XMainPage.bas b/B4A/B4XMainPage.bas index b3c85d6..6387a7f 100644 --- a/B4A/B4XMainPage.bas +++ b/B4A/B4XMainPage.bas @@ -18,7 +18,6 @@ Version=9.85 #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 diff --git a/B4A/C_Principal.bas b/B4A/C_Principal.bas index 535369d..1d007cf 100644 --- a/B4A/C_Principal.bas +++ b/B4A/C_Principal.bas @@ -6,6 +6,7 @@ Version=11.5 @EndOfDesignText@ Sub Class_Globals Public rp As RuntimePermissions + dim s as C_Subs Private Root As B4XView 'ignore Private xui As XUI 'ignore Dim conectado As String @@ -233,6 +234,7 @@ Private Sub B4XPage_Created (Root1 As B4XView) Root = Root1 'load the layout to Root Root.LoadLayout("principal") + s.Initialize(Me, "Subs") EJECUTANDO=1 Dim ruta As String img2.Visible =False @@ -955,6 +957,7 @@ Sub cargar_Click End Sub Sub JobDone(Job As HttpJob) + Log("JOBDONE PRINCIPAL") ' If Job.JobName = "DBRequest" Then ' Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) ' Log($"Tag: ${RESULT.tag}, success=${Job.Success}"$) @@ -1731,6 +1734,20 @@ Private Sub B4XPage_CloseRequest As ResumableSub Return False End Sub +'############################################################################################ +'################### Codigo de prueba JAGU, no poner atencion ############################ +Sub connecta_LongClick + ProgressDialogShow("Enviamos") + s.reqManagerReInit 'Reiniciamos el DBReqManager por si hay modificacion en el servidor. + s.envioTest 'Llamamos envioTest de C_Subs. +End Sub + +Sub Subs_envioOk(succes As Boolean) + Log("###################### " & succes) + ProgressDialogHide +End Sub +'################################ Termina codigo de prueba ############################# + Sub connecta_Click B4XPages.MainPage.reqManager.Initialize(Me, Starter.server) Log(Starter.server) diff --git a/B4A/C_Promos.bas b/B4A/C_Promos.bas index 8805ab9..5696708 100644 --- a/B4A/C_Promos.bas +++ b/B4A/C_Promos.bas @@ -4,7 +4,7 @@ ModulesStructureVersion=1 Type=Class Version=11.5 @EndOfDesignText@ -Sub Mods +Sub Mods 'ignore '20230526 - Se cambió en b_terminar_click y b_continuar_click la funcion "guardaProducto" por "guardaProductoSinGestion", para que no ponga que ya esta guardada la orden y no deje borrar productos. End Sub @@ -44,8 +44,8 @@ Sub Class_Globals Private b_continuar As Button Private p_prodsVariables As Panel Dim laPromo = "", elCliente = "" As String - Dim prodsPedidoActual As String - Dim montoPedidoActual As String + Dim prodsPedidoActual As String 'ignore + Dim montoPedidoActual As String 'ignore Dim promosMap As Map End Sub @@ -155,8 +155,8 @@ Sub muestraPromo(promo As String, cliente As String) ' jpeg = c2.GetBlob("CAT_GP_IMG") ' ins.InitializeFromBytesArray(jpeg, 0, jpeg.Length) ' bmp.Initialize2(ins) - Private indicePV = pv.IndexOf(p) - Private estePrecio = listaPreciosPV.Get(indicePV) + Private indicePV As String = pv.IndexOf(p) + Private estePrecio as string = listaPreciosPV.Get(indicePV) Private thisProd As Map = prodsPromo.Get(p) If thisLog Then Log(thisProd) clv_prodsVariabes.Add(CreateListItem(Subs.traeProdNombre(p)&CRLF&"Hay " & invDispPromo.Get(p) & " $" & estePrecio, estePrecio, invDispPromo.Get(p), clv_prodsVariabes.AsView.Width, 50dip, Null, p), p) @@ -426,7 +426,7 @@ Private Sub b_continuar_Click lv_prodsFijos.Clear ' Activity_KeyPress(KeyCodes.KEYCODE_BACK) ' CallSubDelayed2(productos, "Activity_KeyPress", KeyCodes.KEYCODE_BACK) - Private prodspage As C_Productos + Private prodspage As C_Productos 'ignore If prodspage.IsInitialized Then prodspage.lv_catalogos.Visible = True prodspage.lv_promos.Visible = False diff --git a/B4A/C_Subs.bas b/B4A/C_Subs.bas new file mode 100644 index 0000000..b4b26b6 --- /dev/null +++ b/B4A/C_Subs.bas @@ -0,0 +1,497 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=12.2 +@EndOfDesignText@ +Sub Class_Globals + 'These global variables will be declared once when the application starts. + 'These variables can be accessed from all modules. +' Public GZip As GZipStrings 'Usa la libreria CompressStrings +' Private su As StringUtils 'Usa la libreria StringUtils + Dim reqManager As DBRequestManager + Private EventName As String 'ignore + Private CallBack As Object 'ignore + Dim phn As Phone + Dim devModel As String + Dim db, kmt, errorLog As SQL 'Requiere la libreria "SQL" 'ignore + Dim ssid As String 'ignore + Dim reqsList As List + Private subsLogs As Boolean = False +End Sub + +'You can add more parameters here. +Public Sub Initialize (vCallback As Object, vEventName As String) As Object + reqsList.Initialize + EventName = vEventName + CallBack = vCallback + db = dbInit + reqManager = reqManagerInit + Return Me +End Sub + +'Inicializa la BD con "kmt.db" en File.DirInternal, si el archivo no existe, lo copia desde File.DirAssets. +'Dispara el evento "dbOk" cuando termina. +Sub dbInit As SQL + If File.Exists(File.DirInternal, "kmt.db") = False Then File.Copy(File.DirAssets, "kmt.db", File.DirInternal, "kmt.db") + db.Initialize(File.DirInternal,"kmt.db", True) + dbOk(True) + Log(db.IsInitialized) + Return db +End Sub + +Sub dbOk(Success As Boolean) + If SubExists(CallBack, EventName & "_dbOk") Then + CallSub2(CallBack, EventName & "_dbOk", Success) + End If +End Sub + +Sub reqManagerInit As DBRequestManager + Private rm As DBRequestManager + rm.Initialize(Me, traeDBReqServerDeBD(db)) + Log($"Inicializamos reqManager con ${traeDBReqServerDeBD(db)}"$) + Return rm +End Sub + +Sub reqManagerReInit + Log("reqManager ReInit") + reqManager = reqManagerInit +End Sub + +Sub envioTest + reqsList.Initialize ' Ponemos la lista de DBRequests en cero. + Private cmd As DBCommand + cmd.Initialize + cmd.Name = "select_fecha" + For i = 0 To 20 + reqManager.ExecuteQuery(cmd, 0, $"select_fecha_${i}"$) + reqsList.Add($"select_fecha_${i}"$) + Next +End Sub + +'Dispara el evento "_envioOk" del caller. +Sub envioOk(Success As Boolean) +' Log($"_ENVIOOK_"$) + If SubExists(CallBack, EventName & "_envioOk") Then + CallSub2(CallBack, EventName & "_envioOk", Success) + End If +End Sub + +Sub JobDone(Job As HttpJob) + LogColor("C_SUBS JOBDONE - " & Job.Success, Colors.Red) + If Job.Success = False Then + LogColor("** " & Job.Tag & " Error: " & Job.ErrorMessage, Colors.Red) + Else + If Job.JobName = "DBRequest" Then + Dim resultado As DBResult = reqManager.HandleJob(Job) + If reqsList.IndexOf(resultado.Tag) > -1 Then reqsList.RemoveAt(reqsList.IndexOf(resultado.Tag)) + If resultado.Tag = "select_fecha" Then + For Each records() As Object In resultado.Rows + For Each k As String In resultado.Columns.Keys + Log(resultado.Tag & ": " & k & ": " & records(resultado.Columns.Get(k))) + Next + Next + End If + Log(reqsList.Size) + If reqsList.Size = 0 Then 'Ya no hay DBReqs pendientes. + envioOk(True) + Log("-= FIN =-") + End If + End If + End If + Job.Release +End Sub + +'Pone el valor de phn.Model en la variable global "devModel" +Sub getPhnId As String 'ignore + 'Requiere la libreria "Phone" + devModel = phn.Model + If devModel.Length <= 3 Then 'Si phn.Model esta en blanco ... + Dim t As String = phn.GetSettings("android_id") 'Intentamos con "android_id" + devModel = t + End If + If devModel.Length >= 3 Then 'Si tenemos valor para phn.Model + File.WriteString(File.DirInternal, "phnId.txt", devModel) 'Sobreescribimos archivo phnId.txt with deviceId +' Log("Tenemos phnId: "&devModel&" "&File.DirInternal&"/phn.txt sobreescrito") + Else If devModel.Length < 3 Then ' Si no tenemos valor, lo leemos de phnId.txt + Dim s As String = File.ReadString(File.DirInternal, "phnId.txt") + devModel = s +' Log("Leemos id de "&File.DirInternal&"/phnId.txt") +' Log(devModel) + End If + Return devModel +End Sub + +'Convierte una fecha al formato yyMMddHHmmss +Sub fechaKMT(fecha As String) As String 'ignore +' Log(fecha) + Dim OrigFormat As String = DateTime.DateFormat 'save orig date format + DateTime.DateFormat="yyMMddHHmmss" + Dim nuevaFecha As String=DateTime.Date(fecha) + DateTime.DateFormat=OrigFormat 'return to orig date format +' Log(nuevaFecha) + Return nuevaFecha +End Sub + +'Escribimos las coordenadas y fecha a un archivo de texto +Sub guardaInfoEnArchivo(coords As String) 'ignore + ' Cambiamos el formato de la hora + Dim OrigFormat As String=DateTime.DateFormat 'save orig date format + DateTime.DateFormat="MMM-dd HH:mm:ss" + Dim lastUpdate As String=DateTime.Date(DateTime.Now) + DateTime.DateFormat=OrigFormat 'return to orig date format + + Dim ubic As String = coords&","&lastUpdate + Dim out As OutputStream = File.OpenOutput(File.DirRootExternal, "gps.txt", True) + Dim s As String = ubic & CRLF + Dim t() As Byte = s.GetBytes("UTF-8") + out.WriteBytes(t, 0, t.Length) + out.Close +End Sub + +'Escribimos las coordenadas (latitud, longitud, fecha) y fecha a una BD +Sub guardaInfoEnBD(coords As String) 'ignore + Log("Guardamos ubicacion en BD - "&coords) + Try + Dim latlon() As String = Regex.Split("\|", coords) + If latlon.Length < 2 Then latlon = Regex.Split(",", coords) 'Si son menos de 2, entonces estan separadas por comas y no por "|" + If subsLogs Then Log("LatLon="&latlon) + kmt.ExecNonQuery2("INSERT INTO RUTA_GPS(FECHA, LAT, LON) VALUES (?,?,?)", Array As Object (latlon(2),latlon(0),latlon(1))) + Catch + LogColor(LastException, Colors.red) + End Try +End Sub + +'Limpiamos la tabla RUTA_GPS de la BD +Sub deleteGPS_DB 'ignore + kmt.ExecNonQuery("delete from RUTA_GPS") + kmt.ExecNonQuery("vacuum;") + ToastMessageShow("Borramos BD Coords GPS", False) +End Sub + +'Limpiamos la tabla errorLog de la BD +Sub deleteErrorLog_DB 'ignore + errorLog.ExecNonQuery("delete from errores") + errorLog.ExecNonQuery("vacuum;") + ToastMessageShow("BD Errores Borrada", False) +End Sub + +'Mandamos "coords" en un mensaje a "Sprvsr" +'Sub mandamosLoc(coords As String) 'ignore +'' Log("Iniciamos mandamosLoc "&coords) +'' Log("locRequest="&Tracker.locRequest) +' guardaInfoEnBD(coords)'Escribimos coordenadas y fecha a una bd +' Dim t As String +' If Tracker.locRequest="Activa" Then +' If PushService.au = 1 Then +' t = "au" ' es una actualizacion +' Else +' t = "u" ' es una peticion +' End If +' Dim params As Map = CreateMap("topic":"Sprvsr", "coords":coords, "t":t, "b":PushService.battery, "mt":Main.montoActual) +' CallSub2(PushService, "mandaMensaje",params) +' Tracker.locRequest="Enviada" +' CallSubDelayed(Tracker,"CreateLocationRequest") +' End If +'End Sub + +'Regresa la fecha y hora de hoy a las 00:00 en el formato "yyMMddHHMMSS" +Sub fechaInicioHoy As String 'ignore + Dim OrigFormat As String = DateTime.DateFormat 'save orig date format + DateTime.DateFormat="yyMMdd" + Private h As String = DateTime.Date(DateTime.Now)&"000000" + DateTime.DateFormat=OrigFormat 'return to orig date format + Log("Hoy="&h) + Return h +End Sub + +'Guardamos "texto" a la bitacora +Sub log2DB(texto As String) 'ignore + LogColor(fechaKMT(DateTime.Now)&" - log2BD: '"&texto&"'", Colors.LightGray) + kmt.ExecNonQuery2("INSERT INTO bitacora(fecha, texto) VALUES (?,?)", Array As Object (fechaKMT(DateTime.now), texto)) +End Sub + +'Regresa verdadero si ya pasaron XX minutos de la fecha dada +Sub masDeXXMins(hora As Int, mins As Int) As Boolean 'ignore + If (hora + mins * DateTime.TicksPerMinute) < DateTime.Now Then + Return True + Else + Return False + End If +End Sub + +'Regresa verdadero si ya pasaron XX minutos de la fechaKMT dada +Sub masDeXXMinsKMT(hora As String, mins As Int) As Boolean 'ignore + Try + ' LogColor($"Hora=${fechaKMT(fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute)}, Mins=${mins}, Actual=${fechaKMT(DateTime.Now)}"$,Colors.red) + If fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute < DateTime.Now Then + ' Log("+++ +++ "&fechaKMT(fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute) & " < " & fechaKMT(DateTime.Now)) + Return True + Else + ' Log("+++ +++ "&fechaKMT(fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute) & " > " & fechaKMT(DateTime.Now)) + Return False + End If + Catch + Log(LastException) + End Try +End Sub + +'Limpiamos la tabla "bitacora" de la BD +Sub borraLogDB 'ignore + LogColor("Borramos BD de log", Colors.Magenta) + kmt.ExecNonQuery("delete from bitacora") + kmt.ExecNonQuery("vacuum;") +End Sub + +'Monitoreamos los servicios para ver si estan activos (No pausados), y si no, los reniciamos +'Sub Monitor 'ignore +' Private monitorStatus As Boolean = True +' LogColor("Corriendo Subs.Monitor", Colors.RGB(161,150,0)) +' If IsPaused(Tracker) Then +' log2DB("Reiniciando 'Tracker Pausado' desde Subs.Monitor") +' StartService(Tracker) +' monitorStatus = False +' Else +' CallSubDelayed(Tracker, "revisaFLP") +' End If +' If IsPaused(PushService) Then +' log2DB("Reiniciando 'PushService Pausado' desde Subs.Monitor") +' StartService(PushService) +' monitorStatus = False +' Else +' revisaPushService +' End If +' If monitorStatus Then LogColor(" +++ +++ Servicios Activos", Colors.Green) +'End Sub + +'Convierte una fecha en formato YYMMDDHHMMSS a Ticks +Sub fechaKMT2Ticks(fKMT As String) As Long 'ignore + Try + If fKMT.Length = 12 Then + Private parteFecha As String = fKMT.SubString2(0,6) + Private parteHora As String = fKMT.SubString(6) + Private OrigFormat As String = DateTime.DateFormat 'save original date format + DateTime.DateFormat="yymmdd" + DateTime.TimeFormat="HHmmss" + Private ticks As Long = DateTime.DateTimeParse(parteFecha,parteHora) + DateTime.DateFormat=OrigFormat 'return to original date format + Return ticks + Else + Log("Formato de fecha incorrecto, debe de ser 'YYMMDDHHMMSS', no '"&fKMT&"' largo="&fKMT.Length) + Return 0 + End If + Catch + Log(LastException) + LogColor($"Fecha dada: ${fKMT}, Parte Fecha: ${parteFecha}, Parte Hora: ${parteHora}"$, Colors.Red) + Return 0 + End Try +End Sub + +Sub InstallAPK(dir As String, apk As String) 'ignore + If File.Exists(dir, apk) Then + Dim i As Intent + i.Initialize(i.ACTION_VIEW, "file://" & File.Combine(dir, apk)) + i.SetType("application/vnd.android.package-archive") + StartActivity(i) + End If +End Sub + +'Copia la base de datos del almacenamiento interno al externo en el directorio kmts. +Sub copiaDB(result As Boolean) 'ignore + ToastMessageShow("copiaDB", False) + If result Then + Dim p As String + If File.ExternalWritable Then + p = File.DirRootExternal +' Log("Externo") + Else + p = File.DirInternal +' Log("Interno") + 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.DirRootExternal&theDir,"cedex_kmt.db") + File.Copy(File.DirInternal,"errorLog.db",File.DirRootExternal&theDir,"cedex_errorLog.db") + ToastMessageShow("BD copiada!", False) + Catch + ToastMessageShow("No se pudo hacer la copia: "&LastException, True) + End Try + Log("rootExternal="&p) + Log("File.DirInternal="&File.DirInternal) + Log("File.DirRootExternal="&File.DirRootExternal) + Else + ToastMessageShow("Sin permisos", False) + End If +End Sub + +'Hace visible y trae al frente el panel con los parametros "Top" y "Left" dados. +Sub panelVisible(panel As Panel, top As Int, left As Int) 'ignore + panel.BringToFront + panel.Visible = True + panel.Top = top + panel.Left = left +End Sub + +'Centra una etiqueta dentro de un elemento superior. +Sub centraEtiqueta(elemento As Label, anchoElementoSuperior As Int) 'ignore + elemento.Left = Round(anchoElementoSuperior/2)-(elemento.Width/2) +End Sub + +'Centra un panel horizontalmente dentro de un elemento superior. +Sub centraPanel(elemento As Panel, anchoElementoSuperior As Int) 'ignore + elemento.Left = Round(anchoElementoSuperior/2)-(elemento.Width/2) +End Sub + +'Centra un panel verticalmente dentro de un elemento superior. +Sub centraPanelV(elemento As Panel, altoElementoSuperior As Int) 'ignore + elemento.Top = Round(altoElementoSuperior/2)-(elemento.Height/2) +End Sub + +'Centra una barra de progreso dentro de un elemento superior. +Sub centraProgressBar(elemento As ProgressBar, anchoElementoSuperior As Int) 'ignore + elemento.Left = Round(anchoElementoSuperior/2)-(elemento.Width/2) +End Sub + +'Regresa el usuario de la tabla USUARIOA si es que existe, si no existe, regresa "SinUsuario". +Sub buscaDBUsuario As String 'ignore + Private c As Cursor + Private usuario As String = "SinUsuario" + c=kmt.ExecQuery("select USUARIO from usuarioa") + c.Position=0 + If c.RowCount > 0 Then usuario = c.GetString("USUARIO") + Return usuario +End Sub + +'Regresa la fecha en el formato "MM/dd/yyyy" +Sub traeFecha As String 'ignore + DateTime.DateFormat = "MM/dd/yyyy" + Private sDate As String = DateTime.Date(DateTime.Now) + Private sTime As String = DateTime.Time(DateTime.Now) + Return sDate & sTime +End Sub + +'Guarda el nombre y version de la app en CAT_VARIABLES. +Sub guardaAppInfo(skmt As SQL) 'ignore + skmt.ExecNonQuery("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'EMPRESA' or CAT_VA_DESCRIPCION = 'APP_NAME' or CAT_VA_DESCRIPCION = 'APP_VERSION'") + skmt.ExecNonQuery($"insert into CAT_VARIABLES (CAT_VA_DESCRIPCION, CAT_VA_VALOR) values ('APP_NAME', '${Application.LabelName}')"$) + skmt.ExecNonQuery($"insert into CAT_VARIABLES (CAT_VA_DESCRIPCION, CAT_VA_VALOR) values ('APP_VERSION', '${Application.VersionName}')"$) +End Sub + +'Muestra en el Log los campos y valores que regresan en el JobDone. +Sub logJobDoneResultados(resultado As DBResult) 'ignore + For Each records() As Object In resultado.Rows + LogColor($"====== ${resultado.Tag} - REGISTROS = ${resultado.Rows.Size}"$, Colors.RGB(215,37,0)) + For Each k As String In resultado.Columns.Keys + LogColor(k & " = " & records(resultado.Columns.Get(k)), Colors.RGB(215,37,0)) + Next + Next +End Sub + +'Regresa la base de datos especificada ya inicializada. +Sub inicializaBD(ruta As String, BDName As String) As SQL 'ignore + Dim skmt As SQL + If File.Exists(ruta, BDName) = False Then + File.Copy(File.DirAssets, BDName, ruta, BDName) + LogColor($"Copiamos ${BDName} de ${File.DirAssets} a ${ruta}"$,Colors.Green) + End If + skmt.Initialize(ruta, BDName, True) + Return skmt +End Sub + +'Agrega una columna a la tabla especificada. +'Hay que indicar el "tipo" de la columna (TEXT, INTEGER, ETC) +'Ej. agregaColumna("TABLA", "COLUMNA", "TIPO") +Sub agregaColumna(tabla As String, columna As String, tipo As String) 'ignore + Try 'Intentamos usar "pragma_table_info" para revisar si existe la columna en la tabla + Private c As Cursor = db.ExecQuery($"SELECT COUNT(*) AS fCol FROM pragma_table_info('${tabla}') WHERE name='${columna}'"$) + c.Position = 0 + If c.GetString("fCol") = 0 Then 'Si no esta la columna la agregamos + db.ExecNonQuery($"ALTER TABLE ${tabla} ADD COLUMN ${columna} ${tipo}"$) + Log($"Columna "${columna} ${tipo}", agregada a "${tabla}"."$) + End If + Catch 'Si no funciona "pragma_table_info" lo hacemos con try/catch + Try + db.ExecNonQuery($"ALTER TABLE ${tabla} ADD COLUMN ${columna} ${tipo}"$) + Log($"Columna "${columna} ${tipo}", agregada a "${tabla}".."$) + Catch + Log(LastException) + End Try + End Try +End Sub + +'Regresa el DBReqServer desde CAT_VARIABLES o "N/A" si no existe. +Sub traeDBReqServerDeBD(dbx As SQL) As String 'ignore + Dim srvr As String = "N/A" + Dim rs As ResultSet = dbx.ExecQuery("select CAT_VA_VALOR from cat_variables where CAT_VA_DESCRIPCION = 'SERVER'") + If rs.RowCount > 0 Then + rs.NextRow + srvr = rs.GetString("CAT_VA_VALOR") + End If + Return srvr +End Sub + +'Regresa el valor de intervalo desde CAT_VARIABLES o "30" si no existe. +Sub traeIntervaloDeBD As String 'ignore + Dim intrvl As String = "30" + Dim rs As ResultSet = db.ExecQuery("select valor from cat_variables where nombre = 'intervalo'") + If rs.RowCount > 0 Then + rs.NextRow + intrvl = rs.GetString("valor") + End If + Return intrvl +End Sub + +'Regresa el valor timeout desde CAT_VARIABLES o "9000" si no existe. +Sub traeTimeoutDeBD As String 'ignore + Dim tmout As String = "9000" + Dim rs As ResultSet = db.ExecQuery("select valor from cat_variables where nombre = 'timeout'") + If rs.RowCount > 0 Then + rs.NextRow + tmout = rs.GetString("valor") + End If + Return tmout +End Sub + +'Crea una notificación con el "body" dado y regresa el objeto. +Sub CreateNotification (Body As String) As Notification 'ignore + Dim notification As Notification + notification.Initialize2(notification.IMPORTANCE_LOW) + notification.Icon = "icon" + notification.SetInfo("Tester", Body, Main) + Return notification +End Sub + +'Genera una notificacion con importancia alta +Sub notiHigh(title As String, body As String, id As String, activity As Object) 'ignore + activity = Main + Private notif As Notification + notif.Initialize2(notif.IMPORTANCE_HIGH) + notif.Icon = "icon" + notif.Vibrate = False + notif.Sound = False + notif.AutoCancel = True +' If logger Then Log("notiHigh: "&title) + notif.SetInfo(title, body, activity) +' Log("notiHigh SetInfo") + notif.Notify(id) +End Sub + +'Regresa el objeto de una notificacion con importancia baja +Sub notiLowReturn(title As String, Body As String, id As Int) As Notification 'ignore + Private notification As Notification + notification.Initialize2(notification.IMPORTANCE_LOW) +' Log("notiLowReturn: "&title) + notification.Icon = "icon" + notification.Sound = False + notification.Vibrate = False + notification.SetInfo(title, Body, Main) + notification.Notify(id) +' Log("notiLowReturn SetInfo") + Return notification +End Sub \ No newline at end of file diff --git a/B4A/CameraExClass2.bas b/B4A/CameraExClass2.bas index bc84bf4..76b54bc 100644 --- a/B4A/CameraExClass2.bas +++ b/B4A/CameraExClass2.bas @@ -51,7 +51,7 @@ Private Sub FindCamera (frontCamera As Boolean) As CameraInfoAndId Array As String("java.lang.int", "android.hardware.Camera$CameraInfo")) r.target = cameraInfo Log("facing: " & r.GetField("facing") & ", " & cameraValue) - If r.GetField("facing") = cameraValue Then + If r.GetField("facing") = cameraValue Then 'ignore ci.cameraInfo = r.target ci.Id = i Return ci diff --git a/B4A/Mariana.b4a b/B4A/Mariana.b4a index fb9866d..f4860a4 100644 --- a/B4A/Mariana.b4a +++ b/B4A/Mariana.b4a @@ -730,15 +730,16 @@ Module11=C_Pedidos Module12=C_Principal Module13=C_Productos Module14=C_Promos -Module15=C_TicketsDia -Module16=C_UpdateAvailable -Module17=CameraExClass2 -Module18=DBRequestManager -Module19=MAPA_RUTAS +Module15=C_Subs +Module16=C_TicketsDia +Module17=C_UpdateAvailable +Module18=CameraExClass2 +Module19=DBRequestManager Module2=B4XMainPage -Module20=Starter -Module21=Subs -Module22=Tracker +Module20=MAPA_RUTAS +Module21=Starter +Module22=Subs +Module23=Tracker Module3=BatteryUtilities Module4=C_Cliente Module5=C_Clientes @@ -748,8 +749,8 @@ Module8=C_Nota Module9=C_NoVenta NumberOfFiles=347 NumberOfLibraries=29 -NumberOfModules=22 -Version=12.2 +NumberOfModules=23 +Version=12.5 @EndOfDesignText@ #Region Project Attributes #ApplicationLabel: Mariana diff --git a/B4A/Starter.bas b/B4A/Starter.bas index ed28aa0..78977ad 100644 --- a/B4A/Starter.bas +++ b/B4A/Starter.bas @@ -15,11 +15,12 @@ Sub Process_Globals Public gps As GPS Dim ph As Phone Public rp As RuntimePermissions + Dim s As C_Subs Public FLP As FusedLocationProvider ' Private flpStarted As Boolean Dim reqManager As DBRequestManager ' Dim server As String = "http://11.0.0.253:1782" - Dim server As String = "http://187.189.244.154:1783" + Dim server As String = "http://187.189.244.154:1782" ' Dim server As String = "http://10.0.0.205:1782" ' Dim server As String = "http://11.0.0.231:1782" Dim Timer1 As Timer @@ -32,19 +33,19 @@ Sub Process_Globals Dim logger As Boolean = True Dim marcaCel As String = ph.manufacturer Public rp As RuntimePermissions - Dim muestraProgreso = 0 + Dim muestraProgreso As String = 0 End Sub Sub Service_Create 'This is the program entry point. 'This is a good place to load resources that are not specific to a single activity. + s.Initialize(Me, "Subs") 'Inicializamos la clase Subs gps.Initialize("GPS") -' CallSubDelayed(FirebaseMessaging, "SubscribeToTopics") 'Para Push FirebaseMessaging Timer1.Initialize("Timer1", Interval * 1000) Timer1.Enabled = True ' 'Para los Logs #if RELEASE - logcat.LogCatStart(Array As String("-v","raw","*:F","B4A:v"), "logcat") + logcat.LogCatStart(Array As String("-v","raw","*:F","B4A:v"), "logcat") #end if logs.Initialize ' CallSubDelayed(FirebaseMessaging, "SubscribeToTopics") 'Para Push FirebaseMessaging @@ -53,7 +54,6 @@ End Sub Sub Service_Start (StartingIntent As Intent) Service.StopAutomaticForeground 'Starter service can start in the foreground state in some edge cases. Subs.revisaBD -' Log(marcaCel) reqManager.Initialize(Me, server) End Sub From ae73964cbeaf0c1c43f80700465a99c971ce1ba3 Mon Sep 17 00:00:00 2001 From: cheveguerra Date: Sat, 16 Sep 2023 07:31:49 -0600 Subject: [PATCH 3/5] ... --- B4A/B4XMainPage.bas | 4 +- B4A/C_Cliente.bas | 94 ++++++++++---------- B4A/C_Principal.bas | 187 +++++++++++++++++++++------------------ B4A/C_Subs.bas | 90 +++++++++++++++++++ B4A/DBRequestManager.bas | 3 +- B4A/Subs.bas | 10 +++ 6 files changed, 253 insertions(+), 135 deletions(-) diff --git a/B4A/B4XMainPage.bas b/B4A/B4XMainPage.bas index 6387a7f..1e07d80 100644 --- a/B4A/B4XMainPage.bas +++ b/B4A/B4XMainPage.bas @@ -47,6 +47,7 @@ Sub Class_Globals 'xxxxxxxxxxxxxxxxxxxxxxxxx Dim reqManager As DBRequestManager + Dim s As C_Subs Dim v As String = Application.VersionName Dim ruta As String Dim tgl As Toggle @@ -104,6 +105,7 @@ Private Sub B4XPage_Created (Root1 As B4XView) B4XPages.GetManager.LogEvents = True Root = Root1 Root.LoadLayout("login") + s.Initialize(Me, "Subs") B4XPages.SetTitle(Me, "Mariana Preventa") login.Initialize B4XPages.AddPage("Login", login) @@ -407,7 +409,7 @@ Sub Entrar_Click End Sub Sub JobDone(Job As HttpJob) - Log(Job.Success) + Log("JOBDONE MAINPAGE - " & Job.Success) If Job.Success = False Then ' ToastMessageShow("Error: " & Job.ErrorMessage, True) Else diff --git a/B4A/C_Cliente.bas b/B4A/C_Cliente.bas index 431d82b..fb1b380 100644 --- a/B4A/C_Cliente.bas +++ b/B4A/C_Cliente.bas @@ -158,8 +158,8 @@ Private Sub B4XPage_Created (Root1 As B4XView) File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db") End If skmt.Initialize(ruta,"kmt.db", True) - c=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)") - s=B4XPages.MainPage.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") + c=skmt.ExecQuery("select CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)") + s=skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") s.Position=0 If c.RowCount>0 Then c.Position=0 @@ -206,8 +206,8 @@ Sub B4XPage_Appear p_abono.Visible = False Subs.centraPanel(p_abono, Root.Width) skmt.Initialize(ruta,"kmt.db", True) - c=B4XPages.MainPage.skmt.ExecQuery("select CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)") - s=B4XPages.MainPage.skmt.ExecQuery("Select SUM(PE_COSTO_TOT) As TOTAL_CLIE, SUM(PE_CANT) As CANT_CLIE, PC_FACTURA FROM PEDIDO_CLIENTE INNER JOIN PEDIDO ON PEDIDO_CLIENTE.PC_CLIENTE = PEDIDO.PE_CLIENTE WHERE (PE_CLIENTE IN (Select cuenta from cuentaa))") + c=skmt.ExecQuery("select CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)") + s=skmt.ExecQuery("Select SUM(PE_COSTO_TOT) As TOTAL_CLIE, SUM(PE_CANT) As CANT_CLIE, PC_FACTURA FROM PEDIDO_CLIENTE INNER JOIN PEDIDO ON PEDIDO_CLIENTE.PC_CLIENTE = PEDIDO.PE_CLIENTE WHERE (PE_CLIENTE IN (Select cuenta from cuentaa))") s.Position=0 If c.RowCount > 0 Then c.Position=0 @@ -249,12 +249,12 @@ Sub B4XPage_Appear End If c.Close s.Close - S2=B4XPages.MainPage.skmt.ExecQuery("select count(*) AS CUANTOS from HIST_VENTAS WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa)") + S2=skmt.ExecQuery("select count(*) AS CUANTOS from HIST_VENTAS WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa)") S2.Position =0 CUANTOS = S2.GetString("CUANTOS") S2.Close If CUANTOS > 0 Then - c2=B4XPages.MainPage.skmt.ExecQuery("select sum(HVD_COSTO_TOT) AS TOTAL from HIST_VENTAS WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa)") + c2=skmt.ExecQuery("select sum(HVD_COSTO_TOT) AS TOTAL from HIST_VENTAS WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa)") c2.Position =0 MONTO_COMPRA = c2.GetString("TOTAL") c2.Close @@ -272,7 +272,7 @@ Sub B4XPage_Appear META2 = "CUBIERTO" End If la_saldooper.Text = META2 - c=B4XPages.MainPage.skmt.ExecQuery("select ID_ALMACEN from CAT_ALMACEN") + c=skmt.ExecQuery("select ID_ALMACEN from CAT_ALMACEN") If c.RowCount>0 Then C.Position=0 ALMACEN = C.GetString("ID_ALMACEN") @@ -285,10 +285,10 @@ Sub B4XPage_Appear End If If ALMACEN = "4" Then ' b_like.Visible = True - DD=B4XPages.MainPage.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM HIST_VENTAS WHERE HVD_CLIENTE IN (Select cuenta from cuentaa) AND HVD_PRONOMBRE =?", Array As String("KNORR RINDE MAS 70 GR")) + DD=skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM HIST_VENTAS WHERE HVD_CLIENTE IN (Select cuenta from cuentaa) AND HVD_PRONOMBRE =?", Array As String("KNORR RINDE MAS 70 GR")) DD.Position =0 If DD.GetString("CUANTOS") = 0 Then - c=B4XPages.MainPage.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select cuenta from cuentaa) AND PE_PRONOMBRE =?", Array As String("KNORR RINDE MAS 70 GR")) + c=skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select cuenta from cuentaa) AND PE_PRONOMBRE =?", Array As String("KNORR RINDE MAS 70 GR")) c.Position =0 ' If c.GetString("CUANTOS") = 0 Then ' b_like.Visible = True @@ -358,8 +358,8 @@ Sub GPS_LocationChanged (Location1 As Location) ' LA_GEO.TextColor = Colors.Red ' End If LA_GEO.Text= $"$1.2{distance/1000} kms"$ - B4XPages.MainPage.skmt.ExecNonQuery("DELETE FROM HIST_GPS") - B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_GPS (HGDATE, HGLAT, HGLON) VALUES(?,?,?) ", Array As Object (sDate & sTime, B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps)) + skmt.ExecNonQuery("DELETE FROM HIST_GPS") + skmt.ExecNonQuery2("INSERT INTO HIST_GPS (HGDATE, HGLAT, HGLON) VALUES(?,?,?) ", Array As Object (sDate & sTime, B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps)) l_ubicacion2.TextSize = 13 l_ubicacion2.Text = $"Precisión GPS $1.0{Location1.Accuracy} m"$ @@ -431,31 +431,31 @@ Sub Guardar_Click DateTime.DateFormat = "MM/dd/yyyy" sDate=DateTime.Date(DateTime.Now) sTime=DateTime.Time(DateTime.Now) - c=B4XPages.MainPage.skmt.ExecQuery("Select CUENTA from cuentaa") + c=skmt.ExecQuery("Select CUENTA from cuentaa") c.Position=0 clie_id = c.GetString("CUENTA") c.Close - c=B4XPages.MainPage.skmt.ExecQuery("select USUARIO from usuarioa") + c=skmt.ExecQuery("select USUARIO from usuarioa") c.Position=0 usuario = c.GetString("USUARIO") c.Close - c=B4XPages.MainPage.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, COUNT(*) AS CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") + c=skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, COUNT(*) AS CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") c.Position=0 If c.GetString("CUANTOS") > 0 Then Private cbFactura As Int = 0 If cb_factura.Checked Then cbFactura = 1 - B4XPages.MainPage.skmt.ExecNonQuery("delete from NOVENTA where NV_CLIENTE In (select cuenta from cuentaa)") - B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") - B4XPages.MainPage.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT,PC_ENVIO_OK, PC_FACTURA) VALUES (?,?,?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps,0, cbFactura)) - B4XPages.MainPage.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + skmt.ExecNonQuery("delete from NOVENTA where NV_CLIENTE In (select cuenta from cuentaa)") + skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") + skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT,PC_ENVIO_OK, PC_FACTURA) VALUES (?,?,?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps,0, cbFactura)) + skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") End If c.Close DateTime.TimeFormat = "HHmmss" sTime=DateTime.Time(DateTime.Now) - B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE HIST_STAY_STORE set HSS_OUT = ? where HSS_OUT = 0 AND HSS_CODIGO In (select cuenta from cuentaa)", Array As Object(sTime)) - ' B4XPages.MainPage.skmt.ExecNonQuery("UPDATE HIST_STAY_STORE set HSS_TOT = HSS_OUT - HSS_IN where HSS_CODIGO In (select cuenta from cuentaa)") + skmt.ExecNonQuery2("UPDATE HIST_STAY_STORE set HSS_OUT = ? where HSS_OUT = 0 AND HSS_CODIGO In (select cuenta from cuentaa)", Array As Object(sTime)) + ' skmt.ExecNonQuery("UPDATE HIST_STAY_STORE set HSS_TOT = HSS_OUT - HSS_IN where HSS_CODIGO In (select cuenta from cuentaa)") Try - c=B4XPages.MainPage.skmt.ExecQuery(" Select (substr(HSS_OUT,1,2) - substr(HSS_IN,1,2)) - Case when (substr(HSS_OUT,3,2) - substr(HSS_IN,3,2)) < 0 Then 1 Else 0 end HORAS_TOTALES, " & _ + c=skmt.ExecQuery(" Select (substr(HSS_OUT,1,2) - substr(HSS_IN,1,2)) - Case when (substr(HSS_OUT,3,2) - substr(HSS_IN,3,2)) < 0 Then 1 Else 0 end HORAS_TOTALES, " & _ "Case when (substr(HSS_OUT,3,2) - substr(HSS_IN,3,2)) < 0 Then (substr(HSS_OUT,3,2) + 60 - substr(HSS_IN,3,2)) " & _ " Else (substr(HSS_OUT,3,2) - substr(HSS_IN,3,2)) End - Case when (substr(HSS_OUT,5,2) - substr(HSS_IN,5,2)) < 0 Then 1 Else 0 end MINUTOS_TOTALES, " & _ "Case when (substr(HSS_OUT,5,2) - substr(HSS_IN,5,2)) < 0 Then (substr(HSS_OUT,5,2) + 60 - substr(HSS_IN,5,2)) " & _ @@ -465,8 +465,8 @@ Sub Guardar_Click stay_hh = c.GetString("HORAS_TOTALES") * 60 * 60 stay_mi = c.GetString("MINUTOS_TOTALES") * 60 stay_ss = c.GetString("SEGUNDOS_TOTALES") - B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE HIST_STAY_STORE set HSS_TOT = ? where HSS_CODIGO In (select cuenta from cuentaa)", Array As Object(stay_hh + stay_mi + stay_ss)) - B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE HIST_STAY_OUT set HSO_FIN = ? ", Array As Object(sTime)) + skmt.ExecNonQuery2("UPDATE HIST_STAY_STORE set HSS_TOT = ? where HSS_CODIGO In (select cuenta from cuentaa)", Array As Object(stay_hh + stay_mi + stay_ss)) + skmt.ExecNonQuery2("UPDATE HIST_STAY_OUT set HSO_FIN = ? ", Array As Object(sTime)) c.Close Catch ToastMessageShow(".",True) @@ -507,7 +507,7 @@ Sub sc_result(atype As String,Values As String, image As Bitmap) 'Log("Type : " & atype) 'Log("Value : " & Values) CODIGO = Values - DD=B4XPages.MainPage.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM kmt_info WHERE CAT_CL_NUM_SERIEFISICO = ?", Array As String(CODIGO)) + DD=skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM kmt_info WHERE CAT_CL_NUM_SERIEFISICO = ?", Array As String(CODIGO)) DD.Position =0 If DD.GetString("CUANTOS") > 0 Then MsgboxAsync("Código ya asignado", "AVISO") @@ -516,10 +516,10 @@ Sub sc_result(atype As String,Values As String, image As Bitmap) Msgbox2Async("El código "& CODIGO & " es correcto?" , "Title", "Yes", "Cancel", "No", Null, False) Wait For Msgbox_Result (resultado As Int) If resultado = DialogResponse.POSITIVE Then - B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE kmt_info set CAT_CL_NUM_SERIEFISICO = ?, CAT_CL_LONG = ?, CAT_CL_LAT =? where CAT_CL_CODIGO In (select cuenta from cuentaa)", Array As Object(CODIGO, B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps)) + skmt.ExecNonQuery2("UPDATE kmt_info set CAT_CL_NUM_SERIEFISICO = ?, CAT_CL_LONG = ?, CAT_CL_LAT =? where CAT_CL_CODIGO In (select cuenta from cuentaa)", Array As Object(CODIGO, B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps)) L_QR.TEXT =CODIGO L_QR.TextColor = Colors.Blue - B4XPages.MainPage.skmt.ExecNonQuery2("insert into HIST_CODIGO_BARRAS(CODIGOKMTS, CODIGOB, LAT, LON) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text,CODIGO, B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps)) + skmt.ExecNonQuery2("insert into HIST_CODIGO_BARRAS(CODIGOKMTS, CODIGOB, LAT, LON) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text,CODIGO, B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps)) End If Else MsgboxAsync("Código No Valido", "AVISO") @@ -566,7 +566,7 @@ Sub B_IMP_Click printer.WriteLine("Vendedor: KMTS ") printer.WriteLine("Tienda: " & La_nombre.Text) printer.WriteLine("-----------PREVENTA-----------") - s=B4XPages.MainPage.skmt.ExecQuery("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU, PE_COSTO_TOT, length(PE_COSTO_TOT) as L_COSTO_TOT FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") + s=skmt.ExecQuery("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU, PE_COSTO_TOT, length(PE_COSTO_TOT) as L_COSTO_TOT FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") If S.RowCount>0 Then For i=0 To S.RowCount -1 S.Position=i @@ -651,16 +651,16 @@ Sub B_GUARDA_C_Click DateTime.DateFormat = "MM/dd/yyyy" sDate=DateTime.Date(DateTime.Now) sTime=DateTime.Time(DateTime.Now) - c=B4XPages.MainPage.skmt.ExecQuery("Select CUENTA from cuentaa") + c=skmt.ExecQuery("Select CUENTA from cuentaa") c.Position=0 clie_id = c.GetString("CUENTA") c.Close - c=B4XPages.MainPage.skmt.ExecQuery("select USUARIO from usuarioa") + c=skmt.ExecQuery("select USUARIO from usuarioa") c.Position=0 usuario = c.GetString("USUARIO") c.Close - B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA) VALUES(?,?,?,?,?,?,?,?,?,?) ", Array As Object ("4",.01 , .01, 2, "KNORR RINDE MAS 70 GR", "GUNA2",la_cuenta.TEXT, sDate & sTime, usuario,LA_RUTA)) - B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO HIST_FACE(HFCLIENTE, HFALIAS,HFRUTA,HFALMACEN) VALUES (?,?,?,?) ", Array As Object(la_cuenta.Text, I_COMPRA.Text,LA_RUTA,ALMACEN)) + skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA) VALUES(?,?,?,?,?,?,?,?,?,?) ", Array As Object ("4",.01 , .01, 2, "KNORR RINDE MAS 70 GR", "GUNA2",la_cuenta.TEXT, sDate & sTime, usuario,LA_RUTA)) + skmt.ExecNonQuery2("INSERT INTO HIST_FACE(HFCLIENTE, HFALIAS,HFRUTA,HFALMACEN) VALUES (?,?,?,?) ", Array As Object(la_cuenta.Text, I_COMPRA.Text,LA_RUTA,ALMACEN)) Panel1.Visible = False ' b_like.Visible = True Tar.Visible = True @@ -674,20 +674,20 @@ Sub b_venta_Click DateTime.DateFormat = "MM/dd/yyyy" sDate=DateTime.Date(DateTime.Now) sTime=DateTime.Time(DateTime.Now) -' s=B4XPages.MainPage.skmt.ExecQuery("select COUNT(*) AS CUANTOS from HIST_ENCUESTA where HE_CLIE In (Select cuenta from cuentaa)") +' s=skmt.ExecQuery("select COUNT(*) AS CUANTOS from HIST_ENCUESTA where HE_CLIE In (Select cuenta from cuentaa)") ' s.Position= 0 ' If s.GetString("CUANTOS") = 0 Then -' c=B4XPages.MainPage.skmt.ExecQuery2("SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String("CUESTIONARIO")) +' c=skmt.ExecQuery2("SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String("CUESTIONARIO")) ' c.Position =0 ' If c.GetString("CAT_VA_VALOR") = "2" Then ' res = Msgbox2("El cliente maneja CAZARES ?","CAZARES", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'Ignore ' If res = DialogResponse.POSITIVE Then -' B4XPages.MainPage.skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, "SI",sDate & sTime,"TIENE")) +' skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, "SI",sDate & sTime,"TIENE")) ' Panel1.Visible =True ' I_COMPRA.Text = "" ' BT_QR.Visible= False ' Else -' B4XPages.MainPage.skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, "NO",sDate & sTime,"TIENE")) +' skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, "NO",sDate & sTime,"TIENE")) ' B4XPages.MainPage.tipo_venta = "VENTA" ' B4XPages.ShowPage("Productos") ' End If @@ -705,7 +705,7 @@ End Sub Sub B_E_NEXT_Click If E_RES_E.Text <> "" Then - B4XPages.MainPage.skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, E_RES_E.Text,sDate & sTime,"DONDE")) + skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, E_RES_E.Text,sDate & sTime,"DONDE")) Panel2.Visible = False B4XPages.ShowPage("Productos") Else @@ -751,7 +751,7 @@ End Sub ' Dim result As Int ' result = Msgbox2("Esta seguro de cambiar las coordenadas de este cliente", "Aviso GPS", "SI", "", "NO", LoadBitmap(File.DirAssets, "alerta.jpg")) 'Ignore ' If result = DialogResponse.Positive Then -' B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE kmt_info SET CAT_CL_LAT = ?, CAT_CL_LONG = ? where CAT_CL_CODIGO In (Select cuenta from cuentaa)", Array As Object(B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps)) +' skmt.ExecNonQuery2("UPDATE kmt_info SET CAT_CL_LAT = ?, CAT_CL_LONG = ? where CAT_CL_CODIGO In (Select cuenta from cuentaa)", Array As Object(B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps)) ' B4XPage_Appear ' End If 'End Sub @@ -766,8 +766,9 @@ Private Sub cb_factura_CheckedChange(Checked As Boolean) End Sub Sub mandaPendientes + Log("MandaPendientes") 'PEDIDO_CLIENTE (Pendientes) - c=B4XPages.MainPage.skmt.ExecQuery("SELECT PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT, PC_COSTO_SIN, PC_RUTA, PC_ALMACEN, PC_FACTURA FROM PEDIDO_CLIENTE where pc_envio_ok <> 1") + c=skmt.ExecQuery("SELECT PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT, PC_COSTO_SIN, PC_RUTA, PC_ALMACEN, PC_FACTURA FROM PEDIDO_CLIENTE where PC_ENVIO_OK <> 1") Log($"Pedido_Cliente PENDIENTE: ${c.RowCount}"$) If c.RowCount>0 Then For i=0 To c.RowCount -1 @@ -776,18 +777,19 @@ Sub mandaPendientes cmd.Initialize cmd.Name = "DELETE_PEDIDO_MARDS_PC" cmd.Parameters = Array As Object(ALMACEN, B4XPages.MainPage.principal.l_ruta.text,c.GetString("PC_CLIENTE") ) - B4XPages.MainPage.reqManager.ExecuteCommand(cmd , "DEL_PC") + reqManager.ExecuteCommand(cmd , "DEL_PC") Dim cmd As DBCommand cmd.Initialize cmd.Name = "insert_pedidos_MARDS" + Log($"${c.GetString("PC_CLIENTE")}, ${ALMACEN}"$) cmd.Parameters = Array As Object(C.GetString("PC_CLIENTE"), C.GetString("PC_FECHA"), C.GetString("PC_USER"), C.GetString("PC_NOART"), C.GetString("PC_MONTO"), C.GetString("PC_LON"), C.GetString("PC_LAT"), ALMACEN, B4XPages.MainPage.principal.l_ruta.text, C.GetString("PC_COSTO_SIN"), C.GetString("PC_FACTURA")) reqManager.ExecuteCommand(cmd , $"ins_pedidosPendientes_head_${c.GetString("PC_CLIENTE")}"$) Next End If 'PEDIDO (Pendientes) - c=B4XPages.MainPage.skmt.ExecQuery("SELECT PC_ENVIO_OK, PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_FECHA, PE_USUARIO, PE_COSTO_SIN, PE_RUTA, PE_DESC, PE_FOLIO FROM pedido_cliente left join PEDIDO where pc_cliente = pe_cliente and pc_envio_ok <> 1") + c=skmt.ExecQuery("SELECT PC_ENVIO_OK, PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_FECHA, PE_USUARIO, PE_COSTO_SIN, PE_RUTA, PE_DESC, PE_FOLIO FROM pedido_cliente left join PEDIDO where pc_cliente = pe_cliente and pc_envio_ok <> 1") Log($"Pedido PENDIENTE: ${c.RowCount}"$) If c.RowCount>0 Then For i=0 To c.RowCount -1 @@ -797,7 +799,7 @@ Sub mandaPendientes cmd.Initialize cmd.Name = "DELETE_PEDIDO_MARDS_PE" cmd.Parameters = Array As Object(ALMACEN, B4XPages.MainPage.principal.l_ruta.text,c.GetString("PE_CLIENTE") ) - B4XPages.MainPage.reqManager.ExecuteCommand(cmd , "DEL_PE") + reqManager.ExecuteCommand(cmd , "DEL_PE") cmd.Initialize cmd.Name = "insert_pedido_MARDS" @@ -807,7 +809,7 @@ Sub mandaPendientes End If 'ABONOS - Dim ab As Cursor = B4XPages.MainPage.skmt.ExecQuery($"SELECT * from ABONOS where a_enviado is null"$) + Dim ab As Cursor = skmt.ExecQuery($"SELECT * from ABONOS where a_enviado is null"$) Log(ab.RowCount) If ab.RowCount > 0 Then For i=0 To ab.RowCount -1 @@ -823,7 +825,7 @@ Sub mandaPendientes ab.Close ' BANDERA FACTURA (Pendientes) -' c=B4XPages.MainPage.skmt.ExecQuery("SELECT PC_FACTURA, PC_CLIENTE FROM pedido_cliente where PC_CLIENTE IN (Select CUENTA from cuentaa)") +' c=skmt.ExecQuery("SELECT PC_FACTURA, PC_CLIENTE FROM pedido_cliente where PC_CLIENTE IN (Select CUENTA from cuentaa)") ' Log($"BANDERA FACTURA PENDIENTE: ${c.RowCount}"$) ' If c.RowCount>0 Then ' For i=0 To c.RowCount -1 @@ -840,7 +842,7 @@ Sub mandaPendientes End Sub Sub JobDone(Job As HttpJob) - Log(Job.Success) + Log("JOBDONE CLIENTE . " & Job.Success) If Job.Success = False Then ' ToastMessageShow("Error: " & Job.ErrorMessage, True) Else @@ -856,6 +858,7 @@ Sub JobDone(Job As HttpJob) Log(resultado.Tag & ": " & k & ": " & records(resultado.Columns.Get(k))) Next Next + skmt.ExecNonQuery($"UPDATE PEDIDO_CLIENTE set PC_ENVIO_OK = 1 where PC_CLIENTE = '${cliente}'"$) End If End If @@ -872,6 +875,7 @@ Sub JobDone(Job As HttpJob) Next End If End If + 'ABONOS PENDIENTES If Job.JobName = "DBRequest" Then Dim resultado As DBResult = reqManager.HandleJob(Job) @@ -884,7 +888,7 @@ Sub JobDone(Job As HttpJob) Log(resultado.Tag & ": " & k & ": " & records(resultado.Columns.Get(k))) Next Next - B4XPages.MainPage.skmt.ExecNonQuery($"UPDATE ABONOS set a_enviado = 1 where a_cliente = '${cliente}'"$) + skmt.ExecNonQuery($"UPDATE ABONOS set a_enviado = 1 where a_cliente = '${cliente}'"$) End If End If Job.Release diff --git a/B4A/C_Principal.bas b/B4A/C_Principal.bas index 1d007cf..86c387b 100644 --- a/B4A/C_Principal.bas +++ b/B4A/C_Principal.bas @@ -6,9 +6,10 @@ Version=11.5 @EndOfDesignText@ Sub Class_Globals Public rp As RuntimePermissions - dim s as C_Subs + Dim s As C_Subs Private Root As B4XView 'ignore Private xui As XUI 'ignore + Dim reqManager As DBRequestManager Dim conectado As String Dim t1 As Timer Dim sb As StringBuilder @@ -304,10 +305,12 @@ Private Sub B4XPage_Created (Root1 As B4XView) End Sub Sub B4XPage_Appear + s.reqManagerReInit 'Reiniciamos el DBReqManager por si hay modificacion en el servidor. + reqManager.Initialize(Me, Starter.server) nvo_cliente.Enabled = False HORAINGRESO ="000000" Btn_Ubicar.Left = (Root.Width/2) - (Btn_Ubicar.Width/2) -' B4XPages.MainPage.reqManager.Initialize(Me, B4XPages.MainPage.SERVER) +' reqManager.Initialize(Me, B4XPages.MainPage.SERVER) PASO =0 If Not(Starter.gps.GPSEnabled) Then If Starter.marcaCel <> "Sony" Then ToastMessageShow("Es necesario tener el GPS encendido", True) @@ -318,7 +321,7 @@ Sub B4XPage_Appear If c.GetString("CUANTOS") = 0 Then cmd.Initialize cmd.Name = "select_fecha" - B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "fecha") + reqManager.ExecuteQuery(cmd , 0, "fecha") Msgbox("AJUSTAR FECHA","AVISO") 'ignore B4XPage_Appear Else @@ -519,7 +522,7 @@ Sub Subir_Click cmd.Initialize cmd.Name = "UPDATE_MARDS_ACTUAL2_GPS" cmd.Parameters = Array As Object(L_MONTOD.Text, L_CUANTOST.Text, l_cuantosc.Text,l_porvisitar.TEXT,c.GetString("hglat"),c.GetString("hglon"),batterystatus(0),LPT, STEYIN, STEYOUT,ALMACEN,l_ruta.Text ) - B4XPages.MainPage.reqManager.ExecuteCommand(cmd , "update_gps") + reqManager.ExecuteCommand(cmd , "update_gps") Next End If c.Close @@ -534,7 +537,7 @@ Sub Subir_Click cmd.Initialize cmd.Name = "insert_pedidos_MARDS" cmd.Parameters = Array As Object(c.GetString("PC_CLIENTE"), c.GetString("PC_FECHA"), c.GetString("PC_USER"), c.GetString("PC_NOART"), c.GetString("PC_MONTO"), c.GetString("PC_LON"), c.GetString("PC_LAT"), ALMACEN, l_ruta.text, c.GetString("PC_COSTO_SIN"), c.GetString("PC_FACTURA")) - B4XPages.MainPage.reqManager.ExecuteCommand(cmd , "ins_pedidos") + reqManager.ExecuteCommand(cmd , "ins_pedidos") Next End If c.Close @@ -554,7 +557,7 @@ Sub Subir_Click cmd.Initialize cmd.Name = "insert_QR_2_MARDS" cmd.Parameters = Array As Object(C.GetString("CODIGOKMTS"),C.GetString("CODIGOB"),C.GetString("LON"),C.GetString("LAT"),ALMACEN,l_ruta.text ) - B4XPages.MainPage.reqManager.ExecuteCommand(cmd , "ins_QR") + reqManager.ExecuteCommand(cmd , "ins_QR") Next End If c.Close @@ -571,7 +574,7 @@ Sub Subir_Click ' cmd.Initialize ' cmd.Name = "insert_QR_MARDS" ' cmd.Parameters = Array As Object(C.GetString("CAT_CL_NUM_SERIEFISICO"),C.GetString("CAT_CL_CODIGO"),C.GetString("CAT_CL_LONG"),C.GetString("CAT_CL_LAT"),ALMACEN,l_ruta.text, foto1 ) -' B4XPages.MainPage.reqManager.ExecuteCommand(cmd , "ins_QR") +' reqManager.ExecuteCommand(cmd , "ins_QR") ' Next ' End If ' c.Close @@ -584,7 +587,7 @@ Sub Subir_Click cmd.Initialize cmd.Name = "insert_encuesta_MARDS" cmd.Parameters = Array As Object(C.GetString("HE_CLIE"),C.GetString("HE_RES"),C.GetString("HE_FECHA"), c.GetString("HE_TIPO")) - B4XPages.MainPage.reqManager.ExecuteCommand(cmd , "inst_noventa") + reqManager.ExecuteCommand(cmd , "inst_noventa") Next End If c.Close @@ -598,7 +601,7 @@ Sub Subir_Click cmd.Initialize cmd.Name = "insert_pedido_MARDS" cmd.Parameters = Array As Object(C.GetString("PE_CEDIS"),ALMACEN,C.GetString("PE_COSTO_TOT"),C.GetString("PE_COSTOU"),C.GetString("PE_CANT"),C.GetString("PE_PRONOMBRE"),C.GetString("PE_PROID"),C.GetString("PE_CLIENTE"),C.GetString("PE_FECHA"),C.GetString("PE_USUARIO"),C.GetString("PE_RUTA"), C.GetString("PE_COSTO_SIN"),C.GetString("PE_DESC"),c.GetString("PE_FOLIO")) - B4XPages.MainPage.reqManager.ExecuteCommand(cmd , "ins_pedido") + reqManager.ExecuteCommand(cmd , "ins_pedido") Next End If c.Close @@ -616,7 +619,7 @@ Sub Subir_Click cmd.Initialize cmd.Name = "insert_noventa_MARDS" cmd.Parameters = Array As Object(C.GetString("NV_CLIENTE"),C.GetString("NV_FECHA"),C.GetString("NV_USER"),C.GetString("NV_MOTIVO"),C.GetString("NV_COMM"),C.GetString("NV_LAT"),C.GetString("NV_LON"), ALMACEN, l_ruta.Text,C.GetString("NV_NOMBRE"),C.GetString("NV_DIRECCION")) - B4XPages.MainPage.reqManager.ExecuteCommand(cmd , "inst_noventa") + reqManager.ExecuteCommand(cmd , "inst_noventa") Next End If c.Close @@ -641,7 +644,7 @@ Sub Subir_Click cmd.Initialize cmd.Name = "insert_clientesnuevos_MARDS" cmd.Parameters = Array As Object(c.GetString("CN_ID"), c.GetString("CN_FECHA"), c.GetString("CN_USER"), c.GetString("CN_LAT"), c.GetString("CN_LON"), c.GetString("CN_NOMBRE"), c.GetString("CN_DIRECCION"),c.GetString("CN_ALMACEN"), c.GetString("CN_RUTA"), fotocn, "EN ESPERA",c.GetString("CN_GIRO")) - B4XPages.MainPage.reqManager.ExecuteCommand(cmd , "inst_clientesn") + reqManager.ExecuteCommand(cmd , "inst_clientesn") Next End If c.Close @@ -655,7 +658,7 @@ Sub Subir_Click cmd.Initialize cmd.Name = "insert_geocerca_MARDS" cmd.Parameters = Array As Object(C.GetString("HGCLIENTE"),C.GetString("HGDATE"),C.GetString("HGLAT"),C.GetString("HGLON")) - B4XPages.MainPage.reqManager.ExecuteCommand(cmd , "inst_noventa") + reqManager.ExecuteCommand(cmd , "inst_noventa") Next End If c.Close @@ -670,7 +673,7 @@ Sub Subir_Click cmd.Initialize cmd.Name = "insert_face_like_MARDS" cmd.Parameters = Array As Object(C.GetString("HFCLIENTE"),C.GetString("HFALIAS"),C.GetString("HFRUTA"),C.GetString("HFALMACEN")) - B4XPages.MainPage.reqManager.ExecuteCommand(cmd , "inst_noventa") + reqManager.ExecuteCommand(cmd , "inst_noventa") Next End If @@ -693,7 +696,7 @@ Sub Subir_Click ' cmd.Initialize ' cmd.Name = "insert_fotos_cliente_nuevo_MARIANA" ' cmd.Parameters = Array As Object(c.GetString("CODIGO"),c.GetString("ALMACEN"),c.GetString("RUTA"),fotox) -' B4XPages.MainPage.reqManager.ExecuteCommand(cmd, $"insert_clientes_${c.GetString("CODIGO")}"$) +' reqManager.ExecuteCommand(cmd, $"insert_clientes_${c.GetString("CODIGO")}"$) ' Next ' End If ' @@ -710,7 +713,7 @@ Sub Subir_Click cmd.Initialize cmd.Name ="insert_drop_MARDS_2" cmd.Parameters = Array As Object(usuario,l_ruta.Text,sDate & sTime, l_porvisitar.Text,l_drop.Text,l_efectiva.Text,l_cuantosc.Text,l_cuantosn.Text, L_MONTOD.Text,"ENVIO",ALMACEN) - B4XPages.MainPage.reqManager.ExecuteCommand(cmd , "inst_noventa") + reqManager.ExecuteCommand(cmd , "inst_noventa") img2.Visible =True PORCENTAJE = Round(100/ (cuantos_noventa + cuantos_pedido + cuantos_pedidosc + 1)) If Starter.marcaCel <> "Sony" Then ToastMessageShow("Se Actualizaran los datos, Este proceso podria tardar hasta un minuto, gracias "& l_ruta.text , True) @@ -817,134 +820,134 @@ Sub cargar_Click cmd.Initialize cmd.Name ="insert_drop_MARDS_2" cmd.Parameters = Array As Object(usuario,l_ruta.Text,sDate & sTime, l_porvisitar.Text,l_drop.Text,l_efectiva.Text,l_cuantosc.Text,l_cuantosn.Text, L_MONTOD.Text,"CARGA",ALMACEN) - B4XPages.MainPage.reqManager.ExecuteCommand(cmd , "inst_noventa") + reqManager.ExecuteCommand(cmd , "inst_noventa") cmd.Initialize cmd.Name = "select_cat_gunaprod_MARDS" cmd.Parameters = Array As Object(ALMACEN) - B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "gunaprod") + reqManager.ExecuteQuery(cmd , 0, "gunaprod") cmd.Initialize cmd.Name = "select_cat_bandera_MARDS" cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) - B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "bandera") + reqManager.ExecuteQuery(cmd , 0, "bandera") cmd.Initialize cmd.Name = "select_cat_GIRO_MARDS" - B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "giro") + reqManager.ExecuteQuery(cmd , 0, "giro") ' cmd.Initialize ' cmd.Name = "select_resum_apk_INTMEX" ''' va el nombre de archivo de config ' cmd.Parameters = Array As Object(ALMACEN) -' B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "resum_apk") ''' donde regresa la info ver job_done +' reqManager.ExecuteQuery(cmd , 0, "resum_apk") ''' donde regresa la info ver job_done cmd.Initialize cmd.Name = "select_cat_paquetes_MARDS3" cmd.Parameters = Array As Object(ALMACEN) - B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "gunaprodp") + reqManager.ExecuteQuery(cmd , 0, "gunaprodp") cmd.Initialize cmd.Name = "select_cat_paquetess_MARDS" cmd.Parameters = Array As Object(ALMACEN) - B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "gunaprodp") + reqManager.ExecuteQuery(cmd , 0, "gunaprodp") cmd.Initialize cmd.Name = "select_cat_detallepa_MARDS" cmd.Parameters = Array As Object(ALMACEN) - B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "detallepaq") + reqManager.ExecuteQuery(cmd , 0, "detallepaq") cmd.Initialize cmd.Name = "select_cat_clientes_MARDS" cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) - B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "kmt_datos") + reqManager.ExecuteQuery(cmd , 0, "kmt_datos") cmd.Initialize cmd.Name = "select_hist_datos_MARDS_2" cmd.Parameters = Array As Object(e_ruta.text, ALMACEN,e_ruta.text, ALMACEN) - B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "hist_datos") + reqManager.ExecuteQuery(cmd , 0, "hist_datos") cmd.Initialize cmd.Name = "select_hist_promos_MARDS" cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) - B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "hist_promos") + reqManager.ExecuteQuery(cmd , 0, "hist_promos") cmd.Initialize cmd.Name = "select_hist_cliente_promos_MARDS" cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) - B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "hist_cliente_promos") + reqManager.ExecuteQuery(cmd , 0, "hist_cliente_promos") ' cmd.Initialize ' cmd.Name = "select_HIST_MARCAS_CUOTAS_INTMEX" ' cmd.Parameters = Array As Object( ALMACEN, e_ruta.text) -' B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "HIST_MARCAS_CUOTAS") +' reqManager.ExecuteQuery(cmd , 0, "HIST_MARCAS_CUOTAS") If E_RUTA2.text <> "" Then cmd.Initialize cmd.Name = "select_cat_clientes_MARDS" cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN) - B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "kmt_datos") + reqManager.ExecuteQuery(cmd , 0, "kmt_datos") cmd.Initialize cmd.Name = "select_hist_datos_MARDS" cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN) - B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "hist_datos") + reqManager.ExecuteQuery(cmd , 0, "hist_datos") cmd.Initialize cmd.Name = "select_hist_promos_MARDS" cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN) - B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "hist_promos") + reqManager.ExecuteQuery(cmd , 0, "hist_promos") cmd.Initialize cmd.Name = "select_hist_cliente_promos_MARDS" cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN) - B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "hist_cliente_promos") + reqManager.ExecuteQuery(cmd , 0, "hist_cliente_promos") End If cmd.Initialize cmd.Name = "select_promo_comp_MARDS" cmd.Parameters = Array As Object(ALMACEN) - B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "hist_comp_promos") + reqManager.ExecuteQuery(cmd , 0, "hist_comp_promos") ' cmd.Initialize ' cmd.Name = "select_verificacion_INTMEX" ' cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) -' B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "cat_verificacion") +' reqManager.ExecuteQuery(cmd , 0, "cat_verificacion") cmd.Initialize cmd.Name = "select_fecha" cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) - B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "fecha") + reqManager.ExecuteQuery(cmd , 0, "fecha") cmd.Initialize cmd.Name = "select_folio_MARDS" cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) - B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "folio") + reqManager.ExecuteQuery(cmd , 0, "folio") cmd.Initialize cmd.Name = "select_marcas_rutas_MARDS" cmd.Parameters = Array As Object( ALMACEN, e_ruta.text) - B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "marcas_rutas") + reqManager.ExecuteQuery(cmd , 0, "marcas_rutas") ' cmd.Initialize ' cmd.Name = "select_CUEST_INTMEX" ' cmd.Parameters = Array As Object(ALMACEN) -' B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "CUESTIONARIO") +' reqManager.ExecuteQuery(cmd , 0, "CUESTIONARIO") ' cmd.Initialize ' cmd.Name = "select_HIST_CUOTAS_INTMEX" ' cmd.Parameters = Array As Object( ALMACEN,e_ruta.text ) -' B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "CUOTAS") +' reqManager.ExecuteQuery(cmd , 0, "CUOTAS") ' cmd.Initialize ' cmd.Name = "select_comis_cedex_MARDS" ' cmd.Parameters = Array As Object( ALMACEN, e_ruta.text ) -' B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "COMISIONES") +' reqManager.ExecuteQuery(cmd , 0, "COMISIONES") ' cmd.Initialize ' cmd.Name = "select_hist_avance_MARDS" 'select * from HIST_AVANCE_MESACTUAL where HIST_AM_RUTA = ? and HIST_AM_IDALMACEN order by HIST_AM_MARCA ' cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) ' LogColor($"HIST_AVANCE Ruta=|${e_ruta.text}|, almacen=|${ALMACEN}|"$, Colors.Red) -' B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "hist_avance") +' reqManager.ExecuteQuery(cmd , 0, "hist_avance") cargar.Visible = False Subir.Visible = False @@ -959,7 +962,7 @@ End Sub Sub JobDone(Job As HttpJob) Log("JOBDONE PRINCIPAL") ' If Job.JobName = "DBRequest" Then -' Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) +' Dim RESULT As DBResult = reqManager.HandleJob(Job) ' Log($"Tag: ${RESULT.tag}, success=${Job.Success}"$) ' End If @@ -975,10 +978,10 @@ Sub JobDone(Job As HttpJob) End If End If Else 'If Job Success then ... - LogColor("JobDone: '" & B4XPages.MainPage.reqManager.HandleJob(Job).tag & "' - Registros: " & B4XPages.MainPage.reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211027 + LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211027 'Verificamos que el usuario guardado en BD sea VALIDO. If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) + Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "update_gps" Then For Each records() As Object In RESULT.Rows @@ -1019,7 +1022,7 @@ Sub JobDone(Job As HttpJob) End If If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) + Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "giro" Then 'query tag For Each records() As Object In RESULT.Rows Dim giro As String = records(RESULT.Columns.Get("CAT_GR_DESC")) @@ -1050,7 +1053,7 @@ Sub JobDone(Job As HttpJob) End If If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) + Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "bandera" Then 'query tag For Each records() As Object In RESULT.Rows Dim aurotizado As String = records(RESULT.Columns.Get("CAT_RU_B_ALTA_CLIENTES")) @@ -1081,7 +1084,7 @@ Sub JobDone(Job As HttpJob) End If If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) + Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "kmt_datos" Then 'query tag S_CC.TEXT = "CARGANDO" For Each records() As Object In RESULT.Rows @@ -1123,7 +1126,7 @@ Sub JobDone(Job As HttpJob) End If If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) + Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "resum_apk" Then 'query tag For Each records() As Object In RESULT.Rows Dim HIST_RA_OBJMES As String = records(RESULT.Columns.Get("HIST_RA_OBJMES")) @@ -1183,7 +1186,7 @@ Sub JobDone(Job As HttpJob) End If If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) + Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "hist_promos" Then 'query tag For Each records() As Object In RESULT.Rows Dim HP_CLIENTE As String = records(RESULT.Columns.Get("HP_CLIENTE")) @@ -1204,7 +1207,7 @@ Sub JobDone(Job As HttpJob) End If If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) + Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "hist_cliente_promos" Then 'query tag For Each records() As Object In RESULT.Rows Dim HCCP_CLIENTE As String = records(RESULT.Columns.Get("HCCP_CLIENTE")) @@ -1217,7 +1220,7 @@ Sub JobDone(Job As HttpJob) End If If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) + Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "HIST_MARCAS_CUOTAS" Then 'query tag For Each records() As Object In RESULT.Rows Dim HMC_MARCA As String = records(RESULT.Columns.Get("HMC_MARCA")) @@ -1229,7 +1232,7 @@ Sub JobDone(Job As HttpJob) End If If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) + Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "hist_comp_promos" Then 'query tag For Each records() As Object In RESULT.Rows Dim CAT_PA_ID As String = records(RESULT.Columns.Get("CAT_PA_ID")) @@ -1251,7 +1254,7 @@ Sub JobDone(Job As HttpJob) End If If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) + Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "cat_verificacion" Then 'query tag For Each records() As Object In RESULT.Rows Dim CAT_VE_IDPROD As String = records(RESULT.Columns.Get("CAT_VE_IDPROD")) @@ -1263,7 +1266,7 @@ Sub JobDone(Job As HttpJob) End If If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) + Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "marcas_rutas" Then 'query tag For Each records() As Object In RESULT.Rows Dim HVD_MARCA As String = records(RESULT.Columns.Get("HVD_MARCA")) @@ -1275,7 +1278,7 @@ Sub JobDone(Job As HttpJob) 'CUOTAS If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) + Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "CUOTAS" Then 'query tag For Each records() As Object In RESULT.Rows Dim HC_RUTA As String = records(RESULT.Columns.Get("HC_RUTA")) @@ -1299,7 +1302,7 @@ Sub JobDone(Job As HttpJob) 'COMISIONES If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) + Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "COMISIONES" Then 'query tag For Each records() As Object In RESULT.Rows Dim HCM_TOTAL_V As String = records(RESULT.Columns.Get("HCM_TOTAL_V")) @@ -1312,7 +1315,7 @@ Sub JobDone(Job As HttpJob) End If If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) + Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "gunaprod" Then 'query tag If PB2.Progress < 30 Then S_CP.Text = "CARGANDO" 'Mod por CHV - 20211028 Agregue el "If PB2.Progress < 30 then" For Each records() As Object In RESULT.Rows @@ -1372,7 +1375,7 @@ Sub JobDone(Job As HttpJob) End If If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) + Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "gunaprodp" Then 'query tag For Each records() As Object In RESULT.Rows Dim CAT_GP_ID As String = records(RESULT.Columns.Get("CAT_GP_ID")) @@ -1417,7 +1420,7 @@ Sub JobDone(Job As HttpJob) End If If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) + Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "gunaprodps" Then 'query tag For Each records() As Object In RESULT.Rows @@ -1463,7 +1466,7 @@ Sub JobDone(Job As HttpJob) End If If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) + Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "detallepaq" Then 'query tag For Each records() As Object In RESULT.Rows Dim CAT_DP_ALMACEN As String = records(RESULT.Columns.Get("CAT_DP_ALMACEN")) @@ -1503,7 +1506,7 @@ Sub JobDone(Job As HttpJob) End If If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) + Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "hist_datos" Then 'query tag For Each records() As Object In RESULT.Rows Dim HVD_CLIENTE As String = records(RESULT.Columns.Get("HVD_CLIENTE")) @@ -1532,7 +1535,7 @@ Sub JobDone(Job As HttpJob) End If If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) + Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "variables" Then 'query tag For Each records() As Object In RESULT.Rows Dim Cat_Va_Descripcion As String = records(RESULT.Columns.Get("CAT_VA_DESCRIPCION")) @@ -1543,7 +1546,7 @@ Sub JobDone(Job As HttpJob) End If If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) + Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "CUESTIONARIO" Then 'query tag For Each records() As Object In RESULT.Rows Dim Cat_Va_Valor As String = records(RESULT.Columns.Get("CAT_VALOR")) @@ -1554,8 +1557,9 @@ Sub JobDone(Job As HttpJob) End If If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) + Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "valida_pedido" Then 'query tag + Subs.logJobDoneResultados(RESULT) For Each records() As Object In RESULT.Rows Dim CUANTOSP As Int = records(RESULT.Columns.Get("CUANTOSP")) @@ -1569,15 +1573,14 @@ Sub JobDone(Job As HttpJob) S_CP.Text = "ENVIAR DATOS (K-2)" Log("No se cargo bien la info P. Sync Nuevamente" & CUANTOSP & " " & cuantos_pedido) End If - - Next End If End If If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) + Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "valida_pedidoc" Then 'query tag + Subs.logJobDoneResultados(RESULT) For Each records() As Object In RESULT.Rows Dim CUANTOSC As Int = records(RESULT.Columns.Get("CUANTOSC")) @@ -1594,8 +1597,9 @@ Sub JobDone(Job As HttpJob) End If If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) + Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "valida_noventa" Then 'query tag + Subs.logJobDoneResultados(RESULT) For Each records() As Object In RESULT.Rows Dim CUANTOSN As Int = records(RESULT.Columns.Get("CUANTOSN")) If cuantos_noventa = CUANTOSN Then @@ -1610,7 +1614,7 @@ Sub JobDone(Job As HttpJob) End If If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) + Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "ins_pedido" Then 'query tag For Each records() As Object In RESULT.Rows PB2.Progress = PB2.Progress + 5 @@ -1623,7 +1627,7 @@ Sub JobDone(Job As HttpJob) End If If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) + Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "version" Then 'query tag For Each records() As Object In RESULT.Rows B4XPages.MainPage.skmt.ExecNonQuery("delete from VERSION") @@ -1634,7 +1638,7 @@ Sub JobDone(Job As HttpJob) End If If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) + Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "count_cli" Then 'query tag For Each records() As Object In RESULT.Rows COUNT_CLIE = records(RESULT.Columns.Get("COUNT_CLIE")) @@ -1643,7 +1647,7 @@ Sub JobDone(Job As HttpJob) End If If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) + Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "ruta" Then 'query tag For Each records() As Object In RESULT.Rows Dim VALIDO As String = records(RESULT.Columns.Get("VALIDO")) @@ -1667,7 +1671,7 @@ Sub JobDone(Job As HttpJob) End If If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) + Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "usuario" Then 'query tag For Each records() As Object In RESULT.Rows Dim name2 As String = records(RESULT.Columns.Get("VALIDO")) @@ -1681,7 +1685,7 @@ Sub JobDone(Job As HttpJob) End If If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) + 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")) @@ -1692,7 +1696,7 @@ Sub JobDone(Job As HttpJob) End If If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) + Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "folio" Then 'query tag For Each records() As Object In RESULT.Rows Dim FOLIO As String = records(RESULT.Columns.Get("FOLIO")) @@ -1703,7 +1707,7 @@ Sub JobDone(Job As HttpJob) End If If Job.JobName = "DBRequest" Then - Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job) + Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "hist_avance" Then 'query tag For Each records() As Object In RESULT.Rows Dim marca As String = records(RESULT.Columns.Get("HIST_AM_MARCA")) @@ -1738,10 +1742,17 @@ End Sub '################### Codigo de prueba JAGU, no poner atencion ############################ Sub connecta_LongClick ProgressDialogShow("Enviamos") - s.reqManagerReInit 'Reiniciamos el DBReqManager por si hay modificacion en el servidor. +' s.reqManagerReInit 'Reiniciamos el DBReqManager por si hay modificacion en el servidor. s.envioTest 'Llamamos envioTest de C_Subs. End Sub +Sub tickets_dia_LongClick + cuantos_pedido = 0 + cuantos_pedidosc = 0 + cuantos_noventa = 0 + t1_tick +End Sub + Sub Subs_envioOk(succes As Boolean) Log("###################### " & succes) ProgressDialogHide @@ -1749,7 +1760,7 @@ End Sub '################################ Termina codigo de prueba ############################# Sub connecta_Click - B4XPages.MainPage.reqManager.Initialize(Me, Starter.server) + reqManager.Initialize(Me, Starter.server) Log(Starter.server) connecta1 = connecta1 + 1 ' imei = p.GetDeviceId @@ -1758,7 +1769,7 @@ Sub connecta_Click Dim cmd As DBCommand cmd.Initialize cmd.Name = "select_version_MARDS" - B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "version") + reqManager.ExecuteQuery(cmd , 0, "version") ' Cuando nos conectamos verificamos que el usuario guardado en BD sea VALIDO. c = B4XPages.MainPage.skmt.ExecQuery("select USUARIO, PASS from usuarioa") @@ -1769,7 +1780,7 @@ Sub connecta_Click cmd.Initialize cmd.Name = "select_usuario_guna_MARDS_1" cmd.Parameters = Array As Object(usrT, passT) - B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "usuarioA") + reqManager.ExecuteQuery(cmd , 0, "usuarioA") End If c.Close @@ -1778,7 +1789,7 @@ Sub connecta_Click cmd.Initialize cmd.Name = "select_ruta_MARDS_6" cmd.Parameters = Array As Object(ALMACEN,e_ruta.text) - B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "ruta") + reqManager.ExecuteQuery(cmd , 0, "ruta") If e_ruta.Text = "KMTS1" Then cargar.Visible = True @@ -1806,7 +1817,7 @@ Sub connecta_Click ' 'SERVER = "http://177.244.63.54:1782" '' B4XPages.MainPage.SERVER = "http://187.189.244.154:1782" '' SERVER = "http://10.0.0.205:1782" -' B4XPages.MainPage.reqManager.Initialize(Me, Starter.server) +' reqManager.Initialize(Me, Starter.server) ' End If End Sub @@ -1872,16 +1883,16 @@ Sub inv_Click cmd.Initialize cmd.Name = "select_cat_gunaprod_MARDS" cmd.Parameters = Array As Object(ALMACEN) - B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "gunaprod") + reqManager.ExecuteQuery(cmd , 0, "gunaprod") cmd.Initialize cmd.Name = "select_cat_paquetes_MARDS" cmd.Parameters = Array As Object(ALMACEN) - B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "gunaprodp") + reqManager.ExecuteQuery(cmd , 0, "gunaprodp") cmd.Initialize cmd.Name = "select_cat_detallepa_MARDS" cmd.Parameters = Array As Object(ALMACEN) - B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "detallepaq") + reqManager.ExecuteQuery(cmd , 0, "detallepaq") cargar.Visible = False Subir.Visible = False @@ -1894,17 +1905,17 @@ Sub t1_tick cmd.Initialize cmd.Name = "select_cuantos_pedido_MARDS" cmd.Parameters = Array As Object(ALMACEN,l_ruta.text) - B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "valida_pedido") + reqManager.ExecuteQuery(cmd , 0, "valida_pedido") cmd.Initialize cmd.Name = "select_cuantos_noventa_MARDS" cmd.Parameters = Array As Object(ALMACEN,l_ruta.text) - B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "valida_noventa") + reqManager.ExecuteQuery(cmd , 0, "valida_noventa") cmd.Initialize cmd.Name = "select_cuantos_pedidoc_MARDS" cmd.Parameters = Array As Object(ALMACEN,l_ruta.text) - B4XPages.MainPage.reqManager.ExecuteQuery(cmd , 0, "valida_pedidoc") + reqManager.ExecuteQuery(cmd , 0, "valida_pedidoc") If PB2.Progress = 0 Then S_CP.Text = "ENVIAR DATOS (K-1)" diff --git a/B4A/C_Subs.bas b/B4A/C_Subs.bas index b4b26b6..c4841a6 100644 --- a/B4A/C_Subs.bas +++ b/B4A/C_Subs.bas @@ -46,6 +46,7 @@ Sub dbOk(Success As Boolean) End If End Sub +'Inicializamos el DBReqServer. Sub reqManagerInit As DBRequestManager Private rm As DBRequestManager rm.Initialize(Me, traeDBReqServerDeBD(db)) @@ -53,6 +54,7 @@ Sub reqManagerInit As DBRequestManager Return rm End Sub +'Reinicializamos el DBReqServer. Sub reqManagerReInit Log("reqManager ReInit") reqManager = reqManagerInit @@ -494,4 +496,92 @@ Sub notiLowReturn(title As String, Body As String, id As Int) As Notification 'i notification.Notify(id) ' Log("notiLowReturn SetInfo") Return notification +End Sub + +'Regresa el almacen actual de la base de datos. +Sub traeAlmacen As String 'ignore + Private c As Cursor + Private a As String + c = db.ExecQuery("select ID_ALMACEN from CAT_ALMACEN") + c.Position = 0 + a = C.GetString("ID_ALMACEN") + c.Close + Return a +End Sub + +'Regresa la ruta actual de la base de datos. +Sub traeRuta As String 'ignore + Private c As Cursor + Private r As String + c = db.ExecQuery("select CAT_CL_RUTA from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)") + r = "0" + If c.RowCount > 0 Then + c.Position=0 + r = c.GetString("CAT_CL_RUTA") + End If + c.Close + Return r +End Sub + +'Mandamos los pedidos pendientes (pc_envio_ok <> 1). +Sub mandaPendientes 'ignore + Private logger As Boolean = False + 'PEDIDO_CLIENTE (Pendientes) + Private c As Cursor = db.ExecQuery("SELECT PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT, PC_COSTO_SIN, PC_RUTA, PC_ALMACEN, PC_FACTURA FROM PEDIDO_CLIENTE where pc_envio_ok <> 1") + If logger Then Log($"Pedido_Cliente PENDIENTE: ${c.RowCount}"$) + Private almacen As String = traeAlmacen + Private ruta As String = traeRuta + If c.RowCount>0 Then + For i = 0 To c.RowCount - 1 + c.Position = i + Dim cmd As DBCommand + cmd.Initialize + cmd.Name = "DELETE_PEDIDO_MARDS_PC" + cmd.Parameters = Array As Object(almacen, ruta, c.GetString("PC_CLIENTE") ) + reqManager.ExecuteCommand(cmd , "DEL_PC") + + Dim cmd As DBCommand + cmd.Initialize + cmd.Name = "insert_pedidos_MARDS" + If logger Then Log($"${c.GetString("PC_CLIENTE")}, ${almacen}"$) + cmd.Parameters = Array As Object(C.GetString("PC_CLIENTE"), C.GetString("PC_FECHA"), C.GetString("PC_USER"), C.GetString("PC_NOART"), C.GetString("PC_MONTO"), C.GetString("PC_LON"), C.GetString("PC_LAT"), almacen, ruta, C.GetString("PC_COSTO_SIN"), C.GetString("PC_FACTURA")) + reqManager.ExecuteCommand(cmd , $"ins_pedidosPendientes_head_${c.GetString("PC_CLIENTE")}"$) + Next + End If + + 'PEDIDO (Pendientes) + c=B4XPages.MainPage.skmt.ExecQuery("SELECT PC_ENVIO_OK, PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_FECHA, PE_USUARIO, PE_COSTO_SIN, PE_RUTA, PE_DESC, PE_FOLIO FROM pedido_cliente left join PEDIDO where pc_cliente = pe_cliente and pc_envio_ok <> 1") + If logger Then Log($"Pedido PENDIENTE: ${c.RowCount}"$) + If c.RowCount>0 Then + For i = 0 To c.RowCount - 1 + c.Position = i + Dim cmd As DBCommand + + cmd.Initialize + cmd.Name = "DELETE_PEDIDO_MARDS_PE" + cmd.Parameters = Array As Object(almacen, ruta,c.GetString("PE_CLIENTE") ) + reqManager.ExecuteCommand(cmd , "DEL_PE") + + cmd.Initialize + cmd.Name = "insert_pedido_MARDS" + cmd.Parameters = Array As Object(c.GetString("PE_CEDIS"), almacen, c.GetString("PE_COSTO_TOT"), c.GetString("PE_COSTOU"), c.GetString("PE_CANT"), c.GetString("PE_PRONOMBRE"), c.GetString("PE_PROID"), c.GetString("PE_CLIENTE"), c.GetString("PE_FECHA"), c.GetString("PE_USUARIO"), c.GetString("PE_RUTA"), C.GetString("PE_COSTO_SIN"), c.GetString("PE_DESC"), c.GetString("PE_FOLIO")) + reqManager.ExecuteCommand(cmd , $"ins_pedidosPendientes_prods_${c.GetString("PE_CLIENTE")}"$) + Next + End If + + 'ABONOS + Dim ab As Cursor = db.ExecQuery($"SELECT * from ABONOS where a_enviado is null"$) + If logger Then Log(ab.RowCount) + If ab.RowCount > 0 Then + For i = 0 To ab.RowCount - 1 + ab.Position = i + Dim cmd As DBCommand + cmd.Initialize + cmd.Name = "insert_abono_MARDS" + cmd.Parameters = Array As Object( ab.GetString("a_usuario"), ab.GetString("a_ruta"), ab.GetString("a_cliente"), ab.GetString("a_abono"), ab.GetString("a_fecha") ) + reqManager.ExecuteCommand(cmd , $"ins_abonosPendientes_${ab.GetString("a_cliente")}"$) + if logger then Log($"ins_abonosPendientes_${ab.GetString("a_cliente")}"$) + Next + End If + ab.Close End Sub \ No newline at end of file diff --git a/B4A/DBRequestManager.bas b/B4A/DBRequestManager.bas index 43c627f..0421c52 100644 --- a/B4A/DBRequestManager.bas +++ b/B4A/DBRequestManager.bas @@ -41,6 +41,7 @@ Public Sub ExecuteQuery(Command As DBCommand, Limit As Int, Tag As Object) WriteList(Command.Parameters, out2) out2.Close j.PostBytes(link & "?method=query", ms.ToBytesArray) + j.GetRequest.Timeout = 10000 'timeout del request (10 segs) End Sub 'Executes a batch of (non-select) commands. @@ -188,7 +189,7 @@ End Sub 'Handles the Job result and returns a DBResult. Public Sub HandleJob(Job As HttpJob) As DBResult - Dim start As Long = DateTime.Now +' Dim start As Long = DateTime.Now Dim In As InputStream = Job.GetInputStream Dim cs As CompressedStreams In = cs.WrapInputStream(In, "gzip") diff --git a/B4A/Subs.bas b/B4A/Subs.bas index 3aebcd2..88e80ae 100644 --- a/B4A/Subs.bas +++ b/B4A/Subs.bas @@ -1289,4 +1289,14 @@ Sub guardaAppInfo(skmt As SQL) skmt.ExecNonQuery("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'EMPRESA' or CAT_VA_DESCRIPCION = 'APP_NAME' or CAT_VA_DESCRIPCION = 'APP_VERSION'") skmt.ExecNonQuery($"insert into CAT_VARIABLES (CAT_VA_DESCRIPCION, CAT_VA_VALOR) values ('APP_NAME', '${Application.LabelName}')"$) skmt.ExecNonQuery($"insert into CAT_VARIABLES (CAT_VA_DESCRIPCION, CAT_VA_VALOR) values ('APP_VERSION', '${Application.VersionName}')"$) +End Sub + +'Muestra en el Log los campos y valores que regresan en el JobDone. +Sub logJobDoneResultados(resultado As DBResult) + For Each records() As Object In resultado.Rows + LogColor($"====== ${resultado.Tag} - REGISTROS = ${resultado.Rows.Size}"$, Colors.RGB(215,37,0)) + For Each k As String In resultado.Columns.Keys + LogColor(k & " = " & records(resultado.Columns.Get(k)), Colors.RGB(215,37,0)) + Next + Next End Sub \ No newline at end of file From 512f91b7ab102467f626cbad016202f75615be57 Mon Sep 17 00:00:00 2001 From: cheveguerra Date: Sun, 17 Sep 2023 14:07:26 -0600 Subject: [PATCH 4/5] 17/9/23 - Cambios en mandappendientes y agregamos RepaldoDiario MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Se hicieron cambios en mandaPendeintes porque se estaban enviado SIEMPRE todos los pedidos. - Se agregó la clase C_RespaldoDiario para implementar el respaldo de las tablas de inventarios, paquetes y pedidos. --- B4A/B4XMainPage.bas | 32 +++++++-- B4A/C_Cliente.bas | 85 ++++++++++++----------- B4A/C_NoVenta.bas | 2 +- B4A/C_Pedidos.bas | 2 - B4A/C_Principal.bas | 9 ++- B4A/C_RespaldoDiario.bas | 125 ++++++++++++++++++++++++++++++++++ B4A/C_Subs.bas | 4 +- B4A/DBRequestManager.bas | 2 +- B4A/ManageExternalStorage.bas | 79 +++++++++++++++++++++ B4A/Mariana.b4a | 24 ++++--- B4A/Starter.bas | 1 - B4A/Subs.bas | 25 ++++++- 12 files changed, 323 insertions(+), 67 deletions(-) create mode 100644 B4A/C_RespaldoDiario.bas create mode 100644 B4A/ManageExternalStorage.bas diff --git a/B4A/B4XMainPage.bas b/B4A/B4XMainPage.bas index 1e07d80..da6c338 100644 --- a/B4A/B4XMainPage.bas +++ b/B4A/B4XMainPage.bas @@ -94,6 +94,8 @@ Sub Class_Globals Private b_envioBD As Button Public Provider As FileProvider Public rutaBDBackup As String = "" + Dim MES1 As ManageExternalStorage + Dim device As Phone End Sub Public Sub Initialize @@ -138,8 +140,8 @@ Private Sub B4XPage_Created (Root1 As B4XView) ruta = Starter.ruta Provider.Initialize - Subs.borraArribaDe100Errores ' Para Websockets - Subs.borraArribaDe600RenglonesBitacora ' Para Websockets +' 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") Log(File.DirAssets) @@ -166,6 +168,7 @@ Private Sub B4XPage_Created (Root1 As B4XView) skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_GIRO(GIRO 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)") + Subs.agregaColumna("PEDIDO", "PE_ENVIO_OK", "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 @@ -211,9 +214,6 @@ Private Sub B4XPage_Created (Root1 As B4XView) 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 = Application.VersionName 'este codigo es para lo del menu PopupMenu.Initialize("PopupMenu", b_menu) @@ -255,6 +255,27 @@ Private Sub B4XPage_Created (Root1 As B4XView) ' ToastMessageShow("No permission", True) ' End If p_appUpdate.Visible = False + MES1.Initialize(Me, "MES1") + ' 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 Activity_PermissionResult (Permission As String, Result As Boolean) +' Log($"PERMISSION_WRITE_EXTERNAL_STORAGE = ${Result}"$) + 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 permission") + MES1.GetPermission + Wait For MES_StorageAvailable + End If + End If End Sub Sub B4XPage_Appear @@ -673,6 +694,7 @@ Sub B_SERVER_Click If Logger Then Log("Inicializamos reqManager con " & Starter.server) reqManager.Initialize(Me, Starter.server) CallSubDelayed(Starter, "reinicializaReqManager") + s.reqManagerReInit 'Inicializamos el reqManager de C_Subs. Subs.panelVisible(p_Main,0,0) p_appUpdate.Visible = False ' Entrar.Visible = True diff --git a/B4A/C_Cliente.bas b/B4A/C_Cliente.bas index fb1b380..ae82e7b 100644 --- a/B4A/C_Cliente.bas +++ b/B4A/C_Cliente.bas @@ -185,12 +185,12 @@ Private Sub B4XPage_Created (Root1 As B4XView) s.Close btAdmin.Initialize("BlueTeeth") cmp20.Initialize("Printer") - reqManager.Initialize(Me, B4XPages.MainPage.SERVER) End Sub 'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. Sub B4XPage_Appear + reqManager.Initialize(Me, Starter.server) Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_CAMERA) Wait For B4XPage_PermissionResult (Permission As String, resultC As Boolean) Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE) @@ -439,14 +439,14 @@ Sub Guardar_Click c.Position=0 usuario = c.GetString("USUARIO") c.Close - c=skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, COUNT(*) AS CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") + c = skmt.ExecQuery("Select sum(pe_costo_tot) As TOTAL_CLIE, SUM(PE_CANT) As CANT_CLIE, COUNT(*) As CUANTOS, PC_ENVIO_OK FROM PEDIDO left join PEDIDO_CLIENTE Where pc_cliente = pe_cliente And PE_CLIENTE IN (Select cuenta from cuentaa)") c.Position=0 If c.GetString("CUANTOS") > 0 Then Private cbFactura As Int = 0 If cb_factura.Checked Then cbFactura = 1 skmt.ExecNonQuery("delete from NOVENTA where NV_CLIENTE In (select cuenta from cuentaa)") skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") - skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT,PC_ENVIO_OK, PC_FACTURA) VALUES (?,?,?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps,0, cbFactura)) + skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT, PC_ENVIO_OK, PC_FACTURA) VALUES (?,?,?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"), c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps, c.GetString("PC_ENVIO_OK"), cbFactura)) skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") End If c.Close @@ -455,12 +455,12 @@ Sub Guardar_Click skmt.ExecNonQuery2("UPDATE HIST_STAY_STORE set HSS_OUT = ? where HSS_OUT = 0 AND HSS_CODIGO In (select cuenta from cuentaa)", Array As Object(sTime)) ' skmt.ExecNonQuery("UPDATE HIST_STAY_STORE set HSS_TOT = HSS_OUT - HSS_IN where HSS_CODIGO In (select cuenta from cuentaa)") Try - c=skmt.ExecQuery(" Select (substr(HSS_OUT,1,2) - substr(HSS_IN,1,2)) - Case when (substr(HSS_OUT,3,2) - substr(HSS_IN,3,2)) < 0 Then 1 Else 0 end HORAS_TOTALES, " & _ - "Case when (substr(HSS_OUT,3,2) - substr(HSS_IN,3,2)) < 0 Then (substr(HSS_OUT,3,2) + 60 - substr(HSS_IN,3,2)) " & _ - " Else (substr(HSS_OUT,3,2) - substr(HSS_IN,3,2)) End - Case when (substr(HSS_OUT,5,2) - substr(HSS_IN,5,2)) < 0 Then 1 Else 0 end MINUTOS_TOTALES, " & _ - "Case when (substr(HSS_OUT,5,2) - substr(HSS_IN,5,2)) < 0 Then (substr(HSS_OUT,5,2) + 60 - substr(HSS_IN,5,2)) " & _ - " Else (substr(HSS_OUT,5,2) - substr(HSS_IN,5,2)) end SEGUNDOS_TOTALES " & _ - " from HIST_STAY_STORE where HSS_CODIGO In (Select cuenta from cuentaa) ") + c=skmt.ExecQuery("Select (substr(HSS_OUT,1,2) - substr(HSS_IN,1,2)) - Case when (substr(HSS_OUT,3,2) - substr(HSS_IN,3,2)) < 0 Then 1 Else 0 end HORAS_TOTALES, " & _ + "Case when (substr(HSS_OUT,3,2) - substr(HSS_IN,3,2)) < 0 Then (substr(HSS_OUT,3,2) + 60 - substr(HSS_IN,3,2)) " & _ + " Else (substr(HSS_OUT,3,2) - substr(HSS_IN,3,2)) End - Case when (substr(HSS_OUT,5,2) - substr(HSS_IN,5,2)) < 0 Then 1 Else 0 end MINUTOS_TOTALES, " & _ + "Case when (substr(HSS_OUT,5,2) - substr(HSS_IN,5,2)) < 0 Then (substr(HSS_OUT,5,2) + 60 - substr(HSS_IN,5,2)) " & _ + " Else (substr(HSS_OUT,5,2) - substr(HSS_IN,5,2)) end SEGUNDOS_TOTALES " & _ + " from HIST_STAY_STORE where HSS_CODIGO In (Select cuenta from cuentaa) ") c.Position = 0 stay_hh = c.GetString("HORAS_TOTALES") * 60 * 60 stay_mi = c.GetString("MINUTOS_TOTALES") * 60 @@ -737,7 +737,7 @@ Sub RB4_CheckedChange(Checked As Boolean) End If End Sub -'Sub b_like_Click +Sub b_like_Click ' Panel1.Visible = True ' b_like.Visible = False ' Tar.Visible = False @@ -745,16 +745,16 @@ End Sub ' gest.Visible = False ' b_venta.Visible = False ' Guardar.Visible = False -'End Sub +End Sub -'Sub B_GPS_Click +Sub B_GPS_Click ' Dim result As Int ' result = Msgbox2("Esta seguro de cambiar las coordenadas de este cliente", "Aviso GPS", "SI", "", "NO", LoadBitmap(File.DirAssets, "alerta.jpg")) 'Ignore ' If result = DialogResponse.Positive Then ' skmt.ExecNonQuery2("UPDATE kmt_info SET CAT_CL_LAT = ?, CAT_CL_LONG = ? where CAT_CL_CODIGO In (Select cuenta from cuentaa)", Array As Object(B4XPages.MainPage.lat_gps, B4XPages.MainPage.lon_gps)) ' B4XPage_Appear ' End If -'End Sub +End Sub Private Sub p_cliente_Click 'Nada aqui, solo esta para que los clics no se pasen hacia atras. @@ -767,18 +767,39 @@ End Sub Sub mandaPendientes Log("MandaPendientes") - 'PEDIDO_CLIENTE (Pendientes) - c=skmt.ExecQuery("SELECT PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT, PC_COSTO_SIN, PC_RUTA, PC_ALMACEN, PC_FACTURA FROM PEDIDO_CLIENTE where PC_ENVIO_OK <> 1") - Log($"Pedido_Cliente PENDIENTE: ${c.RowCount}"$) - If c.RowCount>0 Then - For i=0 To c.RowCount -1 + 'PEDIDO (Pendientes) + c=skmt.ExecQuery("SELECT PE_ENVIO_OK, PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_FECHA, PE_USUARIO, PE_COSTO_SIN, PE_RUTA, PE_DESC, PE_FOLIO FROM PEDIDO where PE_ENVIO_OK <> 1") + Log($"Pedido PENDIENTE: ${c.RowCount}"$) + If c.RowCount > 0 Then + For i = 0 To c.RowCount -1 c.Position=i Dim cmd As DBCommand + + cmd.Initialize + cmd.Name = "DELETE_PEDIDO_MARDS_PE" + cmd.Parameters = Array As Object(ALMACEN, B4XPages.MainPage.principal.l_ruta.text,c.GetString("PE_CLIENTE") ) + reqManager.ExecuteCommand(cmd , "DEL_PE") + + cmd.Initialize + cmd.Name = "insert_pedido_MARDS" + cmd.Parameters = Array As Object(C.GetString("PE_CEDIS"),ALMACEN,C.GetString("PE_COSTO_TOT"),C.GetString("PE_COSTOU"),C.GetString("PE_CANT"),C.GetString("PE_PRONOMBRE"),C.GetString("PE_PROID"),C.GetString("PE_CLIENTE"),C.GetString("PE_FECHA"),C.GetString("PE_USUARIO"),C.GetString("PE_RUTA"), C.GetString("PE_COSTO_SIN"),C.GetString("PE_DESC"),c.GetString("PE_FOLIO")) + reqManager.ExecuteCommand(cmd , $"ins_pedidosPendientes_prods_${c.GetString("PE_CLIENTE")}"$) + Next + End If + + 'PEDIDO_CLIENTE (Pendientes) + c = skmt.ExecQuery("SELECT PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT, PC_COSTO_SIN, PC_RUTA, PC_ALMACEN, PC_FACTURA, PC_ENVIO_OK FROM PEDIDO_CLIENTE where PC_ENVIO_OK <> 1") + Log($"Pedido_Cliente PENDIENTE: ${c.RowCount}"$) + If c.RowCount > 0 Then + For i = 0 To c.RowCount - 1 + c.Position = i + Log($"**************** PC_ENVIO_OK: ${c.GetString("PC_ENVIO_OK")} "$) + Dim cmd As DBCommand cmd.Initialize cmd.Name = "DELETE_PEDIDO_MARDS_PC" cmd.Parameters = Array As Object(ALMACEN, B4XPages.MainPage.principal.l_ruta.text,c.GetString("PC_CLIENTE") ) reqManager.ExecuteCommand(cmd , "DEL_PC") - + Dim cmd As DBCommand cmd.Initialize cmd.Name = "insert_pedidos_MARDS" @@ -788,31 +809,11 @@ Sub mandaPendientes Next End If - 'PEDIDO (Pendientes) - c=skmt.ExecQuery("SELECT PC_ENVIO_OK, PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_FECHA, PE_USUARIO, PE_COSTO_SIN, PE_RUTA, PE_DESC, PE_FOLIO FROM pedido_cliente left join PEDIDO where pc_cliente = pe_cliente and pc_envio_ok <> 1") - Log($"Pedido PENDIENTE: ${c.RowCount}"$) - If c.RowCount>0 Then - For i=0 To c.RowCount -1 - c.Position=i - Dim cmd As DBCommand - - cmd.Initialize - cmd.Name = "DELETE_PEDIDO_MARDS_PE" - cmd.Parameters = Array As Object(ALMACEN, B4XPages.MainPage.principal.l_ruta.text,c.GetString("PE_CLIENTE") ) - reqManager.ExecuteCommand(cmd , "DEL_PE") - - cmd.Initialize - cmd.Name = "insert_pedido_MARDS" - cmd.Parameters = Array As Object(C.GetString("PE_CEDIS"),ALMACEN,C.GetString("PE_COSTO_TOT"),C.GetString("PE_COSTOU"),C.GetString("PE_CANT"),C.GetString("PE_PRONOMBRE"),C.GetString("PE_PROID"),C.GetString("PE_CLIENTE"),C.GetString("PE_FECHA"),C.GetString("PE_USUARIO"),C.GetString("PE_RUTA"), C.GetString("PE_COSTO_SIN"),C.GetString("PE_DESC"),c.GetString("PE_FOLIO")) - reqManager.ExecuteCommand(cmd , $"ins_pedidosPendientes_prods_${c.GetString("PE_CLIENTE")}"$) - Next - End If - 'ABONOS Dim ab As Cursor = skmt.ExecQuery($"SELECT * from ABONOS where a_enviado is null"$) - Log(ab.RowCount) +' Log(ab.RowCount) If ab.RowCount > 0 Then - For i=0 To ab.RowCount -1 + For i = 0 To ab.RowCount -1 ab.Position = i Dim cmd As DBCommand cmd.Initialize @@ -845,6 +846,7 @@ Sub JobDone(Job As HttpJob) Log("JOBDONE CLIENTE . " & Job.Success) If Job.Success = False Then ' ToastMessageShow("Error: " & Job.ErrorMessage, True) +' LogColor("JobDone Error: '" & reqManager.HandleJob(Job).tag, Colors.red) 'Mod por CHV - 211027 Else LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211027 If Job.JobName = "DBRequest" Then @@ -873,6 +875,7 @@ Sub JobDone(Job As HttpJob) Log(resultado.Tag & ": " & k & ": " & records(resultado.Columns.Get(k))) Next Next + skmt.ExecNonQuery($"UPDATE PEDIDO set PE_ENVIO_OK = 1 where PE_CLIENTE = '${cliente}'"$) End If End If diff --git a/B4A/C_NoVenta.bas b/B4A/C_NoVenta.bas index ead072f..de9aef0 100644 --- a/B4A/C_NoVenta.bas +++ b/B4A/C_NoVenta.bas @@ -49,12 +49,12 @@ Private Sub B4XPage_Created (Root1 As B4XView) File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db") End If ' skmt.Initialize(ruta,"kmt.db", True) - reqManager.Initialize(Me, B4XPages.MainPage.SERVER) End Sub 'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. Sub B4XPage_Appear + reqManager.Initialize(Me, Starter.server) e_comm.Text="" tgl.Initialize If Not(Starter.gps.GPSEnabled) Then diff --git a/B4A/C_Pedidos.bas b/B4A/C_Pedidos.bas index 752b027..8cddf49 100644 --- a/B4A/C_Pedidos.bas +++ b/B4A/C_Pedidos.bas @@ -72,12 +72,10 @@ Private Sub B4XPage_Created (Root1 As B4XView) 'load the layout to Root Root.LoadLayout("pedido") i_fotol.Visible = False -' B4XPages.MainPage.reqManager.Initialize(Me, "http://177.244.63.54:1782") ruta = File.DirInternal If File.Exists(ruta, "kmt.db") = False Then File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db") End If -' skmt.Initialize(ruta,"kmt.db", True) End Sub 'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. diff --git a/B4A/C_Principal.bas b/B4A/C_Principal.bas index 86c387b..3699558 100644 --- a/B4A/C_Principal.bas +++ b/B4A/C_Principal.bas @@ -10,6 +10,7 @@ Sub Class_Globals Private Root As B4XView 'ignore Private xui As XUI 'ignore Dim reqManager As DBRequestManager + Dim rd As C_RespaldoDiario Dim conectado As String Dim t1 As Timer Dim sb As StringBuilder @@ -236,6 +237,8 @@ Private Sub B4XPage_Created (Root1 As B4XView) 'load the layout to Root Root.LoadLayout("principal") s.Initialize(Me, "Subs") + rd.Initialize 'Inicializamos el respaldo diario. + rd.vacuum EJECUTANDO=1 Dim ruta As String img2.Visible =False @@ -305,8 +308,12 @@ Private Sub B4XPage_Created (Root1 As B4XView) End Sub Sub B4XPage_Appear - s.reqManagerReInit 'Reiniciamos el DBReqManager por si hay modificacion en el servidor. +' s.reqManagerReInit 'Reiniciamos el DBReqManager de C_Subs por si hay modificacion en el servidor. reqManager.Initialize(Me, Starter.server) +' B4XPages.MainPage.cliente.mandaPendientes 'Ejecutamos mandaPendientes. + rd.respaldaPedido + rd.respaldaInventarios + rd.respaldaPaquetes nvo_cliente.Enabled = False HORAINGRESO ="000000" Btn_Ubicar.Left = (Root.Width/2) - (Btn_Ubicar.Width/2) diff --git a/B4A/C_RespaldoDiario.bas b/B4A/C_RespaldoDiario.bas new file mode 100644 index 0000000..0426571 --- /dev/null +++ b/B4A/C_RespaldoDiario.bas @@ -0,0 +1,125 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=12.2 +@EndOfDesignText@ +Sub Class_Globals + Private Root As B4XView 'ignore + Private xui As XUI 'ignore + Dim skmt, rkmt As SQL + Dim rp As RuntimePermissions + Dim safePath As String + Dim fechaHoy As String + Dim skmtAttached As Boolean = False +End Sub + +'You can add more parameters here. +Public Sub Initialize As Object +' Log("************************** " & safePath) + Dim Dirp As String = File.DirRootExternal + Dim Dir As String + Dim Dir2 As String + Try + File.MakeDir(Dirp,"/kmts") + Dir = "/kmts" +' Log("creado en kmts " & Dirp & Dir) + Catch + Dir = "" +' Log("creado en raiz") + End Try +' safePath = rp.GetSafeDirDefaultExternal("./") + safePath = Dirp & Dir + rkmt.Initialize(safePath,"md.rkmt.km", True) + skmt.Initialize(File.DirInternal,"kmt.db", False) + rkmt.ExecNonQuery($"create table if not exists pedidos (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, pe_envio_ok TEXT)"$) + rkmt.ExecNonQuery($"create table if not exists inventarios (cat_gp_iniciativa TEXT, cat_gp_tipoprod TEXT, cat_gp_dev TEXT, cat_gp_almacen NUMERIC, 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_tipoprod2 TEXT, fecha TEXT)"$) + rkmt.ExecNonQuery($"create table if not exists paquetes (cat_dp_precio_simptos TEXT, cat_dp_precio TEXT, cat_dp_almacen TEXT, cat_dp_id TEXT, cat_dp_idprod TEXT, cat_dp_tipo TEXT, cat_dp_pzas TEXT, cat_dp_usuario TEXT, cat_dp_fecha TEXT, cat_dp_regalo TEXT, cat_dp_clasif TEXT, fecha TEXT)"$) + DateTime.DateFormat = "MM/dd/yyyy" + fechaHoy = DateTime.Date(DateTime.Now) + revisaSkmtAttached + Return Me +End Sub + +'This event will be called once, before the page becomes visible. +Private Sub B4XPage_Created (Root1 As B4XView) + Root = Root1 + 'load the layout to Root +End Sub + +Sub revisaSkmtAttached + skmtAttached = False + Dim rs As ResultSet = rkmt.ExecQuery("SELECT * FROM pragma_database_list") + Do While rs.NextRow 'Revisamos si esta montada "kmt.db" como "skmt" y si no, la montamos. + If rs.GetString("name") = "skmt1" Then skmtAttached = True + Loop + If Not(skmtAttached) Then + rkmt.ExecNonQuery($"attach database '${File.Combine(File.DirInternal, "kmt.db")}' as skmt1;"$) + skmtAttached = True + End If +End Sub + +'Copia la tabla PEDIDO a rkmt.db en la tarjeta del celular. +Sub respaldaPedido + Private inicio As String = DateTime.Now + Log("copiando pedidos ...") + rkmt.BeginTransaction + rkmt.ExecNonQuery($"delete from pedidos where substr(pe_fecha, 1, 10) = '${fechaHoy}'"$) + rkmt.ExecNonQuery($"insert into pedidos (pe_folio, pe_desc, pe_costo_sin, pe_ruta, pe_cedis, pe_costo_tot, pe_costou, pe_cant, pe_pronombre, pe_proid, pe_cliente, pe_fecha, pe_usuario, pe_envio_ok) select * from skmt1.pedido where substr(pe_fecha, 1, 10) = '${fechaHoy}'"$) + rkmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!! + rkmt.EndTransaction + Log(((DateTime.Now - inicio)/1000) & " segs") +End Sub + +'Copia la tabla CAT_GUNAPRODS a rkmt.db en la tarjeta del celular. +Sub respaldaInventarios + Log($"Borrando de fecha ${fechaHoy}"$) + Private inicio As String = DateTime.Now + Log("copiando inventarios ...") +' rkmt.ExecNonQuery($"delete from inventarios where substr(fecha, 1, 10) = '${fechaHoy}'"$) + rkmt.BeginTransaction + rkmt.ExecNonQuery($"delete from inventarios where fecha = '${fechaHoy}'"$) + rkmt.ExecNonQuery($"insert into inventarios (cat_gp_iniciativa, cat_gp_tipoprod, cat_gp_dev, cat_gp_almacen, cat_gp_id, cat_gp_nombre, cat_gp_imp1, cat_gp_imp2, cat_gp_precio, cat_gp_clasif, cat_gp_sts, cat_gp_tipo, cat_gp_subtipo, fecha) select cat_gp_iniciativa, cat_gp_tipoprod, cat_gp_dev, cat_gp_almacen, cat_gp_id, cat_gp_nombre, cat_gp_imp1, cat_gp_imp2, cat_gp_precio, cat_gp_clasif, cat_gp_sts, cat_gp_tipo, cat_gp_subtipo, '${fechaHoy}' as fecha from skmt1.cat_gunaprod"$) + rkmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!! + rkmt.EndTransaction + Log(((DateTime.Now - inicio)/1000) & " segs") +End Sub + +'Copia la tabla CAT_DETALLE_PAQ a rkmt.db en la tarjeta del celular. +Sub respaldaPaquetes + Private inicio As String = DateTime.Now + Log("copiando paquetes ...") + rkmt.BeginTransaction +' rkmt.ExecNonQuery($"delete from paquetes where substr(fecha, 1, 10) = '${fechaHoy}'"$) + rkmt.ExecNonQuery($"delete from paquetes where fecha = '${fechaHoy}'"$) + rkmt.ExecNonQuery($"insert into paquetes (cat_dp_precio_simptos, cat_dp_precio, cat_dp_almacen, cat_dp_id, cat_dp_idprod, cat_dp_tipo, cat_dp_pzas, cat_dp_usuario, cat_dp_fecha, cat_dp_regalo, cat_dp_clasif, fecha) select cat_dp_precio_simptos, cat_dp_precio, cat_dp_almacen, cat_dp_id, cat_dp_idprod, cat_dp_tipo, cat_dp_pzas, cat_dp_usuario, cat_dp_fecha, cat_dp_regalo, cat_dp_clasif, '${fechaHoy}' as fecha from skmt1.cat_detalles_paq"$) + rkmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!! + rkmt.EndTransaction + Log(((DateTime.Now - inicio)/1000) & " segs") +End Sub + +Sub vacuum + Log("Vacuum") + rkmt.ExecNonQuery("vacuum;") +End Sub + +'Agrega una columna a la tabla especificada. +'Hay que indicar el "tipo" de la columna (TEXT, INTEGER, ETC) +'Ej. agregaColumna("TABLA", "COLUMNA", "TIPO") +Sub agregaColumna(tabla As String, columna As String, tipo As String) 'ignore + Try 'Intentamos usar "pragma_table_info" para revisar si existe la columna en la tabla + Private c As Cursor = B4XPages.MainPage.skmt.ExecQuery($"SELECT COUNT(*) AS fCol FROM pragma_table_info('${tabla}') WHERE name='${columna}'"$) + c.Position = 0 + If c.GetString("fCol") = 0 Then 'Si no esta la columna la agregamos + B4XPages.MainPage.skmt.ExecNonQuery($"ALTER TABLE ${tabla} ADD COLUMN ${columna} ${tipo}"$) + Log($"Columna "${columna} ${tipo}", agregada a "${tabla}"."$) + End If + Catch 'Si no funciona "pragma_table_info" lo hacemos con try/catch + Try + B4XPages.MainPage.skmt.ExecNonQuery($"ALTER TABLE ${tabla} ADD COLUMN ${columna} ${tipo}"$) + Log($"Columna "${columna} ${tipo}", agregada a "${tabla}".."$) + Catch + Log(LastException) + End Try + End Try +End Sub \ No newline at end of file diff --git a/B4A/C_Subs.bas b/B4A/C_Subs.bas index c4841a6..8200cf3 100644 --- a/B4A/C_Subs.bas +++ b/B4A/C_Subs.bas @@ -54,7 +54,7 @@ Sub reqManagerInit As DBRequestManager Return rm End Sub -'Reinicializamos el DBReqServer. +'Reinicializamos el DBReqServer de C_Subs. Sub reqManagerReInit Log("reqManager ReInit") reqManager = reqManagerInit @@ -580,7 +580,7 @@ Sub mandaPendientes 'ignore cmd.Name = "insert_abono_MARDS" cmd.Parameters = Array As Object( ab.GetString("a_usuario"), ab.GetString("a_ruta"), ab.GetString("a_cliente"), ab.GetString("a_abono"), ab.GetString("a_fecha") ) reqManager.ExecuteCommand(cmd , $"ins_abonosPendientes_${ab.GetString("a_cliente")}"$) - if logger then Log($"ins_abonosPendientes_${ab.GetString("a_cliente")}"$) + If logger Then Log($"ins_abonosPendientes_${ab.GetString("a_cliente")}"$) Next End If ab.Close diff --git a/B4A/DBRequestManager.bas b/B4A/DBRequestManager.bas index 0421c52..b8bd9ef 100644 --- a/B4A/DBRequestManager.bas +++ b/B4A/DBRequestManager.bas @@ -41,7 +41,7 @@ Public Sub ExecuteQuery(Command As DBCommand, Limit As Int, Tag As Object) WriteList(Command.Parameters, out2) out2.Close j.PostBytes(link & "?method=query", ms.ToBytesArray) - j.GetRequest.Timeout = 10000 'timeout del request (10 segs) + j.GetRequest.Timeout = 20000 'timeout del request (20 segs) End Sub 'Executes a batch of (non-select) commands. diff --git a/B4A/ManageExternalStorage.bas b/B4A/ManageExternalStorage.bas new file mode 100644 index 0000000..3b05516 --- /dev/null +++ b/B4A/ManageExternalStorage.bas @@ -0,0 +1,79 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=10.7 +@EndOfDesignText@ +' Version 1.00 +#Event: StorageAvailable +Sub Class_Globals + Private ion As Object + Private mCallback As Object + Private mEventName As String + +End Sub + + +' This pretty trivial class is modeled on (plagiarised from!) Erel's ExternalStorage class +' It applies to devices implementing SDK30 and later +' It allows apps to access the internal 'external' storage as was possible on earlier Android versions ussing traditional file I/O +' You must manually add 'AddPermission(android.permission.MANAGE_EXTERNAL_STORAGE)' to the manifest +' You must ensure that you provide the package name of your app in Sub GetPermission +' This class uses the MANAGE_APP_ALL_FILES_ACCESS_PERMISSION intent action to direct users to a system settings page +' They must enable the option on that page to give permission + +'Initializes the object +Public Sub Initialize (Callback As Object, EventName As String) + mCallback = Callback + mEventName = EventName +End Sub + + +' Determine if the app already has MANAGE_EXTERNAL_STORAGE call Environment.isExternalStorageManager() +' Return True if this app already has MANAGE_EXTERNAL_STORAGE permission +Public Sub HasPermission As Boolean + Dim has As Boolean + Dim jo As JavaObject + jo.InitializeStatic("android.os.Environment") + has = jo.RunMethod("isExternalStorageManager", Null) + Return has +End Sub + +' Check whether this app has MANAGE_EXTERNAL_STORAGE permission +' If not show the user a dialog to enable MANAGE_EXTERNAL_STORAGE permission for this app +' Raises the StorageAvailable event in the calling activity when complete +Public Sub GetPermission + If HasPermission Then + RaiseEvent + Return + End If + Dim in As Intent + ' Be sure to reference your app package name in "pakageg:xxx" + in.Initialize("android.settings.MANAGE_APP_ALL_FILES_ACCESS_PERMISSION", $"package:${Application.PackageName}"$) + StartActivityForResult(in) +End Sub + + +Private Sub RaiseEvent + Log("Calling : " & mEventName & "_StorageAvailable") + CallSubDelayed(mCallback, mEventName & "_StorageAvailable") +End Sub + + +Private Sub ion_Event (MethodName As String, Args() As Object) As Object + RaiseEvent + Return Null +End Sub + + +Private Sub StartActivityForResult(i As Intent) + Dim jo As JavaObject = GetBA + ion = jo.CreateEvent("anywheresoftware.b4a.IOnActivityResult", "ion", Null) + jo.RunMethod("startActivityForResult", Array As Object(ion, i)) +End Sub + +Private Sub GetBA As Object + Dim jo As JavaObject = Me + Return jo.RunMethod("getBA", Null) +End Sub + diff --git a/B4A/Mariana.b4a b/B4A/Mariana.b4a index f4860a4..943d1e5 100644 --- a/B4A/Mariana.b4a +++ b/B4A/Mariana.b4a @@ -730,16 +730,18 @@ Module11=C_Pedidos Module12=C_Principal Module13=C_Productos Module14=C_Promos -Module15=C_Subs -Module16=C_TicketsDia -Module17=C_UpdateAvailable -Module18=CameraExClass2 -Module19=DBRequestManager +Module15=C_RespaldoDiario +Module16=C_Subs +Module17=C_TicketsDia +Module18=C_UpdateAvailable +Module19=CameraExClass2 Module2=B4XMainPage -Module20=MAPA_RUTAS -Module21=Starter -Module22=Subs -Module23=Tracker +Module20=DBRequestManager +Module21=ManageExternalStorage +Module22=MAPA_RUTAS +Module23=Starter +Module24=Subs +Module25=Tracker Module3=BatteryUtilities Module4=C_Cliente Module5=C_Clientes @@ -749,8 +751,8 @@ Module8=C_Nota Module9=C_NoVenta NumberOfFiles=347 NumberOfLibraries=29 -NumberOfModules=23 -Version=12.5 +NumberOfModules=25 +Version=12.2 @EndOfDesignText@ #Region Project Attributes #ApplicationLabel: Mariana diff --git a/B4A/Starter.bas b/B4A/Starter.bas index 78977ad..2ba003d 100644 --- a/B4A/Starter.bas +++ b/B4A/Starter.bas @@ -124,7 +124,6 @@ End Sub Sub reinicializaReqManager reqManager.Initialize(Me, server) -' B4XPages.MainPage.reqManager.Initialize(Me, server) If logger Then Log(server) End Sub diff --git a/B4A/Subs.bas b/B4A/Subs.bas index 88e80ae..c696a3b 100644 --- a/B4A/Subs.bas +++ b/B4A/Subs.bas @@ -784,12 +784,12 @@ End Sub Sub guardaProductoSinGestion(cedis As String, costoU As String, cant As String, nombre As String, prodId As String, clienteId As String, fecha As String, usuario As String, rutaV As String, precioSin As String, tipoVenta As String) LogColor("guardaProductoSinGestion: "&prodId&", cant="&cant, Colors.Magenta) Private c As Cursor - B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_COSTO_SIN,PE_FOLIO) VALUES(?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (cedis, (cant * costoU), costoU, cant, nombre, prodId, clienteId, fecha, usuario, rutaV, precioSin, tipoVenta)) + B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_FECHA, PE_USUARIO, PE_RUTA, PE_COSTO_SIN, PE_FOLIO, PE_ENVIO_OK) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,0) ", Array As Object (cedis, (cant * costoU), costoU, cant, nombre, prodId, clienteId, fecha, usuario, rutaV, precioSin, tipoVenta)) B4XPages.MainPage.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cant, prodId)) c=B4XPages.MainPage.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, SUM(PE_COSTO_SIN) AS TOTAL_CLIE_SIN FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") c.Position=0 B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") - B4XPages.MainPage.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT,PC_ALMACEN,PC_RUTA,PC_COSTO_SIN) VALUES (?,?,?,?,?,?,?,?,?,?)", Array As Object(clienteId, fecha, usuario, c.GetString("CANT_CLIE"), c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps, cedis, c.GetString("TOTAL_CLIE_SIN"))) + B4XPages.MainPage.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO, PC_LON, PC_LAT, PC_ALMACEN, PC_RUTA, PC_COSTO_SIN, PC_ENVIO_OK) VALUES (?,?,?,?,?,?,?,?,?,?,0)", Array As Object(clienteId, fecha, usuario, c.GetString("CANT_CLIE"), c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps, cedis, c.GetString("TOTAL_CLIE_SIN"))) End Sub Sub actualizaProducto(cedis As String, costoU As String, cant As String, nombre As String, prodId As String, clienteId As String, fecha As String, usuario As String, rutaV As String, precioSin As String, tipoVenta As String) @@ -1299,4 +1299,25 @@ Sub logJobDoneResultados(resultado As DBResult) LogColor(k & " = " & records(resultado.Columns.Get(k)), Colors.RGB(215,37,0)) Next Next +End Sub + +'Agrega una columna a la tabla especificada. +'Hay que indicar el "tipo" de la columna (TEXT, INTEGER, ETC) +'Ej. agregaColumna("TABLA", "COLUMNA", "TIPO") +Sub agregaColumna(tabla As String, columna As String, tipo As String) 'ignore + Try 'Intentamos usar "pragma_table_info" para revisar si existe la columna en la tabla + Private c As Cursor = B4XPages.MainPage.skmt.ExecQuery($"SELECT COUNT(*) AS fCol FROM pragma_table_info('${tabla}') WHERE name='${columna}'"$) + c.Position = 0 + If c.GetString("fCol") = 0 Then 'Si no esta la columna la agregamos + B4XPages.MainPage.skmt.ExecNonQuery($"ALTER TABLE ${tabla} ADD COLUMN ${columna} ${tipo}"$) + Log($"Columna "${columna} ${tipo}", agregada a "${tabla}"."$) + End If + Catch 'Si no funciona "pragma_table_info" lo hacemos con try/catch + Try + B4XPages.MainPage.skmt.ExecNonQuery($"ALTER TABLE ${tabla} ADD COLUMN ${columna} ${tipo}"$) + Log($"Columna "${columna} ${tipo}", agregada a "${tabla}".."$) + Catch + Log(LastException) + End Try + End Try End Sub \ No newline at end of file From 510d0041d95b890146e81bc71f3bbd3c7b456bef Mon Sep 17 00:00:00 2001 From: cheveguerra Date: Tue, 19 Sep 2023 09:57:28 -0600 Subject: [PATCH 5/5] 19/9/23 - Pruebas --- B4A/B4XMainPage.bas | 10 ---------- B4A/C_Principal.bas | 11 ++++++++--- B4A/C_Subs.bas | 23 +++++++++++++++++------ B4A/DBRequestManager.bas | 2 +- 4 files changed, 26 insertions(+), 20 deletions(-) diff --git a/B4A/B4XMainPage.bas b/B4A/B4XMainPage.bas index da6c338..84b09e0 100644 --- a/B4A/B4XMainPage.bas +++ b/B4A/B4XMainPage.bas @@ -36,16 +36,6 @@ Sub Class_Globals Public promos As C_Promos Public historico As C_Historico - 'nuevocliente -> NuevoCliente - 'buscar -> ticketsDia - 'colonia -> clientes - 'nopago -> noVenta - 'tarjeta -> Nota - 'fila -> Cliente - 'colonia2 -> Productos - - 'xxxxxxxxxxxxxxxxxxxxxxxxx - Dim reqManager As DBRequestManager Dim s As C_Subs Dim v As String = Application.VersionName diff --git a/B4A/C_Principal.bas b/B4A/C_Principal.bas index 3699558..baa51ef 100644 --- a/B4A/C_Principal.bas +++ b/B4A/C_Principal.bas @@ -1761,7 +1761,12 @@ Sub tickets_dia_LongClick End Sub Sub Subs_envioOk(succes As Boolean) - Log("###################### " & succes) + Log("###################### ENVIO OK - " & succes) + If Not(succes) Then + ToastMessageShow($"El envio no se completo con exito, por favor vuelva a enviar."$, True) + Else + ToastMessageShow($"¡El envio exitoso!."$, True) + End If ProgressDialogHide End Sub '################################ Termina codigo de prueba ############################# @@ -1913,12 +1918,12 @@ Sub t1_tick cmd.Name = "select_cuantos_pedido_MARDS" cmd.Parameters = Array As Object(ALMACEN,l_ruta.text) reqManager.ExecuteQuery(cmd , 0, "valida_pedido") - + cmd.Initialize cmd.Name = "select_cuantos_noventa_MARDS" cmd.Parameters = Array As Object(ALMACEN,l_ruta.text) reqManager.ExecuteQuery(cmd , 0, "valida_noventa") - + cmd.Initialize cmd.Name = "select_cuantos_pedidoc_MARDS" cmd.Parameters = Array As Object(ALMACEN,l_ruta.text) diff --git a/B4A/C_Subs.bas b/B4A/C_Subs.bas index 8200cf3..c8b0150 100644 --- a/B4A/C_Subs.bas +++ b/B4A/C_Subs.bas @@ -17,6 +17,7 @@ Sub Class_Globals Dim db, kmt, errorLog As SQL 'Requiere la libreria "SQL" 'ignore Dim ssid As String 'ignore Dim reqsList As List + Dim reqError As Boolean = False Private subsLogs As Boolean = False End Sub @@ -65,7 +66,8 @@ Sub envioTest Private cmd As DBCommand cmd.Initialize cmd.Name = "select_fecha" - For i = 0 To 20 + For i = 0 To 50 +' Sleep(200) reqManager.ExecuteQuery(cmd, 0, $"select_fecha_${i}"$) reqsList.Add($"select_fecha_${i}"$) Next @@ -82,7 +84,10 @@ End Sub Sub JobDone(Job As HttpJob) LogColor("C_SUBS JOBDONE - " & Job.Success, Colors.Red) If Job.Success = False Then + Log($"Error en el request ${Job.Tag}"$) LogColor("** " & Job.Tag & " Error: " & Job.ErrorMessage, Colors.Red) + If reqsList.IndexOf(Job.Tag) > -1 Then reqsList.RemoveAt(reqsList.IndexOf(Job.Tag)) + reqError = True Else If Job.JobName = "DBRequest" Then Dim resultado As DBResult = reqManager.HandleJob(Job) @@ -94,13 +99,19 @@ Sub JobDone(Job As HttpJob) Next Next End If - Log(reqsList.Size) - If reqsList.Size = 0 Then 'Ya no hay DBReqs pendientes. - envioOk(True) - Log("-= FIN =-") - End If End If End If + Log(reqsList.Size) + If reqsList.Size = 0 Then 'Ya no hay DBReqs pendientes. + Log(reqError) + If Not(reqError) Then + envioOk(True) + Else + envioOk(False) + End If + reqError = False + Log("-= FIN =-") + End If Job.Release End Sub diff --git a/B4A/DBRequestManager.bas b/B4A/DBRequestManager.bas index b8bd9ef..34c7f79 100644 --- a/B4A/DBRequestManager.bas +++ b/B4A/DBRequestManager.bas @@ -41,7 +41,7 @@ Public Sub ExecuteQuery(Command As DBCommand, Limit As Int, Tag As Object) WriteList(Command.Parameters, out2) out2.Close j.PostBytes(link & "?method=query", ms.ToBytesArray) - j.GetRequest.Timeout = 20000 'timeout del request (20 segs) + j.GetRequest.Timeout = 30000 'timeout del request (30 segs) End Sub 'Executes a batch of (non-select) commands.