B4A=true
Group=Default Group
ModulesStructureVersion=1
Type=Class
Version=11.5
@EndOfDesignText@
Sub Class_Globals
	Private Root As B4XView
	Private xui As XUI
	Private pnlPantallaCompleta As Panel
	Private lblFijosRequeridos As Label
	Private lblVariablesRequeridas1 As Label
	Private lblVariablesRequeridas2 As Label
	Private lblVariablesRequeridas3 As Label
	Private etLimiteSuma_Sub_pnl1 As Label
	Private etLimiteSuma_Sub_pnl2 As Label
	Private etLimiteSuma_Sub_pnl3 As Label
	Private etLimiteSuma_Sub_pnl4 As Label
	Private scrollView As ScrollView
	Private pnlFijos As Panel
	Private pnlVariables1 As Panel
	Private pnlVariables2 As Panel
	Private pnlVariables3 As Panel
'	Private panelHeight As Int = 60dip
	
	Private pnlMaxPromo As Panel
	Private lblPromocion As Label
	Private lblMaxPromo As Label
	Private btnMenosPromo As Button
	Private lblSumPromo As Label
	Private btnSumaPromo As Button
	Private btnGuardaPromo As Button
	Private btnContinuar As Button
	
	Private pnlProdTot As Panel
	Private lblTotProd As Label
	Private lblSumaTotal As Label
	Private lblTotalProdPromo As Label
	Private lblTotalValor As Label
	Private lblNomPromo As Label
	
	Dim estaPromo, esteCliente As String
'	Dim tpf2 As Int = 0
	Dim laPromo = "", elCliente = "" As String
	Dim prodsPedidoActual As String
	Dim montoPedidoActual As String
	Dim promosMap As Map
'	Dim prodsVarReq As Int = 0
'	Dim prodsVarReq_ As Int = 0
'	Dim prodsVarReq2_ As Int = 0
	
	Dim productosFijos As Int
	Dim variablesRequeridas1 As Int
	Dim variablesRequeridas2 As Int
	Dim variablesRequeridas3 As Int
	Dim productosFijos_Iniciales As Int
	Dim variablesRequeridas1_Inicial As Int
	Dim variablesRequeridas2_Inicial As Int
	Dim variablesRequeridas3_Inicial As Int
	
	Private sumaVar1Tot As Int = 0
	Private sumaVar2Tot As Int = 0
	Private sumaVar3Tot As Int = 0
	Dim Encabezado As String
'	Dim etVar1HasFocus As Boolean = False
'	Dim etVar2HasFocus As Boolean = False
'	Dim etVar3HasFocus As Boolean = False

'	Dim lblNombre As Label
End Sub

Public Sub Initialize As Object
	Return Me
End Sub

Private Sub B4XPage_Created (Root1 As B4XView)
	Root = Root1
	Dim pnlProdTotHeight As Int = 80dip
	
	ObtenerVariablesRequeridas(estaPromo)
	ObtenerFijos(estaPromo)
	
	pnlMaxPromo = xui.CreatePanel("pnlMaxPromo")
	pnlMaxPromo.SetLayoutAnimated(0, 0, 0, Root.Width, 100dip)
	pnlMaxPromo.Color = xui.Color_LightGray
	Root.AddView(pnlMaxPromo, 0, 0, Root.Width, 100dip)

	lblPromocion.Initialize("lblPromocion")
	lblPromocion.TextSize = 14
	lblPromocion.TextColor = Colors.RGB(100,149,237)
	lblPromocion.Gravity = Gravity.CENTER_VERTICAL
	Dim lblPromocionWidth As Int = 180dip
	lblPromocion.Text = "Max promos: "
	pnlMaxPromo.AddView(lblPromocion, 10dip, 10dip, lblPromocionWidth, 30dip)

	lblMaxPromo.Initialize("lblMaxPromo")
	lblMaxPromo.TextSize = 16
	lblMaxPromo.TextColor = xui.Color_Black
	lblMaxPromo.Gravity = Gravity.CENTER
	lblMaxPromo.Color = xui.Color_White
	Dim lblMaxPromoWidth As Int = 40dip
	pnlMaxPromo.AddView(lblMaxPromo, lblPromocion.Left + lblPromocion.Width, 10dip, lblMaxPromoWidth, 30dip)

	btnMenosPromo.Initialize("btnMenosPromo")
	btnMenosPromo.Text = "-"
	btnMenosPromo.TextSize = 16
	btnMenosPromo.Color = Colors.RGB(185, 106, 106)
	btnMenosPromo.TextColor = xui.Color_White
	Dim btnMenosPromoWidth As Int = 30dip
	pnlMaxPromo.AddView(btnMenosPromo, lblMaxPromo.Left + lblMaxPromo.Width + 10dip, 10dip, btnMenosPromoWidth, 30dip)

	lblSumPromo.Initialize("lblSumPromo")
	lblSumPromo.TextSize = 16
	lblSumPromo.TextColor = xui.Color_Black
	lblSumPromo.Gravity = Gravity.CENTER
	lblSumPromo.Color = xui.Color_White
	Dim lblSumPromoWidth As Int = 40dip
	pnlMaxPromo.AddView(lblSumPromo, btnMenosPromo.Left + btnMenosPromo.Width + 10dip, 10dip, lblSumPromoWidth, 30dip)

	btnSumaPromo.Initialize("btnSumaPromo")
	btnSumaPromo.Text = "+"
	btnSumaPromo.TextSize = 16
	btnSumaPromo.Color = Colors.RGB(133, 185, 106)
	btnSumaPromo.TextColor = xui.Color_White
	Dim btnSumaPromoWidth As Int = 30dip
	pnlMaxPromo.AddView(btnSumaPromo, lblSumPromo.Left + lblSumPromo.Width + 10dip, 10dip, btnSumaPromoWidth, 30dip)

	Dim lblNomPromo As Label
	lblNomPromo.Initialize("lblNomPromo")
	lblNomPromo.TextSize = 14
	lblNomPromo.TextColor = xui.Color_Black
	lblNomPromo.Gravity = Gravity.CENTER_VERTICAL
	pnlMaxPromo.AddView(lblNomPromo, 10dip, 50dip, 100%x, 50dip)

	pnlPantallaCompleta = xui.CreatePanel("pnlPantallaCompleta")
	pnlPantallaCompleta.SetLayoutAnimated(0, 0, pnlMaxPromo.Height, Root.Width, Root.Height - pnlMaxPromo.Height - pnlProdTotHeight)
	Root.AddView(pnlPantallaCompleta, 0, pnlMaxPromo.Height, Root.Width, Root.Height - pnlMaxPromo.Height - pnlProdTotHeight)

	pnlProdTot.Initialize("pnlProdTot")
	pnlProdTot.Color = xui.Color_White
	Root.AddView(pnlProdTot, 0, Root.Height - pnlProdTotHeight, Root.Width, pnlProdTotHeight)

	lblTotProd.Initialize("lblTotProd")
	lblTotProd.Text = "Productos: "
	lblTotProd.TextSize = 14
	lblTotProd.TextColor = xui.Color_Black
	pnlProdTot.AddView(lblTotProd, 10dip, 10dip, 100dip, 30dip)

	lblSumaTotal.Initialize("lblSumaTotal")
	lblSumaTotal.Text = "0"
	lblSumaTotal.TextSize = 14
	lblSumaTotal.TextColor = xui.Color_Blue
	pnlProdTot.AddView(lblSumaTotal, lblTotProd.Left + lblTotProd.Width + 10dip, 10dip, 60dip, 30dip)

	lblTotalProdPromo.Initialize("lblTotalProdPromo")
	lblTotalProdPromo.Text = "Total: $"
	lblTotalProdPromo.TextSize = 14
	lblTotalProdPromo.TextColor = xui.Color_Black
	pnlProdTot.AddView(lblTotalProdPromo, 10dip, 50dip, 100dip, 30dip)

	lblTotalValor.Initialize("lblTotalValor")
	lblTotalValor.Text = "0"
	lblTotalValor.TextSize = 14
	lblTotalValor.TextColor = xui.Color_Blue
	pnlProdTot.AddView(lblTotalValor, lblTotalProdPromo.Left + lblTotalProdPromo.Width + 10dip, 50dip, 100dip, 30dip)

	btnGuardaPromo.Initialize("btnGuardaPromo")
	btnGuardaPromo.Text = "Terminar"
	btnGuardaPromo.Color = Colors.RGB(106, 162, 185)
	btnGuardaPromo.TextColor = xui.Color_White
	btnGuardaPromo.Enabled = False

	Dim btnWidth As Int = pnlProdTot.Width * 0.25
	Dim btnHeight As Int = 50dip

	pnlProdTot.AddView(btnGuardaPromo, pnlProdTot.Width - btnWidth, (pnlProdTot.Height - btnHeight) / 2, btnWidth, btnHeight)

	btnContinuar.Initialize("btnContinuar")
	btnContinuar.Text = "Continuar"
	btnContinuar.Color = Colors.RGB(133, 185, 106)
	btnContinuar.TextColor = xui.Color_White
	btnContinuar.Enabled = False

	Dim btnWidth As Int = pnlProdTot.Width * 0.25
	Dim btnHeight As Int = 50dip

	Dim separacion As Int = 5dip
	pnlProdTot.AddView(btnContinuar, pnlProdTot.Width - btnWidth * 2 - separacion, (pnlProdTot.Height - btnHeight) / 2, btnWidth, btnHeight)

	scrollView.Initialize(1000)
	pnlPantallaCompleta.AddView(scrollView, 0, 0, pnlPantallaCompleta.Width, pnlPantallaCompleta.Height)

	Dim pnlContainer As Panel
	pnlContainer.Initialize("pnlContainer")
	scrollView.Panel.AddView(pnlContainer, 0, 0, pnlPantallaCompleta.Width, 10000000dip)

	lblFijosRequeridos.Initialize("lblFijosRequeridos")
	lblFijosRequeridos.TextColor = xui.Color_Black
	lblFijosRequeridos.TextSize = 12
	lblFijosRequeridos.Color = xui.Color_LightGray
	lblFijosRequeridos.Gravity = Gravity.CENTER
	lblFijosRequeridos.SingleLine = True
	
	pnlFijos.Initialize("pnlFijos")
	pnlContainer.AddView(pnlFijos, 5dip, lblFijosRequeridos.Top + lblFijosRequeridos.Height + 10dip, pnlContainer.Width - 10dip, 100dip)
	pnlFijos.Color = xui.Color_White
	pnlFijos.Tag = "pnlFijos"

	lblVariablesRequeridas1.Initialize("lblVariablesRequeridas1")
	lblVariablesRequeridas1.TextColor = xui.Color_Black
	lblVariablesRequeridas1.TextSize = 12
	lblVariablesRequeridas1.Color = xui.Color_LightGray
	lblVariablesRequeridas1.Gravity = Gravity.CENTER
	lblVariablesRequeridas1.SingleLine = True
	
	pnlVariables1.Initialize("pnlVariables1")
	pnlContainer.AddView(pnlVariables1, 5dip, lblVariablesRequeridas1.Top + lblVariablesRequeridas1.Height + 10dip, pnlContainer.Width - 10dip, 100dip)
	pnlVariables1.Color = xui.Color_White
	pnlVariables1.Tag = "pnlVariables1"

	lblVariablesRequeridas2.Initialize("lblVariablesRequeridas2")
	lblVariablesRequeridas2.TextSize = 12
	lblVariablesRequeridas2.Color = xui.Color_LightGray
	lblVariablesRequeridas2.Gravity = Gravity.CENTER
	lblVariablesRequeridas2.TextColor = xui.Color_Black
	lblVariablesRequeridas2.SingleLine = True
	
	pnlVariables2.Initialize("pnlVariables2")
	pnlContainer.AddView(pnlVariables2, 5dip, lblVariablesRequeridas2.Top + lblVariablesRequeridas2.Height + 10dip, pnlContainer.Width - 10dip, 100dip)
	pnlVariables2.Color = xui.Color_White
	pnlVariables2.Tag = "pnlVariables2"

	etLimiteSuma_Sub_pnl1.Initialize("etLimiteSuma_Sub_pnl1")
	etLimiteSuma_Sub_pnl1.TextColor = xui.Color_Black
	etLimiteSuma_Sub_pnl1.SingleLine = True

	etLimiteSuma_Sub_pnl2.Initialize("etLimiteSuma_Sub_pnl2")
	etLimiteSuma_Sub_pnl2.TextColor = xui.Color_Black
	etLimiteSuma_Sub_pnl2.SingleLine = True
	
	etLimiteSuma_Sub_pnl3.Initialize("etLimiteSuma_Sub_pnl3")
	etLimiteSuma_Sub_pnl3.TextColor = xui.Color_Black
	etLimiteSuma_Sub_pnl3.SingleLine = True
	
	Dim anchoTotal As Int = pnlContainer.Width - 20dip
	Dim ancholblFijosRequeridos As Int = anchoTotal * 0.65
	Dim anchoEtLimiteSuma As Int = anchoTotal - ancholblFijosRequeridos
	
	pnlContainer.AddView(lblFijosRequeridos, 10dip, 10dip, ancholblFijosRequeridos, 50dip)
	pnlContainer.AddView(etLimiteSuma_Sub_pnl1, lblFijosRequeridos.Left + lblFijosRequeridos.Width + 10dip, 10dip, anchoEtLimiteSuma, 50dip)

	pnlContainer.AddView(lblVariablesRequeridas1, 10dip, lblFijosRequeridos.Top + lblFijosRequeridos.Height + 10dip, ancholblFijosRequeridos, 50dip)
	pnlContainer.AddView(etLimiteSuma_Sub_pnl2, lblVariablesRequeridas1.Left + lblVariablesRequeridas1.Width + 10dip, lblVariablesRequeridas1.Top, anchoEtLimiteSuma, 50dip)

	pnlContainer.AddView(lblVariablesRequeridas2, 10dip, lblVariablesRequeridas1.Top + lblVariablesRequeridas1.Height + 10dip, ancholblFijosRequeridos, 50dip)
	pnlContainer.AddView(etLimiteSuma_Sub_pnl3, lblVariablesRequeridas2.Left + lblVariablesRequeridas2.Width + 10dip, lblVariablesRequeridas2.Top, anchoEtLimiteSuma, 50dip)

	lblVariablesRequeridas3.Initialize("lblVariablesRequeridas3")
	lblVariablesRequeridas3.TextSize = 12
	lblVariablesRequeridas3.Color = xui.Color_LightGray
	lblVariablesRequeridas3.Gravity = Gravity.CENTER
	lblVariablesRequeridas3.TextColor = xui.Color_Black
	lblVariablesRequeridas3.SingleLine = True

	etLimiteSuma_Sub_pnl4.Initialize("etLimiteSuma_Sub_pnl4")
	etLimiteSuma_Sub_pnl4.TextColor = xui.Color_Black
	etLimiteSuma_Sub_pnl4.SingleLine = True

	pnlVariables3.Initialize("pnlVariables3")
	pnlContainer.AddView(pnlVariables3, 5dip, lblVariablesRequeridas3.Top + lblVariablesRequeridas3.Height + 10dip, pnlContainer.Width - 10dip, 100dip)
	pnlVariables3.Color = xui.Color_White
	pnlVariables3.Tag = "pnlVariables3"

	pnlContainer.AddView(lblVariablesRequeridas3, 10dip, lblVariablesRequeridas2.Top + lblVariablesRequeridas2.Height + 10dip, ancholblFijosRequeridos, 50dip)
	pnlContainer.AddView(etLimiteSuma_Sub_pnl4, lblVariablesRequeridas3.Left + lblVariablesRequeridas3.Width + 10dip, lblVariablesRequeridas3.Top, anchoEtLimiteSuma, 50dip)

	If VerificarCondicionesParabtnGuardaPromo Then
		btnGuardaPromo.Visible = True
	Else
		btnGuardaPromo.Visible = False
	End If
	B4XPage_Appear
	AjustarScroll
