mirror of
https://github.com/KeymonSoft/Kelloggs_v4.git
synced 2026-04-20 19:49:12 +00:00
- Código de promociones "al parecer" completo.
This commit is contained in:
@@ -43,11 +43,12 @@ Sub Class_Globals
|
|||||||
Dim prodsPedidoActual As String
|
Dim prodsPedidoActual As String
|
||||||
Dim montoPedidoActual As String
|
Dim montoPedidoActual As String
|
||||||
Dim promosMap As Map
|
Dim promosMap As Map
|
||||||
|
Dim promosC As Promociones
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
'You can add more parameters here.
|
'You can add more parameters here.
|
||||||
Public Sub Initialize As Object
|
Public Sub Initialize As Object
|
||||||
' promosC.Initialize(Me, "promosC", Starter.skmt)
|
promosC.Initialize(Me, "promosC", Starter.skmt)
|
||||||
Return Me
|
Return Me
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
@@ -81,46 +82,65 @@ Sub B4XPage_Appear
|
|||||||
End Sub
|
End Sub
|
||||||
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||||
|
|
||||||
Sub muestraPromo(promo As String, cliente As String)
|
Sub muestraPromo(idPromo As String, cliente As String)
|
||||||
Log("muestraPromo:"&promo)
|
Log("muestraPromo: " & idPromo)
|
||||||
Private thisLog As Boolean = False
|
Private thisLog As Boolean = True
|
||||||
' If thisLog Then Log(promo)
|
promosC.tablaProds = "CAT_GUNAPROD2"
|
||||||
estaPromo = promo
|
If Starter.tipov = "PREVENTA" Or Starter.tipov = "ABORDO" Then promosC.tablaProds = "CAT_GUNAPROD"
|
||||||
|
' If thisLog Then Log(idPromo)
|
||||||
|
estaPromo = idPromo
|
||||||
esteCliente = cliente
|
esteCliente = cliente
|
||||||
Private mp As Map = Subs.traePromo(promo, cliente)
|
' Private mp As Map = Subs.traePromo(idPromo, cliente)
|
||||||
If thisLog Then LogColor(mp, Colors.blue)
|
' If thisLog Then LogColor(mp, Colors.blue)
|
||||||
Private prodsPromo As Map = mp.Get("productos") 'Los productos de la promoción.
|
' Private prodsPromo As Map = mp.Get("productos") 'Los productos de la promoción.
|
||||||
' Private invDispPromo As Map = Subs.traemosInventarioDisponibleParaPromo(promo)
|
|
||||||
Private invDispPromo As Map = Subs.restaFijosPromo(mp)
|
' Private invDispPromo As Map = Subs.restaFijosPromo(mp)
|
||||||
|
Private invDispPromo As Map = promosC.restaFijosDePromo(idPromo)
|
||||||
|
|
||||||
If thisLog Then Log($"invDispPromo=${invDispPromo}"$)
|
If thisLog Then Log($"invDispPromo=${invDispPromo}"$)
|
||||||
If thisLog Then Log("Max promos por inv de prods FIJOS: " & Subs.revisaMaxPromosProdsFijosPorInventario(mp))
|
If thisLog Then Log("Max promos por inv de prods FIJOS: " & promosC.revisaMaxPromosProdsFijosPorInventario(idPromo))
|
||||||
If thisLog Then Log("Max promos por inv de prods VARIABLES: " & Subs.revisaMaxPromosProdsVariablesPorInventario(mp))
|
If thisLog Then Log("Max promos por inv de prods VARIABLES: " & promosC.revisaMaxPromosProdsVariablesPorInventario(idPromo))
|
||||||
maxCantPromos = Subs.revisaMaxPromosProdsVariablesPorInventario(mp)
|
|
||||||
|
' maxCantPromos = Subs.revisaMaxPromosProdsVariablesPorInventario(mp)
|
||||||
|
maxCantPromos = promosC.revisaMaxPromosProdsVariablesPorInventario(idPromo)
|
||||||
|
Log($"MAXCANTPROMOS: ${maxCantPromos}"$)
|
||||||
|
|
||||||
et_promoCant.Text = 1
|
et_promoCant.Text = 1
|
||||||
l_promosCant.text = "Max promos: " & maxCantPromos
|
l_promosCant.text = "Max promos: " & maxCantPromos
|
||||||
Private cs As CSBuilder
|
Private cs As CSBuilder
|
||||||
cs.Initialize
|
cs.Initialize
|
||||||
If thisLog Then Log(mp)
|
' If thisLog Then Log(mp)
|
||||||
If thisLog Then Log(prodsPromo)
|
' If thisLog Then Log(prodsPromo)
|
||||||
'Ponemos la promo y descripción.
|
'Ponemos la idPromo y descripción.
|
||||||
' Dim desc As String = $"Promoción: ${promo}${CRLF}${mp.Get("descripcion")}"$
|
' Dim desc As String = $"Promoción: ${idPromo}${CRLF}${mp.Get("descripcion")}"$
|
||||||
' Dim desc As String = cs.append("Promocion: ").Color(Colors.RGB(100,149,237)).Append(promo).pop.append(CRLF).Append(mp.Get("descripcion")).Popall
|
' Dim desc As String = cs.append("Promocion: ").Color(Colors.RGB(100,149,237)).Append(idPromo).pop.append(CRLF).Append(mp.Get("descripcion")).Popall
|
||||||
l_promoDesc.Text = cs.Color(Colors.RGB(100,149,237)).append("Promocion: ").pop.append(CRLF).Append(promo).append(CRLF).Append(mp.Get("descripcion")).Popall
|
Private c As Cursor = Starter.skmt.ExecQuery($"select CAT_GP_NOMBRE from ${Subs.traeTablaProds(Starter.tipov)} where CAT_GP_ID = '${idPromo}'"$)
|
||||||
|
Private descripcion As String = "PROMO"
|
||||||
|
If c.RowCount > 0 Then
|
||||||
|
c.Position = 0
|
||||||
|
descripcion = c.GetString("CAT_GP_NOMBRE")
|
||||||
|
End If
|
||||||
|
l_promoDesc.Text = cs.Color(Colors.RGB(100,149,237)).append("Promocion: ").pop.append(CRLF).Append(idPromo).append(CRLF).Append(descripcion).Popall
|
||||||
prodsFijosTot = 0
|
prodsFijosTot = 0
|
||||||
'Ponemos el texto en las etiquetas de la cantidad de productos.
|
'Ponemos el texto en las etiquetas de la cantidad de productos.
|
||||||
' Dim pf As List = mp.Get("prodsFijos")
|
' Dim pf As List = mp.Get("prodsFijos")
|
||||||
Dim pv As List = mp.Get("prodsVariables")
|
|
||||||
Dim listaPreciosPV As List = mp.Get("prodsVariablesPrecios")
|
' Dim pv As List = mp.Get("prodsVariables")
|
||||||
|
Dim pv As List = promosC.traeListaDePromo("P_PRODSVARIABLES", idPromo)
|
||||||
|
|
||||||
|
' Dim listaPreciosPV As List = mp.Get("prodsVariablesPrecios")
|
||||||
|
Dim listaPreciosPV As List = promosC.traeListaDePromo("P_PRODSVARIABLES_PRECIOS", idPromo)
|
||||||
|
|
||||||
' Logcolor(listaPreciosPV, Colors.red)
|
' Logcolor(listaPreciosPV, Colors.red)
|
||||||
If thisLog Then Log(mp)
|
' If thisLog Then Log(mp)
|
||||||
tpf = 0
|
tpf = 0
|
||||||
For Each pfp As Int In mp.Get("prodsFijosPiezas").As(List)
|
For Each pfp As Int In promosC.traeListaDePromo("P_PRODSFIJOS_PIEZAS", idPromo)
|
||||||
tpf = tpf + pfp
|
tpf = tpf + pfp
|
||||||
Next
|
Next
|
||||||
tpf2 = tpf
|
tpf2 = tpf
|
||||||
' tpf = tpf * maxCantPromos
|
' tpf = tpf * maxCantPromos
|
||||||
l_prodsFijos.Text = $"Productos fijos (${tpf})"$
|
l_prodsFijos.Text = $"Productos fijos (${tpf})"$
|
||||||
prodsVarReq = mp.Get("prodsVariablesRequeridos")
|
prodsVarReq = promosC.traeInfoDePromo("P_PRODSVARIABLES_REQUERIDOS", idPromo)
|
||||||
prodsVarReq2 = prodsVarReq
|
prodsVarReq2 = prodsVarReq
|
||||||
l_prodsVariables.Text = $"Productos variables requeridos: ${prodsVarReq}"$
|
l_prodsVariables.Text = $"Productos variables requeridos: ${prodsVarReq}"$
|
||||||
If prodsVarReq = 0 Then
|
If prodsVarReq = 0 Then
|
||||||
@@ -137,7 +157,7 @@ Sub muestraPromo(promo As String, cliente As String)
|
|||||||
lv_prodsFijos.Clear
|
lv_prodsFijos.Clear
|
||||||
' If pf.Size < 1 Then pf.Add("Sin productos fijos.")
|
' If pf.Size < 1 Then pf.Add("Sin productos fijos.")
|
||||||
lv_prodsFijos.Clear
|
lv_prodsFijos.Clear
|
||||||
agregaFijosALista(mp, True)
|
agregaFijosALista(idPromo, True)
|
||||||
If thisLog Then Log("Total prods fijos = " & prodsFijosTot)
|
If thisLog Then Log("Total prods fijos = " & prodsFijosTot)
|
||||||
' If thisLog Then Log("======="&prodsMap)
|
' If thisLog Then Log("======="&prodsMap)
|
||||||
l_totProds.text = $"Productos: ${tpf}"$
|
l_totProds.text = $"Productos: ${tpf}"$
|
||||||
@@ -160,8 +180,8 @@ Sub muestraPromo(promo As String, cliente As String)
|
|||||||
' bmp.Initialize2(ins)
|
' bmp.Initialize2(ins)
|
||||||
Private indicePV As Int = pv.IndexOf(p)
|
Private indicePV As Int = pv.IndexOf(p)
|
||||||
Private estePrecio As String = listaPreciosPV.Get(indicePV)
|
Private estePrecio As String = listaPreciosPV.Get(indicePV)
|
||||||
Private thisProd As Map = prodsPromo.Get(p)
|
' Private thisProd As Map = prodsPromo.Get(p)
|
||||||
If thisLog Then Log(thisProd)
|
' If thisLog Then Log(thisProd)
|
||||||
If existenciaProdVariable > 0 Then
|
If existenciaProdVariable > 0 Then
|
||||||
Log($">>>>> AGREGAMOS PROD VARIABLE ${p}"$)
|
Log($">>>>> AGREGAMOS PROD VARIABLE ${p}"$)
|
||||||
clv_prodsVariabes.Add(CreateListItem(Subs.traeProdNombre(p)&CRLF&"Hay " & invDispPromo.Get(p) & " $" & estePrecio, estePrecio, invDispPromo.Get(p), clv_prodsVariabes.AsView.Width, 50dip, Null, p), p)
|
clv_prodsVariabes.Add(CreateListItem(Subs.traeProdNombre(p)&CRLF&"Hay " & invDispPromo.Get(p) & " $" & estePrecio, estePrecio, invDispPromo.Get(p), clv_prodsVariabes.AsView.Width, 50dip, Null, p), p)
|
||||||
@@ -174,11 +194,13 @@ Sub muestraPromo(promo As String, cliente As String)
|
|||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
'Agregamos los productos fijos a una lista para despues meterlos en el pedido.
|
'Agregamos los productos fijos a una lista para despues meterlos en el pedido.
|
||||||
Sub agregaFijosALista(mp As Map, addListItem As Boolean)
|
Sub agregaFijosALista(idPromo As String, addListItem As Boolean)
|
||||||
Private thisLog As Boolean = False
|
Private thisLog As Boolean = False
|
||||||
Private cont As Int = 0
|
Private cont As Int = 0
|
||||||
prodsFijosTot = 0
|
prodsFijosTot = 0
|
||||||
Dim pf As List = mp.Get("prodsFijos")
|
' Dim pf As List = mp.Get("prodsFijos")
|
||||||
|
Dim pf As List = promosC.traeListaDePromo("P_PRODSFIJOS", idPromo)
|
||||||
|
|
||||||
If pf.Size < 1 Then pf.Add("Sin productos fijos.")
|
If pf.Size < 1 Then pf.Add("Sin productos fijos.")
|
||||||
' Private m As Map
|
' Private m As Map
|
||||||
' prodsMap.Put(estaPromo, CreateMap("cant":1, "precio":0))
|
' prodsMap.Put(estaPromo, CreateMap("cant":1, "precio":0))
|
||||||
@@ -191,13 +213,15 @@ Sub agregaFijosALista(mp As Map, addListItem As Boolean)
|
|||||||
prodsPrecios.Add(0)
|
prodsPrecios.Add(0)
|
||||||
For Each p As String In pf
|
For Each p As String In pf
|
||||||
' Log($"cont=${cont}, mp=${mp}"$)
|
' Log($"cont=${cont}, mp=${mp}"$)
|
||||||
If mp.Get("prodsFijosPiezas").As(List).Size > 0 Then
|
Private prodsFijosPiezas As List = promosC.traeListaDePromo("P_PRODSFIJOS_PIEZAS", idPromo)
|
||||||
Private tpi As String = mp.Get("prodsFijosPiezas").As(List).Get(cont)
|
If prodsFijosPiezas.Size > 0 Then
|
||||||
|
Private tpi As String = prodsFijosPiezas.Get(cont)
|
||||||
Else
|
Else
|
||||||
Private tpi As String = 0
|
Private tpi As String = 0
|
||||||
End If
|
End If
|
||||||
If mp.Get("prodsFijosPrecios").As(List).Size > 0 Then
|
Private prodsFijosPrecios As List = promosC.traeListaDePromo("P_PRODSFIJOS_PRECIOS", idPromo)
|
||||||
Private tpr As String = mp.Get("prodsFijosPrecios").As(List).Get(cont)
|
If prodsFijosPrecios.Size > 0 Then
|
||||||
|
Private tpr As String = prodsFijosPrecios.Get(cont)
|
||||||
Else
|
Else
|
||||||
Private tpr As String = 0
|
Private tpr As String = 0
|
||||||
End If
|
End If
|
||||||
@@ -306,7 +330,7 @@ Sub cuentaProds
|
|||||||
prodsCants2.Clear
|
prodsCants2.Clear
|
||||||
prodsPrecios2.Clear
|
prodsPrecios2.Clear
|
||||||
lv_prodsFijos.Clear
|
lv_prodsFijos.Clear
|
||||||
agregaFijosALista(Subs.traePromo(estaPromo, esteCliente), True)
|
agregaFijosALista(estapromo, True)
|
||||||
' Log(prodsIds)
|
' Log(prodsIds)
|
||||||
Private tcpf As Float = 0 'Total de compra de productos fijos.
|
Private tcpf As Float = 0 'Total de compra de productos fijos.
|
||||||
For pf = 0 To prodsIds.Size - 1
|
For pf = 0 To prodsIds.Size - 1
|
||||||
|
|||||||
@@ -91,6 +91,6 @@ ModuleClosedNodes6=
|
|||||||
ModuleClosedNodes7=
|
ModuleClosedNodes7=
|
||||||
ModuleClosedNodes8=
|
ModuleClosedNodes8=
|
||||||
ModuleClosedNodes9=
|
ModuleClosedNodes9=
|
||||||
NavigationStack=Promociones,traeListaDePromo,491,0,Promociones,traeInfoDePromo,433,0,Promociones,revisaMaxPromosProdsVariablesPorInventarioXX,276,0,Promociones,traePromo,97,5,Promociones,alcanzanLosVariablesParaPromo,391,0,Promociones,traeMaxPromos,406,4,Promociones,traePromosVendidas,415,0,Promociones,revisaMaxPromosProdsFijosPorInventario,217,0,Promociones,restaFijosDePromo,332,0,Promociones,procesaPromocion,40,0
|
NavigationStack=C_Promos,cuentaProds,326,0,Subs,traeProdNombre,807,0,Subs,cuantosVariablesDisponiblesDB,1428,0,C_Productos,Class_Globals,0,0,Subs,revisaMaxPromosProdsVariablesPorInventario,1361,0,Promociones,procesaPromocion,30,0,Promociones,revisaMaxPromosProdsVariablesPorInventario,269,6,Promociones,traePromo,125,0,C_Promos,agregaFijosALista,233,6,C_Promos,muestraPromo,86,6
|
||||||
SelectedBuild=0
|
SelectedBuild=0
|
||||||
VisibleModules=1,28,11,3,26,12,4,29,8,13
|
VisibleModules=1,28,11,3,26,29,12,4,13
|
||||||
|
|||||||
@@ -12,7 +12,8 @@ Sub Class_Globals
|
|||||||
Private EventName As String 'ignore
|
Private EventName As String 'ignore
|
||||||
Private CallBack As Object 'ignore
|
Private CallBack As Object 'ignore
|
||||||
Dim tablaProds As String
|
Dim tablaProds As String
|
||||||
Dim muestraLogs, releaseMode As Boolean
|
Dim muestraLogs As Boolean
|
||||||
|
Dim releaseMode As Boolean
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
'Initializes the object. You can add parameters to this method if needed.
|
'Initializes the object. You can add parameters to this method if needed.
|
||||||
@@ -25,7 +26,7 @@ Public Sub Initialize (vCallback As Object, vEventName As String, db0 As SQL) As
|
|||||||
db.ExecNonQuery("DELETE FROM PROMOCIONES_INFO")
|
db.ExecNonQuery("DELETE FROM PROMOCIONES_INFO")
|
||||||
#if RELEASE
|
#if RELEASE
|
||||||
releaseMode = true
|
releaseMode = true
|
||||||
#Else
|
#Else if DEBUG
|
||||||
releaseMode = False
|
releaseMode = False
|
||||||
#end if
|
#end if
|
||||||
Return Me
|
Return Me
|
||||||
@@ -101,13 +102,17 @@ End Sub
|
|||||||
' P_ESTATUS="OK" 'Ok si existe la promocion.
|
' P_ESTATUS="OK" 'Ok si existe la promocion.
|
||||||
' P_PRODSVARIABLES_REQUERIDOS=5 'Cantidad de productos variables requeridos para la promoción.
|
' P_PRODSVARIABLES_REQUERIDOS=5 'Cantidad de productos variables requeridos para la promoción.
|
||||||
Sub traePromo(promo As String, cliente0 As String) As Map
|
Sub traePromo(promo As String, cliente0 As String) As Map
|
||||||
|
'######################################################
|
||||||
|
muestraLogs = True ' Si es verdadero, se muestran los logs de la clase.
|
||||||
|
'######################################################
|
||||||
|
If releaseMode Then muestraLogs = False
|
||||||
If muestraLogs Then LogColor("> TraePromo: " & promo, Colors.blue)
|
If muestraLogs Then LogColor("> TraePromo: " & promo, Colors.blue)
|
||||||
' Private inicioContador As String = DateTime.Now
|
' Private inicioContador As String = DateTime.Now
|
||||||
Private c As Cursor = Starter.skmt.ExecQuery("Select * from promos_comp where cat_pa_id = '"& promo&"'") 'Obtenemos las el maximo de promocioones a otorgar.
|
Private c As Cursor = Starter.skmt.ExecQuery("Select * from promos_comp where cat_pa_id = '"& promo&"'") 'Obtenemos las el maximo de promocioones a otorgar.
|
||||||
Private siHistorico As String = 0
|
Private siHistorico As String = 0
|
||||||
' Private promoMap As Map
|
Private promoMap As Map
|
||||||
Private prodsFijos, prodsFijosPrecios, prodsFijosReq, prodsVariables, prodsVariablesPrecios As List
|
Private prodsFijos, prodsFijosPrecios, prodsFijosReq, prodsVariables, prodsVariablesPrecios As List
|
||||||
' promoMap.Initialize
|
promoMap.Initialize
|
||||||
prodsFijos.Initialize
|
prodsFijos.Initialize
|
||||||
prodsFijosPrecios.Initialize
|
prodsFijosPrecios.Initialize
|
||||||
prodsFijosReq.Initialize
|
prodsFijosReq.Initialize
|
||||||
@@ -199,7 +204,7 @@ Sub traePromo(promo As String, cliente0 As String) As Map
|
|||||||
c.Position = 0
|
c.Position = 0
|
||||||
pvr = c.GetString("CAT_GP_STS")
|
pvr = c.GetString("CAT_GP_STS")
|
||||||
' promoMap.Put("prodsVariablesRequeridos", pvr) 'Cantidad de productos variables requeridos para la promoción.
|
' promoMap.Put("prodsVariablesRequeridos", pvr) 'Cantidad de productos variables requeridos para la promoción.
|
||||||
' promoMap.put("descripcion", c.GetString("CAT_GP_NOMBRE"))
|
promoMap.put("descripcion", c.GetString("CAT_GP_NOMBRE"))
|
||||||
db.ExecNonQuery($"update PROMOCIONES_INFO set P_PRODSVARIABLES_REQUERIDOS = ${pvr} where P_ID = '${promo}'"$) 'Cantidad de productos variables requeridos para la promoción.
|
db.ExecNonQuery($"update PROMOCIONES_INFO set P_PRODSVARIABLES_REQUERIDOS = ${pvr} where P_ID = '${promo}'"$) 'Cantidad de productos variables requeridos para la promoción.
|
||||||
End If
|
End If
|
||||||
c.Close
|
c.Close
|
||||||
@@ -207,7 +212,7 @@ Sub traePromo(promo As String, cliente0 As String) As Map
|
|||||||
' If muestraLogs Then Log($"Inv dispo: ${traemosInvDispParaPromo(promo)}"$)
|
' If muestraLogs Then Log($"Inv dispo: ${traemosInvDispParaPromo(promo)}"$)
|
||||||
' If muestraLogs Then LogColor($"Promo ${promo}: ${promoMap}"$, Colors.Blue)
|
' If muestraLogs Then LogColor($"Promo ${promo}: ${promoMap}"$, Colors.Blue)
|
||||||
' If muestraLogs Then LogColor("TIEMPO para traePromo -=" & promo & "=- : " & ((DateTime.Now-inicioContador)/1000), Colors.Blue)
|
' If muestraLogs Then LogColor("TIEMPO para traePromo -=" & promo & "=- : " & ((DateTime.Now-inicioContador)/1000), Colors.Blue)
|
||||||
' Return promoMap
|
Return promoMap
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
' Regresa cuantas promos alcanzan con los productos FIJOS que hay en inventario.
|
' Regresa cuantas promos alcanzan con los productos FIJOS que hay en inventario.
|
||||||
@@ -244,23 +249,26 @@ End Sub
|
|||||||
'promos por productos fijos llegan al maximo, aunque se puedan mas de producos variables, solo se
|
'promos por productos fijos llegan al maximo, aunque se puedan mas de producos variables, solo se
|
||||||
'regresa el maximo por productos fijos. Ej. si las promos por variables es 10, pero el maximo por
|
'regresa el maximo por productos fijos. Ej. si las promos por variables es 10, pero el maximo por
|
||||||
'fijos es 5, entonces regresamos 5.
|
'fijos es 5, entonces regresamos 5.
|
||||||
Sub revisaMaxPromosProdsVariablesPorInventarioXX(pm As Map) As Int 'ignore
|
Sub revisaMaxPromosProdsVariablesPorInventario(idPromo As String) As Int 'ignore
|
||||||
If muestraLogs Then Log("======================================================")
|
If muestraLogs Then LogColor("> revisaMaxPromosProdsVariablesPorInventario: " & idPromo, Colors.blue)
|
||||||
Private invFijoXpromo As Map
|
Private invFijoXpromo As Map
|
||||||
invFijoXpromo.Initialize
|
invFijoXpromo.Initialize
|
||||||
Private totalProdsVariablesDisponibles As Int = 0
|
Private totalProdsVariablesDisponibles As Int = 0
|
||||||
If muestraLogs Then LogColor($"pm=${pm}"$, Colors.Blue)
|
' If muestraLogs Then LogColor($"pm=${pm}"$, Colors.Blue)
|
||||||
Private invDispParaPromo As Map = traemosInvDispParaPromo(pm.Get("id"))
|
Private invDispParaPromo As Map = traemosInvDispParaPromo(idPromo)
|
||||||
If muestraLogs Then Log($"invDispParaPromo=${invDispParaPromo}"$)
|
' If muestraLogs Then
|
||||||
Private maxPromos As String = traeMaxPromos(pm)
|
Log($"invDispParaPromo=${invDispParaPromo}"$)
|
||||||
Private maxPromosXFijos As Int = revisaMaxPromosProdsFijosPorInventario(pm)
|
Private maxPromos As String = traeMaxPromos(idPromo)
|
||||||
Private idProdsVariables As List = pm.Get("prodsVariables")
|
Private maxPromosXFijos As Int = revisaMaxPromosProdsFijosPorInventario(idPromo)
|
||||||
Private prodsVariablesRequeridos As Int = pm.Get("prodsVariablesRequeridos")
|
Private idProdsVariables As List = traeListaDePromo("P_PRODSVARIABLES", idPromo)
|
||||||
Private prodsFijosReq As List = pm.Get("prodsFijosReq")
|
Private prodsVariablesRequeridos As Int = traeInfoDePromo("P_PRODSVARIABLES_REQUERIDOS", idPromo)
|
||||||
Private idProdsFijos As List = pm.Get("prodsFijos")
|
Private prodsFijosReq As List = traeListaDePromo("P_PRODSFIJOS_PIEZAS", idPromo)
|
||||||
|
Private idProdsFijos As List = traeListaDePromo("P_PRODSFIJOS", idPromo)
|
||||||
For p = 0 To idProdsFijos.Size -1 'Generamos mapa con los productos fijos y piezas requeridas por promo.
|
For p = 0 To idProdsFijos.Size -1 'Generamos mapa con los productos fijos y piezas requeridas por promo.
|
||||||
invFijoXpromo.Put(idProdsFijos.Get(p), prodsFijosReq.Get(p))
|
invFijoXpromo.Put(idProdsFijos.Get(p), prodsFijosReq.Get(p))
|
||||||
|
Log(idProdsFijos)
|
||||||
Private idEsteProd As String = idProdsFijos.Get(p)
|
Private idEsteProd As String = idProdsFijos.Get(p)
|
||||||
|
Log(idEsteProd)
|
||||||
Private invEsteProd As Int = invDispParaPromo.Get(idEsteProd)
|
Private invEsteProd As Int = invDispParaPromo.Get(idEsteProd)
|
||||||
Private pzasReqEsteProd As Int = prodsFijosReq.Get(p)
|
Private pzasReqEsteProd As Int = prodsFijosReq.Get(p)
|
||||||
If muestraLogs Then Log($"id=${idEsteProd}, inv=${invEsteProd}, pzas=${pzasReqEsteProd}"$)
|
If muestraLogs Then Log($"id=${idEsteProd}, inv=${invEsteProd}, pzas=${pzasReqEsteProd}"$)
|
||||||
@@ -268,24 +276,28 @@ Sub revisaMaxPromosProdsVariablesPorInventarioXX(pm As Map) As Int 'ignore
|
|||||||
Next
|
Next
|
||||||
If muestraLogs Then LogColor($"MaxPromos=${maxPromos}, promosXFijos=${maxPromosXFijos}"$, Colors.Blue)
|
If muestraLogs Then LogColor($"MaxPromos=${maxPromos}, promosXFijos=${maxPromosXFijos}"$, Colors.Blue)
|
||||||
If muestraLogs Then LogColor($"prodsFijos=${idProdsFijos}"$, Colors.Blue)
|
If muestraLogs Then LogColor($"prodsFijos=${idProdsFijos}"$, Colors.Blue)
|
||||||
If muestraLogs Then LogColor($"prodsFijosReqReq=${prodsFijosReq}"$, Colors.Blue)
|
If muestraLogs Then LogColor($"prodsFijosReq=${prodsFijosReq}"$, Colors.Blue)
|
||||||
If muestraLogs Then LogColor($"prodsVariables=${idProdsVariables}${CRLF}Variables Req=${prodsVariablesRequeridos} "$, Colors.Blue)
|
If muestraLogs Then LogColor($"prodsVariables=${idProdsVariables}${CRLF}Variables Req=${prodsVariablesRequeridos} "$, Colors.Blue)
|
||||||
If muestraLogs Then LogColor($"invFijoXpromo=${invFijoXpromo}"$, Colors.Blue)
|
If muestraLogs Then LogColor($"invFijoXpromo=${invFijoXpromo}"$, Colors.Blue)
|
||||||
If muestraLogs Then Log($"Prods variables disponibles = ${totalProdsVariablesDisponibles}"$)
|
If muestraLogs Then Log($"Prods variables disponibles = ${totalProdsVariablesDisponibles}"$)
|
||||||
Private maxPromosXVariables As Int = 0
|
Private maxPromosXVariables As Int = 0
|
||||||
|
If Not(releaseMode) Then muestraLogs = True
|
||||||
For x = 1 To maxPromosXFijos
|
For x = 1 To maxPromosXFijos
|
||||||
If muestraLogs Then Log("=====================================================")
|
|
||||||
If muestraLogs Then Log("=====================================================")
|
If muestraLogs Then Log("=====================================================")
|
||||||
For i = 0 To idProdsFijos.Size - 1
|
For i = 0 To idProdsFijos.Size - 1
|
||||||
If muestraLogs Then Log($"FIJO - ${idProdsFijos.Get(i)}, ${invDispParaPromo.Get(idProdsFijos.Get(i))} - ${prodsFijosReq.Get(i).As(Int)*(i+1)}"$)
|
' Log(prodsFijosReq.Get(i))
|
||||||
invDispParaPromo.Put(idProdsFijos.Get(i), invDispParaPromo.Get(idProdsFijos.Get(i)).As(Int) - prodsFijosReq.Get(i).As(Int)*(i+1)) 'Restamos las piezas de los productos fijos del inventario disponible.
|
Private prodsFijosRequeridos As Int = prodsFijosReq.Get(i)
|
||||||
|
Private esteProdFijo As String = idProdsFijos.Get(i)
|
||||||
|
' Log(invDispParaPromo)
|
||||||
|
If muestraLogs Then Log($"FIJO - ${idProdsFijos.Get(i)}, ${invDispParaPromo.Get(esteProdFijo)} - ${prodsFijosRequeridos*(i+1)}"$)
|
||||||
|
invDispParaPromo.Put(esteProdFijo, invDispParaPromo.Get(esteProdFijo) - prodsFijosRequeridos*(i+1)) 'Restamos las piezas de los productos fijos del inventario disponible.
|
||||||
Next
|
Next
|
||||||
If muestraLogs Then LogColor("Inv disponible despues de restar fijos = " & invDispParaPromo, Colors.Blue)
|
If muestraLogs Then LogColor("Inv disponible despues de restar fijos = " & invDispParaPromo, Colors.Blue)
|
||||||
|
|
||||||
totalProdsVariablesDisponibles = 0
|
totalProdsVariablesDisponibles = 0
|
||||||
For i = 0 To idProdsVariables.Size - 1 'Obtenemos total de productos variables disponibes.
|
For i = 0 To idProdsVariables.Size - 1 'Obtenemos total de productos variables disponibes.
|
||||||
If invDispParaPromo.ContainsKey(idProdsVariables.Get(i)) Then
|
Private thisProdVariable As String = idProdsVariables.Get(i)
|
||||||
totalProdsVariablesDisponibles = totalProdsVariablesDisponibles + invDispParaPromo.Get(idProdsVariables.Get(i))
|
If invDispParaPromo.ContainsKey(thisProdVariable) Then
|
||||||
|
totalProdsVariablesDisponibles = totalProdsVariablesDisponibles + invDispParaPromo.Get(thisProdVariable)
|
||||||
End If
|
End If
|
||||||
Next
|
Next
|
||||||
'Revisamos variables.
|
'Revisamos variables.
|
||||||
@@ -301,10 +313,10 @@ Sub revisaMaxPromosProdsVariablesPorInventarioXX(pm As Map) As Int 'ignore
|
|||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
'Regresa un mapa con el inventario disponible por producto para la promoción (desde la base de datos).
|
'Regresa un mapa con el inventario disponible por producto para la promoción (desde la base de datos).
|
||||||
Sub traemosInvDispParaPromo(promo As String) As Map 'ignore
|
Sub traemosInvDispParaPromo(idPromo As String) As Map 'ignore
|
||||||
If muestraLogs Then LogColor("> traemosInvDispParaPromo: " & promo, Colors.blue)
|
If muestraLogs Then LogColor("> traemosInvDispParaPromo: " & idPromo, Colors.blue)
|
||||||
Private c As Cursor
|
Private c As Cursor
|
||||||
c = Starter.skmt.ExecQuery2($"SELECT CAT_GP_ID, CAT_GP_ALMACEN FROM ${tablaProds} WHERE CAT_GP_ID IN (select CAT_DP_IDPROD FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID = ?)"$, Array As String(promo))
|
c = Starter.skmt.ExecQuery2($"SELECT CAT_GP_ID, CAT_GP_ALMACEN FROM ${tablaProds} WHERE CAT_GP_ID IN (select CAT_DP_IDPROD FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID = ?)"$, Array As String(idPromo))
|
||||||
' Private prodInv As Map
|
' Private prodInv As Map
|
||||||
' prodInv.Initialize
|
' prodInv.Initialize
|
||||||
Private prods As Map
|
Private prods As Map
|
||||||
@@ -342,7 +354,7 @@ Sub restaFijosDePromo(idPromo As String) As Map 'ignore
|
|||||||
InvDispEsteProd = invDispEstaPromo.get(esteProd) 'Obtenemos del mapa el inventario de este producto.
|
InvDispEsteProd = invDispEstaPromo.get(esteProd) 'Obtenemos del mapa el inventario de este producto.
|
||||||
nuevoInv = NumberFormat2((InvDispEsteProd - pzasReqEsteProd), 1, 0,0,False)
|
nuevoInv = NumberFormat2((InvDispEsteProd - pzasReqEsteProd), 1, 0,0,False)
|
||||||
If muestraLogs Then Log($"Nuevo inventario de ${esteProd}: ${InvDispEsteProd}-${pzasReqEsteProd} = ${nuevoInv}"$) 'El nuevo inventario.
|
If muestraLogs Then Log($"Nuevo inventario de ${esteProd}: ${InvDispEsteProd}-${pzasReqEsteProd} = ${nuevoInv}"$) 'El nuevo inventario.
|
||||||
invDispEstaPromo.Put(esteProd, $"${nuevoInv}"$) 'Restamos del inventario las piezas requeridas para la promoción y guardamos el nuevo inventario en el mapa.
|
invDispEstaPromo.Put(esteProd.Trim, nuevoInv) 'Restamos del inventario las piezas requeridas para la promoción y guardamos el nuevo inventario en el mapa.
|
||||||
invDispEstaPromo.Put("resultado", "ok")
|
invDispEstaPromo.Put("resultado", "ok")
|
||||||
Else 'Si en el mapa no esta el id del producto, entonces no tenemos inventario.
|
Else 'Si en el mapa no esta el id del producto, entonces no tenemos inventario.
|
||||||
invDispEstaPromo.Put("resultado", "No hay suficiente producto para la promocion.")
|
invDispEstaPromo.Put("resultado", "No hay suficiente producto para la promocion.")
|
||||||
@@ -438,6 +450,7 @@ End Sub
|
|||||||
|
|
||||||
'Regresa una lista de la BD, en la BD se guarda como string y esta funcion la convierte en lista nuevamente.
|
'Regresa una lista de la BD, en la BD se guarda como string y esta funcion la convierte en lista nuevamente.
|
||||||
Sub traeListaDePromo(col As String, promo As String) As List
|
Sub traeListaDePromo(col As String, promo As String) As List
|
||||||
|
' Log($"${col}, ${promo}"$)
|
||||||
Private res As List
|
Private res As List
|
||||||
Private s As String
|
Private s As String
|
||||||
Private c As ResultSet = db.ExecQuery($"select ${col} from PROMOCIONES_INFO where P_ID = '${promo}'"$)
|
Private c As ResultSet = db.ExecQuery($"select ${col} from PROMOCIONES_INFO where P_ID = '${promo}'"$)
|
||||||
@@ -445,6 +458,31 @@ Sub traeListaDePromo(col As String, promo As String) As List
|
|||||||
s = c.GetString(col)
|
s = c.GetString(col)
|
||||||
Loop
|
Loop
|
||||||
If s.StartsWith("[") And s.EndsWith("]") Then
|
If s.StartsWith("[") And s.EndsWith("]") Then
|
||||||
|
' Private j As JSONParser
|
||||||
|
' j.Initialize(s)
|
||||||
|
' res.Initialize2(j.NextArray)
|
||||||
|
res.Initialize
|
||||||
|
s = s.Replace("[", "")
|
||||||
|
s = s.Replace("]", "")
|
||||||
|
Private s2() As String = Regex.Split(",", s)
|
||||||
|
For i = 0 To s2.Length - 1
|
||||||
|
res.Add(s2(i).as(String).trim)
|
||||||
|
Next
|
||||||
|
Else
|
||||||
|
res.Initialize
|
||||||
|
End If
|
||||||
|
Return res
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
'Regresa una lista de la BD, en la BD se guarda como string y esta funcion la convierte en lista nuevamente.
|
||||||
|
Sub traeMapaDePromo(col As String, promo As String) As List
|
||||||
|
Private res As List
|
||||||
|
Private s As String
|
||||||
|
Private c As ResultSet = db.ExecQuery($"select ${col} from PROMOCIONES_INFO where P_ID = '${promo}'"$)
|
||||||
|
Do While c.NextRow
|
||||||
|
s = c.GetString(col)
|
||||||
|
Loop
|
||||||
|
If s.StartsWith("{") And s.EndsWith("}") Then
|
||||||
Private j As JSONParser
|
Private j As JSONParser
|
||||||
j.Initialize(s)
|
j.Initialize(s)
|
||||||
res.Initialize2(j.NextArray)
|
res.Initialize2(j.NextArray)
|
||||||
|
|||||||
@@ -802,6 +802,7 @@ Sub traeProdNombre(id As String) As String
|
|||||||
Private h As Cursor
|
Private h As Cursor
|
||||||
Private n As String
|
Private n As String
|
||||||
h=Starter.skmt.ExecQuery($"select CAT_GP_NOMBRE from CAT_GUNAPROD where CAT_GP_ID = '${id.Trim}' union select CAT_GP_NOMBRE from CAT_GUNAPROD2 where CAT_GP_ID = '${id.Trim}'"$)
|
h=Starter.skmt.ExecQuery($"select CAT_GP_NOMBRE from CAT_GUNAPROD where CAT_GP_ID = '${id.Trim}' union select CAT_GP_NOMBRE from CAT_GUNAPROD2 where CAT_GP_ID = '${id.Trim}'"$)
|
||||||
|
' Log($"select CAT_GP_NOMBRE from CAT_GUNAPROD where CAT_GP_ID = '${id.Trim}' union select CAT_GP_NOMBRE from CAT_GUNAPROD2 where CAT_GP_ID = '${id.Trim}'"$)
|
||||||
If h.RowCount > 0 Then
|
If h.RowCount > 0 Then
|
||||||
h.Position = 0
|
h.Position = 0
|
||||||
n = h.GetString("CAT_GP_NOMBRE")
|
n = h.GetString("CAT_GP_NOMBRE")
|
||||||
@@ -810,6 +811,7 @@ Sub traeProdNombre(id As String) As String
|
|||||||
h.Close
|
h.Close
|
||||||
If n = Null Or n="" Then n = "N/A"
|
If n = Null Or n="" Then n = "N/A"
|
||||||
' Log(h.RowCount&"|"&id&"|"&n&"|")
|
' Log(h.RowCount&"|"&id&"|"&n&"|")
|
||||||
|
' Log(n)
|
||||||
Return n
|
Return n
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
@@ -1002,7 +1004,7 @@ End Sub
|
|||||||
' resultado="OK" 'Ok si existe la promocion.
|
' resultado="OK" 'Ok si existe la promocion.
|
||||||
' prodsVariablesRequeridos=5} 'Cantidad de productos variables requeridos para la promoción.
|
' prodsVariablesRequeridos=5} 'Cantidad de productos variables requeridos para la promoción.
|
||||||
Sub traePromo(promo As String, cliente As String) As Map
|
Sub traePromo(promo As String, cliente As String) As Map
|
||||||
Private thisLog As Boolean = True
|
Private thisLog As Boolean = False
|
||||||
If thisLog Then Log("traePromo:"&promo)
|
If thisLog Then Log("traePromo:"&promo)
|
||||||
Private inicioContador As String = DateTime.Now
|
Private inicioContador As String = DateTime.Now
|
||||||
Private c As Cursor = Starter.skmt.ExecQuery("Select * from promos_comp where cat_pa_id = '"& promo&"'") 'Obtenemos las el maximo de promocioones a otorgar.
|
Private c As Cursor = Starter.skmt.ExecQuery("Select * from promos_comp where cat_pa_id = '"& promo&"'") 'Obtenemos las el maximo de promocioones a otorgar.
|
||||||
@@ -1430,7 +1432,7 @@ Sub cuantosVariablesDisponiblesDB(promo As String)
|
|||||||
If c.RowCount > 0 Then
|
If c.RowCount > 0 Then
|
||||||
For i = 0 To c.RowCount - 1
|
For i = 0 To c.RowCount - 1
|
||||||
c.Position = i
|
c.Position = i
|
||||||
Log(c.GetString("CAT_GP_ID") & ": " & c.GetString("CAT_GP_ALMACEN"))
|
' Log(c.GetString("CAT_GP_ID") & ": " & c.GetString("CAT_GP_ALMACEN"))
|
||||||
If c.GetString("CAT_GP_ALMACEN") <> Null Then x = c.GetString("CAT_GP_ALMACEN")
|
If c.GetString("CAT_GP_ALMACEN") <> Null Then x = c.GetString("CAT_GP_ALMACEN")
|
||||||
Next
|
Next
|
||||||
End If
|
End If
|
||||||
|
|||||||
Reference in New Issue
Block a user