Se corrige un error que permitía meter promocijes de mas y dejaba inventario en negativo.

- Cuando el producto fijo de una promocion tambien es parte de los productos variables de la misma, al aumentar la cantidad de promociones a comprar, el invenatrio del producto variable no se actualizaba.
  ej. Si la promo usa 3 productos fijos y quedan 10 para los variables, cuando pedimos 2 promociones, en lugar de usar 3 para los fijos, ahora vamos a necesitar 6, y en lugar de quedar 10 para los variables, ahora solo quedan 7.
This commit is contained in:
2024-02-18 13:58:55 -06:00
parent 72bf3cae3b
commit 4da2d43177
6 changed files with 162 additions and 29 deletions

View File

@@ -973,7 +973,7 @@ Sub JobDone(Job As HttpJob)
Dim HCCP_PROMO As String = records(RESULT.Columns.Get("HCCP_PROMO")) Dim HCCP_PROMO As String = records(RESULT.Columns.Get("HCCP_PROMO"))
Dim HCCP_CANT As String = records(RESULT.Columns.Get("HCCP_CANT")) Dim HCCP_CANT As String = records(RESULT.Columns.Get("HCCP_CANT"))
Dim HCCP_CANT_VENDIDA As String = records(RESULT.Columns.Get("HCCP_CANT_VENDIDA")) Dim HCCP_CANT_VENDIDA As String = records(RESULT.Columns.Get("HCCP_CANT_VENDIDA"))
If HCCP_CANT_VENDIDA = Null or HCCP_CANT_VENDIDA = "null" Then HCCP_CANT_VENDIDA = 0 If HCCP_CANT_VENDIDA = Null Or HCCP_CANT_VENDIDA = "null" Then HCCP_CANT_VENDIDA = 0
Starter.skmt.ExecNonQuery2("INSERT INTO HIST_CLIENTE_CANT_PROMOS(HCCP_CLIENTE, HCCP_PROMO, HCCP_CANT, HCCP_CANT_VENDIDA) VALUES (?,?,?,?)", Array As Object (HCCP_CLIENTE, HCCP_PROMO, HCCP_CANT, HCCP_CANT_VENDIDA)) Starter.skmt.ExecNonQuery2("INSERT INTO HIST_CLIENTE_CANT_PROMOS(HCCP_CLIENTE, HCCP_PROMO, HCCP_CANT, HCCP_CANT_VENDIDA) VALUES (?,?,?,?)", Array As Object (HCCP_CLIENTE, HCCP_PROMO, HCCP_CANT, HCCP_CANT_VENDIDA))
Next Next
Starter.skmt.TransactionSuccessful Starter.skmt.TransactionSuccessful
@@ -2169,12 +2169,28 @@ Sub B_OK_PAS_Click
End If End If
P1.Visible = False P1.Visible = False
trabajar.Visible = True trabajar.Visible = True
' B_PROXIMA.Visible =True B_PROXIMA.Visible =True
' NUEVO.Visible =True NUEVO.Visible = True
BUSCA.Visible=True BUSCA.Visible = True
connecta.Visible=True connecta.Visible = True
Resumen.Visible= True Resumen.Visible = True
img2.Visible=False img2.Visible = False
' B_PROXIMA.Visible =False
' NUEVO.Visible =False
' BUSCA.Visible=False
' connecta.Visible=False
' Subir.Visible=False
' cargar.Visible=False
' L_P_1.Visible = False
' S_CC.Visible = False
' L_P_3.Visible = False
' S_CH.Visible = False
' PB1.Visible = False
' Resumen.Visible= False
P1.SendToBack P1.SendToBack
Else If CARGA = "SUBIR" And S_CP.Text = "ERROR" Then Else If CARGA = "SUBIR" And S_CP.Text = "ERROR" Then
Msgbox("Tiene que subir de nuevo la información","Atención") 'ignore Msgbox("Tiene que subir de nuevo la información","Atención") 'ignore

View File

