mirror of
https://github.com/KeymonSoft/Kelloggs_v4.git
synced 2026-04-20 03:29:14 +00:00
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:
41
B4A/Subs.bas
41
B4A/Subs.bas
@@ -861,6 +861,18 @@ Sub traeUsuarioDeBD As String 'ignore
|
||||
Return u
|
||||
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".
|
||||
'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)
|
||||
@@ -979,16 +991,16 @@ Sub traePromo(promo As String, cliente As String) As Map
|
||||
'######### PROMOCIONES SEGMENTADAS ##########
|
||||
' 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}'"$)
|
||||
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}"$)
|
||||
If ps.RowCount > 0 Then
|
||||
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.
|
||||
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}'
|
||||
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($"registros:${ps2.RowCount}"$)
|
||||
' 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}"$)
|
||||
If ps2.RowCount > 0 Then
|
||||
ps2.Position = 0
|
||||
' 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"))
|
||||
End If
|
||||
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 LogColor($"Promo ${promo}: ${promoMap}"$, Colors.Blue)
|
||||
If thisLog Then LogColor("TIEMPO para traePromo -=" & promo & "=- : " & ((DateTime.Now-inicioContador)/1000), Colors.Red)
|
||||
@@ -1180,7 +1192,7 @@ End Sub
|
||||
'3799, 7226, 7228, 7230
|
||||
|
||||
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 mp = 0
|
||||
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
|
||||
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.
|
||||
'el mapa incluye: Id, nombre, tipo y subtipo del producto.
|
||||
Sub traeProdIdDeBD As Map 'ignore
|
||||
|
||||
Reference in New Issue
Block a user