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=..\..\ 'Ctrl + click to sync files con Github Desktop ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=..\..\gitpull.bat #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