@@ -597,7 +597,7 @@ Sub b_prodMenos_Click
i.Position = 0 i.Position = 0
invActualizado = i.GetString("CAT_GP_ALMACEN") invActualizado = i.GetString("CAT_GP_ALMACEN")
End If End If
If Starter.tipov <> "ABORDO" Then lProdX.Text = cs.Color(Colors.red).append(nombreX).pop.append(CRLF).Append("Existencias: " & invActualizado).Color(0xFF017F01).Append($" $${numberformat2(precio, 1, 2, 2, False)}"$).Popall If Starter.tipov <> "ABORDO" Then lProdX.Text = cs.Color(Colors.red).append(nombreX).pop.append(CRLF).Append("Existencias: " & invActualizado).Color(0xFF017F01).Append($" $${NumberFormat2(precio, 1, 2, 2, False)}"$).Popall
End If End If
If Subs.totalPedido < 1 Then laCant.Text = "0" If Subs.totalPedido < 1 Then laCant.Text = "0"
' Log($"Total Prods: ${totalProds}, Total Compra: $$1.2{totalCompra}"$) ' Log($"Total Prods: ${totalProds}, Total Compra: $$1.2{totalCompra}"$)
@@ -621,6 +621,13 @@ Sub b_prodMas_Click
Private tmpMap As Map = clv_prods_ll.GetValue(index).As(Map) Private tmpMap As Map = clv_prods_ll.GetValue(index).As(Map)
Private precio As String=clv_prods_ll.GetValue(index).As(Map).Get("precio") Private precio As String=clv_prods_ll.GetValue(index).As(Map).Get("precio")
Private inv As Int = clv_prods_ll.GetValue(index).As(Map).Get("almacen") Private inv As Int = clv_prods_ll.GetValue(index).As(Map).Get("almacen")
Private iq As Cursor = Starter.skmt.ExecQuery($"select cat_gp_almacen from ${Subs.traeTablaProds(Starter.tipov)} where cat_gp_id = '${clv_prods_ll.GetValue(index).As(Map).Get("id")}'"$)
If iq.RowCount > 0 Then
iq.Position = 0
Log($"INV ${clv_prods_ll.GetValue(index).As(Map).Get("id")} = ${iq.GetString("CAT_GP_ALMACEN")}"$)
End If
Log(tmpMap) Log(tmpMap)
If buttonTag = "vendido" Then If buttonTag = "vendido" Then
' Log("VENDIDO") ' Log("VENDIDO")
@@ -664,10 +671,17 @@ Sub b_prodMas_Click
End If End If
dispAbordo = kh.traeDisponibleAbordo dispAbordo = kh.traeDisponibleAbordo
If Subs.traeCliente = 0 And dispAbordo < 1 Then If Subs.traeCliente = 0 And dispAbordo < 1 Then
ToastMessageShow("No hay mas disponible para el abordo", False)
Sender.As(EditText).TextColor = Colors.Red
Sender.As(EditText).TextSize = 14
Log("######### "& NumberFormat2((kh.traeLimiteAbordoWeb - (kh.traeLimiteAbordoXInventario - kh.traeVenta) - kh.traeVentaAbordo), 0, 2, 2, False)) Log("######### "& NumberFormat2((kh.traeLimiteAbordoWeb - (kh.traeLimiteAbordoXInventario - kh.traeVenta) - kh.traeVentaAbordo), 0, 2, 2, False))
laCant.Text = NumberFormat2((laCant.Text - 1), 1, 0, 0, False) laCant.Text = NumberFormat2((laCant.Text - 1), 1, 0, 0, False)
Subs.actualizaProducto(almacenX, precioX, laCant.text, nombreX, id, clienteId, Subs.traeFecha, Subs.traeUsuarioDeBD, rutaUsuario, 0, Starter.tipov) Subs.actualizaProducto(almacenX, precioX, laCant.text, nombreX, id, clienteId, Subs.traeFecha, Subs.traeUsuarioDeBD, rutaUsuario, 0, Starter.tipov)
Log("######### "& NumberFormat2((kh.traeLimiteAbordoWeb - (kh.traeLimiteAbordoXInventario - kh.traeVenta) - kh.traeVentaAbordo), 0, 2, 2, False)) Log("######### "& NumberFormat2((kh.traeLimiteAbordoWeb - (kh.traeLimiteAbordoXInventario - kh.traeVenta) - kh.traeVentaAbordo), 0, 2, 2, False))
Sleep(400)
Sender.As(EditText).TextColor = Colors.black
Sender.As(EditText).TextSize = 10
' Sender.As(EditText).
End If End If
cuentaProds cuentaProds
If lfila.Text <> "RMI" Then If lfila.Text <> "RMI" Then

View File

