Files
Disruptive/B4A/C_Productos.bas
Jose Alberto Guerra Ugalde ffcd98543d - VERSION 5.09.30
- Se corrigio que cuando se entraba a productos a veces se perdian los productos YA seleccionados.
2025-10-01 12:12:34 -06:00

668 lines
24 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
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)
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
ciclo = 1
l_info.Width = Root.Width * 0.8
l_info.Left = (Root.Width/2) - (l_info.Width/2)
' llenaCatalogo(False)
End Sub
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
Sub B4XPage_Appear
prodsMap.Initialize
B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE CAT_GUNAPROD SET CAT_GP_TIPOPROD = (?) WHERE CAT_GP_TIPOPROD = (?) ",Array As Object("PRIORITARIO","1"))
B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE CAT_GUNAPROD SET CAT_GP_TIPOPROD = (?) WHERE CAT_GP_TIPOPROD = (?) ",Array As Object("ESTRATEGICO","2"))
B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE CAT_GUNAPROD SET CAT_GP_TIPOPROD = (?) WHERE CAT_GP_TIPOPROD = (?) ",Array As Object("COMPLEMENTARIO","3"))
B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE CAT_GUNAPROD SET CAT_GP_TIPOPROD = (?) WHERE CAT_GP_TIPOPROD = (?) ",Array As Object("CATALOGO REGULAR","0"))
B4XPages.MainPage.skmt.ExecNonQuery2("UPDATE CAT_GUNAPROD SET CAT_GP_TIPOPROD = (?) WHERE CAT_GP_CLASIF = (?) ",Array As Object("PROMOS","PROMOS"))
' Private left = (Root.Width/2) - ((clv_productos.AsView.Width)/2)
clv_productos.GetBase.SetLayoutAnimated(100, 0dip, 140dip, Root.Width, Root.Height * 0.68) 'Cambiamos el tamaño y posición de la lista de productos
clv_productos.Base_Resize(clv_productos.GetBase.Width, clv_productos.GetBase.Height) 'Cambiamos el tamaño del panel interno de la lista para que ajuste al nuevo tamaño.
' Log($"ya_entro=${ya_entro}, entro=${entro}"$)
If B4XPages.MainPage.bTerminarClicked Then
lv_catalogos.Visible = True
lv_promos.Visible = False
clv_productos.AsView.Visible = False
B4XPages.MainPage.bTerminarClicked = False
End If
If ya_entro <> "1" Then
Log("ya_entro <> 1")
If BUSCA.Text <> "" Then BUSCA.Text =""
entro ="3"
ya_entro = "1" : Log("ya_entro=1")
lv_catalogos.Clear
Sleep(100)
lfila.Text = "CATALOGOS"
p_productos.Height = Root.Height
clv_productos.AsView.Visible = False
lv_catalogos.Visible = True
p_botonesVenta.Visible = False
p_botonesVenta.Top = clv_productos.AsView.top + clv_productos.AsView.Height
lv_promos.Visible = False
End If
Dim label1 As Label
label1 = lv_catalogos.SingleLineLayout.Label
label1.TextSize = 13
label1.TextColor = Colors.Black
lv_catalogos.Clear
lv_catalogos.AddSingleLine("CATALOGO")
c = B4XPages.MainPage.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
llenaCatalogo(True)
End Sub
Sub lv_catalogos_ItemClick (Position As Int, Value As Object)
clv_productos.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" & " | " & marca & " | " & tipo, Colors.red)
c2=B4XPages.MainPage.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=B4XPages.MainPage.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
' lv_catalogos.Clear
lfila.text = "CATALOGO"
' Dim ins As InputStream
' Dim bmp As Bitmap
' Dim jpeg() As Byte
Log("PGS")
ProgressDialogShow("Cargando catalogo ...")
Sleep(100)
Private inicioContador As String = DateTime.Now
llenaCatalogo(False)
clv_productos.AsView.Visible = True
Log("PGH")
LogColor("TIEMPO DE PROCESO DEL CATALOGO: " & ((DateTime.Now-inicioContador)/1000), Colors.Red)
ProgressDialogHide
c2.Close
Else
clv_productos.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 = 13
label1.TextColor = Colors.Black
Dim label2 As Label
label2 = lv_promos.TwoLinesLayout.SecondLabel
label2.TextSize = 13
label2.TextColor = Colors.Black
Dim label13 As Label
label13 = lv_promos.TwoLinesAndBitmap.Label
label13.TextSize = 13
label13.TextColor = Colors.Black
Dim label14 As Label
label14 = lv_promos.TwoLinesAndBitmap.SecondLabel
label14.TextSize = 13
label14.TextColor = Colors.Black
lfila.text = "PROMOS"
' Dim ins As InputStream
' Dim bmp As Bitmap
' Dim jpeg() As Byte
If c2.RowCount > 0 Then
For i=0 To c2.RowCount -1
c2.Position=i
' jpeg = c2.GetBlob("CAT_GP_IMG")
' ins.InitializeFromBytesArray(jpeg, 0, jpeg.Length)
' bmp.Initialize2(ins)
' ListView1.AddTwoLinesAndBitmap(c2.GetString("CAT_GP_NOMBRE"),"# " & c2.GetString("CAT_GP_ALMACEN") & " $ " & c2.GetString("CAT_GP_PRECIO"),bmp)
Private tm As Map = Subs.procesaPromocion(c2.GetString("CAT_GP_ID"), Subs.traeCliente)
Log($"TM=${tm}"$)
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"
' Else If entro = "4" Then
' Log("Entro = 4")
' B4XPages.MainPage.skmt.ExecNonQuery("delete from PROID")
' B4XPages.MainPage.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 Sub
Sub lv_promos_ItemClick (Position As Int, Value As Object)
clv_productos.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
LogColor("Promos YYY", Colors.red)
c2=B4XPages.MainPage.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))
clv_productos.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 = 13
label1.TextColor = Colors.Black
Dim label2 As Label
label2 = lv_promos.TwoLinesLayout.SecondLabel
label2.TextSize = 13
label2.TextColor = Colors.Black
Dim label13 As Label
label13 = lv_promos.TwoLinesAndBitmap.Label
label13.TextSize = 13
label13.TextColor = Colors.Black
Dim label14 As Label
label14 = lv_promos.TwoLinesAndBitmap.SecondLabel
label14.TextSize = 13
label14.TextColor = Colors.Black
lfila.text = "PROMOS"
' Dim ins As InputStream
' Dim bmp As Bitmap
' Dim jpeg() As Byte
If c2.RowCount > 0 Then
For i=0 To c2.RowCount -1
c2.Position=i
' jpeg = c2.GetBlob("CAT_GP_IMG")
' ins.InitializeFromBytesArray(jpeg, 0, jpeg.Length)
' bmp.Initialize2(ins)
' ListView1.AddTwoLinesAndBitmap(c2.GetString("CAT_GP_NOMBRE"),"# " & c2.GetString("CAT_GP_ALMACEN") & " $ " & c2.GetString("CAT_GP_PRECIO"),bmp)
Private tm As Map = Subs.procesaPromocion(c2.GetString("CAT_GP_ID"), Subs.traeCliente)
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
entro = "4"
Else If entro = "4" Then
Log("Entro = 4")
B4XPages.MainPage.skmt.ExecNonQuery("delete from PROID")
B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO PROID VALUES (?)", Array As Object(Value))
Dim promos As C_Promos = B4XPages.GetPage("Promos")
promos.laPromo = Subs.traePromoIdDeBD.Get("id")
Log(promos.laPromo)
promos.elCliente = Subs.traeUsuarioDeBD
B4XPages.ShowPage("Promos")
End If
End Sub
Sub llenaCatalogo(limpiar As Boolean)
Log("LlenaCatalogo")
If limpiar Then clv_productos.Clear
Private c2 As Cursor
Private cp As Cursor = B4XPages.MainPage.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_ID in (select pe_proid from pedido where pe_cliente = '${Subs.traeCliente}')"$)
c2 = B4XPages.MainPage.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'
and CAT_GP_ID not in (select pe_proid from pedido where pe_cliente = '${Subs.traeCliente}')
order by
Case CAT_GP_TIPOPROD when 'PRIORITARIO' THEN 0
WHEN 'ESTRATEGICO' THEN 1
WHEN 'COMPLEMENTARIO' then 2
Else 3
End, CAT_GP_NOMBRE"$)
Private bgColor, textColor As Int
Private cuantosProds = cp.RowCount + c2.RowCount
If cp.RowCount > 0 And clv_productos.Size <> cuantosProds Then
clv_productos.Clear : Log("limpiamos productos")
For i=0 To cp.RowCount -1
cp.Position=i
If cp.GetString("CAT_GP_TIPOPROD") = "PRIORITARIO" Then
bgColor = Colors.RGB(255, 212, 163) 'naranja
Else If cp.GetString("CAT_GP_TIPOPROD") = "COMPLEMENTARIO" Then
bgColor = Colors.RGB(177, 200, 249)'azul
else If cp.GetString("CAT_GP_TIPOPROD") = "CATALOGO REGULAR" Then
bgColor = Colors.White
else If cp.GetString("CAT_GP_TIPOPROD") = "ESTRATEGICO" Then
bgColor = Colors.RGB(241, 255, 163) 'amarillo
End If
textColor = Colors.Black
clv_productos.Add(CreateListItem(cp.GetString("CAT_GP_NOMBRE"), cp.GetString("CAT_GP_PRECIO"), cp.GetString("CAT_GP_ALMACEN"), clv_productos.AsView.Width, 50dip, bmp, cp.GetString("CAT_GP_ID"), bgColor, textColor), cp.GetString("CAT_GP_NOMBRE"))
Next
End If
If c2.RowCount > 0 And clv_productos.Size <> cuantosProds 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, 50dip, bmp, c2.GetString("CAT_GP_ID"), bgColor, textColor), c2.GetString("CAT_GP_NOMBRE"))
Next
End If
ponProdsEnCero
cp.Close
c2.Close
End Sub
Private Sub B4XPage_CloseRequest As ResumableSub
' BACK key pressed
' Return True To close, False To cancel
' ya_entro ="0" : Log("ya_entro=0")
If lv_catalogos.visible = True Then
B4XPages.ShowPage("Cliente")
Return False
ELSE If l_info.Visible Then
l_info.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_productos.AsView.Visible Then
clv_productos.AsView.Visible = False
lv_catalogos.Visible = True
p_botonesVenta.Visible = False
l_total.Visible = False
l_totProds.Visible = False
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 BUSCA_TextChanged (Old As String, New As String)
q_buscar = "%" & BUSCA.Text & "%"
Log($"old=${Old}, new=|${New}|"$)
Private bgColor, textColor As Int
Private se As Cursor
If New.Length > 2 Or forzarbusqueda Then
forzarbusqueda = False
Log("searching")
se=B4XPages.MainPage.skmt.ExecQuery2("select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD, CAT_GP_IMG from cat_gunaprod where CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_NOMBRE like ? and CAT_GP_CLASIF <> ?", Array As String(q_buscar,"PROMOS")) ' order by CAT_GP_NOMBRE asc
' lv_catalogos.Clear
lv_catalogos.Visible = False
lv_promos.Visible = False
clv_productos.AsView.Visible = True
clv_productos.Clear
If se.RowCount > 0 Then
If se.RowCount > 50 Then ProgressDialogShow("Buscando productos")
Sleep(100)
For i=0 To se.RowCount -1
se.Position=i
If se.GetString("CAT_GP_TIPOPROD") = "PRIORITARIO" Then
bgColor = Colors.RGB(255, 212, 163) 'naranja
Else If se.GetString("CAT_GP_TIPOPROD") = "COMPLEMENTARIO" Then
bgColor = Colors.RGB(177, 200, 249)'azul
else If se.GetString("CAT_GP_TIPOPROD") = "CATALOGO REGULAR" Then
bgColor = Colors.White
else If se.GetString("CAT_GP_TIPOPROD") = "ESTRATEGICO" Then
bgColor = Colors.RGB(241, 255, 163) 'amarillo
End If
textColor = Colors.Black
clv_productos.Add(CreateListItem(se.GetString("CAT_GP_NOMBRE"), se.GetString("CAT_GP_PRECIO"), se.GetString("CAT_GP_ALMACEN"), clv_productos.AsView.Width, 50dip, bmp, se.GetString("CAT_GP_ID"), bgColor, textColor), se.GetString("CAT_GP_NOMBRE"))
Next
If se.RowCount > 50 Then ProgressDialogHide
ponProdsEnCero
End If
se.Close
entro= "4"
Else If New.Length <= 2 Then
llenaCatalogo(True)
End If
End Sub
Sub b_QR_Click
If ciclo = 1 Then
ciclo = 2
' b_qr.Visible = False
ya_entro = "0"
'entro = 3
B4XPage_Appear
else if ciclo = 2 Then
ciclo = 3
' ya_entro = 0
ya_entro = "0"
B4XPage_Appear
' b_qr.Visible = False
else if ciclo = 3 Then
ciclo = 4
' ya_entro = 0
ya_entro = "0"
B4XPage_Appear
' b_qr.Visible = False
else if ciclo = 4 Then
ciclo = 5
' ya_entro = 0
ya_entro = "0"
B4XPage_Appear
' b_qr.Visible = False
else if ciclo = 5 Then
ciclo = 1
' ya_entro = 0
ya_entro = "0"
B4XPage_Appear
' b_qr.Visible = False
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.Text = Text&CRLF&"# " & inv & " $ " & precioU
l_prodX.Tag = $"ID: ${prodId}${CRLF}${Text}${CRLF}Precio: $$1.2{precioU}${CRLF}Inv: ${inv} pzs"$
' l_pCant.Text = 0
l_pCant.Tag = precioU&"|"&inv&"|"&prodId
et_pCant.Tag = precioU&"|"&inv&"|"&prodId
' Log(l_pCant.Tag)
et_pCant.BringToFront
' i_prod.Bitmap = img
Return p
End Sub
Sub b_prodMenos_Click
etCantHasFocus = False
LogColor("b_prodMenos_Click", Colors.Magenta)
Dim index As Int = clv_productos.GetItemFromView(Sender)
Dim pnl0 As B4XView = clv_productos.GetPanel(index)
Dim pnl As B4XView = pnl0.GetView(0)
Dim laCant As B4XView = pnl.GetView(2).GetView(3)
' Log($"precio|stock:${laCant.tag}"$)
If laCant.Text = "" Then laCant.Text = 0
laCant.Text = $"$1.0{laCant.Text-1}"$
If laCant.Text < 0 Then laCant.Text = 0
' Dim chk As B4XView = pnl.GetView(2)
cuentaProds
End Sub
Sub b_prodMas_Click
etCantHasFocus = False
LogColor("b_prodMas_Click", Colors.Magenta)
Dim index As Int = clv_productos.GetItemFromView(Sender)
Dim pnl0 As B4XView = clv_productos.GetPanel(index)
Dim pnl As B4XView = pnl0.GetView(0)
Dim laCant As B4XView = pnl.GetView(2).GetView(3)
' Log($"precio|stock:${laCant.tag}"$)
' Log($"Indice: ${index}, cant:${laCant.Text+1}, precioU: ${laCant.tag}"$)
Dim esteTag As List = Regex.Split("\|", laCant.Tag)
' Log(laCant.Tag&"|"&esteTag)
If laCant.Text = "" Then laCant.Text = 0
If laCant.Text + 1 <= esteTag.get(1) Then
laCant.Text = $"$1.0{laCant.Text+1}"$
cuentaProds
End If
' 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)
If Not(Old = "0" And New = "") And etCantHasFocus Then cuentaProds
End Sub
Sub cuentaProds
totalProds = 0
totalCompra = 0
' Private inicioContador As String = DateTime.Now
For i = 0 To clv_productos.GetSize - 1
Private p0 As B4XView = clv_productos.GetPanel(i)
Private p As B4XView = p0.GetView(0)
Private cant1 As B4XView = p.GetView(2).GetView(3)
If cant1.Text = "" Then cant1.Text = 0
' Private cant2 As Int = 0
' If cant1.Text <> "" Then cant2 = cant1.Text
totalProds = totalProds + cant1.Text
Private esteTag As List = Regex.Split("\|", cant1.Tag)
If cant1.Text > esteTag.Get(1) Then cant1.Text = esteTag.Get(1)
If cant1.Text > 0 Then
Log(esteTag.Get(2) & "|" & cant1.Text)
totalCompra = totalCompra + (esteTag.get(0) * cant1.text)
Log($"Cant: ${cant1.Text}, Suma: ${totalCompra}"$)
Private m As Map
m=CreateMap("cant":cant1.Text, "precio":esteTag.get(0))
prodsMap.Put(esteTag.Get(2), m)
Else
prodsMap.Remove(esteTag.Get(2))
End If
l_total.Visible = True
l_totProds.Visible = True
l_total.Text = $"Total: $$1.2{totalCompra}"$
l_totProds.text = $"Prods: ${totalProds}"$
Next
' LogColor("TIEMPO cuentaProds -=" & ((DateTime.Now-inicioContador)/1000), Colors.Red)
LogColor(prodsMap, Colors.blue)
p_botonesVenta.Visible = True
Log($"Total Prods: ${totalProds}, Total Compra: $$1.2{totalCompra}"$)
End Sub
Sub ponProdsEnCero
Private inicioContador As String = DateTime.Now
Private prodsVendidosList As List
prodsVendidosList.Initialize
Private pr As Cursor = B4XPages.MainPage.skmt.ExecQuery($"Select PE_PROID from PEDIDO where PE_CLIENTE='${Subs.traeCliente}'"$)
If pr.RowCount > 0 Then
pr.Position = 0
For i = 0 To pr.RowCount - 1
pr.Position = i
prodsVendidosList.Add(pr.GetString("PE_PROID"))
Next
End If
pr.Close
Log("prodsVendidos="&prodsVendidosList)
For i = 0 To clv_productos.GetSize - 1
Private p0 As B4XView = clv_productos.GetPanel(i)
Private lVendido As B4XView = p0.GetView(1) 'Label l_vendido
Private pProds As B4XView = p0.GetView(0) 'Panel p_prods
Private cant1 As B4XView = pProds.GetView(2).GetView(3)
Private x() As String = Regex.Split("\|", cant1.tag) 'El ultimo dato de cant1.tag es el id del producto.
If prodsVendidosList.IndexOf(x(x.Length-1)) > -1 Then 'Revisamos si el producto es en la tabla "PEDIDO".
lVendido.Visible = True
pProds.GetView(2).As(Panel).Visible = False
Else
lVendido.Visible = False
pProds.GetView(2).As(Panel).Visible = True
End If
cant1.Text = 0
Next
LogColor("TIEMPO DE PROCESO DEL PONEMOSENCERO: " & ((DateTime.Now-inicioContador)/1000), Colors.Red)
Log("Ponems en CERO")
End Sub
Private Sub et_pCant_FocusChanged (HasFocus As Boolean)
' LogColor($"focus changed=${HasFocus}"$, Colors.Magenta)
etCantHasFocus = HasFocus
cuentaProds
End Sub
Private Sub b_terminar1_Click
Log("b_terminar1_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.guardaProducto(Subs.traeAlmacen, p1.Get("precio"), p1.Get("cant"), pn, p, Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, B4XPages.MainPage.tipo_venta)
Next
ya_entro = "0" : Log("ya_entro=1")
lv_promos.Visible = False
clv_productos.AsView.Visible = False
lv_catalogos.Visible = True
Log("Terminar")
' clv_productos.Clear
ponProdsEnCero
prodsMap.Initialize
B4XPages.ShowPage("Cliente")
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)
If pn <> "N/A" Then
Subs.guardaProducto(Subs.traeAlmacen, p1.Get("precio"), p1.Get("cant"), pn, p, Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, B4XPages.MainPage.tipo_venta)
End If
Next
Log("promos-inv, prods-inv, cat-vis")
lv_promos.Visible = False
clv_productos.AsView.Visible = False
lv_catalogos.Visible = True
' clv_productos.Clear
ponProdsEnCero
prodsMap.Initialize
Log("Continuar")
' Activity_KeyPress(KeyCodes.KEYCODE_BACK)
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 = B4XPages.MainPage.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("","")
End Sub