diff --git a/B4A/C_Principal.bas b/B4A/C_Principal.bas index 254252f..8229d2c 100644 --- a/B4A/C_Principal.bas +++ b/B4A/C_Principal.bas @@ -753,10 +753,11 @@ Sub cargar_Click cmd.Initialize cmd.Name = "SELECT_HIST_ENCUESTA_KELL" - cmd.Parameters = Array As Object( e_ruta.text, ALMACEN) + cmd.Parameters = Array As Object( e_ruta.text, ALMACEN,e_ruta.text, ALMACEN,e_ruta.text, ALMACEN,e_ruta.text, ALMACEN ) reqManager.ExecuteQuery(cmd , 0, "HIST_ENCUESTA2") + Log($"${e_ruta.text}, ${ALMACEN},${e_ruta.text}, ${ALMACEN},${e_ruta.text}, ${ALMACEN},${e_ruta.text}, ${ALMACEN}"$) - +' ruta , ALMACEN, ruta , ALMACEN, ruta, ALMACEN, ruta, ALMACEN, cmd.Initialize cmd.Name = "SELECT_EXHIBIDOR_RUTA_KELL" @@ -1785,7 +1786,7 @@ Sub JobDone(Job As HttpJob) Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("HORA", Starter.HORA)) Next If Not(Subs.revisaHora) Then - Log("***************** HORA INCORRECTA") + LogColor("***************** HORA INCORRECTA",Colors.red) MsgboxAsync("La hora del equipo NO coincide con la hora del servidor, es necesario corregirla", "AVISO IMPORTANTE") End If End If diff --git a/B4A/DBRequestManager1.bas b/B4A/DBRequestManager1.bas new file mode 100644 index 0000000..3d2d3ad --- /dev/null +++ b/B4A/DBRequestManager1.bas @@ -0,0 +1,360 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=6.8 +@EndOfDesignText@ +''Class module +Sub Class_Globals + Private mTarget As Object + Type DBResult (Tag As Object, Columns As Map, Rows As List) + Type DBCommand (Name As String, Parameters() As Object) + Private link As String + Private bc As ByteConverter + Private T_NULL = 0, T_STRING = 1, T_SHORT = 2, T_INT = 3, T_LONG = 4, T_FLOAT = 5 _ + ,T_DOUBLE = 6, T_BOOLEAN = 7, T_BLOB = 8 As Byte + Private VERSION As Float = 0.9 + Private tempArray(1) As Object + Dim jobTagAnterior As String = "" 'Mod por CHV - 211109 + Dim reqsList, timesList As List + Dim inicioRequest As Long 'ignore + Dim inicioJobDone As Long 'ignore + Dim inicioRequestMap, inicioJobDoneMap As Map +End Sub + +'Target - The module that handles JobDone (usually Me). +'ConnectorLink - URL of the Java server. +Public Sub Initialize (Target As Object, ConnectorLink As String) + mTarget = Target + link = ConnectorLink +End Sub + +'Sends a query request. +'Command - Query name and parameters. +'Limit - Maximum rows to return or 0 for no limit. +'Tag - An object that will be returned in the result. +Public Sub ExecuteQuery(Command As DBCommand, Limit As Int, Tag As Object) + Dim j As HttpJob + Dim ms As OutputStream + Dim out2 As OutputStream = StartJob(j, ms, Tag) +' If reqsList.IsInitialized Then reqsList.Add(Tag) +' If timesList.IsInitialized Then timesList.Add(DateTime.now) + + WriteObject(Command.Name, out2) + WriteInt(Limit, out2) + WriteList(Command.Parameters, out2) + out2.Close + j.PostBytes(link & "?method=query", ms.ToBytesArray) +End Sub + +'Sends a query request. +'Command - Query name and parameters. +'Limit - Maximum rows to return or 0 for no limit. +'Tag - An object that will be returned in the result. +'Timeout - The http request timeout in ms, or 0 if default (30 secs) +Public Sub ExecuteQuery3(Command As DBCommand, Limit As Int, Tag As Object, Timeout As Int) 'Mod por CHV, agregué el parametro Timeout - 211229 + Dim j As HttpJob + Dim ms As OutputStream + Dim out2 As OutputStream = StartJob(j,ms, Tag) + WriteObject(Command.Name, out2) + WriteInt(Limit, out2) + WriteList(Command.Parameters, out2) + out2.Close + j.PostBytes(link & "?method=query", ms.ToBytesArray) + If Timeout <> 0 Then j.GetRequest.Timeout = Timeout +End Sub + +'Executes a batch of (non-select) commands. +'ListOfCommands - List of the commands that will be executes. +'Tag - An object that will be returned in the result. +Public Sub ExecuteBatch(ListOfCommands As List, Tag As Object) + Dim j As HttpJob + Dim ms As OutputStream + Dim out2 As OutputStream = StartJob(j, ms, Tag) + WriteInt(ListOfCommands.Size, out2) + For Each Command As DBCommand In ListOfCommands + WriteObject(Command.Name, out2) + WriteList(Command.Parameters, out2) + Next + out2.Close + j.PostBytes(link & "?method=batch", ms.ToBytesArray) +End Sub + +'Similar to ExecuteBatch. Sends a single command. +Public Sub ExecuteCommand(Command As DBCommand, Tag As Object) +' If reqsList.IsInitialized Then reqsList.Add(Tag) +' If timesList.IsInitialized Then timesList.Add(DateTime.now) + ExecuteBatch(Array As DBCommand(Command), Tag) +End Sub + +Private Sub StartJob(j As HttpJob, MemoryStream As OutputStream, Tag As Object) As OutputStream +' inicioRequest = DateTime.now + If reqsList.IsInitialized Then reqsList.Add(Tag) + If timesList.IsInitialized Then timesList.Add(DateTime.now) + j.Initialize("DBRequest", mTarget) + j.Tag = Tag + MemoryStream.InitializeToBytesArray(0) + Dim compress As CompressedStreams + Dim out As OutputStream = compress.WrapOutputStream(MemoryStream, "gzip") + WriteObject(VERSION, out) + Return out +End Sub + +Private Sub WriteList(Parameters As List, out As OutputStream) + Dim data() As Byte + If Parameters = Null Or Parameters.IsInitialized = False Then + Dim Parameters As List + Parameters.Initialize + End If + data = bc.IntsToBytes(Array As Int(Parameters.Size)) + out.WriteBytes(data, 0, data.Length) + For Each o As Object In Parameters + WriteObject(o, out) + Next +End Sub + +Private Sub WriteObject(o As Object, out As OutputStream) + Dim data() As Byte + tempArray(0) = o + If tempArray(0) = Null Then + out.WriteBytes(Array As Byte(T_NULL), 0, 1) + Else If tempArray(0) Is Short Then + out.WriteBytes(Array As Byte(T_SHORT), 0, 1) + data = bc.ShortsToBytes(Array As Short(o)) + Else If tempArray(0) Is Int Then + out.WriteBytes(Array As Byte(T_INT), 0, 1) + data = bc.IntsToBytes(Array As Int(o)) + Else If tempArray(0) Is Float Then + out.WriteBytes(Array As Byte(T_FLOAT), 0, 1) + data = bc.FloatsToBytes(Array As Float(o)) + Else If tempArray(0) Is Double Then + out.WriteBytes(Array As Byte(T_DOUBLE), 0, 1) + data = bc.DoublesToBytes(Array As Double(o)) + Else If tempArray(0) Is Long Then + out.WriteBytes(Array As Byte(T_LONG), 0, 1) + data = bc.LongsToBytes(Array As Long(o)) + Else If tempArray(0) Is Boolean Then + out.WriteBytes(Array As Byte(T_BOOLEAN), 0, 1) + Dim b As Boolean = 0 + Dim data(1) As Byte + If b Then data(0) = 1 Else data(0) = 0 + Else If GetType(tempArray(0)) = "[B" Then + data = o + out.WriteBytes(Array As Byte(T_BLOB), 0, 1) + WriteInt(data.Length, out) + Else 'If o Is String Then (treat all other values as string) + out.WriteBytes(Array As Byte(T_STRING), 0, 1) + data = bc.StringToBytes(o, "UTF8") + WriteInt(data.Length, out) + End If + If data.Length > 0 Then out.WriteBytes(data, 0, data.Length) +End Sub + +Private Sub ReadObject(In As InputStream) As Object + Dim data(1) As Byte + In.ReadBytes(data, 0, 1) + Select data(0) + Case T_NULL + Return Null + Case T_SHORT + Dim data(2) As Byte + Return bc.ShortsFromBytes(ReadBytesFully(In, data, data.Length))(0) + Case T_INT + Dim data(4) As Byte + Return bc.IntsFromBytes(ReadBytesFully(In, data, data.Length))(0) + Case T_LONG + Dim data(8) As Byte + Return bc.LongsFromBytes(ReadBytesFully(In, data, data.Length))(0) + Case T_FLOAT + Dim data(4) As Byte + Return bc.FloatsFromBytes(ReadBytesFully(In, data, data.Length))(0) + Case T_DOUBLE + Dim data(8) As Byte + Return bc.DoublesFromBytes(ReadBytesFully(In, data, data.Length))(0) + Case T_BOOLEAN + Dim b As Byte = ReadByte(In) + Return b = 1 + Case T_BLOB + Dim len As Int = ReadInt(In) + Dim data(len) As Byte + Return ReadBytesFully(In, data, data.Length) + Case Else + Dim len As Int = ReadInt(In) + Dim data(len) As Byte + ReadBytesFully(In, data, data.Length) + Return BytesToString(data, 0, data.Length, "UTF8") + End Select +End Sub + +Private Sub ReadBytesFully(In As InputStream, Data() As Byte, Len As Int) As Byte() + Dim count = 0, read As Int + Do While count < Len And read > -1 + read = In.ReadBytes(Data, count, Len - count) + count = count + read + Loop + Return Data +End Sub + +Private Sub WriteInt(i As Int, out As OutputStream) + Dim data() As Byte + data = bc.IntsToBytes(Array As Int(i)) + out.WriteBytes(data, 0, data.Length) +End Sub + +Private Sub ReadInt(In As InputStream) As Int + Dim data(4) As Byte + Return bc.IntsFromBytes(ReadBytesFully(In, data, data.Length))(0) +End Sub + +Private Sub ReadByte(In As InputStream) As Byte + Dim data(1) As Byte + In.ReadBytes(data, 0, 1) + Return data(0) +End Sub + +'Handles the Job result and returns a DBResult. +Public Sub HandleJob(Job As HttpJob) As DBResult + If jobTagAnterior <> Job.Tag Then +' inicioJobDone = DateTime.Now 'ignore + If inicioJobDoneMap.IsInitialized Then inicioJobDoneMap.Put(Job.Tag, DateTime.Now) +' tiempos.Put(Job.taskId, CreateMap("inicioJobDone":inicioJobDone)) +' Log(tiempos) +' Log("############# " & Job.taskId) + End If + Dim In As InputStream = Job.GetInputStream + Dim cs As CompressedStreams + In = cs.WrapInputStream(In, "gzip") + Dim serverVersion As Float = ReadObject(In) 'ignore + Dim method As String = ReadObject(In) + Dim table As DBResult + table.Initialize + table.Columns.Initialize + table.rows.Initialize + table.Tag = Job.Tag + If method = "query" Then + Dim numberOfColumns As Int = ReadInt(In) + For i = 0 To numberOfColumns - 1 + table.Columns.Put(ReadObject(In), i) + Next + Do While ReadByte(In) = 1 + Dim rowObjects(numberOfColumns) As Object + table.rows.Add(rowObjects) + For col = 0 To numberOfColumns - 1 + Dim o As Object = ReadObject(In) + rowObjects(col) = o + Next + Loop + Else If method = "batch" Then + table.Columns.Put("AffectedRows", 0) + Dim rows As Int = ReadInt(In) + For i = 0 To rows - 1 + table.rows.Add(Array As Object(ReadInt(In))) + Next + End If + In.Close +' Log("HandleJob: " & (DateTime.Now - start))'Comentado por CHV - 211112 + If jobTagAnterior <> table.Tag Then + LogColor("HandleJob: '"&table.Tag&"'" & " - Registros: " & table.Rows.Size, Colors.RGB(115, 0, 140)) 'Mod por CHV - 211109 + End If + jobTagAnterior = table.Tag 'Mod por CHV - 211109 + Return table +End Sub + +'Reads a file and returns the file as a bytes array. +Public Sub FileToBytes(Dir As String, FileName As String) As Byte() + Dim out As OutputStream + out.InitializeToBytesArray(0) + Dim In As InputStream = File.OpenInput(Dir, FileName) + File.Copy2(In, out) + out.Close + Return out.ToBytesArray +End Sub + +'Converts an image to a bytes array (for BLOB fields). +Public Sub ImageToBytes(Image As Bitmap) As Byte() + Dim out As OutputStream + out.InitializeToBytesArray(0) + Image.WriteToStream(out, 100, "JPEG") + out.Close + Return out.ToBytesArray +End Sub + +'Converts a bytes array to an image (for BLOB fields). +Public Sub BytesToImage(bytes() As Byte) As Bitmap + Dim In As InputStream + In.InitializeFromBytesArray(bytes, 0, bytes.Length) + Dim bmp As Bitmap + bmp.Initialize2(In) + Return bmp +End Sub + +'Prints the table to the logs. +Public Sub PrintTable(Table As DBResult) + Log("Tag: " & Table.Tag & ", Columns: " & Table.Columns.Size & ", Rows: " & Table.Rows.Size) + Dim sb As StringBuilder + sb.Initialize + For Each col In Table.Columns.Keys + sb.Append(col).Append(TAB) + Next + Log(sb.ToString) + For Each row() As Object In Table.Rows + Dim sb As StringBuilder + sb.Initialize + For Each record As Object In row + sb.Append(record).Append(TAB) + Next + Log(sb.ToString) + Next +End Sub + +Sub requestTimes(tag As String) As Map 'ignore + Private times As Map + times.Initialize +' Log("###### " & tag) +' Log(reqsList.IsInitialized) + If reqsList.IsInitialized Then +' Log(reqsList) +' Private pos As Int = reqsList.IndexOf(tag) + If inicioRequestMap.ContainsKey(tag) Then + inicioRequest = inicioRequestMap.Get(tag) +' Log(">>>>>>> From inicioRequestMap") + End If + If inicioJobDoneMap.ContainsKey(tag) Then + inicioJobDone = inicioJobDoneMap.Get(tag) +' Log(">>>>>>> From inicioJobDoneMap") + End If + End If +' Log($"${inicioJobDone} - ${inicioRequest}"$) + Private requestTime As String = NumberFormat2(((inicioJobDone - inicioRequest) / 1000),1,5,0,False) + Private JobDoneTime As String = NumberFormat2(((DateTime.Now - inicioJobDone) / 1000),1,5,0,False) + times.Put("requestTime", requestTime) + times.Put("jobDoneTime", JobDoneTime) + times.Put("totalTime", NumberFormat2((JobDoneTime + requestTime),1,5,0,False)) + Return times +End Sub + +'Initializes request tracking +Sub trackInit 'ignore + Log(">>>>>>>>> TRACKINIT ") + reqsList.Initialize + timesList.Initialize + inicioRequestMap.Initialize + inicioJobDoneMap.Initialize +End Sub + +Sub trackNext(job As HttpJob) + If reqsList.IsInitialized Then 'Si tenemos lista de requests, la procesamos. + Private quitamos As String = "" + If reqsList.IndexOf(job.tag) <> -1 Then + Private pos As Int = reqsList.IndexOf(job.tag) + If pos <> -1 Then + inicioRequestMap.Put(job.Tag, timesList.Get(pos)) + reqsList.RemoveAt(pos) + timesList.RemoveAt(pos) + End If + quitamos = $"Quitamos ${job.tag} - "$ + End If + LogColor(">>>>>> Requests: " & reqsList.Size & " - " & quitamos & reqsList, Colors.Blue) + LogColor(">>>>>> inicioRequestMap:" & inicioRequestMap.Size & " - " & inicioRequestMap, Colors.Magenta) + End If +End Sub \ No newline at end of file diff --git a/B4A/DBRequestManager2.bas b/B4A/DBRequestManager2.bas new file mode 100644 index 0000000..3dbcf14 --- /dev/null +++ b/B4A/DBRequestManager2.bas @@ -0,0 +1,201 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=6.8 +@EndOfDesignText@ +'Requires support for resumable subs +'Class module + +Sub Class_Globals + Private mTarget As Object + Private link As String + Private VERSION As Float = 2 + Dim reqsList, timesList As List + Dim inicioRequest As Long 'ignore + Dim inicioJobDone As Long 'ignore + Dim inicioRequestMap, inicioJobDoneMap As Map +End Sub + +'Target - The module that handles JobDone (usually Me). +'ConnectorLink - URL of the Java server. +Public Sub Initialize (Target As Object, ConnectorLink As String) + mTarget = Target + link = ConnectorLink +End Sub + +'Sends a query request. +'Command - Query name and parameters. +'Limit - Maximum rows to return or 0 for no limit. +'Tag - An object that will be returned in the result. +Public Sub ExecuteQuery(Command As DBCommand, Limit As Int, Tag As Object) As HttpJob + Dim ser As B4XSerializator + Dim data() As Byte = ser.ConvertObjectToBytes(CreateMap("command": Command, "limit": Limit, "version": VERSION)) + Return SendJob(CreateJob, data, Tag, "query2") +End Sub + +Private Sub SendJob(j As HttpJob, Data() As Byte, Tag As Object, Method As String) As HttpJob + j.Tag = Tag + j.PostBytes(link & "?method=" & Method , Data) + Return j +End Sub + +Private Sub CreateJob As HttpJob + Dim j As HttpJob + j.Initialize("DBRequest", mTarget) + Return j +End Sub + +'Executes a batch of (non-select) commands. +'ListOfCommands - List of the commands that will be executes. +'Tag - An object that will be returned in the result. +Public Sub ExecuteBatch(ListOfCommands As List, Tag As Object) As HttpJob + Dim j As HttpJob = CreateJob + ExecuteBatchImpl(j, ListOfCommands, Tag) + Return j +End Sub + +Private Sub ExecuteBatchImpl(Job As HttpJob, ListOfCommands As List, Tag As Object) + Dim ser As B4XSerializator + ser.ConvertObjectToBytesAsync(CreateMap("commands": ListOfCommands, "version": VERSION), "ser") + Wait For (ser) ser_ObjectToBytes (Success As Boolean, Bytes() As Byte) + If Success = False Then + Log("Error building command: " & LastException) + Return + End If + Dim ser As B4XSerializator = Sender + SendJob(Job, Bytes, Tag, "batch2") +End Sub + + +'Similar to ExecuteBatch. Sends a single command. +Public Sub ExecuteCommand(Command As DBCommand, Tag As Object) As HttpJob + Return ExecuteBatch(Array As DBCommand(Command), Tag) +End Sub + +'Handles the Job result and returns a DBResult. +'It is recommended to use HandleJobAsync instead. +Public Sub HandleJob(Job As HttpJob) As DBResult + Dim ser As B4XSerializator + Dim data() As Byte = Bit.InputStreamToBytes(Job.GetInputStream) + Dim res As DBResult = ser.ConvertBytesToObject(data) + res.Tag = Job.Tag + Return res +End Sub +'Handles the Job result and raises the Result event when the data is ready. + +Public Sub HandleJobAsync(Job As HttpJob, EventName As String) + Dim ser As B4XSerializator + Dim data() As Byte = Bit.InputStreamToBytes(Job.GetInputStream) + ser.ConvertBytesToObjectAsync(data, "ser") + Wait For (ser) ser_BytesToObject (Success As Boolean, NewObject As Object) + If Success = False Then + Log("Error reading response: " & LastException) + Return + End If + Dim res As DBResult = NewObject + res.Tag = Job.Tag + CallSubDelayed2(mTarget, EventName & "_result", res) +End Sub + + + + +'Reads a file and returns the file as a bytes array. +Public Sub FileToBytes(Dir As String, FileName As String) As Byte() + Dim out As OutputStream + out.InitializeToBytesArray(0) + Dim In As InputStream = File.OpenInput(Dir, FileName) + File.Copy2(In, out) + out.Close + Return out.ToBytesArray +End Sub +#if Not(B4J) +'Converts an image to a bytes array (for BLOB fields). +Public Sub ImageToBytes(Image As Bitmap) As Byte() + Dim out As OutputStream + out.InitializeToBytesArray(0) + Image.WriteToStream(out, 100, "JPEG") + out.Close + Return out.ToBytesArray +End Sub +'Converts a bytes array to an image (for BLOB fields). +Public Sub BytesToImage(bytes() As Byte) As Bitmap + Dim In As InputStream + In.InitializeFromBytesArray(bytes, 0, bytes.Length) + Dim bmp As Bitmap + bmp.Initialize2(In) + Return bmp +End Sub +#End If + +'Prints the table to the logs. +Public Sub PrintTable(Table As DBResult) + Log("Tag: " & Table.Tag & ", Columns: " & Table.Columns.Size & ", Rows: " & Table.Rows.Size) + Dim sb As StringBuilder + sb.Initialize + For Each col In Table.Columns.Keys + sb.Append(col).Append(TAB) + Next + Log(sb.ToString) + For Each row() As Object In Table.Rows + Dim sb As StringBuilder + sb.Initialize + For Each record As Object In row + sb.Append(record).Append(TAB) + Next + Log(sb.ToString) + Next +End Sub + +Sub requestTimes(tag As String) As Map 'ignore + Private times As Map + times.Initialize +' Log("###### " & tag) +' Log(reqsList.IsInitialized) + If reqsList.IsInitialized Then +' Log(reqsList) +' Private pos As Int = reqsList.IndexOf(tag) + If inicioRequestMap.ContainsKey(tag) Then + inicioRequest = inicioRequestMap.Get(tag) +' Log(">>>>>>> From inicioRequestMap") + End If + If inicioJobDoneMap.ContainsKey(tag) Then + inicioJobDone = inicioJobDoneMap.Get(tag) +' Log(">>>>>>> From inicioJobDoneMap") + End If + End If +' Log($"${inicioJobDone} - ${inicioRequest}"$) + Private requestTime As String = NumberFormat2(((inicioJobDone - inicioRequest) / 1000),1,5,0,False) + Private JobDoneTime As String = NumberFormat2(((DateTime.Now - inicioJobDone) / 1000),1,5,0,False) + times.Put("requestTime", requestTime) + times.Put("jobDoneTime", JobDoneTime) + times.Put("totalTime", NumberFormat2((JobDoneTime + requestTime),1,5,0,False)) + Return times +End Sub + +'Initializes request tracking +Sub trackInit 'ignore + Log(">>>>>>>>> TRACKINIT ") + reqsList.Initialize + timesList.Initialize + inicioRequestMap.Initialize + inicioJobDoneMap.Initialize +End Sub + +Sub trackNext(job As HttpJob) + If reqsList.IsInitialized Then 'Si tenemos lista de requests, la procesamos. + Private quitamos As String = "" + If reqsList.IndexOf(job.tag) <> -1 Then + Private pos As Int = reqsList.IndexOf(job.tag) + If pos <> -1 Then + inicioRequestMap.Put(job.Tag, timesList.Get(pos)) + reqsList.RemoveAt(pos) + timesList.RemoveAt(pos) + End If + quitamos = $"Quitamos ${job.tag} - "$ + End If + LogColor(">>>>>> Requests: " & reqsList.Size & " - " & quitamos & reqsList, Colors.Blue) + LogColor(">>>>>> inicioRequestMap:" & inicioRequestMap.Size & " - " & inicioRequestMap, Colors.Magenta) + End If +End Sub \ No newline at end of file diff --git a/B4A/Files/marker-azul.png b/B4A/Files/marker-azul.png new file mode 100644 index 0000000..362226c Binary files /dev/null and b/B4A/Files/marker-azul.png differ diff --git a/B4A/Files/marker-azul1.png b/B4A/Files/marker-azul1.png new file mode 100644 index 0000000..a8852c7 Binary files /dev/null and b/B4A/Files/marker-azul1.png differ diff --git a/B4A/Files/marker-azul2.png b/B4A/Files/marker-azul2.png new file mode 100644 index 0000000..e5348be Binary files /dev/null and b/B4A/Files/marker-azul2.png differ diff --git a/B4A/Files/marker-azul3.png b/B4A/Files/marker-azul3.png new file mode 100644 index 0000000..4584195 Binary files /dev/null and b/B4A/Files/marker-azul3.png differ diff --git a/B4A/Files/marker-azul4.png b/B4A/Files/marker-azul4.png new file mode 100644 index 0000000..152a0da Binary files /dev/null and b/B4A/Files/marker-azul4.png differ diff --git a/B4A/Files/marker-azul5.png b/B4A/Files/marker-azul5.png new file mode 100644 index 0000000..b498110 Binary files /dev/null and b/B4A/Files/marker-azul5.png differ diff --git a/B4A/Files/marker-rojo.png b/B4A/Files/marker-rojo.png new file mode 100644 index 0000000..271c190 Binary files /dev/null and b/B4A/Files/marker-rojo.png differ diff --git a/B4A/Files/marker-rojo1.png b/B4A/Files/marker-rojo1.png new file mode 100644 index 0000000..1f3754d Binary files /dev/null and b/B4A/Files/marker-rojo1.png differ diff --git a/B4A/Files/marker-rojo2.png b/B4A/Files/marker-rojo2.png new file mode 100644 index 0000000..23ca769 Binary files /dev/null and b/B4A/Files/marker-rojo2.png differ diff --git a/B4A/Files/marker-verde.png b/B4A/Files/marker-verde.png new file mode 100644 index 0000000..48d8316 Binary files /dev/null and b/B4A/Files/marker-verde.png differ diff --git a/B4A/KelloggsV4.b4a b/B4A/KelloggsV4.b4a index 7ebdbe1..f401141 100644 --- a/B4A/KelloggsV4.b4a +++ b/B4A/KelloggsV4.b4a @@ -1,352 +1,362 @@ Build1=Default,kelloggsV2.keymon.lat,HU2_PUBLIC File1=alcancia.png File10=cacahuates_blanco2.png -File100=marker-azul-38.png -File101=marker-azul-39.png -File102=marker-azul-4.png -File103=marker-azul-40.png -File104=marker-azul-41.png -File105=marker-azul-42.png -File106=marker-azul-43.png -File107=marker-azul-44.png -File108=marker-azul-45.png -File109=marker-azul-46.png +File100=marker-azul-34.png +File101=marker-azul-35.png +File102=marker-azul-36.png +File103=marker-azul-37.png +File104=marker-azul-38.png +File105=marker-azul-39.png +File106=marker-azul4.png +File107=marker-azul-4.png +File108=marker-azul-40.png +File109=marker-azul-41.png File11=cacahuates_blanco3.png -File110=marker-azul-47.png -File111=marker-azul-48.png -File112=marker-azul-49.png -File113=marker-azul-5.png -File114=marker-azul-50.png -File115=marker-azul-51.png -File116=marker-azul-52.png -File117=marker-azul-53.png -File118=marker-azul-54.png -File119=marker-azul-55.png +File110=marker-azul-42.png +File111=marker-azul-43.png +File112=marker-azul-44.png +File113=marker-azul-45.png +File114=marker-azul-46.png +File115=marker-azul-47.png +File116=marker-azul-48.png +File117=marker-azul-49.png +File118=marker-azul5.png +File119=marker-azul-5.png File12=cacahuates_chico.png -File120=marker-azul-56.png -File121=marker-azul-57.png -File122=marker-azul-58.png -File123=marker-azul-59.png -File124=marker-azul-6.png -File125=marker-azul-60.png -File126=marker-azul-61.png -File127=marker-azul-62.png -File128=marker-azul-63.png -File129=marker-azul-64.png +File120=marker-azul-50.png +File121=marker-azul-51.png +File122=marker-azul-52.png +File123=marker-azul-53.png +File124=marker-azul-54.png +File125=marker-azul-55.png +File126=marker-azul-56.png +File127=marker-azul-57.png +File128=marker-azul-58.png +File129=marker-azul-59.png File13=cacahuates_original.jpeg -File130=marker-azul-65.png -File131=marker-azul-66.png -File132=marker-azul-67.png -File133=marker-azul-68.png -File134=marker-azul-69.png -File135=marker-azul-7.png -File136=marker-azul-70.png -File137=marker-azul-71.png -File138=marker-azul-72.png -File139=marker-azul-73.png +File130=marker-azul-6.png +File131=marker-azul-60.png +File132=marker-azul-61.png +File133=marker-azul-62.png +File134=marker-azul-63.png +File135=marker-azul-64.png +File136=marker-azul-65.png +File137=marker-azul-66.png +File138=marker-azul-67.png +File139=marker-azul-68.png File14=cacahuates_original2.bmp -File140=marker-azul-74.png -File141=marker-azul-75.png -File142=marker-azul-76.png -File143=marker-azul-77.png -File144=marker-azul-78.png -File145=marker-azul-79.png -File146=marker-azul-8.png -File147=marker-azul-80.png -File148=marker-azul-81.png -File149=marker-azul-82.png +File140=marker-azul-69.png +File141=marker-azul-7.png +File142=marker-azul-70.png +File143=marker-azul-71.png +File144=marker-azul-72.png +File145=marker-azul-73.png +File146=marker-azul-74.png +File147=marker-azul-75.png +File148=marker-azul-76.png +File149=marker-azul-77.png File15=cacahuates_original2.jpg -File150=marker-azul-83.png -File151=marker-azul-84.png -File152=marker-azul-85.png -File153=marker-azul-86.png -File154=marker-azul-87.png -File155=marker-azul-88.png -File156=marker-azul-89.png -File157=marker-azul-9.png -File158=marker-azul-90.png -File159=marker-azul-91.png +File150=marker-azul-78.png +File151=marker-azul-79.png +File152=marker-azul-8.png +File153=marker-azul-80.png +File154=marker-azul-81.png +File155=marker-azul-82.png +File156=marker-azul-83.png +File157=marker-azul-84.png +File158=marker-azul-85.png +File159=marker-azul-86.png File16=cacahuates_original3.bmp -File160=marker-azul-92.png -File161=marker-azul-93.png -File162=marker-azul-94.png -File163=marker-azul-95.png -File164=marker-azul-96.png -File165=marker-azul-97.png -File166=marker-azul-98.png -File167=marker-azul-99.png -File168=marker-rojo-0.png -File169=marker-rojo-1.png +File160=marker-azul-87.png +File161=marker-azul-88.png +File162=marker-azul-89.png +File163=marker-azul-9.png +File164=marker-azul-90.png +File165=marker-azul-91.png +File166=marker-azul-92.png +File167=marker-azul-93.png +File168=marker-azul-94.png +File169=marker-azul-95.png File17=carrito.png -File170=marker-rojo-10.png -File171=marker-rojo-100.png -File172=marker-rojo-11.png -File173=marker-rojo-12.png -File174=marker-rojo-13.png -File175=marker-rojo-14.png -File176=marker-rojo-15.png -File177=marker-rojo-16.png -File178=marker-rojo-17.png -File179=marker-rojo-18.png +File170=marker-azul-96.png +File171=marker-azul-97.png +File172=marker-azul-98.png +File173=marker-azul-99.png +File174=marker-rojo.png +File175=marker-rojo-0.png +File176=marker-rojo1.png +File177=marker-rojo-1.png +File178=marker-rojo-10.png +File179=marker-rojo-100.png File18=checklist.bal -File180=marker-rojo-19.png -File181=marker-rojo-2.png -File182=marker-rojo-20.png -File183=marker-rojo-21.png -File184=marker-rojo-22.png -File185=marker-rojo-23.png -File186=marker-rojo-24.png -File187=marker-rojo-25.png -File188=marker-rojo-26.png -File189=marker-rojo-27.png +File180=marker-rojo-11.png +File181=marker-rojo-12.png +File182=marker-rojo-13.png +File183=marker-rojo-14.png +File184=marker-rojo-15.png +File185=marker-rojo-16.png +File186=marker-rojo-17.png +File187=marker-rojo-18.png +File188=marker-rojo-19.png +File189=marker-rojo2.png File19=checks.bal -File190=marker-rojo-28.png -File191=marker-rojo-29.png -File192=marker-rojo-3.png -File193=marker-rojo-30.png -File194=marker-rojo-31.png -File195=marker-rojo-32.png -File196=marker-rojo-33.png -File197=marker-rojo-34.png -File198=marker-rojo-35.png -File199=marker-rojo-36.png +File190=marker-rojo-2.png +File191=marker-rojo-20.png +File192=marker-rojo-21.png +File193=marker-rojo-22.png +File194=marker-rojo-23.png +File195=marker-rojo-24.png +File196=marker-rojo-25.png +File197=marker-rojo-26.png +File198=marker-rojo-27.png +File199=marker-rojo-28.png File2=alert2.png File20=cliente.bal -File200=marker-rojo-37.png -File201=marker-rojo-38.png -File202=marker-rojo-39.png -File203=marker-rojo-4.png -File204=marker-rojo-40.png -File205=marker-rojo-41.png -File206=marker-rojo-42.png -File207=marker-rojo-43.png -File208=marker-rojo-44.png -File209=marker-rojo-45.png +File200=marker-rojo-29.png +File201=marker-rojo-3.png +File202=marker-rojo-30.png +File203=marker-rojo-31.png +File204=marker-rojo-32.png +File205=marker-rojo-33.png +File206=marker-rojo-34.png +File207=marker-rojo-35.png +File208=marker-rojo-36.png +File209=marker-rojo-37.png File21=cliente.bal.bak -File210=marker-rojo-46.png -File211=marker-rojo-47.png -File212=marker-rojo-48.png -File213=marker-rojo-49.png -File214=marker-rojo-5.png -File215=marker-rojo-50.png -File216=marker-rojo-51.png -File217=marker-rojo-52.png -File218=marker-rojo-53.png -File219=marker-rojo-54.png +File210=marker-rojo-38.png +File211=marker-rojo-39.png +File212=marker-rojo-4.png +File213=marker-rojo-40.png +File214=marker-rojo-41.png +File215=marker-rojo-42.png +File216=marker-rojo-43.png +File217=marker-rojo-44.png +File218=marker-rojo-45.png +File219=marker-rojo-46.png File22=clientes.bal -File220=marker-rojo-55.png -File221=marker-rojo-56.png -File222=marker-rojo-57.png -File223=marker-rojo-58.png -File224=marker-rojo-59.png -File225=marker-rojo-6.png -File226=marker-rojo-60.png -File227=marker-rojo-61.png -File228=marker-rojo-62.png -File229=marker-rojo-63.png +File220=marker-rojo-47.png +File221=marker-rojo-48.png +File222=marker-rojo-49.png +File223=marker-rojo-5.png +File224=marker-rojo-50.png +File225=marker-rojo-51.png +File226=marker-rojo-52.png +File227=marker-rojo-53.png +File228=marker-rojo-54.png +File229=marker-rojo-55.png File23=detalle_promo.bal -File230=marker-rojo-64.png -File231=marker-rojo-65.png -File232=marker-rojo-66.png -File233=marker-rojo-67.png -File234=marker-rojo-68.png -File235=marker-rojo-69.png -File236=marker-rojo-7.png -File237=marker-rojo-70.png -File238=marker-rojo-71.png -File239=marker-rojo-72.png +File230=marker-rojo-56.png +File231=marker-rojo-57.png +File232=marker-rojo-58.png +File233=marker-rojo-59.png +File234=marker-rojo-6.png +File235=marker-rojo-60.png +File236=marker-rojo-61.png +File237=marker-rojo-62.png +File238=marker-rojo-63.png +File239=marker-rojo-64.png File24=durakelo.png -File240=marker-rojo-73.png -File241=marker-rojo-74.png -File242=marker-rojo-75.png -File243=marker-rojo-76.png -File244=marker-rojo-77.png -File245=marker-rojo-78.png -File246=marker-rojo-79.png -File247=marker-rojo-8.png -File248=marker-rojo-80.png -File249=marker-rojo-81.png +File240=marker-rojo-65.png +File241=marker-rojo-66.png +File242=marker-rojo-67.png +File243=marker-rojo-68.png +File244=marker-rojo-69.png +File245=marker-rojo-7.png +File246=marker-rojo-70.png +File247=marker-rojo-71.png +File248=marker-rojo-72.png +File249=marker-rojo-73.png File25=durakelo1.png -File250=marker-rojo-82.png -File251=marker-rojo-83.png -File252=marker-rojo-84.png -File253=marker-rojo-85.png -File254=marker-rojo-86.png -File255=marker-rojo-87.png -File256=marker-rojo-88.png -File257=marker-rojo-89.png -File258=marker-rojo-9.png -File259=marker-rojo-90.png +File250=marker-rojo-74.png +File251=marker-rojo-75.png +File252=marker-rojo-76.png +File253=marker-rojo-77.png +File254=marker-rojo-78.png +File255=marker-rojo-79.png +File256=marker-rojo-8.png +File257=marker-rojo-80.png +File258=marker-rojo-81.png +File259=marker-rojo-82.png File26=engrane.jpg -File260=marker-rojo-91.png -File261=marker-rojo-92.png -File262=marker-rojo-93.png -File263=marker-rojo-94.png -File264=marker-rojo-95.png -File265=marker-rojo-96.png -File266=marker-rojo-97.png -File267=marker-rojo-98.png -File268=marker-rojo-99.png -File269=marker-verde-0.png +File260=marker-rojo-83.png +File261=marker-rojo-84.png +File262=marker-rojo-85.png +File263=marker-rojo-86.png +File264=marker-rojo-87.png +File265=marker-rojo-88.png +File266=marker-rojo-89.png +File267=marker-rojo-9.png +File268=marker-rojo-90.png +File269=marker-rojo-91.png File27=engrane.png -File270=marker-verde-1.png -File271=marker-verde-10.png -File272=marker-verde-100.png -File273=marker-verde-11.png -File274=marker-verde-12.png -File275=marker-verde-13.png -File276=marker-verde-14.png -File277=marker-verde-15.png -File278=marker-verde-16.png -File279=marker-verde-17.png +File270=marker-rojo-92.png +File271=marker-rojo-93.png +File272=marker-rojo-94.png +File273=marker-rojo-95.png +File274=marker-rojo-96.png +File275=marker-rojo-97.png +File276=marker-rojo-98.png +File277=marker-rojo-99.png +File278=marker-verde.png +File279=marker-verde-0.png File28=engranes.png -File280=marker-verde-18.png -File281=marker-verde-19.png -File282=marker-verde-2.png -File283=marker-verde-20.png -File284=marker-verde-21.png -File285=marker-verde-22.png -File286=marker-verde-23.png -File287=marker-verde-24.png -File288=marker-verde-25.png -File289=marker-verde-26.png +File280=marker-verde-1.png +File281=marker-verde-10.png +File282=marker-verde-100.png +File283=marker-verde-11.png +File284=marker-verde-12.png +File285=marker-verde-13.png +File286=marker-verde-14.png +File287=marker-verde-15.png +File288=marker-verde-16.png +File289=marker-verde-17.png File29=errormanager.bal -File290=marker-verde-27.png -File291=marker-verde-28.png -File292=marker-verde-29.png -File293=marker-verde-3.png -File294=marker-verde-30.png -File295=marker-verde-31.png -File296=marker-verde-32.png -File297=marker-verde-33.png -File298=marker-verde-34.png -File299=marker-verde-35.png +File290=marker-verde-18.png +File291=marker-verde-19.png +File292=marker-verde-2.png +File293=marker-verde-20.png +File294=marker-verde-21.png +File295=marker-verde-22.png +File296=marker-verde-23.png +File297=marker-verde-24.png +File298=marker-verde-25.png +File299=marker-verde-26.png File3=alerta.jpg File30=fondo_kmt.jpg -File300=marker-verde-36.png -File301=marker-verde-37.png -File302=marker-verde-38.png -File303=marker-verde-39.png -File304=marker-verde-4.png -File305=marker-verde-40.png -File306=marker-verde-41.png -File307=marker-verde-42.png -File308=marker-verde-43.png -File309=marker-verde-44.png +File300=marker-verde-27.png +File301=marker-verde-28.png +File302=marker-verde-29.png +File303=marker-verde-3.png +File304=marker-verde-30.png +File305=marker-verde-31.png +File306=marker-verde-32.png +File307=marker-verde-33.png +File308=marker-verde-34.png +File309=marker-verde-35.png File31=foto.bal -File310=marker-verde-45.png -File311=marker-verde-46.png -File312=marker-verde-47.png -File313=marker-verde-48.png -File314=marker-verde-49.png -File315=marker-verde-5.png -File316=marker-verde-50.png -File317=marker-verde-51.png -File318=marker-verde-52.png -File319=marker-verde-53.png +File310=marker-verde-36.png +File311=marker-verde-37.png +File312=marker-verde-38.png +File313=marker-verde-39.png +File314=marker-verde-4.png +File315=marker-verde-40.png +File316=marker-verde-41.png +File317=marker-verde-42.png +File318=marker-verde-43.png +File319=marker-verde-44.png File32=foto1.jpg -File320=marker-verde-54.png -File321=marker-verde-55.png -File322=marker-verde-56.png -File323=marker-verde-57.png -File324=marker-verde-58.png -File325=marker-verde-59.png -File326=marker-verde-6.png -File327=marker-verde-60.png -File328=marker-verde-61.png -File329=marker-verde-62.png +File320=marker-verde-45.png +File321=marker-verde-46.png +File322=marker-verde-47.png +File323=marker-verde-48.png +File324=marker-verde-49.png +File325=marker-verde-5.png +File326=marker-verde-50.png +File327=marker-verde-51.png +File328=marker-verde-52.png +File329=marker-verde-53.png File33=foto2.jpg -File330=marker-verde-63.png -File331=marker-verde-64.png -File332=marker-verde-65.png -File333=marker-verde-66.png -File334=marker-verde-67.png -File335=marker-verde-68.png -File336=marker-verde-69.png -File337=marker-verde-7.png -File338=marker-verde-70.png -File339=marker-verde-71.png +File330=marker-verde-54.png +File331=marker-verde-55.png +File332=marker-verde-56.png +File333=marker-verde-57.png +File334=marker-verde-58.png +File335=marker-verde-59.png +File336=marker-verde-6.png +File337=marker-verde-60.png +File338=marker-verde-61.png +File339=marker-verde-62.png File34=foto3.jpg -File340=marker-verde-72.png -File341=marker-verde-73.png -File342=marker-verde-74.png -File343=marker-verde-75.png -File344=marker-verde-76.png -File345=marker-verde-77.png -File346=marker-verde-78.png -File347=marker-verde-79.png -File348=marker-verde-8.png -File349=marker-verde-80.png +File340=marker-verde-63.png +File341=marker-verde-64.png +File342=marker-verde-65.png +File343=marker-verde-66.png +File344=marker-verde-67.png +File345=marker-verde-68.png +File346=marker-verde-69.png +File347=marker-verde-7.png +File348=marker-verde-70.png +File349=marker-verde-71.png File35=foto4.jpg -File350=marker-verde-81.png -File351=marker-verde-82.png -File352=marker-verde-83.png -File353=marker-verde-84.png -File354=marker-verde-85.png -File355=marker-verde-86.png -File356=marker-verde-87.png -File357=marker-verde-88.png -File358=marker-verde-89.png -File359=marker-verde-9.png +File350=marker-verde-72.png +File351=marker-verde-73.png +File352=marker-verde-74.png +File353=marker-verde-75.png +File354=marker-verde-76.png +File355=marker-verde-77.png +File356=marker-verde-78.png +File357=marker-verde-79.png +File358=marker-verde-8.png +File359=marker-verde-80.png File36=guardagestion.bal -File360=marker-verde-90.png -File361=marker-verde-91.png -File362=marker-verde-92.png -File363=marker-verde-93.png -File364=marker-verde-94.png -File365=marker-verde-95.png -File366=marker-verde-96.png -File367=marker-verde-97.png -File368=marker-verde-98.png -File369=marker-verde-99.png +File360=marker-verde-81.png +File361=marker-verde-82.png +File362=marker-verde-83.png +File363=marker-verde-84.png +File364=marker-verde-85.png +File365=marker-verde-86.png +File366=marker-verde-87.png +File367=marker-verde-88.png +File368=marker-verde-89.png +File369=marker-verde-9.png File37=guna_viejo.png -File370=nota.bal -File371=noventa.bal -File372=nuevocliente.bal -File373=palomita_verde.png -File374=palomita_verde_original.png -File375=pedido.bal -File376=pedidoItem.bal -File377=planfia_logo.png -File378=planfia_logo_old.png -File379=planfia_logo_old2.png +File370=marker-verde-90.png +File371=marker-verde-91.png +File372=marker-verde-92.png +File373=marker-verde-93.png +File374=marker-verde-94.png +File375=marker-verde-95.png +File376=marker-verde-96.png +File377=marker-verde-97.png +File378=marker-verde-98.png +File379=marker-verde-99.png File38=historico.bal -File380=principal.bal -File381=proditem.bal -File382=productos.bal -File383=productos2.bal -File384=profina.jpg -File385=profina.png -File386=promociones.bal -File387=qr.bal -File388=rechazo.jpg -File389=rojo.png +File380=nota.bal +File381=noventa.bal +File382=nuevocliente.bal +File383=palomita_verde.png +File384=palomita_verde_original.png +File385=pedido.bal +File386=pedidoItem.bal +File387=planfia_logo.png +File388=planfia_logo_old.png +File389=planfia_logo_old2.png File39=info_gral.resp -File390=salma.jpg -File391=salma.png -File392=senial.jpg -File393=sync.png -File394=tache_rojo.png -File395=tache_rojo_original.png -File396=telefonos.bal -File397=ticketsDia.bal -File398=Tiendita.jpg -File399=transporte.png +File390=principal.bal +File391=proditem.bal +File392=productos.bal +File393=productos2.bal +File394=profina.jpg +File395=profina.png +File396=promociones.bal +File397=qr.bal +File398=rechazo.jpg +File399=rojo.png File4=alerta_amarilla.png File40=infonavit1.jpg -File400=verde.png -File401=vista1.png -File402=vista2.png -File403=vista3.png -File404=vista4.png -File405=WhatsApp Image 2022-11-17 at 11.50.59 AM.jpeg -File406=WhatsApp Image 2022-11-17 at 11.50.59 AM.jpg -File407=whatsapp.png -File408=whatsapp_original.png -File409=WHATSTEL.jpeg +File400=salma.jpg +File401=salma.png +File402=senial.jpg +File403=sync.png +File404=tache_rojo.png +File405=tache_rojo_original.png +File406=telefonos.bal +File407=ticketsDia.bal +File408=Tiendita.jpg +File409=transporte.png File41=INVENTARIO (1).jpg -File410=WHATSTEL.png +File410=verde.png +File411=vista1.png +File412=vista2.png +File413=vista3.png +File414=vista4.png +File415=WhatsApp Image 2022-11-17 at 11.50.59 AM.jpeg +File416=WhatsApp Image 2022-11-17 at 11.50.59 AM.jpg +File417=whatsapp.png +File418=whatsapp_original.png +File419=WHATSTEL.jpeg File42=INVENTARIO.jpg +File420=WHATSTEL.png File43=inventario.PNG File44=itembuttonblue.png File45=itembuttonred.png @@ -373,42 +383,42 @@ File63=Malo.jpg File64=mapa.bal File65=mapa_rutas.bal File66=mapas.bal -File67=marker-azul-0.png -File68=marker-azul-1.png -File69=marker-azul-10.png +File67=marker-azul.png +File68=marker-azul-0.png +File69=marker-azul1.png File7=BLACNCO.jpg -File70=marker-azul-100.png -File71=marker-azul-11.png -File72=marker-azul-12.png -File73=marker-azul-13.png -File74=marker-azul-14.png -File75=marker-azul-15.png -File76=marker-azul-16.png -File77=marker-azul-17.png -File78=marker-azul-18.png -File79=marker-azul-19.png +File70=marker-azul-1.png +File71=marker-azul-10.png +File72=marker-azul-100.png +File73=marker-azul-11.png +File74=marker-azul-12.png +File75=marker-azul-13.png +File76=marker-azul-14.png +File77=marker-azul-15.png +File78=marker-azul-16.png +File79=marker-azul-17.png File8=cacahuates.png -File80=marker-azul-2.png -File81=marker-azul-20.png -File82=marker-azul-21.png -File83=marker-azul-22.png -File84=marker-azul-23.png -File85=marker-azul-24.png -File86=marker-azul-25.png -File87=marker-azul-26.png -File88=marker-azul-27.png -File89=marker-azul-28.png +File80=marker-azul-18.png +File81=marker-azul-19.png +File82=marker-azul2.png +File83=marker-azul-2.png +File84=marker-azul-20.png +File85=marker-azul-21.png +File86=marker-azul-22.png +File87=marker-azul-23.png +File88=marker-azul-24.png +File89=marker-azul-25.png File9=cacahuates_blanco.png -File90=marker-azul-29.png -File91=marker-azul-3.png -File92=marker-azul-30.png -File93=marker-azul-31.png -File94=marker-azul-32.png -File95=marker-azul-33.png -File96=marker-azul-34.png -File97=marker-azul-35.png -File98=marker-azul-36.png -File99=marker-azul-37.png +File90=marker-azul-26.png +File91=marker-azul-27.png +File92=marker-azul-28.png +File93=marker-azul-29.png +File94=marker-azul3.png +File95=marker-azul-3.png +File96=marker-azul-30.png +File97=marker-azul-31.png +File98=marker-azul-32.png +File99=marker-azul-33.png FileGroup1=Default Group FileGroup10=Default Group FileGroup100=Default Group @@ -756,7 +766,17 @@ FileGroup408=Default Group FileGroup409=Default Group FileGroup41=Default Group FileGroup410=Default Group +FileGroup411=Default Group +FileGroup412=Default Group +FileGroup413=Default Group +FileGroup414=Default Group +FileGroup415=Default Group +FileGroup416=Default Group +FileGroup417=Default Group +FileGroup418=Default Group +FileGroup419=Default Group FileGroup42=Default Group +FileGroup420=Default Group FileGroup43=Default Group FileGroup44=Default Group FileGroup45=Default Group @@ -879,7 +899,7 @@ Module6=C_Mapas Module7=C_Nota Module8=C_NoVenta Module9=C_NuevoCliente -NumberOfFiles=410 +NumberOfFiles=420 NumberOfLibraries=28 NumberOfModules=30 Version=12.8 @@ -887,7 +907,7 @@ Version=12.8 #Region Project Attributes #ApplicationLabel: Kelloggs Venta #VersionCode: 3000 - #VersionName: 5.03.02 + #VersionName: 5.03.03 #SupportedOrientations: portrait #CanInstallToExternalStorage: False #BridgeLogger:true diff --git a/B4A/KelloggsV4.b4a.meta b/B4A/KelloggsV4.b4a.meta index 9cdbf33..0a7f53b 100644 --- a/B4A/KelloggsV4.b4a.meta +++ b/B4A/KelloggsV4.b4a.meta @@ -76,7 +76,7 @@ ModuleClosedNodes2= ModuleClosedNodes20= ModuleClosedNodes21= ModuleClosedNodes22= -ModuleClosedNodes23=1,3,4,5,6,7,8,9,11,12,13,14,15,17,18,21,22,24,25,26,27,28,29,30,31,32,33,35 +ModuleClosedNodes23=1,3,4,5,6,7,8,9,11,12,14,15,17,18,21,22,24,25,26,27,28,29,30,31,32,33,35 ModuleClosedNodes24= ModuleClosedNodes25=4 ModuleClosedNodes26= @@ -91,6 +91,6 @@ ModuleClosedNodes6= ModuleClosedNodes7= ModuleClosedNodes8= ModuleClosedNodes9= -NavigationStack=C_Principal,cargar_Click,796,0,C_Principal,JobDone,1486,0,MAPA_RUTAS,MapFragment1_Ready,174,6,MAPA_RUTAS,CreateBitmapWithNumber,376,6,MAPA_RUTAS,inicio,361,0,Subs,procesaPromocion,1250,0,C_Principal,Class_Globals,0,0,C_Clientes,Class_Globals,0,0,Subs,revisaPromoPorMonto,1926,0,C_Cliente,B4XPage_Appear,758,6 +NavigationStack=C_Cliente,B4XPage_Appear,758,6,C_Principal,Class_Globals,1,0,C_Principal,SUBIR_INFO_PEDIDO,3023,0,C_Principal,cargar_Click,748,6,C_Principal,JobDone,1781,1,kms_helperSubs,RD_respalda_cat_detalle_paq,303,1,C_Cliente,Cuestionario,2315,0,MAPA_RUTAS,MapFragment1_Ready,151,1,Subs,CreateBitmapWithNumber,1983,0,Subs,revisaHora,1967,6,Subs,actualizaProducto,970,0 SelectedBuild=0 -VisibleModules=1,28,11,3,29,12,4,13,7,9 +VisibleModules=1,28,11,3,29,12,4,13,7,9,23,25 diff --git a/B4A/MAPA_RUTAS.bas b/B4A/MAPA_RUTAS.bas index b7c0ce0..d5e49de 100644 --- a/B4A/MAPA_RUTAS.bas +++ b/B4A/MAPA_RUTAS.bas @@ -154,7 +154,8 @@ Sub MapFragment1_Ready Tienda= c.GetString("CAT_CL_NOMBRE") NumSerie=c.GetInt("CAT_CL_NUM_SERIEFISICO") 'MARK_AZUL = gmap.AddMarker2(LongitudRU,LatitudRu,Tienda, gmap.HUE_BLUE) - MARK_AZUL = gmap.AddMarker3(LatitudRU, LongitudRU, CODIGO, LoadBitmap(File.DirAssets, "marker-azul-" & NumSerie &".png")) +' MARK_AZUL = gmap.AddMarker3(LatitudRU, LongitudRU, CODIGO, LoadBitmap(File.DirAssets, "marker-azul-" & NumSerie &".png")) + MARK_AZUL = gmap.AddMarker3(LatitudRU,LongitudRU,CODIGO, Subs.CreateBitmapWithNumber(LoadBitmap(File.DirAssets, "marker-azul.png"), NumSerie)) MARK_AZUL.Snippet = Tienda Next c .Close diff --git a/B4A/Subs.bas b/B4A/Subs.bas index 140d5db..941c20f 100644 --- a/B4A/Subs.bas +++ b/B4A/Subs.bas @@ -1961,12 +1961,30 @@ Sub revisaHora As Boolean Private h As Cursor = Starter.skmt.ExecQuery("select CAT_VA_VALOR from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'HORA'") If h.RowCount > 0 Then h.Position = 0 + Log(h.GetInt("CAT_VA_VALOR")) + Log(h.GetString("CAT_VA_VALOR")) + Private hr As Int = h.GetString("CAT_VA_VALOR") DateTime.DateFormat = "HH" Private ahora As String = DateTime.Date(DateTime.Now) - Log($"${h.GetInt("CAT_VA_VALOR")} >= ${(ahora - 2)} and ${h.GetInt("CAT_VA_VALOR")} <= ${(ahora + 2)}"$) + Log($"${hr} >= ${(ahora - 2)} and ${hr} <= ${(ahora + 2)}"$) If h.GetInt("CAT_VA_VALOR") >= ahora - 2 And h.GetInt("CAT_VA_VALOR") <= ahora + 2 Then horaCorrecta = True End If End If - Return horaCorrecta + Return True +End Sub + +Sub CreateBitmapWithNumber(OriginalBitmap As Bitmap, Number As Int) As Bitmap 'ignore + Dim NewBitmap As Bitmap + NewBitmap.InitializeMutable(OriginalBitmap.Width, OriginalBitmap.Height) + Dim Canvas As Canvas + Canvas.Initialize2(NewBitmap) + ' Definir el rectángulo donde se dibujará el Bitmap + Dim DestRect As Rect + DestRect.Initialize(0, 0, OriginalBitmap.Width, OriginalBitmap.Height) + ' Dibujar la imagen original + Canvas.DrawBitmap(OriginalBitmap, Null, DestRect) + ' Dibujar el número en el centro del Bitmap y configurar el estilo del texto + Canvas.DrawText(Number, (OriginalBitmap.Width / 2), (OriginalBitmap.Height / 2.4), Typeface.DEFAULT, 15, Colors.White, "CENTER") + Return NewBitmap End Sub \ No newline at end of file diff --git a/B4A/kms_helperSubs.bas b/B4A/kms_helperSubs.bas index 5d14c09..e0df4e3 100644 --- a/B4A/kms_helperSubs.bas +++ b/B4A/kms_helperSubs.bas @@ -295,15 +295,19 @@ Sub RD_respalda_cat_detalle_paq Private inicio As String = DateTime.Now ' Log("Copiando CAT_DETALLES_PAQ ...") Private x As Cursor = skmt.ExecQuery("select * from CAT_DETALLES_PAQ") - If x.RowCount > 0 Then - Private lasCols As String = getTableColumnListName(skmt, "CAT_DETALLES_PAQ") - rkmt.BeginTransaction - rkmt.ExecNonQuery($"delete from CAT_DETALLES_PAQ where fecha = '${fechaHoy}'"$) - rkmt.ExecNonQuery($"insert into CAT_DETALLES_PAQ (${lasCols}, FECHA) select ${lasCols}, '${fechaHoy}' as FECHA from skmt1.CAT_DETALLES_PAQ"$) - rkmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!! - rkmt.EndTransaction - LogColor("DP: " & ((DateTime.Now - inicio)/1000) & " segs", Colors.RGB(166,37,0)) - End If + Try + If x.RowCount > 0 Then + Private lasCols As String = getTableColumnListName(skmt, "CAT_DETALLES_PAQ") + rkmt.BeginTransaction + rkmt.ExecNonQuery($"delete from CAT_DETALLES_PAQ where fecha = '${fechaHoy}'"$) + rkmt.ExecNonQuery($"insert into CAT_DETALLES_PAQ (${lasCols}, FECHA) select ${lasCols}, '${fechaHoy}' as FECHA from skmt1.CAT_DETALLES_PAQ"$) + rkmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!! + rkmt.EndTransaction + LogColor("DP: " & ((DateTime.Now - inicio)/1000) & " segs", Colors.RGB(166,37,0)) + End If + Catch + Log(LastException) + End Try x.Close End Sub