End Sub

Private Sub B4XPage_Appear
	lblFijosRequeridos.Text = "0"
	lblVariablesRequeridas1.Text = "0"
	lblVariablesRequeridas2.Text = "0"
	lblVariablesRequeridas3.Text = "0"
	
	lblSumaTotal.Text = "0"
	
	productosFijos = 0
	variablesRequeridas1= 0
	variablesRequeridas2= 0
	variablesRequeridas3= 0

	sumaVar1Tot = 0
	sumaVar2Tot = 0
	sumaVar3Tot = 0

	If pnlFijos.IsInitialized Then pnlFijos.RemoveAllViews
	If pnlVariables1.IsInitialized Then pnlVariables1.RemoveAllViews
	If pnlVariables2.IsInitialized Then pnlVariables2.RemoveAllViews
	If pnlVariables3.IsInitialized Then pnlVariables3.RemoveAllViews

	btnGuardaPromo.Visible = False

	Dim m As Map = Subs.traeTotalesClienteActual
	prodsPedidoActual = m.Get("productos")
	montoPedidoActual = m.Get("monto")

	If laPromo <> "" Then
		muestraPromo(laPromo, elCliente)
	End If

	ObtenerVariablesRequeridas(estaPromo)
	ObtenerFijos(estaPromo)
	
	ActualizarTotalValor
	CalcularTotalVariables
	CalcularTotalFijos

	lblSumaTotal.Text = SumarFijos + SumarVariables1 +SumarVariables2 + SumarVariables3

	ActualizarVisibilidadBtnGuardaPromo

	AjustarScroll

	scrollView.ScrollPosition = 0
End Sub

Private Sub ObtenerFijos(promo As String)
	Dim cursorProductosFijos As Cursor = Starter.skmt.ExecQuery($"SELECT CAT_DP_PZAS FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID = '${promo}' AND CAT_DP_TIPO = '0'"$)
	If cursorProductosFijos.RowCount > 0 Then
		cursorProductosFijos.Position = 0
		If cursorProductosFijos.GetInt("CAT_DP_PZAS") <> 0 And cursorProductosFijos.GetString("CAT_DP_PZAS") <> " " Then
			productosFijos = cursorProductosFijos.GetInt("CAT_DP_PZAS")
		Else
			lblFijosRequeridos.Visible = False
			etLimiteSuma_Sub_pnl1.Visible = False
			pnlFijos.Visible = False
		End If
	Else
		productosFijos = 0
	End If
	productosFijos_Iniciales = productosFijos
End Sub

Private Sub ObtenerVariablesRequeridas(promo As String)
	Log("Esto es promo: " & promo)
	Dim cursorVariablesReq As Cursor = Starter.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_STS AS CAT_GP_VAR1REQ, CAT_GP_IMP1 AS CAT_GP_VAR2REQ, CAT_GP_VARREQ3 from cat_gunaprod2 where cat_gp_id = '${promo}' ORDER BY CAT_GP_NOMBRE"$)

	If cursorVariablesReq.RowCount > 0 Then
		cursorVariablesReq.Position = 0

		If cursorVariablesReq.GetInt("CAT_GP_VAR1REQ") <> 0 And cursorVariablesReq.GetString("CAT_GP_VAR1REQ") <> " " Then
			variablesRequeridas1 = cursorVariablesReq.GetInt("CAT_GP_VAR1REQ")
		Else
			lblVariablesRequeridas1.Visible = False
			etLimiteSuma_Sub_pnl2.Visible = False
			pnlVariables1.Visible = False
		End If

		If cursorVariablesReq.GetInt("CAT_GP_VAR2REQ") <> 0 And cursorVariablesReq.GetString("CAT_GP_VAR2REQ") <> " " Then
			variablesRequeridas2 = cursorVariablesReq.GetInt("CAT_GP_VAR2REQ")
		Else
			lblVariablesRequeridas2.Visible = False
			etLimiteSuma_Sub_pnl3.Visible = False
			pnlVariables2.Visible = False
		End If

		If cursorVariablesReq.GetInt("CAT_GP_VARREQ3") <> 0 And cursorVariablesReq.GetString("CAT_GP_VARREQ3") <> " " Then
			variablesRequeridas3 = cursorVariablesReq.GetInt("CAT_GP_VARREQ3")
			lblVariablesRequeridas3.Visible = True
			etLimiteSuma_Sub_pnl4.Visible = True
			pnlVariables3.Visible = True
		Else
			lblVariablesRequeridas3.Visible = False
			etLimiteSuma_Sub_pnl4.Visible = False
			pnlVariables3.Visible = False
		End If
	Else
		variablesRequeridas1 = 0
		variablesRequeridas2 = 0
		variablesRequeridas3 = 0
	End If

	variablesRequeridas1_Inicial = variablesRequeridas1
	variablesRequeridas2_Inicial = variablesRequeridas2
	variablesRequeridas3_Inicial = variablesRequeridas3
End Sub

Sub muestraPromo(promo As String, cliente As String)
	estaPromo = promo
	Log("<<<<<<<<<<<<<<<<<<<<<<<<<<<<<" & estaPromo & "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<")
	esteCliente = cliente
	Private mp As Map = Subs.traePromo(promo, cliente)
	
	Log("Esto es el minimo? <<<<<<<<" & Subs.MaxPromQuery(promo))
    
	lblMaxPromo.Text = Subs.MaxPromQuery(promo)
	lblSumPromo.Text = 1
    
	Private cs As CSBuilder
	cs.Initialize
    
	lblNomPromo.text = cs.Color(Colors.RGB(100,149,237)).Size(18).Append("Promocion: ").Pop.Append(promo).Append(CRLF).Append(mp.Get("descripcion")).Popall
	Log("|" &lblNomPromo.text&"|")
	ObtenerVariablesRequeridas(promo)
	ObtenerFijos(promo)

	Log(etLimiteSuma_Sub_pnl2.Text)

	If pnlFijos.IsInitialized Then pnlFijos.RemoveAllViews
	If pnlVariables1.IsInitialized Then pnlVariables1.RemoveAllViews
	If pnlVariables2.IsInitialized Then pnlVariables2.RemoveAllViews
	If pnlVariables3.IsInitialized Then pnlVariables3.RemoveAllViews

	Dim nombrePromo As String = lblNomPromo.Text
	Dim nomPromo() As String = Regex.Split("\r\n|\n", nombrePromo)
	Log("Esto es nombre promo? <<<<<<<<<<<|" & nomPromo(1) & "|")
	Encabezado = nomPromo(1)
	Log("Esto es encabezado? |" & Encabezado)

