mirror of
https://github.com/KeymonSoft/Kelloggs_v4.git
synced 2026-04-18 02:29:13 +00:00
Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| e6455d8147 | |||
| ae8ac63b1d | |||
| d54ebd7994 | |||
| 42eeb55fe5 | |||
| 672953f0b4 | |||
| 32ba186a60 | |||
| e639848418 | |||
| 73877991ba | |||
| 33a52d7074 | |||
| ce2759012a | |||
| f4ef7e90d0 | |||
| 78667e65f1 | |||
| c034fdd518 | |||
| 7211852abf |
@@ -117,6 +117,10 @@ Sub Class_Globals
|
||||
Dim intentUsado As Boolean = False
|
||||
Private p_importarBDWA As Panel
|
||||
Private cb_importarBDWA As CheckBox
|
||||
' Type TResultado(Tag As String, Success As Boolean, resultado As DBResult, ErrorMessage As String)
|
||||
Private Label4 As Label
|
||||
Private clicked As Int = 0
|
||||
Dim linker As C_deviceLinker
|
||||
End Sub
|
||||
|
||||
Public Sub Initialize
|
||||
@@ -129,6 +133,7 @@ End Sub
|
||||
|
||||
'This event will be called once, before the page becomes visible.
|
||||
Private Sub B4XPage_Created (Root1 As B4XView)
|
||||
Log(">>>>>> CREATE - INICIAMOS MAIN PAGE <<<<<<<<<")
|
||||
If Not(Starter.Logger) Then logger = False
|
||||
Dim sDate, sTime As String
|
||||
DateTime.DateFormat = "yyyyMMdd"
|
||||
@@ -157,8 +162,12 @@ 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_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)")
|
||||
Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS VERSIONES (VERSION TEXT, FECHA TEXT)")
|
||||
''' FIN DOE
|
||||
kh.agregaColumna(Starter.skmt, "kmt_info", "IMPRESION", "INTEGER")
|
||||
kh.agregaColumna(Starter.skmt, "kmt_info", "CREDITO", "INTEGER")
|
||||
kh.agregaColumna(Starter.skmt, "USUARIOA", "FECHA", "TEXT")
|
||||
kh.agregaColumna(Starter.skmt, "PROMOS_COMP", "CAT_PA_PORCENTAJE_PAQUETE", "TEXT")
|
||||
kh.agregaColumna(Starter.skmt, "PROMOS_COMP", "CAT_PA_PRECIO1", "TEXT")
|
||||
@@ -166,6 +175,10 @@ Private Sub B4XPage_Created (Root1 As B4XView)
|
||||
kh.agregaColumna(Starter.skmt, "PROMOS_COMP", "CAT_PA_TIPO_PROMONTO", "TEXT")
|
||||
kh.agregaColumna(Starter.skmt, "CAT_GUNAPROD", "CAT_GP_TIPOPROD2", "TEXT")
|
||||
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")
|
||||
kh.agregaColumna(Starter.skmt, "CAT_DETALLES_PAQ", "CAT_DP_PRECIOB", "TEXT")
|
||||
Root = Root1
|
||||
' Root.LoadLayout("MainPage")
|
||||
Root.LoadLayout("login")
|
||||
@@ -204,7 +217,7 @@ Private Sub B4XPage_Created (Root1 As B4XView)
|
||||
ruta = Starter.ruta
|
||||
Starter.tiempos.Initialize
|
||||
kh.guardaAppInfo
|
||||
|
||||
Log(111)
|
||||
'Revisamos si se disparo el intent de cargar la base de datos desde WhatApp.
|
||||
If kh.traeUsarIntentBDWA Then kh.importaBDDesdeWhatsApp
|
||||
|
||||
@@ -304,6 +317,7 @@ Private Sub B4XPage_Created (Root1 As B4XView)
|
||||
Msgbox("No se puede crear el archivo de foto","Aviso") 'ignore
|
||||
End Try
|
||||
End If
|
||||
Log(222)
|
||||
' Dim ph As Phone 'Get Id Device
|
||||
' Dim DeviceID As String = Starter.ph.GetSettings("android_id").ToUpperCase
|
||||
' If logger Then Log($"Marca: ${Starter.ph.manufacturer}, Modelo: ${Starter.ph.model}"$)
|
||||
@@ -338,7 +352,7 @@ Private Sub B4XPage_Created (Root1 As B4XView)
|
||||
Else
|
||||
ToastMessageShow("Sin permisos para GPS", True)
|
||||
End If
|
||||
Log("***********************************************")
|
||||
Log("33***********************************************33")
|
||||
MES1.Initialize(Me, "MES1")
|
||||
' Log("SDK: " & device.SdkVersion)
|
||||
' Get the device SDK version
|
||||
@@ -368,7 +382,7 @@ Private Sub B4XPage_Created (Root1 As B4XView)
|
||||
End If
|
||||
Log(MES1.IsInitialized)
|
||||
Log(MES1.HasPermission)
|
||||
Log("***********************************************")
|
||||
Log("44***********************************************44")
|
||||
MES1.Initialize(Me, "MES1")
|
||||
' Log("Permisos BT: " & rp.Check("android.permission.BLUETOOTH_CONNECT"))
|
||||
' Log("REVISAMOS PERMISOS DE BT")
|
||||
@@ -381,8 +395,11 @@ Private Sub B4XPage_Created (Root1 As B4XView)
|
||||
End Sub
|
||||
|
||||
Sub B4XPage_Appear
|
||||
Log(">>>>>> INICIAMOS MAIN PAGE <<<<<<<<<")
|
||||
Log(DateTime.GetDayOfWeek(DateTime.Now))
|
||||
Log(">>>>>> APPEAR - INICIAMOS MAIN PAGE <<<<<<<<<")
|
||||
linker.Initialize(Me, "Linker", True)
|
||||
clicked = 0
|
||||
If Not(MES1.IsInitialized) Then MES1.Initialize(Me, "MES1")
|
||||
' Log(DateTime.GetDayOfWeek(DateTime.Now))
|
||||
kh.RD_Init
|
||||
kh.SetButtonTintList(cb_geocerca, Colors.LightGray, Colors.RGB(43, 154, 211))
|
||||
kh.SetButtonTintList(cb_cartaPorte, Colors.LightGray, Colors.RGB(43, 154, 211))
|
||||
@@ -423,19 +440,19 @@ Sub B4XPage_Appear
|
||||
If c.GetString("CUANTOS") = 0 Then
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("MACIMP","0"))
|
||||
End If
|
||||
D = Starter.skmt.ExecQuery("select COUNT(*) AS CUANTOS from version")
|
||||
D.Position = 0
|
||||
If D.GetString("CUANTOS") > 0 Then
|
||||
c = Starter.skmt.ExecQuery("select NOVERSION from version")
|
||||
c.Position = 0
|
||||
If c.GetString("NOVERSION") = "2.1" Then
|
||||
Starter.skmt.ExecNonQuery("delete from VERSION")
|
||||
End If
|
||||
c.Close
|
||||
End If
|
||||
D.Close
|
||||
D = Starter.skmt.ExecQuery("select COUNT(*) AS CUANTOS from version")
|
||||
D.Position = 0
|
||||
' D = Starter.skmt.ExecQuery("select COUNT(*) AS CUANTOS from version")
|
||||
' D.Position = 0
|
||||
' If D.GetString("CUANTOS") > 0 Then
|
||||
' c = Starter.skmt.ExecQuery("select NOVERSION from version")
|
||||
' c.Position = 0
|
||||
' If c.GetString("NOVERSION") = "2.1" Then
|
||||
' Starter.skmt.ExecNonQuery("delete from VERSION")
|
||||
' End If
|
||||
' c.Close
|
||||
' End If
|
||||
' D.Close
|
||||
' D = Starter.skmt.ExecQuery("select COUNT(*) AS CUANTOS from version")
|
||||
' D.Position = 0
|
||||
' If D.GetString("CUANTOS") > 0 Then
|
||||
' c = Starter.skmt.ExecQuery("select NOVERSION from version")
|
||||
' c.Position = 0
|
||||
@@ -450,12 +467,14 @@ Sub B4XPage_Appear
|
||||
cmd.Name = "select_fecha"
|
||||
' cmd.Parameters = Array As Object(Null)
|
||||
reqManager.ExecuteQuery(cmd , 0, "fecha")
|
||||
Log("############### APPEAR PAGE ####################")
|
||||
Log("############### PAGE_APPEAR ####################")
|
||||
Log(MES1.IsInitialized)
|
||||
If MES1.IsInitialized Then
|
||||
LogColor("Permisos de almacenamiento: " & MES1.HasPermission, Colors.Magenta)
|
||||
If MES1.HasPermission Then kh.revisaSiExisteRespaldo
|
||||
' If MES1.HasPermission Then kh.revisaSiExisteRespaldo '' Se comenta causa el error de que en el primer cliente,al guardar la venta se trabe la aplicacion!!
|
||||
End If
|
||||
DateTime.DateFormat = "yyyy-MM-dd HH:mm:ss"
|
||||
Starter.skmt.ExecNonQuery($"insert into versiones (version, fecha) values ('${Application.VersionName}', '${DateTime.Date(DateTime.Now)}')"$)
|
||||
End Sub
|
||||
|
||||
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||
@@ -472,8 +491,8 @@ Sub Entrar_Click
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO USUARIOA VALUES (?,?,?)", Array As Object(user.Text, pass.Text, DateTime.Date(DateTime.Now)))
|
||||
Starter.skmt.ExecNonQuery("delete from cat_almacen")
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_ALMACEN(ID_ALMACEN) VALUES (?)", Array As Object (pass.Text))
|
||||
Starter.skmt.ExecNonQuery("delete from VERSION")
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO VERSION(NOVERSION) VALUES (?)", Array As Object ("2.95"))
|
||||
' Starter.skmt.ExecNonQuery("delete from VERSION")
|
||||
' Starter.skmt.ExecNonQuery2("INSERT INTO VERSION(NOVERSION) VALUES (?)", Array As Object ("2.95"))
|
||||
B4XPages.ShowPage("Principal")
|
||||
End If
|
||||
' c=Starter.skmt.ExecQuery2("select count(*) as EXISTE1 from usuarioa where usuario = ?", Array As String(user.Text))
|
||||
@@ -544,6 +563,38 @@ Sub JobDone(Job As HttpJob)
|
||||
Next
|
||||
paso1 = 1
|
||||
End If
|
||||
'BYPASS EXTRAS
|
||||
If result.Tag = "traeBypass" Then 'query tag
|
||||
If result.Rows.Size = 1 Then ' Si hay contraseña de bypass
|
||||
For Each records() As Object In result.Rows
|
||||
Starter.passSupervisor = records(result.Columns.Get("BYPASS"))
|
||||
Next
|
||||
Log("CONTRASEÑA VALIDA " & Starter.passSupervisor)
|
||||
b_importarBD.Visible = True
|
||||
p_importarBDWA.Visible = True
|
||||
Starter.passSupervisor = user.Text.Trim
|
||||
Else
|
||||
Log("CONTRASEÑA INVALIDA")
|
||||
b_importarBD.Visible = False
|
||||
p_importarBDWA.Visible = False
|
||||
End If
|
||||
End If
|
||||
'BYPASS IMPORTAR BD WA
|
||||
If result.Tag = "bypass" Then 'query tag
|
||||
If result.Rows.Size = 1 Then ' Si hay contraseña de bypass
|
||||
Log("CONTRASEÑA VALIDA " & Starter.passSupervisor)
|
||||
b_importarBD.Visible = True
|
||||
p_importarBDWA.Visible = True
|
||||
Starter.passSupervisor = user.Text.Trim
|
||||
Else
|
||||
Log("CONTRASEÑA INVALIDA")
|
||||
b_importarBD.Visible = False
|
||||
p_importarBDWA.Visible = False
|
||||
End If
|
||||
End If
|
||||
If result.tag = "traeConexion" Then
|
||||
Subs.logJobDoneResultados(result)
|
||||
End If
|
||||
End If
|
||||
Job.Release
|
||||
End If
|
||||
@@ -640,8 +691,10 @@ Sub i_engranes_Click
|
||||
Label1 = ListView1.SingleLineLayout.Label
|
||||
Label1.TextSize = 20
|
||||
Label1.TextColor = Colors.Black
|
||||
If user.Text = "KMTS1" Then ListView1.AddSingleLine("http://10.0.0.205:1781")
|
||||
ListView1.AddSingleLine("http://keymon.lat:1781")
|
||||
et_geocerca.Text = "."
|
||||
et_geocerca.Text = ""
|
||||
If user.Text = "KMTS1" Then ListView1.AddSingleLine("http://192.99.93.204:1781")
|
||||
ListView1.AddSingleLine("http://keymon.net:1781")
|
||||
c = Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SERVER"))
|
||||
c.Position = 0
|
||||
E_SERVER.text = c.GetString("CAT_VA_VALOR")
|
||||
@@ -651,13 +704,12 @@ Sub i_engranes_Click
|
||||
Panel1.Top = (Root.Height/2) - (Panel1.Height/2)
|
||||
Panel1.Elevation = 100
|
||||
Panel1.BringToFront
|
||||
If user.Text.Trim = "KMTS1" Then
|
||||
b_importarBD.Visible = True
|
||||
p_importarBDWA.Visible = True
|
||||
Else
|
||||
b_importarBD.Visible = False
|
||||
p_importarBDWA.Visible = False
|
||||
End If
|
||||
Dim cmd As DBCommand
|
||||
cmd.Initialize
|
||||
cmd.Name = "selectBypass" ' Trae la contraseña desde la tabla "BYPASS" en web. (La ultima es KMT2025)
|
||||
cmd.Parameters = Array As Object(user.Text.Trim)
|
||||
reqManager.ExecuteQuery(cmd , 0, "bypass")
|
||||
' Log($"${Starter.DBReqServer}, ${user.Text}, ${Subs.traeAlmacen}, ${Subs.traeRuta}"$)
|
||||
End Sub
|
||||
|
||||
Private Sub i_engranes_LongClick
|
||||
@@ -665,6 +717,52 @@ Private Sub i_engranes_LongClick
|
||||
' Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
|
||||
' Subs.copiaDB(Result)
|
||||
' Dim x As Int = "a"
|
||||
Dim reqManagerW As DBRequestManagerW
|
||||
reqManagerW.Initialize
|
||||
cmd.Initialize
|
||||
|
||||
cmd.Name = "select_usuario_guna_KELL"
|
||||
cmd.Parameters = Array As Object(user.Text, pass.Text)
|
||||
reqManagerW.ExecuteQuery(Starter.DBReqServer, cmd, Me, "elUsuario")
|
||||
Wait For elUsuario_Completed (res1 As TResultado)
|
||||
Log("tag: " & res1.tag & " Success: " & res1.Success)
|
||||
If res1.Success Then
|
||||
Subs.logJobDoneResultados(res1.resultado)
|
||||
Else
|
||||
Log(res1.ErrorMessage)
|
||||
End If
|
||||
|
||||
cmd.Name = "select_version_KELL"
|
||||
cmd.Parameters = Array()
|
||||
reqManagerW.ExecuteQuery(Starter.DBReqServer, cmd, Me, "laVersion")
|
||||
Wait For laVersion_Completed (res2 As TResultado)
|
||||
Log("tag: " & res2.tag & " Success: " & res2.Success)
|
||||
If res2.Success Then
|
||||
Subs.logJobDoneResultados(res2.resultado)
|
||||
Else
|
||||
Log(res2.ErrorMessage)
|
||||
End If
|
||||
|
||||
cmd.Name = "delete_geoPass"
|
||||
cmd.Parameters = Array As Object( Subs.traeAlmacen, Subs.traeRuta)
|
||||
reqManagerW.ExecuteCommand(Starter.DBReqServer, cmd, Me, "borraGeoPass")
|
||||
Wait For borraGeoPass_Completed (res3 As TResultado)
|
||||
Log("tag: " & res3.tag & " Success: " & res3.Success)
|
||||
If res3.Success Then
|
||||
Subs.logJobDoneResultados(res3.resultado)
|
||||
Else
|
||||
Log(res3.ErrorMessage)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Sub elUsuario_Completed (res As DBResult)
|
||||
Log("abc: " & res.tag)
|
||||
Log("wrapper: " & res)
|
||||
End Sub
|
||||
|
||||
Sub laVersion_Completed (res As DBResult)
|
||||
Log("def: " & res.tag)
|
||||
Log("wrapper2: " & res)
|
||||
End Sub
|
||||
|
||||
Sub B_SERVER_Click
|
||||
@@ -853,10 +951,10 @@ End Sub
|
||||
|
||||
Private Sub et_geocerca_TextChanged (Old As String, New As String)
|
||||
Private x As Cursor = Starter.skmt.ExecQuery($"select CAT_VA_VALOR from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'FINDIA_PASS'"$)
|
||||
Log(New)
|
||||
Log(New & "|" & Starter.passSupervisor)
|
||||
If x.RowCount > 0 Then
|
||||
x.Position = 0
|
||||
If New = x.GetString("CAT_VA_VALOR") Or New = "KMTS1" Then
|
||||
If New = x.GetString("CAT_VA_VALOR") Or New = Starter.passSupervisor Then
|
||||
cb_geocerca.Enabled = True
|
||||
cb_cartaPorte.Enabled = True
|
||||
et_maxClientesNuevos.Enabled = True
|
||||
@@ -873,7 +971,7 @@ Private Sub et_geocerca_TextChanged (Old As String, New As String)
|
||||
l_maxClientesNuevos.TextColor = Colors.LightGray
|
||||
et_maxClientesNuevos.TextColor = Colors.LightGray
|
||||
End If
|
||||
Else if New = "KMTS1" Then
|
||||
Else if New = Starter.passSupervisor Then
|
||||
cb_geocerca.Enabled = True
|
||||
cb_cartaPorte.Enabled = True
|
||||
et_maxClientesNuevos.Enabled = True
|
||||
@@ -935,6 +1033,68 @@ Sub GetFecha
|
||||
End Sub
|
||||
|
||||
Private Sub ImageView1_LongClick
|
||||
Log("###### TRAEMOS FECHA #######")
|
||||
GetFecha
|
||||
' Log("###### TRAEMOS FECHA #######")
|
||||
' GetFecha
|
||||
|
||||
' Log("traeConexion")
|
||||
' Private reqManagerX As DBRequestManager
|
||||
' reqManagerX.Initialize(Me, "http://keymon.net:9010")
|
||||
' Private cmdX As DBCommand
|
||||
' cmdX.Initialize
|
||||
' cmdX.Name = "update_usuario_guna_nobajas"
|
||||
' cmdX.Parameters = Array As Object("CDAZA")
|
||||
' reqManagerX.Executequery(cmdX, 0, "traeConexion")
|
||||
|
||||
If Subs.traeAlmacen <> "" Then
|
||||
linker.VerifyAndLinkDevice(Subs.traeAlmacen, Subs.traeRuta)
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Sub ponUsuario
|
||||
Private cu As Cursor = Starter.skmt.ExecQuery("select USUARIO from USUARIOA")
|
||||
If cu.RowCount > 0 Then
|
||||
cu.Position = 0
|
||||
If cu.GetString("USUARIO") <> "" Then user.Text = cu.GetString("USUARIO")
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub Label4_Click
|
||||
clicked = clicked + 1
|
||||
Log(clicked)
|
||||
If clicked >= 5 Then
|
||||
clicked = 0
|
||||
ponUsuario
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Sub Linker_Response(Status As String) ' << AÑADE ESTE SUB [New Query]
|
||||
If Starter.Logger Then LogColor($"Respuesta de DeviceLinker para la verificación del dispositivo: ${Status}"$, Colors.Magenta) '
|
||||
Select Status
|
||||
Case "UUID_ERROR"
|
||||
Log("Error interno al obtener el identificador único del dispositivo.")
|
||||
ToastMessageShow("Error interno al obtener el identificador único del dispositivo.", True)
|
||||
Case "HTTP_ERROR"
|
||||
LogColor("Error HTTP al verificar el dispositivo: " & linker.lastJobDoneError, Colors.Red)
|
||||
ToastMessageShow("Error de conexión al servidor durante la verificación del dispositivo.", True)
|
||||
Case "SERVER_LOGIC_ERROR"
|
||||
Log("El servidor no proporcionó un estado de verificación válido. Contacte a soporte.")
|
||||
ToastMessageShow("El servidor no proporcionó un estado de verificación válido. Contacte a soporte.", True)
|
||||
Case "OK"
|
||||
Log("Dispositivo ligado y verificado exitosamente.")
|
||||
ToastMessageShow("Dispositivo verificado y ligado correctamente.", False)
|
||||
' Aquí puedes añadir lógica adicional si la verificación es exitosa, por ejemplo, habilitar ciertos botones o continuar con el flujo normal.
|
||||
Case "NO_REGISTRADO"
|
||||
Log("Dispositivo NO registrado.")
|
||||
ToastMessageShow("Dispositivo NO registrado.", False)
|
||||
Case "REGISTRO_NUEVO"
|
||||
Log("¡¡Registro nuevo!!")
|
||||
ToastMessageShow("¡¡Registro nuevo!!", False)
|
||||
Case "YA_REGISTRADO"
|
||||
Log("¡¡El dispositivo ya esta registrado con otra ruta!!")
|
||||
ToastMessageShow("¡¡El dispositivo ya esta registrado con otra ruta!!", True)
|
||||
Case Else ' Otros estados que tu servidor pueda devolver (ej. "UNAUTHORIZED", "PENDING_APPROVAL")
|
||||
Log($"Estado de verificación del dispositivo: ${Status}"$)
|
||||
ToastMessageShow($"Verificación del dispositivo: ${Status}"$, True)
|
||||
' Puedes decidir si bloquear la funcionalidad o mostrar un mensaje específico según el estado.
|
||||
End Select
|
||||
End Sub
|
||||
@@ -405,6 +405,7 @@ End Sub
|
||||
Sub B4XPage_Appear
|
||||
indicePregunta = 0
|
||||
b_noVenta.Enabled = False
|
||||
Log("NoVenta False")
|
||||
' Log(kh.traeTotalCliente)
|
||||
If kh.traeTotalCliente = 0 Then b_noVenta.Enabled = True
|
||||
clienteId = kh.traeCliente
|
||||
@@ -414,6 +415,7 @@ Sub B4XPage_Appear
|
||||
' Log($"TOTAL VENTA: ${kh.traeTotalCliente}"$)
|
||||
B_VENTA.Visible = False
|
||||
b_noVenta.Visible = False
|
||||
Log("NoVenta False")
|
||||
If clienteId.StartsWith("N") Then b_noVenta.Visible = False
|
||||
l_doe.Text = "HAY PEDIDO DOE"
|
||||
' Log(Starter.rp.Check("android.permission.BLUETOOTH_CONNECT"))
|
||||
@@ -422,7 +424,7 @@ Sub B4XPage_Appear
|
||||
usarGeocerca = kh.traeUsarGeocerca
|
||||
|
||||
'Para el almacen 12 (GDL) no se usa la geocerca
|
||||
If kh.traeAlmacen = 12 Then usarGeocerca = False
|
||||
' If kh.traeAlmacen = 12 Then usarGeocerca = False
|
||||
|
||||
' Log(Subs.traeUltimaActividadBD)
|
||||
c = Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("MACIMP"))
|
||||
@@ -545,9 +547,13 @@ Sub B4XPage_Appear
|
||||
End If
|
||||
|
||||
If kh.traeTotalCliente < 0.01 And kh.traeTotalClienteDOE < 0.01 Then
|
||||
If Not(clienteId.StartsWith("N")) And la_cuenta.Text <> "0" Then b_noVenta.Visible = True 'Ni cliente nuevo, ni abordo.
|
||||
If Not(clienteId.StartsWith("N")) And la_cuenta.Text <> "0" Then
|
||||
' b_noVenta.Visible = True 'Ni cliente nuevo, ni abordo. ... Si apagan el GPS, y este esta habilitado, les da tiempo de meter NoVenta aun estando fuera de la geocerca.
|
||||
' Log("NoVenta True")
|
||||
End If
|
||||
Else
|
||||
b_noVenta.Visible = False
|
||||
Log("NoVenta False")
|
||||
If la_cuenta.text = 0 Then
|
||||
CREDITO_DISPONIBLE = 10000000
|
||||
CREDITO = 0
|
||||
@@ -681,7 +687,10 @@ Sub B4XPage_Appear
|
||||
|
||||
c = Starter.skmt.ExecQuery("select count(*) as conNoVenta FROM NOVENTA WHERE NV_CLIENTE IN (Select CUENTA from cuentaa)")
|
||||
c.Position = 0
|
||||
If c.GetString("conNoVenta") = 1 Then b_noVenta.Visible = False 'Si ya tiene NoVenta, ocultamos el boton.
|
||||
If c.GetString("conNoVenta") = 1 Then
|
||||
b_noVenta.Visible = False 'Si ya tiene NoVenta, ocultamos el boton.
|
||||
Log("NoVenta False")
|
||||
End If
|
||||
c.Close
|
||||
Else
|
||||
RutaBoleta=Starter.rutaV
|
||||
@@ -757,13 +766,13 @@ Sub B4XPage_Appear
|
||||
Private cs As CSBuilder
|
||||
cs.Initialize
|
||||
l_doe.Text = cs.append($"Pedido DOE: $${kh.traeTotalClienteDOE}"$).color(Colors.red).append(CRLF).Append($"TOTAL PEDIDO: $${(kh.traeTotalCliente+kh.traeTotalClienteDOE)}"$).Popall
|
||||
' l_doe.Text = $"Pedido DOE: $${kh.traeTotalClienteDOE}${CRLF}TOTAL PEDIDO: $${(kh.traeTotalCliente+kh.traeTotalClienteDOE)}"$
|
||||
' l_doe.Text = $"Pedido DOE: $${kh.traeTotalClienteDOE}${CRLF}TOTAL PEDIDO: $${(kh.traeTotalCliente+kh.traeTotalClienteDOE)}"$
|
||||
End If
|
||||
If Subs.revisaImpresa Then Guardar.Visible = True
|
||||
|
||||
|
||||
'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")
|
||||
@@ -855,7 +864,7 @@ Sub GPS_LocationChanged (Location1 As Location)
|
||||
End If
|
||||
laDist= Location1.DistanceTo(ubicacionTienda)
|
||||
l_ubicacion2.Text = $"Dist: $1.0{laDist} mts."$
|
||||
If laDist > 300 Then
|
||||
If laDist > 50 Then ' Antes 300
|
||||
l_ubicacion2.TextColor = Colors.Red
|
||||
dentroDeGeocerca = False
|
||||
Else
|
||||
@@ -899,10 +908,14 @@ Sub GPS_LocationChanged (Location1 As Location)
|
||||
|
||||
' If gps_boton_doe = "1" And clienteConPromo = "0" And revisaExistenciasDOE Then b_whats.Visible = True
|
||||
If Not(clienteDeudor) Then B_VENTA.Visible = True 'Si el cliente no tiene adeudo, habilitamos el boton de venta
|
||||
If Not(clienteId.StartsWith("N")) And la_cuenta.Text <> "0" Then b_noVenta.Visible = True 'Ni cliente nuevo, ni abordo.
|
||||
If Not(clienteId.StartsWith("N")) And la_cuenta.Text <> "0" Then
|
||||
b_noVenta.Visible = True 'Ni cliente nuevo, ni abordo.
|
||||
' Log("NoVenta False")
|
||||
End If
|
||||
If Not(p_rechazoDOE.Visible) Then pedido_doe_muestra
|
||||
Else
|
||||
b_noVenta.Visible = False
|
||||
Log("NoVenta False")
|
||||
B_VENTA.Visible = False
|
||||
b_whats.Visible = False
|
||||
End If
|
||||
@@ -969,8 +982,8 @@ Sub Guardar_Click
|
||||
Starter.lat_gps = coords.Get(0)
|
||||
Starter.lon_gps = coords.Get(1)
|
||||
End If
|
||||
c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa")
|
||||
c.Position=0
|
||||
c = Starter.skmt.ExecQuery("Select CUENTA from cuentaa")
|
||||
c.Position = 0
|
||||
clie_id = c.GetString("CUENTA")
|
||||
usuario = Subs.traeUsuarioDeBD
|
||||
If l_total.Text <> Null And l_total.Text <> "null" And l_total.Text <> "0.0" Then Subs.ponImpreso(clie_id) 'Solo lo marcamos com impreso si tiene venta (total > 0).
|
||||
@@ -985,10 +998,10 @@ Sub Guardar_Click
|
||||
Log("Actualizamos gestion")
|
||||
Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)")
|
||||
End If
|
||||
s=Starter.skmt.ExecQuery("SELECT count(*) AS FOLIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
|
||||
s = Starter.skmt.ExecQuery("SELECT count(*) AS FOLIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
|
||||
s.Position = 0
|
||||
If s.GetString("FOLIO") > 0 Then
|
||||
c=Starter.skmt.ExecQuery("SELECT SUM(PE_FOLIO) AS FOLIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
|
||||
c = Starter.skmt.ExecQuery("SELECT SUM(PE_FOLIO) AS FOLIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
|
||||
c.Position = 0
|
||||
End If
|
||||
s.Close
|
||||
@@ -1021,7 +1034,7 @@ Sub Guardar_Click
|
||||
' B4XPages.ShowPageAndRemovePreviousPages("Principal")
|
||||
Guardar.SendToBack
|
||||
b_inicioFinVenta.Text = "TERMINAR VENTA"
|
||||
' Log("RESPALDO")
|
||||
Log("RESPALDO")
|
||||
kh.RD_respaldoBatch
|
||||
If la_cuenta.Text <> "0" Then 'Si es ABORDO, no mostramos el boton b_inicioFinVenta y regresamos a Principal.
|
||||
b_inicioFinVenta.Visible = True
|
||||
@@ -1214,7 +1227,7 @@ Sub Imprime_ticket
|
||||
Sleep(500)
|
||||
impresoraConectada = False
|
||||
End If
|
||||
' If Logger Then Log($"Impresora Conectada: ${Printer1.IsConnected}"$)
|
||||
Log($"Impresora Conectada: ${Printer1.IsConnected}"$)
|
||||
If la_cuenta.Text <> "0" And la_cuenta.Text <> "null" Then
|
||||
Starter.skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_TIPO = ? WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) ", Array As Object("VENTA"))
|
||||
Starter.skmt.ExecNonQuery("UPDATE kmt_info set IMPRESION = 1 where CAT_CL_CODIGO In (select cuenta from cuentaa)")''
|
||||
@@ -1280,7 +1293,14 @@ Sub Imprime_ticket
|
||||
' myimage= Printer1.PackImage(myimage)
|
||||
' Printer1.PrintImage(myimage)
|
||||
Sleep(1000)
|
||||
Private cr As Cursor = Starter.skmt.ExecQuery("select CREDITO from kmt_info where CAT_CL_CODIGO in (select cuenta from cuentaa)")
|
||||
Private formaPago As String = "Efectivo"
|
||||
If cr.RowCount > 0 Then
|
||||
cr.Position = 0
|
||||
If cr.GetInt("CREDITO") = 1 Then formaPago = "Crédito"
|
||||
End If
|
||||
If la_cuenta.Text = "0" Then
|
||||
LogColor(123, Colors.red)
|
||||
Try
|
||||
Printer1.WriteString("KELLOGG COMPANY MEXICO" & CRLF)
|
||||
Printer1.WriteString(sDate &" " & sTime & CRLF)
|
||||
@@ -1293,6 +1313,9 @@ Sub Imprime_ticket
|
||||
Printer1.WriteString("C.P.: " & la_cp.Text & CRLF)
|
||||
Printer1.WriteString("Entre calle1: " & l_entre1.Text & CRLF)
|
||||
Printer1.WriteString("Entre Calle2: " & l_entre2.Text & CRLF)
|
||||
LogColor("Entre Calle2: " & l_entre2.Text, Colors.red)
|
||||
' Printer1.WriteString("Forma de pago: " & formaPago & CRLF)
|
||||
' LogColor("Forma de pago: " & formaPago, Colors.red)
|
||||
Printer1.WriteString(" " & CRLF)
|
||||
Printer1.WriteString("------------------------------" & CRLF)
|
||||
Printer1.WriteString("PEDIDO" & CRLF)
|
||||
@@ -1384,6 +1407,9 @@ Sub Imprime_ticket
|
||||
s=Starter.skmt.ExecQuery2("select SUM(PE_CANT) AS TOTAL FROM PEDIDO WHERE PE_TIPO = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("ABORDO"))
|
||||
s.Position =0
|
||||
Private total4 As String = "0"
|
||||
|
||||
Log("|" & s.GetString("TOTAL") & "|")
|
||||
|
||||
If s.GetString("TOTAL") <> Null And IsNumber(s.GetString("TOTAL")) Then total4 = s.GetString("TOTAL")
|
||||
Sleep(400)
|
||||
Printer1.WriteString( Printer1.BOLD & "No. Productos: " & total4 & CRLF)
|
||||
@@ -1418,6 +1444,7 @@ Sub Imprime_ticket
|
||||
End Try
|
||||
Else
|
||||
Try
|
||||
' LogColor(456, Colors.red)
|
||||
DateTime.DateFormat = "yyyymmdd"
|
||||
sDate=DateTime.Date(DateTime.Now)
|
||||
Printer1.WriteString("KELLOGG COMPANY MEXICO" & CRLF)
|
||||
@@ -1436,6 +1463,9 @@ Sub Imprime_ticket
|
||||
Printer1.WriteString("C.P.: " & la_cp.Text & CRLF)
|
||||
Printer1.WriteString("Entre calle1: " & l_entre1.Text & CRLF)
|
||||
Printer1.WriteString("Entre Calle2: " & l_entre2.Text & CRLF)
|
||||
' LogColor("Entre Calle2: " & l_entre2.Text, Colors.red)
|
||||
Printer1.WriteString("Forma de pago: " & formaPago & CRLF)
|
||||
' LogColor("Forma de pago: " & formaPago, Colors.red)
|
||||
Printer1.WriteString(" " & CRLF)
|
||||
|
||||
''''''' PEDIDOS DOE
|
||||
@@ -1492,7 +1522,7 @@ Sub Imprime_ticket
|
||||
Private cantidad1 As String = "0"
|
||||
If s.GetString("CANTIDAD") <> Null And IsNumber(s.GetString("CANTIDAD")) Then
|
||||
cantidad1 = s.GetString("CANTIDAD")
|
||||
|
||||
Log("|" & cantidad1 & "|")
|
||||
Printer1.WriteString( "No. Productos: " & cantidad1 & CRLF)
|
||||
Printer1.WriteString("------------------------------" & CRLF)
|
||||
Printer1.WriteString("FIN PEDIDO DON TOÑO" & CRLF)
|
||||
@@ -1546,6 +1576,8 @@ Sub Imprime_ticket
|
||||
' sTotal2 = 0
|
||||
' End If
|
||||
sTotal2 = kh.traeTotalCliente
|
||||
Private cantidad1 As String = "0"
|
||||
If s.GetString("CANTIDAD") <> Null And IsNumber(s.GetString("CANTIDAD")) Then cantidad1 = s.GetString("CANTIDAD")
|
||||
s=Starter.skmt.ExecQuery2("select sum(PE_CANT) as CANTIDAD, SUM(PE_COSTO_TOT) AS TOTAL FROM PEDIDO WHERE PE_CEDIS <> PE_PROID AND PE_TIPO = ? and substr(pe_pronombre,1,6) = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("VENTA","CAMBIO"))
|
||||
s.Position = 0
|
||||
Private cant5 As String = s.GetString("CANTIDAD")
|
||||
@@ -1558,8 +1590,7 @@ Sub Imprime_ticket
|
||||
Sleep(200)
|
||||
Printer1.WriteString(Printer1.REVERSE & "===============================" & CRLF)
|
||||
Printer1.WriteString( Printer1.UNREVERSE & Printer1.BOLD & $"Sub Total Venta: $${NumberFormat2((sTotal2+(sTotal3 * -1)), 1, 2, 2, False)}"$ & CRLF)
|
||||
Private cantidad1 As String = "0"
|
||||
If s.GetString("CANTIDAD") <> Null And IsNumber(s.GetString("CANTIDAD")) Then cantidad1 = s.GetString("CANTIDAD")
|
||||
Log("|" & s.GetString("CANTIDAD") & "|" & cantidad1 & "|")
|
||||
Printer1.WriteString( Printer1.UNREVERSE & Printer1.BOLD & "No. Productos: " & cantidad1 & CRLF)
|
||||
Printer1.WriteString(CRLF)
|
||||
Sleep(200)
|
||||
@@ -1611,6 +1642,8 @@ Sub Imprime_ticket
|
||||
Printer1.WriteString(Printer1.UNREVERSE & Printer1.BOLD & "Sub Total CAMBIOS: $" & NumberFormat2(sTotal3, 1, 2, 2, False) & CRLF)
|
||||
Private cantidad2 As String = "0"
|
||||
If s.GetString("CANTIDAD") <> Null And IsNumber(s.GetString("CANTIDAD")) Then cantidad2 = s.GetString("CANTIDAD")
|
||||
' Log("|" & cantidad1 & "|")
|
||||
' Log("|" & s.GetString("CANTIDAD") & "|" & cantidad1 & "|")
|
||||
Printer1.WriteString( Printer1.UNREVERSE & Printer1.BOLD & "No. Productos: " & cantidad2 & CRLF)
|
||||
Printer1.WriteString(CRLF)
|
||||
s.Close
|
||||
@@ -2255,7 +2288,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 +2299,7 @@ Sub Cuestionario
|
||||
CUANTOS2 = s.GetString("CUANTOS2")
|
||||
If logger Then LogColor($"Hist:encuesta=${CUANTOS}, hist_encuesta2 = ${CUANTOS2}"$, Colors.Magenta)
|
||||
End If
|
||||
Log(CUANTOS & "|" & CUANTOS2)
|
||||
LogColor("----> HISTORICO ENCUESTA: " & CUANTOS & "|" & CUANTOS2, Colors.red)
|
||||
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
|
||||
@@ -4112,20 +4145,19 @@ Private Sub p_pideGeoPass_Click
|
||||
End Sub
|
||||
|
||||
Private Sub b_geopass_Click
|
||||
If et_geopass.Text.trim = "KMTS1" Then
|
||||
m_lat = Starter.lat_gps
|
||||
m_lon = Starter.lon_gps
|
||||
GPS_LocationChanged(Starter.ubicacionActual)
|
||||
Starter.skmt.ExecNonQuery($"update kmt_info set CAT_CL_LAT = '${Starter.lat_gps}', CAT_CL_LONG = '${Starter.lon_gps}' where CAT_CL_CODIGO = '${Subs.traeCliente}'"$)
|
||||
Else
|
||||
' If et_geopass.Text.trim = "KMTS1" Then
|
||||
' m_lat = Starter.lat_gps
|
||||
' m_lon = Starter.lon_gps
|
||||
' GPS_LocationChanged(Starter.ubicacionActual)
|
||||
' Starter.skmt.ExecNonQuery($"update kmt_info set CAT_CL_LAT = '${Starter.lat_gps}', CAT_CL_LONG = '${Starter.lon_gps}' where CAT_CL_CODIGO = '${Subs.traeCliente}'"$)
|
||||
' Else
|
||||
Dim cmd As DBCommand
|
||||
cmd.Initialize
|
||||
cmd.Name = "select_geoPass"
|
||||
cmd.Parameters = Array As Object(et_geopass.Text.Trim, Subs.traeAlmacen, Subs.traeRuta)
|
||||
reqManager.ExecuteQuery(cmd , 0, "traeGeoPass")
|
||||
cmd.Name = "selectBypass" ' Trae la contraseña desde la tabla "BYPASS" en web. (La ultima es KMT2025)
|
||||
cmd.Parameters = Array As Object(et_geopass.Text.Trim)
|
||||
reqManager.ExecuteQuery(cmd , 0, "bypass")
|
||||
Log($"${Starter.DBReqServer}, ${et_geopass.Text}, ${Subs.traeAlmacen}, ${Subs.traeRuta}"$)
|
||||
et_geopass.Text = ""
|
||||
End If
|
||||
' End If
|
||||
p_pideGeoPass.Visible = False
|
||||
ime.HideKeyboard
|
||||
' Log("Guardamos coords")
|
||||
@@ -4153,6 +4185,24 @@ Sub JobDone(Job As HttpJob)
|
||||
LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211110
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim result As DBResult = reqManager.HandleJob(Job)
|
||||
If result.Tag = "bypass" Then 'query tag
|
||||
Log("SIN REGISTROS " & result.Rows.Size)
|
||||
Subs.logJobDoneResultados(result)
|
||||
If result.Rows.Size = 1 Then ' Si hay contraseña de bypass
|
||||
m_lat = Starter.lat_gps
|
||||
m_lon = Starter.lon_gps
|
||||
GPS_LocationChanged(Starter.ubicacionActual)
|
||||
Starter.skmt.ExecNonQuery($"update kmt_info set CAT_CL_LAT = '${Starter.lat_gps}', CAT_CL_LONG = '${Starter.lon_gps}' where CAT_CL_CODIGO = '${Subs.traeCliente}'"$)
|
||||
else if result.Rows.Size = 0 Then
|
||||
Dim cmd As DBCommand
|
||||
cmd.Initialize
|
||||
cmd.Name = "select_geoPass"
|
||||
cmd.Parameters = Array As Object(et_geopass.Text.Trim, Subs.traeAlmacen, Subs.traeRuta)
|
||||
reqManager.ExecuteQuery(cmd , 0, "traeGeoPass")
|
||||
Log($"${Starter.DBReqServer}, ${et_geopass.Text}, ${Subs.traeAlmacen}, ${Subs.traeRuta}"$)
|
||||
et_geopass.Text = ""
|
||||
End If
|
||||
End If
|
||||
If result.Tag = "traeGeoPass" Then 'query tag
|
||||
Log("SIN REGISTROS " & result.Rows.Size)
|
||||
If result.Rows.Size = 0 Then MsgboxAsync("Contraseña equivocada, por favor intente de nuevo.", "ATENCION")
|
||||
@@ -4170,7 +4220,7 @@ Sub JobDone(Job As HttpJob)
|
||||
cmd.Initialize
|
||||
cmd.Name = "delete_geoPass"
|
||||
cmd.Parameters = Array As Object( Subs.traeAlmacen, Subs.traeRuta)
|
||||
reqManager.ExecuteQuery(cmd , 0, "traeGeoPass")
|
||||
reqManager.ExecuteCommand(cmd , "borraGeoPass")
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
@@ -4322,7 +4372,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
|
||||
|
||||
@@ -41,11 +41,13 @@ Sub Class_Globals
|
||||
Private L_TOTAL_D As Label
|
||||
Private l_tipoPedido As Label
|
||||
Dim pedidoMostrado As String = "NORMAL"
|
||||
Dim ts As C_TrendSpending
|
||||
End Sub
|
||||
|
||||
'You can add more parameters here.
|
||||
Public Sub Initialize As Object
|
||||
kh.Initialize(Me, "kh", Starter.skmt)
|
||||
ts.Initialize(Me, "ts", Starter.skmt)
|
||||
Return Me
|
||||
End Sub
|
||||
|
||||
@@ -142,7 +144,7 @@ Sub B4XPage_Appear
|
||||
C_DOE=Starter.skmt.ExecQuery2("select sum(pe_cant) AS CANTIDAD, sum(pe_costo_tot) AS MONTO from pedido where PE_CEDIS <> PE_PROID and pe_cliente in (Select CUENTA from cuentaa) AND PE_CEDIS = ?", Array As String("DOE"))
|
||||
C_DOE.Position=0
|
||||
L_CANT_D.Text = C_DOE.GetString("CANTIDAD")
|
||||
L_TOTAL_D.Text = numberformat2(kh.traeTotalCliente, 1, 2, 2, True)
|
||||
L_TOTAL_D.Text = NumberFormat2(kh.traeTotalCliente, 1, 2, 2, True)
|
||||
c.Close
|
||||
Else
|
||||
B_PEDIDO_DOE.VISIBLE = False
|
||||
@@ -274,7 +276,11 @@ Sub borra_Click
|
||||
' Starter.skmt.ExecNonQuery("delete from pedido_cliente where pc_cliente in (Select CUENTA from cuentaa)")
|
||||
' Starter.skmt.ExecNonQuery("delete from pedido where pe_cliente in (Select CUENTA from cuentaa)")
|
||||
' Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)")
|
||||
If pedidoMostrado = "DOE" Then Subs.borraPedidoDOEClienteActual Else Subs.borraPedidoClienteActual
|
||||
If pedidoMostrado = "DOE" Then
|
||||
Subs.borraPedidoDOEClienteActual
|
||||
Else
|
||||
Subs.borraPedidoClienteActual
|
||||
End If
|
||||
' B4XPages.MainPage.productos.prodsMap.Initialize 'inicializamos mapa de productos para que no aparezcan como vendidos en la lista
|
||||
B4XPages.MainPage.promos.promosMap.Initialize
|
||||
' Log("Llamamos LlenaProdsLL")
|
||||
@@ -469,12 +475,18 @@ Private Sub clv_pedidos_ItemLongClick (position As Int, Value As Object)
|
||||
Starter.skmt.ExecNonQuery($"update ${Subs.traeTablaProds(Starter.tipov)} set cat_gp_almacen = cat_gp_almacen + ${pPromos.GetString("PE_CANT")} where cat_gp_id = '${pPromos.Getstring("PE_PROID")}'"$)
|
||||
Next
|
||||
Starter.skmt.ExecNonQuery2("delete from pedido where pe_cedis in (select pe_cedis from pedido where PE_CEDIS = ? and pe_pronombre = ?) and pe_cliente in (Select CUENTA from cuentaa)", Array As Object(m.Get("cedis"), Value))
|
||||
Private precio0 As String = Subs.traePrecio(prod.GetString("PE_PROID"))
|
||||
Private precioConDesc As String = (B4XPages.MainPage.cliente.kh.traeDescXSku(Subs.traeCliente, prod.GetString("PE_PROID"))/100)*precio0
|
||||
ts.modTrendSpending("suma", "descuentos", (precioConDesc * prod.GetString("PE_CANT")))
|
||||
Else
|
||||
If thisLog Then Log($"SUMAMOS ${m.get("cant")} a ${m.get("prodId")} "$)
|
||||
'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")))
|
||||
If thisLog Then Log($"BORRAMOS ${Value}, ${m.Get("cedis")}"$)
|
||||
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")))
|
||||
Private precio0 As String = Subs.traePrecio(prod.GetString("PE_PROID"))
|
||||
Private precioConDesc As String = (B4XPages.MainPage.cliente.kh.traeDescXSku(Subs.traeCliente, prod.GetString("PE_PROID"))/100)*precio0
|
||||
ts.modTrendSpending("suma", "descuentos", (precioConDesc * prod.GetString("PE_CANT")))
|
||||
End If
|
||||
prod.Close
|
||||
DateTime.DateFormat = "MM/dd/yyyy"
|
||||
|
||||
@@ -51,6 +51,7 @@ End Sub
|
||||
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||
|
||||
Sub B4XPage_Appear
|
||||
b_guardar.Visible = False
|
||||
b_guardar.Enabled = False
|
||||
permitirCtesNuevos = True
|
||||
b_guardar.Text = "Sin Ubicación ..."
|
||||
@@ -61,22 +62,24 @@ Sub B4XPage_Appear
|
||||
c.Position = 0
|
||||
maxClientesNuevos = c.GetString("CAT_VA_VALOR")
|
||||
End If
|
||||
' Log("MaxClientesNuevos: " & maxClientesNuevos)
|
||||
Log("MaxClientesNuevos: " & maxClientesNuevos)
|
||||
|
||||
'Para el almacen 12 (GDL) no hay limite de clientes nuevos.
|
||||
If kh.traeAlmacen = 12 Then maxClientesNuevos = 0
|
||||
' If kh.traeAlmacen = 12 Then maxClientesNuevos = 0
|
||||
|
||||
If maxClientesNuevos <> 0 Then
|
||||
Private d As Cursor = Starter.skmt.ExecQuery($"select count(CAT_CL_CODIGO) as ctesNuevos from kmt_info where CAT_CL_CODIGO like 'N%'"$)
|
||||
If d.RowCount > 0 Then
|
||||
d.Position = 0
|
||||
' Log($"Clientes nuevos actuales: ${d.GetString("ctesNuevos")}"$)
|
||||
Log($"Clientes nuevos actuales: ${d.GetString("ctesNuevos")}"$)
|
||||
If d.GetString("ctesNuevos") >= maxClientesNuevos Then
|
||||
b_guardar.Enabled = False
|
||||
permitirCtesNuevos = False
|
||||
ToastMessageShow("¡Ha alcanzado el LIMITE de usuarios nuevos por día!", True)
|
||||
End If
|
||||
End If
|
||||
Else
|
||||
b_guardar.Visible = True
|
||||
End If
|
||||
End Sub
|
||||
|
||||
@@ -87,6 +90,7 @@ Sub GPS_LocationChanged (Location1 As Location)
|
||||
b_guardar.Enabled = False
|
||||
Else
|
||||
b_guardar.Enabled = True
|
||||
b_guardar.Visible = True
|
||||
End If
|
||||
b_guardar.Text = "Guardar"
|
||||
End Sub
|
||||
@@ -128,7 +132,7 @@ Sub b_guardar_Click
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(no_cliente))
|
||||
Subs.iniciaActividad("cliente")
|
||||
Else
|
||||
ToastMessageShow("No hay clientes para visitar el día de hoy.", true)
|
||||
ToastMessageShow("No hay clientes para visitar el día de hoy.", True)
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
|
||||
@@ -9,6 +9,7 @@ Sub Class_Globals
|
||||
Private Root As B4XView 'ignore
|
||||
Private xui As XUI 'ignore
|
||||
Dim reqManager As DBRequestManager
|
||||
Dim reqManagerW As DBRequestManagerW
|
||||
Dim device As Phone
|
||||
Dim kh As kms_helperSubs
|
||||
Dim rp As RuntimePermissions
|
||||
@@ -214,6 +215,10 @@ Sub Class_Globals
|
||||
Private r_7 As RadioButton
|
||||
Private r_razonNoVisita As String
|
||||
Private l_descripcion As Label
|
||||
Type TCuantos (query As String, esperados As Int, guardados As Int)
|
||||
Dim validaCuantos As TCuantos
|
||||
Dim ts As C_TrendSpending
|
||||
Dim linker As C_deviceLinker
|
||||
End Sub
|
||||
|
||||
'You can add more parameters here.
|
||||
@@ -225,6 +230,7 @@ End Sub
|
||||
'This event will be called once, before the page becomes visible.
|
||||
Private Sub B4XPage_Created (Root1 As B4XView)
|
||||
If Not(Starter.Logger) Then logger = False
|
||||
validaCuantos.Initialize
|
||||
Root = Root1
|
||||
'load the layout to Root
|
||||
Root.LoadLayout("principal")
|
||||
@@ -246,17 +252,17 @@ Private Sub B4XPage_Created (Root1 As B4XView)
|
||||
f = Starter.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info limit 1")
|
||||
l_ruta.Text = "-"
|
||||
If f.RowCount > 0 Then
|
||||
Log(1)
|
||||
' Log(1)
|
||||
f.Position = 0
|
||||
Log($"Ruta desde BD: ${f.GetString("CAT_CL_RUTA")}"$)
|
||||
' Log($"Ruta desde BD: ${f.GetString("CAT_CL_RUTA")}"$)
|
||||
l_ruta.Text = f.GetString("CAT_CL_RUTA")
|
||||
End If
|
||||
f.Close
|
||||
If l_ruta.Text = "-" Then
|
||||
Log(2)
|
||||
' Log(2)
|
||||
l_ruta.Text = "-"
|
||||
Else
|
||||
Log(3)
|
||||
' Log(3)
|
||||
f = Starter.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info")
|
||||
f.Position = 0
|
||||
l_ruta.Text = f.GetString("CAT_CL_RUTA")
|
||||
@@ -316,6 +322,7 @@ End Sub
|
||||
|
||||
Sub B4XPage_Appear
|
||||
' Log(Subs.traeDiaSemana)
|
||||
linker.Initialize(Me, "Linker", True)
|
||||
Starter.errorConnDBReq = False
|
||||
connecta.TextColor = Colors.White
|
||||
StartBluetooth
|
||||
@@ -328,10 +335,18 @@ Sub B4XPage_Appear
|
||||
' StartActivity(In)
|
||||
' End If
|
||||
' End If
|
||||
|
||||
If Subs.traeUltimaActividadBD <> "principal" Then Subs.iniciaActividad(Subs.traeUltimaActividadBD)
|
||||
borraClientesNuevosSinVenta
|
||||
reqManager.Initialize(Me, Starter.DBReqServer)
|
||||
reqManagerW.Initialize
|
||||
Log($"DBREQSERVER = ${Starter.DBReqServer}"$)
|
||||
|
||||
Dim cmd As DBCommand
|
||||
cmd.Initialize
|
||||
cmd.Name = "select_version_KELL"
|
||||
reqManager.ExecuteQuery(cmd , 0, "version")
|
||||
|
||||
' If Not(btAdmin.IsEnabled) Then btAdmin.Enable 'Si no esta prendido el BT, lo prendemos.
|
||||
|
||||
e_ruta.Enabled = True
|
||||
@@ -535,8 +550,13 @@ Sub B4XPage_Appear
|
||||
NUEVO.Enabled = True
|
||||
B_PROXIMA.Enabled = True
|
||||
End If
|
||||
' LogColor("REVISAMOS GUID", Colors.red)
|
||||
' Subs.generaGUID_EnExterno
|
||||
kh.traeMaxClientesNuevos
|
||||
Private n As Cursor = Starter.skmt.ExecQuery("select count(*) as cuantos from kmt_info where cat_cl_codigo like 'N%'")
|
||||
n.Position = 0
|
||||
Log(n.GetString("cuantos"))
|
||||
If n.GetString("cuantos") >= kh.traeMaxClientesNuevos Then NUEVO.Enabled = False
|
||||
LogColor(">>>>>>>> REVISAMOS GUID <<<<<<<<<", Colors.red)
|
||||
Subs.generaGUID_EnExterno
|
||||
End Sub
|
||||
|
||||
Sub trabajar_Click
|
||||
@@ -766,6 +786,7 @@ Sub cargar_Click
|
||||
cmd.Initialize
|
||||
cmd.Name = "SELECT_HIST_ENCUESTA_KELL"
|
||||
cmd.Parameters = Array As Object( e_ruta.text, ALMACEN,e_ruta.text, ALMACEN,e_ruta.text, ALMACEN,e_ruta.text, ALMACEN )
|
||||
' cmd.Parameters = Array As Object( e_ruta.text, ALMACEN )
|
||||
reqManager.ExecuteQuery(cmd , 0, "HIST_ENCUESTA2")
|
||||
' Log($"${e_ruta.text}, ${ALMACEN},${e_ruta.text}, ${ALMACEN},${e_ruta.text}, ${ALMACEN},${e_ruta.text}, ${ALMACEN}"$)
|
||||
|
||||
@@ -797,26 +818,127 @@ Sub cargar_Click
|
||||
cmd.Name = "select_cat_paquetes_KELL"
|
||||
cmd.Parameters = Array As Object(ALMACEN)
|
||||
reqManager.ExecuteQuery(cmd , 0, "gunaprodp")
|
||||
|
||||
|
||||
cmd.Initialize
|
||||
cmd.Name = "pedidosugerido_KELLOGGS"
|
||||
cmd.Parameters = Array As Object(ALMACEN, e_ruta.Text)
|
||||
reqManager.ExecuteQuery(cmd , 0, "PEDIDOsugerido")
|
||||
|
||||
|
||||
cmd.Initialize
|
||||
cmd.Name = "select_cat_paquetess_KELL"
|
||||
cmd.Parameters = Array As Object(ALMACEN)
|
||||
reqManager.ExecuteQuery(cmd , 0, "gunaprodps")
|
||||
|
||||
|
||||
cmd.Initialize
|
||||
cmd.Name = "select_cat_detallepa_KELL"
|
||||
cmd.Parameters = Array As Object(ALMACEN)
|
||||
reqManager.ExecuteQuery(cmd , 0, "detallepaq")
|
||||
|
||||
cmd.Name = "selectCuantosClientes_Kell"
|
||||
cmd.Parameters = Array As Object(e_ruta.text, ALMACEN)
|
||||
reqManagerW.ExecuteQuery(Starter.DBReqServer, cmd, Me, "kmt_cuantos")
|
||||
Wait For kmt_cuantos_Completed (r As TResultado)
|
||||
If r.Success Then
|
||||
validaCuantos.query = "kmt_datos"
|
||||
For Each records() As Object In r.resultado.Rows
|
||||
Dim CUANTOS_CLIENTES As Int = records(r.resultado.Columns.Get("CUANTOS_CLIENTES"))
|
||||
Next
|
||||
validaCuantos.esperados = CUANTOS_CLIENTES
|
||||
Subs.logJobDoneResultados(r.resultado)
|
||||
Else
|
||||
Log(r.ErrorMessage)
|
||||
End If
|
||||
|
||||
'Autorizacion para crear clientes nuevos
|
||||
cmd.Initialize
|
||||
cmd.Name = "autorizacionClientesNuevos"
|
||||
cmd.Parameters = Array As Object(ALMACEN, e_ruta.text)
|
||||
reqManagerW.ExecuteQuery(Starter.DBReqServer, cmd, Me, "autorizacionClientesNuevos")
|
||||
Wait For autorizacionClientesNuevos_Completed (r0 As TResultado)
|
||||
Log("tag: " & r0.tag & " Success: " & r0.Success)
|
||||
If r0.Success Then
|
||||
Subs.logJobDoneResultados(r0.resultado)
|
||||
Private result As DBResult = r0.resultado
|
||||
cargar.Enabled = True
|
||||
' Log("TIEMPO kmt_datos : " & ((DateTime.Now-inicioContador)/1000))
|
||||
' S_CC.TEXT = "CARGANDO"
|
||||
Starter.skmt.BeginTransaction
|
||||
For Each records() As Object In result.Rows
|
||||
Dim CNR_AUTORIZADO As String = records(result.Columns.Get("CNR_AUTORIZADO"))
|
||||
Dim CNR_CUANTOS_CN As String = records(result.Columns.Get("CNR_CUANTOS_CN"))
|
||||
Next
|
||||
Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("CN_AUTORIZADO"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("CN_AUTORIZADO", CNR_AUTORIZADO))
|
||||
Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("CN_CUANTOS"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("CN_CUANTOS", CNR_CUANTOS_CN))
|
||||
Starter.skmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!!
|
||||
Starter.skmt.EndTransaction
|
||||
Else
|
||||
Log(r0.ErrorMessage)
|
||||
End If
|
||||
|
||||
cmd.Initialize
|
||||
cmd.Name = "select_cat_clientes_guna_KELL2"
|
||||
cmd.Parameters = Array As Object(e_ruta.text, ALMACEN)
|
||||
reqManager.ExecuteQuery(cmd , 0, "kmt_datos")
|
||||
' reqManager.ExecuteQuery(cmd , 0, "kmt_datos")
|
||||
|
||||
reqManagerW.ExecuteQuery(Starter.DBReqServer, cmd, Me, "kmt_datos")
|
||||
Wait For kmt_datos_Completed (r As TResultado)
|
||||
Log("tag: " & r.tag & " Success: " & r.Success)
|
||||
If r.Success Then
|
||||
' Subs.logJobDoneResultados(res2.resultado)
|
||||
Private result As DBResult = r.resultado
|
||||
cargar.Enabled = True
|
||||
Log("TIEMPO kmt_datos : " & ((DateTime.Now-inicioContador)/1000))
|
||||
S_CC.TEXT = "CARGANDO"
|
||||
Starter.skmt.BeginTransaction
|
||||
For Each records() As Object In result.Rows
|
||||
Dim CAT_CL_CODIGO As String = records(result.Columns.Get("CAT_CL_CODIGO"))
|
||||
Dim CAT_CL_RUTA As String = records(result.Columns.Get("CAT_CL_RUTA"))
|
||||
Dim CAT_CL_NOMBRE As String = records(result.Columns.Get("CAT_CL_NOMBRE"))
|
||||
Dim CAT_CL_ATIENDE1 As String = records(result.Columns.Get("CAT_CL_ATIENDE1"))
|
||||
Dim CAT_CL_ATIENTE2 As String = records(result.Columns.Get("CAT_CL_ATIENTE2"))
|
||||
Dim CAT_CL_TELEFONO As String = records(result.Columns.Get("CAT_CL_TELEFONO"))
|
||||
Dim CAT_CL_EMAIL As String = records(result.Columns.Get("CAT_CL_EMAIL"))
|
||||
Dim CAT_CL_CALLE As String = records(result.Columns.Get("CAT_CL_CALLE"))
|
||||
Dim CAT_CL_NOEXT As String = records(result.Columns.Get("CAT_CL_NOEXT"))
|
||||
Dim CAT_CL_NOINT As String = records(result.Columns.Get("CAT_CL_NOINT"))
|
||||
Dim CAT_CL_CALLE1 As String = records(result.Columns.Get("CAT_CL_CALLE1"))
|
||||
Dim CAT_CL_CALLE2 As String = records(result.Columns.Get("CAT_CL_CALLE2"))
|
||||
Dim CAT_CL_COLONIA As String = records(result.Columns.Get("CAT_CL_COLONIA"))
|
||||
Dim CAT_CL_MUNI As String = records(result.Columns.Get("CAT_CL_MUNI"))
|
||||
Dim CAT_CL_EDO As String = records(result.Columns.Get("CAT_CL_EDO"))
|
||||
Dim CAT_CL_CP As String = records(result.Columns.Get("CAT_CL_CP"))
|
||||
Dim CAT_CL_LONG As String = records(result.Columns.Get("CAT_CL_LONG"))
|
||||
Dim CAT_CL_LAT As String = records(result.Columns.Get("CAT_CL_LAT"))
|
||||
Dim CAT_CL_MTOCOMPRA As String = records(result.Columns.Get("CAT_CL_MTOCOMPRA"))
|
||||
Dim CAT_CL_NUM_SERIEFISICO As String = records(result.Columns.Get("CAT_CL_NUM_SERIEFISICO"))
|
||||
Dim CAT_CL_BFACTURA As String = records(result.Columns.Get("CAT_CL_BFACTURA"))
|
||||
Dim CAT_CL_BCREDITO As String = records(result.Columns.Get("CAT_CL_BBLOQUEOCRED"))
|
||||
Dim CAT_CL_DIAS_VISITA As String = records(result.Columns.Get("CAT_CL_DIAS_VISITA"))
|
||||
Dim CAT_CL_TIPO_RUTA As String = records(result.Columns.Get("CAT_CL_TIPO_RUTA"))
|
||||
Dim CAT_CL_CATEGORIA As String = records(result.Columns.Get("CAT_CL_CATEGORIA"))
|
||||
Dim CAT_CL_SEGMENTO As String = records(result.Columns.Get("CAT_CL_SEGMENTO"))
|
||||
Dim CAT_CL_LIMITECREDITO As String = records(result.Columns.Get("CAT_CL_LIMITECREDITO"))
|
||||
Dim CREDITO As String = records(result.Columns.Get("CAT_CL_BCREDITO"))
|
||||
' LogColor("CAT_CL_LIMITECREDITO:" & CAT_CL_LIMITECREDITO & " -- ID: " & CAT_CL_CODIGO, Colors.red)
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO kmt_info(CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO,CAT_CL_BFACTURA,CAT_CL_BCREDITO,CAT_CL_DIAS_VISITA,CAT_CL_TIPO_RUTA, gestion, IMPRESION, CAT_CL_CATEGORIA, CAT_CL_SEGMENTO,CAT_CL_LIMITECREDITO, CREDITO) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,0,?,?,?,?)", Array As Object (CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LAT,CAT_CL_LONG,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO,CAT_CL_BFACTURA,CAT_CL_BCREDITO,CAT_CL_DIAS_VISITA,CAT_CL_TIPO_RUTA,CAT_CL_CATEGORIA, CAT_CL_SEGMENTO,CAT_CL_LIMITECREDITO,CREDITO))
|
||||
Next
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO kmt_info(CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_BFACTURA,CAT_CL_BCREDITO,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO,CAT_CL_DIAS_VISITA, gestion, IMPRESION) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,0,0,?,0,0) ",Array As Object ("0",e_ruta.TEXT, "VENTA ABORDO","null","null","null","null","null","null","null","null","null","null","null","0","null","null","null","10000000","null"))
|
||||
Starter.skmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!!
|
||||
Starter.skmt.EndTransaction
|
||||
' LogColor("##################################################################3", Colors.red)
|
||||
Listo1 = 1
|
||||
S_CC.Text = "LISTO"
|
||||
' ToastMessageShow("Catalogo Clientes Actualizados." , True)
|
||||
If Listo1 = 1 And Listo2 = 1 And Listo3 = 1 And Listo4 = 1 Then
|
||||
B4XPage_Appear
|
||||
img2.Visible=False
|
||||
EJECUTANDO = 0
|
||||
End If
|
||||
Else
|
||||
Log(r.ErrorMessage)
|
||||
End If
|
||||
|
||||
cmd.Initialize
|
||||
cmd.Name = "select_hist_datos_KELL"
|
||||
@@ -847,12 +969,24 @@ Sub cargar_Click
|
||||
cmd.Name = "select_promo_monto_KELL"
|
||||
cmd.Parameters = Array As Object(e_ruta.text, ALMACEN)
|
||||
reqManager.ExecuteQuery(cmd , 0, "promo_monto")
|
||||
|
||||
|
||||
cmd.Initialize
|
||||
cmd.Name = "traeNumSemanaActualCalendarioLaboral"
|
||||
cmd.Parameters = Array As Object( e_ruta.text, ALMACEN,e_ruta.text, ALMACEN,e_ruta.text, ALMACEN,e_ruta.text, ALMACEN )
|
||||
reqManager.ExecuteQuery(cmd , 0, "semanaCalLaboral")
|
||||
|
||||
cmd.Initialize
|
||||
cmd.Name = "traeInfoTrendSpending"
|
||||
' cmd.Parameters = Array As Object(e_ruta.text, ALMACEN)
|
||||
cmd.Parameters = Array As Object(e_ruta.text, ALMACEN)
|
||||
reqManager.ExecuteQuery(cmd , 0, "trendSpending")
|
||||
LogColor($"Trade Spending: Ruta: ${e_ruta.text}, almacen: ${ALMACEN}"$, Colors.red)
|
||||
|
||||
If E_RUTA2.Text <> "" Then
|
||||
cmd.Initialize
|
||||
cmd.Name = "select_cat_clientes_guna_KELL2"
|
||||
cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN)
|
||||
reqManager.ExecuteQuery(cmd , 0, "kmt_datos")
|
||||
' reqManager.ExecuteQuery(cmd , 0, "kmt_datos")
|
||||
|
||||
cmd.Initialize
|
||||
cmd.Name = "select_hist_datos_KELL"
|
||||
@@ -1027,7 +1161,7 @@ Sub JobDone(Job As HttpJob)
|
||||
If logger Then LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211110
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
If RESULT.Tag = "kmt_datos" Then 'query tag
|
||||
If RESULT.Tag = "kmt_datos_xxx" Then 'query tag
|
||||
cargar.Enabled = True
|
||||
If logger Then Log("TIEMPO kmt_datos : " & ((DateTime.Now-inicioContador)/1000))
|
||||
S_CC.TEXT = "CARGANDO"
|
||||
@@ -1060,8 +1194,9 @@ Sub JobDone(Job As HttpJob)
|
||||
Dim CAT_CL_CATEGORIA As String = records(RESULT.Columns.Get("CAT_CL_CATEGORIA"))
|
||||
Dim CAT_CL_SEGMENTO As String = records(RESULT.Columns.Get("CAT_CL_SEGMENTO"))
|
||||
Dim CAT_CL_LIMITECREDITO As String = records(RESULT.Columns.Get("CAT_CL_LIMITECREDITO"))
|
||||
Dim CREDITO As String = records(RESULT.Columns.Get("CAT_CL_BCREDITO"))
|
||||
' LogColor("CAT_CL_LIMITECREDITO:" & CAT_CL_LIMITECREDITO & " -- ID: " & CAT_CL_CODIGO, Colors.red)
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO kmt_info(CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO,CAT_CL_BFACTURA,CAT_CL_BCREDITO,CAT_CL_DIAS_VISITA,CAT_CL_TIPO_RUTA, gestion, IMPRESION, CAT_CL_CATEGORIA, CAT_CL_SEGMENTO,CAT_CL_LIMITECREDITO) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,0,?,?,?)", Array As Object (CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LAT,CAT_CL_LONG,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO,CAT_CL_BFACTURA,CAT_CL_BCREDITO,CAT_CL_DIAS_VISITA,CAT_CL_TIPO_RUTA,CAT_CL_CATEGORIA, CAT_CL_SEGMENTO,CAT_CL_LIMITECREDITO))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO kmt_info(CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO,CAT_CL_BFACTURA,CAT_CL_BCREDITO,CAT_CL_DIAS_VISITA,CAT_CL_TIPO_RUTA, gestion, IMPRESION, CAT_CL_CATEGORIA, CAT_CL_SEGMENTO,CAT_CL_LIMITECREDITO, CREDITO) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,0,?,?,?,?)", Array As Object (CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LAT,CAT_CL_LONG,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO,CAT_CL_BFACTURA,CAT_CL_BCREDITO,CAT_CL_DIAS_VISITA,CAT_CL_TIPO_RUTA,CAT_CL_CATEGORIA, CAT_CL_SEGMENTO,CAT_CL_LIMITECREDITO,CREDITO))
|
||||
Next
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO kmt_info(CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_BFACTURA,CAT_CL_BCREDITO,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO,CAT_CL_DIAS_VISITA, gestion, IMPRESION) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,0,0,?,0,0) ",Array As Object ("0",e_ruta.TEXT, "VENTA ABORDO","null","null","null","null","null","null","null","null","null","null","null","0","null","null","null","10000000","null"))
|
||||
Starter.skmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!!
|
||||
@@ -1069,17 +1204,18 @@ Sub JobDone(Job As HttpJob)
|
||||
Listo1 = 1
|
||||
S_CC.Text = "LISTO"
|
||||
' ToastMessageShow("Catalogo Clientes Actualizados." , True)
|
||||
If Listo1 =1 And Listo2 =1 And Listo3 = 1 And Listo4 = 1 Then
|
||||
If Listo1 = 1 And Listo2 = 1 And Listo3 = 1 And Listo4 = 1 Then
|
||||
B4XPage_Appear
|
||||
img2.Visible=False
|
||||
EJECUTANDO = 0
|
||||
End If
|
||||
End If
|
||||
' S_CC.Text = "LISTO"
|
||||
' Listo1 = 1
|
||||
|
||||
|
||||
bcarga1 = 20
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
If RESULT.Tag = "hist_promos" Then 'query tag
|
||||
If logger Then Log("TIEMPO hist_promos : " & ((DateTime.Now-inicioContador)/1000))
|
||||
Starter.skmt.BeginTransaction
|
||||
@@ -1101,10 +1237,7 @@ Sub JobDone(Job As HttpJob)
|
||||
S_CH.Text = "LISTO"
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
If RESULT.Tag = "hist_cliente_promos" Then 'query tag
|
||||
If logger Then Log("TIEMPO hist_cliente_promos : " & ((DateTime.Now-inicioContador)/1000))
|
||||
Starter.skmt.BeginTransaction
|
||||
@@ -1120,10 +1253,7 @@ Sub JobDone(Job As HttpJob)
|
||||
Starter.skmt.EndTransaction
|
||||
' ToastMessageShow(" Historico Clientes Promociones Actualizado." , True)
|
||||
End If
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
If RESULT.Tag = "hist_comp_promos" Then 'query tag
|
||||
If logger Then Log("TIEMPO hist_comp_promos : " & ((DateTime.Now-inicioContador)/1000))
|
||||
Starter.skmt.BeginTransaction
|
||||
@@ -1150,10 +1280,7 @@ Sub JobDone(Job As HttpJob)
|
||||
S_CH.Text = "LISTO"
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
If RESULT.Tag = "promo_monto" Then 'query tag
|
||||
For Each records() As Object In RESULT.Rows
|
||||
Dim CPM_CLIENTE As String = records(RESULT.Columns.Get("CPM_CLIENTE"))
|
||||
@@ -1163,17 +1290,11 @@ Sub JobDone(Job As HttpJob)
|
||||
Dim CPM_CANT As String = records(RESULT.Columns.Get("CPM_CANT"))
|
||||
Dim CPM_RANGO As String = records(RESULT.Columns.Get("CPM_RANGO"))
|
||||
Dim CPM_DESC As String = records(RESULT.Columns.Get("CPM_DESC"))
|
||||
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_PROMO_MONTO(CPM_CLIENTE, CPM_IDPROMO, CPM_MONTO, CPM_PROID, CPM_CANT, CPM_RANGO, CPM_DESC) VALUES (?,?,?,?,?,?,?)", Array As Object (CPM_CLIENTE, CPM_IDPROMO, CPM_MONTO, CPM_PROID, CPM_CANT, CPM_RANGO, CPM_DESC))
|
||||
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
|
||||
If RESULT.Tag = "PEDIDOsugerido" Then 'query tag
|
||||
|
||||
For Each records() As Object In RESULT.Rows
|
||||
Dim ID_PRODUCTO As String = records(RESULT.Columns.Get("ID_PRODUCTO"))
|
||||
Dim CANTIDAD As String = records(RESULT.Columns.Get("PROMEDIO"))
|
||||
@@ -1185,10 +1306,7 @@ Sub JobDone(Job As HttpJob)
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO_SUGERIDO(ID_PRODUCTO, PROMEDIO,RUTA, ALMACEN) VALUES (?,?,?,?)", Array As Object (ID_PRODUCTO, CANTIDAD, e_ruta.Text, ALMACEN))
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
If RESULT.Tag = "cat_verificacion" Then 'query tag
|
||||
For Each records() As Object In RESULT.Rows
|
||||
Dim CAT_VE_IDPROD As String = records(RESULT.Columns.Get("CAT_VE_IDPROD"))
|
||||
@@ -1197,10 +1315,7 @@ Sub JobDone(Job As HttpJob)
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VERIFICACION(CAT_VE_IDPROD, CAT_VE_NOMBRE,CAT_VE_ORDEN) VALUES (?,?,?)", Array As Object (CAT_VE_IDPROD, CAT_VE_NOMBRE,CAT_VE_ORDEN))
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
If RESULT.Tag = "DESCUENTOS_CLIENTE" Then 'query tag
|
||||
If logger Then Log("TIEMPO DESCUENTOS_CIENTE : " & ((DateTime.Now-inicioContador)/1000))
|
||||
Starter.skmt.BeginTransaction
|
||||
@@ -1215,11 +1330,8 @@ Sub JobDone(Job As HttpJob)
|
||||
Starter.skmt.TransactionSuccessful
|
||||
Starter.skmt.EndTransaction
|
||||
End If
|
||||
End If
|
||||
|
||||
'DESCUENTOS SKU
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
' DESCUENTOS SKU
|
||||
If RESULT.Tag = "DESCUENTOS_CLIENTE_SKU" Then 'query tag
|
||||
If logger Then Log("TIEMPO DESCUENTOS_CLIENTE_SKU : " & ((DateTime.Now-inicioContador)/1000))
|
||||
Starter.skmt.BeginTransaction
|
||||
@@ -1232,10 +1344,7 @@ Sub JobDone(Job As HttpJob)
|
||||
Starter.skmt.TransactionSuccessful
|
||||
Starter.skmt.EndTransaction
|
||||
End If
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
If RESULT.Tag = "hist_abordo" Then 'query tag
|
||||
If logger Then Log("TIEMPO hist_abordo : " & ((DateTime.Now-inicioContador)/1000))
|
||||
Starter.skmt.BeginTransaction
|
||||
@@ -1247,10 +1356,7 @@ Sub JobDone(Job As HttpJob)
|
||||
Starter.skmt.TransactionSuccessful
|
||||
Starter.skmt.EndTransaction
|
||||
End If
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
If RESULT.Tag = "gunaprod" Then 'query tag
|
||||
' Subs.logJobDoneResultados(RESULT)
|
||||
cargar.Enabled = True
|
||||
@@ -1273,9 +1379,10 @@ Sub JobDone(Job As HttpJob)
|
||||
Dim CAT_GP_TIPOPROD As Int = records(RESULT.Columns.Get("CAT_GP_TIPOPROD"))
|
||||
Dim CAT_GP_INICIATIVA As Int = records(RESULT.Columns.Get("CAT_GP_INICIATIVA"))
|
||||
Dim CAT_GP_TIPOPROD2 As String = records(RESULT.Columns.Get("CAT_GP_TIPOPROD2"))
|
||||
Dim CAT_GP_PROMOCION As String = records(RESULT.Columns.Get("CAT_GP_PROMOCION"))
|
||||
'CAT_GP_INICIATIVA = 5
|
||||
' skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG,CAT_GP_ALMACEN,CAT_GP_DEV) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG, CAT_GP_ALMACEN,CAT_GP_DEV))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG,CAT_GP_ALMACEN,CAT_GP_TIPOPROD,CAT_GP_INICIATIVA,CAT_GP_DEV,CAT_GP_CODPROMO,CAT_GP_TIPOPROD2) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,?)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG, CAT_GP_ALMACEN,CAT_GP_TIPOPROD, CAT_GP_INICIATIVA,CAT_GP_DEV, CAT_GP_TIPOPROD2))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG,CAT_GP_ALMACEN,CAT_GP_TIPOPROD,CAT_GP_INICIATIVA,CAT_GP_DEV,CAT_GP_CODPROMO,CAT_GP_TIPOPROD2,CAT_GP_PROMOCION) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,?,?)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG, CAT_GP_ALMACEN,CAT_GP_TIPOPROD, CAT_GP_INICIATIVA,CAT_GP_DEV, CAT_GP_TIPOPROD2,CAT_GP_PROMOCION))
|
||||
Next
|
||||
Starter.skmt.TransactionSuccessful
|
||||
Starter.skmt.EndTransaction
|
||||
@@ -1303,11 +1410,8 @@ Sub JobDone(Job As HttpJob)
|
||||
EJECUTANDO = 0
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
|
||||
'CARGA DEL CATALOGO ABORDO
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
' CARGA DEL CATALOGO ABORDO
|
||||
If RESULT.Tag = "gunaprod2" Then 'query tag
|
||||
cargar.Enabled = True
|
||||
If logger Then Log("TIEMPO gunaprod2 : " & ((DateTime.Now-inicioContador)/1000))
|
||||
@@ -1359,10 +1463,7 @@ Sub JobDone(Job As HttpJob)
|
||||
' skmt.ExecNonQuery2("INSERT INTO COUNT_GUNAPROD2(CAT_GP_CLASIF, CUANTOS) VALUES (?,?)", Array As Object (c.GetString("CAT_GP_CLASIF"), c.GetString("CUANTOS")))
|
||||
' c.Close
|
||||
End If
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
|
||||
If RESULT.Tag = "gunaprodp" Then 'query tag
|
||||
If logger Then Log("TIEMPO gunaprodp : " & ((DateTime.Now-inicioContador)/1000))
|
||||
Starter.skmt.BeginTransaction
|
||||
@@ -1408,10 +1509,7 @@ Sub JobDone(Job As HttpJob)
|
||||
EJECUTANDO = 0
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
If RESULT.Tag = "gunaprodps" Then 'query tag
|
||||
Starter.skmt.BeginTransaction
|
||||
For Each records() As Object In RESULT.Rows
|
||||
@@ -1455,10 +1553,7 @@ Sub JobDone(Job As HttpJob)
|
||||
EJECUTANDO = 0
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
If RESULT.Tag = "detallepaq" Then 'query tag
|
||||
If logger Then Log("TIEMPO detallepaq : " & ((DateTime.Now-inicioContador)/1000))
|
||||
Starter.skmt.BeginTransaction
|
||||
@@ -1474,7 +1569,8 @@ Sub JobDone(Job As HttpJob)
|
||||
Dim CAT_DP_CLASIF As String = records(RESULT.Columns.Get("CAT_DP_CLASIF"))
|
||||
Dim CAT_DP_PRECIO As String = records(RESULT.Columns.Get("CAT_DP_PRECIO"))
|
||||
Dim CAT_DP_PRECIO_SIMPTOS As String = records(RESULT.Columns.Get("CAT_DP_PRECIO_SIMPTOS"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_DETALLES_PAQ(CAT_DP_ALMACEN,CAT_DP_ID,CAT_DP_IDPROD,CAT_DP_TIPO,CAT_DP_PZAS,CAT_DP_USUARIO,CAT_DP_FECHA,CAT_DP_REGALO,CAT_DP_CLASIF,CAT_DP_PRECIO,CAT_DP_PRECIO_SIMPTOS) VALUES (?,?,?,?,?,?,?,?,?,?,?)", Array As Object (CAT_DP_ALMACEN,CAT_DP_ID,CAT_DP_IDPROD,CAT_DP_TIPO,CAT_DP_PZAS,CAT_DP_USUARIO,CAT_DP_FECHA,CAT_DP_REGALO,CAT_DP_CLASIF,CAT_DP_PRECIO,CAT_DP_PRECIO_SIMPTOS))
|
||||
Dim CAT_DP_PRECIOB As String = records(RESULT.Columns.Get("CAT_DP_PRECIOB"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_DETALLES_PAQ(CAT_DP_ALMACEN,CAT_DP_ID,CAT_DP_IDPROD,CAT_DP_TIPO,CAT_DP_PZAS,CAT_DP_USUARIO,CAT_DP_FECHA,CAT_DP_REGALO,CAT_DP_CLASIF,CAT_DP_PRECIO,CAT_DP_PRECIO_SIMPTOS,CAT_DP_PRECIOB) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (CAT_DP_ALMACEN,CAT_DP_ID,CAT_DP_IDPROD,CAT_DP_TIPO,CAT_DP_PZAS,CAT_DP_USUARIO,CAT_DP_FECHA,CAT_DP_REGALO,CAT_DP_CLASIF,CAT_DP_PRECIO,CAT_DP_PRECIO_SIMPTOS,CAT_DP_PRECIOB))
|
||||
Next
|
||||
Starter.skmt.TransactionSuccessful
|
||||
Starter.skmt.EndTransaction
|
||||
@@ -1500,10 +1596,7 @@ Sub JobDone(Job As HttpJob)
|
||||
EJECUTANDO = 0
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
If RESULT.Tag = "hist_datos" Then 'query tag
|
||||
If logger Then Log("TIEMPO hist_datos : " & ((DateTime.Now-inicioContador)/1000))
|
||||
Starter.skmt.BeginTransaction
|
||||
@@ -1534,10 +1627,7 @@ Sub JobDone(Job As HttpJob)
|
||||
EJECUTANDO = 0
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
If RESULT.Tag = "hist_rmi" Then 'query tag
|
||||
If logger Then Log("TIEMPO hist_rmi : " & ((DateTime.Now-inicioContador)/1000))
|
||||
For Each records() As Object In RESULT.Rows
|
||||
@@ -1566,10 +1656,7 @@ Sub JobDone(Job As HttpJob)
|
||||
EJECUTANDO = 0
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
If RESULT.Tag = "variables" Then 'query tag
|
||||
For Each records() As Object In RESULT.Rows
|
||||
Dim Cat_Va_Descripcion As String = records(RESULT.Columns.Get("CAT_VA_DESCRIPCION"))
|
||||
@@ -1577,10 +1664,7 @@ Sub JobDone(Job As HttpJob)
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object (Cat_Va_Descripcion, Cat_Va_Valor))
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
|
||||
If RESULT.Tag = "limite_abordo" Then 'query tag
|
||||
If logger Then Log("TIEMPO limite_abordo : " & ((DateTime.Now-inicioContador)/1000))
|
||||
For Each records() As Object In RESULT.Rows
|
||||
@@ -1594,10 +1678,7 @@ Sub JobDone(Job As HttpJob)
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
|
||||
If RESULT.Tag = "carga_encuesta" Then 'query tag
|
||||
If logger Then Log("TIEMPO carga_encuesta : " & ((DateTime.Now-inicioContador)/1000))
|
||||
For Each records() As Object In RESULT.Rows
|
||||
@@ -1612,10 +1693,7 @@ Sub JobDone(Job As HttpJob)
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_ENCUESTA_PREGUNTA (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 ) VALUES (?,?,?,?,?,?,?,?)", Array As Object (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))
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
If RESULT.Tag = "carga_encuesta_cliente" Then 'query tag
|
||||
If logger Then Log("TIEMPO carga_encuesta_cliente : " & ((DateTime.Now-inicioContador)/1000))
|
||||
For Each records() As Object In RESULT.Rows
|
||||
@@ -1624,10 +1702,7 @@ Sub JobDone(Job As HttpJob)
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_ENCUESTA_CLIENTE(HIST_ECD_IDGRUPO ,HIST_ECD_CLIENTE) VALUES (?,?)", Array As Object (HIST_ECD_IDGRUPO ,HIST_ECD_CLIENTE))
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
If RESULT.Tag = "valida_pedido" Then 'query tag
|
||||
If logger Then Log("TIEMPO valida_pedido : " & ((DateTime.Now-inicioContador)/1000))
|
||||
For Each records() As Object In RESULT.Rows
|
||||
@@ -1641,10 +1716,7 @@ Sub JobDone(Job As HttpJob)
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
If RESULT.Tag = "valida_pedido1" Then 'query tag
|
||||
For Each records() As Object In RESULT.Rows
|
||||
Dim CUANTOSP As Int = records(RESULT.Columns.Get("CUANTOSP"))
|
||||
@@ -1664,10 +1736,7 @@ Sub JobDone(Job As HttpJob)
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
If RESULT.Tag = "valida_pedidoc" Then 'query tag
|
||||
For Each records() As Object In RESULT.Rows
|
||||
Dim CUANTOSC As Int = records(RESULT.Columns.Get("CUANTOSC"))
|
||||
@@ -1679,10 +1748,7 @@ Sub JobDone(Job As HttpJob)
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
If RESULT.Tag = "valida_noventa" Then 'query tag
|
||||
For Each records() As Object In RESULT.Rows
|
||||
Dim CUANTOSN As Int = records(RESULT.Columns.Get("CUANTOSN"))
|
||||
@@ -1694,10 +1760,7 @@ Sub JobDone(Job As HttpJob)
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
If RESULT.Tag = "ins_pedido" Then 'query tag
|
||||
For Each records() As Object In RESULT.Rows
|
||||
PB2.Progress = PB2.Progress + 5
|
||||
@@ -1706,32 +1769,31 @@ Sub JobDone(Job As HttpJob)
|
||||
PB2.Progress = 100
|
||||
S_CP.Text = "VALIDANDO"
|
||||
End If
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
If RESULT.Tag = "version" Then 'query tag
|
||||
connecta.TextColor = Colors.White
|
||||
' Subs.logJobDoneResultados(RESULT)
|
||||
For Each records() As Object In RESULT.Rows
|
||||
Starter.skmt.ExecNonQuery("delete from VERSION")
|
||||
Dim CAT_VE_VERSION As String = records(RESULT.Columns.Get("CAT_VE_VERSION"))
|
||||
Dim CAT_RU_VERSION_REQUERIDA As String = records(RESULT.Columns.Get("CAT_RU_VERSION_REQUERIDA"))
|
||||
Log(">>>>>>> Version requerida: " & CAT_RU_VERSION_REQUERIDA & " - Actual: " & Application.VersionName & " --> " & Subs.comparaVersiones(CAT_RU_VERSION_REQUERIDA, Application.VersionName))
|
||||
Starter.skmt.ExecNonQuery("delete from VERSION")
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO VERSION(NOVERSION) VALUES (?)", Array As Object (CAT_VE_VERSION))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO VERSION(NOVERSION) VALUES (?)", Array As Object (CAT_RU_VERSION_REQUERIDA))
|
||||
Next
|
||||
If CAT_RU_VERSION_REQUERIDA = 0 Or Subs.comparaVersiones(CAT_RU_VERSION_REQUERIDA, Application.VersionName) = 0 Then
|
||||
connecta3
|
||||
Else
|
||||
Msgbox2("Es necesario actualizar la versión de la aplicación.", "VERSION INCORRECTA","Aceptar", "", "",Null) 'ignore
|
||||
' ExitApplication
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
If RESULT.Tag = "count_cli" Then 'query tag
|
||||
For Each records() As Object In RESULT.Rows
|
||||
COUNT_CLIE = records(RESULT.Columns.Get("COUNT_CLIE"))
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
If RESULT.Tag = "ruta" Then 'query tag
|
||||
e_ruta.Enabled = True
|
||||
' Log(RESULT)
|
||||
@@ -1761,10 +1823,7 @@ Sub JobDone(Job As HttpJob)
|
||||
End If
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
If RESULT.Tag = "usuario" Then 'query tag
|
||||
For Each records() As Object In RESULT.Rows
|
||||
Dim name2 As String = records(RESULT.Columns.Get("VALIDO"))
|
||||
@@ -1774,10 +1833,7 @@ Sub JobDone(Job As HttpJob)
|
||||
End If
|
||||
P1.Visible = False
|
||||
End If
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
If RESULT.Tag = "fecha" Then 'query tag
|
||||
For Each records() As Object In RESULT.Rows
|
||||
Starter.FECHA_HOY = records(RESULT.Columns.Get("FECHA"))
|
||||
@@ -1785,10 +1841,7 @@ Sub JobDone(Job As HttpJob)
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("FECHA",Starter.FECHA_HOY))
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
If RESULT.Tag = "hora" Then 'query tag
|
||||
For Each records() As Object In RESULT.Rows
|
||||
Starter.HORA = records(RESULT.Columns.Get("HORA"))
|
||||
@@ -1800,10 +1853,7 @@ Sub JobDone(Job As HttpJob)
|
||||
MsgboxAsync("La hora del equipo NO coincide con la hora del servidor, es necesario corregirla", "AVISO IMPORTANTE")
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
If RESULT.Tag = "folio" Then 'query tag
|
||||
If logger Then Log("TIEMPO folio : " & ((DateTime.Now-inicioContador)/1000))
|
||||
For Each records() As Object In RESULT.Rows
|
||||
@@ -1812,11 +1862,8 @@ Sub JobDone(Job As HttpJob)
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("FOLIO",FOLIO))
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
'Perfil
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
' Perfil
|
||||
If RESULT.Tag = "perfil" Then 'query tag
|
||||
For Each records() As Object In RESULT.Rows
|
||||
Dim PERFIL As String = records(RESULT.Columns.Get("PERFIL"))
|
||||
@@ -1824,11 +1871,8 @@ Sub JobDone(Job As HttpJob)
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("PERFIL",PERFIL))
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
'Marcas
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
' Marcas
|
||||
If RESULT.Tag = "marcas" Then 'query tag
|
||||
If logger Then Log("TIEMPO marcas : " & ((DateTime.Now-inicioContador)/1000))
|
||||
For Each records() As Object In RESULT.Rows
|
||||
@@ -1837,11 +1881,8 @@ Sub JobDone(Job As HttpJob)
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("MARCAS",MARCAS))
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
' SUCURSAL
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
' SUCURSAL
|
||||
If RESULT.Tag = "sucursal" Then 'query tag
|
||||
For Each records() As Object In RESULT.Rows
|
||||
Dim SUCURSAL As String = records(RESULT.Columns.Get("SUCURSAL"))
|
||||
@@ -1849,10 +1890,7 @@ Sub JobDone(Job As HttpJob)
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("SUCURSAL",SUCURSAL))
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
If RESULT.Tag = "placas" Then 'query tag
|
||||
For Each records() As Object In RESULT.Rows
|
||||
Dim PLACAS As String = records(RESULT.Columns.Get("PLACAS"))
|
||||
@@ -1860,10 +1898,7 @@ Sub JobDone(Job As HttpJob)
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("PLACAS",PLACAS))
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
If RESULT.Tag = "SEMANA" Then 'query tag
|
||||
If logger Then Log("TIEMPO SEMANA : " & ((DateTime.Now-inicioContador)/1000))
|
||||
For Each records() As Object In RESULT.Rows
|
||||
@@ -1872,10 +1907,7 @@ Sub JobDone(Job As HttpJob)
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("SEMANA",Cat_Va_Valor))
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
If RESULT.Tag = "dia_visita" Then 'query tag
|
||||
For Each records() As Object In RESULT.Rows
|
||||
Dim DIA_VISITA As String = records(RESULT.Columns.Get("DIA_VISITA"))
|
||||
@@ -1884,11 +1916,8 @@ Sub JobDone(Job As HttpJob)
|
||||
'Msgbox(DIA_VISITA, "") 'ignore
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
'CUOTAS
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
' CUOTAS
|
||||
If RESULT.Tag = "CUOTAS" Then 'query tag
|
||||
For Each records() As Object In RESULT.Rows
|
||||
Dim HC_RUTA As String = records(RESULT.Columns.Get("HC_RUTA"))
|
||||
@@ -1907,12 +1936,8 @@ Sub JobDone(Job As HttpJob)
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO HIST_CUOTAS(HC_RUTA, HC_CUOTA1,HC_CUOTA2,HC_CUOTA3,HC_CUOTA4,HC_CUOTA5,HC_CUOTA6,HC_META1,HC_META2,HC_META3,HC_META4,HC_META5,HC_META6) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (HC_RUTA, HC_CUOTA1,HC_CUOTA2,HC_CUOTA3,HC_CUOTA4,HC_CUOTA5,HC_CUOTA6,HC_META1,HC_META2,HC_META3,HC_META4,HC_META5,HC_META6))
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
|
||||
'Cambios
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
' Cambios
|
||||
If RESULT.Tag = "cat_cambios" Then 'query tag
|
||||
For Each records() As Object In RESULT.Rows
|
||||
Dim CAMBIOS As String = records(RESULT.Columns.Get("CAT_VA_VALOR"))
|
||||
@@ -1920,11 +1945,8 @@ Sub JobDone(Job As HttpJob)
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("CAMBIOS",CAMBIOS))
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
'Precios
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
' Precios
|
||||
If RESULT.Tag = "precios" Then 'query tag
|
||||
If logger Then Log("TIEMPO precios : " & ((DateTime.Now-inicioContador)/1000))
|
||||
' Subs.cronoX("Precios", 1)
|
||||
@@ -1951,11 +1973,8 @@ Sub JobDone(Job As HttpJob)
|
||||
' If Logger Then LogColor($"///////////////// ${Subs.cronoX("Precios", 2)} ///////////////////////////"$, Colors.red)
|
||||
' ToastMessageShow("LISTA DE PRECIOS OK LISTA DE PRECIOS OK", True)
|
||||
End If
|
||||
End If
|
||||
|
||||
'Candado Fin Dia
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
' Candado Fin Dia
|
||||
If RESULT.Tag = "pass_fin_dia" Then 'query tag
|
||||
For Each records() As Object In RESULT.Rows
|
||||
Dim nuevaContrasena As String = records(RESULT.Columns.Get("CAR_VA_VALOR3"))
|
||||
@@ -1963,11 +1982,8 @@ Sub JobDone(Job As HttpJob)
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("FINDIA_PASS", nuevaContrasena))
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
'Exhibidores
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
' Exhibidores
|
||||
If RESULT.Tag = "exhibidores" Then 'query tag
|
||||
If logger Then Log("TIEMPO exhibidores : " & ((DateTime.Now-inicioContador)/1000))
|
||||
Starter.skmt.BeginTransaction
|
||||
@@ -1980,11 +1996,8 @@ Sub JobDone(Job As HttpJob)
|
||||
Starter.skmt.TransactionSuccessful
|
||||
Starter.skmt.EndTransaction
|
||||
End If
|
||||
End If
|
||||
|
||||
'HIST_ENCUESTA2
|
||||
If Job.JobName = "DBRequest" Then
|
||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
||||
' HIST_ENCUESTA2
|
||||
If RESULT.Tag = "HIST_ENCUESTA2" Then 'query tag
|
||||
If logger Then Log("TIEMPO HIST_ENCUESTA2 : " & ((DateTime.Now-inicioContador)/1000))
|
||||
Starter.skmt.BeginTransaction
|
||||
@@ -2081,6 +2094,42 @@ Sub JobDone(Job As HttpJob)
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_RMI (CAT_ID, CAT_DESCRIPCION, CAT_MONTO) VALUES (?,?,?)", Array As Object (CAT_ID, CAT_DESCRIPCION, CAT_MONTO))
|
||||
Next
|
||||
End If
|
||||
|
||||
If RESULT.Tag = "semanaCalLaboral" Then 'query tag
|
||||
' Subs.logJobDoneResultados(RESULT)
|
||||
For Each records() As Object In RESULT.Rows
|
||||
Dim SEMANA As String = records(RESULT.COLUMNS.GET("SEMANA_RELATIVA"))
|
||||
Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("SEM_CAL_LABORAL"))
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("SEM_CAL_LABORAL", SEMANA))
|
||||
Next
|
||||
End If
|
||||
|
||||
If RESULT.Tag = "trendSpending" Then 'query tag
|
||||
' Subs.logJobDoneResultados(RESULT)
|
||||
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"))
|
||||
Dim HIST_TSS_TIPO As String = records(RESULT.COLUMNS.GET("HIST_TSS_TIPO"))
|
||||
Dim HIST_TSS_SEMANA1 As String = records(RESULT.COLUMNS.GET("HIST_TSS_SEMANA1"))
|
||||
Dim HIST_TSS_SEMANA1_ACUM As String = records(RESULT.COLUMNS.GET("HIST_TSS_SEMANA1_ACUM"))
|
||||
Dim HIST_TSS_SEMANA2 As String = records(RESULT.COLUMNS.GET("HIST_TSS_SEMANA2"))
|
||||
Dim HIST_TSS_SEMANA2_ACUM As String = records(RESULT.COLUMNS.GET("HIST_TSS_SEMANA2_ACUM"))
|
||||
Dim HIST_TSS_SEMANA3 As String = records(RESULT.COLUMNS.GET("HIST_TSS_SEMANA3"))
|
||||
Dim HIST_TSS_SEMANA3_ACUM As String = records(RESULT.COLUMNS.GET("HIST_TSS_SEMANA3_ACUM"))
|
||||
Dim HIST_TSS_SEMANA4 As String = records(RESULT.COLUMNS.GET("HIST_TSS_SEMANA4"))
|
||||
Dim HIST_TSS_SEMANA4_ACUM As String = records(RESULT.COLUMNS.GET("HIST_TSS_SEMANA4_ACUM"))
|
||||
Dim HIST_TSS_SEMANA5 As String = records(RESULT.COLUMNS.GET("HIST_TSS_SEMANA5"))
|
||||
Dim HIST_TSS_SEMANA5_ACUM As String = records(RESULT.COLUMNS.GET("HIST_TSS_SEMANA5_ACUM"))
|
||||
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_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
|
||||
LogColor("GUARDAMOS INFO DE TRADE SPENDING", Colors.Blue)
|
||||
' Subs.logJobDoneResultados(RESULT)
|
||||
ts.Initialize(Me, "ts", Starter.skmt)
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
|
||||
@@ -2095,13 +2144,26 @@ Sub JobDone(Job As HttpJob)
|
||||
' If Starter.Logger Then Log($"tiempo Total "${Job.Tag}": ${((DateTime.Now - inicioContador)/1000)}"$)
|
||||
|
||||
If CARGA = "CARGAR" And S_CP.Text = "LISTO" And S_CC.Text = "LISTO" And S_CH.Text = "LISTO" Then
|
||||
LogColor("TERMINAMOS", Colors.red)
|
||||
' LogColor("TERMINAMOS", Colors.red)
|
||||
B_OK_PAS.Text = "OK"
|
||||
copiaCatGPPromocion
|
||||
End If
|
||||
|
||||
Log(reqManager.requestTimes(Job.Tag))
|
||||
' Log($"tiempo Total "${Job.Tag}": ${((DateTime.Now - inicioContador)/1000)}"$)
|
||||
' reqManager.PrintTable(RESULT)2
|
||||
' reqManager.PrintTable(RESULT)2
|
||||
End Sub
|
||||
|
||||
Sub copiaCatGPPromocion
|
||||
Log(">>>>>>>>> COPIAMOS CAT_GP_PROMOCION a CAT_GUNAPROD2")
|
||||
Starter.skmt.ExecNonQuery("UPDATE CAT_GUNAPROD2 SET CAT_GP_PROMOCION = '0'")
|
||||
Dim c3 As Cursor = Starter.skmt.ExecQuery("select CAT_GP_ID, CAT_GP_PROMOCION from CAT_GUNAPROD")
|
||||
If c3.RowCount > 0 Then
|
||||
For h = 0 To c3.RowCount - 1
|
||||
c3.Position = h
|
||||
Starter.skmt.ExecNonQuery($"update cat_gunaprod2 set cat_gp_promocion = '${c3.GetString("CAT_GP_PROMOCION")}' where cat_gp_id = '${c3.GetString("CAT_GP_ID")}'"$)
|
||||
Next
|
||||
End If
|
||||
End Sub
|
||||
|
||||
Private Sub B4XPage_CloseRequest As ResumableSub
|
||||
@@ -2194,10 +2256,23 @@ Sub connecta_Click
|
||||
|
||||
reqManager.trackInit
|
||||
|
||||
linker.VerifyAndLinkDevice(Subs.traeAlmacen, Subs.traeRuta)
|
||||
|
||||
' Else
|
||||
' Msgbox("LA RUTA NO ES CORRECTA","") 'ignore
|
||||
' End If
|
||||
End Sub
|
||||
|
||||
Sub connecta2
|
||||
Dim cmd As DBCommand
|
||||
cmd.Initialize
|
||||
cmd.Name = "select_version_KELL"
|
||||
cmd.Parameters = Array As Object(ALMACEN, e_ruta.text)
|
||||
reqManager.ExecuteQuery(cmd , 0, "version")
|
||||
End Sub
|
||||
|
||||
|
||||
Sub connecta3
|
||||
Dim cmd As DBCommand
|
||||
cmd.Initialize
|
||||
cmd.Name = "select_ruta4_KELL"
|
||||
@@ -2208,9 +2283,6 @@ Sub connecta_Click
|
||||
If e_ruta.Text = "KMTSKLL1" Then e_ruta.Enabled = True
|
||||
ToastMessageShow("Validando Conexión." , False)
|
||||
ruta_valida = e_ruta.Text
|
||||
' Else
|
||||
' Msgbox("LA RUTA NO ES CORRECTA","") 'ignore
|
||||
' End If
|
||||
End Sub
|
||||
|
||||
Private Sub connecta_LongClick
|
||||
@@ -2273,6 +2345,9 @@ 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 TREND_SPENDING")
|
||||
Starter.skmt.ExecNonQuery("delete from HIST_TREND_SPENDING_SEMANAL")
|
||||
Starter.skmt.ExecNonQuery("delete from VERSIONES")
|
||||
|
||||
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"))
|
||||
@@ -3366,7 +3441,7 @@ Sub descargaCartaPorte
|
||||
' cartaPortePDF = "CPORTE2_100_Prueba.pdf" 'Para pruebas
|
||||
' Log(cartaPortePDF)
|
||||
'Para el servidor
|
||||
Private pdfServer As String = "keymon.lat"
|
||||
Private pdfServer As String = "keymon.net"
|
||||
If Starter.DBReqServer.IndexOf("10.0.0.205") > -1 Then pdfServer = "10.0.0.205"
|
||||
' Log(pdfServer)
|
||||
pdfURL = $"https://${pdfServer}/CartaPorteKelloggs/CartaPorteMovil${DateTime.Date(DateTime.now)}/${cartaPortePDF}"$
|
||||
@@ -3820,4 +3895,39 @@ End Sub
|
||||
Private Sub l_efectiva_Click
|
||||
l_descripcion.Text = "Clientes visitados / Clientes totales"
|
||||
l_descripcion.Visible = True
|
||||
End Sub
|
||||
|
||||
Sub Linker_Response(Status As String) ' << AÑADE ESTE SUB [New Query]
|
||||
If Starter.Logger Then LogColor($"Respuesta de DeviceLinker para la verificación del dispositivo: ${Status}"$, Colors.Magenta) '
|
||||
Select Status
|
||||
Case "UUID_ERROR"
|
||||
Log("Error interno al obtener el identificador único del dispositivo.")
|
||||
ToastMessageShow("Error interno al obtener el identificador único del dispositivo.", True)
|
||||
Case "HTTP_ERROR"
|
||||
LogColor("Error HTTP al verificar el dispositivo: " & linker.lastJobDoneError, Colors.Red)
|
||||
ToastMessageShow("Error de conexión al servidor durante la verificación del dispositivo.", True)
|
||||
Case "SERVER_LOGIC_ERROR"
|
||||
Log("El servidor no proporcionó un estado de verificación válido. Contacte a soporte.")
|
||||
ToastMessageShow("El servidor no proporcionó un estado de verificación válido. Contacte a soporte.", True)
|
||||
Case "OK"
|
||||
Log("Dispositivo ligado y verificado exitosamente.")
|
||||
ToastMessageShow("Dispositivo verificado y ligado correctamente.", False)
|
||||
' Aquí puedes añadir lógica adicional si la verificación es exitosa, por ejemplo, habilitar ciertos botones o continuar con el flujo normal.
|
||||
connecta2
|
||||
' Case "NO_REGISTRADO"
|
||||
' Log("Dispositivo NO registrado.")
|
||||
' ToastMessageShow("Dispositivo NO registrado.", False)
|
||||
Case "REGISTRO_NUEVO"
|
||||
Log("¡¡Registro nuevo!!")
|
||||
connecta2
|
||||
ToastMessageShow("¡¡Registro nuevo!!", False)
|
||||
Case "YA_REGISTRADO"
|
||||
Log("¡¡El dispositivo ya esta registrado con otra ruta!!")
|
||||
ToastMessageShow("¡¡El dispositivo ya esta registrado con otra ruta!!", True)
|
||||
Msgbox2("Ruta registrada en otro dispositivo", "RUTA INCORRECTA","Aceptar", "", "",Null) 'ignore
|
||||
Case Else ' Otros estados que tu servidor pueda devolver (ej. "UNAUTHORIZED", "PENDING_APPROVAL")
|
||||
Log($"Estado de verificación del dispositivo: ${Status}"$)
|
||||
ToastMessageShow($"Verificación del dispositivo: ${Status}"$, True)
|
||||
' Puedes decidir si bloquear la funcionalidad o mostrar un mensaje específico según el estado.
|
||||
End Select
|
||||
End Sub
|
||||
@@ -9,6 +9,7 @@ Sub Class_Globals
|
||||
Private xui As XUI 'ignore
|
||||
Dim ruta As String
|
||||
Dim kh As kms_helperSubs
|
||||
Dim ts As C_TrendSpending
|
||||
Dim q_buscar As String
|
||||
Dim forzarBusqueda As Boolean = False
|
||||
Dim skmt As SQL
|
||||
@@ -100,14 +101,19 @@ Sub Class_Globals
|
||||
Dim dispAbordo As String
|
||||
Private l_avisoAbordo As Label
|
||||
Private l_infoPedido As Label
|
||||
Dim promosC As Promociones
|
||||
' 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.
|
||||
Public Sub Initialize As Object
|
||||
kh.Initialize(Me, "kh", Starter.skmt)
|
||||
promosC.Initialize(Me, "promosC", Starter.skmt)
|
||||
ts.Initialize(Me, "ts", Starter.skmt)
|
||||
' promosC.Initialize(Me, "promosC", Starter.skmt)
|
||||
Return Me
|
||||
End Sub
|
||||
|
||||
@@ -144,7 +150,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 +167,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
|
||||
@@ -234,7 +240,7 @@ Sub B4XPage_Appear
|
||||
' Log(Starter.tipov)
|
||||
c = Starter.skmt.ExecQuery("select count(*) as hayPromos from promos_comp")
|
||||
c.Position = 0
|
||||
' Log(Subs.revisaImpresa)
|
||||
Log("revisaImpresa: " & Subs.revisaImpresa)
|
||||
If c.GetInt("hayPromos") > 0 And Subs.traeCliente <> 0 And Subs.revisaImpresa = False Then
|
||||
lv_catalogos.AddSingleLine("PROMOS")
|
||||
End If
|
||||
@@ -245,7 +251,7 @@ Sub B4XPage_Appear
|
||||
' l_totProds.Width = Root.Width * 0.19
|
||||
' l_total.Left = l_totProds.Width + 20
|
||||
' l_total.Width = Root.Width * 0.25
|
||||
|
||||
|
||||
' Log(Subs.traeTotalesClienteActual)
|
||||
Dim m As Map = Subs.traeTotalesClienteActual
|
||||
prodsPedidoActual = m.Get("productos")
|
||||
@@ -280,6 +286,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 = ts.traeInfoTrendSpending
|
||||
TS_RMI = Regex.Split(",", mx.Get("RMI"))
|
||||
TS_DESCUENTOS = Regex.Split(",", mx.Get("DESCUENTOS"))
|
||||
TS_BONIFICACIONES = Regex.Split(",", mx.Get("BONIFICACIONES"))
|
||||
Log(">>>>>>>>>>>>> TRADESPENDING: " & 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
|
||||
@@ -300,6 +314,7 @@ Sub lv_catalogos_ItemClick (Position As Int, Value As Object)
|
||||
If hayPedido Then p_botonesVenta.Visible = True 'Si ya hay pedido, entonces mostramos los botones.
|
||||
l_mDisponible.Visible = False
|
||||
Else
|
||||
Log("ENTRAMOS A PROMOS")
|
||||
clv_prods_ll.AsView.Visible = False
|
||||
lv_promos.Visible = True
|
||||
lfila.text = "PROMOCIONES"
|
||||
@@ -342,7 +357,6 @@ Sub lv_catalogos_ItemClick (Position As Int, Value As Object)
|
||||
Log(c2.GetString("CAT_PA_PORCENTAJE_PAQUETE"))
|
||||
If c2.GetString("CAT_PA_TIPO_PROMONTO") = "0" Then ' Si NO es promo por monto entonces la mostamos.
|
||||
lv_promos.AddTwoLines(c2.GetString("CAT_GP_NOMBRE"),"# " & c2.GetString("CAT_GP_ALMACEN") & " $ " & c2.GetString("CAT_GP_PRECIO") & " F:" & tm.Get("mp").As(Map).Get("prodsFijosCant") & " V:" & tm.Get("mp").As(Map).Get("prodsVariablesCant"))
|
||||
|
||||
End If
|
||||
End If
|
||||
Next
|
||||
@@ -585,12 +599,38 @@ 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)
|
||||
' 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 lineas 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
|
||||
' #######################
|
||||
|
||||
' ######## Trend Spending - Poner estas lineas antes de que si es negativo se ponga en CERO.
|
||||
If lfila.Text = "PRODUCTOS" Then
|
||||
Log(">>>>>>>>>> PRODUCTOS <<<<<<<<<<<<<<")
|
||||
ts.trendSpending("prodMenos", "descuentos", clienteId, id, laCant.Text, 0)
|
||||
else If lfila.Text = "RMI" Then
|
||||
ts.trendSpending("prodMenos", "rmi", clienteId, id, laCant.Text, 0)
|
||||
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 +644,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
|
||||
@@ -626,6 +667,7 @@ Sub b_prodMenos_Click
|
||||
End Sub
|
||||
|
||||
Sub b_prodMas_Click
|
||||
Private logger As Boolean = True
|
||||
Root.RequestFocus
|
||||
etCantHasFocus = False
|
||||
Private buttonTag As String = Sender.As(Button).tag
|
||||
@@ -637,59 +679,129 @@ Sub b_prodMas_Click
|
||||
' Log("========= " & pnl0.Tag)
|
||||
' Log("========= " & pnl.Tag)
|
||||
' Log("========= " & pnl.GetView(1).Tag)
|
||||
Private existencias As String = clv_prods_ll.GetValue(index).As(Map).Get("almacen")
|
||||
Log($"Existencias: ${existencias}"$)
|
||||
' Private existencias As String = clv_prods_ll.GetValue(index).As(Map).Get("almacen")
|
||||
Dim laCant As B4XView = pnl.GetView(2).GetView(2)
|
||||
If laCant.Text = "" 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 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")}"$)
|
||||
' Private tmpMap As Map = clv_prods_ll.GetValue(index).As(Map)
|
||||
' Private inv As Int = clv_prods_ll.GetValue(index).As(Map).Get("almacen")
|
||||
' Log($"Existencias: ${inv}, inv: ${Subs.traeinventario(pnl.GetView(1).Tag)}"$)
|
||||
Private inv As Int = Subs.traeinventario(pnl.GetView(1).Tag)
|
||||
' Log($"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
|
||||
' NOTA:
|
||||
' Cuando se haga la funcion debemos de enviar si es bonificacion o rmi y el regreso tene que ser "bonificacionesMaximas" y "laBonificacion"
|
||||
' 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 tsMonto As String = 0
|
||||
Private tsMaximas As Int = 0
|
||||
If lfila.Text = "PRODUCTOS" Then
|
||||
Log(">>>>>>>>>> PRODUCTOS <<<<<<<<<<<<<<")
|
||||
Private tsRestantes As String = (TS_DESCUENTOS(0) - TS_DESCUENTOS(1) - ts.traeAcumuladoHoyTS("descuentos")) ' Traemos monto restante de Trend Spending para bonificaciones.
|
||||
tsMonto = NumberFormat2(ts.traePrecio(id)*(ts.traeDescXSku(clienteId, id)/100), 1, 2, 2, False) ' Traemos el monto (descuento total) del producto actual.
|
||||
tsMaximas = ((laCant.text * tsMonto) + tsRestantes) / tsMonto ' Traemos la cantidad maxima de descuentos por presupuesto de Trend Spending.
|
||||
' Log("tsRestantes: " & tsRestantes)
|
||||
' Log("tsMonto: " & tsMonto)
|
||||
Log("tsMaximas: " & tsMaximas)
|
||||
' Log("tsMaximas2: " & ts.traeMaximas("descuentos", clienteId, id, laCant.Text, ""))
|
||||
' Log("tsMonto2: " & ts.traeMonto(clienteId, id))
|
||||
Else if lfila.Text = "RMI" Then
|
||||
Log(">>>>>>>>>> RMI <<<<<<<<<<<<<<")
|
||||
Private tsRestantes As String = (TS_RMI(0) - TS_RMI(1) - ts.traeAcumuladoHoyTS("rmi")) ' Traemos monto restante de Trend Spending para RMIs.
|
||||
tsMonto = NumberFormat2(ts.traePrecioRMI(id), 1, 2, 2, False) ' Traemos el monto (precio) del RMI actual.
|
||||
tsMaximas = ((laCant.text * tsMonto) + tsRestantes) / tsMonto ' Traemos la cantidad maxima de RMIs por presupuesto de Trend Spending.
|
||||
' Log(tsMaximas)
|
||||
' Log(tsMonto)
|
||||
End If
|
||||
' ##########################
|
||||
|
||||
' 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($"${kh.traeLimiteCredito(Subs.traeCliente)} < ${kh.totalPedido + precio}"$)
|
||||
' Log(kh.traeLimiteCredito(Subs.traeCliente) < (kh.totalPedido + precio))
|
||||
If buttonTag = "vendido" Then
|
||||
|
||||
' Log(inv > 0)
|
||||
' Log(tsMonto.As(Int) = 0)
|
||||
|
||||
If laCant.Text + 1 > tsMaximas Then 'lfila.Text = "PRODUCTOS" and
|
||||
ToastMessageShow("¡Presupuesto de descuentos alcanzado!", False)
|
||||
End If
|
||||
If 1 = 2 And buttonTag = "vendido" And lfila.Text = "PRODUCTOS" Then
|
||||
' Log(11)
|
||||
' 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))
|
||||
inv = inv - 1
|
||||
' laCant.Text = $"$1.0{laCant.Text+1}"$
|
||||
laCant.Text = NumberFormat2((laCant.Text + 1), 1, 0, 0, False)
|
||||
ts.trendSpending("prodMas", "descuentos", clienteId, id, laCant.Text, inv)
|
||||
' Log(clv_prods_ll.GetValue(index).As(Map))
|
||||
End If
|
||||
else if kh.traeLimiteCredito(Subs.traeCliente) < (kh.totalPedido + precio) Then
|
||||
else if kh.traeLimiteCredito(Subs.traeCliente) < (kh.totalPedido + precio) And lfila.Text = "PRODUCTOS" Then
|
||||
' Log(33)
|
||||
Log($"#######################${CRLF}#### LIMITE CREDITO SUPERADO${CRLF}#######################"$)
|
||||
ToastMessageShow("LIMITE DE CREDITO SUPERADO", False)
|
||||
else If laCant.Text + 1 <= inv And lfila.Text = "PRODUCTOS" Then
|
||||
' LogColor(inv, Colors.blue)
|
||||
' laCant.Text = $"$1.0{laCant.Text + 1}"$
|
||||
else If inv > 0 And tsMonto.As(Int) = 0 And lfila.Text = "PRODUCTOS" Then
|
||||
' Log(55)
|
||||
laCant.Text = NumberFormat2((laCant.Text + 1), 1, 0, 0, False)
|
||||
' Log(kh.totalPedido)
|
||||
else If lfila.Text = "RMI" And laCant.Text + 1 <= inv And (kh.totalPedido - precio > 1) Then
|
||||
ts.trendSpending("prodMas", "descuentos", clienteId, id, laCant.Text, inv)
|
||||
else If inv > 0 And tsMonto > 0 And laCant.Text < tsMaximas And lfila.Text = "PRODUCTOS" Then
|
||||
' Log(44)
|
||||
laCant.Text = NumberFormat2((laCant.Text + 1), 1, 0, 0, False)
|
||||
ts.trendSpending("prodMas", "descuentos", clienteId, id, laCant.Text, inv)
|
||||
else If lfila.Text = "RMI" And laCant.Text >= tsMaximas Then
|
||||
ToastMessageShow("El presupuesto de RMI no permite agregar mas productos!!", False)
|
||||
else If lfila.Text = "RMI" And laCant.Text < tsMaximas And (kh.totalPedido - precio > 1) Then
|
||||
' Log(66)
|
||||
ts.trendSpending("prodMas", "rmi", clienteId, id, laCant.Text, inv)
|
||||
LogColor(inv, Colors.blue)
|
||||
' laCant.Text = $"$1.0{laCant.Text + 1}"$
|
||||
laCant.Text = NumberFormat2((laCant.Text + 1), 1, 0, 0, False)
|
||||
Log(kh.totalPedido)
|
||||
else if kh.totalPedido < 1 Then
|
||||
' Log(77)
|
||||
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
|
||||
|
||||
Log(99)
|
||||
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)}"$)
|
||||
Log($"TotalPedido: ${NumberFormat2(kh.totalPedido,1,2,2,False)}"$)
|
||||
If kh.totalPedido < 0.01 Then
|
||||
etCantHasFocus = False
|
||||
@@ -698,7 +810,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
|
||||
@@ -737,17 +849,19 @@ Sub b_prodMas_Click
|
||||
End Sub
|
||||
|
||||
Private Sub et_pCant_TextChanged (Old As String, New As String)
|
||||
' LogColor($"txt changed: ${Old}|${New}, hasfocus=${etCantHasFocus}"$,Colors.Magenta)
|
||||
' If Not(Old = "0" And New = "") And etCantHasFocus Then cuentaProds
|
||||
' Log($"${Old}|${New}"$)
|
||||
If etCantHasFocus = True Then
|
||||
Try
|
||||
LogColor($"txt changed: ${Old}|${New}, hasfocus=${etCantHasFocus}"$,Colors.Magenta)
|
||||
Dim index As Int = clv_prods_ll.GetItemFromView(Sender)
|
||||
Dim pnl0 As B4XView = clv_prods_ll.GetPanel(index)
|
||||
Dim pnl As B4XView = pnl0.GetView(0)
|
||||
Private existencias As String = clv_prods_ll.GetValue(index).As(Map).Get("almacen")
|
||||
Private existencias As String ' = clv_prods_ll.GetValue(index).As(Map).Get("almacen")
|
||||
Dim laCant As B4XView = pnl.GetView(2).GetView(2)
|
||||
Private id As String=clv_prods_ll.GetValue(index).As(Map).Get("id")
|
||||
existencias = Subs.traeinventario(id)
|
||||
Log($"Existencias: ${Subs.traeinventario(id)}"$)
|
||||
Private precio As String=clv_prods_ll.GetValue(index).As(Map).Get("precio")
|
||||
Log("++++++++++ " & precio)
|
||||
Dim tempTot As String = kh.totalPedido
|
||||
@@ -756,12 +870,15 @@ Private Sub et_pCant_TextChanged (Old As String, New As String)
|
||||
disp = NumberFormat2(disp, 1, 0, 0, False)
|
||||
If existencias = "" Then existencias = 0
|
||||
existencias = NumberFormat2(existencias, 1, 0, 0, False)
|
||||
Log($"${laCant.text}, ${precio}, DISPONIBLES: ${disp}"$)
|
||||
Private inv As String=clv_prods_ll.GetValue(index).As(Map).Get("almacen")
|
||||
Log($"laCant: ${laCant.text}, Precio: ${precio}, DISPONIBLES: ${disp}"$)
|
||||
' Private inv As String=clv_prods_ll.GetValue(index).As(Map).Get("almacen")
|
||||
If(New = "" Or New = Null) Then New = 0
|
||||
If(New > invTotal) Then
|
||||
Sender.As(EditText).text = invTotal
|
||||
End If
|
||||
Log($"Nuevo: ${New}, InvTotal: ${invTotal}"$)
|
||||
' If(New >= invTotal) Then
|
||||
' Log("Se pasa!!")
|
||||
' etCantHasFocus = False
|
||||
' Sender.As(EditText).text = invTotal
|
||||
' End If
|
||||
Private almacenX As String = Subs.traeAlmacen
|
||||
Private nombreX As String = Subs.traeProdNombre(id)
|
||||
Private precioX As String = precio
|
||||
@@ -771,38 +888,60 @@ Private Sub et_pCant_TextChanged (Old As String, New As String)
|
||||
precioX = precioX * -1
|
||||
Log("RMI")
|
||||
Else
|
||||
' elProd = Subs.traeProdNombre(id)
|
||||
' elProd = Subs.traeProdNombre(id)
|
||||
Log("NO RMI")
|
||||
End If
|
||||
' Log($"inventario=${inv}"$)
|
||||
' Dim tmpCant As String = laCant.text
|
||||
If laCant.Text = "" Then laCant.Text = "0"
|
||||
Log("======== " & Sender.As(EditText).text & "|" & laCant.text & "|" & New & "|" & existencias)
|
||||
If laCant.Text > existencias Or New > existencias Then
|
||||
Log(888)
|
||||
Log($"Ponemos laCant en: ${existencias}"$)
|
||||
' laCant.Text = ""
|
||||
laCant.text = existencias
|
||||
Log($">>>>> LACANT=${laCant.Text}"$)
|
||||
Log("======== laCant: " & Sender.As(EditText).text & " | New: " & New & " | Existencias: " & existencias & " ========")
|
||||
If laCant.Text > invTotal Or New > invTotal Then
|
||||
Log("Se pasa!!")
|
||||
Log($"Ponemos laCant en: ${invTotal}"$)
|
||||
laCant.text = invTotal
|
||||
' etCantHasFocus = True
|
||||
End If
|
||||
|
||||
' If New < existencias Then
|
||||
Log(999)
|
||||
Private limCred As Double = kh.traeLimiteCredito(Subs.traeCliente)
|
||||
' Log($"${NumberFormat(limCred,1,2)} < ${kh.totalPedido + (precio*laCant.text)}"$)
|
||||
' Log(NumberFormat2(limCred,1,0,0,False))
|
||||
' limCred = NumberFormat2(limCred,1,0,0,False)
|
||||
Log((kh.totalPedido + (precio*laCant.text)))
|
||||
Log("|" & (limCred < (kh.totalPedido + (precio*laCant.text))) & "|")
|
||||
Log("TotalPedido + actual: " &( kh.totalPedido + (precio*laCant.text)))
|
||||
Log("| Limite de crédito superado: " & (limCred < (kh.totalPedido + (precio*laCant.text))) & " |")
|
||||
If limCred < (kh.totalPedido + (precio*laCant.text)) Then
|
||||
Log($"#######################${CRLF}#### LIMITE CREDITO SUPERADO${CRLF}#######################"$)
|
||||
ToastMessageShow("LIMITE DE CREDITO SUPERADO", False)
|
||||
laCant.text = 0
|
||||
Else
|
||||
Log("#### LIMITE DE CREDITO")
|
||||
' Else
|
||||
' Log("#### LIMITE DE CREDITO")
|
||||
End If
|
||||
' End If
|
||||
|
||||
'######## Trend Spending
|
||||
If lfila.Text = "PRODUCTOS" Then
|
||||
Private tsMonto As String = NumberFormat2(ts.traePrecio(id)*(ts.traeDescXSku(clienteId, id)/100), 1, 2, 2, False)
|
||||
Private tsRestantes As String = (TS_DESCUENTOS(0) - TS_DESCUENTOS(1) - ts.traeAcumuladoHoyTS("descuentos"))
|
||||
Log("tsMonto: " & tsMonto)
|
||||
Log("Monto del presupuesto disponible: " & tsRestantes)
|
||||
' Private tsMaximas As Int = (tsRestantes/tsMonto).As(Int)
|
||||
' Log($"tsMaximas: ${tsMaximas}"$)
|
||||
Log($"tsMaximas: ${ts.tsMaximas}"$)
|
||||
If tsMonto > 0 Then
|
||||
If New > ts.tsMaximas Then
|
||||
If invTotal > ts.tsMaximas Then
|
||||
laCant.Text = ts.tsMaximas
|
||||
Else
|
||||
laCant.Text = invTotal
|
||||
End If
|
||||
End If
|
||||
Else if tsMonto = 0 Then
|
||||
If laCant.Text > invTotal Or New > invTotal Then
|
||||
laCant.text = invTotal
|
||||
End If
|
||||
End If
|
||||
ts.modTrendSpending("resta", "descuentos", ((New * tsMonto) - (Old * tsMonto)))
|
||||
Log("tsAcumulado: " & ts.traeAcumuladoHoyTS("descuentos"))
|
||||
End If
|
||||
'##########################
|
||||
|
||||
' 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)
|
||||
@@ -839,6 +978,23 @@ 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")
|
||||
If lfila.Text = "PRODUCTOS" Then
|
||||
'######## Trend Spending
|
||||
Private laBonificacion As String = ts.traePrecio(id)*(ts.traeDescXSku(clienteId, id)/100)
|
||||
If laBonificacion > 0 And HasFocus Then
|
||||
Log("LA BONIFICACION: " & laBonificacion)
|
||||
Private tsRestantes As String = (TS_DESCUENTOS(0) - TS_DESCUENTOS(1) - ts.traeAcumuladoHoyTS("descuentos"))
|
||||
Log("Monto de prespuesto disponible: " & tsRestantes)
|
||||
ts.tsMaximas = ((laCant.text * laBonificacion) + tsRestantes) / laBonificacion
|
||||
Log("tsMaximas: " & ts.tsMaximas)
|
||||
Log(ts.traeAcumuladoHoyTS("descuentos"))
|
||||
End If
|
||||
'##########################
|
||||
End If
|
||||
' If HasFocus Then
|
||||
' bonificacionesMaximas = Subs.trendSpendingFuncs("focusChanged", "bonificaciones", clienteId, id, laCant.text, 0)
|
||||
'' Log("bonificacionesMaximas: " & bonificacionesMaximas)
|
||||
' End If
|
||||
invTotal = laCant.Text + Subs.traeinventario(id)
|
||||
LogColor("InvTotal PRODMAS: " & invTotal, Colors.Red)
|
||||
cuentaProds
|
||||
@@ -994,7 +1150,7 @@ End Sub
|
||||
Private Sub lv_promos_ItemLongClick (Position As Int, Value As Object)
|
||||
Log("Promo longclic = "&Value)
|
||||
Private id As String = ""
|
||||
Dim c As Cursor = Starter.skmt.ExecQuery($"select CAT_GP_ID from cat_gunaprod where CAT_GP_TIPO = 'PROMOS' and CAT_GP_NOMBRE = '${Value}'"$)
|
||||
Dim c As Cursor = Starter.skmt.ExecQuery($"select CAT_GP_ID from ${Subs.traeTablaProds(starter.tipov)} where CAT_GP_TIPO = 'PROMOS' and CAT_GP_NOMBRE = '${Value}'"$)
|
||||
If c.RowCount > 0 Then
|
||||
c.Position = 0
|
||||
id = c.GetString("CAT_GP_ID")
|
||||
@@ -1117,6 +1273,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 presupuesto de DESCUENTOS (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", "descuentos", (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
|
||||
@@ -1242,6 +1406,11 @@ Private Sub clv_prods_ll_VisibleRangeChanged (FirstIndex As Int, LastIndex As In
|
||||
prioridad = p1.GetInt("CAT_GP_TIPOPROD2")
|
||||
' Log(prioridad)
|
||||
End If
|
||||
' Log("NIVEL: " & lfila.Text)
|
||||
If lfila.Text = "RMI" Then ' Si es RMI, la cantidad solo se puede cambiar con los botones.
|
||||
et_pCant.Enabled = False
|
||||
et_pCant.TextColor = Colors.black
|
||||
End If
|
||||
If clv_prods_ll.GetValue(i).As(Map).Get("cant") <> Null And clv_prods_ll.GetValue(i).As(Map).Get("cant") > 0 Then
|
||||
p_prods.Color=0xFFE2EEFF
|
||||
' Log($"select CAT_GP_TIPOPROD2 from CAT_GUNAPROD where CAT_GP_ID = '${clv_prods_ll.GetValue(i).As(Map).Get("id")}'"$)
|
||||
@@ -1287,7 +1456,7 @@ Sub Busca_TextChanged (Old As String, New As String)
|
||||
' Log($"${Starter.tipov} - ${query} - ${Subs.traeTablaProds(Starter.tipov)}"$)
|
||||
If lfila.text = "PROMOCIONES" Then
|
||||
If Not(lv_promos.Visible) Then lv_promos.Visible = True
|
||||
Private cPromo As Cursor=Starter.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_TIPO, CAT_GP_IMG from ${Subs.traeTablaProds(Starter.tipov)} where CAT_GP_NOMBRE like '%${New}%' and CAT_GP_ALMACEN > 0 AND CAT_GP_TIPO = 'PROMOS' AND CAT_GP_SUBTIPO = 'PROMOS' AND CAT_GP_TIPOPROD <> 1 and (length(CAT_GP_CODPROMO) = 1 OR CAT_GP_CODPROMO = CAT_GP_ID) ORDER BY CAT_GP_TIPOPROD2 DESC, CAT_GP_NOMBRE"$)
|
||||
Private cPromo As Cursor=Starter.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_TIPO, CAT_GP_IMG from ${Subs.traeTablaProds(Starter.tipov)} where CAT_GP_NOMBRE like '%${New}%' and CAT_GP_ALMACEN > 0 AND CAT_GP_TIPO = 'PROMOS' AND CAT_GP_SUBTIPO = 'PROMOS' AND CAT_GP_TIPOPROD <> 1 and (length(CAT_GP_CODPROMO) = 1 OR CAT_GP_CODPROMO = CAT_GP_ID) and CAT_GP_PROMOCION <> '1' ORDER BY CAT_GP_TIPOPROD2 DESC, CAT_GP_NOMBRE"$)
|
||||
Log($"res:${cPromo.RowCount}"$)
|
||||
If cPromo.RowCount > 0 Then
|
||||
lv_promos.Clear
|
||||
@@ -1318,7 +1487,11 @@ Sub Busca_TextChanged (Old As String, New As String)
|
||||
listaProds.Initialize
|
||||
listaHints.Initialize
|
||||
Sleep(0)
|
||||
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_NOMBRE like '%${New}%' and CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_CLASIF <> 'PROMOS' order by CAT_GP_NOMBRE"$)
|
||||
If clienteId = "0" Then
|
||||
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_NOMBRE like '%${New}%' and CAT_GP_PRECIO > 0 And CAT_GP_CLASIF <> 'PROMOS' ORDER BY CAT_GP_TIPOPROD2 DESC, CAT_GP_NOMBRE"$)
|
||||
Else
|
||||
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_NOMBRE like '%${New}%' and CAT_GP_PRECIO > 0 And CAT_GP_CLASIF <> 'PROMOS' and CAT_GP_PROMOCION <> '1' ORDER BY CAT_GP_TIPOPROD2 DESC, CAT_GP_NOMBRE"$)
|
||||
End If
|
||||
' c2 = Starter.skmt.ExecQuery2("select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG from " & query & " where CAT_GP_ALMACEN > 0 AND CAT_GP_TIPO = ? AND CAT_GP_SUBTIPO =? AND CAT_GP_TIPOPROD <> 1 and (length(CAT_GP_CODPROMO) = 1 OR CAT_GP_CODPROMO = CAT_GP_ID) ", Array As String( Value, Value)
|
||||
Log("Llamamos LlenaProdsLL")
|
||||
LlenaProdsLL(p, Null)
|
||||
@@ -1326,7 +1499,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}"$)
|
||||
@@ -1346,13 +1519,18 @@ Sub LlenaProdsLL(p As ResultSet, extra As String)
|
||||
' Log("CANTSMAP: " & cantsMap)
|
||||
pe.Close
|
||||
End If
|
||||
' Log(p.IsInitialized)
|
||||
Log(p.IsInitialized)
|
||||
' If query = "" Or query = Null Then query = "cat_gunaprod2"
|
||||
If p.IsInitialized Then
|
||||
Log($"YA HAY RESULTSET ${p.RowCount}"$)
|
||||
Log($"RECIBIMOS RESULTSET ${p.RowCount}"$)
|
||||
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' ORDER BY CAT_GP_TIPOPROD2 DESC, CAT_GP_NOMBRE"$)
|
||||
If clienteId = "0" Then
|
||||
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' ORDER BY CAT_GP_TIPOPROD2 DESC, CAT_GP_NOMBRE"$)
|
||||
Else
|
||||
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"$)
|
||||
End If
|
||||
' 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
|
||||
|
||||
@@ -1391,7 +1569,7 @@ Sub LlenaProdsLL(p As ResultSet, extra As String)
|
||||
listaProdsConCant.Initialize
|
||||
listaProdsConCantIndex.Initialize
|
||||
listaHints.Initialize
|
||||
Log(listaProds)
|
||||
' Log(listaProds)
|
||||
For q = 0 To listaProds.Size - 1' Sacamos los productos con cantidad previa.
|
||||
If listaProds.Get(q).As(Map).Get("cant").As(Int) <> 0 Then
|
||||
' Log(listaProds.Get(q).As(Map).Get("cant"))
|
||||
@@ -1406,7 +1584,7 @@ Sub LlenaProdsLL(p As ResultSet, extra As String)
|
||||
Private Pnl As B4XView = xui.CreatePanel("")
|
||||
Pnl.SetLayoutAnimated(0, 0, 0, clv_prods_ll.AsView.Width, 50dip)
|
||||
Private tempMap As Map = listaProdsConCant.Get(pr0)
|
||||
Private inv = tempMap.Get("almacen")' + tempMap.Get("cant")
|
||||
Private inv As String = tempMap.Get("almacen")' + tempMap.Get("cant")
|
||||
tempMap.Put("almacen", inv)
|
||||
' Log(tempMap)
|
||||
clv_prods_ll.Add(Pnl, tempMap)
|
||||
|
||||
@@ -35,7 +35,7 @@ Sub Class_Globals
|
||||
Dim estaPromo, esteCliente As String
|
||||
Private b_promoMas As Button
|
||||
Private b_promoMenos As Button
|
||||
dim et_promoCant As EditText
|
||||
Dim et_promoCant As EditText
|
||||
Private l_promosCant As Label
|
||||
Private b_continuar As Button
|
||||
Private p_prodsVariables As Panel
|
||||
@@ -43,11 +43,13 @@ Sub Class_Globals
|
||||
Dim prodsPedidoActual As String
|
||||
Dim montoPedidoActual As String
|
||||
Dim promosMap As Map
|
||||
Dim ts As C_TrendSpending
|
||||
End Sub
|
||||
|
||||
'You can add more parameters here.
|
||||
Public Sub Initialize As Object
|
||||
' promosC.Initialize(Me, "promosC", Starter.skmt)
|
||||
ts.Initialize("ts", "ts", Starter.skmt)
|
||||
Return Me
|
||||
End Sub
|
||||
|
||||
@@ -83,7 +85,9 @@ End Sub
|
||||
'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)
|
||||
Log("muestraPromo:"&promo)
|
||||
LogColor($"****************************************************************"$, Colors.red)
|
||||
LogColor($"************ muestraPromo: ${promo} *************"$, Colors.red)
|
||||
' Log("muestraPromo: "&promo)
|
||||
Private thisLog As Boolean = False
|
||||
' If thisLog Then Log(promo)
|
||||
estaPromo = promo
|
||||
@@ -164,7 +168,7 @@ Sub muestraPromo(promo As String, cliente As String)
|
||||
Private thisProd As Map = prodsPromo.Get(p)
|
||||
If thisLog Then Log(thisProd)
|
||||
If existenciaProdVariable > 0 Then
|
||||
Log($">>>>> AGREGAMOS PROD VARIABLE ${p}"$)
|
||||
If thisLog 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
|
||||
@@ -336,6 +340,7 @@ Sub cuentaProds
|
||||
End If
|
||||
l_total.Text = $"Total: $$1.2{totalCompra}"$
|
||||
l_totProds.text = $"Productos: ${totalProds}"$
|
||||
' Log(esteTag.Get(2) & "|" & estaPromo)
|
||||
Next
|
||||
If thisLog Then Log($"Total Prods: ${totalProds}, Total: $$1.2{totalCompra}"$)
|
||||
l_total.Text = $"Total: $$1.2{totalCompra}"$
|
||||
@@ -363,6 +368,7 @@ Sub cuentaProds
|
||||
' cant1.Text = 0
|
||||
' Next
|
||||
' End If
|
||||
|
||||
End Sub
|
||||
|
||||
Private Sub et_pCant_FocusChanged (HasFocus As Boolean)
|
||||
@@ -436,7 +442,7 @@ End Sub
|
||||
' 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.
|
||||
' 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)
|
||||
@@ -468,16 +474,34 @@ End Sub
|
||||
|
||||
Private Sub b_terminar1_Click
|
||||
cuentaProds
|
||||
Private elMontoTSDeLaVenta As String = 0
|
||||
' Log("====================================================================")
|
||||
' Log($"${prodsIds}${CRLF}${prodsCants}${CRLF}${prodsPrecios}"$)
|
||||
Log($"${prodsIds}${CRLF}${prodsCants}${CRLF}${prodsPrecios}"$)
|
||||
For t = 0 To prodsIds.Size - 1 'Guardamos los productos fijos de la promocion en pedido.
|
||||
Private pn As String = Subs.traeProdNombre(prodsIds.Get(t))
|
||||
|
||||
Private idProdFijo As String = prodsIds.Get(t)
|
||||
Private cantProdFijo As Int = prodsCants.Get(t)
|
||||
|
||||
' ' Asumimos que el índice 0 es el encabezado de la promoción (estaPromo) y no tiene bonificación de producto.
|
||||
If t > 0 Then
|
||||
Private bonificacion_monto As String = ts.traeMontoBonificacion(idProdFijo, estaPromo)
|
||||
Log(bonificacion_monto)
|
||||
elMontoTSDeLaVenta = elMontoTSDeLaVenta + (bonificacion_monto * cantProdFijo)
|
||||
Log($"TS Fijo Acumulado: ${elMontoTSDeLaVenta}, Prod: ${idProdFijo}"$)
|
||||
End If
|
||||
|
||||
If prodsCants.Get(t) > 0 Then Subs.guardaProductoSinGestion(estaPromo, prodsPrecios.Get(t), prodsCants.Get(t), pn, prodsIds.Get(t), Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, Starter.tipov)
|
||||
Next
|
||||
For t = 0 To prodsIds2.Size - 1 'Guardamos los productos variables de la promocion en pedido.
|
||||
Private pn As String = Subs.traeProdNombre(prodsIds2.Get(t))
|
||||
Subs.guardaProductoSinGestion(estaPromo, prodsPrecios2.Get(t), prodsCants2.Get(t), pn, prodsIds2.Get(t), Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, Starter.tipov)
|
||||
' Traemos el monto de las bonificacionos a guardar. -- Trade Spending
|
||||
Log("Monto Bonificacion -->> " & ts.traeMontoBonificacion(prodsIds2.Get(t), estaPromo))
|
||||
elMontoTSDeLaVenta = elMontoTSDeLaVenta + (ts.traeMontoBonificacion(prodsIds2.Get(t), estaPromo) * prodsCants2.Get(t))
|
||||
Log("Acumulado: " & elMontoTSDeLaVenta)
|
||||
Next
|
||||
ts.modTrendSpending("RESTA", "BONIFICACIONES", elMontoTSDeLaVenta)
|
||||
lv_prodsFijos.Clear
|
||||
B4XPages.MainPage.bTerminarClicked = True
|
||||
B4XPages.ShowPage("productos")
|
||||
@@ -486,16 +510,34 @@ End Sub
|
||||
|
||||
Private Sub b_continuar_Click
|
||||
cuentaProds
|
||||
Private elMontoTSDeLaVenta As String = 0
|
||||
' Log("====================================================================")
|
||||
' Log($"${prodsIds}${CRLF}${prodsCants}${CRLF}${prodsPrecios}"$)
|
||||
Log($"${prodsIds}${CRLF}${prodsCants}${CRLF}${prodsPrecios}"$)
|
||||
For t = 0 To prodsIds.Size - 1 'Guardamos los productos fijos de la promocion en pedido.
|
||||
Private pn As String = Subs.traeProdNombre(prodsIds.Get(t))
|
||||
|
||||
Private idProdFijo As String = prodsIds.Get(t)
|
||||
Private cantProdFijo As Int = prodsCants.Get(t)
|
||||
|
||||
' ' Asumimos que el índice 0 es el encabezado de la promoción (estaPromo) y no tiene bonificación de producto.
|
||||
If t > 0 Then
|
||||
Private bonificacion_monto As String = ts.traeMontoBonificacion(idProdFijo, estaPromo)
|
||||
Log(bonificacion_monto)
|
||||
elMontoTSDeLaVenta = elMontoTSDeLaVenta + (bonificacion_monto * cantProdFijo)
|
||||
Log($"TS Fijo Acumulado: ${elMontoTSDeLaVenta}, Prod: ${idProdFijo}"$)
|
||||
End If
|
||||
|
||||
Subs.guardaProductoSinGestion(estaPromo, prodsPrecios.Get(t), prodsCants.Get(t), pn, prodsIds.Get(t), Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, Starter.tipov)
|
||||
Next
|
||||
For t = 0 To prodsIds2.Size - 1 'Guardamos los productos variables de la promocion en pedido.
|
||||
Private pn As String = Subs.traeProdNombre(prodsIds2.Get(t))
|
||||
Subs.guardaProductoSinGestion(estaPromo, prodsPrecios2.Get(t), prodsCants2.Get(t), pn, prodsIds2.Get(t), Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, Starter.tipov)
|
||||
' Traemos el monto de las bonificacionos a guardar. -- Trade Spending
|
||||
Log("Monto Bonificacion -->> " & ts.traeMontoBonificacion(prodsIds2.Get(t), estaPromo))
|
||||
elMontoTSDeLaVenta = elMontoTSDeLaVenta + (ts.traeMontoBonificacion(prodsIds2.Get(t), estaPromo) * prodsCants2.Get(t))
|
||||
Log("Acumulado: " & elMontoTSDeLaVenta)
|
||||
Next
|
||||
ts.modTrendSpending("RESTA", "BONIFICACIONES", elMontoTSDeLaVenta)
|
||||
lv_prodsFijos.Clear
|
||||
' Activity_KeyPress(KeyCodes.KEYCODE_BACK)
|
||||
' CallSubDelayed2(productos, "Activity_KeyPress", KeyCodes.KEYCODE_BACK)
|
||||
|
||||
210
B4A/C_deviceLinker.bas
Normal file
210
B4A/C_deviceLinker.bas
Normal file
@@ -0,0 +1,210 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
ModulesStructureVersion=1
|
||||
Type=Class
|
||||
Version=12.8
|
||||
@EndOfDesignText@
|
||||
'-----------------------------------------------------------------------------------
|
||||
' Modulo de Clase: DeviceLinker.bas
|
||||
' Propósito: Gestionar el GUID del dispositivo y verificar/ligar el dispositivo
|
||||
' a un almacén y ruta en el servidor de forma segura.
|
||||
'-----------------------------------------------------------------------------------
|
||||
|
||||
Sub Class_Globals
|
||||
' Configuración del servidor y comandos
|
||||
Private Const GUID_KEY_ALIAS As String = "DeviceGUID" ' << ALIAS PARA EL GUID EN EL KEYSTORE
|
||||
|
||||
' Objetos y variables internas
|
||||
Private kvs As KeyValueStore ' << ALMACENAMIENTO SEGURO PARA EL GUID
|
||||
Private CallBack As Object ' << OBJETO DE CALLBACK PARA ENVIAR RESPUESTAS
|
||||
Private EventName As String ' << NOMBRE DEL EVENTO DE RESPUESTA
|
||||
Public reqManager As DBRequestManager ' << GESTOR DE PETICIONES AL SERVIDOR jRDC
|
||||
Private logger As Boolean ' << PARA CONTROLAR LOS LOGS DE ESTA CLASE
|
||||
Dim lastJobDoneError As String = ""
|
||||
Dim almacen As String = ""
|
||||
Dim ruta As String = ""
|
||||
Dim deviceId As String = ""
|
||||
' Se requieren las siguientes librerías:
|
||||
' - KeyValueStore2
|
||||
' - DBRequestManager
|
||||
' - XUI
|
||||
End Sub
|
||||
|
||||
' Inicializa la clase DeviceLinker.
|
||||
' PageObject: El módulo (ej. C_Principal) que inicializa esta clase y manejará sus respuestas (normalmente "Me").
|
||||
' NameOfEvent: El prefijo para el evento de respuesta (ej. "DeviceLinker_Response").
|
||||
' AppLogger: Booleano para activar/desactivar los logs internos de esta clase, siguiendo el Starter.Logger de la app.
|
||||
Public Sub Initialize (PageObject As Object, NameOfEvent As String, AppLogger As Boolean)
|
||||
CallBack = PageObject
|
||||
EventName = NameOfEvent
|
||||
logger = AppLogger ' Asignamos el estado del logger de la aplicación.
|
||||
|
||||
' Inicializamos el KeyValueStore para almacenamiento seguro del GUID
|
||||
kvs.Initialize(File.DirInternal, "DeviceKeyStore.b4xkey")
|
||||
If logger Then Log("B4XKeyStore 'DeviceKeyStore' inicializado.")
|
||||
|
||||
' Inicializamos el DBRequestManager para las comunicaciones con el servidor.
|
||||
' 'Me' indica que el evento JobDone de esta clase se encargará de las respuestas de reqManager.
|
||||
' reqManager.Initialize(Me, Starter.DBReqServer)
|
||||
' reqManager.Initialize(Me, "http://keymon.net:9010/DB2") 'Servidor de pruebas
|
||||
reqManager.Initialize(Me, "http://keymon.net:1781") 'Servidor productivo
|
||||
|
||||
If logger Then Log("DBRequestManager para DeviceLinker inicializado.")
|
||||
If logger Then Log("DeviceLinker inicializado y listo para operar.")
|
||||
End Sub
|
||||
|
||||
' Verifica y liga el dispositivo con un almacén y una ruta en el servidor.
|
||||
' Almacen: El identificador del almacén.
|
||||
' Ruta: El identificador de la ruta.
|
||||
Public Sub VerifyAndLinkDevice(Almacen_ As String, Ruta_ As String)
|
||||
Dim DeviceId_ As String = GetDeviceGUID ' Obtenemos o generamos el GUID del dispositivo.
|
||||
almacen = Almacen_
|
||||
ruta = Ruta_
|
||||
deviceId = DeviceId_
|
||||
If DeviceId_ = "" Then
|
||||
If logger Then LogColor("Error: GUID del dispositivo no pudo ser obtenido o generado.", Colors.Red)
|
||||
' Enviar una respuesta de error al callback si no se pudo obtener el GUID.
|
||||
If SubExists(CallBack, EventName & "_Response") Then ' [New Query]
|
||||
CallSub2(CallBack, EventName & "_Response", "GUID_ERROR")
|
||||
End If
|
||||
Return
|
||||
End If
|
||||
|
||||
If logger Then Log($"Enviando solicitud de verificación para DeviceId: ${DeviceId_}, Almacen: ${Almacen_}, Ruta: ${Ruta_}"$)
|
||||
|
||||
Dim cmd As DBCommand ' Creamos un comando para enviar al servidor.
|
||||
cmd.Initialize
|
||||
cmd.Name = "verify_device"
|
||||
' Pasamos el almacén, la ruta y el GUID del dispositivo como parámetros.
|
||||
cmd.Parameters = Array As Object(Almacen_, Ruta_) ', DeviceId_
|
||||
|
||||
' Ejecutamos el comando en el servidor. 'Me' indica que DBRequestManager_JobDone en esta clase manejará la respuesta.
|
||||
reqManager.ExecuteQuery(cmd, 0, "verify_device")
|
||||
End Sub
|
||||
|
||||
' Obtiene el GUID único del dispositivo desde B4XKeyStore.
|
||||
' Si no existe, lo genera y lo guarda utilizando Subs.GUID.
|
||||
Private Sub GetDeviceGUID As String
|
||||
If kvs.ContainsKey(GUID_KEY_ALIAS) = False Then
|
||||
' Corrección: Usamos la función GUID ya existente en el módulo Subs [1].
|
||||
Dim NewGUID As String = generaGUID
|
||||
kvs.Put(GUID_KEY_ALIAS, NewGUID) ' Lo guardamos de forma segura en el KeyStore.
|
||||
If logger Then LogColor($"Nuevo GUID generado y guardado: ${NewGUID}"$, Colors.Blue)
|
||||
Return NewGUID
|
||||
Else
|
||||
Dim ExistingGUID As String = kvs.Get(GUID_KEY_ALIAS) ' Recuperamos el GUID existente.
|
||||
If logger Then LogColor($"GUID existente cargado: ${ExistingGUID}"$, Colors.Blue)
|
||||
Return ExistingGUID
|
||||
End If
|
||||
End Sub
|
||||
|
||||
' Callback para manejar las respuestas del DBRequestManager de esta clase.
|
||||
Public Sub JobDone(Job As HttpJob) ' El nombre del sub debe ser 'JobDone' o el que se haya especificado en reqManager.Initialize(Me, ApiUrl)
|
||||
If logger Then Log("INICA JOBDONE DEVICELINKER - " & Job.Tag)
|
||||
If reqManager.reqsList.IsInitialized Then 'Si tenemos lista de requests, la procesamos.
|
||||
If reqManager.reqsList.IndexOf(Job.tag) <> -1 Then
|
||||
reqManager.reqsList.RemoveAt(reqManager.reqsList.IndexOf(Job.tag))
|
||||
LogColor($">>>>>> Recibimos y quitamos ${Job.tag.As(String).ToUpperCase}"$, Colors.Blue)
|
||||
End If
|
||||
LogColor(">>>>>> " & reqManager.reqsList.Size & " - " & reqManager.reqsList, Colors.Blue)
|
||||
End If
|
||||
If Job.Success = False Then
|
||||
lastJobDoneError = Job.ErrorMessage
|
||||
LogColor("############################################", Colors.red)
|
||||
LogColor("###### JobError: " & Job.Tag & " ######" & CRLF & "#### " & Job.ErrorMessage, Colors.red)
|
||||
LogColor("############################################", Colors.red)
|
||||
' Enviar una respuesta de error HTTP al callback.
|
||||
If SubExists(CallBack, EventName & "_Response") Then
|
||||
CallSub2(CallBack, EventName & "_Response", "HTTP_ERROR")
|
||||
End If
|
||||
Else 'If Job Success then ...
|
||||
lastJobDoneError = ""
|
||||
If Job.JobName = "DBRequest" Then ' Asegurarse de que sea una respuesta de DBRequestManager.
|
||||
' Primero verificamos Job.Success para saber si la comunicación HTTP fue exitosa [New Query]
|
||||
If Job.Success Then
|
||||
Dim result As DBResult = reqManager.HandleJob(Job) ' Procesamos el HttpJob para obtener el DBResult.
|
||||
If logger Then LogColor($"Petición exitosa al servidor. Registros devueltos: ${result.Rows.Size}"$, Colors.Green)
|
||||
|
||||
|
||||
' If result.Tag = "hist_cliente_promos" Then 'query tag
|
||||
' Starter.skmt.BeginTransaction
|
||||
' For Each records() As Object In result.Rows
|
||||
' Dim HCCP_CLIENTE As String = records(result.Columns.Get("HCCP_CLIENTE"))
|
||||
' Starter.skmt.ExecNonQuery2("INSERT INTO HIST_CLIENTE_CANT_PROMOS(HCCP_CLIENTE, HCCP_PROMO, HCCP_CANT, HCCP_CANT_VENDIDA) VALUES (?,?,?,?)", Array As Object (HCCP_CLIENTE))
|
||||
' Next
|
||||
' Starter.skmt.TransactionSuccessful
|
||||
' Starter.skmt.EndTransaction
|
||||
' ' ToastMessageShow(" Historico Clientes Promociones Actualizado." , True)
|
||||
' End If
|
||||
|
||||
If result.Tag = "verify_device" Then 'query tag
|
||||
' Aquí es donde la lógica de la aplicación interpreta el éxito/falla de la operación en el servidor.
|
||||
If result.Rows.Size > 0 Then
|
||||
Subs.logJobDoneResultados(result)
|
||||
For Each records() As Object In result.Rows
|
||||
Dim Status As String = "" 'records(result.Columns.Get("ESTATUS"))
|
||||
Dim CAT_RU_IDTELEFONO As String = records(result.Columns.Get("CAT_RU_IDTELEFONO"))
|
||||
Log($"|${deviceId}|${CAT_RU_IDTELEFONO}|"$)
|
||||
' If deviceId <> CAT_RU_IDTELEFONO Then Status = "YA_REGISTRADO" ' Ya existe OTRO registro.
|
||||
If CAT_RU_IDTELEFONO = 0 Or CAT_RU_IDTELEFONO.Length < 5 Then
|
||||
Log(">>> NUEVO")
|
||||
' Status = "REGISTRO_NUEVO"
|
||||
Dim cmd As DBCommand ' Creamos un comando para enviar al servidor.
|
||||
cmd.Initialize
|
||||
cmd.Name = "registarMovil"
|
||||
' Pasamos el almacén, la ruta y el GUID del dispositivo como parámetros.
|
||||
cmd.Parameters = Array As Object(deviceId, almacen, ruta)
|
||||
reqManager.ExecuteCommand(cmd, "registramosGUID")
|
||||
If SubExists(CallBack, EventName & "_Response") Then
|
||||
CallSub2(CallBack, EventName & "_Response", "REGISTRO_NUEVO")
|
||||
End If
|
||||
else if CAT_RU_IDTELEFONO = deviceId Then
|
||||
Status = "OK"
|
||||
Else
|
||||
Status = "YA_REGISTRADO"
|
||||
End If
|
||||
' Invocamos el callback en el módulo principal con el estado.
|
||||
If SubExists(CallBack, EventName & "_Response") Then
|
||||
CallSub2(CallBack, EventName & "_Response", Status)
|
||||
End If
|
||||
Next
|
||||
' Else
|
||||
' If logger Then LogColor($"El servidor respondió con éxito, pero no encontró registros.${CRLF}Quiere decir que la ruta NO esta registrada en el servidor."$, Colors.Red)
|
||||
' Dim cmd As DBCommand ' Creamos un comando para enviar al servidor.
|
||||
' cmd.Initialize
|
||||
' cmd.Name = "registarMovil"
|
||||
' ' Pasamos el almacén, la ruta y el GUID del dispositivo como parámetros.
|
||||
' cmd.Parameters = Array As Object(almacen, ruta, deviceId)
|
||||
' reqManager.ExecuteCommand(cmd, "registramosGUID")
|
||||
' If SubExists(CallBack, EventName & "_Response") Then
|
||||
' CallSub2(CallBack, EventName & "_Response", "NO_REGISTRADO")
|
||||
' End If
|
||||
End If
|
||||
End If
|
||||
|
||||
If result.Tag = "registramosGUID" Then
|
||||
Subs.logJobDoneResultados(result)
|
||||
If SubExists(CallBack, EventName & "_Response") Then
|
||||
CallSub2(CallBack, EventName & "_Response", "REGISTRO_NUEVO")
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
End If
|
||||
Job.Release ' Muy importante liberar el HttpJob para evitar fugas de memoria.
|
||||
End If
|
||||
End Sub
|
||||
|
||||
'Genera un GUID (globally unique identifier)
|
||||
Sub generaGUID As String
|
||||
Dim sb As StringBuilder
|
||||
sb.Initialize
|
||||
For Each stp As Int In Array(8, 4, 4, 4, 12)
|
||||
If sb.Length > 0 Then sb.Append("-")
|
||||
For n = 1 To stp
|
||||
Dim c As Int = Rnd(0, 16)
|
||||
If c < 10 Then c = c + 48 Else c = c + 55
|
||||
sb.Append(Chr(c))
|
||||
Next
|
||||
Next
|
||||
Return sb.ToString
|
||||
End Sub
|
||||
@@ -344,6 +344,7 @@ Sub trackInit 'ignore
|
||||
inicioJobDoneMap.Initialize
|
||||
End Sub
|
||||
|
||||
|
||||
Sub trackNext(job As HttpJob)
|
||||
If reqsList.IsInitialized Then 'Si tenemos lista de requests, la procesamos.
|
||||
Private quitamos As String = ""
|
||||
@@ -357,6 +358,6 @@ Sub trackNext(job As HttpJob)
|
||||
quitamos = $"Quitamos ${job.tag} - "$
|
||||
End If
|
||||
If logger Then LogColor(">>>>>> Requests: " & reqsList.Size & " - " & quitamos & reqsList, Colors.Blue)
|
||||
if logger then LogColor(">>>>>> inicioRequestMap:" & inicioRequestMap.Size & " - " & inicioRequestMap, Colors.Magenta)
|
||||
If logger Then LogColor(">>>>>> inicioRequestMap:" & inicioRequestMap.Size & " - " & inicioRequestMap, Colors.Magenta)
|
||||
End If
|
||||
End Sub
|
||||
168
B4A/DBRequestManagerW.bas
Normal file
168
B4A/DBRequestManagerW.bas
Normal file
@@ -0,0 +1,168 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
ModulesStructureVersion=1
|
||||
Type=Class
|
||||
Version=12.8
|
||||
@EndOfDesignText@
|
||||
'Class module: jRDC1Wrapper
|
||||
'Version 1.3 - Thread-Safe with ExecuteCommand support
|
||||
|
||||
Public Sub Class_Globals
|
||||
' Public properties to be accessed after the wait for completes
|
||||
Type TResultado(Tag As String, Success As Boolean, resultado As DBResult, ErrorMessage As String)
|
||||
' Type TCommandResult(Tag As String, Success As Boolean, RowsAffected As Int, ErrorMessage As String)
|
||||
|
||||
'C <<< Definimos un tipo para almacenar la información de cada job
|
||||
Type TJobInfo (Target As Object, EventName As String, IsQuery As Boolean)
|
||||
|
||||
'C <<< Un mapa para mantener un registro de los jobs activos
|
||||
Private activeJobs As Map
|
||||
|
||||
'C <<< Un contador para generar tags únicos para cada job
|
||||
Private jobCounter As Int
|
||||
|
||||
Public reqManager As DBRequestManager
|
||||
Public cmd As DBCommand
|
||||
Public resultado As TResultado
|
||||
' Public commandResult As TCommandResult
|
||||
Private logger As Boolean = False
|
||||
End Sub
|
||||
|
||||
'Initializes the object.
|
||||
Public Sub Initialize
|
||||
'C <<< Inicializamos el mapa y el contador
|
||||
activeJobs.Initialize
|
||||
jobCounter = 0
|
||||
End Sub
|
||||
|
||||
'Executes the query using the old jRDC1 mechanism.
|
||||
'Parameters:
|
||||
' - rdcLink: The link for the reqManager initialization.
|
||||
' - Command: The DBCommand to execute.
|
||||
' - Target: The module (like 'Me') where the completed event should be raised.
|
||||
' - Event: The name of the event to raise when the query completes (e.g., "WrapperEvent").
|
||||
Public Sub ExecuteQuery(rdcLink As String, Command As DBCommand, Target As Object, Event As String)
|
||||
'<<< Incrementamos el contador para obtener un ID único
|
||||
jobCounter = jobCounter + 1
|
||||
Dim currentJobTag As String = "reqManagerWJob_" & jobCounter
|
||||
currentJobTag = Event
|
||||
|
||||
If logger Then Log($"ExecuteQuery (Tag: ${currentJobTag}): Command=${Command.Name}, Event=${Event}"$)
|
||||
|
||||
'<<< Creamos una instancia de TJobInfo para guardar el target y el evento
|
||||
Dim jobInfo As TJobInfo
|
||||
jobInfo.Initialize
|
||||
jobInfo.Target = Target
|
||||
jobInfo.EventName = Event
|
||||
jobInfo.IsQuery = True ' Mark as query job
|
||||
|
||||
'<<< Guardamos la información del job en el mapa, usando el tag único como llave
|
||||
activeJobs.Put(currentJobTag, jobInfo)
|
||||
|
||||
reqManager.Initialize(Me, rdcLink)
|
||||
cmd = Command
|
||||
|
||||
'<<< Ejecutamos la consulta pasando nuestro TAG ÚNICO
|
||||
reqManager.ExecuteQuery(cmd, 0, currentJobTag)
|
||||
End Sub
|
||||
|
||||
'Executes a command (INSERT, UPDATE, DELETE) using the old jRDC1 mechanism.
|
||||
'Parameters:
|
||||
' - rdcLink: The link for the reqManager initialization.
|
||||
' - Command: The DBCommand to execute.
|
||||
' - Target: The module (like 'Me') where the completed event should be raised.
|
||||
' - Event: The name of the event to raise when the command completes (e.g., "WrapperEvent").
|
||||
Public Sub ExecuteCommand(rdcLink As String, Command As DBCommand, Target As Object, Event As String)
|
||||
'<<< Incrementamos el contador para obtener un ID único
|
||||
jobCounter = jobCounter + 1
|
||||
Dim currentJobTag As String = "reqManagerWJob_" & jobCounter
|
||||
currentJobTag = Event
|
||||
|
||||
If logger Then Log($"ExecuteCommand (Tag: ${currentJobTag}): Command=${Command.Name}, Event=${Event}"$)
|
||||
|
||||
'<<< Creamos una instancia de TJobInfo para guardar el target y el evento
|
||||
Dim jobInfo As TJobInfo
|
||||
jobInfo.Initialize
|
||||
jobInfo.Target = Target
|
||||
jobInfo.EventName = Event
|
||||
jobInfo.IsQuery = False ' Mark as command job
|
||||
|
||||
'<<< Guardamos la información del job en el mapa, usando el tag único como llave
|
||||
activeJobs.Put(currentJobTag, jobInfo)
|
||||
|
||||
reqManager.Initialize(Me, rdcLink)
|
||||
cmd = Command
|
||||
|
||||
'<<< Ejecutamos el comando pasando nuestro TAG ÚNICO
|
||||
reqManager.ExecuteCommand(cmd, currentJobTag)
|
||||
End Sub
|
||||
|
||||
'This sub will be called by the DBRequestManager when the job is done
|
||||
Public Sub JobDone(job As HttpJob)
|
||||
'<<< Obtenemos el Tag único que asignamos al job
|
||||
Dim currentJobTag As String = job.Tag
|
||||
|
||||
'C <<< Verificamos si este job fue iniciado por nuestro wrapper
|
||||
If activeJobs.ContainsKey(currentJobTag) = False Then
|
||||
If logger Then Log($"JobDone: Se recibió un job con un tag desconocido: ${currentJobTag}"$)
|
||||
job.Release
|
||||
Return
|
||||
End If
|
||||
|
||||
'<<< Recuperamos la información específica de este job desde el mapa
|
||||
Dim jobInfo As TJobInfo = activeJobs.Get(currentJobTag)
|
||||
Try
|
||||
If jobInfo.IsQuery Then
|
||||
' Handle query result
|
||||
resultado.Initialize
|
||||
resultado.Tag = jobInfo.EventName ' Usamos el nombre del evento original como Tag del resultado
|
||||
|
||||
If job.Success Then
|
||||
Dim dbResult As DBResult = reqManager.HandleJob(job)
|
||||
resultado.Success = True
|
||||
resultado.Resultado = dbResult
|
||||
resultado.ErrorMessage = ""
|
||||
Else
|
||||
resultado.Success = False
|
||||
resultado.Resultado = Null
|
||||
resultado.ErrorMessage = job.ErrorMessage
|
||||
End If
|
||||
job.Release
|
||||
|
||||
'<<< Usamos la información recuperada del mapa para llamar al Sub correcto
|
||||
If logger Then LogColor($"EVENTO: ${jobInfo.EventName}_Completed"$, Colors.Magenta)
|
||||
CallSubDelayed2(jobInfo.Target, jobInfo.EventName & "_Completed", resultado)
|
||||
Else
|
||||
' Handle command result
|
||||
resultado.Initialize
|
||||
resultado.Tag = jobInfo.EventName
|
||||
|
||||
If job.Success Then
|
||||
Dim dbResult As DBResult = reqManager.HandleJob(job)
|
||||
' Dim rowsAffected As Int = reqManager.HandleCommandResult(job)
|
||||
' For Each records() As Object In dbResult.Rows
|
||||
' Dim rowsAffected As Int = records(dbResult.Columns.Get("AffectedRows"))
|
||||
' Next
|
||||
resultado.Success = True
|
||||
resultado.resultado = dbResult
|
||||
resultado.ErrorMessage = ""
|
||||
Else
|
||||
resultado.Success = False
|
||||
resultado.resultado = Null
|
||||
resultado.ErrorMessage = job.ErrorMessage
|
||||
End If
|
||||
job.Release
|
||||
|
||||
'<<< Usamos la información recuperada del mapa para llamar al Sub correcto
|
||||
If logger Then LogColor($"EVENTO: ${jobInfo.EventName}_Completed"$, Colors.Magenta)
|
||||
CallSubDelayed2(jobInfo.Target, jobInfo.EventName & "_Completed", resultado)
|
||||
End If
|
||||
|
||||
'C <<< Se remueve el job del mapa en caso de ÉXITO
|
||||
activeJobs.Remove(currentJobTag)
|
||||
Catch
|
||||
If logger Then LogColor("Error en jRDC1Wrapper.JobDone: " & LastException, Colors.Red)
|
||||
'<<< MUY IMPORTANTE: Remover el job del mapa para no tener fugas de memoria
|
||||
activeJobs.Remove(currentJobTag)
|
||||
End Try
|
||||
End Sub
|
||||
Binary file not shown.
BIN
B4A/Files/compra_y_gana.png
Normal file
BIN
B4A/Files/compra_y_gana.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 498 KiB |
BIN
B4A/Files/kelloggs.rkmt.km
Normal file
BIN
B4A/Files/kelloggs.rkmt.km
Normal file
Binary file not shown.
BIN
B4A/Files/kmt.db
BIN
B4A/Files/kmt.db
Binary file not shown.
Binary file not shown.
BIN
B4A/Files/qr_kelloggs.png
Normal file
BIN
B4A/Files/qr_kelloggs.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 166 KiB |
File diff suppressed because one or more lines are too long
@@ -23,6 +23,9 @@ ModuleBookmarks28=
|
||||
ModuleBookmarks29=
|
||||
ModuleBookmarks3=
|
||||
ModuleBookmarks30=
|
||||
ModuleBookmarks31=
|
||||
ModuleBookmarks32=
|
||||
ModuleBookmarks33=
|
||||
ModuleBookmarks4=
|
||||
ModuleBookmarks5=
|
||||
ModuleBookmarks6=
|
||||
@@ -54,6 +57,9 @@ ModuleBreakpoints28=
|
||||
ModuleBreakpoints29=
|
||||
ModuleBreakpoints3=
|
||||
ModuleBreakpoints30=
|
||||
ModuleBreakpoints31=
|
||||
ModuleBreakpoints32=
|
||||
ModuleBreakpoints33=
|
||||
ModuleBreakpoints4=
|
||||
ModuleBreakpoints5=
|
||||
ModuleBreakpoints6=
|
||||
@@ -61,36 +67,39 @@ ModuleBreakpoints7=
|
||||
ModuleBreakpoints8=
|
||||
ModuleBreakpoints9=
|
||||
ModuleClosedNodes0=
|
||||
ModuleClosedNodes1=4
|
||||
ModuleClosedNodes1=6,46,47
|
||||
ModuleClosedNodes10=
|
||||
ModuleClosedNodes11=
|
||||
ModuleClosedNodes12=5,7,8,9
|
||||
ModuleClosedNodes13=
|
||||
ModuleClosedNodes14=
|
||||
ModuleClosedNodes12=3,5
|
||||
ModuleClosedNodes13=7,8,9,10,11,12
|
||||
ModuleClosedNodes14=6,7,8,9,12,13
|
||||
ModuleClosedNodes15=
|
||||
ModuleClosedNodes16=
|
||||
ModuleClosedNodes16=3,8,17
|
||||
ModuleClosedNodes17=
|
||||
ModuleClosedNodes18=
|
||||
ModuleClosedNodes19=
|
||||
ModuleClosedNodes19=7,8,9,10,11,12,13,14
|
||||
ModuleClosedNodes2=
|
||||
ModuleClosedNodes20=
|
||||
ModuleClosedNodes21=
|
||||
ModuleClosedNodes22=
|
||||
ModuleClosedNodes23=1,3,4,5,6,7,8,9,11,12,14,15,17,18,21,22,24,25,26,27,28,29,30,31,32,33,35
|
||||
ModuleClosedNodes23=
|
||||
ModuleClosedNodes24=
|
||||
ModuleClosedNodes25=4
|
||||
ModuleClosedNodes26=
|
||||
ModuleClosedNodes25=
|
||||
ModuleClosedNodes26=24,26,27,31,32,33,35
|
||||
ModuleClosedNodes27=
|
||||
ModuleClosedNodes28=
|
||||
ModuleClosedNodes28=4
|
||||
ModuleClosedNodes29=
|
||||
ModuleClosedNodes3=1,5,6,7
|
||||
ModuleClosedNodes3=1,3,5,6
|
||||
ModuleClosedNodes30=
|
||||
ModuleClosedNodes31=
|
||||
ModuleClosedNodes32=116
|
||||
ModuleClosedNodes33=
|
||||
ModuleClosedNodes4=
|
||||
ModuleClosedNodes5=
|
||||
ModuleClosedNodes6=
|
||||
ModuleClosedNodes7=
|
||||
ModuleClosedNodes8=
|
||||
ModuleClosedNodes9=
|
||||
NavigationStack=Subs,bitacora,1714,0,C_Principal,JobDone,2095,1,Main,Globals,30,0,C_Cliente,Class_Globals,0,0,C_Cliente,B4XPage_Appear,488,1,foto,Globals,25,0,foto,Camera1_Ready,47,0,foto,btnTakePicture_Click,169,0,foto,b_guardar_Click,158,0,Main,Activity_Create,32,0
|
||||
NavigationStack=C_Principal,JobDone,1779,0,B4XMainPage,B4XPage_Appear,392,0,B4XMainPage,Label4_Click,1062,0,B4XMainPage,Linker_Response,1063,3,C_Principal,l_efectiva_Click,3892,0,C_Principal,Class_Globals,214,0,C_Principal,B4XPage_Created,312,0,C_Principal,B4XPage_Appear,321,0,C_Principal,Linker_Response,3917,6,C_deviceLinker,JobDone,132,6,C_deviceLinker,Initialize,44,0
|
||||
SelectedBuild=0
|
||||
VisibleModules=1,28,11,3,29,12,7,9,22
|
||||
VisibleModules=31,1,12,5,16,26,3,32,13,14,8,33,10,28,19
|
||||
|
||||
@@ -25,7 +25,7 @@ Sub Process_Globals
|
||||
Dim GPS As GPS
|
||||
'Para ENVIA_ULTIMA_GPS
|
||||
Dim Timer1 As Timer
|
||||
Dim Interval As Int = 20
|
||||
Dim Interval As Int = 600
|
||||
Dim DBReqServer As String
|
||||
Dim pe As PhoneEvents
|
||||
Dim ph As Phone
|
||||
@@ -47,7 +47,7 @@ Sub Process_Globals
|
||||
Dim ultimaActualizacionGPS As String = 235959 '
|
||||
Dim fechaRuta As String 'ignore
|
||||
Dim tiempos As Map
|
||||
Dim Logger As Boolean = False
|
||||
Dim Logger As Boolean = True
|
||||
Dim ultimaActividad As String = ""
|
||||
Dim boleta As String = 0
|
||||
Dim sesion As Map
|
||||
@@ -56,6 +56,8 @@ Sub Process_Globals
|
||||
Dim pingShell As Boolean = False
|
||||
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
|
||||
@@ -72,7 +74,7 @@ Sub Service_Create
|
||||
Subs.revisaBD
|
||||
pe.Initialize("pe") 'Para obtener la bateria
|
||||
' skmt = s.dbInit 'Inicializamos BD.
|
||||
DBReqServer = "http://keymon.lat:1781"
|
||||
DBReqServer = "http://keymon.net:1781"
|
||||
' DBReqServer = "http://keymon.lat:9003"
|
||||
Private c As Cursor = skmt.ExecQuery($"select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = 'SERVER'"$)
|
||||
If c.RowCount > 0 Then
|
||||
@@ -208,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
|
||||
@@ -229,7 +231,8 @@ Sub JobDone(Job As HttpJob)
|
||||
skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("HORA", HORA))
|
||||
DateTime.DateFormat = "HH"
|
||||
skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("HORASRVR"))
|
||||
skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("HORASRVR", DateTime.Date(DateTime.Now)))
|
||||
skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("HORAMVL"))
|
||||
skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("HORAMVL", DateTime.Date(DateTime.Now)))
|
||||
Next
|
||||
End If
|
||||
End If
|
||||
|
||||
515
B4A/Subs.bas
515
B4A/Subs.bas
@@ -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)
|
||||
@@ -1076,7 +1076,10 @@ Sub traePromo(promo As String, cliente As String) As Map
|
||||
promoMap.Put("prodsVariablesCant", prodsVariables.Size)
|
||||
promoMap.Put("prodsVariablesPrecios", prodsVariablesPrecios)
|
||||
promoMap.Put("resultado", "ok")
|
||||
|
||||
' LogColor($"****************************************************************"$, Colors.red)
|
||||
LogColor("*********** Prods Fijos: " & prodsFijos.Size & " Prods Variables: " & prodsVariables.Size & " ************", Colors.red)
|
||||
' LogColor("***************** Prods Variables: " & prodsVariables.Size & " *************", Colors.red)
|
||||
LogColor($"****************************************************************"$, Colors.red)
|
||||
Else
|
||||
promoMap.Put("resultado", "No hay datos de la promoción.")
|
||||
End If
|
||||
@@ -1161,7 +1164,7 @@ End Sub
|
||||
'Revisa si tenemos los productos variables requeridos para la promoción (mapa).
|
||||
'Hay que darle como parametro un mapa (traePromo(promo)) con toda la informacion de la promocion.
|
||||
Sub alcanzanLosVariablesParaPromo(promoMap As Map, inventarioSinFijos As Map) As Boolean 'ignore
|
||||
Private thisLog As Boolean = False 'Si es verdadero, muestra los logs de este sub.
|
||||
Private thisLog As Boolean = True 'Si es verdadero, muestra los logs de este sub.
|
||||
If thisLog Then LogColor("Inventario inicial: "&inventarioSinFijos, Colors.Gray) 'Inventario inicial.
|
||||
Private totalProdsVariables As Int = 0
|
||||
' Private prodsmap As Map = promoMap.Get("productos") 'Obtenemos un mapa con todos los productos de la promoción.
|
||||
@@ -1180,11 +1183,9 @@ Sub alcanzanLosVariablesParaPromo(promoMap As Map, inventarioSinFijos As Map) As
|
||||
Return res
|
||||
End Sub
|
||||
|
||||
'prodsFijos=[1000000126, 1008013885]
|
||||
|
||||
'Regresa el numero máximo de promociones permitidas, tomando en cuenta recurrentes, clientes y maxPromos.
|
||||
Sub traeMaxPromos(pm As Map) As Int
|
||||
Private thisLog As Boolean = False 'Si es verdadero, muestra los logs de este sub.
|
||||
Private thisLog As Boolean = True 'Si es verdadero, muestra los logs de este sub.
|
||||
Private maxPromos As List
|
||||
Private mp0, mp As String = "0"
|
||||
maxPromos.Initialize
|
||||
@@ -1196,8 +1197,12 @@ Sub traeMaxPromos(pm As Map) As Int
|
||||
' Else
|
||||
' LogColor("SIN HCCP CANT", Colors.Magenta)
|
||||
' End If
|
||||
If thisLog Then LogColor("==== HISTORICO:"&pm.Get("historico"), Colors.Red)
|
||||
If thisLog Then Log(pm)
|
||||
' If thisLog Then LogColor("==== Historico: "&pm.Get("historico"), Colors.Red)
|
||||
' Log("### PRODS VARIABLES: " & pm.Get("prodsVariables"))
|
||||
Private maxPromosXDescPV As String = B4XPages.MainPage.promos.ts.maxPromosPorProdsVariables(pm.Get("prodsVariables"), pm.Get("id"))
|
||||
' Log("########### " & maxPromosXDescPV)
|
||||
' If thisLog Then Log(pm)
|
||||
maxPromos.Add(maxPromosXDescPV.As(Int))
|
||||
If pm.Get("historico") = "1" Then maxPromos.Add(pm.Get("maxRecurrente")) 'Si hay historico, agregamos maxRecurrente
|
||||
If pm.Get("maxPromos") <> "null" Then maxPromos.Add(pm.Get("maxPromos").As(Int)) 'Agregamos maxPromos
|
||||
If pm.Get("maxXcliente") <> "null" Then maxPromos.Add(pm.Get("maxXcliente").As(Int)) 'Agregamos maxXcliente
|
||||
@@ -1229,51 +1234,56 @@ Sub traePromosVendidas(promo As String, cliente As String) As Int
|
||||
Return pv
|
||||
End Sub
|
||||
|
||||
'3799, 7226, 7228, 7230
|
||||
|
||||
Sub procesaPromocion(idPromo As String, cliente As String) As Map 'ignore
|
||||
Private thisLog As Boolean = False 'Si es verdadero, muestra los logs de este sub.
|
||||
Private thisLog As Boolean = True 'Si es verdadero, muestra los logs de este sub.
|
||||
Private inicioContador As String = DateTime.Now
|
||||
Private mp As Int = 0
|
||||
If thisLog Then LogColor($"****************************************************************"$, Colors.red)
|
||||
If thisLog Then LogColor($"********* Iniciamos revision de Promo ${idPromo} *********"$, Colors.red)
|
||||
'Obtenemos el mapa con toda la info de la promoción.
|
||||
Private pm As Map = traePromo(idPromo, cliente)
|
||||
|
||||
' B4XPages.MainPage.productos.promosC.traePromo(idPromo, cliente)
|
||||
|
||||
If thisLog Then LogColor(pm, Colors.Blue)
|
||||
' If thisLog Then LogColor("|" & pm.Get("maxPromos") & "|", Colors.Blue)
|
||||
' Log("|"&revisaMaxPromosProdsFijosPorInventario(pm)&"|")
|
||||
If revisaMaxPromosProdsFijosPorInventario(pm) < 1 Then pm.Put("resultado", 0)
|
||||
' Log($"resultado = ${pm.Get("resultado")}"$)
|
||||
If pm.Get("resultado") = "ok" Then 'Si encontramos la promoción, entonces ...
|
||||
'Buscamos el máximo de promociones permitidas.
|
||||
mp = traeMaxPromos(pm)
|
||||
' If thisLog Then LogColor($"Promociones permitidas=${mp}"$, Colors.Blue)
|
||||
' If thisLog Then Log("Promos vendidas: " & traePromosVendidas(idPromo, cliente))
|
||||
If mp < 1 Then
|
||||
If thisLog Then LogColor("Ya se vendieron las promos PERMITIDAS para el cliente", Colors.red)
|
||||
Return CreateMap("status":"ko", "mp":pm)
|
||||
End If
|
||||
'Restamos del inventario (mapa) las piezas necesarias para los productos fijos.
|
||||
Private inventarioSinFijos As Map = restaFijosPromo(pm)
|
||||
If thisLog Then LogColor("inventariosfijos="&inventarioSinFijos, Colors.Magenta)
|
||||
If inventarioSinFijos.Get("resultado") = "ok" Then
|
||||
'Revisamos que los productos variables requeridos sean menos que el inventario total (mapa).
|
||||
Private pv As Boolean = alcanzanLosVariablesParaPromo(pm, inventarioSinFijos)
|
||||
If thisLog Then Log("Alcanzan los variables? --> " & pv)
|
||||
If pv Then Return CreateMap("status":"ok", "mp":pm) Else Return CreateMap("status":"ko", "mp":pm)
|
||||
If thisLog Then LogColor($"****************************************************************"$, Colors.red)
|
||||
Try
|
||||
'Obtenemos el mapa con toda la info de la promoción.
|
||||
Private pm As Map = traePromo(idPromo, cliente)
|
||||
' B4XPages.MainPage.productos.promosC.traePromo(idPromo, cliente)
|
||||
If thisLog Then LogColor(pm, Colors.Blue)
|
||||
' If thisLog Then LogColor("|" & pm.Get("maxPromos") & "|", Colors.Blue)
|
||||
' Log("|"&revisaMaxPromosProdsFijosPorInventario(pm)&"|")
|
||||
Private maxPromosXprodsFijos As Int = revisaMaxPromosProdsFijosPorInventario(pm)
|
||||
If maxPromosXprodsFijos < 1 Then pm.Put("resultado", 0)
|
||||
LogColor($">>> Promos disponibles por productos fijos = ${maxPromosXprodsFijos}"$, Colors.Magenta)
|
||||
If pm.Get("resultado") = "ok" Then 'Si encontramos la promoción, entonces ...
|
||||
'Buscamos el máximo de promociones permitidas.
|
||||
mp = traeMaxPromos(pm)
|
||||
' If thisLog Then LogColor($"Promociones permitidas=${mp}"$, Colors.Blue)
|
||||
' If thisLog Then Log("Promos vendidas: " & traePromosVendidas(idPromo, cliente))
|
||||
If mp < 1 Then
|
||||
If thisLog Then LogColor("Ya se vendieron las promos PERMITIDAS para el cliente", Colors.red)
|
||||
Return CreateMap("status":"ko", "mp":pm)
|
||||
End If
|
||||
'Restamos del inventario (mapa) las piezas necesarias para los productos fijos.
|
||||
Private inventarioSinFijos As Map = restaFijosPromo(pm)
|
||||
If thisLog Then LogColor("inventariosfijos="&inventarioSinFijos, Colors.Magenta)
|
||||
If inventarioSinFijos.Get("resultado") = "ok" Then
|
||||
'Revisamos que los productos variables requeridos sean menos que el inventario total (mapa).
|
||||
Private pv As Boolean = alcanzanLosVariablesParaPromo(pm, inventarioSinFijos)
|
||||
If thisLog Then Log("Alcanzan los variables? --> " & pv)
|
||||
If pv Then Return CreateMap("status":"ok", "mp":pm) Else Return CreateMap("status":"ko", "mp":pm)
|
||||
Else
|
||||
If thisLog Then LogColor("NO HAY INVENTARIO SUFICIENTE " & idPromo, Colors.red)
|
||||
Return CreateMap("status":"ko", "mp":pm)
|
||||
End If
|
||||
Else
|
||||
If thisLog Then LogColor("NO HAY INVENTARIO SUFICIENTE " & idPromo, Colors.red)
|
||||
Return CreateMap("status":"ko", "mp":pm)
|
||||
End If
|
||||
Else
|
||||
Return CreateMap("status":"ko", "mp":pm)
|
||||
End If
|
||||
' Si tenemos suficiente inventario para los variables mostramos la promocion, si no ...
|
||||
' break 'NO HAY INVENTARIO SUFICIENTE PARA LA PROMOCION.
|
||||
' Si tenemos suficiente inventario para los variables mostramos la promocion, si no ...
|
||||
' break 'NO HAY INVENTARIO SUFICIENTE PARA LA PROMOCION.
|
||||
|
||||
LogColor("TIEMPO DE PROCESO ESTA PROMO: " & ((DateTime.Now-inicioContador)/1000), Colors.Red)
|
||||
LogColor("TIEMPO DE PROCESO ESTA PROMO: " & ((DateTime.Now-inicioContador)/1000), Colors.Red)
|
||||
Catch
|
||||
Log($"Promo ${idPromo} mal configurada"$)
|
||||
ToastMessageShow($"Promo ${idPromo} mal configurada"$, True)
|
||||
Log(LastException)
|
||||
End Try
|
||||
End Sub
|
||||
|
||||
'Regresa cuantas promos alcanzan con los productos FIJOS que hay en inventario.
|
||||
@@ -1335,18 +1345,21 @@ Sub revisaMaxPromosProdsFijosPorInventario(pm As Map) As Int
|
||||
For p = 0 To idProdsFijos.Size -1 'Generamos una lista con las promos disponibles por producto (dividimos el inventario total entre las piezas requeridas).
|
||||
Private thisInvDisp As Int = 0
|
||||
If invDispParaPromo.Get(idProdsFijos.Get(p)) <> Null Then thisInvDisp = invDispParaPromo.Get(idProdsFijos.Get(p))
|
||||
If thisLog Then Log($"id=${idProdsFijos.Get(p)}, inv=${thisInvDisp}, pzas=${prodsFijosPiezas.Get(p)}"$)
|
||||
If thisLog Then Log($"id=${idProdsFijos.Get(p)}, inv=${thisInvDisp}, pzasReq=${prodsFijosPiezas.Get(p)}"$)
|
||||
' If thisLog Then Log($"${(thisInvDisp / prodsFijosPiezas.Get(p))}"$)
|
||||
Private x() As String = Regex.Split("\.", $"${(thisInvDisp / prodsFijosPiezas.Get(p))}"$) 'Separamos el resultado de la division por el punto decimal.
|
||||
' If thisLog Then Log(x(0))
|
||||
t.Add(x(0).As(Int)) 'Solo guardamos la parte del entero de la division.
|
||||
If thisLog Then Log(">> Promos x Prods Fijos: " & x(0))
|
||||
Log(">>>>> Monto Bonificacion: " & B4XPages.MainPage.promos.ts.traeMontoBonificacion(idProdsFijos.Get(p), pm.Get("id")))
|
||||
If thisLog Then LogColor(">> Max prods fijos x Bonificaciones: " & B4XPages.MainPage.promos.ts.traeBonificacionesMaximas("bonificaciones", clienteActual, idProdsFijos.Get(p), prodsFijosPiezas.Get(p), pm.Get("id")), Colors.blue)
|
||||
t.Add(B4XPages.MainPage.promos.ts.traeBonificacionesMaximas("bonificaciones", clienteActual, idProdsFijos.Get(p), prodsFijosPiezas.Get(p), pm.Get("id")))
|
||||
Next
|
||||
t.Sort(True) 'Ordenamos la lista para que en el lugar 0 este el resultao mas pequeño.
|
||||
If thisLog Then LogColor($"prodsFijos=${idProdsFijos}"$, Colors.Blue)
|
||||
If thisLog Then LogColor($"prodsFijosPiezasReq=${prodsFijosPiezas}"$, Colors.Blue)
|
||||
If thisLog Then LogColor($"invFijoXpromo=${invFijoXpromo}"$, Colors.Blue)
|
||||
If thisLog Then LogColor("Max promos de prodsFijos POR inventario = " & t.Get(0), Colors.red)
|
||||
' LogColor(">>>>>> " & t.Get(0), Colors.red)
|
||||
' If thisLog Then LogColor($"invFijoXpromo=${invFijoXpromo}"$, Colors.Blue)
|
||||
' LogColor(">>>>>> T: " & t, Colors.red)
|
||||
If thisLog Then LogColor("Max promos x inv de prodsFijos = " & t.Get(0), Colors.red)
|
||||
Return t.Get(0) 'Regresamos el resultado mas pequeño.
|
||||
End Sub
|
||||
|
||||
@@ -1356,8 +1369,8 @@ End Sub
|
||||
'regresa el maximo por productos fijos. Ej. si las promos por variables es 10, pero el maximo por
|
||||
'fijos es 5, entonces regresamos 5.
|
||||
Sub revisaMaxPromosProdsVariablesPorInventario(pm As Map) As Int 'ignore
|
||||
Private thisLog As Boolean = True
|
||||
If thisLog Then Log("======================================================")
|
||||
Private thisLog As Boolean = False
|
||||
If thisLog Then LogColor("==================revisaMaxPromosProdsVariablesPorInventario====================", Colors.red)
|
||||
If thisLog Then Log("======================================================")
|
||||
Private invFijoXpromo As Map
|
||||
invFijoXpromo.Initialize
|
||||
@@ -1371,36 +1384,58 @@ Sub revisaMaxPromosProdsVariablesPorInventario(pm As Map) As Int 'ignore
|
||||
Private prodsVariablesRequeridos As Int = pm.Get("prodsVariablesRequeridos")
|
||||
Private prodsFijosPiezas As List = pm.Get("prodsFijosPiezas")
|
||||
Private idProdsFijos As List = pm.Get("prodsFijos")
|
||||
For p = 0 To idProdsFijos.Size -1 'Generamos mapa con los productos fijos y piezas requeridas por promo.
|
||||
invFijoXpromo.Put(idProdsFijos.Get(p), prodsFijosPiezas.Get(p))
|
||||
Private idEsteProd As String = idProdsFijos.Get(p)
|
||||
Private invEsteProd As Int = invDispParaPromo.Get(idEsteProd)
|
||||
Private pzasReqEsteProd As Int = prodsFijosPiezas.Get(p)
|
||||
If thisLog Then Log($"id=${idEsteProd}, inv=${invEsteProd}, pzas=${pzasReqEsteProd}"$)
|
||||
' For p = 0 To idProdsFijos.Size -1 'Generamos mapa con los productos fijos y piezas requeridas por promo.
|
||||
' invFijoXpromo.Put(idProdsFijos.Get(p), prodsFijosPiezas.Get(p))
|
||||
' Private idEsteProd As String = idProdsFijos.Get(p)
|
||||
' Private invEsteProd As Int = invDispParaPromo.Get(idEsteProd)
|
||||
' Private pzasReqEsteProd As Int = prodsFijosPiezas.Get(p)
|
||||
' If thisLog Then Log($"id=${idEsteProd}, inv=${invEsteProd}, pzas=${pzasReqEsteProd}"$)
|
||||
' invDispParaPromo.Put( idEsteProd, (invEsteProd - (1)) )
|
||||
Next
|
||||
' Next
|
||||
If thisLog Then LogColor($"MaxPromos=${maxPromos}, promosXFijos=${maxPromosXFijos}"$, Colors.Blue)
|
||||
If thisLog Then LogColor($"prodsFijos=${idProdsFijos}"$, Colors.Blue)
|
||||
If thisLog Then LogColor($"prodsFijosPiezasReq=${prodsFijosPiezas}"$, Colors.Blue)
|
||||
If thisLog Then LogColor($"prodsVariables=${idProdsVariables}${CRLF}Variables Req=${prodsVariablesRequeridos} "$, Colors.Blue)
|
||||
If thisLog Then LogColor($"invFijoXpromo=${invFijoXpromo}"$, Colors.Blue)
|
||||
' If thisLog Then LogColor($"invFijoXpromo=${invFijoXpromo}"$, Colors.Blue)
|
||||
If thisLog Then Log($"Prods variables disponibles = ${totalProdsVariablesDisponibles}"$)
|
||||
Private maxPromosXVariables As Int = 0
|
||||
|
||||
'Si prodsFijosCant = 0 entonces no debemos de hacemos el loop, solo sumamos las existencias de los variables / cant de variables requeridos y ese seria el maximo.
|
||||
|
||||
Private revisiones As Int = maxPromosXFijos
|
||||
|
||||
If pm.Get("prodsFijos").As(List).Size = 0 Then
|
||||
revisiones = 1
|
||||
Log(pm.Get("prodsVariables"))
|
||||
|
||||
End If
|
||||
|
||||
' Log(pm.Get("prodsFijos").As(List).Size)
|
||||
' Log(maxPromosXFijos)
|
||||
|
||||
For x = 1 To maxPromosXFijos
|
||||
If thisLog Then Log("==================== maxPromosXFijos "& x &" ========================")
|
||||
If thisLog Then Log("=====================================================")
|
||||
If thisLog Then Log("=====================================================")
|
||||
Log("FIJOS: " & idProdsFijos.Size)
|
||||
For i = 0 To idProdsFijos.Size - 1
|
||||
If thisLog Then Log($"FIJO - ${idProdsFijos.Get(i)}, ${invDispParaPromo.Get(idProdsFijos.Get(i))} - ${prodsFijosPiezas.Get(i).As(Int)*(i+1)}"$)
|
||||
invDispParaPromo.Put(idProdsFijos.Get(i), invDispParaPromo.Get(idProdsFijos.Get(i)).As(Int) - prodsFijosPiezas.Get(i).As(Int)*(i+1)) 'Restamos las piezas de los productos fijos del inventario disponible.
|
||||
Next
|
||||
If thisLog Then LogColor("Inv disponible despues de restar fijos = " & invDispParaPromo, Colors.Blue)
|
||||
|
||||
totalProdsVariablesDisponibles = 0
|
||||
Private prodsVariablesXPresupuestoBonificaciones As List
|
||||
prodsVariablesXPresupuestoBonificaciones.Initialize
|
||||
For i = 0 To idProdsVariables.Size - 1 'Obtenemos total de productos variables disponibes.
|
||||
If invDispParaPromo.ContainsKey(idProdsVariables.Get(i)) Then
|
||||
Log($"Este prodVariable: ${idProdsVariables.Get(i)}"$)
|
||||
Log($"Este invDisponible: ${invDispParaPromo.Get(idProdsVariables.Get(i))}"$)
|
||||
' Log(">> Monto Bonificacion: " & B4XPages.MainPage.promos.ts.traeMontoBonificacion(idProdsVariables.Get(i), pm.Get("id")))
|
||||
prodsVariablesXPresupuestoBonificaciones.Add(B4XPages.MainPage.promos.ts.traeBonificacionesMaximas("bonificaciones", clienteActual, idProdsVariables.Get(i), prodsVariablesRequeridos, pm.Get("id")))
|
||||
' If thisLog Then LogColor(">> Max prods fijos x Bonificaciones: " & B4XPages.MainPage.promos.ts.traeBonificacionesMaximas("bonificaciones", clienteActual, idProdsVariables.Get(i), prodsVariablesRequeridos, pm.Get("id")), Colors.blue)
|
||||
totalProdsVariablesDisponibles = totalProdsVariablesDisponibles + invDispParaPromo.Get(idProdsVariables.Get(i))
|
||||
End If
|
||||
Next
|
||||
If thisLog Then Log($"prodsVariablesXPresupuestoBonificaciones: ${prodsVariablesXPresupuestoBonificaciones}"$)
|
||||
'Revisamos variables.
|
||||
If thisLog Then Log($"Var disponibles - var requeridos : ${totalProdsVariablesDisponibles} - ${prodsVariablesRequeridos*x}"$)
|
||||
totalProdsVariablesDisponibles = totalProdsVariablesDisponibles - (prodsVariablesRequeridos*x)
|
||||
@@ -1409,7 +1444,9 @@ Sub revisaMaxPromosProdsVariablesPorInventario(pm As Map) As Int 'ignore
|
||||
maxPromosXVariables = x
|
||||
Next
|
||||
'Restamos fijos.
|
||||
' LogColor("Max promos de prodsVariables POR inventario = " & maxPromosXVariables, Colors.red)
|
||||
LogColor("Max promos de prodsVariables POR inventario = " & maxPromosXVariables, Colors.red)
|
||||
If thisLog Then Log("=====================================================")
|
||||
If thisLog Then LogColor("=================TERMINA MAXPROMOSPRODSVARIABLES===================", Colors.red)
|
||||
Return maxPromosXVariables
|
||||
End Sub
|
||||
|
||||
@@ -1506,8 +1543,24 @@ Sub borraPedidoClienteActual As String
|
||||
Log($"Registros = ${thisC.RowCount}"$)
|
||||
If thisC.RowCount > 0 Then
|
||||
For i = 0 To thisC.RowCount - 1
|
||||
thisC.Position=i
|
||||
thisC.Position = i
|
||||
Log($"Posicion: ${i}, PE_CEDIS=${thisC.GetString("PE_CEDIS")}"$)
|
||||
If thisC.GetString("PE_CEDIS") <> "DUR" Then
|
||||
Log("No DUR")
|
||||
'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: " & precioConDesc)
|
||||
Log(">>>>>>>>>>>>> " & (precioConDesc * thisC.GetString("PE_CANT")))
|
||||
If Not(IsNumber(thisC.GetString("PE_CEDIS"))) Then ' Si es promo, entonces es bonificacion.
|
||||
Private desc As String = B4XPages.MainPage.promos.ts.traeMontoBonificacion(thisC.GetString("PE_PROID"), thisC.GetString("PE_CEDIS"))
|
||||
Log("Regresamos bonificaciones " & thisC.GetString("PE_PROID") & "=" & desc)
|
||||
modTrendSpending("suma", "bonificaciones", desc)
|
||||
Else ' Si no es promo, entonces es descuento.
|
||||
Log("Regresamos descuentos " & thisC.GetString("PE_PROID") & "=" & (precioConDesc * thisC.GetString("PE_CANT")))
|
||||
modTrendSpending("suma", "descuentos", (precioConDesc * thisC.GetString("PE_CANT")))
|
||||
End If
|
||||
'Termina Trend Spending
|
||||
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")))
|
||||
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))
|
||||
@@ -1704,15 +1757,16 @@ Sub horaNormal(fecha As String) As String 'ignore
|
||||
Return nuevaFecha
|
||||
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
|
||||
'Guarda en la tabla BitacoraGPS el evento espcificado en eventob, junto con coordenadas y otros datos.
|
||||
'En precision,si metio contraseña para brincar la geocerca, poner 0 gps, si esta dentro de los 50 mts poner 1 y 2 para eventos que no lo ocupen.
|
||||
'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 +1813,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
|
||||
@@ -1935,7 +1989,12 @@ Sub revisaPromoPorMonto As Map
|
||||
Private rangoMin As String = "0"
|
||||
Private promoId As String = ""
|
||||
m.Initialize
|
||||
Private pm As Cursor = Starter.skmt.ExecQuery("select CAT_PA_ID, ifNull(CAT_PA_PORCENTAJE_PAQUETE, 0) as CAT_PA_PORCENTAJE_PAQUETE, ifNull(CAT_PA_PRECIO1, 0) as CAT_PA_PRECIO1, ifNull(CAT_PA_PRECIO2, 0) as CAT_PA_PRECIO2 from promos_comp where CAT_PA_TIPO_PROMONTO = '1' and CAT_PA_ID not in (select PE_CEDIS from PEDIDO where PE_CEDIS = PE_PROID)") 'Traemos las "promos por monto" que no existen en el "PEDIDO" del cliente.
|
||||
Private pm As Cursor = Starter.skmt.ExecQuery($"select CAT_PA_ID,
|
||||
ifNull(CAT_PA_PORCENTAJE_PAQUETE, 0) As CAT_PA_PORCENTAJE_PAQUETE,
|
||||
ifNull(CAT_PA_PRECIO1, 0) As CAT_PA_PRECIO1,
|
||||
ifNull(CAT_PA_PRECIO2, 0) As CAT_PA_PRECIO2 from promos_comp
|
||||
where CAT_PA_TIPO_PROMONTO = '1' and
|
||||
CAT_PA_ID Not in (Select PE_CEDIS from PEDIDO where PE_CEDIS = PE_PROID And PE_CLIENTE = '${traeCliente}')"$) 'Traemos las "promos por monto" que no existen en el "PEDIDO" del cliente.
|
||||
If pm.RowCount > 0 Then
|
||||
Private clienteId As String = traeCliente
|
||||
For i = 0 To pm.RowCount - 1
|
||||
@@ -1964,7 +2023,7 @@ Sub revisaHora As Boolean
|
||||
Private hr As Int = h.GetString("CAT_VA_VALOR")
|
||||
DateTime.DateFormat = "HH"
|
||||
Private ahora As String = DateTime.Date(DateTime.Now)
|
||||
Log($"${hr} >= ${(ahora - 2)} and ${hr} <= ${(ahora + 2)}"$)
|
||||
' Log($"${hr} >= ${(ahora - 2)} and ${hr} <= ${(ahora + 2)}"$)
|
||||
If hr >= ahora - 2 And hr <= ahora + 2 Then
|
||||
horaCorrecta = True
|
||||
End If
|
||||
@@ -1985,4 +2044,318 @@ Sub CreateBitmapWithNumber(OriginalBitmap As Bitmap, Number As Int) As Bitmap 'i
|
||||
' Dibujar el número en el centro del Bitmap y configurar el estilo del texto
|
||||
Canvas.DrawText(Number, (OriginalBitmap.Width / 2), (OriginalBitmap.Height / 2.4), Typeface.DEFAULT, 15, Colors.White, "CENTER")
|
||||
Return NewBitmap
|
||||
End Sub
|
||||
|
||||
' Compara dos versiones en formato "X.YY.ZZ"
|
||||
' Devuelve:
|
||||
' -1 si versionActual es MENOR que versionMinima
|
||||
' 0 si son IGUALES
|
||||
' 1 si versionActual es MAYOR que versionMinima
|
||||
Sub comparaVersionesOriginal(versionMinima As String, versionActual As String) As Int
|
||||
' Dividir las versiones en partes
|
||||
Dim partesMin() As String = Regex.Split("\.", versionMinima)
|
||||
Dim partesAct() As String = Regex.Split("\.", versionActual)
|
||||
' Asegurarse que ambas tienen 3 partes
|
||||
If partesMin.Length <> 3 Or partesAct.Length <> 3 Then
|
||||
Log("Formato de versión incorrecto")
|
||||
Return -1 ' Por seguridad, asumimos que no cumple
|
||||
End If
|
||||
' Comparar parte por parte
|
||||
For i = 0 To 2
|
||||
Dim numMin As Int = partesMin(i)
|
||||
Dim numAct As Int = partesAct(i)
|
||||
If numAct < numMin Then
|
||||
Return -1 ' Actual es menor
|
||||
Else If numAct > numMin Then
|
||||
Return 1 ' Actual es mayor
|
||||
End If
|
||||
' Si son iguales, continuar con la siguiente parte
|
||||
Next
|
||||
' Si llegamos aquí, todas las partes son iguales
|
||||
Return 0
|
||||
End Sub
|
||||
|
||||
' Compara dos versiones en formato "X.YY.ZZ"
|
||||
' Devuelve:
|
||||
' -1 si versionActual es MENOR que versionMinima
|
||||
' 0 si son IGUALES
|
||||
' 1 si versionActual es MAYOR que versionMinima
|
||||
Sub comparaVersiones(versionMinima As String, versionActual As String) As Int
|
||||
Dim partesMin() As String = Regex.Split("\.", versionMinima)
|
||||
Dim partesAct() As String = Regex.Split("\.", versionActual)
|
||||
' Si la actual tiene MENOS partes que la mínima, es inválida (opcional)
|
||||
If partesAct.Length < partesMin.Length Then
|
||||
ToastMessageShow("Version incorrecta", False)
|
||||
Return -1 ' ← Actual no cumple el formato mínimo
|
||||
End If
|
||||
' Compara solo las partes que existen en la versión mínima
|
||||
For i = 0 To partesMin.Length - 1
|
||||
Dim numMin As Int = partesMin(i)
|
||||
Dim numAct As Int = partesAct(i)
|
||||
If numAct < numMin Then
|
||||
ToastMessageShow("Versión vieja, por favor actualizar!", False)
|
||||
Return -1 ' Actual es menor
|
||||
Else If numAct > numMin Then
|
||||
Return 1 ' Actual es mayor
|
||||
End If
|
||||
' Si son iguales, sigue comparando
|
||||
Next
|
||||
' Si todas las partes comparadas son iguales:
|
||||
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.ToUpperCase = "RESTA" Then
|
||||
If c.RowCount > 0 Then
|
||||
c.Position = 0
|
||||
If tipo.ToUpperCase = "BONIFICACIONES" Or tipo.ToUpperCase = "RMI" Or tipo.ToUpperCase = "DESCUENTOS" Then
|
||||
Private nuevaBonificacion As String = NumberFormat2((acumulado + monto), 1, 2, 2, False)
|
||||
LogColor($"Nuevo acumulado ${tipo} = ${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}')"$)
|
||||
' else if tipo.ToUpperCase = "RMI" Then
|
||||
End If
|
||||
End If
|
||||
else if accion.ToUpperCase = "SUMA" Then
|
||||
If c.RowCount > 0 Then
|
||||
c.Position = 0
|
||||
If tipo.ToUpperCase = "BONIFICACIONES" Or tipo.ToUpperCase = "RMI" Or tipo.ToUpperCase = "DESCUENTOS" Then
|
||||
Private nuevaBonificacion As String = NumberFormat2((acumulado - monto), 1, 2, 2, False)
|
||||
LogColor($"Nueva ${tipo} = ${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 de ${tipo}: "$ & 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
|
||||
|
||||
'
|
||||
'Sub trendSpendingFuncs(accion As String, tipo As String, clienteId As String, id As String, laCant As String, inv As Int) As String
|
||||
' Private logger As Boolean = True
|
||||
' Dim kh As kms_helperSubs
|
||||
' kh.Initialize("kh", "kh", Starter.skmt)
|
||||
' Dim TS_RMI() As String
|
||||
' Dim TS_DESCUENTOS() As String
|
||||
' Dim TS_BONIFICACIONES() As String
|
||||
' Private mx As Map = traeInfoTrendSpending
|
||||
' TS_RMI = Regex.Split(",", mx.Get("RMI"))
|
||||
' TS_DESCUENTOS = Regex.Split(",", mx.Get("DESCUENTOS"))
|
||||
' TS_BONIFICACIONES = Regex.Split(",", mx.Get("BONIFICACIONES"))
|
||||
'
|
||||
' If tipo.ToUpperCase = "RMI" Then
|
||||
' Private lasMaximas As Int = 0
|
||||
' Log($"Acumulado de RMIs: ${traeAcumuladoHoyTS("rmi")}"$)
|
||||
' Private elMonto As String = NumberFormat2(traePrecioRMI(id), 1, 2, 2, False)
|
||||
' Log($"elMonto: ${elMonto}"$)
|
||||
' Log($"TS_RMI(0): ${TS_RMI(0)}"$)
|
||||
' Log($"TS_RMI(1): ${TS_RMI(1)}"$)
|
||||
' Log($"LaCant: ${laCant}"$)
|
||||
' Private rmisRestantes As String = (TS_RMI(0) - TS_RMI(1) - traeAcumuladoHoyTS("rmi"))
|
||||
' Log($"rmisRestantes: ${rmisRestantes}"$)
|
||||
'
|
||||
' If accion.ToUpperCase = "PRODMAS" Then 'Regresa lasMaximas y elMonto separadas por un "|"
|
||||
' If elMonto > 0 Then
|
||||
' lasMaximas = ((laCant * elMonto) + rmisRestantes) / elMonto
|
||||
' If logger Then Log("lasMaximas: " & lasMaximas)
|
||||
' If logger Then Log(traeAcumuladoHoyTS("rmi"))
|
||||
' End If
|
||||
'' If laCant + 1 = lasMaximas Then
|
||||
'' ToastMessageShow("El presupuesto de RMI no permite agregar mas productos!!", False)
|
||||
'' End If
|
||||
' If logger Then Log("EL RMI: " & elMonto)
|
||||
' Log($"lacant=${laCant} < lasMaximas=${lasMaximas} = ${laCant<lasMaximas}"$)
|
||||
' If laCant < lasMaximas Then
|
||||
' modTrendSpending("resta", "rmi", elMonto) ' Restamos al presupuesto de hoy (agregamos al acumulado).
|
||||
' End If
|
||||
' If logger Then Log("RMI RESTANTES: " & (TS_RMI(0) - TS_RMI(1) - traeAcumuladoHoyTS("rmi")))
|
||||
' Return lasMaximas & "|" & elMonto
|
||||
' else if accion.ToUpperCase = "PRODMENOS" Then
|
||||
' If logger Then Log("LaCANT= " & laCant & ", elMonto= " & elMonto)
|
||||
' If laCant >= 0 Then
|
||||
' modTrendSpending("suma", "rmi", elMonto) ' Agregamos al presupuesto de hoy (restamos del acumulado).
|
||||
' End If
|
||||
' Return lasMaximas & "|" & elMonto
|
||||
' End If
|
||||
' else If tipo.ToUpperCase = "BONIFICACIONES" Then
|
||||
' Dim lasMaximas As Int = 0
|
||||
' Dim elMonto As String = 0
|
||||
' Private elMonto As String = NumberFormat2(kh.traePrecio(id)*(kh.traeDescXSku(clienteId, id)/100), 1, 2, 2, False)
|
||||
' Private BonsRestantes As String = (TS_BONIFICACIONES(0) - TS_BONIFICACIONES(1) - traeAcumuladoHoyTS("bonificaciones"))
|
||||
' If logger Then Log("EL MONTO: " & elMonto)
|
||||
' Log("Monto del presupuesto disponible: " & BonsRestantes)
|
||||
' If accion.ToUpperCase = "PRODMAS" Then 'Regresa lasMaximas y elMonto separadas por un "|"
|
||||
' Log("PMAS")
|
||||
' If elMonto > 0 Then
|
||||
' lasMaximas = ((laCant * elMonto) + BonsRestantes) / elMonto
|
||||
' If logger Then Log("lasMaximas: " & lasMaximas)
|
||||
' If logger Then Log(traeAcumuladoHoyTS("bonificaciones"))
|
||||
' End If
|
||||
' If laCant = lasMaximas Then
|
||||
' ToastMessageShow("El presupuesto de BONIFICACIONES no permite agregar mas productos!!", False)
|
||||
' End If
|
||||
' If logger Then Log("EL MONTO: " & elMonto)
|
||||
' If inv > 0 And laCant < lasMaximas Then
|
||||
' modTrendSpending("resta", "bonificaciones", elMonto) ' Restamos al presupuesto de hoy (agregamos al acumulado).
|
||||
' End If
|
||||
' If logger Then Log(">>>> MONTO RESTANTE PRESUPUESTO: " & (TS_BONIFICACIONES(0) - TS_BONIFICACIONES(1) - traeAcumuladoHoyTS("bonificaciones")))
|
||||
' Return lasMaximas & "|" & elMonto
|
||||
' else if accion.ToUpperCase = "PRODMENOS" Then 'Regresa bonificacionesMaximas y elMonto separadas por un "|"
|
||||
' If logger Then Log("LaCANT= " & laCant & ", elMonto= " & elMonto)
|
||||
' If laCant >= 0 Then
|
||||
' modTrendSpending("suma", "bonificaciones", elMonto) ' Agregamos al presupuesto de hoy (restamos del acumulado).
|
||||
' End If
|
||||
' Return lasMaximas & "|" & elMonto
|
||||
' else if accion.ToUpperCase = "TEXTCHANGED" Then
|
||||
' Log("TC")
|
||||
'' Private laBonificacion As String = NumberFormat2(kh.traePrecio(id)*(kh.traeDescXSku(clienteId, id)/100), 1, 2, 2, False)
|
||||
'' Log("LA BONIFICACION: " & laBonificacion)
|
||||
'' Private BonsRestantes As String = (TS_BONIFICACIONES(0) - TS_BONIFICACIONES(1) - 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 inv > bonificacionesMaximas Then
|
||||
'' laCant = bonificacionesMaximas
|
||||
'' Else
|
||||
'' laCant = inv
|
||||
'' End If
|
||||
'' End If
|
||||
'' Else if laBonificacion = 0 Then
|
||||
'' If laCant > inv Or New > inv Then
|
||||
''' Log("Se pasa!!")
|
||||
''' Log($"Ponemos laCant en: ${inv}"$)
|
||||
'' laCant = inv
|
||||
'' End If
|
||||
'' End If
|
||||
'' modTrendSpending("resta", "bonificaciones", ((New * laBonificacion) - (Old * laBonificacion)))
|
||||
'' Log(traeAcumuladoHoyTS("bonificaciones"))
|
||||
'' Return bonificacionesMaximas & "|" & laBonificacion
|
||||
' else if accion.ToUpperCase = "FOCUSCHANGED" Then 'Regresa bonificaciones maximas, SOLO correr esta parte si HASFOCUS es VERDADERO.
|
||||
' Log("FC")
|
||||
' Private elMonto As String = kh.traePrecio(id)*(kh.traeDescXSku(clienteId, id)/100)
|
||||
' If elMonto > 0 Then 'And HasFocus
|
||||
' If logger Then Log("LA BONIFICACION: " & elMonto)
|
||||
' Private BonsRestantes As String = (TS_BONIFICACIONES(0) - TS_BONIFICACIONES(1) - traeAcumuladoHoyTS("bonificaciones"))
|
||||
' If logger Then Log("Monto del PRESUPUESTO disponible: " & BonsRestantes)
|
||||
' lasMaximas = ((laCant * elMonto) + BonsRestantes) / elMonto
|
||||
' If logger Then Log("bonificacionesMaximas: " & lasMaximas)
|
||||
' End If
|
||||
' Return lasMaximas
|
||||
' End If
|
||||
' End If
|
||||
'End Sub
|
||||
'
|
||||
'' Trae el precio del RMI desde CAT_RMI.
|
||||
'Sub traePrecioRMI(id As String) As String
|
||||
' Private precio As String = "0"
|
||||
' Private c As Cursor = Starter.skmt.ExecQuery($"select cat_monto from cat_rmi where cat_id = '${id}'"$)
|
||||
' If c.RowCount > 0 Then
|
||||
' c.Position = 0
|
||||
' precio = c.GetString("CAT_MONTO")
|
||||
' End If
|
||||
' Return precio
|
||||
'End Sub
|
||||
|
||||
' Revisa que la contraseña sea la correcta: pass1 + dia (sin ceros) + hora (24 hrs sin ceros)
|
||||
Sub revisaContrasenaHoy
|
||||
Private pass1 As String = "KMT"
|
||||
Private contrasenaHoy As String = pass1 & DateTime.GetDayOfMonth(DateTime.Now) & DateTime.GetHour(DateTime.now)
|
||||
Log($"${contrasenaHoy}"$)
|
||||
' Log(New)
|
||||
' If New = contrasenaHoy Then
|
||||
' p_login.Visible = False
|
||||
' Sleep(80)
|
||||
' et_usuario.Text = ""
|
||||
' If Not(versionOk) Then ExitApplication 'Si la version no es correcta, salimos de la aplicacion.
|
||||
' kb.HideKeyboard
|
||||
' End If
|
||||
End Sub
|
||||
@@ -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)
|
||||
|
||||
166
B4A/jRDCWrapper.bas
Normal file
166
B4A/jRDCWrapper.bas
Normal file
@@ -0,0 +1,166 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
ModulesStructureVersion=1
|
||||
Type=Class
|
||||
Version=12.8
|
||||
@EndOfDesignText@
|
||||
'Class module: jRDC1Wrapper
|
||||
'Version 1.3 - Thread-Safe with ExecuteCommand support
|
||||
|
||||
Public Sub Class_Globals
|
||||
' Public properties to be accessed after the wait for completes
|
||||
Type TResultado(Tag As String, Success As Boolean, resultado As DBResult, ErrorMessage As String)
|
||||
' Type TCommandResult(Tag As String, Success As Boolean, RowsAffected As Int, ErrorMessage As String)
|
||||
|
||||
'C <<< Definimos un tipo para almacenar la información de cada job
|
||||
Type TJobInfo (Target As Object, EventName As String, IsQuery As Boolean)
|
||||
|
||||
'C <<< Un mapa para mantener un registro de los jobs activos
|
||||
Private activeJobs As Map
|
||||
|
||||
'C <<< Un contador para generar tags únicos para cada job
|
||||
Private jobCounter As Int
|
||||
|
||||
Public reqManager As DBRequestManager
|
||||
Public cmd As DBCommand
|
||||
Public resultado As TResultado
|
||||
' Public commandResult As TCommandResult
|
||||
Private logger As Boolean = False
|
||||
End Sub
|
||||
|
||||
'Initializes the object.
|
||||
Public Sub Initialize
|
||||
'C <<< Inicializamos el mapa y el contador
|
||||
activeJobs.Initialize
|
||||
jobCounter = 0
|
||||
End Sub
|
||||
|
||||
'Executes the query using the old jRDC1 mechanism.
|
||||
'Parameters:
|
||||
' - rdcLink: The link for the reqManager initialization.
|
||||
' - Command: The DBCommand to execute.
|
||||
' - Target: The module (like 'Me') where the completed event should be raised.
|
||||
' - Event: The name of the event to raise when the query completes (e.g., "WrapperEvent").
|
||||
Public Sub ExecuteQuery(rdcLink As String, Command As DBCommand, Target As Object, Event As String)
|
||||
'<<< Incrementamos el contador para obtener un ID único
|
||||
jobCounter = jobCounter + 1
|
||||
Dim currentJobTag As String = "jRDCWrapJob_" & jobCounter
|
||||
|
||||
If logger Then Log($"ExecuteQuery (Tag: ${currentJobTag}): Command=${Command.Name}, Event=${Event}"$)
|
||||
|
||||
'<<< Creamos una instancia de TJobInfo para guardar el target y el evento
|
||||
Dim jobInfo As TJobInfo
|
||||
jobInfo.Initialize
|
||||
jobInfo.Target = Target
|
||||
jobInfo.EventName = Event
|
||||
jobInfo.IsQuery = True ' Mark as query job
|
||||
|
||||
'<<< Guardamos la información del job en el mapa, usando el tag único como llave
|
||||
activeJobs.Put(currentJobTag, jobInfo)
|
||||
|
||||
reqManager.Initialize(Me, rdcLink)
|
||||
cmd = Command
|
||||
|
||||
'<<< Ejecutamos la consulta pasando nuestro TAG ÚNICO
|
||||
reqManager.ExecuteQuery(cmd, 0, currentJobTag)
|
||||
End Sub
|
||||
|
||||
'Executes a command (INSERT, UPDATE, DELETE) using the old jRDC1 mechanism.
|
||||
'Parameters:
|
||||
' - rdcLink: The link for the reqManager initialization.
|
||||
' - Command: The DBCommand to execute.
|
||||
' - Target: The module (like 'Me') where the completed event should be raised.
|
||||
' - Event: The name of the event to raise when the command completes (e.g., "WrapperEvent").
|
||||
Public Sub ExecuteCommand(rdcLink As String, Command As DBCommand, Target As Object, Event As String)
|
||||
'<<< Incrementamos el contador para obtener un ID único
|
||||
jobCounter = jobCounter + 1
|
||||
Dim currentJobTag As String = "jRDCWrapJob_" & jobCounter
|
||||
|
||||
if logger then Log($"ExecuteCommand (Tag: ${currentJobTag}): Command=${Command.Name}, Event=${Event}"$)
|
||||
|
||||
'<<< Creamos una instancia de TJobInfo para guardar el target y el evento
|
||||
Dim jobInfo As TJobInfo
|
||||
jobInfo.Initialize
|
||||
jobInfo.Target = Target
|
||||
jobInfo.EventName = Event
|
||||
jobInfo.IsQuery = False ' Mark as command job
|
||||
|
||||
'<<< Guardamos la información del job en el mapa, usando el tag único como llave
|
||||
activeJobs.Put(currentJobTag, jobInfo)
|
||||
|
||||
reqManager.Initialize(Me, rdcLink)
|
||||
cmd = Command
|
||||
|
||||
'<<< Ejecutamos el comando pasando nuestro TAG ÚNICO
|
||||
reqManager.ExecuteCommand(cmd, currentJobTag)
|
||||
End Sub
|
||||
|
||||
'This sub will be called by the DBRequestManager when the job is done
|
||||
Public Sub JobDone(job As HttpJob)
|
||||
'<<< Obtenemos el Tag único que asignamos al job
|
||||
Dim currentJobTag As String = job.Tag
|
||||
|
||||
'C <<< Verificamos si este job fue iniciado por nuestro wrapper
|
||||
If activeJobs.ContainsKey(currentJobTag) = False Then
|
||||
If logger Then Log($"JobDone: Se recibió un job con un tag desconocido: ${currentJobTag}"$)
|
||||
job.Release
|
||||
Return
|
||||
End If
|
||||
|
||||
'<<< Recuperamos la información específica de este job desde el mapa
|
||||
Dim jobInfo As TJobInfo = activeJobs.Get(currentJobTag)
|
||||
Try
|
||||
If jobInfo.IsQuery Then
|
||||
' Handle query result
|
||||
resultado.Initialize
|
||||
resultado.Tag = jobInfo.EventName ' Usamos el nombre del evento original como Tag del resultado
|
||||
|
||||
If job.Success Then
|
||||
Dim dbResult As DBResult = reqManager.HandleJob(job)
|
||||
resultado.Success = True
|
||||
resultado.Resultado = dbResult
|
||||
resultado.ErrorMessage = ""
|
||||
Else
|
||||
resultado.Success = False
|
||||
resultado.Resultado = Null
|
||||
resultado.ErrorMessage = job.ErrorMessage
|
||||
End If
|
||||
job.Release
|
||||
|
||||
'<<< Usamos la información recuperada del mapa para llamar al Sub correcto
|
||||
if logger then LogColor($"EVENTO: ${jobInfo.EventName}_Completed"$, Colors.Magenta)
|
||||
CallSubDelayed2(jobInfo.Target, jobInfo.EventName & "_Completed", resultado)
|
||||
Else
|
||||
' Handle command result
|
||||
resultado.Initialize
|
||||
resultado.Tag = jobInfo.EventName
|
||||
|
||||
If job.Success Then
|
||||
Dim dbResult As DBResult = reqManager.HandleJob(job)
|
||||
' Dim rowsAffected As Int = reqManager.HandleCommandResult(job)
|
||||
' For Each records() As Object In dbResult.Rows
|
||||
' Dim rowsAffected As Int = records(dbResult.Columns.Get("AffectedRows"))
|
||||
' Next
|
||||
resultado.Success = True
|
||||
resultado.resultado = dbResult
|
||||
resultado.ErrorMessage = ""
|
||||
Else
|
||||
resultado.Success = False
|
||||
resultado.resultado = Null
|
||||
resultado.ErrorMessage = job.ErrorMessage
|
||||
End If
|
||||
job.Release
|
||||
|
||||
'<<< Usamos la información recuperada del mapa para llamar al Sub correcto
|
||||
If logger Then LogColor($"EVENTO: ${jobInfo.EventName}_Completed"$, Colors.Magenta)
|
||||
CallSubDelayed2(jobInfo.Target, jobInfo.EventName & "_Completed", resultado)
|
||||
End If
|
||||
|
||||
'C <<< Se remueve el job del mapa en caso de ÉXITO
|
||||
activeJobs.Remove(currentJobTag)
|
||||
Catch
|
||||
if logger then LogColor("Error en jRDC1Wrapper.JobDone: " & LastException, Colors.Red)
|
||||
'<<< MUY IMPORTANTE: Remover el job del mapa para no tener fugas de memoria
|
||||
activeJobs.Remove(currentJobTag)
|
||||
End Try
|
||||
End Sub
|
||||
@@ -66,23 +66,42 @@ Sub RD_Init
|
||||
If Not(File.IsDirectory(Dirp, Dir)) Then safePath = rp.GetSafeDirDefaultExternal("kmts")
|
||||
' Log($"Hay directorio: ${Dirp} ${Dir} - ${File.IsDirectory(Dirp, Dir)}"$)
|
||||
If Starter.Logger Then Log($"Safepath:${safePath}"$)
|
||||
Private limpiarBD As Boolean = False
|
||||
Private name() As String = Regex.split(" ", Application.LabelName) 'Obtenemos el nombre de la app para ponerselo a la BD.
|
||||
If File.Exists(safePath, $"${name(0)}.rkmt.km"$) = False Then
|
||||
File.Copy(File.DirAssets, $"${name(0)}.rkmt.km"$, safePath, $"${name(0)}.rkmt.km"$)
|
||||
limpiarBD = True
|
||||
Log("NO EXISTE BD")
|
||||
End If
|
||||
LogColor("#################################################" & CRLF & " safePath: " & safePath, Colors.red)
|
||||
rkmt.Initialize(safePath, $"${name(0)}.rkmt.km"$, True)
|
||||
If limpiarBD Then
|
||||
LogColor("----->> LIMPIAMOS BD RECUPERACION PRIMERA VEZ <<-------", Colors.red)
|
||||
rkmt.ExecNonQuery("delete from pedido")
|
||||
rkmt.ExecNonQuery("delete from cat_gunaprod")
|
||||
rkmt.ExecNonQuery("delete from cat_gunaprod2")
|
||||
rkmt.ExecNonQuery("delete from kmt_info")
|
||||
limpiarBD = False
|
||||
End If
|
||||
' Log("TAMAÑO DE ARCHIVO RESPALDO " &File.size(File.DirInternal&"/kmts", $"${name(0)}.rkmt.km"$))
|
||||
skmt.Initialize(File.DirInternal,"kmt.db", False)
|
||||
If chkIfTableExists(skmt, "PEDIDO") Then rkmt.ExecNonQuery($"create table if not exists PEDIDO (${getTableColumnList(skmt, "PEDIDO")}, FECHA TEXT)"$)
|
||||
If chkIfTableExists(skmt, "CAT_DETALLES_PAQ") Then rkmt.ExecNonQuery($"create table if not exists CAT_DETALLES_PAQ (${getTableColumnList(skmt, "CAT_DETALLES_PAQ")}, FECHA TEXT)"$)
|
||||
If chkIfTableExists(skmt, "CAT_GUNAPROD") Then rkmt.ExecNonQuery($"create table if not exists CAT_GUNAPROD (${getTableColumnList(skmt, "CAT_GUNAPROD")}, FECHA TEXT)"$)
|
||||
If chkIfTableExists(skmt, "CAT_GUNAPROD2") Then rkmt.ExecNonQuery($"create table if not exists CAT_GUNAPROD2 (${getTableColumnList(skmt, "CAT_GUNAPROD2")}, FECHA TEXT)"$)
|
||||
' skmt.Initialize(File.DirInternal,"kmt.db", False)
|
||||
If chkIfTableExists(khdb, "PEDIDO") Then rkmt.ExecNonQuery($"create table if not exists PEDIDO (${getTableColumnList(khdb, "PEDIDO")}, FECHA TEXT)"$)
|
||||
If chkIfTableExists(khdb, "CAT_DETALLES_PAQ") Then rkmt.ExecNonQuery($"create table if not exists CAT_DETALLES_PAQ (${getTableColumnList(khdb, "CAT_DETALLES_PAQ")}, FECHA TEXT)"$)
|
||||
If chkIfTableExists(khdb, "CAT_GUNAPROD") Then rkmt.ExecNonQuery($"create table if not exists CAT_GUNAPROD (${getTableColumnList(khdb, "CAT_GUNAPROD")}, FECHA TEXT)"$)
|
||||
If chkIfTableExists(khdb, "CAT_GUNAPROD2") Then rkmt.ExecNonQuery($"create table if not exists CAT_GUNAPROD2 (${getTableColumnList(khdb, "CAT_GUNAPROD2")}, FECHA TEXT)"$)
|
||||
agregaColumna(rkmt,"CAT_GUNAPROD", "CAT_GP_TIPOPROD2", "TEXT")
|
||||
agregaColumna(rkmt,"CAT_GUNAPROD", "CAT_GP_PROMOCION", "TEXT")
|
||||
agregaColumna(rkmt,"CAT_GUNAPROD2", "CAT_GP_TIPOPROD2", "TEXT")
|
||||
agregaColumna(rkmt,"CAT_GUNAPROD2", "CAT_GP_PROMOCION", "TEXT")
|
||||
agregaColumna(rkmt, "kmt_info", "CAT_CL_LIMITECREDITO", "TEXT")
|
||||
If chkIfTableExists(skmt, "kmt_info") Then rkmt.ExecNonQuery($"create table if not exists kmt_info (${getTableColumnList(skmt, "kmt_info")}, FECHA TEXT)"$)
|
||||
If chkIfTableExists(skmt, "PROMOS_COMP") Then rkmt.ExecNonQuery($"create table if not exists PROMOS_COMP (${getTableColumnList(skmt, "PROMOS_COMP")}, FECHA TEXT)"$)
|
||||
If chkIfTableExists(khdb, "kmt_info") Then rkmt.ExecNonQuery($"create table if not exists kmt_info (${getTableColumnList(khdb, "kmt_info")}, FECHA TEXT)"$)
|
||||
If chkIfTableExists(khdb, "PROMOS_COMP") Then rkmt.ExecNonQuery($"create table if not exists PROMOS_COMP (${getTableColumnList(khdb, "PROMOS_COMP")}, FECHA TEXT)"$)
|
||||
agregaColumna(rkmt, "PROMOS_COMP", "CAT_PA_PORCENTAJE_PAQUETE", "TEXT")
|
||||
agregaColumna(rkmt, "PROMOS_COMP", "CAT_PA_PRECIO1", "TEXT")
|
||||
If chkIfTableExists(skmt, "CAT_VARIABLES") Then rkmt.ExecNonQuery($"create table if not exists CAT_VARIABLES (${getTableColumnList(skmt, "CAT_VARIABLES")}, FECHA TEXT)"$)
|
||||
If chkIfTableExists(skmt, "CAT_RMI") Then rkmt.ExecNonQuery($"create table if not exists CAT_RMI (${getTableColumnList(skmt, "CAT_RMI")}, FECHA TEXT)"$)
|
||||
agregaColumna(rkmt, "CAT_DETALLES_PAQ", "CAT_DP_PRECIOB", "TEXT")
|
||||
agregaColumna(rkmt, "kmt_info", "CREDITO", "INTEGER")
|
||||
If chkIfTableExists(khdb, "CAT_VARIABLES") Then rkmt.ExecNonQuery($"create table if not exists CAT_VARIABLES (${getTableColumnList(khdb, "CAT_VARIABLES")}, FECHA TEXT)"$)
|
||||
If chkIfTableExists(khdb, "CAT_RMI") Then rkmt.ExecNonQuery($"create table if not exists CAT_RMI (${getTableColumnList(khdb, "CAT_RMI")}, FECHA TEXT)"$)
|
||||
DateTime.DateFormat = "yyyyMMdd"
|
||||
fechaHoy = DateTime.Date(DateTime.Now)
|
||||
If Starter.Logger Then Log("RKMTS: " & rkmt.IsInitialized)
|
||||
@@ -99,6 +118,9 @@ Sub revisaSiExisteRespaldo
|
||||
If File.size(File.DirInternal&"/kmts", $"${name(0)}.rkmt.km"$) < 43000 And File.Exists(File.DirRootExternal & extDir, $"${name(0)}.rkmt.km"$) Then
|
||||
LogColor("Copiamos el respaldo desde la tarjeta!!", Colors.red)
|
||||
File.Copy(File.DirRootExternal & extDir, $"${name(0)}.rkmt.km"$, File.DirInternal&"/kmts", $"${name(0)}.rkmt.km"$)
|
||||
|
||||
RD_Init
|
||||
|
||||
Else
|
||||
LogColor("No hay respaldo en tarjeta externa!", Colors.red)
|
||||
End If
|
||||
@@ -124,7 +146,7 @@ End Sub
|
||||
'Para que "skmt" vea a "rkmt", es necesario montarla (attach).
|
||||
Sub revisaRkmtAttached As Boolean
|
||||
rkmtAttached = False
|
||||
Dim rs As ResultSet = skmt.ExecQuery("SELECT * FROM pragma_database_list")
|
||||
Dim rs As ResultSet = khdb.ExecQuery("SELECT * FROM pragma_database_list")
|
||||
Do While rs.NextRow 'Revisamos si esta montada "kmt.db" como "rkmt1" y si no, la montamos.
|
||||
If rs.GetString("name") = "rkmt1" Then rkmtAttached = True
|
||||
' Log(rs.GetString("name"))
|
||||
@@ -132,7 +154,7 @@ Sub revisaRkmtAttached As Boolean
|
||||
If Not(rkmtAttached) Then
|
||||
|
||||
Private name() As String = Regex.split(" ", Application.LabelName)
|
||||
skmt.ExecNonQuery($"attach database '${File.Combine(safePath,$"${name(0)}.rkmt.km"$)}' as rkmt1;"$)
|
||||
khdb.ExecNonQuery($"attach database '${File.Combine(safePath,$"${name(0)}.rkmt.km"$)}' as rkmt1;"$)
|
||||
rkmtAttached = True
|
||||
End If
|
||||
Return rkmtAttached
|
||||
@@ -155,10 +177,10 @@ Sub RD_respalda_pedido
|
||||
DateTime.DateFormat = "MM/dd/yyyy"
|
||||
Private fechaHoy2 As String = DateTime.Date(DateTime.Now)
|
||||
' Log("Copiando PEDIDO ...")
|
||||
Private x As Cursor = skmt.ExecQuery("select * from PEDIDO")
|
||||
Private x As Cursor = khdb.ExecQuery("select * from PEDIDO")
|
||||
' Log(x.RowCount)
|
||||
If x.RowCount > 0 Then
|
||||
Private lasCols As String = getTableColumnListName(skmt, "PEDIDO")
|
||||
Private lasCols As String = getTableColumnListName(khdb, "PEDIDO")
|
||||
' rkmt.BeginTransaction
|
||||
rkmt.ExecNonQuery($"delete from PEDIDO where FECHA = '${fechaHoy}'"$)
|
||||
rkmt.ExecNonQuery($"insert into PEDIDO (${lasCols}, FECHA) select ${lasCols}, '${fechaHoy}' as FECHA from skmt1.PEDIDO where substr(pe_fecha, 1, 10) = '${fechaHoy2}'"$)
|
||||
@@ -178,9 +200,9 @@ End Sub
|
||||
Sub RD_respalda_cat_gunaprod
|
||||
Private inicio As String = DateTime.Now
|
||||
' Log("Copiando CAT_GUNAPROD ...")
|
||||
Private x As Cursor = skmt.ExecQuery("select * from CAT_GUNAPROD")
|
||||
Private x As Cursor = khdb.ExecQuery("select * from CAT_GUNAPROD")
|
||||
If x.RowCount > 0 Then
|
||||
Private lasCols As String = getTableColumnListName(skmt, "CAT_GUNAPROD")
|
||||
Private lasCols As String = getTableColumnListName(khdb, "CAT_GUNAPROD")
|
||||
lasCols = lasCols.Replace(", CAT_GP_IMG", "") 'Quitamos la imagen del respaldo.
|
||||
rkmt.BeginTransaction
|
||||
rkmt.ExecNonQuery($"delete from CAT_GUNAPROD where FECHA = '${fechaHoy}'"$)
|
||||
@@ -207,8 +229,8 @@ Sub RD_restaura_cat_gunaprod
|
||||
If c.RowCount > 0 Then
|
||||
c.Position = 0
|
||||
' Log(c.GetString("FECHA"))
|
||||
skmt.ExecNonQuery("delete from CAT_GUNAPROD")
|
||||
skmt.ExecNonQuery($"insert into CAT_GUNAPROD (${lasCols}) select ${lasCols} from rkmt1.CAT_GUNAPROD where fecha = '${c.GetString("FECHA")}'"$)
|
||||
khdb.ExecNonQuery("delete from CAT_GUNAPROD")
|
||||
khdb.ExecNonQuery($"insert into CAT_GUNAPROD (${lasCols}) select ${lasCols} from rkmt1.CAT_GUNAPROD where fecha = '${c.GetString("FECHA")}'"$)
|
||||
Log($"insert into CAT_GUNAPROD (${lasCols}) select ${lasCols} from rkmt1.CAT_GUNAPROD where fecha = '${c.GetString("FECHA")}'"$)
|
||||
Else
|
||||
If fechaRestauracion.Length > 0 Then
|
||||
@@ -225,9 +247,9 @@ End Sub
|
||||
Sub RD_respalda_cat_gunaprod2
|
||||
Private inicio As String = DateTime.Now
|
||||
' Log("Copiando CAT_GUNAPROD2 ...")
|
||||
Private x As Cursor = skmt.ExecQuery("select * from CAT_GUNAPROD2")
|
||||
Private x As Cursor = khdb.ExecQuery("select * from CAT_GUNAPROD2")
|
||||
If x.RowCount > 0 Then
|
||||
Private lasCols As String = getTableColumnListName(skmt, "CAT_GUNAPROD2")
|
||||
Private lasCols As String = getTableColumnListName(khdb, "CAT_GUNAPROD2")
|
||||
lasCols = lasCols.Replace(", CAT_GP_IMG", "") 'Quitamos la fecha del respaldo.
|
||||
rkmt.BeginTransaction
|
||||
rkmt.ExecNonQuery($"delete from CAT_GUNAPROD2 where FECHA = '${fechaHoy}'"$)
|
||||
@@ -253,8 +275,8 @@ Sub RD_restaura_cat_gunaprod2
|
||||
If c.RowCount > 0 Then
|
||||
c.Position = 0
|
||||
LogColor(">>>>> Restauramos GP: " & c.GetString("FECHA"), Colors.red)
|
||||
skmt.ExecNonQuery("delete from CAT_GUNAPROD2")
|
||||
skmt.ExecNonQuery($"insert into CAT_GUNAPROD2 (${lasCols}) select ${lasCols} from rkmt1.CAT_GUNAPROD2 where fecha = '${c.GetString("FECHA")}'"$)
|
||||
khdb.ExecNonQuery("delete from CAT_GUNAPROD2")
|
||||
khdb.ExecNonQuery($"insert into CAT_GUNAPROD2 (${lasCols}) select ${lasCols} from rkmt1.CAT_GUNAPROD2 where fecha = '${c.GetString("FECHA")}'"$)
|
||||
' Log($"insert into CAT_GUNAPROD2 (${lasCols}) select ${lasCols} from rkmt1.CAT_GUNAPROD2 where fecha = '${c.GetString("FECHA")}'"$)
|
||||
Else
|
||||
If fechaRestauracion.Length > 0 Then
|
||||
@@ -294,10 +316,12 @@ End Sub
|
||||
Sub RD_respalda_cat_detalle_paq
|
||||
Private inicio As String = DateTime.Now
|
||||
' Log("Copiando CAT_DETALLES_PAQ ...")
|
||||
Private x As Cursor = skmt.ExecQuery("select * from CAT_DETALLES_PAQ")
|
||||
Private x As Cursor = khdb.ExecQuery("select * from CAT_DETALLES_PAQ")
|
||||
Log(1)
|
||||
Try
|
||||
If x.RowCount > 0 Then
|
||||
Private lasCols As String = getTableColumnListName(skmt, "CAT_DETALLES_PAQ")
|
||||
Log(2)
|
||||
Private lasCols As String = getTableColumnListName(khdb, "CAT_DETALLES_PAQ")
|
||||
rkmt.BeginTransaction
|
||||
rkmt.ExecNonQuery($"delete from CAT_DETALLES_PAQ where fecha = '${fechaHoy}'"$)
|
||||
rkmt.ExecNonQuery($"insert into CAT_DETALLES_PAQ (${lasCols}, FECHA) select ${lasCols}, '${fechaHoy}' as FECHA from skmt1.CAT_DETALLES_PAQ"$)
|
||||
@@ -307,7 +331,9 @@ Sub RD_respalda_cat_detalle_paq
|
||||
End If
|
||||
Catch
|
||||
Log(LastException)
|
||||
rkmt.Close
|
||||
End Try
|
||||
Log(2.5)
|
||||
x.Close
|
||||
End Sub
|
||||
|
||||
@@ -324,8 +350,8 @@ Sub RD_restaura_cat_detalle_paq
|
||||
If c.RowCount > 0 Then
|
||||
c.Position = 0
|
||||
' Log(c.GetString("FECHA"))
|
||||
skmt.ExecNonQuery("delete from CAT_DETALLES_PAQ")
|
||||
skmt.ExecNonQuery($"insert into CAT_DETALLES_PAQ (${lasCols}) select ${lasCols} from rkmt1.CAT_DETALLES_PAQ where fecha = '${c.GetString("FECHA")}'"$)
|
||||
khdb.ExecNonQuery("delete from CAT_DETALLES_PAQ")
|
||||
khdb.ExecNonQuery($"insert into CAT_DETALLES_PAQ (${lasCols}) select ${lasCols} from rkmt1.CAT_DETALLES_PAQ where fecha = '${c.GetString("FECHA")}'"$)
|
||||
Log($"insert into CAT_DETALLES_PAQ (${lasCols}) select ${lasCols} from rkmt1.CAT_DETALLES_PAQ where fecha = '${c.GetString("FECHA")}'"$)
|
||||
Else
|
||||
If fechaRestauracion.Length > 0 Then
|
||||
@@ -342,9 +368,9 @@ End Sub
|
||||
Sub RD_respalda_kmt_info
|
||||
Private inicio As String = DateTime.Now
|
||||
' Log("Copiando kmt_info ...")
|
||||
Private x As Cursor = skmt.ExecQuery("select * from kmt_info")
|
||||
Private x As Cursor = khdb.ExecQuery("select * from kmt_info")
|
||||
If x.RowCount > 0 Then
|
||||
Private lasCols As String = getTableColumnListName(skmt, "kmt_info")
|
||||
Private lasCols As String = getTableColumnListName(khdb, "kmt_info")
|
||||
rkmt.BeginTransaction
|
||||
rkmt.ExecNonQuery($"delete from kmt_info where fecha = '${fechaHoy}'"$)
|
||||
rkmt.ExecNonQuery($"insert into kmt_info (${lasCols}, FECHA) select ${lasCols}, '${fechaHoy}' as FECHA from skmt1.kmt_info"$)
|
||||
@@ -368,15 +394,15 @@ Sub RD_restaura_kmt_info
|
||||
If c.RowCount > 0 Then
|
||||
c.Position = 0
|
||||
' Log(c.GetString("FECHA"))
|
||||
skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("DIA_VISITA"))' Ponemos el dia de hoy para visita.
|
||||
skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("DIA_VISITA", Subs.traeDiaSemana))
|
||||
skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("FINDIA_FECHA"))' Borramos fecha de FIN DIA.
|
||||
skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("FINDIA_PASS"))' Ponemos la contraseña del FIN DIA en "CL"
|
||||
skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("FINDIA_PASS", "CL"))
|
||||
Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("FECHA")) 'Ponemos la fecha de hoy en CAT_VARIABLES para que nos deje ingresar con el usuario guardado.
|
||||
Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("FECHA", fechaHoy))
|
||||
skmt.ExecNonQuery("delete from kmt_info")
|
||||
skmt.ExecNonQuery($"insert into kmt_info (${lasCols}) select ${lasCols} from rkmt1.kmt_info where fecha = '${c.GetString("FECHA")}'"$)
|
||||
khdb.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("DIA_VISITA"))' Ponemos el dia de hoy para visita.
|
||||
khdb.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("DIA_VISITA", Subs.traeDiaSemana))
|
||||
khdb.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("FINDIA_FECHA"))' Borramos fecha de FIN DIA.
|
||||
khdb.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("FINDIA_PASS"))' Ponemos la contraseña del FIN DIA en "CL"
|
||||
khdb.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("FINDIA_PASS", "CL"))
|
||||
khdb.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("FECHA")) 'Ponemos la fecha de hoy en CAT_VARIABLES para que nos deje ingresar con el usuario guardado.
|
||||
khdb.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("FECHA", fechaHoy))
|
||||
khdb.ExecNonQuery("delete from kmt_info")
|
||||
khdb.ExecNonQuery($"insert into kmt_info (${lasCols}) select ${lasCols} from rkmt1.kmt_info where fecha = '${c.GetString("FECHA")}'"$)
|
||||
' Log($"insert into kmt_info (${lasCols}) select ${lasCols} from rkmt1.kmt_info where fecha = '${c.GetString("FECHA")}'"$)
|
||||
Else
|
||||
If fechaRestauracion.Length > 0 Then
|
||||
@@ -393,9 +419,9 @@ End Sub
|
||||
Sub RD_respalda_cat_variables
|
||||
Private inicio As String = DateTime.Now
|
||||
' Log("Copiando CAT_VARIABLES ...")
|
||||
Private x As Cursor = skmt.ExecQuery("select * from CAT_VARIABLES")
|
||||
Private x As Cursor = khdb.ExecQuery("select * from CAT_VARIABLES")
|
||||
If x.RowCount > 0 Then
|
||||
Private lasCols As String = getTableColumnListName(skmt, "CAT_VARIABLES")
|
||||
Private lasCols As String = getTableColumnListName(khdb, "CAT_VARIABLES")
|
||||
rkmt.BeginTransaction
|
||||
rkmt.ExecNonQuery($"delete from CAT_VARIABLES where fecha = '${fechaHoy}'"$)
|
||||
rkmt.ExecNonQuery($"insert into CAT_VARIABLES (${lasCols}, FECHA) select ${lasCols}, '${fechaHoy}' as FECHA from skmt1.cat_variables"$)
|
||||
@@ -419,8 +445,8 @@ Sub RD_restaura_cat_variables
|
||||
If c.RowCount > 0 Then
|
||||
c.Position = 0
|
||||
' Log(c.GetString("FECHA"))
|
||||
skmt.ExecNonQuery("delete from CAT_VARIABLES")
|
||||
skmt.ExecNonQuery($"insert into CAT_VARIABLES (${lasCols}) select ${lasCols} from rkmt1.CAT_VARIABLES where fecha = '${c.GetString("FECHA")}'"$)
|
||||
khdb.ExecNonQuery("delete from CAT_VARIABLES")
|
||||
khdb.ExecNonQuery($"insert into CAT_VARIABLES (${lasCols}) select ${lasCols} from rkmt1.CAT_VARIABLES where fecha = '${c.GetString("FECHA")}'"$)
|
||||
' Log($"insert into CAT_VARIABLES (${lasCols}) select ${lasCols} from rkmt1.CAT_VARIABLES where fecha = '${c.GetString("FECHA")}'"$)
|
||||
Else
|
||||
If fechaRestauracion.Length > 0 Then
|
||||
@@ -437,9 +463,9 @@ End Sub
|
||||
Sub RD_respalda_promos_comp
|
||||
Private inicio As String = DateTime.Now
|
||||
' Log("Copiando kmt_info ...")
|
||||
Private x As Cursor = skmt.ExecQuery("select * from PROMOS_COMP")
|
||||
Private x As Cursor = khdb.ExecQuery("select * from PROMOS_COMP")
|
||||
If x.RowCount > 0 Then
|
||||
Private lasCols As String = getTableColumnListName(skmt, "PROMOS_COMP")
|
||||
Private lasCols As String = getTableColumnListName(khdb, "PROMOS_COMP")
|
||||
rkmt.BeginTransaction
|
||||
rkmt.ExecNonQuery($"delete from PROMOS_COMP where fecha = '${fechaHoy}'"$)
|
||||
rkmt.ExecNonQuery($"insert into PROMOS_COMP (${lasCols}, FECHA) select ${lasCols}, '${fechaHoy}' as FECHA from skmt1.PROMOS_COMP"$)
|
||||
@@ -463,8 +489,8 @@ Sub RD_restaura_promos_comp
|
||||
If c.RowCount > 0 Then
|
||||
c.Position = 0
|
||||
' Log(c.GetString("FECHA"))
|
||||
skmt.ExecNonQuery("delete from PROMOS_COMP")
|
||||
skmt.ExecNonQuery($"insert into PROMOS_COMP (${lasCols}) select ${lasCols} from rkmt1.PROMOS_COMP where fecha = '${c.GetString("FECHA")}'"$)
|
||||
khdb.ExecNonQuery("delete from PROMOS_COMP")
|
||||
khdb.ExecNonQuery($"insert into PROMOS_COMP (${lasCols}) select ${lasCols} from rkmt1.PROMOS_COMP where fecha = '${c.GetString("FECHA")}'"$)
|
||||
Log($"insert into PROMOS_COMP (${lasCols}) select ${lasCols} from rkmt1.PROMOS_COMP where fecha = '${c.GetString("FECHA")}'"$)
|
||||
Else
|
||||
If fechaRestauracion.Length > 0 Then
|
||||
@@ -481,9 +507,9 @@ End Sub
|
||||
Sub RD_respalda_cat_rmi
|
||||
Private inicio As String = DateTime.Now
|
||||
' Log("Copiando cat_rmi ...")
|
||||
Private x As Cursor = skmt.ExecQuery("select * from CAT_RMI")
|
||||
Private x As Cursor = khdb.ExecQuery("select * from CAT_RMI")
|
||||
If x.RowCount > 0 Then
|
||||
Private lasCols As String = getTableColumnListName(skmt, "CAT_RMI")
|
||||
Private lasCols As String = getTableColumnListName(khdb, "CAT_RMI")
|
||||
rkmt.BeginTransaction
|
||||
rkmt.ExecNonQuery($"delete from CAT_RMI where fecha = '${fechaHoy}'"$)
|
||||
rkmt.ExecNonQuery($"insert into CAT_RMI (${lasCols}, FECHA) select ${lasCols}, '${fechaHoy}' as FECHA from skmt1.CAT_RMI"$)
|
||||
@@ -507,8 +533,8 @@ Sub RD_restaura_cat_rmi
|
||||
If c.RowCount > 0 Then
|
||||
c.Position = 0
|
||||
' Log(c.GetString("FECHA"))
|
||||
skmt.ExecNonQuery("delete from CAT_RMI")
|
||||
skmt.ExecNonQuery($"insert into CAT_RMI (${lasCols}) select ${lasCols} from rkmt1.CAT_RMI where fecha = '${c.GetString("FECHA")}'"$)
|
||||
khdb.ExecNonQuery("delete from CAT_RMI")
|
||||
khdb.ExecNonQuery($"insert into CAT_RMI (${lasCols}) select ${lasCols} from rkmt1.CAT_RMI where fecha = '${c.GetString("FECHA")}'"$)
|
||||
Log($"insert into CAT_RMI (${lasCols}) select ${lasCols} from rkmt1.CAT_RMI where fecha = '${c.GetString("FECHA")}'"$)
|
||||
Else
|
||||
If fechaRestauracion.Length > 0 Then
|
||||
@@ -596,7 +622,7 @@ End Sub
|
||||
Sub getTableColumnList(db As SQL, table As String) As String 'ignore
|
||||
Private l As String = ""
|
||||
If chkIfTableExists(db, table) Then
|
||||
Private c As Cursor = skmt.ExecQuery($"pragma table_info(${table})"$)
|
||||
Private c As Cursor = khdb.ExecQuery($"pragma table_info(${table})"$)
|
||||
If c.RowCount > 0 Then
|
||||
For i = 0 To c.RowCount - 1
|
||||
c.Position = i
|
||||
@@ -618,7 +644,7 @@ End Sub
|
||||
Sub getTableColumnListName(db As SQL, table As String) As String 'ignore
|
||||
Private l As String = ""
|
||||
If chkIfTableExists(db, table) Then
|
||||
Private c As Cursor = skmt.ExecQuery($"pragma table_info(${table})"$)
|
||||
Private c As Cursor = khdb.ExecQuery($"pragma table_info(${table})"$)
|
||||
If c.RowCount > 0 Then
|
||||
For i = 0 To c.RowCount - 1
|
||||
c.Position = i
|
||||
@@ -640,7 +666,7 @@ End Sub
|
||||
Sub chkIfTableExists(db As SQL, table As String) As Boolean 'ignore
|
||||
Private t As Boolean = False 'ignore
|
||||
If db.IsInitialized Then
|
||||
Private c As Cursor = skmt.ExecQuery($"SELECT name FROM sqlite_master WHERE type='table' AND name='${table}'"$)
|
||||
Private c As Cursor = khdb.ExecQuery($"SELECT name FROM sqlite_master WHERE type='table' AND name='${table}'"$)
|
||||
If c.RowCount > 0 Then t = True
|
||||
c.Close
|
||||
End If
|
||||
@@ -1009,15 +1035,25 @@ Sub traeUsarIntentBDWA As Boolean 'ignore
|
||||
End Sub
|
||||
|
||||
'Regresa los clientes nuevos maximos.
|
||||
'Si no está especificado, el default es 2.
|
||||
'Si no está especificado o no esta autorizado para crear clientes nuevos, el default es 0.
|
||||
Sub traeMaxClientesNuevos As Int 'ignore
|
||||
Private CN As Int = 2
|
||||
Private x As Cursor = Starter.skmt.ExecQuery($"select CAT_VA_VALOR from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'MAXCTESNUEVOS'"$)
|
||||
Private CN_AUT As Int = 0
|
||||
Private CN_MAX As Int = 0
|
||||
Private x As Cursor = Starter.skmt.ExecQuery($"select ifnull(CAT_VA_VALOR, 0) as CAT_VA_VALOR from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'CN_AUTORIZADO'"$)
|
||||
If x.RowCount > 0 Then
|
||||
x.Position = 0
|
||||
CN = x.GetString("CAT_VA_VALOR")
|
||||
CN_AUT = x.GetInt("CAT_VA_VALOR")
|
||||
End If
|
||||
Return CN
|
||||
If CN_AUT = 1 Then
|
||||
Private x As Cursor = Starter.skmt.ExecQuery($"select ifnull(CAT_VA_VALOR, 0) as CAT_VA_VALOR from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'CN_CUANTOS'"$)
|
||||
If x.RowCount > 0 Then
|
||||
x.Position = 0
|
||||
CN_MAX = x.GetString("CAT_VA_VALOR")
|
||||
End If
|
||||
End If
|
||||
x.Close
|
||||
Log($"Clientes Nuevos, Autorizado ${CN_AUT}, Cuantos: ${CN_MAX}"$)
|
||||
Return CN_MAX
|
||||
End Sub
|
||||
|
||||
'Regresa verdadero o falso dependiendo si el cliente lleva pedido DOE.
|
||||
@@ -1298,4 +1334,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
|
||||
424
C_TrendSpending.bas
Normal file
424
C_TrendSpending.bas
Normal file
@@ -0,0 +1,424 @@
|
||||
B4A=true
|
||||
Group=Default Group
|
||||
ModulesStructureVersion=1
|
||||
Type=Class
|
||||
Version=12.8
|
||||
@EndOfDesignText@
|
||||
' Clase para las funciones de Trend Spending.
|
||||
' Trend spending son 3 presupuestos que tiene Kelloggs, que son bonificaciones, descuentos y RMIs, estos se calculan semanalmente
|
||||
' y se descargan de la tabla HIST_TRADE_SPENDING_SEMANAL, de ahi obtenemos el presupuesto de la semana y el acumulado hasta ayer
|
||||
' en la noche, a cada presupuesto le vamos sumando cada que agregamos a pedido un DESCUENTO (Precios diferentes al original que
|
||||
' NO están en PROMOS), una BONIFICACION (precios con descuento que estan en promociones) o un RMI (de estos sumamos al presupuesto
|
||||
' el precio del RMI seleccionado), de acuerdo al presupuesto disponible de cada tipo, se limitan los productos, es decir que si
|
||||
' el presupuesto de bonificaciones ya se agoto, ya no aparecen promociones, o si el de descuentos se agoto, ya no se pueden agregar
|
||||
' mas productos con descuento.
|
||||
|
||||
Sub Class_Globals
|
||||
Private EventName As String 'ignore
|
||||
Private CallBack As Object 'ignore
|
||||
Dim tsMaximas As Int = 0
|
||||
Private tsdb As SQL
|
||||
Dim TS_RMI() As String
|
||||
Dim TS_DESCUENTOS() As String
|
||||
Dim TS_BONIFICACIONES() As String
|
||||
End Sub
|
||||
|
||||
'Initializes the object. You can add parameters to this method if needed.
|
||||
Public Sub Initialize (vCallback As Object, vEventName As String, db As SQL) As Object
|
||||
EventName = vEventName
|
||||
CallBack = vCallback
|
||||
tsdb = db
|
||||
Private mx As Map = traeInfoTrendSpending
|
||||
' LogColor(mx, Colors.red)
|
||||
TS_RMI = Regex.Split(",", mx.Get("RMI"))
|
||||
TS_DESCUENTOS = Regex.Split(",", mx.Get("DESCUENTOS"))
|
||||
TS_BONIFICACIONES = Regex.Split(",", mx.Get("BONIFICACIONES"))
|
||||
LogColor(">>>>>>>>>>>>> TRENDSPENDING: " & mx, Colors.red)
|
||||
LogColor("RMI: " & TS_RMI(0) & "|" & TS_RMI(1), Colors.red)
|
||||
LogColor("DESCUENTOS: " & TS_DESCUENTOS(0) & "|" & TS_DESCUENTOS(1), Colors.red)
|
||||
LogColor("BONIFICACIONES: " & TS_BONIFICACIONES(0) & "|" & TS_BONIFICACIONES(1), Colors.red)
|
||||
Return Me
|
||||
End Sub
|
||||
|
||||
'Regresa la tabla de productos (cat_gunaprod o cat_gunaprod2) dependiendo del tipo de venta.
|
||||
Sub traeTablaProds(tipoventa As String) As String
|
||||
Private tablaProds As String = "cat_gunaprod2"
|
||||
If tipoventa = "ABORDO" Or tipoventa = "PREVENTA" Then tablaProds = "cat_gunaprod"
|
||||
' LogColor($"Tipo= ${tipoventa}, tabla=${tablaProds}"$, Colors.RGB(200,136,0))
|
||||
Return tablaProds
|
||||
End Sub
|
||||
|
||||
'Regresa el descuento de condiciones comerciales por SKU.
|
||||
Sub traeDescXSku(clienteId As String, prodId As String) As String 'ignore
|
||||
Private desc As String = "0"
|
||||
Private c As Cursor = tsdb.ExecQuery($"Select * from CAT_DESCUENTOS_SKU where CAT_DS_CLIENTE = '${clienteId}' and CAT_DS_PRODID = '${prodId}'"$)
|
||||
If c.RowCount > 0 Then
|
||||
c.Position = 0
|
||||
desc = c.GetString("CAT_DS_PORCENTAJE")
|
||||
End If
|
||||
Return desc
|
||||
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 = 0
|
||||
Private HIST_TSS_SEMANA_ACUM As String = 0
|
||||
Private m As Map = CreateMap("RMI": 10000000 & "," & 0, "DESCUENTOS": 10000000 & "," & 0, "BONIFICACIONES": 10000000 & "," & 0) ' El 100,000 es el default del presupuesto, por si NO HAY datos de trend spending.
|
||||
' m.Initialize
|
||||
Private c As Cursor = tsdb.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 = tsdb.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)
|
||||
LogColor($"Accion: ${accion}, Tipo: ${tipo}, Monto: ${monto}"$, Colors.Blue)
|
||||
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 = tsdb.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 = tsdb.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 = tsdb.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}'"$)
|
||||
' Log(($"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}'"$))
|
||||
Log("---- " & c.RowCount)
|
||||
If accion.ToUpperCase = "RESTA" Then
|
||||
If c.RowCount > 0 Then
|
||||
c.Position = 0
|
||||
If tipo.ToUpperCase = "DESCUENTOS" Or tipo.ToUpperCase = "RMI" Or tipo.ToUpperCase = "BONIFICACIONES" Then
|
||||
Private nuevaBonificacion As String = NumberFormat2((acumulado + monto), 1, 2, 2, False)
|
||||
LogColor($"Nuevo acumulado ${tipo} = ${nuevaBonificacion}"$, Colors.Magenta)
|
||||
tsdb.ExecNonQuery($"delete from TREND_SPENDING where tipo = '${tipo.ToUpperCase}' "$)
|
||||
tsdb.ExecNonQuery($"insert into TREND_SPENDING (tipo, acumulado) values ('${tipo.ToUpperCase}', '${nuevaBonificacion}')"$)
|
||||
Log($"Insertamos en TRADE_SPENDING: ${nuevaBonificacion}"$)
|
||||
' else if tipo.ToUpperCase = "RMI" Then
|
||||
End If
|
||||
End If
|
||||
else if accion.ToUpperCase = "SUMA" Then
|
||||
If c.RowCount > 0 Then
|
||||
c.Position = 0
|
||||
If tipo.ToUpperCase = "DESCUENTOS" Or tipo.ToUpperCase = "RMI" Or tipo.ToUpperCase = "BONIFICACIONES" Then
|
||||
Private nuevaBonificacion As String = NumberFormat2((acumulado - monto), 1, 2, 2, False)
|
||||
LogColor($"Nueva bonificacion = ${nuevaBonificacion}"$, Colors.Magenta)
|
||||
tsdb.ExecNonQuery($"delete from TREND_SPENDING where tipo = '${tipo.ToUpperCase}' "$)
|
||||
tsdb.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 = tsdb.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 = tsdb.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 de ${tipo}: "$ & acumulado, Colors.Blue)
|
||||
Return NumberFormat2(acumulado, 1, 2, 2, False)
|
||||
End Sub
|
||||
|
||||
'Trae el cliente de CUENTAA
|
||||
Sub traeCliente As String 'ignore
|
||||
Private c As Cursor
|
||||
Private cl As String
|
||||
c = Starter.skmt.ExecQuery("Select CUENTA from cuentaa")
|
||||
c.Position = 0
|
||||
cl = c.GetString("CUENTA")
|
||||
c.Close
|
||||
Return cl
|
||||
End Sub
|
||||
|
||||
Sub traePrecio(id As String) As String
|
||||
Private precio As String = "0"
|
||||
Private c As Cursor = tsdb.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
|
||||
|
||||
Sub trendSpending(accion As String, tipo As String, clienteId As String, id As String, laCant As String, inv As Int) As String
|
||||
Private logger As Boolean = True
|
||||
LogColor("-------- > TRADE SPENDING < ---------", Colors.red)
|
||||
' Log("DescxSku: " & traeDescXSku(clienteId, id))
|
||||
Dim TS_RMI() As String
|
||||
Dim TS_DESCUENTOS() As String
|
||||
Dim TS_BONIFICACIONES() As String
|
||||
Private mx As Map = traeInfoTrendSpending
|
||||
TS_RMI = Regex.Split(",", mx.Get("RMI"))
|
||||
TS_DESCUENTOS = Regex.Split(",", mx.Get("DESCUENTOS"))
|
||||
TS_BONIFICACIONES = Regex.Split(",", mx.Get("BONIFICACIONES"))
|
||||
If tipo.ToUpperCase = "RMI" Then
|
||||
Private lasMaximas As Int = 0
|
||||
Log($"Acumulado de RMIs: ${traeAcumuladoHoyTS("rmi")}"$)
|
||||
Private elMonto As String = NumberFormat2(traePrecioRMI(id), 1, 2, 2, False)
|
||||
If logger Then Log($"elMonto: ${elMonto}"$)
|
||||
' If logger Then Log($"TS_RMI(0): ${TS_RMI(0)}"$)
|
||||
' If logger Then Log($"TS_RMI(1): ${TS_RMI(1)}"$)
|
||||
If logger Then Log($"LaCant: ${laCant}"$)
|
||||
Private tsRestantes As String = (TS_RMI(0) - TS_RMI(1) - traeAcumuladoHoyTS("rmi"))
|
||||
Log($"tsRestantes: ${tsRestantes}"$)
|
||||
If accion.ToUpperCase = "PRODMAS" Then 'Regresa lasMaximas y elMonto separadas por un "|"
|
||||
If elMonto > 0 Then
|
||||
lasMaximas = ((laCant * elMonto) + tsRestantes) / elMonto
|
||||
If logger Then Log("lasMaximas: " & lasMaximas)
|
||||
If logger Then Log("traeAcumuladoHoyTS: " & traeAcumuladoHoyTS("rmi"))
|
||||
End If
|
||||
' If laCant + 1 = lasMaximas Then
|
||||
' ToastMessageShow("El presupuesto de RMI no permite agregar mas productos!!", False)
|
||||
' End If
|
||||
If logger Then Log("EL RMI: " & elMonto)
|
||||
If logger Then Log($"lacant=${laCant} < lasMaximas=${lasMaximas} = ${laCant<lasMaximas}"$)
|
||||
If laCant < lasMaximas Then
|
||||
modTrendSpending("resta", "rmi", elMonto) ' Restamos al presupuesto de hoy (agregamos al acumulado).
|
||||
End If
|
||||
If logger Then LogColor("RMI RESTANTES: " & (TS_RMI(0) - TS_RMI(1) - traeAcumuladoHoyTS("rmi")), Colors.red)
|
||||
Return lasMaximas & "|" & elMonto
|
||||
else if accion.ToUpperCase = "PRODMENOS" Then
|
||||
If logger Then Log("LaCANT= " & laCant & ", elMonto= " & elMonto)
|
||||
If laCant >= 0 Then
|
||||
modTrendSpending("suma", "rmi", elMonto) ' Agregamos al presupuesto de hoy (restamos del acumulado).
|
||||
End If
|
||||
Return lasMaximas & "|" & elMonto
|
||||
End If
|
||||
else If tipo.ToUpperCase = "DESCUENTOS" Then
|
||||
Dim lasMaximas As Int = 0
|
||||
Dim elMonto As String = 0
|
||||
Private elMonto As String = NumberFormat2(traePrecio(id)*(traeDescXSku(clienteId, id)/100), 1, 2, 2, False)
|
||||
Private tsRestantes As String = (TS_DESCUENTOS(0) - TS_DESCUENTOS(1) - traeAcumuladoHoyTS("descuentos"))
|
||||
If logger Then Log("EL MONTO: " & elMonto)
|
||||
If logger Then LogColor("Monto del presupuesto disponible: " & tsRestantes, Colors.blue)
|
||||
If accion.ToUpperCase = "PRODMAS" Then 'Regresa lasMaximas y elMonto separadas por un "|"
|
||||
' If logger Then Log("PMAS")
|
||||
If elMonto > 0 Then
|
||||
lasMaximas = ((laCant * elMonto) + tsRestantes) / elMonto
|
||||
If logger Then Log("lasMaximas: " & lasMaximas)
|
||||
' If logger Then Log("lasMaximas2: " & traeMaximas("descuentos", clienteId, id, laCant, ""))
|
||||
If logger Then Log("Acumulado hoy: " & traeAcumuladoHoyTS("descuentos"))
|
||||
End If
|
||||
If laCant = lasMaximas Then
|
||||
ToastMessageShow("El presupuesto de DESCUENTOS no permite agregar mas productos!!", False)
|
||||
End If
|
||||
If logger Then Log("EL MONTO: " & elMonto)
|
||||
If inv > 0 And laCant < lasMaximas Then
|
||||
modTrendSpending("resta", "descuentos", elMonto) ' Restamos al presupuesto de hoy (agregamos al acumulado).
|
||||
End If
|
||||
If logger Then Log(">>>> MONTO RESTANTE PRESUPUESTO: " & (TS_DESCUENTOS(0) - TS_DESCUENTOS(1) - traeAcumuladoHoyTS("descuentos")))
|
||||
Return lasMaximas & "|" & elMonto
|
||||
else if accion.ToUpperCase = "PRODMENOS" Then 'Regresa descuentosMaximas y elMonto separadas por un "|"
|
||||
If logger Then Log("LaCANT= " & laCant & ", elMonto= " & elMonto)
|
||||
If laCant >= 0 Then
|
||||
modTrendSpending("suma", "descuentos", elMonto) ' Agregamos al presupuesto de hoy (restamos del acumulado).
|
||||
End If
|
||||
Return lasMaximas & "|" & elMonto
|
||||
else if accion.ToUpperCase = "TEXTCHANGED" Then
|
||||
If logger Then Log("TC")
|
||||
else if accion.ToUpperCase = "FOCUSCHANGED" Then 'Regresa descuentos maximas, SOLO correr esta parte si HASFOCUS es VERDADERO.
|
||||
If logger Then Log("FC")
|
||||
Private elMonto As String = traePrecio(id)*(traeDescXSku(clienteId, id)/100)
|
||||
If elMonto > 0 Then 'And HasFocus
|
||||
If logger Then Log("LA BONIFICACION: " & elMonto)
|
||||
Private tsRestantes As String = (TS_DESCUENTOS(0) - TS_DESCUENTOS(1) - traeAcumuladoHoyTS("descuentos"))
|
||||
If logger Then Log("Monto del PRESUPUESTO disponible: " & tsRestantes)
|
||||
lasMaximas = ((laCant * elMonto) + tsRestantes) / elMonto
|
||||
If logger Then Log("tsMaximas: " & lasMaximas)
|
||||
End If
|
||||
Return lasMaximas
|
||||
End If
|
||||
End If
|
||||
End Sub
|
||||
|
||||
' Trae el precio del RMI desde CAT_RMI.
|
||||
Sub traePrecioRMI(id As String) As String
|
||||
Private precio As String = "0"
|
||||
Private c As Cursor = tsdb.ExecQuery($"select cat_monto from cat_rmi where cat_id = '${id}'"$)
|
||||
If c.RowCount > 0 Then
|
||||
c.Position = 0
|
||||
precio = c.GetString("CAT_MONTO")
|
||||
End If
|
||||
Return precio
|
||||
End Sub
|
||||
|
||||
' Traemos el monto (descuento total) del producto actual.
|
||||
' Utiliza el descuento de condiciones comerciales por SKU (tabla CAT_DESCUENTOS).
|
||||
Sub traeMonto(clienteId As String, id As String) As String
|
||||
Private tsMonto As String
|
||||
tsMonto = NumberFormat2(traePrecio(id)*(traeDescXSku(clienteId, id)/100), 1, 2, 2, False)
|
||||
Return tsMonto
|
||||
End Sub
|
||||
|
||||
' Trae la cantidad máxima de rmis, bonificaciones o descuentos por presupuesto.
|
||||
Sub traeMaximas(tipo As String, clienteId As String, id As String, laCant As String, promoId As String) As Int
|
||||
Private tsMaximas As Int = 10000000
|
||||
Private tsRestantes As String = 0
|
||||
Private tsMonto As String '= traeMonto(clienteId, id)
|
||||
' If tsMonto > 0 Then
|
||||
If tipo.ToUpperCase = "DESCUENTOS" Then
|
||||
tsMonto = NumberFormat2(traePrecio(id)*(traeDescXSku(clienteId, id)/100), 1, 2, 2, False)
|
||||
tsRestantes = (TS_DESCUENTOS(0) - TS_DESCUENTOS(1) - traeAcumuladoHoyTS("descuentos")) ' Traemos monto restante de Trend Spending para descuentos.
|
||||
else If tipo.ToUpperCase = "RMI" Then
|
||||
tsMonto = NumberFormat2(traePrecioRMI(id), 1, 2, 2, False)
|
||||
tsRestantes = (TS_RMI(0) - TS_RMI(1) - traeAcumuladoHoyTS("rmi")) ' Traemos monto restante de Trend Spending para rmis.
|
||||
' else If tipo.ToUpperCase = "BONIFICACIONES" Then
|
||||
' tsMonto = NumberFormat2(traeMontoBonificacion(id, promoId), 1, 2, 2, False)
|
||||
' tsRestantes = (TS_BONIFICACIONES(0) - TS_BONIFICACIONES(1) - traeAcumuladoHoyTS("bonificaciones")) ' Traemos monto restante de Trend Spending para bonificaciones.
|
||||
End If
|
||||
' Log($"${TS_BONIFICACIONES(0)} - ${TS_BONIFICACIONES(1)} - ${traeAcumuladoHoyTS("bonificaciones")}"$)
|
||||
' Log($"((${laCant} * ${tsMonto}) + ${tsRestantes}) / ${tsMonto}"$)
|
||||
Log($"tsMonto: ${tsMonto}"$)
|
||||
Log($"tsRestantes: ${tsRestantes}"$)
|
||||
tsMaximas = ((laCant * tsMonto) + tsRestantes) / tsMonto
|
||||
' End If
|
||||
Return tsMaximas
|
||||
End Sub
|
||||
|
||||
' Trae la cantidad máxima de productos con bonificacion por presupuesto.
|
||||
' Si el presupuesto es 10 y la bonificacion del producto es 2, el máximo es 5 productos.
|
||||
Sub traeBonificacionesMaximas(tipo As String, clienteId As String, id As String, laCant As String, promoId As String) As Int
|
||||
Private tsMaximas As Int = 10000000
|
||||
Private tsRestantes As String = 0
|
||||
Private tsMonto As String
|
||||
LogColor($"Presupuesto: ${TS_BONIFICACIONES(0)} - Acumulado ayer: ${TS_BONIFICACIONES(1)} - Hoy: ${traeAcumuladoHoyTS("bonificaciones")}"$, Colors.Red)
|
||||
If tipo.ToUpperCase = "BONIFICACIONES" Then
|
||||
tsMonto = NumberFormat2(traeMontoBonificacion(id, promoId), 1, 2, 2, False)
|
||||
tsRestantes = (TS_BONIFICACIONES(0) - TS_BONIFICACIONES(1) - traeAcumuladoHoyTS("bonificaciones")) ' Traemos monto restante de Trend Spending para bonificaciones.
|
||||
End If
|
||||
Log($"Monto de bonificacion: ${tsMonto}"$)
|
||||
Log($"Presupuesto disponible: ${tsRestantes}"$)
|
||||
Log($"Cantidad: ${laCant}"$)
|
||||
Log($"Floor(tsRestantes / (tsMonto * laCant))= ${Floor(tsRestantes / (tsMonto * laCant))}"$)
|
||||
Log($"Floor(${tsRestantes} / (${tsMonto} * ${laCant}))= ${Floor(tsRestantes / (tsMonto * laCant))}"$)
|
||||
If tsMonto > 0 Then
|
||||
tsMaximas = Floor(tsRestantes / (tsMonto * laCant))
|
||||
End If
|
||||
Log(">>> tsMaximas: " & tsMaximas)
|
||||
Return tsMaximas
|
||||
End Sub
|
||||
|
||||
' Trae el monto de la bonificacion, que es el precio original MENOS el precio de venta con descuento.
|
||||
' - Si CAT_DP_PRECIOB es 1, la bonificacion es: Precio original - precio de venta.
|
||||
' - Si CAT_DP_PRECIOB es 0, la bonificacion es: Precio original.
|
||||
Sub traeMontoBonificacion(id As String, promoId As String) As String
|
||||
' Log(promoId)
|
||||
Private tsMonto As String = 0
|
||||
Private c As Cursor = tsdb.ExecQuery($"SELECT CAT_DP_ID, CAT_DP_IDPROD, CAT_DP_PRECIO, CAT_DP_TIPO, CAT_GP_PRECIO, CAT_DP_PRECIOB FROM CAT_DETALLES_PAQ join ${traeTablaProds(Starter.tipov)} on CAT_GP_ID = CAT_DP_IDPROD where CAT_GP_ID = '${id}' and CAT_DP_ID = '${promoId}'"$)
|
||||
If c.RowCount > 0 Then
|
||||
c.Position = 0
|
||||
If c.GetInt("CAT_DP_PRECIOB") = 1 Then
|
||||
tsMonto = c.GetString("CAT_GP_PRECIO") - c.GetString("CAT_DP_PRECIO") ' Precio original - precio de venta.
|
||||
Else
|
||||
tsMonto = c.GetString("CAT_GP_PRECIO") ' Precio original.
|
||||
End If
|
||||
' Log("PRECIOB: " & c.GetInt("CAT_DP_PRECIOB"))
|
||||
Log($"Precio normal: ${c.GetString("CAT_GP_PRECIO")}, Precio desc: ${c.GetString("CAT_DP_PRECIO")}, Monto bonificacion: ${tsMonto}"$)
|
||||
End If
|
||||
' Log("ROWCOUNT: " & c.RowCount)
|
||||
Return tsMonto
|
||||
End Sub
|
||||
|
||||
' Recibe una lista con los ids de los productos variables, revisa cada id para traer los maximos por presupuesto para ese producto
|
||||
' y pone ese maximo en una lista, luego ordena esa lista para obtener el mas chico y regresa ese como maximo.
|
||||
' esta funcion se va a aplicar en la funcion maxpromos como un limite mas para que no muestre las promociones.
|
||||
' NOTA: hay que ver como y cuando dejar de mostrar promociones cuando quede poco presupuesto para bonificaciones.
|
||||
' NOTA: Talvez se pueda hacer que cuando se entre a PROMOS, si ya no hay presupuesto suficiente, mande un toast o msgbox diciendo que ya
|
||||
' se agoto el presupuesto.
|
||||
' Aunque si hay suficiente para mostrar algunas promos ... pues que si las muestre.
|
||||
Sub maxPromosPorProdsVariables(idProdsVariables As List, promo As String)As Int
|
||||
Private logger As Boolean = True
|
||||
Private Maxs As Int = 10000000
|
||||
Private prodsVariablesXPresupuestoBonificaciones As List
|
||||
Private prodsVariablesRequeridos As Int = traeProdsVariablesRequeridos(promo)
|
||||
prodsVariablesXPresupuestoBonificaciones.Initialize
|
||||
' LogColor("===========> Prods Variables: " & idProdsVariables.Size & " <==========", Colors.red)
|
||||
For i = 0 To idProdsVariables.Size - 1 'Obtenemos total de productos variables disponibes.
|
||||
If logger Then LogColor($"=>> prodVariable ${i} : ${idProdsVariables.Get(i)}, ${Subs.traeProdNombre(idProdsVariables.Get(i))} <<=="$, Colors.blue)
|
||||
' Log($"Este invDisponible: ${invDispParaPromo.Get(idProdsVariables.Get(i))}"$)
|
||||
If logger Then Log(">> Monto Bonificacion: " & traeMontoBonificacion(idProdsVariables.Get(i), promo))
|
||||
Private maxProds As Int = traeBonificacionesMaximas("bonificaciones", traeCliente, idProdsVariables.Get(i), prodsVariablesRequeridos, promo)
|
||||
prodsVariablesXPresupuestoBonificaciones.Add(maxProds)
|
||||
Next
|
||||
prodsVariablesXPresupuestoBonificaciones.Sort(True)
|
||||
If prodsVariablesXPresupuestoBonificaciones.Size > 0 Then
|
||||
Maxs = prodsVariablesXPresupuestoBonificaciones.Get(0)
|
||||
End If
|
||||
If logger Then LogColor("=====>> Max prods variables x monto de bonificaciones: " & Maxs, Colors.blue)
|
||||
Return Maxs
|
||||
End Sub
|
||||
|
||||
' Regresa los productos variables requeridos de la promocion dada.
|
||||
Sub traeProdsVariablesRequeridos(promo As String) As Int
|
||||
Private pvr As Int = 0
|
||||
Private c As Cursor = Starter.skmt.ExecQuery("Select CAT_GP_STS, CAT_GP_NOMBRE from CAT_GUNAPROD2 where CAT_GP_ID = '"& promo & "'") 'Obtenemos las piezas requeridas de productos variables para la promoción.
|
||||
If c.RowCount > 0 Then
|
||||
c.Position = 0
|
||||
If c.RowCount > 0 Then
|
||||
c.Position = 0
|
||||
pvr = c.GetString("CAT_GP_STS")
|
||||
End If
|
||||
End If
|
||||
c.Close
|
||||
Return pvr
|
||||
End Sub
|
||||
|
||||
|
||||
'########################################################################################
|
||||
' Los productos fijos NO estan restando del presupuesto de BONIFICACIONES
|
||||
'########################################################################################
|
||||
|
||||
'Poner en una funcion (maxPromosPorProdsFijos) el codigo para traer las promos maximas por productos fijos, igual que la de productos
|
||||
' variables, y ponerla igual en "traeMaxPromos" en lugar de en "revisaMaxPromosProdsFijosPorInventario".
|
||||
|
||||
' Falta el codigo para el funcionamiento diferente de las bonificaciones:
|
||||
' Si CAT_DP_PRECIOB es 1 --> (Precio de original (cat_precio) - precio de venta) y se suma al acumulado de BONIFICACIONES
|
||||
' Si CAT_DP_PRECIOB es 0 --> precio orginal se suma al acumulado de BONIFICACIONES
|
||||
'Hay que traer desde web la columna "CAT_DP_PRECIOB" y gardarla en algun lado en movil!!
|
||||
Reference in New Issue
Block a user