- VERSION 4.10.20

- Se agregó que restaure desde la tarjeta de memoria la base de respaldo cuando se reinstala la aplicación.
This commit is contained in:
Jose Alberto Guerra Ugalde
2024-10-29 13:24:32 -06:00
parent fd6b1523da
commit 5b38546cb7
10 changed files with 51 additions and 18 deletions

View File

@@ -363,8 +363,7 @@ Private Sub B4XPage_Created (Root1 As B4XView)
Wait For MES_StorageAvailable
End If
End If
' Log("Permisos BT: " & rp.Check("android.permission.BLUETOOTH_CONNECT"))
' Log("REVISAMOS PERMISOS DE BT")
' rp.CheckAndRequest("android.permission.BLUETOOTH_CONNECT")
@@ -376,6 +375,10 @@ Private Sub B4XPage_Created (Root1 As B4XView)
End Sub
Sub B4XPage_Appear
If MES1.IsInitialized Then
LogColor(MES1.HasPermission, Colors.Magenta)
If MES1.HasPermission Then kh.revisaSiExisteRespaldo
End If
kh.RD_Init
kh.SetButtonTintList(cb_geocerca, Colors.LightGray, Colors.RGB(43, 154, 211))
kh.SetButtonTintList(cb_cartaPorte, Colors.LightGray, Colors.RGB(43, 154, 211))
@@ -490,7 +493,7 @@ Sub JobDone(Job As HttpJob)
Log("JOBDONE MAINPAGE")
If Job.Tag.As(String).StartsWith("_KMS_") Then Job.tag = Job.Tag.As(String).SubString(16)
If Job.Success = False Then
LogColor("Error: " & Job.tag & " : " & Job.ErrorMessage, Colors.red)
LogColor("Error: " & Job.tag & " : " & Subs.parseHTTPError(Job.ErrorMessage), Colors.red)
ToastMessageShow("Error: " & Job.ErrorMessage, True)
Else
' If logger Then LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211110

View File

@@ -3836,6 +3836,7 @@ Sub revisaPromoEspecial As Map
' If clienteImpreso = "0" Then Log("El cliente no tiene venta impresa.")
x.Close
'Revisamos que tenga asignada la promo.
x=Starter.skmt.ExecQuery("select count(*) as clienteConPromo, CPM_PROID, CPM_CANT, CPM_RANGO, CPM_DESC, CPM_IDPROMO, CPM_MONTO from CAT_PROMO_MONTO where CPM_CLIENTE in (Select CUENTA from cuentaa)")
If x.RowCount > 0 Then
x.Position = 0
@@ -3876,7 +3877,7 @@ Sub metePromoEspecial(idProd As String, idPromo As String, cantProd As Int, nomb
query = "cat_gunaprod"
If Starter.tipov = "VENTA" Then query = "cat_gunaprod2"
' Falta nombre de producto en el insert
Starter.skmt.ExecNonQuery2("DELETE from PEDIDO where PE_CEDIS = ?", Array As String (idPromo))
Starter.skmt.ExecNonQuery2("DELETE from PEDIDO where PE_CEDIS = ?", Array As String (idPromo)) ' HAY QUE AGREGAR EL CLIENTE PARA QUE NO BORRE TODAS LAS PROMOS!!
'Metemos encabezado de la promo.
Starter.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_TIPO, PE_PRECIO2) VALUES(?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (idPromo, 0, 0, cantProd, promoDescr, idPromo, idCliente, sDate & sTime, idUsuario, idRuta, Starter.tipov, 0))
'Metemos el producto de regalo.
@@ -4101,7 +4102,7 @@ Sub JobDone(Job As HttpJob)
Log("JOBDONE CLIENTE")
If Job.Success = False Then
' ToastMessageShow("Error: " & Job.ErrorMessage, True)
LogColor("Error: " & Job.tag & " : " & Job.ErrorMessage, Colors.red)
LogColor("Error: " & Job.tag & " : " & Subs.parseHTTPError(Job.ErrorMessage), Colors.red)
' LogColor("Error: " & Job.ErrorMessage, Colors.red)
Else
LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211110

View File

@@ -986,7 +986,7 @@ Sub JobDone(Job As HttpJob)
Log("JOBDONE PRINCIPAL")
reqManager.trackNext(Job)
If Not(Job.Success) Then
LogColor("Error: " & Job.tag & " : " & Job.ErrorMessage, Colors.red)
LogColor("Error: " & Job.tag & " : " & Subs.parseHTTPError(Job.ErrorMessage), Colors.red)
If Job.Tag = "version" Then
Starter.errorConnDBReq = True
connecta.TextColor = Colors.red

View File

