Files
Mariana/B4A/C_Productos.bas
cvaldes1201 54e33a93fd ...
2024-02-26 11:04:47 -06:00

976 lines
38 KiB
QBasic

B4A=true
Group=Default Group
ModulesStructureVersion=1
Type=Class
Version=11.5
@EndOfDesignText@
Sub Class_Globals
Private Root As B4XView 'ignore
Private xui As XUI 'ignore
Dim ruta As String
Dim q_buscar As String
Dim forzarBusqueda As Boolean = False
Dim skmt As SQL
Dim c As Cursor
Dim c2 As Cursor
Dim C3 As Cursor
Dim s As Cursor
Dim lv_catalogos As ListView
Dim lv_promos As ListView
Dim entro As String
Dim gest As Button
Dim lfila As Label
Dim marca As String
Dim tipo As String
Dim subtipo As String
Private BUSCA As EditText
Dim ya_entro As String
Dim TIENE_PROMOS As String
Dim RES As String
Dim S1 As Cursor
Dim bmp As Bitmap
Dim ciclo As String
Private b_qr As Button
Private p_productos As Panel
Dim clv_productos As CustomListView
Private ImageView1 As ImageView
Private Panel3 As Panel
Private p_prods As Panel
Private i_prod As ImageView
Private l_prodX As Label
Private b_prodMas As Button
Private l_pCant As Label
Private et_pCant As EditText
Private b_prodMenos As Button
Dim b_terminar1 As Button
Dim b_continuar As Button
Private l_total As Label
Private l_totProds As Label
Dim totalProds As Int = 0
Dim totalCompra As Float = 0
Dim etCantHasFocus As Boolean = False
Dim prodsMap As Map
Private l_Cargando As Label
Private l_info As Label
Private b_buscar As Button
Private p_botonesVenta As Panel
Private lv_tipo As ListView
Private lv_subtipo As ListView
Private p_vistaPreviaTrans As Panel
Private lv_prodsPedido As ListView
Private b_rechazar As Button
Private b_aceptar As Button
Private p_vistaPrevia As Panel
Dim folio As String
Dim result As String
Private l_cant As Label
Private l_total2 As Label
Dim prodsPedidoActual As String
Dim montoPedidoActual As String
Private clv_prods_ll As CustomListView
Private PCLV As PreoptimizedCLV
Dim listaProds As List
' Type AirportData (Name As String, AirportID As Int, IATA As String, ICAO As String, City As String, Latitude As Float, Longitude As Float, Altitude As String)
Dim pedidoMap As Map
Private p_botMasMen As Panel
Dim reiniciarlistaProds As Boolean= False
' Dim listaRenglones As List
Dim listaTiempos As List
Dim clienteId As String
Dim rutaUsuario As String
Dim hayPedido As Boolean
Dim listaHints As List
Dim h As Cursor
End Sub
'You can add more parameters here.
Public Sub Initialize As Object
Return Me
End Sub
'This event will be called once, before the page becomes visible.
Private Sub B4XPage_Created (Root1 As B4XView)
B4XPages.SetTitle(Me, $"${Subs.capitalizar(B4XPages.GetPageId(Me))} - ${Application.VersionName}"$)
Root = Root1
'load the layout to Root
' Activity.RemoveAllViews
Root.LoadLayout("productos")
ruta = File.DirInternal
If File.Exists(ruta, "kmt.db") = False Then
File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db")
End If
PCLV.Initialize(Me, "PCLV", clv_prods_ll)
ciclo = 1
l_info.Width = Root.Width * 0.8
l_info.Left = (Root.Width/2) - (l_info.Width/2)
c = Starter.skmt.ExecQuery("select distinct CAT_GP_TIPO from cat_gunaprod where CAT_GP_TIPO <> 'PROMOS' order by CAT_GP_TIPO")
If c.RowCount > 0 Then
Dim label1 As Label
label1 = lv_tipo.SingleLineLayout.Label
label1.TextSize = 17
label1.TextColor = Colors.Black
lv_tipo.Clear
For i=0 To c.RowCount-1
c.Position=i
lv_tipo.AddSingleLine(c.GetString("CAT_GP_TIPO"))
Next
End If
c.Close
' llenaCatalogo(False)
' listaRenglones.Initialize
listaTiempos.Initialize
listaProds.Initialize
pedidoMap.Initialize
listaHints.Initialize
Log("Llamamos LlenaProdsLL")
LlenaProdsLL(Null)
prodsMap.Initialize
End Sub
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
Sub B4XPage_Appear
clienteId = Subs.traeCliente
rutaUsuario = Subs.traeRuta
Starter.skmt.ExecNonQuery2("UPDATE CAT_GUNAPROD SET CAT_GP_TIPOPROD = (?) WHERE CAT_GP_TIPOPROD = (?) ",Array As Object("PRIORITARIO","1"))
Starter.skmt.ExecNonQuery2("UPDATE CAT_GUNAPROD SET CAT_GP_TIPOPROD = (?) WHERE CAT_GP_TIPOPROD = (?) ",Array As Object("ESTRATEGICO","2"))
Starter.skmt.ExecNonQuery2("UPDATE CAT_GUNAPROD SET CAT_GP_TIPOPROD = (?) WHERE CAT_GP_TIPOPROD = (?) ",Array As Object("COMPLEMENTARIO","3"))
Starter.skmt.ExecNonQuery2("UPDATE CAT_GUNAPROD SET CAT_GP_TIPOPROD = (?) WHERE CAT_GP_TIPOPROD = (?) ",Array As Object("CATALOGO REGULAR","0"))
Starter.skmt.ExecNonQuery2("UPDATE CAT_GUNAPROD SET CAT_GP_TIPOPROD = (?) WHERE CAT_GP_CLASIF = (?) ",Array As Object("PROMOS","PROMOS"))
clv_prods_ll.GetBase.SetLayoutAnimated(0, 5dip, 130dip, Root.Width + 10, Root.Height * 0.68) 'Cambiamos el tamaño y posición de la lista de productos
clv_prods_ll.Base_Resize(clv_prods_ll.GetBase.Width, clv_prods_ll.GetBase.Height) 'Cambiamos el tamaño del panel interno de la lista para que ajuste al nuevo tamaño.
If B4XPages.MainPage.bTerminarClicked Then
lv_catalogos.Visible = True
lv_promos.Visible = False
lv_tipo.Visible = False
lv_subtipo.Visible = False
clv_prods_ll.AsView.Visible = False
B4XPages.MainPage.bTerminarClicked = False
End If
If ya_entro <> "1" Then
If BUSCA.Text <> "" Then BUSCA.Text =""
entro ="3"
lv_catalogos.Clear
Sleep(100)
lfila.Text = "CATALOGOS"
p_productos.Height = Root.Height
clv_prods_ll.AsView.Visible = False
lv_catalogos.Visible = True
p_botonesVenta.Visible = False
p_botonesVenta.Top = clv_prods_ll.AsView.top + clv_prods_ll.AsView.Height - 25
lv_promos.Visible = False
End If
Dim label1 As Label
label1 = lv_catalogos.SingleLineLayout.Label
label1.TextSize = 17
label1.TextColor = Colors.Black
lv_catalogos.Clear
lv_catalogos.AddSingleLine("CATALOGO")
c = Starter.skmt.ExecQuery("select count(*) as hayPromos from cat_gunaprod where CAT_GP_TIPOPROD = 'PROMOS'")
c.Position = 0
If c.GetInt("hayPromos") > 0 Then
lv_catalogos.AddSingleLine("PROMOS")
End If
Sleep(100)
l_total.Visible = False
l_totProds.Visible = False
l_total.Left = 5dip
l_totProds.Width = Root.Width * 0.19
l_total.Left = l_totProds.Width + 20
l_total.Width = Root.Width * 0.25
' Log(Subs.traeTotalesClienteActual)
Dim m As Map = Subs.traeTotalesClienteActual
prodsPedidoActual = m.Get("productos")
montoPedidoActual = m.Get("monto")
hayPedido = Subs.hayPedido
' LogColor("Pedido ant? - "&hayPedido, Colors.Magenta)
If reiniciarlistaProds Then
Log("Llamamos LlenaProdsLL")
LlenaProdsLL(Null)
else If hayPedido Then
' LogColor("HAY PEDIDO ANTERIOR", Colors.red)
Log("Llamamos LlenaProdsLL")
LlenaProdsLL(Null)
End If
clv_prods_ll.JumpToItem(0) 'Vamos al primer artículo de la lista.
PCLV.lblHint.SetTextSizeAnimated(0,13)
PCLV.B4XSeekBar1.Color1=Colors.DarkGray
PCLV.B4XSeekBar1.Color2=Colors.DarkGray
PCLV.B4XSeekBar1.ThumbColor=Colors.red
PCLV.B4XSeekBar1.mBase.Left=Root.Width *0.91
' PCLV.B4XSeekBar1.mBase.Top=-50
PCLV.B4XSeekBar1.mBase.Height=clv_prods_ll.AsView.Height
PCLV.pnlOverlay.Height = clv_prods_ll.AsView.Height
PCLV.B4XSeekBar1.Update
End Sub
Sub PCLV_AddProds
End Sub
Sub lv_catalogos_ItemClick (Position As Int, Value As Object)
If Value = "CATALOGO" Then
' lfila.text = "TIPO"
lfila.text = "PRODUCTOS"
lv_catalogos.Visible = False
' lv_tipo.Visible = True
clv_prods_ll.AsView.Visible = True
If hayPedido Then p_botonesVenta.Visible = True 'Si ya hay pedido, entonces mostramos los botones.
Else
clv_prods_ll.AsView.Visible = False
lv_promos.Visible = True
lfila.text = "PROMOCIONES"
lv_catalogos.Visible = False
lv_promos.Clear
Dim label1 As Label
label1 = lv_promos.TwoLinesLayout.Label
label1.TextSize = 15
label1.TextColor = Colors.Black
Dim label2 As Label
label2 = lv_promos.TwoLinesLayout.SecondLabel
label2.TextSize = 15
label2.TextColor = Colors.Black
Dim label13 As Label
label13 = lv_promos.TwoLinesAndBitmap.Label
label13.TextSize = 15
label13.TextColor = Colors.Black
Dim label14 As Label
label14 = lv_promos.TwoLinesAndBitmap.SecondLabel
label14.TextSize = 15
label14.TextColor = Colors.Black
lfila.text = "PROMOS"
c2=Starter.skmt.ExecQuery2("select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG from cat_gunaprod where CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_TIPOPROD = ? AND CAT_GP_TIPO = ? AND CAT_GP_SUBTIPO = ? AND CAT_GP_ID NOT IN (SELECT PE_PROID FROM PEDIDO WHERE PE_CLIENTE IN (Select cuenta from cuentaa) )", Array As String(Value, Value, Value))
Log($"res:${c2.RowCount}, ${Value}, ${marca}, ${tipo}"$)
If c2.RowCount > 0 Then
For i=0 To c2.RowCount -1
c2.Position=i
Private tm As Map = Subs.procesaPromocion(c2.GetString("CAT_GP_ID"), clienteId)
Log(c2.GetString("CAT_GP_ID"))
If tm.Get("status") = "ok" Then 'Solo muestrala si hay producto.
lv_promos.AddTwoLines(c2.GetString("CAT_GP_NOMBRE"),"# " & c2.GetString("CAT_GP_ALMACEN") & " $ " & c2.GetString("CAT_GP_PRECIO") & " F:" & tm.Get("mp").As(Map).Get("prodsFijosCant") & " V:" & tm.Get("mp").As(Map).Get("prodsVariablesCant"))
End If
Next
Else
ToastMessageShow("No hay promociones disponibles.", False)
End If
c2.Close
entro = "4"
End If
End Sub
Sub lv_catalogos2_ItemClick (Position As Int, Value As Object)
clv_prods_ll.AsView.Visible = False
BUSCA.Text = ""
Dim cliente As C_Cliente = B4XPages.GetPage("Cliente")
Log($"value=${Value}"$)
If Value = "PROMOS" And cliente.cuenta <> "N" Then
entro = "3"
marca = "PROMOS"
tipo = "PROMOS"
Else if Value = "PROMOS" And cliente.cuenta = "N" Then
entro = "5"
B4XPages.ShowPage("Cliente")
End If
If Value = "PROMOS" Then
LogColor("Promos", Colors.red)
c2=Starter.skmt.ExecQuery2("select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG from cat_gunaprod where CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_TIPOPROD = ? AND CAT_GP_TIPO = ? AND CAT_GP_SUBTIPO = ? AND CAT_GP_ID NOT IN (SELECT PE_PROID FROM PEDIDO WHERE PE_CLIENTE IN (Select cuenta from cuentaa) )", Array As String(Value, marca, tipo))
Else
LogColor("Catalogo", Colors.red)
c2=Starter.skmt.ExecQuery("select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG, CAT_GP_TIPOPROD, CAT_GP_INICIATIVA from cat_gunaprod where CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_TIPOPROD <> 'PROMOS' ")
End If
If Value = "CATALOGO" Then
lv_catalogos.Visible = False
lv_promos.Visible = False
lfila.text = "CATALOGO"
Log("PGS")
ProgressDialogShow("Cargando catalogo ...")
Sleep(100)
Private inicioContador As String = DateTime.Now
llenaCatalogo(False)
clv_prods_ll.AsView.Visible = True
Log("PGH")
LogColor("TIEMPO DE PROCESO DEL CATALOGO: " & ((DateTime.Now-inicioContador)/1000), Colors.Red)
ProgressDialogHide
c2.Close
Else
clv_prods_ll.AsView.Visible = False
lv_promos.Visible = True
lv_catalogos.Visible = False
lv_promos.Clear
Dim label1 As Label
label1 = lv_promos.TwoLinesLayout.Label
label1.TextSize = 15
label1.TextColor = Colors.Black
Dim label2 As Label
label2 = lv_promos.TwoLinesLayout.SecondLabel
label2.TextSize = 15
label2.TextColor = Colors.Black
Dim label13 As Label
label13 = lv_promos.TwoLinesAndBitmap.Label
label13.TextSize = 15
label13.TextColor = Colors.Black
Dim label14 As Label
label14 = lv_promos.TwoLinesAndBitmap.SecondLabel
label14.TextSize = 15
label14.TextColor = Colors.Black
lfila.text = "PROMOS"
If c2.RowCount > 0 Then
For i=0 To c2.RowCount -1
c2.Position=i
Private tm As Map = Subs.procesaPromocion(c2.GetString("CAT_GP_ID"), clienteId)
If tm.Get("status") = "ok" Then 'Solo muestrala si hay producto.
lv_promos.AddTwoLines(c2.GetString("CAT_GP_NOMBRE"),"# " & c2.GetString("CAT_GP_ALMACEN") & " $ " & c2.GetString("CAT_GP_PRECIO") & " F:" & tm.Get("mp").As(Map).Get("prodsFijosCant") & " V:" & tm.Get("mp").As(Map).Get("prodsVariablesCant"))
End If
Next
End If
c2.Close
End If
entro = "4"
End Sub
Sub lv_promos_ItemClick (Position As Int, Value As Object)
clv_prods_ll.AsView.Visible = False
Dim cliente As C_Cliente = B4XPages.GetPage("Cliente")
' Log($"Entro=${entro}, value=${Value}, cuenta=${cliente.cuenta}"$)
If Value = "PROMOS" And cliente.cuenta <> "N" Then
entro = "3"
marca = "PROMOS"
tipo = "PROMOS"
Else if Value = "PROMOS" And cliente.cuenta = "N" Then
entro = "5"
B4XPages.ShowPage("Cliente")
End If
If entro = "3" Then
'xxxxxxxxxxxxxxxxxxxxx
Else If entro = "4" Then
Log("Entro = 4")
Starter.skmt.ExecNonQuery("delete from PROID")
Starter.skmt.ExecNonQuery2("INSERT INTO PROID VALUES (?)", Array As Object(Value))
Dim promos As C_Promos = B4XPages.GetPage("Promos")
promos.laPromo = Subs.traeProdIdDeBD.Get("id")
promos.elCliente = Subs.traeUsuarioDeBD
B4XPages.ShowPage("Promos")
End If
End Sub
'Generamos la lista de productos.
Sub llenaCatalogo(subtipo1 As String)
' Log("LlenaCatalogo")
' Private c2 As Cursor
' c2=Starter.skmt.ExecQuery2("select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG, CAT_GP_TIPOPROD, CAT_GP_INICIATIVA from cat_gunaprod where CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_TIPOPROD <> 'PROMOS' and CAT_GP_SUBTIPO = ? ", Array As String(subtipo1))
' Private bgColor, textColor As Int
' If c2.RowCount > 0 And clv_productos.Size <> c2.RowCount Then
' clv_productos.Clear : Log("limpiamos productos")
' For i=0 To c2.RowCount -1
' c2.Position=i
' If c2.GetString("CAT_GP_TIPOPROD") = "PRIORITARIO" Then
' bgColor = Colors.RGB(255, 212, 163) 'naranja
' Else If c2.GetString("CAT_GP_TIPOPROD") = "COMPLEMENTARIO" Then
' bgColor = Colors.RGB(177, 200, 249)'azul
' else If c2.GetString("CAT_GP_TIPOPROD") = "CATALOGO REGULAR" Then
' bgColor = Colors.White
' else If c2.GetString("CAT_GP_TIPOPROD") = "ESTRATEGICO" Then
' bgColor = Colors.RGB(241, 255, 163) 'amarillo
' End If
' textColor = Colors.Black
' clv_productos.Add(CreateListItem(c2.GetString("CAT_GP_NOMBRE"), c2.GetString("CAT_GP_PRECIO"), c2.GetString("CAT_GP_ALMACEN"), clv_productos.AsView.Width, 60dip, bmp, c2.GetString("CAT_GP_ID"), bgColor, textColor), c2.GetString("CAT_GP_NOMBRE"))
' Next
' End If
' c2.Close
End Sub
Private Sub B4XPage_CloseRequest As ResumableSub
' BACK key pressed
' Return True To close, False To cancel
If l_info.Visible Then
l_info.Visible = False
Return False
else if p_vistaPreviaTrans.Visible Then
p_vistaPreviaTrans.Visible = False
Return False
else if lv_promos.visible Then
lv_promos.Visible = False
lv_catalogos.Visible = True
p_botonesVenta.Visible = False
l_total.Visible = False
l_totProds.Visible = False
Return False
else if clv_prods_ll.AsView.Visible Then
lfila.text = "CATALOGO"
clv_prods_ll.AsView.Visible = False
lv_subtipo.Visible = False
p_botonesVenta.Visible = False
l_total.Visible = False
l_totProds.Visible = False
lv_catalogos.Visible = True
Return False
' else if lv_subtipo.Visible Then
' lfila.text = "TIPO"
' lv_subtipo.Visible = False
' lv_tipo.Visible = False
' Return False
' else if lv_tipo.Visible Then
' lfila.text = "CATALOGO"
' lv_tipo.Visible = False
' lv_catalogos.Visible = True
' Return False
else If entro = "4" Then
entro = "3"
B4XPage_Appear
Return True
Else If entro = "3" Then
B4XPages.ShowPage("Cliente")
Return False
Else
B4XPages.ShowPage("Cliente")
Return False
End If
End Sub
Sub b_QR_Click
If ciclo = 1 Then
ciclo = 2
ya_entro = "0"
B4XPage_Appear
else if ciclo = 2 Then
ciclo = 3
ya_entro = "0"
B4XPage_Appear
else if ciclo = 3 Then
ciclo = 4
ya_entro = "0"
B4XPage_Appear
else if ciclo = 4 Then
ciclo = 5
ya_entro = "0"
B4XPage_Appear
else if ciclo = 5 Then
ciclo = 1
ya_entro = "0"
B4XPage_Appear
End If
End Sub
'****************************************************************************
'***************** PARA EL MAS/MENOS *************************************
'****************************************************************************
Sub CreateListItem(Text As String, precioU As String, inv As Int, Width As Int, Height As Int, img As Bitmap, prodId As String, bc As Int, tc As Int) As Panel
' Dim p As B4XView = xui.CreatePanel("")
' p.SetLayoutAnimated(0, 0, 0, Width, Height)
' p.LoadLayout("prodItem")
' p_prods.Color = bc
' l_prodX.TextColor = tc
' l_prodX.TextSize = 15
' p_prods.Height = Height
' l_prodX.Height = Height
' l_prodX.Text = Text&CRLF&"# " & inv & " $ " & precioU
' l_prodX.Tag = $"ID: ${prodId}${CRLF}${Text}${CRLF}Precio: $$1.2{precioU}${CRLF}Inv: ${inv} pzs"$
' l_pCant.Tag = precioU&"|"&inv&"|"&prodId
' et_pCant.Tag = precioU&"|"&inv&"|"&prodId
' et_pCant.BringToFront
' Return p
End Sub
Sub b_prodMenos_Click
etCantHasFocus = False
' LogColor("b_prodMenos_Click", Colors.Magenta)
Dim index As Int = clv_prods_ll.GetItemFromView(Sender)
Dim pnl0 As B4XView = clv_prods_ll.GetPanel(index)
Dim pnl As B4XView = pnl0.GetView(0)
Dim laCant As B4XView = pnl.GetView(2).GetView(2)
' Log($"precio|stock:${laCant.tag}"$)
If laCant.Text = "" Then laCant.Text = 0
' Log("lacant.text="&laCant.text)
laCant.Text = $"${NumberFormat2(laCant.Text-1,0,0,0,False)}"$
If laCant.Text < 0 Then laCant.Text = 0
Private tmpMap As Map = clv_prods_ll.GetValue(index).As(Map)
Private precio As String=clv_prods_ll.GetValue(index).As(Map).Get("precio")
Private id As String=clv_prods_ll.GetValue(index).As(Map).Get("id")
Private tmpMap As Map = CreateMap("precio":precio, "cant":laCant.Text, "almacen":Subs.traeAlmacen)
' Log(tmpMap)
' prodsMap.Put(id, tmpMap)
If laCant.Text = 0 Then prodsMap.Remove(id)
' LogColor("prodsMap="&prodsMap, Colors.blue)
' (Subs.traeAlmacen, p1.Get("precio"), p1.Get("cant"), pn, p, clienteId, Subs.traeFecha, Subs.traeUsuarioDeBD, rutaUsuario, 0, B4XPages.MainPage.tipo_venta)
Subs.actualizaProducto(Subs.traeAlmacen, precio, laCant.text, Subs.traeProdNombre(id), id, clienteId, Subs.traeFecha, Subs.traeUsuarioDeBD, rutaUsuario, 0, B4XPages.MainPage.tipo_venta)
cuentaProds
' Log($"Total Prods: ${totalProds}, Total Compra: $$1.2{totalCompra}"$)
End Sub
Sub b_prodMas_Click
etCantHasFocus = False
' LogColor("b_prodMas_Click", Colors.Magenta)
Dim index As Int = clv_prods_ll.GetItemFromView(Sender)
Dim pnl0 As B4XView = clv_prods_ll.GetPanel(index)
Dim pnl As B4XView = pnl0.GetView(0)
Dim laCant As B4XView = pnl.GetView(2).GetView(2)
' Private tmpMap As Map = clv_prods_ll.GetValue(index).As(Map)
Private precio As String=clv_prods_ll.GetValue(index).As(Map).Get("precio")
Private inv As String=clv_prods_ll.GetValue(index).As(Map).Get("almacen")
If laCant.Text = "" Then laCant.Text = 0
If laCant.Text + 1 <= inv Then
' Log(NumberFormat2(laCant.Text+1,0,0,0,False))
laCant.Text = $"${NumberFormat2(laCant.Text+1,0,0,0,False)}"$
' Private precio As String=clv_prods_ll.GetValue(index).As(Map).Get("precio")
Private id As String=clv_prods_ll.GetValue(index).As(Map).Get("id")
' Private tmpMap As Map = CreateMap("precio":precio, "cant":laCant.Text, "almacen":Subs.traeAlmacen)
' Log(tmpMap)
' prodsMap.Put(id, tmpMap)
' LogColor(prodsMap, Colors.blue)
End If
' Subs.actualizaProducto(Subs.traeAlmacen, laCant.text, id, clienteId)
Subs.actualizaProducto(Subs.traeAlmacen, precio, laCant.text, Subs.traeProdNombre(id), id, clienteId, Subs.traeFecha, Subs.traeUsuarioDeBD, rutaUsuario, 0, B4XPages.MainPage.tipo_venta)
cuentaProds
' Log($"Total Prods: ${totalProds}, Total Compra: $$1.2{totalCompra}"$)
End Sub
Private Sub et_pCant_TextChanged (Old As String, New As String)
'' LogColor($"txt changed: ${Old}|${New}, hasfocus=${etCantHasFocus}"$,Colors.Magenta)
' Dim index As Int = clv_prods_ll.GetItemFromView(Sender)
' Private inv As String=clv_prods_ll.GetValue(index).As(Map).Get("almacen")
' If(New = "" Or New = Null) Then New = 0
' If(New > inv) Then
' Sender.As(EditText).text = inv
' End If
'' Log($"inventario=${inv}"$)
' If Not(Old = "0" And New = "") And etCantHasFocus Then cuentaProds
If etCantHasFocus = True Then
' LogColor($"txt changed: ${Old}|${New}, hasfocus=${etCantHasFocus}"$,Colors.Magenta)
Dim index As Int = clv_prods_ll.GetItemFromView(Sender)
Dim pnl0 As B4XView = clv_prods_ll.GetPanel(index)
Dim pnl As B4XView = pnl0.GetView(0)
Dim laCant As B4XView = pnl.GetView(2).GetView(2)
Private id As String=clv_prods_ll.GetValue(index).As(Map).Get("id")
Private precio As String=clv_prods_ll.GetValue(index).As(Map).Get("precio")
Private inv As String=clv_prods_ll.GetValue(index).As(Map).Get("almacen")
Private inv As String=clv_prods_ll.GetValue(index).As(Map).Get("almacen")
If(New = "" Or New = Null) Then New = 0
If(New > inv) Then
Sender.As(EditText).text = inv
End If
' Log($"inventario=${inv}"$)
If Not(Old = "0" And New = "") And laCant.Text <> Null And laCant.Text <> 0 And laCant.Text <> "" And etCantHasFocus Then
Subs.actualizaProducto(Subs.traeAlmacen, precio, laCant.text, Subs.traeProdNombre(id), id, clienteId, Subs.traeFecha, Subs.traeUsuarioDeBD, rutaUsuario, 0, B4XPages.MainPage.tipo_venta)
cuentaProds
End If
End If
End Sub
Sub cuentaProds
' LogColor($"Productos de la orden: ${c_prods.GetString("cantProds")}, Total: ${c_prodsX.GetString("costoTotal")}"$, Colors.red)
Log("===========================")
Private c As Cursor = Starter.skmt.ExecQuery($"select sum(PE_COSTO_TOT) as total, sum(PE_CANT) as cant from PEDIDO where PE_CLIENTE = '${clienteId}'"$)
' LogColor("TIEMPO cuentaProds =" & ((DateTime.Now-inicioContador)/1000), Colors.Red)
' LogColor(prodsMap, Colors.Magenta)
p_botonesVenta.Visible = True
p_botonesVenta.BringToFront
c.Position=0
Log($"Total Prods: ${c.GetString("cant")}, Total Compra: $$1.2{c.GetString("total")}"$)
c.Close
End Sub
Private Sub et_pCant_FocusChanged (HasFocus As Boolean)
LogColor($"focus changed=${HasFocus}"$, Colors.Magenta)
etCantHasFocus = HasFocus
cuentaProds
End Sub
Sub b_terminar1_Click
' Log("b_terminar1_Click")
' ya_entro = "0" : Log("ya_entro=1")
Starter.skmt.ExecNonQuery2("delete from PEDIDO WHERE PE_PRONOMBRE = ? ", Array As String("N/A") )
lv_promos.Visible = False
clv_prods_ll.AsView.Visible = False
lv_catalogos.Visible = True
lv_prodsPedido.Clear
' lv_prodsPedido.TwoLinesLayout.Label.Height = 50dip
Private c_prods As Cursor=Starter.skmt.ExecQuery("select PE_PRONOMBRE,PE_COSTO_TOT, PE_CANT, PE_FOLIO, PE_CEDIS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_CEDIS, PE_PRONOMBRE")
If c_prods.RowCount > 0 Then
Private cs As CSBuilder
For i=0 To c_prods.RowCount -1
cs.Initialize
c_prods.Position=i
Dim label1 As Label
label1 = lv_prodsPedido.TwoLinesLayout.Label
label1.TextSize = 15
label1.TextColor = Colors.Black
label1.color = Colors.White
Private textColor As Int = Colors.black
If Not(IsNumber(c_prods.GetString("PE_CEDIS"))) Then textColor = Colors.RGB(210,105,30) 'Si es promo, cambiamos el color del texto.
Dim label2 As Label
label2 = lv_prodsPedido.TwoLinesLayout.SecondLabel
label2.TextSize = 15
label2.TextColor = Colors.Blue
lv_prodsPedido.AddTwoLines(cs.Color(textColor).append(c_prods.GetString("PE_PRONOMBRE")).pop,"Cantidad #"& c_prods.GetString("PE_CANT")& " SubTotal $"& c_prods.GetString("PE_COSTO_TOT")& " Folio "& c_prods.GetString("PE_FOLIO"))
folio = c_prods.GetString("PE_FOLIO")
Next
'select PE_PRONOMBRE,PE_COSTO_TOT, PE_CANT, PE_FOLIO, PE_CEDIS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)
c=Starter.skmt.ExecQuery("select sum(PE_CANT) as PC_NOART, sum (PE_COSTO_TOT) as PC_MONTO from PEDIDO where PE_CLIENTE in (Select CUENTA from cuentaa) AND PE_PROID NOT IN (SELECT CAT_PA_ID FROM PROMOS_COMP )")
C.Position=0
l_cant.Text = c.GetString("PC_NOART")
l_total2.Text = c.GetString("PC_MONTO")
c.Close
End If
c_prods.Close
p_vistaPreviaTrans.Width = Root.Width
Subs.centraPanel(p_vistaPrevia, Root.Width)
If Subs.pedidoGuardado Then b_rechazar.Enabled = False Else b_rechazar.Enabled = True
p_vistaPrevia.Visible=True
p_vistaPreviaTrans.Visible=True
End Sub
Private Sub b_continuar_Click
Log("b_continuar_Click")
cuentaProds
Private p1 As Map
For Each p As String In prodsMap.Keys
p1 = prodsMap.Get(p)
Log(p & "|" & p1)
Private pn As String = Subs.traeProdNombre(p)
Subs.guardaProductoSinGestion(Subs.traeAlmacen, p1.Get("precio"), p1.Get("cant"), pn, p, clienteId, Subs.traeFecha, Subs.traeUsuarioDeBD, rutaUsuario, 0, B4XPages.MainPage.tipo_venta)
Next
Log("promos-inv, prods-inv, cat-vis")
lv_promos.Visible = False
clv_prods_ll.AsView.Visible = False
lv_subtipo.Visible = False
lv_tipo.Visible = False
lv_catalogos.Visible = True
Log("Continuar")
Dim m As Map = Subs.traeTotalesClienteActual
prodsPedidoActual = m.Get("productos")
montoPedidoActual = m.Get("monto")
End Sub
Private Sub l_prodX_LongClick
Log("longclic = "&Sender.as(Label).tag)
l_info.Text = Sender.as(Label).tag
l_info.Visible = True
End Sub
Private Sub l_info_Click
l_info.Visible = False
End Sub
Private Sub lv_promos_ItemLongClick (Position As Int, Value As Object)
Log("Promo longclic = "&Value)
Private id As String = ""
Dim c As Cursor = Starter.skmt.ExecQuery($"select CAT_GP_ID from cat_gunaprod where CAT_GP_TIPO = 'PROMOS' and CAT_GP_NOMBRE = '${Value}'"$)
If c.RowCount > 0 Then
c.Position = 0
id = c.GetString("CAT_GP_ID")
End If
l_info.Text = $"ID: ${id}${CRLF}${Value}"$
l_info.Visible = True
End Sub
Private Sub b_buscar_Click
forzarBusqueda = True
Busca_TextChanged("",BUSCA.Text)
End Sub
Private Sub lv_tipo_ItemClick (Position As Int, Value As Object)
' lfila.text = "SUB TIPO"
' lv_tipo.Visible = False
' lv_subtipo.Height = Root.Height * 0.7
' lv_subtipo.Visible = True
' Private c As Cursor = Starter.skmt.ExecQuery2("select distinct CAT_GP_SUBTIPO from cat_gunaprod where CAT_GP_TIPO = ? order by CAT_GP_SUBTIPO", Array As String(Value))
' If c.RowCount > 0 Then
' Dim label1 As Label
' label1 = lv_subtipo.SingleLineLayout.Label
' label1.TextSize = 17
' label1.TextColor = Colors.Black
' lv_subtipo.Clear
' For i=0 To c.RowCount-1
' c.Position=i
' lv_subtipo.AddSingleLine(c.GetString("CAT_GP_SUBTIPO"))
' Next
' End If
' c.Close
End Sub
Private Sub lv_subtipo_ItemClick (Position As Int, Value As Object)
' lfila.text = "SUB TIPO"
' LogColor("Catalogo", Colors.red)
' lv_catalogos.Visible = False
' lv_subtipo.Visible = False
' lv_promos.Visible = False
' lfila.text = "CATALOGO"
' ProgressDialogShow("Cargando catalogo ...")
' Sleep(100)
' Private inicioContador As String = DateTime.Now
' llenaCatalogo(Value)
' clv_prods_ll.AsView.Visible = True
' LogColor("TIEMPO DE PROCESO DEL CATALOGO: " & ((DateTime.Now-inicioContador)/1000), Colors.Red)
' ProgressDialogHide
End Sub
Private Sub p_vistaPreviaTrans_Click
End Sub
Private Sub b_rechazar_Click
If folio <> "" Then
result = Msgbox2($"Seguro que desea borrar el pedido completo?${CRLF}Haciendo clic largo sobre un producto se pueden borrar articulos independientes."$,"Rechazar Pedido", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore
If result = DialogResponse.POSITIVE Then
Subs.borraPedidoClienteActual
prodsMap.Initialize
B4XPages.MainPage.promos.promosMap.Initialize
Log("Llamamos LlenaProdsLL")
LlenaProdsLL(Null)
Log("Positivo")
B4XPages.ShowPage("Cliente")
Else
Log("NO Positivo")
p_vistaPreviaTrans.Visible = False
End If
Else
Msgbox("CLIENTE YA SE TRANSMITIO, FAVOR DE LLAMAR A SOPORTE PARA ASISTENCIA","AVISO") 'ignore
End If
p_vistaPreviaTrans.Visible=False
B4XPages.ShowPage("Cliente")
End Sub
Private Sub b_aceptar_Click
p_vistaPreviaTrans.Visible=False
B4XPages.ShowPage("Cliente")
End Sub
Private Sub lv_prodsPedido_ItemLongClick (Position As Int, Value As Object)
Private sDate,sTime, clie_id, usuario As String
If Not(Subs.pedidoGuardado) Then
result = Msgbox2("Seguro que desea borrar este articulo?","Borrar Articulo", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore
If result = DialogResponse.POSITIVE Then
c=Starter.skmt.ExecQuery2("select PE_PROID,PE_CANT FROM PEDIDO where pe_pronombre = ? and pe_cliente in (Select CUENTA from cuentaa) ", Array As String(Value))
c.Position=0
Log("aqui1")
Starter.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?", Array As Object(c.GetString("PE_CANT"),c.GetString("PE_PROID")))
Starter.skmt.ExecNonQuery2("INSERT INTO INVENT_X_ENVIAR (ALMACEN , PROID , CANTIDAD ) VALUES(?,?,?) ", Array As Object (Subs.traeAlmacen,c.GetString("PE_PROID"),c.GetString("PE_CANT")* -1))
c.Close
Log("aqui2")
c=Starter.skmt.ExecQuery2("select count(*) AS CUANTOS from cat_gunaprod where CAT_GP_ID in (select pe_cedis from pedido where pe_pronombre = ? and pe_cliente in (Select CUENTA from cuentaa)) and CAT_GP_CLASIF = 'PROMOS' AND CAT_GP_TIPO = 'PROMOS' AND CAT_GP_SUBTIPO = 'PROMOS'", Array As String(Value))
c.Position=0
If c.GetString("CUANTOS") > 0 Then
Starter.skmt.ExecNonQuery2("delete from pedido where pe_cedis in (select pe_cedis from pedido where pe_pronombre = ?) and pe_cliente in (Select CUENTA from cuentaa)", Array As Object(Value))
Log("aqui3")
Else
Starter.skmt.ExecNonQuery2("delete from pedido where pe_pronombre = ? and pe_cliente in (Select CUENTA from cuentaa)", Array As Object(Value))
Log("aqui4")
End If
DateTime.DateFormat = "MM/dd/yyyy"
sDate=DateTime.Date(DateTime.Now)
sTime=DateTime.Time(DateTime.Now)
c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa")
c.Position=0
clie_id = c.GetString("CUENTA")
c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
c.Position=0
usuario = c.GetString("USUARIO")
c=Starter.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, count(*) as CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
c.Position=0
If c.GetString("CUANTOS") > 0 Then
Log("aqui5")
Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)")
Starter.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT) VALUES (?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps))
' Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)")
Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)")
Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)")
h =Starter.skmt.ExecQuery("select sum(PE_CANT) as PC_NOART, sum (PE_COSTO_TOT) as PC_MONTO from PEDIDO where PE_CLIENTE in (Select CUENTA from cuentaa) AND PE_PROID NOT IN (SELECT CAT_PA_ID FROM PROMOS_COMP )")
h.Position=0
l_cant.Text = h.GetString("PC_NOART")
l_total2.Text = h.GetString("PC_MONTO")
h.Close
Else
Log("aqui6")
Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)")
Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)")
h =Starter.skmt.ExecQuery("select sum(PE_CANT) as PC_NOART, sum (PE_COSTO_TOT) as PC_MONTO from PEDIDO where PE_CLIENTE in (Select CUENTA from cuentaa) AND PE_PROID NOT IN (SELECT CAT_PA_ID FROM PROMOS_COMP )")
h.Position=0
l_cant.Text = 0
l_total2.Text = 0
h.Close
End If
b_terminar1_Click
End If
Else
ToastMessageShow("Esta venta ya esta guardada, no se puede editar ni borrar.", False)
End If
End Sub
Private Sub clv_prods_ll_ItemClick (Index As Int, Value As Object)
End Sub
Sub l_prodx_click
Dim index As Int = clv_prods_ll.GetItemFromView(Sender)
Private p0 As B4XView = clv_prods_ll.GetPanel(index)
Private p As B4XView = p0.GetView(0)
Private cant1 As B4XView = p.GetView(2).GetView(2)
Dim index As Int = clv_prods_ll.GetItemFromView(Sender)
' Log(clv_prods_ll.GetValue(index))
Log(cant1.Text)
End Sub
Private Sub clv_prods_ll_VisibleRangeChanged (FirstIndex As Int, LastIndex As Int)
' Private inicioContador As String = DateTime.Now
' Log($"clv_prods_ll_VisibleRangeChanged : ${FirstIndex}, ${LastIndex} "$)
Dim ExtraSize As Int = 30 'List size
For i = Max(0, FirstIndex - ExtraSize) To Min(LastIndex + ExtraSize, clv_prods_ll.Size - 1)
Dim Pnl As B4XView = clv_prods_ll.GetPanel(i)
If i > FirstIndex - ExtraSize And i < LastIndex + ExtraSize Then
' Log(listaRenglones)
If Pnl.NumberOfViews = 0 Then 'Add each item/layout to the list/main layout
Pnl.LoadLayout("proditem")
p_prods.Width = Root.Width * 0.92
p_botMasMen.Left = p_prods.Width - (p_botMasMen.Width + 5)
Pnl.Height = p_prods.Height
Private cs As CSBuilder
cs.Initialize
l_prodX.SetTextSizeAnimated(0, 13)
If clv_prods_ll.GetValue(i).As(Map).Get("cant") <> Null And clv_prods_ll.GetValue(i).As(Map).Get("cant") > 0 Then
p_prods.Color=0xFFE2EEFF
et_pCant.TextColor=Colors.Red
If Subs.pedidoGuardado Then
Log("YA SE GUARDO")
et_pCant.Enabled = False
' b_prodMas.Enabled = False
b_prodMenos.Enabled = False
End If
End If
Private precio As String=NumberFormat2(clv_prods_ll.GetValue(i).As(Map).Get("precio").As(Double),1,2,2,False)
If clv_prods_ll.GetValue(i).As(Map).Get("cant") <> Null Then et_pCant.Text = clv_prods_ll.GetValue(i).As(Map).Get("cant")
l_prodX.Text = cs.Color(Colors.red).append(clv_prods_ll.GetValue(i).As(Map).Get("prod")).pop.append(CRLF).Append("Existencias: " & clv_prods_ll.GetValue(i).As(Map).Get("almacen")).Color(0xFF017F01).Append($" $${precio}"$).Popall
End If
' Log($"${i}, ${FirstIndex}, ${LastIndex}, ${Pnl.NumberOfViews}. ${clv_prods_ll.Size}"$)
Else 'Not visible
' If Pnl.NumberOfViews > 0 Then
' Pnl.RemoveAllViews 'Remove none visable item/layouts from the list/main layout
' End If
End If
PCLV.B4XSeekBar1.Value = clv_prods_ll.Size - FirstIndex
' Log($"Bar value: ${PCLV.B4XSeekBar1.Value}"$)
Next
End Sub
Sub Busca_TextChanged (Old As String, New As String)
' Private inicioContador As String = DateTime.Now
If Not(clv_prods_ll.AsView.Visible) Then clv_prods_ll.AsView.Visible = True
If (New.Length = 1 Or New.Length = 2) And Not(forzarBusqueda) Then Return
forzarBusqueda = False
clv_prods_ll.Clear
listaProds.Initialize
listaHints.Initialize
Sleep(0)
Dim p As ResultSet = Starter.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD from CAT_GUNAPROD where CAT_GP_NOMBRE like '%${New}%' and CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_CLASIF <> 'PROMOS' And CAT_GP_TIPOPROD2 <> '2' order by CAT_GP_NOMBRE"$)
Log("Llamamos LlenaProdsLL")
LlenaProdsLL(p)
' Do While p.NextRow
' Dim tempMap As Map = CreateMap("prod":p.GetString("CAT_GP_NOMBRE"), "precio":p.GetString("CAT_GP_PRECIO"), "almacen":p.GetString("CAT_GP_ALMACEN"), "id":p.GetString("CAT_GP_ID"))
' listaProds.Add(tempMap)
' listaHints.Add(p.GetString("CAT_GP_NOMBRE"))
' Dim Pnl As B4XView = xui.CreatePanel("")
' Pnl.SetLayoutAnimated(0, 0, 0, clv_prods_ll.AsView.Width, 50dip) 'Panel height + 4 for drop shadow
' clv_prods_ll.Add(Pnl, tempMap)
' Loop
' LogColor(clv_prods_ll.Size, Colors.red)
'' Log(listaProds)
' p.Close
' PCLV.B4XSeekBar1.MaxValue = clv_prods_ll.Size
' PCLV.B4XSeekBar1.MinValue = 0
' PCLV.B4XSeekBar1.Interval = clv_prods_ll.Size/10
' PCLV.B4XSeekBar1.Value = clv_prods_ll.Size
' PCLV.B4XSeekBar1.Update
' Log($"Min:0, max:${clv_prods_ll.Size}, Interval:${clv_prods_ll.Size/10}"$)
' LogColor("TIEMPO DE PROCESO DEL TEXTCHANGED: " & ((DateTime.Now-inicioContador)/1000), Colors.Red)
End Sub
Sub LlenaProdsLL(p As ResultSet)
' Log("LlenaProdsLL")
listaProds.Initialize
If hayPedido Then 'Si hay pedido obtenemos las cantidades de los productos para agregarlos al CLV.
Dim cantsMap As Map
cantsMap.Initialize
Dim pe As ResultSet = Starter.skmt.ExecQuery($"select PE_PROID, PE_CANT from PEDIDO where PE_CLIENTE = '${clienteId}' and PE_CEDIS = '${Subs.traeAlmacen}'"$)
' LogColor("Ponemos productos de pedido anterior: "&pe.RowCount, Colors.red)
Do While pe.NextRow
Private cant As Int = 0
cantsMap.put(pe.GetString("PE_PROID"), pe.GetString("PE_CANT"))
Loop
pe.Close
End If
' Log(p.IsInitialized)
If p.IsInitialized Then
' Log("YA HAY RESULSET")
Else
' Log("NO HAY RESULSET")
Dim p As ResultSet = Starter.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD from CAT_GUNAPROD where CAT_GP_PRECIO > 0 And CAT_GP_ALMACEN > 0 And CAT_GP_CLASIF <> 'PROMOS' And CAT_GP_TIPOPROD2 <> '2' order by CAT_GP_NOMBRE"$)
End If
Do While p.NextRow
Private cant As Int = 0
If hayPedido And cantsMap.ContainsKey(p.GetString("CAT_GP_ID")) Then cant = cantsMap.Get(p.GetString("CAT_GP_ID"))
Dim tempMap As Map = CreateMap("prod":p.GetString("CAT_GP_NOMBRE"), "precio":p.GetString("CAT_GP_PRECIO"), "almacen":p.GetString("CAT_GP_ALMACEN"), "id":p.GetString("CAT_GP_ID"), "cant":cant)
listaProds.Add(tempMap)
Loop
p.Close
' Log(listaProds)
PCLV.Commit
clv_prods_ll.Clear
Private listaProdsConCant, listaProdsConCantIndex As List
listaProdsConCant.Initialize
listaProdsConCantIndex.Initialize
listaHints.Initialize
For q=0 To listaProds.Size-1' Sacamos los productos con cantidad previa.
If listaProds.Get(q).As(Map).Get("cant").As(Int) <> 0 Then
' Log(listaProds.Get(q).As(Map).Get("cant"))
listaProdsConCant.Add(listaProds.Get(q))
listaProdsConCantIndex.Add(q)
End If
Next
' Log(listaProdsConCantIndex)
Private cont As Int = 0
For pr0=0 To listaProdsConCant.Size - 1 'Agregamos los productos con cantidad previa.
Private Pnl As B4XView = xui.CreatePanel("")
Pnl.SetLayoutAnimated(0, 0, 0, clv_prods_ll.AsView.Width, 50dip)
clv_prods_ll.Add(Pnl, listaProdsConCant.Get(pr0))
listaHints.Add(listaProdsConCant.get(pr0).As(Map).Get("prod"))
cont = cont + 1
Next
' LogColor(clv_prods_ll.Size, Colors.red)
' Log(listaProds.Size)
For pr=0 To listaProds.Size-1
If listaProdsConCantIndex.IndexOf(pr) = -1 Then
Private Pnl As B4XView = xui.CreatePanel("")
Pnl.SetLayoutAnimated(0, 0, 0, clv_prods_ll.AsView.Width, 50dip)
clv_prods_ll.Add(Pnl, listaProds.Get(pr))
listaHints.Add(listaProds.get(pr).As(Map).Get("prod"))
cont = cont + 1
End If
Next
' LogColor(clv_prods_ll.Size, Colors.red)
' PCLV.Commit
' Log("CONT=" & cont)
' Log("CLV_PRODSLL="&clv_prods_ll.Size)
PCLV.B4XSeekBar1.MaxValue = clv_prods_ll.Size
PCLV.B4XSeekBar1.MinValue = 0
PCLV.B4XSeekBar1.Interval = clv_prods_ll.Size/20
PCLV.B4XSeekBar1.Value = clv_prods_ll.Size
PCLV.B4XSeekBar1.Update
' Log($"Min:0, max:${clv_prods_ll.Size}, Interval:${clv_prods_ll.Size/20}"$)
reiniciarlistaProds = False
End Sub
'Return the hint that will be displayed when the user fast scrolls the list. It can be a string or CSBuilder.
Sub PCLV_HintRequested(Index As Int) As Object
Dim word As String = listaHints.get(Index)
Return word
End Sub