'	Dim promoText As String = lblNomPromo.Text.Trim()
'	Dim idPromo() As String = Regex.Split(":", promoText)
'	Log("Esto es idPromo? | <<<<<<<<<<<<<<<<<<|" & idPromo(1).Trim() & "|")

	If productosFijos > 0 Then
		pnlFijos.Visible = True
		lblFijosRequeridos.Visible = True
		
		Private pzs2 As Cursor = Starter.skmt.ExecQuery($"select sum(CAT_DP_PZAS) as suma from cat_detalles_paq where cat_dp_tipo = '0' and cat_dp_id = '${estaPromo}'"$)
		If pzs2.RowCount > 0 Then
'		For i = 0 To pzs2.RowCount - 1
			pzs2.Position = 0
			Log(pzs2.GetString("suma"))
'			totalCant = totalCant + pzs2.GetString("CAT_DP_PZAS")
'			Log(totalCant)
'		Next
		End If
		lblFijosRequeridos.Text = "Productos fijos: " & (pzs2.GetString("suma") * lblSumPromo.Text)
		Log("Aqui deberia mostrar la cantidad de fijos: " & pzs2.GetString("suma"))
		
		lblFijosRequeridos.Left = 0
		lblFijosRequeridos.Width = Root.Width
		Dim cursorProdFijo As Cursor = Starter.skmt.ExecQuery($"SELECT CAT_GP_NOMBRE, CAT_DP_PZAS, CAT_DP_PRECIO, CAT_DP_ID, CAT_DP_IDPROD, CAT_DP_TIPO FROM CAT_DETALLES_PAQ INNER JOIN CAT_GUNAPROD ON CAT_DP_IDPROD = CAT_GP_ID WHERE CAT_DP_ID = '${promo}' AND CAT_DP_TIPO = 0 order BY CAT_GP_NOMBRE"$)
		If cursorProdFijo.RowCount > 0 Then
			For i = 0 To cursorProdFijo.RowCount - 1
				cursorProdFijo.Position = i
				GenerarFijos(cursorProdFijo.GetString("CAT_GP_NOMBRE"), cursorProdFijo.GetString("CAT_DP_PZAS"), cursorProdFijo.GetString("CAT_DP_PRECIO"), cursorProdFijo.GetString("CAT_DP_IDPROD"), i, promo)
			Next
		End If
	Else
		pnlFijos.Visible = False
		lblFijosRequeridos.Text = $"No hay productos Fijos"$
		lblFijosRequeridos.Visible = False
	End If
    
	If variablesRequeridas1 > 0 Then
		pnlVariables1.Visible = True
		lblVariablesRequeridas1.Visible = True
		lblVariablesRequeridas1.Text = $"Primeros Variables Requeridos: '${variablesRequeridas1}'"$
		lblVariablesRequeridas1.Left = 0
		lblVariablesRequeridas1.Width = Root.Width
		Dim cursorNomProductosVar1 As Cursor = Starter.skmt.ExecQuery($"SELECT CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_DP_PRECIO, CAT_DP_ID, CAT_DP_IDPROD, CAT_DP_TIPO FROM CAT_DETALLES_PAQ INNER JOIN CAT_GUNAPROD ON CAT_DP_IDPROD = CAT_GP_ID WHERE CAT_DP_ID = '${promo}' AND CAT_DP_TIPO = 1 ORDER BY CAT_GP_NOMBRE "$)
		If cursorNomProductosVar1.RowCount > 0 Then
			For i = 0 To cursorNomProductosVar1.RowCount - 1
				cursorNomProductosVar1.Position = i
				GenerarVariables1(cursorNomProductosVar1.GetString("CAT_GP_NOMBRE"), cursorNomProductosVar1.GetString("CAT_GP_ALMACEN"), cursorNomProductosVar1.GetString("CAT_DP_PRECIO"), cursorNomProductosVar1.GetString("CAT_DP_IDPROD"), i)
			Next
		End If
	Else
		pnlVariables1.Visible = False
		lblVariablesRequeridas1.Visible = False
	End If
    
	If variablesRequeridas2 > 0 Then
		pnlVariables2.Visible = True
		lblVariablesRequeridas2.Visible = True
		lblVariablesRequeridas2.Text = $"Segundos Variables Requeridos: '${variablesRequeridas2}'"$
		lblVariablesRequeridas2.Left = 0
		lblVariablesRequeridas2.Width = Root.Width
		Dim cursorNomProductosVar2 As Cursor = Starter.skmt.ExecQuery($"SELECT CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_DP_PRECIO, CAT_DP_ID, CAT_DP_IDPROD, CAT_DP_TIPO FROM CAT_DETALLES_PAQ INNER JOIN CAT_GUNAPROD ON CAT_DP_IDPROD = CAT_GP_ID WHERE CAT_DP_ID = '${promo}' AND CAT_DP_TIPO = 2 ORDER BY CAT_GP_NOMBRE "$)
		If cursorNomProductosVar2.RowCount > 0 Then
			For i = 0 To cursorNomProductosVar2.RowCount - 1
				cursorNomProductosVar2.Position = i
				GenerarVariables2(cursorNomProductosVar2.GetString("CAT_GP_NOMBRE"), cursorNomProductosVar2.GetString("CAT_GP_ALMACEN"), cursorNomProductosVar2.GetString("CAT_DP_PRECIO"), cursorNomProductosVar2.GetString("CAT_DP_IDPROD"), i)
			Next
		End If
	Else
		pnlVariables2.Visible = False
		lblVariablesRequeridas2.Visible = False
	End If
    
	If variablesRequeridas3 > 0 Then
		pnlVariables3.Visible = True
		lblVariablesRequeridas3.Visible = True
		lblVariablesRequeridas3.Text = $"Tercer Variables Requeridas: '${variablesRequeridas3}'"$
		lblVariablesRequeridas3.Width = Root.Width
		Dim cursorNomProductosVar3 As Cursor = Starter.skmt.ExecQuery($"SELECT CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_DP_PRECIO, CAT_DP_ID, CAT_DP_IDPROD, CAT_DP_TIPO FROM CAT_DETALLES_PAQ INNER JOIN CAT_GUNAPROD ON CAT_DP_IDPROD = CAT_GP_ID WHERE CAT_DP_ID = '${promo}' AND CAT_DP_TIPO = 3 ORDER BY CAT_GP_NOMBRE "$)
		If cursorNomProductosVar3.RowCount > 0 Then
			For i = 0 To cursorNomProductosVar3.RowCount - 1
				cursorNomProductosVar3.Position = i
				GenerarVariables3(cursorNomProductosVar3.GetString("CAT_GP_NOMBRE"), cursorNomProductosVar3.GetString("CAT_GP_ALMACEN"), cursorNomProductosVar3.GetString("CAT_DP_PRECIO"), cursorNomProductosVar3.GetString("CAT_DP_IDPROD"), i)
			Next
		End If
	Else
		pnlVariables3.Visible = False
		lblVariablesRequeridas3.Visible = False
	End If
    
	AjustarScroll
End Sub

Private Sub btnMenosPromo_Click
'	etVar1HasFocus = False
'	etVar2HasFocus = False
'	etVar3HasFocus = False
    
	Dim currentValue As Int = lblSumPromo.Text.As(Int)
    
	If currentValue > 1 Then
		currentValue = currentValue - 1
	End If
    
	lblSumPromo.Text = currentValue
    
	productosFijos = productosFijos_Iniciales * currentValue
	variablesRequeridas1 = variablesRequeridas1_Inicial * currentValue
	variablesRequeridas2 = variablesRequeridas2_Inicial * currentValue
	variablesRequeridas3 = variablesRequeridas3_Inicial * currentValue
    
	sumaVar1Tot = 0
	sumaVar2Tot = 0
	sumaVar3Tot = 0
    
	If pnlVariables1.IsInitialized Then
		For i = 0 To pnlVariables1.NumberOfViews - 1
			Dim pnlProducto As Panel = pnlVariables1.GetView(i)
			Dim lblValueVar1 As Label = pnlProducto.GetView(2)
			lblValueVar1.Text = "0"
		Next
	End If
    
	If pnlVariables2.IsInitialized Then
		For i = 0 To pnlVariables2.NumberOfViews - 1
			Dim pnlProducto As Panel = pnlVariables2.GetView(i)
			Dim lblValueVar2 As Label = pnlProducto.GetView(2)
			lblValueVar2.Text = "0" 
		Next
	End If
    
	If pnlVariables3.IsInitialized Then
		For i = 0 To pnlVariables3.NumberOfViews - 1
			Dim pnlProducto As Panel = pnlVariables3.GetView(i)
			Dim lblValueVar3 As Label = pnlProducto.GetView(2)
			lblValueVar3.Text = "0"
		Next
	End If
    
	' Obtener la suma de productos fijos y multiplicar por currentValue
	Private pzs2 As Cursor = Starter.skmt.ExecQuery($"select sum(CAT_DP_PZAS) as suma from cat_detalles_paq where cat_dp_tipo = '0' and cat_dp_id = '${estaPromo}'"$)
	If pzs2.RowCount > 0 Then
		pzs2.Position = 0
		Dim sumaPzas As Int = pzs2.GetInt("suma")
		lblFijosRequeridos.Text = "Productos fijos: " & (sumaPzas * currentValue) ' Multiplicar por currentValue
	End If
	
	lblVariablesRequeridas1.Text = $"Primeros Variables Requeridos: '${variablesRequeridas1}'"$
	lblVariablesRequeridas2.Text = $"Segundos Variables Requeridos: '${variablesRequeridas2}'"$
	lblVariablesRequeridas3.Text = $"Tercer Variables Requeridas: '${variablesRequeridas3}'"$
    
	RecalcularSumas
	Log("Esto recalcula la reta:<<<<<<<<<<<<< " & RecalcularSumas)
	ActualizarVisibilidadBtnGuardaPromo
	CalcularTotalVariables
	CalcularTotalFijos
	'Este for hace que la cantidad de la etiqueta de los fijos cambie con el menos
	For i = 0 To pnlFijos.NumberOfViews - 1
		Dim pnlProducto As Panel = pnlFijos.GetView(i)
		Dim precioProducto As Float = pnlProducto.Tag.As(Float)
		Dim cantidad As Int = 0
		Dim lblNombre As Label = pnlProducto.GetView(0)
		Dim nombreProducto As String = lblNombre.Text
'		Log(">>>>>>>>>>>>>Esto es nombre: " & nombreProducto & " <<<<<<<<<<<<<<<")
'		Log("Precio: " & precioProducto)
'		Log("Cantidad: " & cantidad)
		Private idProducto As String = lblNombre.tag

		Dim cursorProductosFijos As Cursor = Starter.skmt.ExecQuery($"SELECT CAT_DP_PZAS FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID = '${estaPromo}' AND CAT_DP_TIPO = '0' and cat_dp_idprod = '${idProducto}'"$)
		If cursorProductosFijos.RowCount > 0 Then
			cursorProductosFijos.Position = 0
			cantidad = cursorProductosFijos.GetString("CAT_DP_PZAS")
		End If
		Dim nomProd() As String = Regex.Split("\r\n|\n", nombreProducto)
