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}'"$) 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"$) 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"$) 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"$) 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"$) 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