- VERSION 5.04.23

- Se agrega la parte de Trend Spending de Bonificaciones (Gracias Javy!!!)
This commit is contained in:
2025-04-24 22:14:51 -06:00
parent 33a52d7074
commit 73877991ba
10 changed files with 288 additions and 43 deletions

View File

@@ -157,8 +157,8 @@ Private Sub B4XPage_Created (Root1 As B4XView)
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_GUNAPROD_DOE (CAT_GP_ID TEXT,CAT_GP_NOMBRE TEXT,CAT_GP_IMP1 TEXT,CAT_GP_IMP2 TEXT,CAT_GP_PRECIO TEXT,CAT_GP_CLASIF TEXT,CAT_GP_STS TEXT,CAT_GP_TIPO TEXT,CAT_GP_SUBTIPO TEXT,CAT_GP_IMG TEXT,CAT_GP_ALMACEN TEXT,CAT_GP_TIPOPROD TEXT,CAT_GP_INICIATIVA TEXT,CAT_GP_DEV TEXT,CAT_GP_CODPROMO TEXT)")
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS PEDIDO_DOE (PE_PRECIO2 TEXT,PE_TIPO TEXT,PE_FOLIO NUMERIC,PE_DESC NUMERIC,PE_COSTO_SIN TEXT,PE_RUTA TEXT,PE_CEDIS TEXT,PE_COSTO_TOT NUMERIC,PE_COSTOU NUMERIC,PE_CANT NUMERIC,PE_PRONOMBRE TEXT,PE_PROID TEXT,PE_CLIENTE TEXT,PE_FECHA TEXT,PE_USUARIO TEXT)")
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS PEDIDOS_DOE_ENTREGA (PC_CLIENTE TEXT, PC_ENTREGA TEXT)")
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_TRADE_SPENDING_SEMANAL (HIST_TSS_RUTA TEXT, HIST_TSS_IDALMACEN TEXT, HIST_TSS_TIPO TEXT, HIST_TSS_SEMANA1 TEXT, HIST_TSS_SEMANA1_ACUM TEXT, HIST_TSS_SEMANA2 TEXT, HIST_TSS_SEMANA2_ACUM TEXT, HIST_TSS_SEMANA3 TEXT, HIST_TSS_SEMANA3_ACUM TEXT, HIST_TSS_SEMANA4 TEXT, HIST_TSS_SEMANA4_ACUM TEXT, HIST_TSS_SEMANA5 TEXT, HIST_TSS_SEMANA5_ACUM TEXT, HIST_TSS_SEMANA6 TEXT, HIST_TSS_SEMANA6_ACUM TEXT, HIST_TSS_GRUPO TEXT)")
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS TRADE_SPENDING (MONTO_SEMANA TEXT, ACUMULADO TEXT)")
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_TREND_SPENDING_SEMANAL (HIST_TSS_RUTA TEXT, HIST_TSS_IDALMACEN TEXT, HIST_TSS_TIPO TEXT, HIST_TSS_SEMANA1 TEXT, HIST_TSS_SEMANA1_ACUM TEXT, HIST_TSS_SEMANA2 TEXT, HIST_TSS_SEMANA2_ACUM TEXT, HIST_TSS_SEMANA3 TEXT, HIST_TSS_SEMANA3_ACUM TEXT, HIST_TSS_SEMANA4 TEXT, HIST_TSS_SEMANA4_ACUM TEXT, HIST_TSS_SEMANA5 TEXT, HIST_TSS_SEMANA5_ACUM TEXT, HIST_TSS_SEMANA6 TEXT, HIST_TSS_SEMANA6_ACUM TEXT, HIST_TSS_GRUPO TEXT)")
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS TREND_SPENDING (TIPO TEXT, MONTO_SEMANA TEXT, ACUMULADO TEXT)")
''' FIN DOE
kh.agregaColumna(Starter.skmt, "kmt_info", "IMPRESION", "INTEGER")
kh.agregaColumna(Starter.skmt, "USUARIOA", "FECHA", "TEXT")
@@ -170,6 +170,7 @@ Private Sub B4XPage_Created (Root1 As B4XView)
kh.agregaColumna(Starter.skmt, "CAT_GUNAPROD2", "CAT_GP_TIPOPROD2", "TEXT")
kh.agregaColumna(Starter.skmt, "CAT_GUNAPROD", "CAT_GP_PROMOCION", "TEXT")
kh.agregaColumna(Starter.skmt, "CAT_GUNAPROD2", "CAT_GP_PROMOCION", "TEXT")
kh.agregaColumna(Starter.skmt, "TREND_SPENDING", "TIPO", "TEXT")
Root = Root1
' Root.LoadLayout("MainPage")
Root.LoadLayout("login")

View File

@@ -763,7 +763,7 @@ Sub B4XPage_Appear
'PROMOS POR MONTO
Private mPromoXMonto As Map = Subs.revisaPromoPorMonto
LogColor("PROMOXMONTO:" & mPromoXMonto, Colors.Blue)
' LogColor("PROMOXMONTO:" & mPromoXMonto, Colors.Blue)
If mPromoXMonto.Size > 0 And clienteId <> 0 Then ' El "clienteId <> 0" es para que no la promo cuando se pida ABORDO
If l_total.Text > mPromoXMonto.Get("rangoMin") And l_total.Text < mPromoXMonto.Get("precio1") Then
Log("Eres candidato a una promocion")
@@ -2255,7 +2255,7 @@ Sub Cuestionario
sDate=DateTime.Date(DateTime.Now)
sTime=DateTime.Time(DateTime.Now)
CUANTOS = 0
Log($"Tomar_Foto = ${TOMAR_FOTO}"$)
' Log($"Tomar_Foto = ${TOMAR_FOTO}"$)
If TOMAR_FOTO = 0 Then
s=Starter.skmt.ExecQuery("select COUNT(*) AS CUANTOS from HIST_ENCUESTA where HE_CLIE In (Select cuenta from cuentaa)")
s.Position= 0
@@ -2266,7 +2266,7 @@ Sub Cuestionario
CUANTOS2 = s.GetString("CUANTOS2")
If logger Then LogColor($"Hist:encuesta=${CUANTOS}, hist_encuesta2 = ${CUANTOS2}"$, Colors.Magenta)
End If
Log(CUANTOS & "|" & CUANTOS2)
' Log(CUANTOS & "|" & CUANTOS2)
If CUANTOS = 0 And CUANTOS2 = 0 Then
Private enc As Cursor = Starter.skmt.ExecQuery("SELECT CAT_EP_ID, CAT_EP_IDTIPOPREGUNTA, CAT_CE_DESCRIPCION, CAT_EP_PREGUNTA, CAT_EP_RES1_PRED, CAT_EP_RES2_PRED, CAT_EP_RES3_PRED, CAT_EP_ORDEN_PREGUNTA FROM CAT_ENCUESTA_PREGUNTA ORDER BY CAT_CE_DESCRIPCION, CAST(CAT_EP_ORDEN_PREGUNTA AS DECIMAL)")
If enc.RowCount > 0 Then
@@ -4339,7 +4339,7 @@ Private Sub b_inicioFinVenta_Click
Else
Subs.bitacora(Subs.fechanormal(DateTime.Now), usuario, Id_Almacen, ruta_tienda, "Inicia Venta", Subs.traeCliente, Subs.fechanormal(DateTime.Now), "", Starter.lat_gps, Starter.lon_gps, precision, motivoNoVenta, "")
Starter.enVenta = True
LogColor($">>>>>> INICIA VENTA: ${Starter.enVenta} - ${Subs.traeCliente}"$, Colors.red)
' LogColor($">>>>>> INICIA VENTA: ${Starter.enVenta} - ${Subs.traeCliente}"$, Colors.red)
End If
b_inicioFinVenta.Visible = False
End Sub

View File

@@ -861,11 +861,11 @@ Sub cargar_Click
reqManager.ExecuteQuery(cmd , 0, "semanaCalLaboral")
cmd.Initialize
cmd.Name = "traeInfoTradeSpending"
cmd.Name = "traeInfoTrendSpending"
' cmd.Parameters = Array As Object(e_ruta.text, ALMACEN)
cmd.Parameters = Array As Object(238, 2)
reqManager.ExecuteQuery(cmd , 0, "tradeSpending")
LogColor($"Trade Spending: Ruta: ${e_ruta.text}, almacen: ${ALMACEN}"$, Colors.red)
reqManager.ExecuteQuery(cmd , 0, "trendSpending")
LogColor($"Trend Spending: Ruta: ${e_ruta.text}, almacen: ${ALMACEN}"$, Colors.red)
If E_RUTA2.Text <> "" Then
cmd.Initialize
@@ -2113,9 +2113,9 @@ Sub JobDone(Job As HttpJob)
Next
End If
If RESULT.Tag = "tradeSpending" Then 'query tag
If RESULT.Tag = "trendSpending" Then 'query tag
' Subs.logJobDoneResultados(RESULT)
Starter.skmt.ExecNonQuery("delete from HIST_TRADE_SPENDING_SEMANAL")
Starter.skmt.ExecNonQuery("delete from HIST_TREND_SPENDING_SEMANAL")
For Each records() As Object In RESULT.Rows
Dim HIST_TSS_RUTA As String = records(RESULT.COLUMNS.GET("HIST_TSS_RUTA"))
Dim HIST_TSS_IDALMACEN As String = records(RESULT.COLUMNS.GET("HIST_TSS_IDALMACEN"))
@@ -2133,7 +2133,7 @@ Sub JobDone(Job As HttpJob)
Dim HIST_TSS_SEMANA6 As String = records(RESULT.COLUMNS.GET("HIST_TSS_SEMANA6"))
Dim HIST_TSS_SEMANA6_ACUM As String = records(RESULT.COLUMNS.GET("HIST_TSS_SEMANA6_ACUM"))
Dim HIST_TSS_GRUPO As String = records(RESULT.COLUMNS.GET("HIST_TSS_GRUPO"))
Starter.skmt.ExecNonQuery2("INSERT INTO HIST_TRADE_SPENDING_SEMANAL (HIST_TSS_RUTA, HIST_TSS_IDALMACEN, HIST_TSS_TIPO, HIST_TSS_SEMANA1, HIST_TSS_SEMANA1_ACUM, HIST_TSS_SEMANA2, HIST_TSS_SEMANA2_ACUM, HIST_TSS_SEMANA3, HIST_TSS_SEMANA3_ACUM, HIST_TSS_SEMANA4, HIST_TSS_SEMANA4_ACUM, HIST_TSS_SEMANA5, HIST_TSS_SEMANA5_ACUM, HIST_TSS_SEMANA6, HIST_TSS_SEMANA6_ACUM, HIST_TSS_GRUPO) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (HIST_TSS_RUTA, HIST_TSS_IDALMACEN, HIST_TSS_TIPO, HIST_TSS_SEMANA1, HIST_TSS_SEMANA1_ACUM, HIST_TSS_SEMANA2, HIST_TSS_SEMANA2_ACUM, HIST_TSS_SEMANA3, HIST_TSS_SEMANA3_ACUM, HIST_TSS_SEMANA4, HIST_TSS_SEMANA4_ACUM, HIST_TSS_SEMANA5, HIST_TSS_SEMANA5_ACUM, HIST_TSS_SEMANA6, HIST_TSS_SEMANA6_ACUM, HIST_TSS_GRUPO))
Starter.skmt.ExecNonQuery2("INSERT INTO HIST_TREND_SPENDING_SEMANAL (HIST_TSS_RUTA, HIST_TSS_IDALMACEN, HIST_TSS_TIPO, HIST_TSS_SEMANA1, HIST_TSS_SEMANA1_ACUM, HIST_TSS_SEMANA2, HIST_TSS_SEMANA2_ACUM, HIST_TSS_SEMANA3, HIST_TSS_SEMANA3_ACUM, HIST_TSS_SEMANA4, HIST_TSS_SEMANA4_ACUM, HIST_TSS_SEMANA5, HIST_TSS_SEMANA5_ACUM, HIST_TSS_SEMANA6, HIST_TSS_SEMANA6_ACUM, HIST_TSS_GRUPO) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (HIST_TSS_RUTA, HIST_TSS_IDALMACEN, HIST_TSS_TIPO, HIST_TSS_SEMANA1, HIST_TSS_SEMANA1_ACUM, HIST_TSS_SEMANA2, HIST_TSS_SEMANA2_ACUM, HIST_TSS_SEMANA3, HIST_TSS_SEMANA3_ACUM, HIST_TSS_SEMANA4, HIST_TSS_SEMANA4_ACUM, HIST_TSS_SEMANA5, HIST_TSS_SEMANA5_ACUM, HIST_TSS_SEMANA6, HIST_TSS_SEMANA6_ACUM, HIST_TSS_GRUPO))
Next
End If
End If
@@ -2341,8 +2341,8 @@ Sub e_ruta_EnterPressed
Starter.skmt.ExecNonQuery("delete from CAT_PROMO_MONTO")
Starter.skmt.ExecNonQuery("delete from TMP_CAT_BILLETE")
Starter.skmt.ExecNonQuery("delete from TMP_CAT_MONEDAS")
Starter.skmt.ExecNonQuery("delete from TRADE_SPENDING")
Starter.skmt.ExecNonQuery("delete from HIST_TRADE_SPENDING_SEMANAL")
Starter.skmt.ExecNonQuery("delete from TREND_SPENDING")
Starter.skmt.ExecNonQuery("delete from HIST_TREND_SPENDING_SEMANAL")
Starter.skmt.ExecNonQuery2("INSERT INTO HIST_ENVIOS VALUES (?,0,?)", Array As Object(sTime, "PEDIDO"))
Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("NUMERO_PEDIDO"))

View File

@@ -102,6 +102,10 @@ Sub Class_Globals
Private l_infoPedido As Label
Dim promosC As Promociones
Dim invTotal As Int
Dim TS_RMI() As String
Dim TS_DESCUENTOS() As String
Dim TS_BONIFICACIONES() As String
dim bonificacionesMaximas as int = 0
End Sub
'You can add more parameters here.
@@ -144,7 +148,7 @@ Private Sub B4XPage_Created (Root1 As B4XView)
listaProds.Initialize
pedidoMap.Initialize
listaHints.Initialize
Log("Llamamos LlenaProdsLL")
If Starter.Logger Then Log("Llamamos LlenaProdsLL")
LlenaProdsLL(Null, Null)
list_prodsPedido.Initialize
' Log("list_prodsPedido.Initialize")
@@ -161,7 +165,7 @@ End Sub
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
Sub B4XPage_Appear
Log("Entro: " & entro)
If Starter.Logger Then Log("Entro: " & entro)
' Log($"LIMITE ABORDO: ${limiteAbordo}"$)
' clv_prods_ll.Initialize(Me, "clv_prods_ll")
' list_prodsPedido.Initialize
@@ -280,6 +284,14 @@ Sub B4XPage_Appear
End If
If B4XPages.MainPage.cliente.la_cuenta.text = "0" Then b_rmi.Visible = False
' Log(Starter.tipov)
Private mx As Map = Subs.traeInfoTrendSpending
TS_RMI = Regex.Split(",", mx.Get("RMI"))
TS_DESCUENTOS = Regex.Split(",", mx.Get("DESCUENTOS"))
TS_BONIFICACIONES = Regex.Split(",", mx.Get("BONIFICACIONES"))
Log(">>>>>>>>>>>>> TRENDSPENDING: " & mx)
Log("RMI: " & TS_RMI(0) & "|" & TS_RMI(1))
Log("DESCUENTOS: " & TS_DESCUENTOS(0) & "|" & TS_DESCUENTOS(1))
Log("BONIFICACIONES: " & TS_BONIFICACIONES(0) & "|" & TS_BONIFICACIONES(1))
End Sub
Sub PCLV_AddProds
@@ -585,12 +597,29 @@ Sub b_prodMenos_Click
End If
If laCant.Text = "" Then laCant.Text = 0
laCant.Text = $"${NumberFormat2((laCant.Text - 1), 1, 0, 0, False)}"$
If laCant.Text < 0 Then laCant.Text = 0
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 id As String=clv_prods_ll.GetValue(index).As(Map).Get("id")
Private tmpMap As Map = CreateMap("precio":precio, "cant":laCant.Text, "almacen":Subs.traeAlmacen)
Log(clv_prods_ll.GetValue(index).As(Map))
' ######## Trend Spending - Poner estas lienas antes de que si es negativo se ponga en CERO.
Private laBonificacion As String = kh.traePrecio(id)*(kh.traeDescXSku(clienteId, id)/100)
If laBonificacion > 0 Then
Log("LA BONIFICACION: " & laBonificacion)
Private BonsRestantes As String = (TS_BONIFICACIONES(0) - TS_BONIFICACIONES(1) - Subs.traeAcumuladoHoyTS("bonificaciones"))
Log("Monto de BONIFICACIONES disponible: " & BonsRestantes)
bonificacionesMaximas = ((laCant.text * laBonificacion) + BonsRestantes) / laBonificacion
Log("MAX: " & bonificacionesMaximas)
Log(Subs.traeAcumuladoHoyTS("bonificaciones"))
End If
Log("LA BONIFICACION: " & laBonificacion)
If laCant.text >= 0 Then
Subs.modTrendSpending("suma", "bonificaciones", laBonificacion)
End If
' #######################
If laCant.Text < 0 Then laCant.Text = 0
' Log(tmpMap)
' prodsMap.Put(id, tmpMap)
' If laCant.Text = 0 Then prodsMap.Remove(id)
@@ -604,6 +633,7 @@ Sub b_prodMenos_Click
nombreX = "CAMBIO"&Subs.traeRMINombre(id)
precioX = precioX * -1
End If
Subs.actualizaProducto(almacenX, precioX, laCant.text, nombreX, id, clienteId, Subs.traeFecha, Subs.traeUsuarioDeBD, rutaUsuario, 0, Starter.tipov)
cuentaProds
If lfila.Text <> "RMI" Then
@@ -648,6 +678,33 @@ Sub b_prodMas_Click
inv = Subs.traeinventario(pnl.GetView(1).Tag)
Log($"Existencias: ${inv}, inv: ${Subs.traeinventario(pnl.GetView(1).Tag)}"$)
Private id As String=clv_prods_ll.GetValue(index).As(Map).Get("id")
Private almacenX As String = Subs.traeAlmacen
Private nombreX As String = Subs.traeProdNombre(id)
Private precioX As String = precio
'######## Trend Spending
Private laBonificacion As String = kh.traePrecio(id)*(kh.traeDescXSku(clienteId, id)/100)
If laBonificacion > 0 Then
Log("LA BONIFICACION: " & laBonificacion)
Private BonsRestantes As String = (TS_BONIFICACIONES(0) - TS_BONIFICACIONES(1) - Subs.traeAcumuladoHoyTS("bonificaciones"))
Log("Monto de BONIFICACIONES disponible: " & BonsRestantes)
Log("BON RESTANTE: " & BonsRestantes)
bonificacionesMaximas = ((laCant.text * laBonificacion) + BonsRestantes) / laBonificacion
Log("MAX: " & bonificacionesMaximas)
Log(Subs.traeAcumuladoHoyTS("bonificaciones"))
End If
If laCant.Text = bonificacionesMaximas Then
ToastMessageShow("El presupuesto de BONIFICACIONES no permite agregar mas productos!!", False)
End If
Log("LA BONIFICACION: " & laBonificacion)
If inv > 0 And laCant.Text < bonificacionesMaximas Then
Subs.modTrendSpending("resta", "bonificaciones", laBonificacion)
Log(Subs.traeAcumuladoHoyTS("bonificaciones"))
End If
Log("BONIFCACIONES RESTANTES: " & (TS_BONIFICACIONES(0) - TS_BONIFICACIONES(1) - Subs.traeAcumuladoHoyTS("bonificaciones")))
'##########################
' 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
@@ -656,11 +713,13 @@ Sub b_prodMas_Click
' Log(tmpMap)
' Log($"${kh.traeLimiteCredito(Subs.traeCliente)} < ${kh.totalPedido + precio}"$)
' Log(kh.traeLimiteCredito(Subs.traeCliente) < (kh.totalPedido + precio))
If buttonTag = "vendido" And lfila.Text = "PRODUCTOS" Then
If 1 = 2 And buttonTag = "vendido" And lfila.Text = "PRODUCTOS" Then
Log(1)
' Log("VENDIDO")
' Log($"${(laCant.Text + 1 <= inv)} And ${(kh.totalPedido - precio > 1)}"$)
If inv > 0 And (laCant.Text + 1 <= (laCant.Text + existencias)) And (kh.totalPedido - precio > 1) Then
Log($"${(laCant.Text + 1 <= inv)} And ${(kh.totalPedido - precio > 1)}"$)
' If inv > 0 And (laCant.Text + 1 <= (laCant.Text + existencias)) And (kh.totalPedido - precio > 1) Then
If inv > 0 And (kh.totalPedido - precio > 1) Then
Log(2)
' Log(clv_prods_ll.GetValue(index).As(Map))
clv_prods_ll.GetValue(index).As(Map).Put("almacen", (inv - 1))
@@ -673,10 +732,11 @@ Sub b_prodMas_Click
Log(3)
Log($"#######################${CRLF}#### LIMITE CREDITO SUPERADO${CRLF}#######################"$)
ToastMessageShow("LIMITE DE CREDITO SUPERADO", False)
' else If laCant.Text + 1 <= inv And lfila.Text = "PRODUCTOS" Then
else If inv > 0 And lfila.Text = "PRODUCTOS" Then
else If inv > 0 And laBonificacion = 0 And lfila.Text = "PRODUCTOS" Then
laCant.Text = NumberFormat2((laCant.Text + 1), 1, 0, 0, False)
else If inv > 0 And laBonificacion > 0 And laCant.Text < bonificacionesMaximas And lfila.Text = "PRODUCTOS" Then
Log(4)
LogColor(inv, Colors.blue)
' LogColor(inv, Colors.blue)
' laCant.Text = $"$1.0{laCant.Text + 1}"$
laCant.Text = NumberFormat2((laCant.Text + 1), 1, 0, 0, False)
' Log(kh.totalPedido)
@@ -691,16 +751,12 @@ Sub b_prodMas_Click
Log(6)
laCant.Text = "0"
End If
Private id As String=clv_prods_ll.GetValue(index).As(Map).Get("id")
Private almacenX As String = Subs.traeAlmacen
Private nombreX As String = Subs.traeProdNombre(id)
Private precioX As String = precio
If lfila.Text = "RMI" Then
almacenX = "DUR"
nombreX = "CAMBIO"&Subs.traeRMINombre(id)
precioX = precioX * -1
End If
Subs.actualizaProducto(almacenX, precioX, laCant.text, nombreX, id, clienteId, Subs.traeFecha, Subs.traeUsuarioDeBD, rutaUsuario, 0, Starter.tipov)
Log($"Existencias: ${inv}, inv: ${Subs.traeinventario(pnl.GetView(1).Tag)}"$)
@@ -712,7 +768,7 @@ Sub b_prodMas_Click
et_pCant_TextChanged(100, 0)
End If
dispAbordo = kh.traeDisponibleAbordo
Log("DISPONIBLE ABORDO: " & dispAbordo)
' Log("DISPONIBLE ABORDO: " & dispAbordo)
If Subs.traeCliente = 0 And dispAbordo < 1 Then
' Log("######### "& NumberFormat2((kh.traeLimiteAbordoWeb - (kh.traeLimiteAbordoXInventario - kh.traeVenta) - kh.traeVentaAbordo), 0, 2, 2, False))
Try
@@ -817,6 +873,34 @@ Private Sub et_pCant_TextChanged (Old As String, New As String)
' Log("#### LIMITE DE CREDITO")
End If
'######## Trend Spending
Private laBonificacion As String = kh.traePrecio(id)*(kh.traeDescXSku(clienteId, id)/100)
Log("LA BONIFICACION: " & laBonificacion)
Private BonsRestantes As String = (TS_BONIFICACIONES(0) - TS_BONIFICACIONES(1) - Subs.traeAcumuladoHoyTS("bonificaciones"))
Log("Monto de BONIFICACIONES disponible: " & BonsRestantes)
Private maxDispPorBonificaciones As Int = (BonsRestantes/laBonificacion).As(Int)
Log($"Max disponibles por bonificaciones: ${maxDispPorBonificaciones}"$)
If laBonificacion > 0 Then
If New > bonificacionesMaximas Then
If invTotal > bonificacionesMaximas Then
laCant.Text = bonificacionesMaximas
Else
laCant.Text = invTotal
End If
End If
Else if laBonificacion = 0 Then
If laCant.Text > invTotal Or New > invTotal Then
' Log("Se pasa!!")
' Log($"Ponemos laCant en: ${invTotal}"$)
laCant.text = invTotal
End If
End If
Subs.modTrendSpending("resta", "bonificaciones", ((New * laBonificacion) - (Old * laBonificacion)))
Log(Subs.traeAcumuladoHoyTS("bonificaciones"))
'##########################
' If Not(Old = "0" And New = "") And laCant.Text <> Null And laCant.Text <> "" And etCantHasFocus Then
Subs.actualizaProducto(almacenX, precioX, laCant.Text, nombreX, id, clienteId, Subs.traeFecha, Subs.traeUsuarioDeBD, rutaUsuario, 0, Starter.tipov)
' End If
@@ -852,6 +936,24 @@ Private Sub et_pCant_FocusChanged (HasFocus As Boolean)
Dim pnl As B4XView = pnl0.GetView(0)
Dim laCant As B4XView = pnl.GetView(2).GetView(2)
Private id As String=clv_prods_ll.GetValue(index).As(Map).Get("id")
'######## Trend Spending
Private laBonificacion As String = kh.traePrecio(id)*(kh.traeDescXSku(clienteId, id)/100)
If laBonificacion > 0 And HasFocus Then
Log("LA BONIFICACION: " & laBonificacion)
Private BonsRestantes As String = (TS_BONIFICACIONES(0) - TS_BONIFICACIONES(1) - Subs.traeAcumuladoHoyTS("bonificaciones"))
Log("Monto de BONIFICACIONES disponible: " & BonsRestantes)
bonificacionesMaximas = ((laCant.text * laBonificacion) + BonsRestantes) / laBonificacion
Log("MAX: " & bonificacionesMaximas)
' Private maxDispPorBonificaciones As Int = ((BonsRestantes/laBonificacion)+laCant.text).As(Int)
' Log($"Max disponibles por bonificaciones: ${maxDispPorBonificaciones}"$)
' Subs.modTrendSpending("resta", "bonificaciones", ((New * laBonificacion) - (Old * laBonificacion)))
Log(Subs.traeAcumuladoHoyTS("bonificaciones"))
End If
'##########################
invTotal = laCant.Text + Subs.traeinventario(id)
LogColor("InvTotal PRODMAS: " & invTotal, Colors.Red)
cuentaProds
@@ -1130,6 +1232,14 @@ Private Sub lv_prodsPedido_ItemLongClick (Position As Int, Value As Object)
'Si no es RMI, actualizamos el inventario.
If prod.GetString("PE_CEDIS") <> "DUR" Then Starter.skmt.ExecNonQuery2($"update ${Subs.traeTablaProds(Starter.tipov)} set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?"$, Array As Object(m.get("cant"), m.get("prodId")))
Log($"BORRAMOS ${Value}, ${m.Get("cedis")}"$)
' Codigo para regresar el dinero al resupuesto de BONIFICACIONES (Trend Spending)
Private precio0 As String = Subs.traePrecio(m.Get("prodId"))
Private precioConDesc As String = (kh.traeDescXSku(Subs.traeCliente, m.Get("prodId"))/100)*precio0
Log(precioConDesc)
Log(">>>>>>>>>>>>> " & (precioConDesc * m.Get("cant")))
Subs.modTrendSpending("suma", "bonificaciones", (precioConDesc * m.Get("cant")))
' Termina Trend Spending
Starter.skmt.ExecNonQuery2("delete from pedido where pe_pronombre = ? and pe_cedis = ? and pe_cant = ? and pe_cliente in (Select CUENTA from cuentaa)", Array As Object(Value, m.Get("cedis"), m.Get("cant")))
End If
prod.Close
@@ -1339,7 +1449,7 @@ Sub Busca_TextChanged (Old As String, New As String)
End Sub
Sub LlenaProdsLL(p As ResultSet, extra As String)
Log("LlenaProdsLL")
If Starter.Logger Then Log("LlenaProdsLL")
listaProds.Initialize
hayPedido = Subs.hayPedido
' Log($"HAYPEDIDO: ${hayPedido}"$)
@@ -1366,7 +1476,7 @@ Sub LlenaProdsLL(p As ResultSet, extra As String)
Else
' Log("NO HAY RESULTSET")
Dim p As ResultSet = Starter.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPO, CAT_GP_TIPOPROD from ${Subs.traeTablaProds(Starter.tipov)} where CAT_GP_PRECIO > 0 And CAT_GP_CLASIF <> 'PROMOS' and CAT_GP_PROMOCION <> '1' ORDER BY CAT_GP_TIPOPROD2 DESC, CAT_GP_NOMBRE"$)
Log($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPO, CAT_GP_TIPOPROD from ${Subs.traeTablaProds(Starter.tipov)} where CAT_GP_PRECIO > 0 And CAT_GP_CLASIF <> 'PROMOS' and CAT_GP_PROMOCION <> '1' ORDER BY CAT_GP_TIPOPROD2 DESC, CAT_GP_NOMBRE"$)
If Starter.Logger Then Log($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPO, CAT_GP_TIPOPROD from ${Subs.traeTablaProds(Starter.tipov)} where CAT_GP_PRECIO > 0 And CAT_GP_CLASIF <> 'PROMOS' and CAT_GP_PROMOCION <> '1' ORDER BY CAT_GP_TIPOPROD2 DESC, CAT_GP_NOMBRE"$)
' Log(p.RowCount & " - " & Subs.traeTablaProds(Starter.tipov))
End If

View File

@@ -907,7 +907,7 @@ Version=12.8
#Region Project Attributes
#ApplicationLabel: Kelloggs Venta
#VersionCode: 3000
#VersionName: 5.04.17
#VersionName: 5.04.21
#SupportedOrientations: portrait
#CanInstallToExternalStorage: False
#BridgeLogger:true

View File

@@ -64,7 +64,7 @@ ModuleClosedNodes0=
ModuleClosedNodes1=
ModuleClosedNodes10=
ModuleClosedNodes11=
ModuleClosedNodes12=5,7,8,9
ModuleClosedNodes12=3,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41
ModuleClosedNodes13=
ModuleClosedNodes14=
ModuleClosedNodes15=
@@ -76,7 +76,7 @@ ModuleClosedNodes2=
ModuleClosedNodes20=
ModuleClosedNodes21=
ModuleClosedNodes22=
ModuleClosedNodes23=1,4,5,6,7,8,11,12,14,15,17,18,21,22,24,25,26,27,28,29,30,31,32,33,35
ModuleClosedNodes23=4,5,6,7,8,11,12,14,15,17,18,21,22,24,25,26,27,28,29,30,31,32,33,35
ModuleClosedNodes24=
ModuleClosedNodes25=4
ModuleClosedNodes26=
@@ -91,6 +91,6 @@ ModuleClosedNodes6=
ModuleClosedNodes7=
ModuleClosedNodes8=
ModuleClosedNodes9=
NavigationStack=Main,Process_Globals,28,0,B4XMainPage,JobDone,509,0,Subs,comparaVersiones,2021,6,Subs,comparaVersionesOriginal,2011,0,Subs,borraLogDB,321,0,Subs,revisaPushService,431,0,Subs,borraArribaDe100Errores,439,0,B4XMainPage,B4XPage_Created,130,0,B4XMainPage,CreateRequest,938,0,B4XMainPage,B_MACIMP_Click,709,0,C_Productos,b_prodMas_Click,677,1
NavigationStack=Subs,modTrendSpending,2124,4,Subs,traeAcumuladoHoyTS,2150,2,C_Principal,Class_Globals,6,0,Subs,borraPedidoClienteActual,1505,6,Subs,Process_Globals,14,0,Subs,actualizaProducto,983,0,C_Productos,et_pCant_FocusChanged,938,6,C_Productos,et_pCant_TextChanged,893,6,C_Productos,b_prodMenos_Click,619,6,C_Productos,b_prodMas_Click,675,6
SelectedBuild=0
VisibleModules=1,28,11,3,29,12,7,9
VisibleModules=1,28,11,3,29,12,7,9,23

View File

@@ -57,6 +57,7 @@ Sub Process_Globals
Dim errorConnDBReq As Boolean = False
Dim GUID As String = ""
Dim passSupervisor As String = "13X#X$X46" ' Valor predeterminado DIFERENTE a ""
dim semana as int = 0
End Sub
Sub Service_Create
@@ -209,7 +210,7 @@ Sub ENVIA_ULTIMA_GPS
End Sub
Sub JobDone(Job As HttpJob)
Log("JOBDONE STARTER")
If Logger Then Log("JOBDONE STARTER")
If Job.Success = False Then
' ToastMessageShow("Error: " & Job.ErrorMessage, True)
Else

View File

@@ -960,7 +960,7 @@ Sub actualizaProducto(cedis As String, costoU As String, cant As String, nombre
If nombre.Length < 6 Then ToastMessageShow("(actualizaProducto) El nombre del producto no es valido " & nombre, True)
precioSin = NumberFormat2(precioSin, 1, 2, 2, False)
costoU = NumberFormat2(costoU, 1, 2, 2, False)
LogColor($"actualizaProducto, c=${clienteId}, p=${prodId}, nombre=${nombre}, cant=${cant}, cedis=${cedis}, tipo=${tipoVenta}"$, Colors.Magenta)
LogColor($"actualizaProducto, c=${clienteId}, p=${prodId}, nombre=${nombre}, cant=${cant}, precio=${costoU}, cedis=${cedis}, tipo=${tipoVenta}"$, Colors.Magenta)
' Private tablaProds As String = "cat_gunaprod2"
' If tipoVenta = "ABORDO" Then tablaProds = "cat_gunaprod"
Private c As Cursor=Starter.skmt.ExecQuery($"select * from pedido where pe_cedis = '${cedis}' and pe_proid = '${prodId}' and pe_cliente = '${clienteId}'"$)
@@ -970,7 +970,7 @@ Sub actualizaProducto(cedis As String, costoU As String, cant As String, nombre
Private antCant As Int = 0
If IsNumber(c.GetInt("PE_CANT")) Then antCant=c.GetInt("PE_CANT")
Private difCant As Int = cant - antCant
Starter.skmt.ExecNonQuery($"update pedido set pe_cant = ${cant}, pe_costo_tot = ${NumberFormat2((cant*c.GetString("PE_COSTOU")), 1, 2, 2, False)}, pe_tipo = '${tipoVenta}' where pe_cedis = '${cedis}' and pe_proid = '${prodId}' and pe_cliente = '${clienteId}' "$)
Starter.skmt.ExecNonQuery($"update pedido set pe_cant = ${cant}, pe_costou = ${costoU}, pe_costo_tot = ${NumberFormat2((cant*c.GetString("PE_COSTOU")), 1, 2, 2, False)}, pe_tipo = '${tipoVenta}' where pe_cedis = '${cedis}' and pe_proid = '${prodId}' and pe_cliente = '${clienteId}' "$)
If cedis <> "DUR" Then Starter.skmt.ExecNonQuery($"update ${traeTablaProds(tipoVenta)} set cat_gp_almacen = cat_gp_almacen - (${difCant}) where cat_gp_id = '${prodId}' "$)
If cant = 0 Then
LogColor($"BORRAMOS PRODUCTO - ${prodId}"$, Colors.Red)
@@ -1509,6 +1509,13 @@ Sub borraPedidoClienteActual As String
thisC.Position=i
If thisC.GetString("PE_CEDIS") <> "DUR" Then
Starter.skmt.ExecNonQuery2($"update ${traeTablaProds(Starter.tipov)} set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?"$, Array As Object(thisC.GetString("PE_CANT"), thisC.GetString("PE_PROID")))
'Codigo para regresar dinero al presupuesto de BONIFICACIONES (Trend Spending)
Private precio0 As String = traePrecio(thisC.GetString("PE_PROID"))
Private precioConDesc As String = (B4XPages.MainPage.cliente.kh.traeDescXSku(traeCliente, thisC.GetString("PE_PROID"))/100)*precio0
Log(precioConDesc)
Log(">>>>>>>>>>>>> " & (precioConDesc * thisC.GetString("PE_CANT")))
modTrendSpending("suma", "bonificaciones", (precioConDesc * thisC.GetString("PE_CANT")))
'Termina Trend Spending
End If
' Starter.skmt.ExecNonQuery2("INSERT INTO INVENT_X_ENVIAR (ALMACEN , PROID , CANTIDAD ) VALUES(?,?,?) ", Array As Object (traeAlmacen, thisC.GetString("PE_PROID"),thisC.GetString("PE_CANT")* -1))
Next
@@ -1519,6 +1526,9 @@ Sub borraPedidoClienteActual As String
If thisC.RowCount < 1 Then Starter.skmt.ExecNonQuery("delete from pedido_cliente where pc_cliente in (Select CUENTA from cuentaa)")
Log("###### delete from pedido_cliente - " & traeCliente)
Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)")
Return 1
End Sub
@@ -1708,11 +1718,11 @@ End Sub
'Mandar fecha de sync(sysdate)
Sub bitacora(fechab As String, usuariob As String, almacenb As String, rutab As String, eventob As String, clienteb As String, iniciob As String, finb As String, latitudb As String, longitudb As String, precision As String, motivonoventa As String, motivonovisita As String )
Log(motivonovisita)
Log("bitacora")
If Starter.Logger Then Log("bitacora")
Private cmd As DBCommand
cmd.Initialize
cmd.Name = "mandaBitacora3"
Log("BITACORA3")
If Starter.Logger Then Log("BITACORA3")
Private nombreCliente As String = traeNombreCliente(clienteb)
If eventob = "Llega a almacen" Then
nombreCliente = "BOLETA"
@@ -1759,7 +1769,7 @@ Sub bitacora(fechab As String, usuariob As String, almacenb As String, rutab As
Starter.reqManager.ExecuteCommand(cmd , "mandaBitacora")
End If
End If
Log("Mandamos bitacora")
If Starter.Logger Then Log("Mandamos bitacora")
End Sub
'En geocerca si mete la contraseña poner 0 en precision gps y si esta dentro de los 50 mts poner 1 y 2 para eventos que no lo ocupen
@@ -2046,3 +2056,114 @@ Sub comparaVersiones(versionMinima As String, versionActual As String) As Int
Return 0
End Sub
' Regresa un mapa con el tipo, monto permitido semanal y el acumulado hasta el día anterior:
' ej:
' - RMI=1500,0
' - DESCUENTOS=1500,0
' - BONIFICACIONES=1500,480
Sub traeInfoTrendSpending As Map
Private semana As Int = 0
Private HIST_TSS_SEMANA As String
Private HIST_TSS_SEMANA_ACUM As String
Private m As Map
m.Initialize
Private c As Cursor = Starter.skmt.ExecQuery($"select cat_va_valor from cat_variables where cat_va_descripcion = 'SEM_CAL_LABORAL'"$)
If c.RowCount > 0 Then
c.Position = 0
semana = c.GetInt("CAT_VA_VALOR")
End If
If semana > 0 Then
c = Starter.skmt.ExecQuery($"select HIST_TSS_TIPO, HIST_TSS_SEMANA${semana}, HIST_TSS_SEMANA${semana}_ACUM from HIST_TREND_SPENDING_SEMANAL"$)
If c.RowCount > 0 Then
For i = 0 To c.RowCount - 1
c.Position = i
HIST_TSS_SEMANA = c.GetString($"HIST_TSS_SEMANA${semana}"$)
HIST_TSS_SEMANA_ACUM = c.GetString($"HIST_TSS_SEMANA${semana}_ACUM"$)
If c.GetString("HIST_TSS_TIPO") = "RMI" Then
m.Put("RMI", HIST_TSS_SEMANA & "," & HIST_TSS_SEMANA_ACUM)
else if c.GetString("HIST_TSS_TIPO") = "DESCUENTOS" Then
m.Put("DESCUENTOS", HIST_TSS_SEMANA & "," & HIST_TSS_SEMANA_ACUM)
else if c.GetString("HIST_TSS_TIPO") = "BONIFICACIONES" Then
m.Put("BONIFICACIONES", HIST_TSS_SEMANA & "," & HIST_TSS_SEMANA_ACUM)
End If
Next
End If
End If
Return m
End Sub
' Modifica el acumulado del Trend Speding, le "suma" o "resta" al presupuesto especificado (RMI, BONIFICACIONES o DESCUENTOS)
Sub modTrendSpending(accion As String, tipo As String, monto As String)
Private HIST_TSS_SEMANA As String
Private HIST_TSS_SEMANA_ACUM As String
Private acumulado As String = "0"
If Starter.semana = 0 Then
Private c As Cursor = Starter.skmt.ExecQuery($"select cat_va_valor from cat_variables where cat_va_descripcion = 'SEM_CAL_LABORAL'"$)
If c.RowCount > 0 Then
c.Position = 0
Starter.semana = c.GetInt("CAT_VA_VALOR")
End If
End If
HIST_TSS_SEMANA = $"HIST_TSS_SEMANA${Starter.semana}"$
HIST_TSS_SEMANA_ACUM = $"HIST_TSS_SEMANA${Starter.semana}_ACUM"$
Private d As Cursor = Starter.skmt.ExecQuery($"select acumulado from TREND_SPENDING where tipo = '${tipo.ToUpperCase}'"$)
If d.RowCount > 0 Then
d.Position = 0
acumulado = d.GetString("ACUMULADO")
End If
Log("acumulado:" & acumulado & " | monto: " & monto)
Private c As Cursor = Starter.skmt.ExecQuery($"select HIST_TSS_TIPO, ${HIST_TSS_SEMANA} as disponible, ${HIST_TSS_SEMANA_ACUM} as acumulado from HIST_TREND_SPENDING_SEMANAL where HIST_TSS_TIPO = '${tipo.ToUpperCase}'"$)
If accion = "resta" Then
If c.RowCount > 0 Then
c.Position = 0
If tipo.ToUpperCase = "BONIFICACIONES" Then
Private nuevaBonificacion As String = NumberFormat2((acumulado + monto), 1, 2, 2, False)
LogColor($"Nueva bonificacion = ${nuevaBonificacion}"$, Colors.Magenta)
Starter.skmt.ExecNonQuery($"delete from TREND_SPENDING where tipo = '${tipo.ToUpperCase}' "$)
Starter.skmt.ExecNonQuery($"insert into TREND_SPENDING (tipo, acumulado) values ('${tipo.ToUpperCase}', '${nuevaBonificacion}')"$)
End If
End If
else if accion = "suma" Then
If c.RowCount > 0 Then
c.Position = 0
If tipo.ToUpperCase = "BONIFICACIONES" Then
Private nuevaBonificacion As String = NumberFormat2((acumulado - monto), 1, 2, 2, False)
LogColor($"Nueva bonificacion = ${nuevaBonificacion}"$, Colors.Magenta)
Starter.skmt.ExecNonQuery($"delete from TREND_SPENDING where tipo = '${tipo.ToUpperCase}' "$)
Starter.skmt.ExecNonQuery($"insert into TREND_SPENDING (tipo, acumulado) values ('${tipo.ToUpperCase}', '${nuevaBonificacion}')"$)
End If
End If
End If
End Sub
Sub traeAcumuladoHoyTS(tipo As String) As String
Private HIST_TSS_SEMANA As String
Private HIST_TSS_SEMANA_ACUM As String
Private acumulado As String = "0"
If Starter.semana = 0 Then
Private c As Cursor = Starter.skmt.ExecQuery($"select cat_va_valor from cat_variables where cat_va_descripcion = 'SEM_CAL_LABORAL'"$)
If c.RowCount > 0 Then
c.Position = 0
Starter.semana = c.GetInt("CAT_VA_VALOR")
End If
End If
HIST_TSS_SEMANA = $"HIST_TSS_SEMANA${Starter.semana}"$
HIST_TSS_SEMANA_ACUM = $"HIST_TSS_SEMANA${Starter.semana}_ACUM"$
Private d As Cursor = Starter.skmt.ExecQuery($"select acumulado from TREND_SPENDING where tipo = '${tipo.ToUpperCase}'"$)
If d.RowCount > 0 Then
d.Position = 0
acumulado = d.GetString("ACUMULADO")
End If
Logcolor("Acumulado hoy: " & acumulado, Colors.Blue)
Return NumberFormat2(acumulado, 1, 2, 2, False)
End Sub
Sub traePrecio(id As String) As String
Private precio As String = "0"
Private c As Cursor = Starter.skmt.ExecQuery($"select cat_gp_precio from ${traeTablaProds(Starter.tipov)} where cat_gp_id = '${id}'"$)
If c.RowCount > 0 Then
c.Position = 0
precio = c.GetString("CAT_GP_PRECIO")
End If
Return precio
End Sub

View File

@@ -189,7 +189,7 @@ Public Sub StopFLP
End Sub
Sub flp_LocationChanged (Location1 As Location)
LogColor($"Location changed lat=${Location1.Latitude}, lon=${Location1.Longitude}, Acc=${Location1.Accuracy}, SD=$1.0{actualLR.GetSmallestDisplacement}"$, Colors.green)
If starter.Logger Then LogColor($"Location changed lat=${Location1.Latitude}, lon=${Location1.Longitude}, Acc=${Location1.Accuracy}, SD=$1.0{actualLR.GetSmallestDisplacement}"$, Colors.green)
UUGCoords = Location1
' If logger Then Log("SmallestDisplacement="&actualLR.GetSmallestDisplacement)
' CallSub2(Starter, "GPS_LocationChanged", Location1)

View File

@@ -1300,4 +1300,16 @@ Sub motivoNoVisitaActivo As Boolean
If nv.GetString("valor") = "1" Then rnv = True
End If
Return rnv
End Sub
' Trae el precio desde la base de datos
Sub traePrecio(id As String) As String
Private precio As String = "1000000000"
Private c As Cursor = Starter.skmt.ExecQuery($"select CAT_GP_PRECIO from ${Subs.traeTablaProds(Starter.tipov)} where cat_gp_id = '${id}'"$)
If c.RowCount > 0 Then
c.Position = 0
precio = c.GetString("CAT_GP_PRECIO")
End If
Log("EL PRECIO = " & precio)
Return precio
End Sub