'		Log("Esto es el nombre del producto? <<<<<<<<<<<<<<<<<<<<<<<|" &nomProd(0) & "|>>>>>>>>>>>>>>>>>>>>><<")
		lblNombre.Text = nomProd(0) & CRLF & "Cant: " & (cantidad * lblSumPromo.Text)& "     $" & NumberFormat2(precioProducto,1,2,2,True)
	Next
	

End Sub

Private Sub btnSumaPromo_Click
	Log("Aqui entro al clikear")
	
'	etVar1HasFocus = False
'	etVar2HasFocus = False
'	etVar3HasFocus = False

	Dim currentValue As Int = lblSumPromo.Text.As(Int)
	Dim maxValue As Int = lblMaxPromo.Text.As(Int)
	Log("Esto es MaxValue: " & maxValue & "<<<<<<<<<<<<<<<<<<<<<<")
	Log("Esto es currentValue: " & currentValue)
	Log("Esto es maxValue: " & maxValue)
	Log("Esto es estaPromo: " & estaPromo)

	If currentValue < maxValue Then

	Log("Esto es currentValue despues del if: " & currentValue)
	Log("Esto es maxValue despues del if: " & maxValue)
		currentValue = currentValue + 1
		Log("Esto es una suma de mi label?: " & (currentValue))
	End If

	lblSumPromo.Text = currentValue

	' Actualizar las variables requeridas
	productosFijos = productosFijos_Iniciales * currentValue
	variablesRequeridas1 = variablesRequeridas1_Inicial * currentValue
	variablesRequeridas2 = variablesRequeridas2_Inicial * currentValue
	variablesRequeridas3 = variablesRequeridas3_Inicial * currentValue

	' Reiniciar las sumas totales
	sumaVar1Tot = 0
	sumaVar2Tot = 0
	sumaVar3Tot = 0
    
	' Forzar la actualización de los EditText
	If pnlVariables1.IsInitialized Then
		For i = 0 To pnlVariables1.NumberOfViews - 1
			Dim pnlProducto As Panel = pnlVariables1.GetView(i)
			Dim lblValueVar1 As Label = pnlProducto.GetView(2)
			lblValueVar1.Text = "0" ' Reiniciar el valor
		Next
	End If
    
	If pnlVariables2.IsInitialized Then
		For i = 0 To pnlVariables2.NumberOfViews - 1
			Dim pnlProducto As Panel = pnlVariables2.GetView(i)
			Dim lblValueVar2 As Label = pnlProducto.GetView(2)
			lblValueVar2.Text = "0" ' Reiniciar el valor
		Next
	End If
    
	If pnlVariables3.IsInitialized Then
		For i = 0 To pnlVariables3.NumberOfViews - 1
			Dim pnlProducto As Panel = pnlVariables3.GetView(i)
			Dim lblValueVar3 As Label = pnlProducto.GetView(2)
			lblValueVar3.Text = "0" ' Reiniciar el valor
		Next
	End If
    
	' Actualizar las etiquetas

	' Obtener la suma de productos fijos y multiplicar por currentValue
	Private pzs2 As Cursor = Starter.skmt.ExecQuery($"select sum(CAT_DP_PZAS) as suma from cat_detalles_paq where cat_dp_tipo = '0' and cat_dp_id = '${estaPromo}'"$)
	If pzs2.RowCount > 0 Then
		pzs2.Position = 0
		Dim sumaPzas As Int = pzs2.GetInt("suma")
		lblFijosRequeridos.Text = "Productos fijos: " & (sumaPzas * currentValue) ' Multiplicar por currentValue
	End If
	
	lblVariablesRequeridas1.Text = $"Primeros Variables Requeridos: '${variablesRequeridas1}'"$
	lblVariablesRequeridas2.Text = $"Segundos Variables Requeridos: '${variablesRequeridas2}'"$
	lblVariablesRequeridas3.Text = $"Tercer Variables Requeridas: '${variablesRequeridas3}'"$
    'Este for cambia la cantidad en la etiqueta de los fijos
	For i = 0 To pnlFijos.NumberOfViews - 1
		Dim pnlProducto As Panel = pnlFijos.GetView(i)
		Dim precioProducto As Float = pnlProducto.Tag.As(Float)
		Dim cantidad As Int = 0
		Dim lblNombre As Label = pnlProducto.GetView(0)
		Dim nombreProducto As String = lblNombre.Text
'		Log(">>>>>>>>>>>>>Esto es nombre: " & nombreProducto & " <<<<<<<<<<<<<<<")
'		Log("Precio: " & precioProducto)
'		Log("Cantidad: " & cantidad)
		Private idProducto As String = lblNombre.tag

		Dim cursorProductosFijos As Cursor = Starter.skmt.ExecQuery($"SELECT CAT_DP_PZAS FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID = '${estaPromo}' AND CAT_DP_TIPO = '0' and cat_dp_idprod = '${idProducto}'"$)
		If cursorProductosFijos.RowCount > 0 Then
			cursorProductosFijos.Position = 0
			cantidad = cursorProductosFijos.GetString("CAT_DP_PZAS")
		End If
		Dim nomProd() As String = Regex.Split("\r\n|\n", nombreProducto)
'		Log("Esto es el nombre del producto? <<<<<<<<<<<<<<<<<<<<<<<|" &nomProd(0) & "|>>>>>>>>>>>>>>>>>>>>><<")
		lblNombre.Text = nomProd(0) & CRLF & "Cant: " & (cantidad * lblSumPromo.Text)& "     $" & NumberFormat2(precioProducto,1,2,2,True)
	Next
	
	' Recalcular sumas y actualizar la interfaz
	RecalcularSumas
	Log("Esto recalcula la suma:<<<<<<<<<<<<< " & RecalcularSumas)
	ActualizarVisibilidadBtnGuardaPromo
	CalcularTotalVariables
	CalcularTotalFijos
End Sub

Private Sub btnVars1Mas_Click
'	Dim totalVar1 As Int = 0
'	etVar1HasFocus = False
'	etVar2HasFocus = False
'	etVar3HasFocus = False
    Log("Iniciamos boton mas")
	Log("Variables requeridas = " & variablesRequeridas1)
	Log(sumaVar1Tot.As(Int) > variablesRequeridas1.As(Int))
	If sumaVar1Tot.As(Int) >= variablesRequeridas1.As(Int) Then
		Log("Entramos al primer if")
		ToastMessageShow("No se pueden agregar más productos, ya se alcanzó el máximo.", True)
		Return
	End If
    Log("Termiamos boton mas")
	sumaVar1Tot = SumarVariables1
    
	Dim pnlProducto As Panel = Sender.As(View).Parent
	Dim lblValueVar1 As Label = pnlProducto.GetView(2)
	Dim currentValue As Int = lblValueVar1.Text.As(Int)
    
	currentValue = currentValue + 1
	lblValueVar1.Text = currentValue
	sumaVar1Tot = sumaVar1Tot + 1
    
	RecalcularSumas
End Sub

Private Sub btnVars1Menos_Click
'	etVar1HasFocus = False
'	etVar2HasFocus = False
'	etVar3HasFocus = False
	Dim pnlProducto As Panel
	pnlProducto = Sender.As(View).Tag
    
	Dim lblValue As Label = pnlProducto.GetView(2)
    
	Dim currentValue As Int
	If IsNumber(lblValue.Text) Then
		currentValue = lblValue.Text.As(Int)
	Else
		currentValue = 0
	End If
    
	If currentValue > 0 Then
		currentValue = currentValue - 1
		lblValue.Text = currentValue
        
		sumaVar1Tot = sumaVar1Tot - 1
		
		RecalcularSumas
	End If
End Sub

Private Sub btnVars2Mas_Click
	
'	etVar1HasFocus = False
'	etVar2HasFocus = False
'	etVar3HasFocus = False
    
	If sumaVar2Tot >= variablesRequeridas2 Then
		ToastMessageShow("No se pueden agregar más productos, ya se alcanzó el máximo.", True)
		Return
	End If
    
	Dim pnlProducto As Panel = Sender.As(View).Parent
	Dim lblValueVar2 As Label = pnlProducto.GetView(2)
	Dim currentValue As Int = lblValueVar2.Text.As(Int)
    
	currentValue = currentValue + 1
	lblValueVar2.Text = currentValue
	sumaVar2Tot = sumaVar2Tot + 1
    
	RecalcularSumas
End Sub

Private Sub btnVars2Menos_Click
'	etVar1HasFocus = False
'	etVar2HasFocus = False
'	etVar3HasFocus = False
	Dim pnlProducto As Panel
	pnlProducto = Sender.As(View).Tag
    
	Dim lblValue As Label = pnlProducto.GetView(2)
    
	Dim currentValue As Int
	If IsNumber(lblValue.Text) Then
		currentValue = lblValue.Text.As(Int)
	Else
		currentValue = 0
	End If
    
	If currentValue > 0 Then
		currentValue = currentValue - 1
		lblValue.Text = currentValue
        
		sumaVar2Tot = sumaVar2Tot - 1
		
		RecalcularSumas
	End If
End Sub

Private Sub btnVars3Mas_Click
'	etVar1HasFocus = False
'	etVar2HasFocus = False
'	etVar3HasFocus = False
    
	If sumaVar3Tot >= variablesRequeridas3 Then
		ToastMessageShow("No se pueden agregar más productos, ya se alcanzó el máximo.", True)
		Return
	End If
    
	Dim pnlProducto As Panel = Sender.As(View).Parent
	Dim lblValueVar3 As Label = pnlProducto.GetView(2)
	Dim currentValue As Int = lblValueVar3.Text.As(Int)
    
	currentValue = currentValue + 1
	lblValueVar3.Text = currentValue
	sumaVar3Tot = sumaVar3Tot + 1
    
	RecalcularSumas
End Sub

Private Sub btnVars3Menos_Click
'	etVar1HasFocus = False
'	etVar2HasFocus = False
'	etVar3HasFocus = False
	Dim pnlProducto As Panel
	pnlProducto = Sender.As(View).Tag
    
	Dim lblValue As Label = pnlProducto.GetView(2)
    
	Dim currentValue As Int
	If IsNumber(lblValue.Text) Then
		currentValue = lblValue.Text.As(Int)
	Else
		currentValue = 0
	End If
    
	If currentValue > 0 Then
		currentValue = currentValue - 1
		lblValue.Text = currentValue
        
		sumaVar3Tot = sumaVar3Tot - 1
        
		RecalcularSumas
	End If
End Sub

