- Se completó el codigo para las promos por ruta, si ya se vendio la promo, esta las vendidas del total disponible.

This commit is contained in:
2024-02-28 13:57:40 -06:00
parent 0d5ef58209
commit 4e4354145b
3 changed files with 34 additions and 16 deletions

View File

@@ -961,29 +961,24 @@ End Sub
'Regresa el numero máximo de promociones permitidas, tomando en cuenta recurrentes, clientes y maxPromos.
Sub traeMaxPromos(pm As Map) As Int
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 maxPromos As List
Private vendidas As Int = 0
maxPromos.Initialize
' If Starter.promosLog Then Log("==== HISTORICO:"&pm.Get("historico"))
If thisLog Then Log(pm)
'Traemos las promos por ruta, y si existe, la agregamos a la lista.
Private pxr As Cursor = Starter.skmt.ExecQuery($"select * from CAT_PROMOS_RUTA where CPR_PROMO = '${pm.Get("id")}'"$)
Private maxXruta As String = ""
If pxr.RowCount > 0 Then
pxr.Position = 0
Log($"PROMOS POR RUTA PARA ${pm.Get("id")} = ${pxr.GetString("CPR_CANT")}"$)
maxXruta = pxr.GetString("CPR_CANT")
End If
Private maxXruta As String = traeMaxPromosXruta(pm.Get("id"))
If pm.Get("historico") = "1" Then maxPromos.Add(pm.Get("maxRecurrente")) 'Si hay historico, agregamos maxRecurrente
maxPromos.Add(pm.Get("maxPromos").As(Int)) 'Agregamos maxPromos
maxPromos.Add(pm.Get("maxXcliente").As(Int)) 'Agregamos maxXcliente
If maxXruta <> "" Then maxPromos.Add(maxXruta.As(Int)) 'Agregamos maxXruta
maxPromos.Sort(True)
Log(maxPromos)
' Log($"|${pm.Get("id").As(String).trim}|${traeCliente.Trim}|"$)
Private c As Cursor = Starter.skmt.ExecQuery2("select sum(PE_CANT) as vendidas from PEDIDO where PE_PROID = ? and PE_CLIENTE = ? ", Array As String(pm.Get("id").As(String).trim, traeCliente.Trim))
If c.RowCount > 0 Then
@@ -998,6 +993,29 @@ Sub traeMaxPromos(pm As Map) As Int
Return maxPromos.Get(0) - vendidas 'Regresamos el numero mas pequeño de las opciones.
End Sub
'Regresa las promos disponibles por ruta o "" si no hay.
Sub traeMaxPromosXruta(idPromo As String) As String
'Traemos las promos por ruta, y si existe, la agregamos a la lista.
Private pxr As Cursor = Starter.skmt.ExecQuery($"select * from CAT_PROMOS_RUTA where CPR_PROMO = '${idPromo}'"$)
Private maxXruta As String = ""
If pxr.RowCount > 0 Then
pxr.Position = 0
Log($"PROMOS POR RUTA PARA ${idPromo} = ${pxr.GetString("CPR_CANT")}"$)
maxXruta = pxr.GetString("CPR_CANT")
End If
'Revisamos las promos que ya se hayan vendido y las restamos del máximo.
Private cp As Cursor = Starter.skmt.ExecQuery($"select count(PE_CANT) as cuantos from PEDIDO where PE_PROID = '${idPromo}'"$)
Log(cp.RowCount)
If cp.RowCount > 0 Then
Private pa As Int = 0
cp.Position = 0
Log(cp.GetInt("cuantos"))
If IsNumber(cp.GetInt("cuantos")) Then pa = cp.GetInt("cuantos")
If maxXruta <> "" Then maxXruta = maxXruta - pa
End If
Return maxXruta
End Sub
'Regresa la cantidad de promos que se le han vendido al cliente.
Sub traePromosVendidas(promo As String, cliente As String) As Int
Private c As Cursor
@@ -1011,7 +1029,7 @@ Sub traePromosVendidas(promo As String, cliente As String) As Int
End Sub
Sub procesaPromocion(idPromo As String, cliente As String) 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 inicioContador As String = DateTime.Now
If thisLog Then LogColor($"********* Iniciamos revision de Promo ${idPromo} *********"$, Colors.Magenta)
'Obtenemos el mapa con toda la info de la promoción.
@@ -1035,7 +1053,7 @@ Sub procesaPromocion(idPromo As String, cliente As String) As Map 'ignore
If thisLog Then Log("Alcanzan los variables? --> " & pv)
If pv Then Return CreateMap("status":"ok", "mp":pm) Else Return CreateMap("status":"ko", "mp":pm)
Else
If thisLog Then LogColor("NO HAY INVENTARIO SUFICIENTE " & idPromo, Colors.red)
LogColor("NO HAY INVENTARIO SUFICIENTE " & idPromo, Colors.red)
Return CreateMap("status":"ko", "mp":pm)
End If
End If