@@ -161,7 +161,10 @@ Sub muestraPromo(promo As String, cliente As String)
Private estePrecio = listaPreciosPV.Get(indicePV) Private estePrecio = 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 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) If existenciaProdVariable > 0 Then
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)
End If
End If End If
Next Next
b_terminar1.Visible = False b_terminar1.Visible = False
@@ -224,6 +227,7 @@ Sub CreateListItem(Text As String, precioU As String, inv As Int, Width As Int,
et_pCant.Tag = precioU&"|"&inv&"|"&prodId et_pCant.Tag = precioU&"|"&inv&"|"&prodId
et_pCant.BringToFront et_pCant.BringToFront
' i_prod.Bitmap = img ' i_prod.Bitmap = img
p.Tag = prodId
Return p Return p
End Sub End Sub
@@ -272,8 +276,8 @@ Sub b_prodMas_Click
' Private inv As String = Regex.Split("\|", laCant.tag)(1) ' Private inv As String = Regex.Split("\|", laCant.tag)(1)
Private prodId As String = Regex.Split("\|", laCant.tag)(2) Private prodId As String = Regex.Split("\|", laCant.tag)(2)
Private tmpMap As Map = CreateMap("precio":precio, "cant":laCant.Text, "almacen":estaPromo) Private tmpMap As Map = CreateMap("precio":precio, "cant":laCant.Text, "almacen":estaPromo)
' Log(tmpMap)
promosMap.Put(prodId, tmpMap) promosMap.Put(prodId, tmpMap)
Log("PRODMAS PROMOSMAP - " & promosMap)
' LogColor(promosMap, Colors.Magenta) ' LogColor(promosMap, Colors.Magenta)
End If End If
' Log($"Total Prods: ${totalProds}, Total Compra: $$1.2{totalCompra}"$) ' Log($"Total Prods: ${totalProds}, Total Compra: $$1.2{totalCompra}"$)
@@ -349,14 +353,14 @@ Sub cuentaProds
' Log($"Termina cuentaProds - ${Starter.cp_running}"$) ' Log($"Termina cuentaProds - ${Starter.cp_running}"$)
'Si la cantidad es mayor que los productos requeridos, entonces ponemos todos en CERO. 'Si la cantidad es mayor que los productos requeridos, entonces ponemos todos en CERO.
If totalProds > prodsVarReq + tpf Then ' If totalProds > prodsVarReq + tpf Then
For i = 0 To clv_prodsVariabes.GetSize - 1 ' For i = 0 To clv_prodsVariabes.GetSize - 1
Private p0 As B4XView = clv_prodsVariabes.GetPanel(i) ' Private p0 As B4XView = clv_prodsVariabes.GetPanel(i)
Private p As B4XView = p0.GetView(0) ' Private p As B4XView = p0.GetView(0)
Private cant1 As B4XView = p.GetView(2).GetView(4) ' Private cant1 As B4XView = p.GetView(2).GetView(4)
cant1.Text = 0 ' cant1.Text = 0
Next ' Next
End If ' End If
End Sub End Sub
Private Sub et_pCant_FocusChanged (HasFocus As Boolean) Private Sub et_pCant_FocusChanged (HasFocus As Boolean)
@@ -374,6 +378,24 @@ Private Sub b_promoMenos_Click
tpf = tpf2 * et_promoCant.Text.As(Int) tpf = tpf2 * et_promoCant.Text.As(Int)
prodsVarReq = prodsVarReq2 * et_promoCant.Text.As(Int) prodsVarReq = prodsVarReq2 * et_promoCant.Text.As(Int)
Log($"Max promos=${et_promoCant.Text.As(Int)}, Prods fijos=${tpf}, "$) Log($"Max promos=${et_promoCant.Text.As(Int)}, Prods fijos=${tpf}, "$)
Private invVariableMod As Map = revisaInvProdsVariables 'Si se modifica el inventario de los prods variables, recargamos el CLV de prods variables.
If invVariableMod.Size > 0 Then
Private listProds As List
listProds.Initialize
For i = 0 To clv_prodsVariabes.Size - 1 'Generamos una lista con los productos del CLV.
Private pa1 As B4XView = clv_prodsVariabes.GetPanel(i).GetView(0).GetView(2).GetView(4)
Private elTag() As String = Regex.Split("\|", pa1.Tag)
Private elInv As Int = elTag(1)
If invVariableMod.ContainsKey(elTag(2)) Then elInv = invVariableMod.Get(elTag(2))
listProds.Add(CreateListItem(Subs.traeProdNombre(elTag(2))&CRLF&"Hay " & elInv & " $" & elTag(0), elTag(0), elInv, clv_prodsVariabes.AsView.Width, 50dip, Null, elTag(2)))
Next
clv_prodsVariabes.Clear
For i = 0 To listProds.Size - 1 'Usamos la lista para poblar el CLV con los datos modificados.
clv_prodsVariabes.Add(listProds.Get(i), listProds.Get(i).As(Panel).tag)
Next
End If
cuentaProds cuentaProds
End Sub End Sub
@@ -387,9 +409,61 @@ Private Sub b_promoMas_Click
Log($"Max promos=${et_promoCant.Text.As(Int)}, Prods fijos=${tpf}, "$) Log($"Max promos=${et_promoCant.Text.As(Int)}, Prods fijos=${tpf}, "$)
End If End If
If et_promoCant.text > maxCantPromos Then et_promoCant.Text = maxCantPromos If et_promoCant.text > maxCantPromos Then et_promoCant.Text = maxCantPromos
Private invVariableMod As Map = revisaInvProdsVariables 'Si se modifica el inventario de los prods variables, necesitamos recargar el CLV de prods variables.
If invVariableMod.Size > 0 Then
Private listProds As List
listProds.Initialize
For i = 0 To clv_prodsVariabes.Size - 1 'Generamos una lista con los productos del CLV.
Private pa1 As B4XView = clv_prodsVariabes.GetPanel(i).GetView(0).GetView(2).GetView(4)
Private elTag() As String = Regex.Split("\|", pa1.Tag)
Private elInv As Int = elTag(1)
If invVariableMod.ContainsKey(elTag(2)) Then elInv = invVariableMod.Get(elTag(2))
listProds.Add(CreateListItem(Subs.traeProdNombre(elTag(2))&CRLF&"Hay " & elInv & " $" & elTag(0), elTag(0), elInv, clv_prodsVariabes.AsView.Width, 50dip, Null, elTag(2)))
Next
clv_prodsVariabes.Clear
For i = 0 To listProds.Size - 1 'Usamos la lista para poblar el CLV con los datos modificados.
clv_prodsVariabes.Add(listProds.Get(i), listProds.Get(i).As(Panel).tag)
Next
End If
cuentaProds cuentaProds
End Sub End Sub
' Revisa si el inventario de un producto variable cambia cuando se modifica la cantidad de promociones que se van a ordenar.
' Esto pasa cuando el producto fijo de una promocion tambien es parte de los productos variables de la misma, asi que
' si la promo usa 3 productos fijos y quedan 10 para los variables, cuando pedimos 2 promociones, en lugar de usar
' 3 para los fijos, ahora vamos a necesitar 6, y en lugar de quedar 10 para los variables, ahora solo quedan 7.
' Regresa un mapa con el nuevo inventario de los productos variables afectados.
Sub revisaInvProdsVariables As Map
Private invVariablesModificados As Map = CreateMap()
' Private prodsFijosOriginales As Int = (tpf / et_promoCant.Text)
' LogColor($"Prods fijos originales = ${prodsFijosOriginales}"$, Colors.Red)
Private nuevoInvDisponible As Int
For f = 0 To prodsIds.Size - 1
' Log(prodsIds.Get(f))
' LogColor($"${prodsIds.Get(f)} -> ${prodsCants.Get(f)}"$, Colors.Red)
For i = 0 To clv_prodsVariabes.GetSize - 1
Private pa0 As B4XView = clv_prodsVariabes.GetPanel(i).GetView(0).GetView(1)
Private pa1 As B4XView = clv_prodsVariabes.GetPanel(i).GetView(0).GetView(2).GetView(4)
Private pp As String = pa1.Tag
' Log($"EL TAG -> ${pp}"$)
Private elTag() As String = Regex.Split("\|", pp)
If elTag.Length > 1 Then
If elTag(2) = prodsIds.Get(f) Then
Private invDeBD As Int = Subs.traeInvDeBD(elTag(2))
' Log($"XXX -> ${pa0.text} -> ${invDeBD}"$)
nuevoInvDisponible = invDeBD - tpf
LogColor($"Nuevo inv desponible = ${invDeBD} - ${tpf} = ${nuevoInvDisponible}"$, Colors.Red)
invVariablesModificados.Put(prodsIds.Get(f), nuevoInvDisponible)
End If
End If
Next
Next
Log($"INV MODIFICADOS: ${invVariablesModificados}"$)
Return invVariablesModificados
End Sub
Private Sub b_terminar1_Click Private Sub b_terminar1_Click
cuentaProds cuentaProds
' Log("====================================================================") ' Log("====================================================================")

View File

@@ -864,12 +864,12 @@ Module9=C_NuevoCliente
NumberOfFiles=401 NumberOfFiles=401
NumberOfLibraries=29 NumberOfLibraries=29
NumberOfModules=29 NumberOfModules=29
Version=12.5 Version=12.8
@EndOfDesignText@ @EndOfDesignText@
#Region Project Attributes #Region Project Attributes
#ApplicationLabel: Kelloggs Venta #ApplicationLabel: Kelloggs Venta
#VersionCode: 3000 #VersionCode: 3000
#VersionName: 4.02.07 #VersionName: 4.02.16
#SupportedOrientations: portrait #SupportedOrientations: portrait
#CanInstallToExternalStorage: False #CanInstallToExternalStorage: False
#BridgeLogger:true #BridgeLogger:true

View File

@@ -67,7 +67,7 @@ ModuleClosedNodes13=
ModuleClosedNodes14= ModuleClosedNodes14=
ModuleClosedNodes15= ModuleClosedNodes15=
ModuleClosedNodes16= ModuleClosedNodes16=
ModuleClosedNodes17=5,7,8,9,10,11,12,13,15,16,18 ModuleClosedNodes17=5,7,8,10,11,12,13,15,16,18
ModuleClosedNodes18= ModuleClosedNodes18=
ModuleClosedNodes19= ModuleClosedNodes19=
ModuleClosedNodes2= ModuleClosedNodes2=
@@ -88,6 +88,6 @@ ModuleClosedNodes6=
ModuleClosedNodes7=3,11,12 ModuleClosedNodes7=3,11,12
ModuleClosedNodes8= ModuleClosedNodes8=
ModuleClosedNodes9= ModuleClosedNodes9=
NavigationStack=Starter,Process_Globals,9,0,kms_helperSubs,RD_Init,62,0,Starter,ENVIA_ULTIMA_GPS,140,0,Subs,revisaBD,180,0,Starter,revisaBD,225,0,Starter,Service_Start,81,0,Starter,Service_Create,61,0,Main,Activity_Create,33,0,C_Productos,Busca_TextChanged,1201,0,B4XMainPage,b_importarBD_Click,757,0 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
SelectedBuild=0 SelectedBuild=0
VisibleModules=1,27,11,3,12,4,28,13,23 VisibleModules=1,27,11,3,12,4,28,13,23,2

View File

@@ -861,6 +861,18 @@ Sub traeUsuarioDeBD As String 'ignore
Return u Return u
End Sub End Sub
'Trae el inventario de un producto desde la base de datos.
Sub traeInvDeBD(id As String) As Int
Private inv As Int = 0
Private c As Cursor = Starter.skmt.ExecQuery($"select CAT_GP_ALMACEN from ${traeTablaProds(Starter.tipov)} where CAT_GP_ID = '${id}'"$)
If c.RowCount > 0 Then
c.Position = 0
inv = c.GetInt("CAT_GP_ALMACEN")
End If
' Log(id)
Return inv
End Sub
'Inserta un producto en la tabla "pedido" y "pedido_cliente". 'Inserta un producto en la tabla "pedido" y "pedido_cliente".
'Actualiza "cat_gunaprod" y la columna "gestion" en la tabla "kmt_info". 'Actualiza "cat_gunaprod" y la columna "gestion" en la tabla "kmt_info".
'Sub guardaProducto(cedis As String, costoU As String, cant As String, nombre As String, prodId As String, clienteId As String, fecha As String, usuario As String, rutaV As String, precioSin As String, tipoVenta As String) 'Sub guardaProducto(cedis As String, costoU As String, cant As String, nombre As String, prodId As String, clienteId As String, fecha As String, usuario As String, rutaV As String, precioSin As String, tipoVenta As String)
@@ -979,16 +991,16 @@ Sub traePromo(promo As String, cliente As String) As Map
'######### PROMOCIONES SEGMENTADAS ########## '######### PROMOCIONES SEGMENTADAS ##########
' Si la promo esta en la lista, SOLO los clientes que la tengan la pueden ver. ' 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}'"$) 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($"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 If ps.RowCount > 0 Then
ps.Position = 0 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. 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.
Log(">>> SEGMENTADA -> " & promo & " | " & ps.GetString("HCCP_CLIENTE")) Log($">>> PROMO "${promo}" SEGMENTADA PARA EL CLIENTE ${ps.GetString("HCCP_CLIENTE")}"$)
' Select hccp_cliente As valido from HIST_CLIENTE_CANT_PROMOS where HCCP_PROMO = '${promo}' and HCCP_CLIENTE = '${traecliente}' ' 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"$) 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($"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 If ps2.RowCount > 0 Then
ps2.Position = 0 ps2.Position = 0
' Log($"registros:${ps2.RowCount}, cant:${ps2.GetString("HCCP_CANT")}"$) ' Log($"registros:${ps2.RowCount}, cant:${ps2.GetString("HCCP_CANT")}"$)
@@ -1044,7 +1056,7 @@ Sub traePromo(promo As String, cliente As String) As Map
promoMap.put("descripcion", c.GetString("CAT_GP_NOMBRE")) promoMap.put("descripcion", c.GetString("CAT_GP_NOMBRE"))
End If End If
c.Close c.Close
If thisLog Then Log($"Inv variables: ${cuantosVariablesTengoBD(promo)}"$) If thisLog Then Log($"Inv variables: ${cuantosVariablesDisponiblesDB(promo)}"$)
If thisLog Then Log($"Inv dispo: ${traemosInventarioDisponibleParaPromo(promo)}"$) If thisLog Then Log($"Inv dispo: ${traemosInventarioDisponibleParaPromo(promo)}"$)
If thisLog Then LogColor($"Promo ${promo}: ${promoMap}"$, Colors.Blue) If thisLog Then LogColor($"Promo ${promo}: ${promoMap}"$, Colors.Blue)
If thisLog Then LogColor("TIEMPO para traePromo -=" & promo & "=- : " & ((DateTime.Now-inicioContador)/1000), Colors.Red) If thisLog Then LogColor("TIEMPO para traePromo -=" & promo & "=- : " & ((DateTime.Now-inicioContador)/1000), Colors.Red)
@@ -1180,7 +1192,7 @@ End Sub
'3799, 7226, 7228, 7230 '3799, 7226, 7228, 7230
Sub procesaPromocion(idPromo As String, cliente As String) As Map 'ignore Sub procesaPromocion(idPromo As String, cliente As String) As Map 'ignore
Private thisLog As Boolean = True 'Si es verdadero, muestra los logs de este sub. Private thisLog As Boolean = False 'Si es verdadero, muestra los logs de este sub.
Private inicioContador As String = DateTime.Now Private inicioContador As String = DateTime.Now
Private mp = 0 Private mp = 0
If thisLog Then LogColor($"********* Iniciamos revision de Promo ${idPromo} *********"$, Colors.red) If thisLog Then LogColor($"********* Iniciamos revision de Promo ${idPromo} *********"$, Colors.red)
@@ -1372,6 +1384,23 @@ Sub cuantosVariablesTengoBD(promo As String) As String 'ignore
' Return x ' Return x
End Sub End Sub
'Trae los produtos variables disponibles de la BD.
Sub cuantosVariablesDisponiblesDB(promo As String)
Private x As String = "0"
If promo <> "" Then
Private c As Cursor
c = Starter.skmt.ExecQuery2("Select CAT_GP_ID, CAT_GP_ALMACEN FROM CAT_GUNAPROD2 WHERE CAT_GP_ID IN (Select CAT_DP_IDPROD FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID = ? and cat_dp_tipo = 1 GROUP BY CAT_DP_IDPROD)", Array As String (promo))
If c.RowCount > 0 Then
For i = 0 To c.RowCount - 1
c.Position = i
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")
Next
End If
End If
Return x
End Sub
'Regresa un mapa con los datos del producto desde la base de datos. 'Regresa un mapa con los datos del producto desde la base de datos.
'el mapa incluye: Id, nombre, tipo y subtipo del producto. 'el mapa incluye: Id, nombre, tipo y subtipo del producto.
Sub traeProdIdDeBD As Map 'ignore Sub traeProdIdDeBD As Map 'ignore