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 etCantidadProductos As Label Private etCantidadProductos2 As Label Private etCantidadProductos3 As Label Private etCantidadProductos4 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 pnlSecundario1 As Panel Private pnlSecundario2 As Panel Private pnlSecundario3 As Panel Private pnlSecundario4 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 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) etCantidadProductos.Initialize("etCantidadProductos") etCantidadProductos.TextColor = xui.Color_Black etCantidadProductos.TextSize = 12 etCantidadProductos.Color = xui.Color_LightGray etCantidadProductos.Gravity = Gravity.CENTER etCantidadProductos.SingleLine = True pnlSecundario1.Initialize("pnlSecundario1") pnlContainer.AddView(pnlSecundario1, 5dip, etCantidadProductos.Top + etCantidadProductos.Height + 10dip, pnlContainer.Width - 10dip, 100dip) pnlSecundario1.Color = xui.Color_White pnlSecundario1.Tag = "pnlSecundario1" etCantidadProductos2.Initialize("etCantidadProductos2") etCantidadProductos2.TextColor = xui.Color_Black etCantidadProductos2.TextSize = 12 etCantidadProductos2.Color = xui.Color_LightGray etCantidadProductos2.Gravity = Gravity.CENTER etCantidadProductos2.SingleLine = True pnlSecundario2.Initialize("pnlSecundario2") pnlContainer.AddView(pnlSecundario2, 5dip, etCantidadProductos2.Top + etCantidadProductos2.Height + 10dip, pnlContainer.Width - 10dip, 100dip) pnlSecundario2.Color = xui.Color_White pnlSecundario2.Tag = "pnlSecundario2" etCantidadProductos3.Initialize("etCantidadProductos3") etCantidadProductos3.TextSize = 12 etCantidadProductos3.Color = xui.Color_LightGray etCantidadProductos3.Gravity = Gravity.CENTER etCantidadProductos3.TextColor = xui.Color_Black etCantidadProductos3.SingleLine = True pnlSecundario3.Initialize("pnlSecundario3") pnlContainer.AddView(pnlSecundario3, 5dip, etCantidadProductos3.Top + etCantidadProductos3.Height + 10dip, pnlContainer.Width - 10dip, 100dip) pnlSecundario3.Color = xui.Color_White pnlSecundario3.Tag = "pnlSecundario3" 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 anchoEtCantidadProductos As Int = anchoTotal * 0.65 Dim anchoEtLimiteSuma As Int = anchoTotal - anchoEtCantidadProductos pnlContainer.AddView(etCantidadProductos, 10dip, 10dip, anchoEtCantidadProductos, 50dip) pnlContainer.AddView(etLimiteSuma_Sub_pnl1, etCantidadProductos.Left + etCantidadProductos.Width + 10dip, 10dip, anchoEtLimiteSuma, 50dip) pnlContainer.AddView(etCantidadProductos2, 10dip, etCantidadProductos.Top + etCantidadProductos.Height + 10dip, anchoEtCantidadProductos, 50dip) pnlContainer.AddView(etLimiteSuma_Sub_pnl2, etCantidadProductos2.Left + etCantidadProductos2.Width + 10dip, etCantidadProductos2.Top, anchoEtLimiteSuma, 50dip) pnlContainer.AddView(etCantidadProductos3, 10dip, etCantidadProductos2.Top + etCantidadProductos2.Height + 10dip, anchoEtCantidadProductos, 50dip) pnlContainer.AddView(etLimiteSuma_Sub_pnl3, etCantidadProductos3.Left + etCantidadProductos3.Width + 10dip, etCantidadProductos3.Top, anchoEtLimiteSuma, 50dip) etCantidadProductos4.Initialize("etCantidadProductos4") etCantidadProductos4.TextSize = 12 etCantidadProductos4.Color = xui.Color_LightGray etCantidadProductos4.Gravity = Gravity.CENTER etCantidadProductos4.TextColor = xui.Color_Black etCantidadProductos4.SingleLine = True etLimiteSuma_Sub_pnl4.Initialize("etLimiteSuma_Sub_pnl4") etLimiteSuma_Sub_pnl4.TextColor = xui.Color_Black etLimiteSuma_Sub_pnl4.SingleLine = True pnlSecundario4.Initialize("pnlSecundario4") pnlContainer.AddView(pnlSecundario4, 5dip, etCantidadProductos4.Top + etCantidadProductos4.Height + 10dip, pnlContainer.Width - 10dip, 100dip) pnlSecundario4.Color = xui.Color_White pnlSecundario4.Tag = "pnlSecundario4" pnlContainer.AddView(etCantidadProductos4, 10dip, etCantidadProductos3.Top + etCantidadProductos3.Height + 10dip, anchoEtCantidadProductos, 50dip) pnlContainer.AddView(etLimiteSuma_Sub_pnl4, etCantidadProductos4.Left + etCantidadProductos4.Width + 10dip, etCantidadProductos4.Top, anchoEtLimiteSuma, 50dip) If VerificarCondicionesParabtnGuardaPromo Then btnGuardaPromo.Visible = True Else btnGuardaPromo.Visible = False End If AjustarScroll End Sub Private Sub B4XPage_Appear etCantidadProductos.Text = "0" etCantidadProductos2.Text = "0" etCantidadProductos3.Text = "0" etCantidadProductos4.Text = "0" productosFijos = 0 variablesRequeridas1= 0 variablesRequeridas2= 0 variablesRequeridas3= 0 sumaVar1Tot = 0 sumaVar2Tot = 0 sumaVar3Tot = 0 If pnlSecundario1.IsInitialized Then pnlSecundario1.RemoveAllViews If pnlSecundario2.IsInitialized Then pnlSecundario2.RemoveAllViews If pnlSecundario3.IsInitialized Then pnlSecundario3.RemoveAllViews If pnlSecundario4.IsInitialized Then pnlSecundario4.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 lblSumaTotal.Text = SumarValoresLblValue 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 etCantidadProductos.Visible = False etLimiteSuma_Sub_pnl1.Visible = False pnlSecundario1.Visible = False End If Else productosFijos = 0 End If productosFijos_Iniciales = productosFijos End Sub Private Sub ObtenerVariablesRequeridas(promo As String) 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 etCantidadProductos2.Visible = False etLimiteSuma_Sub_pnl2.Visible = False pnlSecundario2.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 etCantidadProductos3.Visible = False etLimiteSuma_Sub_pnl3.Visible = False pnlSecundario3.Visible = False End If If cursorVariablesReq.GetInt("CAT_GP_VARREQ3") <> 0 And cursorVariablesReq.GetString("CAT_GP_VARREQ3") <> " " Then variablesRequeridas3 = cursorVariablesReq.GetInt("CAT_GP_VARREQ3") etCantidadProductos4.Visible = True etLimiteSuma_Sub_pnl4.Visible = True pnlSecundario4.Visible = True Else etCantidadProductos4.Visible = False etLimiteSuma_Sub_pnl4.Visible = False pnlSecundario4.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 esteCliente = cliente Private mp As Map = Subs.traePromo(promo, cliente) Private prodsPromo As Map = mp.Get("productos") Dim invDispPromo As Map = Subs.traemosInventarioDisponibleParaPromo(promo) lblMaxPromo.Text = Subs.revisaMaxPromosProdsVariablesPorInventario(mp) 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 pnlSecundario1.IsInitialized Then pnlSecundario1.RemoveAllViews If pnlSecundario2.IsInitialized Then pnlSecundario2.RemoveAllViews If pnlSecundario3.IsInitialized Then pnlSecundario3.RemoveAllViews If pnlSecundario4.IsInitialized Then pnlSecundario4.RemoveAllViews Encabezado = promo If productosFijos > 0 Then pnlSecundario1.Visible = True etCantidadProductos.Visible = True etCantidadProductos.Text = $"Productos Fijos: '${productosFijos}'"$ etCantidadProductos.Left = 0 etCantidadProductos.Width = Root.Width Dim cursorProdFijo 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 = 0"$) If cursorProdFijo.RowCount > 0 Then For i = 0 To cursorProdFijo.RowCount - 1 cursorProdFijo.Position = i GenerarPanelesP1(cursorProdFijo.GetString("CAT_GP_NOMBRE"), cursorProdFijo.GetString("CAT_GP_ALMACEN"), cursorProdFijo.GetString("CAT_DP_PRECIO"), cursorProdFijo.GetString("CAT_DP_IDPROD"), i) Next End If Else pnlSecundario1.Visible = False ' etCantidadProductos.Text = $"No hay productos Fijos"$ etCantidadProductos.Visible = False End If If variablesRequeridas1 > 0 Then pnlSecundario2.Visible = True etCantidadProductos2.Visible = True etCantidadProductos2.Text = $"Primeros Variables Requeridos: '${variablesRequeridas1}'"$ etCantidadProductos2.Left = 0 etCantidadProductos2.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 GenerarPanelesP2(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 pnlSecundario2.Visible = False etCantidadProductos2.Visible = False End If If variablesRequeridas2 > 0 Then pnlSecundario3.Visible = True etCantidadProductos3.Visible = True etCantidadProductos3.Text = $"Segundos Variables Requeridos: '${variablesRequeridas2}'"$ etCantidadProductos3.Left = 0 etCantidadProductos3.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 GenerarPanelesP3(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 pnlSecundario3.Visible = False etCantidadProductos3.Visible = False End If If variablesRequeridas3 > 0 Then pnlSecundario4.Visible = True etCantidadProductos4.Visible = True etCantidadProductos4.Text = $"Tercer Variables Requeridas: '${variablesRequeridas3}'"$ etCantidadProductos4.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 GenerarPanelesP4(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 pnlSecundario4.Visible = False etCantidadProductos4.Visible = False End If AjustarScroll End Sub Private Sub btnMenosPromo_Click 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 etCantidadProductos.Text = $"Productos Fijos: '${productosFijos}'"$ etCantidadProductos.Left = 0 etCantidadProductos.Width = Root.Width etCantidadProductos2.Text = $"Primeros Variables Requeridos: '${variablesRequeridas1}'"$ etCantidadProductos2.Left = 0 etCantidadProductos2.Width = Root.Width etCantidadProductos3.Text = $"Segundos Variables Requeridos: '${variablesRequeridas2}'"$ etCantidadProductos3.Left = 0 etCantidadProductos3.Width = Root.Width etCantidadProductos4.Text = $"Tercer Variables Requeridas: '${variablesRequeridas3}'"$ etCantidadProductos4.Left = 0 etCantidadProductos4.Width = Root.Width lblSumaTotal.Text = SumarValoresLblValue ActualizarTotalValor ActualizarVisibilidadBtnGuardaPromo End Sub Private Sub btnSumaPromo_Click Dim currentValue As Int = lblSumPromo.Text.As(Int) Dim maxValue As Int = lblMaxPromo.Text.As(Int) If currentValue < maxValue 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 etCantidadProductos.Text = $"Productos Fijos: '${productosFijos}'"$ etCantidadProductos.Left = 0 etCantidadProductos.Width = Root.Width etCantidadProductos2.Text = $"Primeros Variables Requeridos: '${variablesRequeridas1}'"$ etCantidadProductos2.Left = 0 etCantidadProductos2.Width = Root.Width etCantidadProductos3.Text = $"Segundos Variables Requeridos: '${variablesRequeridas2}'"$ etCantidadProductos3.Left = 0 etCantidadProductos3.Width = Root.Width etCantidadProductos4.Text = $"Tercer Variables Requeridas: '${variablesRequeridas3}'"$ etCantidadProductos4.Left = 0 etCantidadProductos4.Width = Root.Width lblSumaTotal.Text = SumarValoresLblValue ActualizarTotalValor ActualizarVisibilidadBtnGuardaPromo End Sub Private Sub btnVars1Mas_Click If sumaVar1Tot >= variablesRequeridas1 Then Return End If Dim pnlProducto As Panel pnlProducto = Sender.As(View).Parent 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 currentValue = currentValue + 1 lblValue.Text = currentValue sumaVar1Tot = sumaVar1Tot + 1 lblSumaTotal.Text = SumarValoresLblValue ActualizarVisibilidadBtnGuardaPromo ActualizarTotalValor End Sub Private Sub btnVars1Menos_Click 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 lblSumaTotal.Text = SumarValoresLblValue ActualizarVisibilidadBtnGuardaPromo ActualizarTotalValor End If End Sub Private Sub btnVars2Mas_Click If sumaVar2Tot >= variablesRequeridas2 Then Return End If Dim pnlProducto As Panel pnlProducto = Sender.As(View).Parent 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 currentValue = currentValue + 1 lblValue.Text = currentValue sumaVar2Tot = sumaVar2Tot + 1 lblSumaTotal.Text = SumarValoresLblValue ActualizarVisibilidadBtnGuardaPromo ActualizarTotalValor End Sub Private Sub btnVars2Menos_Click 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 lblSumaTotal.Text = SumarValoresLblValue ActualizarVisibilidadBtnGuardaPromo ActualizarTotalValor End If End Sub Private Sub btnVars3Mas_Click If sumaVar3Tot >= variablesRequeridas3 Then Return End If Dim pnlProducto As Panel pnlProducto = Sender.As(View).Parent 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 currentValue = currentValue + 1 lblValue.Text = currentValue sumaVar3Tot = sumaVar3Tot + 1 lblSumaTotal.Text = SumarValoresLblValue ActualizarVisibilidadBtnGuardaPromo ActualizarTotalValor End Sub Private Sub btnVars3Menos_Click 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 ActualizarVisibilidadBtnGuardaPromo ActualizarTotalValor End If End Sub Private Sub GenerarPanelesP1(nombreProd As String, inventario As String, precio As String, idProducto As String, numberOfViews As Int) If Not(pnlSecundario1.IsInitialized) Then Return End If Private estePrecio As String = precio Dim pnlProducto As Panel pnlProducto.Initialize("pnlProducto") pnlProducto.SetLayout(0, 0, pnlSecundario1.Width, 70dip) 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) pnlProducto.Tag = estePrecio pnlSecundario1.AddView(pnlProducto, 0, numberOfViews * 70dip, pnlSecundario1.Width, 70dip) pnlSecundario1.Height = (numberOfViews * 70dip) + 70dip AjustarScroll End Sub Private Sub GenerarPanelesP2(nombreProd As String, inventario As String, precio As String, idProducto As String, numberOfViews As Int) If Not(pnlSecundario2.IsInitialized) Then Return End If Private estePrecio As String = precio Dim pnlProducto As Panel pnlProducto.Initialize("pnlProducto") pnlProducto.SetLayout(0, 0, pnlSecundario2.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 lblValue As Label lblValue.Initialize("lblValue") lblValue.Text = "0" lblValue.TextColor = xui.Color_Black lblValue.Gravity = Gravity.CENTER lblValue.TextSize = 12 pnlProducto.AddView(lblValue, 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, lblValue.Left + lblValue.Width + spacing, 10dip, btnWidth, pnlProducto.Height - 10dip) pnlProducto.Tag = estePrecio pnlSecundario2.AddView(pnlProducto, 0, numberOfViews * 70dip, pnlSecundario2.Width, 70dip) pnlSecundario2.Height = (numberOfViews * 70dip) + 70dip AjustarScroll End Sub Private Sub GenerarPanelesP3(nombreProd As String, inventario As String, precio As String, idProducto As String, numberOfViews As Int) If Not(pnlSecundario3.IsInitialized) Then Return End If Private estePrecio As String = precio Dim pnlProducto As Panel pnlProducto.Initialize("pnlProducto") pnlProducto.SetLayout(0, 0, pnlSecundario3.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 lblValue As Label lblValue.Initialize("lblValue") lblValue.Text = "0" lblValue.TextColor = xui.Color_Black lblValue.Gravity = Gravity.CENTER lblValue.TextSize = 12 pnlProducto.AddView(lblValue, 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, lblValue.Left + lblValue.Width + spacing, 10dip, btnWidth, pnlProducto.Height - 10dip) pnlProducto.Tag = estePrecio pnlSecundario3.AddView(pnlProducto, 0, numberOfViews * 70dip, pnlSecundario3.Width, 70dip) pnlSecundario3.Height = (numberOfViews * 70dip) + 70dip AjustarScroll End Sub Private Sub GenerarPanelesP4(nombreProd As String, inventario As String, precio As String, idProducto As String, numberOfViews As Int) If Not(pnlSecundario4.IsInitialized) Then Return End If Private estePrecio As String = precio Dim pnlProducto As Panel pnlProducto.Initialize("pnlProducto") pnlProducto.SetLayout(0, 0, pnlSecundario4.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 lblValue As Label lblValue.Initialize("lblValue") lblValue.Text = "0" lblValue.TextColor = xui.Color_Black lblValue.Gravity = Gravity.CENTER lblValue.TextSize = 12 pnlProducto.AddView(lblValue, 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, lblValue.Left + lblValue.Width + spacing, 10dip, btnWidth, pnlProducto.Height - 10dip) pnlProducto.Tag = estePrecio pnlSecundario4.AddView(pnlProducto, 0, numberOfViews * 70dip, pnlSecundario4.Width, 70dip) pnlSecundario4.Height = (numberOfViews * 70dip) + 70dip AjustarScroll If VerificarCondicionesParabtnGuardaPromo Then btnGuardaPromo.Visible = True Else btnGuardaPromo.Visible = False End If End Sub Private Sub AjustarScroll Dim baseHeight As Int = 0 If productosFijos > 0 And pnlSecundario1.Visible Then etCantidadProductos.Top = baseHeight etLimiteSuma_Sub_pnl1.Top = etCantidadProductos.Top baseHeight = baseHeight + etCantidadProductos.Height pnlSecundario1.Top = baseHeight baseHeight = baseHeight + pnlSecundario1.Height End If If variablesRequeridas1 > 0 And pnlSecundario2.Visible Then etCantidadProductos2.Top = baseHeight etLimiteSuma_Sub_pnl2.Top = etCantidadProductos2.Top baseHeight = baseHeight + etCantidadProductos2.Height pnlSecundario2.Top = baseHeight baseHeight = baseHeight + pnlSecundario2.Height End If If variablesRequeridas2 > 0 And pnlSecundario3.Visible Then etCantidadProductos3.Top = baseHeight etLimiteSuma_Sub_pnl3.Top = etCantidadProductos3.Top baseHeight = baseHeight + etCantidadProductos3.Height pnlSecundario3.Top = baseHeight baseHeight = baseHeight + pnlSecundario3.Height End If If variablesRequeridas3 > 0 And pnlSecundario4.Visible Then etCantidadProductos4.Top = baseHeight etLimiteSuma_Sub_pnl4.Top = etCantidadProductos4.Top baseHeight = baseHeight + etCantidadProductos4.Height pnlSecundario4.Top = baseHeight baseHeight = baseHeight + pnlSecundario4.Height End If scrollView.Panel.Height = baseHeight pnlProdTot.Top = Root.Height - pnlProdTot.Height End Sub Private Sub btnGuardaPromo_Click Log("Iniciando btnGuardaPromo_Click...") ' Guardamos Encabezado Subs.guardaProductoSinGestion(Encabezado, 0, lblSumPromo.Text, Encabezado, Encabezado, Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, B4XPages.MainPage.tipo_venta) If productosFijos > 0 Then Log("Guardando productos fijos...") For i = 0 To pnlSecundario1.NumberOfViews - 1 Dim pnlProducto As Panel = pnlSecundario1.GetView(i) Dim precioProducto As Float = pnlProducto.Tag.As(Float) Dim cantidad As Int = productosFijos ' Dim idProducto As String = pnlProducto.Tag ' Asegúrate de que esto sea correcto Log(">>>>>>> ESTE DEBE SER EL ID DEL PRODUCTO" & pnlSecundario1.Tag) 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 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 pnlSecundario2.NumberOfViews - 1 Dim pnlProducto As Panel = pnlSecundario2.GetView(i) Dim precioProducto As Float = pnlProducto.Tag.As(Float) Dim lblValue As Label = pnlProducto.GetView(2) Dim cantidad As Int = lblValue.Text.As(Int) Dim lblNombre As Label = pnlProducto.GetView(0) Log(">>>>>>> ESTE DEBE SER EL ID DEL PRODUCTO:" & lblNombre.tag) 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 pnlSecundario3.NumberOfViews - 1 Dim pnlProducto As Panel = pnlSecundario3.GetView(i) Dim precioProducto As Float = pnlProducto.Tag.As(Float) Dim lblValue As Label = pnlProducto.GetView(2) Dim cantidad As Int = lblValue.Text.As(Int) ' Dim idProducto As String = pnlProducto.Tag 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 pnlSecundario4.NumberOfViews - 1 Dim pnlProducto As Panel = pnlSecundario4.GetView(i) Dim precioProducto As Float = pnlProducto.Tag.As(Float) Dim lblValue As Label = pnlProducto.GetView(2) Dim cantidad As Int = lblValue.Text.As(Int) ' Dim idProducto As String = pnlProducto.Tag 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 Log("Iniciando btnContinuar_Click...") 'Guardamos Encabezado Subs.guardaProductoSinGestion(Encabezado, 0, lblSumPromo.Text, Encabezado, Encabezado, Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, B4XPages.MainPage.tipo_venta) ' Guardar productos fijos (si existen) If productosFijos > 0 Then For i = 0 To pnlSecundario1.NumberOfViews - 1 Dim pnlProducto As Panel = pnlSecundario1.GetView(i) Dim precioProducto As Float = pnlProducto.Tag.As(Float) Dim cantidad As Int = productosFijos ' Dim idProducto As String = pnlProducto.Tag 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) Subs.guardaProductoSinGestion(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 pnlSecundario2.NumberOfViews - 1 Dim pnlProducto As Panel = pnlSecundario2.GetView(i) Dim precioProducto As Float = pnlProducto.Tag.As(Float) Dim lblValue As Label = pnlProducto.GetView(2) Dim cantidad As Int = lblValue.Text.As(Int) ' Dim idProducto As String = pnlProducto.Tag 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 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 pnlSecundario3.NumberOfViews - 1 Dim pnlProducto As Panel = pnlSecundario3.GetView(i) Dim precioProducto As Float = pnlProducto.Tag.As(Float) Dim lblValue As Label = pnlProducto.GetView(2) Dim cantidad As Int = lblValue.Text.As(Int) ' Dim idProducto As String = pnlProducto.Tag 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 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 pnlSecundario4.NumberOfViews - 1 Dim pnlProducto As Panel = pnlSecundario4.GetView(i) Dim precioProducto As Float = pnlProducto.Tag.As(Float) Dim lblValue As Label = pnlProducto.GetView(2) Dim cantidad As Int = lblValue.Text.As(Int) ' Dim idProducto As String = pnlProducto.Tag 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 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 = (sumaVar1Tot = variablesRequeridas1) Log("Condición Var1: " & condicionVar1) End If If hayVar2 Then condicionVar2 = (sumaVar2Tot = variablesRequeridas2) Log("Condición Var2: " & condicionVar2) End If If hayVar3 Then condicionVar3 = (sumaVar3Tot = 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 ' Log("Hay productos fijos y no hay variables requeridas, se muestra el botón.") Return True End If Log("No hay valores mayores a 0, no se muestra el botón.") Return False End Sub Private Sub SumarValoresLblValue As Int Dim total As Int = 0 If pnlSecundario1.IsInitialized Then total = total + productosFijos End If If pnlSecundario2.IsInitialized Then For i = 0 To pnlSecundario2.NumberOfViews - 1 Dim pnlProducto As Panel = pnlSecundario2.GetView(i) Dim lblValue As Label = pnlProducto.GetView(2) total = total + lblValue.Text.As(Int) Next End If If pnlSecundario3.IsInitialized Then For i = 0 To pnlSecundario3.NumberOfViews - 1 Dim pnlProducto As Panel = pnlSecundario3.GetView(i) Dim lblValue As Label = pnlProducto.GetView(2) total = total + lblValue.Text.As(Int) Next End If If pnlSecundario4.IsInitialized Then For i = 0 To pnlSecundario4.NumberOfViews - 1 Dim pnlProducto As Panel = pnlSecundario4.GetView(i) Dim lblValue As Label = pnlProducto.GetView(2) total = total + lblValue.Text.As(Int) Next End If Return total End Sub Private Sub CalcularTotalValor As Float Dim total As Float = 0 If pnlSecundario1.IsInitialized And productosFijos > 0 Then For i = 0 To pnlSecundario1.NumberOfViews - 1 Dim pnlProducto As Panel = pnlSecundario1.GetView(i) Dim precioProducto As Float = pnlProducto.Tag.As(Float) total = total + (precioProducto * productosFijos) Next End If If pnlSecundario2.IsInitialized Then For i = 0 To pnlSecundario2.NumberOfViews - 1 Dim pnlProducto As Panel = pnlSecundario2.GetView(i) Dim lblValue As Label = pnlProducto.GetView(2) Dim cantidad As Int = lblValue.Text.As(Int) If cantidad > 0 Then total = total + (pnlProducto.Tag.As(Float) * cantidad) End If Next End If If pnlSecundario3.IsInitialized Then For i = 0 To pnlSecundario3.NumberOfViews - 1 Dim pnlProducto As Panel = pnlSecundario3.GetView(i) Dim lblValue As Label = pnlProducto.GetView(2) Dim cantidad As Int = lblValue.Text.As(Int) If cantidad > 0 Then total = total + (pnlProducto.Tag.As(Float) * cantidad) End If Next End If If pnlSecundario4.IsInitialized Then For i = 0 To pnlSecundario4.NumberOfViews - 1 Dim pnlProducto As Panel = pnlSecundario4.GetView(i) Dim lblValue As Label = pnlProducto.GetView(2) Dim cantidad As Int = lblValue.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 lblTotalValor.Text = NumberFormat(total, 1, 2) End Sub