Private Sub GenerarFijos(nombreProd As String, inventario As String, precio As String, idProducto As String, numberOfViews As Int, estaPromoA As String)
	If Not(pnlFijos.IsInitialized) Then
		Return
	End If

	Log($"${idProducto}, ${nombreProd}, ${inventario}, ${precio}"$)

	Private estePrecio As String = precio

	Dim pnlProducto As Panel
	pnlProducto.Initialize("pnlProducto")
	pnlProducto.SetLayout(0, 0, pnlFijos.Width, 70dip)
	
	Private estePrecio As String = precio
	Private cantidad As Int = 0
	
	Private pzs As Cursor = Starter.skmt.ExecQuery($"select CAT_DP_PZAS from cat_detalles_paq where cat_dp_idprod = '${idProducto}' and cat_dp_id = '${estaPromoA}'"$)
	If pzs.RowCount > 0 Then
		pzs.Position = 0
		Log("==============================    " & pzs.GetString("CAT_DP_PZAS"))
		cantidad = pzs.GetString("CAT_DP_PZAS") * lblSumPromo.Text.As(Int) ' Multiplicamos por el número de promos
	End If

	Dim lblNombre As Label
	lblNombre.Initialize("lblNombre")
	
	lblNombre.Text = nombreProd & CRLF & "Cant: " & (cantidad * lblSumPromo.Text)& "     $" & NumberFormat2(estePrecio,1,2,2,True)
	lblNombre.Tag = idProducto
	lblNombre.TextSize = 12
	lblNombre.TextColor = xui.Color_Black
	lblNombre.Gravity = Gravity.LEFT + Gravity.CENTER_VERTICAL
	pnlProducto.AddView(lblNombre, 10dip, 10dip, pnlProducto.Width * 0.75 - 20dip, 50dip)

	pnlProducto.Tag = estePrecio

	pnlFijos.AddView(pnlProducto, 0, numberOfViews * 70dip, pnlFijos.Width, 70dip)
	pnlFijos.Height = (numberOfViews * 70dip) + 70dip
	
'	Private totalCant As Int = 0
	Private pzs2 As Cursor = Starter.skmt.ExecQuery($"select sum(CAT_DP_PZAS) as suma from cat_detalles_paq where cat_dp_tipo = '0' and cat_dp_id = '${estaPromoA}'"$)
	If pzs2.RowCount > 0 Then
'		For i = 0 To pzs2.RowCount - 1
		pzs2.Position = 0
			Log(pzs2.GetString("suma"))
'			totalCant = totalCant + pzs2.GetString("CAT_DP_PZAS")
'			Log(totalCant)
'		Next
	End If
	lblFijosRequeridos.Text = "Productos fijos: " & (pzs2.GetString("suma") * lblSumPromo.Text)
	SumarFijos
	pzs.Close

	AjustarScroll
End Sub

Private Sub GenerarVariables1(nombreProd As String, inventario As String, precio As String, idProducto As String, numberOfViews As Int)
	If Not(pnlVariables1.IsInitialized) Then Return

	Private estePrecio As String = precio

	Dim pnlProducto As Panel
	pnlProducto.Initialize("pnlProducto")
	pnlProducto.SetLayout(0, 0, pnlVariables1.Width, 50dip)

	Dim lblNombre As Label
	lblNombre.Initialize("lblNombre")
	lblNombre.Text = nombreProd & CRLF & "Hay " & inventario & " $" & NumberFormat2(estePrecio,1,2,2,True)
	lblNombre.Tag = idProducto
	lblNombre.TextSize = 12
	lblNombre.TextColor = xui.Color_Black
	lblNombre.Gravity = Gravity.LEFT + Gravity.CENTER_VERTICAL
	pnlProducto.AddView(lblNombre, 10dip, 10dip, pnlProducto.Width * 0.75 - 20dip, 50dip)

	Dim btnWidth As Int = pnlProducto.Width * 0.25 / 3
	Dim lblWidth As Int = btnWidth
	Dim spacing As Int = 5dip

	Dim btnMenos As Button
	btnMenos.Initialize("btnVars1Menos")
	btnMenos.Tag = pnlProducto
	btnMenos.Text = $"-"$
	btnMenos.TextSize = 20
	btnMenos.Color = Colors.RGB(185, 106, 106)
	btnMenos.TextColor = xui.Color_White
	pnlProducto.AddView(btnMenos, pnlProducto.Width - btnWidth - spacing * 2 - lblWidth - btnWidth, 10dip, btnWidth, pnlProducto.Height - 10dip)

	Dim lblValueVar1 As Label
	lblValueVar1.Initialize("lblValueVar1") ' Asignar el evento TextChanged aquí
'	lblValueVar1.InputType = lblValueVar1.INPUT_TYPE_NUMBERS
'	lblValueVar1.Hint = "0"
	lblValueVar1.Text = "0"
	lblValueVar1.TextColor = xui.Color_Black
	lblValueVar1.Gravity = Gravity.CENTER
	lblValueVar1.TextSize = 12
	lblValueVar1.Tag = pnlProducto ' Asignar el panel como tag
	pnlProducto.AddView(lblValueVar1, btnMenos.Left + btnMenos.Width + spacing, 10dip, lblWidth, pnlProducto.Height - 10dip)

	Dim btnMas As Button
	btnMas.Initialize("btnVars1Mas")
	btnMas.Tag = pnlProducto
	btnMas.Text = $"+"$
	btnMas.TextSize = 20
	btnMas.Color = Colors.RGB(133, 185, 106)
	btnMas.TextColor = xui.Color_White
	pnlProducto.AddView(btnMas, lblValueVar1.Left + lblValueVar1.Width + spacing, 10dip, btnWidth, pnlProducto.Height - 10dip)

	pnlProducto.Tag = estePrecio

	pnlVariables1.AddView(pnlProducto, 0, numberOfViews * 70dip, pnlVariables1.Width, 70dip)
	pnlVariables1.Height = (numberOfViews * 70dip) + 70dip

	AjustarScroll
End Sub

Private Sub GenerarVariables2(nombreProd As String, inventario As String, precio As String, idProducto As String, numberOfViews As Int)
	If Not(pnlVariables2.IsInitialized) Then Return

	Private estePrecio As String = precio

	Dim pnlProducto As Panel
	pnlProducto.Initialize("pnlProducto")
	pnlProducto.SetLayout(0, 0, pnlVariables2.Width, 50dip)

	Dim lblNombre As Label
	lblNombre.Initialize("lblNombre")
	lblNombre.Text = nombreProd & CRLF & "Hay " & inventario & " $" & NumberFormat2(estePrecio,1,2,2,True)
	lblNombre.Tag = idProducto
	lblNombre.TextSize = 12
	lblNombre.TextColor = xui.Color_Black
	lblNombre.Gravity = Gravity.LEFT + Gravity.CENTER_VERTICAL
	pnlProducto.AddView(lblNombre, 10dip, 10dip, pnlProducto.Width * 0.75 - 20dip, 50dip)

	Dim btnWidth As Int = pnlProducto.Width * 0.25 / 3
	Dim lblWidth As Int = btnWidth
	Dim spacing As Int = 5dip

	Dim btnMenos As Button
	btnMenos.Initialize("btnVars2Menos")
	btnMenos.Tag = pnlProducto
	btnMenos.Text = $"-"$
	btnMenos.TextSize = 20
	btnMenos.Color = Colors.RGB(185, 106, 106)
	btnMenos.TextColor = xui.Color_White
	pnlProducto.AddView(btnMenos, pnlProducto.Width - btnWidth - spacing * 2 - lblWidth - btnWidth, 10dip, btnWidth, pnlProducto.Height - 10dip)

	Dim lblValueVar2 As Label
	lblValueVar2.Initialize("lblValueVar2")
'	lblValueVar2.InputType = lblValueVar2.INPUT_TYPE_NUMBERS
'	lblValueVar2.Hint = "0"
	lblValueVar2.Text = "0"
	lblValueVar2.TextColor = xui.Color_Black
	lblValueVar2.Gravity = Gravity.CENTER
	lblValueVar2.TextSize = 12
	lblValueVar2.Tag = pnlProducto
	pnlProducto.AddView(lblValueVar2, btnMenos.Left + btnMenos.Width + spacing, 10dip, lblWidth, pnlProducto.Height - 10dip)

	Dim btnMas As Button
	btnMas.Initialize("btnVars2Mas")
	btnMas.Tag = pnlProducto
	btnMas.Text = $"+"$
	btnMas.TextSize = 20
	btnMas.Color = Colors.RGB(133, 185, 106)
	btnMas.TextColor = xui.Color_White
	pnlProducto.AddView(btnMas, lblValueVar2.Left + lblValueVar2.Width + spacing, 10dip, btnWidth, pnlProducto.Height - 10dip)

	pnlProducto.Tag = estePrecio

	pnlVariables2.AddView(pnlProducto, 0, numberOfViews * 70dip, pnlVariables2.Width, 70dip)
	pnlVariables2.Height = (numberOfViews * 70dip) + 70dip

	AjustarScroll
End Sub

Private Sub GenerarVariables3(nombreProd As String, inventario As String, precio As String, idProducto As String, numberOfViews As Int)
	If Not(pnlVariables3.IsInitialized) Then Return

	Private estePrecio As String = precio

	Dim pnlProducto As Panel
	pnlProducto.Initialize("pnlProducto")
	pnlProducto.SetLayout(0, 0, pnlVariables3.Width, 50dip)

	Dim lblNombre As Label
	lblNombre.Initialize("lblNombre")
	lblNombre.Text = nombreProd & CRLF & "Hay " & inventario & " $" & NumberFormat2(estePrecio,1,2,2,True)
	lblNombre.Tag = idProducto
	lblNombre.TextSize = 12
	lblNombre.TextColor = xui.Color_Black
	lblNombre.Gravity = Gravity.LEFT + Gravity.CENTER_VERTICAL
	pnlProducto.AddView(lblNombre, 10dip, 10dip, pnlProducto.Width * 0.75 - 20dip, 50dip)

	Dim btnWidth As Int = pnlProducto.Width * 0.25 / 3
	Dim lblWidth As Int = btnWidth
	Dim spacing As Int = 5dip

	Dim btnMenos As Button
	btnMenos.Initialize("btnVars3Menos")
	btnMenos.Tag = pnlProducto
	btnMenos.Text = $"-"$
	btnMenos.TextSize = 20
	btnMenos.Color = Colors.RGB(185, 106, 106)
	btnMenos.TextColor = xui.Color_White
	pnlProducto.AddView(btnMenos, pnlProducto.Width - btnWidth - spacing * 2 - lblWidth - btnWidth, 10dip, btnWidth, pnlProducto.Height - 10dip)

	Dim lblValueVar3 As Label
	lblValueVar3.Initialize("lblValueVar3")
'	lblValueVar3.InputType = lblValueVar3.INPUT_TYPE_NUMBERS
'	lblValueVar3.Hint = "0"
	lblValueVar3.Text = "0"
	lblValueVar3.TextColor = xui.Color_Black
	lblValueVar3.Gravity = Gravity.CENTER
	lblValueVar3.TextSize = 12
	lblValueVar3.Tag = pnlProducto
	pnlProducto.AddView(lblValueVar3, btnMenos.Left + btnMenos.Width + spacing, 10dip, lblWidth, pnlProducto.Height - 10dip)

	Dim btnMas As Button
	btnMas.Initialize("btnVars3Mas")
	btnMas.Tag = pnlProducto
	btnMas.Text = $"+"$
	btnMas.TextSize = 20
	btnMas.Color = Colors.RGB(133, 185, 106)
	btnMas.TextColor = xui.Color_White
	pnlProducto.AddView(btnMas, lblValueVar3.Left + lblValueVar3.Width + spacing, 10dip, btnWidth, pnlProducto.Height - 10dip)

	pnlProducto.Tag = estePrecio

	pnlVariables3.AddView(pnlProducto, 0, numberOfViews * 70dip, pnlVariables3.Width, 70dip)
	pnlVariables3.Height = (numberOfViews * 70dip) + 70dip

	AjustarScroll
