From 67dc8d90bb7a37ebe983e12580d050388a3da284 Mon Sep 17 00:00:00 2001 From: Jose Alberto Guerra Ugalde Date: Mon, 19 Feb 2024 18:29:56 -0600 Subject: [PATCH] Se corrige que si una promocion no tiene ningun producto fijo configurado, regresaba que no hay suficiente producto fijo para la promo. --- B4A/KelloggsV4.b4a | 2 +- B4A/KelloggsV4.b4a.meta | 2 +- B4A/Subs.bas | 17 ++++++++++------- 3 files changed, 12 insertions(+), 9 deletions(-) diff --git a/B4A/KelloggsV4.b4a b/B4A/KelloggsV4.b4a index d463ce7..720aa3e 100644 --- a/B4A/KelloggsV4.b4a +++ b/B4A/KelloggsV4.b4a @@ -869,7 +869,7 @@ Version=12.8 #Region Project Attributes #ApplicationLabel: Kelloggs Venta #VersionCode: 3000 - #VersionName: 4.02.16 + #VersionName: 4.02.17 #SupportedOrientations: portrait #CanInstallToExternalStorage: False #BridgeLogger:true diff --git a/B4A/KelloggsV4.b4a.meta b/B4A/KelloggsV4.b4a.meta index b36df70..3c7c8f5 100644 --- a/B4A/KelloggsV4.b4a.meta +++ b/B4A/KelloggsV4.b4a.meta @@ -88,6 +88,6 @@ ModuleClosedNodes6= ModuleClosedNodes7=3,11,12 ModuleClosedNodes8= ModuleClosedNodes9= -NavigationStack=Subs,traePromo,980,0,Subs,traeRuta,826,0,Starter,Service_Start,83,0,Subs,procesaPromocion,1176,1,Visual Designer,promociones.bal,-100,4,kms_helperSubs,traeVentaAbordo,780,0,Subs,traeInvDeBD,865,0,C_Promos,revisaInvProdsVariables,435,6,C_Promos,b_promoMenos_Click,375,0,C_Promos,b_promoMas_Click,422,6,C_Promos,cuentaProds,347,0 +NavigationStack=Subs,traeCliente,835,0,C_Promos,b_promoMenos_Click,375,0,C_Promos,b_promoMas_Click,425,6,C_Promos,cuentaProds,358,0,Subs,revisaMaxPromosProdsVariablesPorInventario,1346,0,Subs,traeMaxPromos,1140,1,Subs,revisaMaxPromosProdsFijosPorInventario2,1231,1,Subs,procesaPromocion,1188,1,Subs,alcanzanLosVariablesParaPromo,1119,1,Subs,traePromo,1003,5,Subs,restaFijosPromo,1093,6,Subs,traemosInventarioDisponibleParaPromo,1078,0 SelectedBuild=0 VisibleModules=1,27,11,3,12,4,28,13,23,2 diff --git a/B4A/Subs.bas b/B4A/Subs.bas index 2e354c1..477c162 100644 --- a/B4A/Subs.bas +++ b/B4A/Subs.bas @@ -992,7 +992,7 @@ Sub traePromo(promo As String, cliente As String) As Map ' 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}"$) + 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 debe de aparecer a ciertos clientes. @@ -1000,13 +1000,14 @@ Sub traePromo(promo As String, cliente As String) As Map ' 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}"$) + 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. + Log($"registros:${ps2.RowCount}, cliente: ${ps2.GetString("HCCP_CLIENTE")} cant:${ps2.GetString("HCCP_CANT")}"$) + promoMap = CreateMap("id":promo, "maxXcliente":(ps2.GetString("HCCP_CANT")-ps2.GetString("HCCP_CANT_VENDIDA")), "maxRecurrente":ps2.GetString("HCCP_CANT"), "maxPromos":ps2.GetString("HCCP_CANT")) 'Si es segmentada SOLO le aparece a ciertos clientes. End If End If + Log(promoMap) ' ########## TERMINA PROMOS SEGMENTADAS ########## c = Starter.skmt.ExecQuery("Select count(*) as hist from HIST_PROMOS where HP_CLIENTE = '"& cliente & "' and HP_CODIGO_PROMOCION = '" & promo & "'") 'Revisamos si hay historico de la promoción. c.Position = 0 @@ -1086,15 +1087,17 @@ End Sub 'Hay que darle como parametro un mapa (traePromo(promo)) con toda la informacion de la promocion. 'Regresa en el mapa la llave "resultado" que nos da "ok" o "No hay suficiente producto para la promocion". Sub restaFijosPromo(promoMap As Map) As Map 'ignore - Private thisLog As Boolean = False 'Si es verdadero, muestra los logs de este sub. + Private thisLog As Boolean = True 'Si es verdadero, muestra los logs de este sub. Private inventariosDisponiblesParaEstaPromo As Map = traemosInventarioDisponibleParaPromo(promoMap.Get("id")) 'Obtenemos un mapa con el inventario disponible para cada producto de la promocion desde la base de datos. If thisLog Then LogColor(inventariosDisponiblesParaEstaPromo, Colors.red) If thisLog Then LogColor("Inventario inicial antes de FIJOS: "&inventariosDisponiblesParaEstaPromo, Colors.Gray) 'Inventario inicial. Private i As Int Private prodsmap As Map = promoMap.Get("productos") 'Obtenemos un mapa con todos los productos de la promoción. Private prodsFijos As List = promoMap.get("prodsFijos") 'Obtenemos un a lista con los productos fijos de la promoción. - If thisLog Then LogColor("ProdsFijos > " & prodsFijos, Colors.red) + If thisLog Then LogColor("ProdsFijos -> " & prodsFijos, Colors.red) inventariosDisponiblesParaEstaPromo.Put("resultado", "No hay suficiente producto para la promocion.") 'Valor por default + Log($"Prods fijos requeridos ${prodsFijos.Size}"$) + If prodsFijos.Size = 0 Then inventariosDisponiblesParaEstaPromo.Put("resultado", "ok") 'Si no lleva prods fijos la promo, entonces ponemos FIJOS OK. For p = 0 To prodsFijos.Size - 1 Private t As String = prodsFijos.Get(p) 'Obtenemos el Id de este producto desde la lista de productos fijos. Private p2 As Map = prodsmap.Get(t) 'Obtenemos un mapa con los datos de este producto (id, precio, almacen, tipo, piezas, etc.) @@ -1116,7 +1119,7 @@ Sub restaFijosPromo(promoMap As Map) As Map 'ignore Exit End If Next - If thisLog Then LogColor("Inventario final depues de FIJOS: "&inventariosDisponiblesParaEstaPromo, Colors.blue) 'Inventario final. + If thisLog Then LogColor("Inventario final despues de FIJOS: "&inventariosDisponiblesParaEstaPromo, Colors.blue) 'Inventario final. Return inventariosDisponiblesParaEstaPromo End Sub