mirror of
https://github.com/KeymonSoft/Guna_Preventa.git
synced 2026-04-19 13:49:20 +00:00
- VERSION 4.09.06.EP_d
- Codigo para promo Procter PRO3009 - Codigo para promo Unilever PRO3015
This commit is contained in:
121
B4A/Subs.bas
121
B4A/Subs.bas
@@ -767,7 +767,7 @@ End Sub
|
||||
' resultado="OK" 'Ok si existe la promocion.
|
||||
' prodsVariablesRequeridos=5} 'Cantidad de productos variables requeridos para la promoción.
|
||||
Sub traePromo(promo As String, cliente As String) As Map
|
||||
Log($"TRAE PROMO = ${promo}"$)
|
||||
LogColor($"TRAE PROMO = ${promo}"$, Colors.Red)
|
||||
Private inicioContador As String = DateTime.Now
|
||||
Private c As Cursor = B4XPages.MainPage.skmt.ExecQuery("Select * from promos_comp where cat_pa_id = '"& promo&"'") 'Obtenemos las el maximo de promocioones a otorgar.
|
||||
Private siHistorico As String = 0
|
||||
@@ -925,7 +925,6 @@ Sub traeMaxPromos(pm As Map) As Int
|
||||
maxPromos.Add(pm.Get("maxXcliente")) 'Agregamos maxXcliente
|
||||
If thisLog Then Log(maxPromos)
|
||||
maxPromos.Sort(True)
|
||||
|
||||
' Log($"|${pm.Get("id").As(String).trim}|${traeCliente.Trim}|"$)
|
||||
Private c As Cursor = B4XPages.MainPage.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
|
||||
@@ -933,7 +932,6 @@ Sub traeMaxPromos(pm As Map) As Int
|
||||
vendidas = c.GetInt("vendidas")
|
||||
' Log(vendidas)
|
||||
End If
|
||||
|
||||
' If Starter.promosLog Then Log(maxPromos)
|
||||
' If Starter.promosLog Then Log("Max Promos="&maxPromos.Get(0))
|
||||
' LogColor($"maxPromos=${maxPromos.Get(0)} - vendidas=${vendidas}"$, Colors.red)
|
||||
@@ -1387,3 +1385,120 @@ Sub iniciaActividad(ia As String)
|
||||
' If B4XPages.MainPage.logger Then LogColor("Iniciamos --> " & ia, Colors.Blue)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
|
||||
'Revisa si en el pedido hay $150 o mas de los 2 productos especificados, y si si, entonces agrega el producto de regalo a la tabla pedido.
|
||||
Sub revisaPromoProcterPRO3009(prodsMap1 As Map)
|
||||
Log("entramos a promo Procter")
|
||||
Dim almacenes As List
|
||||
almacenes.Initialize2(Array As String("3", "17", "37", "31", "68", "71", "33", "80"))
|
||||
Log("Posicion de almacen: " & almacenes.IndexOf(traeAlmacen))
|
||||
' ("3", "17", "37", "31", "68", "71", "33", "80")
|
||||
If almacenes.IndexOf(traeAlmacen) >= 0 Then ' Si el almacen actual esta dentro de la lista de almacenes autorizados para la promocion, entonces continuamos ...
|
||||
Private idRegalo As String = "PYG1016"
|
||||
Private newProdsMap As Map = prodsMap1
|
||||
Private monto As String = 0
|
||||
Private invRegalo As Int = 0
|
||||
Private totalRegalos As Int = 0
|
||||
Private r As ResultSet = Starter.skmt.ExecQuery($"select ifnull(cat_gp_almacen, 0) as CAT_GP_ALMACEN from cat_gunaprod where cat_gp_id = '${idRegalo}'"$) ' Traemos el inventario del regalo.
|
||||
Do While r.NextRow
|
||||
Log(r.GetString("CAT_GP_ALMACEN"))
|
||||
If r.GetString("CAT_GP_ALMACEN") > 0 Then invRegalo = r.GetString("CAT_GP_ALMACEN")
|
||||
Loop
|
||||
Log("INV REGALO: " & invRegalo)
|
||||
r = Starter.skmt.ExecQuery($"select pe_proid from pedido where pe_proid = '${idRegalo}' and pe_cedis = 'PRO3009' and pe_cant = 1 and pe_cliente = '${traeCliente}' "$) 'Revisamos si el regalo ya existe en el pedido.
|
||||
If r.RowCount > 0 Then totalRegalos = r.RowCount
|
||||
Log($"TOTAL REGALOS: ${totalRegalos}"$)
|
||||
If prodsMap1.ContainsKey("PYG1014") Then ' Calculamos el monto del producto 1
|
||||
Private m1 As Map = prodsMap1.Get("PYG1014")
|
||||
monto = monto + m1.Get("cant") * m1.Get("precio")
|
||||
End If
|
||||
If prodsMap1.ContainsKey("PYG1025") Then ' Calculamos el monto del producto 2
|
||||
Private m2 As Map = prodsMap1.Get("PYG1025")
|
||||
monto = monto + m2.Get("cant") * m2.Get("precio")
|
||||
End If
|
||||
Private r2 As ResultSet = Starter.skmt.ExecQuery($"select ifnull(sum(pe_costo_tot),0) as monto from pedido where pe_cliente = '${traeCliente}' and PE_PROID in ("PYG1014", "PYG1025")"$)
|
||||
Do While r2.NextRow
|
||||
monto = monto + r2.GetString("monto")
|
||||
Loop
|
||||
Log($"Monto: ${monto}"$)
|
||||
' Log("PM: " & prodsMap)
|
||||
Log("prodsMap.Size: " & prodsMap1.Size)
|
||||
If prodsMap1.Size > 0 Then
|
||||
If monto > 149 Then
|
||||
Log("Mas de 149")
|
||||
If invRegalo > 0 Then
|
||||
Log("Hay inventario para regalo")
|
||||
If totalRegalos = 0 Then
|
||||
guardaProducto("PRO3009", 1, 1, traeProdNombre(idRegalo), idRegalo, traeCliente, traeFecha, traeUsuarioDeBD, traeRuta, 0, B4XPages.MainPage.tipo_venta)
|
||||
' ToastMessageShow("Agregamos regalo", False)
|
||||
Private cs As CSBuilder
|
||||
cs.Initialize
|
||||
Msgbox(cs.Color(Colors.red).append("PRO3009:").Pop.append(" En la compra de $150 de la linea Oral B Procter & Gamble se agrega 1 Salvo Multiusuos 500 ml.").Color(Colors.red).Append(" con precio de $1.00").popall, "Producto de regalo agregado") 'ignore
|
||||
End If
|
||||
Else
|
||||
LogColor("NO hay inventario para regalo PRO3009 Procter & Gamble.", Colors.red)
|
||||
End If
|
||||
Else
|
||||
Log("Menos de 149")
|
||||
If totalRegalos > 0 Then
|
||||
Log("Quitamos regalo")
|
||||
Starter.skmt.ExecNonQuery($"delete from pedido where pe_cedis = 'PRO3009' and pe_proid = '${idRegalo}' and pe_cliente = '${traeCliente}' and pe_cant = 1 "$)
|
||||
Log($"Borramos pe_cedis='PRO3009' and pe_proid='${idRegalo}' and pe_cliente='${traeCliente}'"$)
|
||||
Private pe As Cursor = Starter.skmt.ExecQuery("select count(pe_cliente) as cuantosPedidos from pedido where pe_cliente In (select cuenta from cuentaa)")
|
||||
pe.Position=0
|
||||
If pe.GetString("cuantosPedidos") = 0 Then
|
||||
Log("###### delete from pedido_cliente - " & traeCliente & "|" & traeCliente)
|
||||
Log($"delete from pedido_cliente where PC_CLIENTE = '${traeCliente}'"$)
|
||||
Starter.skmt.ExecNonQuery($"delete from pedido_cliente where PC_CLIENTE = '${traeCliente}'"$)
|
||||
End If
|
||||
ToastMessageShow("Quitamos regalo PRO3009", False)
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
Else
|
||||
LogColor("El almacen actual NO esta en la lista para la promo de Procter & Gamble.", Colors.Magenta)
|
||||
End If
|
||||
' Return newProdsMap
|
||||
End Sub
|
||||
|
||||
'Valida que si hay un regalo de la promo, tambien existan productos en el pedido para respaldarla.
|
||||
Sub validaPromoProcterPRO3009
|
||||
Private idRegalo As String = "PYG1016"
|
||||
Private r As ResultSet = Starter.skmt.ExecQuery($"select pe_cliente from pedido where pe_proid = '${idRegalo}' and pe_cedis = 'PRO3009'"$)
|
||||
' Private cont As Int = 0
|
||||
Do While r.NextRow
|
||||
Private monto As String = 0
|
||||
Private r2 As ResultSet = Starter.skmt.ExecQuery($"select ifnull(sum(pe_costo_tot),0) as monto from pedido where pe_cliente = '${r.GetString("PE_CLIENTE")}' and PE_PROID in ("PYG1014", "PYG1025")"$)
|
||||
Do While r2.NextRow
|
||||
Log($"Cliente: ${r.GetString("PE_CLIENTE")}, monto: ${r2.GetString("monto")}"$)
|
||||
' cont = cont + 1
|
||||
' Log("CONT = " & cont & " , MONTO: " & r2.GetString("monto"))
|
||||
If r2.GetString("monto") < 150 Then
|
||||
Starter.skmt.ExecNonQuery($"delete from pedido where pe_cedis = 'PRO3009' and pe_proid = '${idRegalo}' and pe_cliente = '${r.GetString("PE_CLIENTE")}' and pe_cant = 1 "$)
|
||||
' If cont = 1 Then
|
||||
Msgbox($"Regalo de la promoción PRO3009 borrado por no cumplir con los requisitos mínimos."$, "Regalo Borrado") 'ignore
|
||||
' End If
|
||||
End If
|
||||
Loop
|
||||
r2 = Starter.skmt.ExecQuery($"select count(pe_proid) as cuantos from pedido where pe_cliente = '${r.GetString("PE_CLIENTE")}'"$) 'Revisamos si es que hay mas pedido del cliente, y si no, borramos el header.
|
||||
Do While r2.NextRow
|
||||
' Log(">>>> CUANTOS: " & r2.GetString("cuantos"))
|
||||
If r2.GetString("cuantos") = 0 Then
|
||||
Starter.skmt.ExecNonQuery($"delete from pedido_cliente where pc_cliente = '${r.GetString("PE_CLIENTE")}'"$)
|
||||
Starter.skmt.ExecNonQuery($"update kmt_info2 set gestion = 0 where cat_cl_codigo = '${r.GetString("PE_CLIENTE")}'"$)
|
||||
End If
|
||||
Loop
|
||||
Loop
|
||||
End Sub
|
||||
|
||||
'Regresa TRUE si el cliente especificado existe en el historico de compra de la promo.
|
||||
Sub revisaPRO2265(idCliente As String) As Boolean
|
||||
Private r As ResultSet = Starter.skmt.ExecQuery($"select * from HIST_PRO2265 where H_IDCLIENTE = '${idCliente}'"$)
|
||||
Private x As Boolean = False
|
||||
Do While r.NextRow
|
||||
x = True
|
||||
Loop
|
||||
Log($">>>> revisaPRO2265 ${idCliente} = ${x}"$)
|
||||
Return x
|
||||
End Sub
|
||||
Reference in New Issue
Block a user