End Sub

'Private Sub lblValueVar1_TextChanged (Old As String, New As String)
'	Dim totalVar1 As Int = 0
'	If New = "" Or New = Null Then New = 0
'	If Old = "" Or Old = Null Then Old = 0
'	If New = "-" Then New = 0
'	etVar1HasFocus = True
'	totalVar1 = SumarVariables1
'	If etVar1HasFocus = True Then
''		Log("Entramos a 1er If")
'		Dim variablesRequeridas1int As Int = New
'		If New = "" Then
''		Log("Entramos a 2do If")
'			New = 0
'		End If
'		If New < 0 Then
''		Log("Entramos a 3er If")
'			New = 0
'		Else
''		Log("Entramos a else")
'			If  totalVar1 <= variablesRequeridas1 Then
'
'			Else If totalVar1 > variablesRequeridas1 Then
'				variablesRequeridas1int = variablesRequeridas1 - sumaVar1Tot
'				If variablesRequeridas1int < 1 Then variablesRequeridas1int = 0
''				isProgrammaticChange = True
'				Log("Ponemos valor en tal desde extChanged " & variablesRequeridas1int)
'				Sender.As(EditText).Text = variablesRequeridas1int
'			End If
'		End If
'		sumaVar1Tot = totalVar1
'		RecalcularSumas
'	End If
''	Log("Salimos")
'End Sub
'
'Private Sub lblValueVar2_TextChanged (Old As String, New As String)
'	If isProgrammaticChange Then
'		isProgrammaticChange = False
'		Return
'	End If
'	
'	Log("---------------------------------")
'	Dim totalVar2 As Int = 0
'    
'	If pnlVariables2.IsInitialized Then
'		For i = 0 To pnlVariables2.NumberOfViews - 1
'			Dim pnlProducto As Panel = pnlVariables2.GetView(i)
'			Dim lblValueVar2 As EditText = pnlProducto.GetView(2)
'			If lblValueVar2.Text = "" Then
'				lblValueVar2.Text = 0
'			End If
'			Log("Esto es total var2Antes : "&totalVar2)
'			Log("Esto es ET2: "&lblValueVar2.Text.As(Int))
'			totalVar2 = totalVar2 + lblValueVar2.Text.As(Int)
'			Log("Esto es total var2: "&totalVar2)
'		Next
'	End If
'	
'	etVar2HasFocus = True
'	Log("Esto es El focus2: " & etVar2HasFocus)
'	If etVar2HasFocus = True And etVar1HasFocus = False And etVar3HasFocus = False Then
'		If New = "" Or New = Null Then New = 0
'		If Old = "" Or Old = Null Then Old = 0
'		If New = "-" Then New = 0
'		Dim variablesRequeridas2int As Int = New
'		If New = "" Then
'			New = 0
'		End If
'		If New < 0 Then
'			New = 0
'		Else
''			Log("---------------------------------")
'			Log("Variables Requeridas2:  " & variablesRequeridas2)
'			Log("Valor EditText2:  " & totalVar2)
'			Log(totalVar2 <= variablesRequeridas2)
'			If  totalVar2 <= variablesRequeridas2 Then
''				Log("---------------------------------")
'				Log("Estoy entrando aca")
'			Else If totalVar2 > variablesRequeridas2 Then
'				variablesRequeridas2int = variablesRequeridas2 - sumaVar2Tot
'				If variablesRequeridas2int < 1 Then variablesRequeridas2int = 0
'				isProgrammaticChange = True
'				Sender.As(EditText).Text = variablesRequeridas2int
'			End If
'		End If
'		sumaVar2Tot = totalVar2
'		RecalcularSumas
'	End If
'End Sub
'
'Private Sub lblValueVar3_TextChanged (Old As String, New As String)
'	If isProgrammaticChange Then
'		isProgrammaticChange = False
'		Return
'	End If
'	
'	Log("---------------------------------")
'	Dim totalVar3 As Int = 0
'    
'	If pnlVariables3.IsInitialized Then
'		For i = 0 To pnlVariables3.NumberOfViews - 1
'			Dim pnlProducto As Panel = pnlVariables3.GetView(i)
'			Dim lblValueVar3 As EditText = pnlProducto.GetView(2)
'			If lblValueVar3.Text = "" Then
'				lblValueVar3.Text = 0
'			End If
'			Log("Esto es total var3Antes : "& totalVar3)
'			Log("Esto es ET3: "& lblValueVar3.Text.As(Int))
'			totalVar3 = totalVar3 + lblValueVar3.Text.As(Int)
'			Log("Esto es total var3: "&totalVar3)
'		Next
'	End If
'	
'	etVar3HasFocus = True
'	Log("Esto es El focus3: " & etVar3HasFocus)
'	If etVar3HasFocus = True And etVar1HasFocus = False And etVar2HasFocus = False Then
'		If New = "" Or New = Null Then New = 0
'		If Old = "" Or Old = Null Then Old = 0
'		If New = "-" Then New = 0
'		Dim variablesRequeridas3int As Int = New
'		If New = "" Then
'			New = 0
'		End If
'		If New < 0 Then
'			New = 0
'		Else
''			Log("---------------------------------")
'			Log("Variables Requeridas3:  " & variablesRequeridas3)
'			Log("Valor EditText3:  " & totalVar3)
'			Log(totalVar3 <= variablesRequeridas3)
'			If  totalVar3 <= variablesRequeridas3 Then
''				Log("---------------------------------")
'				Log("Estoy entrando aca")
'			Else If totalVar3 > variablesRequeridas3 Then
'				variablesRequeridas3int = variablesRequeridas3 - sumaVar3Tot
'				Log(variablesRequeridas3)
'				Log("Valor EditText3:  " & totalVar3)
'				Log(sumaVar3Tot)
'				Log(variablesRequeridas3int)
'				Log("Estoy entrando aqui Var3")
'				If variablesRequeridas3int < 1 Then variablesRequeridas3int = 0
'				isProgrammaticChange = True
'				Sender.As(EditText).Text = variablesRequeridas3int
'			End If
'		End If
'		sumaVar3Tot = totalVar3
'		RecalcularSumas
'	End If
'End Sub
'
'Sub lblValueVar1_FocusChanged (HasFocus As Boolean)
'	etVar1HasFocus = HasFocus
'	etVar2HasFocus = False
'	etVar3HasFocus = False
'	Log("FocusChanged: " & HasFocus)
'	If HasFocus Then
'		Log("El EditText tiene el foco.")
'	Else
'		Log("El EditText perdió el foco.")
'	End If
'End Sub
'
'Sub lblValueVar2_FocusChanged (HasFocus As Boolean)
'	etVar1HasFocus = False
'	etVar2HasFocus = HasFocus
'	etVar3HasFocus = False
'	Log("FocusChanged: " & HasFocus)
'	If HasFocus Then
'		Log("El EditText tiene el foco.")
'	Else
'		Log("El EditText perdió el foco.")
'	End If
'End Sub
'
'Sub lblValueVar3_FocusChanged (HasFocus As Boolean)
'	etVar1HasFocus = False
'	etVar2HasFocus = False
'	etVar3HasFocus = HasFocus
'	Log("FocusChanged: " & HasFocus)
'	If HasFocus Then
'		Log("El EditText tiene el foco.")
'	Else
'		Log("El EditText perdió el foco.")
'	End If
'End Sub

Private Sub RecalcularSumas
	lblSumaTotal.Text = NumberFormat2((SumarFijos + SumarVariables1 + SumarVariables2 + SumarVariables3), 1, 0, 0, False)
	Log($"${lblFijosRequeridos.Text} + ${SumarVariables1} + ${SumarVariables2}"$)
	ActualizarTotalValor
	ActualizarVisibilidadBtnGuardaPromo
End Sub

Private Sub AjustarScroll
	Dim baseHeight As Int = 0

	If productosFijos > 0 And pnlFijos.Visible Then
		lblFijosRequeridos.Top = baseHeight
		etLimiteSuma_Sub_pnl1.Top = lblFijosRequeridos.Top
		baseHeight = baseHeight + lblFijosRequeridos.Height

		pnlFijos.Top = baseHeight
		baseHeight = baseHeight + pnlFijos.Height
	End If

	If variablesRequeridas1 > 0 And pnlVariables1.Visible Then
		lblVariablesRequeridas1.Top = baseHeight
		etLimiteSuma_Sub_pnl2.Top = lblVariablesRequeridas1.Top
		baseHeight = baseHeight + lblVariablesRequeridas1.Height

		pnlVariables1.Top = baseHeight
		baseHeight = baseHeight + pnlVariables1.Height
	End If

	If variablesRequeridas2 > 0 And pnlVariables2.Visible Then
		lblVariablesRequeridas2.Top = baseHeight
		etLimiteSuma_Sub_pnl3.Top = lblVariablesRequeridas2.Top
		baseHeight = baseHeight + lblVariablesRequeridas2.Height

		pnlVariables2.Top = baseHeight
		baseHeight = baseHeight + pnlVariables2.Height
	End If

	If variablesRequeridas3 > 0 And pnlVariables3.Visible Then
		lblVariablesRequeridas3.Top = baseHeight
		etLimiteSuma_Sub_pnl4.Top = lblVariablesRequeridas3.Top
		baseHeight = baseHeight + lblVariablesRequeridas3.Height

		pnlVariables3.Top = baseHeight
		baseHeight = baseHeight + pnlVariables3.Height
	End If

	scrollView.Panel.Height = baseHeight

	pnlProdTot.Top = Root.Height - pnlProdTot.Height
End Sub

Private Sub btnGuardaPromo_Click
	Subs.guardaProductoSinGestion(estaPromo, 0, lblSumPromo.Text, Encabezado, estaPromo, Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, B4XPages.MainPage.tipo_venta)
