﻿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
