From a2f3983e4dc032c6f27ae24b2c5384b79570324f Mon Sep 17 00:00:00 2001 From: Jose Alberto Guerra Ugalde Date: Thu, 8 Feb 2024 10:22:38 -0600 Subject: [PATCH] =?UTF-8?q?Correcci=C3=B3n=20de=20segmentadas,=20para=20qu?= =?UTF-8?q?e=20no=20aparezca=20el=20popup=20de=20"Tienes=20derecho=20a=20u?= =?UTF-8?q?na=20promocion"=20cuando=20no=20lo=20tienes.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- B4A/B4XMainPage.bas | 4 ++-- B4A/C_Cliente.bas | 18 +++++++++++++++--- B4A/C_Principal.bas | 6 ++++-- B4A/C_Productos.bas | 6 +++--- B4A/KelloggsV4.b4a | 2 +- B4A/KelloggsV4.b4a.meta | 8 ++++---- B4A/Subs.bas | 18 +++++++++++++----- 7 files changed, 42 insertions(+), 20 deletions(-) diff --git a/B4A/B4XMainPage.bas b/B4A/B4XMainPage.bas index 248c6e2..0f313fc 100644 --- a/B4A/B4XMainPage.bas +++ b/B4A/B4XMainPage.bas @@ -138,6 +138,8 @@ Private Sub B4XPage_Created (Root1 As B4XView) Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_ENCUESTA_PREGUNTA (CAT_EP_ID TEXT,CAT_EP_IDTIPOPREGUNTA TEXT,CAT_CE_DESCRIPCION TEXT,CAT_EP_PREGUNTA TEXT,CAT_EP_RES1_PRED TEXT,CAT_EP_RES2_PRED TEXT,CAT_EP_RES3_PRED TEXT,CAT_EP_ORDEN_PREGUNTA TEXT)") Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_FOTOS (HF_FOTO BLOB, HF_CUENTA TEXT, HF_IDENCUESTA TEXT)") Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CLIENTE_IMPRESO (CI_CUENTA TEXT)") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_CLIENTE_CANT_PROMOS (HCCP_CLIENTE TEXT, HCCP_PROMO TEXT, HCCP_CANT TEXT, HCCP_CANT_VENDIDA TEXT)") + kh.agregaColumna(Starter.skmt, "HIST_CLIENTE_CANT_PROMOS", "HCCP_CANT_VENDIDA", "TEXT") Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_PROMO_MONTO (CPM_IDPROMO TEXT, CPM_MONTO TEXT, CPM_PROID TEXT, CPM_CLIENTE TEXT, CPM_CANT TEXT, CPM_RANGO TEXT, CPM_DESC TEXT)") Starter.skmt.ExecNonQuery2("INSERT INTO HIST_ENVIOS VALUES (?,0,?)", Array As Object(sTime, "PEDIDO")) Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_EXHIBIDORES2 (HIST_EX_ID_CLIENTE TEXT, HIST_EX_TIPO TEXT, HIST_EX_CANT TEXT)") @@ -152,8 +154,6 @@ Private Sub B4XPage_Created (Root1 As B4XView) ''' FIN DOE kh.agregaColumna(Starter.skmt, "kmt_info", "IMPRESION", "INTEGER") kh.agregaColumna(Starter.skmt, "USUARIOA", "FECHA", "TEXT") - - Root = Root1 ' Root.LoadLayout("MainPage") Root.LoadLayout("login") diff --git a/B4A/C_Cliente.bas b/B4A/C_Cliente.bas index 5a1ee1d..ed0c73a 100644 --- a/B4A/C_Cliente.bas +++ b/B4A/C_Cliente.bas @@ -577,15 +577,27 @@ Sub B4XPage_Appear c=Starter.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS FROM HIST_CLIENTE_CANT_PROMOS WHERE HCCP_CLIENTE IN (Select cuenta from cuentaa)") c.Position =0 If c.GetString("CUANTOS") > 0 Then - C1=Starter.skmt.ExecQuery("SELECT HCCP_PROMO FROM HIST_CLIENTE_CANT_PROMOS WHERE HCCP_CLIENTE IN (Select cuenta from cuentaa) ") + C1 = Starter.skmt.ExecQuery("SELECT HCCP_PROMO FROM HIST_CLIENTE_CANT_PROMOS WHERE HCCP_CLIENTE IN (Select cuenta from cuentaa) ") C1.Position = 0 - C3=Starter.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM CAT_GUNAPROD2 WHERE CAT_GP_ID = ? ", Array As String(C1.GetString("HCCP_PROMO"))) + C3 = Starter.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM CAT_GUNAPROD2 WHERE CAT_GP_ID = ? ", Array As String(C1.GetString("HCCP_PROMO"))) C3.Position = 0 If Not(B4XPages.MainPage.cliente.muestraBoleta) And Subs.traeCliente <> "0" Then 'Si vamos a mostrar boleta entonces no mandamos aviso. If C3.GetString("CUANTOS") > 0 Then c2=Starter.skmt.ExecQuery2("SELECT CAT_GP_NOMBRE FROM CAT_GUNAPROD2 WHERE CAT_GP_ID = ? ", Array As String(C1.GetString("HCCP_PROMO"))) c2.Position = 0 - If Not(Subs.hayPedido) Then MsgboxAsync("El cliente tiene derecho a una promo especial "& c2.GetString("CAT_GP_NOMBRE"),"Aviso") 'ignore + If Not(Subs.hayPedido) Then +' ############### PROMOCIONES SEGMENTADAS ############### +' Revisamos si la promo esta en la lista, y tiene promos disponibles segun las ventas anteriores. + Private ps2 As Cursor = Starter.skmt.ExecQuery($"Select * from HIST_CLIENTE_CANT_PROMOS where HCCP_PROMO = '${C1.GetString("HCCP_PROMO")}' and HCCP_CLIENTE = '${Subs.traeCliente}' and HCCP_CANT > HCCP_CANT_VENDIDA"$) + Log($"Select * from HIST_CLIENTE_CANT_PROMOS where HCCP_PROMO = '${C1.GetString("HCCP_PROMO")}' and HCCP_CLIENTE = '${Subs.traeCliente}' and HCCP_CANT > HCCP_CANT_VENDIDA"$) + Log($"registros:${ps2.RowCount}"$) + If ps2.RowCount > 0 Then + ps2.Position = 0 + Log($"registros:${ps2.RowCount}, cant:${ps2.GetString("HCCP_CANT")}"$) + MsgboxAsync("El cliente tiene derecho a una promo especial "& c2.GetString("CAT_GP_NOMBRE"),"Aviso") 'ignore + End If +' ############### TERMINA PROMOS SEGMENTADAS ############### + End If c2.Close Else If Not(Subs.hayPedido) Then MsgboxAsync("El cliente tiene derecho a una promo especial ","Aviso") 'ignore diff --git a/B4A/C_Principal.bas b/B4A/C_Principal.bas index 00b6914..3865f8c 100644 --- a/B4A/C_Principal.bas +++ b/B4A/C_Principal.bas @@ -937,7 +937,7 @@ Sub JobDone(Job As HttpJob) End If bcarga1 = 20 End If - + If Job.JobName = "DBRequest" Then Dim RESULT As DBResult = reqManager.HandleJob(Job) If RESULT.Tag = "hist_promos" Then 'query tag @@ -972,7 +972,9 @@ Sub JobDone(Job As HttpJob) Dim HCCP_CLIENTE As String = records(RESULT.Columns.Get("HCCP_CLIENTE")) Dim HCCP_PROMO As String = records(RESULT.Columns.Get("HCCP_PROMO")) Dim HCCP_CANT As String = records(RESULT.Columns.Get("HCCP_CANT")) - Starter.skmt.ExecNonQuery2("INSERT INTO HIST_CLIENTE_CANT_PROMOS(HCCP_CLIENTE, HCCP_PROMO, HCCP_CANT) VALUES (?,?,?)", Array As Object (HCCP_CLIENTE, HCCP_PROMO,HCCP_CANT)) + Dim HCCP_CANT_VENDIDA As String = records(RESULT.Columns.Get("HCCP_CANT_VENDIDA")) + If HCCP_CANT_VENDIDA = Null or HCCP_CANT_VENDIDA = "null" Then HCCP_CANT_VENDIDA = 0 + Starter.skmt.ExecNonQuery2("INSERT INTO HIST_CLIENTE_CANT_PROMOS(HCCP_CLIENTE, HCCP_PROMO, HCCP_CANT, HCCP_CANT_VENDIDA) VALUES (?,?,?,?)", Array As Object (HCCP_CLIENTE, HCCP_PROMO, HCCP_CANT, HCCP_CANT_VENDIDA)) Next Starter.skmt.TransactionSuccessful Starter.skmt.EndTransaction diff --git a/B4A/C_Productos.bas b/B4A/C_Productos.bas index 8909f37..5d403c1 100644 --- a/B4A/C_Productos.bas +++ b/B4A/C_Productos.bas @@ -680,7 +680,7 @@ Sub b_prodMas_Click i.Position = 0 invActualizado = i.GetString("CAT_GP_ALMACEN") End If - If Starter.tipov <> "ABORDO" Then lProdX.Text = cs.Color(Colors.red).append(nombreX).pop.append(CRLF).Append("Existencias: " & invActualizado).Color(0xFF017F01).Append($" $${numberformat2(precio, 1, 2, 2, False)}"$).Popall + If Starter.tipov <> "ABORDO" Then lProdX.Text = cs.Color(Colors.red).append(nombreX).pop.append(CRLF).Append("Existencias: " & invActualizado).Color(0xFF017F01).Append($" $${NumberFormat2(precio, 1, 2, 2, False)}"$).Popall End If Log($"Total Prods: ${totalProds}, Total Compra: $$1.2{totalCompra}"$) End Sub @@ -1207,7 +1207,7 @@ Sub Busca_TextChanged (Old As String, New As String) End If cPromo.Close else if lfila.text = "RMI" Then - Dim p As ResultSet = Starter.skmt.ExecQuery($"select CAT_ID as CAT_GP_ID, CAT_DESCRIPCION as CAT_GP_NOMBRE, CAT_MONTO as CAT_GP_PRECIO, '1000' as CAT_GP_ALMACEN from CAT_RMI where CAT_DESCRIPCION like '%${New}%' order by CAT_DESCRIPCION"$) + Dim p As ResultSet = Starter.skmt.ExecQuery($"select CAT_ID as CAT_GP_ID, CAT_DESCRIPCION as CAT_GP_NOMBRE, CAT_MONTO as CAT_GP_PRECIO, '1000' as CAT_GP_ALMACEN, 'RMI' as CAT_GP_TIPO from CAT_RMI where CAT_DESCRIPCION like '%${New}%' order by CAT_DESCRIPCION"$) Log($"Llamamos LlenaProdsLL con ${p.RowCount} prods."$) lfila.Text = "RMI" b_rmi.Visible = False @@ -1388,7 +1388,7 @@ Private Sub b_rmi_mas_Click End Sub Private Sub b_rmi_Click - Dim p As ResultSet = Starter.skmt.ExecQuery($"select CAT_ID as CAT_GP_ID, CAT_DESCRIPCION as CAT_GP_NOMBRE, CAT_MONTO as CAT_GP_PRECIO, '1000' as CAT_GP_ALMACEN from CAT_RMI order by CAT_DESCRIPCION"$) + Dim p As ResultSet = Starter.skmt.ExecQuery($"select CAT_ID as CAT_GP_ID, CAT_DESCRIPCION as CAT_GP_NOMBRE, CAT_MONTO as CAT_GP_PRECIO, '1000' as CAT_GP_ALMACEN, 'RMI' as CAT_GP_TIPO from CAT_RMI order by CAT_DESCRIPCION"$) Log($"Llamamos LlenaProdsLL con ${p.RowCount} prods."$) lfila.Text = "RMI" b_rmi.Visible = False diff --git a/B4A/KelloggsV4.b4a b/B4A/KelloggsV4.b4a index d781908..13a6853 100644 --- a/B4A/KelloggsV4.b4a +++ b/B4A/KelloggsV4.b4a @@ -870,7 +870,7 @@ Version=12.5 #Region Project Attributes #ApplicationLabel: Kelloggs Venta #VersionCode: 3000 - #VersionName: 4.02.05 + #VersionName: 4.02.07 #SupportedOrientations: portrait #CanInstallToExternalStorage: False #BridgeLogger:true diff --git a/B4A/KelloggsV4.b4a.meta b/B4A/KelloggsV4.b4a.meta index 6c3eae9..c260f09 100644 --- a/B4A/KelloggsV4.b4a.meta +++ b/B4A/KelloggsV4.b4a.meta @@ -61,7 +61,7 @@ ModuleBreakpoints7= ModuleBreakpoints8= ModuleBreakpoints9= ModuleClosedNodes0= -ModuleClosedNodes1=2,35 +ModuleClosedNodes1= ModuleClosedNodes10= ModuleClosedNodes11=1,3,50,51,52 ModuleClosedNodes12=3 @@ -70,7 +70,7 @@ ModuleClosedNodes14=39,40,41,43,44 ModuleClosedNodes15= ModuleClosedNodes16= ModuleClosedNodes17= -ModuleClosedNodes18=3,4,5,7,8,9,10,11,12,13,15,16,18 +ModuleClosedNodes18=5,7,8,9,10,11,12,13,15,16,18 ModuleClosedNodes19= ModuleClosedNodes2= ModuleClosedNodes20= @@ -91,6 +91,6 @@ ModuleClosedNodes6= ModuleClosedNodes7=3,11,12 ModuleClosedNodes8= ModuleClosedNodes9= -NavigationStack=Subs,traeCliente,834,0,C_Productos,clv_prods_ll_VisibleRangeChanged,1159,0,kms_helperSubs,traeDescXSku,1044,6,kms_helperSubs,traeDescXTipo,1030,0,Starter,Process_Globals,42,0,Starter,Service_Start,84,0,C_Productos,LlenaProdsLL,1286,6,B4XMainPage,Initialize,118,0,B4XMainPage,Class_Globals,110,0,Subs,traePromo,981,6 +NavigationStack=C_Principal,JobDone,969,6,B4XMainPage,B4XPage_Created,143,6,C_Cliente,B4XPage_Appear,587,6,Subs,traePromo,986,6,Subs,procesaPromocion,1180,0,Subs,traePromosVendidas,1169,0,Main,Process_Globals,20,0,Main,Activity_KeyPress,42,0,Main,Activity_ActionBarHomeClick,37,0,Main,Activity_Create,33,0 SelectedBuild=0 -VisibleModules=1,28,11,24,3,12,4,29,13,14 +VisibleModules=1,28,11,3,12,4,29,13,14,24 diff --git a/B4A/Subs.bas b/B4A/Subs.bas index 58b15b3..df46361 100644 --- a/B4A/Subs.bas +++ b/B4A/Subs.bas @@ -977,12 +977,20 @@ Sub traePromo(promo As String, cliente As String) As Map If c.RowCount > 0 Then promoMap = CreateMap("id":promo, "maxXcliente":c.GetString("CAT_PA_MAXPROMCLIE"), "maxRecurrente":c.GetString("CAT_PA_MAXPROMREC"), "maxPromos":c.GetString("CAT_PA_MAXPROM")) 'PROMOCIONES SEGMENTADAS, si la promo esta en la lista, SOLO los clientes que la tengan la pueden ver. Private ps As Cursor = Starter.skmt.ExecQuery($"select * from HIST_CLIENTE_CANT_PROMOS where HCCP_PROMO = '${promo}'"$) + Log($"select * from HIST_CLIENTE_CANT_PROMOS where HCCP_PROMO = '${promo}'"$) +' Log($"PROMOS SEGMENTADAS DISPONIBLES: ${ps.RowCount}"$) If ps.RowCount > 0 Then ps.Position = 0 - promoMap = CreateMap("id":promo, "maxXcliente":0, "maxRecurrente":0, "maxPromos":0) 'Si es segmentada la ponemos en cero, porque SOLO le aparece a ciertos clientes. - Log(">>> SEGMENTADA -> " & promo) - If traeCliente = ps.GetString("HCCP_CLIENTE") Then - promoMap = CreateMap("id":promo, "maxXcliente":ps.GetString("HCCP_CANT"), "maxRecurrente":0, "maxPromos":ps.GetString("HCCP_CANT")) 'Si es segmentada SOLO le aparece a ciertos clientes. + promoMap = CreateMap("id":promo, "maxXcliente":0, "maxRecurrente":0, "maxPromos":0) 'Si es segmentada la ponemos en cero, porque SOLO le debe de aparecer a ciertos clientes. + Log(">>> SEGMENTADA -> " & promo & " | " & ps.GetString("HCCP_CLIENTE")) +' Select hccp_cliente As valido from HIST_CLIENTE_CANT_PROMOS where HCCP_PROMO = '${promo}' and HCCP_CLIENTE = '${traecliente}' + Private ps2 As Cursor = Starter.skmt.ExecQuery($"Select * from HIST_CLIENTE_CANT_PROMOS where HCCP_PROMO = '${promo}' and HCCP_CLIENTE = '${traeCliente}' and HCCP_CANT > HCCP_CANT_VENDIDA"$) + Log($"Select * from HIST_CLIENTE_CANT_PROMOS where HCCP_PROMO = '${promo}' and HCCP_CLIENTE = '${traeCliente}' and HCCP_CANT > HCCP_CANT_VENDIDA"$) + Log($"registros:${ps2.RowCount}"$) + If ps2.RowCount > 0 Then + ps2.Position = 0 +' Log($"registros:${ps2.RowCount}, cant:${ps2.GetString("HCCP_CANT")}"$) + promoMap = CreateMap("id":promo, "maxXcliente":(ps2.GetString("HCCP_CANT")-ps2.GetString("HCCP_CANT_VENDIDA")), "maxRecurrente":0, "maxPromos":ps2.GetString("HCCP_CANT")) 'Si es segmentada SOLO le aparece a ciertos clientes. End If End If 'Termina promos segmentadas @@ -1291,7 +1299,7 @@ End Sub 'regresa el maximo por productos fijos. Ej. si las promos por variables es 10, pero el maximo por 'fijos es 5, entonces regresamos 5. Sub revisaMaxPromosProdsVariablesPorInventario(pm As Map) As Int 'ignore - Private thisLog As Boolean = False + Private thisLog As Boolean = True If thisLog Then Log("======================================================") If thisLog Then Log("======================================================") Private invFijoXpromo As Map