@@ -161,6 +161,7 @@ End Sub
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
Sub B4XPage_Appear
Log("Entro: " & entro)
' Log($"LIMITE ABORDO: ${limiteAbordo}"$)
' clv_prods_ll.Initialize(Me, "clv_prods_ll")
' list_prodsPedido.Initialize
@@ -493,7 +494,7 @@ Private Sub B4XPage_CloseRequest As ResumableSub
else If entro = "4" Then
entro = "3"
B4XPage_Appear
Return True
' Return True
Else If entro = "3" Then
Subs.iniciaActividad("Cliente")
' B4XPages.ShowPage("Cliente")
@@ -503,6 +504,7 @@ Private Sub B4XPage_CloseRequest As ResumableSub
' B4XPages.ShowPage("Cliente")
Return False
End If
Return False
End Sub
Sub b_QR_Click

View File

@@ -66,6 +66,7 @@ Private Sub B4XPage_Created (Root1 As B4XView)
End Sub
Sub B4XPage_Appear
B4XPages.MainPage.productos.entro = 3
' LogColor(B4XPages.MainPage.productos.prodsMap, Colors.blue)
prodsIds.Initialize
prodsCants.Initialize

View File

@@ -887,7 +887,7 @@ Version=12.8
#Region Project Attributes
#ApplicationLabel: Kelloggs Venta
#VersionCode: 3000
#VersionName: 4.10.15
#VersionName: 4.10.19
#SupportedOrientations: portrait
#CanInstallToExternalStorage: False
#BridgeLogger:true

View File

@@ -61,11 +61,11 @@ ModuleBreakpoints7=
ModuleBreakpoints8=
ModuleBreakpoints9=
ModuleClosedNodes0=
ModuleClosedNodes1=2
ModuleClosedNodes1=
ModuleClosedNodes10=
ModuleClosedNodes11=3,25
ModuleClosedNodes12=
ModuleClosedNodes13=
ModuleClosedNodes12=3,5,6,7,8,9
ModuleClosedNodes13=1
ModuleClosedNodes14=
ModuleClosedNodes15=
ModuleClosedNodes16=
@@ -91,6 +91,6 @@ ModuleClosedNodes6=
ModuleClosedNodes7=
ModuleClosedNodes8=
ModuleClosedNodes9=
NavigationStack=Starter,Process_Globals,49,6,ManageExternalStorage,RaiseEvent,47,0,C_Principal,connecta_Click,2151,0,C_Principal,B4XPage_Appear,519,0,Subs,GUID,1878,0,B4XMainPage,B4XPage_Appear,371,0,B4XMainPage,B4XPage_Created,338,6,kms_helperSubs,motivoNoVisitaActivo,1212,0,Subs,generaGUID_EnExterno,1881,2,kms_helperSubs,RD_Init,46,0
NavigationStack=kms_helperSubs,RD_respaldoBatch,461,0,B4XMainPage,b_cargaLocalOk_Click,760,0,Starter,Process_Globals,42,1,B4XMainPage,Class_Globals,90,0,kms_helperSubs,Initialize,41,0,kms_helperSubs,agregaColumna,522,0,kms_helperSubs,revisaSiExisteRespaldo,87,2,kms_helperSubs,RD_Init,81,6,B4XMainPage,B4XPage_Appear,372,6,B4XMainPage,B4XPage_Created,362,4
SelectedBuild=0
VisibleModules=1,28,11,3,29,12,4,13,23,26,24
VisibleModules=1,28,11,3,29,12,4,13,23,7

View File

@@ -46,7 +46,7 @@ Sub Process_Globals
Dim ultimaActualizacionGPS As String = 235959 '
Dim fechaRuta As String 'ignore
Dim tiempos As Map
Dim Logger As Boolean = False
Dim Logger As Boolean = True
Dim ultimaActividad As String = ""
Dim boleta As String = 0
Dim sesion As Map

View File

@@ -1019,7 +1019,7 @@ Sub traePromo(promo As String, cliente As String) As Map
' Si la promo esta en la lista, SOLO los clientes que la tengan la pueden ver.
Private ps As Cursor = Starter.skmt.ExecQuery($"select * from HIST_CLIENTE_CANT_PROMOS where HCCP_PROMO = '${promo}' and HCCP_CLIENTE = '${cliente}'"$)
' Log($"select * from HIST_CLIENTE_CANT_PROMOS where HCCP_PROMO = '${promo}'"$)
Log($"PROMOS SEGMENTADAS DISPONIBLES: ${ps.RowCount}"$)
If thisLog Then Log($"PROMOS SEGMENTADAS DISPONIBLES: ${ps.RowCount}"$)
If ps.RowCount > 0 Then
ps.Position = 0
promoMap = CreateMap("id":promo, "maxXcliente":0, "maxRecurrente":0, "maxPromos":0) 'Si es segmentada la ponemos en cero, porque SOLO le debe de aparecer a ciertos clientes.
@@ -1349,7 +1349,7 @@ End Sub
'regresa el maximo por productos fijos. Ej. si las promos por variables es 10, pero el maximo por
'fijos es 5, entonces regresamos 5.
Sub revisaMaxPromosProdsVariablesPorInventario(pm As Map) As Int 'ignore
Private thisLog As Boolean = True
Private thisLog As Boolean = False
If thisLog Then Log("======================================================")
If thisLog Then Log("======================================================")
Private invFijoXpromo As Map
@@ -1898,4 +1898,16 @@ Sub generaGUID_EnExterno
File.WriteString(File.DirRootExternal,$"/Android/kmts/GUID_${Starter.GUID}"$, "0")
End If
Log($"##### GUID: ${Starter.GUID} #####"$)
End Sub
Sub parseHTTPError(error As String) As String
Private nuevoError As String = error
Private inicio As Int = error.IndexOf("<title>")
Private final As Int = error.IndexOf("</title>")
Log("|" & inicio & "|" & final & "|")
If inicio > 0 And final > 0 Then
nuevoError = error.SubString2(inicio + 17, final)
' LogColor(error.SubString2(inicio + 17, final), Colors.Blue)
End If
Return nuevoError
End Sub

