diff --git a/B4A/B4XMainPage.bas b/B4A/B4XMainPage.bas
new file mode 100644
index 0000000..17405b7
--- /dev/null
+++ b/B4A/B4XMainPage.bas
@@ -0,0 +1,436 @@
+B4A=true
+Group=Default Group
+ModulesStructureVersion=1
+Type=Class
+Version=9.85
+@EndOfDesignText@
+#Region Shared Files
+#CustomBuildAction: folders ready, %WINDIR%\System32\Robocopy.exe,"..\..\Shared Files" "..\Files"
+'Ctrl + click to sync files: ide://run?file=%WINDIR%\System32\Robocopy.exe&args=..\..\Shared+Files&args=..\Files&FilesSync=True
+'Ctrl + click to export as zip: ide://run?File=%B4X%\Zipper.jar&Args=Project.zip
+'Ctrl + click to sync files con Github Desktop ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=github&Args=..\..\
+#End Region
+
+Sub Class_Globals
+ Private Root As B4XView
+ Private xui As XUI
+' Private b_cargar As Button
+ Private b_enviar As Button
+ Dim skmt As SQL
+ Dim reqManager As DBRequestManager
+ Private l_pedidos2 As Label
+ Private l_diasVenta As Label
+ Private l_totalVenta As Label
+ Private l_cantsEnCero As Label
+ Private l_clienteNoNumerico As Label
+ Dim cuantos_pedido As String
+' Dim datos_iguales As String
+ Dim cuantos_pedidosc As String
+ Dim cuantos_noventa As String
+ Dim reqsPendientes As List
+ Private l_ruta2 As Label
+ Dim ruta As String = ""
+ Private l_usuario2 As Label
+ Dim usuario As String = ""
+ Private l_almacen2 As Label
+ Dim almacen As String = ""
+ Private p_progressDialog As Panel
+ Private l_progressDialog As Label
+ Private p_editaRuta As Panel
+ Private p_editaAlmacen As Panel
+ Private b_cargarBD As Button
+ Private p_datos As Panel
+ Private p_principal As Panel
+ Private l_appInfo As Label
+ Dim empresa, appVersion As String
+End Sub
+
+Public Sub Initialize
+' B4XPages.GetManager.LogEvents = True
+End Sub
+
+'This event will be called once, before the page becomes visible.
+Private Sub B4XPage_Created (Root1 As B4XView)
+ Root = Root1
+ Root.LoadLayout("MainPage")
+ p_principal.Width = Root.Width
+ p_principal.Height = Root.Height
+ Subs.centraPanel(p_datos, Root.Width)
+ reqManager.Initialize(Me, "http://187.189.244.154:1782")
+ B4XPages.SetTitle(Me, "Revisión de BD")
+ Subs.centraPanel(p_progressDialog, Root.Width)
+ Subs.centraPanel(p_editaRuta, Root.Width)
+ Subs.centraPanel(p_editaAlmacen, Root.Width)
+' Subs.centraPanel(p_progressDialog, Root.Width)
+End Sub
+
+'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
+
+Sub B4XPage_Appear
+ Log("INICIO")
+ ' Dim usuario As String = c.GetString("USUARIO")
+ Dim in As Intent = B4XPages.GetNativeParent(Me).GetStartingIntent
+ If in <> Null Then
+ Log(in.GetData)
+ If in.GetData <> Null Then
+ Dim XmlData As String
+ XmlData = in.GetData
+ ToastMessageShow(XmlData, False)
+ ' Send_Make_somthing(in)
+ ' Activity.Finish
+ Try
+ Dim OutStr As OutputStream = File.OpenOutput(File.DirInternal,"kmt.db",False)
+ Dim InStr As InputStream = File.OpenInput("ContentDir",XmlData)
+ File.Copy2(InStr,OutStr)
+ Log("BD copiada a interna.")
+ OutStr.Close
+ Catch
+ Log(LastException)
+ End Try
+' ExitApplication
+ End If
+ End If
+ Log($"Existe BD: ${File.Exists(File.DirInternal, "kmt.db") }"$)
+ If File.Exists(File.DirInternal, "kmt.db") Then
+ If Not(skmt.IsInitialized) Then skmt.Initialize(File.DirInternal,"kmt.db", True)
+ Dim ai As Cursor = skmt.ExecQuery($"select CAT_VA_DESCRIPCION, CAT_VA_VALOR from cat_variables where CAT_VA_DESCRIPCION = 'EMPRESA' or CAT_VA_DESCRIPCION = 'APP_VERSION'"$)
+ If ai.RowCount > 1 Then
+ For i = 0 To ai.RowCount -1
+ ai.Position = i
+ If ai.GetString("CAT_VA_DESCRIPCION") = "EMPRESA" Then empresa = ai.GetString("CAT_VA_VALOR")
+ If ai.GetString("CAT_VA_DESCRIPCION") = "APP_VERSION" Then appVersion = ai.GetString("CAT_VA_VALOR")
+ Next
+ l_appInfo.Text = $"${empresa} ${appVersion}"$
+ End If
+ Dim c As Cursor = skmt.ExecQuery($"select count(distinct pe_cliente) as pedidos, group_concat(distinct substr(pe_fecha, 4,2)) as diasVenta, sum(pe_costo_tot) as total, (select PE_CANT from pedido where PE_CANT = 0) as cantsEnCero, (select count(PE_CLIENTE) from pedido where printf("%d", PE_CLIENTE) <> PE_CLIENTE ) as clienteNoNumerico from pedido"$)
+ Log(c.RowCount)
+ If c.RowCount > 0 Then
+ c.Position = 0
+ l_pedidos2.Text = c.GetString("pedidos")
+ l_diasVenta.Text = "N/A"
+ If c.GetString("diasVenta") <> Null Then l_diasVenta.Text = c.GetString("diasVenta")
+ If c.GetString("total") <> Null Then l_totalVenta.Text = "$" & NumberFormat2(c.GetString("total"), 1, 2, 2, True) Else l_totalVenta.Text = "0"
+ l_cantsEnCero.Text = "0"
+ If c.GetString("cantsEnCero") <> Null Then l_cantsEnCero.Text = c.GetString("cantsEnCero")
+ l_clienteNoNumerico.Text = c.GetString("clienteNoNumerico")
+ End If
+ Dim c As Cursor = skmt.ExecQuery("select pe_ruta from pedido")
+ If c.RowCount > 0 Then
+ c.Position = 0
+ ruta = c.GetString("PE_RUTA")
+ l_ruta2.Text = ruta
+ End If
+ Dim c As Cursor = skmt.ExecQuery("select USUARIO from usuarioa")
+ If c.RowCount > 0 Then
+ c.Position = 0
+ usuario = c.GetString("USUARIO")
+ l_usuario2.Text = usuario
+ End If
+ Dim c As Cursor = skmt.ExecQuery("select ID_ALMACEN from cat_almacen")
+ If c.RowCount > 0 Then
+ c.Position = 0
+ almacen = c.GetString("ID_ALMACEN")
+ l_almacen2.Text = almacen
+ End If
+ c.Close
+ End If
+End Sub
+
+Private Sub b_enviar_Click
+ Dim resultado = Msgbox2("Se va a enviar la venta de la BD", "AVISO", "Continuar", "Cancelar", "", Null) 'ignore
+ If resultado = DialogResponse.POSITIVE Then
+ reqsPendientes.Initialize
+ l_progressDialog.Text = " Enviando información ..."
+ p_progressDialog.Visible = True
+ p_progressDialog.BringToFront
+ skmt.ExecNonQuery2("delete from PEDIDO WHERE PE_PRONOMBRE = ? ", Array As Object("N/A") )
+ skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE not In (select PE_CLIENTE from pedido)")
+ ' PEDIO_CLIENTE
+ Dim c As Cursor = 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 ")
+ Dim d As Cursor = skmt.ExecQuery("SELECT COUNT(*) as CUANTOS_PEDIDOSC FROM PEDIDO_CLIENTE ")
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Dim cmd As DBCommand
+ 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, ruta, c.GetString("PC_COSTO_SIN"), c.GetString("PC_FACTURA"))
+ reqManager.ExecuteCommand(cmd , "ins_pedidos_1")
+ reqsPendientes.Add("ins_pedidos_1")
+ Next
+ End If
+ c.Close
+ d.Position=0
+' Dim cuantos_pedidosc As String = D.GetString("CUANTOS_PEDIDOSC")
+ d.Close
+
+ ' ENVIO DE LOS CODIGOS QR
+ c = skmt.ExecQuery("SELECT CODIGOKMTS, CODIGOB, LAT, LON FROM HIST_CODIGO_BARRAS" )
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Dim cmd As DBCommand
+ 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, ruta)
+ reqManager.ExecuteCommand(cmd , "ins_QR")
+ reqsPendientes.Add("ins_QR")
+ Next
+ End If
+ c.Close
+
+ c = skmt.ExecQuery("SELECT HE_CLIE, HE_RES, HE_FECHA, HE_TIPO FROM HIST_ENCUESTA")
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Dim cmd As DBCommand
+ 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"))
+ reqManager.ExecuteCommand(cmd , "hist_encuesta")
+ reqsPendientes.Add("hist_encuesta")
+ Next
+ End If
+ c.Close
+
+ c = skmt.ExecQuery("SELECT 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")
+ d = skmt.ExecQuery("SELECT COUNT(*) as CUANTOS_PEDIDO FROM PEDIDO")
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Dim cmd As DBCommand
+ 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_pedido_1")
+ reqsPendientes.Add("ins_pedido_1")
+ Next
+ End If
+ c.Close
+ d.Position=0
+ cuantos_pedido = D.GetString("CUANTOS_PEDIDO")
+ d.Close
+
+ ' NOVENTA
+ c = skmt.ExecQuery("SELECT NV_CLIENTE,NV_FECHA,NV_USER,NV_MOTIVO,NV_COMM,NV_LAT,NV_LON, NV_NOMBRE, NV_DIRECCION FROM NOVENTA")
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Dim cmd As DBCommand
+ 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, ruta,C.GetString("NV_NOMBRE"),C.GetString("NV_DIRECCION"))
+ reqManager.ExecuteCommand(cmd , "inst_noventa")
+ reqsPendientes.Add("inst_noventa")
+ Next
+ End If
+ c.Close
+
+' D = skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS_NOVENTA FROM NOVENTA")
+' d.Position=0
+' Dim cuantos_noventa As String = D.GetString("CUANTOS_NOVENTA")
+' d.Close
+
+ ' GEO CERCA
+ c=skmt.ExecQuery("Select HGCLIENTE, HGDATE, HGLAT, HGLON from HIST_GEOCERCA")
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Dim cmd As DBCommand
+ cmd.Initialize
+ cmd.Name = "insert_geocerca_MARDS"
+ cmd.Parameters = Array As Object(C.GetString("HGCLIENTE"),C.GetString("HGDATE"),C.GetString("HGLAT"),C.GetString("HGLON"))
+ reqManager.ExecuteCommand(cmd , "inst_noventa")
+ Next
+ End If
+ c.Close
+
+ ' LO DEL LIKE
+ c=skmt.ExecQuery("Select HFCLIENTE, HFALIAS,HFRUTA,HFALMACEN from HIST_FACE")
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Dim cmd As DBCommand
+ 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"))
+ reqManager.ExecuteCommand(cmd , "inst_noventa")
+ Next
+ End If
+ c.Close
+
+ ' DROP
+' Dim sDate,sTime As String
+' DateTime.DateFormat = "MM/dd/yyyy"
+' sDate=DateTime.Date(DateTime.Now)
+' sTime=DateTime.Time(DateTime.Now)
+' Dim cmd As DBCommand
+' cmd.Initialize
+' cmd.Name ="insert_drop_MARDS_2"
+' cmd.Parameters = Array As Object(usuario,ruta,sDate & sTime, l_porvisitar.Text,l_drop.Text,l_efectiva.Text,l_cuantosc.Text,l_cuantosn.Text, L_MONTOD.Text,"ENVIO",almacen)
+' reqManager.ExecuteCommand(cmd , "inst_noventa")
+ ToastMessageShow("Se Actualizaran los datos, Este proceso podria tardar hasta un minuto, gracias "& ruta , True)
+ End If
+End Sub
+
+Sub JobDone(Job As HttpJob)
+ If Job.Success = False Then
+ 'ToastMessageShow("Error: " & Job.ErrorMessage, True)
+ Else 'If Job Success then ...
+ LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green)
+ If Job.JobName = "DBRequest" Then
+ Dim resultado As DBResult = reqManager.HandleJob(Job)
+ reqsPendientes.RemoveAt(reqsPendientes.IndexOf(resultado.Tag))
+ End If
+
+ If Job.JobName = "DBRequest" Then
+ Dim resultado As DBResult = reqManager.HandleJob(Job)
+ If resultado.Tag.As(String).IndexOf("ins_pedido_") > -1 Then
+ Private cliente As String= resultado.Tag
+ Log($"Cliente1:${cliente}"$)
+ 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
+ End If
+
+ If Job.JobName = "DBRequest" Then
+ Dim resultado As DBResult = reqManager.HandleJob(Job)
+ If resultado.Tag.As(String).IndexOf("hist_encuesta") > -1 Then
+ Private cliente As String= resultado.Tag
+ reqsPendientes.RemoveAt(reqsPendientes.IndexOf(resultado.Tag))
+ Log($"Cliente1:${cliente}"$)
+ 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
+ End If
+
+ If Job.JobName = "DBRequest" Then
+ Dim RESULT As DBResult = reqManager.HandleJob(Job)
+ If RESULT.Tag = "valida_pedido" Then 'query tag
+ For Each records() As Object In RESULT.Rows
+ Dim CUANTOSP As Int = records(RESULT.Columns.Get("CUANTOSP"))
+ If cuantos_pedido < = CUANTOSP Then
+ ' ToastMessageShow("rojo val ok 1 cuantosp." , True)
+' datos_iguales = "ok"
+' S_CP.Text = "INFO OK"
+ ToastMessageShow("INFO OK", True)
+ Else
+ ToastMessageShow("No se cargo bien la info P. Sync Nuevamente" & CUANTOSP & " " & cuantos_pedido, True)
+' S_CP.Text = "ENVIAR DATOS (K-2)"
+ ToastMessageShow("ENVIAR DATOS (K-2)", True)
+ 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 = reqManager.HandleJob(Job)
+ If RESULT.Tag = "valida_pedidoc" Then 'query tag
+ For Each records() As Object In RESULT.Rows
+ Dim CUANTOSC As Int = records(RESULT.Columns.Get("CUANTOSC"))
+ If cuantos_pedidosc = CUANTOSC Then
+ ' ToastMessageShow("rojo val ok 1 cuantosp." , True)
+' datos_iguales = "ok"
+ Else
+ ToastMessageShow("No se cargo bien la info C. Sync Nuevamente" & CUANTOSC & " " & cuantos_pedidosc, True)
+ Log("No se cargo bien la info C. Sync Nuevamente " & CUANTOSC & " " & cuantos_pedidosc)
+ End If
+ Next
+ End If
+ End If
+
+ If Job.JobName = "DBRequest" Then
+ Dim RESULT As DBResult = reqManager.HandleJob(Job)
+ If RESULT.Tag = "valida_noventa" Then 'query tag
+ For Each records() As Object In RESULT.Rows
+ Dim CUANTOSN As Int = records(RESULT.Columns.Get("CUANTOSN"))
+ If cuantos_noventa = CUANTOSN Then
+ ' ToastMessageShow("rojo val ok 1 cuantosp." , True)
+' datos_iguales = "ok"
+ Else
+ ToastMessageShow("No se cargo bien la info N. Sync Nuevamente" & CUANTOSN & " " & cuantos_noventa, True)
+ Log("No se cargo bien la info N. Sync Nuevamente " & CUANTOSN & " " & cuantos_noventa)
+ End If
+ Next
+ End If
+ End If
+
+ If Job.JobName = "DBRequest" Then
+ 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
+' S_CP.Text = "SUBIENDO"
+ Next
+' PB2.Progress = 100
+' S_CP.Text = "LISTO"
+ Log("5")
+ End If
+ End If
+
+ If Job.JobName = "DBRequest" Then
+ Dim RESULT As DBResult = B4XPages.MainPage.reqManager.HandleJob(Job)
+ If RESULT.Tag = "ins_pedido" Then 'query tag
+ For Each records() As Object In RESULT.Rows
+' PB2.Progress = PB2.Progress + 5
+' S_CP.Text = "SUBIENDO"
+ Next
+' PB2.Progress = 100
+' S_CP.Text = "LISTO"
+' ToastMessageShow("Listo", False)
+ Log("5")
+ End If
+ End If
+ End If
+ If reqsPendientes.Size = 0 Then p_progressDialog.Visible = False
+ Job.Release
+End Sub
+
+Private Sub B4XPage_CloseRequest As ResumableSub
+ ExitApplication
+ Return False
+End Sub
+
+Private Sub b_cargarBD_Click
+ Private FH As FileHandler
+ FH.Initialize
+ Wait For (FH.Load) Complete (Result As LoadResult) 'Abre un fileManager para seleccionar la base de datos a importar.
+ File.Copy(Result.Dir, Result.FileName, File.DirInternal, "kmt.db") 'Copia la base de datos seleccionada al directorio interno.
+ skmt.Initialize(File.DirInternal,"kmt.db", True) 'Reiniciliza la base de datos con la recien importada.
+ ToastMessageShow("¡BD importada!", False)
+End Sub
+
+Private Sub l_ruta2_LongClick
+ p_editaRuta.Top = l_ruta2.top
+ p_editaRuta.Visible = True
+End Sub
+
+Private Sub l_almacen2_LongClick
+ p_editaAlmacen.Top = l_almacen2.top
+ p_editaAlmacen.Visible = True
+End Sub
+
+Private Sub l_usuario2_LongClick
+
+End Sub
+
+Private Sub b_guardaRuta_Click
+ p_editaRuta.Visible = False
+ skmt.ExecNonQuery($"update "$)
+End Sub
+
+Private Sub b_guardaAlmacen_Click
+ p_editaAlmacen.Visible = False
+End Sub
+
+Private Sub p_principal_Click
+ p_editaAlmacen.Visible = False
+ p_editaRuta.Visible = False
+End Sub
\ No newline at end of file
diff --git a/B4A/DBCheck.b4a b/B4A/DBCheck.b4a
index 0bf652d..e82f1df 100644
--- a/B4A/DBCheck.b4a
+++ b/B4A/DBCheck.b4a
@@ -11,7 +11,7 @@ Library6=randomaccessfile
Library7=sql
Library8=appupdating
ManifestCode='This code will be applied to the manifest file during compilation.~\n~'You do not need to modify it in most cases.~\n~'See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136~\n~AddManifestText(~\n~~\n~)~\n~SetApplicationAttribute(android:icon, "@drawable/icon")~\n~SetApplicationAttribute(android:label, "$LABEL$")~\n~CreateResourceFromFile(Macro, Themes.LightTheme)~\n~'End of default text.~\n~~\n~SetApplicationAttribute(android:usesCleartextTraffic, "true")~\n~AddPermission(android.permission.INTERNET)~\n~AddPermission(android.permission.READ_EXTERNAL_STORAGE)~\n~AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)~\n~SetApplicationAttribute(android:allowBackup, "false")~\n~~\n~AddActivityText(main,~\n~~\n~~\n~~\n~~\n~)
-Module1=|relative|..\B4XMainPage
+Module1=B4XMainPage
Module2=DBRequestManager
Module3=FileHandler
Module4=Starter
diff --git a/B4A/Subs.bas b/B4A/Subs.bas
index 3991b28..fd28f52 100644
--- a/B4A/Subs.bas
+++ b/B4A/Subs.bas
@@ -12,7 +12,7 @@ Sub Process_Globals
Private su As StringUtils 'Usa la libreria StringUtils 'ignore
End Sub
-'Linea de prueba 2
+'Linea de prueba 3
'Convierte una fecha al formato yyMMddHHmmss
Sub fechaKMT(fecha As String) As String 'ignore