From 05acf1f855c7610f1b35ad36430b7e2f7ccc2ac2 Mon Sep 17 00:00:00 2001 From: Jose Alberto Guerra Ugalde Date: Wed, 12 Mar 2025 21:48:32 -0600 Subject: [PATCH] =?UTF-8?q?-=20VERSION=205.03.11=20-=20Se=20completo=20el?= =?UTF-8?q?=20codigo=20para=20productos=20variables=203=20en=20promos.=20-?= =?UTF-8?q?=20Se=20cambio=20codigo=20de=20validador=20para=20contemplar=20?= =?UTF-8?q?la=20posibilidad=20de=20que=20se=20pongan=20"=5F"=20en=20el=20n?= =?UTF-8?q?ombre=20de=20las=20promos.=20-=20Se=20agreg=C3=B3=20columna=20V?= =?UTF-8?q?ARREG3=20a=20la=20tabla=20de=20cat=5Fgunaprod2.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- B4A/B4XMainPage.bas | 1 + B4A/C_Cliente.bas | 6 +- B4A/C_Principal.bas | 45 +- B4A/C_Promos.bas | 1825 ++++++++++++++++++++++++++++++------------- B4A/C_Validador.bas | 53 +- B4A/INTMEX.b4a | 2 +- B4A/INTMEX.b4a.meta | 4 +- B4A/Subs.bas | 2 +- B4A/Validador.bas | 45 ++ 9 files changed, 1390 insertions(+), 593 deletions(-) create mode 100644 B4A/Validador.bas diff --git a/B4A/B4XMainPage.bas b/B4A/B4XMainPage.bas index 2d3c31e..72f4679 100644 --- a/B4A/B4XMainPage.bas +++ b/B4A/B4XMainPage.bas @@ -186,6 +186,7 @@ Private Sub B4XPage_Created (Root1 As B4XView) Subs.agregaColumna("CAT_GUNAPROD", "CAT_GP_PRECIO9", "TEXT DEFAULT '0'") Subs.agregaColumna("CAT_GUNAPROD", "CAT_GP_PRECIO10", "TEXT DEFAULT '0'") Subs.agregaColumna("PEDIDO_CLIENTE", "PC_GUARDADO", "TEXT DEFAULT '0'") + Subs.agregaColumna("CAT_GUNAPROD2", "CAT_GP_VARREQ3", "TEXT DEFAULT '0'") c=skmt.ExecQuery("select COUNT(*) AS CUANTOS from HIST_STAY_OUT ") C.Position = 0 diff --git a/B4A/C_Cliente.bas b/B4A/C_Cliente.bas index 0a09264..50f2089 100644 --- a/B4A/C_Cliente.bas +++ b/B4A/C_Cliente.bas @@ -597,7 +597,7 @@ Sub Guardar_Click Log(">>>>> PONEMOS SIG TICKET") B4XPages.MainPage.skmt.ExecNonQuery($"update pedido set PE_TICKET = ${Subs.traeTicketConsecutivo(Subs.traeCliente)}, PE_GUARDADO = 1 where PE_CLIENTE IN (Select CUENTA from cuentaa) and PE_TICKET is Null"$) End If - B4XPages.MainPage.skmt.ExecNonQuery($"update pedido set PE_GUARDADO = 1 where PE_CLIENTE IN (Select CUENTA from cuentaa)"$) + B4XPages.MainPage.skmt.ExecNonQuery($"update pedido set PE_GUARDADO = 1, PE_ENVIO_OK = 1 where PE_CLIENTE IN (Select CUENTA from cuentaa)"$) B4XPages.MainPage.skmt.ExecNonQuery($"update pedido_cliente set PC_GUARDADO = 1 where PC_CLIENTE IN (Select CUENTA from cuentaa)"$) c.Close DateTime.TimeFormat = "HHmmss" @@ -625,7 +625,7 @@ Sub Guardar_Click ' LogColor($"actualizamos "${la_cuenta.text}, hora_final=${DateTime.now}"$,Colors.Red) Subs.actualizaTET(la_cuenta.text) DateTime.TimeFormat = "HH:mm:ss" - mandaPendientes 'LO COMENTAMOS PARA PRUEBAS, ACTIVAR AL FINAL!!! +' mandaPendientes 'LO COMENTAMOS PARA PRUEBAS, ACTIVAR AL FINAL!!! mandapiezas B4XPages.MainPage.productos.reiniciarlistaProds = True B4XPages.MainPage.productos.prodsMap.Initialize @@ -633,6 +633,8 @@ Sub Guardar_Click B4XPages.ShowPage("Principal") End Sub +'android.database.sqlite.SQLiteException: no such column: pe_ticket (code 1 SQLITE_ERROR): , while compiling: delete from pedido_cliente where pe_ticket is null and PC_CLIENTE In (select cuenta from cuentaa) + Sub NUEVO_Click B4XPages.ShowPage("NuevoCliente") End Sub diff --git a/B4A/C_Principal.bas b/B4A/C_Principal.bas index de4cdfc..813edd4 100644 --- a/B4A/C_Principal.bas +++ b/B4A/C_Principal.bas @@ -896,7 +896,7 @@ Sub cargar_Click ' reqManager.ExecuteQuery(cmd , 0, "resum_apk") ''' donde regresa la info ver job_done cmd.Initialize - cmd.Name = "select_cat_paquetes_INTMEX3" + cmd.Name = "select_cat_paquetes_INTMEX4" cmd.Parameters = Array As Object(ALMACEN) reqManager.ExecuteQuery(cmd , 0, "gunaprodp") ' Log("ALMACEN = " & ALMACEN) @@ -1542,28 +1542,29 @@ Sub JobDone(Job As HttpJob) If Job.JobName = "DBRequest" Then Dim RESULT As DBResult = reqManager.HandleJob(Job) - If RESULT.Tag = "gunaprodp" Then 'query tag - For Each records() As Object In RESULT.Rows - Dim CAT_GP_ID As String = records(RESULT.Columns.Get("CAT_GP_ID")) - Dim CAT_GP_NOMBRE As String = records(RESULT.Columns.Get("CAT_GP_NOMBRE")) - Dim CAT_GP_IMP1 As String = records(RESULT.Columns.Get("CAT_GP_IMP1")) - Dim CAT_GP_IMP2 As String = records(RESULT.Columns.Get("CAT_GP_IMP2")) - Dim CAT_GP_PRECIO As String = records(RESULT.Columns.Get("CAT_GP_PRECIO")) - Dim CAT_GP_CLASIF As String = records(RESULT.Columns.Get("CAT_GP_CLASIF")) - Dim CAT_GP_STS As String = records(RESULT.Columns.Get("CAT_GP_STS")) - Dim CAT_GP_TIPO As String = records(RESULT.Columns.Get("CAT_GP_TIPO")) - Dim CAT_GP_SUBTIPO As String = records(RESULT.Columns.Get("CAT_GP_SUBTIPO")) - Dim CAT_GP_IMG() As Byte = records(RESULT.Columns.Get("CAT_GP_IMG")) - Dim CAT_GP_ALMACEN As Int = records(RESULT.Columns.Get("CAT_GP_ALMACEN")) - Dim CAT_GP_TIPOPROD As Int = records(RESULT.Columns.Get("CAT_GP_TIPOPROD")) - CAT_GP_TIPOPROD = "5" - If CAT_GP_ID = "PAQUNI003" Then - CAT_GP_ALMACEN = 60 - End If + If RESULT.Tag = "gunaprodp" Then 'query tag + For Each records() As Object In RESULT.Rows + Dim CAT_GP_ID As String = records(RESULT.Columns.Get("CAT_GP_ID")) + Dim CAT_GP_NOMBRE As String = records(RESULT.Columns.Get("CAT_GP_NOMBRE")) + Dim CAT_GP_IMP1 As String = records(RESULT.Columns.Get("CAT_GP_IMP1")) + Dim CAT_GP_IMP2 As String = records(RESULT.Columns.Get("CAT_GP_IMP2")) + Dim CAT_GP_PRECIO As String = records(RESULT.Columns.Get("CAT_GP_PRECIO")) + Dim CAT_GP_CLASIF As String = records(RESULT.Columns.Get("CAT_GP_CLASIF")) + Dim CAT_GP_STS As String = records(RESULT.Columns.Get("CAT_GP_STS")) + Dim CAT_GP_TIPO As String = records(RESULT.Columns.Get("CAT_GP_TIPO")) + Dim CAT_GP_SUBTIPO As String = records(RESULT.Columns.Get("CAT_GP_SUBTIPO")) + Dim CAT_GP_IMG() As Byte = records(RESULT.Columns.Get("CAT_GP_IMG")) + Dim CAT_GP_ALMACEN As Int = records(RESULT.Columns.Get("CAT_GP_ALMACEN")) + Dim CAT_GP_TIPOPROD As Int = records(RESULT.Columns.Get("CAT_GP_TIPOPROD")) + Dim CAT_GP_VARREQ3 As Int = records(RESULT.Columns.Get("CAT_GP_VARREQ3")) + CAT_GP_TIPOPROD = "5" + If CAT_GP_ID = "PAQUNI003" Then + CAT_GP_ALMACEN = 60 + End If ' Log("XXXXXXX gunaprodp XXXXXXXXX " & CAT_GP_ID & "|" & CAT_GP_IMP1 & "|" & CAT_GP_IMP2) - B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG,CAT_GP_ALMACEN,CAT_GP_TIPOPROD) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG, CAT_GP_ALMACEN,CAT_GP_TIPOPROD)) - B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD2(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG,CAT_GP_ALMACEN,CAT_GP_TIPOPROD) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG, CAT_GP_ALMACEN,CAT_GP_TIPOPROD)) - Next + B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG,CAT_GP_ALMACEN,CAT_GP_TIPOPROD) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG, CAT_GP_ALMACEN,CAT_GP_TIPOPROD)) + B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD2(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG,CAT_GP_ALMACEN,CAT_GP_TIPOPROD, CAT_GP_VARREQ3) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG, CAT_GP_ALMACEN,CAT_GP_TIPOPROD, CAT_GP_VARREQ3)) + Next If PB2.Progress = 0 Then PB2.Progress = 30 S_CP.Text = "CARGANDO" diff --git a/B4A/C_Promos.bas b/B4A/C_Promos.bas index 4a9dbf9..879ae47 100644 --- a/B4A/C_Promos.bas +++ b/B4A/C_Promos.bas @@ -5,592 +5,1170 @@ Type=Class Version=11.5 @EndOfDesignText@ Sub Class_Globals - Private Root As B4XView 'ignore + Private Root As B4XView Private xui As XUI - Private l_promoDesc As Label - Private lv_prodsFijos As ListView - Private clv_prodsVariabes, clv_prodsVariabes2 As CustomListView - Private l_prodsFijos As Label - Private l_prodsVariables, l_prodsVariables2 As Label - Private i_prod As ImageView - Private l_prodX As Label - Private p_prods As Panel - Private b_prodMenos, b_prodMenos2 As Button - Private et_pCant As EditText - Private b_prodMas, b_prodMas2 As Button - Private l_pCant As Label - Dim totalProds As Int = 0 - Dim prodsVar1 As Int = 0 - Dim prodsVar2 As Int = 0 - Dim prodsVarReq As Int = 0 - Dim prodsVarReq_ As Int = 0 - Dim prodsVarReq2 As Int = 0 - Dim prodsVarReq2_ As Int = 0 - Dim totalCompra As Float = 0 - Dim prodsFijosTot As Float = 0 - Dim tpf As Int = 0 - Dim tpf2 As Int = 0 - Dim maxCantPromos As Int = 1 - Private l_totProds As Label - Private l_total As Label - Private b_terminar1 As Button - Private p_promociones As Panel - Dim prodsIds, prodsCants, prodsPrecios, prodsIds2, prodsCants2, prodsPrecios2 As List + 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 - Private b_promoMas As Button - Private b_promoMenos As Button - Private et_promoCant As EditText - Private l_promosCant As Label - Private b_continuar As Button - Private p_prodsVariables, p_prodsVariables2 As Panel + Dim tpf2 As Int = 0 Dim laPromo = "", elCliente = "" As String Dim prodsPedidoActual As String Dim montoPedidoActual As String Dim promosMap As Map - Dim su As StringUtils + 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 -'You can add more parameters here. Public Sub Initialize As Object Return Me End Sub -'This event will be called once, before the page becomes visible. Private Sub B4XPage_Created (Root1 As B4XView) Root = Root1 - 'load the layout to Root - Root.LoadLayout("promociones") + Dim pnlProdTotHeight As Int = 80dip - p_promociones.Height= Root.Height - p_promociones.Width= Root.Width + 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) - promosMap.Initialize - p_promociones.Top=0 - p_promociones.Left=0 - b_terminar1.Left = Root.Width - (b_terminar1.Width + 10) - b_continuar.Left = Root.Width - b_terminar1.Width - (b_continuar.Width + 20) + 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 -Sub B4XPage_Appear -' LogColor(B4XPages.MainPage.productos.prodsMap, Colors.blue) - prodsIds.Initialize - prodsCants.Initialize - prodsPrecios.Initialize - prodsIds2.Initialize - prodsCants2.Initialize - prodsPrecios2.Initialize +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") -' Log($"laPromo=${laPromo}, el cliente=${elCliente}"$) - If laPromo <> "" Then muestraPromo(laPromo, elCliente) + + If laPromo <> "" Then + muestraPromo(laPromo, elCliente) + End If + + ObtenerVariablesRequeridas(estaPromo) + ObtenerFijos(estaPromo) + + ActualizarTotalValor + + lblSumaTotal.Text = SumarValoresLblValue + + ActualizarVisibilidadBtnGuardaPromo + + AjustarScroll + + scrollView.ScrollPosition = 0 End Sub -Sub B4XPage_disappear - Log($"Salimos de ${B4XPages.GetManager.GetTopPage.Title}"$) - Starter.utimaPagina = B4XPages.GetManager.GetTopPage.Title +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 -'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. +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) - Private thisLog As Boolean = False -' If thisLog Then Log(promo) estaPromo = promo esteCliente = cliente Private mp As Map = Subs.traePromo(promo, cliente) - Private prodsPromo As Map = mp.Get("productos") 'Los productos de la promoción. - Private invDispPromo As Map = Subs.traemosInventarioDisponibleParaPromo(promo) -' If thisLog Then Log($"invDispPromo=${invDispPromo}"$) - If thisLog Then Log("Max promos por inv de prods FIJOS: " & Subs.revisaMaxPromosProdsFijosPorInventario(mp)) - If thisLog Then Log("Max promos por inv de prods VARIABLES: " & Subs.revisaMaxPromosProdsVariablesPorInventario(mp)) - maxCantPromos = Subs.revisaMaxPromosProdsVariablesPorInventario(mp) - et_promoCant.Text = 1 - l_promosCant.text = "Max promos: " & maxCantPromos + 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 - If thisLog Then Log(mp) - If thisLog Then Log(prodsPromo) - Private listaPV As List = mp.Get("prodsVariables") - Private listaPreciosPV As List = mp.Get("prodsVariablesPrecios") - Private listaPV2 As List = mp.Get("prodsVariables2") - Private listaPreciosPV2 As List = mp.Get("prodsVariablesPrecios2") -' Log("============ " & CRLF & listaPV) - 'Ponemos la promo y descripción. -' Dim desc As String = $"Promoción: ${promo}${CRLF}${mp.Get("descripcion")}"$ -' Dim desc As String = cs.append("Promocion: ").Color(Colors.RGB(100,149,237)).Append(promo).pop.append(CRLF).Append(mp.Get("descripcion")).Popall - l_promoDesc.Text = cs.Color(Colors.RGB(100,149,237)).append("Promocion: ").pop.append(CRLF).Append(promo).append(CRLF).Append(mp.Get("descripcion")).Popall - prodsFijosTot = 0 - 'Ponemos el texto en las etiquetas de la cantidad de productos. -' Dim pf As List = mp.Get("prodsFijos") - Dim pv As List = mp.Get("prodsVariables") - Dim pv2 As List = mp.Get("prodsVariables2") - If thisLog Then Log(mp) - tpf = 0 - For Each pfp As Int In mp.Get("prodsFijosPiezas").As(List) - tpf = tpf + pfp - Next - tpf2 = tpf -' tpf = tpf * maxCantPromos - l_prodsFijos.Text = $"Productos fijos (${tpf})"$ - prodsVarReq = mp.Get("prodsVariablesRequeridos") - prodsVarReq_ = prodsVarReq - prodsVarReq2 = mp.Get("prodsVariables2Requeridos") - prodsVarReq2_ = prodsVarReq2 -' Log("========= " & prodsVarReq2) - l_prodsVariables.Text = $"Productos variables requeridos: ${prodsVarReq}"$ - l_prodsVariables2.Text = $"Productos variables2 requeridos: ${prodsVarReq2}"$ - If prodsVarReq = 0 Then - p_prodsVariables.Visible = False - Else - p_prodsVariables.Visible = True - End If - 'Llenamos el listview con los productos fijos. - Dim label1 As Label - label1 = lv_prodsFijos.SingleLineLayout.Label - label1.TextSize = 13 - label1.TextColor = Colors.black - lv_prodsFijos.SingleLineLayout.ItemHeight = 30dip - lv_prodsFijos.Clear -' If pf.Size < 1 Then pf.Add("Sin productos fijos.") - lv_prodsFijos.Clear - agregaFijosALista(mp, True) - If thisLog Then Log("Total prods fijos = " & prodsFijosTot) -' If thisLog Then Log("======="&prodsMap) - l_totProds.text = $"Productos: ${tpf}"$ - l_total.Text = $"Total: $$1.2{prodsFijosTot}"$ -' Dim ins As InputStream -' Dim bmp As Bitmap -' Dim jpeg() As Byte - - 'Llenamos el listview con los productos variables. - If thisLog Then Log($"PV1: ${pv.Size}, ${pv}"$) - If thisLog Then Log($"PV2: ${pv2.Size}, ${pv2}"$) - If thisLog Then Log("invDisp=" & invDispPromo) - clv_prodsVariabes.Clear - clv_prodsVariabes2.Clear - For Each p As String In pv - If invDispPromo.ContainsKey(p) Then 'Si no esta en la lista de productos con inventario no lo mostramos. - Private indicePV = listaPV.IndexOf(p) -' Log(p & "|" & indicePV & "|" & listaPreciosPV.Get(indicePV)) - Private estePrecio = listaPreciosPV.Get(indicePV) -' c2.Position=i -' jpeg = c2.GetBlob("CAT_GP_IMG") -' ins.InitializeFromBytesArray(jpeg, 0, jpeg.Length) -' bmp.Initialize2(ins) - Private thisProd As Map = prodsPromo.Get(p) - If thisLog Then Log(thisProd) - clv_prodsVariabes.Add(CreateListItem(Subs.traeProdNombre(p)&CRLF&"Hay " & invDispPromo.Get(p) & " $" & estePrecio, estePrecio, invDispPromo.Get(p), clv_prodsVariabes.AsView.Width, 50dip, Null, p), p) - End If - Next - For Each p As String In pv2 - If invDispPromo.ContainsKey(p) Then 'Si no esta en la lista de productos con inventario no lo mostramos. -' Log(p) -' Log($"${invDispPromo}$"$) -' Log($"${listaPV2}"$) -' Log("listaPrecios:"&listaPreciosPV2) - Private indicePV2 = listaPV2.IndexOf(p) -' Log($"${indicePV2}"$) -' Log(p & "|" & indicePV & "|" & listaPreciosPV2.Get(indicePV2)) - Private estePrecio = listaPreciosPV2.Get(indicePV2) -' c2.Position=i -' jpeg = c2.GetBlob("CAT_GP_IMG") -' ins.InitializeFromBytesArray(jpeg, 0, jpeg.Length) -' bmp.Initialize2(ins) - Private thisProd As Map = prodsPromo.Get(p) - If thisLog Then Log(thisProd) - clv_prodsVariabes2.Add(CreateListItem2(Subs.traeProdNombre(p)&CRLF&"Hay " & invDispPromo.Get(p) & " $" & estePrecio, estePrecio, invDispPromo.Get(p), clv_prodsVariabes2.AsView.Width, 50dip, Null, p), p) - End If - Next - If pv2.Size = 0 Then -' Log("PV2 = 0") - l_prodsVariables2.Visible = False - p_prodsVariables2.Visible = False + + 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 - p_prodsVariables.Height = 410dip - clv_prodsVariabes.GetBase.Height = p_prodsVariables.Height - 20 -' p_prodsVariables.Height = 380dip -' clv_prodsVariabes.GetBase.Height = 380dip 'Cambiamos el tamaño y posición de la lista de productos -'' clv_prodsVariabes.GetBase.Width = - clv_prodsVariabes.Base_Resize(clv_prodsVariabes.GetBase.Width, p_prodsVariables.Height - 20) 'Cambiamos el tamaño del panel interno de la lista para que ajuste al nuevo tamaño. - Else - l_prodsVariables2.Visible = True - p_prodsVariables2.Visible = True - p_prodsVariables.Height = 210dip - clv_prodsVariabes.GetBase.Height = p_prodsVariables.Height - 20 - End If - b_terminar1.Visible = False - b_continuar.Visible = False - cuentaProds -End Sub - -'Agregamos los productos fijos a una lista para despues meterlos en el pedido. -Sub agregaFijosALista(mp As Map, addListItem As Boolean) - Private thisLog As Boolean = False - Private cont As Int = 0 - prodsFijosTot = 0 - Dim pf As List = mp.Get("prodsFijos") - If pf.Size < 1 Then pf.Add("Sin productos fijos.") -' Private m As Map -' prodsMap.Put(estaPromo, CreateMap("cant":1, "precio":0)) -' prodsIds.Add(estaPromo) - prodsIds.clear - prodsCants.clear - prodsPrecios.clear - prodsIds.Add(estaPromo) - prodsCants.Add(et_promoCant.text.As(Int)) - prodsPrecios.Add(0) - For Each p As String In pf -' Log($"cont=${cont}, mp=${mp}"$) - If mp.Get("prodsFijosPiezas").As(List).Size > 0 Then - Private tpi As String = mp.Get("prodsFijosPiezas").As(List).Get(cont) - Else - Private tpi As String = 0 - End If - If mp.Get("prodsFijosPrecios").As(List).Size > 0 Then - Private tpr As String = mp.Get("prodsFijosPrecios").As(List).Get(cont) - Else - Private tpr As String = 0 - End If - prodsFijosTot = prodsFijosTot + (tpi * tpr) - If thisLog Then Log("|"&tpi&"|"&p) - Private ntpi As Int = tpi * et_promoCant.text - If addListItem And tpi > 0 Then lv_prodsFijos.AddSingleLine(ntpi & " " & Subs.traeProdNombre(p) & " - $" & tpr) - cont = cont+1 -' m=CreateMap("cant":tpi, "precio":tpr) -' prodsMap.Put(p, m) - prodsIds.Add(p) - prodsCants.Add(tpi.As(Int)*et_promoCant.text.As(Int)) - prodsPrecios.Add(tpr) '*et_promoCant.text.As(Int) - Next -End Sub - -Sub CreateListItem(Text As String, precioU As String, inv As Int, Width As Int, Height As Int, img As Bitmap, prodId As String) As Panel 'ignore - Dim p As B4XView = xui.CreatePanel("") - p.SetLayoutAnimated(0, 0, 0, Width, Height) - p.LoadLayout("prodItem") - l_prodX.TextSize = 15 - l_prodX.Text = Text - l_prodX.TextSize = 15 -' p_prods.Height = Height + 70 -' l_prodX.Height = Height - p_prods.height = su.MeasureMultilineTextHeight(l_prodX, l_prodX.Text) + 20 'Calculamos la altura del panel de acuerdo al texto contenido. - If p_prods.Height < Height Then p_prods.Height = Height - l_prodX.Height = p_prods.Height - l_pCant.Tag = precioU&"|"&inv&"|"&prodId - et_pCant.Tag = precioU&"|"&inv&"|"&prodId - et_pCant.BringToFront -' i_prod.Bitmap = img - p.Height = p_prods.Height - Return p -End Sub - -Sub CreateListItem2(Text As String, precioU As String, inv As Int, Width As Int, Height As Int, img As Bitmap, prodId As String) As Panel 'ignore - Dim p As B4XView = xui.CreatePanel("") - p.SetLayoutAnimated(0, 0, 0, Width, Height) - p.LoadLayout("prodItem2") - l_prodX.TextSize = 15 - l_prodX.Text = Text - l_prodX.TextSize = 15 -' p_prods.Height = Height -' l_prodX.Height = Height - p_prods.height = su.MeasureMultilineTextHeight(l_prodX, l_prodX.Text) + 20 'Calculamos la altura del panel de acuerdo al texto contenido. - If p_prods.Height < Height Then p_prods.Height = Height - l_prodX.Height = p_prods.Height -' l_pCant.Text = 0 - l_pCant.Tag = precioU&"|"&inv&"|"&prodId - et_pCant.Tag = precioU&"|"&inv&"|"&prodId - et_pCant.BringToFront -' i_prod.Bitmap = img - p.Height = p_prods.Height - Return p -End Sub - -Sub b_prodMenos_Click - Dim index As Int = clv_prodsVariabes.GetItemFromView(Sender) - Dim pnl0 As B4XView = clv_prodsVariabes.GetPanel(index) - Dim pnl As B4XView = pnl0.GetView(0) -' Dim laCant As B4XView = pnl.GetView(5) - Dim laCant As B4XView = pnl.GetView(2).GetView(4) -' Log($"precio|stock:${laCant.tag}"$) - laCant.Text = $"$1.0{laCant.Text-1}"$ - If laCant.Text < 0 Then laCant.Text = 0 + Encabezado = promo -' Log(Regex.Split("\|", laCant.tag)(0)) - Private precio As String = Regex.Split("\|", laCant.tag)(0) -' Private inv As String = Regex.Split("\|", laCant.tag)(1) - Private prodId As String = Regex.Split("\|", laCant.tag)(2) - Private tmpMap As Map = CreateMap("precio":precio, "cant":laCant.Text, "almacen":estaPromo) -' Log(tmpMap) - promosMap.Put(prodId, tmpMap) - If laCant.Text = 0 Then promosMap.Remove(prodId) -' LogColor(promosMap, Colors.Magenta) - cuentaProds -' l_total.Text = $"Total Compra: $$1.2{totalCompra}"$ -' l_totProds.text = $"Total Productos: ${totalProds}"$ -End Sub - -Sub b_prodMas_Click - If prodsVar1 < prodsVarReq Then - Dim index As Int = clv_prodsVariabes.GetItemFromView(Sender) - Dim pnl0 As B4XView = clv_prodsVariabes.GetPanel(index) - Dim pnl As B4XView = pnl0.GetView(0) -' Dim laCant As B4XView = pnl.GetView(5) - Dim laCant As B4XView = pnl.GetView(2).GetView(4) -' Log($"precio|stock:${laCant.tag}"$) -' Log($"Indice: ${index}, cant:${laCant.Text+1}, precioU: ${laCant.tag}"$) - Dim esteTag As List = Regex.Split("\|", laCant.Tag) -' Log(esteTag) - If laCant.Text + 1 <= esteTag.get(1) Then - laCant.Text = $"$1.0{laCant.Text+1}"$ - cuentaProds + 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 - -' Log(Regex.Split("\|", laCant.tag)(0)) - Private precio As String = Regex.Split("\|", laCant.tag)(0) -' Private inv As String = Regex.Split("\|", laCant.tag)(1) - Private prodId As String = Regex.Split("\|", laCant.tag)(2) - Private tmpMap As Map = CreateMap("precio":precio, "cant":laCant.Text, "almacen":estaPromo) -' Log(tmpMap) - promosMap.Put(prodId, tmpMap) -' LogColor(promosMap, Colors.Magenta) - End If -' Log($"Total Prods: ${totalProds}, Total Compra: $$1.2{totalCompra}"$) -' l_total.Text = $"Total Compra: $$1.2{totalCompra}"$ -' l_totProds.text = $"Total Productos: ${totalProds}"$ -End Sub - - -Sub b_prodMenos2_Click - Dim index As Int = clv_prodsVariabes2.GetItemFromView(Sender) - Dim pnl0 As B4XView = clv_prodsVariabes2.GetPanel(index) - Dim pnl As B4XView = pnl0.GetView(0) -' Dim laCant As B4XView = pnl.GetView(5) - Dim laCant As B4XView = pnl.GetView(2).GetView(4) -' Log($"precio|stock:${laCant.tag}"$) - laCant.Text = $"$1.0{laCant.Text-1}"$ - If laCant.Text < 0 Then laCant.Text = 0 - -' Log(Regex.Split("\|", laCant.tag)(0)) - Private precio As String = Regex.Split("\|", laCant.tag)(0) -' Private inv As String = Regex.Split("\|", laCant.tag)(1) - Private prodId As String = Regex.Split("\|", laCant.tag)(2) - Private tmpMap As Map = CreateMap("precio":precio, "cant":laCant.Text, "almacen":estaPromo) -' Log(tmpMap) - promosMap.Put(prodId, tmpMap) - If laCant.Text = 0 Then promosMap.Remove(prodId) -' LogColor(promosMap, Colors.Magenta) - cuentaProds -' l_total.Text = $"Total Compra: $$1.2{totalCompra}"$ -' l_totProds.text = $"Total Productos: ${totalProds}"$ -End Sub - -Sub b_prodMas2_Click -' Log(prodsVarReq & "|" & prodsVarReq2 & "|" & tpf & "|" & prodsVar2) - If prodsVar2 < prodsVarReq2 Then - Dim index As Int = clv_prodsVariabes2.GetItemFromView(Sender) - Dim pnl0 As B4XView = clv_prodsVariabes2.GetPanel(index) - Dim pnl As B4XView = pnl0.GetView(0) -' Dim laCant As B4XView = pnl.GetView(5) - Dim laCant As B4XView = pnl.GetView(2).GetView(4) -' Log($"precio|stock:${laCant.tag}"$) -' Log($"Indice: ${index}, cant:${laCant.Text+1}, precioU: ${laCant.tag}"$) - Dim esteTag As List = Regex.Split("\|", laCant.Tag) -' Log(esteTag) - If laCant.Text + 1 <= esteTag.get(1) Then - laCant.Text = $"$1.0{laCant.Text+1}"$ - cuentaProds - End If - -' Log(Regex.Split("\|", laCant.tag)(0)) - Private precio As String = Regex.Split("\|", laCant.tag)(0) -' Private inv As String = Regex.Split("\|", laCant.tag)(1) - Private prodId As String = Regex.Split("\|", laCant.tag)(2) - Private tmpMap As Map = CreateMap("precio":precio, "cant":laCant.Text, "almacen":estaPromo) -' Log(tmpMap) - promosMap.Put(prodId, tmpMap) -' LogColor(promosMap, Colors.Magenta) - End If -' Log($"Total Prods: ${totalProds}, Total Compra: $$1.2{totalCompra}"$) -' l_total.Text = $"Total Compra: $$1.2{totalCompra}"$ -' l_totProds.text = $"Total Productos: ${totalProds}"$ -End Sub - - -Private Sub et_pCant_TextChanged (Old As String, New As String) -' LogColor("txt changed",Colors.Magenta) - cuentaProds -End Sub - -Sub cuentaProds -' Log("=====================================================") -' Log("Inicia cuentaProds") - Private thisLog As Boolean = False -' LogColor($"ProdsFijos=${tpf}, totalProds=${totalProds}, totalCompra=${totalCompra}"$, Colors.Red) - prodsIds2.Clear - prodsCants2.Clear - prodsPrecios2.Clear - lv_prodsFijos.Clear - prodsVar1 = 0 - prodsVar2 = 0 - agregaFijosALista(Subs.traePromo(estaPromo, esteCliente), True) -' Log(prodsIds) - Private tcpf As Float = 0 'Total de compra de productos fijos. - For pf = 0 To prodsIds.Size - 1 - If thisLog Then Log($"${tcpf} + ${prodsCants.Get(pf)} * ${prodsPrecios.Get(pf)} = ${(prodsPrecios.Get(pf) * prodsCants.Get(pf))}"$) - tcpf = tcpf + (prodsPrecios.Get(pf) * prodsCants.Get(pf)) - Next -' Log("Total compra prodsFijos = " & tcpf) - totalCompra = tcpf - totalProds = tpf 'Cantidad total de productos fijos. - 'Variables1 - For i = 0 To clv_prodsVariabes.GetSize - 1 - Private p0 As B4XView = clv_prodsVariabes.GetPanel(i) - Private p As B4XView = p0.GetView(0) - Private cant1 As B4XView = p.GetView(2).GetView(4) - If cant1.Text = "" Then cant1.Text = 0 - totalProds = totalProds + cant1.Text - prodsVar1 = prodsVar1 + cant1.Text - Private esteTag As List = Regex.Split("\|", cant1.Tag) - If cant1.Text > esteTag.Get(1) Then cant1.Text = esteTag.Get(1) - If cant1.Text > 0 Then -' Log(esteTag.Get(2) & "|" & cant1.Text) - totalCompra = totalCompra + (esteTag.get(0) * cant1.text) - If thisLog Then Log($"Cant: ${cant1.Text}, Suma: ${totalCompra}"$) - prodsIds2.Add(esteTag.Get(2)) - prodsCants2.Add(cant1.Text) - prodsPrecios2.Add(esteTag.get(0)) - End If - l_total.Text = $"Total: $$1.2{totalCompra}"$ - l_totProds.text = $"Productos: ${totalProds}"$ - Next - 'Variables2 - For i = 0 To clv_prodsVariabes2.GetSize - 1 - Private p0 As B4XView = clv_prodsVariabes2.GetPanel(i) - Private p As B4XView = p0.GetView(0) - Private cant2 As B4XView = p.GetView(2).GetView(4) - totalProds = totalProds + cant2.Text - prodsVar2 = prodsVar2 + cant2.Text - Private esteTag As List = Regex.Split("\|", cant2.Tag) - If cant2.Text > esteTag.Get(1) Then cant2.Text = esteTag.Get(1) - If cant2.Text > 0 Then -' Log(esteTag.Get(2) & "|" & cant2.Text) - totalCompra = totalCompra + (esteTag.get(0) * cant2.text) - If thisLog Then Log($"Cant: ${cant2.Text}, Suma: ${totalCompra}"$) - prodsIds2.Add(esteTag.Get(2)) - prodsCants2.Add(cant2.Text) - prodsPrecios2.Add(esteTag.get(0)) - End If - l_total.Text = $"Total: $$1.2{totalCompra}"$ - l_totProds.text = $"Productos: ${totalProds}"$ - Next - - If thisLog Then Log($"Total Prods: ${totalProds}, Total: $$1.2{totalCompra}"$) - l_total.Text = $"Total: $$1.2{totalCompra}"$ - l_totProds.text = $"Productos: ${totalProds}"$ - If totalProds < prodsVarReq + prodsVarReq2 + tpf Or totalProds > prodsVarReq + prodsVarReq2 + tpf Then -' Log("INCOMPLETA") - b_terminar1.Visible = False - b_continuar.Visible = False Else -' Log("COMPLETA") - b_terminar1.Visible = True - b_continuar.Visible = True + pnlSecundario1.Visible = False +' etCantidadProductos.Text = $"No hay productos Fijos"$ + etCantidadProductos.Visible = False End If - If thisLog Then LogColor($"${prodsIds}${CRLF}${prodsCants}${CRLF}${prodsPrecios}"$, Colors.blue) - If thisLog Then LogColor($"${prodsIds2}${CRLF}${prodsCants2}${CRLF}${prodsPrecios2}"$, Colors.Magenta) -' LogColor($"Total Prods: ${totalProds}, Total: $$1.2{totalCompra}"$, Colors.Blue) -End Sub - -Private Sub et_pCant_FocusChanged (HasFocus As Boolean) - LogColor("focus changed", Colors.Magenta) - cuentaProds -End Sub - -Private Sub b_promoMenos_Click - If et_promoCant.Text > 1 Then - et_promoCant.Text = et_promoCant.Text.As(Int) - 1 + + 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 - l_prodsFijos.Text = $"Productos fijos (${tpf2 * et_promoCant.Text.As(Int)})"$ - l_prodsVariables.Text = $"Productos variables requeridos: ${prodsVarReq_ * et_promoCant.Text.As(Int)}"$ - l_prodsVariables2.Text = $"Productos variables2 requeridos: ${prodsVarReq2_ * et_promoCant.Text.As(Int)}"$ - tpf = tpf2 * et_promoCant.Text.As(Int) - prodsVarReq = prodsVarReq_ * et_promoCant.Text.As(Int) - prodsVarReq2 = prodsVarReq2_ * et_promoCant.Text.As(Int) - Log($"Max promos=${et_promoCant.Text.As(Int)}, Prods fijos=${tpf}, "$) - cuentaProds -End Sub - -Private Sub b_promoMas_Click - If et_promoCant.Text < maxCantPromos Then - et_promoCant.Text = et_promoCant.Text.As(Int) + 1 - l_prodsFijos.Text = $"Productos fijos (${tpf2 * et_promoCant.Text.As(Int)})"$ - l_prodsVariables.Text = $"Productos variables requeridos: ${prodsVarReq_ * et_promoCant.Text.As(Int)}"$ - l_prodsVariables2.Text = $"Productos variables2 requeridos: ${prodsVarReq2_ * et_promoCant.Text.As(Int)}"$ - tpf = tpf2 * et_promoCant.Text.As(Int) - prodsVarReq = prodsVarReq_ * et_promoCant.Text.As(Int) - prodsVarReq2 = prodsVarReq2_ * et_promoCant.Text.As(Int) - Log($"Max promos=${et_promoCant.Text.As(Int)}, Prods fijos=${tpf}, "$) + + 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 et_promoCant.text > maxCantPromos Then et_promoCant.Text = maxCantPromos - cuentaProds + + 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 b_terminar1_Click - cuentaProds - Log("====================================================================") - For t = 0 To prodsIds.Size - 1 'Guardamos los productos fijos de la promocion en pedido. - Private pn As String = Subs.traeProdNombre(prodsIds.Get(t)) - If prodsCants.Get(t) > 0 Then Subs.guardaProductoSinGestion(estaPromo, prodsPrecios.Get(t), prodsCants.Get(t), pn, prodsIds.Get(t), Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, B4XPages.MainPage.tipo_venta) - Next - For t = 0 To prodsIds2.Size - 1 'Guardamos los productos variables de la promocion en pedido. - Private pn As String = Subs.traeProdNombre(prodsIds2.Get(t)) - Subs.guardaProductoSinGestion(estaPromo, prodsPrecios2.Get(t), prodsCants2.Get(t), pn, prodsIds2.Get(t), Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, B4XPages.MainPage.tipo_venta) - Next -' Log(B4XPages.MainPage.productos.prodsMap) -' For o=0 To prodsIds.Size - 1 'Ponemos los productos fijos en el mapa de la compra. -' Private tmpMap As Map = CreateMap("precio":prodsPrecios.Get(o), "cant":prodsCants.Get(o), "almacen":estaPromo) -'' Log(tmpMap) -' If prodsCants.Get(o) > 0 Then B4XPages.MainPage.productos.prodsMap.Put(estaPromo&"|"&prodsIds.Get(o), tmpMap) -' Next -' For o=0 To prodsIds2.Size - 1 'Ponemos los productos variables en el mapa de la compra. -' Private tmpMap As Map = CreateMap("precio":prodsPrecios2.Get(o), "cant":prodsCants2.Get(o), "almacen":estaPromo) -'' Log(tmpMap) -' B4XPages.MainPage.productos.prodsMap.Put(estaPromo&"|"&prodsIds2.Get(o), tmpMap) -' Next -' LogColor(B4XPages.MainPage.productos.prodsMap, Colors.red) - lv_prodsFijos.Clear +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 b_continuar_Click - cuentaProds - Log("====================================================================") - For t = 0 To prodsIds.Size - 1 'Guardamos los productos fijos de la promocion en pedido. - Private pn As String = Subs.traeProdNombre(prodsIds.Get(t)) - Subs.guardaProductoSinGestion(estaPromo, prodsPrecios.Get(t), prodsCants.Get(t), pn, prodsIds.Get(t), Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, B4XPages.MainPage.tipo_venta) - Next - For t = 0 To prodsIds2.Size - 1 'Guardamos los productos variables de la promocion en pedido. - Private pn As String = Subs.traeProdNombre(prodsIds2.Get(t)) - Subs.guardaProductoSinGestion(estaPromo, prodsPrecios2.Get(t), prodsCants2.Get(t), pn, prodsIds2.Get(t), Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, B4XPages.MainPage.tipo_venta) - Next -' Log(B4XPages.MainPage.productos.prodsMap) -' For o=0 To prodsIds.Size - 1 'Ponemos los productos fijos en el mapa de la compra. -' Private tmpMap As Map = CreateMap("precio":prodsPrecios.Get(o), "cant":prodsCants.Get(o), "almacen":estaPromo) -'' Log(tmpMap) -' If prodsCants.Get(o) > 0 Then B4XPages.MainPage.productos.prodsMap.Put(estaPromo&"|"&prodsIds.Get(o), tmpMap) -' Next -' For o=0 To prodsIds2.Size - 1 'Ponemos los productos variables en el mapa de la compra. -' Private tmpMap As Map = CreateMap("precio":prodsPrecios2.Get(o), "cant":prodsCants2.Get(o), "almacen":estaPromo) -'' Log(tmpMap) -' B4XPages.MainPage.productos.prodsMap.Put(estaPromo&"|"&prodsIds2.Get(o), tmpMap) -' Next -' LogColor(B4XPages.MainPage.productos.prodsMap, Colors.red) - lv_prodsFijos.Clear -' Activity_KeyPress(KeyCodes.KEYCODE_BACK) -' CallSubDelayed2(productos, "Activity_KeyPress", KeyCodes.KEYCODE_BACK) +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 @@ -599,15 +1177,162 @@ Private Sub b_continuar_Click 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 -'Sub Activity_KeyPress (key As Int) As Boolean 'ignore -' ' BACK key pressed -' Log("Keypress") -' If key=KeyCodes.KEYCODE_BACK Then -' Log("BACK") -' Return False -' End If -' Return False -' ' Returning False signals the system to handle the key -'End Sub \ No newline at end of file diff --git a/B4A/C_Validador.bas b/B4A/C_Validador.bas index fc8cc09..75d9f7e 100644 --- a/B4A/C_Validador.bas +++ b/B4A/C_Validador.bas @@ -47,6 +47,7 @@ Sub iniciaValidacion Sleep(5000) revisaCantsYMontosTotales Log("TIMER RESET") + timerValidador.Enabled = False timerValidador.Initialize("timerValidador", intervalo * 1000) timerValidador.Enabled = True @@ -91,7 +92,7 @@ Sub mandaGuardados cmd.Initialize cmd.Name = "insert_pedido4_INTMEX" cmd.Parameters = Array As Object(C.GetString("PE_CEDIS"),almacen,C.GetString("PE_COSTO_TOT"),C.GetString("PE_COSTOU"),C.GetString("PE_CANT"),C.GetString("PE_PRONOMBRE"),C.GetString("PE_PROID"),C.GetString("PE_CLIENTE"),C.GetString("PE_FECHA"),C.GetString("PE_USUARIO"),C.GetString("PE_RUTA"), C.GetString("PE_COSTO_SIN"),C.GetString("PE_DESC"),c.GetString("PE_FOLIO"), PCNoArts, PCMonto,c.GetString("PE_TICKET")) - reqManager.ExecuteCommand(cmd, $"ins_mandaGuardados_prods_${c.GetString("PE_CLIENTE")}_${c.GetString("PE_PROID")}_${c.GetString("PE_CEDIS")}"$) + reqManager.ExecuteCommand(cmd, $"ins_mandaGuardados_prods_${c.GetString("PE_CLIENTE")}|${c.GetString("PE_PROID")}|${c.GetString("PE_CEDIS")}"$) Log($">>>> INS_PEDIDO= ${C.GetString("PE_CEDIS")},${almacen},${C.GetString("PE_COSTO_TOT")},${C.GetString("PE_COSTOU")},${C.GetString("PE_CANT")}, ${C.GetString("PE_PRONOMBRE")}, ${C.GetString("PE_PROID")}, ${C.GetString("PE_CLIENTE")}, ${C.GetString("PE_FECHA")}, ${C.GetString("PE_USUARIO")}, ${C.GetString("PE_RUTA")}, ${C.GetString("PE_COSTO_SIN")}, ${C.GetString("PE_DESC")}, ${c.GetString("PE_FOLIO")}, ${PCNoArts}, ${PCMonto}, ${PCMonto}, ${c.GetString("PE_TICKET")}"$) Next End If @@ -114,7 +115,7 @@ Sub revisaGuardados Dim cmd As DBCommand cmd.Initialize cmd.Name = "validaPC_Intmex" - cmd.Parameters = Array As Object(c.GetString("PC_CLIENTE"), c.GetString("PC_USER"), c.GetString("PC_FECHA"), c.GetString("PC_MONTO"), c.GetString("PC_NOART"), almacen, laRuta) + cmd.Parameters = Array As Object(c.GetString("PC_CLIENTE"), c.GetString("PC_USER"), c.GetString("PC_FECHA"), almacen, laRuta) ' PCNoArts = c.GetString("PC_NOART") ' PCMonto = c.GetString("PC_MONTO") reqManager.ExecuteCommand(cmd , $"ins_revisaGuardados_head_${c.GetString("PC_CLIENTE")}"$) @@ -131,7 +132,7 @@ Sub revisaGuardados cmd.Initialize cmd.Name = "validaProd_Intmex" cmd.Parameters = Array As Object(C.GetString("PE_CLIENTE"),C.GetString("PE_USUARIO"),C.GetString("PE_COSTOU"),C.GetString("PE_CANT"),C.GetString("PE_PRONOMBRE"),C.GetString("PE_PROID"),C.GetString("PE_CEDIS"),almacen,laRuta) - reqManager.ExecuteCommand(cmd , $"ins_revisaGuardados_prods_${c.GetString("PE_CLIENTE")}_${c.GetString("PE_PROID")}_${c.GetString("PE_CEDIS")}"$) + reqManager.ExecuteCommand(cmd , $"ins_revisaGuardados_prods_${c.GetString("PE_CLIENTE")}|${c.GetString("PE_PROID")}|${c.GetString("PE_CEDIS")}"$) ' Log($">>>> INS_PEDIDO= ${C.GetString("PE_CEDIS")},${almacen},${C.GetString("PE_COSTO_TOT")},${C.GetString("PE_COSTOU")},${C.GetString("PE_CANT")}, ${C.GetString("PE_PRONOMBRE")}, ${C.GetString("PE_PROID")}, ${C.GetString("PE_CLIENTE")}, ${C.GetString("PE_FECHA")}, ${C.GetString("PE_USUARIO")}, ${C.GetString("PE_RUTA")}, ${C.GetString("PE_COSTO_SIN")}, ${C.GetString("PE_DESC")}, ${c.GetString("PE_FOLIO")}, ${PCNoArts}, ${PCMonto}, ${PCMonto}, ${c.GetString("PE_TICKET")}"$) Next End If @@ -193,13 +194,15 @@ Sub JobDone(Job As HttpJob) Log("ins_mandaGuardados_prods_") Subs.logJobDoneResultados(resultado) Private cliente As String= resultado.Tag - cliente = cliente.SubString(cliente.IndexOf("_")+25) + cliente = cliente.SubString(cliente.IndexOf("_")+22) Log($"Cliente2:${cliente}"$) For Each records() As Object In resultado.Rows Log("AffectedRows: " & records(resultado.Columns.Get("AffectedRows"))) If records(resultado.Columns.Get("AffectedRows")).As(Int) > 0 Then - Private pars() As String = Regex.Split("_", resultado.tag) - skmt.ExecNonQuery($"update PEDIDO set PE_ENVIO_OK = 1 where PE_CLIENTE = '${pars(3)}' and PE_PROID = '${pars(4)}' and PE_CEDIS = '${pars(5)}' and PE_ENVIO_OK = 0"$) + Private pars() As String = Regex.Split("\|", cliente) + Log($"${pars(0)},${pars(1)},${pars(2)}"$) + LogColor($"update PEDIDO set PE_ENVIO_OK = 1 where PE_CLIENTE = '${pars(0)}' and PE_PROID = '${pars(1)}' and PE_CEDIS = '${pars(2)}' and PE_ENVIO_OK = 0"$, Colors.red) + skmt.ExecNonQuery($"update PEDIDO set PE_ENVIO_OK = 1 where PE_CLIENTE = '${pars(0)}' and PE_PROID = '${pars(1)}' and PE_CEDIS = '${pars(2)}' and PE_ENVIO_OK = 0"$) End If Next End If @@ -209,25 +212,28 @@ Sub JobDone(Job As HttpJob) Log("ins_revisaGuardados_prods_") Subs.logJobDoneResultados(resultado) Private cliente As String= resultado.Tag - cliente = cliente.SubString(cliente.IndexOf("_")+25) + cliente = cliente.SubString(cliente.IndexOf("_")+23) Log($"Cliente2:${cliente}"$) For Each records() As Object In resultado.Rows Log("AffectedRows: " & records(resultado.Columns.Get("AffectedRows"))) If records(resultado.Columns.Get("AffectedRows")).As(Int) > 0 Then - Private pars() As String = Regex.Split("_", resultado.tag) - skmt.ExecNonQuery($"update PEDIDO set PE_ENVIO_OK = 2 where PE_CLIENTE = '${pars(3)}' and PE_PROID = '${pars(4)}' and PE_CEDIS = '${pars(5)}' and PE_ENVIO_OK = 1"$) + Private pars() As String = Regex.Split("\|", cliente) + skmt.ExecNonQuery($"update PEDIDO set PE_ENVIO_OK = 2 where PE_CLIENTE = '${pars(0)}' and PE_PROID = '${pars(1)}' and PE_CEDIS = '${pars(2)}' and PE_ENVIO_OK = 1"$) + LogColor($"update PEDIDO set PE_ENVIO_OK = 2 where PE_CLIENTE = '${pars(0)}' and PE_PROID = '${pars(1)}' and PE_CEDIS = '${pars(2)}' and PE_ENVIO_OK = 1"$, Colors.red) + End If + Next End If - Next - End If ' REVISA GUARDADOS HEAD If resultado.Tag.As(String).IndexOf("ins_revisaGuardados_head_") > -1 Then Log("ins_revisaGuardados_head_") - Subs.logJobDoneResultados(resultado) + Subs.logJobDoneResultados(resultado) Private cliente As String= resultado.Tag - cliente = cliente.SubString(cliente.IndexOf("_") + 24) + cliente = cliente.SubString(cliente.IndexOf("_") + 22) + Log(cliente) For Each records() As Object In resultado.Rows - If records(resultado.Columns.Get("AffectedRows")).As(Int) > 0 Then - Private pars() As String = Regex.Split("_", resultado.tag) + If records(resultado.Columns.Get("AffectedRows")).As(Int) > 0 Then + Private pars() As String = Regex.Split("_", resultado.tag) +' Log($"update PEDIDO_CLIENTE set PC_ENVIO_OK = 2 where PC_CLIENTE = '${pars(3)}'"$) skmt.ExecNonQuery($"update PEDIDO_CLIENTE set PC_ENVIO_OK = 2 where PC_CLIENTE = '${pars(3)}'"$) End If Next @@ -247,6 +253,17 @@ Sub JobDone(Job As HttpJob) ' Si montos y cantidades coinciden en local y web, ponemos PC_ENVIO_OK en 3, si no, REINICIAMOS TODO!! If pars(2) = CANTT And pars(3) = COSTOT Then skmt.ExecNonQuery($"update PEDIDO_CLIENTE set PC_ENVIO_OK = 3 where PC_CLIENTE = '${pars(1)}' and PC_NOART = ${CANTT} and PC_MONTO = ${COSTOT}"$) + ' Si el numero de articulos y monto total coinciden en web y local, ponemos PC_VALIDADO en 2. + Private pc As Cursor =skmt.ExecQuery($"select * from pedido_cliente where pc_cliente = '${pars(1)}'"$) + If pc.RowCount > 0 Then + pc.Position = 0 + Dim cmd As DBCommand + cmd.Initialize + cmd.Name = "validaCCT2_Intmex" + cmd.Parameters = Array As Object(pc.GetString("PC_CLIENTE"), pc.GetString("PC_USER"), pc.GetString("PC_FECHA"), pc.GetString("PC_MONTO"), pc.GetString("PC_NOART"), Subs.traeAlmacen, Subs.traeRuta) + reqManager.ExecuteCommand(cmd , $"validaCCT2_${pc.GetString("PC_CLIENTE")}"$) + End If + Else LogColor("################################################################", Colors.red) LogColor("##### LAS CANTIDADES Y MONTOS NO COINCIDEN EN WEB #####", Colors.red) @@ -256,6 +273,12 @@ Sub JobDone(Job As HttpJob) End If Next End If +' VALIDA CANTIDADES Y COSTOS TOTALES + If resultado.Tag.As(String).IndexOf("validaCCT2_") > -1 Then + Log("validaCCT2_") + Subs.logJobDoneResultados(resultado) + + End If ' If resultado.Tag.As(String).IndexOf("validaProds_") > -1 Then ' Log("validaProds_") ' Subs.logJobDoneResultados(resultado) diff --git a/B4A/INTMEX.b4a b/B4A/INTMEX.b4a index 08d3dbb..90a60d5 100644 --- a/B4A/INTMEX.b4a +++ b/B4A/INTMEX.b4a @@ -165,7 +165,7 @@ Version=12.8 #Region Project Attributes #ApplicationLabel: Intmex #VersionCode: 1 - #VersionName: 5.03.02.MV + #VersionName: 5.03.11.MV 'SupportedOrientations possible values: unspecified, landscape or portrait. #SupportedOrientations: portrait #CanInstallToExternalStorage: False diff --git a/B4A/INTMEX.b4a.meta b/B4A/INTMEX.b4a.meta index a6a0370..5fa088d 100644 --- a/B4A/INTMEX.b4a.meta +++ b/B4A/INTMEX.b4a.meta @@ -67,7 +67,7 @@ ModuleClosedNodes11= ModuleClosedNodes12= ModuleClosedNodes13=3 ModuleClosedNodes14=11 -ModuleClosedNodes15=1,10,11 +ModuleClosedNodes15=21 ModuleClosedNodes16= ModuleClosedNodes17= ModuleClosedNodes18= @@ -91,6 +91,6 @@ ModuleClosedNodes6= ModuleClosedNodes7= ModuleClosedNodes8= ModuleClosedNodes9= -NavigationStack=C_TicketsDia,B4XPage_Appear,92,6,C_Principal,JobDone,1558,0,C_Principal,Subir_Click,695,0,C_Validador,timerValidador_Tick,52,0,C_Validador,Class_Globals,11,0,C_Validador,iniciaValidacion,37,0,C_Validador,revisaGuardados,113,0,C_Validador,mandaGuardados,87,0,C_Validador,JobDone,196,0,C_Validador,revisaCantsYMontosTotales,142,0 +NavigationStack=C_Promos,ObtenerVariablesRequeridas,351,0,C_Promos,B4XPage_Created,235,0,C_Promos,GenerarPanelesP1,750,0,C_Promos,Class_Globals,56,0,C_Validador,mandaGuardados,67,0,Tracker,CreateNotification,199,0,C_Validador,revisaGuardados,128,0,C_Validador,JobDone,241,3,C_Promos,btnGuardaPromo_Click,975,2,C_Promos,btnContinuar_Click,1156,0,Main,Activity_Create,29,0 SelectedBuild=0 VisibleModules=2,28,13,14,4,20,29,15,16,18 diff --git a/B4A/Subs.bas b/B4A/Subs.bas index 7b0b065..b1ea1ce 100644 --- a/B4A/Subs.bas +++ b/B4A/Subs.bas @@ -823,7 +823,7 @@ Sub actualizaProductoConTicket(cedis As String, costoU As String, cant As Int, n B4XPages.MainPage.skmt.ExecNonQuery($"delete from pedido where pe_ticket is null and pe_cedis = '${cedis}' and pe_proid = '${prodId}' and pe_cliente = '${clienteId}' AND PE_FOLIO = '${B4XPages.MainPage.tipo_venta}'"$) Private pe As Cursor = B4XPages.MainPage.skmt.ExecQuery("select count(pe_cliente) as cuantosPedidos from pedido where pe_ticket is null and pe_cliente In (select cuenta from cuentaa)") pe.Position = 0 - If pe.GetString("cuantosPedidos") = 0 Then B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente where pe_ticket is null and PC_CLIENTE In (select cuenta from cuentaa)") + If pe.GetString("cuantosPedidos") = 0 Then B4XPages.MainPage.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") 'pe_ticket is null and End If Else 'INSERTAMOS diff --git a/B4A/Validador.bas b/B4A/Validador.bas new file mode 100644 index 0000000..2e3e717 --- /dev/null +++ b/B4A/Validador.bas @@ -0,0 +1,45 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=StaticCode +Version=12.8 +@EndOfDesignText@ +'Code module +'Subs in this code module will be accessible from all modules. +Sub Process_Globals + 'These global variables will be declared once when the application starts. + 'These variables can be accessed from all modules. + Dim reqManager As DBRequestManager +End Sub + +Sub prueba + Log(456789) + reqManager.Initialize(reqManager, Starter.DBReqServer) + Dim cmd As DBCommand + cmd.Initialize + cmd.Name = "select_ruta_INTMEX_7" + cmd.Parameters = Array As Object(5, 1) +' Log($"${ALMACEN},${e_ruta.text},${imei}"$) + reqManager.ExecuteQuery(cmd , 0, "ruta") +End Sub + +Sub JobDone(Job As HttpJob) + Log(Job.Success) + If Job.Success = False Then + Log("Error: " & Job.ErrorMessage) + Else + LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211027 + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "ruta" Then 'query tag + Log("JOBDONE VALIDADOR RUTA") + Log(RESULT.Rows.Size) + Subs.logJobDoneResultados(RESULT) + End If + End If + + + Job.Release + End If + +End Sub \ No newline at end of file