From 44c02757dcb2fab66dc2e0bebc0f3400a4ed3a90 Mon Sep 17 00:00:00 2001 From: Jose Alberto Guerra Ugalde Date: Wed, 2 Apr 2025 13:23:01 -0600 Subject: [PATCH] =?UTF-8?q?-=20VERSION=205.04.01=20-=20Se=20agreg=C3=B3=20?= =?UTF-8?q?la=20validacion=20de=20fechas=20de=20fin=20de=20promoci=C3=B3n?= =?UTF-8?q?=20para=20Preventa=20y=20Venta.=20-=20Se=20agreg=C3=B3=20que=20?= =?UTF-8?q?cuando=20se=20hace=20abordo=20(siguiente=20carga),=20los=20limi?= =?UTF-8?q?tes=20configurados=20para=20las=20promos=20(maxpromos,=20maxrec?= =?UTF-8?q?=20y=20maxxcliente)=20no=20se=20tomen=20en=20cuenta.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- B4A/B4XMainPage.bas | 2 ++ B4A/C_Principal.bas | 20 ++++++++++-------- B4A/C_Productos.bas | 2 ++ B4A/Durakelo.b4a | 48 +++++++++++++++++++++---------------------- B4A/Durakelo.b4a.meta | 6 +++--- B4A/Subs.bas | 33 +++++++++++++++++++++++++---- 6 files changed, 71 insertions(+), 40 deletions(-) diff --git a/B4A/B4XMainPage.bas b/B4A/B4XMainPage.bas index a8fd8de..d9e325a 100644 --- a/B4A/B4XMainPage.bas +++ b/B4A/B4XMainPage.bas @@ -170,6 +170,8 @@ Private Sub B4XPage_Created (Root1 As B4XView) Subs.agregaColumna("CAT_ENCUESTA_PREGUNTA", "CAT_EP_RUTAS", "TEXT") Subs.agregaColumna("HIST_ENCUESTA", "HE_LAT", "TEXT") Subs.agregaColumna("HIST_ENCUESTA", "HE_LON", "TEXT") + Subs.agregaColumna("CAT_DETALLES_PAQ", "CAT_PA_VIGENCIA_FIN", "TEXT") + Subs.agregaColumna("CAT_DETALLES_PAQ", "CAT_PA_VIGENCIAABORDO", "TEXT") c=Starter.skmt.ExecQuery2("select count(*) as CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SERVER")) c.Position =0 If c.GetString("CUANTOS") = 0 Then diff --git a/B4A/C_Principal.bas b/B4A/C_Principal.bas index 3a88167..30ebb6a 100644 --- a/B4A/C_Principal.bas +++ b/B4A/C_Principal.bas @@ -917,7 +917,7 @@ Sub cargar_Click cmd.Name = "select_cat_paquetes_abordo_DUR" cmd.Parameters = Array As Object(ALMACEN) reqManager.ExecuteQuery(cmd , 0, "gunaprodpa") 'xxxxxxxxxxxxxx - + cmd.Initialize cmd.Name = "select_cat_paquetes_DUR" cmd.Parameters = Array As Object(ALMACEN) @@ -929,10 +929,10 @@ Sub cargar_Click reqManager.ExecuteQuery(cmd , 0, "gunaprodps") 'xxxxxxxxxxxxxxxx cmd.Initialize - cmd.Name = "select_cat_detallepa_DUR" + cmd.Name = "select_cat_detallepa2_DUR" cmd.Parameters = Array As Object(ALMACEN) reqManager.ExecuteQuery(cmd , 0, "detallepaq") - + cmd.Initialize cmd.Name = "selectPromoProveedor" reqManager.ExecuteQuery(cmd , 0, "promoProveedor") @@ -964,10 +964,10 @@ Sub cargar_Click ''' validar para que sirve esto ya que no esta en la base de datos. - cmd.Initialize - cmd.Name = "select_verificacion_DUR" - cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) - reqManager.ExecuteQuery(cmd , 0, "cat_verificacion") 'xxxxxxxxxxxxxxx +' cmd.Initialize +' cmd.Name = "select_verificacion_DUR" +' cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) +' reqManager.ExecuteQuery(cmd , 0, "cat_verificacion") 'xxxxxxxxxxxxxxx cmd.Initialize cmd.Name = "select_fecha" @@ -1576,7 +1576,9 @@ Sub JobDone(Job As HttpJob) Dim CAT_DP_CLASIF As String = records(RESULT.Columns.Get("CAT_DP_CLASIF")) Dim CAT_DP_PRECIO As String = records(RESULT.Columns.Get("CAT_DP_PRECIO")) Dim CAT_DP_PRECIO_SIMPTOS As String = records(RESULT.Columns.Get("CAT_DP_PRECIO_SIMPTOS")) - skmt.ExecNonQuery2("INSERT INTO CAT_DETALLES_PAQ(CAT_DP_ALMACEN,CAT_DP_ID,CAT_DP_IDPROD,CAT_DP_TIPO,CAT_DP_PZAS,CAT_DP_USUARIO,CAT_DP_FECHA,CAT_DP_REGALO,CAT_DP_CLASIF,CAT_DP_PRECIO,CAT_DP_PRECIO_SIMPTOS) VALUES (?,?,?,?,?,?,?,?,?,?,?)", Array As Object (CAT_DP_ALMACEN,CAT_DP_ID,CAT_DP_IDPROD,CAT_DP_TIPO,CAT_DP_PZAS,CAT_DP_USUARIO,CAT_DP_FECHA,CAT_DP_REGALO,CAT_DP_CLASIF,CAT_DP_PRECIO,CAT_DP_PRECIO_SIMPTOS)) + Dim CAT_PA_VIGENCIA_FIN As String = records(RESULT.Columns.Get("CAT_PA_VIGENCIA_FIN")) + Dim CAT_PA_VIGENCIAABORDO As String = records(RESULT.Columns.Get("CAT_PA_VIGENCIAABORDO")) + skmt.ExecNonQuery2("INSERT INTO CAT_DETALLES_PAQ(CAT_DP_ALMACEN,CAT_DP_ID,CAT_DP_IDPROD,CAT_DP_TIPO,CAT_DP_PZAS,CAT_DP_USUARIO,CAT_DP_FECHA,CAT_DP_REGALO,CAT_DP_CLASIF,CAT_DP_PRECIO,CAT_DP_PRECIO_SIMPTOS,CAT_PA_VIGENCIA_FIN,CAT_PA_VIGENCIAABORDO) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (CAT_DP_ALMACEN,CAT_DP_ID,CAT_DP_IDPROD,CAT_DP_TIPO,CAT_DP_PZAS,CAT_DP_USUARIO,CAT_DP_FECHA,CAT_DP_REGALO,CAT_DP_CLASIF,CAT_DP_PRECIO,CAT_DP_PRECIO_SIMPTOS,CAT_PA_VIGENCIA_FIN,CAT_PA_VIGENCIAABORDO)) Next If PB2.Progress = 0 Then PB2.Progress = 30 @@ -2535,7 +2537,7 @@ Sub Resumen_Click Else ImageView3.Bitmap = LoadBitmap(File.DirAssets, "palomita_verde.png") End If - L_TICKPROM.Text = numberformat2(Round2((c.GetString("MONTO_DIA") / c.GetString("CLIENTES_DIA")),2), 1, 2, 2, true) + L_TICKPROM.Text = NumberFormat2(Round2((c.GetString("MONTO_DIA") / c.GetString("CLIENTES_DIA")),2), 1, 2, 2, True) If c.GetString("MONTO_DIA") < 2500 Then ImageView5.Bitmap = LoadBitmap(File.DirAssets, "tache_rojo.png") Else if c.GetString("MONTO_DIA") > = 2500 And c.GetString("MONTO_DIA") < 4000 Then diff --git a/B4A/C_Productos.bas b/B4A/C_Productos.bas index f45a250..5a4cd73 100644 --- a/B4A/C_Productos.bas +++ b/B4A/C_Productos.bas @@ -165,6 +165,7 @@ Sub B4XPage_Appear ' Starter.skmt.ExecNonQuery2("UPDATE CAT_GUNAPROD SET CAT_GP_TIPOPROD = (?) WHERE CAT_GP_TIPOPROD = (?) ",Array As Object("COMPLEMENTARIO","3")) ' Starter.skmt.ExecNonQuery2("UPDATE CAT_GUNAPROD SET CAT_GP_TIPOPROD = (?) WHERE CAT_GP_TIPOPROD = (?) ",Array As Object("CATALOGO REGULAR","0")) ' Starter.skmt.ExecNonQuery2("UPDATE CAT_GUNAPROD SET CAT_GP_TIPOPROD = (?) WHERE CAT_GP_CLASIF = (?) ",Array As Object("PROMOS","PROMOS")) + if Subs.traeCliente = 0 then Starter.tipov = "ABORDO" If Starter.tipov = "PREVENTA" Then query = "cat_gunaprod" query2 = "COUNT_GUNAPROD" @@ -270,6 +271,7 @@ Sub B4XPage_Appear 'Traemos las promociones con el proveedor incluido. c2=Starter.skmt.ExecQuery("Select distinct CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_TIPO, CAT_DP_CLASIF, CAT_CLASF_PROD.* from " & query & " join CAT_DETALLES_PAQ on CAT_DP_ID = CAT_GP_ID join CAT_CLASF_PROD on CAT_DP_CLASIF = CAT_CP_ID where CAT_GP_ALMACEN > 0 And CAT_GP_TIPO = 'PROMOS' AND CAT_GP_SUBTIPO ='PROMOS' AND CAT_GP_TIPOPROD <> 1 and (length(CAT_GP_CODPROMO) = 1 OR CAT_GP_CODPROMO = CAT_GP_ID) order by CAT_CP_NOMPROD") + Log(("Select distinct CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_TIPO, CAT_DP_CLASIF, CAT_CLASF_PROD.* from " & query & " join CAT_DETALLES_PAQ on CAT_DP_ID = CAT_GP_ID join CAT_CLASF_PROD on CAT_DP_CLASIF = CAT_CP_ID where CAT_GP_ALMACEN > 0 And CAT_GP_TIPO = 'PROMOS' AND CAT_GP_SUBTIPO ='PROMOS' AND CAT_GP_TIPOPROD <> 1 and (length(CAT_GP_CODPROMO) = 1 OR CAT_GP_CODPROMO = CAT_GP_ID) order by CAT_CP_NOMPROD")) ' Log($"Resultados : ${c2.RowCount}"$) Private mPromosProv As Map mPromosProv.Initialize diff --git a/B4A/Durakelo.b4a b/B4A/Durakelo.b4a index efd0464..5e660c7 100644 --- a/B4A/Durakelo.b4a +++ b/B4A/Durakelo.b4a @@ -591,31 +591,31 @@ File629=infonavit1.jpg File63=118.png File630=itembuttonblue.png File631=k.png -File632=K-b27c0809.png -File633=kelloggs.png -File634=keymon_logo.png -File635=kmt.db -File636=login.bal -File637=logo sanfer.jpg -File638=Logo_durakelo_192xx192.jpeg -File639=logo_exitus1.jpg +File632=kelloggs.png +File633=keymon_logo.png +File634=kmt.db +File635=login.bal +File636=logo sanfer.jpg +File637=Logo_durakelo_192xx192.jpeg +File638=logo_exitus1.jpg +File639=MainPage.bal File64=118marker-rojo.png -File640=MainPage.bal -File641=Malo.jpg -File642=mapa.bal -File643=mapa_rutas.bal -File644=nestle.png -File645=nota.bal -File646=NoVenta.bal -File647=nuevocliente.bal -File648=palomita_verde.png -File649=pedido.bal +File640=Malo.jpg +File641=mapa.bal +File642=mapa_rutas.bal +File643=nestle.png +File644=nota.bal +File645=NoVenta.bal +File646=nuevocliente.bal +File647=palomita_verde.png +File648=pedido.bal +File649=pedidoitem.bal File65=118marker-verde.png -File650=pedidoitem.bal -File651=planfia_logo.png -File652=planfia_logo_old.png -File653=planfia_logo_old2.png -File654=principal.bal +File650=planfia_logo.png +File651=planfia_logo_old.png +File652=planfia_logo_old2.png +File653=principal.bal +File654=principal.bal.bak File655=proditem.bal File656=productos.bal File657=productos.bal.old @@ -1406,7 +1406,7 @@ Version=12.8 #Region Project Attributes #ApplicationLabel: Durakelo #VersionCode: 1 - #VersionName: 5.02.08 + #VersionName: 5.04.01 'SupportedOrientations possible values: unspecified, landscape or portrait. #SupportedOrientations: portrait #CanInstallToExternalStorage: False diff --git a/B4A/Durakelo.b4a.meta b/B4A/Durakelo.b4a.meta index 8974161..9f79c06 100644 --- a/B4A/Durakelo.b4a.meta +++ b/B4A/Durakelo.b4a.meta @@ -51,7 +51,7 @@ ModuleBreakpoints9= ModuleClosedNodes0= ModuleClosedNodes1= ModuleClosedNodes10= -ModuleClosedNodes11=7,35,36,41,42 +ModuleClosedNodes11=3,7,35,36,41,42 ModuleClosedNodes12= ModuleClosedNodes13= ModuleClosedNodes14= @@ -73,6 +73,6 @@ ModuleClosedNodes6= ModuleClosedNodes7= ModuleClosedNodes8= ModuleClosedNodes9= -NavigationStack=Main,Globals,23,0,Main,Activity_Create,33,0,Main,Activity_ActionBarHomeClick,39,0,C_Principal,B_OK_PAS_Click,2330,0,C_Principal,Resumen_Click,2389,0,Main,Activity_KeyPress,40,0,Diseñador Visual,principal.bal,-100,6,C_Principal,initialize,164,0,C_Principal,B4XPage_Created,173,4,C_Cliente,Class_Globals,0,0,C_Cliente,B4XPage_Created,174,1 +NavigationStack=Subs,traePromosVendidas,1006,0,C_Promos,muestraPromo,89,0,Subs,procesaPromocion,1023,6,Subs,revisaMaxPromosProdsFijosPorInventario2,1059,6,Subs,traeMaxPromos,975,6,C_Productos,B4XPage_Appear,161,6,Subs,revisaMaxPromosProdsFijosPorInventario,1098,2,Subs,revisaFechaVigenciaPromo,1503,0,C_Nota,borra_Click,188,0,C_Nota,Activity_KeyPress,176,0,C_Nota,Class_Globals,14,0 SelectedBuild=0 -VisibleModules=2,10,4,19,6,8,9,11,24,23 +VisibleModules=2,10,4,19,9,11,23,12,8 diff --git a/B4A/Subs.bas b/B4A/Subs.bas index d0ba15c..740d1df 100644 --- a/B4A/Subs.bas +++ b/B4A/Subs.bas @@ -858,6 +858,8 @@ Sub traePromo(promo As String, cliente As String) As Map promoMap.Put("prodsFijosPiezas", prodsFijosPiezas) promoMap.Put("prodsVariablesCant", prodsVariables.Size) promoMap.Put("prodsVariablesPrecios", prodsVariablesPrecios) + promoMap.Put("vigencia", c.GetString("CAT_PA_VIGENCIA_FIN").SubString2(0, c.GetString("CAT_PA_VIGENCIA_FIN").IndexOf(" "))) + promoMap.Put("vigencia_abordo", c.GetString("CAT_PA_VIGENCIAABORDO").SubString2(0, c.GetString("CAT_PA_VIGENCIAABORDO").IndexOf(" "))) promoMap.Put("resultado", "ok") Else promoMap.Put("resultado", "No hay datos de la promoción.") @@ -980,11 +982,11 @@ Sub traeMaxPromos(pm As Map) As Int ' End If If thisLog Then LogColor("==== HISTORICO:"&pm.Get("historico"), Colors.Red) If thisLog Then Log(pm) - Log(maxPromos) +' Log(maxPromos) If pm.Get("historico") = "1" Then maxPromos.Add(pm.Get("maxRecurrente")) 'Si hay historico, agregamos maxRecurrente maxPromos.Add(pm.Get("maxPromos")) 'Agregamos maxPromos maxPromos.Add(pm.Get("maxXcliente")) 'Agregamos maxXcliente - Log(maxPromos) +' Log(maxPromos) If hccp.RowCount > 0 Then 'Agregamos promos HCCP hccp.Position = 0 maxPromos.Add(hccp.GetString("HCCP_CANT")) @@ -994,6 +996,7 @@ Sub traeMaxPromos(pm As Map) As Int mp0 = maxPromos.Get(0) mp = mp0 - traePromosVendidas(pm.Get("id"), traeCliente) If thisLog Then Log($"Max Promos (${mp0}) - promos vendidas (${(traePromosVendidas(pm.Get("id"), traeCliente)).As(Int)}) = ${mp}"$) + If Starter.tipov = "ABORDO" Then mp = 5000 ' Si es ABORDO (siguiente carga), se quitan los limites configurados Return mp 'Regresamos el numero mas pequeño de las opciones. End Sub @@ -1019,11 +1022,13 @@ Sub procesaPromocion(idPromo As String, cliente As String) As Map 'ignore If thisLog Then LogColor(pm, Colors.Blue) ' If thisLog Then LogColor("|" & pm.Get("maxPromos") & "|", Colors.Blue) ' Log("|"&revisaMaxPromosProdsFijosPorInventario(pm)&"|") + Private vigente As Boolean = revisaFechaVigenciaPromo(pm) ' Revisamos que la promo este vigente segun las fechas de preventa y venta If revisaMaxPromosProdsFijosPorInventario(pm) < 1 Then pm.Put("resultado", 0) - Log($"resultado = ${pm.Get("resultado")}"$) - If pm.Get("resultado") = "ok" Then 'Si encontramos la promoción, entonces ... + Log($"Max promos de prodsFijos POR inventario = ${pm.Get("resultado")}"$) + If vigente And pm.Get("resultado") = "ok" Then 'Si encontramos la promoción, entonces ... 'Buscamos el máximo de promociones permitidas. mp = traeMaxPromos(pm) + Log("########### " & Starter.tipov & "|" & mp & "|") ' If thisLog Then LogColor($"Promociones permitidas=${mp}"$, Colors.Blue) ' If thisLog Then Log("Promos vendidas: " & traePromosVendidas(idPromo, cliente)) If mp < 1 Then @@ -1485,4 +1490,24 @@ Sub agregaColumna(tabla As String, columna As String, tipo As String) 'ignore End Try Log(2) End Try +End Sub + +'Regresa verdadero o falso dependiendo de la fecha de vigencia del tipo de venta. +Sub revisaFechaVigenciaPromo(pm As Map) As Boolean + Private vigente As Boolean = False + LogColor("Entramos a revisaFechaVigenciaPromo", Colors.red) +' Log("Fecha vigencia: " & pm.Get("vigencia")) +' Log("Fecha vigencia abordo: " & pm.Get("vigencia_abordo")) +' Log("Tipo venta: " & Starter.tipov) + DateTime.DateFormat = "yyyyMMdd" + If Starter.tipov = "PREVENTA" Or Starter.tipov = "ABORDO" Then + Private vigencia As String = pm.Get("vigencia").As(String).Replace("-", "") + If vigencia >= DateTime.Date(DateTime.Now) Then vigente = True + Else if Starter.tipov = "VENTA" Then + Private vigencia As String = pm.Get("vigencia_abordo").As(String).Replace("-", "") + If vigencia >= DateTime.Date(DateTime.Now) Then vigente = True + End If +' Log(Starter.tipov & "|" & vigencia & "|" & DateTime.Date(DateTime.Now)) + LogColor("Promo vigente: " & vigente, Colors.red) + Return vigente End Sub \ No newline at end of file