View File

@@ -66,8 +66,9 @@ Sub RD_Init
If Not(File.IsDirectory(Dirp, Dir)) Then safePath = rp.GetSafeDirDefaultExternal("kmts")
Log($"Hay directorio: ${Dirp} ${Dir} - ${File.IsDirectory(Dirp, Dir)}"$)
If Starter.Logger Then Log($"Safepath:${safePath}"$)
Private name() As String = Regex.split(" ", Application.LabelName) 'Obtenemos el nombre de la app para ponerselo a la BD.
Private name() As String = Regex.split(" ", Application.LabelName) 'Obtenemos el nombre de la app para ponerselo a la BD.
rkmt.Initialize(safePath, $"${name(0)}.rkmt.km"$, True)
Log("TAMAÑO DE ARCHIVO RESPALDO " &File.size(File.DirInternal&"/kmts", $"${name(0)}.rkmt.km"$))
skmt.Initialize(File.DirInternal,"kmt.db", False)
If chkIfTableExists(skmt, "PEDIDO") Then rkmt.ExecNonQuery($"create table if not exists PEDIDO (${getTableColumnList(skmt, "PEDIDO")}, FECHA TEXT)"$)
If chkIfTableExists(skmt, "CAT_DETALLES_PAQ") Then rkmt.ExecNonQuery($"create table if not exists CAT_DETALLES_PAQ (${getTableColumnList(skmt, "CAT_DETALLES_PAQ")}, FECHA TEXT)"$)
@@ -86,6 +87,17 @@ Sub RD_Init
' revisaRkmtAttached
End Sub
Sub revisaSiExisteRespaldo
Private extDir As String = ""
Private name() As String = Regex.split(" ", Application.LabelName) 'Obtenemos el nombre de la app para ponerselo a la BD.
If File.IsDirectory(File.DirRootExternal, "kmts") Then extDir = "/kmts"
If File.size(File.DirInternal&"/kmts", $"${name(0)}.rkmt.km"$) < 37000 And File.Exists(File.DirRootExternal & extDir, $"${name(0)}.rkmt.km"$) Then
LogColor("Copiamos el respaldo desde la tarjeta!!", Colors.red)
File.Copy(File.DirRootExternal & extDir, $"${name(0)}.rkmt.km"$, File.DirInternal&"/kmts", $"${name(0)}.rkmt.km"$)
End If
Sleep(300)
End Sub
'RD - Revisa si esta montada "kmt.db" como "skmt1" y si no, la monta
'Para que "rkmt" vea a "skmt", es necesario montarla (attach).
Sub revisaSkmtAttached As Boolean
@@ -336,11 +348,13 @@ Sub RD_restaura_kmt_info
fechaRestauracion = RD_fechaRestauracionSQL(RD_fechaRestauracion)
Private lasCols As String = getTableColumnListName(rkmt, "kmt_info")
lasCols = lasCols.Replace(", FECHA", "") 'Quitamos la fecha del respaldo.
Log($"Restauramos ${fechaRestauracion}"$)
Log($"select distinct fecha from kmt_info ${fechaRestauracion} order by fecha desc"$)
Private c As Cursor = rkmt.ExecQuery($"select distinct fecha from kmt_info ${fechaRestauracion} order by fecha desc"$) 'where fecha <> '${fechaHoy}' 'Traemos la ultima fecha antes de hoy.
' Log(c.RowCount)
If c.RowCount > 0 Then
c.Position = 0
' Log(c.GetString("FECHA"))
Log(c.GetString("FECHA"))
skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("DIA_VISITA"))' Ponemos el dia de hoy para visita.
skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("DIA_VISITA", Subs.traeDiaSemana))
skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("FINDIA_FECHA"))' Borramos fecha de FIN DIA.