B4A=true Group=Default Group ModulesStructureVersion=1 Type=Activity Version=8.3 @EndOfDesignText@ #Region Activity Attributes #FullScreen: False #IncludeTitle: True #End Region Sub Process_Globals 'These global variables will be declared once when the application starts. 'These variables can be accessed from all modules. Private xui As XUI End Sub Sub Globals 'These global variables will be redeclared each time the activity is created. 'These variables can only be accessed from this module. Private CLVrutacli As CustomListView 'Private ShapeCli As Panel ' As B4XView ' No es necesario definirlo, al parecer se define cada vez que se va agregar Private lbconcre,lbruc,lbnom,lbmonto,lbcod,lbclon,lbdir,lbmeta,lbprop As Label ' lbconcre, Private lbResumCli As Label Private lbResumTot As Label Private lblAction1 As Label Private TxtBuscar As EditText Private ImgClientes As B4XView Private ImgVentas As B4XView 'Private lblTitle As B4XView 'Private lblContent As B4XView 'Private lblAction1 As Label 'Private lblAction2 As Label End Sub Sub Activity_Create(FirstTime As Boolean) 'Do not forget to load the layout file created with the visual designer. For example: Activity.LoadLayout("lienzoRutaCli") Activity.AddMenuItem("Transmitir todos los pedidos pendientes","volverHome") Activity.AddMenuItem("Volver","volverHome") Activity.AddMenuItem3("", "refresh", xui.LoadBitmapResize(File.DirAssets, "ic_reload_white_24dp.png", 32dip, 32dip, True), True) Activity.AddMenuItem3("", "newCliente", xui.LoadBitmapResize(File.DirAssets, "ic_add_white_24dp.png", 32dip, 32dip, True), True) ImgClientes.SetBitmap(xui.LoadBitmapResize(File.DirAssets, "buscliente.png", ImgClientes.Width, ImgClientes.Height, True)) ImgClientes.SetBitmap(xui.LoadBitmapResize(File.DirAssets, "pedido-icono.png", ImgClientes.Width, ImgClientes.Height, True)) refresh_Click ' Obtener clientes de la bd-local y exhibirlos End Sub Sub Activity_Resume End Sub Sub Activity_Pause (UserClosed As Boolean) End Sub Private Sub CreateCliCard(fichaCli As Map ,Width As Int) As Panel Dim p As B4XView = xui.CreatePanel("") Dim height As Int = 25%y ' Altura de cada vista-item 'If GetDeviceLayoutValues.ApproximateScreenSize < 4.5 Then height = 310dip p.SetLayoutAnimated(0, 0, 0, Width, height) p.LoadLayout("ClienteCard") 'lbcod.Text = fichaCli.Get("cli_codigo") Dim xConCre As Int = fichaCli.Get("cli_concre") If xConCre=2 Then lbconcre.Text = "CR" Else lbconcre.Text = "CO" End If lbnom.Text = fichaCli.Get("cli_descri") If fichaCli.Get("cli_contacto")<>Null Then lbprop.Text = fichaCli.Get("cli_contacto") Else lbprop.Text = "" End If If fichaCli.Get("cli_ruc")<>Null Then lbruc.Text = "RUC:" & fichaCli.Get("cli_ruc") Else lbruc.Text = "RUC:?" End If If fichaCli.Get("total")<>Null Then Dim elmonto As Double = fichaCli.Get("total") lbmonto.Text = NumberFormat2(elmonto,0,0,0,False) ' xPriceDigDecimal,xPriceDigDecimal,False) Else lbmonto.Text = "0" End If lbdir.Text = fichaCli.Get("cli_direcc") ' Label como Botones SetColorStateList(lblAction1, xui.Color_LightGray, lblAction1.TextColor) 'SetColorStateList(lblAction2, xui.Color_LightGray, lblAction2.TextColor) 'ImageView1.SetBitmap(xui.LoadBitmapResize(File.DirAssets, Image, ImageView1.Width, ImageView1.Height, True)) ' Return p ' End Sub Private Sub CreateCliCardClase(fichaCli As Map ,Width As Int) As Panel Dim p As B4XView = xui.CreatePanel("") Dim height As Int = 25%y ' Altura de cada vista-item 'If GetDeviceLayoutValues.ApproximateScreenSize < 4.5 Then height = 310dip Dim tj As ClienteTarjeta tj.Initialize(p ,"evClienteTarjeta" ,fichaCli) p.SetLayoutAnimated(0, 0, 0, Width, height) p.LoadLayout("ClienteCard") 'lbcod.Text = fichaCli.Get("cli_codigo") Dim xConCre As Int = fichaCli.Get("cli_concre") If xConCre=2 Then lbconcre.Text = "CR" Else lbconcre.Text = "CO" End If lbnom.Text = fichaCli.Get("cli_descri") If fichaCli.Get("cli_contacto")<>Null Then lbprop.Text = fichaCli.Get("cli_contacto") Else lbprop.Text = "" End If If fichaCli.Get("cli_ruc")<>Null Then lbruc.Text = "RUC:" & fichaCli.Get("cli_ruc") Else lbruc.Text = "RUC:?" End If If fichaCli.Get("total")<>Null Then Dim elmonto As Double = fichaCli.Get("total") lbmonto.Text = NumberFormat2(elmonto,0,0,0,False) ' xPriceDigDecimal,xPriceDigDecimal,False) Else lbmonto.Text = "0" End If lbdir.Text = fichaCli.Get("cli_direcc") ' Label como Botones SetColorStateList(lblAction1, xui.Color_LightGray, lblAction1.TextColor) 'SetColorStateList(lblAction2, xui.Color_LightGray, lblAction2.TextColor) 'ImageView1.SetBitmap(xui.LoadBitmapResize(File.DirAssets, Image, ImageView1.Width, ImageView1.Height, True)) ' Return p ' End Sub Sub SetColorStateList(Btn As Label,Pressed As Int,Enabled As Int) Dim States(2,1) As Int States(0,0) = 16842919 'Pressed States(1,0) = 16842910 'Enabled Dim CSL As JavaObject CSL.InitializeNewInstance("android.content.res.ColorStateList",Array(States,Array As Int(Pressed, Enabled))) Dim B1 As JavaObject = Btn B1.RunMethod("setTextColor",Array As Object(CSL)) End Sub Private Sub getClientesRuta(rutaId As Int) As Cursor Private xsql As String xsql = "SELECT cli_clon,cli_codigo,cli_ruc,cli_descri,cli_contacto,cli_direcc,cli_limite,cli_saldo,cli_orden" _ & ",cli_meta,cli_venta,cli_concre,SUM(ped_qty*ped_precio)as total" _ & " FROM clientes" _ & " INNER JOIN ruta ON cli_ruta=rut_codigo" _ & " LEFT JOIN pedidos ON cli_codigo=ped_client And cli_clon=ped_cliclon" _ & " WHERE nro_opcion=" & rutaId _ & " and ( cli_descri LIKE '%" & TxtBuscar.Text.Trim & "%'" If TxtBuscar.Text.Trim.Length>0 And IsNumber(TxtBuscar.Text) Then xsql = xsql & " Or cli_codigo=" & TxtBuscar.Text.Trim If TxtBuscar.Text.Trim.Length>0 Then xsql = xsql & " Or TRIM(cli_ruc) LIKE '" & TxtBuscar.Text.Trim &"%'" xsql = xsql & " )" _ & " GROUP BY cli_codigo,cli_clon" _ & " ORDER BY cli_orden" ' Private curClientes As Cursor = Main.dbSql.ExecQuery(xsql) ' Return curClientes ' End Sub Private Sub mostrarLisCli(curClientes As Cursor) CLVrutacli.Clear ' Limpiar scroll ' If curClientes.RowCount>0 Then For i=0 To curClientes.RowCount-1 curClientes.Position = i ' Dim mDatosCli As Map mDatosCli.Initialize ' mDatosCli.Put("cli_concre" ,curClientes.GetInt("cli_concre")) mDatosCli.Put("cli_clon" ,curClientes.GetInt("cli_clon")) mDatosCli.Put("cli_codigo" ,curClientes.GetInt("cli_codigo")) mDatosCli.Put("cli_ruc" ,curClientes.GetString("cli_ruc")) mDatosCli.Put("cli_descri" ,curClientes.GetString("cli_descri")) mDatosCli.Put("cli_contato" ,curClientes.GetString("cli_contacto")) mDatosCli.Put("cli_direcc" ,curClientes.GetString("cli_direcc")) mDatosCli.Put("total" ,curClientes.GetString("total")) ' CLVrutacli.Add(CreateCliCardClase(mDatosCli ,CLVrutacli.AsView.Width),"") 'CLVrutacli.Add(CreateCliCard(mDatosCli ,CLVrutacli.AsView.Width),"") ' Next ' Recorrido por curClientes ' Else xui.MsgboxAsync("Lista de clientes vacía", "Ruta Clientes") End If End Sub Sub lblAction1_Click Dim index As Int = CLVrutacli.GetItemFromView(Sender) Log($"Action 1 clicked. Index: ${index}"$) Dim pnlItem As B4XView = CLVrutacli.GetPanel(index) ' Reproduce el objeta tarjetaCliente seleccionado Log("pnlItem:" & pnlItem.NumberOfViews &" vistas") Dim tarjeta As B4XView = pnlItem.GetView(0) Log("Vistas de tarjeta:" & tarjeta.NumberOfViews) Dim iLblnom As Label = tarjeta.GetView(1) ' 0:lbconcre 1:lbnom 2:lbruc 3:lbprop 4:lbdir 5:lbmonto 6:lblAction1 Log("Nombre:" & iLblnom.Text) Log("Parent:" & iLblnom.Parent) Log("panel.tag") Log(pnlItem.Tag) Log("tarjeta.tag") Log(tarjeta.Tag) Dim tarjeta2 As ClienteTarjeta = pnlItem.GetView(0) Log("tarjeta2") Log(tarjeta2.cliCod) Log(tarjeta2) End Sub Private Sub volverHome_Click StartActivity(Main) End Sub Private Sub refresh_Click Private nRutaId As Int = 0 ' 1er item del spinner ruta Private curClientes As Cursor = getClientesRuta( nRutaId ) mostrarLisCli( curClientes ) ' Cargar tarjetas Cliente End Sub Private Sub newCliente_Click Private nRutaId As Int = 0 ' 1er item del spinner ruta Private curClientes As Cursor = getClientesRuta( nRutaId ) mostrarLisCli( curClientes ) ' Cargar tarjetas Cliente End Sub Sub TxtBuscar_TextChanged (Old As String, New As String) refresh_Click End Sub Sub resumenRuta ' Log("RutaCliente.resumenRuta") ' Private totalped,cliefect,clirecha As Int ' Private p As Cursor ' Private xsql,camtipre As String ' ' For i=0 To CLVrutacli.Size - 1 '' ' 'Seleccion de Tipo de Precio ' camtipre = "ped_precio" ' selTiPrecio(lbc.Text.Trim) ' ' ' Obetener objeto item ' ' ' xsql = "SELECT ped_qty,SUM(ped_qty*"&camtipre&") as total,ped_enlace" _ ' & " FROM pedidos" _ ' & " LEFT JOIN productos ON ped_produc=codigo" _ ' & " WHERE ped_client="&lbc.Text&" and ped_cliclon="&lbclon.Text _ ' & " GROUP BY ped_client,ped_cliclon" ' ' p = Main.dbSql.ExecQuery(xsql) ' ' If p.RowCount=0 Then ' No visito ' Else ' p.Position = 0 ' If p.GetInt("total")>0 Then ' Hizo pedido ' If p.GetInt("ped_enlace")=0 Then ' Lb.TextColor = Colors.Yellow ' lb2.TextColor = Colors.Yellow ' Else ' Lb.TextColor = Colors.Green ' lb2.TextColor = Colors.Green ' End If ' lb2.Text = NumberFormat(p.GetInt("total"),0,0) ' totalped = totalped + p.GetInt("total") ' cliefect = cliefect + 1 ' Else ' Lb.TextColor = Colors.Red ' lb2.Text = GetExcusa(p.GetInt("ped_qty")) ' lb2.TextColor = Colors.Red ' clirecha = clirecha + 1 ' End If ' End If ' p.Close ' Next ' ' ' lbResumCli.Text = "COBERTURA:"&cliefect&"/"&CLVrutacli.Size&" "&NumberFormat(cliefect*100/CLVrutacli.Size,0,1)&"%" ' lbResumTot.AddSingleLine("VENTA:"&NumberFormat(totalped,0,0) & " NO VENDIDO:" & clirecha) ' End Sub