'	Log("Esto es encabezado>>>>>>>>>>" & Encabezado)
	If productosFijos > 0 Then
		Log("Guardando productos fijos...")
		For i = 0 To pnlFijos.NumberOfViews - 1
			Dim pnlProducto As Panel = pnlFijos.GetView(i)
			Dim precioProducto As Float = pnlProducto.Tag.As(Float)
			Dim cantidad As Int = productosFijos
			Dim lblNombre As Label = pnlProducto.GetView(0)
			Dim nombreProducto As String = lblNombre.Text
			Private idProducto As String = lblNombre.tag
			Dim nomProd() As String = Regex.Split("\r\n|\n", nombreProducto)
			Log("Esto es el nombre del producto? <<<<<<<<<<<<<<<<<<<<<<<|" &nomProd(1) & "|")
			Private pzs As Cursor = Starter.skmt.ExecQuery($"select CAT_DP_PZAS from cat_detalles_paq where cat_dp_idprod = '${idProducto}' and cat_dp_id = '${estaPromo}'"$)
			If pzs.RowCount > 0 Then
				pzs.Position = 0
				Log("==============================    " & pzs.GetString("CAT_DP_PZAS"))
				cantidad = pzs.GetString("CAT_DP_PZAS")
			End If
			Dim cursorProductosFijos As Cursor = Starter.skmt.ExecQuery($"SELECT CAT_DP_PZAS FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID = '${estaPromo}' AND CAT_DP_TIPO = '0' and cat_dp_idprod = '${idProducto}'"$)
			
			If cursorProductosFijos.RowCount > 0 Then
				cursorProductosFijos.Position = 0
				cantidad = cursorProductosFijos.GetString("CAT_DP_PZAS") * lblSumPromo.Text
			End If
			Log("Esto debe ser cantidad: " & cantidad)
			
			If cantidad > 0 Then
				Subs.guardaProductoSinGestion(estaPromo, precioProducto, cantidad, nomProd(0), idProducto, Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, B4XPages.MainPage.tipo_venta)
			End If
		Next
	Else
		Log("No hay productos fijos para guardar.")
	End If
	If variablesRequeridas1 > 0 Then
		Log("Guardando productos variables (Grupo 1)...")
		For i = 0 To pnlVariables1.NumberOfViews - 1
			Dim pnlProducto As Panel = pnlVariables1.GetView(i)
			Dim precioProducto As Float = pnlProducto.Tag.As(Float)
			Dim lblValueVar1 As Label = pnlProducto.GetView(2)
			Dim cantidad As Int = lblValueVar1.Text.As(Int)
			Dim lblNombre As Label = pnlProducto.GetView(0)
			Private idProducto As String = lblNombre.tag
			Dim nombreProducto As String = lblNombre.Text
			Dim nomProd() As String = Regex.Split("\r\n|\n", nombreProducto)
			If cantidad > 0 Then
				Log($"Guardando producto variable (Grupo 1): ${nombreProducto}, Cantidad: ${cantidad}, Precio: ${precioProducto}"$)
				Subs.guardaProductoSinGestion(estaPromo, precioProducto, cantidad, nomProd(0), idProducto, Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, B4XPages.MainPage.tipo_venta)
			End If
		Next
	Else
		Log("No hay productos variables (Grupo 1) para guardar.")
	End If

	If variablesRequeridas2 > 0 Then
		Log("Guardando productos variables (Grupo 2)...")
		For i = 0 To pnlVariables2.NumberOfViews - 1
			Dim pnlProducto As Panel = pnlVariables2.GetView(i)
			Dim precioProducto As Float = pnlProducto.Tag.As(Float)
			Dim lblValueVar2 As Label = pnlProducto.GetView(2)
			Dim cantidad As Int = lblValueVar2.Text.As(Int)
			Dim lblNombre As Label = pnlProducto.GetView(0)
			Private idProducto As String = lblNombre.tag
			Dim nombreProducto As String = lblNombre.Text
			Dim nomProd() As String = Regex.Split("\r\n|\n", nombreProducto)
			If cantidad > 0 Then
				Log($"Guardando producto variable (Grupo 2): ${nombreProducto}, Cantidad: ${cantidad}, Precio: ${precioProducto}"$)
				Subs.guardaProductoSinGestion(estaPromo, precioProducto, cantidad, nomProd(0), idProducto, Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, B4XPages.MainPage.tipo_venta)
			End If
		Next
	Else
		Log("No hay productos variables (Grupo 2) para guardar.")
	End If

	If variablesRequeridas3 > 0 Then
		Log("Guardando productos variables (Grupo 3)...")
		For i = 0 To pnlVariables3.NumberOfViews - 1
			Dim pnlProducto As Panel = pnlVariables3.GetView(i)
			Dim precioProducto As Float = pnlProducto.Tag.As(Float)
			Dim lblValueVar3 As Label = pnlProducto.GetView(2)
			Dim cantidad As Int = lblValueVar3.Text.As(Int)
			Dim lblNombre As Label = pnlProducto.GetView(0)
			Dim nombreProducto As String = lblNombre.Text
			Private idProducto As String = lblNombre.tag
			Dim nomProd() As String = Regex.Split("\r\n|\n", nombreProducto)
			If cantidad > 0 Then
				Log($"Guardando producto variable (Grupo 3): ${nombreProducto}, Cantidad: ${cantidad}, Precio: ${precioProducto}"$)
				Subs.guardaProductoSinGestion(estaPromo, precioProducto, cantidad, nomProd(0), idProducto, Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, B4XPages.MainPage.tipo_venta)
			End If
		Next
	Else
		Log("No hay productos variables (Grupo 3) para guardar.")
	End If

	Log("Marcando bTerminarClicked como True...")
	B4XPages.MainPage.bTerminarClicked = True

	Log("Navegando a la página de productos...")
	B4XPages.ShowPage("productos")

	Log("Ejecutando b_terminar1_Click en la página de productos...")
	B4XPages.MainPage.productos.b_terminar1_Click

	Log("btnGuardaPromo_Click finalizado.")
End Sub

Private Sub btnContinuar_Click
	Subs.guardaProductoSinGestion(estaPromo, 0, lblSumPromo.Text, Encabezado, estaPromo, Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, B4XPages.MainPage.tipo_venta)
'	Log(Encabezado)
	If productosFijos > 0 Then
		For i = 0 To pnlFijos.NumberOfViews - 1
			Dim pnlProducto As Panel = pnlFijos.GetView(i)
			Dim precioProducto As Float = pnlProducto.Tag.As(Float)
			Dim cantidad As Int = 0

			Dim lblNombre2 As Label = pnlProducto.GetView(0)
			Dim nombreProducto As String = lblNombre2.Text
			Private idProducto As String = lblNombre2.tag
			
			'Este for hace que la cantidad de la etiqueta de los fijos cambie con el menos

			Dim cursorProductosFijos As Cursor = Starter.skmt.ExecQuery($"SELECT CAT_DP_PZAS FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID = '${estaPromo}' AND CAT_DP_TIPO = '0' and cat_dp_idprod = '${idProducto}'"$)
			If cursorProductosFijos.RowCount > 0 Then
				cursorProductosFijos.Position = 0
				cantidad = cursorProductosFijos.GetString("CAT_DP_PZAS") * lblSumPromo.Text
			End If
			Log("Esto debe ser cantidad: " & cantidad)

			
			Dim nomProd() As String = Regex.Split("\r\n|\n", nombreProducto)
			Subs.guardaProductoSinGestion(estaPromo, precioProducto, cantidad, nomProd(0), idProducto, Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, B4XPages.MainPage.tipo_venta)
			Log("" & estaPromo & "" &  precioProducto & "" &  cantidad & "" &  nomProd(0) & "" &  idProducto & "" &  Subs.traeCliente & "" &  Subs.traeFecha & "" &  Subs.traeUsuarioDeBD & "" &  Subs.traeRuta & "" &  0 & "" &  B4XPages.MainPage.tipo_venta)
		Next
	Else
		Log("No hay productos fijos para guardar.")
	End If

	If variablesRequeridas1 > 0 Then
		For i = 0 To pnlVariables1.NumberOfViews - 1
			Dim pnlProducto As Panel = pnlVariables1.GetView(i)
			Dim precioProducto As Float = pnlProducto.Tag.As(Float)
			Dim lblValueVar1 As Label = pnlProducto.GetView(2)
			Dim cantidad As Int = lblValueVar1.Text.As(Int)
			Dim lblNombre3 As Label = pnlProducto.GetView(0)
			Dim nombreProducto As String = lblNombre3.Text
			Private idProducto As String = lblNombre3.tag
			Dim nomProd() As String = Regex.Split("\r\n|\n", nombreProducto)
			If cantidad > 0 Then
				Subs.guardaProductoSinGestion(estaPromo, precioProducto, cantidad, nomProd(0), idProducto, Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, B4XPages.MainPage.tipo_venta)
			End If
		Next
	Else
		Log("No hay productos variables (Grupo 1) para guardar.")
	End If

	If variablesRequeridas2 > 0 Then
		For i = 0 To pnlVariables2.NumberOfViews - 1
			Dim pnlProducto As Panel = pnlVariables2.GetView(i)
			Dim precioProducto As Float = pnlProducto.Tag.As(Float)
			Dim lblValueVar2 As Label = pnlProducto.GetView(2)
			Dim cantidad As Int = lblValueVar2.Text.As(Int)
			Dim lblNombre4 As Label = pnlProducto.GetView(0)
			Dim nombreProducto As String = lblNombre4.Text
			Private idProducto As String = lblNombre4.tag
			Dim nomProd() As String = Regex.Split("\r\n|\n", nombreProducto)
			If cantidad > 0 Then
				Subs.guardaProductoSinGestion(estaPromo, precioProducto, cantidad, nomProd(0), idProducto, Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, B4XPages.MainPage.tipo_venta)
			End If
		Next
	Else
		Log("No hay productos variables (Grupo 2) para guardar.")
	End If

	If variablesRequeridas3 > 0 Then
		For i = 0 To pnlVariables3.NumberOfViews - 1
			Dim pnlProducto As Panel = pnlVariables3.GetView(i)
			Dim precioProducto As Float = pnlProducto.Tag.As(Float)
			Dim lblValueVar3 As Label = pnlProducto.GetView(2)
			Dim cantidad As Int = lblValueVar3.Text.As(Int)
			Dim lblNombre5 As Label = pnlProducto.GetView(0)
			Dim nombreProducto As String = lblNombre5.Text
			Private idProducto As String = lblNombre5.tag
			Dim nomProd() As String = Regex.Split("\r\n|\n", nombreProducto)
			If cantidad > 0 Then
				Subs.guardaProductoSinGestion(estaPromo, precioProducto, cantidad, nomProd(0), idProducto, Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, B4XPages.MainPage.tipo_venta)
			End If
		Next
	Else
		Log("No hay productos variables (Grupo 3) para guardar.")
	End If

	Private prodspage As C_Productos
	If prodspage.IsInitialized Then
		prodspage.lv_catalogos.Visible = True
		prodspage.lv_promos.Visible = False
		prodspage.clv_productos.AsView.Visible = False
	End If
	B4XPages.MainPage.bTerminarClicked = True
	B4XPages.ShowPage("productos")

	Log("btnContinuar_Click finalizado.")
End Sub

Private Sub ActualizarVisibilidadBtnGuardaPromo
	Dim condicionesCumplidas As Boolean = VerificarCondicionesParabtnGuardaPromo
    
	If condicionesCumplidas Then
		btnGuardaPromo.Visible = True
		btnGuardaPromo.Enabled = True
		btnContinuar.Visible = True
		btnContinuar.Enabled = True
	Else
		btnGuardaPromo.Visible = False
		btnGuardaPromo.Enabled = False
		btnContinuar.Visible = False
		btnContinuar.Enabled = False
	End If
    
	AjustarScroll
End Sub

Private Sub VerificarCondicionesParabtnGuardaPromo As Boolean

	Dim hayProductosFijos As Boolean = (productosFijos > 0)
    
	Dim hayVar1 As Boolean = (variablesRequeridas1 > 0)
	Dim hayVar2 As Boolean = (variablesRequeridas2 > 0)
	Dim hayVar3 As Boolean = (variablesRequeridas3 > 0)
    
	If Not(hayProductosFijos) And Not(hayVar1) And Not(hayVar2) And Not(hayVar3) Then
		Log("No hay valores mayores a 0, no se muestra el botón.")
		Return False
	End If
    
	If hayVar1 Or hayVar2 Or hayVar3 Then
		Dim condicionVar1 As Boolean = True
		Dim condicionVar2 As Boolean = True
		Dim condicionVar3 As Boolean = True
        
		If hayVar1 Then
			condicionVar1 = (SumarVariables1 = variablesRequeridas1)
