- VERSION 5.04.01

- Se agregó la validacion de fechas de fin de promoción para Preventa y Venta.
- Se agregó que cuando se hace abordo (siguiente carga), los limites configurados para las promos (maxpromos, maxrec y maxxcliente) no se tomen en cuenta.
This commit is contained in:
2025-04-02 13:23:01 -06:00
parent 814bfb136c
commit 44c02757dc
6 changed files with 71 additions and 40 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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