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 '########################################################################################################### '###################### PULL ############################################################# 'Ctrl + click ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=git&Args=pull '########################################################################################################### '###################### PUSH ############################################################# 'Ctrl + click ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=github&Args=..\..\ '########################################################################################################### '###################### PUSH TORTOISE GIT ######################################################### 'Ctrl + click ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=TortoiseGitProc&Args=/command:commit&Args=/path:"./../../"&Args=/closeonend:2 '########################################################################################################### #End Region 'Ctrl + click ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=github&Args=..\..\ Sub Class_Globals Private Root As B4XView Private xui As XUI ' Private b_cargar As Button Private b_enviar As Button Dim ime As IME 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 Private et_nuevaRuta As EditText Private et_nuevoAlmacen As EditText Private p_clientes As Panel ' Private lv_clientes As ListView Private clv_clientes As CustomListView Private p_item As Panel Private l_item As Label dim ph as Phone 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_clientes, Root.Width) ime.Initialize("ime") 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 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) Try 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 ai.Close Catch Log(LastException) LogColor("Error en CAT_VARIABLES", Colors.red) End Try Try 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(distinct 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 c.Close Catch Log(LastException) LogColor("Error en PEDIDO", Colors.red) End Try Try 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 c.Close Catch Log(LastException) LogColor("Error en PEDIDO", Colors.red) End Try Try 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 c.Close Catch Log(LastException) LogColor("Error en USUARIOA", Colors.red) End Try Try 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 Catch Log(LastException) LogColor("Error en CAT_ALMACEN", Colors.red) End Try 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 l_appInfo.Text = "" Wait For (FH.Load) Complete (Result As LoadResult) 'Abre un fileManager para seleccionar la base de datos a importar. Log("|" & Result.FileName & "|") If Result.FileName <> "" And Result.FileName <> Null Then p_clientes.Visible = False p_editaAlmacen.Visible = False p_editaRuta.Visible = False 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 If 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 l_clienteNoNumerico_LongClick Private c As Cursor = skmt.ExecQuery($"select distinct pe_cliente as cliente from pedido"$) If c.RowCount > 0 Then clv_clientes.Clear For i = 0 To c.RowCount - 1 c.Position = i clv_clientes.Add(CreateListItem(c.GetString("cliente")),i) Next End If p_clientes.Top = l_totalVenta.top p_clientes.BringToFront p_clientes.Visible = True End Sub Private Sub b_guardaRuta_Click p_editaRuta.Visible = False skmt.ExecNonQuery($"update pedido set pe_ruta = '${et_nuevaRuta.Text}' where pe_ruta = '${ruta}'"$) l_ruta2.Text = et_nuevaRuta.text End Sub Private Sub b_guardaAlmacen_Click skmt.ExecNonQuery($"delete from cat_almacen"$) skmt.ExecNonQuery($"insert into cat_almacen (id_almacen) values ('${et_nuevoAlmacen.Text}')"$) l_almacen2.Text = et_nuevoAlmacen.text p_editaAlmacen.Visible = False End Sub Private Sub p_principal_Click p_editaAlmacen.Visible = False p_editaRuta.Visible = False p_clientes.Visible = False ime.HideKeyboard End Sub Sub CreateListItem(mostrar As String) As Panel Dim p As B4XView = xui.CreatePanel("") p.SetLayoutAnimated(0, 0, 0, 1, 10) 'ignore p.LoadLayout("listItem") p.Height= 36dip p.Width = clv_clientes.GetBase.Width p_item.Height = p.Height p_item.Width = p.Width l_item.Height = p.Height l_item.Width = p.Width l_item.Text = mostrar ' cxc.Text = mostrar3 ' Log(p.Width) Return p End Sub