'			Log("Condición Var1: " & condicionVar1)
		End If
        
		If hayVar2 Then
			condicionVar2 = (SumarVariables2 = variablesRequeridas2)
'			Log("Condición Var2: " & condicionVar2)
		End If
        
		If hayVar3 Then
			condicionVar3 = (SumarVariables3 = variablesRequeridas3)
'			Log("Condición Var3: " & condicionVar3)
		End If
        
		If condicionVar1 And condicionVar2 And condicionVar3 Then
'			Log("Todas las condiciones de variables requeridas se cumplen, se muestra el botón.")
			Return True
		Else
'			Log("No se cumplen todas las condiciones de variables requeridas, no se muestra el botón.")
			Return False
		End If
	End If
    
	If hayProductosFijos Then
		Return True
	End If
    
'	Log("No hay valores mayores a 0, no se muestra el botón.")
	Return False
End Sub

Private Sub SumarFijos As Int
'	Log("Aqui entro cuando?<<<<<<<<<<<<<<<<<<<<<<<<<<")
	Private fijos As Int = 0
	Private textoOriginal As String = lblFijosRequeridos.Text.Trim
'	Log("Que es este texto? : <<<<<<<<<<<<<<<<<<<<<<<<<<" & textoOriginal)
	If textoOriginal.Length > 0 Then
		Private partes() As String = Regex.Split(" ", textoOriginal)
        
		If partes.Length > 2 Then
			Private posibleNumero As String = partes(2).Trim.Replace("'", "")
            
			If posibleNumero.Length > 0 And IsNumber(posibleNumero) Then
				fijos = posibleNumero
			End If
		End If
	End If
	
	Log("Estos son los fijos: " & fijos)
	Return fijos
End Sub

Private Sub SumarVariables1 As Int
	Dim totalVar1 As Int = 0
    
	If pnlVariables1.IsInitialized Then
		For i = 0 To pnlVariables1.NumberOfViews - 1
			Dim pnlProducto As Panel = pnlVariables1.GetView(i)
			Dim lblValueVar1 As Label = pnlProducto.GetView(2)
			If lblValueVar1.Text = "" Or lblValueVar1.Text = "-" Or lblValueVar1.Text = " " Then
				lblValueVar1.Text = 0
			End If
			totalVar1 = totalVar1 + lblValueVar1.Text.As(Int)
		Next
	End If
    
	Log("Total variables 1= " & totalVar1)
	Return totalVar1
End Sub

Private Sub SumarVariables2 As Int
	Dim totalVar2 As Int = 0
    
	If pnlVariables2.IsInitialized Then
		For i = 0 To pnlVariables2.NumberOfViews - 1
			Dim pnlProducto As Panel = pnlVariables2.GetView(i)
			Dim lblValueVar2 As Label = pnlProducto.GetView(2)
			If lblValueVar2.Text = "" Then
				lblValueVar2.Text = 0
			End If
			totalVar2 = totalVar2 + lblValueVar2.Text.As(Int)
		Next
	End If
    
	Return totalVar2
End Sub

Private Sub SumarVariables3 As Int
	Dim totalVar3 As Int = 0
    
	If pnlVariables3.IsInitialized Then
		For i = 0 To pnlVariables3.NumberOfViews - 1
			Dim pnlProducto As Panel = pnlVariables3.GetView(i)
			Dim lblValueVar3 As Label = pnlProducto.GetView(2)
			If lblValueVar3.Text = "" Then
				lblValueVar3.Text = 0
			End If
			totalVar3 = totalVar3 + lblValueVar3.Text.As(Int)
		Next
	End If
    
	Return totalVar3
End Sub

Private Sub CalcularTotalValor As Float
	Dim total As Float = 0

'	If pnlFijos.IsInitialized And productosFijos > 0 Then
'		For i = 0 To pnlFijos.NumberOfViews - 1
'			Dim pnlProducto As Panel = pnlFijos.GetView(i)
'			Dim precioProducto As Float = pnlProducto.Tag.As(Float)
'			
'			Log($"---------->>>   ${precioProducto}, ${Regex.Split(" ", lblFijosRequeridos.text)(2)}"$)
'			
'			total = total + (precioProducto * Regex.Split(" ", lblFijosRequeridos.text)(2))
'		Next
'	End If
	Private tot As Cursor = Starter.skmt.ExecQuery($"select (cat_dp_precio * cat_dp_pzas) as total from cat_detalles_paq where cat_dp_tipo = '0' and cat_dp_id = '${estaPromo}'"$)
	Private x As String = 0
	If tot.RowCount > 0 Then
		For i = 0 To tot.RowCount - 1
			tot.Position = i
			x = x + tot.GetString("total")
		Next
		Log("Que valor tiene x? ------------><<<<<" & x)
		total = x
	End If
'	Log("=====================>>>>  " & x)

	If pnlVariables1.IsInitialized Then
		For i = 0 To pnlVariables1.NumberOfViews - 1
			Dim pnlProducto As Panel = pnlVariables1.GetView(i)
			Dim lblValueVar1 As Label = pnlProducto.GetView(2)
			Dim cantidad As Int = lblValueVar1.Text.As(Int)
			If cantidad > 0 Then
				total = total + (pnlProducto.Tag.As(Float) * cantidad)
			End If
		Next
	End If

	If pnlVariables2.IsInitialized Then
		For i = 0 To pnlVariables2.NumberOfViews - 1
			Dim pnlProducto As Panel = pnlVariables2.GetView(i)
			Dim lblValueVar2 As Label = pnlProducto.GetView(2)
			Dim cantidad As Int = lblValueVar2.Text.As(Int)
			If cantidad > 0 Then
				total = total + (pnlProducto.Tag.As(Float) * cantidad)
			End If
		Next
	End If

	If pnlVariables3.IsInitialized Then
		For i = 0 To pnlVariables3.NumberOfViews - 1
			Dim pnlProducto As Panel = pnlVariables3.GetView(i)
			Dim lblValueVar3 As Label = pnlProducto.GetView(2)
			Dim cantidad As Int = lblValueVar3.Text.As(Int)
			If cantidad > 0 Then
				total = total + (pnlProducto.Tag.As(Float) * cantidad)
			End If
		Next
	End If
	Return total
End Sub

'Private Sub ActualizarTotalValor
'	
'	
'	Dim total As Float = CalcularTotalValor * lblSumPromo.Text
'	lblTotalValor.Text = NumberFormat(total, 1, 2)
'	Log("Esto es calcular valor: -------------------->" & CalcularTotalValor)
'	Log("En que momento hago esto?: -------------------->" & lblTotalValor.Text)
'End Sub

private Sub ActualizarTotalValor
	Private soloFijos As Cursor = Starter.skmt.ExecQuery($"select CAT_DP_ID from cat_detalles_paq where cat_dp_tipo = '0' and cat_dp_id = '${estaPromo}'"$)
    
	Dim totalFijos As Float = 0
	Dim totalVariables As Float = 0
    
	If soloFijos.RowCount > 0 Then
		' Calcular fijos
		totalFijos = CalcularTotalFijos ' Necesitarías una función específica para fijos
		Log("Total de fijos: " & totalFijos & "<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<")
        
		' Calcular variables por separado
		totalVariables = CalcularTotalVariables ' Función específica para variables
	Else
		' Solo hay variables
		totalVariables = CalcularTotalValor
	End If
    
	Dim totalGeneral As Float = totalFijos + totalVariables
	lblTotalValor.Text = NumberFormat(totalGeneral, 1, 2)
End Sub

Private Sub CalcularTotalFijos As Float
	Dim total As Float = 0
    
	' Consulta para obtener solo los productos fijos (tipo '0')
	Dim cursorFijos As Cursor = Starter.skmt.ExecQuery("SELECT cat_dp_precio as precio FROM cat_detalles_paq WHERE cat_dp_tipo = '0' AND cat_dp_id = '" & estaPromo & "'")
    
	If cursorFijos.RowCount > 0 Then
		For i = 0 To cursorFijos.RowCount - 1
			cursorFijos.Position = i
			Dim precio As String = cursorFijos.GetString("precio")
			
			Private pzs2 As Cursor = Starter.skmt.ExecQuery($"select sum(CAT_DP_PZAS) as suma from cat_detalles_paq where cat_dp_tipo = '0' and cat_dp_id = '${estaPromo}'"$)
			If pzs2.RowCount > 0 Then
				pzs2.Position = 0
'				Log(pzs2.GetString("suma") & "En este ejemplo debe ser un 7 <<<<<<<<<<<<<<<<<<<<")
			End If
			lblFijosRequeridos.Text = "Productos fijos: " & (pzs2.GetString("suma") * lblSumPromo.Text)
			
			total = (precio * pzs2.GetString("suma") * lblSumPromo.Text)
'			Log("Esto es por lo que debe multiplicarse: " & pzs2.GetString("suma") & "Esto es precio: " & precio)
		Next
	End If
    
	cursorFijos.Close
    
	Return total
End Sub

Private Sub CalcularTotalVariables As Float
	Dim total As Float = 0
	Dim precioVar1 As Float = 0
	Dim precioVar2 As Float = 0
	Dim precioVar3 As Float = 0
    
	' Consulta para obtener los productos variables (tipo '1', '2' o '3')
	Dim cursorVariables As Cursor = Starter.skmt.ExecQuery("SELECT cat_dp_precio as precio, cat_dp_tipo as tipo FROM cat_detalles_paq WHERE cat_dp_tipo <> '0' AND cat_dp_id = '" & estaPromo & "'")
    
	If cursorVariables.RowCount > 0 Then
		' Primero: Recopilamos los precios por tipo
		For i = 0 To cursorVariables.RowCount - 1
			cursorVariables.Position = i
			Dim precio As String = cursorVariables.GetString("precio")
			Dim tipoVariable As String = cursorVariables.GetString("tipo")
            
			Select tipoVariable
				Case "1"
					precioVar1 = precio
				Case "2"
					precioVar2 = precio
				Case "3"
					precioVar3 = precio
			End Select
		Next
        
		' Segundo: Aplicamos las cantidades una sola vez
		Dim cantidadVar1 As Int = SumarVariables1
		Dim cantidadVar2 As Int = SumarVariables2
		Dim cantidadVar3 As Int = SumarVariables3
        
		If cantidadVar1 > 0 Then
			total = total + (precioVar1 * cantidadVar1)
			Log("Precio Var1: " & precioVar1 & " x " & cantidadVar1 & " = " & (precioVar1 * cantidadVar1))
		End If
        
		If cantidadVar2 > 0 Then
			total = total + (precioVar2 * cantidadVar2)
			Log("Precio Var2: " & precioVar2 & " x " & cantidadVar2 & " = " & (precioVar2 * cantidadVar2))
		End If
        
		If cantidadVar3 > 0 Then
			total = total + (precioVar3 * cantidadVar3)
			Log("Precio Var3: " & precioVar3 & " x " & cantidadVar3 & " = " & (precioVar3 * cantidadVar3))
		End If
	End If
    
	cursorVariables.Close
    
	Log("Total final de variables: " & total)
	Return total
End Sub