mirror of
https://github.com/KeymonSoft/Kelloggs_v4.git
synced 2026-04-17 18:26:11 +00:00
- VERSION 5.06.25
- Se quito que el almacen de guadalajara NO tuviera geocerca. - Se corrigio el error de que cuando se desinstala la app y se vuelve a instalar, en la priera venta se trababa la aplicacion. - Se puso codigo de prueba para usar el "wait for" con el DBReqManager.
This commit is contained in:
@@ -117,6 +117,7 @@ Sub Class_Globals
|
|||||||
Dim intentUsado As Boolean = False
|
Dim intentUsado As Boolean = False
|
||||||
Private p_importarBDWA As Panel
|
Private p_importarBDWA As Panel
|
||||||
Private cb_importarBDWA As CheckBox
|
Private cb_importarBDWA As CheckBox
|
||||||
|
' Type TResultado(Tag As String, Success As Boolean, resultado As DBResult, ErrorMessage As String)
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Public Sub Initialize
|
Public Sub Initialize
|
||||||
@@ -129,6 +130,7 @@ End Sub
|
|||||||
|
|
||||||
'This event will be called once, before the page becomes visible.
|
'This event will be called once, before the page becomes visible.
|
||||||
Private Sub B4XPage_Created (Root1 As B4XView)
|
Private Sub B4XPage_Created (Root1 As B4XView)
|
||||||
|
Log(">>>>>> CREATE - INICIAMOS MAIN PAGE <<<<<<<<<")
|
||||||
If Not(Starter.Logger) Then logger = False
|
If Not(Starter.Logger) Then logger = False
|
||||||
Dim sDate, sTime As String
|
Dim sDate, sTime As String
|
||||||
DateTime.DateFormat = "yyyyMMdd"
|
DateTime.DateFormat = "yyyyMMdd"
|
||||||
@@ -212,7 +214,7 @@ Private Sub B4XPage_Created (Root1 As B4XView)
|
|||||||
ruta = Starter.ruta
|
ruta = Starter.ruta
|
||||||
Starter.tiempos.Initialize
|
Starter.tiempos.Initialize
|
||||||
kh.guardaAppInfo
|
kh.guardaAppInfo
|
||||||
|
Log(111)
|
||||||
'Revisamos si se disparo el intent de cargar la base de datos desde WhatApp.
|
'Revisamos si se disparo el intent de cargar la base de datos desde WhatApp.
|
||||||
If kh.traeUsarIntentBDWA Then kh.importaBDDesdeWhatsApp
|
If kh.traeUsarIntentBDWA Then kh.importaBDDesdeWhatsApp
|
||||||
|
|
||||||
@@ -312,6 +314,7 @@ Private Sub B4XPage_Created (Root1 As B4XView)
|
|||||||
Msgbox("No se puede crear el archivo de foto","Aviso") 'ignore
|
Msgbox("No se puede crear el archivo de foto","Aviso") 'ignore
|
||||||
End Try
|
End Try
|
||||||
End If
|
End If
|
||||||
|
Log(222)
|
||||||
' Dim ph As Phone 'Get Id Device
|
' Dim ph As Phone 'Get Id Device
|
||||||
' Dim DeviceID As String = Starter.ph.GetSettings("android_id").ToUpperCase
|
' Dim DeviceID As String = Starter.ph.GetSettings("android_id").ToUpperCase
|
||||||
' If logger Then Log($"Marca: ${Starter.ph.manufacturer}, Modelo: ${Starter.ph.model}"$)
|
' If logger Then Log($"Marca: ${Starter.ph.manufacturer}, Modelo: ${Starter.ph.model}"$)
|
||||||
@@ -346,7 +349,7 @@ Private Sub B4XPage_Created (Root1 As B4XView)
|
|||||||
Else
|
Else
|
||||||
ToastMessageShow("Sin permisos para GPS", True)
|
ToastMessageShow("Sin permisos para GPS", True)
|
||||||
End If
|
End If
|
||||||
Log("***********************************************")
|
Log("33***********************************************33")
|
||||||
MES1.Initialize(Me, "MES1")
|
MES1.Initialize(Me, "MES1")
|
||||||
' Log("SDK: " & device.SdkVersion)
|
' Log("SDK: " & device.SdkVersion)
|
||||||
' Get the device SDK version
|
' Get the device SDK version
|
||||||
@@ -376,7 +379,7 @@ Private Sub B4XPage_Created (Root1 As B4XView)
|
|||||||
End If
|
End If
|
||||||
Log(MES1.IsInitialized)
|
Log(MES1.IsInitialized)
|
||||||
Log(MES1.HasPermission)
|
Log(MES1.HasPermission)
|
||||||
Log("***********************************************")
|
Log("44***********************************************44")
|
||||||
MES1.Initialize(Me, "MES1")
|
MES1.Initialize(Me, "MES1")
|
||||||
' Log("Permisos BT: " & rp.Check("android.permission.BLUETOOTH_CONNECT"))
|
' Log("Permisos BT: " & rp.Check("android.permission.BLUETOOTH_CONNECT"))
|
||||||
' Log("REVISAMOS PERMISOS DE BT")
|
' Log("REVISAMOS PERMISOS DE BT")
|
||||||
@@ -389,7 +392,8 @@ Private Sub B4XPage_Created (Root1 As B4XView)
|
|||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Sub B4XPage_Appear
|
Sub B4XPage_Appear
|
||||||
Log(">>>>>> INICIAMOS MAIN PAGE <<<<<<<<<")
|
Log(">>>>>> APPEAR - INICIAMOS MAIN PAGE <<<<<<<<<")
|
||||||
|
If Not(MES1.IsInitialized) Then MES1.Initialize(Me, "MES1")
|
||||||
Log(DateTime.GetDayOfWeek(DateTime.Now))
|
Log(DateTime.GetDayOfWeek(DateTime.Now))
|
||||||
kh.RD_Init
|
kh.RD_Init
|
||||||
kh.SetButtonTintList(cb_geocerca, Colors.LightGray, Colors.RGB(43, 154, 211))
|
kh.SetButtonTintList(cb_geocerca, Colors.LightGray, Colors.RGB(43, 154, 211))
|
||||||
@@ -462,10 +466,10 @@ Sub B4XPage_Appear
|
|||||||
Log(MES1.IsInitialized)
|
Log(MES1.IsInitialized)
|
||||||
If MES1.IsInitialized Then
|
If MES1.IsInitialized Then
|
||||||
LogColor("Permisos de almacenamiento: " & MES1.HasPermission, Colors.Magenta)
|
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
|
End If
|
||||||
DateTime.DateFormat = "yyyy-MM-dd HH:mm:ss"
|
DateTime.DateFormat = "yyyy-MM-dd HH:mm:ss"
|
||||||
Starter.skmt.ExecNonQuery($"insert into versiones (version, fecha) values ('${Application.VersionName}', '${datetime.Date(DateTime.Now)}')"$)
|
Starter.skmt.ExecNonQuery($"insert into versiones (version, fecha) values ('${Application.VersionName}', '${DateTime.Date(DateTime.Now)}')"$)
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
|
||||||
@@ -705,6 +709,52 @@ Private Sub i_engranes_LongClick
|
|||||||
' Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
|
' Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
|
||||||
' Subs.copiaDB(Result)
|
' Subs.copiaDB(Result)
|
||||||
' Dim x As Int = "a"
|
' 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
|
End Sub
|
||||||
|
|
||||||
Sub B_SERVER_Click
|
Sub B_SERVER_Click
|
||||||
|
|||||||
@@ -422,7 +422,7 @@ Sub B4XPage_Appear
|
|||||||
usarGeocerca = kh.traeUsarGeocerca
|
usarGeocerca = kh.traeUsarGeocerca
|
||||||
|
|
||||||
'Para el almacen 12 (GDL) no se usa la geocerca
|
'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)
|
' Log(Subs.traeUltimaActividadBD)
|
||||||
c = Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("MACIMP"))
|
c = Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("MACIMP"))
|
||||||
@@ -1301,8 +1301,8 @@ Sub Imprime_ticket
|
|||||||
Printer1.WriteString("Entre calle1: " & l_entre1.Text & CRLF)
|
Printer1.WriteString("Entre calle1: " & l_entre1.Text & CRLF)
|
||||||
Printer1.WriteString("Entre Calle2: " & l_entre2.Text & CRLF)
|
Printer1.WriteString("Entre Calle2: " & l_entre2.Text & CRLF)
|
||||||
LogColor("Entre Calle2: " & l_entre2.Text, Colors.red)
|
LogColor("Entre Calle2: " & l_entre2.Text, Colors.red)
|
||||||
Printer1.WriteString("Forma de pago: " & formaPago & CRLF)
|
' Printer1.WriteString("Forma de pago: " & formaPago & CRLF)
|
||||||
LogColor("Forma de pago: " & formaPago, Colors.red)
|
' LogColor("Forma de pago: " & formaPago, Colors.red)
|
||||||
Printer1.WriteString(" " & CRLF)
|
Printer1.WriteString(" " & CRLF)
|
||||||
Printer1.WriteString("------------------------------" & CRLF)
|
Printer1.WriteString("------------------------------" & CRLF)
|
||||||
Printer1.WriteString("PEDIDO" & CRLF)
|
Printer1.WriteString("PEDIDO" & CRLF)
|
||||||
@@ -1431,7 +1431,7 @@ Sub Imprime_ticket
|
|||||||
End Try
|
End Try
|
||||||
Else
|
Else
|
||||||
Try
|
Try
|
||||||
LogColor(456, Colors.red)
|
' LogColor(456, Colors.red)
|
||||||
DateTime.DateFormat = "yyyymmdd"
|
DateTime.DateFormat = "yyyymmdd"
|
||||||
sDate=DateTime.Date(DateTime.Now)
|
sDate=DateTime.Date(DateTime.Now)
|
||||||
Printer1.WriteString("KELLOGG COMPANY MEXICO" & CRLF)
|
Printer1.WriteString("KELLOGG COMPANY MEXICO" & CRLF)
|
||||||
@@ -1450,9 +1450,9 @@ Sub Imprime_ticket
|
|||||||
Printer1.WriteString("C.P.: " & la_cp.Text & CRLF)
|
Printer1.WriteString("C.P.: " & la_cp.Text & CRLF)
|
||||||
Printer1.WriteString("Entre calle1: " & l_entre1.Text & CRLF)
|
Printer1.WriteString("Entre calle1: " & l_entre1.Text & CRLF)
|
||||||
Printer1.WriteString("Entre Calle2: " & l_entre2.Text & CRLF)
|
Printer1.WriteString("Entre Calle2: " & l_entre2.Text & CRLF)
|
||||||
LogColor("Entre Calle2: " & l_entre2.Text, Colors.red)
|
' LogColor("Entre Calle2: " & l_entre2.Text, Colors.red)
|
||||||
Printer1.WriteString("Forma de pago: " & formaPago & CRLF)
|
Printer1.WriteString("Forma de pago: " & formaPago & CRLF)
|
||||||
LogColor("Forma de pago: " & formaPago, Colors.red)
|
' LogColor("Forma de pago: " & formaPago, Colors.red)
|
||||||
Printer1.WriteString(" " & CRLF)
|
Printer1.WriteString(" " & CRLF)
|
||||||
|
|
||||||
''''''' PEDIDOS DOE
|
''''''' PEDIDOS DOE
|
||||||
@@ -1629,8 +1629,8 @@ Sub Imprime_ticket
|
|||||||
Printer1.WriteString(Printer1.UNREVERSE & Printer1.BOLD & "Sub Total CAMBIOS: $" & NumberFormat2(sTotal3, 1, 2, 2, False) & CRLF)
|
Printer1.WriteString(Printer1.UNREVERSE & Printer1.BOLD & "Sub Total CAMBIOS: $" & NumberFormat2(sTotal3, 1, 2, 2, False) & CRLF)
|
||||||
Private cantidad2 As String = "0"
|
Private cantidad2 As String = "0"
|
||||||
If s.GetString("CANTIDAD") <> Null And IsNumber(s.GetString("CANTIDAD")) Then cantidad2 = s.GetString("CANTIDAD")
|
If s.GetString("CANTIDAD") <> Null And IsNumber(s.GetString("CANTIDAD")) Then cantidad2 = s.GetString("CANTIDAD")
|
||||||
Log("|" & cantidad1 & "|")
|
' Log("|" & cantidad1 & "|")
|
||||||
Log("|" & s.GetString("CANTIDAD") & "|" & cantidad1 & "|")
|
' Log("|" & s.GetString("CANTIDAD") & "|" & cantidad1 & "|")
|
||||||
Printer1.WriteString( Printer1.UNREVERSE & Printer1.BOLD & "No. Productos: " & cantidad2 & CRLF)
|
Printer1.WriteString( Printer1.UNREVERSE & Printer1.BOLD & "No. Productos: " & cantidad2 & CRLF)
|
||||||
Printer1.WriteString(CRLF)
|
Printer1.WriteString(CRLF)
|
||||||
s.Close
|
s.Close
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ Sub Class_Globals
|
|||||||
Private Root As B4XView 'ignore
|
Private Root As B4XView 'ignore
|
||||||
Private xui As XUI 'ignore
|
Private xui As XUI 'ignore
|
||||||
Dim reqManager As DBRequestManager
|
Dim reqManager As DBRequestManager
|
||||||
|
Dim reqManagerW As DBRequestManagerW
|
||||||
Dim device As Phone
|
Dim device As Phone
|
||||||
Dim kh As kms_helperSubs
|
Dim kh As kms_helperSubs
|
||||||
Dim rp As RuntimePermissions
|
Dim rp As RuntimePermissions
|
||||||
@@ -214,6 +215,8 @@ Sub Class_Globals
|
|||||||
Private r_7 As RadioButton
|
Private r_7 As RadioButton
|
||||||
Private r_razonNoVisita As String
|
Private r_razonNoVisita As String
|
||||||
Private l_descripcion As Label
|
Private l_descripcion As Label
|
||||||
|
Type TCuantos (query As String, esperados As Int, guardados As Int)
|
||||||
|
Dim validaCuantos As TCuantos
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
'You can add more parameters here.
|
'You can add more parameters here.
|
||||||
@@ -225,6 +228,7 @@ End Sub
|
|||||||
'This event will be called once, before the page becomes visible.
|
'This event will be called once, before the page becomes visible.
|
||||||
Private Sub B4XPage_Created (Root1 As B4XView)
|
Private Sub B4XPage_Created (Root1 As B4XView)
|
||||||
If Not(Starter.Logger) Then logger = False
|
If Not(Starter.Logger) Then logger = False
|
||||||
|
validaCuantos.Initialize
|
||||||
Root = Root1
|
Root = Root1
|
||||||
'load the layout to Root
|
'load the layout to Root
|
||||||
Root.LoadLayout("principal")
|
Root.LoadLayout("principal")
|
||||||
@@ -332,6 +336,7 @@ Sub B4XPage_Appear
|
|||||||
If Subs.traeUltimaActividadBD <> "principal" Then Subs.iniciaActividad(Subs.traeUltimaActividadBD)
|
If Subs.traeUltimaActividadBD <> "principal" Then Subs.iniciaActividad(Subs.traeUltimaActividadBD)
|
||||||
borraClientesNuevosSinVenta
|
borraClientesNuevosSinVenta
|
||||||
reqManager.Initialize(Me, Starter.DBReqServer)
|
reqManager.Initialize(Me, Starter.DBReqServer)
|
||||||
|
reqManagerW.Initialize
|
||||||
Log($"DBREQSERVER = ${Starter.DBReqServer}"$)
|
Log($"DBREQSERVER = ${Starter.DBReqServer}"$)
|
||||||
|
|
||||||
Dim cmd As DBCommand
|
Dim cmd As DBCommand
|
||||||
@@ -821,10 +826,83 @@ Sub cargar_Click
|
|||||||
cmd.Parameters = Array As Object(ALMACEN)
|
cmd.Parameters = Array As Object(ALMACEN)
|
||||||
reqManager.ExecuteQuery(cmd , 0, "detallepaq")
|
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
|
||||||
|
|
||||||
cmd.Initialize
|
cmd.Initialize
|
||||||
cmd.Name = "select_cat_clientes_guna_KELL2"
|
cmd.Name = "select_cat_clientes_guna_KELL2"
|
||||||
cmd.Parameters = Array As Object(e_ruta.text, ALMACEN)
|
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.Initialize
|
||||||
cmd.Name = "select_hist_datos_KELL"
|
cmd.Name = "select_hist_datos_KELL"
|
||||||
@@ -872,7 +950,7 @@ Sub cargar_Click
|
|||||||
cmd.Initialize
|
cmd.Initialize
|
||||||
cmd.Name = "select_cat_clientes_guna_KELL2"
|
cmd.Name = "select_cat_clientes_guna_KELL2"
|
||||||
cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN)
|
cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN)
|
||||||
reqManager.ExecuteQuery(cmd , 0, "kmt_datos")
|
' reqManager.ExecuteQuery(cmd , 0, "kmt_datos")
|
||||||
|
|
||||||
cmd.Initialize
|
cmd.Initialize
|
||||||
cmd.Name = "select_hist_datos_KELL"
|
cmd.Name = "select_hist_datos_KELL"
|
||||||
@@ -1047,7 +1125,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 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
|
If Job.JobName = "DBRequest" Then
|
||||||
Dim RESULT As DBResult = reqManager.HandleJob(Job)
|
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
|
cargar.Enabled = True
|
||||||
If logger Then Log("TIEMPO kmt_datos : " & ((DateTime.Now-inicioContador)/1000))
|
If logger Then Log("TIEMPO kmt_datos : " & ((DateTime.Now-inicioContador)/1000))
|
||||||
S_CC.TEXT = "CARGANDO"
|
S_CC.TEXT = "CARGANDO"
|
||||||
@@ -1090,12 +1168,16 @@ Sub JobDone(Job As HttpJob)
|
|||||||
Listo1 = 1
|
Listo1 = 1
|
||||||
S_CC.Text = "LISTO"
|
S_CC.Text = "LISTO"
|
||||||
' ToastMessageShow("Catalogo Clientes Actualizados." , True)
|
' 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
|
B4XPage_Appear
|
||||||
img2.Visible=False
|
img2.Visible=False
|
||||||
EJECUTANDO = 0
|
EJECUTANDO = 0
|
||||||
End If
|
End If
|
||||||
End If
|
End If
|
||||||
|
' S_CC.Text = "LISTO"
|
||||||
|
' Listo1 = 1
|
||||||
|
|
||||||
|
|
||||||
bcarga1 = 20
|
bcarga1 = 20
|
||||||
|
|
||||||
If RESULT.Tag = "hist_promos" Then 'query tag
|
If RESULT.Tag = "hist_promos" Then 'query tag
|
||||||
|
|||||||
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
|
||||||
@@ -881,21 +881,22 @@ Module15=|relative|..\C_TrendSpending
|
|||||||
Module16=C_updateAvailable
|
Module16=C_updateAvailable
|
||||||
Module17=CameraExClass
|
Module17=CameraExClass
|
||||||
Module18=DBRequestManager
|
Module18=DBRequestManager
|
||||||
Module19=DownloadService
|
Module19=DBRequestManagerW
|
||||||
Module2=C_CheckList
|
Module2=C_CheckList
|
||||||
Module20=errorManager
|
Module20=DownloadService
|
||||||
Module21=EscPosPrinter
|
Module21=errorManager
|
||||||
Module22=FileHandler
|
Module22=EscPosPrinter
|
||||||
Module23=foto
|
Module23=FileHandler
|
||||||
Module24=kms_helperSubs
|
Module24=foto
|
||||||
Module25=ManageExternalStorage
|
Module25=kms_helperSubs
|
||||||
Module26=MAPA_RUTAS
|
Module26=ManageExternalStorage
|
||||||
Module27=Promociones
|
Module27=MAPA_RUTAS
|
||||||
Module28=SD_Spinner
|
Module28=Promociones
|
||||||
Module29=Starter
|
Module29=SD_Spinner
|
||||||
Module3=C_Cliente
|
Module3=C_Cliente
|
||||||
Module30=Subs
|
Module30=Starter
|
||||||
Module31=Tracker
|
Module31=Subs
|
||||||
|
Module32=Tracker
|
||||||
Module4=C_Clientes
|
Module4=C_Clientes
|
||||||
Module5=C_Historico
|
Module5=C_Historico
|
||||||
Module6=C_Mapas
|
Module6=C_Mapas
|
||||||
@@ -904,13 +905,13 @@ Module8=C_NoVenta
|
|||||||
Module9=C_NuevoCliente
|
Module9=C_NuevoCliente
|
||||||
NumberOfFiles=421
|
NumberOfFiles=421
|
||||||
NumberOfLibraries=28
|
NumberOfLibraries=28
|
||||||
NumberOfModules=31
|
NumberOfModules=32
|
||||||
Version=12.8
|
Version=12.8
|
||||||
@EndOfDesignText@
|
@EndOfDesignText@
|
||||||
#Region Project Attributes
|
#Region Project Attributes
|
||||||
#ApplicationLabel: Kelloggs Venta
|
#ApplicationLabel: Kelloggs Venta
|
||||||
#VersionCode: 3000
|
#VersionCode: 3000
|
||||||
#VersionName: 5.04.28
|
#VersionName: 5.06.25
|
||||||
#SupportedOrientations: portrait
|
#SupportedOrientations: portrait
|
||||||
#CanInstallToExternalStorage: False
|
#CanInstallToExternalStorage: False
|
||||||
#BridgeLogger:true
|
#BridgeLogger:true
|
||||||
@@ -945,7 +946,7 @@ End Sub
|
|||||||
Sub Activity_Create(FirstTime As Boolean)
|
Sub Activity_Create(FirstTime As Boolean)
|
||||||
Dim pm As B4XPagesManager
|
Dim pm As B4XPagesManager
|
||||||
pm.Initialize(Activity)
|
pm.Initialize(Activity)
|
||||||
Log("***********************************************")
|
Log("11***********************************************11")
|
||||||
MES1.Initialize(Me, "MES1")
|
MES1.Initialize(Me, "MES1")
|
||||||
Log("SDK: " & device.SdkVersion)
|
Log("SDK: " & device.SdkVersion)
|
||||||
' Get the device SDK version
|
' Get the device SDK version
|
||||||
@@ -975,7 +976,7 @@ Sub Activity_Create(FirstTime As Boolean)
|
|||||||
End If
|
End If
|
||||||
Log(MES1.IsInitialized)
|
Log(MES1.IsInitialized)
|
||||||
Log(MES1.HasPermission)
|
Log(MES1.HasPermission)
|
||||||
Log("***********************************************")
|
Log("22***********************************************22")
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
'Template version: B4A-1.01
|
'Template version: B4A-1.01
|
||||||
|
|||||||
@@ -24,6 +24,7 @@ ModuleBookmarks29=
|
|||||||
ModuleBookmarks3=
|
ModuleBookmarks3=
|
||||||
ModuleBookmarks30=
|
ModuleBookmarks30=
|
||||||
ModuleBookmarks31=
|
ModuleBookmarks31=
|
||||||
|
ModuleBookmarks32=
|
||||||
ModuleBookmarks4=
|
ModuleBookmarks4=
|
||||||
ModuleBookmarks5=
|
ModuleBookmarks5=
|
||||||
ModuleBookmarks6=
|
ModuleBookmarks6=
|
||||||
@@ -56,6 +57,7 @@ ModuleBreakpoints29=
|
|||||||
ModuleBreakpoints3=
|
ModuleBreakpoints3=
|
||||||
ModuleBreakpoints30=
|
ModuleBreakpoints30=
|
||||||
ModuleBreakpoints31=
|
ModuleBreakpoints31=
|
||||||
|
ModuleBreakpoints32=
|
||||||
ModuleBreakpoints4=
|
ModuleBreakpoints4=
|
||||||
ModuleBreakpoints5=
|
ModuleBreakpoints5=
|
||||||
ModuleBreakpoints6=
|
ModuleBreakpoints6=
|
||||||
@@ -63,9 +65,9 @@ ModuleBreakpoints7=
|
|||||||
ModuleBreakpoints8=
|
ModuleBreakpoints8=
|
||||||
ModuleBreakpoints9=
|
ModuleBreakpoints9=
|
||||||
ModuleClosedNodes0=
|
ModuleClosedNodes0=
|
||||||
ModuleClosedNodes1=
|
ModuleClosedNodes1=6,7,8,9,10,11,12,14,15,16
|
||||||
ModuleClosedNodes10=
|
ModuleClosedNodes10=
|
||||||
ModuleClosedNodes11=
|
ModuleClosedNodes11=3,5,6
|
||||||
ModuleClosedNodes12=3,7,8,9,10,11,12
|
ModuleClosedNodes12=3,7,8,9,10,11,12
|
||||||
ModuleClosedNodes13=6,7,8,9,10,11,12,13,14,16,17
|
ModuleClosedNodes13=6,7,8,9,10,11,12,13,14,16,17
|
||||||
ModuleClosedNodes14=
|
ModuleClosedNodes14=
|
||||||
@@ -79,21 +81,22 @@ ModuleClosedNodes20=
|
|||||||
ModuleClosedNodes21=
|
ModuleClosedNodes21=
|
||||||
ModuleClosedNodes22=
|
ModuleClosedNodes22=
|
||||||
ModuleClosedNodes23=
|
ModuleClosedNodes23=
|
||||||
ModuleClosedNodes24=4,24,25,26,27,31,32,33,35
|
ModuleClosedNodes24=
|
||||||
ModuleClosedNodes25=
|
ModuleClosedNodes25=24,25,26,27,31,32,33,35
|
||||||
ModuleClosedNodes26=4
|
ModuleClosedNodes26=
|
||||||
ModuleClosedNodes27=
|
ModuleClosedNodes27=4
|
||||||
ModuleClosedNodes28=
|
ModuleClosedNodes28=
|
||||||
ModuleClosedNodes29=
|
ModuleClosedNodes29=
|
||||||
ModuleClosedNodes3=5,6,7
|
ModuleClosedNodes3=5,6
|
||||||
ModuleClosedNodes30=115
|
ModuleClosedNodes30=
|
||||||
ModuleClosedNodes31=
|
ModuleClosedNodes31=115
|
||||||
|
ModuleClosedNodes32=
|
||||||
ModuleClosedNodes4=
|
ModuleClosedNodes4=
|
||||||
ModuleClosedNodes5=
|
ModuleClosedNodes5=
|
||||||
ModuleClosedNodes6=
|
ModuleClosedNodes6=
|
||||||
ModuleClosedNodes7=
|
ModuleClosedNodes7=
|
||||||
ModuleClosedNodes8=
|
ModuleClosedNodes8=
|
||||||
ModuleClosedNodes9=
|
ModuleClosedNodes9=
|
||||||
NavigationStack=C_Clientes,Class_Globals,23,0,C_Clientes,B_IMP_Click,236,0,C_Cliente,B4XPage_Created,316,0,B4XMainPage,B4XPage_Created,155,1,C_Principal,JobDone,1064,0,Diseñador Visual,cliente.bal,-100,3,C_Cliente,B_IMP_Click,1138,0,Subs,ponImpreso,658,0,C_Cliente,Imprime_ticket,1210,6,kms_helperSubs,RD_respalda_kmt_info,362,0,kms_helperSubs,RD_Init,94,4
|
NavigationStack=kms_helperSubs,RD_Init,69,0,C_Cliente,Imprime_ticket,1573,0,C_Cliente,Guardar_Click,1018,0,kms_helperSubs,RD_respaldoBatch,545,0,kms_helperSubs,RD_respalda_cat_gunaprod2,256,0,kms_helperSubs,RD_restaura_cat_gunaprod2,307,0,kms_helperSubs,RD_respalda_cat_detalle_paq,323,6,kms_helperSubs,TraeVentaSinImprimir,910,0,kms_helperSubs,RD_respalda_cat_rmi,503,0,kms_helperSubs,revisaSiExisteRespaldo,105,0,B4XMainPage,B4XPage_Appear,462,6
|
||||||
SelectedBuild=0
|
SelectedBuild=0
|
||||||
VisibleModules=1,29,11,3,30,13,12,7,27,26,24,4
|
VisibleModules=1,30,19,11,3,31,12,28,16,18,25
|
||||||
|
|||||||
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
|
||||||
@@ -73,6 +73,7 @@ Sub RD_Init
|
|||||||
limpiarBD = True
|
limpiarBD = True
|
||||||
Log("NO EXISTE BD")
|
Log("NO EXISTE BD")
|
||||||
End If
|
End If
|
||||||
|
LogColor("#################################################" & CRLF & " safePath: " & safePath, Colors.red)
|
||||||
rkmt.Initialize(safePath, $"${name(0)}.rkmt.km"$, True)
|
rkmt.Initialize(safePath, $"${name(0)}.rkmt.km"$, True)
|
||||||
If limpiarBD Then
|
If limpiarBD Then
|
||||||
LogColor("----->> LIMPIAMOS BD RECUPERACION PRIMERA VEZ <<-------", Colors.red)
|
LogColor("----->> LIMPIAMOS BD RECUPERACION PRIMERA VEZ <<-------", Colors.red)
|
||||||
@@ -117,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
|
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)
|
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"$)
|
File.Copy(File.DirRootExternal & extDir, $"${name(0)}.rkmt.km"$, File.DirInternal&"/kmts", $"${name(0)}.rkmt.km"$)
|
||||||
|
|
||||||
|
RD_Init
|
||||||
|
|
||||||
Else
|
Else
|
||||||
LogColor("No hay respaldo en tarjeta externa!", Colors.red)
|
LogColor("No hay respaldo en tarjeta externa!", Colors.red)
|
||||||
End If
|
End If
|
||||||
@@ -327,7 +331,9 @@ Sub RD_respalda_cat_detalle_paq
|
|||||||
End If
|
End If
|
||||||
Catch
|
Catch
|
||||||
Log(LastException)
|
Log(LastException)
|
||||||
|
rkmt.Close
|
||||||
End Try
|
End Try
|
||||||
|
Log(2.5)
|
||||||
x.Close
|
x.Close
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user