diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..618d244
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+**/Objects
+**/AutoBackups
+*.meta
\ No newline at end of file
diff --git a/B4A/B4XMainPage.bas b/B4A/B4XMainPage.bas
new file mode 100644
index 0000000..d306b29
--- /dev/null
+++ b/B4A/B4XMainPage.bas
@@ -0,0 +1,595 @@
+B4A=true
+Group=Default Group
+ModulesStructureVersion=1
+Type=Class
+Version=9.85
+@EndOfDesignText@
+#Region Shared Files
+#CustomBuildAction: folders ready, %WINDIR%\System32\Robocopy.exe,"..\..\Shared Files" "..\Files"
+'Ctrl + click to sync files: ide://run?file=%WINDIR%\System32\Robocopy.exe&args=..\..\Shared+Files&args=..\Files&FilesSync=True
+'Ctrl + click to export as zip: ide://run?File=%B4X%\Zipper.jar&Args=Project.zip
+'###########################################################################################################
+'###################### PULL #############################################################
+'Ctrl + click ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=..\..\gitpull.bat
+'###########################################################################################################
+'###################### PUSH #############################################################
+'Ctrl + click ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=github&Args=..\..\
+'###########################################################################################################
+#End Region
+
+Sub Class_Globals
+ Private Root As B4XView
+ Private xui As XUI
+ Public login As B4XMainPage
+ Public principal As C_Principal
+ Public clientes As C_Clientes
+ Public cliente As C_Cliente
+ Public productos As C_Productos
+ Public updateAvailable As C_updateAvailable
+ Public mapas As C_Mapas
+ Public nuevoCliente As C_NuevoCliente
+ Public ticketsDia As C_TicketsDia
+ Public noVenta As C_NoVenta
+ Public nota As C_Nota
+ Public pedidos As C_Pedidos
+ Public promos As C_Promos
+ Public historico As C_Historico
+ Public checklist As C_CheckList
+
+
+ Dim reqManager As DBRequestManager
+ Dim ultimaActualizacionGPS As String = 235959
+ Dim almacen, ruta As String
+ Dim user As EditText
+ Dim pass As EditText
+ Dim c As Cursor
+ Dim D As Cursor
+ Dim existe As String
+ Dim paso1 As String
+ Dim IMEI As String
+ Dim alterno As String
+ Private b_menu As Button
+' Dim PopupMenu As RSPopupMenu
+ Dim cmd As DBCommand
+
+ Private IMEN As EditText
+ Private Entrar As Button
+ Private Panel1 As Panel
+ Private ImageView4 As ImageView
+ Private E_SERVER As EditText
+ Private B_SERVER As Button
+ Private B_FECHA As Button
+ Private CUANTOS As String
+ Private foto_g () As Byte
+
+ Private ListView1 As ListView
+ Private ImageView1 As ImageView
+ Private Label1 As Label
+ Private B_BorrarFinDia As Button
+ Private b_fdCancelar As Button
+ Private b_findiaOk As Button
+ Private p_finDia As Panel
+ Private et_autSup As EditText
+
+ 'prueba downloadfile
+ Dim ProgressBar1 As ProgressBar
+ Dim Label1 As Label
+ Dim btnDownload As Button
+ Dim btnCancel As Button
+ Private p_download As Panel
+ Private Label6 As Label
+ Dim logger As Boolean = True
+End Sub
+
+Public Sub Initialize
+ B4XPages.GetManager.LogEvents = True
+ #if not(DEBUG)
+ Starter.logger = False
+ #end if
+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
+ Root = Root1
+' Root.LoadLayout("MainPage")
+ Root.LoadLayout("login")
+ B4XPages.SetTitle(Me, "Kelloggs Preventa")
+ login.Initialize
+ B4XPages.AddPage("Login", login)
+ principal.Initialize
+ B4XPages.AddPage("Principal", principal)
+ clientes.Initialize
+ B4XPages.AddPage("Clientes", clientes)
+ cliente.Initialize
+ B4XPages.AddPageAndCreate("Cliente", cliente)
+ productos.Initialize
+ B4XPages.AddPage("Productos", productos)
+ updateAvailable.Initialize
+ B4XPages.AddPage("updateAvailable", updateAvailable)
+ mapas.Initialize
+ B4XPages.AddPage("Mapas", mapas)
+ nuevoCliente.Initialize
+ B4XPages.AddPage("NuevoCliente", nuevoCliente)
+ ticketsDia.Initialize
+ B4XPages.AddPage("TicketsDia", ticketsDia)
+ noVenta.Initialize
+ B4XPages.AddPage("NoVenta", noVenta)
+ nota.Initialize
+ B4XPages.AddPage("Nota", nota)
+ pedidos.Initialize
+ B4XPages.AddPage("Pedidos", pedidos)
+ promos.Initialize
+ B4XPages.AddPage("Promos", promos)
+ historico.Initialize
+ B4XPages.AddPage("Historico", historico)
+ checklist.Initialize
+ B4XPages.AddPage("CheckList", checklist)
+ ruta = Starter.ruta
+ ruta = File.DirInternal
+ Starter.tiempos.Initialize
+ Dim sDate, sTime As String
+ DateTime.DateFormat = "yyyyMMdd"
+ sDate=DateTime.Date(DateTime.Now)
+ Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS PEDIDO3")
+ Starter.skmt.ExecNonQuery("CREATE TABLE PEDIDO3 (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 DESC_CLIENTES (DC_CL_CLIENTE TEXT, CAT_CL_DESCUENTO_SS TEXT, CAT_CL_DESCUENTO_RTEC TEXT, CAT_CL_DESCUENTO_PING TEXT, CAT_CL_TIPOCLIENTE TEXT)")
+ Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_ENCUESTA (HE_CLIE TEXT, HE_RES TEXT, HE_FECHA TEXT, HE_TIPO TEXT)")
+ Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_DESCUENTOS_SKU (CAT_DS_CLIENTE TEXT, CAT_DS_PRODID TEXT, CAT_DS_PORCENTAJE TEXT)")
+ Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_ENVIOS (HE_FECHA TEXT, HE_CUANTOS TEXT, HE_TIPO TEXT)")
+ Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_ENCUESTA_PREGUNTA (CAT_EP_ID TEXT,CAT_EP_IDTIPOPREGUNTA TEXT,CAT_CE_DESCRIPCION TEXT,CAT_EP_PREGUNTA TEXT,CAT_EP_RES1_PRED TEXT,CAT_EP_RES2_PRED TEXT,CAT_EP_RES3_PRED TEXT,CAT_EP_ORDEN_PREGUNTA TEXT)")
+ Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_FOTOS (HF_FOTO BLOB, HF_CUENTA TEXT, HF_IDENCUESTA TEXT)")
+ Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CLIENTE_IMPRESO (CI_CUENTA TEXT)")
+ Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_PROMO_MONTO (CPM_IDPROMO TEXT, CPM_MONTO TEXT, CPM_PROID TEXT, CPM_CLIENTE TEXT, CPM_CANT TEXT, CPM_RANGO TEXT, CPM_DESC TEXT)")
+ Starter.skmt.ExecNonQuery2("INSERT INTO HIST_ENVIOS VALUES (?,0,?)", Array As Object(sTime, "PEDIDO"))
+ Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_EXHIBIDORES2 (HIST_EX_ID_CLIENTE TEXT, HIST_EX_TIPO TEXT, HIST_EX_CANT TEXT)")
+ Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_PROMO_WHATS(HIST_CLIENTE TEXT, HIST_RESPUESTA_PROMO)")
+
+
+ Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CLIENTE_CARGA_DIA (CCD_CUENTA TEXT)")
+
+ ''' PARA LO DE DOE---
+ 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)")
+ ''' FIN DOE
+
+ Try 'Intentamos usar "pragma_table_info" para revisar si existe la columna "IMPRESION" en la tabla
+ c=Starter.skmt.ExecQuery("SELECT COUNT(*) AS fCol FROM pragma_table_info('kmt_info') WHERE name='IMPRESION'")
+ c.Position = 0
+ If c.GetString("fCol") = 0 Then 'Si no esta la columna FECHA la agregamos
+ Starter.skmt.ExecNonQuery("ALTER TABLE kmt_info ADD COLUMN IMPRESION INTEGER")
+ End If
+ Catch 'Si no funciona "pragma_table_info" lo hacemos con try/catch
+ Try
+ Starter.skmt.ExecNonQuery("ALTER TABLE kmt_info ADD COLUMN IMPRESION INTEGER")
+ Catch
+ Log(LastException)
+ End Try
+ End Try
+ If sDate = "20190523" Then
+ Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("SERVER"))
+ Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("SERVER", Starter.server))
+ End If
+ Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("ULTIMOMODULO"))
+ Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("ULTIMOMODULO", "MAIN"))
+ c=Starter.skmt.ExecQuery2("select count(*) as CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SERVER"))
+ c.Position =0
+ If c.GetString("CUANTOS") = 0 Then
+ Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("SERVER",Starter.server))
+ Else
+ c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SERVER"))
+ c.Position =0
+ Starter.server = c.GetString("CAT_VA_VALOR")
+ reqManager.Initialize(Me, Starter.server)
+ End If
+ reqManager.Initialize(Me, Starter.server)
+' Activity.LoadLayout("login")
+ Label1.Text = Application.VersionName
+ Log("Revisa permisos para external storage")
+ Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
+ Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
+ If Result Then Log("Tenemos permisos de escritura externa.")
+ Log("TERMINA PERMISOS")
+ Log("Revisamos permisos para location")
+ Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_ACCESS_FINE_LOCATION)
+ Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
+ If Result Then
+ StartService(Tracker)
+ If logger Then Log("Start Tracker")
+ Else
+ ToastMessageShow("Sin permisos para GPS", True)
+ End If
+ Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_ACCESS_COARSE_LOCATION)
+ Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
+ If Result Then
+ StartService(Tracker)
+ If logger Then Log("Start Tracker")
+ Else
+ ToastMessageShow("Sin permisos para GPS", True)
+ End If
+ Log("TERMINA PERMISOS LOC")
+ If logger Then LogColor("Revisa permisos Phone_State", Colors.Green)
+ Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_READ_PHONE_STATE)
+ Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
+ If Result Then
+' Dim Phn As PhoneId
+ IMEN.Text = ""
+ IMEI = ""
+ If logger Then LogColor($"////////////////// IMEI: ${IMEI} ////////////////// "$, Colors.Blue)
+ End If
+ Log("TERMINA PERMISOS Phone")
+ c=Starter.skmt.ExecQuery("SELECT COUNT(*) as CUANTOS FROM TMP_INSPECCION_AUTO_DIARIA")
+ c.Position = 0
+ CUANTOS = c.GetString("CUANTOS")
+ c.Close
+ If CUANTOS = 0 Then
+ Dim theDir As String
+ If File.IsDirectory("/","kmts") Then
+ theDir = "/kmts"
+ End If
+ Try
+ File.MakeDir(File.DirInternal,"kmts")
+ theDir = "/kmts"
+ LogColor(File.DirInternal, Colors.Red)
+ Catch
+ theDir = ""
+ End Try
+ Try
+ foto_g = Bit.InputStreamToBytes(File.OpenInput(File.DirAssets, "vista1.png"))
+ Dim SALIDA As OutputStream
+ SALIDA = File. OpenOutput (File.DirInternal&theDir, "FOTO1.jpg", False)
+ SALIDA.WriteBytes(foto_g, 0, foto_g.Length)
+ SALIDA.Close
+' If Logger Then LogColor("** ** Creamos FOTO1.jpg en "&File.DirInternal, Colors.Blue)
+ Catch
+ Msgbox("No se puede crear el archivo de foto","Aviso") 'ignore
+ End Try
+ Try
+ foto_g = Bit.InputStreamToBytes(File.OpenInput(File.DirAssets, "vista3.png"))
+ Dim SALIDA As OutputStream
+ SALIDA = File. OpenOutput (File.DirInternal&theDir, "FOTO2.jpg", False)
+ SALIDA.WriteBytes(foto_g, 0, foto_g.Length)
+ SALIDA.Close
+ Catch
+ Msgbox("No se puede crear el archivo de foto","Aviso") 'ignore
+ End Try
+ Try
+ foto_g = Bit.InputStreamToBytes(File.OpenInput(File.DirAssets, "vista2.png"))
+ Dim SALIDA As OutputStream
+ SALIDA = File. OpenOutput (File.DirInternal&theDir, "FOTO3.jpg", False)
+ SALIDA.WriteBytes(foto_g, 0, foto_g.Length)
+ SALIDA.Close
+ Catch
+ Msgbox("No se puede crear el archivo de foto","Aviso") 'ignore
+ End Try
+ Try
+ foto_g = Bit.InputStreamToBytes(File.OpenInput(File.DirAssets, "vista4.png"))
+ Dim SALIDA As OutputStream
+ SALIDA = File. OpenOutput (File.DirInternal&theDir, "FOTO4.jpg", False)
+ SALIDA.WriteBytes(foto_g, 0, foto_g.Length)
+ SALIDA.Close
+ Catch
+ Msgbox("No se puede crear el archivo de foto","Aviso") 'ignore
+ End Try
+ End If
+' 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}"$)
+ If logger Then LogColor($"////////////////// DeviceID: ${DeviceID} ////////////////// "$, Colors.Blue)
+
+
+ 'este codigo es para lo del menu
+' PopupMenu.Initialize("PopupMenu", b_menu)
+' PopupMenu.AddMenuItem(0, 0, "View")
+' PopupMenu.AddMenuItem(1, 1, "Edit")
+' PopupMenu.AddMenuItem(2, 2, "Details")
+' PopupMenu.AddMenuItem(3, 3, "Remove")
+ ' menu fin
+ Subs.borraArribaDe100Errores
+End Sub
+
+Sub B4XPage_Appear
+' server = "http://keymon.com.mx:1782"
+' server = "http://201.99.139.28:1782"
+' server = "http://177.244.63.54:1782"
+ reqManager.Initialize(Me, Starter.server)
+ Starter.montoActual = 0
+ Starter.clientesTotal = 0
+ Starter.clientesVenta = 0
+ Starter.clientesVisitados = 0
+ almacen = 0
+ Starter.rutaPreventa = 0
+ Starter.CANTIDADPROD = 0
+ c.Close
+ c=Starter.skmt.ExecQuery2("select count(*) as CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("CODIGO"))
+ c.Position =0
+ CUANTOS = c.GetString("CUANTOS")
+ c.Close
+ If CUANTOS > 0 Then
+ c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("CODIGO"))
+ c.Position =0
+ If c.GetString("CAT_VA_VALOR") = "743" Then
+ Entrar.Visible = True
+ End If
+ c.Close
+ Else
+ Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("CODIGO","743"))
+ End If
+ c=Starter.skmt.ExecQuery2("select COUNT(*) AS CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("MACIMP"))
+ c.Position =0
+ 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
+ If D.GetString("CUANTOS") > 0 Then
+ c=Starter.skmt.ExecQuery("select NOVERSION from version")
+ c.Position = 0
+ If c.GetString("NOVERSION") <> "2.95" Then
+ Msgbox("INSTALAR NUEVO APK" ,"AVISO") 'ignore
+ B4XPage_Appear
+ End If
+ c.Close
+ End If
+End Sub
+
+'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
+
+Sub Entrar_Click
+ If user.Text = "ALTERNO" Then
+ c=Starter.skmt.ExecQuery2("select CAT_CO_CONFIGURACION, CAT_CO_RESULTADO from CAT_CODIGOS where CAT_CO_PONDERACION =1 AND CAT_CO_ACCION = ?", Array As String("SERVER"))
+ c.Position =0
+ Starter.server = c.GetString("CAT_CO_CONFIGURACION")
+ alterno = c.GetString("CAT_CO_RESULTADO")
+ c.Close
+ If alterno = 1 Then
+ Starter.skmt.ExecNonQuery2("UPDATE CAT_CODIGOS SET CAT_CO_PONDERACION = 1 WHERE CAT_CO_ACCION = ? AND CAT_CO_RESULTADO = 2", Array As String ("SERVER"))
+ Starter.skmt.ExecNonQuery2("UPDATE CAT_CODIGOS SET CAT_CO_PONDERACION = 0 WHERE CAT_CO_ACCION = ? AND CAT_CO_RESULTADO = 1", Array As String ("SERVER"))
+ Else if alterno = 2 Then
+ Starter.skmt.ExecNonQuery2("UPDATE CAT_CODIGOS SET CAT_CO_PONDERACION = 1 WHERE CAT_CO_ACCION = ? AND CAT_CO_RESULTADO = 1", Array As String ("SERVER"))
+ Starter.skmt.ExecNonQuery2("UPDATE CAT_CODIGOS SET CAT_CO_PONDERACION = 0 WHERE CAT_CO_ACCION = ? AND CAT_CO_RESULTADO = 2", Array As String ("SERVER"))
+ End If
+ c=Starter.skmt.ExecQuery2("select CAT_CO_CONFIGURACION, CAT_CO_RESULTADO from CAT_CODIGOS where CAT_CO_PONDERACION =1 AND CAT_CO_ACCION = ?", Array As String("SERVER"))
+ c.Position =0
+ Starter.server = c.GetString("CAT_CO_CONFIGURACION")
+ user.Text = Starter.server
+ c.Close
+ reqManager.Initialize(Me, Starter.server)
+ else if user.Text = "KMTSKLL1" Then
+ Starter.skmt.ExecNonQuery("delete from usuarioa")
+ Starter.skmt.ExecNonQuery2("INSERT INTO USUARIOA VALUES (?,?)", Array As Object(user.Text, pass.Text))
+ 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"))
+ B4XPages.ShowPage("Principal")
+ End If
+ c=Starter.skmt.ExecQuery2("select count(*) as EXISTE1 from usuarioa where usuario = ?", Array As String(user.Text))
+ c.Position=0
+ existe = c.GetString("EXISTE1")
+ 'existe = 1
+ If existe = 0 Then
+ 'skmt.ExecNonQuery("delete from usuarioa")
+ Dim cmd As DBCommand
+ cmd.Initialize
+ cmd.Name = "select_usuario_guna_KELL"
+ cmd.Parameters = Array As Object(user.Text, pass.Text)
+ reqManager.ExecuteQuery(cmd , 0, "usuario")
+ Dim cmd As DBCommand
+ cmd.Initialize
+ cmd.Name = "select_version_KELL"
+ reqManager.ExecuteQuery(cmd , 0, "version")
+ Else
+ B4XPages.ShowPage("Principal")
+ End If
+End Sub
+
+Sub JobDone(Job As HttpJob)
+ If Job.Success = False Then
+ ToastMessageShow("Error: " & Job.ErrorMessage, True)
+ Else
+ 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 = "version" Then 'query tag
+ 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"))
+ Starter.skmt.ExecNonQuery("delete from VERSION")
+ Starter.skmt.ExecNonQuery2("INSERT INTO VERSION(NOVERSION) VALUES (?)", Array As Object (CAT_VE_VERSION))
+ Next
+ End If
+ End If
+
+ If Job.JobName = "DBRequest" Then
+ Dim result As DBResult = reqManager.HandleJob(Job)
+ If result.Tag = "agencia" Then 'query tag
+ For Each records() As Object In result.Rows
+ Dim ID_ALMACEN As String = records(result.Columns.Get("ID_ALMACEN"))
+ Next
+ 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"))
+ Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("FECHA"))
+ 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 = "usuario" Then 'query tag
+ For Each records() As Object In result.Rows
+ Dim name As String = records(result.Columns.Get("USUARIO"))
+ Dim ID_ALMACEN As String = records(result.Columns.Get("CAT_LO_AGENCIA"))
+ If logger Then Log(name)
+ ' Dim IMEI_BASE As String = records(result.Columns.Get("CAT_LO_IDTELEFONO"))
+ Next
+ paso1 = 1
+ End If
+ End If
+ Job.Release
+ End If
+
+ If paso1 =1 Then
+ If name = "OKActivo" Then
+ Starter.skmt.ExecNonQuery("delete from usuarioa")
+ Starter.skmt.ExecNonQuery2("INSERT INTO USUARIOA VALUES (?,?)", Array As Object(user.Text, pass.Text))
+ Starter.skmt.ExecNonQuery("delete from cat_almacen")
+ Starter.skmt.ExecNonQuery2("INSERT INTO CAT_ALMACEN(ID_ALMACEN) VALUES (?)", Array As Object (ID_ALMACEN))
+ almacen = ID_ALMACEN
+ Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("NUMERO_PEDIDO"))
+ Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("NUMERO_PEDIDO",0))
+ B4XPages.ShowPage("Principal")
+ Else If name = "OKExpirado" Then
+ Msgbox("Usuario Expirado llamar al administrador","") 'ignore
+ Else If name = "OKCancelado" Then
+ Msgbox("Usuario Cancelado llamar al administrador","") 'ignore
+ Else
+ Msgbox("Usuario o password No validos","") 'ignore
+ End If
+ paso1 = 0
+ End If
+End Sub
+
+Private Sub B4XPage_CloseRequest As ResumableSub
+ ' BACK key pressed
+ 'Return True to close, False to cancel
+ Log("BACK")
+ If Panel1.Visible Then
+ Panel1.Visible = False
+ Entrar.Visible = True
+ Return True
+ Else
+ If logger Then Log("Saliendo")
+ B4XPages.ClosePage(Me)
+ Subs.cierraActividades
+ Return True
+ End If
+End Sub
+
+Sub GPS_LocationChanged (Location1 As Location)
+ If user.text = "GPS" Then
+ user.Text=Location1.Latitude
+ pass.text=Location1.Longitude
+ End If
+End Sub
+
+Sub PopupMenu_Dismiss
+ ToastMessageShow("PopupMenu dismissed", False)
+End Sub
+
+Sub PopupMenu_MenuItemClick (ItemId As Int) As Boolean
+ ToastMessageShow("Item " & ItemId & " clicked.", False)
+ Return False
+End Sub
+
+Sub b_menu_Click
+' PopupMenu.Show
+End Sub
+
+Sub IMEN_EnterPressed
+
+End Sub
+
+Sub user_EnterPressed
+ If user.Text = "CODIGO" Then
+ IMEN.Visible = True
+ user.Text = ""
+ End If
+End Sub
+
+Sub ImageView4_Click
+ Entrar.Visible = False
+' Starter.server = "http://201.99.139.28:1782"
+' Starter.server = "http://177.244.63.54:1782"
+' Starter.server = "http://keymon.com.mx:1782"
+ ListView1.Clear
+ Dim Label1 As Label
+ Label1 = ListView1.SingleLineLayout.Label
+ Label1.TextSize = 20
+ Label1.TextColor = Colors.Black
+ If user.Text = "KMTS1" Then ListView1.AddSingleLine("http://10.0.0.205:1782")
+ ListView1.AddSingleLine("http://keymon.lat:1782")
+ 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")
+ Panel1.Visible = True
+ Panel1.Width = Root.Width * 0.95
+ Panel1.Left = (Root.Width/2) - (Panel1.Width/2)
+ Panel1.Top = (Root.Height/2) - (Panel1.Height/2)
+ Panel1.Elevation = 100
+ Panel1.BringToFront
+End Sub
+
+Private Sub ImageView4_LongClick
+' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
+' Wait For Activity_PermissionResult (Permission As String, Result As Boolean)
+ Subs.copiaDB(True)
+End Sub
+
+Sub B_SERVER_Click
+ Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("SERVER"))
+ Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("SERVER",E_SERVER.text))
+ Starter.server = E_SERVER.text
+ If logger Then Log("Inicializamos reqManager con " & Starter.server)
+ reqManager.Initialize(Me, Starter.server)
+ CallSubDelayed(Starter, "reinicializaReqManager")
+ Panel1.Visible = False
+ Entrar.Visible = True
+End Sub
+
+Sub B_FECHA_Click
+ Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("MACIMP"))
+ Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("MACIMP","0"))
+ Panel1.Visible = False
+End Sub
+
+Sub ListView1_ItemClick (Position As Int, Value As Object)
+ E_SERVER.text = Value
+End Sub
+
+Sub ImageView1_Click
+
+End Sub
+
+Sub B_BorrarFinDia_Click
+ p_finDia.Visible = True
+ p_finDia.BringToFront
+End Sub
+
+Sub b_fdCancelar_Click
+ p_finDia.Visible = False
+ p_finDia.SendToBack
+End Sub
+
+Sub b_findiaOk_Click
+ c=Starter.skmt.ExecQuery2("select count(*) as passOk from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ? and CAT_VA_VALOR = ?", Array As String ("FINDIA_PASS", et_autSup.Text))
+ c.Position =0
+ If c.GetString("passOk") = 1 Or et_autSup.Text = "FinDiaAutOk" Then
+ Starter.skmt.ExecNonQuery("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'FINDIA_FECHA'")
+ ToastMessageShow("Ya se puede hacer FIN DIA!!", True)
+ p_finDia.Visible = False
+ p_finDia.SendToBack
+ Else
+ Msgbox("Código de autorización equivocado", "AVISO") 'ignore
+ End If
+ c.Close
+End Sub
\ No newline at end of file
diff --git a/B4A/C_Calculadora.bas b/B4A/C_Calculadora.bas
new file mode 100644
index 0000000..b9774e4
--- /dev/null
+++ b/B4A/C_Calculadora.bas
@@ -0,0 +1,710 @@
+B4A=true
+Group=Default Group
+ModulesStructureVersion=1
+Type=Class
+Version=11.5
+@EndOfDesignText@
+Sub Class_Globals
+ Private Root As B4XView 'ignore
+ Private xui As XUI 'ignore
+ '--***---- BOLETA DE LIQUIDACION
+ Private P_BOLETA As Panel
+ '------ BILLETES
+ Private LBL_TMIL As Label
+ Private LBL_TQUIN As Label
+ Private LBL_TDOS As Label
+ Private LBL_TCIEN As Label
+ Private LBL_TCIN As Label
+ Private LBL_TVEIN As Label
+ Private LBL_MIL As Label
+ Private LBL_QUIN As Label
+ Private LBL_DOSC As Label
+ Private LBL_CIEN As Label
+ Private LBL_CINCUEN As Label
+ Private LBL_VEINTE As Label
+ Private EDT_CANVEIN As EditText
+ Private EDT_CANCIN As EditText
+ Private EDT_CANCIEN As EditText
+ Private EDT_CANDOS As EditText
+ Private EDT_CANQUIN As EditText
+ Private EDT_CANMIL As EditText
+ Private Btn_TOTALBILLETE As Button
+ Private Pnl_Billete As Panel
+ Private Pnl_Moneda As Panel
+ Private L_CALCULA_BILLE As Label
+ '------ BOTONES MAS Y MENOS
+ Private B_MENMIL As Button
+ Private B_SUMIL As Button
+ Private B_MENQUI As Button
+ Private B_SUQUI As Button
+ Private B_MENDOS As Button
+ Private B_SUDOS As Button
+ Private B_MENCIE As Button
+ Private B_SUCIEN As Button
+ Private B_MENCIN As Button
+ Private B_SUCIN As Button
+ Private B_MENVEI As Button
+ Private B_SUVEI As Button
+ '------ MONEDAS
+ Private L_DIEZ As Label
+ Private L_CINCO As Label
+ Private L_DOS As Label
+ Private L_UNO As Label
+ Private L_CENTAVO As Label
+ Private LBL_TDIEZ As Label
+ Private LBL_TCI As Label
+ Private LBL_TDO As Label
+ Private LBL_TUN As Label
+ Private LBL_TCEN As Label
+ Private EDT_CANCEN As EditText
+ Private EDT_CANUN As EditText
+ Private EDT_CANDO As EditText
+ Private EDT_CANCI As EditText
+ Private EDT_CANDIEZ As EditText
+ Private L_CALCULA_MONEDA As Label
+ Private B_TOTALMONEDA As Button
+ '------ BOTONES MAS Y MENOS
+ Private B_MENCENT As Button
+ Private B_MENUN As Button
+ Private B_MENDO As Button
+ Private B_MENCI As Button
+ Private B_MENDIEZ As Button
+ Private B_SUMDIEZ As Button
+ Private B_SUMCIN As Button
+ Private B_SUMDO As Button
+ Private B_SUMUN As Button
+ Private B_SUMCENT As Button
+ '------ SUMA TOTALES
+ Private B_AGREGAMONE As Button
+ Private B_AGREGABILL As Button
+ Private TOTALES As Label
+ Private B_SUM_TOTAL As Button
+ Private TOTALBILLETES As Button
+ Private TOTALMONEDA As Button
+ Private PNL_TOTALES As Panel
+ Private LBL_RETURN As Label
+ Private IMG_IMPRESORA As Label
+ Private LBL_REGRESA As Label
+ '--***---- FIN BOLETA
+' Private P_INF_GENERAL As Panel
+ Private B_Regresar As Button
+' Private ABORDO As String
+ Private a_inicial As String
+ Private a_total As String
+ Private a_venta As String
+ Private a_final As String
+ Private a_VENTA_F As String
+ Private a_inicial_5 As String
+ Private L_INVA As ListView
+ Private B_IMP_INV As Button
+ Private B_CERRAR_I As Button
+ Private Panel_INV_A As Panel
+ Private LBL_TVEINTE As Label
+ Private B_SUMVEINTE As Button
+ Private EDT_CANVEINTE As EditText
+ Private B_MENVEINTE As Button
+ Private L_VEINTE As Label
+ Dim RutaBoleta As String
+ Dim Id_Almacen As String
+ Dim cursorBoleta As Cursor
+ Private Bt_GuardarBoleta As Button
+ Private CUANTOS1 As String
+ Private Panel9 As Panel
+ Private t_tenc As Label
+ Private E_RES_E As EditText
+ Private B_E_NEXT As Button
+ Private Label26 As Label
+ Private l_chk_e As Label
+ Private Chk_1 As CheckBox
+ Private chk_2 As CheckBox
+ Private chk_3 As CheckBox
+ Private b_chk_e As Button
+ Private Panel10 As Panel
+ Private chk_1_valor As String
+ Private chk_2_valor As String
+ Private chk_3_valor As String
+ Private p_encuesta As Panel
+ Private b_encuesta_1 As Button
+ Private b_encuesta_2 As Button
+ Private b_encuesta_3 As Button
+ Private l_titEncuesta As Label
+ Private l_txtEncuesta As Label
+ Private encuestaRes As String
+ Private botonPresionado As Int
+ Private B_IMP2 As Button
+ Dim impresoraConectada As Boolean = False
+ Private l_categoria2 As Label
+ Private l_exhibidor2 As Label
+ Private p_exhibidores As Panel
+ Private Button1 As Button
+ Private b_exhibidor As Button
+ Private l_exhibidores3 As Label
+ Private l_segmento2 As Label
+ Private et_encuesta As EditText
+ Private b_encuesta_continuar As Button
+ Dim muestraBoleta As Boolean = False
+ Private Panel4 As Panel
+
+ Private Edt_FH As EditText
+End Sub
+
+'You can add more parameters here.
+Public Sub Initialize As Object
+ Return Me
+End Sub
+
+'This event will be called once, before the page becomes visible.
+Private Sub B4XPage_Created (Root1 As B4XView)
+ Root = Root1
+ 'load the layout to Root
+ Root.LoadLayout("calculadora")
+End Sub
+
+'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
+
+Sub LLAMA_BOLETA
+ '' FECHA DE TELEFONO
+ DateTime.DateFormat="dd/MM/yyyy"
+ Edt_FH.Text=DateTime.Date(DateTime.Now)
+ Subs.panelAnchoAlto(PNL_TOTALES, Root.Width, Root.Height)
+ PNL_TOTALES.Visible=True
+ Pnl_Billete.Visible=True
+ Pnl_Moneda.visible=True
+ LBL_RETURN.Visible=False
+ LBL_REGRESA.Visible=False
+ P_BOLETA.Visible=True
+' P_INF_GENERAL.Visible=False
+ LBL_REGRESA.Visible=True
+ Private c As Cursor = Starter.skmt.ExecQuery("select * from TMP_CAT_BILLETE join TMP_CAT_MONEDAS")
+ If c.RowCount > 0 Then
+ c.Position = 0
+ Log("==================== CALCULADORA "&c.ColumnCount)
+' Traemos billetes
+ EDT_CANMIL.Text = "0"
+ If IsNumber(c.GetString("TMP_BILLE_MIL")) Then EDT_CANMIL.Text = c.GetString("TMP_BILLE_MIL")
+ EDT_CANQUIN.Text = "0"
+ If c.GetString("TMP_BILLE_QUINIENTOS")<> Null Then EDT_CANQUIN.Text = c.GetString("TMP_BILLE_QUINIENTOS")
+ EDT_CANDOS.Text = "0"
+ If c.GetString("TMP_BILLE_DOSCIENTOS") <>Null Then EDT_CANDOS.Text = c.GetString("TMP_BILLE_DOSCIENTOS")
+ EDT_CANCIEN.Text = "0"
+ If c.GetString("TMP_BILLE_CIEN")<> Null Then EDT_CANCIEN.Text = c.GetString("TMP_BILLE_CIEN")
+ EDT_CANCIN.Text = "0"
+ If c.GetString("TMP_BILLE_CINCUENTA")<> Null Then EDT_CANCIN.Text = c.GetString("TMP_BILLE_CINCUENTA")
+ EDT_CANVEIN.Text = "0"
+ If c.GetString("TMP_BILLE_VEINTE")<> Null Then EDT_CANVEIN.Text = c.GetString("TMP_BILLE_VEINTE")
+' Traemos monedas
+ EDT_CANVEINTE.Text = "0"
+ If c.GetString("TMP_MON_VEINTE")<> Null Then EDT_CANVEINTE.Text = c.GetString("TMP_MON_VEINTE")
+ EDT_CANDIEZ.Text = "0"
+ If c.GetString("TMP_MON_DIEZ")<> Null Then EDT_CANDIEZ.Text = c.GetString("TMP_MON_DIEZ")
+ EDT_CANCI.Text = "0"
+ If c.GetString("TMP_MON_CINCO")<> Null Then EDT_CANCI.Text = c.GetString("TMP_MON_CINCO")
+ EDT_CANDO.Text = "0"
+ If c.GetString("TMP_MON_DOS")<> Null Then EDT_CANDO.Text = c.GetString("TMP_MON_DOS")
+ EDT_CANUN.Text = "0"
+ If c.GetString("TMP_MON_UN")<> Null Then EDT_CANUN.Text = c.GetString("TMP_MON_UN")
+ EDT_CANCEN.Text = "0"
+ If c.GetString("TMP_MON_CENTAVOS")<> Null Then EDT_CANCEN.Text = c.GetString("TMP_MON_CENTAVOS")
+ L_CALCULA_BILLE_CLICK
+ L_CALCULA_MONEDA_Click
+ B_SUM_TOTAL.Text = TOTALBILLETES.Text + TOTALMONEDA.text
+ End If
+ Starter.boleta = 0
+ muestraBoleta = False
+ c.Close
+End Sub
+
+'''BILLETES
+Sub L_CALCULA_BILLE_CLICK
+ If EDT_CANMIL.Text="" Or EDT_CANQUIN.Text="" Or EDT_CANDOS.Text="" Or EDT_CANCIEN.Text="" Or EDT_CANCIN.Text="" Or EDT_CANVEIN.Text="" Then
+ Pnl_Billete.RequestFocus
+ Msgbox("Por favor llena todas las cantidades","") 'ignore
+ Else
+ LBL_TMIL.Text= LBL_MIL.Tag * EDT_CANMIL.Text
+ LBL_TQUIN.Text=LBL_QUIN.Tag * EDT_CANQUIN.Text
+ LBL_TDOS.Text=LBL_DOSC.Tag * EDT_CANDOS.Text
+ LBL_TCIEN.Text=LBL_CIEN.Tag * EDT_CANCIEN.Text
+ LBL_TCIN.Text=LBL_CINCUEN.Tag * EDT_CANCIN.Text
+ LBL_TVEIN.Text=LBL_VEINTE.Tag * EDT_CANVEIN.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+ End If
+End Sub
+
+'20
+Private Sub EDT_CANVEIN_FocusChanged (HasFocus As Boolean)
+ If EDT_CANVEIN.Text = "" Then EDT_CANVEIN.Text = "0"
+ EDT_CANVEIN.Text = Round (EDT_CANVEIN.Text)
+ LBL_TVEIN.Text=LBL_VEINTE.Tag * EDT_CANVEIN.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+End Sub
+
+Sub B_SUVEI_Click
+ If EDT_CANVEIN.Text = "" Then
+ EDT_CANVEIN.Text=0
+ LBL_TVEIN.Text=LBL_VEINTE.Tag * EDT_CANVEIN.Text
+ Else
+ EDT_CANVEIN.Text = Round (EDT_CANVEIN.Text + 1)
+ LBL_TVEIN.Text=LBL_VEINTE.Tag * EDT_CANVEIN.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+ End If
+End Sub
+
+Sub B_MENVEI_Click
+ If EDT_CANVEIN.Text = "" Then
+ EDT_CANVEIN.Text=0
+ LBL_TVEIN.Text=LBL_VEINTE.Tag * EDT_CANVEIN.Text
+ Else IF EDT_CANVEIN.Text > 0 Then
+ EDT_CANVEIN.Text = Round(EDT_CANVEIN.Text -1)
+ LBL_TVEIN.Text=LBL_VEINTE.Tag * EDT_CANVEIN.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+ End If
+End Sub
+'50
+Private Sub EDT_CANCIN_FocusChanged (HasFocus As Boolean)
+ If EDT_CANCIN.Text = "" Then EDT_CANCIN.Text = "0"
+ EDT_CANCIN.Text = Round (EDT_CANCIN.Text)
+ LBL_TCIN.Text=LBL_CINCUEN.Tag * EDT_CANCIN.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+End Sub
+
+Sub B_SUCIN_Click
+ If EDT_CANCIN.Text = "" Then
+ EDT_CANCIN.Text =0
+ LBL_TCIN.Text=LBL_CINCUEN.Tag * EDT_CANCIN.Text
+ Else
+ EDT_CANCIN.Text = Round (EDT_CANCIN.Text + 1)
+ LBL_TCIN.Text=LBL_CINCUEN.Tag * EDT_CANCIN.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+ End If
+End Sub
+
+Sub B_MENCIN_Click
+ If EDT_CANCIN.Text = "" Then
+ EDT_CANCIN.Text =0
+ LBL_TCIN.Text=LBL_CINCUEN.Tag * EDT_CANCIN.Text
+ Else IF EDT_CANCIN.Text > 0 Then
+ EDT_CANCIN.Text = Round(EDT_CANCIN.Text -1)
+ LBL_TCIN.Text=LBL_CINCUEN.Tag * EDT_CANCIN.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+ End If
+End Sub
+
+'100
+Private Sub EDT_CANCIEN_FocusChanged (HasFocus As Boolean)
+ If EDT_CANCIEN.Text = "" Then EDT_CANCIEN.Text = "0"
+ EDT_CANCIEN.Text = Round (EDT_CANCIEN.Text)
+ LBL_TCIEN.Text=LBL_CIEN.Tag * EDT_CANCIEN.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+End Sub
+
+Sub B_SUCIEN_Click
+ If EDT_CANCIEN.Text = "" Then
+ EDT_CANCIEN.Text = 0
+ LBL_TCIEN.Text=LBL_CIEN.Tag * EDT_CANCIEN.Text
+ Else
+ EDT_CANCIEN.Text = Round (EDT_CANCIEN.Text + 1)
+ LBL_TCIEN.Text=LBL_CIEN.Tag * EDT_CANCIEN.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+ End If
+End Sub
+
+Sub B_MENCIE_Click
+ If EDT_CANCIEN.Text = "" Then
+ EDT_CANCIEN.Text = 0
+ LBL_TCIEN.Text=LBL_CIEN.Tag * EDT_CANCIEN.Text
+ Else IF EDT_CANCIEN.Text > 0 Then
+ EDT_CANCIEN.Text = Round(EDT_CANCIEN.Text -1)
+ LBL_TCIEN.Text=LBL_CIEN.Tag * EDT_CANCIEN.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+ End If
+End Sub
+
+'200
+Private Sub EDT_CANDOS_FocusChanged (HasFocus As Boolean)
+ If EDT_CANDOS.Text = "" Then EDT_CANDOS.Text = "0"
+ EDT_CANDOS.Text = Round (EDT_CANDOS.Text)
+ LBL_TDOS.Text=LBL_DOSC.Tag * EDT_CANDOS.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+End Sub
+
+Sub B_SUDOS_Click
+ If EDT_CANDOS.Text = "" Then
+ EDT_CANDOS.Text = 0
+ LBL_TDOS.Text=LBL_DOSC.Tag * EDT_CANDOS.Text
+ Else
+ EDT_CANDOS.Text = Round (EDT_CANDOS.Text + 1)
+ LBL_TDOS.Text=LBL_DOSC.Tag * EDT_CANDOS.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+ End If
+End Sub
+
+Sub B_MENDOS_Click
+ If EDT_CANDOS.Text = "" Then
+ EDT_CANDOS.Text = 0
+ LBL_TDOS.Text=LBL_DOSC.Tag * EDT_CANDOS.Text
+ Else IF EDT_CANDOS.Text > 0 Then
+ EDT_CANDOS.Text = Round(EDT_CANDOS.Text -1)
+ LBL_TDOS.Text=LBL_DOSC.Tag * EDT_CANDOS.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+ End If
+End Sub
+
+'500
+Private Sub EDT_CANQUIN_FocusChanged (HasFocus As Boolean)
+ If EDT_CANQUIN.Text = "" Then EDT_CANQUIN.Text = "0"
+ EDT_CANQUIN.Text = Round (EDT_CANQUIN.Text)
+ LBL_TQUIN.Text=LBL_QUIN.Tag * EDT_CANQUIN.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+End Sub
+
+Sub B_SUQUI_Click
+ If EDT_CANQUIN.Text = "" Then
+ EDT_CANQUIN.Text =0
+ LBL_TQUIN.Text=LBL_QUIN.Tag * EDT_CANQUIN.Text
+ Else
+ EDT_CANQUIN.Text = Round (EDT_CANQUIN.Text + 1)
+ LBL_TQUIN.Text=LBL_QUIN.Tag * EDT_CANQUIN.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+ End If
+End Sub
+
+Sub B_MENQUI_Click
+ If EDT_CANQUIN.Text = "" Then
+ EDT_CANQUIN.Text =0
+ LBL_TQUIN.Text=LBL_QUIN.Tag * EDT_CANQUIN.Text
+ Else IF EDT_CANQUIN.Text > 0 Then
+ EDT_CANQUIN.Text = Round(EDT_CANQUIN.Text -1)
+ LBL_TQUIN.Text=LBL_QUIN.Tag * EDT_CANQUIN.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+ End If
+End Sub
+'1000
+Private Sub EDT_CANMIL_FocusChanged (HasFocus As Boolean)
+ If EDT_CANMIL.Text = "" Then EDT_CANMIL.Text = "0"
+ EDT_CANMIL.Text = Round (EDT_CANMIL.Text )
+ LBL_TMIL.Text= LBL_MIL.Tag * EDT_CANMIL.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+End Sub
+
+Sub B_SUMIL_Click
+ If EDT_CANMIL.Text = "" Then
+ EDT_CANMIL.Text = 0
+ LBL_TMIL.Text= LBL_MIL.Tag * EDT_CANMIL.Text
+ Else
+ EDT_CANMIL.Text = Round (EDT_CANMIL.Text + 1)
+ LBL_TMIL.Text= LBL_MIL.Tag * EDT_CANMIL.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+ End If
+End Sub
+
+Sub B_MENMIL_Click
+ If EDT_CANMIL.Text = "" Then
+ EDT_CANMIL.Text = 1
+ LBL_TMIL.Text= LBL_MIL.Tag * EDT_CANMIL.Text
+ Else IF EDT_CANMIL.Text > 0 Then
+ EDT_CANMIL.Text = Round(EDT_CANMIL.Text -1)
+ LBL_TMIL.Text= LBL_MIL.Tag * EDT_CANMIL.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+ End If
+End Sub
+
+'''' MONEDAS
+Sub L_CALCULA_MONEDA_Click
+ If EDT_CANDIEZ.Text="" Or EDT_CANCI.Text="" Or EDT_CANDO.Text="" Or EDT_CANUN.Text="" Or EDT_CANCEN.Text="" Or EDT_CANVEINTE.Text="" Then
+ Msgbox("Por favor llena todas las cantidades","") 'ignore
+ Pnl_Billete.RequestFocus
+ Else
+ LBL_TDIEZ.Text= L_DIEZ.Tag * EDT_CANDIEZ.Text
+ LBL_TCI.Text= L_CINCO.Tag * EDT_CANCI.Text
+ LBL_TDO.Text=L_DOS.Tag * EDT_CANDO.Text
+ LBL_TUN.Text=L_UNO.Tag * EDT_CANUN.Text
+ LBL_TCEN.Text=L_CENTAVO.Tag * EDT_CANCEN.Text
+ LBL_TVEINTE.Text=L_VEINTE.Tag * EDT_CANVEINTE.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text)
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+ End If
+End Sub
+
+'0.50
+Private Sub EDT_CANCEN_FocusChanged (HasFocus As Boolean)
+ If EDT_CANCEN.Text = "" Then EDT_CANCEN.Text = "0"
+ EDT_CANCEN.Text = Round (EDT_CANCEN.Text)
+ LBL_TCEN.Text=L_CENTAVO.Tag * EDT_CANCEN.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text)
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+End Sub
+
+Sub B_SUMCENT_Click
+ If EDT_CANCEN.Text = "" Then
+ EDT_CANCEN.Text = 0
+ LBL_TCEN.Text=L_CENTAVO.Tag * EDT_CANCEN.Text
+ Else
+ EDT_CANCEN.Text = Round (EDT_CANCEN.Text + 1)
+ LBL_TCEN.Text=L_CENTAVO.Tag * EDT_CANCEN.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text)
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+ End If
+End Sub
+
+Sub B_MENCENT_Click
+ If EDT_CANCEN.Text = "" Then
+ EDT_CANCEN.Text =0
+ LBL_TCEN.Text=L_CENTAVO.Tag * EDT_CANCEN.Text
+ Else IF EDT_CANCEN.Text > 0 Then
+ EDT_CANCEN.Text = Round(EDT_CANCEN.Text -1)
+ LBL_TCEN.Text=L_CENTAVO.Tag * EDT_CANCEN.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text)
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+ End If
+End Sub
+
+'1
+Private Sub EDT_CANUN_FocusChanged (HasFocus As Boolean)
+ If EDT_CANUN.Text = "" Then EDT_CANUN.Text = "0"
+ EDT_CANUN.Text = Round (EDT_CANUN.Text)
+ LBL_TUN.Text=L_UNO.Tag * EDT_CANUN.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text)
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+End Sub
+
+Sub B_SUMUN_Click
+ If EDT_CANUN.Text = "" Then
+
+ LBL_TUN.Text=L_UNO.Tag * EDT_CANUN.Text
+ Else
+ EDT_CANUN.Text = Round (EDT_CANUN.Text + 1)
+ LBL_TUN.Text=L_UNO.Tag * EDT_CANUN.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text)
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+ End If
+End Sub
+
+Sub B_MENUN_Click
+ If EDT_CANUN.Text = "" Then
+ EDT_CANUN.Text = 0
+ LBL_TUN.Text=L_UNO.Tag * EDT_CANUN.Text
+ Else IF EDT_CANUN.Text > 0 Then
+ EDT_CANUN.Text = Round(EDT_CANUN.Text -1)
+ LBL_TUN.Text=L_UNO.Tag * EDT_CANUN.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text)
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+ End If
+End Sub
+
+'2
+Private Sub EDT_CANDO_FocusChanged (HasFocus As Boolean)
+ If EDT_CANDO.Text = "" Then EDT_CANDO.Text = "0"
+ EDT_CANDO.Text = Round (EDT_CANDO.Text)
+ LBL_TDO.Text=L_DOS.Tag * EDT_CANDO.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text)
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+End Sub
+
+Sub B_SUMDO_Click
+ If EDT_CANDO.Text = "" Then
+ EDT_CANDO.Text =0
+ LBL_TDO.Text=L_DOS.Tag * EDT_CANDO.Text
+ Else
+ EDT_CANDO.Text = Round (EDT_CANDO.Text + 1)
+ LBL_TDO.Text=L_DOS.Tag * EDT_CANDO.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text)
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+ End If
+End Sub
+
+Sub B_MENDO_Click
+ If EDT_CANDO.Text = "" Then
+ EDT_CANDO.Text=0
+ LBL_TDO.Text=L_DOS.Tag * EDT_CANDO.Text
+ Else IF EDT_CANDO.Text > 0 Then
+ EDT_CANDO.Text = Round(EDT_CANDO.Text -1)
+ LBL_TDO.Text=L_DOS.Tag * EDT_CANDO.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text)
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+ End If
+End Sub
+
+'5
+Private Sub EDT_CANCI_FocusChanged (HasFocus As Boolean)
+ If EDT_CANCI.Text = "" Then EDT_CANCI.Text = "0"
+ EDT_CANCI.Text = Round (EDT_CANCI.Text)
+ LBL_TCI.Text= L_CINCO.Tag * EDT_CANCI.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text )
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+End Sub
+
+Sub B_SUMCIN_Click
+ If EDT_CANCI.Text = "" Then
+ EDT_CANCI.Text =0
+ LBL_TCI.Text= L_CINCO.Tag * EDT_CANCI.Text
+ Else
+ EDT_CANCI.Text = Round (EDT_CANCI.Text + 1)
+ LBL_TCI.Text= L_CINCO.Tag * EDT_CANCI.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text )
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+ End If
+End Sub
+
+Sub B_MENCI_Click
+ If EDT_CANCI.Text = "" Then
+ EDT_CANCI.Text =0
+ LBL_TCI.Text= L_CINCO.Tag * EDT_CANCI.Text
+ Else IF EDT_CANCI.Text > 0 Then
+ EDT_CANCI.Text = Round(EDT_CANCI.Text -1)
+ LBL_TCI.Text= L_CINCO.Tag * EDT_CANCI.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text)
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+ End If
+End Sub
+'10
+Private Sub EDT_CANDIEZ_FocusChanged (HasFocus As Boolean)
+ If EDT_CANDIEZ.Text = "" Then EDT_CANDIEZ.Text = "0"
+ EDT_CANDIEZ.Text = Round (EDT_CANDIEZ.Text)
+ LBL_TDIEZ.Text= L_DIEZ.Tag * EDT_CANDIEZ.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text)
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+End Sub
+
+Sub B_SUMDIEZ_Click
+ If EDT_CANDIEZ.Text = "" Then
+ EDT_CANDIEZ.Text =0
+ LBL_TDIEZ.Text= L_DIEZ.Tag * EDT_CANDIEZ.Text
+ Else
+ EDT_CANDIEZ.Text = Round (EDT_CANDIEZ.Text + 1)
+ LBL_TDIEZ.Text= L_DIEZ.Tag * EDT_CANDIEZ.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text)
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+ End If
+End Sub
+
+Sub B_MENDIEZ_Click
+ If EDT_CANDIEZ.Text = "" Then
+ EDT_CANDIEZ.Text = 0
+ LBL_TDIEZ.Text= L_DIEZ.Tag * EDT_CANDIEZ.Text
+ Else IF EDT_CANDIEZ.Text > 0 Then
+ EDT_CANDIEZ.Text = Round(EDT_CANDIEZ.Text -1)
+ LBL_TDIEZ.Text= L_DIEZ.Tag * EDT_CANDIEZ.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text)
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+ End If
+End Sub
+
+'20
+Private Sub EDT_CANVEINTE_FocusChanged (HasFocus As Boolean)
+ If EDT_CANVEINTE.Text = "" Then EDT_CANVEINTE.Text = "0"
+ EDT_CANVEINTE.Text = Round(EDT_CANVEINTE.Text)
+ LBL_TVEINTE.Text= L_VEINTE.Tag * EDT_CANVEINTE.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text )
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+End Sub
+
+Sub B_MENVEINTE_Click
+ If EDT_CANVEINTE.Text = "" Then
+ EDT_CANVEINTE.Text = 0
+ LBL_TVEINTE.Text= L_VEINTE.Tag * EDT_CANVEINTE.Text
+ Else IF EDT_CANVEINTE.Text > 0 Then
+ EDT_CANVEINTE.Text = Round(EDT_CANVEINTE.Text -1)
+ LBL_TVEINTE.Text= L_VEINTE.Tag * EDT_CANVEINTE.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text )
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+ End If
+End Sub
+
+Sub B_SUMVEINTE_Click
+ If EDT_CANVEINTE.Text = "" Then
+ EDT_CANVEINTE.Text =0
+ LBL_TVEINTE.Text= L_VEINTE.Tag * EDT_CANVEINTE.Text
+ Else
+ EDT_CANVEINTE.Text = Round (EDT_CANVEINTE.Text + 1)
+ LBL_TVEINTE.Text= L_VEINTE.Tag * EDT_CANVEINTE.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text)
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+ End If
+End Sub
+
+''''''TOTALES
+Sub TOTALES_Click
+ If TOTALMONEDA.Text="" Or TOTALBILLETES.Text="" Then
+ TOTALMONEDA.Text=0
+ TOTALBILLETES.Text=0
+ B_SUM_TOTAL.Text="$"& (TOTALMONEDA.Text + TOTALBILLETES.Text)
+ Else
+ B_SUM_TOTAL.Text= "$"&(TOTALMONEDA.Text + TOTALBILLETES.Text)
+ End If
+End Sub
+
+Sub B_AGREGABILL_Click
+ Pnl_Billete.Visible=True
+ Pnl_Moneda.Visible=False
+ PNL_TOTALES.Visible=False
+ LBL_RETURN.Visible=True
+ LBL_REGRESA.Visible=True
+End Sub
+
+Sub B_AGREGAMONE_Click
+ Pnl_Billete.Visible=False
+ Pnl_Moneda.Visible=True
+ PNL_TOTALES.Visible=False
+ LBL_RETURN.Visible=True
+ LBL_REGRESA.Visible=True
+End Sub
+
+Sub LBL_RETURN_Click
+ Pnl_Billete.Visible=False
+ Pnl_Moneda.Visible=False
+ PNL_TOTALES.Visible=True
+ LBL_RETURN.Visible=False
+ LBL_REGRESA.Visible=False
+ ''' CALCULO FINAL
+ If TOTALMONEDA.Text="" Or TOTALBILLETES.Text="" Then
+ TOTALMONEDA.Text=0
+ TOTALBILLETES.Text=0
+ B_SUM_TOTAL.Text="$"& (TOTALMONEDA.Text + TOTALBILLETES.Text)
+ Else
+ B_SUM_TOTAL.Text="$"& (TOTALMONEDA.Text + TOTALBILLETES.Text)
+ End If
+End Sub
+
+Sub LBL_REGRESA_Click
+ Pnl_Billete.Visible=False
+ Pnl_Moneda.Visible=False
+ LBL_RETURN.Visible=False
+ LBL_REGRESA.Visible=False
+ PNL_TOTALES.Visible=True
+ LBL_REGRESA.Visible=True
+End Sub
+
+Sub B_Regresar_Click
+' StartActivity("SELECCION")
+ Subs.iniciaActividad("principal")
+' B4XPages.ShowPage("Principal")
+' Activity.Finish
+ PNL_TOTALES.Visible=False
+ Pnl_Billete.Visible=False
+ Pnl_Moneda.visible=False
+ PNL_TOTALES.Visible=False
+ LBL_RETURN.Visible=False
+ LBL_REGRESA.Visible=False
+ P_BOLETA.Visible=False
+' P_INF_GENERAL.Visible=True
+ LBL_REGRESA.Visible=False
+End Sub
\ No newline at end of file
diff --git a/B4A/C_CheckList.bas b/B4A/C_CheckList.bas
new file mode 100644
index 0000000..5fc7e73
--- /dev/null
+++ b/B4A/C_CheckList.bas
@@ -0,0 +1,939 @@
+B4A=true
+Group=Default Group
+ModulesStructureVersion=1
+Type=Class
+Version=11.5
+@EndOfDesignText@
+Sub Class_Globals
+ Private Root As B4XView 'ignore
+ Private xui As XUI 'ignore
+ '//Process Globals
+ Dim reqManager As DBRequestManager
+ Dim ruta As String
+ Dim c As Cursor
+ Dim C2 As Cursor
+ Private frontCamera As Boolean = False
+ Dim OK_CheckList As Int
+ '//Globals
+ Dim IME As IME
+ Private Edt_FH As EditText
+ Private Sp_MENU As Spinner
+ Dim LISTMENU As List
+ Private LB_CATEGORIA As Label
+ Private SCROLLPRINC As ScrollView
+ Private Pnl_CABINA As Panel
+ Dim sDate,sTime As String
+ ''''''''' PANELS CHECKS
+ Private camEx As CameraExClass
+ Private Rb_4_4 As RadioButton
+ Private Rb_3_4 As RadioButton
+ Private Rb_2_4 As RadioButton
+ Private Rb_1_4 As RadioButton
+ Private Lb_4 As Label
+ Private Lb_3 As Label
+ Private Lb_2 As Label
+ Private Lb_1 As Label
+ Private Et_KilometrajeIni As EditText
+ Private Cbox_Claxon As CheckBox
+ Private Cbox_Parabrisas As CheckBox
+ Private Cbox_Cinturon As CheckBox
+ Private Cbox_Espejos As CheckBox
+ Private Cbox_Licencia As CheckBox
+ Private Pnl_CabinaInfo As Panel
+ Private Pnl_MotorEncen As Panel
+ Private Pnl_Inspec As Panel
+ Private Pnl_CofreAbierto As Panel
+ Private Pnl_Carga As Panel
+ Private SP_MENUC As SD_Spinner
+ Private Im_1 As ImageView
+ Private Im2 As ImageView
+ Private Im3 As ImageView
+ Private Im4 As ImageView
+ Private Bt_Foto1 As Button
+ Private Bt_Foto2 As Button
+ Private Bt_Foto3 As Button
+ Private Bt_Foto4 As Button
+ Private Bt_GuardarCheck As Button
+ Private N_Ruta As String
+ Private Id_Almacen As String
+ Private Combustible As String
+ Private PLACAS As String
+ '' PANEL 2
+ Private Ch_OBJETOSINE As CheckBox
+ Private CH_OBJMPERV As CheckBox
+ Private Ch_ORHERRA As CheckBox
+ Private Ch_LIMPIO As CheckBox
+ Private Ch_UNILIMPIA As CheckBox
+ Private Ch_BASURA As CheckBox
+ Private Ch_RESPON As CheckBox
+ Private Ch_AUDITORIA As CheckBox
+ Private Ch_HABITUAL As CheckBox
+ '' PANEL 3
+ Private Ch_HERRAMIENTAS As CheckBox
+ Private Ch_CONOS As CheckBox
+ Private Ch_EDOCARROCE As CheckBox
+ Private Ch_FUN_LUCES As CheckBox
+ Private Ch_PLACAS_CIRCU As CheckBox
+ Private Ch_COND_LLANTAS As CheckBox
+ '' PANEL 4
+ Private Ch_ACEITEMOTOR As CheckBox
+ Private Ch_ACEITEDIREC As CheckBox
+ Private Ch_NVL_REFRIGE As CheckBox
+ Private Ch_NVL_LIQUIDBRI As CheckBox
+ Private Ch_COND_BANMOTOR As CheckBox
+ ''''' PANEL5
+ Private Ch_FUGASGRAL As CheckBox
+ Private Ch_FRENOS As CheckBox
+ Private Edt_COMENTARIO As AutoCompleteEditText
+ Private Pnl_Fotos As Panel
+ Private btnTakePicture As Button
+ Private b_guardar As Button
+ Private Pnl_foto As Panel
+ Dim camera1 As Camera
+ Private TOMO_FOTO1 As String
+ Private TOMO_FOTO2 As String
+ Private TOMO_FOTO3 As String
+ Private TOMO_FOTO4 As String
+ Private LBL_REGRESA As Label
+ Private Label5 As Label
+ Dim out As OutputStream
+ Private CUANTOS As String
+End Sub
+
+'You can add more parameters here.
+Public Sub Initialize As Object
+ Return Me
+End Sub
+
+'This event will be called once, before the page becomes visible.
+Private Sub B4XPage_Created (Root1 As B4XView)
+ Root = Root1
+ 'load the layout to Root
+ Root.LoadLayout("checklist")
+ SCROLLPRINC.Panel.LoadLayout("checks")
+ SCROLLPRINC.Panel.Height = Pnl_MotorEncen.Height
+ IME.Initialize("IME")
+ IME.AddHeightChangedEvent
+
+ OK_CheckList=0
+ Pnl_CabinaInfo.Visible=True
+ btnTakePicture.Enabled = True
+ camera1.Initialize(Pnl_foto, "Camera1")
+
+ LISTMENU.IsInitialized
+ LISTMENU.Initialize
+ LISTMENU.AddAll(Array As String ("Cabina con switch encendido", "Cabina y espacio de carga", "Inspección General Exterior", "Cofre abierto, motor apagado","Con motor encendido"))
+
+ SP_MENUC.AddAll(LISTMENU,"CheckList",Colors.White,Colors.Blue,Gravity.CENTER)
+ DateTime.DateFormat="dd/MM/yyyy"
+ Edt_FH.Text=DateTime.Date(DateTime.Now)
+ ruta = File.DirInternal
+End Sub
+
+'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
+
+Sub Camera1_Ready (Success As Boolean)
+ Log("Camara lista")
+ If Success Then
+ camera1.StartPreview
+ camera1.Initialize(Pnl_foto, "Camera1")
+ btnTakePicture.Enabled = True
+ Else
+ ToastMessageShow("No se puede abrir la camara.", True)
+ End If
+End Sub
+
+Sub B4XPage_Appear
+ reqManager.Initialize(Me, Starter.server)
+' If Subs.traeUltimaActividadBD <> "CHECKLIST_AUTO" Then Subs.iniciaActividad(Subs.traeUltimaActividadBD)
+ c=Starter.skmt.ExecQuery("SELECT COUNT(*) as CUANTOS FROM TMP_INSPECCION_AUTO_DIARIA")
+ c.Position = 0
+ CUANTOS = c.GetString("CUANTOS")
+ c.Close
+ If CUANTOS > 0 Then
+ If Et_KilometrajeIni.Text = "" Then
+ c=Starter.skmt.ExecQuery("select * from tmp_inspeccion_auto_diaria")
+ If c.RowCount > 0 Then
+ c.Position = 0
+ If c.GetString("TMP_AUTO_COMBUSTIBLE") = "4/4" Then Rb_4_4.Checked = True
+ If c.GetString("TMP_AUTO_COMBUSTIBLE") = "3/4" Then Rb_3_4.Checked = True
+ If c.GetString("TMP_AUTO_COMBUSTIBLE") = "2/4" Then Rb_2_4.Checked = True
+ If c.GetString("TMP_AUTO_COMBUSTIBLE") = "1/4" Then Rb_1_4.Checked = True
+ If c.GetString("TMP_AUTO_KILOMETRAJE") <> "" Then Et_KilometrajeIni.text = c.GetString("TMP_AUTO_KILOMETRAJE")
+ If c.GetString("TMP_AUTO_CLAXON ") = "1" Then Cbox_Claxon.Checked = True
+ If c.GetString("TMP_AUTO_PARABRISAS ") = "1" Then Cbox_Parabrisas.Checked = True
+ If c.GetString("TMP_AUTO_CINTURON ") = "1" Then Cbox_Cinturon.Checked = True
+ If c.GetString("TMP_AUTO_ESPEJOS ") = "1" Then Cbox_Espejos.Checked = True
+ If c.GetString("TMP_AUTO_LICENCIA ") = "1" Then Cbox_Licencia.Checked = True
+ If c.GetString("TMP_AUTO_LIB_OBJETOSINE ") = "1" Then Ch_OBJETOSINE.Checked = True
+ If c.GetString("TMP_AUTO_LIB_OBJETOTMPERVI ") = 1 Then CH_OBJMPERV.Checked = True
+ If c.GetString("TMP_AUTO_ORDEN_HERRA ") = "1" Then Ch_ORHERRA.Checked = True
+ If c.GetString("TMP_AUTO_UNILIMPIA ") = "1" Then Ch_UNILIMPIA.Checked = True
+ If c.GetString("TMP_AUTO_LIMPIO ") = "1" Then Ch_LIMPIO.Checked = True
+ If c.GetString("TMP_AUTO_BASURA ") = "1" Then Ch_BASURA.Checked = True
+ If c.GetString("TMP_AUTO_RESPONSABILIDAD ") ="1" Then Ch_RESPON.Checked = True
+ If c.GetString("TMP_AUTO_AUDITORIA ") = "1" Then Ch_AUDITORIA.Checked = True
+ If c.GetString("TMP_AUTO_HABITUAL ") = "1" Then Ch_HABITUAL.Checked = True
+ If c.GetString("TMP_AUTO_HERRAMIENTAS ") = "1" Then Ch_HERRAMIENTAS.Checked = True
+ If c.GetString("TMP_AUTO_CONOS ") = "1" Then Ch_CONOS.Checked = True
+ If c.GetString("TMP_AUTO_EDO_CARROCERIA ") = "1" Then Ch_EDOCARROCE.Checked = True
+ If c.GetString("TMP_AUTO_FUN_LUCES ") = "1" Then Ch_FUN_LUCES.Checked = True
+ If c.GetString("TMP_AUTO_PLACAS_CIRCU ") = "1" Then Ch_PLACAS_CIRCU.Checked = True
+ If c.GetString("TMP_AUTO_COND_LLANTAS ") = "1" Then Ch_COND_LLANTAS.Checked = True
+ If c.GetString("TMP_AUTO_ACEITEMOTOR ") = "1" Then Ch_ACEITEMOTOR.Checked = True
+ If c.GetString("TMP_AUTO_ACEITEDIREC ") = "1" Then Ch_ACEITEDIREC.Checked = True
+ If c.GetString("TMP_AUTO_NVL_REFRIGERANTE ") = "1" Then Ch_NVL_REFRIGE.Checked = True
+ If c.GetString("TMP_AUTO_NVL_LIQUIDBRISAS ") = "1" Then Ch_NVL_LIQUIDBRI.Checked = True
+ If c.GetString("TMP_AUTO_COND_BANMOTOR ") = "1" Then Ch_COND_BANMOTOR.Checked = True
+ If c.GetString("TMP_AUTO_FUGASGRAL ") = "1" Then Ch_FUGASGRAL.Checked = True
+ If c.GetString("TMP_AUTO_FRENOS ") = "1" Then Ch_FRENOS.Checked = True
+ If c.GetString("TMP_AUTO_COMENTARIOS ") <> "" Then Edt_COMENTARIO.text = c.GetString("TMP_AUTO_COMENTARIOS ")
+ End If
+ End If
+ Pnl_CabinaInfo.Visible=False
+ Pnl_Carga.Visible=False
+ Pnl_Inspec.Visible=True
+ Pnl_MotorEncen.Visible=True
+ Pnl_CofreAbierto.Visible=False
+ If File.Exists(File.DirInternal,"FOTO1.jpg") = True Then
+ Im_1.Bitmap = LoadBitmap(File.DirInternal, "FOTO1.jpg")
+ Else
+ If File.Exists(File.DirInternal,"FOTO1.jpg") = False Then
+ Im_1.Bitmap = LoadBitmap(File.DirAssets,"foto1.jpg")
+ End If
+ End If
+ If File.Exists(File.DirInternal,"FOTO2.jpg") = True Then
+ Im2.Bitmap = LoadBitmap(File.DirInternal, "FOTO2.jpg")
+ Else
+ If File.Exists(File.DirInternal,"FOTO2.jpg") = False Then
+ Im2.Bitmap = LoadBitmap(File.DirAssets,"foto2.jpg")
+ End If
+ End If
+ If File.Exists(File.DirInternal,"FOTO3.jpg") = True Then
+ Im3.Bitmap = LoadBitmap(File.DirInternal, "FOTO3.jpg")
+ Else
+ If File.Exists(File.DirInternal,"FOTO3.jpg") = False Then
+ Im3.Bitmap = LoadBitmap(File.DirAssets,"foto3.jpg")
+ End If
+ End If
+ If File.Exists(File.DirInternal,"FOTO4.jpg") = True Then
+ Im4.Bitmap = LoadBitmap(File.DirInternal, "FOTO4.jpg")
+ Else
+ If File.Exists(File.DirInternal,"FOTO4.jpg") = False Then
+ Im4.Bitmap = LoadBitmap(File.DirAssets,"foto4.jpg")
+ End If
+ End If
+ End If
+End Sub
+
+Sub Camera1_PictureTaken (Data() As Byte)
+ Log("foto tomada")
+ camera1.StartPreview
+ If Bt_Foto1.Tag="1" Then
+ Dim salida As OutputStream
+ salida = File.OpenOutput(File.DirInternal, "FOTO1.jpg", False)
+ salida.WriteBytes(Data, 0, Data.Length)
+ salida.Close
+ ToastMessageShow("FOTO GUARDADA "& "FOTO1.jpg", True)
+ Bt_Foto1.Tag="2"
+ End If
+ If Bt_Foto2.Tag="1" Then
+ Dim salida As OutputStream
+ salida = File.OpenOutput(File.DirInternal, "FOTO2.jpg", False)
+ salida.WriteBytes(Data, 0, Data.Length)
+ salida.Close
+ ToastMessageShow("FOTO GUARDADA "& "FOTO2.jpg", True)
+ Bt_Foto2.Tag="2"
+ End If
+ If Bt_Foto3.Tag="1" Then
+ Dim salida As OutputStream
+ salida = File.OpenOutput(File.DirInternal, "FOTO3.jpg", False)
+ salida.WriteBytes(Data, 0, Data.Length)
+ salida.Close
+ ToastMessageShow("FOTO GUARDADA "& "FOTO3.jpg", True)
+ Bt_Foto3.Tag="2"
+ End If
+ If Bt_Foto4.Tag="1" Then
+ Dim salida As OutputStream
+ salida = File.OpenOutput(File.DirInternal, "FOTO4.jpg", False)
+ salida.WriteBytes(Data, 0, Data.Length)
+ salida.Close
+ ToastMessageShow("FOTO GUARDADA "& "FOTO4.jpg", True)
+ Bt_Foto4.Tag="2"
+ End If
+End Sub
+
+Sub btnTakePicture_Click
+ btnTakePicture.Enabled = True
+ camera1.TakePicture
+End Sub
+
+Sub Nvl_Combustible_CheckedChange(Checked As Boolean)
+ If Rb_1_4.Checked Then
+ Lb_1.Visible=True
+ Lb_2.Visible=False
+ Lb_3.Visible=False
+ Lb_4.Visible=False
+ End If
+ If Rb_2_4.Checked Then
+ Lb_1.Visible=False
+ Lb_2.Visible=True
+ Lb_3.Visible=False
+ Lb_4.Visible=False
+ End If
+ If Rb_3_4.Checked Then
+ Lb_1.Visible=False
+ Lb_2.Visible=False
+ Lb_3.Visible=True
+ Lb_4.Visible=False
+ End If
+ If Rb_4_4.Checked Then
+ Lb_1.Visible=False
+ Lb_2.Visible=False
+ Lb_3.Visible=False
+ Lb_4.Visible=True
+ End If
+End Sub
+
+Sub SP_MENUC_ItemClick (Position As Int, Value As String)
+ LB_CATEGORIA.Text =LISTMENU.Get(Position)
+ If LB_CATEGORIA.Text = "Cabina con switch encendido" Then
+ Pnl_CabinaInfo.Visible=True
+ Pnl_Carga.Visible=False
+ Pnl_Inspec.Visible=False
+ Pnl_MotorEncen.Visible=False
+ Pnl_CofreAbierto.Visible=False
+ End If
+ If LB_CATEGORIA.Text = "Cabina y espacio de carga" Then
+ Pnl_CabinaInfo.Visible=False
+ Pnl_Carga.Visible=True
+ Pnl_Inspec.Visible=False
+ Pnl_MotorEncen.Visible=False
+ Pnl_CofreAbierto.Visible=False
+ End If
+ If LB_CATEGORIA.Text = "Inspección General Exterior" Then
+ Pnl_CabinaInfo.Visible=False
+ Pnl_Carga.Visible=False
+ Pnl_Inspec.Visible=True
+ Pnl_MotorEncen.Visible=False
+ Pnl_CofreAbierto.Visible=False
+ End If
+ If LB_CATEGORIA.Text = "Cofre abierto, motor apagado" Then
+ Pnl_CabinaInfo.Visible=False
+ Pnl_Carga.Visible=False
+ Pnl_Inspec.Visible=False
+ Pnl_MotorEncen.Visible=False
+ Pnl_CofreAbierto.Visible=True
+ If Pnl_CofreAbierto.Visible=True Then
+ Pnl_Fotos.visible=False
+ End If
+ End If
+ If LB_CATEGORIA.Text = "Con motor encendido" Then
+ Pnl_CabinaInfo.Visible=False
+ Pnl_Carga.Visible=False
+ Pnl_Inspec.Visible=True
+ Pnl_MotorEncen.Visible=True
+ Pnl_CofreAbierto.Visible=False
+ End If
+End Sub
+
+Sub Bt_GuardarCheck_Click
+ DateTime.DateFormat = "MM/dd/yyyy"
+ sDate=DateTime.Date(DateTime.Now)
+ sTime=DateTime.Time(DateTime.Now)
+ N_Ruta=0
+ c=Starter.skmt.ExecQuery("select CAT_CL_RUTA FROM kmt_info")
+ If c.RowCount > 0 Then
+ c.Position=0
+ N_Ruta= c.GetString("CAT_CL_RUTA")
+ End If
+ C2=Starter.skmt.ExecQuery("select ID_ALMACEN FROM CAT_ALMACEN")
+ C2.Position=0
+ Id_Almacen=C2.GetString("ID_ALMACEN")
+ ''''''''''''''''''''''''''''''''''''NIVELES DE GASOLINA CHECK''''''''''''''''''
+ If Rb_1_4.Checked Then
+ Combustible="1/4"
+ End If
+ If Rb_2_4.Checked Then
+ Combustible="2/4"
+ End If
+ If Rb_3_4.Checked Then
+ Combustible="3/4"
+ End If
+ If Rb_4_4.Checked Then
+ Combustible="4/4"
+ End If
+ ''''''''''''''''''''''''''''''''''''INDICADORES DE TABLERO''''''''''''''''''
+ If Cbox_Claxon.Checked=True Then
+ Cbox_Claxon.Tag="1"
+ Else
+ Cbox_Claxon.Tag="0"
+ End If
+ If Cbox_Cinturon.Checked=True Then
+ Cbox_Cinturon.Tag="1"
+ Else
+ Cbox_Cinturon.Tag="0"
+ End If
+ If Cbox_Parabrisas.Checked=True Then
+ Cbox_Parabrisas.Tag="1"
+ Else
+ Cbox_Parabrisas.Tag="0"
+ End If
+ If Cbox_Espejos.Checked=True Then
+ Cbox_Espejos.Tag="1"
+ Else
+ Cbox_Espejos.Tag="0"
+ End If
+ If Cbox_Licencia.Checked=True Then
+ Cbox_Licencia.Tag="1"
+ Else
+ Cbox_Licencia.Tag="0"
+ End If
+ '''''' SEGUNDO PANEL
+ If Ch_OBJETOSINE.Checked=True Then
+ Ch_OBJETOSINE.Tag="1"
+ Else
+ Ch_OBJETOSINE.Tag="0"
+ End If
+ If CH_OBJMPERV.Checked=True Then
+ CH_OBJMPERV.Tag="1"
+ Else
+ CH_OBJMPERV.Tag="0"
+ End If
+ If Ch_ORHERRA.Checked=True Then
+ Ch_ORHERRA.Tag="1"
+ Else
+ Ch_ORHERRA.Tag="0"
+ End If
+ If Ch_UNILIMPIA.Checked=True Then
+ Ch_UNILIMPIA.Tag="1"
+ Else
+ Ch_UNILIMPIA.Tag="0"
+ End If
+ If Ch_LIMPIO.Checked=True Then
+ Ch_LIMPIO.Tag="1"
+ Else
+ Ch_LIMPIO.Tag="0"
+ End If
+ If Ch_BASURA.Checked=True Then
+ Ch_BASURA.Tag="1"
+ Else
+ Ch_BASURA.Tag="0"
+ End If
+ If Ch_RESPON.Checked=True Then
+ Ch_RESPON.Tag="1"
+ Else
+ Ch_RESPON.Tag="0"
+ End If
+ If Ch_AUDITORIA.Checked=True Then
+ Ch_AUDITORIA.Tag="1"
+ Else
+ Ch_AUDITORIA.Tag="0"
+ End If
+ If Ch_HABITUAL.Checked=True Then
+ Ch_HABITUAL.Tag="1"
+ Else
+ Ch_HABITUAL.Tag="0"
+ End If
+ ''''' PANEL 3
+ If Ch_HERRAMIENTAS.Checked=True Then
+ Ch_HERRAMIENTAS.Tag="1"
+ Else
+ Ch_HERRAMIENTAS.Tag="0"
+ End If
+ If Ch_CONOS.Checked=True Then
+ Ch_CONOS.Tag="1"
+ Else
+ Ch_CONOS.Tag="0"
+ End If
+ If Ch_EDOCARROCE.Checked=True Then
+ Ch_EDOCARROCE.Tag="1"
+ Else
+ Ch_EDOCARROCE.Tag="0"
+ End If
+ If Ch_FUN_LUCES.Checked=True Then
+ Ch_FUN_LUCES.Tag="1"
+ Else
+ Ch_FUN_LUCES.Tag="0"
+ End If
+ If Ch_PLACAS_CIRCU.Checked=True Then
+ Ch_PLACAS_CIRCU.Tag="1"
+ Else
+ Ch_PLACAS_CIRCU.Tag="0"
+ End If
+ If Ch_COND_LLANTAS.Checked=True Then
+ Ch_COND_LLANTAS.Tag="1"
+ Else
+ Ch_COND_LLANTAS.Tag="0"
+ End If
+ '''' PANEL 4
+ If Ch_ACEITEMOTOR.Checked=True Then
+ Ch_ACEITEMOTOR.Tag="1"
+ Else
+ Ch_ACEITEMOTOR.Tag="0"
+ End If
+ If Ch_ACEITEDIREC.Checked=True Then
+ Ch_ACEITEDIREC.Tag="1"
+ Else
+ Ch_ACEITEDIREC.Tag="0"
+ End If
+ If Ch_NVL_REFRIGE.Checked=True Then
+ Ch_NVL_REFRIGE.Tag="1"
+ Else
+ Ch_NVL_REFRIGE.Tag="0"
+ End If
+ If Ch_NVL_LIQUIDBRI.Checked=True Then
+ Ch_NVL_LIQUIDBRI.Tag="1"
+ Else
+ Ch_NVL_LIQUIDBRI.Tag="0"
+ End If
+ If Ch_COND_BANMOTOR.Checked=True Then
+ Ch_COND_BANMOTOR.Tag="1"
+ Else
+ Ch_COND_BANMOTOR.Tag="0"
+ End If
+ ''''' PANEL 5
+ If Ch_FUGASGRAL.Checked=True Then
+ Ch_FUGASGRAL.Tag="1"
+ Else
+ Ch_FUGASGRAL.Tag="0"
+ End If
+ If Ch_FRENOS.Checked=True Then
+ Ch_FRENOS.Tag="1"
+ Else
+ Ch_FRENOS.Tag="0"
+ End If
+ c=Starter.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?",Array As String("PLACAS") )
+ c.Position=0
+ PLACAS = c.GetString("CUANTOS")
+ c.Close
+ If PLACAS > 0 Then
+ c=Starter.skmt.ExecQuery2("SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?",Array As String("PLACAS") )
+ c.Position=0
+ PLACAS = c.GetString("CAT_VA_VALOR")
+ c.Close
+ Else
+ PLACAS = "0000"
+ End If
+ '''''''''''''''''''''''''''''''''' FOTOS '''''''''''''''''''''''''''''''
+ Private fotosOk As Int = 0
+ If Not(File.Exists(File.DirInternal,"FOTO1.jpg")) Or _
+ Not(File.Exists(File.DirInternal,"FOTO2.jpg")) Or _
+ Not(File.Exists(File.DirInternal,"FOTO3.jpg")) Or _
+ Not(File.Exists(File.DirInternal,"FOTO4.jpg")) Then
+ Msgbox("Por favor tomar las 4 fotos.", "Atención") 'ignore
+ Pnl_CabinaInfo.Visible=False
+ Pnl_Carga.Visible=False
+ Pnl_Inspec.Visible=True
+ Pnl_MotorEncen.Visible=True
+ Pnl_CofreAbierto.Visible=False
+ Else
+ fotosOk = 1
+ End If
+ '''''''''''''''''''''' Kilometraje inicial '''''''''''''''''
+ Private kmsOk As Int = 0
+ If Et_KilometrajeIni.Text="" Then
+ Msgbox("Atención","Ingresa el Kilometraje Inicial") 'ignore
+ Pnl_CabinaInfo.Visible=True
+ Pnl_Carga.Visible=False
+ Pnl_Inspec.Visible=False
+ Pnl_MotorEncen.Visible=False
+ Pnl_CofreAbierto.Visible=False
+ Else
+ kmsOk = 1
+ End If
+
+ If kmsOk = 1 And fotosOk = 1 Then
+ CUANTOS = 0
+ c=Starter.skmt.ExecQuery("SELECT COUNT(*) as CUANTOS FROM TMP_INSPECCION_AUTO_DIARIA")
+ If c.RowCount > 0 Then
+ c.Position = 0
+ CUANTOS = c.GetString("CUANTOS")
+ Log("Info checklist: " & CUANTOS)
+ End If
+ c.Close
+ If CUANTOS = 0 Then
+ Starter.skmt.ExecNonQuery("delete from TMP_INSPECCION_AUTO_DIARIA") 'Mod por CHV - 211125
+ Starter.skmt.ExecNonQuery2("INSERT INTO TMP_INSPECCION_AUTO_DIARIA ( " & Chr(34) & "TMP_AUTO_RUTA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_PLACA" & Chr(34) & "," & Chr(34) & "TMP_AUTO_CEDIS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_IDALMACEN" & Chr(34) & "," & Chr(34) & "TMP_AUTO_FECHA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_KILOMETRAJE" & Chr(34) & "," & Chr(34) & "TMP_AUTO_COMBUSTIBLE" & Chr(34) & "," & Chr(34) & "TMP_AUTO_TABLERO " & Chr(34) & "," & Chr(34) & "TMP_AUTO_CLAXON " & Chr(34) & "," & Chr(34) & "TMP_AUTO_PARABRISAS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_CINTURON " & Chr(34) & "," & Chr(34) & "TMP_AUTO_ESPEJOS " & Chr(34) & " ," & Chr(34) & "TMP_AUTO_LICENCIA " & Chr(34) & " ," & Chr(34) & "TMP_AUTO_LIB_OBJETOSINE " & Chr(34) & " ," & Chr(34) & "TMP_AUTO_LIB_OBJETOTMPERVI " & Chr(34) & "," & Chr(34) & "TMP_AUTO_ORDEN_HERRA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_UNILIMPIA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_LIMPIO " & Chr(34) & "," & Chr(34) & "TMP_AUTO_BASURA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_RESPONSABILIDAD " & Chr(34) & "," & Chr(34) & "TMP_AUTO_AUDITORIA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_HABITUAL " & Chr(34) & "," & Chr(34) & "TMP_AUTO_HERRAMIENTAS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_CONOS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_EDO_CARROCERIA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_FUN_LUCES " & Chr(34) & "," & Chr(34) & "TMP_AUTO_PLACAS_CIRCU " & Chr(34) & "," & Chr(34) & "TMP_AUTO_COND_LLANTAS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_ACEITEMOTOR " & Chr(34) & "," & Chr(34) & "TMP_AUTO_ACEITEDIREC " & Chr(34) & "," & Chr(34) & "TMP_AUTO_NVL_REFRIGERANTE " & Chr(34) & "," & Chr(34) & "TMP_AUTO_NVL_LIQUIDBRISAS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_COND_BANMOTOR " & Chr(34) & "," & Chr(34) & "TMP_AUTO_FUGASGRAL " & Chr(34) & "," & Chr(34) & "TMP_AUTO_FRENOS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_COMENTARIOS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_FOTO1" & Chr(34) & "," & Chr(34) & "TMP_AUTO_FOTO2" & Chr(34) & "," & Chr(34) & "TMP_AUTO_FOTO3" & Chr(34) & "," & Chr(34) & "TMP_AUTO_FOTO4" & Chr(34) & " ) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (N_Ruta,PLACAS,Null,Id_Almacen,sDate,Et_KilometrajeIni.Text,Combustible,1,Cbox_Claxon.Tag,Cbox_Parabrisas.Tag,Cbox_Cinturon.Tag,Cbox_Espejos.Tag,Cbox_Licencia.Tag,Ch_OBJETOSINE.Tag,CH_OBJMPERV.Tag,Ch_ORHERRA.Tag,Ch_UNILIMPIA.Tag,Ch_LIMPIO.Tag,Ch_BASURA.Tag,Ch_RESPON.Tag,Ch_AUDITORIA.Tag,Ch_HABITUAL.Tag,Ch_HERRAMIENTAS.Tag,Ch_CONOS.Tag,Ch_EDOCARROCE.Tag,Ch_FUN_LUCES.Tag,Ch_PLACAS_CIRCU.Tag,Ch_COND_LLANTAS.Tag,Ch_ACEITEMOTOR.Tag,Ch_ACEITEDIREC.Tag,Ch_NVL_REFRIGE.Tag,Ch_NVL_LIQUIDBRI.Tag,Ch_COND_BANMOTOR.Tag,Ch_FUGASGRAL.Tag,Ch_FRENOS.Tag,Edt_COMENTARIO.TeXT))
+ Log("Guardamos Kilometraje")
+ Else
+ Starter.skmt.ExecNonQuery("delete from TMP_INSPECCION_AUTO_DIARIA") 'Mod por CHV - 211125
+ Starter.skmt.ExecNonQuery2("INSERT INTO TMP_INSPECCION_AUTO_DIARIA ( " & Chr(34) & "TMP_AUTO_RUTA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_PLACA" & Chr(34) & "," & Chr(34) & "TMP_AUTO_CEDIS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_IDALMACEN" & Chr(34) & "," & Chr(34) & "TMP_AUTO_FECHA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_KILOMETRAJE" & Chr(34) & "," & Chr(34) & "TMP_AUTO_COMBUSTIBLE" & Chr(34) & "," & Chr(34) & "TMP_AUTO_TABLERO " & Chr(34) & "," & Chr(34) & "TMP_AUTO_CLAXON " & Chr(34) & "," & Chr(34) & "TMP_AUTO_PARABRISAS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_CINTURON " & Chr(34) & "," & Chr(34) & "TMP_AUTO_ESPEJOS " & Chr(34) & " ," & Chr(34) & "TMP_AUTO_LICENCIA " & Chr(34) & " ," & Chr(34) & "TMP_AUTO_LIB_OBJETOSINE " & Chr(34) & " ," & Chr(34) & "TMP_AUTO_LIB_OBJETOTMPERVI " & Chr(34) & "," & Chr(34) & "TMP_AUTO_ORDEN_HERRA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_UNILIMPIA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_LIMPIO " & Chr(34) & "," & Chr(34) & "TMP_AUTO_BASURA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_RESPONSABILIDAD " & Chr(34) & "," & Chr(34) & "TMP_AUTO_AUDITORIA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_HABITUAL " & Chr(34) & "," & Chr(34) & "TMP_AUTO_HERRAMIENTAS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_CONOS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_EDO_CARROCERIA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_FUN_LUCES " & Chr(34) & "," & Chr(34) & "TMP_AUTO_PLACAS_CIRCU " & Chr(34) & "," & Chr(34) & "TMP_AUTO_COND_LLANTAS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_ACEITEMOTOR " & Chr(34) & "," & Chr(34) & "TMP_AUTO_ACEITEDIREC " & Chr(34) & "," & Chr(34) & "TMP_AUTO_NVL_REFRIGERANTE " & Chr(34) & "," & Chr(34) & "TMP_AUTO_NVL_LIQUIDBRISAS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_COND_BANMOTOR " & Chr(34) & "," & Chr(34) & "TMP_AUTO_FUGASGRAL " & Chr(34) & "," & Chr(34) & "TMP_AUTO_FRENOS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_COMENTARIOS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_FOTO1" & Chr(34) & "," & Chr(34) & "TMP_AUTO_FOTO2" & Chr(34) & "," & Chr(34) & "TMP_AUTO_FOTO3" & Chr(34) & "," & Chr(34) & "TMP_AUTO_FOTO4" & Chr(34) & " ) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (N_Ruta,PLACAS,Null,Id_Almacen,sDate,Et_KilometrajeIni.Text,Combustible,1,Cbox_Claxon.Tag,Cbox_Parabrisas.Tag,Cbox_Cinturon.Tag,Cbox_Espejos.Tag,Cbox_Licencia.Tag,Ch_OBJETOSINE.Tag,CH_OBJMPERV.Tag,Ch_ORHERRA.Tag,Ch_UNILIMPIA.Tag,Ch_LIMPIO.Tag,Ch_BASURA.Tag,Ch_RESPON.Tag,Ch_AUDITORIA.Tag,Ch_HABITUAL.Tag,Ch_HERRAMIENTAS.Tag,Ch_CONOS.Tag,Ch_EDOCARROCE.Tag,Ch_FUN_LUCES.Tag,Ch_PLACAS_CIRCU.Tag,Ch_COND_LLANTAS.Tag,Ch_ACEITEMOTOR.Tag,Ch_ACEITEDIREC.Tag,Ch_NVL_REFRIGE.Tag,Ch_NVL_LIQUIDBRI.Tag,Ch_COND_BANMOTOR.Tag,Ch_FUGASGRAL.Tag,Ch_FRENOS.Tag,Edt_COMENTARIO.TeXT))
+ Log("Guardamos Kilometraje")
+ End If
+ OK_CheckList = 1
+ Msgbox("DATOS GUARDADOS CON EXITO ","") 'ignore
+ mandaCheckList
+ B4XPages.ShowPage("Principal")
+ End If
+End Sub
+
+Sub mandaCheckList
+ ProgressDialogShow("Enviando checklist al servidor")
+ Log("Enviando CheckList")
+ Private contador_env As Int = 0
+ Private foto1() As Byte
+ Private foto2() As Byte
+ Private foto3() As Byte
+ Private foto4() As Byte
+ If File.Exists(File.DirInternal,"FOTO1.jpg") And File.Exists(File.DirInternal,"FOTO2.jpg") And _
+ File.Exists(File.DirInternal,"FOTO3.jpg") And File.Exists(File.DirInternal,"FOTO4.jpg") Then
+ foto1 = Bit.InputStreamToBytes(File.OpenInput(File.DirInternal,"FOTO1.jpg"))
+ foto2 = Bit.InputStreamToBytes(File.OpenInput(File.DirInternal,"FOTO2.jpg"))
+ foto3 = Bit.InputStreamToBytes(File.OpenInput(File.DirInternal,"FOTO3.jpg"))
+ foto4 = Bit.InputStreamToBytes(File.OpenInput(File.DirInternal,"FOTO4.jpg"))
+ Else
+ ToastMessageShow("FOTOS INCOMPLETAS!!", True)
+ End If
+ Private cl As Cursor=Starter.skmt.ExecQuery("SELECT " & Chr(34) & "TMP_AUTO_RUTA " & Chr(34) & " as TMP_AUTO_RUTA," & Chr(34) & "TMP_AUTO_PLACA" & Chr(34) & " as TMP_AUTO_PLACA," & Chr(34) & "TMP_AUTO_CEDIS " & Chr(34) & " as TMP_AUTO_CEDIS," & Chr(34) & "TMP_AUTO_IDALMACEN" & Chr(34) & " as TMP_AUTO_IDALMACEN," & Chr(34) & "TMP_AUTO_FECHA " & Chr(34) & " as TMP_AUTO_FECHA," & Chr(34) & "TMP_AUTO_KILOMETRAJE" & Chr(34) & " as TMP_AUTO_KILOMETRAJE," & Chr(34) & "TMP_AUTO_COMBUSTIBLE" & Chr(34) & " as TMP_AUTO_COMBUSTIBLE," & Chr(34) & "TMP_AUTO_TABLERO " & Chr(34) & " as TMP_AUTO_TABLERO," & Chr(34) & "TMP_AUTO_CLAXON " & Chr(34) & " as TMP_AUTO_CLAXON," & Chr(34) & "TMP_AUTO_PARABRISAS " & Chr(34) & " as TMP_AUTO_PARABRISAS," & Chr(34) & "TMP_AUTO_CINTURON " & Chr(34) & " as TMP_AUTO_CINTURON," & Chr(34) & "TMP_AUTO_ESPEJOS " & Chr(34) & " as TMP_AUTO_ESPEJOS," & Chr(34) & "TMP_AUTO_LICENCIA " & Chr(34) & " as TMP_AUTO_LICENCIA," & Chr(34) & "TMP_AUTO_LIB_OBJETOSINE " & Chr(34) & " as TMP_AUTO_LIB_OBJETOSINE," & Chr(34) & "TMP_AUTO_LIB_OBJETOTMPERVI " & Chr(34) & " as TMP_AUTO_LIB_OBJETOTMPERVI," & Chr(34) & "TMP_AUTO_ORDEN_HERRA " & Chr(34) & " as TMP_AUTO_ORDEN_HERRA," & Chr(34) & "TMP_AUTO_UNILIMPIA " & Chr(34) & " as TMP_AUTO_UNILIMPIA," & Chr(34) & "TMP_AUTO_LIMPIO " & Chr(34) & " as TMP_AUTO_LIMPIO," & Chr(34) & "TMP_AUTO_BASURA " & Chr(34) & " as TMP_AUTO_BASURA," & Chr(34) & "TMP_AUTO_RESPONSABILIDAD " & Chr(34) & " as TMP_AUTO_RESPONSABILIDAD," & Chr(34) & "TMP_AUTO_AUDITORIA " & Chr(34) & " as TMP_AUTO_AUDITORIA," & Chr(34) & "TMP_AUTO_HABITUAL " & Chr(34) & " as TMP_AUTO_HABITUAL," & Chr(34) & "TMP_AUTO_HERRAMIENTAS " & Chr(34) & " as TMP_AUTO_HERRAMIENTAS," & Chr(34) & "TMP_AUTO_CONOS " & Chr(34) & " as TMP_AUTO_CONOS," & Chr(34) & "TMP_AUTO_EDO_CARROCERIA " & Chr(34) & " as TMP_AUTO_EDO_CARROCERIA," & Chr(34) & "TMP_AUTO_FUN_LUCES " & Chr(34) & " as TMP_AUTO_FUN_LUCES," & Chr(34) & "TMP_AUTO_PLACAS_CIRCU " & Chr(34) & " as TMP_AUTO_PLACAS_CIRCU," & Chr(34) & "TMP_AUTO_COND_LLANTAS " & Chr(34) & " as TMP_AUTO_COND_LLANTAS," & Chr(34) & "TMP_AUTO_ACEITEMOTOR " & Chr(34) & " as TMP_AUTO_ACEITEMOTOR," & Chr(34) & "TMP_AUTO_ACEITEDIREC " & Chr(34) & " as TMP_AUTO_ACEITEDIREC," & Chr(34) & "TMP_AUTO_NVL_REFRIGERANTE " & Chr(34) & " as TMP_AUTO_NVL_REFRIGERANTE," & Chr(34) & "TMP_AUTO_NVL_LIQUIDBRISAS " & Chr(34) & " as TMP_AUTO_NVL_LIQUIDBRISAS," & Chr(34) & "TMP_AUTO_COND_BANMOTOR " & Chr(34) & " as TMP_AUTO_COND_BANMOTOR," & Chr(34) & "TMP_AUTO_FUGASGRAL " & Chr(34) & " as TMP_AUTO_FUGASGRAL," & Chr(34) & "TMP_AUTO_FRENOS " & Chr(34) & " as TMP_AUTO_FRENOS," & Chr(34) & "TMP_AUTO_COMENTARIOS " & Chr(34) & " as TMP_AUTO_COMENTARIOS FROM TMP_INSPECCION_AUTO_DIARIA")
+ If cl.RowCount>0 Then
+ For i=0 To cl.RowCount -1
+ cl.Position=i
+ If File.Exists(File.DirInternal,"FOTO1.jpg") And File.Exists(File.DirInternal,"FOTO2.jpg") And _
+ File.Exists(File.DirInternal,"FOTO3.jpg") And File.Exists(File.DirInternal,"FOTO4.jpg") Then
+ foto1 = Bit.InputStreamToBytes(File.OpenInput(File.DirInternal,"FOTO1.jpg"))
+ foto2 = Bit.InputStreamToBytes(File.OpenInput(File.DirInternal,"FOTO2.jpg"))
+ foto3 = Bit.InputStreamToBytes(File.OpenInput(File.DirInternal,"FOTO3.jpg"))
+ foto4 = Bit.InputStreamToBytes(File.OpenInput(File.DirInternal,"FOTO4.jpg"))
+ Else
+ ToastMessageShow("FOTOS INCOMPLETAS!!", True)
+ End If
+ Dim cmd As DBCommand
+ cmd.Initialize
+ cmd.Name = "INSERT_TMP_INSPECCION_AUTO_DIARIA"
+ cmd.Parameters = Array As Object(cl.GetString("TMP_AUTO_RUTA"),cl.GetString("TMP_AUTO_PLACA"),cl.GetString("TMP_AUTO_CEDIS"),cl.GetString("TMP_AUTO_IDALMACEN"),cl.GetString("TMP_AUTO_FECHA"),cl.GetString("TMP_AUTO_KILOMETRAJE"),cl.GetString("TMP_AUTO_COMBUSTIBLE"),cl.GetString("TMP_AUTO_TABLERO"),cl.GetString("TMP_AUTO_CLAXON"),cl.GetString("TMP_AUTO_PARABRISAS"),cl.GetString("TMP_AUTO_CINTURON"),cl.GetString("TMP_AUTO_ESPEJOS"),cl.GetString("TMP_AUTO_LICENCIA"),cl.GetString("TMP_AUTO_LIB_OBJETOSINE"),cl.GetString("TMP_AUTO_LIB_OBJETOTMPERVI"),cl.GetString("TMP_AUTO_ORDEN_HERRA"),cl.GetString("TMP_AUTO_UNILIMPIA"),cl.GetString("TMP_AUTO_LIMPIO"),cl.GetString("TMP_AUTO_BASURA"),cl.GetString("TMP_AUTO_RESPONSABILIDAD"),cl.GetString("TMP_AUTO_AUDITORIA"),cl.GetString("TMP_AUTO_HABITUAL"),cl.GetString("TMP_AUTO_HERRAMIENTAS"),cl.GetString("TMP_AUTO_CONOS"),cl.GetString("TMP_AUTO_EDO_CARROCERIA"),cl.GetString("TMP_AUTO_FUN_LUCES"),cl.GetString("TMP_AUTO_PLACAS_CIRCU"),cl.GetString("TMP_AUTO_COND_LLANTAS"),cl.GetString("TMP_AUTO_ACEITEMOTOR"),cl.GetString("TMP_AUTO_ACEITEDIREC"),cl.GetString("TMP_AUTO_NVL_REFRIGERANTE"),cl.GetString("TMP_AUTO_NVL_LIQUIDBRISAS"),cl.GetString("TMP_AUTO_COND_BANMOTOR"),cl.GetString("TMP_AUTO_FUGASGRAL"),cl.GetString("TMP_AUTO_FRENOS"),cl.GetString("TMP_AUTO_COMENTARIOS"), foto1, foto2, foto3, foto4)
+ Log(cl.GetString("TMP_AUTO_RUTA")& " | " & cl.GetString("TMP_AUTO_PLACA"))
+ reqManager.ExecuteCommand(cmd , "insert_checklist")
+ contador_env = contador_env + 1
+ Next
+ cl.Close
+ End If
+ Log("Terminamos CheckList")
+ Sleep(1000)
+ ProgressDialogHide
+ Msgbox2Async("El checklist ha sido enviado al servidor","AVISO", "Aceptar","","",Null, True)
+End Sub
+
+
+Sub JobDone(Job As HttpJob)
+ If Job.Success = False Then
+' ToastMessageShow("Error: " & Job.ErrorMessage, True)
+ Else
+ 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 = "updateKell_UTR" Then 'query tag
+ For Each records() As Object In result.Rows
+ For Each k As String In result.Columns.Keys
+' Log("Ubicacion en tiempo real: " & k & ": " & records(result.Columns.Get(k)))
+ Next
+ Next
+ End If
+ End If
+ End If
+ Job.Release
+End Sub
+
+Sub GUARDA_TEMPORAL
+ DateTime.DateFormat = "MM/dd/yyyy"
+ sDate=DateTime.Date(DateTime.Now)
+ sTime=DateTime.Time(DateTime.Now)
+ c=Starter.skmt.ExecQuery("select CAT_CL_RUTA FROM kmt_info")
+ c.Position=0
+ N_Ruta= c.GetString("CAT_CL_RUTA")
+ C2=Starter.skmt.ExecQuery("select ID_ALMACEN FROM CAT_ALMACEN")
+ C2.Position=0
+ Id_Almacen=C2.GetString("ID_ALMACEN")
+ ''''''''''''''''''''''''''''''''''''NIVELES DE GASOLINA CHECK''''''''''''''''''
+ If Rb_1_4.Checked Then
+ Combustible="1/4"
+ End If
+ If Rb_2_4.Checked Then
+ Combustible="2/4"
+ End If
+ If Rb_3_4.Checked Then
+ Combustible="3/4"
+ End If
+ If Rb_4_4.Checked Then
+ Combustible="4/4"
+ End If
+ ''''''''''''''''''''''''''''''''''''INDICADORES DE TABLERO''''''''''''''''''
+ If Cbox_Claxon.Checked=True Then
+ Cbox_Claxon.Tag="1"
+ Else
+ Cbox_Claxon.Tag="0"
+ End If
+
+ If Cbox_Cinturon.Checked=True Then
+ Cbox_Cinturon.Tag="1"
+ Else
+ Cbox_Cinturon.Tag="0"
+ End If
+
+ If Cbox_Parabrisas.Checked=True Then
+ Cbox_Parabrisas.Tag="1"
+ Else
+ Cbox_Parabrisas.Tag="0"
+ End If
+
+ If Cbox_Espejos.Checked=True Then
+ Cbox_Espejos.Tag="1"
+ Else
+ Cbox_Espejos.Tag="0"
+ End If
+
+ If Cbox_Licencia.Checked=True Then
+ Cbox_Licencia.Tag="1"
+ Else
+ Cbox_Licencia.Tag="0"
+ End If
+ '''''' SEGUNDO PANEL
+ If Ch_OBJETOSINE.Checked=True Then
+ Ch_OBJETOSINE.Tag="1"
+ Else
+ Ch_OBJETOSINE.Tag="0"
+ End If
+
+ If CH_OBJMPERV.Checked=True Then
+ CH_OBJMPERV.Tag="1"
+ Else
+ CH_OBJMPERV.Tag="0"
+ End If
+
+ If Ch_ORHERRA.Checked=True Then
+ Ch_ORHERRA.Tag="1"
+ Else
+ Ch_ORHERRA.Tag="0"
+ End If
+
+ If Ch_UNILIMPIA.Checked=True Then
+ Ch_UNILIMPIA.Tag="1"
+ Else
+ Ch_UNILIMPIA.Tag="0"
+ End If
+
+ If Ch_LIMPIO.Checked=True Then
+ Ch_LIMPIO.Tag="1"
+ Else
+ Ch_LIMPIO.Tag="0"
+ End If
+
+ If Ch_BASURA.Checked=True Then
+ Ch_BASURA.Tag="1"
+ Else
+ Ch_BASURA.Tag="0"
+ End If
+
+ If Ch_RESPON.Checked=True Then
+ Ch_RESPON.Tag="1"
+ Else
+ Ch_RESPON.Tag="0"
+ End If
+
+ If Ch_AUDITORIA.Checked=True Then
+ Ch_AUDITORIA.Tag="1"
+ Else
+ Ch_AUDITORIA.Tag="0"
+ End If
+
+ If Ch_HABITUAL.Checked=True Then
+ Ch_HABITUAL.Tag="1"
+ Else
+ Ch_HABITUAL.Tag="0"
+ End If
+ ''''' PANEL 3
+ If Ch_HERRAMIENTAS.Checked=True Then
+ Ch_HERRAMIENTAS.Tag="1"
+ Else
+ Ch_HERRAMIENTAS.Tag="0"
+ End If
+ If Ch_CONOS.Checked=True Then
+ Ch_CONOS.Tag="1"
+ Else
+ Ch_CONOS.Tag="0"
+ End If
+
+ If Ch_EDOCARROCE.Checked=True Then
+ Ch_EDOCARROCE.Tag="1"
+ Else
+ Ch_EDOCARROCE.Tag="0"
+ End If
+
+ If Ch_FUN_LUCES.Checked=True Then
+ Ch_FUN_LUCES.Tag="1"
+ Else
+ Ch_FUN_LUCES.Tag="0"
+ End If
+
+ If Ch_PLACAS_CIRCU.Checked=True Then
+ Ch_PLACAS_CIRCU.Tag="1"
+ Else
+ Ch_PLACAS_CIRCU.Tag="0"
+ End If
+
+ If Ch_COND_LLANTAS.Checked=True Then
+ Ch_COND_LLANTAS.Tag="1"
+ Else
+ Ch_COND_LLANTAS.Tag="0"
+ End If
+
+ '''' PANEL 4
+ If Ch_ACEITEMOTOR.Checked=True Then
+ Ch_ACEITEMOTOR.Tag="1"
+ Else
+ Ch_ACEITEMOTOR.Tag="0"
+ End If
+
+ If Ch_ACEITEDIREC.Checked=True Then
+ Ch_ACEITEDIREC.Tag="1"
+ Else
+ Ch_ACEITEDIREC.Tag="0"
+ End If
+
+ If Ch_NVL_REFRIGE.Checked=True Then
+ Ch_NVL_REFRIGE.Tag="1"
+ Else
+ Ch_NVL_REFRIGE.Tag="0"
+ End If
+
+ If Ch_NVL_LIQUIDBRI.Checked=True Then
+ Ch_NVL_LIQUIDBRI.Tag="1"
+ Else
+ Ch_NVL_LIQUIDBRI.Tag="0"
+ End If
+
+ If Ch_COND_BANMOTOR.Checked=True Then
+ Ch_COND_BANMOTOR.Tag="1"
+ Else
+ Ch_COND_BANMOTOR.Tag="0"
+ End If
+ ''''' PANEL 5
+ If Ch_FUGASGRAL.Checked=True Then
+ Ch_FUGASGRAL.Tag="1"
+ Else
+ Ch_FUGASGRAL.Tag="0"
+ End If
+
+ If Ch_FRENOS.Checked=True Then
+ Ch_FRENOS.Tag="1"
+ Else
+ Ch_FRENOS.Tag="0"
+ End If
+
+ c=Starter.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?",Array As String("PLACAS") )
+ c.Position=0
+ PLACAS = c.GetString("CUANTOS")
+ c.Close
+
+ If PLACAS > 0 Then
+ c=Starter.skmt.ExecQuery2("SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?",Array As String("PLACAS") )
+ c.Position=0
+ PLACAS = c.GetString("CAT_VA_VALOR")
+ c.Close
+ Else
+ PLACAS = "0000"
+ End If
+ Starter.skmt.ExecNonQuery("delete from TMP_INSPECCION_AUTO_DIARIA") 'Mod por CHV - 211125
+ Starter.skmt.ExecNonQuery2("INSERT INTO TMP_INSPECCION_AUTO_DIARIA( " & Chr(34) & "TMP_AUTO_RUTA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_PLACA" & Chr(34) & "," & Chr(34) & "TMP_AUTO_CEDIS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_IDALMACEN" & Chr(34) & "," & Chr(34) & "TMP_AUTO_FECHA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_KILOMETRAJE" & Chr(34) & "," & Chr(34) & "TMP_AUTO_COMBUSTIBLE" & Chr(34) & "," & Chr(34) & "TMP_AUTO_TABLERO " & Chr(34) & "," & Chr(34) & "TMP_AUTO_CLAXON " & Chr(34) & "," & Chr(34) & "TMP_AUTO_PARABRISAS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_CINTURON " & Chr(34) & "," & Chr(34) & "TMP_AUTO_ESPEJOS " & Chr(34) & " ," & Chr(34) & "TMP_AUTO_LICENCIA " & Chr(34) & " ," & Chr(34) & "TMP_AUTO_LIB_OBJETOSINE " & Chr(34) & " ," & Chr(34) & "TMP_AUTO_LIB_OBJETOTMPERVI " & Chr(34) & "," & Chr(34) & "TMP_AUTO_ORDEN_HERRA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_UNILIMPIA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_LIMPIO " & Chr(34) & "," & Chr(34) & "TMP_AUTO_BASURA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_RESPONSABILIDAD " & Chr(34) & "," & Chr(34) & "TMP_AUTO_AUDITORIA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_HABITUAL " & Chr(34) & "," & Chr(34) & "TMP_AUTO_HERRAMIENTAS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_CONOS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_EDO_CARROCERIA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_FUN_LUCES " & Chr(34) & "," & Chr(34) & "TMP_AUTO_PLACAS_CIRCU " & Chr(34) & "," & Chr(34) & "TMP_AUTO_COND_LLANTAS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_ACEITEMOTOR " & Chr(34) & "," & Chr(34) & "TMP_AUTO_ACEITEDIREC " & Chr(34) & "," & Chr(34) & "TMP_AUTO_NVL_REFRIGERANTE " & Chr(34) & "," & Chr(34) & "TMP_AUTO_NVL_LIQUIDBRISAS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_COND_BANMOTOR " & Chr(34) & "," & Chr(34) & "TMP_AUTO_FUGASGRAL " & Chr(34) & "," & Chr(34) & "TMP_AUTO_FRENOS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_COMENTARIOS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_FOTO1" & Chr(34) & "," & Chr(34) & "TMP_AUTO_FOTO2" & Chr(34) & "," & Chr(34) & "TMP_AUTO_FOTO3" & Chr(34) & "," & Chr(34) & "TMP_AUTO_FOTO4" & Chr(34) & " ) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (N_Ruta,PLACAS,Null,Id_Almacen,sDate,Et_KilometrajeIni.Text,Combustible,1,Cbox_Claxon.Tag,Cbox_Parabrisas.Tag,Cbox_Cinturon.Tag,Cbox_Espejos.Tag,Cbox_Licencia.Tag,Ch_OBJETOSINE.Tag,CH_OBJMPERV.Tag,Ch_ORHERRA.Tag,Ch_UNILIMPIA.Tag,Ch_LIMPIO.Tag,Ch_BASURA.Tag,Ch_RESPON.Tag,Ch_AUDITORIA.Tag,Ch_HABITUAL.Tag,Ch_HERRAMIENTAS.Tag,Ch_CONOS.Tag,Ch_EDOCARROCE.Tag,Ch_FUN_LUCES.Tag,Ch_PLACAS_CIRCU.Tag,Ch_COND_LLANTAS.Tag,Ch_ACEITEMOTOR.Tag,Ch_ACEITEDIREC.Tag,Ch_NVL_REFRIGE.Tag,Ch_NVL_LIQUIDBRI.Tag,Ch_COND_BANMOTOR.Tag,Ch_FUGASGRAL.Tag,Ch_FRENOS.Tag,Edt_COMENTARIO.TeXT))
+End Sub
+
+Sub b_guardar_Click
+ If Bt_Foto1.Tag="2" Then
+ Im_1.Bitmap = LoadBitmap(File.DirInternal, "FOTO1.jpg")
+ Pnl_Fotos.Visible=False
+ Bt_Foto1.Visible=True
+ Bt_Foto2.Visible=True
+ Bt_Foto3.Visible=True
+ Bt_Foto4.Visible=True
+ Pnl_Fotos.Visible=False
+ Bt_GuardarCheck.Visible=True
+ End If
+
+ If Bt_Foto2.Tag="2" Then
+ Im2.Bitmap = LoadBitmap(File.DirInternal, "FOTO2.jpg")
+ Pnl_Fotos.Visible=False
+ Bt_Foto1.Visible=True
+ Bt_Foto2.Visible=True
+ Bt_Foto3.Visible=True
+ Bt_Foto4.Visible=True
+ Pnl_Fotos.Visible=False
+ Bt_GuardarCheck.Visible=True
+ End If
+ If Bt_Foto3.Tag="2" Then
+ Im3.Bitmap = LoadBitmap(File.DirInternal, "FOTO3.jpg")
+ Pnl_Fotos.Visible=False
+ Bt_Foto1.Visible=True
+ Bt_Foto2.Visible=True
+ Bt_Foto3.Visible=True
+ Bt_Foto4.Visible=True
+ Pnl_Fotos.Visible=False
+ Bt_GuardarCheck.Visible=True
+ End If
+
+ If Bt_Foto4.Tag="2" Then
+ Im4.Bitmap = LoadBitmap(File.DirInternal, "FOTO4.jpg")
+ Pnl_Fotos.Visible=False
+ Bt_Foto1.Visible=True
+ Bt_Foto2.Visible=True
+ Bt_Foto3.Visible=True
+ Bt_Foto4.Visible=True
+ Pnl_Fotos.Visible=False
+ Bt_GuardarCheck.Visible=True
+ End If
+End Sub
+
+Sub Bt_Foto1_Click
+ foto.quien_llamo = "1"
+ GUARDA_TEMPORAL
+ TOMO_FOTO1 = 1
+ StartActivity("foto")
+End Sub
+
+Sub Bt_Foto2_Click
+ foto.quien_llamo = "2"
+ GUARDA_TEMPORAL
+ StartActivity("foto")
+End Sub
+
+Sub Bt_Foto3_Click
+ foto.quien_llamo = "3"
+ GUARDA_TEMPORAL
+ TOMO_FOTO3 = 1
+ StartActivity("foto")
+End Sub
+
+Sub Bt_Foto4_Click
+ foto.quien_llamo = "4"
+ GUARDA_TEMPORAL
+ TOMO_FOTO4 = 1
+ StartActivity("foto")
+End Sub
+
+Sub LBL_REGRESA_Click
+ Pnl_Fotos.Visible=False
+ Bt_Foto1.Visible=True
+ Bt_Foto2.Visible=True
+ Bt_Foto3.Visible=True
+ Bt_Foto4.Visible=True
+ Bt_GuardarCheck.Visible=True
+End Sub
+
+''' SUBIR PANEL.
+Sub IME_HeightChanged(NewHeight As Int, OldHeight As Int)
+ ' para subir la entrada de datos y que este encima del teclado
+ 'Log("NewHeight " & NewHeight & " OldHeight " & OldHeight)
+End Sub
+
+Sub Activity_KeyPress (key As Int) As Boolean 'ignore
+ ' BACK key pressed
+ If key=KeyCodes.KEYCODE_BACK Then
+ Pnl_CabinaInfo.Visible=False
+ Pnl_Carga.Visible=False
+ Pnl_Inspec.Visible=True
+ Pnl_MotorEncen.Visible=True
+ Pnl_CofreAbierto.Visible=False
+ Return False
+ 'End If
+ End If
+ ' Returning False signals the system to handle the key
+End Sub
diff --git a/B4A/C_Cliente.bas b/B4A/C_Cliente.bas
new file mode 100644
index 0000000..ce31a4c
--- /dev/null
+++ b/B4A/C_Cliente.bas
@@ -0,0 +1,3145 @@
+B4A=true
+Group=Default Group
+ModulesStructureVersion=1
+Type=Class
+Version=11.5
+@EndOfDesignText@
+Sub Mods 'Ignore
+ '2023/05/04 - Se modifico el sub b_geopass_Click para que si se mete la contraseña KMTS1, se habilite la venta fuera de la geocerca.
+End Sub
+
+Sub Class_Globals
+ Private Root As B4XView 'ignore
+ Dim reqManager As DBRequestManager
+ Private xui As XUI 'ignore
+ '// Process Globals
+ Dim g As GPS
+ Dim ime As IME
+ Dim ruta As String
+ Dim clie_id As String
+ Dim sDate,sTime As String
+ Dim usuario As String = ""
+ Dim total_cliente As String
+ Dim m_lat As String
+ Dim m_lon As String
+ Dim cmp20 As Serial
+ Dim printer As TextWriter
+ Dim PairedDevices As Map
+ Dim L As List
+ Dim TAMANO As Int
+ Dim ESPACIO As Int
+ Dim BLANCO As String
+ Dim cuenta As String
+ Dim Printer1 As EscPosPrinter
+ Dim MAC_IMPRESORA As String
+ Dim LONGITUD As String = "0"
+ Dim LATITUD As String = "0"
+ Dim NOMBRE As String
+ Dim ruta_tienda As String
+ Dim id_encuesta As String
+ Dim LLAMAR_FOTO As String
+ Dim CURSOR_FOTO As Int
+ Dim TOMAR_FOTO As String
+ Dim YA_IMPRIMIO2 As String
+ Dim CREDITO_DISPONIBLE As String
+ '//Globals
+ Dim c As Cursor
+ Dim s As Cursor
+ Dim c2 As Cursor
+ Dim S1 As Cursor
+ Dim S2 As Cursor
+ Dim S3 As Cursor
+ Dim C1 As Cursor
+ Dim C3 As Cursor
+ Dim C4 As Cursor
+ Dim C5 As Cursor
+ Dim C6 As Cursor
+ Dim c7 As Cursor
+ Dim C8 As Cursor
+ Dim RMI As String
+ Dim RMI_VALOR As String
+ Dim ListView1 As ListView
+ Dim la_cuenta As Label
+ Dim La_nombre As Label
+ Dim la_Calle As Label
+ Dim la_numero As Label
+ Dim la_nint As Label
+ Dim la_edo As Label
+ Dim la_pob As Label
+ Dim la_col As Label
+ Dim la_cp As Label
+ Dim la_zona As Label
+ Dim gest As Button
+ Dim la_saldotot As Label
+ Dim la_saldooper As Label
+ Dim Tels As Button
+ Dim Label10 As Label
+ Dim Label11 As Label
+ Dim Tar As Button
+ Dim la_comm As Label
+ Dim la_actdte As Label
+ Dim la_usuario As Label
+ Dim la_resultado As Label
+ Dim l_entre1 As Label
+ Dim l_entre2 As Label
+ Dim l_atiende As Label
+ Dim l_atiende2 As Label
+ Dim DATOS As Button
+ Dim Guardar As Button
+ Dim NUEVO As Button
+ Dim l_total As Label
+ Dim c2 As Cursor
+ Dim S2 As Cursor
+ Private s As Cursor
+ Dim res As String
+ Private HIST As Button
+ Private MONTO_COMPRA As String
+ Private META As String
+ Private META2 As String
+ Private VERIFICA As String
+ Private L_QR As Label
+ Private BT_QR As Button
+ Private qr As QRCode
+ Dim sc As Zxing_scanner
+ Dim CODIGO As String
+ Private b_mapa As Button
+ Dim CUANTOS As String
+ Private B_IMP As Button
+ Dim Toggla As Toggle
+ Private B_VENTA As Button
+ Dim PASA_IMP As String
+ Dim sucursal As String
+ Dim FACTURA As String
+ Dim CREDITO As String
+ Private b_factura As Button
+ Dim perfil As String
+ Private CH_TA As CheckBox
+ Private CH_TC As CheckBox
+ Private CH_TB As CheckBox
+ Private CH_TD As CheckBox
+ Private E_CUANTOS_E As EditText
+ Private B_GUARDAR As Button
+ Private TIPOEX As String
+ Private B_EXIBI As Button
+ Private Panel1 As Panel
+ Dim t3 As Timer
+ '--***---- BOLETA DE LIQUIDACION
+ Private P_BOLETA As Panel
+ '------ BILLETES
+ Private LBL_TMIL As Label
+ Private LBL_TQUIN As Label
+ Private LBL_TDOS As Label
+ Private LBL_TCIEN As Label
+ Private LBL_TCIN As Label
+ Private LBL_TVEIN As Label
+ Private LBL_MIL As Label
+ Private LBL_QUIN As Label
+ Private LBL_DOSC As Label
+ Private LBL_CIEN As Label
+ Private LBL_CINCUEN As Label
+ Private LBL_VEINTE As Label
+ Private EDT_CANVEIN As EditText
+ Private EDT_CANCIN As EditText
+ Private EDT_CANCIEN As EditText
+ Private EDT_CANDOS As EditText
+ Private EDT_CANQUIN As EditText
+ Private EDT_CANMIL As EditText
+ Private Btn_TOTALBILLETE As Button
+ Private Pnl_Billete As Panel
+ Private Pnl_Moneda As Panel
+ Private L_CALCULA_BILLE As Label
+ '------ BOTONES MAS Y MENOS
+ Private B_MENMIL As Button
+ Private B_SUMIL As Button
+ Private B_MENQUI As Button
+ Private B_SUQUI As Button
+ Private B_MENDOS As Button
+ Private B_SUDOS As Button
+ Private B_MENCIE As Button
+ Private B_SUCIEN As Button
+ Private B_MENCIN As Button
+ Private B_SUCIN As Button
+ Private B_MENVEI As Button
+ Private B_SUVEI As Button
+ '------ MONEDAS
+ Private L_DIEZ As Label
+ Private L_CINCO As Label
+ Private L_DOS As Label
+ Private L_UNO As Label
+ Private L_CENTAVO As Label
+ Private LBL_TDIEZ As Label
+ Private LBL_TCI As Label
+ Private LBL_TDO As Label
+ Private LBL_TUN As Label
+ Private LBL_TCEN As Label
+ Private EDT_CANCEN As EditText
+ Private EDT_CANUN As EditText
+ Private EDT_CANDO As EditText
+ Private EDT_CANCI As EditText
+ Private EDT_CANDIEZ As EditText
+ Private L_CALCULA_MONEDA As Label
+ Private B_TOTALMONEDA As Button
+ '------ BOTONES MAS Y MENOS
+ Private B_MENCENT As Button
+ Private B_MENUN As Button
+ Private B_MENDO As Button
+ Private B_MENCI As Button
+ Private B_MENDIEZ As Button
+ Private B_SUMDIEZ As Button
+ Private B_SUMCIN As Button
+ Private B_SUMDO As Button
+ Private B_SUMUN As Button
+ Private B_SUMCENT As Button
+ '------ SUMA TOTALES
+ Private Edt_FH As EditText
+ Private B_AGREGAMONE As Button
+ Private B_AGREGABILL As Button
+ Private TOTALES As Label
+ Private B_SUM_TOTAL As Button
+ Private TOTALBILLETES As Button
+ Private TOTALMONEDA As Button
+ Private PNL_TOTALES As Panel
+ Private LBL_RETURN As Label
+ Private IMG_IMPRESORA As Label
+ Private LBL_REGRESA As Label
+ '--***---- FIN BOLETA
+ Private P_INF_GENERAL As Panel
+ Private B_Regresar As Button
+ Private ABORDO As String
+ Private a_inicial As String
+ Private a_total As String
+ Private a_venta As String
+ Private a_final As String
+ Private a_VENTA_F As String
+ Private a_inicial_5 As String
+
+ Private L_INVA As ListView
+ Private B_IMP_INV As Button
+ Private B_CERRAR_I As Button
+ Private Panel_INV_A As Panel
+ Private LBL_TVEINTE As Label
+ Private B_SUMVEINTE As Button
+ Private EDT_CANVEINTE As EditText
+ Private B_MENVEINTE As Button
+ Private L_VEINTE As Label
+ Dim RutaBoleta As String
+ Dim Id_Almacen As String
+ Dim cursorBoleta As Cursor
+ Private Bt_GuardarBoleta As Button
+ Private CUANTOS1 As String
+ Private Panel9 As Panel
+ Private t_tenc As Label
+ Private E_RES_E As EditText
+ Private B_E_NEXT As Button
+ Private Label26 As Label
+ Private l_chk_e As Label
+ Private Chk_1 As CheckBox
+ Private chk_2 As CheckBox
+ Private chk_3 As CheckBox
+ Private b_chk_e As Button
+ Private Panel10 As Panel
+ Private chk_1_valor As String
+ Private chk_2_valor As String
+ Private chk_3_valor As String
+ Private p_encuesta As Panel
+ Private b_encuesta_1 As Button
+ Private b_encuesta_2 As Button
+ Private b_encuesta_3 As Button
+ Private l_titEncuesta As Label
+ Private l_txtEncuesta As Label
+ Private encuestaRes As String
+ Private botonPresionado As Int
+ Private B_IMP2 As Button
+ Dim impresoraConectada As Boolean = False
+ Private l_categoria2 As Label
+ Private l_exhibidor2 As Label
+ Private p_exhibidores As Panel
+ Private Button1 As Button
+ Private b_exhibidor As Button
+ Private l_exhibidores3 As Label
+ Private l_segmento2 As Label
+ Private et_encuesta As EditText
+ Private b_encuesta_continuar As Button
+ Dim muestraBoleta As Boolean = False
+ Private Panel4 As Panel
+ Private Panel6 As Panel
+ Private l_ubicacion As Label
+ Dim l_ubicacion2 As Label
+ Dim b_ubicacion As Button
+ Dim logger As Boolean = False
+ Private b_whats As Button
+ Private b_aceptarrpomo As Button
+ Private b_rechazapromo As Button
+ Private p_promowhats As Panel
+ Private l_promowhats As Label
+ Private L_doe As Label
+
+ Private gps_boton_doe As String
+ Private pgs_boton_noventa As String
+ Private P_DOE As Panel
+ Private LP_DOE As ListView
+ Private BP_DOE_A As Button
+ Private BP_DOE_R As Button
+ Private p_pideGeoPass As Panel
+ Private b_geopass As Button
+ Private et_geopass As EditText
+ Dim laDist As Float
+ Private L_DOE_TOTAL As Label
+ Private Panel11 As Panel
+ Private BP_DOE_R1 As Button
+ Private r_1 As RadioButton
+ Private r_2 As RadioButton
+ Private r_3 As RadioButton
+ Private r_4 As RadioButton
+ Private R_5 As RadioButton
+ Private e_comm As EditText
+ Private motivo As String
+End Sub
+
+'You can add more parameters here.
+Public Sub Initialize As Object
+ Return Me
+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
+ Root = Root1
+ reqManager.Initialize(Me, Starter.server)
+ 'load the layout to Root
+ Root.LoadLayout("cliente")
+ ruta = File.DirInternal
+ Subs.panelAnchoAlto(P_INF_GENERAL, Root.Width, Root.Height)
+ Panel6.Width = Root.Width
+ p_promowhats.Width = Root.Width
+ p_promowhats.visible = False
+ If Starter.boleta = 0 Then
+ c=Starter.skmt.ExecQuery("select 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_BFACTURA, CAT_CL_BCREDITO, CAT_CL_CATEGORIA, CAT_CL_SEGMENTO from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)")
+ s=Starter.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
+ s.Position=0
+ If c.RowCount > 0 Then
+ c.Position=0
+ la_cuenta.Text = c.GetString("CAT_CL_CODIGO")
+ cuenta = c.GetString("CAT_CL_CODIGO")
+ La_nombre.Text = c.GetString("CAT_CL_NOMBRE")
+ NOMBRE = c.GetString("CAT_CL_NOMBRE")
+ la_Calle.Text = c.GetString("CAT_CL_CALLE") & c.GetString("CAT_CL_NOEXT")
+ la_col.Text = c.GetString("CAT_CL_COLONIA")
+ la_edo.Text = c.GetString("CAT_CL_EDO")
+ la_cp.Text = c.GetString("CAT_CL_CP")
+ l_entre1.Text = c.GetString("CAT_CL_CALLE1")
+ l_entre2.Text = c.GetString("CAT_CL_CALLE2")
+ l_atiende.Text = c.GetString("CAT_CL_ATIENDE1")
+ l_atiende2.Text = c.GetString("CAT_CL_ATIENTE2")
+ la_saldotot.Text = c.GetString("CAT_CL_TELEFONO")
+ ''' ESTO SE AGREGA PARA QUE SE VEA LOS CLIENTES DOE
+ If c.GetString("CAT_CL_EMAIL") = "1" Then
+ L_doe.Visible = True
+ Else
+ L_doe.Visible = False
+ End If
+ '''FIN CLIENTES DOE
+ l_total.Text = s.GetString("TOTAL_CLIE")
+ total_cliente = s.GetString("TOTAL_CLIE")
+ MONTO_COMPRA = c.GetString("CAT_CL_MTOCOMPRA")
+ FACTURA = c.GetString("CAT_CL_BFACTURA")
+ CREDITO = c.GetString("CAT_CL_BCREDITO")
+ LONGITUD = 0
+ If c.GetString("CAT_CL_LONG") <> Null And c.GetString("CAT_CL_LONG") <> "null" And IsNumber(c.GetString("CAT_CL_LONG")) Then LONGITUD = c.GetString("CAT_CL_LONG")
+ LATITUD = 0
+ If c.GetString("CAT_CL_LAT") <> Null And c.GetString("CAT_CL_LAT") <> "null" And IsNumber(c.GetString("CAT_CL_LAT")) Then LATITUD = c.GetString("CAT_CL_LAT")
+ l_categoria2.text = c.GetString("CAT_CL_CATEGORIA")
+ l_segmento2.text = c.GetString("CAT_CL_SEGMENTO")
+ If logger Then Log($"Lon: ${LONGITUD}, Lat: ${LATITUD}"$)
+ Else
+ RutaBoleta=Starter.rutaV
+ End If
+ End If
+ c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("MACIMP"))
+ c.Position =0
+ If c.RowCount > 0 Then
+ MAC_IMPRESORA = c.GetString("CAT_VA_VALOR")
+ Else
+ MAC_IMPRESORA = 0
+ Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("MACIMP","0"))
+ End If
+ Starter.MAC_IMPRESORA = MAC_IMPRESORA
+ Printer1.Initialize(Me, "Printer1")
+ TOMAR_FOTO = 0
+ c.Close
+ If s.IsInitialized Then s.Close
+End Sub
+
+'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
+
+Sub B4XPage_Appear
+ If Subs.traeUltimaActividadBD <> "Cliente" Then Subs.iniciaActividad(Subs.traeUltimaActividadBD)
+ If Not(muestraBoleta) Then P_INF_GENERAL.Visible = True
+
+
+ la_cuenta.Text = ""
+ La_nombre.Text = ""
+ la_Calle.Text = ""
+ la_col.Text = ""
+ la_edo.Text = ""
+ la_cp.Text = ""
+ l_entre1.Text = ""
+ l_entre2.Text = ""
+ l_atiende.Text = ""
+ l_atiende2.Text = ""
+ l_total.Text = ""
+ l_exhibidor2.Text = ""
+ la_saldooper.Text = ""
+ l_categoria2.text = ""
+ l_segmento2.text = ""
+
+ p_pideGeoPass.Visible = False
+' If Logger Then Log(muestraBoleta)
+ CallSubDelayed(Tracker, "StartFLP2")
+ b_ubicacion.Text = "SIN GPS"
+ b_ubicacion.TextColor = Colors.Red
+ pgs_boton_noventa = "1"
+ m_lat = -99.167244
+ m_lon = 19.427184
+ If Not(Starter.GPS.GPSEnabled) Then
+ ToastMessageShow("Debe Activar el GPS del Equipo.", True)
+ StartActivity(Starter.GPS.LocationSettingsIntent)
+ Else
+ Starter.GPS.Start(0, 0)
+ If Starter.ubicacionActual.Latitude <> 0 Then GPS_LocationChanged(Starter.ubicacionActual)
+ End If
+ If muestraBoleta Then LLAMA_BOLETA
+ BT_QR.Enabled = False
+ b_factura.Visible = False
+ Panel_INV_A.Visible = False
+ CREDITO_DISPONIBLE =0
+
+ If Starter.boleta = 0 Then
+ c=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 c.RowCount > 0 Then c.Position= 1
+
+ If TOMAR_FOTO = 0 Then
+ c=Starter.skmt.ExecQuery("select * from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)")
+ s=Starter.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
+ s.Position=0
+ S1=Starter.skmt.ExecQuery("select count(*) as CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
+ S1.Position=0
+ Log("hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh "&c.RowCount)
+ c.Position=0
+ la_cuenta.Text = c.GetString("CAT_CL_CODIGO")
+ La_nombre.Text = c.GetString("CAT_CL_NOMBRE")
+ la_Calle.Text = c.GetString("CAT_CL_CALLE") & " " & c.GetString("CAT_CL_NOEXT")
+ la_col.Text = c.GetString("CAT_CL_COLONIA")
+ la_edo.Text = c.GetString("CAT_CL_EDO")
+ la_cp.Text = c.GetString("CAT_CL_CP")
+ l_entre1.Text = c.GetString("CAT_CL_CALLE1")
+ l_entre2.Text = c.GetString("CAT_CL_CALLE2")
+ l_atiende.Text = c.GetString("CAT_CL_ATIENDE1")
+ l_atiende2.Text = c.GetString("CAT_CL_ATIENTE2")
+ l_total.Text = s.GetString("TOTAL_CLIE")
+ total_cliente = s.GetString("TOTAL_CLIE")
+ m_lat =c.GetString("CAT_CL_LAT")
+ m_lon =c.GetString("CAT_CL_LONG")
+ CREDITO_DISPONIBLE = c.GetString("CAT_CL_BFACTURA")
+ CREDITO = c.GetString("CAT_CL_BCREDITO")
+ ruta_tienda = c.GetString("CAT_CL_RUTA")
+ YA_IMPRIMIO2 = c.GetString("IMPRESION")
+ l_categoria2.text = c.GetString("CAT_CL_CATEGORIA")
+ l_segmento2.text = c.GetString("CAT_CL_SEGMENTO")
+ If c.GetString("CAT_CL_EMAIL") = "1" Then
+ L_doe.Visible = True
+ Else
+ L_doe.Visible = False
+ End If
+ '''FIN CLIENTES DOE
+ LONGITUD = 0
+ If la_cuenta.Text = "0" Then
+ m_lat = Starter.lat_gps
+ m_lon = Starter.lon_gps
+ End If
+ If c.GetString("CAT_CL_LONG") <> Null And c.GetString("CAT_CL_LONG") <> "null" And IsNumber(c.GetString("CAT_CL_LONG")) Then LONGITUD = c.GetString("CAT_CL_LONG")
+ LATITUD = 0
+ If c.GetString("CAT_CL_LAT") <> Null And c.GetString("CAT_CL_LAT") <> "null" And IsNumber(c.GetString("CAT_CL_LAT")) Then LATITUD = c.GetString("CAT_CL_LAT")
+ LogColor($"${c.GetString("CAT_CL_LAT")}, ${c.GetString("CAT_CL_LONG")}"$, Colors.red)
+ If logger Then Log($"Lat: ${LATITUD}, Lon: ${LONGITUD}"$)
+ NOMBRE = c.GetString("CAT_CL_NOMBRE")
+ If l_total.Text = Null Then
+ Tels.Visible = True
+ Else
+ Tels.Visible = False
+ pgs_boton_noventa = "0"
+ If la_cuenta.Text = "0" Then
+ CREDITO_DISPONIBLE = 10000000
+ CREDITO = 0
+ End If
+ End If
+' If S1.GetString("CUANTOS") = 0 Then
+' Tels.Visible = True
+' Else 'Si ya hay venta, ocultamos el boton de "NO VENTA"
+' Tels.Visible = False
+' pgs_boton_noventa = "0"
+' End If
+ If CREDITO = "1" Then
+ Msgbox("ALTO","Este cliente no se le puede vender ya que tienen adeudo en su crédito") 'ignore
+ B_VENTA.Visible = False
+ gest.Visible = False
+ Else
+ B_VENTA.Visible = True
+ gest.Visible = True
+ End If
+ ' Msgbox(c.GetString("CAT_CL_NUM_SERIEFISICO"),"AVISO")
+ If c.GetString("CAT_CL_NUM_SERIEFISICO") = "0" Then
+ L_QR.Visible = True
+ Else
+ L_QR.Visible = False
+ End If
+ S2=Starter.skmt.ExecQuery("select count(*) AS CUANTOS from HIST_VENTAS WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa)")
+ S2.Position =0
+ CUANTOS = S2.GetString("CUANTOS")
+ S2.Close
+ If CUANTOS > 0 Then
+ c2=Starter.skmt.ExecQuery("select sum(HVD_COSTO_TOT) AS TOTAL from HIST_VENTAS WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa)")
+ c2.Position =0
+ MONTO_COMPRA = c2.GetString("TOTAL")
+ c2.Close
+ Else
+ MONTO_COMPRA = "0"
+ End If
+
+ la_saldotot.Text = MONTO_COMPRA
+ If MONTO_COMPRA <> "0" Then
+ META2 = 300 - MONTO_COMPRA
+ Else
+ META2 = 300
+ End If
+ If META2 < 1 Then
+ META2 = "CUBIERTO"
+ End If
+ la_saldooper.Text = META2
+ c7=Starter.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select cuenta from cuentaa) ")
+ c7.Position=0
+ If c7.GetString("CUANTOS") = 0 Then
+ c=Starter.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS FROM HIST_CLIENTE_CANT_PROMOS WHERE HCCP_CLIENTE IN (Select cuenta from cuentaa)")
+ c.Position =0
+ If c.GetString("CUANTOS") > 0 Then
+ C1=Starter.skmt.ExecQuery("SELECT HCCP_PROMO FROM HIST_CLIENTE_CANT_PROMOS WHERE HCCP_CLIENTE IN (Select cuenta from cuentaa) ")
+ C1.Position =0
+ C3=Starter.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM CAT_GUNAPROD2 WHERE CAT_GP_ID = ? ", Array As String(C1.GetString("HCCP_PROMO")))
+ C3.Position = 0
+ If C3.GetString("CUANTOS") > 0 Then
+ c2=Starter.skmt.ExecQuery2("SELECT CAT_GP_NOMBRE FROM CAT_GUNAPROD2 WHERE CAT_GP_ID = ? ", Array As String(C1.GetString("HCCP_PROMO")))
+ c2.Position = 0
+ MsgboxAsync("El cliente tiene derecho a una promo especial "& c2.GetString("CAT_GP_NOMBRE"),"Aviso") 'ignore
+ c2.Close
+ Else
+ MsgboxAsync("El cliente tiene derecho a una promo especial ","Aviso") 'ignore
+ End If
+ C3.Close
+ C1.Close
+ End If
+ End If
+ c7.Close
+ B_VENTA.Visible = True
+ Tels.Visible = True
+ If CREDITO = "1" Then
+ Msgbox("El cliente tiene credito excedido","Aviso") 'ignore
+ B4XPages.ShowPage("Principal")
+ End If
+ Else
+ Cuestionario
+ End If
+ If YA_IMPRIMIO2 = 0 Then
+ Guardar.Visible = False
+ Else
+ Guardar.Visible = True
+ End If
+ If la_cuenta.text = "0" Then Guardar.Visible = True 'Abordo
+ If l_total.Text = Null Or l_total.Text = "null" Or l_total.text = "0" Then Guardar.Visible = True 'Si no hay venta entonces "Guardar" es visible.
+
+ 'Promo Especial
+' If Logger Then LogColor($"Ultima actividad BD=${Subs.traeUltimaActividadBD}"$, Colors.Magenta)
+ Dim mPromoEspecial As Map = revisaPromoEspecial
+' If Logger Then Log(mPromoEspecial.Get("esValida"))
+ If Subs.traeUltimaActividadBD = "Productos" Then 'Venimos de "Productos"
+ If logger Then Log("Venimos de Productos")
+ If l_total.Text <> Null And mPromoEspecial.Get("montoPromo") <> Null And l_total.Text > ((mPromoEspecial.Get("montoPromo") * (100 - mPromoEspecial.Get("rangoPromo")))/100) And _
+ l_total.Text <= mPromoEspecial.Get("montoPromo") Then 'El monto de la venta esta dentro del rango para la promo.
+ If logger Then Log("Promo dentro del rango")
+ Msgbox($"Si la venta sobrepasa los $${mPromoEspecial.Get("montoPromo")} se activa la promoción '${mPromoEspecial.Get("descrPromo")}'"$, "CASI EN RANGO DE PROMO ESPECIAL") 'ignore
+ Else
+ If logger Then Log("Promo fuera de rango")
+ End If
+ If l_total.Text <> Null And mPromoEspecial.Get("montoPromo") <> Null And l_total.text >= mPromoEspecial.Get("montoPromo") Then
+ If logger Then Log("Promo Autorizada")
+ res = Msgbox2("Pomocion '" & mPromoEspecial.Get("descrPromo") & "' disponible.\nSi se otorga la promoción ya NO será posible modificar la venta.", "PROMO DISPONIBLE", "Si", "", "No", Null) 'ignore
+ If res = DialogResponse.POSITIVE Then
+ If logger Then Log("Promocion aceptada.")
+ If logger Then Log($"${mPromoEspecial.Get("idProd")}, ${mPromoEspecial.Get("idPromo")}, ${mPromoEspecial.Get("cantProd")}, ${mPromoEspecial.Get("nombreProd")}, ${mPromoEspecial.Get("descrPromo")}, ${la_cuenta.Text}, ${usuario}, ${ruta_tienda}"$)
+ metePromoEspecial(mPromoEspecial.Get("idProd"), mPromoEspecial.Get("idPromo"), mPromoEspecial.Get("cantProd"), mPromoEspecial.Get("nombreProd"), mPromoEspecial.Get("descrPromo"), la_cuenta.Text, usuario, ruta_tienda)
+ Subs.ponImpreso(la_cuenta.Text)
+ End If
+ End If
+ If l_total.Text <> Null And mPromoEspecial.Get("montoPromo") <> Null Then Log($"Monto venta = ${l_total.Text}, rango para promo = ${(mPromoEspecial.Get("montoPromo") * (100 - mPromoEspecial.Get("rangoPromo"))/100)}"$)
+ End If
+
+ 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 Tels.Visible = False 'Si ya tiene NoVenta, ocultamos el boton.
+ c.Close
+ Else
+ RutaBoleta=Starter.rutaV
+ End If
+ If c.IsInitialized Then c.Close
+ If s.IsInitialized Then s.Close
+ If S1.IsInitialized Then S1.Close
+ If logger Then Log("===================== Traemos EXHIBIDORES " & la_cuenta.Text & " =================" )
+ c=Starter.skmt.ExecQuery2("select * FROM HIST_EXHIBIDORES2 where hist_ex_id_cliente = ?", Array As String (la_cuenta.Text))
+ Log("uuuuuuuuuuuuuuuuuuuuuuuuuuuuu "&c.RowCount)
+ If c.RowCount > 0 Then
+ Private exhibs As String = ""
+ Private separador As String = ""
+ For i=0 To c.RowCount -1
+ c.Position=i
+ If i < c.RowCount And i <> 0 Then separador = " - " Else separador = ""
+ exhibs = exhibs & separador & c.GetString("HIST_EX_TIPO")
+ Next
+' If Logger Then LogColor(exhibs, Colors.Blue)
+ c.Close
+ l_exhibidor2.Text = exhibs
+ l_exhibidores3.Text = exhibs
+ End If
+
+ 'PARA LA PROMO DOE
+ If Starter.boleta = 0 Then
+ b_whats.Visible = False
+ gps_boton_doe = "0"
+ C1=Starter.skmt.ExecQuery("select IMPRESION FROM kmt_info where CAT_CL_CODIGO In (select cuenta from cuentaa)")
+ C1.Position = 0
+ If C1.GetString("IMPRESION") <> "1" Then
+ S=Starter.skmt.ExecQuery2("select COUNT(*) AS CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) AND PE_PROID = ?", Array As String("PROMODOE") )
+ s.Position = 0
+ If s.GetString("CUANTOS") = 0 Then
+ c=Starter.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM HIST_CLIENTE_CANT_PROMOS WHERE HCCP_CLIENTE IN (Select cuenta from cuentaa) AND HCCP_PROMO = ?", Array As String("PROMODOE"))
+ c.Position =0
+ If c.GetString("CUANTOS") > 0 Then
+ C3=Starter.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM CAT_GUNAPROD2 WHERE CAT_GP_ID = ? ", Array As String("1008094223"))
+ C3.Position = 0
+ If C3.GetString("CUANTOS") > 0 Then
+ c2=Starter.skmt.ExecQuery2("SELECT CAT_GP_ALMACEN FROM CAT_GUNAPROD2 WHERE CAT_GP_ID = ? ", Array As String("1008094223"))
+ c2.Position = 0
+ If c2.GetString("CAT_GP_ALMACEN") > 0 Then
+ b_whats.Visible = False
+ ' gps_boton_doe = "1"
+
+ End If
+ c2.Close
+ End If
+ C3.Close
+ End If
+ c.Close
+ End If
+ s.Close
+ End If
+ C1.Close
+ End If
+
+ gps_boton_doe = "0"
+ muestraBoleta = False
+ b_whats.Visible =False
+ If l_total.Text <> Null Then Tels.Visible = False
+End Sub
+
+Sub Printer1_Connected (Success As Boolean)
+' If Logger Then Log("Printer1_Connected")
+ If Success Then
+ ToastMessageShow("Impresora conectada", False)
+ Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("MACIMP"))
+ Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("MACIMP",Starter.mac_impresora))
+ If logger Then LogColor("Impresora conectada", Colors.Green)
+' B_IMP2.Enabled = True
+ impresoraConectada = True
+ Else
+' Msgbox(Printer1.ConnectedErrorMsg, "Error connecting.") 'ignore
+' ToastMessageShow("Error conectando la impresora", False)
+ If logger Then LogColor("Error conectando la impresora", Colors.Red)
+ End If
+End Sub
+
+Sub GPS_LocationChanged (Location1 As Location)
+ 'Este codigo se corre desde Tracker/flp_LocationChanged
+ b_ubicacion.TextColor = Colors.Gray
+ Sleep(200)
+ b_ubicacion.TextColor = Colors.White
+ If logger Then Log($"${Location1.Latitude}, ${Location1.Longitude}, ${Location1.Accuracy}"$)
+
+ If m_lat = Null Or m_lat = "" Then m_lat = 0
+ If m_lon = Null Or m_lon = "" Then m_lon = 0
+
+ Private ubicacionTienda As Location
+ ubicacionTienda.Initialize
+ ubicacionTienda.Latitude = m_lat
+ ubicacionTienda.Longitude = m_lon
+ If logger Then Log($"Tienda:${ubicacionTienda.Latitude}, ${ubicacionTienda.Longitude}"$)
+ b_ubicacion.TextSize = 13
+ b_ubicacion.Text = $"Precisión GPS $1.0{Location1.Accuracy} m"$
+ If Location1.Accuracy > 200 Then
+ b_ubicacion.TextColor = Colors.Red
+ b_ubicacion.TextSize = 16
+ b_ubicacion.Text = $"Mala señal $1.0{Location1.Accuracy} m"$
+ End If
+ laDist= Location1.DistanceTo(ubicacionTienda)
+ l_ubicacion2.Text = $"Dist: $1.0{laDist} mts."$
+ If laDist > 300 Then l_ubicacion2.TextColor = Colors.Red Else l_ubicacion2.TextColor = Colors.Black
+
+ '''' GEO CERCA
+ '''' esto es para la geocerca validar tambien el las variables del whats y del no venta que las borra si existe venta
+ Dim l1, l2 As Location
+ l1.Initialize2(Starter.lat_gps, Starter.lon_gps)
+
+
+' Log($"Coordenadas de la tienda - lat:${m_lat}, lon:${m_lon}"$)
+ l2.Initialize2(m_lat, m_lon)
+
+ Dim distance As Long
+ distance = l1.DistanceTo(l2) ' resultado en metros
+ gest.Visible = True
+
+ gps_boton_doe ="1"
+' LogColor($"Distancia actual: ${distance}"$, Colors.Blue)
+ If distance <= 5000000000000 Or usuario = "KMTSKLL1" Then
+' If pgs_boton_noventa = "1" Then Tels.Visible = True
+ If gps_boton_doe ="1" Then b_whats.Visible = True
+ B_VENTA.Visible = True
+ Tels.Visible = True
+ If l_total.Text <> Null And l_total.Text <> "null" Then
+' Log("Hide NoVenta" & "|" & l_total.Text & "|")
+ Tels.Visible = False
+ End If
+ pedido_doe_muestra
+ Else
+ Tels.Visible = False
+ B_VENTA.Visible = False
+ b_whats.Visible = False
+ End If
+ ''' fin de la geocerca
+End Sub
+
+Sub ListView1_ItemLongClick (Position As Int, Value As Object)
+
+End Sub
+
+Sub gest_Click
+ Starter.tipov = "PREVENTA"
+ Subs.iniciaActividad("Productos")
+End Sub
+
+Sub Tels_Click
+ Subs.iniciaActividad("noventa")
+End Sub
+
+Private Sub B4XPage_CloseRequest As ResumableSub
+ ' BACK key pressed
+ 'Return True to close, False to cancel
+ If PNL_TOTALES.Visible Then
+ PNL_TOTALES.Visible = False
+ P_BOLETA.Visible = False
+ P_INF_GENERAL.Visible = True
+ Log("Panel general="&P_INF_GENERAL.Visible)
+ Subs.iniciaActividad("Principal")
+ else if p_pideGeoPass.Visible Then
+ p_pideGeoPass.Visible = False
+ else if Panel_INV_A.Visible Then
+ Panel_INV_A.Visible = False
+ P_INF_GENERAL.Visible = True
+ If logger Then Log("Panel general="&P_INF_GENERAL.Visible)
+ Else
+ Msgbox("Presione Guardar para continuar","Aviso") 'ignore
+ End If
+ Return False
+End Sub
+
+Sub Tar_Click
+ Subs.iniciaActividad("nota")
+End Sub
+
+Sub DATOS_Click
+ Subs.iniciaActividad("telefonos")
+End Sub
+
+Sub Guardar_Click
+ Log("GUARDAR")
+ DateTime.DateFormat = "MM/dd/yyyy"
+ sDate=DateTime.Date(DateTime.Now)
+ sTime=DateTime.Time(DateTime.Now)
+ If Starter.lat_gps = 0 Or Starter.lat_gps = Null Then
+ Private coords As List = Subs.traeCoordsDeBD
+ 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
+ clie_id = c.GetString("CUENTA")
+ c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
+ c.Position=0
+ usuario = c.GetString("USUARIO")
+ If l_total.Text <> Null And l_total.Text <> "null" Then Subs.ponImpreso(clie_id) 'Solo lo marcamos com impreso si tiene venta (total > 0).
+ c=Starter.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, COUNT(*) AS CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
+ c.Position=0
+ If c.GetString("CUANTOS") > 0 Then
+ Starter.skmt.ExecNonQuery("delete from NOVENTA where NV_CLIENTE In (select cuenta from cuentaa)")
+ Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)")
+ If logger Then LogColor($"Insertamos coordenadas en pedido: ${Starter.lon_gps}, ${Starter.lat_gps}"$, Colors.Magenta)
+ Starter.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT) VALUES (?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), Starter.lon_gps, Starter.lat_gps))
+ 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.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.Position = 0
+ End If
+ s.Close
+ Starter.skmt.ExecNonQuery("delete from pedido3")
+ Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO3 (PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_USUARIO ) SELECT PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, SUM(PE_COSTO_TOT) AS PE_COSTO_TOT, PE_COSTOU, SUM(PE_CANT) As PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_USUARIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) GROUP BY PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, PE_COSTOU, PE_PRONOMBRE, PE_PROID, PE_CLIENTE ")
+ c=Starter.skmt.ExecQuery("select PE_PRECIO2,PE_TIPO,PE_DESC,PE_COSTO_SIN,PE_RUTA,PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE, PE_FECHA,PE_USUARIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Starter.skmt.ExecNonQuery2("UPDATE PEDIDO3 SET PE_FECHA= ? WHERE PE_CLIENTE = ? AND PE_PRONOMBRE = ? AND PE_PROID = ? AND PE_CEDIS = ? ", Array As Object(c.GetString("PE_FECHA"), c.GetString("PE_CLIENTE"),c.GetString("PE_PRONOMBRE"),c.GetString("PE_PROID"),c.GetString("PE_CEDIS")))
+ Next
+ End If
+ c.Close
+ Starter.skmt.ExecNonQuery2("UPDATE PEDIDO3 SET PE_FOLIO = ? WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As Object(YA_IMPRIMIO2))
+ Starter.skmt.ExecNonQuery("delete from pedido WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) ")
+ Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO SELECT * FROM PEDIDO3")
+ Starter.skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_FECHA = ? WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) and PE_FECHA IS NULL", Array As Object(sDate & sTime))
+ Starter.skmt.ExecNonQuery("delete from PEDIDO where PE_CANT = 0") 'Mod por CHV para que borre los productos que esten con cantidad 0 - 211228
+ Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("ULTIMOMODULO"))
+ Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("ULTIMOMODULO", "seleccion"))
+' Activity.Finish
+ CallSubDelayed(Tracker, "StartFLP")
+ If logger Then LogColor("Cerramos Cliente, iniciamos Principal", Colors.blue)
+' B4XPages.ShowPage("Principal")
+ Starter.ultima_back_productos = 0
+ B4XPages.ShowPageAndRemovePreviousPages("Principal")
+End Sub
+
+Sub NUEVO_Click
+ Subs.iniciaActividad("nuevocliente")
+End Sub
+
+Sub HIST_Click
+ Subs.iniciaActividad("Historico")
+End Sub
+
+Sub BT_QR_Click
+ Dim scan_width As Int
+ Dim scan_height As Int
+ scan_width = 400
+ scan_height = 400
+ sc.BeginScan("sc","CODIGO CLIENTE",scan_width,scan_height)
+End Sub
+
+Sub sc_result(atype As String,Values As String)
+ 'Log("Type : " & atype)
+ 'Log("Value : " & Values)
+ CODIGO = Values
+ Starter.skmt.ExecNonQuery2("UPDATE kmt_info set CAT_CL_NUM_SERIEFISICO = ?, CAT_CL_LONG = ?, CAT_CL_LAT =? where CAT_CL_CODIGO In (select cuenta from cuentaa)", Array As Object(CODIGO, Starter.lon_gps, Starter.lat_gps))
+End Sub
+
+Sub sc_noScan
+ If logger Then Log("nothing returned from the scan !!!!!")
+End Sub
+
+Sub calc_ean_checksum(number As String) As String 'this has now become redundant as I am only interested in QR Codes
+ Dim i As Int
+ Dim cO As Char
+ Dim soma As Int
+ Dim n As Int
+ Dim digit As Float
+ soma = 0
+ For i=0 To number.Length - 1
+ digit = number.SubString2(i,i+1)
+ n= digit * ((i Mod 2) * 2 + 1)
+ soma=soma+n
+ Next
+ Return number & ( ( 10 - ( soma Mod 10 )) Mod 10 )
+End Sub
+
+Sub b_mapa_Click
+ Subs.iniciaActividad("mapas")
+End Sub
+
+Sub B_IMP_Click
+ Starter.skmt.Close : Log("Cerramos BD") : Starter.revisaBD
+ Subs.panelAnchoAlto(Panel_INV_A, Root.Width, Root.Height)
+ Panel_INV_A.Visible = True
+ P_INF_GENERAL.Visible = False
+ If logger Then Log("Panel general="&P_INF_GENERAL.Visible)
+ L_INVA.Clear
+ Dim label1 As Label
+ label1 = L_INVA.TwoLinesLayout.Label
+ label1.TextSize = 14
+ label1.TextColor = Colors.Black
+ Dim label2 As Label
+ label2 = L_INVA.TwoLinesLayout.SecondLabel
+ label2.TextSize = 14
+ label2.TextColor = Colors.Black
+' Aqui es donde esta el pedo de julieta de los descuentos, quitar el precio2 pero meter un if para saber si es ruta especial o es normal o que show.
+ s=Starter.skmt.ExecQuery2 ("select CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_ALMACEN from cat_gunaprod2 where CAT_GP_CLASIF <> ? ORDER BY CAT_GP_NOMBRE ", Array As String("PROMOS"))
+ If s.RowCount>0 Then
+ For i=0 To S.RowCount -1
+ s.Position=i
+ S1=Starter.skmt.ExecQuery2("select CAT_GP_ALMACEN from cat_gunaprod5 where CAT_GP_ID = ?", Array As String(s.GetString("CAT_GP_ID")))
+ S1.Position=0
+ S3=Starter.skmt.ExecQuery2("select count(*) as CUANTOS from HIST_ABORDO where HIST_PROID = ?", Array As String(s.GetString("CAT_GP_ID")))
+ S3.Position=0
+ If S3.GetString("CUANTOS") > 0 Then
+ S2=Starter.skmt.ExecQuery2("select HIST_CANT from HIST_ABORDO where HIST_PROID = ?", Array As String(s.GetString("CAT_GP_ID")))
+ S2.Position=0
+ a_inicial = S1.GetString("CAT_GP_ALMACEN") - S2.GetString("HIST_CANT")
+ Else
+ a_inicial = S1.GetString("CAT_GP_ALMACEN")
+ End If
+ a_inicial_5 = S1.GetString("CAT_GP_ALMACEN")
+ If S3.GetString("CUANTOS") > 0 Then
+ ABORDO = S2.GetString("HIST_CANT")
+ Else
+ ABORDO = 0
+ End If
+ a_total = S1.GetString("CAT_GP_ALMACEN")
+ C4=Starter.skmt.ExecQuery2("select count(*) as CUANTOS from pedido where substr(pe_pronombre,1,6) <> ? AND PE_PROID = ? AND PE_TIPO = ? ", Array As String("CAMBIO", s.GetString("CAT_GP_ID"), "VENTA"))
+ C4.Position=0
+ If C4.GetString("CUANTOS") > 0 Then
+ C3=Starter.skmt.ExecQuery2("select SUM(PE_CANT) AS CANTIDAD,PE_PRONOMBRE, sum(PE_COSTO_TOT) AS TOTAL from pedido where substr(pe_pronombre,1,6) <> ? AND PE_PROID = ? AND PE_TIPO = ? GROUP BY PE_PRONOMBRE", Array As String("CAMBIO", s.GetString("CAT_GP_ID"), "VENTA"))
+ C3.Position=0
+ a_venta = C3.GetString("CANTIDAD")
+ a_VENTA_F = C3.GetString("TOTAL")
+ Else
+ a_venta = 0
+ a_VENTA_F = 0
+ End If
+ C4.Close
+
+ C4=Starter.skmt.ExecQuery2("select count(*) as CUANTOS from pedido where substr(pe_pronombre,1,6) = ? AND PE_PROID = ? ", Array As String("CAMBIO", s.GetString("CAT_GP_ID")))
+ C4.Position=0
+ If C4.GetString("CUANTOS") > 0 Then
+ C1=Starter.skmt.ExecQuery2("select SUM(PE_CANT) AS CANTIDAD,PE_PRONOMBRE from pedido where substr(pe_pronombre,1,6) = ? AND PE_PROID = ? GROUP BY PE_PRONOMBRE", Array As String("CAMBIO", s.GetString("CAT_GP_ID")))
+ C1.Position=0
+ RMI = C1.GetString("CANTIDAD")
+ C1.Close
+ Else
+ RMI = 0
+ End If
+ C4.Close
+ a_final = a_inicial_5 - a_venta
+ L_INVA.AddTwoLines(s.GetString("CAT_GP_NOMBRE"), "II-" & a_inicial & ".CD." & ABORDO & ".IIT." & a_total & ".VT." & a_venta & "..$" & a_VENTA_F & ".IF." & a_final & ".RMI." & RMI)
+ Next
+ End If
+ s.Close
+End Sub
+
+Sub B_IMP2_Click
+ Log("inicia B_IMP2_Click")
+ B_IMP2.Enabled = False
+ If l_total.Text <> Null And l_total.Text <> "null" Then Subs.ponImpreso(la_cuenta.Text) 'Solo lo marcamos como impreso si tiene venta (total > 0).
+ ProgressDialogShow("Imprimiendo, un momento ...")
+ Printer1.DisConnect
+ If Not(Printer1.IsConnected) Then
+ If logger Then Log("conectando 1")
+ Printer1.Connect
+ Private cont As Int = 0
+ Do While Not(impresoraConectada)
+ Sleep(1000)
+ cont = cont + 1
+ If cont = 7 Then Printer1.Connect 'Tratamos de reconectar
+ If cont > 15 Then impresoraConectada = True
+ Loop
+ Sleep(500)
+ impresoraConectada = False
+ Else
+ If logger Then Log("conectando 2")
+ Printer1.Connect
+ Private cont As Int = 0
+ Do While Not(impresoraConectada) Or Not(Printer1.IsConnected)
+ Sleep(1000)
+ cont = cont + 1
+ If cont = 2 Then Printer1.Connect
+ If cont > 4 Then impresoraConectada = True
+ Loop
+ Sleep(500)
+ impresoraConectada = False
+ End If
+' If Logger Then 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)")''
+ Guardar.Visible = True
+ End If
+ Starter.skmt.ExecNonQuery("delete from pedido3")
+ Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO3 (PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_USUARIO ) SELECT PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, SUM(PE_COSTO_TOT) AS PE_COSTO_TOT, PE_COSTOU, SUM(PE_CANT) As PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_USUARIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) GROUP BY PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, PE_COSTOU, PE_PRONOMBRE, PE_PROID, PE_CLIENTE ")
+ c=Starter.skmt.ExecQuery("select PE_PRECIO2,PE_TIPO,PE_FOLIO,PE_DESC,PE_COSTO_SIN,PE_RUTA,PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE, PE_FECHA,PE_USUARIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
+
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Starter.skmt.ExecNonQuery2("UPDATE PEDIDO3 SET PE_FECHA= ? WHERE PE_CLIENTE = ? AND PE_PRONOMBRE = ? AND PE_PROID = ? AND PE_CEDIS = ? AND PE_FOLIO = ?", Array As Object(c.GetString("PE_FECHA"), c.GetString("PE_CLIENTE"),c.GetString("PE_PRONOMBRE"),c.GetString("PE_PROID"),c.GetString("PE_CEDIS"), c.GetString("PE_FOLIO")))
+ Next
+ End If
+ Starter.skmt.ExecNonQuery("delete from pedido WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) ")
+ Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO SELECT * FROM PEDIDO3")
+
+ c=Starter.skmt.ExecQuery2("select count(*) AS CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("PERFIL"))
+ c.Position =0
+ perfil = c.GetString("CUANTOS")
+ c.Close
+ If perfil > 0 Then
+ c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("PERFIL"))
+ c.Position =0
+ perfil = c.GetString("CAT_VA_VALOR")
+ c.Close
+ End If
+ c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
+ c.Position=0
+ usuario = c.GetString("USUARIO")
+ DateTime.DateFormat = "MM/dd/yyyy"
+ sDate=DateTime.Date(DateTime.Now)
+ sTime=DateTime.Time(DateTime.Now)
+ c.Close
+ c=Starter.skmt.ExecQuery2("SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION =?", Array As String ("SUCURSAL"))
+ c.Position = 0
+ sucursal = c.GetString("CAT_VA_VALOR")
+ c.Close
+ TAMANO = 0
+ ESPACIO = 14
+ BLANCO = " "
+ 'esto para las impresoras nuevas
+ 'printer.Initialize(cmp20.OutputStream)
+ Printer1.Reset
+ Dim bmp As Bitmap
+ bmp.InitializeResize(File.DirAssets, "kelloggs.png", 376, 129, True) 'ignore
+ Dim myimage As AnImage = Printer1.ImageToBWIMage(bmp)
+ myimage = Printer1.DitherImage2D(myimage, 128)
+ myimage= Printer1.PackImage(myimage)
+
+ Printer1.WriteString(CRLF) ' nudge the printer to show the user something is happening
+ Printer1.WriteString(Printer1.REVERSE)
+ Printer1.PrintImage(myimage)
+ Printer1.WriteString(Printer1.UNREVERSE)
+ '' Printer1.Justify = 1
+ If la_cuenta.Text = "0" Then
+ Try
+ Printer1.WriteString("KELLOGG COMPANY MEXICO" & CRLF)
+ Printer1.WriteString(sDate &" " & sTime & CRLF)
+ Printer1.WriteString("Vendedor:" & usuario & CRLF)
+ Printer1.WriteString("Ruta:" & ruta_tienda & CRLF)
+ Printer1.WriteString("Tienda: " & La_nombre.Text & CRLF)
+ Printer1.WriteString("ID.Cliente: " & la_cuenta.Text & CRLF)
+ Printer1.WriteString("Calle: " & la_Calle.Text & CRLF)
+ Printer1.WriteString("Colonia: " & la_col.Text & CRLF)
+ Printer1.WriteString("C.P.: " & la_cp.Text & CRLF)
+ Printer1.WriteString("Entre calle1: " & l_entre1.Text & CRLF)
+ Printer1.WriteString("Entre Calle2: " & l_entre2.Text & CRLF)
+ Printer1.WriteString(" " & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString("PEDIDO" & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ s=Starter.skmt.ExecQuery2("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU, PE_COSTO_TOT, length(PE_COSTO_TOT) as L_COSTO_TOT, PE_PROID, PE_CEDIS FROM PEDIDO WHERE PE_TIPO = ? and substr(pe_pronombre,1,6) <> ? AND PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_PRONOMBRE", Array As String("ABORDO","CAMBIO"))
+ If S.RowCount>0 Then
+ For i=0 To S.RowCount -1
+ S.Position=i
+ If s.GetString("PE_CEDIS") = s.GetString("PE_PROID") Then
+ Printer1.WriteString(s.GetString("PE_PRONOMBRE") & CRLF)
+ Else
+ Printer1.WriteString(s.GetString("PE_CANT") & " " & s.GetString("PE_PRONOMBRE") & CRLF)
+ Private strT As String = ""
+ strT = s.GetString("L_CANT")&s.GetString("L_COSTOU")&s.GetString("L_COSTO_TOT")
+ TAMANO = strT.Length
+ ESPACIO = ESPACIO - TAMANO
+ For E=0 To ESPACIO -1
+ BLANCO = " " & BLANCO
+ Next
+' If Logger Then Log($"|${ESPACIO}|, |${TAMANO}|, |${BLANCO}|"$)
+ Private pecostou As String = 0
+ If s.GETSTRING("PE_COSTOU") <> Null And IsNumber(s.GETSTRING("PE_COSTOU")) Then pecostou = s.GETSTRING("PE_COSTOU")
+ Private pecostotot As String = 0
+ If s.GETSTRING("PE_COSTO_TOT") <> Null And IsNumber(s.GETSTRING("PE_COSTO_TOT")) Then pecostotot = s.GETSTRING("PE_COSTO_TOT")
+ Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & NumberFormat2(pecostou, 1, 2, 2, False) & " $" & NumberFormat2(pecostotot, 1, 2, 2, False) & CRLF)
+' Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & s.GETSTRING("PE_COSTOU") & " $" & s.GETSTRING("PE_COSTO_TOT") & CRLF)
+ TAMANO = 0
+ ESPACIO = 14
+ BLANCO = " "
+ End If
+ Next
+ End If
+ s.Close
+ Printer1.WriteString(CRLF)
+ Printer1.WriteString("------------RMI---------------" & CRLF)
+ s=Starter.skmt.ExecQuery2("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU, PE_COSTO_TOT, length(PE_COSTO_TOT) as L_COSTO_TOT, PE_PROID, PE_CEDIS FROM PEDIDO WHERE PE_TIPO = ? and substr(pe_pronombre,1,6) = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_PRONOMBRE", Array As String("ABORDO","CAMBIO"))
+ If S.RowCount>0 Then
+ For i=0 To S.RowCount -1
+ TAMANO = 0
+ ESPACIO = 14
+ BLANCO = " "
+ S.Position=i
+ If s.GetString("PE_CEDIS") = s.GetString("PE_PROID") Then
+ Printer1.WriteString(s.GetString("PE_PRONOMBRE") & CRLF)
+ Else
+ Printer1.WriteString(s.GetString("PE_CANT") & " " & s.GetString("PE_PRONOMBRE") & CRLF)
+ Private strT As String = ""
+ strT = s.GetString("L_CANT")&s.GetString("L_COSTOU")&s.GetString("L_COSTO_TOT")
+ TAMANO = strT.Length
+ ESPACIO = ESPACIO - TAMANO
+ For E=0 To ESPACIO -1
+ BLANCO = " " & BLANCO
+ Next
+ Private pecostou As String = 0
+ If s.GETSTRING("PE_COSTOU") <> Null And IsNumber(s.GETSTRING("PE_COSTOU")) Then pecostou = s.GETSTRING("PE_COSTOU")
+ Private pecostotot As String = 0
+ If s.GETSTRING("PE_COSTO_TOT") <> Null And IsNumber(s.GETSTRING("PE_COSTO_TOT")) Then pecostotot = s.GETSTRING("PE_COSTO_TOT")
+ Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & NumberFormat2(pecostou, 1, 2, 2, False) & " $" & NumberFormat2(pecostotot, 1, 2, 2, False) & CRLF)
+' Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & s.GETSTRING("PE_COSTOU") & " $" & s.GETSTRING("PE_COSTO_TOT") & CRLF)
+ TAMANO = 0
+ ESPACIO = 14
+ BLANCO = " "
+ End If
+ If logger Then Log($"|${ESPACIO}|, |${TAMANO}|, |${BLANCO}|"$)
+ Next
+ End If
+ s.Close
+ Printer1.WriteString(CRLF)
+
+ s=Starter.skmt.ExecQuery2("select SUM(PE_COSTO_TOT) AS TOTAL FROM PEDIDO WHERE PE_TIPO = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("ABORDO"))
+ s.Position =0
+ Private sTotal1 As Double
+ If s.GetString("TOTAL") <> Null And IsNumber(s.GETSTRING("TOTAL")) Then
+ sTotal1 = s.GetString("TOTAL")
+ Else
+ sTotal1 = 0
+ End If
+ Printer1.WriteString( "Total entrega: $" & NumberFormat2(sTotal1, 1, 2, 2, False) & CRLF)
+
+ Printer1.WriteString("===============================" & CRLF)
+ ''bold para las nuevas impresoras
+ Private total3 As String = 0
+ If s.GETSTRING("TOTAL") <> Null And IsNumber(s.GETSTRING("TOTAL")) Then total3 = s.GETSTRING("TOTAL")
+ Printer1.WriteString( Printer1.BOLD & "Total pedido: $" & NumberFormat2(total3, 1, 2, 2, False) & CRLF)
+
+ s.Close
+ 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"
+ If s.GetString("TOTAL") <> Null And IsNumber(s.GetString("TOTAL")) Then total4 = s.GetString("TOTAL")
+ Printer1.WriteString( Printer1.BOLD & "No. Productos: " & total4 & CRLF)
+ Printer1.WriteString("===============================" & CRLF)
+ s.Close
+ Printer1.WriteString(Printer1.DEFAULTS)
+
+' printer.WriteLine("------------VENTA-------------")
+ Printer1.WriteString(CRLF)
+ Printer1.WriteString(CRLF)
+
+ Printer1.WriteString( "Nombre y Firma del cliente" & CRLF)
+ Printer1.WriteString(CRLF)
+ Printer1.WriteString(CRLF)
+ Printer1.WriteString(CRLF)
+ Printer1.WriteString("______________________________" & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString("----ESTE TICKET NO ES UN -----" & CRLF)
+ Printer1.WriteString("--COMPROBANTE FISCAL, SOLO ES-" & CRLF)
+ Printer1.WriteString("--------INFORMATIVO-----------" & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString(CRLF)
+ Printer1.WriteString(CRLF)
+ Printer1.WriteString(CRLF)
+ 'printer.Close
+ Sleep(1000)
+ Printer1.DisConnect
+ Catch
+ ToastMessageShow("Error en la impresion 1.", True)
+ Printer1.Disconnect
+ B4XPages.ShowPage("Principal")
+ End Try
+ Else
+ Try
+ DateTime.DateFormat = "yyyymmdd"
+ sDate=DateTime.Date(DateTime.Now)
+ Printer1.WriteString("KELLOGG COMPANY MEXICO" & CRLF)
+ Printer1.WriteString("No. Ticket: " & sDate & la_cuenta.Text & CRLF)
+
+ DateTime.DateFormat = "MM/dd/yyyy"
+ sDate=DateTime.Date(DateTime.Now)
+
+ Printer1.WriteString(sDate &" " & sTime & CRLF)
+ Printer1.WriteString("Vendedor:" & usuario & CRLF)
+ Printer1.WriteString("Ruta:" & ruta_tienda & CRLF)
+ Printer1.WriteString("Tienda: " & La_nombre.Text & CRLF)
+ Printer1.WriteString("ID.Cliente: " & la_cuenta.Text & CRLF)
+ Printer1.WriteString("Calle: " & la_Calle.Text & CRLF)
+ Printer1.WriteString("Colonia: " & la_col.Text & CRLF)
+ Printer1.WriteString("C.P.: " & la_cp.Text & CRLF)
+ Printer1.WriteString("Entre calle1: " & l_entre1.Text & CRLF)
+ Printer1.WriteString("Entre Calle2: " & l_entre2.Text & CRLF)
+ Printer1.WriteString(" " & CRLF)
+
+ ''''''' PEDIDOS DOE
+
+ s=Starter.skmt.ExecQuery2("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU, PE_COSTO_TOT, length(PE_COSTO_TOT) as L_COSTO_TOT, PE_PROID, PE_CEDIS FROM PEDIDO WHERE PE_CEDIS = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_CEDIS,PE_PRONOMBRE", Array As String("DOE"))
+
+ '' s=Starter.skmt.ExecQuery2("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU, PE_COSTO_TOT, length(PE_COSTO_TOT) as L_COSTO_TOT, PE_PROID, PE_CEDIS FROM PEDIDO WHERE PE_TIPO = ? and pe_codpromo = ? and substr(pe_pronombre,1,6) <> ? AND PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_CEDIS,PE_PRONOMBRE", Array As String("VENTA", "DOE", "CAMBIO"))
+ If S.RowCount>0 Then
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString("PEDIDO DON TOÑO" & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ For i=0 To S.RowCount -1
+ S.Position=i
+
+ If s.GetString("PE_CEDIS") = s.GetString("PE_PROID") Then
+ Printer1.WriteString(s.GetString("PE_PRONOMBRE") & CRLF)
+ Else
+ Private strT As String = ""
+ Printer1.WriteString(s.GetString("PE_CANT") & " " & s.GetString("PE_PRONOMBRE") & CRLF)
+ Private strT As String = ""
+ strT = s.GetString("L_CANT")&s.GetString("L_COSTOU")&s.GetString("L_COSTO_TOT")
+ TAMANO = strT.Length
+ ESPACIO = ESPACIO - TAMANO
+ For E=0 To ESPACIO -1
+ BLANCO = " " & BLANCO
+ Next
+ Private pecostou As String = 0
+ If s.GETSTRING("PE_COSTOU") <> Null And IsNumber(s.GETSTRING("PE_COSTOU")) Then pecostou = s.GETSTRING("PE_COSTOU")
+ Private pecostotot As String = 0
+ If s.GETSTRING("PE_COSTO_TOT") <> Null And IsNumber(s.GETSTRING("PE_COSTO_TOT")) Then pecostotot = s.GETSTRING("PE_COSTO_TOT")
+ Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & NumberFormat2(pecostou, 1, 2, 2, False) & " $" & NumberFormat2(pecostotot, 1, 2, 2, False) & CRLF)
+' Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & s.GETSTRING("PE_COSTOU") & " $" & s.GETSTRING("PE_COSTO_TOT") & CRLF)
+' If Logger Then Log($"|${ESPACIO}|, |${TAMANO}|, |${BLANCO}|"$)
+ TAMANO = 0
+ ESPACIO = 14
+ BLANCO = " "
+ End If
+ Next
+ End If
+ s.Close
+
+ 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_CEDIS = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("DOE"))
+ s.Position = 0
+ Private sTotal2 As Double
+ If s.GetString("TOTAL") <> Null And IsNumber(s.GETSTRING("TOTAL")) Then
+ sTotal2 = s.GetString("TOTAL")
+ Printer1.WriteString( $"Sub Total : $${NumberFormat2(sTotal2, 1, 2, 2, False)}"$ & CRLF)
+
+ Else
+ sTotal2 = 0
+ End If
+ Private cantidad1 As String = "0"
+ If s.GetString("CANTIDAD") <> Null And IsNumber(s.GetString("CANTIDAD")) Then
+ cantidad1 = s.GetString("CANTIDAD")
+
+ Printer1.WriteString( "No. Productos: " & cantidad1 & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString("FIN PEDIDO DON TOÑO" & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ End If
+
+ ' Printer1.WriteString(CRLF)
+ s.Close
+ ''''SE MODIFCA EL QUERY POR LOS PEDIDOS DOE
+ S=Starter.skmt.ExecQuery2("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU, PE_COSTO_TOT, length(PE_COSTO_TOT) as L_COSTO_TOT, PE_PROID, PE_CEDIS FROM PEDIDO WHERE PE_TIPO = ? and substr(pe_pronombre,1,6) <> ? AND PE_CEDIS <> ? AND PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_CEDIS,PE_PRONOMBRE", Array As String("VENTA","CAMBIO","DOE"))
+
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString("VENTA" & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ ''s=Starter.skmt.ExecQuery2("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU, PE_COSTO_TOT, length(PE_COSTO_TOT) as L_COSTO_TOT, PE_PROID, PE_CEDIS FROM PEDIDO WHERE PE_TIPO = ? and pe_codpromo <> ? and substr(pe_pronombre,1,6) <> ? AND PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_CEDIS,PE_PRONOMBRE", Array As String("VENTA", "DOE", "CAMBIO"))
+ If S.RowCount>0 Then
+ For i=0 To S.RowCount -1
+ S.Position=i
+ If s.GetString("PE_CEDIS") = s.GetString("PE_PROID") Then
+ Printer1.WriteString(s.GetString("PE_PRONOMBRE") & CRLF)
+ Else
+ Private strT As String = ""
+ Printer1.WriteString(s.GetString("PE_CANT") & " " & s.GetString("PE_PRONOMBRE") & CRLF)
+ Private strT As String = ""
+ strT = s.GetString("L_CANT")&s.GetString("L_COSTOU")&s.GetString("L_COSTO_TOT")
+ TAMANO = strT.Length
+ ESPACIO = ESPACIO - TAMANO
+ For E=0 To ESPACIO -1
+ BLANCO = " " & BLANCO
+ Next
+ Private pecostou As String = 0
+ If s.GETSTRING("PE_COSTOU") <> Null And IsNumber(s.GETSTRING("PE_COSTOU")) Then pecostou = s.GETSTRING("PE_COSTOU")
+ Private pecostotot As String = 0
+ If s.GETSTRING("PE_COSTO_TOT") <> Null And IsNumber(s.GETSTRING("PE_COSTO_TOT")) Then pecostotot = s.GETSTRING("PE_COSTO_TOT")
+ Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & NumberFormat2(pecostou, 1, 2, 2, False) & " $" & NumberFormat2(pecostotot, 1, 2, 2, False) & CRLF)
+' Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & s.GETSTRING("PE_COSTOU") & " $" & s.GETSTRING("PE_COSTO_TOT") & CRLF)
+' If Logger Then Log($"|${ESPACIO}|, |${TAMANO}|, |${BLANCO}|"$)
+ TAMANO = 0
+ ESPACIO = 14
+ BLANCO = " "
+ End If
+ Next
+ End If
+ s.Close
+ 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_CEDIS <> ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("VENTA","CAMBIO","DOE"))
+ s.Position = 0
+ Private sTotal2 As Double
+ If s.GetString("TOTAL") <> Null And IsNumber(s.GETSTRING("TOTAL")) Then
+ sTotal2 = s.GetString("TOTAL")
+ Else
+ sTotal2 = 0
+ End If
+ Printer1.WriteString(Printer1.REVERSE & "===============================" & CRLF)
+ Printer1.WriteString( Printer1.UNREVERSE & Printer1.BOLD & $"Sub Total Venta: $${NumberFormat2(sTotal2, 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")
+ Printer1.WriteString( Printer1.UNREVERSE & Printer1.BOLD & "No. Productos: " & cantidad1 & CRLF)
+ Printer1.WriteString(CRLF)
+ s.Close
+ Printer1.WriteString("------------RMI---------------" & CRLF)
+ s=Starter.skmt.ExecQuery2("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU, PE_COSTO_TOT, length(PE_COSTO_TOT) as L_COSTO_TOT, PE_PROID, PE_CEDIS FROM PEDIDO WHERE PE_TIPO = ? and substr(pe_pronombre,1,6) = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("VENTA","CAMBIO"))
+ If S.RowCount>0 Then
+ For i=0 To S.RowCount -1
+ S.Position=i
+ If s.GetString("PE_CEDIS") = s.GetString("PE_PROID") Then
+ Printer1.WriteString(s.GetString("PE_PRONOMBRE") & CRLF)
+
+ Else
+ Printer1.WriteString(s.GetString("PE_CANT") & " " & s.GetString("PE_PRONOMBRE") & CRLF)
+ Private strT As String = ""
+ strT = s.GetString("L_CANT")&s.GetString("L_COSTOU")&s.GetString("L_COSTO_TOT")
+ TAMANO = strT.Length
+ ESPACIO = ESPACIO - TAMANO
+ For E=0 To ESPACIO -1
+ BLANCO = " " & BLANCO
+ Next
+ Private pecostou As String = 0
+ If s.GETSTRING("PE_COSTOU") <> Null And IsNumber(s.GETSTRING("PE_COSTOU")) Then pecostou = s.GETSTRING("PE_COSTOU")
+ Private pecostotot As String = 0
+ If s.GETSTRING("PE_COSTO_TOT") <> Null And IsNumber(s.GETSTRING("PE_COSTO_TOT")) Then pecostotot = s.GETSTRING("PE_COSTO_TOT")
+ Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & NumberFormat2(pecostou, 1, 2, 2, False) & " $" & NumberFormat2(pecostotot, 1, 2, 2, False) & CRLF)
+' Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & s.GETSTRING("PE_COSTOU") & " $" & s.GETSTRING("PE_COSTO_TOT") & CRLF)
+ If logger Then Log($"|${ESPACIO}|, |${TAMANO}|, |${BLANCO}|"$)
+ TAMANO = 0
+ ESPACIO = 14
+ BLANCO = " "
+ End If
+ Next
+ End If
+ s.Close
+
+ 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 sTotal3 As Double
+ If s.GetString("TOTAL") <> Null And IsNumber(s.GetString("TOTAL")) Then
+ sTotal3 = s.GetString("TOTAL")
+ Else
+ sTotal3 = 0
+ End If
+ Printer1.WriteString(Printer1.REVERSE & "===============================" & CRLF)
+ 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")
+ Printer1.WriteString( Printer1.UNREVERSE & Printer1.BOLD & "No. Productos: " & cantidad2 & CRLF)
+ Printer1.WriteString(CRLF)
+ s.Close
+ Printer1.WriteString(CRLF)
+ s=Starter.skmt.ExecQuery2("select SUM(PE_COSTO_TOT) AS TOTAL FROM PEDIDO WHERE PE_TIPO = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("VENTA"))
+ s.Position =0
+ Printer1.WriteString(Printer1.REVERSE & "===============================" & CRLF)
+ Private total2 As String = 0
+ If s.GETSTRING("TOTAL") <> Null And IsNumber(s.GETSTRING("TOTAL")) Then total2 = s.GETSTRING("TOTAL")
+ Printer1.WriteString(Printer1.UNREVERSE & Printer1.BOLD & "Total venta: $" & NumberFormat2(total2, 1, 2, 2, False) & CRLF)
+' Printer1.WriteString(Printer1.UNREVERSE & Printer1.BOLD & "Total venta: $" & s.GetString("TOTAL") & CRLF)
+' Printer1.WriteString("===============================" & CRLF)
+'
+' Printer1.WriteString( "Total venta: $" & s.GetString("TOTAL") & CRLF)
+ s.Close
+ s=Starter.skmt.ExecQuery2("select SUM(PE_CANT) AS TOTAL FROM PEDIDO WHERE PE_CEDIS <> PE_PROID AND PE_TIPO = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("VENTA"))
+ s.Position =0
+ Private total5 As String = "0"
+ If s.GetString("TOTAL") <> Null And IsNumber(s.GetString("TOTAL")) Then total5 = s.GetString("TOTAL")
+ Printer1.WriteString(Printer1.BOLD & "No. Productos vendidos: " & (total5 - cantidad2) & CRLF)
+ Printer1.WriteString(Printer1.BOLD & "Producto devuelto : " & cantidad2 & CRLF)
+ Printer1.WriteString(Printer1.REVERSE & "===============================" & CRLF)
+' Printer1.WriteString( "No. Productos: " & s.GetString("TOTAL") & CRLF)
+' Printer1.WriteString( "===============================" & CRLF)
+ s.Close
+ Printer1.WriteString(Printer1.UNREVERSE)
+ Printer1.WriteString(Printer1.NOBOLD)
+' printer.WriteLine("------------VENTA-------------")
+' printer.WriteLine("TOTAL COMPRA: $:" & total_cliente)
+' Printer1.WriteString(Printer1.DEFAULTS & CRLF)
+ Printer1.WriteString(CRLF)
+ ' Printer1.WriteString(Printer1.SINGLE)
+ 'Printer1.WriteString("------------------------------")
+ ' Printer1.WriteString(Printer1.HIGH)
+ ' Printer1.Justify = 1
+ Printer1.WriteString( "Nombre y Firma del cliente" & CRLF)
+ Printer1.WriteString(CRLF)
+ Printer1.WriteString(CRLF)
+ Printer1.WriteString(CRLF)
+ ' Printer1.WriteString(Printer1.DEFAULTS)
+ ' Printer1.WriteString(Printer1.SINGLE)
+ Printer1.WriteString("______________________________" & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString("----ESTE TICKET NO ES UN -----" & CRLF)
+ Printer1.WriteString("--COMPROBANTE FISCAL, SOLO ES-" & CRLF)
+ Printer1.WriteString("--------INFORMATIVO-----------" & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString(CRLF)
+ Printer1.WriteString(CRLF)
+ Printer1.WriteString(CRLF)
+ Sleep(1000)
+ Printer1.DisConnect
+ Catch
+ ToastMessageShow("Error en la impresion 2.", True)
+ Printer1.Disconnect
+ B4XPages.ShowPage("Principal")
+ End Try
+ End If
+ Sleep(1000)
+ B_IMP2.Enabled = True
+ ProgressDialogHide
+' If Logger Then Log("Habilitamos boton")
+End Sub
+
+Sub Printer_Connected (Success As Boolean)
+ If Success Then
+ B_IMP.Enabled = True
+ PASA_IMP = "1"
+ Else
+ B_IMP.Enabled = False
+ If Msgbox2("", "Printer Error","Reprint","Cancel","",Null) = DialogResponse.POSITIVE Then 'ignore
+ StartPrinter
+ End If
+ End If
+End Sub
+
+Sub StartPrinter
+ Dim PairedDevices As Map
+ Dim L As List
+ Dim resimp As Int
+ ToastMessageShow("Printing.....",True)
+ PairedDevices.Initialize
+ Try
+ PairedDevices = cmp20.GetPairedDevices
+ Catch
+ Msgbox("Getting Paired Devices","Printer Error") 'ignore
+ printer.Close
+ cmp20.Disconnect
+ End Try
+
+ If PairedDevices.Size = 0 Then
+ Msgbox("Error Connecting to Printer - Printer Not Found","") 'ignore
+ Return
+ End If
+
+ If PairedDevices.Size = 1 Then
+ Try
+ cmp20.Connect(PairedDevices.Get(PairedDevices.GetKeyAt(0)))
+ Catch
+ Msgbox("Connecting","Printer Error") 'ignore
+ printer.Close
+ cmp20.Disconnect
+ End Try
+ Else
+ L.Initialize
+ For i = 0 To PairedDevices.Size - 1
+ L.Add(PairedDevices.GetKeyAt(i))
+ Next
+ resimp = InputList(L, "Choose device", -1) 'ignore
+ If resimp <> DialogResponse.CANCEL Then
+ cmp20.Connect(PairedDevices.Get(L.Get(resimp)))
+ End If
+ End If
+End Sub
+
+
+Sub B_VENTA_Click
+ If la_cuenta.Text = "0" Then
+ Starter.tipov = "ABORDO"
+ Subs.iniciaActividad("Productos")
+ Else
+ Cuestionario
+ End If
+End Sub
+
+'Muestra un boton con las dimensiones, posicion y texto especificados.
+Sub muestraBoton (thisButton As Button, theText As String, Left As Int, Top As Int, width As Int, height As Int)
+ thisButton.Text = theText
+ thisButton.Tag = theText
+ thisButton.Left = Left
+ thisButton.Top = Top
+ thisButton.Width = width
+ thisButton.Height = height
+ thisButton.Visible = True
+End Sub
+
+'Muestra un boton con las dimensiones, posicion y texto especificados.
+Sub muestraBotonCentrado (thisButton As Button, theText As String, Top As Int, width As Int, height As Int) 'ignore
+ Private anchoPantalla As Int
+ thisButton.Text = theText
+ thisButton.Tag = theText
+ anchoPantalla = GetDeviceLayoutValues.Width
+ thisButton.Left = (anchoPantalla/2) - (width/2)
+ thisButton.Top = Top
+ thisButton.Width = width
+ thisButton.Height = height
+ thisButton.Visible = True
+End Sub
+
+'Esta subrutina muestra las encuestas.
+Sub Cuestionario
+ DateTime.DateFormat = "MM/dd/yyyy"
+ sDate=DateTime.Date(DateTime.Now)
+ sTime=DateTime.Time(DateTime.Now)
+ CUANTOS = 0
+ 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
+ CUANTOS = s.GetString("CUANTOS")
+ Private CUANTOS2 As Int = 0
+ s=Starter.skmt.ExecQuery("select COUNT(*) AS CUANTOS2 from HIST_ENCUESTA2 where HE_CLIENTE In (Select cuenta from cuentaa)")
+ s.Position = 0
+ CUANTOS2 = s.GetString("CUANTOS2")
+ If logger Then LogColor($"Hist:encuesta=${CUANTOS}, hist_encuesta2 = ${CUANTOS2}"$, Colors.Magenta)
+ End If
+ If CUANTOS = 0 And CUANTOS2 = 0 Then
+ c=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 c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ If TOMAR_FOTO = 1 Then
+ If CURSOR_FOTO + 1 > c.RowCount -1 Then
+ TOMAR_FOTO = 0
+ Exit
+ Else
+ i = CURSOR_FOTO +1
+ End If
+ 'Msgbox(i,"a")
+ TOMAR_FOTO = 0
+ End If
+ c.Position=i
+ Dim tipoPregunta As String = c.GetString("CAT_EP_IDTIPOPREGUNTA")
+' If Logger Then Log("=================== "&tipoPregunta)
+' If Logger Then Log($"Pregunta tipo: ${tipoPregunta}"$)
+ ' Msgbox("paso1","a")
+ If c.GetString("CAT_EP_IDTIPOPREGUNTA") = 5 Then
+ id_encuesta = c.GetString("CAT_EP_ID")
+ TOMAR_FOTO = 1
+ CURSOR_FOTO = i
+ Subs.iniciaActividad("foto")
+ ' Msgbox("paso2","a")
+ Exit
+ ELSE IF c.GetString("CAT_EP_IDTIPOPREGUNTA") = 3 Then ' Tipo SI/NO
+ botonPresionado = 0 ' Bandera para que espere a que se conteste la pregunta
+ l_titEncuesta.Text = c.GetString("CAT_CE_DESCRIPCION")
+ l_txtEncuesta.Text = c.GetString("CAT_EP_PREGUNTA")
+ Subs.centraEtiqueta(l_txtEncuesta, Root.Width)
+ muestraBoton(b_encuesta_1,"SI", centroPantalla-350, 580, 300, 160)
+ muestraBoton(b_encuesta_2, "NO", centroPantalla+50, 580, 300, 160)
+ muestraEncuesta
+ Do Until botonPresionado = 1 'Esperamos que respondan la pregunta
+ Sleep(0)
+ Loop
+ Starter.skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, encuestaRes,sDate & sTime,c.GetString("CAT_EP_ID")))
+ ocultaPanelEncuesta
+ ELSE IF c.GetString("CAT_EP_IDTIPOPREGUNTA") = 4 Then
+ res = Msgbox2(c.GetString("CAT_EP_PREGUNTA"),c.GetString("CAT_CE_DESCRIPCION"), "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore
+ If res = DialogResponse.POSITIVE Then
+ Starter.skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, "SI",sDate & sTime,c.GetString("CAT_EP_ID")))
+ Else IF res = DialogResponse.NEGATIVE Then
+ Starter.skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, "NO",sDate & sTime,c.GetString("CAT_EP_ID")))
+ i = c.GetInt("CAT_EP_RES2_PRED") -2
+ Else IF res = DialogResponse.CANCEL Then
+ i = i -1
+ End If
+ ' Msgbox("paso3","a")
+ ELSE If c.GetString("CAT_EP_IDTIPOPREGUNTA") = 2 Then ' Tipo 3 opciones.
+ botonPresionado = 0 ' Bandera para que espere a que se conteste la pregunta.
+ l_titEncuesta.Text = c.GetString("CAT_CE_DESCRIPCION")
+ l_txtEncuesta.Text = c.GetString("CAT_EP_PREGUNTA")
+ muestraBoton(b_encuesta_1, c.GetString("CAT_EP_RES2_PRED"), centroPantalla-250, 580, 500, 160)
+ muestraBoton(b_encuesta_2, c.GetString("CAT_EP_RES3_PRED"), centroPantalla-250, 740, 500, 160)
+ muestraBoton(b_encuesta_3, c.GetString("CAT_EP_RES1_PRED"), centroPantalla-250, 900, 500, 160)
+ muestraEncuesta
+ Do Until botonPresionado = 1 'Esperamos que respondan la pregunta.
+ Sleep(0)
+ Loop
+ Starter.skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, encuestaRes,sDate & sTime,c.GetString("CAT_EP_ID")))
+ ocultaPanelEncuesta
+ ELSE If c.GetString("CAT_EP_IDTIPOPREGUNTA") = 6 Then
+ Panel10.Visible = True
+ l_chk_e.Text = c.GetString("CAT_EP_PREGUNTA")
+ Chk_1.Checked = False
+ chk_2.Checked = False
+ chk_3.Checked = False
+ Chk_1.Text = c.GetString("CAT_EP_RES1_PRED")
+ chk_2.Text = c.GetString("CAT_EP_RES2_PRED")
+ chk_3.Text = c.GetString("CAT_EP_RES3_PRED")
+ chk_1_valor = c.GetString("CAT_EP_RES1_PRED")
+ chk_2_valor = c.GetString("CAT_EP_RES2_PRED")
+ chk_3_valor = c.GetString("CAT_EP_RES3_PRED")
+ Chk_1.Tag = c.GetString("CAT_EP_ID")
+ chk_2.Tag = c.GetString("CAT_EP_ID")
+ chk_3.Tag = c.GetString("CAT_EP_ID")
+ TOMAR_FOTO = 1
+ CURSOR_FOTO = i
+ Exit
+ ELSE If c.GetString("CAT_EP_IDTIPOPREGUNTA") = 1 Then
+ botonPresionado = 0 ' Bandera para que espere a que se conteste la pregunta
+ l_titEncuesta.Text = c.GetString("CAT_CE_DESCRIPCION")
+ l_txtEncuesta.Text = c.GetString("CAT_EP_PREGUNTA")
+ Subs.centraEditText(et_encuesta, Root.Width)
+ et_encuesta.Visible = True
+ b_encuesta_continuar.Enabled = False
+ muestraBoton(b_encuesta_continuar,"Continuar", centroPantalla-250, 680, 500, 160)
+ muestraEncuesta
+ Do Until botonPresionado = 1 'Esperamos que respondan la pregunta
+ Sleep(0)
+ Loop
+ Starter.skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, encuestaRes,sDate & sTime,c.GetString("CAT_EP_ID")))
+ ocultaPanelEncuesta
+ Else
+ Starter.tipov = "VENTA"
+ Subs.iniciaActividad("Productos")
+ End If
+ Next
+ Else
+ Starter.tipov = "VENTA"
+ Subs.iniciaActividad("Productos")
+ End If
+ Else
+ Starter.tipov = "VENTA"
+ Subs.iniciaActividad("Productos")
+ End If
+End Sub
+
+Sub b1_Click
+ Log("B1 clicked")
+End Sub
+
+Sub b2_Click
+ If logger Then Log("B2 clicked")
+End Sub
+
+Sub b_factura_Click
+
+End Sub
+
+Sub CH_TA_CheckedChange(Checked As Boolean)
+
+End Sub
+
+Sub CH_TC_CheckedChange(Checked As Boolean)
+
+End Sub
+
+Sub CH_TB_CheckedChange(Checked As Boolean)
+
+End Sub
+
+Sub CH_TD_CheckedChange(Checked As Boolean)
+
+End Sub
+
+Sub B_GUARDAR_Click
+ If logger Then Log("Guardar clic")
+ If CH_TA.Checked = True Then
+ TIPOEX = "TIPO A"
+ ELSE If CH_TB.Checked = True Then
+ TIPOEX = "TIPO B"
+ ELSE If CH_TC.Checked = True Then
+ TIPOEX = "TIPO C"
+ ELSE If CH_TD.Checked = True Then
+ TIPOEX = "TIPO D"
+ End If
+ Panel1.Visible = False
+ B_EXIBI.Visible = True
+ b_factura.Visible = True
+ HIST.Visible = True
+ c=Starter.skmt.ExecQuery("select CUENTA from cuentaa")
+ c.Position = 0
+ cuenta = c.GetString("CUENTA")
+ Starter.skmt.ExecNonQuery2("INSERT INTO HIST_EXIBIDORES(CAT_CL_CLIENTE,CAT_CL_EXHIBIDOR,CAT_CL_BEXHIBIDOR) VALUES(?,?,?)", Array As Object(cuenta,TIPOEX,E_CUANTOS_E.Text))
+End Sub
+
+Sub B_EXIBI_Click
+ Panel1.Visible = True
+ B_EXIBI.Visible = False
+ b_factura.Visible = False
+ HIST.Visible = False
+End Sub
+
+'''''''''''''''''''''''''''''''''''''' BOLETA DE LIQUIDACION
+Sub LLAMA_BOLETA
+ '' FECHA DE TELEFONO
+ If Subs.clienteActual = "" Then Starter.skmt.ExecNonQuery("insert into cuentaa (cuenta) values (0)")
+ DateTime.DateFormat="dd/MM/yyyy"
+ Edt_FH.Text=DateTime.Date(DateTime.Now)
+ Subs.panelAnchoAlto(PNL_TOTALES, Root.Width, Root.Height)
+ PNL_TOTALES.Visible=True
+ Pnl_Billete.Visible=True
+ Pnl_Moneda.visible=True
+ LBL_RETURN.Visible=False
+ LBL_REGRESA.Visible=False
+ Subs.panelAnchoAlto(P_BOLETA, Root.Width, Root.Height)
+ P_BOLETA.Visible=True
+ P_INF_GENERAL.Visible=False
+ If logger Then Log("Panel general="&P_INF_GENERAL.Visible)
+ LBL_REGRESA.Visible=True
+ Private c As Cursor = Starter.skmt.ExecQuery("select * from TMP_CAT_BILLETE join TMP_CAT_MONEDAS")
+ If c.RowCount > 0 Then
+ c.Position = 0
+ If logger Then Log("==================== CALCULADORA "&c.ColumnCount)
+' Traemos billetes
+ EDT_CANMIL.Text = "0"
+ If IsNumber(c.GetString("TMP_BILLE_MIL")) Then EDT_CANMIL.Text = c.GetString("TMP_BILLE_MIL")
+ EDT_CANQUIN.Text = "0"
+ If c.GetString("TMP_BILLE_QUINIENTOS")<> Null Then EDT_CANQUIN.Text = c.GetString("TMP_BILLE_QUINIENTOS")
+ EDT_CANDOS.Text = "0"
+ If c.GetString("TMP_BILLE_DOSCIENTOS") <>Null Then EDT_CANDOS.Text = c.GetString("TMP_BILLE_DOSCIENTOS")
+ EDT_CANCIEN.Text = "0"
+ If c.GetString("TMP_BILLE_CIEN")<> Null Then EDT_CANCIEN.Text = c.GetString("TMP_BILLE_CIEN")
+ EDT_CANCIN.Text = "0"
+ If c.GetString("TMP_BILLE_CINCUENTA")<> Null Then EDT_CANCIN.Text = c.GetString("TMP_BILLE_CINCUENTA")
+ EDT_CANVEIN.Text = "0"
+ If c.GetString("TMP_BILLE_VEINTE")<> Null Then EDT_CANVEIN.Text = c.GetString("TMP_BILLE_VEINTE")
+' Traemos monedas
+ EDT_CANVEINTE.Text = "0"
+ If c.GetString("TMP_MON_VEINTE")<> Null Then EDT_CANVEINTE.Text = c.GetString("TMP_MON_VEINTE")
+ EDT_CANDIEZ.Text = "0"
+ If c.GetString("TMP_MON_DIEZ")<> Null Then EDT_CANDIEZ.Text = c.GetString("TMP_MON_DIEZ")
+ EDT_CANCI.Text = "0"
+ If c.GetString("TMP_MON_CINCO")<> Null Then EDT_CANCI.Text = c.GetString("TMP_MON_CINCO")
+ EDT_CANDO.Text = "0"
+ If c.GetString("TMP_MON_DOS")<> Null Then EDT_CANDO.Text = c.GetString("TMP_MON_DOS")
+ EDT_CANUN.Text = "0"
+ If c.GetString("TMP_MON_UN")<> Null Then EDT_CANUN.Text = c.GetString("TMP_MON_UN")
+ EDT_CANCEN.Text = "0"
+ If c.GetString("TMP_MON_CENTAVOS")<> Null Then EDT_CANCEN.Text = c.GetString("TMP_MON_CENTAVOS")
+ L_CALCULA_BILLE_CLICK
+ L_CALCULA_MONEDA_Click
+ B_SUM_TOTAL.Text = TOTALBILLETES.Text + TOTALMONEDA.text
+ End If
+ 'Starter.boleta = 0
+ c.Close
+End Sub
+
+'''BILLETES
+Sub L_CALCULA_BILLE_CLICK
+ If EDT_CANMIL.Text="" Or EDT_CANQUIN.Text="" Or EDT_CANDOS.Text="" Or EDT_CANCIEN.Text="" Or EDT_CANCIN.Text="" Or EDT_CANVEIN.Text="" Then
+ Pnl_Billete.RequestFocus
+ Msgbox("Por favor llena todas las cantidades","") 'ignore
+ Else
+ LBL_TMIL.Text= LBL_MIL.Tag * EDT_CANMIL.Text
+ LBL_TQUIN.Text=LBL_QUIN.Tag * EDT_CANQUIN.Text
+ LBL_TDOS.Text=LBL_DOSC.Tag * EDT_CANDOS.Text
+ LBL_TCIEN.Text=LBL_CIEN.Tag * EDT_CANCIEN.Text
+ LBL_TCIN.Text=LBL_CINCUEN.Tag * EDT_CANCIN.Text
+ LBL_TVEIN.Text=LBL_VEINTE.Tag * EDT_CANVEIN.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+ End If
+End Sub
+
+'20
+Private Sub EDT_CANVEIN_FocusChanged (HasFocus As Boolean)
+ If EDT_CANVEIN.Text = "" Then EDT_CANVEIN.Text = "0"
+ EDT_CANVEIN.Text = Round (EDT_CANVEIN.Text)
+ LBL_TVEIN.Text=LBL_VEINTE.Tag * EDT_CANVEIN.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+End Sub
+
+Sub B_SUVEI_Click
+ If EDT_CANVEIN.Text = "" Then
+ EDT_CANVEIN.Text=0
+ LBL_TVEIN.Text=LBL_VEINTE.Tag * EDT_CANVEIN.Text
+ Else
+ EDT_CANVEIN.Text = Round (EDT_CANVEIN.Text + 1)
+ LBL_TVEIN.Text=LBL_VEINTE.Tag * EDT_CANVEIN.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+ End If
+End Sub
+
+Sub B_MENVEI_Click
+ If EDT_CANVEIN.Text = "" Then
+ EDT_CANVEIN.Text=0
+ LBL_TVEIN.Text=LBL_VEINTE.Tag * EDT_CANVEIN.Text
+ Else IF EDT_CANVEIN.Text > 0 Then
+ EDT_CANVEIN.Text = Round(EDT_CANVEIN.Text -1)
+ LBL_TVEIN.Text=LBL_VEINTE.Tag * EDT_CANVEIN.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+ End If
+End Sub
+'50
+Private Sub EDT_CANCIN_FocusChanged (HasFocus As Boolean)
+ If EDT_CANCIN.Text = "" Then EDT_CANCIN.Text = "0"
+ EDT_CANCIN.Text = Round (EDT_CANCIN.Text)
+ LBL_TCIN.Text=LBL_CINCUEN.Tag * EDT_CANCIN.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+End Sub
+
+Sub B_SUCIN_Click
+ If EDT_CANCIN.Text = "" Then
+ EDT_CANCIN.Text =0
+ LBL_TCIN.Text=LBL_CINCUEN.Tag * EDT_CANCIN.Text
+ Else
+ EDT_CANCIN.Text = Round (EDT_CANCIN.Text + 1)
+ LBL_TCIN.Text=LBL_CINCUEN.Tag * EDT_CANCIN.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+ End If
+End Sub
+
+Sub B_MENCIN_Click
+ If EDT_CANCIN.Text = "" Then
+ EDT_CANCIN.Text =0
+ LBL_TCIN.Text=LBL_CINCUEN.Tag * EDT_CANCIN.Text
+ Else IF EDT_CANCIN.Text > 0 Then
+ EDT_CANCIN.Text = Round(EDT_CANCIN.Text -1)
+ LBL_TCIN.Text=LBL_CINCUEN.Tag * EDT_CANCIN.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+ End If
+End Sub
+
+'100
+Private Sub EDT_CANCIEN_FocusChanged (HasFocus As Boolean)
+ If EDT_CANCIEN.Text = "" Then EDT_CANCIEN.Text = "0"
+ EDT_CANCIEN.Text = Round (EDT_CANCIEN.Text)
+ LBL_TCIEN.Text=LBL_CIEN.Tag * EDT_CANCIEN.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+End Sub
+
+Sub B_SUCIEN_Click
+ If EDT_CANCIEN.Text = "" Then
+ EDT_CANCIEN.Text = 0
+ LBL_TCIEN.Text=LBL_CIEN.Tag * EDT_CANCIEN.Text
+ Else
+ EDT_CANCIEN.Text = Round (EDT_CANCIEN.Text + 1)
+ LBL_TCIEN.Text=LBL_CIEN.Tag * EDT_CANCIEN.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+ End If
+End Sub
+
+Sub B_MENCIE_Click
+ If EDT_CANCIEN.Text = "" Then
+ EDT_CANCIEN.Text = 0
+ LBL_TCIEN.Text=LBL_CIEN.Tag * EDT_CANCIEN.Text
+ Else IF EDT_CANCIEN.Text > 0 Then
+ EDT_CANCIEN.Text = Round(EDT_CANCIEN.Text -1)
+ LBL_TCIEN.Text=LBL_CIEN.Tag * EDT_CANCIEN.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+ End If
+End Sub
+
+'200
+Private Sub EDT_CANDOS_FocusChanged (HasFocus As Boolean)
+ If EDT_CANDOS.Text = "" Then EDT_CANDOS.Text = "0"
+ EDT_CANDOS.Text = Round (EDT_CANDOS.Text)
+ LBL_TDOS.Text=LBL_DOSC.Tag * EDT_CANDOS.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+End Sub
+
+Sub B_SUDOS_Click
+ If EDT_CANDOS.Text = "" Then
+ EDT_CANDOS.Text = 0
+ LBL_TDOS.Text=LBL_DOSC.Tag * EDT_CANDOS.Text
+ Else
+ EDT_CANDOS.Text = Round (EDT_CANDOS.Text + 1)
+ LBL_TDOS.Text=LBL_DOSC.Tag * EDT_CANDOS.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+ End If
+End Sub
+
+Sub B_MENDOS_Click
+ If EDT_CANDOS.Text = "" Then
+ EDT_CANDOS.Text = 0
+ LBL_TDOS.Text=LBL_DOSC.Tag * EDT_CANDOS.Text
+ Else IF EDT_CANDOS.Text > 0 Then
+ EDT_CANDOS.Text = Round(EDT_CANDOS.Text -1)
+ LBL_TDOS.Text=LBL_DOSC.Tag * EDT_CANDOS.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+ End If
+End Sub
+
+'500
+Private Sub EDT_CANQUIN_FocusChanged (HasFocus As Boolean)
+ If EDT_CANQUIN.Text = "" Then EDT_CANQUIN.Text = "0"
+ EDT_CANQUIN.Text = Round (EDT_CANQUIN.Text)
+ LBL_TQUIN.Text=LBL_QUIN.Tag * EDT_CANQUIN.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+End Sub
+
+Sub B_SUQUI_Click
+ If EDT_CANQUIN.Text = "" Then
+ EDT_CANQUIN.Text =0
+ LBL_TQUIN.Text=LBL_QUIN.Tag * EDT_CANQUIN.Text
+ Else
+ EDT_CANQUIN.Text = Round (EDT_CANQUIN.Text + 1)
+ LBL_TQUIN.Text=LBL_QUIN.Tag * EDT_CANQUIN.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+ End If
+End Sub
+
+Sub B_MENQUI_Click
+ If EDT_CANQUIN.Text = "" Then
+ EDT_CANQUIN.Text =0
+ LBL_TQUIN.Text=LBL_QUIN.Tag * EDT_CANQUIN.Text
+ Else IF EDT_CANQUIN.Text > 0 Then
+ EDT_CANQUIN.Text = Round(EDT_CANQUIN.Text -1)
+ LBL_TQUIN.Text=LBL_QUIN.Tag * EDT_CANQUIN.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+ End If
+End Sub
+'1000
+Private Sub EDT_CANMIL_FocusChanged (HasFocus As Boolean)
+ If EDT_CANMIL.Text = "" Then EDT_CANMIL.Text = "0"
+ EDT_CANMIL.Text = Round (EDT_CANMIL.Text )
+ LBL_TMIL.Text= LBL_MIL.Tag * EDT_CANMIL.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+End Sub
+
+Sub B_SUMIL_Click
+ If EDT_CANMIL.Text = "" Then
+ EDT_CANMIL.Text = 0
+ LBL_TMIL.Text= LBL_MIL.Tag * EDT_CANMIL.Text
+ Else
+ EDT_CANMIL.Text = Round (EDT_CANMIL.Text + 1)
+ LBL_TMIL.Text= LBL_MIL.Tag * EDT_CANMIL.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+ End If
+End Sub
+
+Sub B_MENMIL_Click
+ If EDT_CANMIL.Text = "" Then
+ EDT_CANMIL.Text = 1
+ LBL_TMIL.Text= LBL_MIL.Tag * EDT_CANMIL.Text
+ Else IF EDT_CANMIL.Text > 0 Then
+ EDT_CANMIL.Text = Round(EDT_CANMIL.Text -1)
+ LBL_TMIL.Text= LBL_MIL.Tag * EDT_CANMIL.Text
+ Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text)
+ TOTALBILLETES.Text=Btn_TOTALBILLETE.Text
+ End If
+End Sub
+
+'''' MONEDAS
+Sub L_CALCULA_MONEDA_Click
+ If EDT_CANDIEZ.Text="" Or EDT_CANCI.Text="" Or EDT_CANDO.Text="" Or EDT_CANUN.Text="" Or EDT_CANCEN.Text="" Or EDT_CANVEINTE.Text="" Then
+ Msgbox("Por favor llena todas las cantidades","") 'ignore
+ Pnl_Billete.RequestFocus
+ Else
+ LBL_TDIEZ.Text= L_DIEZ.Tag * EDT_CANDIEZ.Text
+ LBL_TCI.Text= L_CINCO.Tag * EDT_CANCI.Text
+ LBL_TDO.Text=L_DOS.Tag * EDT_CANDO.Text
+ LBL_TUN.Text=L_UNO.Tag * EDT_CANUN.Text
+ LBL_TCEN.Text=L_CENTAVO.Tag * EDT_CANCEN.Text
+ LBL_TVEINTE.Text=L_VEINTE.Tag * EDT_CANVEINTE.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text)
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+ End If
+End Sub
+
+'0.50
+Private Sub EDT_CANCEN_FocusChanged (HasFocus As Boolean)
+ If EDT_CANCEN.Text = "" Then EDT_CANCEN.Text = "0"
+ EDT_CANCEN.Text = Round (EDT_CANCEN.Text)
+ LBL_TCEN.Text=L_CENTAVO.Tag * EDT_CANCEN.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text)
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+End Sub
+
+Sub B_SUMCENT_Click
+ If EDT_CANCEN.Text = "" Then
+ EDT_CANCEN.Text = 0
+ LBL_TCEN.Text=L_CENTAVO.Tag * EDT_CANCEN.Text
+ Else
+ EDT_CANCEN.Text = Round (EDT_CANCEN.Text + 1)
+ LBL_TCEN.Text=L_CENTAVO.Tag * EDT_CANCEN.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text)
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+ End If
+End Sub
+
+Sub B_MENCENT_Click
+ If EDT_CANCEN.Text = "" Then
+ EDT_CANCEN.Text =0
+ LBL_TCEN.Text=L_CENTAVO.Tag * EDT_CANCEN.Text
+ Else IF EDT_CANCEN.Text > 0 Then
+ EDT_CANCEN.Text = Round(EDT_CANCEN.Text -1)
+ LBL_TCEN.Text=L_CENTAVO.Tag * EDT_CANCEN.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text)
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+ End If
+End Sub
+
+'1
+Private Sub EDT_CANUN_FocusChanged (HasFocus As Boolean)
+ If EDT_CANUN.Text = "" Then EDT_CANUN.Text = "0"
+ EDT_CANUN.Text = Round (EDT_CANUN.Text)
+ LBL_TUN.Text=L_UNO.Tag * EDT_CANUN.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text)
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+End Sub
+
+Sub B_SUMUN_Click
+ If EDT_CANUN.Text = "" Then
+
+ LBL_TUN.Text=L_UNO.Tag * EDT_CANUN.Text
+ Else
+ EDT_CANUN.Text = Round (EDT_CANUN.Text + 1)
+ LBL_TUN.Text=L_UNO.Tag * EDT_CANUN.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text)
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+ End If
+End Sub
+
+Sub B_MENUN_Click
+ If EDT_CANUN.Text = "" Then
+ EDT_CANUN.Text = 0
+ LBL_TUN.Text=L_UNO.Tag * EDT_CANUN.Text
+ Else IF EDT_CANUN.Text > 0 Then
+ EDT_CANUN.Text = Round(EDT_CANUN.Text -1)
+ LBL_TUN.Text=L_UNO.Tag * EDT_CANUN.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text)
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+ End If
+End Sub
+
+'2
+Private Sub EDT_CANDO_FocusChanged (HasFocus As Boolean)
+ If EDT_CANDO.Text = "" Then EDT_CANDO.Text = "0"
+ EDT_CANDO.Text = Round (EDT_CANDO.Text)
+ LBL_TDO.Text=L_DOS.Tag * EDT_CANDO.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text)
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+End Sub
+
+Sub B_SUMDO_Click
+ If EDT_CANDO.Text = "" Then
+ EDT_CANDO.Text =0
+ LBL_TDO.Text=L_DOS.Tag * EDT_CANDO.Text
+ Else
+ EDT_CANDO.Text = Round (EDT_CANDO.Text + 1)
+ LBL_TDO.Text=L_DOS.Tag * EDT_CANDO.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text)
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+ End If
+End Sub
+
+Sub B_MENDO_Click
+ If EDT_CANDO.Text = "" Then
+ EDT_CANDO.Text=0
+ LBL_TDO.Text=L_DOS.Tag * EDT_CANDO.Text
+ Else IF EDT_CANDO.Text > 0 Then
+ EDT_CANDO.Text = Round(EDT_CANDO.Text -1)
+ LBL_TDO.Text=L_DOS.Tag * EDT_CANDO.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text)
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+ End If
+End Sub
+
+'5
+Private Sub EDT_CANCI_FocusChanged (HasFocus As Boolean)
+ If EDT_CANCI.Text = "" Then EDT_CANCI.Text = "0"
+ EDT_CANCI.Text = Round (EDT_CANCI.Text)
+ LBL_TCI.Text= L_CINCO.Tag * EDT_CANCI.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text )
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+End Sub
+
+Sub B_SUMCIN_Click
+ If EDT_CANCI.Text = "" Then
+ EDT_CANCI.Text =0
+ LBL_TCI.Text= L_CINCO.Tag * EDT_CANCI.Text
+ Else
+ EDT_CANCI.Text = Round (EDT_CANCI.Text + 1)
+ LBL_TCI.Text= L_CINCO.Tag * EDT_CANCI.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text )
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+ End If
+End Sub
+
+Sub B_MENCI_Click
+ If EDT_CANCI.Text = "" Then
+ EDT_CANCI.Text =0
+ LBL_TCI.Text= L_CINCO.Tag * EDT_CANCI.Text
+ Else IF EDT_CANCI.Text > 0 Then
+ EDT_CANCI.Text = Round(EDT_CANCI.Text -1)
+ LBL_TCI.Text= L_CINCO.Tag * EDT_CANCI.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text)
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+ End If
+End Sub
+'10
+Private Sub EDT_CANDIEZ_FocusChanged (HasFocus As Boolean)
+ If EDT_CANDIEZ.Text = "" Then EDT_CANDIEZ.Text = "0"
+ EDT_CANDIEZ.Text = Round (EDT_CANDIEZ.Text)
+ LBL_TDIEZ.Text= L_DIEZ.Tag * EDT_CANDIEZ.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text)
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+End Sub
+
+Sub B_SUMDIEZ_Click
+ If EDT_CANDIEZ.Text = "" Then
+ EDT_CANDIEZ.Text =0
+ LBL_TDIEZ.Text= L_DIEZ.Tag * EDT_CANDIEZ.Text
+ Else
+ EDT_CANDIEZ.Text = Round (EDT_CANDIEZ.Text + 1)
+ LBL_TDIEZ.Text= L_DIEZ.Tag * EDT_CANDIEZ.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text)
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+ End If
+End Sub
+
+Sub B_MENDIEZ_Click
+ If EDT_CANDIEZ.Text = "" Then
+ EDT_CANDIEZ.Text = 0
+ LBL_TDIEZ.Text= L_DIEZ.Tag * EDT_CANDIEZ.Text
+ Else IF EDT_CANDIEZ.Text > 0 Then
+ EDT_CANDIEZ.Text = Round(EDT_CANDIEZ.Text -1)
+ LBL_TDIEZ.Text= L_DIEZ.Tag * EDT_CANDIEZ.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text)
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+ End If
+End Sub
+
+'20
+Private Sub EDT_CANVEINTE_FocusChanged (HasFocus As Boolean)
+ If EDT_CANVEINTE.Text = "" Then EDT_CANVEINTE.Text = "0"
+ EDT_CANVEINTE.Text = Round(EDT_CANVEINTE.Text)
+ LBL_TVEINTE.Text= L_VEINTE.Tag * EDT_CANVEINTE.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text )
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+End Sub
+
+Sub B_MENVEINTE_Click
+ If EDT_CANVEINTE.Text = "" Then
+ EDT_CANVEINTE.Text = 0
+ LBL_TVEINTE.Text= L_VEINTE.Tag * EDT_CANVEINTE.Text
+ Else IF EDT_CANVEINTE.Text > 0 Then
+ EDT_CANVEINTE.Text = Round(EDT_CANVEINTE.Text -1)
+ LBL_TVEINTE.Text= L_VEINTE.Tag * EDT_CANVEINTE.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text )
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+ End If
+End Sub
+
+Sub B_SUMVEINTE_Click
+ If EDT_CANVEINTE.Text = "" Then
+ EDT_CANVEINTE.Text =0
+ LBL_TVEINTE.Text= L_VEINTE.Tag * EDT_CANVEINTE.Text
+ Else
+ EDT_CANVEINTE.Text = Round (EDT_CANVEINTE.Text + 1)
+ LBL_TVEINTE.Text= L_VEINTE.Tag * EDT_CANVEINTE.Text
+ B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text)
+ TOTALMONEDA.Text=B_TOTALMONEDA.Text
+ End If
+End Sub
+
+''''''TOTALES
+Sub TOTALES_Click
+ If TOTALMONEDA.Text="" Or TOTALBILLETES.Text="" Then
+ TOTALMONEDA.Text=0
+ TOTALBILLETES.Text=0
+ B_SUM_TOTAL.Text="$"& (TOTALMONEDA.Text + TOTALBILLETES.Text)
+ Else
+ B_SUM_TOTAL.Text= "$"&(TOTALMONEDA.Text + TOTALBILLETES.Text)
+ End If
+End Sub
+
+Sub B_AGREGABILL_Click
+ Pnl_Billete.Visible=True
+ Pnl_Moneda.Visible=False
+ PNL_TOTALES.Visible=False
+ LBL_RETURN.Visible=True
+ LBL_REGRESA.Visible=True
+End Sub
+
+Sub B_AGREGAMONE_Click
+ Pnl_Billete.Visible=False
+ Pnl_Moneda.Visible=True
+ PNL_TOTALES.Visible=False
+ LBL_RETURN.Visible=True
+ LBL_REGRESA.Visible=True
+End Sub
+
+Sub LBL_RETURN_Click
+ Pnl_Billete.Visible=False
+ Pnl_Moneda.Visible=False
+ PNL_TOTALES.Visible=True
+ LBL_RETURN.Visible=False
+ LBL_REGRESA.Visible=False
+ ''' CALCULO FINAL
+ If TOTALMONEDA.Text="" Or TOTALBILLETES.Text="" Then
+ TOTALMONEDA.Text=0
+ TOTALBILLETES.Text=0
+ B_SUM_TOTAL.Text="$"& (TOTALMONEDA.Text + TOTALBILLETES.Text)
+ Else
+ B_SUM_TOTAL.Text="$"& (TOTALMONEDA.Text + TOTALBILLETES.Text)
+ End If
+End Sub
+
+Sub LBL_REGRESA_Click
+ Pnl_Billete.Visible=False
+ Pnl_Moneda.Visible=False
+ LBL_RETURN.Visible=False
+ LBL_REGRESA.Visible=False
+ PNL_TOTALES.Visible=True
+ LBL_REGRESA.Visible=True
+End Sub
+
+Sub B_Regresar_Click
+' StartActivity("SELECCION")
+ Subs.iniciaActividad("principal")
+' B4XPages.ShowPage("Principal")
+' Activity.Finish
+ PNL_TOTALES.Visible=False
+ Pnl_Billete.Visible=False
+ Pnl_Moneda.visible=False
+ PNL_TOTALES.Visible=False
+ LBL_RETURN.Visible=False
+ LBL_REGRESA.Visible=False
+ P_BOLETA.Visible=False
+ P_INF_GENERAL.Visible=True
+ If logger Then Log("Panel general="&P_INF_GENERAL.Visible)
+ LBL_REGRESA.Visible=False
+
+End Sub
+
+Sub IMG_IMPRESORA_Click
+' Printer1.DisConnect : Log("Desconectando impresora")
+' impresoraConectada = False
+' Private cont As Int = 0
+' ToastMessageShow("Conectando impresora", False)
+' Do While Not(impresoraConectada) And cont < 9
+' Printer1.Connect
+' If Logger Then Log("Conectando impresora")
+' Sleep(1000)
+' If Logger Then Log(impresoraConectada)
+' cont = cont + 1
+' Loop
+' If Logger Then Log("connected")
+ ProgressDialogShow("Imprimiendo, un momento ...")
+ Printer1.DisConnect
+ If Not(Printer1.IsConnected) Then
+ If logger Then Log("conectando 1")
+ Printer1.Connect
+ Private cont As Int = 0
+ Do While Not(impresoraConectada)
+ Sleep(1000)
+ cont = cont + 1
+ If cont = 7 Then Printer1.Connect 'Tratamos de reconectar
+ If cont > 15 Then impresoraConectada = True
+ Loop
+ Sleep(500)
+ impresoraConectada = False
+ Else
+ If logger Then Log("conectando 2")
+ Printer1.Connect
+ Private cont As Int = 0
+ Do While Not(impresoraConectada) Or Not(Printer1.IsConnected)
+ Sleep(1000)
+ cont = cont + 1
+ If cont = 2 Then Printer1.Connect
+ If cont > 4 Then impresoraConectada = True
+ Loop
+ Sleep(500)
+ impresoraConectada = False
+ End If
+
+
+ c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
+ c.Position=0
+ usuario = c.GetString("USUARIO")
+ DateTime.DateFormat = "MM/dd/yyyy"
+ sDate=DateTime.Date(DateTime.Now)
+ sTime=DateTime.Time(DateTime.Now)
+ c.Close
+ Printer1.WriteString("KELLOGG COMPANY MEXICO" & CRLF)
+ Printer1.WriteString(sDate &" " & sTime & CRLF)
+ Printer1.WriteString("Vendedor:" & usuario & CRLF)
+ Printer1.WriteString(" " & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString("BILLETES" & CRLF)
+ Printer1.WriteString("$1,000 X " & EDT_CANMIL.TEXT & " = " & LBL_TMIL.TEXT & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString("$500 X " & EDT_CANQUIN.TEXT & " = " & LBL_TQUIN.TEXT &CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString("$200 X " & EDT_CANDOS.TEXT & " = " & LBL_TDOS.Text & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString("$100 X " & EDT_CANCIEN.TEXT & " = " & LBL_TCIEN.Text & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString("$50 X " & EDT_CANCIN.TEXT & " = " & LBL_TCIN.Text & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString("$20 X " & EDT_CANVEIN.TEXT & " = " & LBL_TVEIN.Text & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString("TOTAL BILLETES...... " & Btn_TOTALBILLETE.TEXT & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString("MONEDAS" & CRLF)
+ Printer1.WriteString("$20 X " & EDT_CANVEINTE.TEXT & " = " & LBL_TVEINTE.TEXT &CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString("$10 X " & EDT_CANDIEZ.TEXT & " = " & LBL_TDIEZ.TEXT &CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString("$5 X " & EDT_CANCI.TEXT & " = " & LBL_TCI.Text & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString("$2 X " & EDT_CANDO.TEXT & " = " & LBL_TDO.Text & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString("$1 X " & EDT_CANUN.TEXT & " = " & LBL_TUN.Text & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString("$.50 X " & EDT_CANCEN.TEXT & " = " & LBL_TCEN.Text & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString("TOTAL MONEDAS....... " & B_TOTALMONEDA.TEXT & CRLF)
+ Printer1.WriteString(" " & CRLF)
+ Printer1.WriteString("TOTAL .........." & B_SUM_TOTAL.TEXT & CRLF)
+ Printer1.WriteString(" " & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString(" " & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString("Nombre y Firma" & CRLF)
+ Printer1.WriteString(CRLF)
+ Printer1.WriteString(CRLF)
+ Printer1.WriteString(CRLF)
+ Printer1.WriteString("______________________________" & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString(CRLF)
+ Printer1.WriteString(CRLF)
+ ProgressDialogHide
+End Sub
+
+Sub B_IMP_INV_Click
+ ProgressDialogShow("Imprimiendo, un momento ...")
+ Printer1.DisConnect
+ If Not(Printer1.IsConnected) Then
+ If logger Then Log("conectando 1")
+ Printer1.Connect
+ Private cont As Int = 0
+ Do While Not(impresoraConectada)
+ Sleep(1000)
+ cont = cont + 1
+ If cont = 7 Then Printer1.Connect 'Tratamos de reconectar
+ If cont > 15 Then impresoraConectada = True
+ Loop
+ Sleep(500)
+ impresoraConectada = False
+ Else
+ If logger Then Log("conectando 2")
+ Printer1.Connect
+ Private cont As Int = 0
+ Do While Not(impresoraConectada) Or Not(Printer1.IsConnected)
+ Sleep(1000)
+ cont = cont + 1
+ If cont = 2 Then Printer1.Connect
+ If cont > 4 Then impresoraConectada = True
+ Loop
+ Sleep(500)
+ impresoraConectada = False
+ End If
+ c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
+ c.Position=0
+ usuario = c.GetString("USUARIO")
+ DateTime.DateFormat = "MM/dd/yyyy"
+ sDate=DateTime.Date(DateTime.Now)
+ sTime=DateTime.Time(DateTime.Now)
+ c.Close
+ TAMANO = 5
+ ESPACIO = 14
+ BLANCO = " "
+ Printer1.WriteString("KELLOG COMPANY MEXICO" & CRLF)
+ Printer1.WriteString("RESUMEN DIA" & CRLF)
+ Printer1.WriteString(sDate & " " & sTime & CRLF)
+ Printer1.WriteString("Vendedor:" & usuario & CRLF)
+ Printer1.WriteString("-------INVENTARIO A BORDO----------" & CRLF)
+''' se cambia este Printer1.WriteString("---II---CD---IIT---VT---RMI---IF---" & CRLF) ------- sin RMI
+ Printer1.WriteString("---II---CD---IIT---VT---------IF---" & CRLF)
+
+ ' aqui es donde esta el pedo de julieta de los descuentos quitar el precio2 pero meter un if para saber si es ruta especial o es normal o que show.
+ s=Starter.skmt.ExecQuery2 ("select CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_ALMACEN from cat_gunaprod2 where CAT_GP_CLASIF <> ? ORDER BY CAT_GP_NOMBRE ", Array As String("PROMOS"))
+ Log($"Reglones: ${s.RowCount}"$)
+ If s.RowCount>0 Then
+ For i=0 To S.RowCount -1
+ Log(i)
+ Try
+ s.Position=i
+ Printer1.WriteString(s.GetString("CAT_GP_NOMBRE") & CRLF)
+ Log("p"&i)
+ Catch
+ Log(LastException)
+ If logger Then Log("Saliendo con Try/Catch")
+ Exit
+ End Try
+ S1=Starter.skmt.ExecQuery2("select CAT_GP_ALMACEN from cat_gunaprod5 where CAT_GP_ID = ?", Array As String(s.GetString("CAT_GP_ID")))
+ S1.Position=0
+ S3=Starter.skmt.ExecQuery2("select count(*) as CUANTOS from HIST_ABORDO where HIST_PROID = ?", Array As String(s.GetString("CAT_GP_ID")))
+ S3.Position=0
+ If S3.GetString("CUANTOS") > 0 Then
+ S2=Starter.skmt.ExecQuery2("select HIST_CANT from HIST_ABORDO where HIST_PROID = ?", Array As String(s.GetString("CAT_GP_ID")))
+ S2.Position=0
+ a_inicial = S1.GetString("CAT_GP_ALMACEN") - S2.GetString("HIST_CANT")
+ Else
+ a_inicial = S1.GetString("CAT_GP_ALMACEN")
+ End If
+ a_inicial_5 = S1.GetString("CAT_GP_ALMACEN")
+ 'Printer1.WriteString("INICIAL: " & ABORDO & CRLF)
+ If S3.GetString("CUANTOS") > 0 Then
+ 'Printer1.WriteString("CARGA DIA : " & S2.GetString("HIST_CANT") & CRLF)
+ ABORDO = S2.GetString("HIST_CANT")
+ Else
+ 'Printer1.WriteString("CARGA DIA : 0" & CRLF)
+ ABORDO = 0
+ End If
+ 'Printer1.WriteString("CARGA TOTAL : " & S1.GetString("CAT_GP_ALMACEN") & CRLF)
+ a_total = S1.GetString("CAT_GP_ALMACEN")
+
+ C4=Starter.skmt.ExecQuery2("select count(*) as CUANTOS from pedido where substr(pe_pronombre,1,6) <> ? AND PE_TIPO = ? and PE_PROID = ? ", Array As String("CAMBIO","VENTA", s.GetString("CAT_GP_ID")))
+ C4.Position=0
+ If C4.GetString("CUANTOS") > 0 Then
+ C3=Starter.skmt.ExecQuery2("select SUM(PE_CANT) AS CANTIDAD,PE_PRONOMBRE from pedido where substr(pe_pronombre,1,6) <> ? AND PE_TIPO = ? AND PE_PROID = ? GROUP BY PE_PRONOMBRE", Array As String("CAMBIO","VENTA", s.GetString("CAT_GP_ID")))
+ C3.Position=0
+ 'Printer1.WriteString("VENTA: " & C3.GetString("CANTIDAD") & CRLF)
+ a_venta = C3.GetString("CANTIDAD")
+ Else
+ 'Printer1.WriteString("VENTA: 0" & CRLF)
+ a_venta = 0
+ End If
+ C4.Close
+ ''' se conenta esto para el cambio de RMI
+ C4=Starter.skmt.ExecQuery2("select count(*) as CUANTOS from pedido where substr(pe_pronombre,1,6) = ? AND PE_PROID = ? ", Array As String("CAMBIO", s.GetString("CAT_GP_ID")))
+ C4.Position=0
+ If C4.GetString("CUANTOS") > 0 Then
+ C1=Starter.skmt.ExecQuery2("select SUM(PE_CANT) AS CANTIDAD,PE_PRONOMBRE from pedido where substr(pe_pronombre,1,6) = ? AND PE_PROID = ? GROUP BY PE_PRONOMBRE", Array As String("CAMBIO", s.GetString("CAT_GP_ID")))
+ C1.Position=0
+ RMI = C1.GetString("CANTIDAD")
+ Else
+ RMI = 0
+ End If
+
+ 'Printer1.WriteString("INV. ACT.: " & s.GetString("CAT_GP_ALMACEN") & CRLF)
+ 'a_final =s.GetString("CAT_GP_ALMACEN")
+ ''' se cammbi a este a_final = a_inicial_5 - a_venta - RMI por el sin RMI cambiuo de rmi
+ a_final = a_inicial_5 - a_venta
+
+ 'Printer1.WriteString("RMI: " & RMI & CRLF)
+ Private sep1 As String
+ Private sep2 As String
+ Private sep3 As String
+ Private sep4 As String
+ Private sep5 As String
+ Private sep6 As String
+
+ sep1 = a_inicial.Length
+ If sep1 = 1 Then
+ a_inicial = "----" & a_inicial
+ else if sep1 = 2 Then
+ a_inicial = "---" & a_inicial
+ else if sep1 = 3 Then
+ a_inicial = "--" & a_inicial
+ else if sep1 = 4 Then
+ a_inicial = "-" & a_inicial
+ else if sep1 = 5 Then
+ a_inicial = a_inicial
+ End If
+ sep2 = ABORDO.Length
+ If sep2 = 1 Then
+ ABORDO = "----" & ABORDO
+ else if sep2 = 2 Then
+ ABORDO = "---" & ABORDO
+ else if sep2 = 3 Then
+ ABORDO = "--" & ABORDO
+ else if sep2 = 4 Then
+ ABORDO = "-" & ABORDO
+ else if sep2 = 5 Then
+ ABORDO = ABORDO
+ End If
+
+ sep3 = a_total.Length
+ If sep3 = 1 Then
+ a_total = "----" & a_total
+ else if sep3 = 2 Then
+ a_total = "---" & a_total
+ else if sep3 = 3 Then
+ a_total = "--" & a_total
+ else if sep3 = 4 Then
+ a_total = "-" & a_total
+ else if sep3 = 5 Then
+ a_total = a_total
+ End If
+
+ sep4 = a_venta.Length
+ If sep4 = 1 Then
+ a_venta = "----" & a_venta
+ else if sep4 = 2 Then
+ a_venta = "---" & a_venta
+ else if sep4 = 3 Then
+ a_venta = "--" & a_venta
+ else if sep4 = 4 Then
+ a_venta = "-" & a_venta
+ else if sep4 = 5 Then
+ a_venta = a_venta
+ End If
+
+ sep5 = a_final.Length
+ If sep5 = 1 Then
+ a_final = "----" & a_final
+ else if sep5 = 2 Then
+ a_final = "---" & a_final
+ else if sep5 = 3 Then
+ a_final = "--" & a_final
+ else if sep5 = 4 Then
+ a_final = "-" & a_final
+ else if sep5 = 5 Then
+ a_final = a_final
+ End If
+''''se cambia por lo de RMI
+'' sep6 = RMI.Length
+'' If sep6 = 1 Then
+'' RMI = "----" & RMI
+'' else if sep6 = 2 Then
+'' RMI = "---" & RMI
+'' else if sep6 = 3 Then
+'' RMI = "--" & RMI
+'' else if sep6 = 4 Then
+'' RMI = "-" & RMI
+'' else if sep6 = 5 Then
+'' RMI = RMI
+'' End If
+'' se cambia este Printer1.WriteString( a_inicial & ABORDO & a_total & a_venta & RMI & a_final & CRLF) --- por este sin RMI
+
+ Printer1.WriteString( a_inicial & ABORDO & a_total & a_venta & a_final & CRLF)
+
+ TAMANO = TAMANO + 1
+ If TAMANO > 40 Then
+
+ t3.Initialize("T3", 4000) ' 1000 = 1 second
+ t3.Enabled = True
+ Wait For t3_tick
+ TAMANO = 0
+ End If
+ Next
+ End If
+ s.Close
+ If S3.IsInitialized Then S3.Close
+ Try
+ c=Starter.skmt.ExecQuery("select count(*) as CUANTOS from pedido")
+ c.Position =0
+ CUANTOS = c.GetString("CUANTOS")
+ c.Close
+ Catch
+ CUANTOS = 0
+ End Try
+ ''' se quita por el RMI
+ Try
+ c=Starter.skmt.ExecQuery2("select count(*) as CUANTOS from pedido where substr(pe_pronombre,1,6) = ? GROUP BY PE_PRONOMBRE", Array As String("CAMBIO"))
+ If c.RowCount > 0 Then
+ c.Position =0
+ CUANTOS1 = c.GetString("CUANTOS")
+ Else
+ CUANTOS1 = 0
+ End If
+ c.Close
+ Catch
+ CUANTOS1 = 0
+ End Try
+ If CUANTOS <> CUANTOS1 Then
+ Try
+ c=Starter.skmt.ExecQuery2("select SUM(PE_CANT) AS CANTIDAD,PE_PRONOMBRE from pedido where substr(pe_pronombre,1,6) = ? GROUP BY PE_PRONOMBRE", Array As String("CAMBIO"))
+ Printer1.WriteString(CRLF)
+ Printer1.WriteString("-----------RMI----------------" & CRLF)
+ Printer1.WriteString(CRLF)
+ If C.RowCount>0 Then
+ For i=0 To C.RowCount -1
+ C.Position=i
+ Printer1.WriteString(C.GetString("CANTIDAD") & " " & C.GetString("PE_PRONOMBRE") & CRLF)
+ Next
+ End If
+ c.Close
+ Catch
+ Printer1.WriteString(CRLF)
+ End Try
+ End If
+
+ ' TOTALES DE LOS ARCHIVOS
+
+ s.Close
+ S=Starter.skmt.ExecQuery2("select SUM(CAT_GP_ALMACEN) AS CAT_GP_ALMACEN from cat_gunaprod2 WHERE CAT_GP_CLASIF <> ? ", Array As String("PROMOS"))
+ S.Position=0
+ a_final =s.GetString("CAT_GP_ALMACEN")
+
+ S1.Close
+ S1=Starter.skmt.ExecQuery("select SUM(CAT_GP_ALMACEN) AS CAT_GP_ALMACEN from cat_gunaprod5 ")
+ S1.Position=0
+ a_total = S1.GetString("CAT_GP_ALMACEN")
+ a_inicial = S1.GetString("CAT_GP_ALMACEN")
+ S1.Close
+ ABORDO =0
+ C3=Starter.skmt.ExecQuery2("select SUM(PE_CANT) AS CANTIDAD, SUM(PE_COSTO_TOT) AS PE_TOTAL from pedido where pe_proid <> pe_cedis and substr(pe_pronombre,1,6) <> ? AND PE_CLIENTE <> ?", Array As String("CAMBIO", "0"))
+ C8=Starter.skmt.ExecQuery2("select SUM(PE_COSTO_TOT) AS PE_TOTAL from pedido where pe_proid <> pe_cedis AND PE_CLIENTE <> ?", Array As String( "0"))
+ C8.Position=0
+ If C3.RowCount > 0 Then
+ C3.Position=0
+ a_venta = C3.GetString("CANTIDAD")
+ Else
+ a_venta = 0
+ End If
+
+ If a_venta = Null Then a_venta = 0
+ If CUANTOS <> CUANTOS1 Then
+ C1=Starter.skmt.ExecQuery2("select SUM(PE_CANT) AS CANTIDAD, SUM(PE_COSTO_TOT) AS TOTAL from pedido where substr(pe_pronombre,1,6) = ? ", Array As String("CAMBIO"))
+ C1.Position=0
+ RMI = C1.GetString("CANTIDAD")
+ RMI_VALOR = C1.GetString("TOTAL")
+ C1.Close
+ Else
+ RMI = 0
+ End If
+ If RMI = Null Then RMI = 0
+ If logger Then Log($"a_total=${a_total}, a_venta=${a_venta}, rmi=${RMI}"$)
+ a_final = a_total - a_venta
+ Printer1.WriteString(Printer1.BOLD & "Piezas en RMI : " & RMI & CRLF)
+ Printer1.WriteString(Printer1.BOLD & "TOTAL RMI : " & RMI_VALOR & CRLF)
+
+ Printer1.WriteString(Printer1.BOLD & "----RESUMEN TOTAL---- " & CRLF)
+ '' se cambia por lo del rmi Printer1.WriteString("---" & a_inicial & "..." & ABORDO & "..." & a_total & "..." & a_venta & "..." & a_final & "..." & RMI & CRLF)
+ Printer1.WriteString("---" & a_inicial & "..." & ABORDO & "..." & a_total & "..." & a_venta & "..." & a_final & "..." & CRLF)
+
+ Printer1.WriteString(Printer1.BOLD & "TOTAL VENTA " & C8.GetString("PE_TOTAL") & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString("Nombre y Firma" & CRLF)
+ Printer1.WriteString(CRLF)
+ Printer1.WriteString(CRLF)
+ Printer1.WriteString(CRLF)
+ Printer1.WriteString("______________________________" & CRLF)
+ Printer1.WriteString("------------------------------" & CRLF)
+ Printer1.WriteString(CRLF)
+ Printer1.WriteString(CRLF)
+ If C3.IsInitialized Then C3.Close
+ ProgressDialogHide
+End Sub
+
+Sub B_CERRAR_I_Click
+ Panel_INV_A.Visible = False
+ P_INF_GENERAL.Visible = True
+ If logger Then Log("Panel general="&P_INF_GENERAL.Visible)
+End Sub
+
+Sub Bt_GuardarBoleta_Click
+ DateTime.DateFormat = "MM/dd/yyyy"
+ sDate=DateTime.Date(DateTime.Now)
+ sTime=DateTime.Time(DateTime.Now)
+ cursorBoleta=Starter.skmt.ExecQuery("select ID_ALMACEN FROM CAT_ALMACEN")
+ cursorBoleta.Position=0
+ Id_Almacen=cursorBoleta.GetString("ID_ALMACEN")
+ Starter.skmt.ExecNonQuery("delete from TMP_CAT_BILLETE")
+ Starter.skmt.ExecNonQuery("delete from TMP_CAT_MONEDAS")
+ Starter.skmt.ExecNonQuery2("INSERT INTO TMP_CAT_BILLETE (TMP_BILLE_RUTA, TMP_BILLE_IDALMACEN, TMP_BILLE_FECHA, TMP_BILLE_MIL, TMP_BILLE_QUINIENTOS, TMP_BILLE_DOSCIENTOS, TMP_BILLE_CIEN, TMP_BILLE_CINCUENTA, TMP_BILLE_VEINTE) values (?,?,?,?,?,?,?,?,?)", Array As Object (RutaBoleta,Id_Almacen,sDate & sTime,EDT_CANMIL.Text,EDT_CANQUIN.Text,EDT_CANDOS.Text,EDT_CANCIEN.Text,EDT_CANCIN.Text,EDT_CANVEIN.Text))
+ Starter.skmt.ExecNonQuery2("INSERT INTO TMP_CAT_MONEDAS (TMP_MON_RUTA, TMP_MON_IDALMACEN, TMP_MON_FECHA, TMP_MON_VEINTE, TMP_MON_DIEZ, TMP_MON_CINCO, TMP_MON_DOS, TMP_MON_UN, TMP_MON_CENTAVOS) values (?,?,?,?,?,?,?,?,?)", Array As Object (RutaBoleta,Id_Almacen,sDate & sTime,EDT_CANVEINTE.Text,EDT_CANDIEZ.Text,EDT_CANCI.Text,EDT_CANDO.Text,EDT_CANUN.Text,EDT_CANCEN.Text))
+' If Logger Then Log($"${RutaBoleta},${Id_Almacen},${EDT_CANMIL.Text},${EDT_CANQUIN.Text},${EDT_CANDOS.Text},${EDT_CANCIEN.Text},${EDT_CANCIN.Text},${EDT_CANVEIN.Text}"$)
+' If Logger Then Log($"${RutaBoleta},${Id_Almacen},${EDT_CANVEINTE.Text},${EDT_CANDIEZ.Text},${EDT_CANCI.Text},${EDT_CANDO.Text},${EDT_CANUN.Text},${EDT_CANCEN.Text}"$)
+ Msgbox("Datos Guardados ","Listo") 'ignore
+End Sub
+
+Sub B_E_NEXT_Click
+ Panel9.Visible = False
+ Starter.skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, E_RES_E.Text ,sDate & sTime,c.GetString("CAT_EP_ID")))
+ Starter.tipov = "VENTA"
+ Cuestionario
+End Sub
+
+Sub b_chk_e_Click
+ Panel10.Visible = False
+ Private resp As String = ""
+ If Chk_1.Checked = True Then resp = chk_1_valor
+ If chk_2.Checked = True Then resp = resp & " / " & chk_2_valor
+ If chk_3.Checked = True Then resp = resp & " / " & chk_3_valor
+ If resp.StartsWith(",") Then resp = resp.SubString(2) 'Quitamos la coma si existe al principio.
+ Starter.skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, resp, sDate & sTime, Chk_1.Tag))
+ Starter.tipov = "VENTA"
+ Cuestionario
+End Sub
+
+'Muestra el panel de la encuesta, le da el alto y ancho de la pantalla y la pone en 0,0
+Sub muestraEncuesta
+' If Logger Then Log("Muestra Encuesta")
+ p_encuesta.Top = 0
+ p_encuesta.left = 0
+ p_encuesta.Height = GetDeviceLayoutValues.Height
+ p_encuesta.Width = GetDeviceLayoutValues.Width
+ p_encuesta.SetVisibleAnimated(200, True)
+ p_encuesta.Elevation = 90 'ignore
+ p_encuesta.BringToFront
+ P_INF_GENERAL.Visible = False
+ Log("Panel general="&P_INF_GENERAL.Visible)
+End Sub
+
+' Oculta el panel de la encuesta y los botones de la misma.
+Sub ocultaPanelEncuesta
+' Log("Oculta Encuesta")
+ b_encuesta_1.Visible = False
+ b_encuesta_2.Visible = False
+ b_encuesta_3.Visible = False
+ p_encuesta.Visible = False
+ P_INF_GENERAL.Visible = True
+ If logger Then Log("Panel general="&P_INF_GENERAL.Visible)
+End Sub
+
+'Regresa el valor de "left" para el centro de la pantalla
+Sub centroPantalla As Int
+ Private anchoPantalla As Int = GetDeviceLayoutValues.Width
+ Private anchoPantalla As Int = Root.Width
+ Return anchoPantalla/2
+End Sub
+
+Private Sub b_encuesta_1_Click
+ Dim btn As Button = Sender
+ Log(btn.Tag & " clicked - " & btn.Text)
+ encuestaRes = btn.Text
+ ocultaPanelEncuesta
+ botonPresionado = 1
+End Sub
+
+Private Sub b_encuesta_2_Click
+ Dim btn As Button = Sender
+ Log(btn.Tag & " clicked - " & btn.Text)
+ encuestaRes = btn.Text
+ ocultaPanelEncuesta
+ botonPresionado = 1
+End Sub
+
+Private Sub b_encuesta_3_Click
+ Dim btn As Button = Sender
+ If logger Then Log(btn.Tag & " clicked - " & btn.Text)
+ encuestaRes = btn.Text
+ ocultaPanelEncuesta
+ botonPresionado = 1
+End Sub
+
+Private Sub b_encuesta_continuar_Click
+ encuestaRes = et_encuesta.Text
+ et_encuesta.Text = ""
+ et_encuesta.Visible = False
+ b_encuesta_continuar.Visible = False
+ ocultaPanelEncuesta
+ botonPresionado = 1
+End Sub
+
+Private Sub et_encuesta_TextChanged (Old As String, New As String)
+' Log($"|${Old}|,|${New}|"$)
+ If New.Length > 0 Then b_encuesta_continuar.Enabled = True
+ If New.Length < 1 Then b_encuesta_continuar.Enabled = False
+End Sub
+
+'Revisa si el cliente actual es candidato a la promo especial que da regalo según el monto de la compra.
+'Se revisa que el cliente tenga asignada la promoción, que no tenga venta impresa y que el producto de regalo tenga existencia.
+'Si cumple las 3 condiciones regresa esValida=True, si no, esValida=False.
+Sub revisaPromoEspecial As Map
+' Necesitamos cliente autorizado, producto promocional con existencia y cliente no impreso.
+ Private hayInventario As String = ""
+ Private clienteConPromo As String = ""
+ Private clienteImpreso As String = ""
+ Dim promoInfo As Map
+ promoInfo.Initialize
+ Private x As Cursor
+ 'Revisamos si ya tiene venta impresa.
+ x=Starter.skmt.ExecQuery("select count(*) as CUANTOS from CLIENTE_IMPRESO where CI_CUENTA in (Select CUENTA from cuentaa)")
+ x.Position = 0
+ clienteImpreso = x.GetString("CUANTOS")
+' Log(clienteImpreso)
+' If clienteImpreso = "0" Then Log("El cliente no tiene venta impresa.")
+ x.Close
+ 'Revisamos que tenga asignada la promo.
+ x=Starter.skmt.ExecQuery("select count(*) as clienteConPromo, CPM_PROID, CPM_CANT, CPM_RANGO, CPM_DESC, CPM_IDPROMO, CPM_MONTO from CAT_PROMO_MONTO where CPM_CLIENTE in (Select CUENTA from cuentaa)")
+ If x.RowCount > 0 Then
+ x.Position = 0
+ If x.GetString("clienteConPromo") = 1 Then 'Cliente autorizado para promo.
+ clienteConPromo = "1"
+ Private y As Cursor
+ Private nombreProd As String = ""
+ y=Starter.skmt.ExecQuery("select cat_gp_nombre as nombreProd from cat_gunaprod where cat_gp_id = '" & x.GetString("CPM_PROID") & "'")
+ If y.RowCount > 0 Then
+ y.Position = 0
+ nombreProd = y.GetString("nombreProd")
+ End If
+ Log("El cliente tiene asignada la promo especial.")
+ Private p As Cursor
+ p=Starter.skmt.ExecQuery("select count(*) as hayInventario from CAT_GUNAPROD where CAT_GP_ALMACEN > 0 and CAT_GP_ID = " & x.GetString("CPM_PROID"))
+ p.Position = 0
+ hayInventario = p.GetString("hayInventario")
+ If hayInventario = "1" Then Log("El producto de la promo tiene existencia.")
+ p.Close
+ promoInfo = CreateMap("idProd":x.GetString("CPM_PROID"), "cantProd":x.GetString("CPM_CANT"), "rangoPromo":x.GetString("CPM_RANGO"), "descrPromo":x.GetString("CPM_DESC"), "idPromo":x.GetString("CPM_IDPROMO"), "montoPromo":x.GetString("CPM_MONTO"), "nombreProd":nombreProd)
+ End If
+ End If
+ x.Close
+ If clienteImpreso = "0" And clienteConPromo = "1" And hayInventario = "1" Then
+ Log("Cumple con TODAS las condiciones de la promo.")
+ promoInfo.Put("esValida", True)
+ Return promoInfo
+ Else
+' Log("NO cumple con las condiciones de la promo.")
+ promoInfo.Put("esValida", False)
+ Return promoInfo
+ End If
+End Sub
+
+'Mete la promoción especial de regalo por monto vendido.
+Sub metePromoEspecial(idProd As String, idPromo As String, cantProd As Int, nombreProd As String, promoDescr As String, idCliente As String, idUsuario As String, idRuta As String) 'ignore
+ Dim query As String
+ query = "cat_gunaprod"
+ If Starter.tipov = "VENTA" Then query = "cat_gunaprod2"
+' Falta nombre de producto en el insert
+ Starter.skmt.ExecNonQuery2("DELETE from PEDIDO where PE_CEDIS = ?", Array As String (idPromo))
+ 'Metemos encabezado de la promo.
+ Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_FECHA, PE_USUARIO, PE_RUTA, PE_TIPO, PE_PRECIO2) VALUES(?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (idPromo, 0, 0, cantProd, promoDescr, idPromo, idCliente, sDate & sTime, idUsuario, idRuta, Starter.tipov, 0))
+ 'Metemos el producto de regalo.
+ Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_FECHA, PE_USUARIO, PE_RUTA, PE_TIPO, PE_PRECIO2) VALUES(?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (idPromo, 0.01, 0.01, cantProd, nombreProd, idProd, idCliente, sDate & sTime, idUsuario, idRuta, Starter.tipov, 0.01))
+ 'Actualizamos existencia en CAT_GUNAPROD.
+ Starter.skmt.ExecNonQuery2("update " & query & " set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cantProd, idProd))
+End Sub
+
+Sub revisaImpresora (mode As String) 'ignore
+ '' Log("Revisamos impresora " & Starter.intentosImpresora)
+ '' Log("RevisandoImpresora= " & Starter.revisandoImpresora)
+' If Not(Starter.btAdmin.IsEnabled) Then Starter.btAdmin.Enable 'Si no esta prendido el BT lo prendemos.
+' If Not(Printer1.IsInitialized) Then Printer1.Initialize(Me, "Printer1") 'Si no esta inicializada la inicializamos.
+' If Not(Starter.revisandoImpresora) Then Return
+' Starter.revisandoImpresora = True
+' If mode = "BT" Then
+ '' Try
+ '' LogColor("reiniciamos BT", Colors.Blue)
+ '' Starter.btAdmin.Disable
+ '' Sleep(500)
+ '' Starter.btAdmin.Enable
+ '' Sleep(1000)
+ '' If Starter.btAdmin.IsEnabled Then revisaImpresora("")
+ '' Catch
+ '' Log(LastException)
+ '' End Try
+' Else
+ '' ToastMessageShow("Conectando impresora.", False)
+' If Not(Printer1.IsConnected) Then 'Si no estamos conectados, nos conectamos.
+' Log("Connect")
+' Printer1.Connect
+' Else 'Si ya estamos conectados
+' Log("Disc-Conn")
+' Printer1.DisConnect
+' Sleep(1000)
+' Printer1.Connect
+' End If
+' End If
+End Sub
+
+Private Sub l_exhibidor2_Click
+ p_exhibidores.Left = (Root.Width/2) - (p_exhibidores.Width/2)
+ p_exhibidores.Top = Root.Height/4
+ p_exhibidores.Visible = True
+ p_exhibidores.Elevation = 90dip
+End Sub
+
+Private Sub b_exhibidor_Click
+ p_exhibidores.Visible = False
+End Sub
+
+Private Sub Panel9_Click
+ 'Esta vacio porque solo esta capturado los clics.
+End Sub
+
+Private Sub PNL_TOTALES_Click
+ 'Esta vacio porque solo esta capturado los clics.
+End Sub
+
+Private Sub b_ubicacion_Click
+ CallSubDelayed(Tracker, "StartFLP2")
+End Sub
+
+Private Sub P_BOLETA_Click
+ 'Esta vacio porque solo esta capturado los clics.
+End Sub
+
+Private Sub b_whats_Click
+ P_INF_GENERAL.Visible = False
+ p_promowhats.visible = True
+
+ c=Starter.skmt.ExecQuery("select CAT_CL_CODIGO from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)")
+ If c.RowCount > 0 Then
+ c.Position=0
+ l_promowhats.Text = c.GetString("CAT_CL_CODIGO")
+ End If
+ c.Close
+End Sub
+
+Private Sub b_aceptarrpomo_Click
+' c=Starter.skmt.ExecQuery("select CAT_CL_NOMBRE from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)")
+' If c.RowCount > 0 Then
+' c.Position=0
+' l_promowhats.Text = c.GetString("CAT_CL_NOMBRE")
+' End If
+' c.Close
+ sDate=DateTime.Date(DateTime.Now)
+ sTime=DateTime.Time(DateTime.Now)
+ c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa")
+ c.Position=0
+ clie_id = c.GetString("CUENTA")
+ c.Close
+ c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
+ c.Position=0
+ usuario = c.GetString("USUARIO")
+ c.Close
+ c=Starter.skmt.ExecQuery("select ID_ALMACEN from CAT_ALMACEN")
+ If c.RowCount>0 Then
+ C.Position=0
+ Id_Almacen = C.GetString("ID_ALMACEN")
+ End If
+ c.Close
+
+ Starter.skmt.ExecNonQuery2("INSERT INTO HIST_PROMO_WHATS VALUES (?,?)", Array As Object(l_promowhats.Text, "PROMO ACEPTADA"))
+
+ Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_TIPO,PE_PRECIO2) VALUES(?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object ("PROMODOE",0 , 0, 1, "KIT DE BIENVENIDA DON TOÑO", "PROMODOE",la_cuenta.TEXT, sDate & sTime, usuario,Starter.rutaV,Starter.tipov,0))
+ Starter. skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_TIPO,PE_PRECIO2) VALUES(?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object ("PROMODOE",0.01 , 0.01, 1, "CAJA CHOCO ZUCARITAS 260 GR", "1008094223",la_cuenta.TEXT, sDate & sTime, usuario,Starter.rutaV,Starter.tipov,0))
+ Starter.skmt.ExecNonQuery2("update cat_gunaprod2 set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object("1", "1008094223"))
+ c=Starter.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, SUM(PE_COSTO_SIN) AS TOTAL_CLIE_SIN FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
+ c.Position=0
+ Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)")
+ If logger Then LogColor($"Insertamos coordenadas en pedido: ${Starter.lon_gps}, ${Starter.lat_gps}"$, Colors.Magenta)
+ Starter.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT,PC_ALMACEN,PC_RUTA,PC_COSTO_SIN) VALUES (?,?,?,?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), Starter.lon_gps, Starter.lat_gps,Id_Almacen,Starter.rutaV,c.GetString("TOTAL_CLIE_SIN")))
+
+ Starter.skmt.ExecNonQuery("delete from pedido3")
+ Starter.skmt.ExecNonQuery("UPDATE PEDIDO SET PE_FOLIO = 0 where PE_FOLIO IS NULL")
+ Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO3 (PE_PRECIO2, PE_TIPO, PE_FECHA, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_USUARIO ) SELECT PE_PRECIO2, PE_TIPO, PE_FECHA, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, SUM(PE_COSTO_TOT) AS PE_COSTO_TOT, PE_COSTOU, SUM(PE_CANT) As PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_USUARIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) GROUP BY PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, PE_COSTOU, PE_PRONOMBRE, PE_PROID, PE_CLIENTE ") 'Mod por CHV - 220302 - Agregué PE_FECHA al select/insert
+
+' starter.skmt.ExecNonQuery2("INSERT INTO")
+ p_promowhats.Visible = False
+ P_INF_GENERAL.Visible = True
+ c.Close
+ b_whats.Visible = False
+ Starter.skmt.ExecNonQuery("delete from HIST_CLIENTE_CANT_PROMOS where HCCP_CLIENTE IN (Select cuenta from cuentaa)")
+End Sub
+
+Private Sub b_rechazapromo_Click
+ Starter.skmt.ExecNonQuery2("INSERT INTO HIST_PROMO_WHATS VALUES (?,?)", Array As Object(l_promowhats.Text, "PROMO RECHAZADA"))
+ p_promowhats.Visible = False
+ P_INF_GENERAL.Visible = True
+ b_whats.Visible = False
+End Sub
+
+Private Sub BP_DOE_A_Click
+ c=Starter.skmt.ExecQuery("select ID_ALMACEN from CAT_ALMACEN")
+ If c.RowCount>0 Then
+ C.Position=0
+ Id_Almacen = C.GetString("ID_ALMACEN")
+ End If
+ c.Close
+ DateTime.DateFormat = "MM/dd/yyyy"
+ sDate=DateTime.Date(DateTime.Now)
+ sTime=DateTime.Time(DateTime.Now)
+ c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa")
+ c.Position=0
+ clie_id = c.GetString("CUENTA")
+ c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
+ c.Position=0
+ usuario = c.GetString("USUARIO")
+ c.Close
+ Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_TIPO,PE_PRECIO2) SELECT PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_TIPO,PE_PRECIO2 FROM PEDIDO_DOE WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
+ Starter.skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_CEDIS = ?, PE_TIPO = ? WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As Object("DOE","DOE"))
+
+ c=Starter.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, SUM(PE_COSTO_SIN) AS TOTAL_CLIE_SIN FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
+ c.Position=0
+ Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)")
+ If logger Then LogColor($"Insertamos coordenadas en pedido: ${Starter.lon_gps}, ${Starter.lat_gps}"$, Colors.Magenta)
+ Starter.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT,PC_ALMACEN,PC_RUTA,PC_COSTO_SIN) VALUES (?,?,?,?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), Starter.lon_gps, Starter.lat_gps,Id_Almacen,Starter.rutaV,c.GetString("TOTAL_CLIE_SIN")))
+ Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)")
+ c.Close
+ Starter.skmt.ExecNonQuery("delete from PEDIDOS_DOE_ENTREGA where PC_CLIENTE in (Select CUENTA from cuentaa)")
+ Starter.skmt.ExecNonQuery2("insert into PEDIDOS_DOE_ENTREGA (PC_CLIENTE, PC_ENTREGA) VALUES (?,?) ", Array As Object(clie_id,"ENTREGADO"))
+
+ Starter.skmt.ExecNonQuery("delete from pedido_DOE where pe_cliente in (Select CUENTA from cuentaa)")
+
+ P_DOE.Visible = False
+End Sub
+
+Private Sub BP_DOE_R_Click
+
+ Dim result As Int
+ result = Msgbox2("El cliente perderá el descuento si cancela el pedio, se cancela el pedido ?", "Pedido Cancela", "SI", "", "NO", LoadBitmap(File.DirAssets, "alert2.png"))
+ If result = DialogResponse.Positive Then
+
+ Panel11.Visible = True
+ BP_DOE_A.Visible = False
+ BP_DOE_R.Visible = False
+ Else
+ P_DOE.Visible = False
+ End If
+
+End Sub
+
+Private Sub l_ubicacion2_LongClick
+ If laDist > 49 Then
+ p_pideGeoPass.BringToFront
+ p_pideGeoPass.Visible = True
+ End If
+End Sub
+
+Private Sub p_pideGeoPass_Click
+End Sub
+
+Private Sub b_geopass_Click
+ ime.HideKeyboard
+ If et_geopass.Text = "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}'"$)
+ B_VENTA.Visible = True
+ Tels.Visible = True
+ et_geopass.Text = ""
+ p_pideGeoPass.Visible = False
+ Else
+ Dim cmd As DBCommand
+ cmd.Initialize
+ cmd.Name = "select_geoPass"
+ cmd.Parameters = Array As Object(et_geopass.Text, Subs.traeAlmacen, Subs.traeRuta)
+ reqManager.ExecuteQuery(cmd , 0, "traeGeoPass")
+ Log($"${Starter.server}, ${et_geopass.Text}, ${Subs.traeAlmacen}, ${Subs.traeRuta}"$)
+ p_pideGeoPass.Visible = False
+ ime.HideKeyboard
+ ' Log("Guardamos coords")
+ ' LATITUD = Starter.lat_gps
+ ' LONGITUD = 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}'"$)
+ End If
+End Sub
+
+Sub P_INF_GENERAL_Click
+ If p_pideGeoPass.Visible Then p_pideGeoPass.Visible = False
+End Sub
+
+Sub JobDone(Job As HttpJob)
+ If Job.Success = False Then
+' ToastMessageShow("Error: " & Job.ErrorMessage, True)
+ LogColor("Error: " & Job.ErrorMessage, Colors.red)
+ Else
+ 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 = "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")
+ For Each records() As Object In result.Rows
+' For Each k As String In result.Columns.Keys
+' Log(k & ": " & records(result.Columns.Get(k)))
+' Next
+ Private permiso_geoPass As String = records(result.Columns.Get("'OK'"))
+ If permiso_geoPass = "OK" 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}'"$)
+ Dim cmd As DBCommand
+ cmd.Initialize
+ cmd.Name = "delete_geoPass"
+ cmd.Parameters = Array As Object( Subs.traeAlmacen, Subs.traeRuta)
+ reqManager.ExecuteQuery(cmd , 0, "traeGeoPass")
+
+ End If
+ Next
+ End If
+ End If
+ End If
+ Job.Release
+End Sub
+
+Private Sub BP_DOE_R1_Click
+ If r_1.Checked Then
+ motivo = "CERRADO"
+ Else If r_2.Checked Then
+ motivo = "NO LO PIDIO"
+ Else If r_3.Checked Then
+ motivo = "FUERA DE TIEMPO"
+ Else if r_4.Checked Then
+ motivo = "NO ESTA EL ENCARGADO"
+ Else if R_5.Checked Then
+ motivo = "FALTA DE DINERO"
+ End If
+ motivo = motivo & " " & e_comm.Text
+
+ BP_DOE_A.Visible = True
+ BP_DOE_R.Visible = True
+
+ Panel11.Visible = False
+ P_DOE.Visible = False
+ c=Starter.skmt.ExecQuery("select PE_PROID,PE_CANT, PE_TIPO FROM PEDIDO_DOE where pe_cliente in (Select CUENTA from cuentaa) ")
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Starter.skmt.ExecNonQuery2("update cat_gunaprod2 set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?", Array As Object(c.GetString("PE_CANT"),c.GetString("PE_PROID")))
+ Next
+ End If
+' Starter.skmt.ExecNonQuery("delete from pedido_cliente where pc_cliente in (Select CUENTA from cuentaa)")
+ Starter.skmt.ExecNonQuery("delete from PEDIDOS_DOE_ENTREGA where PC_CLIENTE in (Select CUENTA from cuentaa)")
+ Starter.skmt.ExecNonQuery2("insert into PEDIDOS_DOE_ENTREGA (PC_CLIENTE, PC_ENTREGA) VALUES (?,?) ", Array As Object(clie_id,motivo))
+
+ Starter.skmt.ExecNonQuery("delete from pedido_DOE where pe_cliente in (Select CUENTA from cuentaa)")
+ P_DOE.Visible = False
+End Sub
+
+private Sub pedido_doe_muestra
+ ''' ESTO SE AGREGA PARA QUE SE VEA LOS CLIENTES DOE
+ Dim YA_TIENE_PEDIDO_DOE As String
+
+ C5=Starter.skmt.ExecQuery2("select COUNT(*) AS CLIENTE_DOE from PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) AND PE_CEDIS = ? ", Array As String("DOE"))
+ C5.Position = 0
+ If C5.GetString("CLIENTE_DOE") > 0 Then
+ YA_TIENE_PEDIDO_DOE = 1
+ Else
+ YA_TIENE_PEDIDO_DOE = 0
+ End If
+ C5.Close
+ If YA_TIENE_PEDIDO_DOE = 0 Then
+ C5=Starter.skmt.ExecQuery("select COUNT(*) AS CLIENTE_DOE from PEDIDO_DOE WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) ")
+ C5.Position = 0
+ If C5.GetString("CLIENTE_DOE") >0 Then
+ P_DOE.VISIBLE = True
+ C6=Starter.skmt.ExecQuery("select PE_PROID, PE_PRONOMBRE, PE_CANT, PE_COSTO_TOT from PEDIDO_DOE where PE_CLIENTE IN (Select CUENTA from cuentaa)")
+ LP_DOE.Clear
+ If C6.RowCount>0 Then
+ For i=0 To C6.RowCount -1
+ C6.Position=i
+ Dim label1 As Label
+ label1 = LP_DOE.TwoLinesLayout.Label
+ label1.TextSize = 14
+ label1.TextColor = Colors.Black
+ Dim label2 As Label
+ label2 = LP_DOE.TwoLinesLayout.SecondLabel
+ label2.TextSize = 14
+ label2.TextColor = Colors.Black
+ LP_DOE.AddTwoLines(C6.GetString("PE_PRONOMBRE"), " # " & C6.GetString("PE_CANT") & " TOTAL " & C6.GetString("PE_COSTO_TOT") )
+ Next
+ End If
+ C6.Close
+ C6=Starter.skmt.ExecQuery("select SUM(PE_CANT) AS CANT, SUM(PE_COSTO_TOT) AS TOTAL from PEDIDO_DOE where PE_CLIENTE IN (Select CUENTA from cuentaa)")
+ C6.Position= 0
+ L_DOE_TOTAL.Text = "TOTAL PEDIDO DOE :"& C6.GetString("TOTAL") & " No. PIEZAS: " & C6.GetString("CANT")
+ C6.Close
+ ''' FALTAN LOS BOTONES DE ACEPTAR Y RECHAZAR, INVENTAIRO ABORDO MODIFICAR PARA IMPRIMIR
+ End If
+ C5.Close
+ End If
+End Sub
+
diff --git a/B4A/C_Clientes.bas b/B4A/C_Clientes.bas
new file mode 100644
index 0000000..81673f0
--- /dev/null
+++ b/B4A/C_Clientes.bas
@@ -0,0 +1,281 @@
+B4A=true
+Group=Default Group
+ModulesStructureVersion=1
+Type=Class
+Version=11.5
+@EndOfDesignText@
+Sub Class_Globals
+ Private Root As B4XView 'ignore
+ Private xui As XUI 'ignore
+ '// Process Globals
+ Dim ruta As String
+ Dim q_buscar As String
+ Dim MAC_IMPRESORA As String
+ '// Globals
+ Dim c As Cursor
+ Dim c2 As Cursor
+ Dim s As Cursor
+ Dim ListView1 As ListView
+ Dim entro As String
+ Dim gest As Button
+ Dim lfila As Label
+ Dim busca As EditText
+ Dim colonia As String 'ignore
+ Private b_qr As Button
+ Private qr As QRCode
+ Dim sc As Zxing_scanner
+ Dim CODIGO As String
+ Private b_bdd As Button
+ Private SEMANA As String
+ Private B_IMP As Button
+ Dim logger As Boolean = True
+End Sub
+
+'You can add more parameters here.
+Public Sub Initialize As Object
+ Return Me
+End Sub
+
+'This event will be called once, before the page becomes visible.
+Private Sub B4XPage_Created (Root1 As B4XView)
+ Root = Root1
+ 'load the layout to Root
+ Root.LoadLayout("Clientes")
+ entro ="2"
+ ruta = File.DirInternal
+ qr.initialize
+ c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("MACIMP"))
+ c.Position =0
+ MAC_IMPRESORA = c.GetString("CAT_VA_VALOR")
+ Starter.MAC_IMPRESORA = MAC_IMPRESORA
+ If Not(Starter.Logger) Then logger = False
+End Sub
+
+'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
+
+Sub B4XPage_Appear
+ B_IMP.Visible = False
+' If Logger Then Log(Me)
+' If Logger Then LogColor("Ultima actividad guardada=" & Subs.traeUltimaActividadBD, Colors.Blue)
+' If Subs.traeUltimaActividadBD <> "colonia" Then Subs.iniciaActividad(Subs.traeUltimaActividadBD)
+ c=Starter.skmt.ExecQuery2("select count(*) AS CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SEMANA"))
+ c.Position =0
+ SEMANA = c.GetString("CUANTOS")
+ c.Close
+ If SEMANA > 0 Then
+ c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SEMANA"))
+ c.Position =0
+ SEMANA = c.GetString("CAT_VA_VALOR")
+ c.Close
+ End If
+ b_bdd.Visible = True
+' b_qr.Visible = True
+ busca.Text = ""
+ entro ="2"
+ colonia = 0
+ c=Starter.skmt.ExecQuery2("select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO, CAT_CL_NUM_SERIEFISICO from kmt_info where CAT_CL_DIAS_VISITA = (SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?) and gestion = 0 and cat_cl_codigo not in (select pe_cliente from pedido) and cat_cl_codigo <> 0 AND CAT_CL_TIPO_RUTA IN (?,?) and CAT_CL_CODIGO not in (select NV_CLIENTE from NOVENTA) ORDER BY CAT_CL_NUM_SERIEFISICO", Array As String("DIA_VISITA",SEMANA, "SEMANAL"))
+ ListView1.Clear
+ lfila.Text = "NOMBRE"
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Dim label1 As Label
+ label1 = ListView1.TwoLinesLayout.Label
+ label1.TextSize = 14
+ label1.TextColor = Colors.Black
+ Dim label2 As Label
+ label2 = ListView1.TwoLinesLayout.SecondLabel
+ label2.TextSize = 14
+ label2.TextColor = Colors.Black
+ ListView1.AddTwoLines(c.GetString("CAT_CL_CODIGO"), c.GetString("CAT_CL_NUM_SERIEFISICO") & " " & c.GetString("CAT_CL_NOMBRE") )
+ Next
+ End If
+ entro = "4"
+End Sub
+
+Sub ListView1_ItemClick (Position As Int, Value As Object)
+' If Logger Then Log(Regex.Split("\.",Me)(Regex.Split("\.",Me).Length-1))
+ Private Subrutina As Map =CreateMap("nombre":"ListView1_ItemClick", "param1":Position, "param2":Value)
+ Starter.sesion = CreateMap("actividad":Me, "sub":Subrutina)
+ If colonia = 0 Then
+ colonia = Value
+ End If
+ If entro = "2" Then
+ c2=Starter.skmt.ExecQuery2("select CAT_CL_CALLE, CAT_CL_COLONIA, count(*) as cuantos from kmt_info where gestion = 0 and CAT_CL_COLONIA = ? GROUP BY CAT_CL_CALLE, CAT_CL_COLONIA order by CAT_CL_CALLE ", Array As String(Value))
+ ListView1.Clear
+ lfila.text = "Calle"
+ If c2.RowCount>0 Then
+ For i=0 To c2.RowCount -1
+ c2.Position=i
+ ListView1.AddTwoLines(c2.GetString("CAT_CL_CALLE"),c2.GetString("cuantos") )
+ Next
+ End If
+ entro = "3"
+ Else If entro = "3" Then
+ c2=Starter.skmt.ExecQuery2("select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO from kmt_info where gestion = 0 and CAT_CL_CALLE = ? AND CAT_CL_COLONIA = ? order by CAT_CL_NOMBRE ", Array As String(Value, colonia))
+ ListView1.Clear
+ lfila.text = "Nombre"
+ If c2.RowCount>0 Then
+ For i=0 To c2.RowCount -1
+ c2.Position=i
+ ListView1.AddTwoLines(c2.GetString("CAT_CL_CODIGO"), c2.GetString("CAT_CL_NOMBRE"))
+ Next
+ End If
+ entro = "4"
+ Else If entro = "4" Then
+ Starter.skmt.ExecNonQuery("delete from CUENTAA")
+ Starter.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(Value))
+ Starter.boleta = 0
+ Subs.iniciaActividad("Cliente")
+ End If
+End Sub
+
+Sub Activity_KeyPress (key As Int) As Boolean 'ignore
+ ' BACK key pressed
+ If key=KeyCodes.KEYCODE_BACK Then
+ Subs.iniciaActividad("Principal")
+ Return False
+ 'End If
+ End If
+ ' Returning False signals the system to handle the key
+End Sub
+
+Sub BUSCA_TextChanged (Old As String, New As String)
+ q_buscar = "%" & busca.Text & "%"
+ c2=Starter.skmt.ExecQuery2("select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO from kmt_info where (CAT_CL_NOMBRE like ? OR CAT_CL_CODIGO LIKE ?) and CAT_CL_DIAS_VISITA = (SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?) and gestion = 0 order by CAT_CL_NOMBRE ", Array As String(q_buscar,q_buscar,"DIA_VISITA"))
+ ListView1.Clear
+ lfila.text = "Nombre y Calle"
+ If c2.RowCount>0 Then
+ For i=0 To c2.RowCount -1
+ c2.Position=i
+ Dim label1 As Label
+ label1 = ListView1.TwoLinesLayout.Label
+ label1.TextSize = 14
+ label1.TextColor = Colors.Black
+ Dim label2 As Label
+ label2 = ListView1.TwoLinesLayout.SecondLabel
+ label2.TextSize = 14
+ label2.TextColor = Colors.Black
+ ListView1.AddTwoLines(c2.GetString("CAT_CL_CODIGO"), c2.GetString("CAT_CL_NOMBRE") &" CALLE: "& c2.GetString("CAT_CL_CALLE"))
+ Next
+ End If
+ entro = "4"
+ c2.Close
+End Sub
+
+Sub b_qr_Click
+ Dim scan_width As Int
+ Dim scan_height As Int
+ scan_width = 400
+ scan_height = 400
+ sc.BeginScan("sc","CODIGO CLIENTE",scan_width,scan_height)
+End Sub
+
+Sub sc_result(atype As String,Values As String)
+ 'If Logger Then Log("Type : " & atype)
+ 'If Logger Then Log("Value : " & Values)
+ CODIGO = Values
+ c2=Starter.skmt.ExecQuery2("select COUNT(*) AS ENCONTRADO from kmt_info where CAT_CL_NUM_SERIEFISICO = ? order by CAT_CL_NOMBRE ", Array As String(CODIGO))
+ c2.Position =0
+ If c2.GetString("ENCONTRADO") > 0 Then
+ s=Starter.skmt.ExecQuery2("select CAT_CL_CODIGO from kmt_info where CAT_CL_NUM_SERIEFISICO = ? order by CAT_CL_NOMBRE ", Array As String(CODIGO))
+ s.Position =0
+ Starter.skmt.ExecNonQuery("delete from CUENTAA")
+ Starter.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(s.GetString("CAT_CL_CODIGO")))
+ s.Close
+ b_qr.Visible = False
+ Subs.iniciaActividad("Cliente")
+ Else
+ Msgbox("CODIGO " & CODIGO & " NO ENCONTRADO","AVISO") 'ignore
+ End If
+End Sub
+
+Sub sc_noScan
+ If logger Then Log("nothing returned from the scan !!!!!")
+End Sub
+
+Sub calc_ean_checksum(number As String) As String 'this has now become redundant as I am only interested in QR Codes
+ Dim i As Int
+' Dim cO As Char
+ Dim soma As Int
+ Dim n As Int
+ Dim digit As Float
+ soma = 0
+ For i=0 To number.Length - 1
+ digit = number.SubString2(i,i+1)
+ n= digit * ((i Mod 2) * 2 + 1)
+ soma=soma+n
+ Next
+ Return number & ( ( 10 - ( soma Mod 10 )) Mod 10 )
+End Sub
+
+Sub b_bdd_Click
+ q_buscar = "%" & busca.Text & "%"
+ c2=Starter.skmt.ExecQuery2("select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO from kmt_info where (CAT_CL_NOMBRE like ? OR CAT_CL_CODIGO LIKE ?) and gestion = 0 order by CAT_CL_NOMBRE ", Array As String(q_buscar,q_buscar))
+ ListView1.Clear
+ lfila.text = "Nombre y Calle"
+ If c2.RowCount>0 Then
+ For i=0 To c2.RowCount -1
+ c2.Position=i
+ Dim label1 As Label
+ label1 = ListView1.TwoLinesLayout.Label
+ label1.TextSize = 14
+ label1.TextColor = Colors.Black
+ Dim label2 As Label
+ label2 = ListView1.TwoLinesLayout.SecondLabel
+ label2.TextSize = 14
+ label2.TextColor = Colors.Black
+ ListView1.AddTwoLines(c2.GetString("CAT_CL_CODIGO"), c2.GetString("CAT_CL_NOMBRE") &" CALLE: "& c2.GetString("CAT_CL_CALLE"))
+ Next
+ End If
+ entro = "4"
+ c2.Close
+End Sub
+
+'Imprimimos clientes.
+Sub B_IMP_Click
+' If Printer1.IsInitialized And Printer1.IsConnected = False Then
+' Printer1.Connect
+' ToastMessageShow("Conectando impresora ...", False)
+' End If
+' Try
+' c=Starter.skmt.ExecQuery2("select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO, CAT_CL_NUM_SERIEFISICO from kmt_info where CAT_CL_DIAS_VISITA = (SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?) and gestion = 0 and cat_cl_codigo not in (select pe_cliente from pedido) and cat_cl_codigo <> 0 AND CAT_CL_TIPO_RUTA IN (?,?) ORDER BY CAT_CL_NUM_SERIEFISICO", Array As String("DIA_VISITA",SEMANA, "SEMANAL"))
+ '' c=skmt.ExecQuery("select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO,CAT_CL_DIAS_VISITA from kmt_info where gestion = 0 and cat_cl_codigo <> 0 ORDER BY CAT_CL_CODIGO")
+' If c.RowCount>0 Then
+' For i=0 To c.RowCount -1
+' c.Position=i
+' Printer1.WriteString("ID. " & c.GetString("CAT_CL_CODIGO") & CRLF)
+' Printer1.WriteString("Nombre " & c.GetString("CAT_CL_NUM_SERIEFISICO") & " " & c.GetString("CAT_CL_NOMBRE") & CRLF)
+' Printer1.WriteString("------------------------------" & CRLF)
+' Next
+' End If
+' Catch
+' Log(LastException)
+' End Try
+End Sub
+
+Sub revisaImpresora (mode As String) 'ignore
+' If Not(Starter.btAdmin.IsEnabled) Then Starter.btAdmin.Enable 'Si no esta prendido el BT lo prendemos.
+' If Not(Printer1.IsInitialized) Then Printer1.Initialize(Me, "Printer1") 'Si no esta inicializada la inicializamos.
+' If Not(Starter.revisandoImpresora) Then Return
+' Starter.revisandoImpresora = True
+' If mode = "BT" Then
+ '' If Logger Then LogColor("reiniciamos BT", Colors.Blue)
+ '' Starter.btAdmin.Disable
+ '' Sleep(500)
+ '' Starter.btAdmin.Enable
+ '' Sleep(1000)
+ '' If Starter.btAdmin.IsEnabled Then revisaImpresora("")
+' Else
+ '' ToastMessageShow("Conectando impresora.", False)
+' If Not(Printer1.IsConnected) Then 'Si no estamos conectados, nos conectamos.
+' If Logger Then Log("Connect")
+' Printer1.Connect
+' Else 'Si ya estamos conectados
+' If Logger Then Log("Disc-Conn")
+' Printer1.DisConnect
+' Sleep(1000)
+' Printer1.Connect
+' End If
+' End If
+End Sub
\ No newline at end of file
diff --git a/B4A/C_Foto.bas b/B4A/C_Foto.bas
new file mode 100644
index 0000000..cb0f9fb
--- /dev/null
+++ b/B4A/C_Foto.bas
@@ -0,0 +1,184 @@
+B4A=true
+Group=Default Group
+ModulesStructureVersion=1
+Type=Class
+Version=11.5
+@EndOfDesignText@
+Sub Class_Globals
+ Private Root As B4XView 'ignore
+ Private xui As XUI 'ignore
+ '//Process Globals
+ Dim ruta As String
+ Dim g As GPS
+ Private frontCamera As Boolean = False
+ Dim quien_llamo As String
+ Dim foto_g () As Byte
+ Dim foto_g1 () As Byte
+ Dim foto_g2 () As Byte
+ Dim foto_g3 () As Byte
+ Dim foto_g4 () As Byte
+ '//Globals
+ Dim btnTakePicture As Button
+ Dim Panel1 As Panel
+ Dim c As Cursor
+ Dim cuenta As String
+ Dim lat_gps As String
+ Dim lon_gps As String
+ Private camEx As CameraExClass
+ Private i_foto As ImageView
+ Private b_guardar As Button
+End Sub
+
+'You can add more parameters here.
+Public Sub Initialize As Object
+ Return Me
+End Sub
+
+'This event will be called once, before the page becomes visible.
+Private Sub B4XPage_Created (Root1 As B4XView)
+ Root = Root1
+ 'load the layout to Root
+ Root.LoadLayout("foto")
+ Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_CAMERA)
+ Wait For Activity_PermissionResult (Permission As String, Result As Boolean)
+ ruta = File.DirInternal
+End Sub
+
+'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
+
+
+Sub Camera1_Ready (Success As Boolean)
+ If Success Then
+ ' camEx.SetJpegQuality(90)
+ ' camEx.CommitParameters
+ Dim ps As CameraSize
+ ps.Width =640'480 '1280
+ ps.Height =480'360 '960
+ camEx.SetPictureSize(ps.Width, ps.Height)
+ camEx.CommitParameters
+ Try
+ camEx.StartPreview
+ Catch
+ camEx.Release
+ Subs.iniciaActividad("CHECKLIST_AUTO")
+ End Try
+ ' Dim ps As CameraSize
+ ' ps.Width =640 '1280
+ ' ps.Height =480 '960
+ ' camEx.SetPictureSize(ps.Width, ps.Height)
+ ' camEx.CommitParameters
+
+ ' Log(camEx.GetPreviewSize)
+ 'Msgbox(camEx.GetPreviewSize,"aviso") 'ignore
+ Else
+ Subs.iniciaActividad("CHECKLIST_AUTO")
+ 'ToastMessageShow("Cannot open camera.", True)
+ End If
+End Sub
+
+Sub Activity_Resume
+ i_foto.Visible = False
+' If g.GPSEnabled=False Then
+' ToastMessageShow("Habilitar el GPS", True)
+' StartActivity(g.LocationSettingsIntent)
+' Else
+' g.Start(0,0)
+' End If
+ InitializeCamera
+ btnTakePicture.Enabled = True
+ b_guardar.Enabled = False
+End Sub
+
+Sub Activity_Pause (UserClosed As Boolean)
+ camEx.Release
+End Sub
+
+Sub GPS_LocationChanged (Location1 As Location)
+' lat_gps=Location1.ConvertToSeconds(Location1.Latitude)
+' lon_gps=Location1.ConvertToSeconds(Location1.Longitude)
+' 'btnTakePicture.Enabled = True
+' 's.ExecNonQuery2("INSERT INTO HIST_GPS (HGDATE,HGLAT, HGLON) VALUES(?,?,?) ", Array As Object (sDate & sTime, lat_gps, lon_gps))
+End Sub
+
+Private Sub InitializeCamera
+ camEx.Initialize(Panel1, frontCamera, Me, "Camera1")
+ frontCamera = camEx.Front
+End Sub
+
+Sub Camera1_PictureTaken (Data() As Byte)
+ btnTakePicture.Enabled = True
+ Dim filename As String = "2.jpg"
+ Dim dir As String = File.DirRootExternal
+ camEx.SavePictureToFile(Data, dir, filename)
+ camEx.StartPreview 'restart preview
+ i_foto.Visible = True
+ i_foto.Bitmap = LoadBitmap(File.DirRootExternal, "2.jpg")
+ If B4XPages.MainPage.cliente.TOMAR_FOTO = 1 Then
+ Dim InputStream1 As InputStream
+ InputStream1 = File.OpenInput(File.DirRootExternal, "2.jpg")
+ Dim OutputStream1 As OutputStream
+ OutputStream1.InitializeToBytesArray(500)
+ File.Copy2(InputStream1, OutputStream1)
+ foto_g = OutputStream1.ToBytesArray
+ End If
+ b_guardar.Enabled = True
+ camEx.Release
+ InitializeCamera
+ btnTakePicture.Enabled = True
+End Sub
+
+Sub Activity_KeyPress (key As Int) As Boolean
+ ' BACK key pressed
+ If key=KeyCodes.KEYCODE_BACK Then
+ ' I want to capture the key here so I return True
+ B4XPages.ShowPage("Principal")
+ 'Return True
+ End If
+ ' Returning False signals the system to handle the key
+ Return False
+End Sub
+
+Sub b_guardar_Click
+ camEx.Release
+ 'If quien_llamo = "1" Then
+ Try
+ If quien_llamo = "1" Then
+ File.Copy(File.DirRootExternal, "2.jpg",File.DirRootExternal, "FOTO1.jpg")
+ Subs.iniciaActividad("CHECKLIST_AUTO")
+ else if quien_llamo = "2" Then
+ File.Copy(File.DirRootExternal, "2.jpg",File.DirRootExternal, "FOTO2.jpg")
+ Subs.iniciaActividad("CHECKLIST_AUTO")
+ else if quien_llamo = "3" Then
+ File.Copy(File.DirRootExternal, "2.jpg",File.DirRootExternal, "FOTO3.jpg")
+ Subs.iniciaActividad("CHECKLIST_AUTO")
+ else if quien_llamo = "4" Then
+ File.Copy(File.DirRootExternal, "2.jpg",File.DirRootExternal, "FOTO4.jpg")
+ Subs.iniciaActividad("CHECKLIST_AUTO")
+ End If
+ If B4XPages.MainPage.cliente.TOMAR_FOTO = 1 Then
+ c=Starter.skmt.ExecQuery("select cuenta from cuentaa")
+ c.Position = 0
+ cuenta = c.GetString("CUENTA")
+ c.Close
+ Starter.skmt.ExecNonQuery2("INSERT INTO HIST_FOTOS (HF_FOTO, HF_CUENTA, HF_IDENCUESTA) VALUES(?,?,?) ", Array As Object (foto_g,cuenta, B4XPages.MainPage.cliente.id_encuesta ))
+ Subs.iniciaActividad("fila")
+ End If
+ Catch
+ Msgbox("ERROR EN FOTO","") 'ignore
+ If B4XPages.MainPage.cliente.TOMAR_FOTO = 1 Then
+ Subs.iniciaActividad("fila")
+ Else
+ Subs.iniciaActividad("CHECKLIST_AUTO")
+ End If
+ End Try
+End Sub
+
+Sub btnTakePicture_Click
+ btnTakePicture.Enabled = False
+ Dim ps As CameraSize
+ ps.Width =640'480 '1280
+ ps.Height =480'360 '960
+ camEx.SetPictureSize(ps.Width, ps.Height)
+ camEx.CommitParameters
+ camEx.TakePicture
+End Sub
\ No newline at end of file
diff --git a/B4A/C_Historico.bas b/B4A/C_Historico.bas
new file mode 100644
index 0000000..dec7c0b
--- /dev/null
+++ b/B4A/C_Historico.bas
@@ -0,0 +1,135 @@
+B4A=true
+Group=Default Group
+ModulesStructureVersion=1
+Type=Class
+Version=11.5
+@EndOfDesignText@
+Sub Class_Globals
+ Private Root As B4XView 'ignore
+ Private xui As XUI 'ignore
+ '//Process Globals
+ Dim g As GPS
+ Dim clie_id As String
+ Dim sDate,sTime As String
+ Dim usuario As String
+ '//Globals
+ Dim c As Cursor
+ Dim ruta As String
+ Dim Regresar As Button
+ Dim ListView1 As ListView
+ Dim L_CANT As Label
+ Dim L_TOTAL As Label
+ Dim borra As Button
+ Dim Existe As String
+ Dim result As String
+ Dim lat_gps, lon_gps As String
+ Private Titulo As Label
+ Private b_desc As Button
+ Private ListView2 As ListView
+ Private B_RMI As Button
+End Sub
+
+'You can add more parameters here.
+Public Sub Initialize As Object
+ Return Me
+End Sub
+
+'This event will be called once, before the page becomes visible.
+Private Sub B4XPage_Created (Root1 As B4XView)
+ Root = Root1
+ 'load the layout to Root
+ ruta = File.DirInternal
+ Root.LoadLayout("historico")
+ B_RMI.Visible = True
+ borra.Visible = False
+ Titulo.Text = "Acumulado"
+ b_desc.Visible = False
+End Sub
+
+'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
+
+Sub B4XPage_Appear
+ L_CANT.Text =""
+ L_TOTAL.Text=""
+ c=Starter.skmt.ExecQuery("select count(*) as EXISTE from HIST_VENTAS WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa)")
+ C.Position=0
+ Existe = C.GetString("EXISTE")
+ C.Close
+ c=Starter.skmt.ExecQuery("select HVD_CLIENTE,HVD_PRONOMBRE,HVD_CANT,HVD_COSTO_TOT, HVD_FECHA from HIST_VENTAS WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa) order by HVD_FECHA asc")
+ ListView1.Clear
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Dim label1 As Label
+ label1 = ListView1.TwoLinesLayout.Label
+ label1.TextSize = 15
+ label1.TextColor = Colors.Black
+ Dim label2 As Label
+ label2 = ListView1.TwoLinesLayout.SecondLabel
+ label2.TextSize = 10
+ label2.TextColor = Colors.Black
+ ListView1.AddTwoLines(c.GetString("HVD_PRONOMBRE"),"Cantidad #"& c.GetString("HVD_CANT")& " SubTotal $"& c.GetString("HVD_COSTO_TOT")& " FECHA " &c.GetString("HVD_FECHA") )
+ Next
+ End If
+ If Existe <> 0 Then
+ c=Starter.skmt.ExecQuery("select SUM(HVD_CANT) AS PC_NOART, SUM(HVD_COSTO_TOT) AS PC_MONTO from HIST_VENTAS where HVD_CLIENTE in (Select CUENTA from cuentaa)")
+ C.Position=0
+ L_CANT.Text = c.GetString("PC_NOART")
+ L_TOTAL.Text = c.GetString("PC_MONTO")
+ End If
+End Sub
+
+Sub GPS_LocationChanged (Location1 As Location)
+' lat_gps=Location1.ConvertToSeconds(Location1.Latitude)
+' lon_gps=Location1.ConvertToSeconds(Location1.Longitude)
+End Sub
+
+Sub Regresar_Click
+ B_RMI.Visible = False
+ Subs.iniciaActividad("Cliente")
+End Sub
+
+Sub B4XPage_CloseRequest As ResumableSub
+ Log("Vamos a Cliente")
+' BACK key pressed
+' Return True To close, False To cancel
+ Regresar_Click
+' Return True
+ Return False
+End Sub
+
+Sub ListView2_ItemClick (Position As Int, Value As Object)
+ ListView2.Visible = False
+ ListView1.Visible = True
+End Sub
+
+Sub ListView1_ItemClick (Position As Int, Value As Object)
+ ListView2.Visible = True
+ ListView1.Visible = False
+ Dim label1 As Label
+ For i=0 To 20
+ label1 = ListView2.SingleLineLayout.Label
+ label1.TextSize = 15
+ label1.TextColor = Colors.Black
+ ListView2.AddSingleLine(i)
+ Next
+End Sub
+
+Sub B_RMI_Click
+ c=Starter.skmt.ExecQuery("select HR_CLIENTE,HR_PRONOMBRE,HR_CANT from HIST_RMI WHERE HR_CLIENTE IN (Select CUENTA from cuentaa)")
+ ListView1.Clear
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Dim label1 As Label
+ label1 = ListView1.TwoLinesLayout.Label
+ label1.TextSize = 15
+ label1.TextColor = Colors.Black
+ Dim label2 As Label
+ label2 = ListView1.TwoLinesLayout.SecondLabel
+ label2.TextSize = 10
+ label2.TextColor = Colors.Black
+ ListView1.AddTwoLines(c.GetString("HR_PRONOMBRE"),"Cantidad #"& c.GetString("HR_CANT") )
+ Next
+ End If
+End Sub
\ No newline at end of file
diff --git a/B4A/C_Mapas.bas b/B4A/C_Mapas.bas
new file mode 100644
index 0000000..0473176
--- /dev/null
+++ b/B4A/C_Mapas.bas
@@ -0,0 +1,135 @@
+B4A=true
+Group=Default Group
+ModulesStructureVersion=1
+Type=Class
+Version=11.5
+@EndOfDesignText@
+Sub Class_Globals
+ Private Root As B4XView 'ignore
+ Private xui As XUI 'ignore
+ '//Process Globals
+ Dim GPS As GPS
+ Dim rp As RuntimePermissions
+ Dim ruta As String
+ '//Globals
+ Private gmap As GoogleMap
+ Private MapFragment1 As MapFragment
+ Dim Latitud As Double = 0
+ Dim Longitud As Double = 0
+ Dim Lat2 As Double = 0
+ Dim Lon2 As Double = 0
+ Dim p1, p2 As Location
+ Dim Distance As Float
+ Dim boton1 As Button
+ Dim c As Cursor
+ Dim latmarker As String
+ Dim longmarker As String
+ Private l_long As Label
+ Private l_lat As Label
+ Private NOMBRE_TIENDA As String
+ Dim logger As Boolean = True
+End Sub
+
+'You can add more parameters here.
+Public Sub Initialize As Object
+ Return Me
+End Sub
+
+'This event will be called once, before the page becomes visible.
+Private Sub B4XPage_Created (Root1 As B4XView)
+ Root = Root1
+ 'load the layout to Root
+ Root.LoadLayout("mapas")
+ If MapFragment1.IsGooglePlayServicesAvailable = False Then
+ ToastMessageShow("Please install Google Play Services.", True)
+ End If
+ 'Boton velocidad'
+ boton1.Initialize(0)
+ boton1.Text = 0 &" "&"km/h"
+ boton1.TextColor = Colors.Red
+ boton1.TextSize = 15
+ Root.AddView(boton1, 40%x, 5dip, 25%x, 40dip)
+End Sub
+
+'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
+
+Sub B4XPage_Appear
+ Log("INICIAMOS MAPAS")
+ rp.CheckAndRequest(rp.PERMISSION_ACCESS_FINE_LOCATION)
+ Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
+ gmap.MyLocationEnabled = Result
+ GPS.Initialize("GPS")
+ If GPS.GPSEnabled = False Then
+ ToastMessageShow("Debe Activar el GPS del Equipo.", True)
+ StartActivity(GPS.LocationSettingsIntent)
+ Else
+ GPS.Start(0, 0)
+ End If
+ latmarker = B4XPages.MainPage.cliente.LATITUD
+ longmarker = B4XPages.MainPage.cliente.LONGITUD
+ NOMBRE_TIENDA = B4XPages.MainPage.cliente.NOMBRE
+ If logger Then Log($"lat=${latmarker}, lon=${longmarker}"$)
+ If logger Then Log(gmap)
+ If gmap.IsInitialized And gmap.MyLocationEnabled Then
+ gmap.Clear
+ MapFragment1_Ready
+ End If
+ If Not(Starter.Logger) Then logger = False
+End Sub
+
+Sub B4XPage_CloseRequest As ResumableSub
+ Log("Vamos a Cliente")
+' BACK key pressed
+' Return True To close, False To cancel
+ Subs.iniciaActividad("Cliente")
+' Return True
+ Return False
+End Sub
+
+Sub MapFragment1_Ready
+' LogColor("MapReady", Colors.red)
+ gmap = MapFragment1.GetMap
+ rp.CheckAndRequest(rp.PERMISSION_ACCESS_FINE_LOCATION)
+ Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean)
+ gmap.MyLocationEnabled = Result
+ gmap.Clear
+
+ Dim JavaMapsObject As JavaObject
+ JavaMapsObject = gmap.GetUiSettings
+ JavaMapsObject.RunMethod("setMapToolbarEnabled", Array As Object(True))
+
+ 'marcadores
+ If latmarker = "null" Or latmarker = Null Or latmarker = "" Then 'Zocalo
+ latmarker = "19.432568527069805"
+ longmarker = "-99.13335030112772"
+ End If
+ If logger Then Log($"lat=${latmarker}, lon=${longmarker}"$)
+ Dim marcador1 As Marker = gmap.AddMarker(latmarker, longmarker, "TIENDA")
+ marcador1.Snippet = B4XPages.MainPage.cliente.NOMBRE
+ 'Tienda 1
+
+ 'posicion inicial
+ Dim aa As CameraPosition
+ aa.Initialize(latmarker, longmarker,15)''' RECOMENDABLE CAMBIAR A 10 SI ES MAS DE 1 MARCADOR
+ gmap.AnimateCamera(aa)
+End Sub
+
+Sub GPS_LocationChanged (Parametro As Location)
+ Dim sp As Int
+ sp = Ceil(Parametro.Speed * 3.6)
+ boton1.Text = sp &" "&"km/h"
+ Latitud = Parametro.Latitude
+ Longitud = Parametro.Longitude
+ p2.Initialize2(Latitud,Longitud)
+ p1.Initialize2(Lat2, Lon2)
+ Distance = p1.DistanceTo(p2)
+End Sub
+
+Sub Activity_Pause (UserClosed As Boolean)
+ GPS.Stop
+End Sub
+
+Sub reg_Click
+ Subs.iniciaActividad("Cliente")
+End Sub
+
diff --git a/B4A/C_NoVenta.bas b/B4A/C_NoVenta.bas
new file mode 100644
index 0000000..30ebd03
--- /dev/null
+++ b/B4A/C_NoVenta.bas
@@ -0,0 +1,120 @@
+B4A=true
+Group=Default Group
+ModulesStructureVersion=1
+Type=Class
+Version=11.5
+@EndOfDesignText@
+Sub Class_Globals
+ Private Root As B4XView 'ignore
+ Private xui As XUI 'ignore
+ Dim g As GPS
+ Dim ruta As String
+' Dim skmt As SQL
+ Dim c As Cursor
+ Dim t3 As Timer
+ '// Globals
+ Dim CANCELA As Button
+ Dim GUARDA As Button
+ Dim r_1 As RadioButton
+ Dim r_2 As RadioButton
+ Dim r_3 As RadioButton
+ Dim e_comm As EditText
+ Dim motivo As String
+ Dim cuenta As String
+ Dim usuario As String
+ Dim sDate,sTime As String
+ Dim lat_gps, lon_gps As String
+ Dim CUANTOS As String
+ Dim r_4 As RadioButton
+ Private ImageView1 As ImageView
+ Private ImageView2 As ImageView
+End Sub
+
+'You can add more parameters here.
+Public Sub Initialize As Object
+ Return Me
+End Sub
+
+'This event will be called once, before the page becomes visible.
+Private Sub B4XPage_Created (Root1 As B4XView)
+ Root = Root1
+ 'load the layout to Root
+ Root.LoadLayout("noventa")
+ ruta = File.DirInternal
+End Sub
+
+'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
+
+Sub B4XPage_Appear
+ e_comm.Text=""
+ lat_gps = 0
+ lon_gps = 0
+ res_gps
+End Sub
+
+Sub res_gps
+ GUARDA.Visible = False
+ t3.Initialize("T3", 5000) ' 1000 = 1 second
+ t3.Enabled = True
+ Wait For t3_tick
+ GUARDA.Visible = True
+End Sub
+
+Sub GPS_LocationChanged (Location1 As Location)
+' lat_gps=Location1.ConvertToSeconds(Location1.Latitude)
+' lon_gps=Location1.ConvertToSeconds(Location1.Longitude)
+End Sub
+
+Sub CANCELA_Click
+ Subs.iniciaActividad("Cliente")
+End Sub
+Sub GUARDA_Click
+ If r_1.Checked Then
+ motivo = "CERRADO"
+ Else If r_2.Checked Then
+ motivo = "NO COMPRA"
+ Else If r_3.Checked Then
+ motivo = "CON PRODUCTO"
+ Else
+ motivo = "NO ESTA EL ENCARGADO"
+ End If
+ DateTime.DateFormat = "MM/dd/yyyy"
+ sDate=DateTime.Date(DateTime.Now)
+ sTime=DateTime.Time(DateTime.Now)
+ c=Starter.skmt.ExecQuery("select CUENTA from cuentaa")
+ c.Position = 0
+ cuenta = c.GetString("CUENTA")
+ c=Starter.skmt.ExecQuery("select usuario from usuarioa")
+ c.Position = 0
+ usuario = c.GetString("USUARIO")
+ c=Starter.skmt.ExecQuery("select PE_PROID,PE_CANT FROM PEDIDO where pe_cliente in (Select CUENTA from cuentaa) ")
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Starter.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?", Array As Object(c.GetString("PE_CANT"),c.GetString("PE_PROID")))
+ Next
+ End If
+
+ If lat_gps = 0 Then
+ c=Starter.skmt.ExecQuery("select count(*) as CUANTOS from HIST_GPS")
+ c.Position =0
+ CUANTOS = c.GetString("CUANTOS")
+ c.Close
+ If CUANTOS > 0 Then
+ c=Starter.skmt.ExecQuery("SELECT HGLAT as HGLAT, HGLON as HGLON FROM HIST_GPS")
+ c.Position=0
+ lon_gps = c.GetString("HGLON")
+ lat_gps = c.GetString("HGLAT")
+ c.Close
+ End If
+ End If
+
+ 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.ExecNonQuery2("INSERT INTO NOVENTA (NV_CLIENTE,NV_FECHA,NV_USER,NV_MOTIVO,NV_COMM,NV_LAT,NV_LON) VALUES(?,?,?,?,?,?,?) ", Array As Object (cuenta,sDate & sTime, usuario, motivo,e_comm.text,Starter.lat_gps,Starter.lon_gps))
+ Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 3 where CAT_CL_CODIGO In (select cuenta from cuentaa)")
+' StartActivity(seleccion)
+ B4XPages.ShowPage("Principal")
+' Activity.Finish
+End Sub
\ No newline at end of file
diff --git a/B4A/C_Nota.bas b/B4A/C_Nota.bas
new file mode 100644
index 0000000..26f9071
--- /dev/null
+++ b/B4A/C_Nota.bas
@@ -0,0 +1,434 @@
+B4A=true
+Group=Default Group
+ModulesStructureVersion=1
+Type=Class
+Version=11.5
+@EndOfDesignText@
+Sub Mods 'Ignore
+ '2023/05/11 - Se modifico "ListView1_ItemLongClick" para que si al borrar un producto de la nota, el total es negativo, entonces se borren todos los RMIs de la orden.
+End Sub
+
+Sub Class_Globals
+ Private Root As B4XView 'ignore
+ Private xui As XUI 'ignore
+ '//Process Globals
+ Dim clie_id As String
+ Dim sDate,sTime As String
+ Dim usuario As String
+ '//Globals
+ Dim c,C_DOE As Cursor
+ Dim C1 As Cursor
+ Dim ruta As String
+ Dim Regresar As Button
+ Dim ListView1 As ListView
+ Dim L_CANT As Label
+ Dim L_TOTAL As Label
+ Dim borra As Button
+ Dim Existe As String
+ Dim result As String
+ Dim lat_gps, lon_gps As String
+ Private Titulo As Label
+ Private b_desc As Button
+ Dim DESCUENTO As String
+ Dim folio As String
+ Dim TIPO As String
+ Private CAMBIOS As String
+ Dim logger As Boolean = True
+ Private B_PEDIDO_DOE As Button
+ Private ListView3 As ListView
+ Private L_CANT_D As Label
+ Private L_TOTAL_D As Label
+End Sub
+
+'You can add more parameters here.
+Public Sub Initialize As Object
+ Return Me
+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
+ Root = Root1
+ 'load the layout to Root
+ ruta = File.DirInternal
+ Root.LoadLayout("nota")
+ borra.Visible = True
+ Titulo.Text = "Pedido Actual"
+ Starter.skmt.ExecNonQuery("update pedido set pe_folio = 0 where pe_folio is null")
+ c=Starter.skmt.ExecQuery("select count(*) as EXISTE from pedido_cliente WHERE pc_cliente IN (Select CUENTA from cuentaa)")
+ C.Position=0
+ Existe = C.GetString("EXISTE")
+ C.Close
+ c=Starter.skmt.ExecQuery("select PE_PRONOMBRE,PE_COSTO_TOT, PE_CANT, PE_FOLIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_PRONOMBRE asc")
+ ListView1.Clear
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Dim label1 As Label
+ label1 = ListView1.TwoLinesLayout.Label
+ label1.TextSize = 13
+ label1.TextColor = Colors.Black
+ Dim label2 As Label
+ label2 = ListView1.TwoLinesLayout.SecondLabel
+ label2.TextSize = 12
+ label2.TextColor = Colors.Black
+ ListView1.AddTwoLines(c.GetString("PE_PRONOMBRE"),"Cantidad #"& c.GetString("PE_CANT")& " SubTotal $"& c.GetString("PE_COSTO_TOT")& " Folio "& c.GetString("PE_FOLIO"))
+ folio = c.GetString("PE_FOLIO")
+ Next
+ End If
+ If Existe <> 0 Then
+ c=Starter.skmt.ExecQuery("select pc_noart, pc_monto from pedido_cliente where pc_cliente in (Select CUENTA from cuentaa)")
+ C.Position=0
+ L_CANT.Text = c.GetString("PC_NOART")
+ L_TOTAL.Text = c.GetString("PC_MONTO")
+ End If
+End Sub
+
+'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
+
+Sub B4XPage_Appear
+ c=Starter.skmt.ExecQuery2("select count(*) as CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) AND PE_CEDIS = ?", Array As String("DOE"))
+ c.Position = 0
+ ListView1.Visible = True
+ L_CANT.Visible = True
+ L_TOTAL.Visible = True
+ ListView3.Visible = False
+ L_CANT_D.Visible = False
+ L_TOTAL_D.Visible = False
+ If c.GetString("CUANTOS") > 0 Then
+
+ B_PEDIDO_DOE.Text = "PEDIDO DON TOÑO"
+ B_PEDIDO_DOE.VISIBLE = True
+ C_DOE=Starter.skmt.ExecQuery2("select PE_PRONOMBRE,PE_COSTO_TOT, PE_CANT, PE_FOLIO FROM PEDIDO WHERE PE_CEDIS = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_PRONOMBRE asc", Array As String("DOE"))
+ ListView3.Clear
+ If C_DOE.RowCount>0 Then
+ For i=0 To C_DOE.RowCount -1
+ C_DOE.Position=i
+ Private txtPromo As String = ""
+ If C_DOE.GetString("PE_COSTO_TOT") < 0.02 And C_DOE.GetString("PE_COSTO_TOT") >= 0 Then txtPromo = "P - "
+ If C_DOE.GetString("PE_COSTO_TOT") < 0 Then txtPromo = "RMI - "
+ Dim label1 As Label
+ label1 = ListView3.TwoLinesLayout.Label
+ label1.TextSize = 15
+ label1.TextColor = Colors.Black
+ Dim label2 As Label
+ label2 = ListView3.TwoLinesLayout.SecondLabel
+ label2.TextSize = 12
+ label2.TextColor = Colors.Black
+ ListView3.AddTwoLines(C_DOE.GetString("PE_PRONOMBRE"),txtPromo & "Cantidad #"& C_DOE.GetString("PE_CANT")& " SubTotal $"& C_DOE.GetString("PE_COSTO_TOT")& " Folio "& C_DOE.GetString("PE_FOLIO"))
+ folio = C_DOE.GetString("PE_FOLIO")
+ Next
+ End If
+ C_DOE.Close
+ 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 = C_DOE.GetString("MONTO")
+ c.Close
+ Else
+ B_PEDIDO_DOE.VISIBLE = False
+ End If
+ c=Starter.skmt.ExecQuery("select count(*) as CUANTOS from kmt_info where (impresion = 1 or cat_cl_codigo in (select ci_cuenta from cliente_impreso)) and CAT_CL_CODIGO in (Select CUENTA from cuentaa)")
+ c.Position = 0
+ If logger Then Log($"Impreso: ${c.GetString("CUANTOS")}"$)
+ If c.GetString("CUANTOS") > 0 Then
+ borra.Visible = False
+ Else
+ borra.Visible = True
+ End If
+ If Subs.clienteActual = "0" Then borra.Visible = True 'Si el cliente actual es "abordo" entonces SIEMPRE lo dejamos modificar la venta.
+ c.Close
+ L_CANT.Text =""
+ L_TOTAL.Text=""
+ Starter.skmt.ExecNonQuery("update pedido set pe_folio = 0 where pe_folio is null")
+ c=Starter.skmt.ExecQuery("select count(*) as EXISTE from pedido_cliente WHERE pc_cliente IN (Select CUENTA from cuentaa)")
+ C.Position=0
+ Existe = C.GetString("EXISTE")
+ C.Close
+ c=Starter.skmt.ExecQuery2("select PE_PRONOMBRE,PE_COSTO_TOT, PE_CANT, PE_FOLIO FROM PEDIDO WHERE PE_CEDIS <> ? AND PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_PRONOMBRE asc", Array As String("DOE"))
+ ListView1.Clear
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Private txtPromo As String = ""
+ If c.GetString("PE_COSTO_TOT") < 0.02 And c.GetString("PE_COSTO_TOT") >= 0 Then txtPromo = "P - "
+ If c.GetString("PE_COSTO_TOT") < 0 Then txtPromo = "RMI - "
+ Dim label1 As Label
+ label1 = ListView1.TwoLinesLayout.Label
+ label1.TextSize = 15
+ label1.TextColor = Colors.Black
+ Dim label2 As Label
+ label2 = ListView1.TwoLinesLayout.SecondLabel
+ label2.TextSize = 12
+ label2.TextColor = Colors.Black
+ ListView1.AddTwoLines(c.GetString("PE_PRONOMBRE"),txtPromo & "Cantidad #"& c.GetString("PE_CANT")& " SubTotal $"& c.GetString("PE_COSTO_TOT")& " Folio "& c.GetString("PE_FOLIO"))
+ folio = c.GetString("PE_FOLIO")
+ Next
+ End If
+ If Existe <> 0 Then
+ c=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.Position=0
+ L_CANT.Text = c.GetString("CANTIDAD")
+ L_TOTAL.Text = c.GetString("MONTO")
+ c.Close
+ c=Starter.skmt.ExecQuery("select SUM(IFNULL(PE_DESC,0)) AS DESCUENTO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
+ c.Position=0
+ b_desc.Visible = False
+ End If
+ c=Starter.skmt.ExecQuery("select count(*) As CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
+ c.Position = 0
+ If c.GetString("CUANTOS") = 0 Then
+ folio = 0
+ Else
+ C1=Starter.skmt.ExecQuery("SELECT SUM(ifnull(PE_FOLIO,0)) AS FOLIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
+ C1.Position = 0
+ folio = C1.GetString("FOLIO")
+ If C1.GetString("FOLIO") > 0 Then
+ folio = 100
+ End If
+ End If
+ c.Close
+End Sub
+
+Sub Activity_Pause (UserClosed As Boolean)
+
+End Sub
+
+Sub GPS_LocationChanged (Location1 As Location)
+' lat_gps=Location1.ConvertToSeconds(Location1.Latitude)
+' lon_gps=Location1.ConvertToSeconds(Location1.Longitude)
+End Sub
+
+Sub Regresar_Click
+ Subs.iniciaActividad("Cliente")
+End Sub
+
+Sub Activity_KeyPress (key As Int) As Boolean
+ ' BACK key pressed
+ If key=KeyCodes.KEYCODE_BACK Then
+ ' I want to capture the key here so I return True
+ Subs.iniciaActividad("Cliente")
+ 'Return True
+ End If
+ ' Returning False signals the system to handle the key
+ Return False
+End Sub
+
+Sub borra_Click
+ If folio = "0" Or Subs.clienteActual = "0" Then 'Si el folio es 0 o el cliente actual es "abordo", los deja borrar. - Mod por CHV 220512
+ result = Msgbox2("Seguro que desea borrar el pedido?","Cancelar pedido", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore
+ If result = DialogResponse.POSITIVE Then
+ c=Starter.skmt.ExecQuery("select PE_PROID, PE_CANT, PE_TIPO FROM PEDIDO where pe_cliente in (Select CUENTA from cuentaa) ")
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ TIPO = c.GetString("PE_TIPO")
+ If c.GetString("PE_TIPO") = "VENTA" Then
+ Starter.skmt.ExecNonQuery2("update cat_gunaprod2 set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?", Array As Object(c.GetString("PE_CANT"),c.GetString("PE_PROID")))
+ Else
+ Starter.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?", Array As Object(c.GetString("PE_CANT"),c.GetString("PE_PROID")))
+ End If
+ Next
+ End If
+ 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)")
+ B4XPage_Appear
+ End If
+ Else
+ Msgbox("CLIENTE YA SE TRANSMITIO, FAVOR DE LLAMAR A SOPORTE PARA ASISTENCIA","AVISO") 'ignore
+ End If
+End Sub
+
+Sub ListView1_ItemLongClick (Position As Int, Value As Object)
+ c=Starter.skmt.ExecQuery("select count(*) as CUANTOS from CLIENTE_IMPRESO where CI_CUENTA in (Select CUENTA from cuentaa)")
+ c.Position = 0
+ If c.GetString("CUANTOS") = 0 Or Subs.clienteActual = "0" Then 'Si la venta no está impresa o es abordo entonces continuamos ...
+ c=Starter.skmt.ExecQuery2("select count(*) as CUANTOS, sum(PE_COSTO_TOT) as sumaRMIs FROM PEDIDO WHERE PE_CEDIS = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("DUR"))
+ c.Position = 0
+ CAMBIOS = c.GetString("CUANTOS")
+ c.Close
+ c=Starter.skmt.ExecQuery2("select PE_PRONOMBRE,PE_COSTO_TOT, PE_CANT, PE_FOLIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) AND PE_PRONOMBRE = ? order by PE_PRONOMBRE asc", Array As String(Value) )
+ c.Position = 0
+ If c.GetString("PE_FOLIO") = "0" Or Subs.clienteActual = "0" Then
+ result = Msgbox2("Seguro que desea borrar este articulo?","Borrar Articulo", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore
+ If result = DialogResponse.POSITIVE Then
+ c=Starter.skmt.ExecQuery2("select PE_PROID,PE_CANT, PE_TIPO FROM PEDIDO where pe_pronombre = ? and pe_cliente in (Select CUENTA from cuentaa) AND PE_CEDIS <> ? ", Array As String(Value, "DOE"))
+ c.Position=0
+ TIPO = c.GetString("PE_TIPO")
+ If c.GetString("PE_TIPO") = "VENTA" Then
+ Starter.skmt.ExecNonQuery2("update cat_gunaprod2 set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?", Array As Object(c.GetString("PE_CANT"),c.GetString("PE_PROID")))
+ Else
+ Starter.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?", Array As Object(c.GetString("PE_CANT"),c.GetString("PE_PROID")))
+ End If
+ c.Close
+
+
+ If TIPO = "VENTA" Then
+ c=Starter.skmt.ExecQuery2("select count(*) AS CUANTOS from cat_gunaprod2 where CAT_GP_ID in (select pe_cedis from pedido where pe_pronombre = ? and pe_cliente in (Select CUENTA from cuentaa)) and CAT_GP_CLASIF = 'PROMOS' AND CAT_GP_TIPO = 'PROMOS' AND CAT_GP_SUBTIPO = 'PROMOS'", Array As String(Value))
+ Else
+ c=Starter.skmt.ExecQuery2("select count(*) AS CUANTOS from cat_gunaprod where CAT_GP_ID in (select pe_cedis from pedido where pe_pronombre = ? and pe_cliente in (Select CUENTA from cuentaa)) and CAT_GP_CLASIF = 'PROMOS' AND CAT_GP_TIPO = 'PROMOS' AND CAT_GP_SUBTIPO = 'PROMOS'", Array As String(Value))
+ End If
+ c.Position=0
+ If c.GetString("CUANTOS") > 0 Then
+ Starter.skmt.ExecNonQuery2("delete from pedido where pe_folio = 0 and pe_cedis in (select pe_cedis from pedido where pe_pronombre = ?) and pe_cliente in (Select CUENTA from cuentaa) and pe_cedis <> ?", Array As Object(Value, "DOE"))
+ Else
+ Starter.skmt.ExecNonQuery2("delete from pedido where pe_folio = 0 and pe_pronombre = ? and pe_cliente in (Select CUENTA from cuentaa) AND PE_CEDIS <> ?", Array As Object(Value, "DOE"))
+ End If
+
+ 'Borramos RMIs si la venta es menor que los RMIs
+ Private x2 As Cursor = Starter.skmt.ExecQuery2("select sum(PE_COSTO_TOT) as sumaRMIs FROM PEDIDO WHERE PE_CEDIS = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("DUR"))
+ Private x As Cursor = Starter.skmt.ExecQuery2("select sum(PE_COSTO_TOT) as sumaNoRMIs FROM PEDIDO WHERE PE_CEDIS <> ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("DUR"))
+ x.Position = 0
+ x2.Position = 0
+ Private sumaRMIs = 0
+ Private sumaNoRMIs = 0
+ If x2.GetString("sumaRMIs") <> Null Then sumaRMIs = x2.GetString("sumaRMIs")
+ If x.GetString("sumaNoRMIs") <> Null Then sumaNoRMIs = x.GetString("sumaNoRMIs")
+ LogColor($"${x2.GetString("sumaRMIs")}, ${x.GetString("sumaNoRMIs")}"$, Colors.Magenta)
+ If (sumaRMIs + sumaNoRMIs) >= 0 Then
+ Log("No borrar RMIs")
+ Else
+ Log("Borrar RMIs")
+ Starter.skmt.ExecNonQuery2("delete FROM PEDIDO WHERE PE_CEDIS = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("DUR"))
+ End If
+
+ DateTime.DateFormat = "MM/dd/yyyy"
+ sDate=DateTime.Date(DateTime.Now)
+ sTime=DateTime.Time(DateTime.Now)
+ c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa")
+ c.Position=0
+ clie_id = c.GetString("CUENTA")
+ c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
+ c.Position=0
+ usuario = c.GetString("USUARIO")
+ c=Starter.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, count(*) as CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
+ c.Position=0
+ If c.GetString("CUANTOS") > 0 Then
+ Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)")
+ If logger Then LogColor($"Insertamos coordenadas en pedido: ${Starter.lon_gps}, ${Starter.lat_gps}"$, Colors.Magenta)
+ Starter.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT) VALUES (?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), Starter.lon_gps, Starter.lat_gps))
+ Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)")
+ Else
+ Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)")
+ Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)")
+ End If
+
+
+
+ B4XPage_Appear
+ End If
+ Else
+ Msgbox("CLIENTE YA SE TRANSMITIO, FAVOR DE LLAMAR A SOPORTE PARA ASISTENCIA","AVISO") 'ignore
+ End If
+ Else
+ ToastMessageShow("Esta venta ya esta impresa, no se puede editar ni borrar.", False)
+ End If
+End Sub
+
+Sub b_desc_Click
+ If DESCUENTO = "MENOS" Then
+ DateTime.DateFormat = "MM/dd/yyyy"
+ sDate=DateTime.Date(DateTime.Now)
+ sTime=DateTime.Time(DateTime.Now)
+ c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa")
+ c.Position=0
+ clie_id = c.GetString("CUENTA")
+ c.Close
+ c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
+ c.Position=0
+ usuario = c.GetString("USUARIO")
+ c.Close
+ result = Msgbox2("Seguro que desea dar descuento del 5%?","Dar descuento", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore
+ If result = DialogResponse.POSITIVE Then
+ Starter.skmt.ExecNonQuery("UPDATE pedido SET PE_COSTO_TOT = PE_COSTO_TOT * .95, PE_DESC = 5 WHERE PE_CLIENTE In (select cuenta from cuentaa)")
+ c=Starter.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, count(*) as CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
+ c.Position=0
+ Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)")
+ If logger Then LogColor($"Insertamos coordenadas en pedido: ${Starter.lon_gps}, ${Starter.lat_gps}"$, Colors.Magenta)
+ Starter.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT) VALUES (?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), Starter.lon_gps, Starter.lat_gps))
+ c.Close
+ B4XPage_Appear
+ End If
+ ELSE IF DESCUENTO = "MAS" Then
+ DateTime.DateFormat = "MM/dd/yyyy"
+ sDate=DateTime.Date(DateTime.Now)
+ sTime=DateTime.Time(DateTime.Now)
+ c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa")
+ c.Position=0
+ clie_id = c.GetString("CUENTA")
+ c.Close
+ c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
+ c.Position=0
+ usuario = c.GetString("USUARIO")
+ c.Close
+ result = Msgbox2("Seguro que desea CANCELAR el descuento?","Cancelar descuento", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore
+ If result = DialogResponse.POSITIVE Then
+ Starter.skmt.ExecNonQuery("UPDATE pedido SET PE_COSTO_TOT = PE_COSTO_TOT / .95, PE_DESC = 0 WHERE PE_CLIENTE In (select cuenta from cuentaa)")
+ c=Starter.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, count(*) as CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
+ c.Position=0
+ Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)")
+ If logger Then LogColor($"Insertamos coordenadas en pedido: ${Starter.lon_gps}, ${Starter.lat_gps}"$, Colors.Magenta)
+ Starter.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT) VALUES (?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), Starter.lon_gps, Starter.lat_gps))
+ c.Close
+ B4XPage_Appear
+ End If
+ End If
+End Sub
+
+Private Sub B_PEDIDO_DOE_Click
+ If B_PEDIDO_DOE.Text = "PEDIDO DON TOÑO" Then
+ ListView1.Visible = False
+ L_CANT.Visible = False
+ L_TOTAL.Visible = False
+ B_PEDIDO_DOE.Text = "PEDIDO NORMAL"
+ ListView3.Visible = True
+ L_CANT_D.Visible = True
+ L_TOTAL_D.Visible = True
+
+ Else
+ ListView1.Visible = True
+ B_PEDIDO_DOE.Text = "PEDIDO DON TOÑO"
+ ListView3.Visible = False
+ L_CANT_D.Visible = False
+ L_TOTAL_D.Visible = False
+ L_CANT.Visible = True
+ L_TOTAL.Visible = True
+
+ End If
+End Sub
+
+Private Sub ListView3_ItemLongClick (Position As Int, Value As Object)
+
+ c=Starter.skmt.ExecQuery("select count(*) as CUANTOS from kmt_info where (impresion = 1 or cat_cl_codigo in (select ci_cuenta from cliente_impreso)) and CAT_CL_CODIGO in (Select CUENTA from cuentaa)")
+ c.Position = 0
+ If logger Then Log($"Impreso: ${c.GetString("CUANTOS")}"$)
+ If c.GetString("CUANTOS") > 0 Then
+ ToastMessageShow("Esta venta ya esta impresa, no se puede editar ni borrar.", False)
+ Else
+
+ If folio = "0" Or Subs.clienteActual = "0" Then 'Si el folio es 0 o el cliente actual es "abordo", los deja borrar. - Mod por CHV 220512
+ result = Msgbox2("Seguro que desea borrar el pedido?","Cancelar pedido", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore
+ If result = DialogResponse.POSITIVE Then
+ c=Starter.skmt.ExecQuery2("select PE_PROID,PE_CANT, PE_TIPO FROM PEDIDO where pe_cliente in (Select CUENTA from cuentaa) AND PE_CEDIS = ?", Array As String("DOE"))
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ TIPO = c.GetString("PE_TIPO")
+ If c.GetString("PE_TIPO") = "VENTA" Then
+ Starter.skmt.ExecNonQuery2("update cat_gunaprod2 set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?", Array As Object(c.GetString("PE_CANT"),c.GetString("PE_PROID")))
+ Else
+ Starter.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?", Array As Object(c.GetString("PE_CANT"),c.GetString("PE_PROID")))
+ End If
+ Next
+ End If
+
+ Starter.skmt.ExecNonQuery2("delete from pedido where pe_cliente in (Select CUENTA from cuentaa) AND PE_CEDIS = ?", Array As Object("DOE"))
+ Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)")
+ B4XPage_Appear
+ End If
+ Else
+ Msgbox("CLIENTE YA SE TRANSMITIO, FAVOR DE LLAMAR A SOPORTE PARA ASISTENCIA","AVISO") 'ignore
+ End If
+ End If
+End Sub
\ No newline at end of file
diff --git a/B4A/C_NuevoCliente.bas b/B4A/C_NuevoCliente.bas
new file mode 100644
index 0000000..ae66a5a
--- /dev/null
+++ b/B4A/C_NuevoCliente.bas
@@ -0,0 +1,88 @@
+B4A=true
+Group=Default Group
+ModulesStructureVersion=1
+Type=Class
+Version=11.5
+@EndOfDesignText@
+Sub Class_Globals
+ Private Root As B4XView 'ignore
+ Private xui As XUI 'ignore
+ '//Process Globals
+ Dim g As GPS
+ Dim ruta As String
+ Dim c As Cursor
+ Dim C2 As Cursor
+ '//Globals
+ Dim CANCELA As Button
+ Dim GUARDA As Button
+ Dim cuenta As String
+ Dim usuario As String
+ Dim sDate,sTime As String
+ Dim lat_gps, lon_gps As String
+ Dim no_cliente As String
+ Dim no_ruta As String
+ Dim r_4 As RadioButton
+ Dim E_NOMBRE As EditText
+ Dim ALMACEN As String
+ Dim DIA_VISITA As String
+End Sub
+
+'You can add more parameters here.
+Public Sub Initialize As Object
+ Return Me
+End Sub
+
+'This event will be called once, before the page becomes visible.
+Private Sub B4XPage_Created (Root1 As B4XView)
+ Root = Root1
+ 'load the layout to Root
+ Root.LoadLayout("nuevocliente")
+ ruta = File.DirInternal
+End Sub
+
+'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
+
+Sub B4XPage_Appear
+ E_NOMBRE.Text = ""
+End Sub
+
+Sub GPS_LocationChanged (Location1 As Location)
+' lat_gps=Location1.ConvertToSeconds(Location1.Latitude)
+' lon_gps=Location1.ConvertToSeconds(Location1.Longitude)
+End Sub
+
+Sub CANCELA_Click
+ B4XPages.ShowPage("Principal")
+End Sub
+
+Sub GUARDA_Click
+ If E_NOMBRE.Text = "" Then
+ ToastMessageShow("Se tiene que nombrar la tienda para continuar" , True)
+ Else
+ DateTime.DateFormat = "MM/dd/yyyy"
+ DateTime.Timeformat = "HHmmss"
+ sDate=DateTime.Date(DateTime.Now)
+ sTime=DateTime.Time(DateTime.Now)
+ c=Starter.skmt.ExecQuery("select CAT_CL_RUTA ,CAT_CL_DIAS_VISITA FROM kmt_info WHERE CAT_CL_DIAS_VISITA = (SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = 'DIA_VISITA')")
+ c.Position=0
+ no_ruta= c.GetString("CAT_CL_RUTA")
+ DIA_VISITA=c.GetString("CAT_CL_DIAS_VISITA")
+
+ 'Aqui creamos manualmete la hora con el separador de los 2 puntos porque en algunas versiones de android no respeta el formato "Timeformat = 'HH:mm:ss'"
+ Private hora As String = sTime.SubString2(0,2)
+ Private mins As String = sTime.SubString2(2,4)
+ Private segs As String = sTime.SubString(4)
+ Private sTime2 As String = hora&":"&mins&":"&segs
+ Log("////////////// sTime: "&sTime&" ////////////////")
+ no_cliente= "N" & sTime2 & no_ruta
+ c.Close
+ C2=Starter.skmt.ExecQuery("SELECT ID_ALMACEN FROM CAT_ALMACEN")
+ C2.Position=0
+ ALMACEN= C2.GetString("ID_ALMACEN")
+ C2.Close
+ Starter.skmt.ExecNonQuery2("INSERT INTO kmt_info(CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_DIAS_VISITA,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_BCREDITO, gestion,CAT_CL_BFACTURA,IMPRESION) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,0,0,0,1000000,0) ",Array As Object (no_cliente,no_ruta, E_NOMBRE.Text,DIA_VISITA,"new","null","null","null","null","null","null","null","null","NULL","NULL","null","0",Starter.lon_gps,Starter.lat_gps))
+ Starter.skmt.ExecNonQuery("delete from CUENTAA")
+ Starter.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(no_cliente))
+ Subs.iniciaActividad("Cliente")
+ End If
+End Sub
diff --git a/B4A/C_Pedidos.bas b/B4A/C_Pedidos.bas
new file mode 100644
index 0000000..36fa8d1
--- /dev/null
+++ b/B4A/C_Pedidos.bas
@@ -0,0 +1,24 @@
+B4A=true
+Group=Default Group
+ModulesStructureVersion=1
+Type=Class
+Version=11.5
+@EndOfDesignText@
+Sub Class_Globals
+ Private Root As B4XView 'ignore
+ Private xui As XUI 'ignore
+End Sub
+
+'You can add more parameters here.
+Public Sub Initialize As Object
+ Return Me
+End Sub
+
+'This event will be called once, before the page becomes visible.
+Private Sub B4XPage_Created (Root1 As B4XView)
+ Root = Root1
+ 'load the layout to Root
+
+End Sub
+
+'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
\ No newline at end of file
diff --git a/B4A/C_Principal.bas b/B4A/C_Principal.bas
new file mode 100644
index 0000000..9f38d9a
--- /dev/null
+++ b/B4A/C_Principal.bas
@@ -0,0 +1,3189 @@
+B4A=true
+Group=Default Group
+ModulesStructureVersion=1
+Type=Class
+Version=11.5
+@EndOfDesignText@
+Sub Class_Globals
+ '//Process_Globas
+ Private Root As B4XView 'ignore
+ Private xui As XUI 'ignore
+ Dim reqManager As DBRequestManager
+ Dim t1 As Timer
+ Dim t2 As Timer
+ Private t3 As Timer
+ Dim inicioContador As String
+
+ '//Globals
+ Dim trabajar As Button
+ Dim Cursor_check As Cursor
+ Dim c As Cursor
+ Dim d As Cursor
+ Dim b As Cursor
+ Dim e As Cursor
+ Dim f As Cursor
+ Dim C_DOE As Cursor
+ Dim D_DOE As Cursor
+ Dim F_DOE As Cursor
+
+ Dim TOTAL_DOE_BB As String
+ Dim TOTAL_EFE_DOE As String
+ Dim TOTAL_ENTREGA_DOE As String
+
+
+ Dim DDD As Cursor
+ Dim cargar As Button
+ Dim foto1() As Byte
+ Dim foto2() As Byte
+ Dim foto3() As Byte
+ Dim foto4() As Byte
+ Dim usuario As String
+ Dim connecta As Button
+ Dim conn As String
+ Dim Subir As Button
+ Dim cmd As DBCommand
+ Dim COUNT_CLIE As Int
+ Dim fecha As String
+ Dim drop As Double
+ Dim efectiva As Double
+ Dim L_MONTOD As Label
+ Dim l_cuantosc As Label
+ Dim l_drop As Label
+ Dim l_efectiva As Label
+ Dim l_ctast As Label
+ Dim BUSCA As Button
+ Dim Cuantos As String
+ Dim l_cuantosn As Label
+ Dim e_ruta As EditText
+ Dim l_porvisitar As Label
+ Dim b_mapa As Button
+ Dim l_ruta As Label
+ Dim ALMACEN As String
+ Private img2 As ImageView
+ Dim Listo1 As String
+ Dim Listo2 As String
+ Dim Listo3 As String
+ Dim Listo4 As String
+ Dim Listo5 As String
+ Dim EJECUTANDO As String
+ Dim res As String
+ Dim inve As String
+ Dim cuantos_pedidosc As String
+ Dim cuantos_pedido As String
+ Dim cuantos_noventa As String
+ Dim datos_iguales As String
+ Dim p As PhoneId
+ Dim imei As String
+ Dim Today As String
+ Private inv As Button
+ Private P1 As Panel
+ Private CLAVE As EditText
+ Private B_OK_PAS As Button
+ Dim PASO As String
+ Private USUARIO1 As EditText
+ Dim connecta1 As Double
+ Dim armafolio As String
+ Private NUEVO As Button
+ Private S_CC As Label
+ Private S_CP As Label
+ Private S_CH As Label
+ Private PB2 As ProgressBar
+ Private PB1 As ProgressBar
+ Private L_P_1 As Label
+ Private L_P_2 As Label
+ Private L_P_3 As Label
+ Private CARGA As String
+ Private PORCENTAJE As Int
+ Private P_RESUMEN As Panel
+ Private B_OK_RES As Button
+ Private Resumen As Button
+ Private L_CUANTOST As Label
+ Private img3 As ImageView
+ Private ImageView3 As ImageView
+ Private ImageView5 As ImageView
+ Private L_TICKPROM As Label
+ Private MARCASQ As String
+ Private B_PROXIMA As Button
+ Private l_monto_a As Label
+ Private ImageView9 As ImageView
+ Private L_MONTO_R As Label
+ Dim PERFIL As String
+ Dim NUMERO_PEDIDO As String
+ Private l_cambios As Label
+ Dim l_monto_ks As Label
+ Dim l_monto_kp As Label
+ Dim l_monto_k As Label
+ Private Cuantos As String
+ Dim cmp20 As Serial
+ Dim printer As TextWriter
+ Dim PairedDevices As Map
+ Dim TAMANO As Int
+ Dim ESPACIO As Int
+ Dim BLANCO As String
+ Dim sDate,sTime As String
+ Dim PASA_IMP As String
+ Dim s As Cursor
+ Private B_IMP As Button
+ Private l_monto_c1 As Label
+ Private l_monto_c2 As Label
+ Private l_monto_c3 As Label
+ Private B_BOLETA As Button
+ Private B_MAPA_RUTA As Button
+ Private Panel5 As Panel
+ Private L_CUOTA1 As Label
+ Private L_CUOTA2 As Label
+ Private L_CUOTA3 As Label
+ Private L_CUOTA4 As Label
+ Private L_CUOTA5 As Label
+ Private L_CUOTA6 As Label
+ Private L_META1 As Label
+ Private L_META2 As Label
+ Private L_META3 As Label
+ Private L_META4 As Label
+ Private L_META5 As Label
+ Private L_META6 As Label
+ Private B_CUOATA_C As Button
+ Private b_cuotas As Button
+ Private Panel1 As Panel
+ Private Panel2 As Panel
+ Dim ENVIADA As String
+ Dim PORENVIAR As String
+ Private Btn_CheckList As Button
+ Dim Cedis_Check As String
+ Private TIEMPO As String
+ Private RUTA1 As Label
+ Private L_ABORDO As Label
+ Private bcarga1 As String
+ Private bcarga2 As String
+ Private bcarga3 As String
+ Private contador_env As String
+ Private contador_strem As String
+ Private ruta_valida As String
+ Private PNL_ACCESO As Panel
+ Private Panel7 As Panel
+ Private L_SUPLENCIA As Label
+ Private E_RUTA2 As EditText
+ Private Label4 As Label
+ Private SEMANA As String
+ Private ImageView1 As ImageView
+ Dim DIA_VISITA As String
+
+' Para el PDFViewer
+ Dim pdf As PdfiumCore
+ Private PDFView1 As PDFView
+ Private btnFirst As Button
+ Private btnPrev As Button
+ Private lblPages As Label
+ Private btnNext As Button
+ Private btnLast As Button
+ Private glPages As Int
+ Private p_pdfViewer As Panel
+ Private pdfViewerActivo As Boolean
+ Private p_controles_pdf As Panel
+ Private pdfURL As String
+ Private l_2 As Label
+ Dim cartaPorteLista As Boolean
+ Private l_downloadPDF As Label
+ Private ProgressBarPDF As ProgressBar
+ Private p_downloadPDF As Panel
+ Private p_progress1 As Panel
+ Private l_porcentaje As Label
+ Private detenerLoop As Boolean = False
+ Dim logger As Boolean = True
+ Private L_DOE As Label
+End Sub
+
+'You can add more parameters here.
+Public Sub Initialize As Object
+ Return Me
+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
+ Root = Root1
+ 'load the layout to Root
+ Root.LoadLayout("principal")
+ EJECUTANDO=1
+ Dim ruta As String
+ img2.Visible =False
+ ruta = File.DirInternal
+ DateTime.DateFormat = "MM/dd/yyyy"
+ fecha=DateTime.Date(DateTime.Now)
+ c=Starter.skmt.ExecQuery2("select CAT_CO_CONFIGURACION from CAT_CODIGOS where CAT_CO_PONDERACION =1 AND CAT_CO_ACCION = ?", Array As String("SERVER"))
+ c.Position =0
+ Starter.server = c.GetString("CAT_CO_CONFIGURACION")
+ c.Close
+ b=Starter.skmt.ExecQuery("Select count(*) as CUANTOS from pedido_cliente")
+ b.Position=0
+ Cuantos = b.GetString("CUANTOS")
+ d=Starter.skmt.ExecQuery("select count(*) as TOTAL_VISITAR from kmt_info where gestion = 0")
+ D.Position=0
+ b.Close
+ e=Starter.skmt.ExecQuery("select count(*) as POR_VISITAR from kmt_info")
+ e.Position=0
+ f=Starter.skmt.ExecQuery("select count(*) as CAT_CL_RUTA from kmt_info")
+ f.Position=0
+ l_ruta.Text = f.GetString("CAT_CL_RUTA")
+ f.Close
+ If l_ruta.Text = 0 Then
+ l_ruta.Text =0
+ Else
+ f=Starter.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info")
+ f.Position=0
+ l_ruta.Text = f.GetString("CAT_CL_RUTA")
+ RUTA1.Text = l_ruta.TEXT
+ f.Close
+ End If
+ If Cuantos = 0 Then
+ L_MONTOD.Text =0
+ l_cuantosc.Text = 0
+ l_cuantosn.Text = 0
+ drop = 0
+ l_drop.Text = 0
+ efectiva = 0
+ l_efectiva.text =0
+ l_ctast.Text = d.GetString("TOTAL_VISITAR")
+ ' l_porvisitar.Text = e.GetString("POR_VISITAR")
+ Else
+ c=Starter.skmt.ExecQuery("select sum(pc_monto) as MONTO_DIA, count(pc_cliente) AS CLIENTES_DIA from pedido_cliente ")
+ b=Starter.skmt.ExecQuery("select count(*) as CUANTOS from noventa")
+ 'where pc_fecha = ?", Array As String(fecha)
+ C.Position=0
+ b.Position=0
+ L_MONTOD.Text = c.GetString("MONTO_DIA")
+ l_cuantosc.Text = c.GetString("CLIENTES_DIA")
+ l_cuantosn.Text = b.GetString("CUANTOS")
+ drop = c.GetString("MONTO_DIA") / c.GetString("CLIENTES_DIA")
+ l_drop.Text = Round2(drop,2)
+ efectiva = c.GetString("CLIENTES_DIA") / e.GetString("POR_VISITAR")
+ l_efectiva.text = Round2(efectiva*100,2)
+ l_ctast.Text = d.GetString("TOTAL_VISITAR")
+ 'l_porvisitar.Text = e.GetString("POR_VISITAR")
+ End If
+End Sub
+
+'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
+
+Sub B4XPage_Appear
+ If Starter.ultima_back_productos = 1 Then
+ Subs.iniciaActividad("productos")
+ Else
+
+ Starter.btAdmin.Initialize("BlueTeeth")
+ If Not(Starter.btAdmin.IsEnabled) Then Starter.btAdmin.Enable
+ e_ruta.Enabled = True
+ Starter.rutaV = l_ruta.Text
+ c=Starter.skmt.ExecQuery2("select count(*) as CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SERVER"))
+ c.Position =0
+ If c.GetString("CUANTOS") = 0 Then
+ Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("SERVER", Starter.server))
+ Else
+ c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SERVER"))
+ c.Position =0
+ Starter.server = c.GetString("CAT_VA_VALOR")
+ End If
+ c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("FECHA"))
+ If c.RowCount > 0 Then
+ c.Position = 0
+ Starter.FECHA_HOY = c.GetString("CAT_VA_VALOR")
+ End If
+ reqManager.Initialize(Me, Starter.server)
+ c=Starter.skmt.ExecQuery2("select count(*) AS CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SEMANA"))
+ c.Position =0
+ SEMANA = c.GetString("CUANTOS")
+ c.Close
+ If SEMANA > 0 Then
+ c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SEMANA"))
+ c.Position =0
+ SEMANA = c.GetString("CAT_VA_VALOR")
+ c.Close
+ End If
+ c.Close
+ c=Starter.skmt.ExecQuery2("select count(*) as CUANTOS from kmt_info where CAT_CL_DIAS_VISITA = (SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?) and gestion = 0 and cat_cl_codigo <> 0 AND CAT_CL_TIPO_RUTA IN (?,?) ORDER BY CAT_CL_NUM_SERIEFISICO", Array As String("DIA_VISITA",SEMANA, "SEMANAL"))
+ c.Position = 0
+ Starter.clientesTotal = c.GetString("CUANTOS")
+ l_porvisitar.Text = Starter.clientesTotal
+ PASO = 0
+ If EJECUTANDO =0 Then
+ Listo1 = 0
+ Listo2 = 0
+ Listo3 = 0
+ Listo4 = 0
+ Listo5 = 0
+ inve = 0
+ img2.Visible =False
+ End If
+ DateTime.DateFormat = "MM/dd/yyyy"
+ fecha=DateTime.Date(DateTime.Now)
+ b=Starter.skmt.ExecQuery("Select count(*) as CUANTOS from pedido_cliente where pc_cliente <> 0")
+ b.Position=0
+ Cuantos = b.GetString("CUANTOS")
+' If Starter.marcaCel <> "LGE" Then ToastMessageShow(Cuantos , True)
+ d=Starter.skmt.ExecQuery2("select count(*) as TOTAL_VISITAR from kmt_info where gestion = 0 and cat_cl_codigo <> 0 AND CAT_CL_DIAS_VISITA = (SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?)", Array As String("DIA_VISITA"))
+ D.Position=0
+ b.Close
+ e=Starter.skmt.ExecQuery2("select count(*) as POR_VISITAR from kmt_info where cat_cl_codigo <> 0 and CAT_CL_DIAS_VISITA = (SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?) ", Array As String("DIA_VISITA"))
+ e.Position=0
+ f=Starter.skmt.ExecQuery("select count(*) as CAT_CL_RUTA from kmt_info where cat_cl_codigo <> 0")
+ f.Position=0
+ l_ruta.Text = f.GetString("CAT_CL_RUTA")
+ f.Close
+ If l_ruta.Text = 0 Then
+ l_ruta.Text =0
+ Else
+ f=Starter.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info")
+ f.Position=0
+ l_ruta.Text = f.GetString("CAT_CL_RUTA")
+ f.Close
+ End If
+ c=Starter.skmt.ExecQuery("select usuario from usuarioa")
+ c.Position = 0
+ If c.RowCount > 0 Then
+ usuario = c.GetString("USUARIO")
+ Starter.usuario = usuario
+ End If
+ c.Close
+ c=Starter.skmt.ExecQuery("select ID_ALMACEN from CAT_ALMACEN")
+ C.Position =0
+ ALMACEN = C.GetString("ID_ALMACEN")
+ C.Close
+ Cursor_check = Starter.skmt.ExecQuery("select count(*) as CUANTOS from TMP_INSPECCION_AUTO_DIARIA where tmp_auto_kilometraje <> '' ")
+ Cursor_check.Position = 0
+ Cedis_Check = Cursor_check.GetString("CUANTOS")
+
+ If Not(File.Exists(File.DirInternal,"FOTO1.jpg")) Or _
+ Not(File.Exists(File.DirInternal,"FOTO2.jpg")) Or _
+ Not(File.Exists(File.DirInternal,"FOTO3.jpg")) Or _
+ Not(File.Exists(File.DirInternal,"FOTO4.jpg")) Then
+ If Not(File.Exists(File.DirInternal,"FOTO1.jpg")) Then Log("Falta foto1")
+ If Not(File.Exists(File.DirInternal,"FOTO2.jpg")) Then Log("Falta foto2")
+ If Not(File.Exists(File.DirInternal,"FOTO3.jpg")) Then Log("Falta foto3")
+ If Not(File.Exists(File.DirInternal,"FOTO4.jpg")) Then Log("Falta foto4")
+ Cedis_Check = 0
+ End If
+ If Cedis_Check = 0 And l_ruta.Text <> 0 Then
+ Btn_CheckList.Visible = True
+ B_MAPA_RUTA.Visible = False
+ Else
+ ' PONER EN FALSE
+ Btn_CheckList.Visible = False
+ B_MAPA_RUTA.Visible = True
+ If usuario = "JOSELUIS" Then Btn_CheckList.Visible = True 'Mod por CHV - 211125
+ End If
+ contador_strem = 0
+ contador_env = 0
+ E_RUTA2.Visible = False
+ L_SUPLENCIA.Visible = False
+ Label4.Visible = False
+ Starter.montoActual = L_MONTOD.Text
+ Starter.clientesventa = l_cuantosc.Text
+ Starter.clientesvisitados = l_porvisitar.TEXT
+ Starter.ALMACEN = ALMACEN
+ Starter.rutapreventa = l_ruta.text
+ CallSub(Starter, "ENVIA_ULTIMA_GPS")
+ c.Close
+ Subs.guardaUltimaActividadBD("principal")
+ Subs.ultimaActividad(Me)
+
+ End If
+End Sub
+
+Sub trabajar_Click
+ 'CallSubDelayed(gestion,"gestion")
+ 'Mod por CHV para que si no se ha hecho el checklist no permita la venta - 211125
+ c=Starter.skmt.ExecQuery("select 'TMP_AUTO_FECHA ' from TMP_INSPECCION_AUTO_DIARIA where tmp_auto_kilometraje <> ''")
+ If c.RowCount > 0 Then
+ If logger Then Log("Si hay checklist")
+ Else
+ If logger Then Log("NO hay checklist")
+ Msgbox("No se ha realizado aún el 'Checklist' del vehículo, por favor completelo antes de realizar una venta.", "FALTA EL CHECKLIST") 'ignore
+ Return
+ End If
+ c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("MARCAS"))
+ c.Position =0
+ If c.RowCount > 0 Then
+ MARCASQ = c.GetString("CAT_VA_VALOR")
+ c.Close
+ Starter.skmt.ExecNonQuery("delete from CAT_GUNAPROD WHERE CAT_GP_CLASIF NOT IN (" & MARCASQ &")" )
+ Starter.skmt.ExecNonQuery("delete from CAT_GUNAPROD WHERE CAT_GP_ID IN (SELECT CAT_DP_ID FROM CAT_DETALLES_PAQ WHERE CAT_DP_IDPROD NOT IN (SELECT CAT_GP_ID FROM CAT_GUNAPROD))")
+ B4XPages.ShowPage("Clientes")
+ Else
+ If Starter.marcaCel <> "LGE" Then ToastMessageShow("No hay marcas en la base de datos ... ya se cargo ruta??", True)
+ End If
+End Sub
+
+Sub Subir_Click
+ CARGA = "SUBIR"
+' P1.Visible = True
+ trabajar.Visible = False
+ B_PROXIMA.Visible =False
+ NUEVO.Visible =False
+ BUSCA.Visible=False
+ connecta.Visible=False
+ Subir.Visible=False
+ cargar.Visible=False
+ L_P_1.Visible = False
+ S_CC.Visible = False
+ L_P_3.Visible = False
+ S_CH.Visible = False
+ PB1.Visible = False
+ Resumen.Visible= False
+ L_P_2.Text = "Envio de Pedidos"
+ 'L_P_3.Text = "Envio de Pedidos"
+ 'S_CH.Text = "EN PROCESO"
+ S_CP.Text = "EN PROCESO"
+ PB1.Progress = 0
+ PB2.Progress = 0
+ contador_env = 0
+ contador_strem = 0
+ e_ruta.Text = ruta_valida
+ PASO = 1
+ 'End If
+ If PASO = 1 Then
+ c=Starter.skmt.ExecQuery("select CAT_CL_CODIGO, CAT_CL_RUTA from kmt_info")
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Starter.skmt.ExecNonQuery2("update PEDIDO set PE_RUTA = ? where PE_CLIENTE = ? ", Array As Object(c.GetString("CAT_CL_RUTA"),c.GetString("CAT_CL_CODIGO")))
+ Next
+ End If
+ c=Starter.skmt.ExecQuery2("SELECT HE_CUANTOS, HE_FECHA FROM HIST_ENVIOS WHERE HE_TIPO = ?", Array As String("PEDIDO"))
+ c.Position = 0
+ ''' FALTA PONER EL IF DE CUANTAS VECES MANDO Y SI MANDO PREGUNTAR ENVIAR BOLETA O PEDIDO
+ If c.GetString("HE_CUANTOS") = 0 Then
+ SUBIR_INFO_PEDIDO
+ Else
+ Dim result As Int
+ result = Msgbox2("QUE VA A ENVIAR?", "ENVIO DE INFO.", "BOLETA", "VALIDAR", "VTA/PED", LoadBitmap(File.DirAssets, "alert2.png")) 'ignore
+ If result = DialogResponse.Positive Then
+ SUBIR_INFO_BOLETA
+ ELSE IF result = DialogResponse.NEGATIVE Then
+ SUBIR_INFO_PEDIDO
+ ELSE IF result = DialogResponse.CANCEL Then
+ VALIDAR_INFO
+ End If
+ End If
+ End If
+End Sub
+
+Sub cargar_Click
+ 'Para descargar el PDF de la carta porte /////////////////////////////////////////////////////////////////////////
+ DateTime.DateFormat = "yyyyMMdd"
+ Dim hoy As String = DateTime.Date(DateTime.Now)
+ If logger Then Log(DateTime.Date(File.LastModified(File.DirInternal,"cartaPorte.pdf")) & " - " & hoy )
+' If Not(File.Exists(File.DirInternal,"cartaPorte.pdf")) Then 'Si no existe la descargamos ...
+' If logger Then LogColor("No hay carta porte.", Colors.Red)
+' descargaCartaPorte ' la descargamos.
+' Do While Not(cartaPorteLista) 'Mientras no se termine de descargar la carta porte, esperamos ...
+' Sleep(1000)
+' If logger Then Log("Descargando Carta Porte (Loop cargar_Click)")
+' Loop
+' Else If (DateTime.Date(File.LastModified(File.DirInternal,"cartaPorte.pdf")) < hoy And Starter.rutaTipo <> "FORANEA") Then ' si la fecha del pdf NO es de hoy y la ruta NO es foranea entonces ...
+' LogColor("La carta porte es vieja.", Colors.Red)
+' If logger Then Log(Starter.rutaTipo)
+' descargaCartaPorte ' la descargamos.
+' Do While Not(cartaPorteLista) 'Mientras no se termine de descargar la carta porte, esperamos ...
+' Sleep(1000)
+' If logger Then Log("Descargando Carta Porte (Loop cargar_Click)")
+' If detenerLoop Then Exit
+' detenerLoop = False
+' Loop
+' Else
+ cartaPorteLista = True
+ If logger Then LogColor("Ya hay carta porte con fecha de hoy", Colors.Green)
+ Private MB As Int
+ MB = Msgbox2("¿Quiere descargarla nuevamente?", "YA SE DESCARGO LA CARTA PORTE", "Si", "", "No", Null) 'ignore
+ If MB = DialogResponse.Positive Then
+ descargaCartaPorte
+ Do While Not(cartaPorteLista) 'Mientras no se termine de descargar la carta porte esperamos ...
+ Sleep(1000)
+ If logger Then Log("Descargando Carta Porte (Loop cargar_Click)")
+ If detenerLoop Then Exit
+ detenerLoop = False
+ Loop
+ ELSE IF MB = DialogResponse.NEGATIVE Then
+' descargaCartaPorte
+ ELSE IF MB = DialogResponse.CANCEL Then
+' VALIDAR_INFO
+ End If
+' End If
+ 'Termina descargar el PDF de la carta porte ///////////////////////////////////////////////////////////////////////////////
+ If cartaPorteLista Then
+ CARGA = "CARGAR"
+ img2.Visible =True
+ L_P_1.Visible = True
+ S_CC.Visible = True
+ Btn_CheckList.Visible=False
+' P1.Visible = True
+' P1.BringToFront
+ P1.Width = GetDeviceLayoutValues.Width
+ P1.Height = GetDeviceLayoutValues.Height
+ Subs.panelVisible(P1, 0, 0)
+ trabajar.Visible = False
+ B_PROXIMA.Visible =False
+ NUEVO.Visible =False
+ BUSCA.Visible=False
+ connecta.Visible=False
+ L_P_3.Visible = True
+ S_CH.Visible = True
+ PB1.Visible = True
+ Resumen.Visible= False
+ E_RUTA2.Visible = False
+ L_SUPLENCIA.Visible = False
+ Label4.Visible = False
+ L_P_1.Text = "Catalogo de Clientes"
+ L_P_2.Text = "Catalogos de Productos"
+ L_P_3.Text = "Catalogos Historicos"
+ S_CC.Text = "EN PROCESO"
+ S_CH.Text = "EN PROCESO"
+ S_CP.Text = "EN PROCESO"
+ PB1.Progress = 0
+ PB2.Progress = 0
+ EJECUTANDO = 1
+ bcarga1 = 0
+ bcarga2 = 0
+ bcarga3 = 0
+ e_ruta.Text = ruta_valida
+ ' NUEVOS CLIENTE
+
+ Starter.skmt.ExecNonQuery2("delete from kmt_info where substr(CAT_CL_CODIGO,1,1) <> ?", Array As Object ("N"))
+ Starter.skmt.ExecNonQuery("delete from cod_result")
+ Starter.skmt.ExecNonQuery("delete from hist_gest")
+ Starter.skmt.ExecNonQuery("delete from cat_gunaprod")
+ Starter.skmt.ExecNonQuery("delete from cat_gunaprod2")
+
+ Starter.skmt.ExecNonQuery("delete from cat_gunaprod_doe")
+ Starter.skmt.ExecNonQuery("delete from pedido_doe")
+
+ Starter.skmt.ExecNonQuery("DELETE FROM CAT_GUNAPROD5")
+ Starter.skmt.ExecNonQuery("DELETE FROM HIST_ENCUESTA2")
+ Starter.skmt.ExecNonQuery("delete from CAT_DETALLES_PAQ")
+ Starter.skmt.ExecNonQuery("delete from telefonos")
+ Starter.skmt.ExecNonQuery("delete from HIST_VENTAS")
+ Starter.skmt.ExecNonQuery("delete from HIST_PROMOS")
+ Starter.skmt.ExecNonQuery("delete from HIST_CLIENTE_CANT_PROMOS")
+ Starter.skmt.ExecNonQuery("delete from PROMOS_COMP")
+ Starter.skmt.ExecNonQuery("delete from CAT_VERIFICACION")
+ Starter.skmt.ExecNonQuery("delete from LISTA_PRECIOS")
+ Starter.skmt.ExecNonQuery("delete from CAT_PRECIOS")
+ Starter.skmt.ExecNonQuery("delete from HIST_RMI")
+ Starter.skmt.ExecNonQuery("delete from HIST_CUOTAS")
+ Starter.skmt.ExecNonQuery("delete from HIST_EXHIBIDORES2")
+ Starter.skmt.ExecNonQuery("delete from CAT_DESCUENTOS_SKU")
+ Starter.skmt.ExecNonQuery("delete from HIST_ABORDO")
+ Starter.skmt.ExecNonQuery("delete from DESC_CLIENTES")
+ Starter.skmt.ExecNonQuery("delete from CAT_ENCUESTA_PREGUNTA")
+ Starter.skmt.ExecNonQuery("delete from CAT_PROMO_MONTO")
+ Starter.skmt.ExecNonQuery("delete from CAT_RMI")
+ Starter.skmt.ExecNonQuery("delete from CAT_DEV")
+
+
+ Starter.skmt.ExecNonQuery("delete from CLIENTE_CARGA_DIA")
+ Starter.skmt.ExecNonQuery("INSERT INTO CLIENTE_CARGA_DIA (CCD_CUENTA) SELECT DISTINCT PE_CLIENTE FROM PEDIDO")
+
+
+ ''' PEDIDO DOE
+ Starter.skmt.ExecNonQuery("delete from CAT_GUNAPROD_DOE")
+ Starter.skmt.ExecNonQuery("delete from PEDIDO_DOE")
+ ''' FIN DOE
+
+ Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("NUMERO_PEDIDO"))
+ Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("NUMERO_PEDIDO",0))
+
+ c=Starter.skmt.ExecQuery("select usuario from usuarioa")
+ c.Position = 0
+ usuario = c.GetString("USUARIO")
+
+ DateTime.TimeFormat = "HHmmss"
+ inicioContador = DateTime.Now
+
+ cmd.Initialize
+ cmd.Name = "SELECT_HIST_ENCUESTA_KELL"
+ cmd.Parameters = Array As Object( e_ruta.text, ALMACEN)
+ reqManager.ExecuteQuery(cmd , 0, "HIST_ENCUESTA2")
+
+ cmd.Initialize
+ cmd.Name = "SELECT_EXHIBIDOR_RUTA_KELL"
+ cmd.Parameters = Array As Object( e_ruta.text )
+ If logger Then Log(e_ruta.TEXT)
+ reqManager.ExecuteQuery(cmd , 0, "exhibidores")
+
+ cmd.Initialize 'Para traer la contraseña del candado de "FIN DIA"
+ cmd.Name = "SELECT_PASS_FIN_DIA"
+ reqManager.ExecuteQuery(cmd , 0, "pass_fin_dia")
+
+ cmd.Initialize
+ cmd.Name = "select_cat_gunaprod_KELL"
+ cmd.Parameters = Array As Object(ALMACEN)
+ reqManager.ExecuteQuery(cmd , 0, "gunaprod")
+
+ cmd.Initialize
+ cmd.Name = "select_cat_devoluciones_KELL"
+ cmd.Parameters = Array As Object(ALMACEN)
+ reqManager.ExecuteQuery(cmd , 0, "devoluciones")
+
+ cmd.Initialize
+ cmd.Name = "select_cat_gunaprod2_KELL"
+ cmd.Parameters = Array As Object(ALMACEN, e_ruta.Text)
+ reqManager.ExecuteQuery(cmd , 0, "gunaprod2")
+
+ cmd.Initialize
+ cmd.Name = "select_cat_encuesta_p_KELL"
+ cmd.Parameters = Array As Object(ALMACEN, e_ruta.Text)
+ reqManager.ExecuteQuery(cmd , 0, "encuesta_p")
+
+ cmd.Initialize
+ cmd.Name = "select_cat_paquetes_KELL"
+ cmd.Parameters = Array As Object(ALMACEN)
+ reqManager.ExecuteQuery(cmd , 0, "gunaprodp")
+
+ 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.Initialize
+ cmd.Name = "select_cat_clientes_guna_KELL2"
+ cmd.Parameters = Array As Object(e_ruta.text, ALMACEN)
+ reqManager.ExecuteQuery(cmd , 0, "kmt_datos")
+
+ cmd.Initialize
+ cmd.Name = "select_hist_datos_KELL"
+ cmd.Parameters = Array As Object(e_ruta.text, ALMACEN,e_ruta.text, ALMACEN)
+ reqManager.ExecuteQuery(cmd , 0, "hist_datos")
+
+ cmd.Initialize
+ cmd.Name = "select_hist_datos_KELL2"
+ cmd.Parameters = Array As Object(e_ruta.text, ALMACEN)
+ reqManager.ExecuteQuery(cmd , 0, "hist_datos")
+
+ cmd.Initialize
+ cmd.Name = "select_hist_promos_KELL"
+ cmd.Parameters = Array As Object(e_ruta.text, ALMACEN)
+ reqManager.ExecuteQuery(cmd , 0, "hist_promos")
+
+ cmd.Initialize
+ cmd.Name = "select_hist_cliente_promos_KELL"
+ cmd.Parameters = Array As Object(e_ruta.text, ALMACEN)
+ reqManager.ExecuteQuery(cmd , 0, "hist_cliente_promos")
+
+ cmd.Initialize
+ cmd.Name = "select_promo_comp_KELL"
+ cmd.Parameters = Array As Object(e_ruta.text, ALMACEN)
+ reqManager.ExecuteQuery(cmd , 0, "hist_comp_promos")
+
+ cmd.Initialize
+ cmd.Name = "select_promo_monto_KELL"
+ cmd.Parameters = Array As Object(e_ruta.text, ALMACEN)
+ reqManager.ExecuteQuery(cmd , 0, "promo_monto")
+
+
+
+ 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")
+
+ cmd.Initialize
+ cmd.Name = "select_hist_datos_KELL"
+ cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN,e_ruta.text, ALMACEN)
+ reqManager.ExecuteQuery(cmd , 0, "hist_datos")
+
+ cmd.Initialize
+ cmd.Name = "select_hist_promos_KELL"
+ cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN)
+ reqManager.ExecuteQuery(cmd , 0, "hist_promos")
+
+ cmd.Initialize
+ cmd.Name = "select_hist_cliente_promos_KELL"
+ cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN)
+ reqManager.ExecuteQuery(cmd , 0, "hist_cliente_promos")
+
+ cmd.Initialize
+ cmd.Name = "select_promo_comp_KELL"
+ cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN)
+ reqManager.ExecuteQuery(cmd , 0, "hist_comp_promos")
+
+ cmd.Initialize
+ cmd.Name = "select_DESC_CLIENTE_KELL"
+ cmd.Parameters = Array As Object( ALMACEN,E_RUTA2.text)
+ reqManager.ExecuteQuery(cmd , 0, "DESCUENTOS_CLIENTE")
+
+ cmd.Initialize
+ cmd.Name = "select_DESC_CLIE_SKU_KELL"
+ cmd.Parameters = Array As Object( ALMACEN,E_RUTA2.text)
+ reqManager.ExecuteQuery(cmd , 0, "DESCUENTOS_CLIENTE_SKU")
+ End If
+
+ cmd.Initialize
+ cmd.Name = "select_DESC_CLIENTE_KELL"
+ cmd.Parameters = Array As Object( ALMACEN,e_ruta.text)
+ reqManager.ExecuteQuery(cmd , 0, "DESCUENTOS_CLIENTE")
+
+ cmd.Initialize
+ cmd.Name = "select_cat_RMI_KELL"
+ cmd.Parameters = Array As Object(ALMACEN)
+ reqManager.ExecuteQuery(cmd , 0, "RMI")
+
+ cmd.Initialize
+ cmd.Name = "select_DESC_CLIE_SKU_KELL"
+ cmd.Parameters = Array As Object( ALMACEN,e_ruta.text)
+ reqManager.ExecuteQuery(cmd , 0, "DESCUENTOS_CLIENTE_SKU")
+
+ cmd.Initialize
+ cmd.Name = "select_fecha"
+ cmd.Parameters = Array As Object(e_ruta.text, ALMACEN)
+ reqManager.ExecuteQuery(cmd , 0, "fecha")
+
+ cmd.Initialize
+ cmd.Name = "select_folio_KELL"
+ cmd.Parameters = Array As Object(e_ruta.text, ALMACEN)
+ reqManager.ExecuteQuery(cmd , 0, "folio")
+
+ ' esto es para sacar el perfil y marcas del usuario
+ cmd.Initialize
+ cmd.Name = "select_perfil_KELL"
+ cmd.Parameters = Array As Object(usuario)
+ reqManager.ExecuteQuery(cmd , 0, "perfil")
+
+ cmd.Initialize
+ cmd.Name = "select_marcas_KELL"
+ cmd.Parameters = Array As Object(usuario)
+ reqManager.ExecuteQuery(cmd , 0, "marcas")
+
+ cmd.Initialize
+ cmd.Name = "select_CAMBIOS_KELL"
+ 'cmd.Parameters = Array As Object( ALMACEN)
+ reqManager.ExecuteQuery(cmd , 0, "cat_cambios")
+
+ cmd.Initialize
+ cmd.Name = "select_SUCURSAL_KELL"
+ cmd.Parameters = Array As Object( ALMACEN)
+ reqManager.ExecuteQuery(cmd , 0, "sucursal")
+
+ cmd.Initialize
+ cmd.Name = "select_dia_visita_KELL"
+ cmd.Parameters = Array As Object( ALMACEN)
+ reqManager.ExecuteQuery(cmd , 0, "dia_visita")
+
+ cmd.Initialize
+ cmd.Name = "select_HIST_CUOTAS"
+ cmd.Parameters = Array As Object( ALMACEN,e_ruta.text )
+ reqManager.ExecuteQuery(cmd , 0, "CUOTAS")
+
+ cmd.Initialize
+ cmd.Name = "select_hist_ventas_abordo_KELL"
+ cmd.Parameters = Array As Object( ALMACEN,e_ruta.text )
+ reqManager.ExecuteQuery(cmd , 0, "hist_abordo")
+
+ cmd.Initialize
+ cmd.Name = "select_cat_encuesta_p_KELL"
+ cmd.Parameters = Array As Object( ALMACEN,e_ruta.text )
+ reqManager.ExecuteQuery(cmd , 0, "carga_encuesta")
+
+ cmd.Initialize
+ cmd.Name = "select_placas_kell"
+ cmd.Parameters = Array As Object( ALMACEN,e_ruta.text )
+ reqManager.ExecuteQuery(cmd , 0, "placas")
+
+ cmd.Initialize
+ cmd.Name = "select_cat_variables_semana_tipo_KELL"
+ reqManager.ExecuteQuery(cmd , 0, "SEMANA")
+
+ cmd.Initialize
+ cmd.Name ="insert_drop_KELL"
+ cmd.Parameters = Array As Object(usuario,e_ruta.Text,fecha, l_porvisitar.Text,l_drop.Text,l_efectiva.Text,l_cuantosc.Text,l_cuantosn.Text, L_MONTOD.Text,"CARGA", ALMACEN)
+ reqManager.ExecuteCommand(cmd , "inst_noventa_ins_drop_kell")
+
+ cmd.Initialize
+ cmd.Name = "select_precios_KELL"
+ cmd.Parameters = Array As Object(ALMACEN)
+ reqManager.ExecuteQuery(cmd , 0, "precios")
+
+ cmd.Initialize
+ cmd.Name = "select_limite_abordo"
+ cmd.Parameters = Array As Object( ALMACEN,e_ruta.text )
+ reqManager.ExecuteQuery(cmd , 0, "limite_abordo")
+
+''' PARA LO DE DOE
+ cmd.Initialize
+ cmd.Name = "select_pedido_doe"
+ cmd.Parameters = Array As Object( ALMACEN,e_ruta.text )
+ reqManager.ExecuteQuery(cmd , 0, "pedido_doe")
+
+ cmd.Initialize
+ cmd.Name = "select_cat_gunaprod_doe"
+ cmd.Parameters = Array As Object( ALMACEN,e_ruta.text )
+ reqManager.ExecuteQuery(cmd , 0, "cat_gunaprod_doe")
+
+''' FIN DOE
+ cargar.Visible = False
+ Subir.Visible = False
+ trabajar.Visible=False
+ inv.Visible = False
+ If Starter.marcaCel <> "LGE" Then ToastMessageShow("Se Actualizarán los datos. Este proceso podria tardar hasta un minuto, gracias" , True)
+ End If
+End Sub
+
+Sub JobDone(Job As HttpJob)
+' LogColor("JobDone: "&Job.Tag & " Success:" & Job.Success , Colors.Magenta) ' Mod by CHV - 211116
+ If inicioContador = "" Then inicioContador = 0
+ If Job.Success = False Then
+ If logger Then LogColor("** " & Job.Tag & " Error: " & Job.ErrorMessage, Colors.Red) ' Mod by CHV - 211116
+ If Job.ErrorMessage = "STREAM" Then
+ contador_strem = contador_strem +1
+ If CARGA = "SUBIR" Then
+ PB1.Progress = PB1.Progress + 1
+ If PB1.Progress > 100 Then
+ PB1.Progress = 1
+ End If
+ If contador_env = contador_strem And S_CP.Text <> "INFO OK" Then
+ PB1.Progress = 100
+ S_CP.Text = "VALIDANDO"
+ End If
+ End If
+ End If
+ Else
+ 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 logger Then 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"))
+
+ If CAT_CL_LIMITECREDITO = "0" Then CAT_CL_BFACTURA = "100000000"
+ 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) 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))
+ 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","null","NULL","null","null","NULL","NULL"))
+ Starter.skmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!!
+ Starter.skmt.EndTransaction
+ 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
+ End If
+ 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
+ For Each records() As Object In RESULT.Rows
+ Dim HP_CLIENTE As String = records(RESULT.Columns.Get("HP_CLIENTE"))
+ Dim HP_CODIGO_PROMOCION As String = records(RESULT.Columns.Get("HP_CODIGO_PROMOCION"))
+ Starter.skmt.ExecNonQuery2("INSERT INTO HIST_PROMOS(HP_CLIENTE, HP_CODIGO_PROMOCION) VALUES (?,?)", Array As Object (HP_CLIENTE, HP_CODIGO_PROMOCION))
+ Next
+ Starter.skmt.TransactionSuccessful
+ Starter.skmt.EndTransaction
+ 'ToastMessageShow("Historico Promociones Actualizado." , True)
+ If PB1.Progress = 0 Then
+ PB1.Progress = 30
+ S_CH.Text = "CARGANDO"
+ ELSE If PB1.Progress = 30 Then
+ PB1.Progress = 70
+ ELSE IF PB1.Progress = 70 Then
+ PB1.Progress = 100
+ 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
+ For Each records() As Object In RESULT.Rows
+ Dim HCCP_CLIENTE As String = records(RESULT.Columns.Get("HCCP_CLIENTE"))
+ Dim HCCP_PROMO As String = records(RESULT.Columns.Get("HCCP_PROMO"))
+ Dim HCCP_CANT As String = records(RESULT.Columns.Get("HCCP_CANT"))
+ Starter.skmt.ExecNonQuery2("INSERT INTO HIST_CLIENTE_CANT_PROMOS(HCCP_CLIENTE, HCCP_PROMO, HCCP_CANT) VALUES (?,?,?)", Array As Object (HCCP_CLIENTE, HCCP_PROMO,HCCP_CANT))
+ Next
+ Starter.skmt.TransactionSuccessful
+ 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
+ For Each records() As Object In RESULT.Rows
+ Dim CAT_PA_ID As String = records(RESULT.Columns.Get("CAT_PA_ID"))
+ Dim CAT_PA_MAXPROM As String = records(RESULT.Columns.Get("CAT_PA_MAXPROM"))
+ Dim CAT_PA_MAXPROMREC As String = records(RESULT.Columns.Get("CAT_PA_MAXPROMREC"))
+ Dim CAT_PA_MAXPROMCLIE As String = records(RESULT.Columns.Get("CAT_PA_MAXPROMCLIE"))
+ Starter.skmt.ExecNonQuery2("INSERT INTO PROMOS_COMP(CAT_PA_ID, CAT_PA_MAXPROM, CAT_PA_MAXPROMREC, CAT_PA_MAXPROMCLIE) VALUES (?,?,?,?)", Array As Object (CAT_PA_ID, CAT_PA_MAXPROM,CAT_PA_MAXPROMREC,CAT_PA_MAXPROMCLIE))
+ Next
+ Starter.skmt.TransactionSuccessful
+ Starter.skmt.EndTransaction
+ If PB1.Progress = 0 Then
+ PB1.Progress = 30
+ S_CH.Text = "CARGANDO"
+ ELSE If PB1.Progress = 30 Then
+ PB1.Progress = 70
+ ELSE IF PB1.Progress = 70 Then
+ PB1.Progress = 100
+ 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"))
+ Dim CPM_IDPROMO As String = records(RESULT.Columns.Get("CPM_IDPROMO"))
+ Dim CPM_MONTO As String = records(RESULT.Columns.Get("CPM_MONTO"))
+ Dim CPM_PROID As String = records(RESULT.Columns.Get("CPM_PROID"))
+ 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 = "RMI" Then 'query tag
+ For Each records() As Object In RESULT.Rows
+ Dim CAT_ID As String = records(RESULT.Columns.Get("CAT_GP_ID"))
+ Dim CAT_DESCRIPCION As String = records(RESULT.Columns.Get("CAT_GP_NOMBRE"))
+ Dim CAT_MONTO As String = records(RESULT.Columns.Get("CAT_GP_PRECIO"))
+
+ 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
+ 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"))
+ Dim CAT_VE_NOMBRE As String = records(RESULT.Columns.Get("CAT_VE_NOMBRE"))
+ Dim CAT_VE_ORDEN As String = records(RESULT.Columns.Get("CAT_VE_ORDEN"))
+ 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
+ For Each records() As Object In RESULT.Rows
+ Dim DC_CL_CLIENTE As String = records(RESULT.Columns.Get("CAT_CL_CLIENTE"))
+ Dim CAT_CL_DESCUENTO_SS As String = records(RESULT.Columns.Get("CAT_CL_DESCUENTO_SS"))
+ Dim CAT_CL_DESCUENTO_RTEC As String = records(RESULT.Columns.Get("CAT_CL_DESCUENTO_RTEC"))
+ Dim CAT_CL_DESCUENTO_PING As String = records(RESULT.Columns.Get("CAT_CL_DESCUENTO_PING"))
+ Dim CAT_CL_TIPOCLIENTE As String = records(RESULT.Columns.Get("CAT_CL_TIPOCLIENTE"))
+ Starter.skmt.ExecNonQuery2("INSERT INTO DESC_CLIENTES(DC_CL_CLIENTE , CAT_CL_DESCUENTO_SS , CAT_CL_DESCUENTO_RTEC , CAT_CL_DESCUENTO_PING, CAT_CL_TIPOCLIENTE ) VALUES (?,?,?,?,?)", Array As Object (DC_CL_CLIENTE , CAT_CL_DESCUENTO_SS , CAT_CL_DESCUENTO_RTEC , CAT_CL_DESCUENTO_PING,CAT_CL_TIPOCLIENTE))
+ Next
+ Starter.skmt.TransactionSuccessful
+ Starter.skmt.EndTransaction
+ End If
+ End If
+
+ 'DESCUENTOS SKU
+ If Job.JobName = "DBRequest" Then
+ Dim RESULT As DBResult = reqManager.HandleJob(Job)
+ If RESULT.Tag = "DESCUENTOS_CLIENTE_SKU" Then 'query tag
+ If logger Then Log("TIEMPO DESCUENTOS_CLIENTE_SKU : " & ((DateTime.Now-inicioContador)/1000))
+ Starter.skmt.BeginTransaction
+ For Each records() As Object In RESULT.Rows
+ Dim CAT_DS_CLIENTE As String = records(RESULT.Columns.Get("CAT_DS_CLIENTE"))
+ Dim CAT_DS_PRODID As String = records(RESULT.Columns.Get("CAT_DS_PRODID"))
+ Dim CAT_DS_PORCENTAJE As String = records(RESULT.Columns.Get("CAT_DS_PORCENTAJE"))
+ Starter.skmt.ExecNonQuery2("INSERT INTO CAT_DESCUENTOS_SKU (CAT_DS_CLIENTE, CAT_DS_PRODID, CAT_DS_PORCENTAJE ) VALUES (?,?,?)", Array As Object (CAT_DS_CLIENTE, CAT_DS_PRODID, CAT_DS_PORCENTAJE))
+ Next
+ 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
+ For Each records() As Object In RESULT.Rows
+ Dim HVD_PROID As String = records(RESULT.Columns.Get("HVD_PROID"))
+ Dim HVD_CANT As String = records(RESULT.Columns.Get("HVD_CANT"))
+ Starter.skmt.ExecNonQuery2("INSERT INTO HIST_ABORDO(HIST_PROID, HIST_CANT) VALUES (?,?)", Array As Object (HVD_PROID, HVD_CANT))
+ Next
+ 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
+ If logger Then Log("TIEMPO gunaprod : " & ((DateTime.Now-inicioContador)/1000))
+ S_CP.Text = "CARGANDO"
+ Starter.skmt.BeginTransaction
+ For Each records() As Object In RESULT.Rows
+ Dim CAT_GP_ID As String = records(RESULT.Columns.Get("CAT_GP_ID"))
+ Dim CAT_GP_NOMBRE As String = records(RESULT.Columns.Get("CAT_GP_NOMBRE"))
+ Dim CAT_GP_IMP1 As String = records(RESULT.Columns.Get("CAT_GP_IMP1"))
+ Dim CAT_GP_IMP2 As String = records(RESULT.Columns.Get("CAT_GP_IMP2"))
+ Dim CAT_GP_PRECIO As String = records(RESULT.Columns.Get("CAT_GP_PRECIO"))
+ Dim CAT_GP_CLASIF As String = records(RESULT.Columns.Get("CAT_GP_CLASIF"))
+ Dim CAT_GP_STS As String = records(RESULT.Columns.Get("CAT_GP_STS"))
+ Dim CAT_GP_TIPO As String = records(RESULT.Columns.Get("CAT_GP_TIPO"))
+ Dim CAT_GP_SUBTIPO As String = records(RESULT.Columns.Get("CAT_GP_SUBTIPO"))
+ Dim CAT_GP_IMG() As Byte = records(RESULT.Columns.Get("CAT_GP_IMG"))
+ Dim CAT_GP_ALMACEN As Int = records(RESULT.Columns.Get("CAT_GP_ALMACEN"))
+ Dim CAT_GP_DEV As String = records(RESULT.Columns.Get("CAT_GP_DEV"))
+ 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"))
+ '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) 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))
+ Next
+ Starter.skmt.TransactionSuccessful
+ Starter.skmt.EndTransaction
+ ' c=skmt.ExecQuery("select CAT_GP_CLASIF, COUNT(*) AS CUANTOS from CAT_GUNAPROD GROUP BY CAT_GP_CLASIF order by CAT_GP_CLASIF asc")
+ ' c.Position=0
+ ' skmt.ExecNonQuery("DELETE FROM COUNT_GUNAPROD")
+ ' skmt.ExecNonQuery2("INSERT INTO COUNT_GUNAPROD(CAT_GP_CLASIF, CUANTOS) VALUES (?,?)", Array As Object (c.GetString("CAT_GP_CLASIF"), c.GetString("CUANTOS")))
+ ' c.Close
+ Listo2=1
+ If PB2.Progress = 0 Then
+ PB2.Progress = 30
+ S_CP.Text = "CARGANDO"
+ ELSE If PB2.Progress = 30 Then
+ PB2.Progress = 60
+ ELSE IF PB2.Progress = 60 Then
+ PB2.Progress = 80
+ ELSE IF PB2.Progress = 80 Then
+ PB2.Progress = 100
+ S_CP.Text = "LISTO"
+ End If
+ ' ToastMessageShow("Productos Actualizados." , True)
+ If Listo1 =1 And Listo2 =1 And Listo3 = 1 And Listo4 = 1 Then
+ B4XPage_Appear
+ img2.Visible=False
+ EJECUTANDO=0
+ End If
+ End If
+ End If
+ ''' CARGAS DOE PEDIDO
+ If Job.JobName = "DBRequest" Then
+ Dim RESULT As DBResult = reqManager.HandleJob(Job)
+ If RESULT.Tag = "cat_gunaprod_doe" Then 'query tag
+ If logger Then Log("TIEMPO gunaprod_DOE : " & ((DateTime.Now-inicioContador)/1000))
+ S_CP.Text = "CARGANDO"
+ Starter.skmt.BeginTransaction
+ For Each records() As Object In RESULT.Rows
+ Dim CAT_GP_ID As String = records(RESULT.Columns.Get("CAT_GP_ID"))
+ Dim CAT_GP_NOMBRE As String = records(RESULT.Columns.Get("CAT_GP_NOMBRE"))
+ Dim CAT_GP_IMP1 As String = records(RESULT.Columns.Get("CAT_GP_IMP1"))
+ Dim CAT_GP_IMP2 As String = records(RESULT.Columns.Get("CAT_GP_IMP2"))
+ Dim CAT_GP_PRECIO As String = records(RESULT.Columns.Get("CAT_GP_PRECIO"))
+ Dim CAT_GP_CLASIF As String = records(RESULT.Columns.Get("CAT_GP_CLASIF"))
+ Dim CAT_GP_STS As String = records(RESULT.Columns.Get("CAT_GP_STS"))
+ Dim CAT_GP_TIPO As String = records(RESULT.Columns.Get("CAT_GP_TIPO"))
+ Dim CAT_GP_SUBTIPO As String = records(RESULT.Columns.Get("CAT_GP_SUBTIPO"))
+ Dim CAT_GP_IMG() As Byte = records(RESULT.Columns.Get("CAT_GP_IMG"))
+ Dim CAT_GP_ALMACEN As Int = records(RESULT.Columns.Get("CAT_GP_ALMACEN"))
+ Dim CAT_GP_DEV As String = records(RESULT.Columns.Get("CAT_GP_DEV"))
+ 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"))
+ '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_DOE(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) 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))
+ Next
+ Starter.skmt.TransactionSuccessful
+ Starter.skmt.EndTransaction
+ ' c=skmt.ExecQuery("select CAT_GP_CLASIF, COUNT(*) AS CUANTOS from CAT_GUNAPROD GROUP BY CAT_GP_CLASIF order by CAT_GP_CLASIF asc")
+ ' c.Position=0
+ ' skmt.ExecNonQuery("DELETE FROM COUNT_GUNAPROD")
+ ' skmt.ExecNonQuery2("INSERT INTO COUNT_GUNAPROD(CAT_GP_CLASIF, CUANTOS) VALUES (?,?)", Array As Object (c.GetString("CAT_GP_CLASIF"), c.GetString("CUANTOS")))
+ ' c.Close
+ 'Listo2=1
+
+ ' ToastMessageShow("Productos Actualizados." , True)
+
+ End If
+ End If
+
+ ''' FIN CARGA CATALOGO DOE
+ ''' INICIO CARGA PEDIDO DOE
+
+ If Job.JobName = "DBRequest" Then
+ Dim RESULT As DBResult = reqManager.HandleJob(Job)
+ If RESULT.Tag = "pedido_doe" Then 'query tag
+ If logger Then Log("TIEMPO PEDIDO_DOE : " & ((DateTime.Now-inicioContador)/1000))
+ S_CP.Text = "CARGANDO"
+ Starter.skmt.BeginTransaction
+ For Each records() As Object In RESULT.Rows
+ Dim HVD_ALMACEN As String = records(RESULT.Columns.Get("HVD_ALMACEN"))
+ Dim HVD_COSTO_TOT As String = records(RESULT.Columns.Get("HVD_COSTO_TOT"))
+ Dim HVD_COSTOU As String = records(RESULT.Columns.Get("HVD_COSTOU"))
+ Dim HVD_CANT As String = records(RESULT.Columns.Get("HVD_CANT"))
+ Dim HVD_PRONOMBRE As String = records(RESULT.Columns.Get("HVD_PRONOMBRE"))
+ Dim HVD_PROID As String = records(RESULT.Columns.Get("HVD_PROID"))
+ Dim HVD_CLIENTE As String = records(RESULT.Columns.Get("HVD_CLIENTE"))
+ Dim HVD_FECHA As String = records(RESULT.Columns.Get("HVD_FECHA"))
+ Dim HVD_USUARIO As String = records(RESULT.Columns.Get("HVD_USUARIO"))
+ Dim HVD_RUTA As String = records(RESULT.Columns.Get("HVD_RUTA"))
+
+ '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 PEDIDO_DOE(PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_TIPO,PE_PRECIO2) VALUES (?,?,?,?,?,?,?,?,?,?,?,0)", Array As Object (HVD_ALMACEN, HVD_COSTO_TOT, HVD_COSTOU,HVD_CANT, HVD_PRONOMBRE, HVD_PROID, HVD_CLIENTE, HVD_FECHA, HVD_USUARIO,HVD_RUTA, "DOE"))
+ Next
+ Starter.skmt.TransactionSuccessful
+ Starter.skmt.EndTransaction
+
+
+
+ ' c=skmt.ExecQuery("select CAT_GP_CLASIF, COUNT(*) AS CUANTOS from CAT_GUNAPROD GROUP BY CAT_GP_CLASIF order by CAT_GP_CLASIF asc")
+ ' c.Position=0
+ ' skmt.ExecNonQuery("DELETE FROM COUNT_GUNAPROD")
+ ' skmt.ExecNonQuery2("INSERT INTO COUNT_GUNAPROD(CAT_GP_CLASIF, CUANTOS) VALUES (?,?)", Array As Object (c.GetString("CAT_GP_CLASIF"), c.GetString("CUANTOS")))
+ ' c.Close
+ 'Listo2=1
+
+ ' ToastMessageShow("Productos Actualizados." , True)
+
+ End If
+ End If
+ ''' FIN CARGA PEDIDO DOE
+ 'CARGA DEL CATALOGO ABORDO
+ If Job.JobName = "DBRequest" Then
+ Dim RESULT As DBResult = reqManager.HandleJob(Job)
+ If RESULT.Tag = "gunaprod2" Then 'query tag
+ If logger Then Log("TIEMPO gunaprod2 : " & ((DateTime.Now-inicioContador)/1000))
+ Starter.skmt.BeginTransaction
+ For Each records() As Object In RESULT.Rows
+ Dim CAT_GP_ID As String = records(RESULT.Columns.Get("CAT_GP_ID"))
+ Dim CAT_GP_NOMBRE As String = records(RESULT.Columns.Get("CAT_GP_NOMBRE"))
+ Dim CAT_GP_IMP1 As String = records(RESULT.Columns.Get("CAT_GP_IMP1"))
+ Dim CAT_GP_IMP2 As String = records(RESULT.Columns.Get("CAT_GP_IMP2"))
+ Dim CAT_GP_PRECIO As String = records(RESULT.Columns.Get("CAT_GP_PRECIO"))
+ Dim CAT_GP_CLASIF As String = records(RESULT.Columns.Get("CAT_GP_CLASIF"))
+ Dim CAT_GP_STS As String = records(RESULT.Columns.Get("CAT_GP_STS"))
+ Dim CAT_GP_TIPO As String = records(RESULT.Columns.Get("CAT_GP_TIPO"))
+ Dim CAT_GP_SUBTIPO As String = records(RESULT.Columns.Get("CAT_GP_SUBTIPO"))
+ Dim CAT_GP_IMG() As Byte = records(RESULT.Columns.Get("CAT_GP_IMG"))
+ Dim CAT_GP_ALMACEN As Int = records(RESULT.Columns.Get("CAT_GP_ALMACEN"))
+ Dim CAT_GP_DEV As String = records(RESULT.Columns.Get("CAT_GP_DEV"))
+ 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_CODPROMO As String = records(RESULT.Columns.Get("CAT_GP_CODPROMO"))
+ '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_GUNAPROD2(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) 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_TIPOPROD, CAT_GP_INICIATIVA,CAT_GP_DEV,CAT_GP_CODPROMO))
+ Starter.skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD5(CAT_GP_ID,CAT_GP_ALMACEN) VALUES (?,?)", Array As Object (CAT_GP_ID,CAT_GP_ALMACEN))
+ Next
+ Starter.skmt.TransactionSuccessful
+ Starter.skmt.EndTransaction
+ c=Starter.skmt.ExecQUERY("SELECT COUNT(*) AS CUANTOS FROM PEDIDO WHERE PE_CLIENTE <> 0")
+ c.Position = 0
+ cuantos_pedidosc = c.GetString("CUANTOS")
+ c.Close
+ If cuantos_pedidosc > 0 Then
+ c=Starter.skmt.ExecQUERY("SELECT PE_PROID, SUM(PE_CANT) AS PE_CANT FROM PEDIDO WHERE PE_CLIENTE <> 0 GROUP BY PE_PROID")
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Starter.skmt.ExecNonQuery2("update CAT_GUNAPROD2 set CAT_GP_ALMACEN = CAT_GP_ALMACEN - ? where CAT_GP_ID = ? ", Array As Object(c.GetString("PE_CANT"),c.GetString("PE_PROID")))
+ Next
+ End If
+ End If
+ ' skmt.ExecNonQuery("DELETE FROM CAT_GUNAPROD5")
+ ' skmt.ExecNonQuery("INSERT INTO CAT_GUNAPROD5(CAT_GP_ID, CAT_GP_ALMACEN) SELECT CAT_GP_ID, CAT_GP_ALMACEN FROM CAT_GUNAPROD2")
+
+ '
+ ' c=skmt.ExecQuery("select CAT_GP_CLASIF, COUNT(*) AS CUANTOS from CAT_GUNAPROD2 GROUP BY CAT_GP_CLASIF order by CAT_GP_CLASIF asc")
+ ' c.Position=0
+ ' skmt.ExecNonQuery("DELETE FROM COUNT_GUNAPROD2")
+ ' 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 = "devoluciones" Then 'query tag
+ If logger Then Log("TIEMPO devoluciones : " & ((DateTime.Now-inicioContador)/1000))
+ Starter.skmt.BeginTransaction
+ For Each records() As Object In RESULT.Rows
+ Dim CAT_GP_ID As String = records(RESULT.Columns.Get("CAT_GP_ID"))
+ Dim CAT_GP_NOMBRE As String = records(RESULT.Columns.Get("CAT_GP_NOMBRE"))
+ Dim CAT_GP_PRECIO As String = records(RESULT.Columns.Get("CAT_GP_PRECIO"))
+
+ Starter.skmt.ExecNonQuery2("INSERT INTO CAT_DEV(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_PRECIO) VALUES (?,?,?)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_PRECIO))
+ Next
+ Starter.skmt.TransactionSuccessful
+ Starter.skmt.EndTransaction
+ If PB2.Progress = 0 Then
+ PB2.Progress = 30
+ S_CP.Text = "CARGANDO"
+ ELSE If PB2.Progress = 30 Then
+ PB2.Progress = 60
+ ELSE IF PB2.Progress = 60 Then
+ PB2.Progress = 80
+ ELSE IF PB2.Progress = 80 Then
+ PB2.Progress = 100
+ S_CP.Text = "LISTO"
+ End If
+ ' ToastMessageShow("Promociones Actualizados." , True)
+ Listo4=1
+ If Listo1 =1 And Listo2 =1 And Listo3 = 1 And Listo4 = 1 Then
+ B4XPage_Appear
+ img2.Visible=False
+ EJECUTANDO=0
+ Else If Listo4 = 1 And Listo3 = 1 And inve = 1 Then
+ B4XPage_Appear
+ img2.Visible=False
+ EJECUTANDO=0
+ End If
+ 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
+ For Each records() As Object In RESULT.Rows
+ Dim CAT_GP_ID As String = records(RESULT.Columns.Get("CAT_GP_ID"))
+ Dim CAT_GP_NOMBRE As String = records(RESULT.Columns.Get("CAT_GP_NOMBRE"))
+ Dim CAT_GP_IMP1 As String = records(RESULT.Columns.Get("CAT_GP_IMP1"))
+ Dim CAT_GP_IMP2 As String = records(RESULT.Columns.Get("CAT_GP_IMP2"))
+ Dim CAT_GP_PRECIO As String = records(RESULT.Columns.Get("CAT_GP_PRECIO"))
+ Dim CAT_GP_CLASIF As String = records(RESULT.Columns.Get("CAT_GP_CLASIF"))
+ Dim CAT_GP_STS As String = records(RESULT.Columns.Get("CAT_GP_STS"))
+ Dim CAT_GP_TIPO As String = records(RESULT.Columns.Get("CAT_GP_TIPO"))
+ Dim CAT_GP_SUBTIPO As String = records(RESULT.Columns.Get("CAT_GP_SUBTIPO"))
+ Dim CAT_GP_IMG() As Byte = records(RESULT.Columns.Get("CAT_GP_IMG"))
+ Dim CAT_GP_ALMACEN As Int = records(RESULT.Columns.Get("CAT_GP_ALMACEN"))
+ Dim CAT_GP_TIPOPROD As Int = records(RESULT.Columns.Get("CAT_GP_TIPOPROD"))
+' Dim CAT_GP_DEV As String = records(RESULT.Columns.Get("CAT_GP_DEV"))
+ Starter.skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD2(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_DEV,CAT_GP_CODPROMO) 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,"0"))
+ ' skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD2(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_DEV,CAT_GP_CODPROMO) 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,"0"))
+ Next
+ Starter.skmt.TransactionSuccessful
+ Starter.skmt.EndTransaction
+ If PB2.Progress = 0 Then
+ PB2.Progress = 30
+ S_CP.Text = "CARGANDO"
+ ELSE If PB2.Progress = 30 Then
+ PB2.Progress = 60
+ ELSE IF PB2.Progress = 60 Then
+ PB2.Progress = 80
+ ELSE IF PB2.Progress = 80 Then
+ PB2.Progress = 100
+ S_CP.Text = "LISTO"
+ End If
+ ' ToastMessageShow("Promociones Actualizados." , True)
+ Listo4=1
+ If Listo1 =1 And Listo2 =1 And Listo3 = 1 And Listo4 = 1 Then
+ B4XPage_Appear
+ img2.Visible=False
+ EJECUTANDO=0
+ Else If Listo4 = 1 And Listo3 = 1 And inve = 1 Then
+ B4XPage_Appear
+ img2.Visible=False
+ 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
+ Dim CAT_GP_ID As String = records(RESULT.Columns.Get("CAT_GP_ID"))
+ Dim CAT_GP_NOMBRE As String = records(RESULT.Columns.Get("CAT_GP_NOMBRE"))
+ Dim CAT_GP_IMP1 As String = records(RESULT.Columns.Get("CAT_GP_IMP1"))
+ Dim CAT_GP_IMP2 As String = records(RESULT.Columns.Get("CAT_GP_IMP2"))
+ Dim CAT_GP_PRECIO As String = records(RESULT.Columns.Get("CAT_GP_PRECIO"))
+ Dim CAT_GP_CLASIF As String = records(RESULT.Columns.Get("CAT_GP_CLASIF"))
+ Dim CAT_GP_STS As String = records(RESULT.Columns.Get("CAT_GP_STS"))
+ Dim CAT_GP_TIPO As String = records(RESULT.Columns.Get("CAT_GP_TIPO"))
+ Dim CAT_GP_SUBTIPO As String = records(RESULT.Columns.Get("CAT_GP_SUBTIPO"))
+ Dim CAT_GP_IMG() As Byte = records(RESULT.Columns.Get("CAT_GP_IMG"))
+ Dim CAT_GP_ALMACEN As Int = records(RESULT.Columns.Get("CAT_GP_ALMACEN"))
+ Dim CAT_GP_TIPOPROD As Int = records(RESULT.Columns.Get("CAT_GP_TIPOPROD"))
+ Starter.skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD2(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) 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_TIPOPROD))
+ ' skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD2(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) 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_TIPOPROD))
+ Next
+ Starter.skmt.TransactionSuccessful
+ Starter.skmt.EndTransaction
+ If PB2.Progress = 0 Then
+ PB2.Progress = 30
+ S_CP.Text = "CARGANDO"
+ ELSE If PB2.Progress = 30 Then
+ PB2.Progress = 60
+ ELSE IF PB2.Progress = 60 Then
+ PB2.Progress = 80
+ ELSE IF PB2.Progress = 80 Then
+ PB2.Progress = 100
+ S_CP.Text = "LISTO"
+ End If
+ 'ToastMessageShow("Promociones especiales Actualizados." , True)
+ Listo4=1
+ If Listo1 =1 And Listo2 =1 And Listo3 = 1 And Listo4 = 1 Then
+ B4XPage_Appear
+ img2.Visible=False
+ EJECUTANDO=0
+ Else If Listo4 = 1 And Listo3 = 1 And inve = 1 Then
+ B4XPage_Appear
+ img2.Visible=False
+ 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
+ For Each records() As Object In RESULT.Rows
+ Dim CAT_DP_ALMACEN As String = records(RESULT.Columns.Get("CAT_DP_ALMACEN"))
+ Dim CAT_DP_ID As String = records(RESULT.Columns.Get("CAT_DP_ID"))
+ Dim CAT_DP_IDPROD As String = records(RESULT.Columns.Get("CAT_DP_IDPROD"))
+ Dim CAT_DP_TIPO As String = records(RESULT.Columns.Get("CAT_DP_TIPO"))
+ Dim CAT_DP_PZAS As String = records(RESULT.Columns.Get("CAT_DP_PZAS"))
+ Dim CAT_DP_USUARIO As String = records(RESULT.Columns.Get("CAT_DP_USUARIO"))
+ Dim CAT_DP_FECHA As String = records(RESULT.Columns.Get("CAT_DP_FECHA"))
+ Dim CAT_DP_REGALO As String = records(RESULT.Columns.Get("CAT_DP_REGALO"))
+ 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))
+ Next
+ Starter.skmt.TransactionSuccessful
+ Starter.skmt.EndTransaction
+ If PB2.Progress = 0 Then
+ PB2.Progress = 30
+ S_CP.Text = "CARGANDO"
+ ELSE If PB2.Progress = 30 Then
+ PB2.Progress = 60
+ ELSE IF PB2.Progress = 60 Then
+ PB2.Progress = 80
+ ELSE IF PB2.Progress = 80 Then
+ PB2.Progress = 100
+ S_CP.Text = "LISTO"
+ End If
+ Listo3 =1
+ If Listo1 =1 And Listo2 =1 And Listo3 = 1 And Listo4 = 1 Then
+ B4XPage_Appear
+ img2.Visible=False
+ EJECUTANDO=0
+ Else If Listo4 = 1 And Listo3 = 1 And inve = 1 Then
+ B4XPage_Appear
+ img2.Visible=False
+ 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
+ For Each records() As Object In RESULT.Rows
+ Dim HVD_CLIENTE As String = records(RESULT.Columns.Get("HVD_CLIENTE"))
+ Dim HVD_PRONOMBRE As String = records(RESULT.Columns.Get("HVD_PRONOMBRE"))
+ Dim HVD_CANT As String = records(RESULT.Columns.Get("HVD_CANT"))
+ Dim HVD_COSTO_TOT As String = records(RESULT.Columns.Get("HVD_COSTO_TOT"))
+ Dim HVD_FECHA As String = records(RESULT.Columns.Get("HVD_FECHA"))
+ Starter.skmt.ExecNonQuery2("INSERT INTO HIST_VENTAS(HVD_CLIENTE,HVD_PRONOMBRE,HVD_CANT,HVD_COSTO_TOT, HVD_FECHA) VALUES (?,?,?,?,?)", Array As Object (HVD_CLIENTE,HVD_PRONOMBRE,HVD_CANT,HVD_COSTO_TOT,HVD_FECHA))
+ Next
+ Starter.skmt.TransactionSuccessful
+ Starter.skmt.EndTransaction
+ Listo3 =1
+ If PB1.Progress = 0 Then
+ PB1.Progress = 30
+ S_CH.Text = "CARGANDO"
+ ELSE If PB1.Progress = 30 Then
+ PB1.Progress = 70
+ ELSE IF PB1.Progress = 70 Then
+ PB1.Progress = 100
+ S_CH.Text = "LISTO"
+ End If
+' ToastMessageShow("Venta historico Actualizado." , True)
+ If Listo1 =1 And Listo2 =1 And Listo3 = 1 And Listo4 = 1 Then
+ B4XPage_Appear
+ img2.Visible=False
+ 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
+ Dim HVD_CLIENTE As String = records(RESULT.Columns.Get("HVD_CLIENTE"))
+ Dim HVD_PRONOMBRE As String = records(RESULT.Columns.Get("HVD_PRONOMBRE"))
+ Dim HVD_CANT As String = records(RESULT.Columns.Get("HVD_CANT"))
+ Dim HVD_PROID As String = records(RESULT.Columns.Get("HVD_PROID"))
+ Starter.skmt.ExecNonQuery2("INSERT INTO HIST_RMI(HR_CLIENTE,HR_PRONOMBRE,HR_PROID, HR_CANT) VALUES (?,?,?,?)", Array As Object (HVD_CLIENTE,HVD_PRONOMBRE,HVD_PROID, HVD_CANT))
+ Next
+ Listo3 =1
+ If PB1.Progress = 0 Then
+ PB1.Progress = 30
+ S_CH.Text = "CARGANDO"
+ ELSE If PB1.Progress = 30 Then
+ PB1.Progress = 50
+ ELSE IF PB1.Progress = 50 Then
+ PB1.Progress = 80
+ ELSE If PB1.Progress = 80 Then
+ PB1.Progress = 100
+ S_CH.Text = "LISTO"
+ End If
+' ToastMessageShow("Venta historico Actualizado." , True)
+ If Listo1 =1 And Listo2 =1 And Listo3 = 1 And Listo4 = 1 Then
+ B4XPage_Appear
+ img2.Visible=False
+ 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"))
+ Dim Cat_Va_Valor As String = records(RESULT.Columns.Get("CAT_VA_VALOR"))
+ 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
+ Dim Cat_Va_Valor As String = records(RESULT.Columns.Get("CAT_LA_LIMITE_ABORDO"))
+ Dim CAT_LA_ESTATUS_AUTORIZA As String = records(RESULT.Columns.Get("CAT_LA_ESTATUS_AUTORIZA"))
+ Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("LIMITE"))
+ If CAT_LA_ESTATUS_AUTORIZA = 1 Then
+ Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("LIMITE", "100000"))
+ Else
+ Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("LIMITE", Cat_Va_Valor))
+ 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
+ Dim CAT_EP_ID As String = records(RESULT.COLUMNS.GET("CAT_EP_ID"))
+ Dim CAT_EP_IDTIPOPREGUNTA As String = records(RESULT.COLUMNS.GET("CAT_EP_IDTIPOPREGUNTA"))
+ Dim CAT_CE_DESCRIPCION As String = records(RESULT.COLUMNS.GET("CAT_CE_DESCRIPCION"))
+ Dim CAT_EP_PREGUNTA As String = records(RESULT.COLUMNS.GET("CAT_EP_PREGUNTA"))
+ Dim CAT_EP_RES1_PRED As String = records(RESULT.COLUMNS.GET("CAT_EP_RES1_PRED"))
+ Dim CAT_EP_RES2_PRED As String = records(RESULT.COLUMNS.GET("CAT_EP_RES2_PRED"))
+ Dim CAT_EP_RES3_PRED As String = records(RESULT.COLUMNS.GET("CAT_EP_RES3_PRED"))
+ Dim CAT_EP_ORDEN_PREGUNTA As String = records(RESULT.COLUMNS.GET("CAT_EP_ORDEN_PREGUNTA"))
+ 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
+ Dim HIST_ECD_IDGRUPO As String = records(RESULT.COLUMNS.GET("HIST_ECD_IDGRUPO"))
+ Dim HIST_ECD_CLIENTE As String = records(RESULT.COLUMNS.GET("HIST_ECD_CLIENTE"))
+ 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
+ Dim CUANTOSP As Int = records(RESULT.Columns.Get("CUANTOSP"))
+ If cuantos_pedido < = CUANTOSP Then
+ datos_iguales = "ok"
+ S_CP.Text = "INFO OK"
+ Else
+ If Starter.marcaCel <> "LGE" Then ToastMessageShow("No se cargo bien la info P. Sync Nuevamente" & CUANTOSP & " " & cuantos_pedido, True)
+ S_CP.Text = "ENVIAR DATOS (K-2)"
+ 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"))
+ If cuantos_pedido = CUANTOSP Then
+ Msgbox("ENVIO EXITOSO","AVISO") 'ignore
+ cargar.Visible = True
+ Subir.Visible = True
+ trabajar.Visible = True
+ Else
+ Msgbox("NO ESTA COMPLETA LA INFO", "AVISO") 'ignore
+ connecta.Visible = True
+ Resumen.Visible = True
+ BUSCA.Visible = True
+ NUEVO.Visible = True
+ trabajar.Visible = True
+ B_PROXIMA.Visible = True
+ 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"))
+ If cuantos_pedidosc = CUANTOSC Then
+ datos_iguales = "ok"
+ S_CP.Text = "INFO OK"
+ Else
+ If Starter.marcaCel <> "LGE" Then ToastMessageShow("No se cargo bien la info C. Sync Nuevamente" & CUANTOSC & " " & cuantos_pedidosc, True)
+ 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"))
+ If cuantos_noventa = CUANTOSN Then
+ datos_iguales = "ok"
+ S_CP.Text = "INFO OK"
+ Else
+ If Starter.marcaCel <> "LGE" Then ToastMessageShow("No se cargo bien la info N. Sync Nuevamente" & CUANTOSN & " " & cuantos_noventa, True)
+ 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
+ S_CP.Text = "SUBIENDO"
+ Next
+ PB2.Progress = 100
+ S_CP.Text = "LISTO"
+ End If
+ End If
+
+ If Job.JobName = "DBRequest" Then
+ Dim RESULT As DBResult = reqManager.HandleJob(Job)
+ If RESULT.Tag = "version" Then 'query tag
+ 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"))
+ Starter.skmt.ExecNonQuery("delete from VERSION")
+ Starter.skmt.ExecNonQuery2("INSERT INTO VERSION(NOVERSION) VALUES (?)", Array As Object (CAT_VE_VERSION))
+ Next
+ 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)
+' Log(RESULT.Columns.Get("VALIDO"))
+ If RESULT.Columns.Get("VALIDO") = "0" Then ToastMessageShow("Ruta incorrecta", True)
+ If RESULT.Rows.Size = 0 Then ToastMessageShow("No hay ruta para ese usuario", True)
+ For Each records() As Object In RESULT.Rows
+ Dim VALIDO As String = records(RESULT.Columns.Get("VALIDO"))
+ Log("|"&VALIDO&"|")
+' If Logger Then Log(records(RESULT.Columns.Get("CAT_RU_CATEGORIA")))
+ Starter.rutaTipo = records(RESULT.Columns.Get("CAT_RU_CATEGORIA")) 'Traemos el tipo de ruta para que cuando sean foraneas no carguen la carta oprte todos los dias.
+ If VALIDO = "OK" Then
+ cargar.Visible = True
+ Subir.Visible = True
+ inv.Visible = True
+ connecta.Visible = False
+ Starter.rutapreventa = e_ruta.text
+ If conn = "1" Then
+ ToastMessageShow("Existe Conexión con el Servidor." , True)
+ End If
+ Else
+ cargar.Visible = False
+ Subir.Visible = False
+ inv.Visible = False
+ connecta.Visible = False
+ 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"))
+ Next
+ If name2 = "OK" Then
+ PASO = 1
+ 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"))
+ Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("FECHA"))
+ 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 = "folio" Then 'query tag
+ If logger Then Log("TIEMPO folio : " & ((DateTime.Now-inicioContador)/1000))
+ For Each records() As Object In RESULT.Rows
+ Dim FOLIO As String = records(RESULT.Columns.Get("FOLIO"))
+ Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("FOLIO"))
+ 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)
+ If RESULT.Tag = "perfil" Then 'query tag
+ For Each records() As Object In RESULT.Rows
+ Dim PERFIL As String = records(RESULT.Columns.Get("PERFIL"))
+ Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("PERFIL"))
+ 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)
+ 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
+ Dim MARCAS As String = records(RESULT.Columns.Get("MARCAS"))
+ Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("MARCAS"))
+ 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)
+ If RESULT.Tag = "sucursal" Then 'query tag
+ For Each records() As Object In RESULT.Rows
+ Dim SUCURSAL As String = records(RESULT.Columns.Get("SUCURSAL"))
+ Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("SUCURSAL"))
+ 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"))
+ Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("PLACAS"))
+ 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
+ Dim Cat_Va_Valor As String = records(RESULT.Columns.Get("CAT_VA_VALOR"))
+ Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("SEMANA"))
+ 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"))
+ Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("DIA_VISITA"))
+ Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("DIA_VISITA",DIA_VISITA))
+ 'Msgbox(DIA_VISITA, "") 'ignore
+ Next
+ End If
+ End If
+
+ 'CUOTAS
+ If Job.JobName = "DBRequest" Then
+ Dim RESULT As DBResult = reqManager.HandleJob(Job)
+ 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"))
+ Dim HC_CUOTA1 As String = records(RESULT.Columns.Get("HC_CUOTA1"))
+ Dim HC_CUOTA2 As String = records(RESULT.Columns.Get("HC_CUOTA2"))
+ Dim HC_CUOTA3 As String = records(RESULT.Columns.Get("HC_CUOTA3"))
+ Dim HC_CUOTA4 As String = records(RESULT.Columns.Get("HC_CUOTA4"))
+ Dim HC_CUOTA5 As String = records(RESULT.Columns.Get("HC_CUOTA5"))
+ Dim HC_CUOTA6 As String = records(RESULT.Columns.Get("HC_CUOTA6"))
+ Dim HC_META1 As String = records(RESULT.Columns.Get("HC_META1"))
+ Dim HC_META2 As String = records(RESULT.Columns.Get("HC_META2"))
+ Dim HC_META3 As String = records(RESULT.Columns.Get("HC_META3"))
+ Dim HC_META4 As String = records(RESULT.Columns.Get("HC_META4"))
+ Dim HC_META5 As String = records(RESULT.Columns.Get("HC_META5"))
+ Dim HC_META6 As String = records(RESULT.Columns.Get("HC_META6"))
+ 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)
+ 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"))
+ Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("CAMBIOS"))
+ 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)
+ If RESULT.Tag = "precios" Then 'query tag
+ If logger Then Log("TIEMPO precios : " & ((DateTime.Now-inicioContador)/1000))
+' Subs.cronoX("Precios", 1)
+ Starter.skmt.BeginTransaction
+ For Each records() As Object In RESULT.Rows
+ Dim CAT_GP_ID As String = records(RESULT.Columns.Get("CAT_GP_ID"))
+ Dim CAT_GP_PRECIO As String = records(RESULT.Columns.Get("CAT_GP_PRECIO"))
+ Dim CAT_GP_PRECIO1 As String = records(RESULT.Columns.Get("CAT_GP_PRECIO1"))
+ Dim CAT_GP_PRECIO2 As String = records(RESULT.Columns.Get("CAT_GP_PRECIO2"))
+ Dim CAT_GP_PRECIO3 As String = records(RESULT.Columns.Get("CAT_GP_PRECIO3"))
+ Dim CAT_GP_PRECIO4 As String = records(RESULT.Columns.Get("CAT_GP_PRECIO4"))
+ Dim CAT_GP_PRECIO5 As String = records(RESULT.Columns.Get("CAT_GP_PRECIO5"))
+ Dim CAT_GP_PRECIO6 As String = records(RESULT.Columns.Get("CAT_GP_PRECIO6"))
+ Dim CAT_GP_PRECIO7 As String = records(RESULT.Columns.Get("CAT_GP_PRECIO7"))
+ Dim CAT_GP_PRECIO8 As String = records(RESULT.Columns.Get("CAT_GP_PRECIO8"))
+ Dim CAT_GP_PRECIO9 As String = records(RESULT.Columns.Get("CAT_GP_PRECIO10"))
+ Dim CAT_GP_PRECIO10 As String = records(RESULT.Columns.Get("CAT_GP_PRECIO10")) 'ignore
+ Starter.skmt.ExecNonQuery2("INSERT INTO CAT_PRECIOS(CAT_GP_ID,CAT_GP_PRECIO, CAT_GP_PRECIO1,CAT_GP_PRECIO2,CAT_GP_PRECIO3,CAT_GP_PRECIO4,CAT_GP_PRECIO5,CAT_GP_PRECIO6,CAT_GP_PRECIO7,CAT_GP_PRECIO8,CAT_GP_PRECIO9) VALUES (?,?,?,?,?,?,?,?,?,?,?)", Array As Object (CAT_GP_ID,CAT_GP_PRECIO, CAT_GP_PRECIO1,CAT_GP_PRECIO2,CAT_GP_PRECIO3,CAT_GP_PRECIO4,CAT_GP_PRECIO5,CAT_GP_PRECIO6,CAT_GP_PRECIO7,CAT_GP_PRECIO8,CAT_GP_PRECIO9))
+ Next
+ Starter.skmt.ExecNonQuery("delete from LISTA_PRECIOS")
+ Starter.skmt.ExecNonQuery(" insert into LISTA_PRECIOS(PRECIO, CAT_GP_ID, NLISTA) select cat_gp_precio as precio, cat_gp_id, '1' as NLISTA from CAT_PRECIOS union Select CAT_GP_PRECIO1 As precio, CAT_GP_ID, '2' as NLISTA from CAT_PRECIOS union Select CAT_GP_PRECIO2 As precio, CAT_GP_ID, '3' as NLISTA from CAT_PRECIOS union Select CAT_GP_PRECIO3 As precio, CAT_GP_ID, '4' as NLISTA from CAT_PRECIOS union Select CAT_GP_PRECIO4 As precio, CAT_GP_ID, '5' as NLISTA from CAT_PRECIOS union Select CAT_GP_PRECIO5 As precio, CAT_GP_ID, '6' as NLISTA from CAT_PRECIOS union Select CAT_GP_PRECIO6 As precio, CAT_GP_ID, '7' as NLISTA from CAT_PRECIOS union Select CAT_GP_PRECIO7 As precio, CAT_GP_ID, '8' as NLISTA from CAT_PRECIOS union Select CAT_GP_PRECIO8 As precio, CAT_GP_ID, '9' as NLISTA from CAT_PRECIOS union Select CAT_GP_PRECIO9 As precio, CAT_GP_ID, '10' as NLISTA from CAT_PRECIOS union Select CAT_GP_PRECIO10 As precio, CAT_GP_ID, '11' as NLISTA from CAT_PRECIOS")
+ Starter.skmt.TransactionSuccessful
+ Starter.skmt.EndTransaction
+' 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)
+ 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"))
+ Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("FINDIA_PASS"))
+ 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)
+ If RESULT.Tag = "exhibidores" Then 'query tag
+ If logger Then Log("TIEMPO exhibidores : " & ((DateTime.Now-inicioContador)/1000))
+ Starter.skmt.BeginTransaction
+ For Each records() As Object In RESULT.Rows
+ Dim HIST_EX_ID_CLIENTE As String = records(RESULT.Columns.Get("HIST_EX_ID_CLIENTE"))
+ Dim HIST_EX_TIPO As String = records(RESULT.Columns.Get("HIST_EX_TIPO"))
+ Dim HIST_EX_CANT As String = records(RESULT.Columns.Get("HIST_EX_CANT")) 'ignore
+ Starter.skmt.ExecNonQuery2("INSERT INTO HIST_EXHIBIDORES2(HIST_EX_ID_CLIENTE,HIST_EX_TIPO, HIST_EX_CANT) VALUES (?,?,?)", Array As Object (HIST_EX_ID_CLIENTE,HIST_EX_TIPO, HIST_EX_CANT))
+ Next
+ Starter.skmt.TransactionSuccessful
+ Starter.skmt.EndTransaction
+ End If
+ End If
+
+ 'HIST_ENCUESTA2
+ If Job.JobName = "DBRequest" Then
+ Dim RESULT As DBResult = reqManager.HandleJob(Job)
+ If RESULT.Tag = "HIST_ENCUESTA2" Then 'query tag
+ If logger Then Log("TIEMPO HIST_ENCUESTA2 : " & ((DateTime.Now-inicioContador)/1000))
+ Starter.skmt.BeginTransaction
+ For Each records() As Object In RESULT.Rows
+ Dim HE_CLIENTE As String = records(RESULT.Columns.Get("HE_CLIENTE"))
+ Starter.skmt.ExecNonQuery2("INSERT INTO HIST_ENCUESTA2(HE_CLIENTE) VALUES (?)", Array As Object (HE_CLIENTE))
+ Next
+ Starter.skmt.TransactionSuccessful
+ Starter.skmt.EndTransaction
+ End If
+ End If
+ End If
+ Job.Release
+End Sub
+
+Private Sub B4XPage_CloseRequest As ResumableSub
+ ' BACK key pressed
+ 'Return True to close, False to cancel
+ If pdfViewerActivo Then
+ pdfViewerActivo = False
+ PNL_ACCESO.Visible = True
+ Panel7.Visible = True
+ PNL_ACCESO.BringToFront
+ p_pdfViewer.Visible = False
+ Else if P_RESUMEN.Visible Then
+ B_OK_RES_Click
+ Else
+ Subs.iniciaActividad("Login")
+ End If
+ Return False
+End Sub
+
+Sub Activity_KeyPress (key As Int) As Boolean
+' ' BACK key pressed
+' If key=KeyCodes.KEYCODE_BACK Then
+' If pdfViewerActivo Then
+' pdfViewerActivo = False
+' PNL_ACCESO.Visible = True
+' Panel7.Visible = True
+' PNL_ACCESO.BringToFront
+' p_pdfViewer.Visible = False
+' Else if P_RESUMEN.Visible Then
+' B_OK_RES_Click
+' Else
+' Subs.iniciaActividad("Main")
+' End If
+' ' I want to capture the key here so I return True
+' Return True
+' End If
+' ' Returning False signals the system to handle the key
+' Return False
+End Sub
+
+Sub connecta_Click
+' c=skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("RUTA"))
+' c.Position =0
+' If c.GetString("CAT_VA_VALOR") = l_ruta.Text Then
+ If e_ruta.Text = "KMTSKLL1" Then
+ cargar.Visible = True
+ Subir.Visible = True
+ e_ruta.Text = ""
+ End If
+' Aqui el codigo para que solo acepte numeros en la ruta, sin caracteres especiales ' Mod por CHV - 211130
+ Dim m As Matcher = Regex.Matcher("\d+", e_ruta.Text) 'Buscamos numeros en el campo de la ruta
+ If m.Find Then e_ruta.Text = m.Match ' Si tiene numeros, solo nos quedamos con ellos.
+ If e_ruta.Text.Length > 6 Then e_ruta.Text = e_ruta.Text.SubString2(0,6) ' Si tiene mas de 6 numeros solo tomamos los primeros 6
+ If logger Then Log(e_ruta.Text)
+ c=Starter.skmt.ExecQuery("select usuario from usuarioa")
+ c.Position = 0
+ usuario = c.GetString("USUARIO")
+ c.Close
+ connecta1 = connecta1 + 1
+' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_READ_PHONE_STATE)
+' Wait For Activity_PermissionResult (Permission As String, Result As Boolean)
+' If Result Then
+' imei = p.GetDeviceId
+' End If
+ imei = ""
+ conn = "1"
+ Dim cmd As DBCommand
+ cmd.Initialize
+ cmd.Name = "select_version_KELL"
+ reqManager.ExecuteQuery(cmd , 0, "version")
+ Dim cmd As DBCommand
+ cmd.Initialize
+ cmd.Name = "select_ruta3_KELL"
+ cmd.Parameters = Array As Object(ALMACEN, e_ruta.text, usuario)
+ reqManager.ExecuteQuery(cmd , 0, "ruta")
+ e_ruta.Enabled = False
+ 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
+
+Sub BUSCA_Click
+ Subs.iniciaActividad("TicketsDia")
+End Sub
+
+Sub b_mapa_Click
+ Subs.iniciaActividad("mapas")
+End Sub
+
+Sub e_ruta_EnterPressed
+ Private adelanteFinDia As Boolean = True
+ c=Starter.skmt.ExecQuery("select CAT_VA_VALOR from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'FINDIA_FECHA'") 'Buscamos "FIN DIA" anterior
+ If c.RowCount > 0 Then
+ c.Position = 0
+ If Not(c.GetString("CAT_VA_VALOR") < Starter.FECHA_HOY) Then 'Si el "FIN DIA" guardado NO es de ayer o anterior ...
+ adelanteFinDia = False
+ End If
+ c.Close
+ End If
+' If e_ruta.Text = "VALIDA" Then
+' c=Starter.skmt.ExecQuery("SELECT PC_CLIENTE, PC_ENTREGA FROM PEDIDOS_DOE_ENTREGA")
+' Msgbox("PASA","1")
+' If c.RowCount>0 Then
+' Msgbox("PASA 2","1")
+' For i=0 To c.RowCount -1
+' c.Position=i
+' Dim cmd As DBCommand
+' cmd.Initialize
+' cmd.Name = "UPDATE_PEDIDOS_DOE_ENTREGA"
+' cmd.Parameters = Array As Object(C.GetString("PC_CLIENTE"),C.GetString("PC_ENTREGA"), ALMACEN, l_ruta.Text)
+' Log("ALO " & C.GetString("PC_CLIENTE")& "|" & C.GetString("PC_ENTREGA") & "|" & ALMACEN & "|" & l_ruta.Text )
+'
+' reqManager.ExecuteCommand(cmd , "INSERT_PEDIDOS_DOE_ENTREGA")
+' PB2.Progress = PB2.Progress + 1
+' contador_env = contador_env + 1
+' Next
+' c.Close
+' End If
+' End If
+
+ If e_ruta.Text = "FIN DIA" And adelanteFinDia Then
+ res = Msgbox2("Seguro que desea hacer el cierre? ... todos los datos se borraran","Cierre", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore
+ If res = DialogResponse.POSITIVE Then
+ e_ruta.Text = ""
+ Starter.skmt.ExecNonQuery("delete from pedido_cliente")
+ Starter.skmt.ExecNonQuery("delete from pedido")
+ Starter.skmt.ExecNonQuery("delete from noventa")
+ Starter.skmt.ExecNonQuery("delete from clie_act")
+ Starter.skmt.ExecNonQuery("delete from kmt_info")
+ Starter.skmt.ExecNonQuery("delete from cat_gunaprod")
+ Starter.skmt.ExecNonQuery("delete from cat_gunaprod2")
+ Starter.skmt.ExecNonQuery("delete from CAT_DETALLES_PAQ")
+ Starter.skmt.ExecNonQuery("delete from HIST_VENTAS")
+ Starter.skmt.ExecNonQuery("delete from HIST_VERIFICACION")
+ Starter.skmt.ExecNonQuery("delete from TMP_INSPECCION_AUTO_DIARIA")
+ Starter.skmt.ExecNonQuery("delete from CAT_FOTOS")
+ Starter.skmt.ExecNonQuery("delete from HIST_GPS")
+ Starter.skmt.ExecNonQuery("DELETE FROM HIST_ENCUESTA")
+ Starter.skmt.ExecNonQuery("DELETE FROM HIST_ENVIOS")
+ Starter.skmt.ExecNonQuery("DELETE FROM CLIENTE_IMPRESO")
+ 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 CAT_RMI")
+ Starter.skmt.ExecNonQuery("delete from CAT_DEV")
+
+ 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"))
+ Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("NUMERO_PEDIDO",0))
+ Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("FINDIA_FECHA"))
+ Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES (CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object("FINDIA_FECHA", Starter.FECHA_HOY))
+ If File.Exists(File.DirInternal,"FOTO1.jpg") Then File.Delete(File.DirInternal,"FOTO1.jpg")
+ If File.Exists(File.DirInternal,"FOTO2.jpg") Then File.Delete(File.DirInternal,"FOTO2.jpg")
+ If File.Exists(File.DirInternal,"FOTO3.jpg") Then File.Delete(File.DirInternal,"FOTO3.jpg")
+ If File.Exists(File.DirInternal,"FOTO4.jpg") Then File.Delete(File.DirInternal,"FOTO4.jpg")
+ B4XPage_Appear
+ End If
+ Else if e_ruta.Text = "FIN DIA" Then
+ Msgbox("Ya se hizo FIN DIA hoy, solo se puede hacer un FIN DIA cada día, por favor comuniquese con un supervisor.", "LIMITE DIARIO SUPERADO") 'ignore
+ End If
+ If e_ruta.Text = "SUPLENCIA" Then
+ E_RUTA2.Visible = True
+ E_RUTA2.Text = ""
+ L_SUPLENCIA.Visible = True
+ Label4.Visible = True
+ ' ImageView9.Visible = True
+ End If
+End Sub
+
+Sub inv_Click
+ img2.Visible =True
+ EJECUTANDO = 1
+ inve = 1
+ Starter.skmt.ExecNonQuery("delete from cat_gunaprod")
+ Starter.skmt.ExecNonQuery("delete from CAT_DETALLES_PAQ")
+ c=Starter.skmt.ExecQuery("select usuario from usuarioa")
+ c.Position = 0
+ usuario = c.GetString("USUARIO")
+
+ cmd.Initialize
+ cmd.Name = "select_cat_gunaprod_KELL"
+ cmd.Parameters = Array As Object(ALMACEN)
+ reqManager.ExecuteQuery(cmd , 0, "gunaprod")
+
+ cmd.Initialize
+ cmd.Name = "select_cat_paquetes_KELL"
+ cmd.Parameters = Array As Object(ALMACEN)
+ reqManager.ExecuteQuery(cmd , 0, "gunaprodp")
+
+ cmd.Initialize
+ cmd.Name = "select_cat_detallepa_KELL"
+ cmd.Parameters = Array As Object(ALMACEN)
+ reqManager.ExecuteQuery(cmd , 0, "detallepaq")
+
+ cargar.Visible = False
+ Subir.Visible = False
+ connecta.Visible = True
+ inv.Visible = False
+' ToastMessageShow("Se Actualizaran los datos. Este proceso podria tardar hasta un minuto, gracias" , True)
+End Sub
+
+Sub t1_tick
+ cmd.Initialize
+ cmd.Name = "select_cuantos_pedido_KELL"
+ cmd.Parameters = Array As Object(ALMACEN,l_ruta.text)
+ reqManager.ExecuteQuery(cmd , 0, "valida_pedido")
+
+ t3.Initialize("T3", 5000) ' 1000 = 1 second
+ t3.Enabled = True
+ Wait For t3_tick
+'
+' cmd.Initialize
+' cmd.Name = "select_cuantos_noventa_KELL"
+' cmd.Parameters = Array As Object(ALMACEN,l_ruta.text)
+' reqManager.ExecuteQuery(cmd , 0, "valida_noventa")
+'
+' cmd.Initialize
+' cmd.Name = "select_cuantos_pedidoc_KELL"
+' cmd.Parameters = Array As Object(ALMACEN,l_ruta.text)
+' reqManager.ExecuteQuery(cmd , 0, "valida_pedidoc")
+'
+ If PB2.Progress = 0 Then
+ S_CP.Text = "ENVIAR DATOS (K-1)"
+ End If
+ img2.Visible=False
+ t1.Enabled = False
+End Sub
+
+Sub B_OK_PAS_Click
+ If CARGA = "SUBIR" And S_CP.Text = "INFO OK" Then
+ c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("PERFIL"))
+ PERFIL = "0"
+ If c.RowCount > 0 Then
+ c.Position =0
+ PERFIL = c.GetString("CAT_VA_VALOR")
+ End If
+ c.Close
+ c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("NUMERO_PEDIDO"))
+ NUMERO_PEDIDO = "0"
+ If c.RowCount > 0 Then
+ c.Position =0
+ NUMERO_PEDIDO = c.GetString("CAT_VA_VALOR")
+ End If
+ c.Close
+ If PERFIL = "V-ESPECIAL" Then
+ Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("NUMERO_PEDIDO"))
+ Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("NUMERO_PEDIDO",NUMERO_PEDIDO + 1))
+ End If
+ P1.Visible = False
+ trabajar.Visible = True
+ B_PROXIMA.Visible =True
+ NUEVO.Visible =True
+ BUSCA.Visible=True
+ connecta.Visible=True
+ Resumen.Visible= True
+ img2.Visible=False
+ P1.SendToBack
+ Else If CARGA = "SUBIR" And S_CP.Text = "ERROR" Then
+ Msgbox("Tiene que subir de nuevo la información","Atención") 'ignore
+ P1.Visible = False
+ trabajar.Visible = True
+ NUEVO.Visible =True
+ BUSCA.Visible=True
+ connecta.Visible=True
+ Resumen.Visible= True
+ img2.Visible=False
+ P1.SendToBack
+ Else if CARGA = "SUBIR" And S_CP.Text <> "INFO OK" Then
+ res = Msgbox2("Seguro que desea abortar el proceso","Cierre", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore
+ If res = DialogResponse.POSITIVE Then
+ P1.Visible = False
+ trabajar.Visible = True
+ B_PROXIMA.Visible =True
+ NUEVO.Visible =True
+ BUSCA.Visible=True
+ connecta.Visible=True
+ Resumen.Visible= True
+ img2.Visible=False
+' ExitApplication
+ P1.SendToBack
+ End If
+ End If
+
+ If CARGA = "CARGAR" And S_CP.Text = "LISTO" And S_CC.Text = "LISTO" And S_CH.Text = "LISTO" Then
+ c=Starter.skmt.ExecQUERY("SELECT COUNT(*) AS CUANTOS FROM PEDIDO_DOE WHERE PE_CLIENTE <> 0")
+ c.Position = 0
+ cuantos_pedidosc = c.GetString("CUANTOS")
+ c.Close
+ If cuantos_pedidosc > 0 Then
+ c=Starter.skmt.ExecQUERY("SELECT PE_PROID, SUM(PE_CANT) AS PE_CANT FROM PEDIDO_DOE WHERE PE_CLIENTE <> 0 GROUP BY PE_PROID")
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Starter.skmt.ExecNonQuery2("update CAT_GUNAPROD2 set CAT_GP_ALMACEN = CAT_GP_ALMACEN - ? where CAT_GP_ID = ? ", Array As Object(c.GetString("PE_CANT"),c.GetString("PE_PROID")))
+ Next
+ End If
+ End If
+ c=Starter.skmt.ExecQuery("select COUNT(DISTINCT(PE_CLIENTE)) AS CLIENTES from PEDIDO_DOE ")
+ c.Position = 0
+ If c.GetString("CLIENTES") >0 Then Msgbox("AVISO TIENES "& c.GetString("CLIENTES") & " PEDIDOS DON TOÑO PARA ENTREGAR"," PEDIDOS DON TOÑO")
+ c.Close
+ P1.Visible = False
+ trabajar.Visible = True
+ B_PROXIMA.Visible =True
+ NUEVO.Visible =True
+ BUSCA.Visible=True
+ connecta.Visible=True
+ Resumen.Visible= True
+ img2.Visible=False
+ P1.SendToBack
+ ELSE IF CARGA = "CARGAR" Then
+ S_CP.Text = "LISTO"
+ S_CC.Text = "LISTO"
+ S_CH.Text = "LISTO"
+
+ Else if CARGA = "CARGAR" And (S_CP.Text <> "LISTO" Or S_CC.Text <> "LISTO" Or S_CH.Text <> "LISTO") Then
+ res = Msgbox2("Seguro que desea abortar el proceso","Cierre", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore
+ If res = DialogResponse.POSITIVE Then
+ P1.Visible = False
+ trabajar.Visible = True
+ B_PROXIMA.Visible =True
+ NUEVO.Visible =True
+ BUSCA.Visible=True
+ connecta.Visible=True
+ Resumen.Visible= True
+ img2.Visible=False
+ Starter.skmt.ExecNonQuery("delete from kmt_info")
+ If logger Then Log("Borramos KMT_INFO")
+ Starter.skmt.ExecNonQuery("delete from cod_result")
+ Starter.skmt.ExecNonQuery("delete from hist_gest")
+ Starter.skmt.ExecNonQuery("delete from cat_gunaprod")
+ Starter.skmt.ExecNonQuery("delete from CAT_DETALLES_PAQ")
+ Starter.skmt.ExecNonQuery("delete from telefonos")
+ Starter.skmt.ExecNonQuery("delete from HIST_VENTAS")
+ Starter.skmt.ExecNonQuery("delete from HIST_PROMOS")
+ Starter.skmt.ExecNonQuery("delete from HIST_CLIENTE_CANT_PROMOS")
+ Starter.skmt.ExecNonQuery("delete from PROMOS_COMP")
+ Starter.skmt.ExecNonQuery("delete from CAT_VERIFICACION")
+ Starter.skmt.ExecNonQuery("delete from HIST_CUOTAS")
+ P1.SendToBack
+ ExitApplication
+ End If
+ End If
+' P1.SendToBack 'Mod por CHV - 211213 - Se movio el sendToBack a los diferentes if/then porque no en todos los casos hay que ocultar el panel (Por ejemplo cuando se selecciona "No Abortar")
+End Sub
+
+Sub NUEVO_Click
+ If l_ruta.Text = 0 Then
+ Msgbox("No se ha cargado ruta","Alerta") 'ignore
+ Else
+
+ c=Starter.skmt.ExecQuery2("select count(*) AS COUNT from kmt_info where CAT_CL_CODIGO like ?", Array As String ("N%"))
+ c.Position = 0
+ If c.GetString("COUNT") > 2000 Then
+ MsgboxAsync("YA NO SE PUEDEN CREAR MAS CLIENTES","AVISO")
+ Else
+ Subs.iniciaActividad("nuevocliente")
+
+ End If
+
+
+ End If
+End Sub
+
+Sub B_OK_RES_Click
+ trabajar.Visible = True
+ B_PROXIMA.Visible =True
+ NUEVO.Visible =True
+ BUSCA.Visible=True
+ connecta.Visible=True
+ Resumen.Visible= True
+ P_RESUMEN.Visible=False
+End Sub
+
+Sub Resumen_Click
+ P_RESUMEN.Visible = True
+ P_RESUMEN.BringToFront
+ trabajar.Visible = False
+ B_PROXIMA.Visible =False
+ NUEVO.Visible =False
+ BUSCA.Visible=False
+ connecta.Visible=False
+ Subir.Visible=False
+ cargar.Visible=False
+ Resumen.Visible= False
+ DateTime.DateFormat = "MM/dd/yyyy"
+ fecha=DateTime.Date(DateTime.Now)
+ Starter.skmt.ExecNonQuery2("update PEDIDO set PE_TIPO = ? where PE_CLIENTE =?", Array As Object("ABORDO", "0"))
+ b=Starter.skmt.ExecQuery("Select count(*) as CUANTOS from pedido_cliente where pc_cliente <> 0")
+ b.Position=0
+ Cuantos = b.GetString("CUANTOS")
+' ToastMessageShow(Cuantos , True)
+ d=Starter.skmt.ExecQuery2("select count(*) as TOTAL_VISITAR from kmt_info where gestion = 0 and cat_cl_codigo <> 0 AND CAT_CL_DIAS_VISITA = (SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?)", Array As String("DIA_VISITA"))
+ D.Position=0
+ b.Close
+ e=Starter.skmt.ExecQuery2("select count(*) as POR_VISITAR from kmt_info where cat_cl_codigo <> 0 and CAT_CL_DIAS_VISITA = (SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?) ", Array As String("DIA_VISITA"))
+ e.Position=0
+ f=Starter.skmt.ExecQuery("select count(*) as CAT_CL_RUTA from kmt_info where cat_cl_codigo <> 0")
+ f.Position=0
+ l_ruta.Text = f.GetString("CAT_CL_RUTA")
+ f.Close
+ If l_ruta.Text = 0 Then
+ l_ruta.Text =0
+ Else
+ f=Starter.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info")
+ f.Position=0
+ l_ruta.Text = f.GetString("CAT_CL_RUTA")
+ f.Close
+ End If
+ If Cuantos = 0 Then
+ L_MONTOD.Text =0
+ l_cuantosc.Text = 0
+ l_cuantosn.Text = 0
+ drop = 0
+ l_drop.Text = 0
+ efectiva = 0
+ l_efectiva.text =0
+ l_ctast.Text = d.GetString("TOTAL_VISITAR")
+ 'l_porvisitar.Text = e.GetString("POR_VISITAR")
+ d.Close
+ e.Close
+ l_monto_kp.Text = "0"
+ l_monto_k.Text = "0"
+ l_monto_ks.Text = "0"
+ Else
+ ' aqui poner lo de efectividad de doe y la cantidad de doe para enviar a tiempo real
+ Dim TOTAL_DOE_BB As String
+ Dim TOTAL_EFE_DOE As String
+ Dim TOTAL_ENTREGA_DOE As String
+
+
+ C_DOE = Starter.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS FROM PEDIDO_DOE")
+ C_DOE.Position = 0
+ If C_DOE.GetString("CUANTOS") > 0 Then
+ F_DOE = Starter.skmt.ExecQuery("SELECT SUM(PE_COSTO_TOT) AS TOTAL FROM PEDIDO_DOE")
+ F_DOE.Position = 0
+ TOTAL_DOE_BB = F_DOE.GetString("TOTAL")
+ F_DOE.Close
+ D_DOE=Starter.skmt.ExecQuery2("select sum(PE_COSTO_TOT) as DOE from pedido where PE_CEDIS = ? ", Array As String("PROMODOE"))
+ D_DOE.Position = 0
+ TOTAL_ENTREGA_DOE = D_DOE.GetString("DOE")
+ D_DOE.Close
+
+
+ End If
+
+ '' fin de esto modificar lo anterior
+ c=Starter.skmt.ExecQuery2("select sum(pe_cant) as CAMBIOS from pedido where substr(pe_pronombre,1,6) = ?", Array As String("CAMBIO"))
+ c.Position = 0
+ l_cambios.Text = c.GetString("CAMBIOS")
+ c.Close
+ c=Starter.skmt.ExecQuery2("Select sum(PE_COSTO_TOT) As MONTO_DIA from pedido where PE_CLIENTE <> 0 and pe_proid in (Select CAT_GP_ID from cat_gunaprod2 where CAT_GP_TIPO = ? )", Array As String("RTEC"))
+ c.Position = 0
+ l_monto_k.Text = c.GetString("MONTO_DIA")
+ If l_monto_k.Text = "null" Then
+ l_monto_k.Text = "0"
+ End If
+ c.Close
+ c=Starter.skmt.ExecQuery2("Select sum(PE_COSTO_TOT) As MONTO_DIA from pedido where PE_CLIENTE <> 0 and pe_proid in (Select CAT_GP_ID from cat_gunaprod2 where CAT_GP_TIPO = ? )", Array As String("PING"))
+ c.Position = 0
+ l_monto_kp.Text = c.GetString("MONTO_DIA")
+ If l_monto_kp.Text = "null" Then
+ l_monto_kp.Text = "0"
+ End If
+ c.Close
+ c=Starter.skmt.ExecQuery2("Select sum(PE_COSTO_TOT) As MONTO_DIA from pedido where PE_CLIENTE <> 0 and pe_proid in (Select CAT_GP_ID from cat_gunaprod2 where CAT_GP_TIPO = ? )", Array As String("SALTY SNACKS"))
+ c.Position = 0
+ l_monto_ks.Text = c.GetString("MONTO_DIA")
+ If l_monto_ks.Text = "null" Then
+ l_monto_ks.Text = "0"
+ End If
+ c.Close
+ DDD=Starter.skmt.ExecQuery("Select COUNT(*) AS CUANTOS from HIST_CUOTAS ")
+ DDD.Position = 0
+ If DDD.GetString("CUANTOS") > 0 Then
+ c=Starter.skmt.ExecQuery("Select HC_CUOTA1,HC_CUOTA2,HC_CUOTA3 from HIST_CUOTAS ")
+ c.Position = 0
+ l_monto_c1.Text = Round( c.GetString("HC_CUOTA1") / 6)
+ l_monto_c2.Text = Round(c.GetString("HC_CUOTA2") / 6)
+ l_monto_c3.Text = Round(c.GetString("HC_CUOTA3") / 6)
+ c.Close
+ Else
+ l_monto_c1.Text = 2000
+ l_monto_c2.Text = 2000
+ l_monto_c3.Text = 2000
+ End If
+ DDD.Close
+ c=Starter.skmt.ExecQuery("select sum(pc_monto) as MONTO_DIA, count(pc_cliente) AS CLIENTES_DIA from pedido_cliente where pc_cliente <> 0")
+ b=Starter.skmt.ExecQuery("select count(*) as CUANTOS from noventa")
+ 'where pc_fecha = ?", Array As String(fecha)
+ C.Position=0
+ b.Position=0
+
+ L_MONTOD.Text = c.GetString("MONTO_DIA")
+ l_cuantosc.Text = c.GetString("CLIENTES_DIA")
+ l_cuantosn.Text = b.GetString("CUANTOS")
+ efectiva = c.GetString("CLIENTES_DIA") / e.GetString("POR_VISITAR")
+ l_efectiva.text = Round2(efectiva*100,2)
+ l_ctast.Text = d.GetString("TOTAL_VISITAR")
+ 'l_porvisitar.Text = e.GetString("POR_VISITAR")
+ L_CUANTOST.Text = l_cuantosc.Text + l_cuantosn.Text
+
+ drop = (c.GetString("CLIENTES_DIA") + b.GetString("CUANTOS"))/ Starter.clientesTotal 'd.GetString("TOTAL_VISITAR")
+
+ l_drop.Text = Round(drop * 100)
+ If l_drop.Text + l_efectiva.Text < 100 Then
+ ImageView3.Bitmap = LoadBitmap(File.DirAssets, "tache_rojo.png")
+ Else If l_drop.Text + l_efectiva.Text > = 100 And l_drop.Text + l_efectiva.Text < 130 Then
+ ImageView3.bitmap = LoadBitmap(File.DirAssets, "alerta_amarilla.png")
+ Else
+ ImageView3.Bitmap = LoadBitmap(File.DirAssets, "palomita_verde.png")
+ End If
+ L_TICKPROM.Text = Round2((c.GetString("MONTO_DIA") / c.GetString("CLIENTES_DIA")),2)
+ If c.GetString("MONTO_DIA") < 2500 Then
+ ImageView5.Bitmap = LoadBitmap(File.DirAssets, "tache_rojo.png")
+ Else if c.GetString("MONTO_DIA") > = 2500 And c.GetString("MONTO_DIA") < 4000 Then
+ ImageView5.bitmap = LoadBitmap(File.DirAssets, "alerta_amarilla.png")
+ Else
+ ImageView5.Bitmap = LoadBitmap(File.DirAssets, "palomita_verde.png")
+ End If
+ c.Close
+ b.Close
+ End If
+ b=Starter.skmt.ExecQuery("Select count(*) as CUANTOS from pedido where pe_cliente = 0")
+ b.Position=0
+ Cuantos = b.GetString("CUANTOS")
+ If Cuantos > 0 Then
+ c=Starter.skmt.ExecQuery("Select sum(PE_COSTO_TOT) AS TOTAL from pedido where pe_cliente = 0")
+ c.Position = 0
+ L_ABORDO.Text = c.GetString("TOTAL")
+ c.Close
+ End If
+End Sub
+
+Sub B_PROXIMA_Click
+ Starter.skmt.ExecNonQuery("delete from CUENTAA")
+ Starter.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object("0"))
+ Starter.tipov = "ABORDO"
+ B4XPages.ShowPage("Productos")
+End Sub
+
+Sub Printer_Connected (Success As Boolean)
+ If Success Then
+ B_IMP.Enabled = True
+ PASA_IMP = "1"
+ Else
+ B_IMP.Enabled = False
+ If Msgbox2("", "Printer Error","Reprint","Cancel","",Null) = DialogResponse.POSITIVE Then 'ignore
+ StartPrinter
+ End If
+ End If
+End Sub
+
+Sub StartPrinter
+ Dim PairedDevices As Map
+ Dim L As List
+ Dim resimp As Int
+ ToastMessageShow("Printing.....",True)
+ PairedDevices.Initialize
+ Try
+ PairedDevices = cmp20.GetPairedDevices
+ Catch
+ Msgbox("Getting Paired Devices","Printer Error") 'ignore
+ printer.Close
+ cmp20.Disconnect
+ End Try
+ If PairedDevices.Size = 0 Then
+ Msgbox("Error Connecting to Printer - Printer Not Found","") 'ignore
+ Return
+ End If
+ If PairedDevices.Size = 1 Then
+ Try
+ cmp20.ConnectInsecure(Starter.btAdmin,PairedDevices.Get(PairedDevices.GetKeyAt(0)),1)
+ Catch
+ Msgbox("Connecting","Printer Error") 'ignore
+ printer.Close
+ cmp20.Disconnect
+ End Try
+ Else
+ L.Initialize
+ For i = 0 To PairedDevices.Size - 1
+ L.Add(PairedDevices.GetKeyAt(i))
+ Next
+ resimp = InputList(L, "Choose device", -1) 'ignore
+ If resimp <> DialogResponse.CANCEL Then
+ cmp20.Connect(PairedDevices.Get(L.Get(resimp)))
+ End If
+ End If
+End Sub
+
+' BOLETA
+Sub B_BOLETA_Click
+ GetResult
+End Sub
+
+Sub GetResult
+ Starter.boleta = 1
+ B4XPages.MainPage.cliente.muestraBoleta = True
+ B4XPages.MainPage.cliente.LLAMA_BOLETA
+ Subs.iniciaActividad("cliente")
+' CallSubDelayed(B4XPages.GetPage("Cliente"), "LLAMA_BOLETA")
+End Sub
+
+Sub B_MAPA_RUTA_Click
+ Subs.iniciaActividad2("MAPA_RUTAS")
+End Sub
+
+Sub b_cuotas_Click
+ DDD=Starter.skmt.ExecQuery("Select COUNT(*) AS CUANTOS from HIST_CUOTAS ")
+ DDD.Position = 0
+ If DDD.GetString("CUANTOS") > 0 Then
+ c=Starter.skmt.ExecQuery("Select HC_CUOTA1,HC_CUOTA2,HC_CUOTA3,HC_CUOTA4,HC_CUOTA5,HC_CUOTA6,HC_META1,HC_META2,HC_META3,HC_META4,HC_META5,HC_META6 from HIST_CUOTAS ")
+ c.Position= 0
+ L_CUOTA1.TEXT = c.GetString("HC_CUOTA1")
+ L_CUOTA2.TEXT = c.GetString("HC_CUOTA2")
+ L_CUOTA3.TEXT = c.GetString("HC_CUOTA3")
+ L_CUOTA4.TEXT = c.GetString("HC_CUOTA4")
+ L_CUOTA5.TEXT = c.GetString("HC_CUOTA5")
+ L_CUOTA6.TEXT = c.GetString("HC_CUOTA6")
+ L_META1.Text = c.GetString("HC_META1")
+ L_META2.Text = c.GetString("HC_META2")
+ L_META3.Text = c.GetString("HC_META3")
+ L_META4.Text = c.GetString("HC_META4")
+ L_META5.Text = c.GetString("HC_META5")
+ L_META6.Text = c.GetString("HC_META6")
+ If L_MONTOD.Text > 0 Then
+ L_META1.Text= $"$1.2{(l_monto_k.Text + L_META1.Text)}"$ 'l_monto_k.Text + L_META1.Text
+ L_META2.Text= $"$1.2{(l_monto_kp.Text + L_META2.Text)}"$
+ L_META3.Text= $"$1.2{(l_monto_ks.Text + L_META3.Text)}"$ 'l_monto_ks.Text + L_META3.Text
+ L_META4.Text= $"$1.2{(l_monto_k.Text + L_META4.Text)}"$ ' l_monto_k.Text + L_META4.Text
+ L_META5.Text= $"$1.2{(l_monto_kp.Text + L_META5.Text)}"$ 'l_monto_kp.Text + L_META5.Text
+ L_META6.Text= $"$1.2{(l_monto_ks.Text + L_META6.Text)}"$ 'l_monto_ks.Text + L_META6.Text
+ End If
+ Else
+ L_CUOTA1.TEXT = 0
+ L_CUOTA2.TEXT = 0
+ L_CUOTA3.TEXT = 0
+ L_CUOTA4.TEXT = 0
+ L_CUOTA5.TEXT = 0
+ L_CUOTA6.TEXT = 0
+ L_META1.Text = 0
+ L_META2.Text = 0
+ L_META3.Text = 0
+ L_META4.Text = 0
+ L_META5.Text = 0
+ L_META6.Text = 0
+ End If
+ DDD.Close
+ Panel5.BringToFront
+ Panel5.Visible = True
+ Panel2.Visible = False
+ Panel1.Visible = False
+End Sub
+
+Sub B_CUOATA_C_Click
+ Panel5.Visible = False
+ Panel2.Visible = True
+ Panel1.Visible = True
+End Sub
+
+Sub Btn_CheckList_Click
+ If logger Then Log("Cambiamos a CHECKLIST_AUTO")
+ B4XPages.ShowPage("CheckList")
+' Activity.Finish
+End Sub
+
+Sub Btn_CheckList_LongClick
+' Dim x As Int = "a"
+' StartActivity(errorManager)
+End Sub
+
+Sub SUBIR_INFO_PEDIDO
+ P1.Width = GetDeviceLayoutValues.Width
+ P1.Height = GetDeviceLayoutValues.Height
+ Subs.panelVisible(P1, 0, 0)
+ c=Starter.skmt.ExecQuery2("select count(*) AS CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("PERFIL"))
+ c.Position =0
+ PERFIL = c.GetString("CUANTOS")
+ c.Close
+ If PERFIL > 0 Then
+ c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("PERFIL"))
+ c.Position =0
+ PERFIL = c.GetString("CAT_VA_VALOR")
+ c.Close
+ End If
+ c=Starter.skmt.ExecQuery2("select count(*) AS CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("NUMERO_PEDIDO"))
+ c.Position =0
+ Cuantos = c.GetString("CUANTOS")
+ c.Close
+ If Cuantos > 0 Then
+ c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("NUMERO_PEDIDO"))
+ c.Position =0
+ NUMERO_PEDIDO = c.GetString("CAT_VA_VALOR")
+ c.Close
+ End If
+ Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE not In (select PE_CLIENTE from pedido)")
+ c=Starter.skmt.ExecQuery("select usuario from usuarioa")
+ c.Position = 0
+ usuario = c.GetString("USUARIO")
+ c.Close
+ ' DROP
+ b=Starter.skmt.ExecQuery("Select count(*) as CUANTOS from pedido where pe_cliente = 0")
+ b.Position=0
+ Cuantos = b.GetString("CUANTOS")
+ If Cuantos > 0 Then
+ c=Starter.skmt.ExecQuery("Select sum(PE_COSTO_TOT) AS TOTAL from pedido where pe_cliente = 0")
+ c.Position = 0
+ L_ABORDO.Text = c.GetDouble("TOTAL")
+ c.Close
+ End If
+ Dim PEDIDO_TOT As String
+ b=Starter.skmt.ExecQuery("Select count(*) as CUANTOS from pedido where pe_cliente <> 0")
+ b.Position=0
+ Cuantos = b.GetString("CUANTOS")
+ If Cuantos > 0 Then
+ c=Starter.skmt.ExecQuery("Select sum(PE_COSTO_TOT) AS TOTAL from pedido where pe_cliente <> 0")
+ c.Position = 0
+ PEDIDO_TOT = c.GetDouble("TOTAL")
+ c.Close
+ End If
+ d=Starter.skmt.ExecQuery("SELECT SUM(PE_COSTO_TOT) as MONTO FROM PEDIDO")
+ d.Position = 0
+ Private monto1 As String = d.GetString("MONTO")
+ Private abordo1 As String = L_ABORDO.Text
+ If abordo1 = "" Then abordo1 = "0"
+ monto1 = monto1 - abordo1
+ Dim cmd As DBCommand
+ cmd.Initialize
+ cmd.Name ="insert_drop2_KELL"
+ cmd.Parameters = Array As Object(usuario, l_ruta.Text, fecha, l_porvisitar.Text, l_drop.Text, l_efectiva.Text, l_cuantosc.Text, l_cuantosn.Text, monto1, "ENVIO", ALMACEN, abordo1)
+ reqManager.ExecuteCommand(cmd , "inst_noventa_ins_drop_kell")
+ img2.Visible =True
+ contador_env = contador_env + 1
+ S_CP.Text = "Envio Cabecera"
+ PB2.Progress = 100
+ t3.Initialize("T3", 500) ' 1000 = 1 second
+ t3.Enabled = True
+ Wait For t3_tick
+ Dim cmd As DBCommand
+ cmd.Initialize
+ cmd.Name ="UPDATE_INFO_E_KELL"
+ cmd.Parameters = Array As Object(PEDIDO_TOT, L_ABORDO.Text, d.GetDouble("MONTO"),l_ruta.TEXT, ALMACEN)
+ reqManager.ExecuteCommand(cmd , "inst_noventa_Upd_Info_e_Kell")
+ contador_env = contador_env + 1
+
+' ENCUESTA
+ c=Starter.skmt.ExecQuery("SELECT HE_CLIE, HE_RES, HE_FECHA, HE_TIPO FROM HIST_ENCUESTA")
+ S_CP.Text = "Envio Encuesta"
+ PB2.Progress = 1
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Dim cmd As DBCommand
+ cmd.Initialize
+ cmd.Name = "insert_encuesta_KELL"
+ cmd.Parameters = Array As Object(C.GetString("HE_CLIE"),C.GetString("HE_RES"),C.GetString("HE_FECHA"), c.GetString("HE_TIPO"),l_ruta.Text )
+ If logger Then Log($"${C.GetString("HE_CLIE")},${C.GetString("HE_RES")},${C.GetString("HE_FECHA")}, ${c.GetString("HE_TIPO")},${l_ruta.Text}"$)
+ reqManager.ExecuteCommand(cmd , "inst_noventa_ins_enc_kell_"&i)
+ PB2.Progress = PB2.Progress + 1
+ contador_env = contador_env + 1
+ Next
+ PB2.Progress = 100
+ End If
+ c.Close
+ c=Starter.skmt.ExecQuery("Select HF_FOTO, HF_CUENTA, HF_IDENCUESTA from HIST_FOTOS")
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Dim cmd As DBCommand
+ cmd.Initialize
+ cmd.Name = "insert_encuesta_foto_KELLS"
+ cmd.Parameters = Array As Object(C.GetBLOB("HF_FOTO"),C.GetString("HF_CUENTA"),C.GetString("HF_IDENCUESTA"),l_ruta.Text, ALMACEN, usuario )
+ reqManager.ExecuteCommand(cmd , "inst_noventa_ins_enc_foto_kell")
+ PB2.Progress = PB2.Progress + 1
+ contador_env = contador_env + 1
+ Next
+ End If
+ c.Close
+ t3.Initialize("T3", 500) ' 1000 = 1 second
+ t3.Enabled = True
+ Wait For t3_tick
+ 'clientes nuevos
+ c=Starter.skmt.ExecQuery2("SELECT CAT_CL_CODIGO, CAT_CL_NOMBRE FROM kmt_info where CAT_CL_ATIENDE1 = ?", Array As String("new"))
+ S_CP.Text = "Envio C/Nuevos"
+ PB2.Progress = 1
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Dim cmd As DBCommand
+ cmd.Initialize
+ cmd.Name = "insert_clie_new_KELL"
+ cmd.Parameters = Array As Object(C.GetString("CAT_CL_CODIGO"),C.GetString("CAT_CL_NOMBRE"),l_ruta.Text,ALMACEN )
+ reqManager.ExecuteCommand(cmd , "inst_noventa_ins_clie_new_kell")
+ PB2.Progress = PB2.Progress + 1
+ contador_env = contador_env + 1
+ Next
+ End If
+ c.Close
+ t3.Initialize("T3", 500) ' 1000 = 1 second
+ t3.Enabled = True
+ Wait For t3_tick
+ S_CP.Text = "Envio C/Pedidos"
+ PB2.Progress = 1
+ ' PEDIO_CLIENTE
+ c=Starter.skmt.ExecQuery("SELECT PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT, PC_COSTO_SIN, PC_RUTA, PC_ALMACEN FROM PEDIDO_CLIENTE ")
+ d=Starter.skmt.ExecQuery("SELECT COUNT(*) as CUANTOS_PEDIDOSC FROM PEDIDO_CLIENTE ")
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Dim cmd As DBCommand
+ cmd.Initialize
+ cmd.Name = "insert_pedidos_KELL"
+ cmd.Parameters = Array As Object(C.GetString("PC_CLIENTE"),C.GetString("PC_FECHA"),C.GetString("PC_USER"),C.GetString("PC_NOART"),C.GetString("PC_MONTO"),C.GetString("PC_LON"),C.GetString("PC_LAT"),ALMACEN,l_ruta.text,C.GetString("PC_COSTO_SIN") )
+ reqManager.ExecuteCommand(cmd , "ins_pedidos")
+ PB2.Progress = PB2.Progress + 1
+ contador_env = contador_env + 1
+ Next
+ c.Close
+ End If
+ d.Position=0
+ cuantos_pedidosc = D.GetString("CUANTOS_PEDIDOSC")
+ PB2.Progress = 100
+ d.Close
+ ENVIADA = 0
+ PORENVIAR = 0
+' Msgbox(ENVIADA & " " & PORENVIAR, "A") 'ignore
+ c=Starter.skmt.ExecQuery2("SELECT COUNT(*) as CANTIDAD FROM HIST_ENVIOS WHERE HE_TIPO = ?",Array As String("ABORDO") )
+ c.Position = 0
+ If c.GetString("CANTIDAD") > 0 Then
+ Log($"pe_cedis_0"$)
+ Starter.skmt.ExecNonQuery2("update PEDIDO set PE_CEDIS = ? where PE_CLIENTE =? AND PE_FOLIO IS NULL ", Array As Object("RECARGA", "0"))
+ End If
+ Starter.skmt.ExecNonQuery("UPDATE PEDIDO SET PE_FOLIO = rowid where PE_FOLIO = 0 or PE_FOLIO = 1")
+ If PERFIL = "V-ESPECIAL" Then
+ Log($"pe_cedis_1"$)
+ c=Starter.skmt.ExecQuery("SELECT PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_FECHA, PE_USUARIO, PE_COSTO_SIN, PE_RUTA, PE_DESC, PE_FOLIO, PE_TIPO FROM PEDIDO ORDER BY PE_CLIENTE")
+ d=Starter.skmt.ExecQuery("SELECT COUNT(*) as CUANTOS_PEDIDO FROM PEDIDO")
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount - 1
+ c.Position = i
+ Dim cmd As DBCommand
+ cmd.Initialize
+ cmd.Name = "insert_pedido_esp_KELL"
+ Log($"pe_cedis_2"$)
+ cmd.Parameters = Array As Object(c.GetString("PE_CEDIS"),ALMACEN,C.GetString("PE_COSTO_TOT"),C.GetString("PE_COSTOU"),C.GetString("PE_CANT"),C.GetString("PE_PRONOMBRE"),C.GetString("PE_PROID"),C.GetString("PE_CLIENTE"),C.GetString("PE_FECHA"),C.GetString("PE_USUARIO"),C.GetString("PE_RUTA"), C.GetString("PE_COSTO_SIN"),C.GetString("PE_DESC"),c.GetString("PE_FOLIO"), c.GetString("PE_TIPO"),NUMERO_PEDIDO )
+ reqManager.ExecuteCommand(cmd , "ins_pedido")
+ contador_env = contador_env + 1
+ Next
+ c.Close
+ End If
+ Else
+ Log($"pe_cedis_3"$)
+ c=Starter.skmt.ExecQuery("SELECT PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_FECHA, PE_USUARIO, PE_COSTO_SIN, PE_RUTA, PE_DESC, PE_FOLIO, PE_TIPO FROM PEDIDO")
+ d=Starter.skmt.ExecQuery("SELECT COUNT(*) as CUANTOS_PEDIDO FROM PEDIDO")
+ TIEMPO = 0
+ t3.Initialize("T3", 500) ' 1000 = 1 second
+ t3.Enabled = True
+ Wait For t3_tick
+ S_CP.Text = "Envio de Pedidos"
+ PB2.Progress = 1
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Dim cmd As DBCommand
+ cmd.Initialize
+ cmd.Name = "insert_pedido_KELL"
+ If logger Then Log($"pe_cedis_4"$)
+ cmd.Parameters = Array As Object(c.GetString("PE_CEDIS"),ALMACEN,C.GetString("PE_COSTO_TOT"),C.GetString("PE_COSTOU"),C.GetString("PE_CANT"),C.GetString("PE_PRONOMBRE"),C.GetString("PE_PROID"),C.GetString("PE_CLIENTE"),C.GetString("PE_FECHA"),C.GetString("PE_USUARIO"),C.GetString("PE_RUTA"), C.GetString("PE_COSTO_SIN"),C.GetString("PE_DESC"),c.GetString("PE_FOLIO"), c.GetString("PE_TIPO"))
+ reqManager.ExecuteCommand(cmd , "ins_pedido")
+ contador_env = contador_env + 1
+ TIEMPO = TIEMPO + 1
+ PB2.Progress = PB2.Progress + 1
+ If TIEMPO > 20 Then
+ ' Msgbox("M","A") 'ignore
+ If L_P_2.Text = "Envio de Pedidos" Then
+ L_P_2.Text = "Envio de Pedidos --"
+ else if L_P_2.Text = "Envio de Pedidos --" Then
+ L_P_2.Text = "Envio de Pedidos \"
+ else if L_P_2.Text = "Envio de Pedidos \" Then
+ L_P_2.Text = "Envio de Pedidos |"
+ else if L_P_2.Text = "Envio de Pedidos |" Then
+ L_P_2.Text = "Envio de Pedidos /"
+ else if L_P_2.Text = "Envio de Pedidos /" Then
+ L_P_2.Text = "Envio de Pedidos --"
+ End If
+ t3.Initialize("T3", 2000) ' 1000 = 1 second
+ t3.Enabled = True
+ Wait For t3_tick
+ TIEMPO = 0
+ End If
+ Next
+ c.Close
+ End If
+ End If
+ d.Position=0
+ cuantos_pedido = D.GetString("CUANTOS_PEDIDO")
+ PB2.Progress = 100
+ d.Close
+
+ ' NOVENTA
+ c=Starter.skmt.ExecQuery("SELECT NV_CLIENTE,NV_FECHA,NV_USER,NV_MOTIVO,NV_COMM,NV_LAT,NV_LON FROM NOVENTA")
+ D=Starter.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS_NOVENTA FROM NOVENTA")
+ t3.Initialize("T3", 500) ' 1000 = 1 second
+ t3.Enabled = True
+ Wait For t3_tick
+ S_CP.Text = "Envio No Venta"
+ PB2.Progress = 1
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Dim cmd As DBCommand
+ cmd.Initialize
+ cmd.Name = "insert_noventa_KELL"
+ cmd.Parameters = Array As Object(C.GetString("NV_CLIENTE"),C.GetString("NV_FECHA"),C.GetString("NV_USER"),C.GetString("NV_MOTIVO"),C.GetString("NV_COMM"),C.GetString("NV_LAT"),C.GetString("NV_LON"), ALMACEN, l_ruta.Text)
+ reqManager.ExecuteCommand(cmd , "inst_noventa_ins_noventa_kell")
+ PB2.Progress = PB2.Progress + 1
+ contador_env = contador_env + 1
+ Next
+ c.Close
+ End If
+ d.Position=0
+ cuantos_noventa = D.GetString("CUANTOS_NOVENTA")
+ PB2.Progress = 100
+ d.Close
+
+ ' ENTREGA DOE PEDIDOS_DOE_ENTREGA (PC_CLIENTE, PC_ENTREGA)
+ c=Starter.skmt.ExecQuery("SELECT PC_CLIENTE, PC_ENTREGA FROM PEDIDOS_DOE_ENTREGA")
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Dim cmd As DBCommand
+ cmd.Initialize
+ cmd.Name = "UPDATE_PEDIDOS_DOE_ENTREGA"
+ cmd.Parameters = Array As Object(C.GetString("PC_CLIENTE"),C.GetString("PC_ENTREGA"), ALMACEN, l_ruta.Text)
+ reqManager.ExecuteCommand(cmd , "UPDATE_PEDIDOS_DOE_ENTREGA")
+ PB2.Progress = PB2.Progress + 1
+ contador_env = contador_env + 1
+ Next
+ c.Close
+ End If
+
+ ' CHECK LIST VALIDAR
+ 'Msgbox("antesde de mandar","") 'ignore
+ c=Starter.skmt.ExecQuery("SELECT " & Chr(34) & "TMP_AUTO_RUTA " & Chr(34) & " as TMP_AUTO_RUTA," & Chr(34) & "TMP_AUTO_PLACA" & Chr(34) & " as TMP_AUTO_PLACA," & Chr(34) & "TMP_AUTO_CEDIS " & Chr(34) & " as TMP_AUTO_CEDIS," & Chr(34) & "TMP_AUTO_IDALMACEN" & Chr(34) & " as TMP_AUTO_IDALMACEN," & Chr(34) & "TMP_AUTO_FECHA " & Chr(34) & " as TMP_AUTO_FECHA," & Chr(34) & "TMP_AUTO_KILOMETRAJE" & Chr(34) & " as TMP_AUTO_KILOMETRAJE," & Chr(34) & "TMP_AUTO_COMBUSTIBLE" & Chr(34) & " as TMP_AUTO_COMBUSTIBLE," & Chr(34) & "TMP_AUTO_TABLERO " & Chr(34) & " as TMP_AUTO_TABLERO," & Chr(34) & "TMP_AUTO_CLAXON " & Chr(34) & " as TMP_AUTO_CLAXON," & Chr(34) & "TMP_AUTO_PARABRISAS " & Chr(34) & " as TMP_AUTO_PARABRISAS," & Chr(34) & "TMP_AUTO_CINTURON " & Chr(34) & " as TMP_AUTO_CINTURON," & Chr(34) & "TMP_AUTO_ESPEJOS " & Chr(34) & " as TMP_AUTO_ESPEJOS," & Chr(34) & "TMP_AUTO_LICENCIA " & Chr(34) & " as TMP_AUTO_LICENCIA," & Chr(34) & "TMP_AUTO_LIB_OBJETOSINE " & Chr(34) & " as TMP_AUTO_LIB_OBJETOSINE," & Chr(34) & "TMP_AUTO_LIB_OBJETOTMPERVI " & Chr(34) & " as TMP_AUTO_LIB_OBJETOTMPERVI," & Chr(34) & "TMP_AUTO_ORDEN_HERRA " & Chr(34) & " as TMP_AUTO_ORDEN_HERRA," & Chr(34) & "TMP_AUTO_UNILIMPIA " & Chr(34) & " as TMP_AUTO_UNILIMPIA," & Chr(34) & "TMP_AUTO_LIMPIO " & Chr(34) & " as TMP_AUTO_LIMPIO," & Chr(34) & "TMP_AUTO_BASURA " & Chr(34) & " as TMP_AUTO_BASURA," & Chr(34) & "TMP_AUTO_RESPONSABILIDAD " & Chr(34) & " as TMP_AUTO_RESPONSABILIDAD," & Chr(34) & "TMP_AUTO_AUDITORIA " & Chr(34) & " as TMP_AUTO_AUDITORIA," & Chr(34) & "TMP_AUTO_HABITUAL " & Chr(34) & " as TMP_AUTO_HABITUAL," & Chr(34) & "TMP_AUTO_HERRAMIENTAS " & Chr(34) & " as TMP_AUTO_HERRAMIENTAS," & Chr(34) & "TMP_AUTO_CONOS " & Chr(34) & " as TMP_AUTO_CONOS," & Chr(34) & "TMP_AUTO_EDO_CARROCERIA " & Chr(34) & " as TMP_AUTO_EDO_CARROCERIA," & Chr(34) & "TMP_AUTO_FUN_LUCES " & Chr(34) & " as TMP_AUTO_FUN_LUCES," & Chr(34) & "TMP_AUTO_PLACAS_CIRCU " & Chr(34) & " as TMP_AUTO_PLACAS_CIRCU," & Chr(34) & "TMP_AUTO_COND_LLANTAS " & Chr(34) & " as TMP_AUTO_COND_LLANTAS," & Chr(34) & "TMP_AUTO_ACEITEMOTOR " & Chr(34) & " as TMP_AUTO_ACEITEMOTOR," & Chr(34) & "TMP_AUTO_ACEITEDIREC " & Chr(34) & " as TMP_AUTO_ACEITEDIREC," & Chr(34) & "TMP_AUTO_NVL_REFRIGERANTE " & Chr(34) & " as TMP_AUTO_NVL_REFRIGERANTE," & Chr(34) & "TMP_AUTO_NVL_LIQUIDBRISAS " & Chr(34) & " as TMP_AUTO_NVL_LIQUIDBRISAS," & Chr(34) & "TMP_AUTO_COND_BANMOTOR " & Chr(34) & " as TMP_AUTO_COND_BANMOTOR," & Chr(34) & "TMP_AUTO_FUGASGRAL " & Chr(34) & " as TMP_AUTO_FUGASGRAL," & Chr(34) & "TMP_AUTO_FRENOS " & Chr(34) & " as TMP_AUTO_FRENOS," & Chr(34) & "TMP_AUTO_COMENTARIOS " & Chr(34) & " as TMP_AUTO_COMENTARIOS FROM TMP_INSPECCION_AUTO_DIARIA")
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ If File.Exists(File.DirInternal,"FOTO1.jpg") And File.Exists(File.DirInternal,"FOTO2.jpg") And _
+ File.Exists(File.DirInternal,"FOTO3.jpg") And File.Exists(File.DirInternal,"FOTO4.jpg") Then
+ foto1 = Bit.InputStreamToBytes(File.OpenInput(File.DirInternal,"FOTO1.jpg"))
+ foto2 = Bit.InputStreamToBytes(File.OpenInput(File.DirInternal,"FOTO2.jpg"))
+ foto3 = Bit.InputStreamToBytes(File.OpenInput(File.DirInternal,"FOTO3.jpg"))
+ foto4 = Bit.InputStreamToBytes(File.OpenInput(File.DirInternal,"FOTO4.jpg"))
+ Else
+' Msgbox("No estan completas las fotos.", "FOTOS INCOMPLETAS") 'ignore
+ ToastMessageShow("FOTOS INCOMPLETAS!!", True)
+ End If
+ Dim cmd As DBCommand
+ cmd.Initialize
+ cmd.Name = "INSERT_TMP_INSPECCION_AUTO_DIARIA"
+ cmd.Parameters = Array As Object(C.GetString("TMP_AUTO_RUTA"),C.GetString("TMP_AUTO_PLACA"),C.GetString("TMP_AUTO_CEDIS"),C.GetString("TMP_AUTO_IDALMACEN"),C.GetString("TMP_AUTO_FECHA"),C.GetString("TMP_AUTO_KILOMETRAJE"),C.GetString("TMP_AUTO_COMBUSTIBLE"),C.GetString("TMP_AUTO_TABLERO"),C.GetString("TMP_AUTO_CLAXON"),C.GetString("TMP_AUTO_PARABRISAS"),C.GetString("TMP_AUTO_CINTURON"),C.GetString("TMP_AUTO_ESPEJOS"),C.GetString("TMP_AUTO_LICENCIA"),C.GetString("TMP_AUTO_LIB_OBJETOSINE"),C.GetString("TMP_AUTO_LIB_OBJETOTMPERVI"),C.GetString("TMP_AUTO_ORDEN_HERRA"),C.GetString("TMP_AUTO_UNILIMPIA"),C.GetString("TMP_AUTO_LIMPIO"),C.GetString("TMP_AUTO_BASURA"),C.GetString("TMP_AUTO_RESPONSABILIDAD"),C.GetString("TMP_AUTO_AUDITORIA"),C.GetString("TMP_AUTO_HABITUAL"),C.GetString("TMP_AUTO_HERRAMIENTAS"),C.GetString("TMP_AUTO_CONOS"),C.GetString("TMP_AUTO_EDO_CARROCERIA"),C.GetString("TMP_AUTO_FUN_LUCES"),C.GetString("TMP_AUTO_PLACAS_CIRCU"),C.GetString("TMP_AUTO_COND_LLANTAS"),C.GetString("TMP_AUTO_ACEITEMOTOR"),C.GetString("TMP_AUTO_ACEITEDIREC"),C.GetString("TMP_AUTO_NVL_REFRIGERANTE"),C.GetString("TMP_AUTO_NVL_LIQUIDBRISAS"),C.GetString("TMP_AUTO_COND_BANMOTOR"),C.GetString("TMP_AUTO_FUGASGRAL"),C.GetString("TMP_AUTO_FRENOS"),C.GetString("TMP_AUTO_COMENTARIOS"), foto1, foto2, foto3, foto4)
+ reqManager.ExecuteCommand(cmd , "inst_noventa_ins_tmp_insp_auto")
+ contador_env = contador_env + 1
+ Next
+ c.Close
+ End If
+ t1.Initialize("T1", 20000) ' 1000 = 1 second
+ t1.Enabled = True
+ PORCENTAJE = Round(100/ (cuantos_noventa + cuantos_pedido + cuantos_pedidosc + 1))
+ PORCENTAJE = 1
+
+ DateTime.TimeFormat = "HHmm"
+ sTime=DateTime.Time(DateTime.Now)
+ c=Starter.skmt.ExecQuery2("SELECT HE_CUANTOS, HE_FECHA FROM HIST_ENVIOS WHERE HE_TIPO = ?", Array As String("PEDIDO"))
+ c.Position = 0
+ Starter.skmt.ExecNonQuery2("UPDATE HIST_ENVIOS SET HE_FECHA = ?, HE_CUANTOS = ? WHERE HE_TIPO = ?", Array As Object(sTime,c.GetString("HE_CUANTOS") + 1, "PEDIDO"))
+ c.Close
+ c=Starter.skmt.ExecQuery("SELECT COUNT(*) as CANTIDAD FROM PEDIDO WHERE PE_CLIENTE = 0 ")
+ c.Position = 0
+ PORENVIAR = c.GetString("CANTIDAD")
+ If PORENVIAR > 0 Then
+ Starter.skmt.ExecNonQuery2("delete from HIST_ENVIOS where HE_TIPO = ?", Array As Object ("ABORDO"))
+ Starter.skmt.ExecNonQuery2("INSERT INTO HIST_ENVIOS VALUES (?,1,?)", Array As Object(sTime, "ABORDO"))
+ End If
+' ToastMessageShow("Se Actualizaran los datos. Este proceso podria tardar hasta un minuto, gracias "& l_ruta.text , True)
+ S_CP.Text = "SUBIENDO"
+ DateTime.TimeFormat = "HH:mm:ss"
+End Sub
+
+Sub SUBIR_INFO_BOLETA
+ P1.Width = GetDeviceLayoutValues.Width
+ P1.Height = GetDeviceLayoutValues.Height
+ Subs.panelVisible(P1, 0, 0)
+ Try
+ c=Starter.skmt.ExecQuery("SELECT TMP_BILLE_IDALMACEN,TMP_BILLE_RUTA, TMP_BILLE_FECHA,TMP_BILLE_MIL,TMP_BILLE_QUINIENTOS,TMP_BILLE_DOSCIENTOS,TMP_BILLE_CIEN,TMP_BILLE_CINCUENTA,TMP_BILLE_VEINTE FROM TMP_CAT_BILLETE")
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Dim cmd As DBCommand
+ cmd.Initialize
+ cmd.Name = "insert_boletab_KELL"
+ cmd.Parameters = Array As Object(C.GetString("TMP_BILLE_IDALMACEN"),l_ruta.Text,C.GetString("TMP_BILLE_FECHA"),C.GetString("TMP_BILLE_MIL"),C.GetString("TMP_BILLE_QUINIENTOS"),C.GetString("TMP_BILLE_DOSCIENTOS"),C.GetString("TMP_BILLE_CIEN"),C.GetString("TMP_BILLE_CINCUENTA"),C.GetString("TMP_BILLE_VEINTE"))
+ reqManager.ExecuteCommand(cmd , "ins_boletab")
+ Next
+ c.Close
+ End If
+
+ c=Starter.skmt.ExecQuery("SELECT TMP_MON_RUTA,TMP_MON_IDALMACEN,TMP_MON_FECHA,TMP_MON_VEINTE,TMP_MON_DIEZ,TMP_MON_CINCO,TMP_MON_DOS,TMP_MON_UN,TMP_MON_CENTAVOS FROM TMP_CAT_MONEDAS")
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Dim cmd As DBCommand
+ cmd.Initialize
+ cmd.Name = "insert_boletam_KELL"
+ cmd.Parameters = Array As Object(l_ruta.Text,C.GetString("TMP_MON_IDALMACEN"),C.GetString("TMP_MON_FECHA"),C.GetString("TMP_MON_VEINTE"),C.GetString("TMP_MON_DIEZ"),C.GetString("TMP_MON_CINCO"),C.GetString("TMP_MON_DOS"),C.GetString("TMP_MON_UN"),C.GetString("TMP_MON_CENTAVOS"))
+ reqManager.ExecuteCommand(cmd , "ins_boletam")
+ Next
+ c.Close
+ End If
+
+ S_CP.Text = "Envio Boleta"
+ PB2.Progress = 1
+ contador_env = 2
+ PB2.Progress = 100
+ t3.Initialize("T3", 5000) ' 1000 = 1 second
+ Wait For t3_tick
+ t3.Enabled = True
+ S_CP.Text = "INFO OK"
+ Catch
+' ToastMessageShow("ACTUALIZAR APK BOLETA",0)
+ Log(LastException)
+ End Try
+End Sub
+
+Sub VALIDAR_INFO
+ d=Starter.skmt.ExecQuery("SELECT COUNT(*) as CUANTOS_PEDIDO FROM PEDIDO")
+ d.Position = 0
+ cuantos_pedido = d.GetString("CUANTOS_PEDIDO")
+ d.Close
+ cmd.Initialize
+ cmd.Name = "select_cuantos_pedido_KELL"
+ cmd.Parameters = Array As Object(ALMACEN,l_ruta.text)
+ reqManager.ExecuteQuery(cmd , 0, "valida_pedido1")
+ t3.Initialize("T3", 8000) ' 1000 = 1 second
+ t3.Enabled = True
+ Wait For t3_tick
+End Sub
+
+' ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
+' /////////////////////////////////////////////// PDF CARTA PORTE ///////////////////////////////////////
+' ///////////////////////////////////////////////////////////////////////////////////////////////////////////////
+Private Sub ImageView1_LongClick 'Mostramos la carta porte al hacer clic largo en el logo de Kelloggs
+ Log("Logo clicked")
+ pdf.Initialize("PDFium")
+ PNL_ACCESO.Visible = False
+ Panel7.Visible = False
+ p_pdfViewer.Width = GetDeviceLayoutValues.Width
+ p_pdfViewer.Height = GetDeviceLayoutValues.Height
+ PDFView1.Width = GetDeviceLayoutValues.Width-20
+ p_controles_pdf.Width = GetDeviceLayoutValues.Width-20
+' If Logger Then Log($"pantalla: ${GetDeviceLayoutValues.Width}x${GetDeviceLayoutValues.Height} - panel: ${p_pdfViewer.Width}x${p_pdfViewer.Height}"$)
+ Subs.panelVisible(p_pdfViewer, 0, 0)
+ pdfViewerActivo = True
+' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
+ Dim cfg As Configurator = PDFView1.fromUri(File.DirInternal,"/cartaPorte.pdf")
+ cfg.SetEventname("PDFium")
+ cfg.pageFitPolicy("BOTH").autoSpacing(True).enableSwipe(True).pageSnap(True).swipeHorizontal(False).addOnErrorListener.addOnLoadCompleteListener.addOnPageChangeListener.addOnPageErrorListener.load
+End Sub
+
+'Descarga del servidor el PDF de la carta porte del dia de hoy y la
+'guarda en el almacenamiento externo con el nombre "cartaPorte.pdf"
+Sub descargaCartaPorte
+ Log("Inicia descargaCartaPorte")
+ cartaPorteLista = False
+ 'Generamos el nombre del PDF de la carta porte
+ DateTime.DateFormat = "ddMMyyyy"
+ Private almacenX As String = Starter.almacen
+ Private rutaX As String = Starter.rutapreventa
+ Private cartaPortePDF As String = $"CPORTE${almacenX}_${rutaX}.pdf"$
+' cartaPortePDF = "CPORTE2_100_Prueba.pdf" 'Para pruebas
+' Log(cartaPortePDF)
+ 'Para el servidor
+ Private pdfServer As String = "keymon.lat"
+ If Starter.server.IndexOf("10.0.0.205") > -1 Then pdfServer = "10.0.0.205"
+' Log(pdfServer)
+ pdfURL = $"https://${pdfServer}/CartaPorteKelloggs/CartaPorteMovil${DateTime.Date(DateTime.now)}/${cartaPortePDF}"$
+ LogColor(pdfURL,Colors.Red)
+' Log("Iniciamos wait for descargaCartaPorteyProgreso")
+ Wait For (descargaCartaPorteyProgreso(pdfURL)) Complete (Success As Boolean)
+' Log("Terminamos wait for descargaCartaPorteyProgreso")
+ l_porcentaje.Text = "0%"
+ ProgressBarPDF.Progress = 0
+' Log("Ocultamos panel descarga")
+ Subs.panelOculto(p_downloadPDF)
+End Sub
+
+'Muestra el panel de descarga de la carta porte con barra de progreso
+Sub descargaCartaPorteyProgreso (urlx As String) As ResumableSub
+ Log("Iniciamos descargaCartaPorteyProgreso")
+ If logger Then Log("Mostramos panel descarga")
+ Subs.panelVisible(p_downloadPDF, 0, 0)
+ Subs.centraPanel(p_progress1, Root.Width)
+ Subs.centraEtiqueta(l_downloadPDF, p_progress1.Width)
+ Subs.centraEtiqueta(l_porcentaje, p_progress1.Width)
+ Subs.centraProgressBar(ProgressBarPDF, p_progress1.Width)
+ Dim job_PDF As HttpJob
+ job_PDF.Initialize("job_PDF",Me)
+' job_PDF.GetRequest.Timeout = 120000 ' Timeout a 2 minutos
+ job_PDF.Download(urlx)
+
+ 'Para la barra de progreso
+ ' == TaskIdToJob == necesita que se agregue "HU2_PUBLIC" a "Conditional Symbols" (Project/Build Configurations) (Ctrl+B)
+ Dim TaskToJob As Map = HttpUtils2Service.TaskIdToJob
+ Do While HttpUtils2Service.TaskIdToJob.IsInitialized = False
+ Log("Waiting for HttpUtils2Service to be ready.")
+ Sleep(20)
+ Loop
+ Dim TaskId As Int
+ Do While TaskId = 0
+ For Each id As Int In TaskToJob.Keys
+ If TaskToJob.Get(id) = job_PDF Then
+ TaskId = id
+ Exit
+ End If
+ Next
+ Sleep(10)
+ Loop
+ Dim bx() As Boolean = Array As Boolean(False)
+ Log("Llamamos TrackProgress")
+ TrackProgress(job_PDF, bx, TaskId)
+ '**** Termina barra de progreso
+
+ Log("Iniciamos Wait for JobDone Descarga")
+ Log("Mostramos panel descarga")
+ Subs.panelVisible(p_downloadPDF, 0, 0)
+ Wait for (job_PDF) JobDone (job_PDF As HttpJob)
+' Log("Terminamos Wait for JobDone Descarga ")
+ If job_PDF.Success = False Then Log("Error PDF")
+ If job_PDF.Success = True Then
+ Log("Carta descargada con exito")
+ cartaPorteLista = True
+ ' // Delete existing file
+' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE)
+' Wait For Activity_PermissionResult (Permission As String, Result As Boolean)
+ If File.Exists(File.DirInternal,"cartaPorte.pdf") Then
+' Log("Borramos carta anterior")
+ File.Delete(File.DirInternal,"cartaPorte.pdf")
+ End If
+ ' // Save new file
+ Dim outNewAPK As OutputStream = File.OpenOutput(File.DirInternal,"cartaPorte.pdf", False)
+ File.Copy2(job_PDF.GetInputStream, outNewAPK)
+' Log("Guardamos nueva carta")
+ outNewAPK.Close
+ Log("APK dir: "&File.DirInternal)
+ Log("Carta porte lista")
+ ToastMessageShow("Carta Porte descargada exitosamente!!", False)
+ Else
+ Log("Hubo un error, intente de nuevo")
+ job_PDF.Release
+ Subs.panelOculto(p_downloadPDF)
+ Log("Ruta tipo " & Starter.rutaTipo)
+ If File.Exists(File.DirInternal,"cartaPorte.pdf") And Starter.rutaTipo <> "FORANEA" Then 'Existe, NO es de hoy y NO ES es FORANEA
+ Private mb1 As Int
+ mb1 = Msgbox2("No se pudo descargar la carta porte, por favor intente de nuevo o comuniquese con un supervisor", "Error Carta Porte", "Aceptar", "", "Reintentar", Null) 'ignore
+ If mb1 = DialogResponse.Positive Then
+' Activity.Finish
+' ExitApplication
+ detenerLoop = True
+ B4XPages.ShowPage("Login")
+ ELSE IF mb1 = DialogResponse.NEGATIVE Then
+ descargaCartaPorte
+ ELSE IF mb1 = DialogResponse.CANCEL Then
+ ' VALIDAR_INFO
+ End If
+ Else
+ LogColor("Hay carta porte vieja PERO la ruta es Foranea", Colors.RGB(255,131,0))
+ ToastMessageShow("Hay carta porte de dias anteriores y la ruta es foranea.", True)
+ cartaPorteLista = True
+ End If
+ End If
+ bx(0) = True
+ job_PDF.Release
+' Log("Termina descargaCartaPorteyProgreso")
+ Return job_PDF.Success
+End Sub
+
+'Para visualizar el progreso de la descarga
+Private Sub TrackProgress (j As HttpJob, Stop() As Boolean, TaskId As Int)
+ Do While Stop(0) = False
+ If j.Out.IsInitialized Then
+ Dim TotalLength As Long = j.Response.ContentLength
+ Dim size As Long = File.Size(HttpUtils2Service.TempFolder, TaskId)
+' Log(size & ", " & TotalLength & " | " & ((size/TotalLength)*100))
+ ProgressBarPDF.Progress = (size/TotalLength)*100
+ l_porcentaje.Text = $"$1.0{((size/TotalLength)*100)} %"$
+ End If
+ Sleep(100)
+ Loop
+' Log("TrackProgress - "&size & ", " & TotalLength)
+End Sub
+
+Sub PDFium_loadComplete(pages As Int)
+' Log($"PDFium_loadComplete(${pages})"$)
+ glPages = pages
+ lblPages.Text = $"${glPages}"$
+End Sub
+
+Sub PDFium_onInitiallyRendered(page As Int)
+ Log($"PDFium_onInitiallyRendered(${page})"$)
+End Sub
+
+Sub PDFium_onPageChanged(page As Int, TotalPages As Int)
+' Log($"PDFium_onPageChanged(${page},${TotalPages})"$)
+ lblPages.Text = $"${page+1}/${glPages}"$
+End Sub
+
+Sub PDFium_PageNum(page As Int)
+ Log($"PDFium_PageNum(${page})"$)
+End Sub
+
+Sub PDFium_Show()
+ Log($"PDFium_Show()"$)
+End Sub
+
+Sub btnFirst_Click
+ PDFView1.jumpTo2(0,False)
+End Sub
+
+Sub btnPrev_Click
+ PDFView1.jumpTo2(PDFView1.CurrentPage-1,False)
+End Sub
+
+Sub btnNext_Click
+ PDFView1.jumpTo2(PDFView1.CurrentPage+1,False)
+End Sub
+
+Sub btnLast_Click
+ PDFView1.jumpTo2(glPages-1,False)
+End Sub
+
+Private Sub B_PROXIMA_LongClick
+ '' StartActivity(Starter.ultimaActividad)
+' If Starter.sesion.Get("actividad") <> "" Then
+ '' StartActivity(Starter.sesion.Get("actividad"))
+' Log(Starter.sesion)
+' If Starter.sesion.Size = 1 Then
+' CallSubDelayed(Starter.sesion.Get("actividad"), "activity_resume")
+' else if Starter.sesion.ContainsKey("sub") Then
+' Private esteSub As Map = Starter.sesion.Get("sub")
+ '' If Logger Then Log(esteSub)
+' If esteSub.Size = 1 Then CallSubDelayed(Starter.sesion.Get("actividad"), esteSub.Get("nombre"))
+' If esteSub.Size = 2 Then CallSubDelayed2(Starter.sesion.Get("actividad"), esteSub.Get("nombre"), esteSub.get("param1"))
+' If esteSub.Size = 3 Then CallSubDelayed3(Starter.sesion.Get("actividad"), esteSub.Get("nombre"), esteSub.get("param1"), esteSub.get("param2"))
+' End If
+' End If
+End Sub
+
+Private Sub P1_Click
+ 'Vacio, solo está aquib para capturar el evento de clic y que no se pase hacia el fondo.
+End Sub
+
+Private Sub Resumen_LongClick
+ ToastMessageShow("Enviamos UTR", True)
+ CallSubDelayed(Starter, "ENVIA_ULTIMA_GPS")
+End Sub
\ No newline at end of file
diff --git a/B4A/C_Productos.bas b/B4A/C_Productos.bas
new file mode 100644
index 0000000..8d8f8d3
--- /dev/null
+++ b/B4A/C_Productos.bas
@@ -0,0 +1,1506 @@
+B4A=true
+Group=Default Group
+ModulesStructureVersion=1
+Type=Class
+Version=11.5
+@EndOfDesignText@
+Sub Mods 'ignore
+' Lineas 709 y 1041 para corregir lo del almacen pachuca y rmi's
+End Sub
+
+Sub Class_Globals
+ Private Root As B4XView 'ignore
+ Private xui As XUI 'ignore
+ '// Process Gloals
+ Dim g As GPS
+ Dim ruta As String
+ Dim q_buscar As String
+ '// Globals
+ Dim c As Cursor
+ Dim c2 As Cursor
+ Dim C7 As Cursor
+ Dim ListView1 As ListView
+ Dim entro As String = 0
+ Dim lfila As Label
+ Dim marca As String
+ Dim tipo As String
+ Private BUSCA As EditText
+ Dim ya_entro As String
+ Dim bmp As Bitmap
+ Dim c As Cursor
+ Dim e As Cursor
+ Dim f As Cursor
+ Dim h As Cursor
+ Dim CC As Cursor
+ Dim DD As Cursor
+ Dim l_tipo As Label
+ Dim l_sub As Label
+ Dim l_marca As Label
+ Dim l_desc As Label
+ Dim l_precio As Label
+ Dim l_bodega As Label
+ Dim cantidad As EditText
+ Dim guardar As Button
+ Dim Terminar As Button
+ Dim img_prod As ImageView
+ Dim IMG_PASO() As Byte
+ Dim L_PROID As Label
+ Dim clie_id As String
+ Dim sDate,sTime As String
+ Dim usuario As String
+ Dim lat_gps, lon_gps As String
+ Dim t_venta As Label
+ Dim PROMO_C As String
+ Dim i_fotol As ImageView
+ Private DESC_PROMO As Button
+ Private nopromo As Button
+ Dim TOT_ART_PROMO As String
+ Dim cambio As String
+ Dim COSTO_TOT As String
+ Dim ALMACEN As String
+ Dim preciosin As String
+ Dim cl_ruta As String
+ Dim d As Cursor
+ Dim TOT_ART_PROMOR As String
+ Dim PROMO_CR As String
+ Dim TOTAL_PROMO As String
+ Dim HCCP_CANT As String
+ Private Panel1 As Panel
+ Dim query As String
+ Private t_precio As Label
+ Private LV_PRECIOS As ListView
+ Private PERFIL As String
+ Private EXISTE_CAMBIO As String
+ Private QUERY2 As String
+ Dim CAMBIOS As String
+ Dim precio2 As String
+ Private B_MENOS As Button
+ Private B_MAS As Button
+ Private E_CAMBIO As EditText
+ Private B_MENOSC As Button
+ Private B_MASC As Button
+ Private limite_abordo As String
+ Private limite_anterior As String
+ Private cuenta As String
+ Private limite_actual As String
+ Private l_invact As Label
+ Private L_LINV As Label
+ Private L_CANT As Label
+ Private V_ANT_SALIR As String
+ Private L_CARGA As Label
+ Private DESC_SS As String
+ Private DESC_PING As String
+ Private DESC_RTEC As String
+ Private TIPO_CLIENTE As String
+ Private PROMOS_VENTAS As String
+ Private Label3 As Label
+ Private ImageView4 As ImageView
+ Dim PRECIO_CERO As String
+ Private SI_APLICA_PROMO As String
+ Private PROMO_ESP As String
+ Private TOTAL_PROMO_CLIE As String
+ Private INV_TOTAL_PROMO As String
+ Private YA_IMPRIMIO As String
+ Private HCCP_CANT_E As String
+ Dim lvClic As Map
+ Private TECLA_BACK As String = 0
+ Private lv_producto2 As ListView
+ Private lv_subtipo As ListView
+ Dim logger As Boolean = True
+ Private clv_rmi As CustomListView
+ Private Panel5 As Panel
+ Private l_prodX As Label
+ Private p_prods As Panel
+ Private et_pCant As EditText
+ Private l_pCant As Label
+ Dim r As Cursor
+ Private b_rmi As Button
+End Sub
+
+'You can add more parameters here.
+Public Sub Initialize As Object
+ Return Me
+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
+ Root = Root1
+ 'load the layout to Root
+ Root.LoadLayout("productos")
+ ruta = File.DirInternal
+ Panel1.Visible= False
+ lvClic.Initialize
+ Panel5.Visible = False
+End Sub
+
+'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
+
+Sub B4XPage_Appear
+' If Subs.traeUltimaActividadBD <> "Productos" Then Subs.iniciaActividad(Subs.traeUltimaActividadBD)
+ CARGA_PRODUCTOS
+
+
+ B_MASC.Enabled = True
+ B_MENOSC.Enabled = True
+ E_CAMBIO.Enabled = True
+
+ If Subs.revisaimpreso(Subs.traeCliente) And l_sub.Text = "PROMOS" Then
+ Msgbox ("YA SE IMPRIMIO EL TICKET.", "AVISO") 'ignore
+ Panel1.Visible= False
+ l_bodega.Text = "0"
+ Subs.iniciaActividad("Cliente")
+ l_sub.Text = ""
+ End If
+
+ If l_sub.Text = "PROMOS" Or l_sub.Text = "EXHIBIDOR/POP" Then
+ B_MASC.Enabled = False
+ B_MENOSC.Enabled = False
+ E_CAMBIO.Enabled = False
+ Log("Botones NO activos")
+ Else
+ B_MASC.Enabled = True
+ B_MENOSC.Enabled = True
+ E_CAMBIO.Enabled = True
+ End If
+End Sub
+
+Sub CARGA_PRODUCTOS
+ Terminar.Enabled = True
+ guardar.Enabled = True
+ If Subs.clienteActual <> "0" Then Starter.tipov = "VENTA" Else Starter.tipov = "ABORDO"
+ If logger Then Log(Subs.clienteActual & "|" &Starter.tipov)
+ If logger Then Log("Entro="&entro)
+ If logger Then Log("ya_entro="&ya_entro)
+ If Starter.tipov = "PREVENTA" Then
+ query = "cat_gunaprod"
+ QUERY2 = "COUNT_GUNAPROD"
+ Else IF Starter.tipov = "VENTA" Then
+ query = "cat_gunaprod2"
+ QUERY2= " COUNT_GUNAPROD2"
+ ELSE IF Starter.tipov = "ABORDO" Then
+ query = "cat_gunaprod"
+ QUERY2 = "COUNT_GUNAPROD"
+ Else
+ query = "cat_gunaprod"
+ QUERY2 = "COUNT_GUNAPROD"
+ End If
+ E_CAMBIO.Text = "0"
+ cantidad.Text = "0"
+ If ya_entro <> "1" Then
+ If entro=0 Then entro ="2"
+ ya_entro ="1"
+ Dim label1 As Label
+ label1 = ListView1.TwoLinesLayout.Label
+ label1.TextSize = 14
+ label1.TextColor = Colors.Black
+ Dim label2 As Label
+ label2 = ListView1.TwoLinesLayout.SecondLabel
+ label2.TextSize = 14
+ label2.TextColor = Colors.Black
+ c2=Starter.skmt.ExecQuery("select COUNT(*) AS CUANTOS, CAT_GP_TIPO from " & query & " where CAT_GP_ALMACEN > 0 AND CAT_GP_TIPOPROD <> 1 and (length(CAT_GP_CODPROMO) = 1 OR CAT_GP_CODPROMO = CAT_GP_ID) GROUP BY CAT_GP_TIPO ORDER BY CAT_GP_TIPO ASC")
+ ListView1.Clear
+ lfila.text = "TIPO"
+ lvClic.Put("PASO", "TIPO")
+ If c2.RowCount>0 Then
+ For i=0 To c2.RowCount -1
+ c2.Position=i
+ ListView1.AddTwoLines(c2.GetString("CAT_GP_TIPO"),c2.GetString("CUANTOS"))
+ Next
+ End If
+ entro = "2"
+ Else
+ entro = "3"
+ If logger Then LogColor($"Entro=${entro}"$, Colors.Blue)
+ ListView1_ItemClick(1,V_ANT_SALIR)
+ End If
+ c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("PERFIL"))
+ c.Position =0
+ PERFIL = c.GetString("CAT_VA_VALOR")
+ c.Close
+ If PERFIL = "V-COSTO" Then
+ Starter.skmt.ExecNonQuery("DELETE FROM CAT_GUNAPROD WHERE CAT_GP_ID IN (SELECT CAT_GP_ID FROM LISTA_PRECIOS WHERE NLISTA = '9' AND PRECIO = '0')")
+ End If
+ ListView1.Visible = True
+ If cuenta = "0" Then
+ B4XPages.mainpage.Cliente.CREDITO_DISPONIBLE = 10000000
+ End If
+
+ LogColor(ListView1.Visible,Colors.Red)
+End Sub
+
+Sub ListView1_ItemClick (Position As Int, Value As Object)
+ Log(Value)
+ Private l As List
+ l.Initialize
+ l.Add(Position)
+ l.Add(Value)
+ If lvClic.ContainsKey("ultimo") Then lvClic.Put("anterior", lvClic.get("ultimo"))
+ lvClic.Put("ultimo", l)
+' If Logger Then Log($"lvClic=${lvClic}"$)
+ Private Subrutina As Map =CreateMap("nombre":"ListView1_ItemClick", "param1":Position, "param2":Value)
+ Starter.sesion = CreateMap("actividad":Me, "sub":Subrutina)
+' If Logger Then LogColor($"Entro=${entro}, Value=${Value}"$, Colors.Blue)
+ Log("MARCA=" & l_marca.Text & "|" & entro)
+ B_MASC.Enabled = True
+ B_MENOSC.Enabled = True
+ E_CAMBIO.Enabled = True
+ Log("Botones activos")
+ If Value = "PROMOS" And B4XPages.mainpage.Cliente.cuenta <> "N" Then
+ entro = "3"
+ marca = "PROMOS"
+ tipo = "PROMOS"
+ Log($"MARCA=${marca}, tipo=${tipo}"$)
+ Else if Value = "PROMOS" And B4XPages.mainpage.Cliente.cuenta = "N" Then
+ entro = "5"
+ Subs.iniciaActividad("Cliente")
+ End If
+ If entro = "1" Then
+ marca = Value
+ c2=Starter.skmt.ExecQuery2("select COUNT(*) AS CUANTOS, CAT_GP_TIPO from " & query & " where CAT_GP_ALMACEN > 0 and CAT_GP_CLASIF = ? AND CAT_GP_TIPOPROD <> 1 and (length(CAT_GP_CODPROMO) = 1 OR CAT_GP_CODPROMO = CAT_GP_ID) GROUP BY CAT_GP_TIPO ORDER BY CAT_GP_TIPO ASC", Array As String(Value))
+ ListView1.Clear
+ lfila.text = "TIPO"
+ lvClic = CreateMap("PASO":0, "TIPO":0, "SUB-TIPO":0)
+ lvClic.Put("TIPO", l)
+ lvClic.Put("PASO", lfila.Text)
+ If logger Then Log("lvClic="&lvClic)
+ If c2.RowCount>0 Then
+ For i=0 To c2.RowCount -1
+ c2.Position=i
+ ListView1.AddTwoLines(c2.GetString("CAT_GP_TIPO"),c2.GetString("CUANTOS"))
+ Next
+ End If
+ entro = "3"
+ Else If entro = "2" Then 'Or lvClic.Get("PASO") = "TIPO" Then
+ tipo = Value
+ c2=Starter.skmt.ExecQuery2("select COUNT(*) AS CUANTOS, CAT_GP_SUBTIPO from " & query & " where CAT_GP_ALMACEN > 0 and CAT_GP_TIPO = ? AND CAT_GP_TIPOPROD <> 1 and (length(CAT_GP_CODPROMO) = 1 OR CAT_GP_CODPROMO = CAT_GP_ID) GROUP BY CAT_GP_SUBTIPO ORDER BY CAT_GP_SUBTIPO ASC ", Array As String( Value))
+ ListView1.Clear
+ lfila.text = "SUB-TIPO"
+ lvClic.Put("PASO", lfila.Text)
+ lvClic.Put("SUB-TIPO", l)
+' If Logger Then Log("lvClic="&lvClic)
+ If c2.RowCount>0 Then
+ For i=0 To c2.RowCount -1
+ c2.Position=i
+ ListView1.AddTwoLines(c2.GetString("CAT_GP_SUBTIPO"),c2.GetString("CUANTOS"))
+ Next
+ End If
+ entro = "3"
+' If Logger Then LogColor($"Entro=${entro}, Value=${Value}"$, Colors.Blue)
+ Else If entro = "3" Then
+ Log(tipo)
+ TECLA_BACK = 0
+ If tipo = "PROMOS" Then TECLA_BACK = 1
+' If Logger Then LogColor($"Entro=${entro}, Value=${Value}"$, Colors.Blue)
+ V_ANT_SALIR = Value
+ c2=Starter.skmt.ExecQuery2("select 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) and CAT_GP_ID NOT IN (SELECT PE_PROID FROM PEDIDO WHERE PE_CEDIS = PE_PROID AND pe_cliente in (Select CUENTA from cuentaa)) ", Array As String( tipo, Value))
+ ListView1.Clear
+ lfila.text = "PRODUCTO"
+ lvClic.Put("PASO", lfila.Text)
+ lvClic.Put("PRODUCTO", l)
+' If Logger Then Log("lvClic="&lvClic)
+ Dim ins As InputStream
+ Dim bmp As Bitmap
+ Dim jpeg() As Byte
+ If c2.RowCount>0 Then
+ For i=0 To c2.RowCount -1
+ c2.Position=i
+ jpeg = c2.GetBlob("CAT_GP_IMG")
+ ins.InitializeFromBytesArray(jpeg, 0, jpeg.Length)
+ bmp.Initialize2(ins)
+ ListView1.AddTwoLines(c2.GetString("CAT_GP_NOMBRE"),"# " & c2.GetString("CAT_GP_ALMACEN") & " $ " & c2.GetString("CAT_GP_PRECIO"))
+ Next
+ End If
+ entro = "4"
+' LogColor($"Entro=${entro}, Value=${Value}"$, Colors.Blue)
+ Else If entro = "4" Then
+' If Logger Then LogColor($"Entro=${entro}, Value=${Value}"$, Colors.Blue)
+ Starter.skmt.ExecNonQuery("delete from PROID")
+ Starter.skmt.ExecNonQuery2("INSERT INTO PROID VALUES (?)", Array As Object(Value))
+ Log($"MARCA=${marca}, tipo=${tipo}"$)
+ Log("************* MARCA=" & l_marca.Text & "|" & l_sub.text & "|" & marca & "|" & Value)
+ HACER_PEDIDO
+ If tipo = "PROMOS" Or tipo = "EXHIBIDOR/POP" Then
+ B_MASC.Enabled = False
+ B_MENOSC.Enabled = False
+ E_CAMBIO.Enabled = False
+ Log("Botones NO activos")
+ Else
+ B_MASC.Enabled = True
+ B_MENOSC.Enabled = True
+ E_CAMBIO.Enabled = True
+ End If
+
+
+ End If
+End Sub
+
+Private Sub lv_subtipo_ItemClick (Position As Int, Value As Object)
+
+End Sub
+
+Private Sub lv_producto2_ItemClick (Position As Int, Value As Object)
+
+End Sub
+
+Sub B4XPage_CloseRequest As ResumableSub'ignore
+ ' BACK key pressed
+ Starter.ultima_back_productos = 1
+ If logger Then LogColor("BACK", Colors.Red)
+ If TECLA_BACK = 1 Then entro ="2"
+ If Panel5.Visible Then
+ Panel5.Visible = False
+ Else
+ End If
+ ya_entro ="0"
+
+ If entro = "4" Or entro = "3" Then
+ entro = "2"
+ TECLA_BACK = 1
+ ListView1_ItemClick(1,tipo)
+ Return True
+ Else If entro = "2" Then 'Antes 3
+ 'B4XPage_Appear
+ CARGA_PRODUCTOS
+ Return False
+ Else
+ If logger Then LogColor($"Entro=${entro} - BACK"$, Colors.Blue)
+ Return False
+ End If
+ ' Returning False signals the system to handle the key
+End Sub
+
+Sub BUSCA_TextChanged (Old As String, New As String)
+
+ q_buscar = "%" & BUSCA.Text & "%"
+
+
+ c=Starter.skmt.ExecQuery2("select CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO,CAT_GP_IMG, CAT_GP_TIPO from " & query & " where CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_NOMBRE like ? and CAT_GP_CLASIF <> ? AND CAT_GP_TIPOPROD <> 1 and (length(CAT_GP_CODPROMO) = 1 OR CAT_GP_CODPROMO = CAT_GP_ID) order by CAT_GP_NOMBRE asc", Array As String(q_buscar,"PROMOS"))
+
+ ListView1.Clear
+ Dim ins As InputStream
+ Dim bmp As Bitmap
+ Dim jpeg() As Byte
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ jpeg = c.GetBlob("CAT_GP_IMG")
+ ins.InitializeFromBytesArray(jpeg, 0, jpeg.Length)
+ bmp.Initialize2(ins)
+ tipo = c.GetString("CAT_GP_TIPO")
+ ListView1.AddTwoLines(c.GetString("CAT_GP_NOMBRE"),"Existencia " & c.GetString("CAT_GP_ALMACEN") & " Precio $" & c.GetString("CAT_GP_PRECIO"))
+
+ Next
+ End If
+ entro= "4"
+ c.Close
+End Sub
+
+Sub HACER_PEDIDO
+ ListView1.Visible = False
+ c=Starter.skmt.ExecQuery("Select SUBSTR(CUENTA,1,1) AS CUENTA from cuentaa")
+ c.Position=0
+ clie_id = c.GetString("CUENTA")
+ c.Close
+ c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa")
+' If Logger Then Log("+ + + "&c.RowCount)
+ c.Position=0
+ cuenta = c.GetString("CUENTA")
+ c.Close
+ Panel1.Visible= True
+ cambio = "0"
+ cantidad.Text = "0"
+ c=Starter.skmt.ExecQuery("select ID_ALMACEN from CAT_ALMACEN")
+' If Logger Then Log("+ + + "&c.RowCount)
+ C.Position =0
+ ALMACEN = C.GetString("ID_ALMACEN")
+ C.Close
+ i_fotol.Visible = False
+ c=Starter.skmt.ExecQuery("select 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 from " & query & " where CAT_GP_NOMBRE In (Select PDESC from PROID)")
+ c.Position=0
+ L_PROID.Text = c.GetString("CAT_GP_ID")
+ l_tipo.Text = c.GetString("CAT_GP_TIPO")
+ l_sub.Text = c.GetString("CAT_GP_SUBTIPO")
+ l_marca.Text = c.GetString("CAT_GP_CLASIF")
+ l_desc.Text = c.GetString("CAT_GP_NOMBRE")
+
+
+ If l_sub.Text = "PROMOS" Or l_sub.Text = "EXHIBIDOR/POP" Then
+ B_MASC.Enabled = False
+ B_MENOSC.Enabled = False
+ E_CAMBIO.Enabled = False
+ Log("Botones NO activos")
+ Else
+ B_MASC.Enabled = True
+ B_MENOSC.Enabled = True
+ E_CAMBIO.Enabled = True
+ End If
+
+ If PERFIL = "V-SUPER" Then
+ c2=Starter.skmt.ExecQuery("select PRECIO, NLISTA FROM LISTA_PRECIOS WHERE NLISTA = '10' AND CAT_GP_ID =" & "'" &L_PROID.TEXT&"' ORDER BY NLISTA ASC")
+ If logger Then Log("+ + + "&c.RowCount)
+ c2.Position=0
+ l_precio.Text = c2.GetString("PRECIO")
+ c2.Close
+ Else
+ l_precio.Text = c.GetDouble("CAT_GP_PRECIO")
+ End If
+ l_bodega.Text = c.GetString("CAT_GP_ALMACEN")
+ PROMOS_VENTAS = c.GetString("CAT_GP_ALMACEN")
+ IMG_PASO = c.GetBlob("CAT_GP_IMG")
+ PROMO_C = c.GetString("CAT_GP_STS")
+ cambio = c.GetString("CAT_GP_DEV")
+ preciosin = c.GetString("CAT_GP_IMP2")
+ PROMO_CR = c.GetString("CAT_GP_IMP1")
+ precio2 = l_precio.Text
+ c=Starter.skmt.ExecQuery("select CAT_VA_VALOR from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'LIMITE'")
+' If Logger Then Log("+ + + "&c.RowCount)
+ If c.RowCount > 0 Then
+ C.Position = 0
+ limite_abordo = C.GetString("CAT_VA_VALOR")
+ End If
+ C.Close
+ c=Starter.skmt.ExecQuery2("select sum(cat_gp_precio * cat_gp_almacen) as MONTO from cat_gunaprod2 where cat_gp_almacen > 0 and cat_gp_clasif <> ? ", Array As String("PROMOS"))
+' If Logger Then Log("+ + + "&c.RowCount)
+ c.Position = 0
+ limite_anterior = c.GetString("MONTO")
+ c.Close
+ If clie_id = "0" Then
+ l_invact.Visible=True
+ L_LINV.Visible=True
+ L_CARGA.Visible = True
+ L_CANT.Text ="PEDIDO"
+ c2=Starter.skmt.ExecQuery("select count(*) as CUANTOS from cat_gunaprod2 where CAT_GP_NOMBRE In (Select PDESC from PROID)")
+' If Logger Then Log("+ + + "&c2.RowCount)
+ c2.Position =0
+ If c2.GetString("CUANTOS") > 0 Then
+ c=Starter.skmt.ExecQuery("select CAT_GP_ALMACEN from cat_gunaprod2 where CAT_GP_NOMBRE In (Select PDESC from PROID)")
+ C.Position =0
+ l_invact.text = C.GetString("CAT_GP_ALMACEN")
+ C.Close
+ Else
+ l_invact.text = 0
+ End If
+ Label3.Visible = False
+ ImageView4.Visible = False
+ E_CAMBIO.Visible = False
+ B_MENOSC.Visible = False
+ B_MASC.Visible = False
+ Else
+ l_invact.Visible=False
+ L_LINV.Visible=False
+ L_CARGA.Visible = False
+ L_CANT.Text ="VENTA"
+ Label3.Visible = True
+ ImageView4.Visible = True
+ E_CAMBIO.Visible = True
+ B_MENOSC.Visible = True
+ B_MASC.Visible = True
+ End If
+ DESC_SS = 0
+ DESC_PING = 0
+ DESC_RTEC = 0
+ CC=Starter.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS FROM DESC_CLIENTES WHERE DC_CL_CLIENTE IN (Select cuenta from cuentaa) ")
+' If Logger Then Log("+ + + "&CC.RowCount)
+ CC.Position =0
+ If CC.GetString("CUANTOS") > 0 Then
+ DD=Starter.skmt.ExecQuery("SELECT DC_CL_CLIENTE , CAT_CL_DESCUENTO_SS , CAT_CL_DESCUENTO_RTEC , CAT_CL_DESCUENTO_PING, CAT_CL_TIPOCLIENTE FROM DESC_CLIENTES WHERE DC_CL_CLIENTE IN (Select cuenta from cuentaa) ")
+' If Logger Then Log("+ + + "&DD.RowCount)
+ DD.Position =0
+ DESC_SS = DD.GetString("CAT_CL_DESCUENTO_SS")
+ DESC_RTEC = DD.GetString("CAT_CL_DESCUENTO_RTEC")
+ DESC_PING = DD.GetString("CAT_CL_DESCUENTO_PING")
+ TIPO_CLIENTE = DD.GetString("CAT_CL_TIPOCLIENTE")
+ DD.Close
+ Else
+ DESC_SS = 0
+ DESC_PING = 0
+ DESC_RTEC = 0
+ TIPO_CLIENTE = 0
+ End If
+ CC.Close
+ '' esto es de las promos para activarlas despues
+ If l_marca.text = "PROMOS" And l_tipo.Text ="PROMOS" Then
+ DESC_PROMO.Visible = True
+ CC=Starter.skmt.ExecQuery2("select count(*) as CUANTOS FROM PROMOS_COMP WHERE CAT_PA_ID = ?", Array As String(L_PROID.Text))
+ CC.Position =0
+ If CC.GetString("CUANTOS") = 0 Then
+ l_bodega.Text = "1"
+ Else
+ CC.Close
+ CC=Starter.skmt.ExecQuery2("select CAT_PA_MAXPROM, CAT_PA_MAXPROMREC, CAT_PA_MAXPROMCLIE FROM PROMOS_COMP WHERE CAT_PA_ID = ?", Array As String(L_PROID.Text))
+ CC.Position =0
+
+ DD=Starter.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM HIST_CLIENTE_CANT_PROMOS WHERE HCCP_CLIENTE IN (Select cuenta from cuentaa) AND HCCP_PROMO =?", Array As String(L_PROID.Text))
+ DD.Position =0
+ If DD.GetString("CUANTOS") = 0 Then
+ HCCP_CANT_E = 0
+ Else
+ DD.Close
+ DD=Starter.skmt.ExecQuery2("SELECT HCCP_CANT FROM HIST_CLIENTE_CANT_PROMOS WHERE HCCP_CLIENTE IN (Select cuenta from cuentaa) AND HCCP_PROMO =?", Array As String(L_PROID.Text))
+ DD.Position =0
+ HCCP_CANT_E = DD.GetString("HCCP_CANT")
+ DD.Close
+ End If
+ DD=Starter.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM HIST_VENTAS WHERE HVD_CLIENTE IN (Select cuenta from cuentaa) AND HVD_PRONOMBRE =?", Array As String(l_desc.Text))
+ DD.Position =0
+ If DD.GetString("CUANTOS") = 0 Then
+ HCCP_CANT = 0
+ Else
+ DD.Close
+ DD=Starter.skmt.ExecQuery2("SELECT SUM(HVD_CANT) AS HCCP_CANT FROM HIST_VENTAS WHERE HVD_CLIENTE IN (Select cuenta from cuentaa) AND HVD_PRONOMBRE =?", Array As String(l_desc.Text))
+ DD.Position =0
+ HCCP_CANT = DD.GetString("HCCP_CANT")
+ DD.Close
+ End If
+ HCCP_CANT_E = HCCP_CANT_E - HCCP_CANT
+ TOTAL_PROMO = CC.GetString("CAT_PA_MAXPROMCLIE") - HCCP_CANT
+ If HCCP_CANT = 0 Then
+ PROMOS_VENTAS = CC.GetString("CAT_PA_MAXPROM")
+ Else IF TOTAL_PROMO > CC.GetString("CAT_PA_MAXPROMREC") Then
+ PROMOS_VENTAS = CC.GetString("CAT_PA_MAXPROMREC")
+ Else
+ PROMOS_VENTAS = TOTAL_PROMO
+ End If
+ End If
+ Else
+ DESC_PROMO.Visible = False
+ End If
+ c.Close
+ c=Starter.skmt.ExecQuery("select CASE WHEN pe_costo_tot is null then 0 else sum( pe_costo_tot ) end as TOTAL_CLIE FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
+ c.Position=0
+ t_venta.Text = c.GetString("TOTAL_CLIE")
+ c.Close
+ Terminar.Visible = True
+ guardar.Visible = True
+ cantidad.Visible = True
+ If cambio = "1" Then
+ nopromo.Visible = True
+ Else
+ nopromo.Visible = False
+ End If
+ Dim out As OutputStream
+ out = File.OpenOutput(ruta, "1.jpg", False)
+ out.WriteBytes(IMG_PASO, 0, IMG_PASO.Length)
+ out.Close
+ img_prod.Bitmap = LoadBitmap(ruta,"1.jpg")
+ TOT_ART_PROMO = "0"
+ TOT_ART_PROMOR = "0"
+ If l_marca.text = "PROMOS" And l_tipo.Text ="PROMOS" And l_bodega.Text = "0" Then
+ MsgboxAsync("ALERTA","EL CLIENTE YA NO PUEDE TENER ESTA PROMOCION") 'ignore
+ Panel1.Visible= False
+ End If
+ If marca = "PROMOS" Then
+ DD=Starter.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM PROMOS_COMP WHERE CAT_PA_ID =?", Array As String(L_PROID.Text))
+ DD.Position =0
+ If DD.GetString("CUANTOS") > 0 Then
+ C=Starter.skmt.ExecQuery2("SELECT CAT_PA_MAXPROMCLIE FROM PROMOS_COMP WHERE CAT_PA_ID =?", Array As String(L_PROID.Text))
+ C.Position =0
+ TOTAL_PROMO_CLIE = c.GetString("CAT_PA_MAXPROMCLIE")
+ c.Close
+ Else
+ TOTAL_PROMO_CLIE = 0
+ End If
+ DD.Close
+ Else
+ If TIPO_CLIENTE = "TDCK" Then
+
+ c=Starter.skmt.ExecQuery("select PRECIO, NLISTA FROM LISTA_PRECIOS WHERE NLISTA ='10' AND CAT_GP_ID =" & "'" &L_PROID.TEXT&"' ORDER BY NLISTA ASC")
+ c.Position=0
+ l_precio.Text = c.GetString("PRECIO")
+ c.Close
+ End If
+ End If
+ If l_tipo.Text = "SALTY SNACKS" Then
+ l_precio.Text = Round2(l_precio.Text -(l_precio.Text * DESC_SS/100),2)
+ ELSE IF l_tipo.Text = "PING" Then
+ l_precio.Text = Round2(l_precio.Text - (l_precio.Text * DESC_PING/100),2)
+ ELSE IF l_tipo.Text = "RTEC" Then
+ l_precio.Text = Round2(l_precio.Text - (l_precio.Text * DESC_RTEC/100),2)
+ End If
+
+ If l_marca.text = "PROMOS" And l_tipo.Text ="PROMOS" And l_bodega.Text = "0" Then
+ MsgboxAsync("ALERTA","EL CLIENTE NO PUEDE TENER ESTA PROMOCION") 'ignore
+ Panel1.Visible= False
+ End If
+ DD=Starter.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM HIST_CLIENTE_CANT_PROMOS WHERE HCCP_CLIENTE IN (Select cuenta from cuentaa) AND HCCP_PROMO =?", Array As String(L_PROID.Text))
+ DD.Position =0
+ SI_APLICA_PROMO = DD.GetString("CUANTOS")
+ DD.Close
+ DD=Starter.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM HIST_CLIENTE_CANT_PROMOS WHERE HCCP_PROMO =?", Array As String(L_PROID.Text))
+ DD.Position =0
+ PROMO_ESP = DD.GetString("CUANTOS")
+ DD.Close
+
+
+ If PROMO_ESP > 0 And SI_APLICA_PROMO = 0 Then
+ MsgboxAsync("ALERTA","EL CLIENTE NO PUEDE TENER ESTA PROMOCION 1") 'ignore
+ Panel1.Visible= False
+ End If
+ If L_PROID.Text = "PROMO58" Then
+ l_bodega.Text = 1
+ End If
+ If L_PROID.Text = "PROMO58" And HCCP_CANT_E < 1 Then
+ MsgboxAsync("ALERTA","EL CLIENTE NO PUEDE TENER ESTA PROMOCION <")
+ Panel1.Visible= False
+ End If
+ If HCCP_CANT_E = 0 And ( L_PROID.Text = "1000000001" Or L_PROID.Text = "PROMO243" Or L_PROID.Text = "PROMO244" Or L_PROID.Text = "PROMO245" )Then
+ MsgboxAsync("ALERTA","EL CLIENTE NO PUEDE TENER ESTA PROMOCION 0 " &HCCP_CANT & " "& L_PROID.Text) 'ignore
+ Panel1.Visible= False
+ Else IF L_PROID.Text = "1000000001" Or L_PROID.Text = "PROMO243" Or L_PROID.Text = "PROMO244" Or L_PROID.Text = "PROMO245" Then
+ l_bodega.Text = 1
+ End If
+ If L_PROID.Text = "PROMO76" And HCCP_CANT = 0 Then
+ MsgboxAsync("ALERTA","EL CLIENTE NO PUEDE TENER ESTA PROMOCION 2") 'ignore
+ Panel1.Visible= False
+ Else IF L_PROID.Text = "PROMO76" Then
+ l_bodega.Text = 1
+ End If
+ C=Starter.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS FROM CAT_DESCUENTOS_SKU WHERE CAT_DS_CLIENTE IN (Select cuenta from cuentaa) AND CAT_DS_PRODID = " & "'" &L_PROID.TEXT&"' ")
+ C.Position =0
+ If c.GetString("CUANTOS") > 0 Then
+ DD=Starter.skmt.ExecQuery("SELECT CAT_DS_PORCENTAJE FROM CAT_DESCUENTOS_SKU WHERE CAT_DS_CLIENTE IN (Select cuenta from cuentaa) AND CAT_DS_PRODID = " & "'" &L_PROID.TEXT&"' ")
+ DD.Position =0
+ l_precio.Text = Round2(l_precio.Text - (l_precio.Text * DD.GetString("CAT_DS_PORCENTAJE")/100),2)
+ End If
+ c.Close
+ '' ESTO ES PARA NO PASAR DE LAS PROMOS ABORDO Y MANDARLAS AL MINIMO INICIO
+ If l_marca.text = "PROMOS" And l_tipo.Text ="PROMOS" Then
+ e=Starter.skmt.ExecQuery2("select count(*) as CUANTOS FROM pedido WHERE PE_PROID = ? AND PE_CLIENTE IN (Select cuenta from cuentaa) ", Array As String(L_PROID.Text))
+ e.Position =0
+ If e.GetString("CUANTOS") = 0 Then
+ l_bodega.Text = PROMOS_VENTAS
+ e=Starter.skmt.ExecQuery2("select count(*) as CUANTOS FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID = ? and cat_dp_tipo = 0", Array As String(L_PROID.Text) )
+ e.Position = 0
+ If e.GetString("CUANTOS") > 0 Then
+ F=Starter.skmt.ExecQuery2("select CAT_DP_IDPROD, sum(CAT_DP_PZAS) as CAT_DP_PZAS FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID = ? and cat_dp_tipo = 0 GROUP BY CAT_DP_IDPROD", Array As String(L_PROID.Text) )
+ 'se coloco el if por la mala promocion.
+ For i=0 To F.RowCount -1
+ F.Position=i
+ c=Starter.skmt.ExecQuery2("select count(*) as CUANTOS from cat_gunaprod2 where CAT_GP_ID = ? and cat_gp_almacen > 0 ", Array As String(f.GetString("CAT_DP_IDPROD")))
+ c.Position=0
+ If c.GetString("CUANTOS") > 0 Then
+ h=Starter.skmt.ExecQuery2("select CAT_GP_NOMBRE, CAT_GP_ALMACEN from cat_gunaprod2 where CAT_GP_ID = ? ", Array As String(f.GetString("CAT_DP_IDPROD")))
+ h.Position=0
+ If TOTAL_PROMO_CLIE > l_bodega.Text Then
+ INV_TOTAL_PROMO = l_bodega.Text
+ Else
+ INV_TOTAL_PROMO = TOTAL_PROMO_CLIE
+ End If
+ If h.GetString("CAT_GP_ALMACEN") < INV_TOTAL_PROMO * f.GetString("CAT_DP_PZAS") Then
+ If h.GetString("CAT_GP_ALMACEN") < f.GetString("CAT_DP_PZAS") Then
+ l_bodega.Text = "0"
+ Else
+ l_bodega.Text = Round(h.GetString("CAT_GP_ALMACEN") / f.GetString("CAT_DP_PZAS"))
+ End If
+ End If
+ h.Close
+ else if c.GetString("CUANTOS") = 0 Then
+ l_bodega.Text = "0"
+ End If
+ c.Close
+ Next
+ f.Close
+ End If
+ e.Close
+ If l_bodega.Text = "0" Then
+ Msgbox ("PROMO LLEGO AL LIMITE PARA ESTE CLIENTE", "AVISO") 'ignore
+ Panel1.Visible= False
+ l_bodega.Text = "0"
+ Subs.iniciaActividad("Cliente")
+ End If
+ Else
+ Msgbox ("YA SE VENDIO LA PROMO.", "AVISO") 'ignore
+ Panel1.Visible= False
+ l_bodega.Text = "0"
+ Subs.iniciaActividad("Cliente")
+ End If
+ End If
+ If l_marca.text = "PROMOS" And B4XPages.MainPage.cliente.YA_IMPRIMIO2 = 1 Then
+ Msgbox ("YA SE IMPRIMIO EL TICKET.", "AVISO") 'ignore
+ Panel1.Visible= False
+ l_bodega.Text = "0"
+ Subs.iniciaActividad("Cliente")
+ l_sub.Text = ""
+ End If
+
+ If l_marca.text = "PROMOS" Then
+ c=Starter.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS FROM CLIENTE_CARGA_DIA WHERE CCD_CUENTA IN (Select CUENTA from cuentaa)")
+ c.Position = 0
+ If c.GetString("CUANTOS") > 0 Then
+ Msgbox ("YA SE IMPRIMIO EL TICKET.", "AVISO") 'ignore
+ Panel1.Visible= False
+ l_bodega.Text = "0"
+ Subs.iniciaActividad("Cliente")
+ l_sub.Text = ""
+ End If
+ c.Close
+ End If
+ If l_marca.text = "PROMOS" Then
+ C7=Starter.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select cuenta from cuentaa) AND PE_PROID = ? ", Array As String(L_PROID.Text))
+ C7.Position=0
+ If C7.GetString("CUANTOS") > 0 Then
+ Msgbox ("YA SE VENDIO LA PROMO.", "AVISO") 'ignore
+ Panel1.Visible= False
+ End If
+ End If
+End Sub
+
+Sub guardar_Click
+ B_MASC.Enabled = True
+ B_MENOSC.Enabled = True
+ E_CAMBIO.Enabled = True
+ guardar.Enabled = False
+ Panel1.Visible=False
+ If cantidad.Text = "" Then
+ cantidad.Text = 0
+ End If
+ limite_actual = t_venta.Text + (cantidad.Text * l_precio.Text)
+ Log($"Limite actual=${limite_actual}"$)
+ If cuenta = "0" Then
+ limite_actual = limite_actual + limite_anterior
+ End If
+ Log($"Limite actual=${limite_actual}"$)
+ If Starter.lat_gps = 0 Or Starter.lat_gps = Null Then
+ Private coords As List = Subs.traeCoordsDeBD
+ Starter.lat_gps = coords.Get(0)
+ Starter.lon_gps = coords.Get(1)
+ End If
+' If Logger Then Log($"cuenta: ${cuenta}, limite_actual:${limite_actual}, limite_abordo:${limite_abordo}"$)
+ If limite_abordo = "" Then limite_abordo = 0 'Mod por CHV - 211213 - Para que si limite_abordo no tiene valor, no nos saque de la app.
+ If cuenta ="0" And limite_actual > limite_abordo And cantidad.Text <> 0 And cantidad.Text <> "" Then
+ Log($"${cuenta},${limite_actual > limite_abordo},${cantidad.text}"$)
+ Msgbox("Excede el limite abordo","limite") 'ignore
+ Else IF (cuenta <> "0" And limite_actual < B4XPages.MainPage.cliente.CREDITO_DISPONIBLE) Or (cuenta ="0" And limite_actual < limite_abordo) Then
+ If E_CAMBIO.Text = "" Or E_CAMBIO.Text = "0" Then
+ Panel1.Visible= False
+ entro = "3"
+ If BUSCA.Text = "" Then
+ ListView1_ItemClick(1,V_ANT_SALIR)
+ Else
+ BUSCA_TextChanged(1, BUSCA.Text)
+ End If
+ Else
+ If E_CAMBIO.Text = "" Then E_CAMBIO.Text = "0"
+ If E_CAMBIO.Text * l_precio.Text > t_venta.Text Then
+ Msgbox("Excede EL MONTO DE LA VENTA", "ADVERTENCIA") 'ignore
+ else if E_CAMBIO.Text + cantidad.Text > l_bodega.Text Then
+ Msgbox("Excede existencia", "ADVERTENCIA") 'ignore
+ Else
+ DateTime.DateFormat = "MM/dd/yyyy"
+ sDate=DateTime.Date(DateTime.Now)
+ sTime=DateTime.Time(DateTime.Now)
+ c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa")
+ c.Position=0
+ clie_id = c.GetString("CUENTA")
+ c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
+ c.Position=0
+ usuario = c.GetString("USUARIO")
+ '' para el rmi con costo se quita el comentado de abajo FL 11-05-2023
+ Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_TIPO,PE_PRECIO2) VALUES(?,?,?,?,?,?,?,?,?,?,?) ", Array As Object ("DUR", E_CAMBIO.text * l_precio.Text * (-1),l_precio.Text, E_CAMBIO.text,"CAMBIO" & l_desc.text, L_PROID.Text,clie_id, sDate & sTime, usuario,Starter.tipov,precio2))
+ '' Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_TIPO,PE_PRECIO2) VALUES(?,?,?,?,?,?,?,?,?,?,?) ", Array As Object ("DUR", 0,0, E_CAMBIO.text,"CAMBIO" & l_desc.text, L_PROID.Text,clie_id, sDate & sTime, usuario,Starter.tipov,precio2))
+
+ 'Starter.skmt.ExecNonQuery2("update " & query & " set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(E_CAMBIO.Text, L_PROID.Text))
+ E_CAMBIO.Text = ""
+ Panel1.Visible= False
+ entro = "3"
+ If BUSCA.Text = "" Then
+ ListView1_ItemClick(1,V_ANT_SALIR)
+ Else
+ BUSCA_TextChanged(1, BUSCA.Text)
+ End If
+ End If
+ End If
+ If cantidad.Text = "" Or cantidad.Text = "0.0" Or cantidad.Text = "0" Then
+ Panel1.Visible= False
+ entro = "3"
+ If BUSCA.Text = "" Then
+ ListView1_ItemClick(1,V_ANT_SALIR)
+ Else
+ BUSCA_TextChanged(1, BUSCA.Text)
+ End If
+ ELSE If cantidad.Text > l_bodega.Text Then
+ Msgbox("Excede la existencia", "ADVERTENCIA") 'ignore
+ Else If l_marca.text = "PROMOS" And l_tipo.Text ="PROMOS" And PROMO_C > 0 And cantidad.Text > 0 Then
+ Starter.skmt.ExecNonQuery("delete from PROIDID")
+ Starter.skmt.ExecNonQuery2("INSERT INTO PROIDID VALUES (?)", Array As Object(L_PROID.text))
+ c=Starter.skmt.ExecQuery("Select count(*) as CUANTOSD from pedido where PE_CLIENTE IN (Select CUENTA from cuentaa) and length(pe_cedis) < 3 and PE_COSTOU > 0 and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID) AND CAT_DP_TIPO = 1)")
+ c.Position =0
+ If c.GetString("CUANTOSD") = 0 Then
+ Msgbox("No tiene venta el cliente para la promo", "ADVERTENCIA") 'ignore
+ Else
+ c=Starter.skmt.ExecQuery("Select sum(pe_cant) As TOT_ART_PROMO, sum(PE_COSTO_TOT) as COSTO_TOT from pedido where PE_CLIENTE IN (Select CUENTA from cuentaa) and length(pe_cedis) < 3 and PE_COSTOU > 0 and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID) AND CAT_DP_TIPO = 1)")
+ C.Position =0
+ TOT_ART_PROMO = C.GetString("TOT_ART_PROMO")
+ COSTO_TOT = C.GetString("COSTO_TOT")
+ C.Close
+ ' se agrego and PE_COSTOU > 0 para que no tome los cambios
+ c=Starter.skmt.ExecQuery("Select count(*) as CUANTOSD from pedido where PE_CLIENTE IN (Select CUENTA from cuentaa) and length(pe_cedis) < 3 and PE_COSTOU > 0 and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID) AND (CAT_DP_PRECIO = 0.01 or CAT_DP_PRECIO = 1 OR CAT_DP_PRECIO = 0) AND CAT_DP_TIPO = 1)")
+ c.Position =0
+ If c.GetString("CUANTOSD") = 0 Then
+ TOT_ART_PROMOR = "0" 'Msgbox("No tiene venta el cliente para la promo", "ADVERTENCIA") 'ignore
+ Else
+ c=Starter.skmt.ExecQuery("Select sum(pe_cant) As TOT_ART_PROMO, sum(PE_COSTO_TOT) as COSTO_TOT from pedido where PE_CLIENTE IN (Select CUENTA from cuentaa) and length(pe_cedis) < 3 and PE_COSTOU > 0 and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID) AND (CAT_DP_PRECIO = 0.01 or CAT_DP_PRECIO = 1 OR CAT_DP_PRECIO = 0) AND CAT_DP_TIPO = 1)")
+ C.Position =0
+ TOT_ART_PROMOR = C.GetString("TOT_ART_PROMO")
+ End If
+ C.Close
+ If PROMO_C = "" Then PROMO_C = "0"
+ PROMO_C = PROMO_C * cantidad.Text
+ If PROMO_CR = "" Then PROMO_CR = "0"
+ PROMO_CR = PROMO_CR * cantidad.Text
+ If TOT_ART_PROMO = PROMO_C And TOT_ART_PROMOR = PROMO_CR Then
+ Starter.skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_CEDIS = (?) WHERE PE_CEDIS and length(pe_cedis) < 3 and PE_CLIENTE IN (Select CUENTA from cuentaa) and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID))", Array As Object(L_PROID.text))
+ D=Starter.skmt.ExecQuery("select CAT_DP_ID, CAT_DP_PRECIO, CAT_DP_PRECIO_SIMPTOS, CAT_DP_IDPROD FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) AND CAT_DP_PRECIO > 1 AND CAT_DP_TIPO = 1") ' MODIFCADO 05/05/2021 PARA QUE NO TOME LOS CAMBIOS
+ If D.RowCount>0 Then
+ For i=0 To D.RowCount -1
+ D.Position=i
+ ' se agrega esta linea para que no tome los cambios
+ Starter.skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_COSTOU = (?), PE_COSTO_TOT = PE_CANT * (?) , PE_COSTO_SIN = (?) WHERE PE_PROID = (?) And PE_CLIENTE IN (Select CUENTA from cuentaa) and length(pe_cedis) < 3 and PE_COSTOU > 0 and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID) AND CAT_DP_TIPO = 1 AND CAT_DP_PRECIO > 1) ",Array As Object( D.GetString("CAT_DP_PRECIO"), D.GetString("CAT_DP_PRECIO"), D.GetString("CAT_DP_PRECIO_SIMPTOS"),D.GetString("CAT_DP_IDPROD")))
+ Next
+ End If
+ D.Close
+ D=Starter.skmt.ExecQuery("select CAT_DP_ID, CAT_DP_PRECIO, CAT_DP_PRECIO_SIMPTOS, CAT_DP_IDPROD FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) AND (CAT_DP_PRECIO = 0.01 or CAT_DP_PRECIO = 1 OR CAT_DP_PRECIO = 0) AND CAT_DP_TIPO = 1")
+ If D.RowCount>0 Then
+ For i=0 To D.RowCount -1
+ D.Position=i
+ Starter.skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_COSTOU = (?), PE_COSTO_TOT = PE_CANT * (?) , PE_COSTO_SIN = (?) WHERE PE_PROID = (?) AND PE_CLIENTE IN (Select CUENTA from cuentaa) and length(pe_cedis) < 3 and PE_COSTOU > 0 and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID) AND CAT_DP_TIPO = 1",Array As Object( D.GetString("CAT_DP_PRECIO"), D.GetString("CAT_DP_PRECIO"), D.GetString("CAT_DP_PRECIO_SIMPTOS"),D.GetString("CAT_DP_IDPROD")))
+ Next
+ End If
+ D.Close
+ DateTime.DateFormat = "MM/dd/yyyy"
+ sDate=DateTime.Date(DateTime.Now)
+ sTime=DateTime.Time(DateTime.Now)
+ c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa")
+ c.Position=0
+ clie_id = c.GetString("CUENTA")
+ c.Close
+ c=Starter.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)")
+ cl_ruta = "0"
+ If c.RowCount > 0 Then
+ c.Position=0
+ cl_ruta = c.GetString("CAT_CL_RUTA")
+ End If
+ c.Close
+ c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
+ usuario = ""
+ If c.RowCount > 0 Then
+ c.Position=0
+ usuario = c.GetString("USUARIO")
+ End If
+ 'para insertar la promo de ades el de regalo en 0
+ e=Starter.skmt.ExecQuery("select count(*) as CUANTOS FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) and CAT_DP_TIPO = 0 ")
+ e.Position =0
+ If e.GetString("CUANTOS") > 0 Then
+ F=Starter.skmt.ExecQuery("select CAT_DP_IDPROD, CAT_DP_PZAS,CAT_DP_PRECIO FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) and CAT_DP_TIPO = 0 ")
+ 'meter el otro
+ If f.RowCount>0 Then
+ For i=0 To f.RowCount -1
+ f.Position=i
+ 'F.Position =0
+ PRECIO_CERO = f.GetString("CAT_DP_PRECIO")
+ h=Starter.skmt.ExecQuery2("select CAT_GP_NOMBRE from CAT_GUNAPROD2 where CAT_GP_ID = ? ", Array As String(f.GetString("CAT_DP_IDPROD")))
+ h.Position=0
+ Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_TIPO,PE_PRECIO2) VALUES(?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (L_PROID.text,PRECIO_CERO * f.GetString("CAT_DP_PZAS") * cantidad.text, PRECIO_CERO, f.GetString("CAT_DP_PZAS") * cantidad.text, h.GetString("CAT_GP_NOMBRE"), f.GetString("CAT_DP_IDPROD"),clie_id, sDate & sTime, usuario,cl_ruta,Starter.tipov,precio2))
+ 'ESTO LO CAMBIE POR QUE NO DESCUENTA EL INVENTARIO ABORDO CON LAS PROMOS
+ Starter.skmt.ExecNonQuery2("update " & query & " set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(f.GetString("CAT_DP_PZAS") * cantidad.text, f.GetString("CAT_DP_IDPROD")))
+ h.Close
+ Next
+ End If
+ f.Close
+ End If
+ e.Close
+ Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_TIPO,PE_PRECIO2) VALUES(?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (L_PROID.text,0, 0, cantidad.text, l_desc.text, L_PROID.Text,clie_id, sDate & sTime, usuario,cl_ruta,Starter.tipov,precio2))
+ Starter.skmt.ExecNonQuery2("update " & query & " set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cantidad.Text, L_PROID.Text))
+ Else
+ Msgbox("Tiene " & TOT_ART_PROMO & " " & TOT_ART_PROMOR & " y necesita " & PROMO_C & " " & PROMO_CR & " Para la Promo. " , "ADVERTENCIA") 'ignore
+ End If
+ End If
+ cantidad.Text = ""
+ Panel1.Visible= False
+ entro = "3"
+ If BUSCA.Text = "" Then
+ ListView1_ItemClick(1,V_ANT_SALIR)
+ Else
+ BUSCA_TextChanged(1, BUSCA.Text)
+ End If
+
+ ''''' PROMOS QUE NO SON VARIABLE
+ else If l_marca.text = "PROMOS" And l_tipo.Text ="PROMOS" And PROMO_C = 0 Then
+ Starter.skmt.ExecNonQuery("delete from PROIDID")
+ Starter.skmt.ExecNonQuery2("INSERT INTO PROIDID VALUES (?)", Array As Object(L_PROID.text))
+ c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa")
+ c.Position=0
+ clie_id = c.GetString("CUENTA")
+ c.Close
+ DateTime.DateFormat = "MM/dd/yyyy"
+ sDate=DateTime.Date(DateTime.Now)
+ sTime=DateTime.Time(DateTime.Now)
+ c=Starter.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)")
+ c.Position=0
+ cl_ruta = c.GetString("CAT_CL_RUTA")
+ c.Close
+ c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
+ c.Position=0
+ usuario = c.GetString("USUARIO")
+ 'para insertar la promo de ades el de regalo en 0
+ e=Starter.skmt.ExecQuery("select count(*) as CUANTOS FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) ")
+ e.Position =0
+ If e.GetString("CUANTOS") > 0 Then
+ F=Starter.skmt.ExecQuery("select CAT_DP_IDPROD, CAT_DP_PZAS, CAT_DP_PRECIO FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID)")
+ For i =0 To f.RowCount -1
+ F.Position =i
+ h=Starter.skmt.ExecQuery2("select CAT_GP_NOMBRE from " & query & " where CAT_GP_ID = ? ", Array As String(f.GetString("CAT_DP_IDPROD")))
+ h.Position=0
+ Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_TIPO,PE_PRECIO2) VALUES(?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (L_PROID.text,f.GetString("CAT_DP_PRECIO") * cantidad.text * f.GetString("CAT_DP_PZAS"), f.GetString("CAT_DP_PRECIO"), f.GetString("CAT_DP_PZAS") * cantidad.text, h.GetString("CAT_GP_NOMBRE"), f.GetString("CAT_DP_IDPROD"),clie_id, sDate & sTime, usuario,cl_ruta,Starter.tipov,precio2))
+ 'ESTO LO CAMBIE POR QUE NO DESCUENTA EL INVENTARIO ABORDO CON LAS PROMOS
+ Starter.skmt.ExecNonQuery2("update " & query & " set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(f.GetString("CAT_DP_PZAS") * cantidad.text, f.GetString("CAT_DP_IDPROD")))
+ h.Close
+ Next
+ f.Close
+ End If
+ e.Close
+ Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_TIPO,PE_PRECIO2) VALUES(?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (L_PROID.text,0, 0, cantidad.text, l_desc.text, L_PROID.Text,clie_id, sDate & sTime, usuario,cl_ruta,Starter.tipov,precio2))
+ Starter.skmt.ExecNonQuery2("update " & query & " set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cantidad.Text, L_PROID.Text))
+ cantidad.Text = ""
+ c=Starter.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, SUM(PE_COSTO_SIN) AS TOTAL_CLIE_SIN FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
+ c.Position=0
+ Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)")
+ If logger Then LogColor($"Insertamos coordenadas en pedido: ${Starter.lon_gps}, ${Starter.lat_gps}"$, Colors.Magenta)
+ Starter.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT,PC_ALMACEN,PC_RUTA,PC_COSTO_SIN) VALUES (?,?,?,?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), Starter.lon_gps, Starter.lat_gps,ALMACEN,cl_ruta,c.GetString("TOTAL_CLIE_SIN")))
+ Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)")
+ Panel1.Visible= False
+ entro = "3"
+ If BUSCA.Text = "" Then
+ ListView1_ItemClick(1,V_ANT_SALIR)
+ Else
+ BUSCA_TextChanged(1, BUSCA.Text)
+ End If
+ Else
+ DateTime.DateFormat = "MM/dd/yyyy"
+ sDate=DateTime.Date(DateTime.Now)
+ sTime=DateTime.Time(DateTime.Now)
+ c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa")
+ c.Position=0
+ clie_id = c.GetString("CUENTA")
+ c.Close
+ c=Starter.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)")
+ c.Position=0
+ cl_ruta = c.GetString("CAT_CL_RUTA")
+ c.Close
+ c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
+ c.Position=0
+ usuario = c.GetString("USUARIO")
+ Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_COSTO_SIN,PE_TIPO,PE_PRECIO2) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (ALMACEN,cantidad.Text * l_precio.Text, l_precio.text, cantidad.text, l_desc.text, L_PROID.Text,clie_id, sDate & sTime, usuario,cl_ruta,preciosin,Starter.tipov,precio2))
+ Starter.skmt.ExecNonQuery2("update " & query & " set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cantidad.Text, L_PROID.Text))
+ c=Starter.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, SUM(PE_COSTO_SIN) AS TOTAL_CLIE_SIN FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
+ c.Position=0
+ Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)")
+ If logger Then LogColor($"Insertamos coordenadas en pedido: ${Starter.lon_gps}, ${Starter.lat_gps}"$, Colors.Magenta)
+ Starter.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT,PC_ALMACEN,PC_RUTA,PC_COSTO_SIN) VALUES (?,?,?,?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), Starter.lon_gps, Starter.lat_gps, ALMACEN,cl_ruta,c.GetString("TOTAL_CLIE_SIN")))
+ Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)")
+ Panel1.Visible= False
+ entro = "3"
+ If BUSCA.Text = "" Then
+ ListView1_ItemClick(1,V_ANT_SALIR)
+ Else
+ BUSCA_TextChanged(1, BUSCA.Text)
+ End If
+ Starter.skmt.ExecNonQuery("delete from pedido3")
+ Starter.skmt.ExecNonQuery("UPDATE PEDIDO SET PE_FOLIO = 0 where PE_FOLIO IS NULL")
+ c=Starter.skmt.ExecQuery("SELECT SUM(PE_FOLIO) AS FOLIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
+ c.Position = 0
+ If c.GetString("FOLIO") <> Null And c.GetString("FOLIO") > 0 Then
+ YA_IMPRIMIO = 1
+ Else
+ YA_IMPRIMIO = 0
+ End If
+ c.Close
+ Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO3 (PE_PRECIO2, PE_TIPO, PE_FECHA, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_USUARIO ) SELECT PE_PRECIO2, PE_TIPO, PE_FECHA, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, SUM(PE_COSTO_TOT) AS PE_COSTO_TOT, PE_COSTOU, SUM(PE_CANT) As PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_USUARIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) GROUP BY PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, PE_COSTOU, PE_PRONOMBRE, PE_PROID, PE_CLIENTE ") 'Mod por CHV - 220302 - Agregué PE_FECHA al select/insert
+ c=Starter.skmt.ExecQuery("select PE_PRECIO2,PE_TIPO,PE_DESC,PE_COSTO_SIN,PE_RUTA,PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE, PE_FECHA,PE_USUARIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Starter.skmt.ExecNonQuery2("UPDATE PEDIDO3 SET PE_FECHA= ? WHERE PE_CLIENTE = ? AND PE_PRONOMBRE = ? AND PE_PROID = ? AND PE_CEDIS = ? ", Array As Object(c.GetString("PE_FECHA"), c.GetString("PE_CLIENTE"),c.GetString("PE_PRONOMBRE"),c.GetString("PE_PROID"),c.GetString("PE_CEDIS")))
+ Next
+ End If
+ c.Close
+ Starter.skmt.ExecNonQuery2("UPDATE PEDIDO3 SET PE_FOLIO = ? WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As Object(YA_IMPRIMIO))
+ Starter.skmt.ExecNonQuery("delete from pedido WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) ")
+ Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO SELECT * FROM PEDIDO3")
+ 'StartActivity(fila)
+ End If
+ Starter.skmt.ExecNonQuery("delete from pedido3")
+ Starter.skmt.ExecNonQuery("UPDATE PEDIDO SET PE_FOLIO = 0 where PE_FOLIO IS NULL")
+ c=Starter.skmt.ExecQuery("SELECT SUM(PE_FOLIO) AS FOLIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
+ c.Position = 0
+ If c.GetString("FOLIO") <> Null And c.GetString("FOLIO") > 0 Then
+ YA_IMPRIMIO = 1
+ Else
+ YA_IMPRIMIO = 0
+ End If
+ c.Close
+ Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO3 (PE_PRECIO2, PE_TIPO, PE_FECHA, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_USUARIO ) SELECT PE_PRECIO2, PE_TIPO, PE_FECHA, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, SUM(PE_COSTO_TOT) AS PE_COSTO_TOT, PE_COSTOU, SUM(PE_CANT) As PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_USUARIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) GROUP BY PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, PE_COSTOU, PE_PRONOMBRE, PE_PROID, PE_CLIENTE ") 'Mod por CHV - 220302 - Agregue PE_FECHA al select/insert
+ c=Starter.skmt.ExecQuery("select PE_PRECIO2,PE_TIPO,PE_DESC,PE_COSTO_SIN,PE_RUTA,PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE, PE_FECHA,PE_USUARIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Starter.skmt.ExecNonQuery2("UPDATE PEDIDO3 SET PE_FECHA= ? WHERE PE_CLIENTE = ? AND PE_PRONOMBRE = ? AND PE_PROID = ? AND PE_CEDIS = ? ", Array As Object(c.GetString("PE_FECHA"), c.GetString("PE_CLIENTE"),c.GetString("PE_PRONOMBRE"),c.GetString("PE_PROID"),c.GetString("PE_CEDIS")))
+ Next
+ End If
+ c.Close
+ Starter.skmt.ExecNonQuery2("UPDATE PEDIDO3 SET PE_FOLIO = ? WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As Object(YA_IMPRIMIO))
+ Starter.skmt.ExecNonQuery("delete from pedido WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) ")
+ Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO SELECT * FROM PEDIDO3")
+ Else
+ Log($"${cuenta},${limite_actual > limite_abordo},${cantidad.text},${B4XPages.MainPage.cliente.CREDITO_DISPONIBLE},${limite_actual},${limite_abordo}"$)
+ Msgbox("EXCEDE EL LIMITE DE CREDITO","AVISO") 'ignore
+ End If
+ Starter.skmt.ExecNonQuery("delete from pedido3")
+ Starter.skmt.ExecNonQuery("UPDATE PEDIDO SET PE_FOLIO = 0 where PE_FOLIO IS NULL")
+ If cuenta <> "0" Then
+ c=Starter.skmt.ExecQuery("SELECT SUM(PE_FOLIO) AS FOLIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
+ c.Position = 0
+ If c.GetString("FOLIO") <> Null And c.GetString("FOLIO") > 0 Then
+ YA_IMPRIMIO = 1
+ Else
+ YA_IMPRIMIO = 0
+ End If
+ c.Close
+ End If
+ Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO3 (PE_PRECIO2, PE_TIPO, PE_FECHA, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_USUARIO ) SELECT PE_PRECIO2, PE_TIPO, PE_FECHA, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, SUM(PE_COSTO_TOT) AS PE_COSTO_TOT, PE_COSTOU, SUM(PE_CANT) As PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_USUARIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) GROUP BY PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, PE_COSTOU, PE_PRONOMBRE, PE_PROID, PE_CLIENTE ") 'Mod por CHV - 220302 - Agregué PE_FECHA al select/insert
+ c=Starter.skmt.ExecQuery("select PE_PRECIO2,PE_TIPO,PE_DESC,PE_COSTO_SIN,PE_RUTA,PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE, PE_FECHA,PE_USUARIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Starter.skmt.ExecNonQuery2("UPDATE PEDIDO3 SET PE_FECHA= ? WHERE PE_CLIENTE = ? AND PE_PRONOMBRE = ? AND PE_PROID = ? AND PE_CEDIS = ? ", Array As Object(c.GetString("PE_FECHA"), c.GetString("PE_CLIENTE"),c.GetString("PE_PRONOMBRE"),c.GetString("PE_PROID"),c.GetString("PE_CEDIS")))
+ Next
+ End If
+ c.Close
+ Starter.skmt.ExecNonQuery2("UPDATE PEDIDO3 SET PE_FOLIO = ? WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As Object(YA_IMPRIMIO))
+ Starter.skmt.ExecNonQuery("delete from pedido WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) ")
+ Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO SELECT * FROM PEDIDO3")
+ ListView1.Visible = True
+ Starter.skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_FECHA = ? WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) and PE_FECHA IS NULL", Array As Object(sDate & sTime))
+ guardar.Enabled = True
+End Sub
+
+Sub GPS_LocationChanged (Location1 As Location)
+' lat_gps=Location1.ConvertToSeconds(Location1.Latitude)
+' lon_gps=Location1.ConvertToSeconds(Location1.Longitude)
+End Sub
+
+Sub Terminar_Click
+ B_MASC.Enabled = True
+ B_MENOSC.Enabled = True
+ E_CAMBIO.Enabled = True
+ Terminar.Enabled = False
+ Panel1.Visible=False
+ If cantidad.Text = "" Then
+ cantidad.Text = 0
+ End If
+ If Starter.lat_gps = 0 Or Starter.lat_gps = Null Then
+ Private coords As List = Subs.traeCoordsDeBD
+ Starter.lat_gps = coords.Get(0)
+ Starter.lon_gps = coords.Get(1)
+ End If
+ limite_actual = t_venta.Text + (cantidad.Text * l_precio.Text)
+ Log($"Limite actual=${limite_actual}"$)
+ If cuenta = "0" Then
+ limite_actual = limite_actual + limite_anterior
+ End If
+ Log($"Limite actual=${limite_actual}"$)
+ If limite_abordo = "" Then limite_abordo = 0 'Mod por CHV - 211213 - Para que si limite_abordo no tiene valor, no nos saque de la app.
+ If cuenta ="0" And limite_actual > limite_abordo And cantidad.Text <> 0 And cantidad.Text <> "" Then
+ Msgbox("excede el limite abordo","limite") 'ignore
+ Else IF (cuenta <> "0" And limite_actual < B4XPages.MainPage.cliente.CREDITO_DISPONIBLE) Or (cuenta ="0" And limite_actual < limite_abordo) Then
+ If E_CAMBIO.Text = "" Or E_CAMBIO.Text = "0" Then
+ Panel1.Visible= False
+ Else
+ If E_CAMBIO.Text = "" Then E_CAMBIO.Text = "0"
+ If E_CAMBIO.Text * l_precio.Text > t_venta.Text Then
+ Msgbox("Excede EL MONTO DE LA VENTA", "ADVERTENCIA") 'ignore
+ else if E_CAMBIO.Text + cantidad.Text > l_bodega.Text Then
+ Msgbox("Excede existencia", "ADVERTENCIA") 'ignore
+ Else
+ DateTime.DateFormat = "MM/dd/yyyy"
+ sDate=DateTime.Date(DateTime.Now)
+ sTime=DateTime.Time(DateTime.Now)
+ c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa")
+ c.Position=0
+ clie_id = c.GetString("CUENTA")
+ c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
+ c.Position=0
+ usuario = c.GetString("USUARIO")
+ '' cambio para el rmi con costo fl 11-05-2023
+ Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_TIPO,PE_PRECIO2) VALUES(?,?,?,?,?,?,?,?,?,?,?) ", Array As Object ("DUR",E_CAMBIO.text * l_precio.Text * (-1),l_precio.Text, E_CAMBIO.text,"CAMBIO" & l_desc.text, L_PROID.Text,clie_id, sDate & sTime, usuario,Starter.tipov,precio2))
+ '' Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_TIPO,PE_PRECIO2) VALUES(?,?,?,?,?,?,?,?,?,?,?) ", Array As Object ("DUR",0,0, E_CAMBIO.text,"CAMBIO" & l_desc.text, L_PROID.Text,clie_id, sDate & sTime, usuario,Starter.tipov,precio2))
+
+ 'Starter.skmt.ExecNonQuery2("update " & query & " set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(E_CAMBIO.Text, L_PROID.Text))
+ E_CAMBIO.Text = ""
+ Panel1.Visible= False
+ End If
+ End If
+ If cantidad.Text = "" Or cantidad.Text = "0.0" Or cantidad.Text = "0" Then
+ B4XPages.ShowPage("Cliente")
+ ELSE If cantidad.Text > l_bodega.Text Then
+ Msgbox("Excede la existencia", "ADVERTENCIA") 'ignore
+ Else If l_marca.text = "PROMOS" And l_tipo.Text ="PROMOS" And PROMO_C > 0 And cantidad.Text > 0 Then
+ Starter.skmt.ExecNonQuery("delete from PROIDID")
+ Starter.skmt.ExecNonQuery2("INSERT INTO PROIDID VALUES (?)", Array As Object(L_PROID.text))
+ c=Starter.skmt.ExecQuery("Select count(*) as CUANTOSD from pedido where PE_CLIENTE IN (Select CUENTA from cuentaa) and length(pe_cedis) < 3 and PE_COSTOU > 0 and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID) AND CAT_DP_TIPO = 1)")
+ c.Position =0
+ If c.GetString("CUANTOSD") = 0 Then
+ Msgbox("No tiene venta el cliente para la promo", "ADVERTENCIA") 'ignore
+ Else
+ c=Starter.skmt.ExecQuery("Select sum(pe_cant) As TOT_ART_PROMO, sum(PE_COSTO_TOT) as COSTO_TOT from pedido where PE_CLIENTE IN (Select CUENTA from cuentaa) and length(pe_cedis) < 3 and PE_COSTOU > 0 and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID) AND CAT_DP_TIPO = 1)")
+ TOT_ART_PROMO = 0
+ COSTO_TOT = 0
+ If c.RowCount > 0 Then
+ c.Position =0
+ TOT_ART_PROMO = c.GetString("TOT_ART_PROMO")
+ COSTO_TOT = c.GetString("COSTO_TOT")
+ End If
+ C.Close
+ ' Se agrego and PE_COSTOU > 0 para que no tome los cambios
+ c=Starter.skmt.ExecQuery("Select count(*) as CUANTOSD from pedido where PE_CLIENTE IN (Select CUENTA from cuentaa) and length(pe_cedis) < 3 and PE_COSTOU > 0 and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID) AND (CAT_DP_PRECIO = 0.01 or CAT_DP_PRECIO = 1 OR CAT_DP_PRECIO = 0) AND CAT_DP_TIPO = 1)")
+ c.Position =0
+ If c.GetString("CUANTOSD") = 0 Then
+ TOT_ART_PROMOR = "0" 'Msgbox("No tiene venta el cliente para la promo", "ADVERTENCIA") 'ignore
+ Else
+ c=Starter.skmt.ExecQuery("Select sum(pe_cant) As TOT_ART_PROMO, sum(PE_COSTO_TOT) as COSTO_TOT from pedido where PE_CLIENTE IN (Select CUENTA from cuentaa) and length(pe_cedis) < 3 and PE_COSTOU > 0 and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID) AND (CAT_DP_PRECIO = 0.01 or CAT_DP_PRECIO = 1 OR CAT_DP_PRECIO = 0) AND CAT_DP_TIPO = 1)")
+ TOT_ART_PROMOR = 0
+ If c.RowCount > 0 Then
+ C.Position =0
+ TOT_ART_PROMOR = C.GetString("TOT_ART_PROMO")
+ End If
+ End If
+ C.Close
+ If PROMO_C = "" Then PROMO_C = "0"
+ PROMO_C = PROMO_C * cantidad.Text
+ If PROMO_CR = "" Then PROMO_CR = "0"
+ PROMO_CR = PROMO_CR * cantidad.Text
+ If TOT_ART_PROMO = PROMO_C And TOT_ART_PROMOR = PROMO_CR Then
+ ' anterior a 29/06/2015
+ Starter.skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_CEDIS = (?) WHERE length(pe_cedis) < 3 and PE_CLIENTE IN (Select CUENTA from cuentaa) and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID))", Array As Object(L_PROID.text))
+ D=Starter.skmt.ExecQuery("select CAT_DP_ID, CAT_DP_PRECIO, CAT_DP_PRECIO_SIMPTOS, CAT_DP_IDPROD FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) AND CAT_DP_PRECIO > 1 AND CAT_DP_TIPO = 1") ' MODIFCADO 05/05/2021 PARA QUE NO TOME LOS CAMBIOS
+ If D.RowCount>0 Then
+ For i=0 To D.RowCount -1
+ D.Position=i
+ ' se agrega esta linea para que no tome los cambios
+ Starter.skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_COSTOU = (?), PE_COSTO_TOT = PE_CANT * (?) , PE_COSTO_SIN = (?) WHERE PE_PROID = (?) And PE_CLIENTE IN (Select CUENTA from cuentaa) and length(pe_cedis) < 3 and PE_COSTOU > 0 and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID) AND CAT_DP_TIPO = 1 AND CAT_DP_PRECIO > 1) ",Array As Object( D.GetString("CAT_DP_PRECIO"), D.GetString("CAT_DP_PRECIO"), D.GetString("CAT_DP_PRECIO_SIMPTOS"),D.GetString("CAT_DP_IDPROD")))
+ Next
+ End If
+ D.Close
+ D=Starter.skmt.ExecQuery("select CAT_DP_ID, CAT_DP_PRECIO, CAT_DP_PRECIO_SIMPTOS, CAT_DP_IDPROD FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) AND (CAT_DP_PRECIO = 0.01 or CAT_DP_PRECIO = 1 OR CAT_DP_PRECIO = 0) AND CAT_DP_TIPO = 1")
+ If D.RowCount>0 Then
+ For i=0 To D.RowCount -1
+ D.Position=i
+ Starter.skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_COSTOU = (?), PE_COSTO_TOT = PE_CANT * (?) , PE_COSTO_SIN = (?) WHERE PE_PROID = (?) AND PE_CLIENTE IN (Select CUENTA from cuentaa) and length(pe_cedis) < 3 and PE_COSTOU > 0 and pe_proid In (Select cat_dp_idprod from CAT_DETALLES_PAQ WHERE CAT_DP_ID In (Select PROIDID from PROIDID) AND CAT_DP_TIPO = 1",Array As Object( D.GetString("CAT_DP_PRECIO"), D.GetString("CAT_DP_PRECIO"), D.GetString("CAT_DP_PRECIO_SIMPTOS"),D.GetString("CAT_DP_IDPROD")))
+ Next
+ End If
+ D.Close
+ DateTime.DateFormat = "MM/dd/yyyy"
+ sDate=DateTime.Date(DateTime.Now)
+ sTime=DateTime.Time(DateTime.Now)
+
+ c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa")
+ c.Position=0
+ clie_id = c.GetString("CUENTA")
+ c.Close
+ c=Starter.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)")
+ cl_ruta = 0
+ If c.RowCount > 0 Then
+ c.Position=0
+ cl_ruta = c.GetString("CAT_CL_RUTA")
+ End If
+ c.Close
+ c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
+ usuario = "0"
+ If c.RowCount > 0 Then
+ c.Position=0
+ usuario = c.GetString("USUARIO")
+ End If
+ 'para insertar la promo de ades el de regalo en 0
+ e=Starter.skmt.ExecQuery("select count(*) as CUANTOS FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) and CAT_DP_TIPO = 0 ")
+ e.Position =0
+ If e.GetString("CUANTOS") > 0 Then
+ F=Starter.skmt.ExecQuery("select CAT_DP_IDPROD, CAT_DP_PZAS,CAT_DP_PRECIO FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) and CAT_DP_TIPO = 0 ")
+ 'meter el otro
+ If f.RowCount>0 Then
+ For i=0 To f.RowCount -1
+ f.Position=i
+ PRECIO_CERO = f.GetString("CAT_DP_PRECIO")
+ h=Starter.skmt.ExecQuery2("select CAT_GP_NOMBRE from CAT_GUNAPROD2 where CAT_GP_ID = ? ", Array As String(f.GetString("CAT_DP_IDPROD")))
+ h.Position=0
+ Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_TIPO,PE_PRECIO2) VALUES(?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (L_PROID.text,PRECIO_CERO * f.GetString("CAT_DP_PZAS") * cantidad.text, PRECIO_CERO, f.GetString("CAT_DP_PZAS") * cantidad.text, h.GetString("CAT_GP_NOMBRE"), f.GetString("CAT_DP_IDPROD"),clie_id, sDate & sTime, usuario,cl_ruta,Starter.tipov,precio2))
+ 'ESTO LO CAMBIE POR QUE NO DESCUENTA EL INVENTARIO ABORDO CON LAS PROMOS
+ Starter.skmt.ExecNonQuery2("update " & query & " set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(f.GetString("CAT_DP_PZAS") * cantidad.text, f.GetString("CAT_DP_IDPROD")))
+ h.Close
+ Next
+ End If
+ f.Close
+ End If
+ e.Close
+ Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_TIPO,PE_PRECIO2) VALUES(?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (L_PROID.text,0, 0, cantidad.text, l_desc.text, L_PROID.Text,clie_id, sDate & sTime, usuario,cl_ruta,Starter.tipov,precio2))
+ Starter.skmt.ExecNonQuery2("update " & query & " set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cantidad.Text, L_PROID.Text))
+ Else
+ Msgbox("Tiene " & TOT_ART_PROMO & " " & TOT_ART_PROMOR & " y necesita " & PROMO_C & " " & PROMO_CR & " Para la Promo. " , "ADVERTENCIA") 'ignore
+ End If
+ End If
+ cantidad.Text = ""
+ Panel1.Visible= False
+ Subs.iniciaActividad("Cliente")
+ else If l_marca.text = "PROMOS" And l_tipo.Text ="PROMOS" And PROMO_C = 0 Then
+ Starter.skmt.ExecNonQuery("delete from PROIDID")
+ Starter.skmt.ExecNonQuery2("INSERT INTO PROIDID VALUES (?)", Array As Object(L_PROID.text))
+ c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa")
+ clie_id = "0"
+ If c.RowCount > 0 Then
+ c.Position=0
+ clie_id = c.GetString("CUENTA")
+ End If
+ c.Close
+ DateTime.DateFormat = "MM/dd/yyyy"
+ sDate=DateTime.Date(DateTime.Now)
+ sTime=DateTime.Time(DateTime.Now)
+
+ c=Starter.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)")
+ c.Position=0
+ cl_ruta = c.GetString("CAT_CL_RUTA")
+ c.Close
+
+ c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
+ c.Position=0
+ usuario = c.GetString("USUARIO")
+ 'para insertar la promo de ades el de regalo en 0
+ e=Starter.skmt.ExecQuery("select count(*) as CUANTOS FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) ")
+ e.Position =0
+ If e.GetString("CUANTOS") > 0 Then
+ F=Starter.skmt.ExecQuery("select CAT_DP_IDPROD, CAT_DP_PZAS, CAT_DP_PRECIO FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID)")
+ For i =0 To f.RowCount -1
+ F.Position =i
+ h=Starter.skmt.ExecQuery2("select CAT_GP_NOMBRE from " & query & " where CAT_GP_ID = ? ", Array As String(f.GetString("CAT_DP_IDPROD")))
+ h.Position=0
+ Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_TIPO,PE_PRECIO2) VALUES(?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (L_PROID.text,f.GetString("CAT_DP_PRECIO") * cantidad.text * f.GetString("CAT_DP_PZAS"), f.GetString("CAT_DP_PRECIO"), f.GetString("CAT_DP_PZAS") * cantidad.text, h.GetString("CAT_GP_NOMBRE"), f.GetString("CAT_DP_IDPROD"),clie_id, sDate & sTime, usuario,cl_ruta,Starter.tipov,precio2))
+ 'ESTO LO CAMBIE POR QUE NO DESCUENTA EL INVENTARIO ABORDO CON LAS PROMOS
+ Starter.skmt.ExecNonQuery2("update " & query & " set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(f.GetString("CAT_DP_PZAS") * cantidad.text, f.GetString("CAT_DP_IDPROD")))
+ h.Close
+ Next
+ f.Close
+ End If
+ e.Close
+ Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_TIPO,PE_PRECIO2) VALUES(?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (L_PROID.text,0, 0, cantidad.text, l_desc.text, L_PROID.Text,clie_id, sDate & sTime, usuario,cl_ruta,Starter.tipov,precio2))
+ Starter.skmt.ExecNonQuery2("update " & query & " set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cantidad.Text, L_PROID.Text))
+ cantidad.Text = ""
+ c=Starter.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, SUM(PE_COSTO_SIN) AS TOTAL_CLIE_SIN FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
+ c.Position=0
+ Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)")
+ If logger Then LogColor($"Insertamos coordenadas en pedido: ${Starter.lon_gps}, ${Starter.lat_gps}"$, Colors.Magenta)
+ Starter.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT,PC_ALMACEN,PC_RUTA,PC_COSTO_SIN) VALUES (?,?,?,?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), Starter.lon_gps, Starter.lat_gps, ALMACEN,cl_ruta,c.GetString("TOTAL_CLIE_SIN")))
+ Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)")
+ Subs.iniciaActividad("Cliente")
+ Else
+ DateTime.DateFormat = "MM/dd/yyyy"
+ sDate=DateTime.Date(DateTime.Now)
+ sTime=DateTime.Time(DateTime.Now)
+ c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa")
+ c.Position=0
+ clie_id = c.GetString("CUENTA")
+ c.Close
+ c=Starter.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)")
+ c.Position=0
+ cl_ruta = c.GetString("CAT_CL_RUTA")
+ c.Close
+
+ c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
+ c.Position=0
+ usuario = c.GetString("USUARIO")
+
+ Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_COSTO_SIN,PE_TIPO,PE_PRECIO2) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (ALMACEN,cantidad.Text * l_precio.Text, l_precio.text, cantidad.text, l_desc.text, L_PROID.Text,clie_id, sDate & sTime, usuario,cl_ruta,preciosin,Starter.tipov,precio2))
+ Starter.skmt.ExecNonQuery2("update " & query & " set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cantidad.Text, L_PROID.Text))
+ c=Starter.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, SUM(PE_COSTO_SIN) AS TOTAL_CLIE_SIN FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
+ c.Position=0
+ Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)")
+ If logger Then LogColor($"Insertamos coordenadas en pedido: ${Starter.lon_gps}, ${Starter.lat_gps}"$, Colors.Magenta)
+ Starter.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT,PC_ALMACEN,PC_RUTA,PC_COSTO_SIN) VALUES (?,?,?,?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), Starter.lon_gps, Starter.lat_gps, ALMACEN,cl_ruta,c.GetString("TOTAL_CLIE_SIN")))
+ Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)")
+ Panel1.Visible= False
+
+ Starter.skmt.ExecNonQuery("delete from pedido3")
+ Starter.skmt.ExecNonQuery("UPDATE PEDIDO SET PE_FOLIO = 0 where PE_FOLIO IS NULL")
+ c=Starter.skmt.ExecQuery("SELECT SUM(PE_FOLIO) AS FOLIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
+ c.Position = 0
+ If c.GetString("FOLIO") <> Null And c.GetString("FOLIO") > 0 Then
+ YA_IMPRIMIO = 1
+ Else
+ YA_IMPRIMIO = 0
+ End If
+ c.Close
+ Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO3 (PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_USUARIO ) SELECT PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, SUM(PE_COSTO_TOT) AS PE_COSTO_TOT, PE_COSTOU, SUM(PE_CANT) As PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_USUARIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) GROUP BY PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, PE_COSTOU, PE_PRONOMBRE, PE_PROID, PE_CLIENTE ")
+ c=Starter.skmt.ExecQuery("select PE_PRECIO2,PE_TIPO,PE_DESC,PE_COSTO_SIN,PE_RUTA,PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE, PE_FECHA,PE_USUARIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
+
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Starter.skmt.ExecNonQuery2("UPDATE PEDIDO3 SET PE_FECHA= ? WHERE PE_CLIENTE = ? AND PE_PRONOMBRE = ? AND PE_PROID = ? AND PE_CEDIS = ? ", Array As Object(c.GetString("PE_FECHA"), c.GetString("PE_CLIENTE"),c.GetString("PE_PRONOMBRE"),c.GetString("PE_PROID"),c.GetString("PE_CEDIS")))
+ Next
+ End If
+ c.Close
+
+ Starter.skmt.ExecNonQuery2("UPDATE PEDIDO3 SET PE_FOLIO = ? WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As Object(YA_IMPRIMIO))
+ Starter.skmt.ExecNonQuery("delete from pedido WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) ")
+ Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO SELECT * FROM PEDIDO3")
+ Subs.iniciaActividad("Cliente")
+ End If
+ Starter.skmt.ExecNonQuery("delete from pedido3")
+ Starter.skmt.ExecNonQuery("UPDATE PEDIDO SET PE_FOLIO = 0 where PE_FOLIO IS NULL")
+ c=Starter.skmt.ExecQuery("SELECT SUM(PE_FOLIO) AS FOLIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
+ c.Position = 0
+ If c.GetString("FOLIO") <> Null And c.GetString("FOLIO") > 0 Then
+ YA_IMPRIMIO = 1
+ Else
+ YA_IMPRIMIO = 0
+ End If
+ c.Close
+ Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO3 (PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_USUARIO ) SELECT PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, SUM(PE_COSTO_TOT) AS PE_COSTO_TOT, PE_COSTOU, SUM(PE_CANT) As PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_USUARIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) GROUP BY PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, PE_COSTOU, PE_PRONOMBRE, PE_PROID, PE_CLIENTE ")
+ c=Starter.skmt.ExecQuery("select PE_PRECIO2,PE_TIPO,PE_DESC,PE_COSTO_SIN,PE_RUTA,PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE, PE_FECHA,PE_USUARIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Starter.skmt.ExecNonQuery2("UPDATE PEDIDO3 SET PE_FECHA= ? WHERE PE_CLIENTE = ? AND PE_PRONOMBRE = ? AND PE_PROID = ? AND PE_CEDIS = ? ", Array As Object(c.GetString("PE_FECHA"), c.GetString("PE_CLIENTE"),c.GetString("PE_PRONOMBRE"),c.GetString("PE_PROID"),c.GetString("PE_CEDIS")))
+ Next
+ End If
+ c.Close
+ Starter.skmt.ExecNonQuery2("UPDATE PEDIDO3 SET PE_FOLIO = ? WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As Object(YA_IMPRIMIO))
+ Starter.skmt.ExecNonQuery("delete from pedido WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) ")
+ Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO SELECT * FROM PEDIDO3")
+ Else
+ Log($"${cuenta},${limite_actual > limite_abordo},${cantidad.text},${B4XPages.MainPage.cliente.CREDITO_DISPONIBLE},${limite_actual},${limite_abordo}"$)
+ Msgbox("EXCEDE EL LIMITE DE CREDITO","AVISO") 'ignore
+ End If
+ Starter.skmt.ExecNonQuery("delete from pedido3")
+ Starter.skmt.ExecNonQuery("UPDATE PEDIDO SET PE_FOLIO = 0 where PE_FOLIO IS NULL")
+ If cuenta <> "0" Then
+ c=Starter.skmt.ExecQuery("SELECT SUM(PE_FOLIO) AS FOLIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
+ c.Position = 0
+ If c.GetString("FOLIO") <> Null And c.GetString("FOLIO") > 0 Then
+ YA_IMPRIMIO = 1
+ Else
+ YA_IMPRIMIO = 0
+ End If
+ c.Close
+ End If
+ Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO3 (PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_USUARIO ) SELECT PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, SUM(PE_COSTO_TOT) AS PE_COSTO_TOT, PE_COSTOU, SUM(PE_CANT) As PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_USUARIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) GROUP BY PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, PE_COSTOU, PE_PRONOMBRE, PE_PROID, PE_CLIENTE ")
+ c=Starter.skmt.ExecQuery("select PE_PRECIO2,PE_TIPO,PE_DESC,PE_COSTO_SIN,PE_RUTA,PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE, PE_FECHA,PE_USUARIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)")
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Starter.skmt.ExecNonQuery2("UPDATE PEDIDO3 SET PE_FECHA= ? WHERE PE_CLIENTE = ? AND PE_PRONOMBRE = ? AND PE_PROID = ? AND PE_CEDIS = ? ", Array As Object(c.GetString("PE_FECHA"), c.GetString("PE_CLIENTE"),c.GetString("PE_PRONOMBRE"),c.GetString("PE_PROID"),c.GetString("PE_CEDIS")))
+ Next
+ End If
+ c.Close
+ Starter.skmt.ExecNonQuery2("UPDATE PEDIDO3 SET PE_FOLIO = ? WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As Object(YA_IMPRIMIO))
+ Starter.skmt.ExecNonQuery("delete from pedido WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) ")
+ Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO SELECT * FROM PEDIDO3")
+ ListView1.Visible = True
+ Starter.skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_FECHA = ? where PE_CLIENTE IN (Select CUENTA from cuentaa) and PE_FECHA IS NULL", Array As Object(sDate & sTime))
+ Terminar.Enabled = True
+ Starter.ultima_back_productos = 0
+ Subs.iniciaActividad("Cliente")
+End Sub
+
+Sub i_fotol_Click
+ i_fotol.Visible = False
+End Sub
+
+Sub DESC_PROMO_Click
+ Starter.skmt.ExecNonQuery("delete from PROIDID")
+ Starter.skmt.ExecNonQuery2("INSERT INTO PROIDID VALUES (?)", Array As Object(L_PROID.text))
+ Subs.iniciaActividad("detalle_promo")
+End Sub
+
+Sub nopromo_Click
+ If cantidad.Text = "" Then
+ Panel1.Visible= False
+ Else
+ If cantidad.Text * l_precio.Text > t_venta.Text Then
+ Msgbox("Excede EL MONTO DE LA VENTA", "ADVERTENCIA") 'ignore
+' Else
+' DateTime.DateFormat = "MM/dd/yyyy"
+' sDate=DateTime.Date(DateTime.Now)
+' sTime=DateTime.Time(DateTime.Now)
+' c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa")
+' c.Position=0
+' clie_id = c.GetString("CUENTA")
+' c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
+' c.Position=0
+' usuario = c.GetString("USUARIO")
+' Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_TIPO,PE_PRECIO2) VALUES(?,?,?,?,?,?,?,?,?,?,?) ", Array As Object ("DUR",0,0, cantidad.text,"CAMBIO" & l_desc.text, L_PROID.Text,clie_id, sDate & sTime, usuario,Starter.tipov,precio2))
+' Starter.skmt.ExecNonQuery2("update " & query & " set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cantidad.Text, L_PROID.Text))
+' cantidad.Text = ""
+' Panel1.Visible= False
+ End If
+ End If
+End Sub
+
+Sub LV_PRECIOS_ItemClick (Position As Int, Value As Object)
+ c=Starter.skmt.ExecQuery("select PRECIO, NLISTA FROM LISTA_PRECIOS WHERE NLISTA = " & "'" & Value &"' AND CAT_GP_ID =" & "'" &L_PROID.TEXT&"' ORDER BY NLISTA ASC")
+ c.Position=0
+ l_precio.Text = c.GetString("PRECIO")
+ c.Close
+End Sub
+
+Sub B_MENOS_Click
+ If cantidad.Text = "" Then
+ cantidad.Text = ""
+ Else IF cantidad.Text > 0 Then
+ cantidad.Text = cantidad.Text -1
+ End If
+End Sub
+
+Sub B_MAS_Click
+ If cantidad.Text = "" Then
+ cantidad.Text = 1
+ Else
+ cantidad.Text = cantidad.Text + 1
+ End If
+End Sub
+
+Sub B_MENOSC_Click
+ If E_CAMBIO.Text = "" Then
+ E_CAMBIO.Text = ""
+ Else IF E_CAMBIO.Text > 0 Then
+ E_CAMBIO.Text = E_CAMBIO.Text -1
+ End If
+End Sub
+
+Sub B_MASC_Click
+ If E_CAMBIO.Text = "" Then
+ E_CAMBIO.Text = 1
+ Else
+ E_CAMBIO.Text = E_CAMBIO.Text + 1
+ End If
+End Sub
+
+
+Private Sub b_rmi_Click
+ Panel5.Visible = True
+
+ r = Starter.skmt.ExecQuery("select CAT_ID, CAT_DESCRIPCION, CAT_MONTO FROM CAT_RMI")
+ clv_rmi.Clear
+ For i=0 To r.RowCount -1
+ r.Position = i
+ clv_rmi.Add(CreateListItem(i &" ," &r.GetString("CAT_DESCRIPCION"), r.GetString("CAT_MONTO"), clv_rmi.AsView.Width , 50dip),i)
+ Next
+ r.Close
+End Sub
+
+
+Sub CreateListItem(descripcion As String, monto As String, Width As Int, Height As Int) As Panel
+ Dim p As B4XView = xui.CreatePanel("")
+ p.SetLayoutAnimated(0, 0, 0, Width, Height)
+ p.LoadLayout("proitem")
+ l_prodX.Text = descripcion& CRLF & " $ " & monto
+ Return p
+End Sub
\ No newline at end of file
diff --git a/B4A/C_Promos.bas b/B4A/C_Promos.bas
new file mode 100644
index 0000000..36fa8d1
--- /dev/null
+++ b/B4A/C_Promos.bas
@@ -0,0 +1,24 @@
+B4A=true
+Group=Default Group
+ModulesStructureVersion=1
+Type=Class
+Version=11.5
+@EndOfDesignText@
+Sub Class_Globals
+ Private Root As B4XView 'ignore
+ Private xui As XUI 'ignore
+End Sub
+
+'You can add more parameters here.
+Public Sub Initialize As Object
+ Return Me
+End Sub
+
+'This event will be called once, before the page becomes visible.
+Private Sub B4XPage_Created (Root1 As B4XView)
+ Root = Root1
+ 'load the layout to Root
+
+End Sub
+
+'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
\ No newline at end of file
diff --git a/B4A/C_TicketsDia.bas b/B4A/C_TicketsDia.bas
new file mode 100644
index 0000000..0cf4c5c
--- /dev/null
+++ b/B4A/C_TicketsDia.bas
@@ -0,0 +1,131 @@
+B4A=true
+Group=Default Group
+ModulesStructureVersion=1
+Type=Class
+Version=11.5
+@EndOfDesignText@
+Sub Class_Globals
+ Private Root As B4XView 'ignore
+ Private xui As XUI 'ignore
+ Dim c As Cursor
+ Dim ruta As String
+ Dim ListView1 As ListView
+ Dim b_noventa As Button
+ Dim nombre_boton As String
+End Sub
+
+'You can add more parameters here.
+Public Sub Initialize As Object
+ Return Me
+End Sub
+
+'This event will be called once, before the page becomes visible.
+Private Sub B4XPage_Created (Root1 As B4XView)
+ Root = Root1
+ 'load the layout to Root
+ ruta = File.DirInternal
+ Root.LoadLayout("ticketsDia")
+ c=Starter.skmt.ExecQuery("select PC_CLIENTE,PC_MONTO,PC_NOART FROM PEDIDO_CLIENTE ORDER BY PC_FECHA asc")
+ ListView1.Clear
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Dim label1 As Label
+ label1 = ListView1.TwoLinesLayout.Label
+ label1.TextSize = 15
+ label1.TextColor = Colors.Black
+ Dim label2 As Label
+ label2 = ListView1.TwoLinesLayout.SecondLabel
+ label2.TextSize = 13
+ label2.TextColor = Colors.Black
+ ListView1.AddTwoLines(c.GetString("PC_CLIENTE"),"Cantidad #"& c.GetString("PC_NOART")& " SubTotal $"& c.GetString("PC_MONTO"))
+ Next
+ End If
+End Sub
+
+'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
+
+Sub B4XPage_Appear
+ nombre_boton = "NOVENTA"
+ c=Starter.skmt.ExecQuery("select PC_CLIENTE,PC_MONTO,PC_NOART,(select CAT_CL_NOMBRE from kmt_info where cat_cl_codigo = pc_cliente ) as NOMBRE FROM PEDIDO_CLIENTE ORDER BY PC_FECHA asc")
+ ListView1.Clear
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Dim label1 As Label
+ label1 = ListView1.TwoLinesLayout.Label
+ label1.TextSize = 15
+ label1.TextColor = Colors.Black
+ Dim label2 As Label
+ label2 = ListView1.TwoLinesLayout.SecondLabel
+ label2.TextSize = 13
+ label2.TextColor = Colors.Black
+ ListView1.AddTwoLines(c.GetString("PC_CLIENTE"),c.GetString("NOMBRE") &" Cant. #"& c.GetString("PC_NOART")& " SubTotal $"& c.GetString("PC_MONTO"))
+ Next
+ End If
+ c.Close
+End Sub
+
+Sub Regresar_Click
+ B4XPages.ShowPage("Cliente")
+End Sub
+
+Sub Activity_KeyPress (key As Int) As Boolean
+ ' BACK key pressed
+ If key=KeyCodes.KEYCODE_BACK Then
+ ' I want to capture the key here so I return True
+ B4XPages.ShowPage("Principal")
+ 'Return True
+ End If
+ ' Returning False signals the system to handle the key
+ Return False
+End Sub
+
+Sub ListView1_ItemLongClick (Position As Int, Value As Object)
+ Starter.skmt.ExecNonQuery("delete from CUENTAA")
+ Starter.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(Value))
+ Subs.iniciaActividad("Cliente")
+End Sub
+
+Sub b_noventa_Click
+ If nombre_boton = "NOVENTA" Then
+ nombre_boton = "VENTA"
+ b_noventa.Text ="VENTA"
+ c=Starter.skmt.ExecQuery("select NV_CLIENTE,NV_MOTIVO,NV_COMM, (select CAT_CL_NOMBRE from kmt_info where cat_cl_codigo = NV_CLIENTE ) as NOMBRE FROM NOVENTA ORDER BY NV_CLIENTE asc")
+ ListView1.Clear
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Dim label1 As Label
+ label1 = ListView1.TwoLinesLayout.Label
+ label1.TextSize = 15
+ label1.TextColor = Colors.Black
+ Dim label2 As Label
+ label2 = ListView1.TwoLinesLayout.SecondLabel
+ label2.TextSize = 10
+ label2.TextColor = Colors.Black
+ ListView1.AddTwoLines(c.GetString("NV_CLIENTE"),c.GetString("NOMBRE") &" Motivo #"& c.GetString("NV_MOTIVO")& " Comentario $"& c.GetString("NV_COMM"))
+ Next
+ End If
+ Else
+ nombre_boton = "NOVENTA"
+ b_noventa.Text ="NO VENTA"
+ c=Starter.skmt.ExecQuery("select PC_CLIENTE,PC_MONTO,PC_NOART,(select CAT_CL_NOMBRE from kmt_info where cat_cl_codigo = pc_cliente ) as NOMBRE FROM PEDIDO_CLIENTE ORDER BY PC_FECHA asc")
+ ListView1.Clear
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ Dim label1 As Label
+ label1 = ListView1.TwoLinesLayout.Label
+ label1.TextSize = 15
+ label1.TextColor = Colors.Black
+ Dim label2 As Label
+ label2 = ListView1.TwoLinesLayout.SecondLabel
+ label2.TextSize = 10
+ label2.TextColor = Colors.Black
+ ListView1.AddTwoLines(c.GetString("PC_CLIENTE"),c.GetString("NOMBRE") &" Cantidad #"& c.GetString("PC_NOART")& " SubTotal $"& c.GetString("PC_MONTO"))
+ Next
+ End If
+ c.Close
+ End If
+End Sub
\ No newline at end of file
diff --git a/B4A/C_updateAvailable.bas b/B4A/C_updateAvailable.bas
new file mode 100644
index 0000000..36fa8d1
--- /dev/null
+++ b/B4A/C_updateAvailable.bas
@@ -0,0 +1,24 @@
+B4A=true
+Group=Default Group
+ModulesStructureVersion=1
+Type=Class
+Version=11.5
+@EndOfDesignText@
+Sub Class_Globals
+ Private Root As B4XView 'ignore
+ Private xui As XUI 'ignore
+End Sub
+
+'You can add more parameters here.
+Public Sub Initialize As Object
+ Return Me
+End Sub
+
+'This event will be called once, before the page becomes visible.
+Private Sub B4XPage_Created (Root1 As B4XView)
+ Root = Root1
+ 'load the layout to Root
+
+End Sub
+
+'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage.
\ No newline at end of file
diff --git a/B4A/CameraExClass.bas b/B4A/CameraExClass.bas
new file mode 100644
index 0000000..bff2c72
--- /dev/null
+++ b/B4A/CameraExClass.bas
@@ -0,0 +1,293 @@
+B4A=true
+Group=Default Group
+ModulesStructureVersion=1
+Type=Class
+Version=6.8
+@EndOfDesignText@
+'Class module
+'version 1.20
+'See this page for the list of constants:
+'http://developer.android.com/intl/fr/reference/android/hardware/Camera.Parameters.html
+'Note that you should use the constant values instead of the names.
+Sub Class_Globals
+ Private nativeCam As Object
+ Private cam As Camera
+ Private r As Reflector
+ Private target As Object
+ Private event As String
+ Public Front As Boolean
+ Type CameraInfoAndId (CameraInfo As Object, Id As Int)
+ Type CameraSize (Width As Int, Height As Int)
+ Private parameters As Object
+End Sub
+
+Public Sub Initialize (Panel1 As Panel, FrontCamera As Boolean, TargetModule As Object, EventName As String)
+ target = TargetModule
+ event = EventName
+ Front = FrontCamera
+ Dim id As Int
+ id = FindCamera(Front).id
+ If id = -1 Then
+ Front = Not(Front) 'try different camera
+ id = FindCamera(Front).id
+ If id = -1 Then
+ ToastMessageShow("No camera found.", True)
+ Return
+ End If
+ End If
+ cam.Initialize2(Panel1, "camera", id)
+End Sub
+
+Private Sub FindCamera (frontCamera As Boolean) As CameraInfoAndId
+ Dim ci As CameraInfoAndId
+ Dim cameraInfo As Object
+ Dim cameraValue As Int
+ If frontCamera Then cameraValue = 1 Else cameraValue = 0
+ cameraInfo = r.CreateObject("android.hardware.Camera$CameraInfo")
+ Dim numberOfCameras As Int = r.RunStaticMethod("android.hardware.Camera", "getNumberOfCameras", Null, Null)
+ For i = 0 To numberOfCameras - 1
+ r.RunStaticMethod("android.hardware.Camera", "getCameraInfo", Array As Object(i, cameraInfo), _
+ Array As String("java.lang.int", "android.hardware.Camera$CameraInfo"))
+ r.target = cameraInfo
+ If r.GetField("facing") = cameraValue Then 'ignore
+ ci.cameraInfo = r.target
+ ci.Id = i
+ Return ci
+ End If
+ Next
+ ci.id = -1
+ Return ci
+End Sub
+
+Private Sub SetDisplayOrientation
+ r.target = r.GetActivity
+ r.target = r.RunMethod("getWindowManager")
+ r.target = r.RunMethod("getDefaultDisplay")
+ r.target = r.RunMethod("getRotation")
+ Dim previewResult, result, degrees As Int = r.target * 90
+ Dim ci As CameraInfoAndId = FindCamera(Front)
+ r.target = ci.CameraInfo
+ Dim orientation As Int = r.GetField("orientation")
+ If Front Then
+ previewResult = (orientation + degrees) Mod 360
+ result = previewResult
+ previewResult = (360 - previewResult) Mod 360
+ Else
+ previewResult = (orientation - degrees + 360) Mod 360
+ result = previewResult
+' Log(previewResult)
+ End If
+ r.target = nativeCam
+ r.RunMethod2("setDisplayOrientation", previewResult, "java.lang.int")
+ r.target = parameters
+ r.RunMethod2("setRotation", result, "java.lang.int")
+ CommitParameters
+End Sub
+
+Private Sub Camera_Ready (Success As Boolean)
+ If Success Then
+ r.target = cam
+ nativeCam = r.GetField("camera")
+ r.target = nativeCam
+ parameters = r.RunMethod("getParameters")
+ SetDisplayOrientation
+ Else
+ Log("success = false, " & LastException)
+ End If
+ CallSub2(target, event & "_ready", Success)
+End Sub
+
+Sub Camera_Preview (Data() As Byte)
+ If SubExists(target, event & "_preview") Then
+ CallSub2(target, event & "_preview", Data)
+ End If
+End Sub
+
+Public Sub TakePicture
+ cam.TakePicture
+End Sub
+
+Private Sub Camera_PictureTaken (Data() As Byte)
+ CallSub2(target, event & "_PictureTaken", Data)
+End Sub
+
+Public Sub StartPreview
+ cam.StartPreview
+End Sub
+
+Public Sub StopPreview
+ cam.StopPreview
+End Sub
+
+Public Sub Release
+ cam.Release
+End Sub
+
+'Saves the data received from PictureTaken event
+Public Sub SavePictureToFile(Data() As Byte, Dir As String, FileName As String)
+ Dim out As OutputStream = File.OpenOutput(Dir, FileName, False)
+ out.WriteBytes(Data, 0, Data.Length)
+ out.Close
+End Sub
+
+Public Sub SetParameter(Key As String, Value As String)
+ r.target = parameters
+ r.RunMethod3("set", Key, "java.lang.String", Value, "java.lang.String")
+End Sub
+
+Public Sub GetParameter(Key As String) As String
+ r.target = parameters
+ Return r.RunMethod2("get", Key, "java.lang.String")
+End Sub
+
+Public Sub CommitParameters
+ Try
+ r.target = nativeCam
+ r.RunMethod4("setParameters", Array As Object(parameters), Array As String("android.hardware.Camera$Parameters"))
+ Catch
+ ToastMessageShow("Error setting parameters.", True)
+ Log(LastException)
+ End Try
+End Sub
+
+Public Sub GetColorEffect As String
+ Return GetParameter("effect")
+End Sub
+
+Public Sub SetColorEffect(Effect As String)
+ SetParameter("effect", Effect)
+End Sub
+
+Public Sub GetSupportedPicturesSizes As CameraSize()
+ r.target = parameters
+ Dim list1 As List = r.RunMethod("getSupportedPictureSizes")
+ Dim cs(list1.Size) As CameraSize
+ For i = 0 To list1.Size - 1
+ r.target = list1.Get(i)
+ cs(i).Width = r.GetField("width")
+ cs(i).Height = r.GetField("height")
+ Next
+ Return cs
+End Sub
+
+Public Sub SetPictureSize(Width As Int, Height As Int)
+ r.target = parameters
+ r.RunMethod3("setPictureSize", Width, "java.lang.int", Height, "java.lang.int")
+End Sub
+
+Public Sub SetJpegQuality(Quality As Int)
+ r.target = parameters
+ r.RunMethod2("setJpegQuality", Quality, "java.lang.int")
+End Sub
+
+Public Sub SetFlashMode(Mode As String)
+ r.target = parameters
+ r.RunMethod2("setFlashMode", Mode, "java.lang.String")
+End Sub
+
+Public Sub GetFlashMode As String
+ r.target = parameters
+ Return r.RunMethod("getFlashMode")
+End Sub
+
+Public Sub GetSupportedFlashModes As List
+ r.target = parameters
+ Return r.RunMethod("getSupportedFlashModes")
+End Sub
+
+Public Sub GetSupportedColorEffects As List
+ r.target = parameters
+ Return r.RunMethod("getSupportedColorEffects")
+End Sub
+
+Public Sub GetPreviewSize As CameraSize
+ r.target = parameters
+ r.target = r.RunMethod("getPreviewSize")
+ Dim cs As CameraSize
+ cs.Width = r.GetField("width")
+ cs.Height = r.GetField("height")
+ Return cs
+End Sub
+
+Public Sub GetPictureSize As CameraSize
+ r.target = parameters
+ r.target = r.RunMethod("getPictureSize")
+ Dim cs As CameraSize
+ cs.Width = r.GetField("width")
+ cs.Height = r.GetField("height")
+ Return cs
+End Sub
+
+'Converts a preview image formatted in YUV format to JPEG.
+'Note that you should not save every preview image as it will slow down the whole process.
+Public Sub PreviewImageToJpeg(data() As Byte, quality As Int) As Byte()
+ Dim size, previewFormat As Object
+ r.target = parameters
+ size = r.RunMethod("getPreviewSize")
+ previewFormat = r.RunMethod("getPreviewFormat")
+ r.target = size
+ Dim width = r.GetField("width"), height = r.GetField("height") As Int
+ Dim yuvImage As Object = r.CreateObject2("android.graphics.YuvImage", _
+ Array As Object(data, previewFormat, width, height, Null), _
+ Array As String("[B", "java.lang.int", "java.lang.int", "java.lang.int", "[I"))
+ r.target = yuvImage
+ Dim rect1 As Rect
+ rect1.Initialize(0, 0, r.RunMethod("getWidth"), r.RunMethod("getHeight"))
+ Dim out As OutputStream
+ out.InitializeToBytesArray(100)
+ r.RunMethod4("compressToJpeg", Array As Object(rect1, quality, out), _
+ Array As String("android.graphics.Rect", "java.lang.int", "java.io.OutputStream"))
+ Return out.ToBytesArray
+End Sub
+
+Public Sub GetSupportedFocusModes As List
+ r.target = parameters
+ Return r.RunMethod("getSupportedFocusModes")
+End Sub
+
+Public Sub SetContinuousAutoFocus
+ Dim modes As List = GetSupportedFocusModes
+ If modes.IndexOf("continuous-picture") > -1 Then
+ SetFocusMode("continuous-picture")
+ Else If modes.IndexOf("continuous-video") > -1 Then
+ SetFocusMode("continuous-video")
+ Else
+ Log("Continuous focus mode is not available")
+ End If
+End Sub
+
+Public Sub SetFocusMode(Mode As String)
+ r.target = parameters
+ r.RunMethod2("setFocusMode", Mode, "java.lang.String")
+End Sub
+
+Public Sub GetFocusDistances As Float()
+ Dim F(3) As Float
+ r.target = parameters
+ r.RunMethod4("getFocusDistances", Array As Object(F), Array As String("[F"))
+ Return F
+End Sub
+
+'This method should only be called if you need to immediately release the camera.
+'For example if you need to start another application that depends on the camera.
+Public Sub CloseNow
+ cam.Release
+ r.target = cam
+ r.RunMethod2("releaseCameras", True, "java.lang.boolean")
+End Sub
+
+'Calls AutoFocus and then takes the picture if focus was successfull.
+Public Sub FocusAndTakePicture
+ cam.AutoFocus
+End Sub
+
+Private Sub Camera_FocusDone (Success As Boolean)
+ If Success Then
+ TakePicture
+ Else
+ Log("AutoFocus error.")
+ End If
+End Sub
+
+
+
diff --git a/B4A/DBRequestManager.bas b/B4A/DBRequestManager.bas
new file mode 100644
index 0000000..d8ebf11
--- /dev/null
+++ b/B4A/DBRequestManager.bas
@@ -0,0 +1,270 @@
+B4A=true
+Group=Default Group
+ModulesStructureVersion=1
+Type=Class
+Version=6.8
+@EndOfDesignText@
+''Class module
+Sub Class_Globals
+ Private mTarget As Object
+ Type DBResult (Tag As Object, Columns As Map, Rows As List)
+ Type DBCommand (Name As String, Parameters() As Object)
+ Private link As String
+ Private bc As ByteConverter
+ Private T_NULL = 0, T_STRING = 1, T_SHORT = 2, T_INT = 3, T_LONG = 4, T_FLOAT = 5 _
+ ,T_DOUBLE = 6, T_BOOLEAN = 7, T_BLOB = 8 As Byte
+ Private VERSION As Float = 0.9
+ Private tempArray(1) As Object
+ Dim jobTagAnterior As String = "" 'Mod por CHV - 211109
+End Sub
+
+'Target - The module that handles JobDone (usually Me).
+'ConnectorLink - URL of the Java server.
+Public Sub Initialize (Target As Object, ConnectorLink As String)
+ mTarget = Target
+ link = ConnectorLink
+End Sub
+
+'Sends a query request.
+'Command - Query name and parameters.
+'Limit - Maximum rows to return or 0 for no limit.
+'Tag - An object that will be returned in the result.
+Public Sub ExecuteQuery(Command As DBCommand, Limit As Int, Tag As Object)
+ Dim j As HttpJob
+ Dim ms As OutputStream
+ Dim out2 As OutputStream = StartJob(j,ms, Tag)
+
+ WriteObject(Command.Name, out2)
+ WriteInt(Limit, out2)
+ WriteList(Command.Parameters, out2)
+ out2.Close
+ j.PostBytes(link & "?method=query", ms.ToBytesArray)
+End Sub
+
+'Executes a batch of (non-select) commands.
+'ListOfCommands - List of the commands that will be executes.
+'Tag - An object that will be returned in the result.
+Public Sub ExecuteBatch(ListOfCommands As List, Tag As Object)
+ Dim j As HttpJob
+ Dim ms As OutputStream
+ Dim out2 As OutputStream = StartJob(j,ms, Tag)
+ WriteInt(ListOfCommands.Size, out2)
+ For Each Command As DBCommand In ListOfCommands
+ WriteObject(Command.Name, out2)
+ WriteList(Command.Parameters, out2)
+ Next
+ out2.Close
+ j.PostBytes(link & "?method=batch", ms.ToBytesArray)
+End Sub
+
+'Similar to ExecuteBatch. Sends a single command.
+Public Sub ExecuteCommand(Command As DBCommand, Tag As Object)
+ ExecuteBatch(Array As DBCommand(Command), Tag)
+End Sub
+
+Private Sub StartJob(j As HttpJob, MemoryStream As OutputStream, Tag As Object) As OutputStream
+ j.Initialize("DBRequest", mTarget)
+ j.Tag = Tag
+ MemoryStream.InitializeToBytesArray(0)
+ Dim compress As CompressedStreams
+ Dim out As OutputStream = compress.WrapOutputStream(MemoryStream, "gzip")
+ WriteObject(VERSION, out)
+ Return out
+End Sub
+
+Private Sub WriteList(Parameters As List, out As OutputStream)
+ Dim data() As Byte
+ If Parameters = Null Or Parameters.IsInitialized = False Then
+ Dim Parameters As List
+ Parameters.Initialize
+ End If
+ data = bc.IntsToBytes(Array As Int(Parameters.Size))
+ out.WriteBytes(data, 0, data.Length)
+ For Each o As Object In Parameters
+ WriteObject(o, out)
+ Next
+End Sub
+
+Private Sub WriteObject(o As Object, out As OutputStream)
+ Dim data() As Byte
+ tempArray(0) = o
+ If tempArray(0) = Null Then
+ out.WriteBytes(Array As Byte(T_NULL), 0, 1)
+ Else If tempArray(0) Is Short Then
+ out.WriteBytes(Array As Byte(T_SHORT), 0, 1)
+ data = bc.ShortsToBytes(Array As Short(o))
+ Else If tempArray(0) Is Int Then
+ out.WriteBytes(Array As Byte(T_INT), 0, 1)
+ data = bc.IntsToBytes(Array As Int(o))
+ Else If tempArray(0) Is Float Then
+ out.WriteBytes(Array As Byte(T_FLOAT), 0, 1)
+ data = bc.FloatsToBytes(Array As Float(o))
+ Else If tempArray(0) Is Double Then
+ out.WriteBytes(Array As Byte(T_DOUBLE), 0, 1)
+ data = bc.DoublesToBytes(Array As Double(o))
+ Else If tempArray(0) Is Long Then
+ out.WriteBytes(Array As Byte(T_LONG), 0, 1)
+ data = bc.LongsToBytes(Array As Long(o))
+ Else If tempArray(0) Is Boolean Then
+ out.WriteBytes(Array As Byte(T_BOOLEAN), 0, 1)
+ Dim b As Boolean = 0
+ Dim data(1) As Byte
+ If b Then data(0) = 1 Else data(0) = 0
+ Else If GetType(tempArray(0)) = "[B" Then
+ data = o
+ out.WriteBytes(Array As Byte(T_BLOB), 0, 1)
+ WriteInt(data.Length, out)
+ Else 'If o Is String Then (treat all other values as string)
+ out.WriteBytes(Array As Byte(T_STRING), 0, 1)
+ data = bc.StringToBytes(o, "UTF8")
+ WriteInt(data.Length, out)
+ End If
+ If data.Length > 0 Then out.WriteBytes(data, 0, data.Length)
+End Sub
+
+Private Sub ReadObject(In As InputStream) As Object
+ Dim data(1) As Byte
+ In.ReadBytes(data, 0, 1)
+ Select data(0)
+ Case T_NULL
+ Return Null
+ Case T_SHORT
+ Dim data(2) As Byte
+ Return bc.ShortsFromBytes(ReadBytesFully(In, data, data.Length))(0)
+ Case T_INT
+ Dim data(4) As Byte
+ Return bc.IntsFromBytes(ReadBytesFully(In, data, data.Length))(0)
+ Case T_LONG
+ Dim data(8) As Byte
+ Return bc.LongsFromBytes(ReadBytesFully(In, data, data.Length))(0)
+ Case T_FLOAT
+ Dim data(4) As Byte
+ Return bc.FloatsFromBytes(ReadBytesFully(In, data, data.Length))(0)
+ Case T_DOUBLE
+ Dim data(8) As Byte
+ Return bc.DoublesFromBytes(ReadBytesFully(In, data, data.Length))(0)
+ Case T_BOOLEAN
+ Dim b As Byte = ReadByte(In)
+ Return b = 1
+ Case T_BLOB
+ Dim len As Int = ReadInt(In)
+ Dim data(len) As Byte
+ Return ReadBytesFully(In, data, data.Length)
+ Case Else
+ Dim len As Int = ReadInt(In)
+ Dim data(len) As Byte
+ ReadBytesFully(In, data, data.Length)
+ Return BytesToString(data, 0, data.Length, "UTF8")
+ End Select
+End Sub
+
+Private Sub ReadBytesFully(In As InputStream, Data() As Byte, Len As Int) As Byte()
+ Dim count = 0, read As Int
+ Do While count < Len And read > -1
+ read = In.ReadBytes(Data, count, Len - count)
+ count = count + read
+ Loop
+ Return Data
+End Sub
+
+Private Sub WriteInt(i As Int, out As OutputStream)
+ Dim data() As Byte
+ data = bc.IntsToBytes(Array As Int(i))
+ out.WriteBytes(data, 0, data.Length)
+End Sub
+
+Private Sub ReadInt(In As InputStream) As Int
+ Dim data(4) As Byte
+ Return bc.IntsFromBytes(ReadBytesFully(In, data, data.Length))(0)
+End Sub
+
+Private Sub ReadByte(In As InputStream) As Byte
+ Dim data(1) As Byte
+ In.ReadBytes(data, 0, 1)
+ Return data(0)
+End Sub
+
+'Handles the Job result and returns a DBResult.
+Public Sub HandleJob(Job As HttpJob) As DBResult
+ Dim start As Long = DateTime.Now 'ignore
+ Dim In As InputStream = Job.GetInputStream
+ Dim cs As CompressedStreams
+ In = cs.WrapInputStream(In, "gzip")
+ Dim serverVersion As Float = ReadObject(In) 'ignore
+ Dim method As String = ReadObject(In)
+ Dim table As DBResult
+ table.Initialize
+ table.Columns.Initialize
+ table.rows.Initialize
+ table.Tag = Job.Tag
+ If jobTagAnterior <> Job.Tag Then LogColor("HandleJob: '"&Job.Tag&"'", Colors.Blue) 'Mod por CHV - 211109
+ jobTagAnterior = Job.Tag 'Mod por CHV - 211109
+ If method = "query" Then
+ Dim numberOfColumns As Int = ReadInt(In)
+ For i = 0 To numberOfColumns - 1
+ table.Columns.Put(ReadObject(In), i)
+ Next
+ Do While ReadByte(In) = 1
+ Dim rowObjects(numberOfColumns) As Object
+ table.rows.Add(rowObjects)
+ For col = 0 To numberOfColumns - 1
+ Dim o As Object = ReadObject(In)
+ rowObjects(col) = o
+ Next
+ Loop
+ Else If method = "batch" Then
+ table.Columns.Put("AffectedRows", 0)
+ Dim rows As Int = ReadInt(In)
+ For i = 0 To rows - 1
+ table.rows.Add(Array As Object(ReadInt(In)))
+ Next
+ End If
+ In.Close
+' Log("HandleJob: " & (DateTime.Now - start))'Comentado por CHV - 211112
+ Return table
+End Sub
+'Reads a file and returns the file as a bytes array.
+Public Sub FileToBytes(Dir As String, FileName As String) As Byte()
+ Dim out As OutputStream
+ out.InitializeToBytesArray(0)
+ Dim In As InputStream = File.OpenInput(Dir, FileName)
+ File.Copy2(In, out)
+ out.Close
+ Return out.ToBytesArray
+End Sub
+'Converts an image to a bytes array (for BLOB fields).
+Public Sub ImageToBytes(Image As Bitmap) As Byte()
+ Dim out As OutputStream
+ out.InitializeToBytesArray(0)
+ Image.WriteToStream(out, 100, "JPEG")
+ out.Close
+ Return out.ToBytesArray
+End Sub
+'Converts a bytes array to an image (for BLOB fields).
+Public Sub BytesToImage(bytes() As Byte) As Bitmap
+ Dim In As InputStream
+ In.InitializeFromBytesArray(bytes, 0, bytes.Length)
+ Dim bmp As Bitmap
+ bmp.Initialize2(In)
+ Return bmp
+End Sub
+'Prints the table to the logs.
+Public Sub PrintTable(Table As DBResult)
+ Log("Tag: " & Table.Tag & ", Columns: " & Table.Columns.Size & ", Rows: " & Table.Rows.Size)
+ Dim sb As StringBuilder
+ sb.Initialize
+ For Each col In Table.Columns.Keys
+ sb.Append(col).Append(TAB)
+ Next
+ Log(sb.ToString)
+ For Each row() As Object In Table.Rows
+ Dim sb As StringBuilder
+ sb.Initialize
+ For Each record As Object In row
+ sb.Append(record).Append(TAB)
+ Next
+ ToastMessageShow(sb.ToString, True)
+ Next
+End Sub
+
+
\ No newline at end of file
diff --git a/B4A/DownloadService.bas b/B4A/DownloadService.bas
new file mode 100644
index 0000000..036d602
--- /dev/null
+++ b/B4A/DownloadService.bas
@@ -0,0 +1,114 @@
+B4A=true
+Group=Default Group
+ModulesStructureVersion=1
+Type=Service
+Version=5.5
+@EndOfDesignText@
+#Region Service Attributes
+ #StartAtBoot: False
+#End Region
+
+Sub Process_Globals
+ Private jobs As Map
+ Private timer1 As Timer
+ Type DownloadData (url As String, Target As Object, EventName As String)
+ Type JobTag (Data As DownloadData, _
+ CountingStream As CountingOutputStream, Total As Long)
+ Private pw As PhoneWakeState
+End Sub
+Sub Service_Create
+ jobs.Initialize
+ timer1.Initialize("timer1", 1000)
+End Sub
+
+Sub Service_Start (StartingIntent As Intent)
+
+End Sub
+
+Sub Service_Destroy
+
+End Sub
+
+Private Sub StartTimer (Target As Object)
+ Dim n As Notification
+ n.Initialize2(n.IMPORTANCE_LOW)
+ n.Icon = "icon"
+ n.Vibrate = False
+ n.Sound = False
+ n.Light = False
+ n.SetInfo("Downloading file...", "", Target)
+ Service.StartForeground(1, n)
+ timer1.Enabled = True
+ pw.PartialLock
+End Sub
+
+Private Sub EndTimer 'ignore
+ Service.StopForeground(1)
+ timer1.Enabled = False
+ pw.ReleasePartialLock
+End Sub
+
+Public Sub StartDownload(data As DownloadData)
+ If jobs.ContainsKey(data.url) Then
+ Log("Ignoring duplicate request.")
+ Return
+ End If
+ Dim J As HttpJob
+ J.Initialize(data.url, Me)
+ Log(J)
+ Dim tag As JobTag
+ tag.Initialize
+ tag.data = data
+ Log(tag)
+ J.tag = tag
+ jobs.Put(data.url, J)
+ Log(jobs)
+ J.Download(data.url)
+ If timer1.Enabled = False Then StartTimer(data.Target)
+End Sub
+
+Public Sub CancelDownload(url As String)
+ If jobs.ContainsKey(url) = False Then
+ Log("Ignoring cancel request.")
+ Return
+ End If
+ Dim job As HttpJob = jobs.Get(url)
+ Dim jt As JobTag = job.Tag
+ If jt.CountingStream.IsInitialized Then
+ jt.CountingStream.Close
+ Else
+ jt.Data.url = ""
+ End If
+End Sub
+
+Sub timer1_tick
+ For Each job As HttpJob In jobs.Values
+ Dim jt As JobTag = job.Tag
+ If jt.CountingStream.IsInitialized Then
+ CallSub3(jt.Data.Target, jt.Data.EventName & "_Progress", _
+ jt.CountingStream.Count, jt.Total)
+ End If
+ Next
+End Sub
+
+Sub JobDone(job As HttpJob)
+' Log("1")
+' jobs.Remove(job.JobName)
+' Dim jt As JobTag = job.Tag
+' Log(jt)
+' If jobs.Size = 0 Then EndTimer
+' Log(jobs.Size)
+' If job.Success Then
+' Log("5-"&jt.Data.Target&"-"&jt.Data.EventName&"-"&jt.CountingStream.Count&"-"&jt.Total)
+' CallSubDelayed3(jt.Data.Target, jt.Data.EventName & "_Progress", jt.CountingStream.Count, jt.Total)
+' Log("6")
+' CallSubDelayed2(jt.Data.Target, jt.Data.EventName & "_Complete", job)
+' Log("7")
+' Else
+' Log(job.ErrorMessage)
+' Log("8")
+' CallSubDelayed2(jt.Data.Target, jt.Data.EventName & "_Complete", job)
+' Log("9")
+' End If
+' Log("10")
+End Sub
diff --git a/B4A/EscPosPrinter.bas b/B4A/EscPosPrinter.bas
new file mode 100644
index 0000000..40292c1
--- /dev/null
+++ b/B4A/EscPosPrinter.bas
@@ -0,0 +1,1148 @@
+B4A=true
+Group=Default Group
+ModulesStructureVersion=1
+Type=Class
+Version=9.3
+@EndOfDesignText@
+#IgnoreWarnings: 9
+' 9 = unused variable
+
+Sub Class_Globals
+ ' 1.0 Initial version
+ ' 2.0 Added FeedPaper, changed many WriteString(.." & Chr(number)) instances to WriteBytes(params)
+ ' This is to avoid Unicode code page transformations on some numbers > 32
+ ' Added PrintAndFeedPaper, setRelativePrintPosn,
+ ' Added user defined characters, DefineCustomCharacter, DeleteCustomCharacter and setUseCustomCharacters
+ ' Addedhelper methods CreateCustomCharacter, CreateLine, CreateBox and CreateCircle
+ Private Version As Double = 2.0 ' Printer class version
+
+ Type AnImage(Width As Int, Height As Int, Data() As Byte)
+
+ Private EventName As String 'ignore
+ Private CallBack As Object 'ignore
+
+ Private Serial1 As Serial
+ Private Astream As AsyncStreams
+ Private Connected As Boolean
+ Private ConnectedError As String
+
+ Dim ESC As String = Chr(27)
+ Dim FS As String = Chr(28)
+ Dim GS As String = Chr(29)
+
+ 'Bold and underline don't work well in reversed text
+ Dim UNREVERSE As String = GS & "B" & Chr(0)
+ Dim REVERSE As String = GS & "B" & Chr(1)
+
+ ' Character orientation. Print upside down from right margin
+ Dim UNINVERT As String = ESC & "{0"
+ Dim INVERT As String = ESC & "{1"
+
+ ' Character rotation clockwise. Not much use without also reversing the printed character sequence
+ Dim UNROTATE As String = ESC & "V0"
+ Dim ROTATE As String = ESC & "V1"
+
+ ' Horizontal tab
+ Dim HT As String = Chr(9)
+
+ ' Character underline
+ Dim ULINE0 As String = ESC & "-0"
+ Dim ULINE1 As String = ESC & "-1"
+ Dim ULINE2 As String = ESC & "-2"
+
+ ' Character emphasis
+ Dim BOLD As String = ESC & "E1"
+ Dim NOBOLD As String = ESC & "E0"
+
+ ' Character height and width
+ Dim SINGLE As String = GS & "!" & Chr(0x00)
+ Dim HIGH As String = GS & "!" & Chr(0x01)
+ Dim WIDE As String = GS & "!" & Chr(0x10)
+ Dim HIGHWIDE As String = GS & "!" & Chr(0x11)
+
+ ' Default settings
+ Private LEFTJUSTIFY As String = ESC & "a0"
+ Private LINEDEFAULT As String = ESC & "2"
+ Private LINSET0 As String = ESC & "$" & Chr(0x0) & Chr(0x0)
+ Private LMARGIN0 As String = GS & "L" & Chr(0x0) & Chr(0x0)
+ Private WIDTH0 As String = GS & "W" & Chr(0xff) & Chr(0xff)
+ Private CHARSPACING0 As String = ESC & " " & Chr(0)
+ Private CHARFONT0 As String = ESC & "M" & Chr(0)
+ Dim DEFAULTS As String = CHARSPACING0 & CHARFONT0 & LMARGIN0 & WIDTH0 & LINSET0 & LINEDEFAULT & LEFTJUSTIFY _
+ & UNINVERT & UNROTATE & UNREVERSE & NOBOLD & ULINE0
+
+End Sub
+
+'**********
+'PUBLIC API
+'**********
+
+'Initialize the object with the parent and event name
+Public Sub Initialize(vCallback As Object, vEventName As String)
+ EventName = vEventName
+ CallBack = vCallback
+ Serial1.Initialize("Serial1")
+ Connected = False
+ ConnectedError = ""
+End Sub
+
+' Returns any error raised by the last attempt to connect a printer
+Public Sub ConnectedErrorMsg As String
+ Return ConnectedError
+End Sub
+
+' Returns whether a printer is connected or not
+Public Sub IsConnected As Boolean
+ Return Connected
+End Sub
+
+' Returns whether Bluetooth is on or off
+Public Sub IsBluetoothOn As Boolean
+ Return Serial1.IsEnabled
+End Sub
+
+' Ask the user to connect to a printer and return whether she tried or not
+' If True then a subsequent Connected event will indicate success or failure
+Public Sub Connect As Boolean
+ 'leos
+' Serial1.Connect("88:6B:0F:3E:53:9E")
+' Return True
+ Try
+ If Starter.MAC_IMPRESORA = "0" Then
+ Dim PairedDevices As Map
+ PairedDevices = Serial1.GetPairedDevices
+ Dim l As List
+ l.Initialize
+ For i = 0 To PairedDevices.Size - 1
+ l.Add(PairedDevices.GetKeyAt(i))
+ Next
+ Dim Res As Int
+ Res = InputList(l, "Choose a printer", -1) 'show list with paired devices 'ignore
+ If Res <> DialogResponse.CANCEL Then
+ Serial1.Connect(PairedDevices.Get(l.Get(Res))) 'convert the name to mac address
+ 'Msgbox(PairedDevices.Get(l.Get(Res)),"mac")
+ Starter.mac_impresora = PairedDevices.Get(l.Get(Res))
+ Return True
+ End If
+ Return False
+ Else
+ Serial1.Connect(Starter.mac_impresora)
+ ' Starter.mac_impresora = colonia.MAC_IMPRESORA
+ Return True
+ End If
+ Catch
+ Log(LastException)
+ End Try
+End Sub
+
+' Disconnect the printer
+Public Sub DisConnect
+ Serial1.Disconnect
+ Connected = False
+End Sub
+
+' Reset the printer to the power on state
+Public Sub Reset
+ WriteString(ESC & "@")
+End Sub
+
+'--------------
+' Text Commands
+'--------------
+
+' Print any outstanding characters then feed the paper the specified number of units of 0.125mm
+' This is similar to changing LineSpacing before sending CRLF but this has a one off effect
+' A full character height is always fed even if units = 0. Units defines the excess over this minimum
+Public Sub PrintAndFeedPaper(units As Int)
+ WriteString(ESC & "J")
+ Dim params(1) As Byte
+ params(0) = units
+ WriteBytes(params)
+End Sub
+
+' Set the distance between characters
+Public Sub setCharacterSpacing(spacing As Int)
+ WriteString(ESC & " ")
+ Dim params(1) As Byte
+ params(0) = spacing
+ WriteBytes(params)
+End Sub
+
+' Set the left inset of the next line to be printed
+' Automatically resets to 0 for the following line
+' inset is specified in units of 0.125mm
+Public Sub setLeftInset(inset As Int)
+ Dim dh As Int = inset / 256
+ Dim dl As Int = inset - dh
+ WriteString(ESC & "$" & Chr(dl) & Chr(dh))
+ Dim params(2) As Byte
+ params(0) = dl
+ params(1) = dh
+ WriteBytes(params)
+End Sub
+
+' Set the left margin of the print area, must be the first item on a new line
+' margin is specified in units of 0.125mm
+' This affects barcodes as well as text
+Public Sub setLeftMargin(margin As Int)
+ Dim dh As Int = margin / 256
+ Dim dl As Int = margin - dh
+ WriteString(GS & "L")
+ Dim params(2) As Byte
+ params(0) = dl
+ params(1) = dh
+ WriteBytes(params)
+End Sub
+
+' Set the width of the print area, must be the first item on a new line
+' margin is specified in units of 0.125mm
+' This affects barcodes as well as text
+' This appears to function more like a right margin than a print area width when used with LeftMargin
+Public Sub setPrintWidth(width As Int)
+ Dim dh As Int = width / 256
+ Dim dl As Int = width - dh
+ WriteString(GS & "W")
+ Dim params(2) As Byte
+ params(0) = dl
+ params(1) = dh
+ WriteBytes(params)
+End Sub
+
+' Set the distance between lines in increments of 0.125mm
+' If spacing is < 0 then the default of 30 is set
+Public Sub setLineSpacing(spacing As Int)
+ If spacing < 0 Then
+ WriteString(ESC & "2")
+ Else
+ WriteString(ESC & "3")
+ Dim params(1) As Byte
+ params(0) = spacing
+ WriteBytes(params)
+ End If
+End Sub
+
+' Set the line content justification, must be the first item on a new line
+' 0 left, 1 centre, 2 right
+Public Sub setJustify(justify As Int)
+ WriteString(ESC & "a" & Chr(justify + 48))
+End Sub
+
+' Set the codepage of the printer
+' You need to look at the printer documentation to establish which codepages are supported
+Public Sub setCodePage(codepage As Int)
+ WriteString(ESC & "t")
+ Dim params(1) As Byte
+ params(0) = codepage
+ WriteBytes(params)
+End Sub
+
+' Select the size of the font for printing text. 0 = Font A (12 x 24), 1 = Font B (9 x 17)
+' For font B you may want to set the line spacing to a lower value than the default of 30
+' This affects only the size of printed characters. The code page determines the actual character set
+' On my printer setting UseCustomCharacters = while Font B is selected crashes the printer and turns it off
+Public Sub setCharacterFont(font As Int)
+ WriteString(ESC & "M" & Chr(Bit.And(1,font)))
+End Sub
+
+' Set the positions of the horizontal tabs
+' Each tab is specified as a number of character widths from the beginning of the line
+' There may be up to 32 tab positions specified each of size up to 255 characters
+' The printer default is that no tabs are defined
+Public Sub setTabPositions(tabs() As Int)
+ WriteString(ESC & "D")
+ Dim data(tabs.Length+1) As Byte
+ For i = 0 To tabs.Length - 1
+ data(i) = tabs(i)
+ Next
+ data(tabs.Length) = 0
+ WriteBytes(data)
+End Sub
+
+' Set print position relative to the current position using horizontal units of 0.125mm
+' relposn can be negative
+' Unless I have misundertood this doesn't work as documented on my printer
+' It only seems take effect at the beginning of a line as a one off effect
+Public Sub setRelativePrintPosn(relposn As Int)
+ Dim dh As Int = relposn / 256
+ Dim dl As Int = relposn - dh
+ WriteString(ESC & "\")
+ Dim params(2) As Byte
+ params(0) = dl
+ params(1) = dh
+ WriteBytes(params)
+End Sub
+
+' Send the contents of an array of bytes to the printer
+' Remember that if the printer is expecting text the bytes will be printed as characters in the current code page
+Public Sub WriteBytes(data() As Byte)
+ If Connected Then
+ Astream.Write(data)
+ End If
+End Sub
+
+' Send the string to the printer in IBM437 encoding which is the original PC DOS codepage
+' This is usually the default codepage for a printer and is CodePage = 0
+' Beware of using WriteString with Chr() to send numeric values as they may be affected by Unicode to codepage translations
+' Most character level operations are pre-defined as UPPERCASE string variables for easy concatenation with other string data
+Public Sub WriteString(data As String)
+ WriteString2(data, "IBM437")
+End Sub
+
+' Send the string to the printer in the specified encoding
+' You also need to set the printer to a matching encoding using the CodePage property
+' Beware of using WriteString2 with Chr() to send numeric values as they may be affected by codepage substitutions
+' Most character level operations are pre-defined as UPPERCASE string variables for easy concatenatipon with other string data
+Public Sub WriteString2(data As String, encoding As String)
+ Try
+ If Connected Then
+ Astream.Write(data.GetBytes(encoding))
+ End If
+ Catch
+ Log("Printer error : " & LastException.Message)
+ AStream_Error
+ End Try
+End Sub
+
+'-----------------------------------------
+' User defined character commands commands
+'-----------------------------------------
+
+' Delete the specified user defined character mode
+' This command deletes the pattern defined for the specified code in the font selected by ESC !
+' If the code is subsequently printed in custom character mode the present code page character is printed instead
+Public Sub DeleteCustomCharacter(charcode As Int)
+ WriteString(ESC & "?")
+ Dim params(1) As Byte
+ params(0) = charcode
+ WriteBytes(params)
+End Sub
+
+' Enable the user defined character mode if custom is True, revert to normal if custom is False
+' If a custom character has not been defined for a given character code then the default character for the present font is printed
+' FontA and FontB have separate definitions for custom characters
+' On my printer setting UseCustomCharacters = while Font B is selected crashes the printer and turns it off
+' Therefore the cuatom character routines have not been tested on ont B
+Public Sub setUseCustomCharacters(custom As Boolean)
+ If custom Then
+ WriteString(ESC & "%1")
+ Else
+ WriteString(ESC & "%0")
+ End If
+End Sub
+
+' Define a user defined character
+' The allowable character code range is the 95 characters) from ASCII code 32 (0x20) to 126 (0x7E)
+' Characters can be defined in either font A (12*24) or font B (9*17) as selected by present setting of CharacterFont
+' The programmer must ensure that the correct font size definition is used for the present setting of CharacterFont
+' The user-defined character definition is cleared when Reset is invoked or the printer is turned off
+' The vertical and horizontal printed resolution is approximaely 180dpi
+' Characters are always defined by sets of three bytes in the vertical direction and up to 9 or 12 sets horizontally
+' Each byte defines a vertical line of 8 dots. The MSB of each byte is the highest image pixel, the LSB is the lowest
+' Byte(0+n) defines the topmost third of the vertical line, Byte(1+n) is below and Byte(2+n) is the lowest
+' Set a bit to 1 to print a dot or 0 to not print a dot
+' If the lines to the right of the character are blank then there set of three bytes can be omiited from the byte array
+' When the user-defined characters are defined in font B (9*17) only the most significant bit of the 3rd byte of data is used
+' charcode defines the character code for the character being defined
+' bitdata is a Byte array containing the character definitiopn as described above.
+' If the length of bitdata is not a multiple of 3 the definition is ignored and a value of -1 returned
+Public Sub DefineCustomCharacter(charcode As Int, bitdata() As Byte) As Int
+ Dim excess As Int = bitdata.Length Mod 3
+ If excess <> 0 Then Return -1
+ Dim size As Int = bitdata.Length / 3
+ WriteString(ESC & "&")
+ Dim params(4) As Byte
+ params(0) = 3
+ params(1) = charcode
+ params(2) = charcode
+ params(3) = size
+ WriteBytes(params)
+ WriteBytes(bitdata)
+ Return 0
+End Sub
+
+' The third triangle point is hacked into spare bits keeping the generated Int human readable i hex for other shapes
+' The shape array contains the character shapes and characterfont is 0 for a 12*24 character andd 1 for a 9*17 character
+' Returns a Byte(36) for characterfont = 0 and a Byte(27) for characterfont = 1
+' The returned array can be directly passed to DefineCustomCharacter
+' To define a custom character requires specifying up to 288 data points
+' This is a lot of data and in most cases it is mainly white space
+' This method takes a character definition that defines only the shapes in the character that are to be printed black
+' It will be easier use the outputs from CreateLine, CreateTriangle, CreateBox and CreateCircle rather then building the actual Int values
+' Each shape is defined by a single Int value containing four parameters in hex format plugs some single bit flags
+' Taking the representation of the Int as eight hex characters numbered from the MS end as 0x01234567
+' 0 contains the shape to draw. 0 = Line, 1 = Box, 2 = Circle, 3 = Triangle
+' 1 contains a value between 0 and 0xF. This is either an X coordinate or for a circle the radius
+' 2 and 3 contain a value between 0 and 0x1F. This is either a Y coordinate or for a circle the quadrants to draw
+' 4 contains a value between 0 and 0xF. This is 0 for an empty shope or 1 for a filled shape
+' 5 contains a value between 0 and 0xF. This is an X coordinate
+' 5 and 6 contain a value between 0 and 0x1F. This is a Y coordinate
+' The coordinate 0,0 is at the top left of the character
+' Line
+' One point of the vector is contained in the top part of the Int and the other in the bottom half
+' To define a single point place its coordinates as both sr=start and end of a line
+' Box
+' The two X,Y coordinates specify the top left and bottom right corners of the box
+' Circle
+' The left X parameter is now the radius of the circle, the left Y is the quadrants to be drawn
+' The right X and Y parameters are the centre of the circle'
+' The quadrants to draw are bit ORed together, UpperRight = 0x1, LowerRight = 0x2, LowerLeft = 0x4, Upper Left = 0x8
+' Triangle
+' The left X and Y parameters are now one point of the triangle, the right X and Y parameters another point
+' The third triangle point is hacked into spare bits keeping the generated Int human readable in hex for the other shapes
+' The bit allocations of a shape are as follows. f = fill as 0 or 1, s = shape as 0 to 7, xn as 0 to 15, yn as 0 to 31
+' Shape 0 = line, 1 = box, 2 = triangle, 3 = circle, 4 to 7 = unused
+' fsss xxxx -yyy yyyy xxxx xxxx yyyy yyyy
+' 0000 220 0000 2222 1111 2221 1111
+' x0 y2 y0 x2 x1 y2 y1
+' The shape array contains the character shapes and characterfont is 0 for a 12*24 character andd 1 for a 9*17 character
+' Returns a Byte(36) for characterfont = 0 and a Byte(27) for characterfont = 1
+' The returned array can be directly passed to DefineCustomCharacter
+Public Sub CreateCustomCharacter(shapes() As Int, characterfont As Int) As Byte()
+ Dim masks(8) As Byte
+ masks(0) = 0x80
+ masks(1) = 0x40
+ masks(2) = 0x20
+ masks(3) = 0x10
+ masks(4) = 0x08
+ masks(5) = 0x04
+ masks(6) = 0x02
+ masks(7) = 0x01
+ ' rather than try to catch errors whenever we access this array we Dim it to the maximum possible values of X and Y
+ ' then copy the top left of it to the final character definition array of the correct size
+ Dim points(16,32) As Byte
+ ' initialise the character to all white
+ For x = 0 To 15
+ For y = 0 To 31
+ points(x,y) = 0
+ Next
+ Next
+ Dim size As Int = 12
+ If characterfont = 1 Then size = 9
+ Dim charbyes(size * 3) As Byte
+ For c = 0 To charbyes.Length - 1
+ charbyes(c) = 0
+ Next
+ ' set the points array from the shapes provided
+ For i = 0 To shapes.Length -1
+ Dim fill As Int = Bit.UnsignedShiftRight(Bit.And(0x80000000, shapes(i)), 31)
+ Dim shape As Int = Bit.UnsignedShiftRight(Bit.And(0x70000000, shapes(i)), 28)
+ Dim x0 As Int = Bit.UnsignedShiftRight(Bit.And(0x0f000000, shapes(i)), 24)
+ Dim y0 As Int = Bit.UnsignedShiftRight(Bit.And(0x001f0000, shapes(i)), 16)
+ Dim x1 As Int = Bit.UnsignedShiftRight(Bit.And(0x00000f00, shapes(i)), 8)
+ Dim y1 As Int = Bit.And(0x0000001f, shapes(i))
+ Dim x2 As Int = Bit.UnsignedShiftRight(Bit.And(0x0000f000, shapes(i)), 12)
+ Dim y2 As Int = Bit.UnsignedShiftRight(Bit.And(0x00e00000, shapes(i)), 18) + Bit.UnsignedShiftRight(Bit.And(0x000000e0, shapes(i)), 5)
+ ' The bit allocations of a shape are as follows. f = fill as 0 or 1, s = shape as 0 to 7, xn as 0 to 15, yn as 0 to 31
+ ' Shape 0 = line, 1 = box, 2 = triangle, 3 = circle, 4 to 7 = unused
+ ' fsss xxxx -yyy yyyy xxxx xxxx yyyy yyyy
+ ' 0000 220 0000 2222 1111 2221 1111
+ ' x0 y2 y0 x2 x1 y2 y1
+ Dim logmsg As String = ": Fill=" & fill & " : Points " & x0 & "," & y0 & " " & x1 & "," & y1 & " " & x2 & "," & y2
+ If shape = 3 Then
+ Log("Triangle " & logmsg)
+ PlotTriangle(x0, y0, x1, y1, x2, y2, points, fill)
+ else If shape = 2 Then
+ Log("Circle " & logmsg)
+ PlotCircle(x0, y0, x1, y1, points, fill)
+ Else If shape = 1 Then
+ Log("Box " & logmsg)
+ PlotBox(x0, y0, x1, y1, points, fill)
+ Else
+ Log("Line " & logmsg)
+ PlotLine(x0, y0, x1, y1, points)
+ End If
+ ' map the points array onto the character definition array
+ For x = 0 To size -1 ' 9 or 12 horizontal bytes
+ For y = 0 To 2 ' 3 vertical bytes
+ Dim bits As Byte = 0
+ For b = 0 To 7 ' 8 vertical bits
+ If points(x, y*8+b) <> 0 Then
+ bits = Bit.Or(bits, masks(b))
+ End If
+ Next
+ charbyes(x*3+y) = bits
+ Next
+ Next
+ Next
+ Return charbyes
+End Sub
+
+' This is a higher level method that builds the Int values to pass to CreateCustomCharacter in the shapes array
+' Create the value to draw a line in a custom character
+' The line starts at X0,Y0 and ends at X1,Y1
+Public Sub CreateLine(x0 As Int, y0 As Int, x1 As Int, y1 As Int) As Int
+ Dim line As Int = 0
+ line = line + Bit.ShiftLeft(Bit.And(0xf,x0), 24)
+ line = line + Bit.ShiftLeft(Bit.And(0x1f,y0), 16)
+ line = line + Bit.ShiftLeft(Bit.And(0xf,x1), 8)
+ line = line + Bit.And(0x1f,y1)
+ Return line
+End Sub
+
+' This is a higher level method that builds the Int values to pass to CreateCustomCharacter in the shapes array
+' Create the value to draw a circle in a custom character
+' The circle is centred on X1,Y1 and the quadrants to draw are bit ORed together
+' UpperRight = 0x1, LowerRight = 0x2, LowerLeft = 0x4, Upper Left = 0x8
+Public Sub CreateCircle(radius As Int, quadrants As Int, x1 As Int, y1 As Int, fill As Boolean) As Int
+ Dim circle As Int = 0x20000000
+ If fill Then circle = circle + 0x80000000
+ circle = circle + Bit.ShiftLeft(radius, 24)
+ circle = circle + Bit.ShiftLeft(quadrants, 16)
+ circle = circle + Bit.ShiftLeft(x1, 8)
+ circle = circle + y1
+ Return circle
+End Sub
+
+
+' This is a higher level method that builds the Int values to pass to CreateCustomCharacter in the shapes array
+' Create the value to draw a triangle in a custom character
+' The triangles corners are at X0,Y0 X1,Y1 and X2,Y2
+Public Sub CreateTriangle(x0 As Int, y0 As Int, x1 As Int, y1 As Int, x2 As Int, y2 As Int, fill As Boolean) As Int
+ Dim triangle As Int = 0x30000000
+ If fill Then triangle = triangle + 0x80000000
+ triangle = triangle + Bit.ShiftLeft(Bit.And(0xf,x0), 24)
+ triangle = triangle + Bit.ShiftLeft(Bit.And(0x1f,y0), 16)
+ triangle = triangle + Bit.ShiftLeft(Bit.And(0xf,x1), 8)
+ triangle = triangle + Bit.And(0x1f,y1)
+ triangle = triangle + Bit.ShiftLeft(Bit.And(0xf,x2), 12) ' extra X
+ triangle = triangle + Bit.ShiftLeft(Bit.And(0x7,y2), 5) ' extra Y lsbits * 3
+ triangle = triangle + Bit.ShiftLeft(Bit.And(0x18,y2), 18) ' extra Y msbits * 2
+ Return triangle
+End Sub
+
+' This is a higher level method that builds the Int values to pass to CreateCustomCharacter in the shapes array
+' Create the value to draw a box in a custom character
+' The box top left start is X0,Y0 and bottom right is X1,Y1
+Public Sub CreateBox(x0 As Int, y0 As Int, x1 As Int, y1 As Int, fill As Boolean) As Int
+ Dim box As Int = 0x10000000
+ If fill Then box = box + 0x80000000
+ box = box + Bit.ShiftLeft(Bit.And(0xf,x0), 24)
+ box = box + Bit.ShiftLeft(Bit.And(0x1f,y0), 16)
+ box = box + Bit.ShiftLeft(Bit.And(0xf,x1), 8)
+ box = box + Bit.And(0x1f,y1)
+ Return box
+End Sub
+
+'-----------------------------------------
+' Private custom character drawing methods
+'-----------------------------------------
+
+Private Sub PlotTriangle(x0 As Int, y0 As Int, x1 As Int, y1 As Int, x2 As Int, y2 As Int, points(,) As Byte, Fill As Int)
+ ' This is a pretty crude algorithm, but it is simple, works and it isn't invoked often
+ PlotLine(x0, y0, x1, y1, points)
+ PlotLine(x1, y1, x2, y2, points)
+ PlotLine(x2, y2, x0, y0, points)
+ If Fill > 0 Then
+ FillTriangle(x0, y0, x1, y1, x2, y2, points)
+ End If
+End Sub
+
+Private Sub FillTriangle(x0 As Int, y0 As Int, x1 As Int, y1 As Int, x2 As Int, y2 As Int, points(,) As Byte)
+ ' first sort the three vertices by y-coordinate ascending so v0 Is the topmost vertice */
+ Dim tx, ty As Int
+ If y0 > y1 Then
+ tx = x0 : ty = y0
+ x0 = x1 : y0 = y1
+ x1 = tx : y1 = ty
+ End If
+ If y0 > y2 Then
+ tx = x0 : ty = y0
+ x0 = x2 : y0 = y2
+ x2 = tx : y2 = ty
+ End If
+ If y1 > y2 Then
+ tx = x1 : ty = y1
+ x1 = x2 : y1 = y2
+ x2 = tx : y2 = ty
+ End If
+
+ Dim dx0, dx1, dx2 As Double
+ Dim x3, x4, y3, y4 As Double
+ Dim inc As Int
+
+ If y1 - y0 > 0 Then dx0=(x1-x0)/(y1-y0) Else dx0=0
+ If y2 - y0 > 0 Then dx1=(x2-x0)/(y2-y0) Else dx1=0
+ If y2 - y1 > 0 Then dx2=(x2-x1)/(y2-y1) Else dx2=0
+ x3 = x0 : x4 = x0
+ y3 = y0 : y4 = y0
+ If dx0 > dx1 Then
+ While
+ Do While y3 <= y1
+ If x3 > x4 Then inc = -1 Else inc = 1
+ For x = x3 To x4 Step inc
+ points(x, y3) = 1
+ Next
+ y3 = y3 + 1 : y4 = y4 + 1 : x3 = x3 + dx1 : x4 = x4 + dx0
+ Loop
+ x4=x1
+ y4=y1
+ Do While y3 <= y2
+ If x3 > x4 Then inc = -1 Else inc = 1
+ For x = x3 To x4 Step inc
+ points(x ,y3) = 1
+ Next
+ y3 = y3 + 1 : y4 = y4 + 1 : x3 = x3 + dx1 : x4 = x4 + dx2
+ Loop
+ Else
+ While
+ Do While y3 <= y1
+ If x3 > x4 Then inc = -1 Else inc = 1
+ For x = x3 To x4 Step inc
+ points(x, y3) = 1
+ Next
+ y3 = y3 + 1 : y4 = y4 + 1 : x3 = x3 + dx0 : x4 = x4 +dx1
+ Loop
+ x3=x1
+ y3=y1
+ Do While y3<=y2
+ If x3 > x4 Then inc = -1 Else inc = 1
+ For x = x3 To x4 Step inc
+ points(x, y3) = 1
+ Next
+ y3 = y3 + 1 : y4 = y4 + 1 : x3 = x3 + dx2 : x4 = x4 + dx1
+ Loop
+ End If
+End Sub
+
+Private Sub PlotBox(x0 As Int, y0 As Int, x1 As Int, y1 As Int, points(,) As Byte, Fill As Int)
+ ' This is a pretty crude algorithm, but it is simple, works and itsn't invoked often
+ PlotLine(x0, y0, x0, y1, points)
+ PlotLine(x0, y0, x1, y0, points)
+ PlotLine(x1, y0, x1, y1, points)
+ PlotLine(x0, y1, x1, y1, points)
+ If Fill > 0 Then
+ For x = x0 To x1
+ PlotLine(x, y0, x, y1, points)
+ Next
+ End If
+End Sub
+
+
+Private Sub PlotCircle(radius As Int, quadrants As Int, x1 As Int, y1 As Int, points(,) As Byte, fill As Int)
+ ' This is a pretty crude algorithm, but it is simple, works and itsn't invoked often
+ Dim mask As Int = 1
+ For q = 3 To 0 Step -1
+ If Bit.And(quadrants, mask) <> 0 Then
+ For i = q*90 To q*90+90 Step 1
+ Dim x,y As Double
+ x = x1 - SinD(i)*radius
+ y = y1 - CosD(i)*radius
+ If fill > 0 Then
+ PlotLine(x1, y1, x, y, points)
+ Else
+ points(Round(x), Round(y)) = 1
+ End If
+ Next
+ End If
+ mask = Bit.ShiftLeft(mask, 1)
+ Next
+End Sub
+
+' Bresenham's line algorithm - see Wikipedia
+Private Sub PlotLine(x0 As Int, y0 As Int, x1 As Int, y1 As Int, points(,) As Byte )
+ If Abs(y1 - y0) < Abs(x1 - x0) Then
+ If x0 > x1 Then
+ PlotLineLow(x1, y1, x0, y0, points)
+ Else
+ PlotLineLow(x0, y0, x1, y1, points)
+ End If
+ Else
+ If y0 > y1 Then
+ PlotLineHigh(x1, y1, x0, y0, points)
+ Else
+ PlotLineHigh(x0, y0, x1, y1, points)
+ End If
+ End If
+End Sub
+
+Private Sub PlotLineHigh(x0 As Int, y0 As Int, x1 As Int, y1 As Int, points(,) As Byte )
+ Dim dx As Int = x1 - x0
+ Dim dy As Int = y1 - y0
+ Dim xi As Int = 1
+ If dx < 0 Then
+ xi = -1
+ dx = -dx
+ End If
+ Dim D As Int = 2*dx - dy
+ Dim x As Int = x0
+ For y = y0 To y1
+ points(x,y) = 1
+ If D > 0 Then
+ x = x + xi
+ D = D - 2*dy
+ End If
+ D = D + 2*dx
+ Next
+End Sub
+
+Private Sub PlotLineLow(x0 As Int, y0 As Int, x1 As Int,y1 As Int, points(,) As Byte )
+ Dim dx As Int = x1 - x0
+ Dim dy As Int = y1 - y0
+ Dim yi As Int = 1
+ If dy < 0 Then
+ yi = -1
+ dy = -dy
+ End If
+ Dim D As Int = 2*dy - dx
+ Dim y As Int = y0
+ For x = x0 To x1
+ points(x,y) = 1
+ If D > 0 Then
+ y = y + yi
+ D = D - 2*dx
+ End If
+ D = D + 2*dy
+ Next
+End Sub
+
+
+'-------------------
+' Image commands
+'-------------------
+' There are two different image printing options with different pixel formats.
+' PrintImage prints an entire image at once with a maximum size of 576x512
+' PrintImage2 prints a slice of an image with a height of 8 or 24 and a maximum width of 576
+' One or other may look better on your particular printer
+
+' Printer support method for pre-processing images to print
+' Convert the bitmap supplied to an array of pixel values representing the luminance value of each original pixel
+Sub ImageToBWIMage(bmp As Bitmap) As AnImage
+ Dim BC As BitmapCreator 'ignore
+ Dim W As Int = bmp.Width
+ Dim H As Int = bmp.Height
+ Dim pixels(W * H) As Byte
+
+ For y = 0 To H - 1
+ For x = 0 To W - 1
+ Dim j As Int = bmp.GetPixel(x, y)
+ ' convert color to approximate luminance value
+ Dim col As ARGBColor
+ BC.ColorToARGB(j, col )
+ Dim lum As Int = col.r * 0.2 + col.b*0.1 + col.g*0.7
+ If lum> 255 Then lum = 255
+ ' save the pixel luminance
+ pixels(y*W + x) = lum
+ Next
+ Next
+ Dim ret As AnImage
+ ret.Width = bmp.Width
+ ret.Height = bmp.Height
+ ret.Data = pixels
+ Return ret
+End Sub
+
+' Printer support method for pre-processing images to print
+' Convert the array of luminance values to an array of 0s and 1s according to the threshold value
+Sub ThresholdImage(img As AnImage, threshold As Int) As AnImage 'ignore
+ Dim pixels(img.Data.Length) As Byte
+ For i = 0 To pixels.Length - 1
+ Dim lum As Int = Bit.And(img.Data(i), 0xff) ' bytes are signed values
+ If lum < threshold Then
+ lum = 1
+ Else
+ lum = 0
+ End If
+ pixels(i) = lum
+ Next
+ Dim ret As AnImage
+ ret.Width = img.Width
+ ret.Height = img.Height
+ ret.Data = pixels
+ Return ret
+End Sub
+
+' Printer support method for pre-processing images to print
+' Convert the array of luminance values to a dithered array of 0s and 1s according to the threshold value
+' The dithering algorithm is the simplest one-dimensional error diffusion algorithm
+' Normally threshold should be 128 but some images may look better with a little more or less.
+' This algorithm tends to produce vertical lines. DitherImage2D will probably look far better
+Sub DitherImage1D(img As AnImage, threshold As Int) As AnImage 'ignore
+ Dim pixels(img.Data.Length) As Byte
+ Dim error As Int
+ For y = 0 To img.Height - 1
+ error = 0 ' reset on each new line
+ For x = 0 To img.Width - 1
+ Dim lum As Int = Bit.And(img.Data(y*img.Width + x), 0xff) ' bytes are signed values
+ lum = lum + error
+ If lum < threshold Then
+ error = lum
+ lum = 1
+ Else
+ error = lum - 255
+ lum = 0
+ End If
+ pixels(y*img.Width + x) = lum
+ Next
+ Next
+ Dim ret As AnImage
+ ret.Width = img.Width
+ ret.Height = img.Height
+ ret.Data = pixels
+ Return ret
+End Sub
+
+
+' Printer support method for pre-processing images to print
+' Convert the array of luminance values to a dithered array of 0s and 1s according to the threshold value
+' The dithering algorithm is the simplest two-dimensional error diffusion algorithm
+' Normally threshold should be 128 but some images may look better with a little more or less.
+' Anything more sophisticated might be overkill considering the image quality of most thermal printers
+Sub DitherImage2D(img As AnImage, threshold As Int) As AnImage
+ Dim pixels(img.Data.Length) As Byte
+ Dim xerror As Int
+ Dim yerrors(img.Width) As Int
+ For i = 0 To yerrors.Length -1
+ yerrors(0) = 0
+ Next
+ For y = 0 To img.Height - 1
+ xerror = 0 ' reset on each new line
+ For x = 0 To img.Width - 1
+ Dim lum As Int = Bit.And(img.Data(y*img.Width + x), 0xff) ' bytes are signed values
+ lum = lum + xerror + yerrors(x)
+ If lum < threshold Then
+ xerror = lum/2
+ yerrors(x) = xerror
+ lum = 1
+ Else
+ xerror = (lum - 255)/2
+ yerrors(x) = xerror
+ lum = 0
+ End If
+ pixels(y*img.Width + x) = lum
+ Next
+ Next
+ Dim ret As AnImage
+ ret.Width = img.Width
+ ret.Height = img.Height
+ ret.Data = pixels
+ Return ret
+End Sub
+
+
+' GS v0 printing
+'---------------
+
+' Prints the given image at the specified height and width using the "GS v" command
+' Image data is supplied as bytes each containing 8 bits of horizontal image data
+' The top left of the image is Byte(0) and the bottom right is Byte(width*height-1)
+' MSB of the byte is the leftmost image pixel, the LSB is the rightmost
+' Maximum width is 72 bytes (576 bits), Maximum height is 512 bytes
+' The printed pixels are square
+' Returns status 0 : OK, -1 : too wide, -2 : too high, -3 : array too small
+' The printer can take a long time to process the data and start printing
+Public Sub PrintImage(img As AnImage) As Int
+ ' max width = 72 ' 72mm/576 bits wide
+ ' max height = 512 ' 64mm/512 bits high
+ If img.width > 72 Then Return -1
+ If img.height > 512 Then Return -2
+ If img.data.Length < img.width * img.height Then Return -3
+ Dim xh As Int = img.width / 256
+ Dim xl As Int = img.width - xh * 256
+ Dim yh As Int = img.height / 256
+ Dim yl As Int = img.height - yh * 256
+ Dim params(5) As Byte
+ params(0) = 0 '
+ params(1) = xl
+ params(2) = xh
+ params(3) = yl
+ params(4) = yh
+ WriteString(GS & "v0")
+ WriteBytes(params)
+ WriteBytes(img.data)
+ WriteString(CRLF)
+ Return 0
+End Sub
+
+' Printer support method for pre-processing images to print by PrintImage
+' Takes an array of image pixels and packs it for use with PrintImage
+' Each byte in the imagedata array is a single pixel valued zero or non-zero for white and black
+' The returned array is 8 x smaller and packs 8 horizontal black or white pixels into each byte
+' If the horizontal size of the image is not a multiple of 8 it will be truncated so that it is.
+Public Sub PackImage(imagedata As AnImage) As AnImage
+ Dim xbytes As Int = imagedata.width/8
+ Dim pixels(xbytes * imagedata.height) As Byte
+ Dim masks(8) As Byte
+ masks(0) = 0x80
+ masks(1) = 0x40
+ masks(2) = 0x20
+ masks(3) = 0x10
+ masks(4) = 0x08
+ masks(5) = 0x04
+ masks(6) = 0x02
+ masks(7) = 0x01
+ Dim index As Int = 0
+ For y = 0 To imagedata.Height - 1
+ For x = 0 To xbytes - 1
+ Dim xbyte As Byte = 0
+ For b = 0 To 7
+ ' get a pixel
+ Dim pix As Byte = imagedata.Data(index)
+ If pix <> 0 Then
+ xbyte = xbyte + masks(b)
+ End If
+ index = index + 1
+ Next
+ pixels(y*xbytes + x) = xbyte
+ Next
+ Next
+ Dim ret As AnImage
+ ret.Width = xbytes
+ ret.Height = imagedata.Height
+ ret.Data = pixels
+ Return ret
+End Sub
+
+
+' ESC * printing
+'---------------
+
+' Prints the given image slice at the specified height and width using the "ESC *" command
+' Image data is supplied as bytes each containing 8 bits of vertical image data
+' Pixels are not square, the width:height ratio varies with density and line height
+' Returns status 0 = OK, -1 = too wide, -2 = too high, -3 = wrong array length
+' Line spacing needs to be set to 0 if printing consecutive slices
+' The printed pixels are not square, the ratio varies with the highdensity and dots24 parameter settings
+' The highdensity parameter chooses high or low horizontal bit density when printed
+' The dots24 parameter chooses 8 or 24 bit data slice height when printed
+' Not(highdensity)
+' Maximum width is 288 bits. Horizontal dpi is approximately 90
+' MSB of each byte is the highest image pixel, the LSB is the lowest
+' highdensity
+' Maximum width is 576 bits. Horizontal dpi is approximately 180
+' Not(dots24)
+' Vertical printed height is 8 bits at approximately 60dpi
+' One byte in the data Array represents one vertical line when printed
+' Array size is the same as the width
+' MSB of each byte is the highest image pixel, the LSB is the lowest
+' dots24
+' Vertical printed height is 24 bits at approximately 180dpi
+' Three consecutive bytes in the data array represent one vertical 24bit line when printed
+' Array size is 3 times the width
+' Byte(n+0) is the highest, byte (n+2) us the lowest
+' MSB of each byte is the highest image pixel, the LSB is the lowest
+Public Sub PrintImage2(width As Int, data() As Byte, highdensity As Boolean, dotds24 As Boolean) As Int
+ Dim d As String = Chr(0)
+ If Not(highdensity) And Not(dotds24 ) Then
+ d = Chr(0)
+ If width > 288 Then Return -1
+ If data.Length <> width Then Return -3
+ Else If highdensity And Not(dotds24) Then
+ d = Chr(1)
+ If width > 576 Then Return -1
+ If data.Length <> width Then Return -3
+ Else If Not(highdensity) And dotds24 Then
+ d = Chr(32)
+ If width > 288 Then Return -1
+ If data.Length <> width*3 Then Return -3
+ Else ' highdensity And dotds24
+ d = Chr(33)
+ If width > 576 Then Return -1
+ If data.Length <> width*3 Then Return -3
+ End If
+ Dim xh As Int = width / 256
+ Dim xl As Int = width - xh * 256
+ Dim params(2) As Byte
+ params(0) = xl
+ params(1) = xh
+ WriteString(ESC & "*" & d)
+ WriteBytes(params)
+ WriteBytes(data)
+ WriteString(CRLF)
+ Return 0
+End Sub
+
+' Printer support method for pre-processing images to print by PrintImage2
+' Takes an array of image pixels and packs one slice of it for use with PrintImage2
+' Each byte in the imagedata array is a single pixel valued zero or non-zero for white and black
+' The returned array packs 8 vertical black or white pixels into each byte
+' If dots24 is True then the slice is 24 pixels high otherwise it is 8 pixels high
+Public Sub PackImageSlice(img As AnImage, slice As Int, dots24 As Boolean) As Byte()
+ Dim bytes As Int = img.width
+ If dots24 Then
+ Dim pixels(bytes * 3) As Byte
+ Dim slicestart As Int = slice * bytes * 8 * 3
+ Else
+ Dim pixels(bytes) As Byte
+ Dim slicestart As Int = slice * bytes * 8
+ End If
+
+ Dim masks(8) As Byte
+ masks(0) = 0x80
+ masks(1) = 0x40
+ masks(2) = 0x20
+ masks(3) = 0x10
+ masks(4) = 0x08
+ masks(5) = 0x04
+ masks(6) = 0x02
+ masks(7) = 0x01
+ ' You could compress this into a single code block but I left it as two to make it more obvious what's happening
+ If dots24 Then
+ For x = 0 To bytes - 1
+ For s = 0 To 2
+ Dim xbyte As Byte = 0
+ For b = 0 To 7
+ ' get a pixel
+ Dim pix As Byte = img.Data(slicestart + ((b + s*8) * bytes) + x)
+ If pix <> 0 Then
+ xbyte = xbyte + masks(b)
+ End If
+ Next
+ pixels(x*3+s) = xbyte
+ Next
+ Next
+ Else
+ For x = 0 To bytes - 1
+ Dim xbyte As Byte = 0
+ For b = 0 To 7
+ ' get a pixel
+ Dim pix As Byte = img.Data(slicestart + (b * bytes) + x)
+ If pix <> 0 Then
+ xbyte = xbyte + masks(b)
+ End If
+ Next
+ pixels(x) = xbyte
+ Next
+ End If
+ Return pixels
+End Sub
+
+'----------------
+'Barcode commands
+'----------------
+
+' Set the height of a 2D bar code as number of dots vertically, 1 to 255
+' Automatically resets to the default after printing the barcode
+Public Sub setBarCodeHeight(height As Int)
+ WriteString(GS & "h")
+ Dim params(1) As Byte
+ params(0) = height
+ WriteBytes(params)
+End Sub
+
+' Set the left inset of a 2D barcode, 0 to 255
+' This does not reset on receipt of RESET
+Public Sub setBarCodeLeft(left As Int)
+ WriteString(GS & "x")
+ Dim params(1) As Byte
+ params(0) = left
+ WriteBytes(params)
+End Sub
+
+' Set the width of each bar in a 2D barcode. width value is 2 to 6, default is 3
+' 2 = 0.250, 3 - 0.375, 4 = 0.560, 5 = 0.625, 6 = 0.75
+' Resets to default after printing the barcode
+Public Sub setBarCodeWidth(width As Int)
+ WriteString(GS & "w")
+ Dim params(1) As Byte
+ params(0) = width
+ WriteBytes(params)
+End Sub
+
+'Selects the printing position of HRI (Human Readable Interpretation) characters when printing a 2D bar code.
+'0 Not printed, 1 Above the bar code, 2 Below the bar code, 3 Both above And below the bar code
+' Automatically resets to the default of 0 after printing the barcode
+' The docs say this can be Chr(0, 1 2 or 3) or "0" "1" "2" or "3" but the numeric characters don't work
+Public Sub setHriPosn(posn As Int)
+ WriteString(GS & "H")
+ Dim params(1) As Byte
+ params(0) = posn
+ WriteBytes(params)
+End Sub
+
+'Selects the font for HRI (Human Readable Interpretation) characters when printing a 2D bar code.
+'0 Font A (12 x 24), 1 Font B (9 x 17)
+' Automatically resets to the default of 0 after printing the barcode
+' The docs say this can be Chr(0 or 1) or "0" or "1" but the numeric characters don't work
+Public Sub setHriFont(font As Int)
+ WriteString(GS & "f" & Chr(font))
+End Sub
+
+' If given invalid data no barcode is printed, only strange characters
+' CODABAR needs any of A,B,C or D at the start and end of the barcode. Some decoders may not like them anywhere else
+' Bartype Code Number of characters Permitted values
+' A | UPC-A | 11 or 12 characters | 0 to 9 | The 12th printed character is always the check digit
+' B | UPC-E | 6 characters | 0 to 9 | The 12th printed character is always the check digit
+' C | EAN13 | 12 or 13 characters | 0 to 9 | The 12th printed character is always the check digit
+' D | EAN8 | 7 or 8 characters | 0 to 9 | The 8th printed character is always the check digit
+' E | CODE39 | 1 or more characters | 0 to 9, A to Z, Space $ % + - . /
+' F | ITF | 1 or more characters | 0 to 9 | even number of characters only
+' G | CODABAR| 3 to 255 characters | 0 to 9, A to D, $ + - . / : | needs any of A,B,C or D at the start and end
+' H | CODE93 | 1 to 255 characters | Same as CODE39
+' I | CODE128| 2 to 255 characters | entire 7 bit ASCII set
+Public Sub WriteBarCode(bartype As String, data As String)
+ Dim databytes() As Byte = data.GetBytes("ASCII")
+ Dim dlow As Int = databytes.Length
+ Log("Barcode " & bartype & ", Size " & dlow & ", " & data)
+ WriteString(GS & "k" & bartype.ToUpperCase.CharAt(0))
+ Dim params(1) As Byte
+ params(0) = dlow
+ WriteBytes(params)
+ WriteBytes(databytes)
+End Sub
+
+' On my printer QR codes don't seem to be able to be decoded and on high ECs look obviously wrong :(
+' size is 1 to 40, 0 is auto-size. Successive versions increase module size by 4 each side
+' size = 1 is 21x21, 2 = 25x25 ... size 40 = 177x177
+' EC is error correction level, "L"(7%) or "M"(15%) or "Q"(25%) or "H"(30%)
+' scale is 1 to 8, 1 is smallest, 8 is largest
+Public Sub WriteQRCode(size As Int, EC As String, scale As Int, data As String)
+ Dim databytes() As Byte = data.GetBytes("ISO-8859-1")
+ Dim dhigh As Int = databytes.Length / 256
+ Dim dlow As Int = databytes.Length - dhigh*256
+ Log("QR Code : Size " & size & ", EC " & EC & ", Scale " & scale & ", Size " & dlow & " " & dhigh & " : Data = " & data)
+ Dim params(3) As Byte
+ params(0) = scale
+ params(1) = dlow
+ params(2) = dhigh
+ WriteString(ESC & "Z" & Chr(size) & EC.ToUpperCase.CharAt(0))
+ WriteBytes(params)
+ WriteBytes(databytes)
+End Sub
+
+
+'****************
+' PRIVATE METHODS
+'****************
+
+'-----------------------
+' Internal Serial Events
+'-----------------------
+
+Private Sub Serial1_Connected (Success As Boolean)
+ If Success Then
+ Astream.Initialize(Serial1.InputStream, Serial1.OutputStream, "astream")
+ Connected = True
+ ConnectedError = ""
+ Serial1.Listen
+ Else
+ Connected = False
+ ConnectedError = LastException.Message
+ End If
+ If SubExists(CallBack, EventName & "_Connected") Then
+ CallSub2(CallBack, EventName & "_Connected", Success)
+ End If
+End Sub
+
+'----------------------------
+' Internal AsyncStream Events
+'----------------------------
+
+Private Sub AStream_NewData (Buffer() As Byte)
+ If SubExists(CallBack, EventName & "_NewData") Then
+ CallSub2(CallBack, EventName & "_NewData", Buffer)
+ End If
+ Log("Data " & Buffer(0))
+End Sub
+
+Private Sub AStream_Error
+ If SubExists(CallBack, EventName & "_Error") Then
+ CallSub(CallBack, EventName & "_Error")
+ End If
+End Sub
+
+Private Sub AStream_Terminated
+ Connected = False
+ If SubExists(CallBack, EventName & "_Terminated") Then
+ CallSub(CallBack, EventName & "_Terminated")
+ End If
+End Sub
diff --git a/B4A/Files/WHATSTEL.jpeg b/B4A/Files/WHATSTEL.jpeg
new file mode 100644
index 0000000..5f50eb8
Binary files /dev/null and b/B4A/Files/WHATSTEL.jpeg differ
diff --git a/B4A/Files/WhatsApp Image 2022-11-17 at 11.50.59 AM.jpeg b/B4A/Files/WhatsApp Image 2022-11-17 at 11.50.59 AM.jpeg
new file mode 100644
index 0000000..03a496a
Binary files /dev/null and b/B4A/Files/WhatsApp Image 2022-11-17 at 11.50.59 AM.jpeg differ
diff --git a/B4A/Files/alcancia.png b/B4A/Files/alcancia.png
new file mode 100644
index 0000000..5f5cd3d
Binary files /dev/null and b/B4A/Files/alcancia.png differ
diff --git a/B4A/Files/alert2.png b/B4A/Files/alert2.png
new file mode 100644
index 0000000..44d3b7e
Binary files /dev/null and b/B4A/Files/alert2.png differ
diff --git a/B4A/Files/alerta.jpg b/B4A/Files/alerta.jpg
new file mode 100644
index 0000000..5edc6ba
Binary files /dev/null and b/B4A/Files/alerta.jpg differ
diff --git a/B4A/Files/alerta_amarilla.png b/B4A/Files/alerta_amarilla.png
new file mode 100644
index 0000000..4f4beac
Binary files /dev/null and b/B4A/Files/alerta_amarilla.png differ
diff --git a/B4A/Files/amarillo.png b/B4A/Files/amarillo.png
new file mode 100644
index 0000000..44e8c49
Binary files /dev/null and b/B4A/Files/amarillo.png differ
diff --git a/B4A/Files/anterior.jpg b/B4A/Files/anterior.jpg
new file mode 100644
index 0000000..48e56e4
Binary files /dev/null and b/B4A/Files/anterior.jpg differ
diff --git a/B4A/Files/blacnco.jpg b/B4A/Files/blacnco.jpg
new file mode 100644
index 0000000..1b44567
Binary files /dev/null and b/B4A/Files/blacnco.jpg differ
diff --git a/B4A/Files/carrito.png b/B4A/Files/carrito.png
new file mode 100644
index 0000000..03889f6
Binary files /dev/null and b/B4A/Files/carrito.png differ
diff --git a/B4A/Files/checklist.bal b/B4A/Files/checklist.bal
new file mode 100644
index 0000000..d05448b
Binary files /dev/null and b/B4A/Files/checklist.bal differ
diff --git a/B4A/Files/checks.bal b/B4A/Files/checks.bal
new file mode 100644
index 0000000..eac2be3
Binary files /dev/null and b/B4A/Files/checks.bal differ
diff --git a/B4A/Files/cliente.bal b/B4A/Files/cliente.bal
new file mode 100644
index 0000000..8766d14
Binary files /dev/null and b/B4A/Files/cliente.bal differ
diff --git a/B4A/Files/clientes.bal b/B4A/Files/clientes.bal
new file mode 100644
index 0000000..69852fe
Binary files /dev/null and b/B4A/Files/clientes.bal differ
diff --git a/B4A/Files/detalle_promo.bal b/B4A/Files/detalle_promo.bal
new file mode 100644
index 0000000..c696d91
Binary files /dev/null and b/B4A/Files/detalle_promo.bal differ
diff --git a/B4A/Files/durakelo.png b/B4A/Files/durakelo.png
new file mode 100644
index 0000000..e1c956c
Binary files /dev/null and b/B4A/Files/durakelo.png differ
diff --git a/B4A/Files/durakelo1.png b/B4A/Files/durakelo1.png
new file mode 100644
index 0000000..00cb434
Binary files /dev/null and b/B4A/Files/durakelo1.png differ
diff --git a/B4A/Files/engrane.jpg b/B4A/Files/engrane.jpg
new file mode 100644
index 0000000..01159de
Binary files /dev/null and b/B4A/Files/engrane.jpg differ
diff --git a/B4A/Files/engrane.png b/B4A/Files/engrane.png
new file mode 100644
index 0000000..5d27e8e
Binary files /dev/null and b/B4A/Files/engrane.png differ
diff --git a/B4A/Files/errormanager.bal b/B4A/Files/errormanager.bal
new file mode 100644
index 0000000..ff0d659
Binary files /dev/null and b/B4A/Files/errormanager.bal differ
diff --git a/B4A/Files/fondo_kmt.jpg b/B4A/Files/fondo_kmt.jpg
new file mode 100644
index 0000000..4055faf
Binary files /dev/null and b/B4A/Files/fondo_kmt.jpg differ
diff --git a/B4A/Files/foto.bal b/B4A/Files/foto.bal
new file mode 100644
index 0000000..a6ed4a6
Binary files /dev/null and b/B4A/Files/foto.bal differ
diff --git a/B4A/Files/foto1.jpg b/B4A/Files/foto1.jpg
new file mode 100644
index 0000000..88a6820
Binary files /dev/null and b/B4A/Files/foto1.jpg differ
diff --git a/B4A/Files/foto2.jpg b/B4A/Files/foto2.jpg
new file mode 100644
index 0000000..ecdc104
Binary files /dev/null and b/B4A/Files/foto2.jpg differ
diff --git a/B4A/Files/foto3.jpg b/B4A/Files/foto3.jpg
new file mode 100644
index 0000000..6179697
Binary files /dev/null and b/B4A/Files/foto3.jpg differ
diff --git a/B4A/Files/foto4.jpg b/B4A/Files/foto4.jpg
new file mode 100644
index 0000000..9828b3e
Binary files /dev/null and b/B4A/Files/foto4.jpg differ
diff --git a/B4A/Files/guardagestion.bal b/B4A/Files/guardagestion.bal
new file mode 100644
index 0000000..b5b5216
Binary files /dev/null and b/B4A/Files/guardagestion.bal differ
diff --git a/B4A/Files/guna_viejo.png b/B4A/Files/guna_viejo.png
new file mode 100644
index 0000000..d937027
Binary files /dev/null and b/B4A/Files/guna_viejo.png differ
diff --git a/B4A/Files/historico.bal b/B4A/Files/historico.bal
new file mode 100644
index 0000000..a70aeb1
Binary files /dev/null and b/B4A/Files/historico.bal differ
diff --git a/B4A/Files/info_gral.resp b/B4A/Files/info_gral.resp
new file mode 100644
index 0000000..85c1dc6
Binary files /dev/null and b/B4A/Files/info_gral.resp differ
diff --git a/B4A/Files/infonavit1.jpg b/B4A/Files/infonavit1.jpg
new file mode 100644
index 0000000..b8cce4c
Binary files /dev/null and b/B4A/Files/infonavit1.jpg differ
diff --git a/B4A/Files/inventario (1).jpg b/B4A/Files/inventario (1).jpg
new file mode 100644
index 0000000..1eccaf3
Binary files /dev/null and b/B4A/Files/inventario (1).jpg differ
diff --git a/B4A/Files/inventario.jpg b/B4A/Files/inventario.jpg
new file mode 100644
index 0000000..1b5fd18
Binary files /dev/null and b/B4A/Files/inventario.jpg differ
diff --git a/B4A/Files/inventario.png b/B4A/Files/inventario.png
new file mode 100644
index 0000000..952429d
Binary files /dev/null and b/B4A/Files/inventario.png differ
diff --git a/B4A/Files/itembuttonblue.png b/B4A/Files/itembuttonblue.png
new file mode 100644
index 0000000..af4dc0b
Binary files /dev/null and b/B4A/Files/itembuttonblue.png differ
diff --git a/B4A/Files/itembuttonred.png b/B4A/Files/itembuttonred.png
new file mode 100644
index 0000000..312b8b8
Binary files /dev/null and b/B4A/Files/itembuttonred.png differ
diff --git a/B4A/Files/kelloggs.png b/B4A/Files/kelloggs.png
new file mode 100644
index 0000000..427e8fa
Binary files /dev/null and b/B4A/Files/kelloggs.png differ
diff --git a/B4A/Files/kelloggs2.jpg b/B4A/Files/kelloggs2.jpg
new file mode 100644
index 0000000..74afa95
Binary files /dev/null and b/B4A/Files/kelloggs2.jpg differ
diff --git a/B4A/Files/kelloggs2.png b/B4A/Files/kelloggs2.png
new file mode 100644
index 0000000..4c7fa2c
Binary files /dev/null and b/B4A/Files/kelloggs2.png differ
diff --git a/B4A/Files/keymon_logo.png b/B4A/Files/keymon_logo.png
new file mode 100644
index 0000000..945e546
Binary files /dev/null and b/B4A/Files/keymon_logo.png differ
diff --git a/B4A/Files/kmt.db b/B4A/Files/kmt.db
new file mode 100644
index 0000000..6d9dc45
Binary files /dev/null and b/B4A/Files/kmt.db differ
diff --git a/B4A/Files/login.bal b/B4A/Files/login.bal
new file mode 100644
index 0000000..1c3900e
Binary files /dev/null and b/B4A/Files/login.bal differ
diff --git a/B4A/Files/logo sanfer.jpg b/B4A/Files/logo sanfer.jpg
new file mode 100644
index 0000000..791fe4f
Binary files /dev/null and b/B4A/Files/logo sanfer.jpg differ
diff --git a/B4A/Files/logo2.png b/B4A/Files/logo2.png
new file mode 100644
index 0000000..6c8b479
Binary files /dev/null and b/B4A/Files/logo2.png differ
diff --git a/B4A/Files/logo2_192x192.png b/B4A/Files/logo2_192x192.png
new file mode 100644
index 0000000..d979ea0
Binary files /dev/null and b/B4A/Files/logo2_192x192.png differ
diff --git a/B4A/Files/logo_exitus1.jpg b/B4A/Files/logo_exitus1.jpg
new file mode 100644
index 0000000..b8cce4c
Binary files /dev/null and b/B4A/Files/logo_exitus1.jpg differ
diff --git a/B4A/Files/mainpage.bal b/B4A/Files/mainpage.bal
new file mode 100644
index 0000000..acba0d3
Binary files /dev/null and b/B4A/Files/mainpage.bal differ
diff --git a/B4A/Files/malo.jpg b/B4A/Files/malo.jpg
new file mode 100644
index 0000000..bbf3c87
Binary files /dev/null and b/B4A/Files/malo.jpg differ
diff --git a/B4A/Files/mapa.bal b/B4A/Files/mapa.bal
new file mode 100644
index 0000000..de2f3ab
Binary files /dev/null and b/B4A/Files/mapa.bal differ
diff --git a/B4A/Files/mapa_rutas.bal b/B4A/Files/mapa_rutas.bal
new file mode 100644
index 0000000..3da2b5d
Binary files /dev/null and b/B4A/Files/mapa_rutas.bal differ
diff --git a/B4A/Files/mapas.bal b/B4A/Files/mapas.bal
new file mode 100644
index 0000000..27ff766
Binary files /dev/null and b/B4A/Files/mapas.bal differ
diff --git a/B4A/Files/marker-azul-0.png b/B4A/Files/marker-azul-0.png
new file mode 100644
index 0000000..17a8f6b
Binary files /dev/null and b/B4A/Files/marker-azul-0.png differ
diff --git a/B4A/Files/marker-azul-1.png b/B4A/Files/marker-azul-1.png
new file mode 100644
index 0000000..899d8e1
Binary files /dev/null and b/B4A/Files/marker-azul-1.png differ
diff --git a/B4A/Files/marker-azul-10.png b/B4A/Files/marker-azul-10.png
new file mode 100644
index 0000000..ec613c7
Binary files /dev/null and b/B4A/Files/marker-azul-10.png differ
diff --git a/B4A/Files/marker-azul-100.png b/B4A/Files/marker-azul-100.png
new file mode 100644
index 0000000..45793a2
Binary files /dev/null and b/B4A/Files/marker-azul-100.png differ
diff --git a/B4A/Files/marker-azul-11.png b/B4A/Files/marker-azul-11.png
new file mode 100644
index 0000000..473dfd2
Binary files /dev/null and b/B4A/Files/marker-azul-11.png differ
diff --git a/B4A/Files/marker-azul-12.png b/B4A/Files/marker-azul-12.png
new file mode 100644
index 0000000..92aa8f5
Binary files /dev/null and b/B4A/Files/marker-azul-12.png differ
diff --git a/B4A/Files/marker-azul-13.png b/B4A/Files/marker-azul-13.png
new file mode 100644
index 0000000..af75744
Binary files /dev/null and b/B4A/Files/marker-azul-13.png differ
diff --git a/B4A/Files/marker-azul-14.png b/B4A/Files/marker-azul-14.png
new file mode 100644
index 0000000..d477221
Binary files /dev/null and b/B4A/Files/marker-azul-14.png differ
diff --git a/B4A/Files/marker-azul-15.png b/B4A/Files/marker-azul-15.png
new file mode 100644
index 0000000..97d8538
Binary files /dev/null and b/B4A/Files/marker-azul-15.png differ
diff --git a/B4A/Files/marker-azul-16.png b/B4A/Files/marker-azul-16.png
new file mode 100644
index 0000000..e8a9951
Binary files /dev/null and b/B4A/Files/marker-azul-16.png differ
diff --git a/B4A/Files/marker-azul-17.png b/B4A/Files/marker-azul-17.png
new file mode 100644
index 0000000..b6d0538
Binary files /dev/null and b/B4A/Files/marker-azul-17.png differ
diff --git a/B4A/Files/marker-azul-18.png b/B4A/Files/marker-azul-18.png
new file mode 100644
index 0000000..068a465
Binary files /dev/null and b/B4A/Files/marker-azul-18.png differ
diff --git a/B4A/Files/marker-azul-19.png b/B4A/Files/marker-azul-19.png
new file mode 100644
index 0000000..d9da3c9
Binary files /dev/null and b/B4A/Files/marker-azul-19.png differ
diff --git a/B4A/Files/marker-azul-2.png b/B4A/Files/marker-azul-2.png
new file mode 100644
index 0000000..0442732
Binary files /dev/null and b/B4A/Files/marker-azul-2.png differ
diff --git a/B4A/Files/marker-azul-20.png b/B4A/Files/marker-azul-20.png
new file mode 100644
index 0000000..5eaae1a
Binary files /dev/null and b/B4A/Files/marker-azul-20.png differ
diff --git a/B4A/Files/marker-azul-21.png b/B4A/Files/marker-azul-21.png
new file mode 100644
index 0000000..6461085
Binary files /dev/null and b/B4A/Files/marker-azul-21.png differ
diff --git a/B4A/Files/marker-azul-22.png b/B4A/Files/marker-azul-22.png
new file mode 100644
index 0000000..16fe14b
Binary files /dev/null and b/B4A/Files/marker-azul-22.png differ
diff --git a/B4A/Files/marker-azul-23.png b/B4A/Files/marker-azul-23.png
new file mode 100644
index 0000000..6006f4d
Binary files /dev/null and b/B4A/Files/marker-azul-23.png differ
diff --git a/B4A/Files/marker-azul-24.png b/B4A/Files/marker-azul-24.png
new file mode 100644
index 0000000..b747dcb
Binary files /dev/null and b/B4A/Files/marker-azul-24.png differ
diff --git a/B4A/Files/marker-azul-25.png b/B4A/Files/marker-azul-25.png
new file mode 100644
index 0000000..8b7f0fc
Binary files /dev/null and b/B4A/Files/marker-azul-25.png differ
diff --git a/B4A/Files/marker-azul-26.png b/B4A/Files/marker-azul-26.png
new file mode 100644
index 0000000..08de106
Binary files /dev/null and b/B4A/Files/marker-azul-26.png differ
diff --git a/B4A/Files/marker-azul-27.png b/B4A/Files/marker-azul-27.png
new file mode 100644
index 0000000..f3b4058
Binary files /dev/null and b/B4A/Files/marker-azul-27.png differ
diff --git a/B4A/Files/marker-azul-28.png b/B4A/Files/marker-azul-28.png
new file mode 100644
index 0000000..30eb4e4
Binary files /dev/null and b/B4A/Files/marker-azul-28.png differ
diff --git a/B4A/Files/marker-azul-29.png b/B4A/Files/marker-azul-29.png
new file mode 100644
index 0000000..66bc0c1
Binary files /dev/null and b/B4A/Files/marker-azul-29.png differ
diff --git a/B4A/Files/marker-azul-3.png b/B4A/Files/marker-azul-3.png
new file mode 100644
index 0000000..0de2d16
Binary files /dev/null and b/B4A/Files/marker-azul-3.png differ
diff --git a/B4A/Files/marker-azul-30.png b/B4A/Files/marker-azul-30.png
new file mode 100644
index 0000000..613f60d
Binary files /dev/null and b/B4A/Files/marker-azul-30.png differ
diff --git a/B4A/Files/marker-azul-31.png b/B4A/Files/marker-azul-31.png
new file mode 100644
index 0000000..1282d99
Binary files /dev/null and b/B4A/Files/marker-azul-31.png differ
diff --git a/B4A/Files/marker-azul-32.png b/B4A/Files/marker-azul-32.png
new file mode 100644
index 0000000..eb87a1d
Binary files /dev/null and b/B4A/Files/marker-azul-32.png differ
diff --git a/B4A/Files/marker-azul-33.png b/B4A/Files/marker-azul-33.png
new file mode 100644
index 0000000..0da4e53
Binary files /dev/null and b/B4A/Files/marker-azul-33.png differ
diff --git a/B4A/Files/marker-azul-34.png b/B4A/Files/marker-azul-34.png
new file mode 100644
index 0000000..9c398e8
Binary files /dev/null and b/B4A/Files/marker-azul-34.png differ
diff --git a/B4A/Files/marker-azul-35.png b/B4A/Files/marker-azul-35.png
new file mode 100644
index 0000000..ef09cd8
Binary files /dev/null and b/B4A/Files/marker-azul-35.png differ
diff --git a/B4A/Files/marker-azul-36.png b/B4A/Files/marker-azul-36.png
new file mode 100644
index 0000000..f2819af
Binary files /dev/null and b/B4A/Files/marker-azul-36.png differ
diff --git a/B4A/Files/marker-azul-37.png b/B4A/Files/marker-azul-37.png
new file mode 100644
index 0000000..856fce2
Binary files /dev/null and b/B4A/Files/marker-azul-37.png differ
diff --git a/B4A/Files/marker-azul-38.png b/B4A/Files/marker-azul-38.png
new file mode 100644
index 0000000..016bd9f
Binary files /dev/null and b/B4A/Files/marker-azul-38.png differ
diff --git a/B4A/Files/marker-azul-39.png b/B4A/Files/marker-azul-39.png
new file mode 100644
index 0000000..a73f734
Binary files /dev/null and b/B4A/Files/marker-azul-39.png differ
diff --git a/B4A/Files/marker-azul-4.png b/B4A/Files/marker-azul-4.png
new file mode 100644
index 0000000..26be4c1
Binary files /dev/null and b/B4A/Files/marker-azul-4.png differ
diff --git a/B4A/Files/marker-azul-40.png b/B4A/Files/marker-azul-40.png
new file mode 100644
index 0000000..33c5d5f
Binary files /dev/null and b/B4A/Files/marker-azul-40.png differ
diff --git a/B4A/Files/marker-azul-41.png b/B4A/Files/marker-azul-41.png
new file mode 100644
index 0000000..09fd1d0
Binary files /dev/null and b/B4A/Files/marker-azul-41.png differ
diff --git a/B4A/Files/marker-azul-42.png b/B4A/Files/marker-azul-42.png
new file mode 100644
index 0000000..09f032f
Binary files /dev/null and b/B4A/Files/marker-azul-42.png differ
diff --git a/B4A/Files/marker-azul-43.png b/B4A/Files/marker-azul-43.png
new file mode 100644
index 0000000..55ee249
Binary files /dev/null and b/B4A/Files/marker-azul-43.png differ
diff --git a/B4A/Files/marker-azul-44.png b/B4A/Files/marker-azul-44.png
new file mode 100644
index 0000000..acde8e4
Binary files /dev/null and b/B4A/Files/marker-azul-44.png differ
diff --git a/B4A/Files/marker-azul-45.png b/B4A/Files/marker-azul-45.png
new file mode 100644
index 0000000..e646d8e
Binary files /dev/null and b/B4A/Files/marker-azul-45.png differ
diff --git a/B4A/Files/marker-azul-46.png b/B4A/Files/marker-azul-46.png
new file mode 100644
index 0000000..dd25e3b
Binary files /dev/null and b/B4A/Files/marker-azul-46.png differ
diff --git a/B4A/Files/marker-azul-47.png b/B4A/Files/marker-azul-47.png
new file mode 100644
index 0000000..77fd47c
Binary files /dev/null and b/B4A/Files/marker-azul-47.png differ
diff --git a/B4A/Files/marker-azul-48.png b/B4A/Files/marker-azul-48.png
new file mode 100644
index 0000000..40c0bbc
Binary files /dev/null and b/B4A/Files/marker-azul-48.png differ
diff --git a/B4A/Files/marker-azul-49.png b/B4A/Files/marker-azul-49.png
new file mode 100644
index 0000000..49a852a
Binary files /dev/null and b/B4A/Files/marker-azul-49.png differ
diff --git a/B4A/Files/marker-azul-5.png b/B4A/Files/marker-azul-5.png
new file mode 100644
index 0000000..bf12336
Binary files /dev/null and b/B4A/Files/marker-azul-5.png differ
diff --git a/B4A/Files/marker-azul-50.png b/B4A/Files/marker-azul-50.png
new file mode 100644
index 0000000..f67e274
Binary files /dev/null and b/B4A/Files/marker-azul-50.png differ
diff --git a/B4A/Files/marker-azul-51.png b/B4A/Files/marker-azul-51.png
new file mode 100644
index 0000000..b9be7b6
Binary files /dev/null and b/B4A/Files/marker-azul-51.png differ
diff --git a/B4A/Files/marker-azul-52.png b/B4A/Files/marker-azul-52.png
new file mode 100644
index 0000000..1115bd0
Binary files /dev/null and b/B4A/Files/marker-azul-52.png differ
diff --git a/B4A/Files/marker-azul-53.png b/B4A/Files/marker-azul-53.png
new file mode 100644
index 0000000..b0ccc4d
Binary files /dev/null and b/B4A/Files/marker-azul-53.png differ
diff --git a/B4A/Files/marker-azul-54.png b/B4A/Files/marker-azul-54.png
new file mode 100644
index 0000000..5b4c8cb
Binary files /dev/null and b/B4A/Files/marker-azul-54.png differ
diff --git a/B4A/Files/marker-azul-55.png b/B4A/Files/marker-azul-55.png
new file mode 100644
index 0000000..1499701
Binary files /dev/null and b/B4A/Files/marker-azul-55.png differ
diff --git a/B4A/Files/marker-azul-56.png b/B4A/Files/marker-azul-56.png
new file mode 100644
index 0000000..85b27ba
Binary files /dev/null and b/B4A/Files/marker-azul-56.png differ
diff --git a/B4A/Files/marker-azul-57.png b/B4A/Files/marker-azul-57.png
new file mode 100644
index 0000000..bb71e82
Binary files /dev/null and b/B4A/Files/marker-azul-57.png differ
diff --git a/B4A/Files/marker-azul-58.png b/B4A/Files/marker-azul-58.png
new file mode 100644
index 0000000..f593e65
Binary files /dev/null and b/B4A/Files/marker-azul-58.png differ
diff --git a/B4A/Files/marker-azul-59.png b/B4A/Files/marker-azul-59.png
new file mode 100644
index 0000000..0f7d449
Binary files /dev/null and b/B4A/Files/marker-azul-59.png differ
diff --git a/B4A/Files/marker-azul-6.png b/B4A/Files/marker-azul-6.png
new file mode 100644
index 0000000..38021e6
Binary files /dev/null and b/B4A/Files/marker-azul-6.png differ
diff --git a/B4A/Files/marker-azul-60.png b/B4A/Files/marker-azul-60.png
new file mode 100644
index 0000000..cf5d8df
Binary files /dev/null and b/B4A/Files/marker-azul-60.png differ
diff --git a/B4A/Files/marker-azul-61.png b/B4A/Files/marker-azul-61.png
new file mode 100644
index 0000000..e0e58c4
Binary files /dev/null and b/B4A/Files/marker-azul-61.png differ
diff --git a/B4A/Files/marker-azul-62.png b/B4A/Files/marker-azul-62.png
new file mode 100644
index 0000000..4a53f2f
Binary files /dev/null and b/B4A/Files/marker-azul-62.png differ
diff --git a/B4A/Files/marker-azul-63.png b/B4A/Files/marker-azul-63.png
new file mode 100644
index 0000000..f679f01
Binary files /dev/null and b/B4A/Files/marker-azul-63.png differ
diff --git a/B4A/Files/marker-azul-64.png b/B4A/Files/marker-azul-64.png
new file mode 100644
index 0000000..ebe5a9e
Binary files /dev/null and b/B4A/Files/marker-azul-64.png differ
diff --git a/B4A/Files/marker-azul-65.png b/B4A/Files/marker-azul-65.png
new file mode 100644
index 0000000..be9a15c
Binary files /dev/null and b/B4A/Files/marker-azul-65.png differ
diff --git a/B4A/Files/marker-azul-66.png b/B4A/Files/marker-azul-66.png
new file mode 100644
index 0000000..50f342b
Binary files /dev/null and b/B4A/Files/marker-azul-66.png differ
diff --git a/B4A/Files/marker-azul-67.png b/B4A/Files/marker-azul-67.png
new file mode 100644
index 0000000..8aa412a
Binary files /dev/null and b/B4A/Files/marker-azul-67.png differ
diff --git a/B4A/Files/marker-azul-68.png b/B4A/Files/marker-azul-68.png
new file mode 100644
index 0000000..09c887b
Binary files /dev/null and b/B4A/Files/marker-azul-68.png differ
diff --git a/B4A/Files/marker-azul-69.png b/B4A/Files/marker-azul-69.png
new file mode 100644
index 0000000..ed2e8a7
Binary files /dev/null and b/B4A/Files/marker-azul-69.png differ
diff --git a/B4A/Files/marker-azul-7.png b/B4A/Files/marker-azul-7.png
new file mode 100644
index 0000000..8413c29
Binary files /dev/null and b/B4A/Files/marker-azul-7.png differ
diff --git a/B4A/Files/marker-azul-70.png b/B4A/Files/marker-azul-70.png
new file mode 100644
index 0000000..0c1c482
Binary files /dev/null and b/B4A/Files/marker-azul-70.png differ
diff --git a/B4A/Files/marker-azul-71.png b/B4A/Files/marker-azul-71.png
new file mode 100644
index 0000000..905b19e
Binary files /dev/null and b/B4A/Files/marker-azul-71.png differ
diff --git a/B4A/Files/marker-azul-72.png b/B4A/Files/marker-azul-72.png
new file mode 100644
index 0000000..cfb4098
Binary files /dev/null and b/B4A/Files/marker-azul-72.png differ
diff --git a/B4A/Files/marker-azul-73.png b/B4A/Files/marker-azul-73.png
new file mode 100644
index 0000000..511f0e7
Binary files /dev/null and b/B4A/Files/marker-azul-73.png differ
diff --git a/B4A/Files/marker-azul-74.png b/B4A/Files/marker-azul-74.png
new file mode 100644
index 0000000..02bd35e
Binary files /dev/null and b/B4A/Files/marker-azul-74.png differ
diff --git a/B4A/Files/marker-azul-75.png b/B4A/Files/marker-azul-75.png
new file mode 100644
index 0000000..01493a0
Binary files /dev/null and b/B4A/Files/marker-azul-75.png differ
diff --git a/B4A/Files/marker-azul-76.png b/B4A/Files/marker-azul-76.png
new file mode 100644
index 0000000..0d5aa06
Binary files /dev/null and b/B4A/Files/marker-azul-76.png differ
diff --git a/B4A/Files/marker-azul-77.png b/B4A/Files/marker-azul-77.png
new file mode 100644
index 0000000..a3f9457
Binary files /dev/null and b/B4A/Files/marker-azul-77.png differ
diff --git a/B4A/Files/marker-azul-78.png b/B4A/Files/marker-azul-78.png
new file mode 100644
index 0000000..e01d1da
Binary files /dev/null and b/B4A/Files/marker-azul-78.png differ
diff --git a/B4A/Files/marker-azul-79.png b/B4A/Files/marker-azul-79.png
new file mode 100644
index 0000000..438248d
Binary files /dev/null and b/B4A/Files/marker-azul-79.png differ
diff --git a/B4A/Files/marker-azul-8.png b/B4A/Files/marker-azul-8.png
new file mode 100644
index 0000000..c4afaa5
Binary files /dev/null and b/B4A/Files/marker-azul-8.png differ
diff --git a/B4A/Files/marker-azul-80.png b/B4A/Files/marker-azul-80.png
new file mode 100644
index 0000000..438406c
Binary files /dev/null and b/B4A/Files/marker-azul-80.png differ
diff --git a/B4A/Files/marker-azul-81.png b/B4A/Files/marker-azul-81.png
new file mode 100644
index 0000000..ba7b5a8
Binary files /dev/null and b/B4A/Files/marker-azul-81.png differ
diff --git a/B4A/Files/marker-azul-82.png b/B4A/Files/marker-azul-82.png
new file mode 100644
index 0000000..6d4471b
Binary files /dev/null and b/B4A/Files/marker-azul-82.png differ
diff --git a/B4A/Files/marker-azul-83.png b/B4A/Files/marker-azul-83.png
new file mode 100644
index 0000000..0adbcf0
Binary files /dev/null and b/B4A/Files/marker-azul-83.png differ
diff --git a/B4A/Files/marker-azul-84.png b/B4A/Files/marker-azul-84.png
new file mode 100644
index 0000000..181af1f
Binary files /dev/null and b/B4A/Files/marker-azul-84.png differ
diff --git a/B4A/Files/marker-azul-85.png b/B4A/Files/marker-azul-85.png
new file mode 100644
index 0000000..1a7a81a
Binary files /dev/null and b/B4A/Files/marker-azul-85.png differ
diff --git a/B4A/Files/marker-azul-86.png b/B4A/Files/marker-azul-86.png
new file mode 100644
index 0000000..6a8ed41
Binary files /dev/null and b/B4A/Files/marker-azul-86.png differ
diff --git a/B4A/Files/marker-azul-87.png b/B4A/Files/marker-azul-87.png
new file mode 100644
index 0000000..5833b00
Binary files /dev/null and b/B4A/Files/marker-azul-87.png differ
diff --git a/B4A/Files/marker-azul-88.png b/B4A/Files/marker-azul-88.png
new file mode 100644
index 0000000..9726f25
Binary files /dev/null and b/B4A/Files/marker-azul-88.png differ
diff --git a/B4A/Files/marker-azul-89.png b/B4A/Files/marker-azul-89.png
new file mode 100644
index 0000000..98a88f8
Binary files /dev/null and b/B4A/Files/marker-azul-89.png differ
diff --git a/B4A/Files/marker-azul-9.png b/B4A/Files/marker-azul-9.png
new file mode 100644
index 0000000..6db0a59
Binary files /dev/null and b/B4A/Files/marker-azul-9.png differ
diff --git a/B4A/Files/marker-azul-90.png b/B4A/Files/marker-azul-90.png
new file mode 100644
index 0000000..83278bd
Binary files /dev/null and b/B4A/Files/marker-azul-90.png differ
diff --git a/B4A/Files/marker-azul-91.png b/B4A/Files/marker-azul-91.png
new file mode 100644
index 0000000..8765559
Binary files /dev/null and b/B4A/Files/marker-azul-91.png differ
diff --git a/B4A/Files/marker-azul-92.png b/B4A/Files/marker-azul-92.png
new file mode 100644
index 0000000..b5838e5
Binary files /dev/null and b/B4A/Files/marker-azul-92.png differ
diff --git a/B4A/Files/marker-azul-93.png b/B4A/Files/marker-azul-93.png
new file mode 100644
index 0000000..6d4f390
Binary files /dev/null and b/B4A/Files/marker-azul-93.png differ
diff --git a/B4A/Files/marker-azul-94.png b/B4A/Files/marker-azul-94.png
new file mode 100644
index 0000000..702beff
Binary files /dev/null and b/B4A/Files/marker-azul-94.png differ
diff --git a/B4A/Files/marker-azul-95.png b/B4A/Files/marker-azul-95.png
new file mode 100644
index 0000000..67e9be2
Binary files /dev/null and b/B4A/Files/marker-azul-95.png differ
diff --git a/B4A/Files/marker-azul-96.png b/B4A/Files/marker-azul-96.png
new file mode 100644
index 0000000..7f7d1f4
Binary files /dev/null and b/B4A/Files/marker-azul-96.png differ
diff --git a/B4A/Files/marker-azul-97.png b/B4A/Files/marker-azul-97.png
new file mode 100644
index 0000000..bb83f5f
Binary files /dev/null and b/B4A/Files/marker-azul-97.png differ
diff --git a/B4A/Files/marker-azul-98.png b/B4A/Files/marker-azul-98.png
new file mode 100644
index 0000000..1baf391
Binary files /dev/null and b/B4A/Files/marker-azul-98.png differ
diff --git a/B4A/Files/marker-azul-99.png b/B4A/Files/marker-azul-99.png
new file mode 100644
index 0000000..3a8e4dc
Binary files /dev/null and b/B4A/Files/marker-azul-99.png differ
diff --git a/B4A/Files/marker-rojo-0.png b/B4A/Files/marker-rojo-0.png
new file mode 100644
index 0000000..c2f508a
Binary files /dev/null and b/B4A/Files/marker-rojo-0.png differ
diff --git a/B4A/Files/marker-rojo-1.png b/B4A/Files/marker-rojo-1.png
new file mode 100644
index 0000000..4a38c88
Binary files /dev/null and b/B4A/Files/marker-rojo-1.png differ
diff --git a/B4A/Files/marker-rojo-10.png b/B4A/Files/marker-rojo-10.png
new file mode 100644
index 0000000..878642f
Binary files /dev/null and b/B4A/Files/marker-rojo-10.png differ
diff --git a/B4A/Files/marker-rojo-100.png b/B4A/Files/marker-rojo-100.png
new file mode 100644
index 0000000..3cf987b
Binary files /dev/null and b/B4A/Files/marker-rojo-100.png differ
diff --git a/B4A/Files/marker-rojo-11.png b/B4A/Files/marker-rojo-11.png
new file mode 100644
index 0000000..89598b8
Binary files /dev/null and b/B4A/Files/marker-rojo-11.png differ
diff --git a/B4A/Files/marker-rojo-12.png b/B4A/Files/marker-rojo-12.png
new file mode 100644
index 0000000..7eb6c40
Binary files /dev/null and b/B4A/Files/marker-rojo-12.png differ
diff --git a/B4A/Files/marker-rojo-13.png b/B4A/Files/marker-rojo-13.png
new file mode 100644
index 0000000..093e073
Binary files /dev/null and b/B4A/Files/marker-rojo-13.png differ
diff --git a/B4A/Files/marker-rojo-14.png b/B4A/Files/marker-rojo-14.png
new file mode 100644
index 0000000..b0065d7
Binary files /dev/null and b/B4A/Files/marker-rojo-14.png differ
diff --git a/B4A/Files/marker-rojo-15.png b/B4A/Files/marker-rojo-15.png
new file mode 100644
index 0000000..ba35cef
Binary files /dev/null and b/B4A/Files/marker-rojo-15.png differ
diff --git a/B4A/Files/marker-rojo-16.png b/B4A/Files/marker-rojo-16.png
new file mode 100644
index 0000000..43d6533
Binary files /dev/null and b/B4A/Files/marker-rojo-16.png differ
diff --git a/B4A/Files/marker-rojo-17.png b/B4A/Files/marker-rojo-17.png
new file mode 100644
index 0000000..4b3a15b
Binary files /dev/null and b/B4A/Files/marker-rojo-17.png differ
diff --git a/B4A/Files/marker-rojo-18.png b/B4A/Files/marker-rojo-18.png
new file mode 100644
index 0000000..13deb65
Binary files /dev/null and b/B4A/Files/marker-rojo-18.png differ
diff --git a/B4A/Files/marker-rojo-19.png b/B4A/Files/marker-rojo-19.png
new file mode 100644
index 0000000..37bf798
Binary files /dev/null and b/B4A/Files/marker-rojo-19.png differ
diff --git a/B4A/Files/marker-rojo-2.png b/B4A/Files/marker-rojo-2.png
new file mode 100644
index 0000000..8b6fde5
Binary files /dev/null and b/B4A/Files/marker-rojo-2.png differ
diff --git a/B4A/Files/marker-rojo-20.png b/B4A/Files/marker-rojo-20.png
new file mode 100644
index 0000000..666d7df
Binary files /dev/null and b/B4A/Files/marker-rojo-20.png differ
diff --git a/B4A/Files/marker-rojo-21.png b/B4A/Files/marker-rojo-21.png
new file mode 100644
index 0000000..366795c
Binary files /dev/null and b/B4A/Files/marker-rojo-21.png differ
diff --git a/B4A/Files/marker-rojo-22.png b/B4A/Files/marker-rojo-22.png
new file mode 100644
index 0000000..3ce407f
Binary files /dev/null and b/B4A/Files/marker-rojo-22.png differ
diff --git a/B4A/Files/marker-rojo-23.png b/B4A/Files/marker-rojo-23.png
new file mode 100644
index 0000000..55e3a4b
Binary files /dev/null and b/B4A/Files/marker-rojo-23.png differ
diff --git a/B4A/Files/marker-rojo-24.png b/B4A/Files/marker-rojo-24.png
new file mode 100644
index 0000000..c8f8988
Binary files /dev/null and b/B4A/Files/marker-rojo-24.png differ
diff --git a/B4A/Files/marker-rojo-25.png b/B4A/Files/marker-rojo-25.png
new file mode 100644
index 0000000..11a6b96
Binary files /dev/null and b/B4A/Files/marker-rojo-25.png differ
diff --git a/B4A/Files/marker-rojo-26.png b/B4A/Files/marker-rojo-26.png
new file mode 100644
index 0000000..c9ca4da
Binary files /dev/null and b/B4A/Files/marker-rojo-26.png differ
diff --git a/B4A/Files/marker-rojo-27.png b/B4A/Files/marker-rojo-27.png
new file mode 100644
index 0000000..e7ff1c0
Binary files /dev/null and b/B4A/Files/marker-rojo-27.png differ
diff --git a/B4A/Files/marker-rojo-28.png b/B4A/Files/marker-rojo-28.png
new file mode 100644
index 0000000..a6854ee
Binary files /dev/null and b/B4A/Files/marker-rojo-28.png differ
diff --git a/B4A/Files/marker-rojo-29.png b/B4A/Files/marker-rojo-29.png
new file mode 100644
index 0000000..77ef66b
Binary files /dev/null and b/B4A/Files/marker-rojo-29.png differ
diff --git a/B4A/Files/marker-rojo-3.png b/B4A/Files/marker-rojo-3.png
new file mode 100644
index 0000000..481ed6d
Binary files /dev/null and b/B4A/Files/marker-rojo-3.png differ
diff --git a/B4A/Files/marker-rojo-30.png b/B4A/Files/marker-rojo-30.png
new file mode 100644
index 0000000..0487006
Binary files /dev/null and b/B4A/Files/marker-rojo-30.png differ
diff --git a/B4A/Files/marker-rojo-31.png b/B4A/Files/marker-rojo-31.png
new file mode 100644
index 0000000..7f6c2ec
Binary files /dev/null and b/B4A/Files/marker-rojo-31.png differ
diff --git a/B4A/Files/marker-rojo-32.png b/B4A/Files/marker-rojo-32.png
new file mode 100644
index 0000000..630a62c
Binary files /dev/null and b/B4A/Files/marker-rojo-32.png differ
diff --git a/B4A/Files/marker-rojo-33.png b/B4A/Files/marker-rojo-33.png
new file mode 100644
index 0000000..a80ecda
Binary files /dev/null and b/B4A/Files/marker-rojo-33.png differ
diff --git a/B4A/Files/marker-rojo-34.png b/B4A/Files/marker-rojo-34.png
new file mode 100644
index 0000000..1bcdaf4
Binary files /dev/null and b/B4A/Files/marker-rojo-34.png differ
diff --git a/B4A/Files/marker-rojo-35.png b/B4A/Files/marker-rojo-35.png
new file mode 100644
index 0000000..5757e67
Binary files /dev/null and b/B4A/Files/marker-rojo-35.png differ
diff --git a/B4A/Files/marker-rojo-36.png b/B4A/Files/marker-rojo-36.png
new file mode 100644
index 0000000..f455e2a
Binary files /dev/null and b/B4A/Files/marker-rojo-36.png differ
diff --git a/B4A/Files/marker-rojo-37.png b/B4A/Files/marker-rojo-37.png
new file mode 100644
index 0000000..2e9ab4f
Binary files /dev/null and b/B4A/Files/marker-rojo-37.png differ
diff --git a/B4A/Files/marker-rojo-38.png b/B4A/Files/marker-rojo-38.png
new file mode 100644
index 0000000..23a83ce
Binary files /dev/null and b/B4A/Files/marker-rojo-38.png differ
diff --git a/B4A/Files/marker-rojo-39.png b/B4A/Files/marker-rojo-39.png
new file mode 100644
index 0000000..3306d3b
Binary files /dev/null and b/B4A/Files/marker-rojo-39.png differ
diff --git a/B4A/Files/marker-rojo-4.png b/B4A/Files/marker-rojo-4.png
new file mode 100644
index 0000000..7a104b3
Binary files /dev/null and b/B4A/Files/marker-rojo-4.png differ
diff --git a/B4A/Files/marker-rojo-40.png b/B4A/Files/marker-rojo-40.png
new file mode 100644
index 0000000..cbe0b39
Binary files /dev/null and b/B4A/Files/marker-rojo-40.png differ
diff --git a/B4A/Files/marker-rojo-41.png b/B4A/Files/marker-rojo-41.png
new file mode 100644
index 0000000..9f06504
Binary files /dev/null and b/B4A/Files/marker-rojo-41.png differ
diff --git a/B4A/Files/marker-rojo-42.png b/B4A/Files/marker-rojo-42.png
new file mode 100644
index 0000000..c34f146
Binary files /dev/null and b/B4A/Files/marker-rojo-42.png differ
diff --git a/B4A/Files/marker-rojo-43.png b/B4A/Files/marker-rojo-43.png
new file mode 100644
index 0000000..8579b75
Binary files /dev/null and b/B4A/Files/marker-rojo-43.png differ
diff --git a/B4A/Files/marker-rojo-44.png b/B4A/Files/marker-rojo-44.png
new file mode 100644
index 0000000..fe923a3
Binary files /dev/null and b/B4A/Files/marker-rojo-44.png differ
diff --git a/B4A/Files/marker-rojo-45.png b/B4A/Files/marker-rojo-45.png
new file mode 100644
index 0000000..d21b1ff
Binary files /dev/null and b/B4A/Files/marker-rojo-45.png differ
diff --git a/B4A/Files/marker-rojo-46.png b/B4A/Files/marker-rojo-46.png
new file mode 100644
index 0000000..e60a891
Binary files /dev/null and b/B4A/Files/marker-rojo-46.png differ
diff --git a/B4A/Files/marker-rojo-47.png b/B4A/Files/marker-rojo-47.png
new file mode 100644
index 0000000..b83f51e
Binary files /dev/null and b/B4A/Files/marker-rojo-47.png differ
diff --git a/B4A/Files/marker-rojo-48.png b/B4A/Files/marker-rojo-48.png
new file mode 100644
index 0000000..2b94152
Binary files /dev/null and b/B4A/Files/marker-rojo-48.png differ
diff --git a/B4A/Files/marker-rojo-49.png b/B4A/Files/marker-rojo-49.png
new file mode 100644
index 0000000..a96c078
Binary files /dev/null and b/B4A/Files/marker-rojo-49.png differ
diff --git a/B4A/Files/marker-rojo-5.png b/B4A/Files/marker-rojo-5.png
new file mode 100644
index 0000000..07edb89
Binary files /dev/null and b/B4A/Files/marker-rojo-5.png differ
diff --git a/B4A/Files/marker-rojo-50.png b/B4A/Files/marker-rojo-50.png
new file mode 100644
index 0000000..cc6cbea
Binary files /dev/null and b/B4A/Files/marker-rojo-50.png differ
diff --git a/B4A/Files/marker-rojo-51.png b/B4A/Files/marker-rojo-51.png
new file mode 100644
index 0000000..fb10bbe
Binary files /dev/null and b/B4A/Files/marker-rojo-51.png differ
diff --git a/B4A/Files/marker-rojo-52.png b/B4A/Files/marker-rojo-52.png
new file mode 100644
index 0000000..6b91537
Binary files /dev/null and b/B4A/Files/marker-rojo-52.png differ
diff --git a/B4A/Files/marker-rojo-53.png b/B4A/Files/marker-rojo-53.png
new file mode 100644
index 0000000..12d7d68
Binary files /dev/null and b/B4A/Files/marker-rojo-53.png differ
diff --git a/B4A/Files/marker-rojo-54.png b/B4A/Files/marker-rojo-54.png
new file mode 100644
index 0000000..134857a
Binary files /dev/null and b/B4A/Files/marker-rojo-54.png differ
diff --git a/B4A/Files/marker-rojo-55.png b/B4A/Files/marker-rojo-55.png
new file mode 100644
index 0000000..a6448c7
Binary files /dev/null and b/B4A/Files/marker-rojo-55.png differ
diff --git a/B4A/Files/marker-rojo-56.png b/B4A/Files/marker-rojo-56.png
new file mode 100644
index 0000000..13a83e2
Binary files /dev/null and b/B4A/Files/marker-rojo-56.png differ
diff --git a/B4A/Files/marker-rojo-57.png b/B4A/Files/marker-rojo-57.png
new file mode 100644
index 0000000..f78cbe9
Binary files /dev/null and b/B4A/Files/marker-rojo-57.png differ
diff --git a/B4A/Files/marker-rojo-58.png b/B4A/Files/marker-rojo-58.png
new file mode 100644
index 0000000..3e0d74e
Binary files /dev/null and b/B4A/Files/marker-rojo-58.png differ
diff --git a/B4A/Files/marker-rojo-59.png b/B4A/Files/marker-rojo-59.png
new file mode 100644
index 0000000..f0b6893
Binary files /dev/null and b/B4A/Files/marker-rojo-59.png differ
diff --git a/B4A/Files/marker-rojo-6.png b/B4A/Files/marker-rojo-6.png
new file mode 100644
index 0000000..59e4f11
Binary files /dev/null and b/B4A/Files/marker-rojo-6.png differ
diff --git a/B4A/Files/marker-rojo-60.png b/B4A/Files/marker-rojo-60.png
new file mode 100644
index 0000000..d43ae90
Binary files /dev/null and b/B4A/Files/marker-rojo-60.png differ
diff --git a/B4A/Files/marker-rojo-61.png b/B4A/Files/marker-rojo-61.png
new file mode 100644
index 0000000..4357d6d
Binary files /dev/null and b/B4A/Files/marker-rojo-61.png differ
diff --git a/B4A/Files/marker-rojo-62.png b/B4A/Files/marker-rojo-62.png
new file mode 100644
index 0000000..3c8b717
Binary files /dev/null and b/B4A/Files/marker-rojo-62.png differ
diff --git a/B4A/Files/marker-rojo-63.png b/B4A/Files/marker-rojo-63.png
new file mode 100644
index 0000000..615904f
Binary files /dev/null and b/B4A/Files/marker-rojo-63.png differ
diff --git a/B4A/Files/marker-rojo-64.png b/B4A/Files/marker-rojo-64.png
new file mode 100644
index 0000000..d58fda6
Binary files /dev/null and b/B4A/Files/marker-rojo-64.png differ
diff --git a/B4A/Files/marker-rojo-65.png b/B4A/Files/marker-rojo-65.png
new file mode 100644
index 0000000..ec82963
Binary files /dev/null and b/B4A/Files/marker-rojo-65.png differ
diff --git a/B4A/Files/marker-rojo-66.png b/B4A/Files/marker-rojo-66.png
new file mode 100644
index 0000000..cdd6a90
Binary files /dev/null and b/B4A/Files/marker-rojo-66.png differ
diff --git a/B4A/Files/marker-rojo-67.png b/B4A/Files/marker-rojo-67.png
new file mode 100644
index 0000000..426e4d3
Binary files /dev/null and b/B4A/Files/marker-rojo-67.png differ
diff --git a/B4A/Files/marker-rojo-68.png b/B4A/Files/marker-rojo-68.png
new file mode 100644
index 0000000..ba24d79
Binary files /dev/null and b/B4A/Files/marker-rojo-68.png differ
diff --git a/B4A/Files/marker-rojo-69.png b/B4A/Files/marker-rojo-69.png
new file mode 100644
index 0000000..2241ba6
Binary files /dev/null and b/B4A/Files/marker-rojo-69.png differ
diff --git a/B4A/Files/marker-rojo-7.png b/B4A/Files/marker-rojo-7.png
new file mode 100644
index 0000000..c4d60f3
Binary files /dev/null and b/B4A/Files/marker-rojo-7.png differ
diff --git a/B4A/Files/marker-rojo-70.png b/B4A/Files/marker-rojo-70.png
new file mode 100644
index 0000000..3c6b4fa
Binary files /dev/null and b/B4A/Files/marker-rojo-70.png differ
diff --git a/B4A/Files/marker-rojo-71.png b/B4A/Files/marker-rojo-71.png
new file mode 100644
index 0000000..b120276
Binary files /dev/null and b/B4A/Files/marker-rojo-71.png differ
diff --git a/B4A/Files/marker-rojo-72.png b/B4A/Files/marker-rojo-72.png
new file mode 100644
index 0000000..ca042e4
Binary files /dev/null and b/B4A/Files/marker-rojo-72.png differ
diff --git a/B4A/Files/marker-rojo-73.png b/B4A/Files/marker-rojo-73.png
new file mode 100644
index 0000000..207c726
Binary files /dev/null and b/B4A/Files/marker-rojo-73.png differ
diff --git a/B4A/Files/marker-rojo-74.png b/B4A/Files/marker-rojo-74.png
new file mode 100644
index 0000000..832476f
Binary files /dev/null and b/B4A/Files/marker-rojo-74.png differ
diff --git a/B4A/Files/marker-rojo-75.png b/B4A/Files/marker-rojo-75.png
new file mode 100644
index 0000000..ee95407
Binary files /dev/null and b/B4A/Files/marker-rojo-75.png differ
diff --git a/B4A/Files/marker-rojo-76.png b/B4A/Files/marker-rojo-76.png
new file mode 100644
index 0000000..eea3c80
Binary files /dev/null and b/B4A/Files/marker-rojo-76.png differ
diff --git a/B4A/Files/marker-rojo-77.png b/B4A/Files/marker-rojo-77.png
new file mode 100644
index 0000000..cc4b52f
Binary files /dev/null and b/B4A/Files/marker-rojo-77.png differ
diff --git a/B4A/Files/marker-rojo-78.png b/B4A/Files/marker-rojo-78.png
new file mode 100644
index 0000000..2ca2aed
Binary files /dev/null and b/B4A/Files/marker-rojo-78.png differ
diff --git a/B4A/Files/marker-rojo-79.png b/B4A/Files/marker-rojo-79.png
new file mode 100644
index 0000000..82b5d74
Binary files /dev/null and b/B4A/Files/marker-rojo-79.png differ
diff --git a/B4A/Files/marker-rojo-8.png b/B4A/Files/marker-rojo-8.png
new file mode 100644
index 0000000..68b46ff
Binary files /dev/null and b/B4A/Files/marker-rojo-8.png differ
diff --git a/B4A/Files/marker-rojo-80.png b/B4A/Files/marker-rojo-80.png
new file mode 100644
index 0000000..e555061
Binary files /dev/null and b/B4A/Files/marker-rojo-80.png differ
diff --git a/B4A/Files/marker-rojo-81.png b/B4A/Files/marker-rojo-81.png
new file mode 100644
index 0000000..0fbb379
Binary files /dev/null and b/B4A/Files/marker-rojo-81.png differ
diff --git a/B4A/Files/marker-rojo-82.png b/B4A/Files/marker-rojo-82.png
new file mode 100644
index 0000000..832b635
Binary files /dev/null and b/B4A/Files/marker-rojo-82.png differ
diff --git a/B4A/Files/marker-rojo-83.png b/B4A/Files/marker-rojo-83.png
new file mode 100644
index 0000000..b9021a0
Binary files /dev/null and b/B4A/Files/marker-rojo-83.png differ
diff --git a/B4A/Files/marker-rojo-84.png b/B4A/Files/marker-rojo-84.png
new file mode 100644
index 0000000..9dc88c5
Binary files /dev/null and b/B4A/Files/marker-rojo-84.png differ
diff --git a/B4A/Files/marker-rojo-85.png b/B4A/Files/marker-rojo-85.png
new file mode 100644
index 0000000..6f49fdd
Binary files /dev/null and b/B4A/Files/marker-rojo-85.png differ
diff --git a/B4A/Files/marker-rojo-86.png b/B4A/Files/marker-rojo-86.png
new file mode 100644
index 0000000..592e9ae
Binary files /dev/null and b/B4A/Files/marker-rojo-86.png differ
diff --git a/B4A/Files/marker-rojo-87.png b/B4A/Files/marker-rojo-87.png
new file mode 100644
index 0000000..938aca9
Binary files /dev/null and b/B4A/Files/marker-rojo-87.png differ
diff --git a/B4A/Files/marker-rojo-88.png b/B4A/Files/marker-rojo-88.png
new file mode 100644
index 0000000..f93407f
Binary files /dev/null and b/B4A/Files/marker-rojo-88.png differ
diff --git a/B4A/Files/marker-rojo-89.png b/B4A/Files/marker-rojo-89.png
new file mode 100644
index 0000000..ddfc4cc
Binary files /dev/null and b/B4A/Files/marker-rojo-89.png differ
diff --git a/B4A/Files/marker-rojo-9.png b/B4A/Files/marker-rojo-9.png
new file mode 100644
index 0000000..2f8d39c
Binary files /dev/null and b/B4A/Files/marker-rojo-9.png differ
diff --git a/B4A/Files/marker-rojo-90.png b/B4A/Files/marker-rojo-90.png
new file mode 100644
index 0000000..24a52cf
Binary files /dev/null and b/B4A/Files/marker-rojo-90.png differ
diff --git a/B4A/Files/marker-rojo-91.png b/B4A/Files/marker-rojo-91.png
new file mode 100644
index 0000000..f45cce0
Binary files /dev/null and b/B4A/Files/marker-rojo-91.png differ
diff --git a/B4A/Files/marker-rojo-92.png b/B4A/Files/marker-rojo-92.png
new file mode 100644
index 0000000..73c0ddc
Binary files /dev/null and b/B4A/Files/marker-rojo-92.png differ
diff --git a/B4A/Files/marker-rojo-93.png b/B4A/Files/marker-rojo-93.png
new file mode 100644
index 0000000..ad9499b
Binary files /dev/null and b/B4A/Files/marker-rojo-93.png differ
diff --git a/B4A/Files/marker-rojo-94.png b/B4A/Files/marker-rojo-94.png
new file mode 100644
index 0000000..99c864d
Binary files /dev/null and b/B4A/Files/marker-rojo-94.png differ
diff --git a/B4A/Files/marker-rojo-95.png b/B4A/Files/marker-rojo-95.png
new file mode 100644
index 0000000..0d0c2a7
Binary files /dev/null and b/B4A/Files/marker-rojo-95.png differ
diff --git a/B4A/Files/marker-rojo-96.png b/B4A/Files/marker-rojo-96.png
new file mode 100644
index 0000000..d08f85a
Binary files /dev/null and b/B4A/Files/marker-rojo-96.png differ
diff --git a/B4A/Files/marker-rojo-97.png b/B4A/Files/marker-rojo-97.png
new file mode 100644
index 0000000..7645d01
Binary files /dev/null and b/B4A/Files/marker-rojo-97.png differ
diff --git a/B4A/Files/marker-rojo-98.png b/B4A/Files/marker-rojo-98.png
new file mode 100644
index 0000000..9196062
Binary files /dev/null and b/B4A/Files/marker-rojo-98.png differ
diff --git a/B4A/Files/marker-rojo-99.png b/B4A/Files/marker-rojo-99.png
new file mode 100644
index 0000000..3fcb55d
Binary files /dev/null and b/B4A/Files/marker-rojo-99.png differ
diff --git a/B4A/Files/marker-verde-0.png b/B4A/Files/marker-verde-0.png
new file mode 100644
index 0000000..2ce1df5
Binary files /dev/null and b/B4A/Files/marker-verde-0.png differ
diff --git a/B4A/Files/marker-verde-1.png b/B4A/Files/marker-verde-1.png
new file mode 100644
index 0000000..b317d43
Binary files /dev/null and b/B4A/Files/marker-verde-1.png differ
diff --git a/B4A/Files/marker-verde-10.png b/B4A/Files/marker-verde-10.png
new file mode 100644
index 0000000..b9f6f61
Binary files /dev/null and b/B4A/Files/marker-verde-10.png differ
diff --git a/B4A/Files/marker-verde-100.png b/B4A/Files/marker-verde-100.png
new file mode 100644
index 0000000..985db2c
Binary files /dev/null and b/B4A/Files/marker-verde-100.png differ
diff --git a/B4A/Files/marker-verde-11.png b/B4A/Files/marker-verde-11.png
new file mode 100644
index 0000000..331a0f1
Binary files /dev/null and b/B4A/Files/marker-verde-11.png differ
diff --git a/B4A/Files/marker-verde-12.png b/B4A/Files/marker-verde-12.png
new file mode 100644
index 0000000..99f39c4
Binary files /dev/null and b/B4A/Files/marker-verde-12.png differ
diff --git a/B4A/Files/marker-verde-13.png b/B4A/Files/marker-verde-13.png
new file mode 100644
index 0000000..80d8d05
Binary files /dev/null and b/B4A/Files/marker-verde-13.png differ
diff --git a/B4A/Files/marker-verde-14.png b/B4A/Files/marker-verde-14.png
new file mode 100644
index 0000000..3a161ee
Binary files /dev/null and b/B4A/Files/marker-verde-14.png differ
diff --git a/B4A/Files/marker-verde-15.png b/B4A/Files/marker-verde-15.png
new file mode 100644
index 0000000..d1bc6fd
Binary files /dev/null and b/B4A/Files/marker-verde-15.png differ
diff --git a/B4A/Files/marker-verde-16.png b/B4A/Files/marker-verde-16.png
new file mode 100644
index 0000000..18f2133
Binary files /dev/null and b/B4A/Files/marker-verde-16.png differ
diff --git a/B4A/Files/marker-verde-17.png b/B4A/Files/marker-verde-17.png
new file mode 100644
index 0000000..e44ec2c
Binary files /dev/null and b/B4A/Files/marker-verde-17.png differ
diff --git a/B4A/Files/marker-verde-18.png b/B4A/Files/marker-verde-18.png
new file mode 100644
index 0000000..eef4bab
Binary files /dev/null and b/B4A/Files/marker-verde-18.png differ
diff --git a/B4A/Files/marker-verde-19.png b/B4A/Files/marker-verde-19.png
new file mode 100644
index 0000000..999b2db
Binary files /dev/null and b/B4A/Files/marker-verde-19.png differ
diff --git a/B4A/Files/marker-verde-2.png b/B4A/Files/marker-verde-2.png
new file mode 100644
index 0000000..61ab429
Binary files /dev/null and b/B4A/Files/marker-verde-2.png differ
diff --git a/B4A/Files/marker-verde-20.png b/B4A/Files/marker-verde-20.png
new file mode 100644
index 0000000..2c40e51
Binary files /dev/null and b/B4A/Files/marker-verde-20.png differ
diff --git a/B4A/Files/marker-verde-21.png b/B4A/Files/marker-verde-21.png
new file mode 100644
index 0000000..125c182
Binary files /dev/null and b/B4A/Files/marker-verde-21.png differ
diff --git a/B4A/Files/marker-verde-22.png b/B4A/Files/marker-verde-22.png
new file mode 100644
index 0000000..192e285
Binary files /dev/null and b/B4A/Files/marker-verde-22.png differ
diff --git a/B4A/Files/marker-verde-23.png b/B4A/Files/marker-verde-23.png
new file mode 100644
index 0000000..217312d
Binary files /dev/null and b/B4A/Files/marker-verde-23.png differ
diff --git a/B4A/Files/marker-verde-24.png b/B4A/Files/marker-verde-24.png
new file mode 100644
index 0000000..e0e2039
Binary files /dev/null and b/B4A/Files/marker-verde-24.png differ
diff --git a/B4A/Files/marker-verde-25.png b/B4A/Files/marker-verde-25.png
new file mode 100644
index 0000000..25590ce
Binary files /dev/null and b/B4A/Files/marker-verde-25.png differ
diff --git a/B4A/Files/marker-verde-26.png b/B4A/Files/marker-verde-26.png
new file mode 100644
index 0000000..119e92a
Binary files /dev/null and b/B4A/Files/marker-verde-26.png differ
diff --git a/B4A/Files/marker-verde-27.png b/B4A/Files/marker-verde-27.png
new file mode 100644
index 0000000..48bf7c7
Binary files /dev/null and b/B4A/Files/marker-verde-27.png differ
diff --git a/B4A/Files/marker-verde-28.png b/B4A/Files/marker-verde-28.png
new file mode 100644
index 0000000..dceee5a
Binary files /dev/null and b/B4A/Files/marker-verde-28.png differ
diff --git a/B4A/Files/marker-verde-29.png b/B4A/Files/marker-verde-29.png
new file mode 100644
index 0000000..ae4cbdf
Binary files /dev/null and b/B4A/Files/marker-verde-29.png differ
diff --git a/B4A/Files/marker-verde-3.png b/B4A/Files/marker-verde-3.png
new file mode 100644
index 0000000..bc79da4
Binary files /dev/null and b/B4A/Files/marker-verde-3.png differ
diff --git a/B4A/Files/marker-verde-30.png b/B4A/Files/marker-verde-30.png
new file mode 100644
index 0000000..fcaa4e0
Binary files /dev/null and b/B4A/Files/marker-verde-30.png differ
diff --git a/B4A/Files/marker-verde-31.png b/B4A/Files/marker-verde-31.png
new file mode 100644
index 0000000..c8dd474
Binary files /dev/null and b/B4A/Files/marker-verde-31.png differ
diff --git a/B4A/Files/marker-verde-32.png b/B4A/Files/marker-verde-32.png
new file mode 100644
index 0000000..f491032
Binary files /dev/null and b/B4A/Files/marker-verde-32.png differ
diff --git a/B4A/Files/marker-verde-33.png b/B4A/Files/marker-verde-33.png
new file mode 100644
index 0000000..e9045fb
Binary files /dev/null and b/B4A/Files/marker-verde-33.png differ
diff --git a/B4A/Files/marker-verde-34.png b/B4A/Files/marker-verde-34.png
new file mode 100644
index 0000000..90500f4
Binary files /dev/null and b/B4A/Files/marker-verde-34.png differ
diff --git a/B4A/Files/marker-verde-35.png b/B4A/Files/marker-verde-35.png
new file mode 100644
index 0000000..0aa922d
Binary files /dev/null and b/B4A/Files/marker-verde-35.png differ
diff --git a/B4A/Files/marker-verde-36.png b/B4A/Files/marker-verde-36.png
new file mode 100644
index 0000000..a295437
Binary files /dev/null and b/B4A/Files/marker-verde-36.png differ
diff --git a/B4A/Files/marker-verde-37.png b/B4A/Files/marker-verde-37.png
new file mode 100644
index 0000000..fac6931
Binary files /dev/null and b/B4A/Files/marker-verde-37.png differ
diff --git a/B4A/Files/marker-verde-38.png b/B4A/Files/marker-verde-38.png
new file mode 100644
index 0000000..bb0eff1
Binary files /dev/null and b/B4A/Files/marker-verde-38.png differ
diff --git a/B4A/Files/marker-verde-39.png b/B4A/Files/marker-verde-39.png
new file mode 100644
index 0000000..ba3ca5d
Binary files /dev/null and b/B4A/Files/marker-verde-39.png differ
diff --git a/B4A/Files/marker-verde-4.png b/B4A/Files/marker-verde-4.png
new file mode 100644
index 0000000..4d4c268
Binary files /dev/null and b/B4A/Files/marker-verde-4.png differ
diff --git a/B4A/Files/marker-verde-40.png b/B4A/Files/marker-verde-40.png
new file mode 100644
index 0000000..b3f4dd2
Binary files /dev/null and b/B4A/Files/marker-verde-40.png differ
diff --git a/B4A/Files/marker-verde-41.png b/B4A/Files/marker-verde-41.png
new file mode 100644
index 0000000..f3703fa
Binary files /dev/null and b/B4A/Files/marker-verde-41.png differ
diff --git a/B4A/Files/marker-verde-42.png b/B4A/Files/marker-verde-42.png
new file mode 100644
index 0000000..290e787
Binary files /dev/null and b/B4A/Files/marker-verde-42.png differ
diff --git a/B4A/Files/marker-verde-43.png b/B4A/Files/marker-verde-43.png
new file mode 100644
index 0000000..b6fc701
Binary files /dev/null and b/B4A/Files/marker-verde-43.png differ
diff --git a/B4A/Files/marker-verde-44.png b/B4A/Files/marker-verde-44.png
new file mode 100644
index 0000000..fd600a8
Binary files /dev/null and b/B4A/Files/marker-verde-44.png differ
diff --git a/B4A/Files/marker-verde-45.png b/B4A/Files/marker-verde-45.png
new file mode 100644
index 0000000..32608e4
Binary files /dev/null and b/B4A/Files/marker-verde-45.png differ
diff --git a/B4A/Files/marker-verde-46.png b/B4A/Files/marker-verde-46.png
new file mode 100644
index 0000000..c144603
Binary files /dev/null and b/B4A/Files/marker-verde-46.png differ
diff --git a/B4A/Files/marker-verde-47.png b/B4A/Files/marker-verde-47.png
new file mode 100644
index 0000000..0df3c65
Binary files /dev/null and b/B4A/Files/marker-verde-47.png differ
diff --git a/B4A/Files/marker-verde-48.png b/B4A/Files/marker-verde-48.png
new file mode 100644
index 0000000..63fda42
Binary files /dev/null and b/B4A/Files/marker-verde-48.png differ
diff --git a/B4A/Files/marker-verde-49.png b/B4A/Files/marker-verde-49.png
new file mode 100644
index 0000000..e86d131
Binary files /dev/null and b/B4A/Files/marker-verde-49.png differ
diff --git a/B4A/Files/marker-verde-5.png b/B4A/Files/marker-verde-5.png
new file mode 100644
index 0000000..0cb0d02
Binary files /dev/null and b/B4A/Files/marker-verde-5.png differ
diff --git a/B4A/Files/marker-verde-50.png b/B4A/Files/marker-verde-50.png
new file mode 100644
index 0000000..fea9ebf
Binary files /dev/null and b/B4A/Files/marker-verde-50.png differ
diff --git a/B4A/Files/marker-verde-51.png b/B4A/Files/marker-verde-51.png
new file mode 100644
index 0000000..c25429b
Binary files /dev/null and b/B4A/Files/marker-verde-51.png differ
diff --git a/B4A/Files/marker-verde-52.png b/B4A/Files/marker-verde-52.png
new file mode 100644
index 0000000..cb0022c
Binary files /dev/null and b/B4A/Files/marker-verde-52.png differ
diff --git a/B4A/Files/marker-verde-53.png b/B4A/Files/marker-verde-53.png
new file mode 100644
index 0000000..a67f9d9
Binary files /dev/null and b/B4A/Files/marker-verde-53.png differ
diff --git a/B4A/Files/marker-verde-54.png b/B4A/Files/marker-verde-54.png
new file mode 100644
index 0000000..cf040c7
Binary files /dev/null and b/B4A/Files/marker-verde-54.png differ
diff --git a/B4A/Files/marker-verde-55.png b/B4A/Files/marker-verde-55.png
new file mode 100644
index 0000000..1d1557f
Binary files /dev/null and b/B4A/Files/marker-verde-55.png differ
diff --git a/B4A/Files/marker-verde-56.png b/B4A/Files/marker-verde-56.png
new file mode 100644
index 0000000..8a84e20
Binary files /dev/null and b/B4A/Files/marker-verde-56.png differ
diff --git a/B4A/Files/marker-verde-57.png b/B4A/Files/marker-verde-57.png
new file mode 100644
index 0000000..0fdff90
Binary files /dev/null and b/B4A/Files/marker-verde-57.png differ
diff --git a/B4A/Files/marker-verde-58.png b/B4A/Files/marker-verde-58.png
new file mode 100644
index 0000000..961d5bc
Binary files /dev/null and b/B4A/Files/marker-verde-58.png differ
diff --git a/B4A/Files/marker-verde-59.png b/B4A/Files/marker-verde-59.png
new file mode 100644
index 0000000..760e66b
Binary files /dev/null and b/B4A/Files/marker-verde-59.png differ
diff --git a/B4A/Files/marker-verde-6.png b/B4A/Files/marker-verde-6.png
new file mode 100644
index 0000000..fdf72ff
Binary files /dev/null and b/B4A/Files/marker-verde-6.png differ
diff --git a/B4A/Files/marker-verde-60.png b/B4A/Files/marker-verde-60.png
new file mode 100644
index 0000000..fdc2b5a
Binary files /dev/null and b/B4A/Files/marker-verde-60.png differ
diff --git a/B4A/Files/marker-verde-61.png b/B4A/Files/marker-verde-61.png
new file mode 100644
index 0000000..b7a00de
Binary files /dev/null and b/B4A/Files/marker-verde-61.png differ
diff --git a/B4A/Files/marker-verde-62.png b/B4A/Files/marker-verde-62.png
new file mode 100644
index 0000000..c07d103
Binary files /dev/null and b/B4A/Files/marker-verde-62.png differ
diff --git a/B4A/Files/marker-verde-63.png b/B4A/Files/marker-verde-63.png
new file mode 100644
index 0000000..fdb84e0
Binary files /dev/null and b/B4A/Files/marker-verde-63.png differ
diff --git a/B4A/Files/marker-verde-64.png b/B4A/Files/marker-verde-64.png
new file mode 100644
index 0000000..509b955
Binary files /dev/null and b/B4A/Files/marker-verde-64.png differ
diff --git a/B4A/Files/marker-verde-65.png b/B4A/Files/marker-verde-65.png
new file mode 100644
index 0000000..646a789
Binary files /dev/null and b/B4A/Files/marker-verde-65.png differ
diff --git a/B4A/Files/marker-verde-66.png b/B4A/Files/marker-verde-66.png
new file mode 100644
index 0000000..8765de9
Binary files /dev/null and b/B4A/Files/marker-verde-66.png differ
diff --git a/B4A/Files/marker-verde-67.png b/B4A/Files/marker-verde-67.png
new file mode 100644
index 0000000..7683549
Binary files /dev/null and b/B4A/Files/marker-verde-67.png differ
diff --git a/B4A/Files/marker-verde-68.png b/B4A/Files/marker-verde-68.png
new file mode 100644
index 0000000..40baa6c
Binary files /dev/null and b/B4A/Files/marker-verde-68.png differ
diff --git a/B4A/Files/marker-verde-69.png b/B4A/Files/marker-verde-69.png
new file mode 100644
index 0000000..8964a67
Binary files /dev/null and b/B4A/Files/marker-verde-69.png differ
diff --git a/B4A/Files/marker-verde-7.png b/B4A/Files/marker-verde-7.png
new file mode 100644
index 0000000..d3d1c74
Binary files /dev/null and b/B4A/Files/marker-verde-7.png differ
diff --git a/B4A/Files/marker-verde-70.png b/B4A/Files/marker-verde-70.png
new file mode 100644
index 0000000..dbe22fc
Binary files /dev/null and b/B4A/Files/marker-verde-70.png differ
diff --git a/B4A/Files/marker-verde-71.png b/B4A/Files/marker-verde-71.png
new file mode 100644
index 0000000..22ce3b3
Binary files /dev/null and b/B4A/Files/marker-verde-71.png differ
diff --git a/B4A/Files/marker-verde-72.png b/B4A/Files/marker-verde-72.png
new file mode 100644
index 0000000..e1da10e
Binary files /dev/null and b/B4A/Files/marker-verde-72.png differ
diff --git a/B4A/Files/marker-verde-73.png b/B4A/Files/marker-verde-73.png
new file mode 100644
index 0000000..b13439d
Binary files /dev/null and b/B4A/Files/marker-verde-73.png differ
diff --git a/B4A/Files/marker-verde-74.png b/B4A/Files/marker-verde-74.png
new file mode 100644
index 0000000..21cdb8a
Binary files /dev/null and b/B4A/Files/marker-verde-74.png differ
diff --git a/B4A/Files/marker-verde-75.png b/B4A/Files/marker-verde-75.png
new file mode 100644
index 0000000..8ac9232
Binary files /dev/null and b/B4A/Files/marker-verde-75.png differ
diff --git a/B4A/Files/marker-verde-76.png b/B4A/Files/marker-verde-76.png
new file mode 100644
index 0000000..619484b
Binary files /dev/null and b/B4A/Files/marker-verde-76.png differ
diff --git a/B4A/Files/marker-verde-77.png b/B4A/Files/marker-verde-77.png
new file mode 100644
index 0000000..df97587
Binary files /dev/null and b/B4A/Files/marker-verde-77.png differ
diff --git a/B4A/Files/marker-verde-78.png b/B4A/Files/marker-verde-78.png
new file mode 100644
index 0000000..b2014f1
Binary files /dev/null and b/B4A/Files/marker-verde-78.png differ
diff --git a/B4A/Files/marker-verde-79.png b/B4A/Files/marker-verde-79.png
new file mode 100644
index 0000000..3eec8de
Binary files /dev/null and b/B4A/Files/marker-verde-79.png differ
diff --git a/B4A/Files/marker-verde-8.png b/B4A/Files/marker-verde-8.png
new file mode 100644
index 0000000..84353cd
Binary files /dev/null and b/B4A/Files/marker-verde-8.png differ
diff --git a/B4A/Files/marker-verde-80.png b/B4A/Files/marker-verde-80.png
new file mode 100644
index 0000000..8b97221
Binary files /dev/null and b/B4A/Files/marker-verde-80.png differ
diff --git a/B4A/Files/marker-verde-81.png b/B4A/Files/marker-verde-81.png
new file mode 100644
index 0000000..ebd400b
Binary files /dev/null and b/B4A/Files/marker-verde-81.png differ
diff --git a/B4A/Files/marker-verde-82.png b/B4A/Files/marker-verde-82.png
new file mode 100644
index 0000000..680bd4f
Binary files /dev/null and b/B4A/Files/marker-verde-82.png differ
diff --git a/B4A/Files/marker-verde-83.png b/B4A/Files/marker-verde-83.png
new file mode 100644
index 0000000..1a8acb4
Binary files /dev/null and b/B4A/Files/marker-verde-83.png differ
diff --git a/B4A/Files/marker-verde-84.png b/B4A/Files/marker-verde-84.png
new file mode 100644
index 0000000..f4bc40e
Binary files /dev/null and b/B4A/Files/marker-verde-84.png differ
diff --git a/B4A/Files/marker-verde-85.png b/B4A/Files/marker-verde-85.png
new file mode 100644
index 0000000..1143b40
Binary files /dev/null and b/B4A/Files/marker-verde-85.png differ
diff --git a/B4A/Files/marker-verde-86.png b/B4A/Files/marker-verde-86.png
new file mode 100644
index 0000000..2f4aaf8
Binary files /dev/null and b/B4A/Files/marker-verde-86.png differ
diff --git a/B4A/Files/marker-verde-87.png b/B4A/Files/marker-verde-87.png
new file mode 100644
index 0000000..e518310
Binary files /dev/null and b/B4A/Files/marker-verde-87.png differ
diff --git a/B4A/Files/marker-verde-88.png b/B4A/Files/marker-verde-88.png
new file mode 100644
index 0000000..d2012fc
Binary files /dev/null and b/B4A/Files/marker-verde-88.png differ
diff --git a/B4A/Files/marker-verde-89.png b/B4A/Files/marker-verde-89.png
new file mode 100644
index 0000000..5fd8701
Binary files /dev/null and b/B4A/Files/marker-verde-89.png differ
diff --git a/B4A/Files/marker-verde-9.png b/B4A/Files/marker-verde-9.png
new file mode 100644
index 0000000..e499aff
Binary files /dev/null and b/B4A/Files/marker-verde-9.png differ
diff --git a/B4A/Files/marker-verde-90.png b/B4A/Files/marker-verde-90.png
new file mode 100644
index 0000000..723b4f5
Binary files /dev/null and b/B4A/Files/marker-verde-90.png differ
diff --git a/B4A/Files/marker-verde-91.png b/B4A/Files/marker-verde-91.png
new file mode 100644
index 0000000..015e858
Binary files /dev/null and b/B4A/Files/marker-verde-91.png differ
diff --git a/B4A/Files/marker-verde-92.png b/B4A/Files/marker-verde-92.png
new file mode 100644
index 0000000..c2d59d0
Binary files /dev/null and b/B4A/Files/marker-verde-92.png differ
diff --git a/B4A/Files/marker-verde-93.png b/B4A/Files/marker-verde-93.png
new file mode 100644
index 0000000..f3128b4
Binary files /dev/null and b/B4A/Files/marker-verde-93.png differ
diff --git a/B4A/Files/marker-verde-94.png b/B4A/Files/marker-verde-94.png
new file mode 100644
index 0000000..38acfdb
Binary files /dev/null and b/B4A/Files/marker-verde-94.png differ
diff --git a/B4A/Files/marker-verde-95.png b/B4A/Files/marker-verde-95.png
new file mode 100644
index 0000000..4d1340a
Binary files /dev/null and b/B4A/Files/marker-verde-95.png differ
diff --git a/B4A/Files/marker-verde-96.png b/B4A/Files/marker-verde-96.png
new file mode 100644
index 0000000..c0f2a0d
Binary files /dev/null and b/B4A/Files/marker-verde-96.png differ
diff --git a/B4A/Files/marker-verde-97.png b/B4A/Files/marker-verde-97.png
new file mode 100644
index 0000000..a4e1612
Binary files /dev/null and b/B4A/Files/marker-verde-97.png differ
diff --git a/B4A/Files/marker-verde-98.png b/B4A/Files/marker-verde-98.png
new file mode 100644
index 0000000..78e0199
Binary files /dev/null and b/B4A/Files/marker-verde-98.png differ
diff --git a/B4A/Files/marker-verde-99.png b/B4A/Files/marker-verde-99.png
new file mode 100644
index 0000000..6628e9a
Binary files /dev/null and b/B4A/Files/marker-verde-99.png differ
diff --git a/B4A/Files/mas-azul-red1.png b/B4A/Files/mas-azul-red1.png
new file mode 100644
index 0000000..c17f050
Binary files /dev/null and b/B4A/Files/mas-azul-red1.png differ
diff --git a/B4A/Files/menosred.png b/B4A/Files/menosred.png
new file mode 100644
index 0000000..f13f1fd
Binary files /dev/null and b/B4A/Files/menosred.png differ
diff --git a/B4A/Files/nota.bal b/B4A/Files/nota.bal
new file mode 100644
index 0000000..3399587
Binary files /dev/null and b/B4A/Files/nota.bal differ
diff --git a/B4A/Files/noventa.bal b/B4A/Files/noventa.bal
new file mode 100644
index 0000000..4e8d932
Binary files /dev/null and b/B4A/Files/noventa.bal differ
diff --git a/B4A/Files/nuevocliente.bal b/B4A/Files/nuevocliente.bal
new file mode 100644
index 0000000..b2992c6
Binary files /dev/null and b/B4A/Files/nuevocliente.bal differ
diff --git a/B4A/Files/palomita_verde.png b/B4A/Files/palomita_verde.png
new file mode 100644
index 0000000..f8e11e6
Binary files /dev/null and b/B4A/Files/palomita_verde.png differ
diff --git a/B4A/Files/pedido.bal b/B4A/Files/pedido.bal
new file mode 100644
index 0000000..ed7d7ef
Binary files /dev/null and b/B4A/Files/pedido.bal differ
diff --git a/B4A/Files/planfia_logo.png b/B4A/Files/planfia_logo.png
new file mode 100644
index 0000000..680ffd0
Binary files /dev/null and b/B4A/Files/planfia_logo.png differ
diff --git a/B4A/Files/planfia_logo_old.png b/B4A/Files/planfia_logo_old.png
new file mode 100644
index 0000000..4adb130
Binary files /dev/null and b/B4A/Files/planfia_logo_old.png differ
diff --git a/B4A/Files/planfia_logo_old2.png b/B4A/Files/planfia_logo_old2.png
new file mode 100644
index 0000000..316f337
Binary files /dev/null and b/B4A/Files/planfia_logo_old2.png differ
diff --git a/B4A/Files/principal.bal b/B4A/Files/principal.bal
new file mode 100644
index 0000000..2fe5b96
Binary files /dev/null and b/B4A/Files/principal.bal differ
diff --git a/B4A/Files/productos.bal b/B4A/Files/productos.bal
new file mode 100644
index 0000000..c146fd6
Binary files /dev/null and b/B4A/Files/productos.bal differ
diff --git a/B4A/Files/profina.jpg b/B4A/Files/profina.jpg
new file mode 100644
index 0000000..f092f0f
Binary files /dev/null and b/B4A/Files/profina.jpg differ
diff --git a/B4A/Files/profina.png b/B4A/Files/profina.png
new file mode 100644
index 0000000..d307055
Binary files /dev/null and b/B4A/Files/profina.png differ
diff --git a/B4A/Files/proitem.bal b/B4A/Files/proitem.bal
new file mode 100644
index 0000000..6075883
Binary files /dev/null and b/B4A/Files/proitem.bal differ
diff --git a/B4A/Files/qr.bal b/B4A/Files/qr.bal
new file mode 100644
index 0000000..0faca59
Binary files /dev/null and b/B4A/Files/qr.bal differ
diff --git a/B4A/Files/rechazo.jpg b/B4A/Files/rechazo.jpg
new file mode 100644
index 0000000..afb7ed3
Binary files /dev/null and b/B4A/Files/rechazo.jpg differ
diff --git a/B4A/Files/rojo.png b/B4A/Files/rojo.png
new file mode 100644
index 0000000..81d363d
Binary files /dev/null and b/B4A/Files/rojo.png differ
diff --git a/B4A/Files/salma.jpg b/B4A/Files/salma.jpg
new file mode 100644
index 0000000..8308c95
Binary files /dev/null and b/B4A/Files/salma.jpg differ
diff --git a/B4A/Files/salma.png b/B4A/Files/salma.png
new file mode 100644
index 0000000..00cb434
Binary files /dev/null and b/B4A/Files/salma.png differ
diff --git a/B4A/Files/senial.jpg b/B4A/Files/senial.jpg
new file mode 100644
index 0000000..a758065
Binary files /dev/null and b/B4A/Files/senial.jpg differ
diff --git a/B4A/Files/sync.png b/B4A/Files/sync.png
new file mode 100644
index 0000000..ff7d32e
Binary files /dev/null and b/B4A/Files/sync.png differ
diff --git a/B4A/Files/tache_rojo.png b/B4A/Files/tache_rojo.png
new file mode 100644
index 0000000..2f5f59d
Binary files /dev/null and b/B4A/Files/tache_rojo.png differ
diff --git a/B4A/Files/telefonos.bal b/B4A/Files/telefonos.bal
new file mode 100644
index 0000000..1f048f6
Binary files /dev/null and b/B4A/Files/telefonos.bal differ
diff --git a/B4A/Files/ticketsdia.bal b/B4A/Files/ticketsdia.bal
new file mode 100644
index 0000000..bdd4cac
Binary files /dev/null and b/B4A/Files/ticketsdia.bal differ
diff --git a/B4A/Files/tiendita.jpg b/B4A/Files/tiendita.jpg
new file mode 100644
index 0000000..5f52563
Binary files /dev/null and b/B4A/Files/tiendita.jpg differ
diff --git a/B4A/Files/transporte.png b/B4A/Files/transporte.png
new file mode 100644
index 0000000..e03cfc0
Binary files /dev/null and b/B4A/Files/transporte.png differ
diff --git a/B4A/Files/verde.png b/B4A/Files/verde.png
new file mode 100644
index 0000000..59edded
Binary files /dev/null and b/B4A/Files/verde.png differ
diff --git a/B4A/Files/vista1.png b/B4A/Files/vista1.png
new file mode 100644
index 0000000..9de6491
Binary files /dev/null and b/B4A/Files/vista1.png differ
diff --git a/B4A/Files/vista2.png b/B4A/Files/vista2.png
new file mode 100644
index 0000000..ba7da40
Binary files /dev/null and b/B4A/Files/vista2.png differ
diff --git a/B4A/Files/vista3.png b/B4A/Files/vista3.png
new file mode 100644
index 0000000..cb02c91
Binary files /dev/null and b/B4A/Files/vista3.png differ
diff --git a/B4A/Files/vista4.png b/B4A/Files/vista4.png
new file mode 100644
index 0000000..5331963
Binary files /dev/null and b/B4A/Files/vista4.png differ
diff --git a/B4A/Files/whatsapp image 2022-11-17 at 11.50.59 am.jpg b/B4A/Files/whatsapp image 2022-11-17 at 11.50.59 am.jpg
new file mode 100644
index 0000000..03a496a
Binary files /dev/null and b/B4A/Files/whatsapp image 2022-11-17 at 11.50.59 am.jpg differ
diff --git a/B4A/Files/whatsapp.png b/B4A/Files/whatsapp.png
new file mode 100644
index 0000000..9fe9a80
Binary files /dev/null and b/B4A/Files/whatsapp.png differ
diff --git a/B4A/Files/whatstel.png b/B4A/Files/whatstel.png
new file mode 100644
index 0000000..314da67
Binary files /dev/null and b/B4A/Files/whatstel.png differ
diff --git a/B4A/HttpUtils2Service.bas b/B4A/HttpUtils2Service.bas
new file mode 100644
index 0000000..0a01215
--- /dev/null
+++ b/B4A/HttpUtils2Service.bas
@@ -0,0 +1,86 @@
+B4A=true
+Group=Default Group
+ModulesStructureVersion=1
+Type=Service
+Version=5.5
+@EndOfDesignText@
+#Region Module Attributes
+ #StartAtBoot: False
+#End Region
+
+'Modified version of HttpUtils2
+'Service module
+Sub Process_Globals
+ Private hc As OkHttpClient
+ Private TaskIdToJob As Map
+ Public TempFolder As String
+ Private taskCounter As Int
+End Sub
+
+Sub Service_Create
+ TempFolder = File.DirInternalCache
+ hc.Initialize("hc")
+ TaskIdToJob.Initialize
+End Sub
+
+Sub Service_Start (StartingIntent As Intent)
+
+End Sub
+
+Sub Service_Destroy
+
+End Sub
+
+Public Sub SubmitJob(job As HttpJob) As Int
+ taskCounter = taskCounter + 1
+ TaskIdToJob.Put(taskCounter, job)
+ If job.Username <> "" And job.Password <> "" Then
+ hc.ExecuteCredentials(job.GetRequest, taskCounter, job.Username, job.Password)
+ Else
+ hc.Execute(job.GetRequest, taskCounter)
+ End If
+ Return taskCounter
+End Sub
+
+Sub hc_ResponseSuccess (Response As OkHttpResponse, TaskId As Int)
+ ' ********** Modified code *************
+ Dim cs As CountingOutputStream
+ cs.Initialize(File.OpenOutput(TempFolder, TaskId, False))
+ Dim j As HttpJob = TaskIdToJob.Get(TaskId)
+ Dim jt As JobTag = j.Tag
+ jt.CountingStream = cs
+ jt.Total = Response.ContentLength
+ If jt.Data.url = "" Then
+ Log("Job cancelled before downloaded started")
+ cs.Close
+ End If
+ Response.GetAsynchronously("response", cs , _
+ True, TaskId)
+ '**************************************
+End Sub
+
+Sub Response_StreamFinish (Success As Boolean, TaskId As Int)
+ If Success Then
+ CompleteJob(TaskId, Success, "")
+ Else
+ CompleteJob(TaskId, Success, LastException.Message)
+ End If
+End Sub
+
+Sub hc_ResponseError (Response As OkHttpResponse, Reason As String, StatusCode As Int, TaskId As Int)
+ If Response <> Null Then
+ Log(Response.ErrorResponse)
+ Response.Release
+ End If
+ CompleteJob(TaskId, False, Reason)
+End Sub
+
+Sub CompleteJob(TaskId As Int, success As Boolean, errorMessage As String)
+ Dim job As HttpJob
+ job = TaskIdToJob.Get(TaskId)
+ TaskIdToJob.Remove(TaskId)
+ job.success = success
+ job.errorMessage = errorMessage
+ job.Complete(TaskId)
+End Sub
+
diff --git a/B4A/KelloggsV3.b4a b/B4A/KelloggsV3.b4a
new file mode 100644
index 0000000..52b2156
--- /dev/null
+++ b/B4A/KelloggsV3.b4a
@@ -0,0 +1,236 @@
+Build1=Default,kelloggsV2.keymon.lat,HU2_PUBLIC
+File1=alcancia.png
+File10=durakelo.png
+File11=durakelo1.png
+File12=engrane.jpg
+File13=engrane.png
+File14=fondo_kmt.jpg
+File15=foto.bal
+File16=historico.bal
+File17=INVENTARIO (1).jpg
+File18=INVENTARIO.jpg
+File19=inventario.PNG
+File2=alert2.png
+File20=itembuttonblue.png
+File21=kelloggs.png
+File22=login.bal
+File23=logo2.png
+File24=MainPage.bal
+File25=Malo.jpg
+File26=mapas.bal
+File27=mas-azul-red1.png
+File28=menosred.png
+File29=nota.bal
+File3=alerta_amarilla.png
+File30=noventa.bal
+File31=nuevocliente.bal
+File32=palomita_verde.png
+File33=planfia_logo.png
+File34=principal.bal
+File35=productos.bal
+File36=profina.jpg
+File37=proitem.bal
+File38=rechazo.jpg
+File39=salma.jpg
+File4=BLACNCO.jpg
+File40=senial.jpg
+File41=sync.png
+File42=ticketsDia.bal
+File43=Tiendita.jpg
+File44=transporte.png
+File45=vista1.png
+File46=vista2.png
+File47=vista3.png
+File48=vista4.png
+File49=WhatsApp Image 2022-11-17 at 11.50.59 AM.jpg
+File5=carrito.png
+File50=whatsapp.png
+File51=WHATSTEL.png
+File6=checklist.bal
+File7=checks.bal
+File8=cliente.bal
+File9=clientes.bal
+FileGroup1=Default Group
+FileGroup10=Default Group
+FileGroup11=Default Group
+FileGroup12=Default Group
+FileGroup13=Default Group
+FileGroup14=Default Group
+FileGroup15=Default Group
+FileGroup16=Default Group
+FileGroup17=Default Group
+FileGroup18=Default Group
+FileGroup19=Default Group
+FileGroup2=Default Group
+FileGroup20=Default Group
+FileGroup21=Default Group
+FileGroup22=Default Group
+FileGroup23=Default Group
+FileGroup24=Default Group
+FileGroup25=Default Group
+FileGroup26=Default Group
+FileGroup27=Default Group
+FileGroup28=Default Group
+FileGroup29=Default Group
+FileGroup3=Default Group
+FileGroup30=Default Group
+FileGroup31=Default Group
+FileGroup32=Default Group
+FileGroup33=Default Group
+FileGroup34=Default Group
+FileGroup35=Default Group
+FileGroup36=Default Group
+FileGroup37=Default Group
+FileGroup38=Default Group
+FileGroup39=Default Group
+FileGroup4=Default Group
+FileGroup40=Default Group
+FileGroup41=Default Group
+FileGroup42=Default Group
+FileGroup43=Default Group
+FileGroup44=Default Group
+FileGroup45=Default Group
+FileGroup46=Default Group
+FileGroup47=Default Group
+FileGroup48=Default Group
+FileGroup49=Default Group
+FileGroup5=Default Group
+FileGroup50=Default Group
+FileGroup51=Default Group
+FileGroup6=Default Group
+FileGroup7=Default Group
+FileGroup8=Default Group
+FileGroup9=Default Group
+Group=Default Group
+Library1=appupdating
+Library10=googlemaps
+Library11=googlemapsextras
+Library12=gps
+Library13=ime
+Library14=json
+Library15=okhttputils2
+Library16=pdfium
+Library17=phone
+Library18=randomaccessfile
+Library19=reflection
+Library2=b4xpages
+Library20=runtimepermissions
+Library21=serial
+Library22=sql
+Library23=stringutils
+Library24=togglelibrary
+Library25=websocket
+Library26=xui
+Library27=zxing_scanner
+Library28=xcustomlistview
+Library3=baqrcode
+Library4=bitmapcreator
+Library5=byteconverter
+Library6=camera
+Library7=contentresolver
+Library8=core
+Library9=fusedlocationprovider
+ManifestCode='This code will be applied to the manifest file during compilation.~\n~'You do not need to modify it in most cases.~\n~'See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136~\n~AddManifestText(~\n~~\n~)~\n~SetApplicationAttribute(android:icon, "@drawable/icon")~\n~SetApplicationAttribute(android:label, "$LABEL$")~\n~CreateResourceFromFile(Macro, Themes.LightTheme)~\n~'End of default text.~\n~~\n~AddApplicationText(~\n~)~\n~'Set activity to Landscape~\n~SetActivityAttribute(foto, android:screenOrientation, "landscape")~\n~AddApplicationText(~\n~~\n~ ~\n~)~\n~AddManifestText(~\n~~\n~)~\n~'''' para el teclado~\n~ SetActivityAttribute(main, android:windowSoftInputMode, adjustResize|stateHidden)~\n~ SetApplicationAttribute(android:allowBackup, "false")~\n~ SetServiceAttribute(Tracker, android:foregroundServiceType, "location")~\n~ ~\n~ AddManifestText(~\n~~\n~)~\n~''CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~ 'End of default text.~\n~ ~\n~SetApplicationAttribute(android:usesCleartextTraffic, "true")~\n~ AddManifestText(~\n~~\n~)~\n~AddPermission(android.permission.ACCESS_BACKGROUND_LOCATION)~\n~AddManifestText(~\n~~\n~)~\n~AddManifestText(~\n~~\n~)~\n~AddManifestText(~\n~~\n~) 'in order to access the device non-resettable identifiers such as IMEI and serial number.~\n~~\n~'///////////////////////// FLP Y PUSH /////////////~\n~' CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~' CreateResourceFromFile(Macro, FirebaseAnalytics.Firebase)~\n~' CreateResourceFromFile(Macro, FirebaseAnalytics.FirebaseAnalytics)~\n~' CreateResourceFromFile(Macro, FirebaseNotifications.FirebaseNotifications)~\n~ SetServiceAttribute(Tracker, android:foregroundServiceType, "location")~\n~'//////////////////////////////////////////////////////~\n~'Le da mas memoria a la aplicacion~\n~SetApplicationAttribute(android:largeHeap, "true")~\n~~\n~'Si al cargar un mapa de google mande este error "java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/ProtocolVersion". agregar la siguiente linea:~\n~AddApplicationText()
+Module1=B4XMainPage
+Module10=C_Pedidos
+Module11=C_Principal
+Module12=C_Productos
+Module13=C_Promos
+Module14=C_TicketsDia
+Module15=C_updateAvailable
+Module16=CameraExClass
+Module17=DBRequestManager
+Module18=DownloadService
+Module19=errorManager
+Module2=C_CheckList
+Module20=EscPosPrinter
+Module21=foto
+Module22=MAPA_RUTAS
+Module23=Mods
+Module24=SD_Spinner
+Module25=Starter
+Module26=Subs
+Module27=Tracker
+Module3=C_Cliente
+Module4=C_Clientes
+Module5=C_Historico
+Module6=C_Mapas
+Module7=C_Nota
+Module8=C_NoVenta
+Module9=C_NuevoCliente
+NumberOfFiles=51
+NumberOfLibraries=28
+NumberOfModules=27
+Version=12.2
+@EndOfDesignText@
+#Region Project Attributes
+ #ApplicationLabel: Kelloggs Venta
+ #VersionCode: 3000
+ #VersionName: 3.07.28 RMI
+ #SupportedOrientations: portrait
+ #CanInstallToExternalStorage: False
+ #BridgeLogger:true
+ #AdditionalJar: com.android.support:support-v4
+ #AdditionalJar: com.google.android.gms:play-services-location
+ 'Para PDFViewer
+ #AdditionalJar: android-pdf-viewer.aar
+ #AdditionalJar: Pdfium.aar
+#End Region
+
+#Region Activity Attributes
+ #FullScreen: False
+ #IncludeTitle: False
+#End Region
+
+Sub Process_Globals
+ Public ActionBarHomeClicked As Boolean
+End Sub
+
+Sub Globals
+
+End Sub
+
+Sub Activity_Create(FirstTime As Boolean)
+ Dim pm As B4XPagesManager
+ pm.Initialize(Activity)
+End Sub
+
+'Template version: B4A-1.01
+#Region Delegates
+
+Sub Activity_ActionBarHomeClick
+ ActionBarHomeClicked = True
+ B4XPages.Delegate.Activity_ActionBarHomeClick
+ ActionBarHomeClicked = False
+End Sub
+
+Sub Activity_KeyPress (KeyCode As Int) As Boolean
+ Return B4XPages.Delegate.Activity_KeyPress(KeyCode)
+End Sub
+
+Sub Activity_Resume
+ B4XPages.Delegate.Activity_Resume
+End Sub
+
+Sub Activity_Pause (UserClosed As Boolean)
+ B4XPages.Delegate.Activity_Pause
+End Sub
+
+Sub Activity_PermissionResult (Permission As String, Result As Boolean)
+ B4XPages.Delegate.Activity_PermissionResult(Permission, Result)
+End Sub
+
+Sub Create_Menu (Menu As Object)
+ B4XPages.Delegate.Create_Menu(Menu)
+End Sub
+
+#if Java
+public boolean _onCreateOptionsMenu(android.view.Menu menu) {
+ processBA.raiseEvent(null, "create_menu", menu);
+ return true;
+
+}
+#End If
+#End Region
+
+'Program code should go into B4XMainPage and other pages.
\ No newline at end of file
diff --git a/B4A/MAPA_RUTAS.bas b/B4A/MAPA_RUTAS.bas
new file mode 100644
index 0000000..b04f792
--- /dev/null
+++ b/B4A/MAPA_RUTAS.bas
@@ -0,0 +1,320 @@
+B4A=true
+Group=Default Group
+ModulesStructureVersion=1
+Type=Activity
+Version=9.3
+@EndOfDesignText@
+#Region Activity Attributes
+ #FullScreen: False
+ #IncludeTitle: False
+#End Region
+
+'Activity module
+Sub Process_Globals
+ Dim GPS As GPS
+ Dim rp As RuntimePermissions
+ Dim ruta As String
+' Dim skmt As SQL
+ Dim c As Cursor
+ Dim c2 As Cursor
+ Dim c22 As Cursor
+ Dim c3 As Cursor
+End Sub
+
+Sub Globals
+ Private gmap As GoogleMap
+ Private MapFragment1 As MapFragment
+ Dim Latitud As Double = 0
+ Dim Longitud As Double = 0
+ Dim Lat2 As Double = 0
+ Dim Lon2 As Double = 0
+ Dim p1, p2 As Location
+ Dim Distance As Float
+ Dim boton1 As Button
+ Dim HUE_BLUE As Float
+ Dim HUE_RED As Float
+ Dim HUE_GREEN As Float
+ Private B_AZUL As Button
+ Private B_ROJO As Button
+ Private B_VERDE As Button
+ Private B_TODOS As Button
+ Dim Tienda As String
+ Dim LatitudRU As String
+ Dim LongitudRU As String
+ Dim LIST_AZUL As List
+ Dim LIST_ROJO As List
+ Dim LIST_VERDE As List
+ Dim MARK_AZUL As Marker
+ Dim MARK_ROJO As Marker
+ Dim MARK_VERDE As Marker
+ Dim MARK_CEDIS As Marker
+ Dim rojo As String
+ Dim azul As String
+ Dim verde As String
+ Dim todos As String
+ Dim NumSerie As Int
+ Dim OnInfoWindowClickListener1 As OnInfoWindowClickListener
+ Dim GoogleMapEXTRA As GoogleMapsExtras
+ Dim CODIGO As String
+ Private SEMANA As String
+End Sub
+
+Sub Activity_Create(FirstTime As Boolean)
+ Activity.LoadLayout("MAPA_RUTAS")
+ ruta = File.DirInternal
+' If File.Exists(ruta, "kmt.db") = False Then
+' File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db")
+' End If
+' skmt.Initialize(ruta,"kmt.db", True)
+ 'GPS
+ If(FirstTime) Then
+ GPS.Initialize("GPS")
+ End If
+ If MapFragment1.IsGooglePlayServicesAvailable = False Then
+ ToastMessageShow("Please install Google Play Services.", True)
+ End If
+
+ 'Boton velocidad'
+ boton1.Initialize(0)
+ boton1.Text = 0 &" "&"km/h"
+ boton1.TextColor = Colors.Red
+ boton1.TextSize = 15
+ Activity.AddView(boton1, 40%x, 5dip, 25%x, 40dip)
+ 'Fin Boton velocidad'
+ 'MARK_CEDIS.IsInitialized
+ MARK_AZUL.IsInitialized
+ MARK_ROJO.IsInitialized
+ MARK_VERDE.IsInitialized
+
+ LIST_AZUL.Initialize
+ LIST_ROJO.Initialize
+ LIST_VERDE.Initialize
+ verde = 0
+ azul = 0
+ rojo = 0
+ todos = 1
+ c=Starter.skmt.ExecQuery2("select count(*) AS CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SEMANA"))
+ c.Position =0
+ SEMANA = c.GetString("CUANTOS")
+ c.Close
+ If SEMANA > 0 Then
+ c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SEMANA"))
+ c.Position =0
+ SEMANA = c.GetString("CAT_VA_VALOR")
+ c.Close
+ End If
+End Sub
+
+Sub Activity_Resume
+ If GPS.GPSEnabled = False Then
+ ToastMessageShow("Debe Activar el GPS del Equipo.", True)
+ StartActivity(GPS.LocationSettingsIntent)
+ Else
+ GPS.Start(19.4316281, -99.1333579)
+ End If
+' Subs.ultimaActividad(Me)
+End Sub
+
+Sub MapFragment1_Ready
+ gmap = MapFragment1.GetMap
+ LongitudRU = 19.4316281
+ LatitudRU = -99.1333579
+
+' todos= 1
+ 'permisos
+ rp.CheckAndRequest(rp.PERMISSION_ACCESS_FINE_LOCATION)
+ Wait For Activity_PermissionResult (Permission As String, Result As Boolean)
+ gmap.MyLocationEnabled = Result
+
+ Dim JavaMapsObject As JavaObject
+ JavaMapsObject = gmap.GetUiSettings
+ JavaMapsObject.RunMethod("setMapToolbarEnabled", Array As Object(True))
+
+ '''''''---------------------------- MARKER AZUL - POR VISITAR
+ If azul = 1 Or todos = 1 Then
+ c.IsInitialized
+ c=Starter.skmt.ExecQuery2("select CAT_CL_CODIGO,CAT_CL_NOMBRE,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_NUM_SERIEFISICO from kmt_info where CAT_CL_NOMBRE <>'VENTA ABORDO' AND CAT_CL_CODIGO NOT IN (Select PE_CLIENTE from PEDIDO) AND CAT_CL_CODIGO NOT In (Select NV_CLIENTE from NOVENTA) AND CAT_CL_CODIGO NOT LIKE 'N%' and CAT_CL_DIAS_VISITA = (SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = 'DIA_VISITA') and cat_cl_codigo <> 0 AND CAT_CL_TIPO_RUTA IN (?,?) ORDER BY CAT_CL_NUM_SERIEFISICO", Array As String(SEMANA, "SEMANAL"))
+' skmt.Initialize(ruta,"kmt.db", True)
+ If c.RowCount > 0 Then
+ For i = 0 To c.RowCount -1
+ c.Position = i
+ LongitudRU = c.GetDouble("CAT_CL_LONG")
+ LatitudRU = c.GetDouble("CAT_CL_LAT")
+ CODIGO=c.GetString("CAT_CL_CODIGO")
+ Tienda= c.GetString("CAT_CL_NOMBRE")
+ NumSerie=c.GetInt("CAT_CL_NUM_SERIEFISICO")
+ 'MARK_AZUL = gmap.AddMarker2(LongitudRU,LatitudRu,Tienda, gmap.HUE_BLUE)
+ MARK_AZUL = gmap.AddMarker3(LatitudRU, LongitudRU, CODIGO, LoadBitmap(File.DirAssets, "marker-azul-" & NumSerie &".png"))
+ MARK_AZUL.Snippet = Tienda
+ Next
+ c .Close
+ If MARK_AZUL.IsInitialized Then LIST_AZUL.Add(MARK_AZUL)
+ End If
+ End If
+
+ '''''''---------------------------- MARKER VERDE - VENTA
+ If verde = 1 Or todos = 1 Then
+ c2.IsInitialized
+ c2=Starter.skmt.ExecQuery("select CAT_CL_CODIGO, CAT_CL_NOMBRE,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_NUM_SERIEFISICO from kmt_info WHERE CAT_CL_NOMBRE <>'VENTA ABORDO' AND CAT_CL_CODIGO IN (Select PE_CLIENTE from PEDIDO) AND CAT_CL_CODIGO NOT In (Select NV_CLIENTE from NOVENTA) and CAT_CL_DIAS_VISITA = (SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = 'DIA_VISITA')")
+ For i = 0 To c2.RowCount -1
+ c2.Position = i
+ LongitudRU = c2.GetDouble("CAT_CL_LONG")
+ LatitudRU = c2.GetDouble("CAT_CL_LAT")
+ CODIGO=c2.GetString("CAT_CL_CODIGO")
+ Tienda= c2.GetString("CAT_CL_NOMBRE")
+ NumSerie=c2.GetInt("CAT_CL_NUM_SERIEFISICO")
+ MARK_VERDE = gmap.AddMarker3(LongitudRU,LatitudRU,CODIGO, LoadBitmap(File.DirAssets, "marker-verde-"&NumSerie&".png"))
+ MARK_VERDE.Snippet = Tienda
+ Next
+ Else
+ If verde = 1 Or todos = 1 Then
+ c2.IsInitialized
+ c2=Starter.skmt.ExecQuery("select CAT_CL_CODIGO, CAT_CL_NOMBRE,CAT_CL_LONG,CAT_CL_LAT, CAT_CL_NUM_SERIEFISICO from kmt_info WHERE CAT_CL_NOMBRE <>'VENTA ABORDO' AND CAT_CL_CODIGO IN (Select PE_CLIENTE from PEDIDO) AND CAT_CL_CODIGO NOT In (Select NV_CLIENTE from NOVENTA ) AND CAT_CL_DIAS_VISITA = (SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = 'DIA_VISITA')")
+ For i = 0 To c2.RowCount -1
+ c2.Position = i
+ LongitudRU = c2.GetDouble("CAT_CL_LONG")
+ LatitudRU = c2.GetDouble("CAT_CL_LAT")
+ CODIGO=c2.GetString("CAT_CL_CODIGO")
+ Tienda= c2.GetString("CAT_CL_NOMBRE")
+ NumSerie=c2.GetInt("CAT_CL_NUM_SERIEFISICO")
+ MARK_VERDE = gmap.AddMarker3(LongitudRU,LatitudRU,CODIGO, LoadBitmap(File.DirAssets, "marker-verde-"&NumSerie&".png"))
+ MARK_VERDE.Snippet = Tienda
+ Next
+ c2 .Close
+ If MARK_VERDE.IsInitialized Then LIST_VERDE.Add(MARK_VERDE)
+ End If
+ End If
+
+ '''''''---------------------------- MARKER ROJO - NO VENTA
+
+ If rojo =1 Or todos = 1 Then
+ c3.IsInitialized
+ c3=Starter.skmt.ExecQuery("select CAT_CL_CODIGO, CAT_CL_NOMBRE,CAT_CL_LONG,CAT_CL_LAT ,CAT_CL_NUM_SERIEFISICO from kmt_info where CAT_CL_NOMBRE <>'VENTA ABORDO' AND CAT_CL_CODIGO In (Select NV_CLIENTE from NOVENTA ) AND CAT_CL_CODIGO NOT IN (Select PE_CLIENTE from PEDIDO) and CAT_CL_DIAS_VISITA = (SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = 'DIA_VISITA')order by CAT_CL_NUM_SERIEFISICO")
+ For i = 0 To c3.RowCount -1
+ c3.Position = i
+ LongitudRU = c3.GetDouble("CAT_CL_LONG")
+ LatitudRU = c3.GetDouble("CAT_CL_LAT")
+ CODIGO=c3.GetString("CAT_CL_CODIGO")
+ Tienda= c3.GetString("CAT_CL_NOMBRE")
+ NumSerie=c3.GetInt("CAT_CL_NUM_SERIEFISICO")
+ MARK_ROJO = gmap.AddMarker3(LongitudRU,LatitudRU,CODIGO, LoadBitmap(File.DirAssets, "marker-rojo-" & NumSerie &".png"))
+ MARK_ROJO.Snippet = Tienda
+ Next
+ Else
+ If rojo =1 Or todos = 1 Then
+ c3.IsInitialized
+ c3=Starter.skmt.ExecQuery("select CAT_CL_CODIGO, CAT_CL_NOMBRE,CAT_CL_LONG,CAT_CL_LAT ,CAT_CL_NUM_SERIEFISICO from kmt_info where CAT_CL_NOMBRE <>'VENTA ABORDO' AND CAT_CL_CODIGO In (Select NV_CLIENTE from NOVENTA ) AND CAT_CL_CODIGO NOT IN (Select PE_CLIENTE from PEDIDO) and CAT_CL_DIAS_VISITA = (SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = 'DIA_VISITA')order by CAT_CL_NUM_SERIEFISICO")
+ For i = 0 To c3.RowCount -1
+ c3.Position = i
+ LongitudRU = c3.GetDouble("CAT_CL_LONG")
+ LatitudRU = c3.GetDouble("CAT_CL_LAT")
+ CODIGO=c3.GetString("CAT_CL_CODIGO")
+ Tienda= c3.GetString("CAT_CL_NOMBRE")
+ NumSerie=c3.GetInt("CAT_CL_NUM_SERIEFISICO")
+ MARK_ROJO = gmap.AddMarker3(LongitudRU,LatitudRU,CODIGO, LoadBitmap(File.DirAssets, "marker-rojo-" & NumSerie &".png"))
+ MARK_ROJO.Snippet = Tienda
+ Next
+ If MARK_ROJO.IsInitialized Then LIST_ROJO.Add(MARK_ROJO)
+ c3.Close
+ End If
+ End If
+ '''------------------------------
+
+' MARK_CEDIS = gmap.AddMarker3("19.3961802","-99.0784293","CEDIS", LoadBitmap(File.DirAssets, "marker-azul-0.png"))
+' If MARK_VERDE.Visible Or MARK_ROJO.Visible Then
+' MARK_CEDIS.Remove
+' End If
+ If LatitudRU > -1 Then
+ LongitudRU = 19.4316281
+ LatitudRU = -99.1333579
+ End If
+ Dim aa As CameraPosition
+ aa.Initialize(LongitudRU,LatitudRU,10)''' RECOMENDABLE CAMBIAR A 10 PARA QUE SE VEAN MAS MARCADORES
+ gmap.AnimateCamera(aa)
+
+ '''''---------------------- ESTO ES PARA LOS CLICK EN LAS VENTANAS DE INFORMACION-----------
+ Dim OnInfoWindowClickListener1 As OnInfoWindowClickListener
+ OnInfoWindowClickListener1.Initialize("OnInfoWindowClickListener1")
+ GoogleMapEXTRA.SetOnInfoWindowClickListener(gmap, OnInfoWindowClickListener1)
+End Sub
+'
+''''-------------------------- PRUEBA CON MARKER _CLICK
+
+Sub OnInfoWindowClickListener1_click(Marker1 As Marker)
+ Starter.skmt.ExecNonQuery("delete from CUENTAA")
+ Starter.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?) ", Array As Object(Marker1.Title))
+ Activity.Finish
+ Subs.iniciaActividad("Cliente")
+End Sub
+
+Sub GPS_LocationChanged (Parametro As Location)
+ gmap = MapFragment1.GetMap
+ MARK_CEDIS.IsInitialized
+ Dim sp As Int
+ sp = Ceil(Parametro.Speed * 3.6)
+ boton1.Text = sp &" "&"km/h"
+ Latitud = Parametro.Latitude
+ Longitud = Parametro.Longitude
+ p2.Initialize2(Latitud,Longitud)
+ p1.Initialize2(Lat2, Lon2)
+ Distance = p1.DistanceTo(p2)
+' If Latitud <> 0 And Longitud <> 0 Then
+' If Distance > 10 Then
+' Lat2 = Latitud
+' Lon2 = Longitud
+' Dim cp As CameraPosition
+' cp.Initialize2(Parametro.Latitude, Parametro.Longitude, gmap.CameraPosition.Zoom, Parametro.Bearing, 0)
+' gmap.AnimateCamera(cp)
+' End If
+' End If
+End Sub
+
+Sub Activity_Pause (UserClosed As Boolean)
+ GPS.Stop
+End Sub
+
+Sub B_TODOS_Click
+ todos = 1
+ verde = 0
+ azul = 0
+ rojo = 0
+ If gmap.IsInitialized Then gmap.Clear
+ MapFragment1_Ready
+End Sub
+
+Sub B_VERDE_Click
+ verde = 1
+ azul = 0
+ rojo = 0
+ todos = 0
+ If gmap.IsInitialized Then gmap.Clear
+ MapFragment1_Ready
+End Sub
+
+Sub B_ROJO_Click
+ rojo = 1
+ verde = 0
+ azul = 0
+ todos = 0
+ If gmap.IsInitialized Then gmap.Clear
+ MapFragment1_Ready
+End Sub
+
+Sub B_AZUL_Click
+ azul = 1
+ verde = 0
+ rojo = 0
+ todos = 0
+ If gmap.IsInitialized Then gmap.Clear
+ MapFragment1_Ready
+End Sub
+
+Sub Activity_KeyPress (key As Int) As Boolean 'ignore
+ ' BACK key pressed
+ If key=KeyCodes.KEYCODE_BACK Then
+ Subs.iniciaActividad("Principal")
+ Return False
+ 'End If
+ End If
+ ' Returning False signals the system to handle the key
+End Sub
\ No newline at end of file
diff --git a/B4A/Mods.bas b/B4A/Mods.bas
new file mode 100644
index 0000000..c0672eb
--- /dev/null
+++ b/B4A/Mods.bas
@@ -0,0 +1,15 @@
+B4A=true
+Group=Default Group
+ModulesStructureVersion=1
+Type=StaticCode
+Version=11.5
+@EndOfDesignText@
+Sub process_globals
+End Sub
+
+'Ver 2.10.17
+'Se corrigieron en "mapas_rutas" y en "c_mapas" errores donde la longitud y latitud estaban invertidas y marcaba las tiendas en Africa.
+'Ver 2.09.03
+'Se agregó código en "C_Cliente.GPS_LocationChanged" para que cuando haya un cambio de ubicacion, se actualize el texto del boton "b_ubicacion".
+'Se agregó código en "C_Cliente.B4XPage_Appear" para que cuando se entre a "C_Cliente" el cambio minimo de distancia (SetSmallestDisplacement) de la ubicacion sea 1,
+'y cuando se salga de "C_Cliente" regrese a 75 (C_Cliente.Guardar_Click).
\ No newline at end of file
diff --git a/B4A/SD_Spinner.bas b/B4A/SD_Spinner.bas
new file mode 100644
index 0000000..7e35139
--- /dev/null
+++ b/B4A/SD_Spinner.bas
@@ -0,0 +1,491 @@
+B4A=true
+Group=Default Group
+ModulesStructureVersion=1
+Type=Class
+Version=8.3
+@EndOfDesignText@
+' Update 1.0.2 (04/01/2018)
+#Event: ItemClick (Position As Int, Value as String)
+#DesignerProperty: Key: TextColor, DisplayName: TextColor, FieldType: Color, DefaultValue: 0xFF000000,Description: Text color
+#DesignerProperty: Key: TextSize, DisplayName: TextSize, FieldType: int, DefaultValue: 14,Description: Label Text Size
+#DesignerProperty: Key: HintColor, DisplayName: HintColor, FieldType: Color, DefaultValue: 0xFF888888,Description: Hint color, noselected opstion
+#DesignerProperty: Key: BackgroundColor, DisplayName: Color background, FieldType: Color, DefaultValue: 0xFFFFFFFF, Description: You can use the built-in color picker to find the color values.
+#DesignerProperty: Key: BackgroundColorList, DisplayName: ListColor background, FieldType: Color, DefaultValue: 0xFF000000, Description: You can use the built-in color picker to find the color values.
+#DesignerProperty: Key: GrayDisplay, DisplayName: Gray Display, FieldType: boolean, DefaultValue: False, Description: Gray Display.
+#DesignerProperty: Key: RoundCorner, DisplayName:RoundCorner, FieldType: boolean, DefaultValue: False, Description: RoundCorner.
+
+Sub Class_Globals
+ Public SelectedItem As String
+ Public SelectedID As String
+ Public SelectedIndex As Int
+ Public GrayDisplay As Boolean
+ Public BColor, TColor,HintColor, BColorList As Int
+ Public RoundCorner As Boolean
+ Public ScrollViewParent As ScrollView = Null
+
+ Private EventName As String 'ignore
+ Private CallBack As Object 'ignore
+ Private mBase As Panel
+ Public MyAct As Panel
+ Private Lab As Label
+ Private AppPanel As Panel
+ Public Top,Left As Int
+ Private ListPanel As ScrollView
+
+ Private ListItem As List
+ Private TextSize As Int
+ Type Item (Text As String,TextHelp As String,ID As String, BackgroundColor As Int, TextColor As Int, Image As Bitmap, G As Int)
+End Sub
+
+Public Sub Initialize (vCallback As Object, vEventName As String)
+ EventName = vEventName
+ CallBack = vCallback
+ ListItem.Initialize
+ Lab.Initialize("Lab")
+ SelectedItem=""
+ SelectedID=""
+ SelectedIndex=-1
+
+ AppPanel.Initialize("AppPanel")
+ ListPanel.Initialize(1000dip)
+End Sub
+
+Public Sub Invalidate
+ mBase.Invalidate
+End Sub
+
+Public Sub DesignerCreateView (Base As Panel, Lbl As Label, Props As Map)
+ mBase = Base
+ mBase.Tag=Me
+
+ Left=0
+ Top=0
+ Try
+ Dim Obj As View = mBase
+ Log(GetType(Obj))
+ Do While Not(GetType(Obj) = "android.widget.FrameLayout")
+ Left=Left+Obj.Left
+ Top=Top+Obj.Top
+ Obj=Obj.Parent
+ Loop
+ MyAct=Obj
+ Catch
+ Dim r As Reflector
+ r.Target = r.GetActivityBA
+ MyAct=r.GetField("vg")
+ End Try
+
+ If Props.ContainsKey("BackgroundColor") Then BColor=Props.Get("BackgroundColor")
+ If Props.ContainsKey("BackgroundColorList") Then BColorList=Props.Get("BackgroundColorList")
+ If Props.ContainsKey("TextColor") Then TColor=Props.Get("TextColor")
+ If Props.ContainsKey("TextSize") Then TextSize=Props.Get("TextSize")
+ If Props.ContainsKey("HintColor") Then HintColor=Props.Get("HintColor")
+ If Props.ContainsKey("GrayDisplay") Then GrayDisplay=Props.Get("GrayDisplay")
+ If Props.ContainsKey("RoundCorner") Then RoundCorner=Props.Get("RoundCorner")
+
+ Lab.TextColor=TColor
+ Lab.Color=BColor
+ Lab.Gravity=Gravity.CENTER
+ Lab.TextSize=TextSize
+ Lab.BringToFront
+ SetIndex(SelectedIndex)
+ mBase.AddView(Lab,0,0,mBase.Width,mBase.Height)
+
+ Dim Ima As Panel
+ Ima.Initialize("")
+ LoadDrawableByName(Ima,"dropdown_ic_arrow_normal_holo_light")
+ mBase.AddView(Ima,mBase.Width-40dip,(mBase.Height/2)-20dip,40dip,40dip)
+
+End Sub
+
+Private Sub LoadDrawableByName(Control As View, ImageName As String) As Boolean
+ Dim R As Reflector
+ Try
+ R.Target = R.GetContext
+ R.Target = R.RunMethod("getResources")
+ R.Target = R.RunMethod("getSystem")
+ Dim ID_Drawable As Int
+ ID_Drawable = R.RunMethod4("getIdentifier", Array As Object(ImageName, "drawable", "android"), _
+ Array As String("java.lang.String", "java.lang.String", "java.lang.String"))
+ R.Target = R.GetContext
+ R.Target = R.RunMethod("getResources")
+ Control.Background = R.RunMethod2("getDrawable", ID_Drawable, "java.lang.int")
+ Return True
+
+ Catch
+ LogColor("ERROR.LoadDrawableByName:" & LastException.Message, Colors.Red)
+ Return False
+
+ End Try
+End Sub
+
+Public Sub GetBase As Panel
+ Return mBase
+End Sub
+
+#Region Private
+
+private Sub Lab_Click
+ Dim I As IME
+ I.Initialize("")
+ I.HideKeyboard
+
+ DesignerList
+End Sub
+
+Private Sub AppPanel_Touch (Action As Int, X As Float, Y As Float)
+ 'AppPanel.Visible=False
+ AppPanel.RemoveView
+End Sub
+
+Sub Corner(Colore As Int) As ColorDrawable
+ Dim cdb As ColorDrawable
+ cdb.Initialize(Colore, 20dip)
+ Return cdb
+End Sub
+
+Sub RoundBorders(B0 As Bitmap, radius As Int) As Bitmap
+
+ Dim B1,B2 As Bitmap
+ Dim cv As Canvas
+ Dim Rect1 As Rect
+
+ B2.InitializeMutable(40dip,40dip)
+ cv.Initialize2(B2)
+ Dim Drawable1 As ColorDrawable
+ Drawable1.Initialize(Colors.White,radius)
+ Rect1.Initialize(0,0,B2.Width-1,B2.Height-1)
+ cv.DrawDrawable(Drawable1,Rect1)
+
+ B1.InitializeMutable(40dip,40dip)
+ cv.Initialize2(B1)
+ cv.DrawBitmap(B0,Null,Rect1)
+
+ For r=0 To B2.Height-1
+ For c=0 To B2.Width-1
+ If B2.GetPixel(c,r)=0 Then
+ cv.DrawPoint(c,r,0)
+ End If
+ Next
+ Next
+ cv.DrawCircle(20dip,20dip,20dip,Colors.Black,False,1dip)
+ 'P.SetBackgroundImage(B1)
+ Return B1
+End Sub
+
+private Sub DesignerList
+ Dim HeightListView As Int = 0
+ Dim Space As Int
+
+ If ListItem.size>0 Then
+ If AppPanel.IsInitialized Then AppPanel.RemoveView
+ MyAct.addview(AppPanel,0,0,100%x,100%Y)
+
+ If RoundCorner Then ListPanel.Color=Colors.Transparent Else ListPanel.Color=BColorList
+ ListPanel.RemoveView
+ ListPanel.Panel.RemoveAllViews
+ ListPanel.Panel.Height=0
+
+ For i=0 To ListItem.Size-1
+ Dim Item As Item
+ Item.Initialize
+
+ Item = ListItem.Get(i)
+ Dim P As Panel
+ P.Initialize("PanelClick")
+ If RoundCorner Then P.Background=Corner(Item.BackgroundColor) Else P.Color=Item.BackgroundColor
+
+ P.Tag=I
+ Try
+ Space=40dip
+ Dim Ima As ImageView
+ Ima.Initialize("")
+ Ima.Gravity=Gravity.FILL
+ If RoundCorner Then
+ Ima.SetBackgroundImage(RoundBorders(Item.Image,20dip))
+ Else
+ Ima.SetBackgroundImage(Item.Image)
+ End If
+
+ P.AddView(Ima,0dip,5dip,40dip,40dip)
+ Catch
+ Space=0dip
+ End Try
+
+ Dim La As Label
+ La.Initialize("")
+ La.Text=Item.text
+ La.TextSize=15
+ La.Color=Colors.Transparent
+ La.TextColor=Item.TextColor
+ La.Typeface=Typeface.DEFAULT_BOLD
+ La.Gravity=Item.G
+
+ P.AddView(La,Space,0dip,mBase.Width-Space,30dip)
+ If Item.texthelp.Trim<>"" Then
+ Dim La As Label
+ La.Initialize("")
+ La.Text=Item.TextHelp
+ La.TextSize=12
+ La.Color=Colors.Transparent
+ La.TextColor=Item.TextColor
+ La.Gravity=Item.G
+ P.AddView(La,Space,25dip,mBase.Width-Space,30dip)
+ Else
+ La.Height=50dip
+ End If
+ ListPanel.Panel.AddView(P,-mBase.Width,HeightListView,mBase.Width-2DIP,49dip)
+ P.SetLayoutAnimated(100+(HeightListView/3),1dip,HeightListView,mBase.Width-2DIP,49dip)
+ HeightListView=HeightListView+50dip
+ Next
+ ListPanel.Panel.Height=HeightListView
+
+ Dim LeftSpinner,TopSpinner,HeightSpinner,Yafter As Int
+
+ If GrayDisplay Then AppPanel.Color=Colors.aRGB(200,0,0,0) Else AppPanel.Color=Colors.Transparent
+ If ScrollViewParent.IsInitialized Then
+ If Left+mBase.Width+ScrollViewParent.Left>100%x Then LeftSpinner=100%x-mBase.Width Else LeftSpinner=Left
+ Else
+ If Left+mBase.Width>100%x Then LeftSpinner=100%x-mBase.Width Else LeftSpinner=Left
+ End If
+
+ Yafter=100%y-Top-mBase.Height
+ If ScrollViewParent.IsInitialized Then
+ Yafter=Yafter+ScrollViewParent.ScrollPosition
+ Top=Top-ScrollViewParent.ScrollPosition
+ End If
+ If (HeightListView>Top)And (HeightListView>Yafter) Then
+ ' Non va bene dappertutto
+ If (Top>100%y-Top-mBase.Height) Then
+ 'sopra é più grande
+ TopSpinner=0dip
+ HeightSpinner=Top
+ Else
+ 'sotto è più grande
+ TopSpinner=Top+mBase.Height
+ HeightSpinner=100%y-Top-mBase.Height
+ End If
+ Else if (HeightListView>Top) And (HeightListView<=Yafter) Then
+ ' Va bene di sotto
+ TopSpinner=Top+mBase.Height
+ HeightSpinner=HeightListView
+ Else If (HeightListView<=Top)And (HeightListView>Yafter) Then
+ ' Va bene di sopra
+ TopSpinner=Top+mBase.Height-HeightListView
+ HeightSpinner=HeightListView
+ Else
+ ' Haqspazio sopra e sotto
+ TopSpinner=Top+mBase.Height
+ HeightSpinner=HeightListView
+ End If
+
+ If ScrollViewParent.IsInitialized=False Then
+ AppPanel.AddView(ListPanel,LeftSpinner,TopSpinner,mBase.Width,HeightSpinner)
+ Else
+ AppPanel.AddView(ListPanel,LeftSpinner,TopSpinner,mBase.Width,HeightSpinner)
+ End If
+ 'AppPanel.Visible=True
+ End If
+End Sub
+
+Private Sub PanelClick_Click
+ Dim P As Panel = Sender
+ Dim Position As Int = P.Tag
+
+ SelectedIndex=Position
+ SelectedID=GetID(Position)
+ SelectedItem=GetItem(Position)
+ Lab.TextColor=TColor
+ Lab.Text=SelectedItem
+ Lab.BringToFront
+ If SubExists(CallBack,EventName & "_ItemClick") Then CallSub3(CallBack,EventName & "_ItemClick",Position,GetItem(Position))
+
+ 'AppPanel.Visible=False
+ AppPanel.RemoveView
+End Sub
+
+ #End Region
+
+ #Region Method
+
+Public Sub Add(Text As String, TextHelp As String,ID As String, BackgroundColor As Int, TextColor As Int, Gravities As Int,Image As Bitmap)
+ Dim Item As Item
+
+ Item.Initialize
+ Item.Text=Text
+ Item.TextHelp=TextHelp
+ Item.ID=ID
+ Item.BackgroundColor=BackgroundColor
+ Item.TextColor=TextColor
+ Item.G=Gravities
+ 'Log(Image)
+ If Image.IsInitialized Then
+ Item.Image=Image
+ Else
+ Dim Bmp As Bitmap
+ Bmp=Null
+ Item.Image=Bmp
+ End If
+ ListItem.Add(Item)
+
+End Sub
+
+Public Sub AddAll(L As List, TextHelp As String, BackgroundColor As Int, TextColor As Int, Gravities As Int)
+ Dim Bmp As Bitmap = Null
+
+ For i=0 To L.Size-1
+ Dim Item As Item
+ Item.Text=L.Get(i)
+ Item.TextHelp=TextHelp
+ Item.ID=i
+ Item.BackgroundColor=BackgroundColor
+ Item.TextColor=TextColor
+ Item.G=Gravities
+ Item.Image=Bmp
+ ListItem.Add(Item)
+ Next
+End Sub
+
+public Sub Size As Int
+ Return ListItem.Size
+End Sub
+
+Public Sub Clear
+ ListItem.Clear
+ DesignerList
+ SelectedIndex=-1
+ SelectedID=""
+ SelectedItem=""
+ Lab.Textcolor=HintColor
+ Lab.Text="Seleccionar Categoria"
+ Lab.BringToFront
+End Sub
+
+Public Sub RemoveIndex(Position As Int)
+ If Position>-1 And Position-1 Then ListItem.RemoveAt(Position)
+End Sub
+
+Public Sub GetItem(Position As Int) As String
+ Dim Ret As String = ""
+ If Position>-1 And Position-1 And Position-1 And Position-1 And Position 0 Then
+ s.Position=0
+ Private laSemana As String = s.GetString("semana")
+ Else
+ Private laSemana As String = ""
+ End If
+
+ Private cpv As Cursor=skmt.ExecQuery2("select count(*) as CUANTOS from kmt_info where CAT_CL_DIAS_VISITA = (SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?) and cat_cl_codigo <> 0 AND CAT_CL_TIPO_RUTA IN (?,?) ORDER BY CAT_CL_NUM_SERIEFISICO", Array As String("DIA_VISITA", laSemana, "SEMANAL"))'Traemos los clientes a visitar hoy.
+ cpv.Position=0
+ Private clientesVisitaHoy As String=cpv.GetString("CUANTOS")
+ If lat_gps = 0 Or lat_gps = Null Then 'Si latitud es CERO o NULL traemos las ultimas coordenadas de la base de datos.
+ Private coords As List = Subs.traeCoordsDeBD
+ lat_gps = coords.Get(0)
+ lon_gps = coords.Get(1)
+ End If
+ s.Close
+ cpv.Close
+ Private rtec, ping, salty As String
+' Log(Application.VersionName)
+ Subs.dameClientesFueraDeFrecuencia
+ Private h As Cursor
+ For Each i As String In Array As String ("RTEC", "PING", "SALTY SNACKS")
+ h=skmt.ExecQuery2("Select sum(PE_COSTO_TOT) As MONTO_DIA from pedido where PE_CLIENTE <> 0 and pe_proid in (Select CAT_GP_ID from cat_gunaprod2 where CAT_GP_TIPO = ? )", Array As String(i))
+ Private x As String = 0
+ If h.RowCount > 0 Then
+ h.Position = 0
+ x = $"$1.3{h.GetString("MONTO_DIA")}"$
+ End If
+ x = $"$1.3{x}"$
+ If x="NaN" Then X = "0"
+ If i = "RTEC" Then rtec = x
+ If i = "PING" Then ping = x
+ If i = "SALTY SNACKS" Then salty = x
+ Next
+ h.Close
+'
+' Dim cmd As DBCommand
+' cmd.Initialize
+' cmd.Name = "UPDATE_KELL_ACTUAL4_GPS"
+' cmd.Parameters = Array As Object(montoActual, clientesVisitaHoy, clientesVenta, clientesVisitados, lat_gps, lon_gps, batt, 0, 0, 0, Application.VersionName, rtec, ping, salty, Subs.dameClientesFueraDeFrecuencia,pedodo_doe almacen, rutaPreventa)
+' If Logger Then LogColor(montoActual&","&clientesVisitaHoy&","&clientesVenta&","&clientesVisitados&","&lat_gps&","&lon_gps&","&batt&","&0&","&0&","&0&","&Application.VersionName&","&rtec&","&ping&","&salty&","& Subs.dameClientesFueraDeFrecuencia&","&almacen&","&rutaPreventa, Colors.Magenta)
+' reqManager.ExecuteCommand(cmd,"updateKell_UTR")
+
+ Dim cmd As DBCommand
+ cmd.Initialize
+ cmd.Name = "UPDATE_KELL_ACTUAL3_GPS"
+ cmd.Parameters = Array As Object(montoActual, clientesVisitados, clientesVenta, clientesVisitaHoy, lat_gps, lon_gps, batt, 0, 0, 0, Application.VersionName, rtec, ping, salty, Subs.dameClientesFueraDeFrecuencia, almacen, rutaPreventa)
+ If Logger Then LogColor(montoActual&","&clientesVisitaHoy&","&clientesVenta&","&clientesVisitados&","&lat_gps&","&lon_gps&","&batt&","&0&","&0&","&0&","&Application.VersionName&","&rtec&","&ping&","&salty&","& Subs.dameClientesFueraDeFrecuencia&","&almacen&","&rutaPreventa, Colors.Magenta)
+ reqManager.ExecuteCommand(cmd,"updateKell_UTR")
+' Log("GPS ACTUALIZACION: " & montoActual&","&clientesVisitaHoy&","&clientesVenta&","&clientesVisitados&","&lat_gps&","&lon_gps&","&batt&","&0&","&0&","&0&","&Application.VersionName&","&rtec&","&ping&","&salty&","& Subs.dameClientesFueraDeFrecuencia&","&almacen&","&rutaPreventa)
+' If Logger Then Log(reqManager)
+' If Logger Then Log("++ ++ ++ Envia_Ultima GPS - Inst_visitas - server: "& server)
+ skmt.ExecNonQuery2("Update cat_variables set CAT_VA_VALOR = ? WHERE CAT_VA_DESCRIPCION = ?" , Array As String(DateTime.Time(DateTime.Now),"HoraIngreso"))
+ 'Reiniciamos el timer para cuando llamamos el Sub desde otra actividad
+ Timer1.Enabled = False
+ Timer1.Interval = Interval * 1000
+ Timer1.Enabled = True
+End Sub
+
+Sub JobDone(Job As HttpJob)
+ If Job.Success = False Then
+' ToastMessageShow("Error: " & Job.ErrorMessage, True)
+ Else
+ 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 = "updateKell_UTR" Then 'query tag
+ For Each records() As Object In result.Rows
+ For Each k As String In result.Columns.Keys
+ If Logger Then Log("Ubicacion en tiempo real: " & k & ": " & records(result.Columns.Get(k)))
+ Next
+ Next
+ End If
+ End If
+ End If
+ Job.Release
+End Sub
+
+'Para los Logs
+Private Sub logcat_LogCatData (Buffer() As Byte, Length As Int)
+ logs.Append(BytesToString(Buffer, 0, Length, "utf8"))
+ If logs.Length > 4000 Then
+ logs.Remove(0, logs.Length - 2000) 'Obtenemos log de 2000 ~ 4000 chars
+ End If
+End Sub
+
+'Revisa que la conexion a la base de datos este bien.
+Sub revisaBD 'ignore
+ If Logger Then Log("revisaBD")
+ If Not(File.Exists(ruta, "kmt.db")) Then File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db")
+ If Not(skmt.IsInitialized) Then skmt.Initialize(ruta, "kmt.db", True)
+End Sub
diff --git a/B4A/Subs.bas b/B4A/Subs.bas
new file mode 100644
index 0000000..74262cf
--- /dev/null
+++ b/B4A/Subs.bas
@@ -0,0 +1,817 @@
+B4A=true
+Group=Default Group
+ModulesStructureVersion=1
+Type=StaticCode
+Version=11
+@EndOfDesignText@
+'Code module
+'Subs in this code module will be accessible from all modules.
+Sub Process_Globals
+ 'These global variables will be declared once when the application starts.
+ 'These variables can be accessed from all modules.
+' Public GZip As GZipStrings 'Usa la libreria CompressStrings
+ Private su As StringUtils 'Usa la libreria StringUtils
+ Dim phn As Phone
+ Dim devModel As String
+ Dim errorLog As SQL 'Requiere la libreria "SQL"
+' Dim wifi As MLwifi
+ Dim ssid As String 'ignore
+ Dim rutaMaxPoints As Int = 3000
+ Dim rutaHrsAtras As Int = 48
+' Dim rutaInicioHoy As String = ""
+End Sub
+
+'Pone el valor de phn.Model en la variable global "devModel"
+Sub getPhnId As String 'ignore
+ 'Requiere la libreria "Phone"
+ devModel = phn.Model
+ If devModel.Length <= 3 Then 'Si phn.Model esta en blanco ...
+ Dim t As String = phn.GetSettings("android_id") 'Intentamos con "android_id"
+ devModel = t
+ End If
+ If devModel.Length >= 3 Then 'Si tenemos valor para phn.Model
+ File.WriteString(File.DirInternal, "phnId.txt", devModel) 'Sobreescribimos archivo phnId.txt with deviceId
+' if starter.logger then Log("Tenemos phnId: "&devModel&" "&File.DirInternal&"/phn.txt sobreescrito")
+ Else If devModel.Length < 3 Then ' Si no tenemos valor, lo leemos de phnId.txt
+ Dim s As String = File.ReadString(File.DirInternal, "phnId.txt")
+ devModel = s
+' if starter.logger then Log("Leemos id de "&File.DirInternal&"/phnId.txt")
+' if starter.logger then Log(devModel)
+ End If
+ Return devModel
+End Sub
+
+'Comprime y regresa un texto (str) en base64
+Sub compress(str As String) As String 'ignore
+ 'Requiere la libreria "CompressStrings"
+' Dim compressed() As Byte = GZip.compress(str)
+' Dim base64 As String = su.EncodeBase64(compressed)
+' if starter.logger then Log($"Comprimido: ${base64.Length}"$)
+' Return base64
+End Sub
+
+'Descomprime y regresa un texto en base64
+Sub decompress(base64 As String) As String 'ignore
+ Dim decompressedbytes() As Byte = su.DecodeBase64(base64)
+' if starter.logger then Log($"decompressedbytesLength: ${decompressedbytes.Length}"$)
+ Dim bc As ByteConverter
+ Dim uncompressed As String = bc.StringFromBytes(decompressedbytes,"UTF8")
+ Log($"Descomprimido: ${uncompressed.Length}"$)
+' if starter.logger then Log($"Decompressed String = ${uncompressed}"$)
+ Return uncompressed
+End Sub
+
+'Convierte una fecha al formato yyMMddHHmmss
+Sub fechaKMT(fecha As String) As String 'ignore
+' if starter.logger then Log(fecha)
+ Dim OrigFormat As String = DateTime.DateFormat 'save orig date format
+ DateTime.DateFormat="yyMMddHHmmss"
+ Dim nuevaFecha As String=DateTime.Date(fecha)
+ DateTime.DateFormat=OrigFormat 'return to orig date format
+' if starter.logger then Log(nuevaFecha)
+ Return nuevaFecha
+End Sub
+
+'Genera una notificacion con importancia alta
+Sub notiHigh(title As String, body As String, activity As Object) 'ignore
+ Private notif As Notification
+ notif.Initialize2(notif.IMPORTANCE_HIGH)
+ notif.Icon = "icon"
+ notif.Vibrate = False
+ notif.Sound = False
+ notif.AutoCancel = True
+ Log("notiHigh: "&title)
+ notif.SetInfo(title, body, activity)
+' if starter.logger then Log("notiHigh SetInfo")
+ notif.Notify(777)
+End Sub
+
+'Regresa el objeto de una notificacion con importancia baja
+Sub notiLowReturn(title As String, Body As String, id As Int) As Notification 'ignore
+ Private notification As Notification
+ notification.Initialize2(notification.IMPORTANCE_LOW)
+ If Starter.logger Then Log("notiLowReturn: "&title)
+ notification.Icon = "icon"
+ notification.Sound = False
+ notification.Vibrate = False
+ notification.SetInfo(title, Body, Main)
+ notification.Notify(id)
+' if starter.logger then Log("notiLowReturn SetInfo")
+ Return notification
+End Sub
+
+'Escribimos las coordenadas y fecha a un archivo de texto
+Sub guardaInfoEnArchivo(coords As String) 'ignore
+ ' Cambiamos el formato de la hora
+ Dim OrigFormat As String=DateTime.DateFormat 'save orig date format
+ DateTime.DateFormat="MMM-dd HH:mm:ss"
+ Dim lastUpdate As String=DateTime.Date(DateTime.Now)
+ DateTime.DateFormat=OrigFormat 'return to orig date format
+
+ Dim ubic As String = coords&","&lastUpdate
+ Dim out As OutputStream = File.OpenOutput(File.DirInternal, "gps.txt", True)
+ Dim s As String = ubic & CRLF
+ Dim t() As Byte = s.GetBytes("UTF-8")
+ out.WriteBytes(t, 0, t.Length)
+ out.Close
+End Sub
+
+'Escribimos las coordenadas (latitud, longitud, fecha) y fecha a una BD
+Sub guardaInfoEnBD(coords As String) 'ignore
+ Log("Guardamos ubicacion en BD - "&coords)
+ Try
+ Dim latlon() As String = Regex.Split("\|", coords)
+ If latlon.Length < 2 Then latlon = Regex.Split(",", coords) 'Si son menos de 2, entonces estan separadas por comas y no por "|"
+' If Main.Logger Then Log("LatLon="&latlon)
+ If Not(Starter.skmt.IsInitialized) Then revisaBD
+ Starter.skmt.ExecNonQuery2("INSERT INTO RUTA_GPS(fecha, lat, lon) VALUES (?,?,?)", Array As Object (latlon(2),latlon(0),latlon(1)))
+ Catch
+ If Starter.logger Then Log(LastException)
+ End Try
+End Sub
+
+'Regresa la ruta gps solicitada comprimida y en base64
+Sub dameRutaGPS(inicioRuta As String, origenRuta As String) As String 'ignore
+ 'Requiere la libreria "SQL"
+ Dim fechaInicio As String
+ Try 'incioRuta es numero
+ inicioRuta = inicioRuta * 1
+' Log("fechaInicio numerica="&fechaInicio)
+ fechaInicio = fechaKMT(DateTime.Now - (DateTime.TicksPerHour * inicioRuta))
+ Catch 'inicioRuta es string
+ fechaInicio = fechaInicioHoy
+' Log("fechaInicio string="&fechaInicio)
+ End Try
+ If Starter.logger Then Log("fechaInicio: "&fechaInicio&" | rutaHrsAtras="&rutaHrsAtras) 'fechaKMT(DateTime.Now)
+ Dim c As Cursor
+ If Starter.skmt.IsInitialized = False Then Starter.skmt.Initialize(Starter.ruta, "kmt.db", True)
+ If Starter.logger Then Log("select FECHA, LAT, LON from "& origenRuta &" where FECHA > " & fechaInicio & " order by FECHA desc limit " & rutaMaxPoints)
+ c = Starter.skmt.ExecQuery("select FECHA, LAT, LON from "& origenRuta &" where FECHA > " & fechaInicio & " order by FECHA desc limit " & rutaMaxPoints)
+ c.Position = 0
+ Dim ruta2 As String = ""
+ If c.RowCount>0 Then
+ For i=0 To c.RowCount -1
+ c.Position=i
+ ruta2=ruta2&CRLF&c.GetString("LAT")&","&c.GetString("LON")&","&c.GetString("FECHA")
+ Starter.fechaRuta = c.GetString("FECHA")
+ Next
+ End If
+ c.Close
+ Return compress(ruta2)
+End Sub
+
+'Limpiamos la tabla RUTA_GPS de la BD
+Sub deleteGPS_DB 'ignore
+ Starter.skmt.ExecNonQuery("delete from RUTA_GPS")
+ Starter.skmt.ExecNonQuery("vacuum;")
+End Sub
+
+'Limpiamos la tabla errorLog de la BD
+Sub deleteErrorLog_DB 'ignore
+ If Not(Starter.errorLog.IsInitialized) Then revisaBD
+ Starter.errorLog.ExecNonQuery("delete from errores")
+ Starter.errorLog.ExecNonQuery("vacuum;")
+' ToastMessageShow("Borrada", False)
+End Sub
+
+'Borramos el archio "gps.txt"
+Sub borramosArchivoGPS 'ignore
+ Dim out As OutputStream = File.OpenOutput(File.DirInternal, "gps.txt", False)
+ Dim s As String = ""
+ Dim t() As Byte = s.GetBytes("UTF-8")
+ out.WriteBytes(t, 0, t.Length)
+ out.Close
+End Sub
+
+'Revisa que exista la BD y si es necesario crea algunas tablas dentro de ella
+Sub revisaBD 'ignore
+' if starter.logger then Log("subs.revisaBD")
+ Starter.ruta = File.DirInternal
+ If Not(File.Exists(Starter.ruta, "kmt.db")) Then File.Copy(File.DirAssets, "kmt.db", Starter.ruta, "kmt.db")
+ If Not(Starter.skmt.IsInitialized) Then Starter.skmt.Initialize(Starter.ruta, "kmt.db", True)
+ Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_RMI(CAT_ID TEXT, CAT_DESCRIPCION TEXT, CAT_MONTO TEXT)")
+ Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS RUTA_GPS(fecha INTEGER, lat TEXT, lon TEXT)")
+ Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_ENCUESTA2(HE_CLIENTE TEXT)")
+' Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS UUC(fecha INTEGER, lat TEXT, lon TEXT)") 'LastKnownLocation
+ Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS bitacora(fecha INTEGER, texto TEXT)") 'Bitacora
+ Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_DEV(CAT_GP_ID TEXT,CAT_GP_NOMBRE TEXT, CAT_GP_PRECIO TEXT)")
+ Try 'Si no existe la columna CAT_CL_CATEGORIA la agregamos.
+ Starter.skmt.ExecQuery("select count(CAT_CL_CATEGORIA) from kmt_info")
+ Catch
+ Try
+ Starter.skmt.ExecNonQuery("ALTER TABLE kmt_info ADD COLUMN CAT_CL_CATEGORIA TEXT")
+ Catch
+ If Starter.logger Then LogColor("No pudimos agregar la columna CAT_CL_CATEGORIA.", Colors.Red)
+ If Starter.logger Then LogColor(LastException, Colors.Red)
+ End Try
+ End Try
+ Try 'Si no existe la columna CAT_CL_SEGMENTO la agregamos.
+ Starter.skmt.ExecQuery("select count(CAT_CL_SEGMENTO) from kmt_info")
+ Catch
+ Try
+ Starter.skmt.ExecNonQuery("ALTER TABLE kmt_info ADD COLUMN CAT_CL_SEGMENTO TEXT")
+ Catch
+ If Starter.logger Then LogColor("No pudimos agregar la columna CAT_CL_SEGMENTO.", Colors.Red)
+ If Starter.logger Then LogColor(LastException, Colors.Red)
+ End Try
+ End Try
+ 'Tabla para la bitacora de errores
+ If Not(Starter.errorLog.IsInitialized) Then Starter.errorLog.Initialize(Starter.ruta, "errorLog.db", True)
+ Starter.errorLog.ExecNonQuery("CREATE TABLE IF NOT EXISTS errores(fecha INTEGER, error TEXT)")
+End Sub
+
+'Obtiene el ssid al que esta conectado el telefono
+Sub getSSID 'ignore
+' 'Requiere la libreria "MLWifi400"
+' If wifi.isWifiConnected Then
+' ssid = wifi.WifiSSID
+' End If
+End Sub
+
+'Convierte un texto en formato JSON a un objeto "Map"
+Sub JSON2Map(theJson As String) As Map 'ignore
+ 'Requiere la libreria "JSON"
+ Try
+ Private json As JSONParser
+ json.Initialize(theJson)
+ Return json.NextObject
+ Catch
+ Log(LastException)
+ log2DB("JSON2Map: "&LastException)
+ Private m As Map = CreateMap("title":"Error generating JSON", "t":"Error", "Message":LastException, "text" : LastException)
+ Return m
+ End Try
+End Sub
+
+'Convierte un mapa a formato JSON
+Sub map2JSON(m As Map) As String 'ignore
+ 'Requiere la libreria "JSON"
+ 'Convierte un objecto "Map" a JSON
+ Dim jg As JSONGenerator
+ jg.Initialize(m)
+ Dim t As String = jg.ToString
+ Return t
+End Sub
+
+'Mandamos "coords" en un mensaje a "Sprvsr"
+Sub mandamosLoc(coords As String) 'ignore
+'' Log("Iniciamos mandamosLoc "&coords)
+ '' if starter.logger then Log("locRequest="&Tracker.locRequest)
+' guardaInfoEnBD(coords)'Escribimos coordenadas y fecha a una bd
+' Dim t As String
+' If Tracker.locRequest="Activa" Then
+' If PushService.au = 1 Then
+' t = "au" ' es una actualizacion
+' Else
+' t = "u" ' es una peticion
+' End If
+' Dim params As Map = CreateMap("topic":"Sprvsr", "coords":coords, "t":t, "b":PushService.battery)
+' CallSub2(PushService, "mandaMensaje",params)
+' Tracker.locRequest="Enviada"
+' CallSubDelayed(Tracker,"CreateLocationRequest")
+' End If
+End Sub
+
+'Regresa la fecha y hora de hoy a las 00:00 en el formato "yyMMddHHMMSS"
+Sub fechaInicioHoy As String 'ignore
+ Dim OrigFormat As String = DateTime.DateFormat 'save orig date format
+ DateTime.DateFormat="yyMMdd"
+ Private h As String = DateTime.Date(DateTime.Now)&"000000"
+ DateTime.DateFormat=OrigFormat 'return to orig date format
+ If Starter.logger Then Log("Hoy="&h)
+ Return h
+End Sub
+
+'Guardamos "texto" a la bitacora
+Sub log2DB(texto As String) 'ignore
+ If Starter.logger Then LogColor(fechaKMT(DateTime.Now)&" - log2BD: '"&texto&"'", Colors.Magenta)
+ If Starter.skmt.IsInitialized Then Starter.skmt.ExecNonQuery2("INSERT INTO bitacora(fecha, texto) VALUES (?,?)", Array As Object (fechaKMT(DateTime.now), texto))
+End Sub
+
+'Regresa verdadero si ya pasaron XX minutos de la fecha dada
+Sub masDeXXMins(hora As Int, mins As Int) As Boolean 'ignore
+ If (hora + mins * DateTime.TicksPerMinute) < DateTime.Now Then
+ Return True
+ Else
+ Return False
+ End If
+End Sub
+
+'Regresa verdadero si ya pasaron XX minutos de la fechaKMT dada
+Sub masDeXXMinsKMT(hora As String, mins As Int) As Boolean 'ignore
+ Try
+ ' if starter.logger then LogColor($"Hora=${fechaKMT(fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute)}, Mins=${mins}, Actual=${fechaKMT(DateTime.Now)}"$,Colors.red)
+ If fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute < DateTime.Now Then
+' if starter.logger then Log("+++ +++ "&fechaKMT(fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute) & " < " & fechaKMT(DateTime.Now))
+ Return True
+ Else
+ ' if starter.logger then Log("+++ +++ "&fechaKMT(fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute) & " > " & fechaKMT(DateTime.Now))
+ Return False
+ End If
+ Catch
+ Log(LastException)
+ End Try
+End Sub
+
+'Limpiamos la tabla "bitacora" de la BD
+Sub borraLogDB 'ignore
+ If Starter.logger Then LogColor("Borramos BD de log", Colors.Magenta)
+ Starter.skmt.ExecNonQuery("delete from bitacora")
+ Starter.skmt.ExecNonQuery("vacuum;")
+End Sub
+
+'Monitoreamos los servicios PushService y Tracker para ver si estan activos (No pausados), y si no, los reniciamos
+Sub Monitor 'ignore
+' Private monitorStatus As Boolean = True
+' if starter.logger then LogColor("Corriendo Subs.Monitor", Colors.RGB(161,150,0))
+' If IsPaused(Tracker) Then
+' log2DB("Reiniciando 'Tracker Pausado' desde Subs.Monitor")
+' StartService(Tracker)
+' monitorStatus = False
+' Else
+' revisaFLP
+' End If
+' If IsPaused(PushService) Then
+' log2DB("Reiniciando 'PushService Pausado' desde Subs.Monitor")
+' StartService(PushService)
+' monitorStatus = False
+' Else
+' revisaPushService
+' End If
+' If monitorStatus Then LogColor(" +++ +++ Servicios Activos", Colors.Green)
+End Sub
+
+'Compara la UUG (Ultima Ubicacion Guardada) con FLP.LastKnowLocation y si
+'cumple con los requisitos de distancia y precision la guardamos en la BD.
+Sub revisaUUG 'ignore
+ revisaFLP
+ If Tracker.FLP.GetLastKnownLocation.IsInitialized Then
+ Dim daa As Int = Tracker.UUGCoords.DistanceTo(Tracker.FLP.GetLastKnownLocation) 'Distancia de la UUG a la actual de Tracker.FLP.GetLastKnownLocation
+ If Starter.Logger Then LogColor($"**** UUC "${fechaKMT(Tracker.FLP.GetLastKnownLocation.Time)}|$0.2{Tracker.FLP.GetLastKnownLocation.Accuracy}|$0.8{Tracker.FLP.GetLastKnownLocation.Latitude}|$0.8{Tracker.FLP.GetLastKnownLocation.Longitude}|$0.2{Tracker.FLP.GetLastKnownLocation.Speed}|"$, Colors.RGB(255,112,35))
+ If daa > 40 And Tracker.FLP.GetLastKnownLocation.Accuracy < 35 Then 'Si la distancia de la ubicacion anterior es mayor de XX y la precision es menor de XX, la guardamos ...
+ Starter.skmt.ExecNonQuery2("INSERT INTO RUTA_GPS(fecha, lat, lon) VALUES (?,?,?)", Array As Object (fechaKMT(Tracker.FLP.GetLastKnownLocation.Time),Tracker.FLP.GetLastKnownLocation.Latitude,Tracker.FLP.GetLastKnownLocation.Longitude))
+ If Starter.Logger Then Log("++++ Distancia a anterior="&daa&"|"&"Precision="&Tracker.FLP.GetLastKnownLocation.Accuracy)
+ End If
+ Tracker.UUGCoords = Tracker.FLP.GetLastKnownLocation
+ End If
+End Sub
+
+'Revisamos que el FLP (FusedLocationProvider) este inicializado y activo
+Sub revisaFLP 'ignore
+ If Starter.logger Then LogColor($"**** **** Revisamos FLP - ${fechaKMT(DateTime.Now)}**** ****"$, Colors.RGB(78,0,227))
+ Private todoBienFLP As Boolean = True
+ If Not(Tracker.FLP.IsInitialized) Then
+ log2DB("revisaFLP: No esta inicializado ... 'Reinicializando FLP'")
+ Tracker.FLP.Initialize("flp")
+ todoBienFLP = False
+ End If
+ If Tracker.FLP.IsInitialized Then
+ If Not(Tracker.FLP.IsConnected) Then
+ log2DB("revisaFLP: No esta conectado ... 'Reconectando FLP'")
+' Tracker.FLP.Connect
+ CallSubDelayed(Tracker,"StartFLP")
+ todoBienFLP = False
+ End If
+ If Tracker.FLP.IsConnected And _
+ Tracker.FLP.GetLastKnownLocation.IsInitialized And _
+ Tracker.FLP.GetLastKnownLocation.DistanceTo(Tracker.UUGCoords) > 500 Then
+ log2DB("revisaFLP: 'No se esta actualizando, lo reiniciamos ...'")
+ StartService(Tracker)
+ todoBienFLP = False
+ End If
+ End If
+ If todoBienFLP Then LogColor(" +++ +++ Sin errores en FLP", Colors.Green)
+ ' revisar hora de lastKnownlocation y si es mayor de 10 minutos llamar StartFLP
+End Sub
+
+'Revisamos que el servicio "PushService" este inicializado y activo
+Sub revisaPushService 'ignore
+' Private todoBienPS As Boolean = True
+ '' if starter.logger then LogColor("**** **** Revisamos PushService **** ****", Colors.RGB(78,0,227))
+' Try
+' If Not(PushService.wsh.IsInitialized) Then 'Si no esta inicializado ...
+' log2DB("revisaPushService: No esta inicializado ... 'Reinicializando PushService'")
+' CallSubDelayed(PushService, "Connect")
+' todoBienPS = False
+' End If
+' Catch
+' Log(LastException)
+' insertaEnErrores("Subs.revisaPushService: Reiniciando - "&LastException)
+' End Try
+' Try
+' If Not(PushService.wsh.ws.Connected) Then 'Si no esta conectado ...
+' log2DB("revisaPushService: No esta conectado ... 'Reconectando PushService'")
+' CallSubDelayed(PushService, "Connect")
+' todoBienPS = False
+' End If
+' Catch
+' Log(LastException)
+' insertaEnErrores("Subs.revisaPushService: Reconectando - "&LastException)
+' End Try
+' Try
+' If masDeXXMinsKMT(Starter.pushServiceActividad, 5) Then 'Si mas de xx minutos de la ultima actividad entonces ...
+' PushService.wsh.Close
+' CallSubDelayed(PushService, "Connect")
+' ' StartService(PushService)
+' ' If Main.Logger Then Log("Ultima act: "&Starter.pushServiceActividad)
+' log2DB("revisaPushService: 'Reconectamos 'PushService' por inactividad")
+' Starter.pushServiceActividad = fechaKMT(DateTime.Now)
+' todoBienPS = False
+' End If
+' Catch
+' Log(LastException)
+' insertaEnErrores("Subs.revisaPushService: Reconectando por inactividad - "&LastException)
+' End Try
+' If todoBienPS Then LogColor(" +++ +++ Sin errores en PushService", Colors.Green)
+End Sub
+
+'Borramos renglones extra de la tabla de errores
+Sub borraArribaDe100Errores 'ignore
+ If Not(Starter.errorLog.IsInitialized) Then revisaBD
+ If Starter.logger Then LogColor("Recortamos la tabla de Errores, limite de 100", Colors.Magenta)
+ Starter.errorLog.ExecNonQuery("DELETE FROM errores WHERE fecha NOT in (SELECT fecha FROM errores ORDER BY fecha desc LIMIT 99 )")
+ Starter.errorLog.ExecNonQuery("vacuum;")
+' if starter.logger then Log("Borramos mas de 100 de errorLog")
+End Sub
+
+'Borramos renglones extra de la tabla de bitacora
+Sub borraArribaDe600RenglonesBitacora 'ignore
+ revisaBD
+ If Starter.logger Then LogColor("Recortamos la tabla de la Bitacora, limite de 600", Colors.Magenta)
+ Private c As Cursor
+ c = Starter.skmt.ExecQuery("select fecha from bitacora")
+ c.Position = 0
+ If c.RowCount > 650 Then
+ Starter.skmt.ExecNonQuery("DELETE FROM bitacora WHERE fecha NOT in (SELECT fecha FROM bitacora ORDER BY fecha desc LIMIT 599 )")
+ Starter.skmt.ExecNonQuery("vacuum;")
+' if starter.logger then Log("Borramos mas de 600 de bitacora")
+ End If
+ c.Close
+End Sub
+
+'Inserta 50 renglones de prueba a la tabla "errores"
+Sub insertaRenglonesPruebaEnErrorLog 'ignore
+ If Not(Starter.errorLog.IsInitialized) Then revisaBD
+ Log("insertamos 50 renglones a errorLog")
+ For x = 1 To 50
+ Starter.errorLog.ExecNonQuery2("INSERT INTO errores(fecha, error) VALUES (?,?)", Array As Object (fechaKMT(DateTime.now), "abc"))
+ If Starter.logger Then Log(x)
+ Next
+End Sub
+
+'Regresa la tabla "errores" en una lista de mapas convertida a JSON
+Sub dameErroresJSON(SQL As SQL, maxErrores As Int, comprimido As Boolean) As String 'ignore
+ If Starter.logger Then Log("dameErroresJSON")
+ Private j As JSONGenerator
+ Private lim As String
+ Private cur As ResultSet
+ Private l As List
+ Private i As Int = 0
+ l.Initialize
+ Dim m, m2 As Map
+ m2.Initialize
+ If maxErrores = 0 Then lim = "" Else lim = "limit "&maxErrores
+ cur = SQL.ExecQuery("select * from errores order by fecha desc "&lim)
+ Do While cur.NextRow
+ m.Initialize
+ m.Put("fecha", cur.GetString("fecha"))
+ m.Put("error", cur.GetString("error"))
+ m2.Put(i,m)
+ i = i + 1
+ Loop
+ cur.Close
+ j.Initialize(m2)
+ If Starter.logger Then Log(j.ToString)
+ If comprimido Then
+ Return compress(j.ToString)
+ Else
+ Return j.ToString
+ End If
+End Sub
+
+'Convierte una fecha en formato YYMMDDHHMMSS a Ticks
+Sub fechaKMT2Ticks(fKMT As String) As Long 'ignore
+ Try
+ If fKMT.Length = 12 Then
+ Private parteFecha As String = fKMT.SubString2(0,6)
+ Private parteHora As String = fKMT.SubString(6)
+ Private OrigFormat As String = DateTime.DateFormat 'save original date format
+ DateTime.DateFormat="yyMMdd"
+ DateTime.TimeFormat="HHmmss"
+ Private ticks As Long = DateTime.DateTimeParse(parteFecha,parteHora)
+' Log(" +++ +++ pFecha:"&parteFecha&" | pHora:"&parteHora)
+ DateTime.DateFormat=OrigFormat 'return to original date format
+ Return ticks
+ Else
+ Log("Formato de fecha incorrecto, debe de ser 'yyMMddHHmmss', no '"&fKMT&"' largo="&fKMT.Length)
+ Return 0
+ End If
+ Catch
+ Log(LastException)
+ If Starter.logger Then LogColor($"Fecha dada: ${fKMT}, Parte Fecha: ${parteFecha}, Parte Hora: ${parteHora}"$, Colors.Red)
+ Return 0
+ End Try
+End Sub
+
+'Sub InstallAPK(dir As String, apk As String) 'ignore
+' If File.Exists(dir, apk) Then
+' Dim i As Intent
+' i.Initialize(i.ACTION_VIEW, "file://" & File.Combine(dir, apk))
+' i.SetType("application/vnd.android.package-archive")
+' StartActivity(i)
+' End If
+'End Sub
+
+'Copia la base de datos del almacenamiento interno al externo en el directorio kmts
+Sub copiaDB(result As Boolean) 'ignore
+ If result Then
+ Dim p As String
+ Dim safeDir As String = Starter.rp.GetSafeDirDefaultExternal("erroresDir")
+ p = Starter.ruta
+ Dim theDir As String
+ Try
+ File.MakeDir(p,"kmts")
+ theDir = "/kmts"
+ Catch
+ theDir = ""
+ End Try
+ Try
+ Private nombreDB As String = $"kell_${Starter.rutaPreventa}_kmt.db"$
+ File.Copy(p,"kmt.db",File.DirInternal&theDir, nombreDB)
+ File.Copy(p,"errorLog.db",File.DirInternal&theDir,"kell_errorLog.db")
+ ToastMessageShow("BD copiada a " & File.DirInternal&theDir, False)
+ Catch
+ Try
+ Private nombreDB As String = $"kell_${Starter.rutaPreventa}_kmt.db"$
+ File.Copy(p,"kmt.db", safeDir, nombreDB)
+ File.Copy(p,"errorLog.db", safeDir,"kell_errorLog.db")
+ ToastMessageShow("BD copiada a " & safeDir, False)
+ Catch
+ ToastMessageShow("No se puedo copiar la base de datos.", False)
+ End Try
+' ToastMessageShow("No se pudo hacer la copia: "&LastException, True)
+ End Try
+ If Starter.logger Then Log("rootExternal="&p)
+ If Starter.logger Then Log("safe="&safeDir)
+ Else
+ ToastMessageShow("Sin permisos", False)
+ End If
+End Sub
+
+'Hace visible el panel con los parametros "Top" y "Left" dados
+Sub panelVisible(panel As Panel, top As Int, left As Int) 'ignore
+ panel.BringToFront
+ panel.Visible = True
+ panel.Top = top
+ panel.Left = left
+End Sub
+
+'Oculta el panel especificado y lo manda al fondo
+Sub panelOculto(panel As Panel) 'ignore
+ panel.SendToBack
+ panel.Visible = False
+End Sub
+
+'Centra una etiqueta dentro de un elemento superior
+Sub centraEtiqueta(elemento As Label, anchoElementoSuperior As Int) 'ignore
+ elemento.Left = Round(anchoElementoSuperior/2)-(elemento.Width/2)
+End Sub
+
+'Centra un panel dentro de un elemento superior
+Sub centraPanel(elemento As Panel, anchoElementoSuperior As Int) 'ignore
+ elemento.Left = Round(anchoElementoSuperior/2)-(elemento.Width/2)
+End Sub
+
+Sub centraEditText(elemento As EditText, anchoElementoSuperior As Int) 'ignore
+ elemento.Left = Round(anchoElementoSuperior/2)-(elemento.Width/2)
+End Sub
+
+'Centra una barra de progreso dentro de un elemento superior
+Sub centraProgressBar(elemento As ProgressBar, anchoElementoSuperior As Int) 'ignore
+ elemento.Left = Round(anchoElementoSuperior/2)-(elemento.Width/2)
+End Sub
+
+Sub insertaEnErrores(error As String) 'ignore
+ If Not(Starter.errorLog.IsInitialized) Then revisaBD
+ Starter.errorLog.ExecNonQuery2("INSERT INTO errores(fecha, error) VALUES (?,?)", Array As Object (fechaKMT(DateTime.now), error))
+End Sub
+
+'Saca el usuario de la tabla USUARIOA
+Sub dameUsuarioDeDB As String 'ignore
+ Private c As Cursor
+ Private u As String = "SinUsuario"
+ If Not(Starter.skmt.IsInitialized) Then revisaBD
+ c=Starter.skmt.ExecQuery("select USUARIO from usuarioa")
+ c.Position=0
+ If c.RowCount > 0 Then u = c.GetString("USUARIO")
+ c.Close
+ Return u
+End Sub
+
+'Regresa el tiempo transcurrido entre la primera vez que se llama (paso 1) y la segunda (paso 2), usa el mapa global "Main.tiempos"
+Sub cronoX(thisCrono As String, paso As Int) As String 'ignore
+ If paso = 1 Then
+ Starter.tiempos.Put(thisCrono, DateTime.Now)
+ Else
+ Return $"Tiempo transcurrido ${thisCrono}: ${DateTime.Now-Starter.tiempos.Get(thisCrono)} "$
+ End If
+End Sub
+
+'Cierra todas las actividades y sale de la aplicacion (Android 4.1+ - API 16+)
+Sub cierraActividades
+ If Starter.logger Then Log("closing activities")
+ Dim jo As JavaObject
+ jo.InitializeContext
+ jo.RunMethod("finishAffinity", Null)
+End Sub
+
+'Regresa el cliente actual de CUENTAA como un string, y si no encuenta nada regresa "".
+Sub clienteActual As String
+ Private x As String = ""
+ Private c As Cursor = Starter.skmt.ExecQuery("Select CUENTA from cuentaa")
+ If c.RowCount > 0 Then
+ c.Position = 0
+ x = c.GetString("CUENTA")
+ End If
+ c.Close
+ Return x
+End Sub
+
+'Marca un cliente como impreso, lo agrega a la tabla "CLIENTE_IMPRESO" y lo actualiza en "kmt_info" (IMPRESION).
+Sub ponImpreso (cliente As String)
+ Starter.skmt.ExecNonQuery2("UPDATE kmt_info set IMPRESION = 1 where CAT_CL_CODIGO = ?", Array As String(cliente))
+ Starter.skmt.ExecNonQuery2("insert into CLIENTE_IMPRESO (CI_CUENTA) values (?)",Array As String(cliente))
+ If Starter.logger Then Log($"Cliente ${cliente} agegado a CLIENTE_IMPRESO y actualizado en kmt_info."$)
+End Sub
+
+'Guarda el nombre de la ultima actividad mostrada "ultimaActividad(Me)".
+Sub ultimaActividad(ea As String)
+ Private x() As String = Regex.Split("\.", ea)
+ Starter.ultimaActividad = ""
+ If x.Length = 4 Then
+ Starter.ultimaActividad = x(3)
+ File.WriteString(File.DirInternal, "ua.txt", Starter.ultimaActividad)
+ End If
+' If File.Exists(File.DirInternal, "ua.txt") Then Starter.ultimaActividad = File.ReadString(File.DirInternal, "ua.txt")
+' if starter.logger then LogColor($"${DateTime.Now} - Ultima actividad=${Starter.ultimaActividad}"$, Colors.Magenta)
+End Sub
+
+'Guarda el nombre de la ultima actividad en base de datos "ultimaActividad(Me)".
+Sub guardaUltimaActividadBD(ua As String)
+' if starter.logger then LogColor($"Guardamos ultima actividad '${ua}'"$, Colors.Blue)
+ Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("ULTIMOMODULO"))
+ Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("ULTIMOMODULO", ua))
+End Sub
+
+'Regresa la ultima actividad guardada en base de datos.
+Sub traeUltimaActividadBD As String
+' if starter.logger then LogColor("Buscamos ultima actividad en BD", Colors.Magenta)
+ Private c As Cursor
+ Private x As String
+ c = Starter.skmt.ExecQuery("select CAT_VA_VALOR from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'ULTIMOMODULO'")
+ If c.RowCount > 0 Then
+ c.Position = 0
+ x = c.GetString("CAT_VA_VALOR")
+' if starter.logger then Log("Encontramos: " & x)
+ End If
+ c.Close
+ Return x
+End Sub
+
+'Guarda el nombre de la pagina en base de datos la muestra.
+Sub iniciaActividad(ia As String)
+' if starter.logger then LogColor($"Guardamos en BD '${ia}'"$, Colors.Yellow)
+ Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("ULTIMOMODULO"))
+ Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("ULTIMOMODULO", ia))
+' StartActivity(ia)
+ B4XPages.ShowPage(ia)
+ If Starter.logger Then LogColor("Iniciamos --> " & ia, Colors.Blue)
+End Sub
+
+'Guarda el nombre de la actividad en base de datos e inicia la actividad.
+Sub iniciaActividad2(ia As String)
+' if starter.logger then LogColor($"Guardamos en BD '${ia}'"$, Colors.Yellow)
+ Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("ULTIMOMODULO"))
+ Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("ULTIMOMODULO", ia))
+ StartActivity(ia)
+' B4XPages.ShowPage(ia)
+' if starter.logger then LogColor("Iniciamos --> " & ia, Colors.Blue)
+End Sub
+
+'Agrega la variable al mapa de sesion.
+Sub agregaASesion(nombre As String, valor As String)
+ Starter.sesion.put(nombre, valor)
+' if starter.logger then Log(Starter.sesion)
+End Sub
+
+'Regresa una lista con las coordenadas ( latitud y longitud) guardadas en BD.
+Sub traeCoordsDeBD As List
+ Private c As Cursor
+ c=Starter.skmt.ExecQuery("SELECT HGLAT as HGLAT, HGLON as HGLON FROM HIST_GPS")
+ c.Position=0
+ Private lon As String = c.GetString("HGLON")
+ Private lat As String = c.GetString("HGLAT")
+ c.Close
+ Private coords As List
+ coords.Initialize
+ coords.Add(lat)
+ coords.Add(lon)
+ Return coords
+End Sub
+
+'Modifica el ancho y alto de un panel dado con el ancho y alto proporcionados.
+Sub panelAnchoAlto(p As Panel, w As Int, h As Int)
+ If Starter.logger Then Log($"panel:${p}, alncho=${w}, alto=${h}"$)
+ p.Top = 0
+ p.Left = 0
+ p.Width = w
+ p.Height = h
+End Sub
+
+'Regresa el dia de HOY como string, en español y mayusculas.
+Sub dameDiaSemana As String
+ Private ds As String = DateTime.GetDayOfWeek(DateTime.Now)
+ If ds = "1" Then
+ ds = "DOMINGO"
+ else if ds = "2" Then
+ ds = "LUNES"
+ else if ds = "3" Then
+ ds = "MARTES"
+ else if ds = "4" Then
+ ds = "MIERCOLES"
+ else if ds = "5" Then
+ ds = "JUEVES"
+ else if ds = "6" Then
+ ds = "VIERNES"
+ Else
+ ds = "SABADO"
+ End If
+ Return ds
+End Sub
+
+'Regresa cuentos clientes fuera de frecuencia hay con venta.
+Sub dameClientesFueraDeFrecuencia As String
+ Private dia_visita As String = dameDiaSemana
+ Private f As Cursor = Starter.skmt.ExecQuery("SELECT CAT_VA_VALOR as dia_visita FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = 'DIA_VISITA'")
+ If f.RowCount > 0 Then
+ f.Position=0
+ dia_visita = f.GetString("dia_visita")
+ End If
+' Log("-> "&dia_visita)
+ f = Starter.skmt.ExecQuery("Select count(distinct PE_CLIENTE) as cff FROM kmt_info INNER JOIN PEDIDO ON kmt_info.CAT_CL_CODIGO = PEDIDO.PE_CLIENTE WHERE kmt_info.CAT_CL_DIAS_VISITA <> '"&dia_visita&"'")
+ f.Position=0
+' Log(f.GetString("cff"))
+ Private cff As String = f.GetString("cff")
+ f.Close
+ Return cff
+End Sub
+
+'Regresa el almacen actual de la base de datos.
+Sub traeAlmacen As String 'ignore
+ Private c As Cursor
+ Private a As String
+ c=Starter.skmt.ExecQuery("select ID_ALMACEN from CAT_ALMACEN")
+ c.Position = 0
+ a = C.GetString("ID_ALMACEN")
+ c.Close
+ Return a
+End Sub
+
+'Regresa la ruta de venta actual de la base de datos.
+Sub traeRuta As String 'ignore
+ Private c As Cursor
+ Private r As String
+ c=Starter.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)")
+ r = "0"
+ If c.RowCount > 0 Then
+ c.Position=0
+ r = c.GetString("CAT_CL_RUTA")
+ End If
+ c.Close
+ Return r
+End Sub
+
+'Regresa el cliente actual desde la base de datos
+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 revisaimpreso (cliente As String) As Boolean
+ Dim c1, c2 As Cursor
+ Dim yaimpreso As Boolean = False
+ c1 = Starter.skmt.ExecQuery2("select count(*) as IMPRESOS FROM kmt_info WHERE IMPRESION = 1 AND CAT_CL_CODIGO = ?", Array As String(cliente))
+ c2 = Starter.skmt.ExecQuery2("SELECT COUNT(*) AS IMPRESO2 FROM CLIENTE_IMPRESO WHERE CI_CUENTA= ?",Array As String(cliente))
+ c1.Position = 0
+ c2.Position = 0
+
+ If c1.GetString("IMPRESOS") <> 0 Or c2.GetString("IMPRESO2") <> 0 Then
+ yaimpreso = True
+ End If
+ Return yaimpreso
+End Sub
\ No newline at end of file
diff --git a/B4A/Tracker.bas b/B4A/Tracker.bas
new file mode 100644
index 0000000..19e084e
--- /dev/null
+++ b/B4A/Tracker.bas
@@ -0,0 +1,237 @@
+B4A=true
+Group=Default Group
+ModulesStructureVersion=1
+Type=Service
+Version=11
+@EndOfDesignText@
+#Region Service Attributes
+ #StartAtBoot: True
+#End Region
+'******************************************************************************
+'No olvidar agregar esta linea al editor de manifiesto:
+' SetServiceAttribute(Tracker, android:foregroundServiceType, "location")
+'
+'En Starter agregar estas lineas en Process_Globals
+' Public rp As RuntimePermissions
+' Public FLP As FusedLocationProvider
+' Private flpStarted As Boolean
+'
+'En Main agregar estas lineas a Activity_Resume
+' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_ACCESS_FINE_LOCATION)
+' Wait For Activity_PermissionResult (Permission As String, Result As Boolean)
+' If Result Then
+' StartService(Tracker)
+' Log("Start Tracker")
+' Else
+' ToastMessageShow("No permission", True)
+' End If
+'
+'Se necesitan las librerias FusedLocationProvider, GPS, Phone y RunTimePermissions
+'
+'Y en Main agregar estas dos lineas:
+'#AdditionalJar: com.android.support:support-v4
+'#AdditionalJar: com.google.android.gms:play-services-location
+
+Sub Process_Globals
+' Private nid As Int = 1
+ Private Tracking As Boolean
+ Private lock As PhoneWakeState
+ 'Para FusedLocationProvider (2 lineas)
+ Public FLP As FusedLocationProvider
+ Dim actualLR As LocationRequest
+ Private flpStarted As Boolean
+' Dim locRequest As String
+ Dim UUGCoords As Location 'Ultima Ubicacion Guardada
+' Dim trackerActividad, pushServiceActividad As String
+ Dim logger As Boolean
+End Sub
+
+Sub Service_Create
+ Service.AutomaticForegroundMode = Service.AUTOMATIC_FOREGROUND_NEVER 'we are handling it ourselves
+ UUGCoords.Initialize
+ logger = False
+ 'Para FusedLocationProvider (2 lineas)
+ FLP.Initialize("flp")
+ FLP.Connect
+ lock.PartialLock
+ StartFLP
+End Sub
+
+Sub flp_ConnectionSuccess
+' If logger Then Log("Connected to location provider")
+ 'FLP.GetLastKnownLocation
+End Sub
+
+Sub flp_ConnectionFailed(ConnectionResult1 As Int)
+ If logger Then Log("Failed to connect to location provider")
+End Sub
+
+Sub flp_ConnectionSuspended(ConnectionResult1 As Int)
+ If logger Then Log("FLP conection suspended")
+ StartFLP
+End Sub
+
+Sub Service_Start (StartingIntent As Intent)
+ LogColor("Iniciando Tracker ...", Colors.Green)
+ Service.StopAutomaticForeground
+' Service.StartForeground(51042, Subs.notiLowReturn("Kelloggs", "Activo", 51042))
+ StartServiceAt(Me, DateTime.Now + 10 * DateTime.TicksPerMinute, True)
+ Track
+ If Not(Starter.Logger) Then logger = False
+End Sub
+
+Public Sub Track
+ If logger Then Log("Inicia Track - Tracking : "&Tracking)
+ If Tracking Then
+' Log(actualLR.GetSmallestDisplacement)
+ Return 'Si ya estamos "rastreando" no hacemos nada (return)
+ End If
+ If Starter.rp.Check(Starter.rp.PERMISSION_ACCESS_FINE_LOCATION) = False Then
+ If logger Then Log("Sin permisos de ublicación.")
+ Return
+ End If
+ StartFLP 'Iniciamos FusedLocationProvider
+ Tracking = True
+End Sub
+
+Public Sub StartFLP
+ If logger Then Log("StartFLP - flpStarted="&flpStarted)
+ Do While FLP.IsConnected = False
+ Sleep(500)
+ If logger Then Log("sleeping")
+ Loop
+' If flpStarted = False Then
+' If logger Then Log("RequestLocationUpdates")
+ FLP.RequestLocationUpdates(CreateLocationRequest) 'Buscamos ubicacion
+ If logger Then LogColor("Buscamos ubicacion (movimientoMinimo = "&actualLR.GetSmallestDisplacement&")", Colors.Magenta)
+' If logger Then Log(actualLR.GetSmallestDisplacement)
+ flpStarted = True
+' End If
+End Sub
+
+Public Sub StartFLP2
+ If logger Then Log("StartFLP2 - flpStarted="&flpStarted)
+ Do While FLP.IsConnected = False
+ Sleep(500)
+ If logger Then Log("sleeping")
+ Loop
+ dameUltimaUbicacionConocida 'Regresamos ultima ubicacion conocida
+ FLP.RequestLocationUpdates(CreateLocationRequest2) 'Buscamos ubicacion 2 peticiones
+ If logger Then LogColor("Buscamos ubicacion (movimientoMinimo = "&actualLR.GetSmallestDisplacement&")", Colors.Magenta)
+' If logger Then Log(actualLR.GetSmallestDisplacement)
+End Sub
+
+Private Sub CreateLocationRequest As LocationRequest
+' If logger Then Log("CreateLocationRequest")
+ Dim lr As LocationRequest
+ lr.Initialize
+ lr.SetInterval(10000) 'Intervalo deseado para actualizaciones de ubicacion
+ lr.SetFastestInterval(lr.GetInterval / 2) 'Intervalo minimo para actualizaciones de ubicacion
+ lr.SetSmallestDisplacement(75) 'Solo registra cambio de ubicacion si es mayor a XX mts
+ lr.SetPriority(lr.Priority.PRIORITY_HIGH_ACCURACY)
+ actualLR=lr
+ Return lr
+End Sub
+
+Private Sub CreateLocationRequest2 As LocationRequest
+ If logger Then Log("Iniciamos CreateLocationRequest2")
+ Dim lr As LocationRequest
+ lr.Initialize
+ lr.SetInterval(2000) 'Intervalo deseado para actualizaciones de ubicacion
+ lr.SetFastestInterval(lr.GetInterval / 2) 'Intervalo minimo para actualizaciones de ubicacion
+ lr.setNumUpdates(2) 'Solicitamos solo 2 actualizaciones con estos parametros
+ lr.SetSmallestDisplacement(1) 'Solo registra cambio de ubicacion si es mayor a XX mts
+ lr.SetPriority(lr.Priority.PRIORITY_HIGH_ACCURACY)
+ actualLR=lr
+ Return lr
+End Sub
+
+Sub dameUltimaUbicacionConocida
+ If FLP.GetLastKnownLocation.IsInitialized Then 'Mandamos ultima ubicacion guardada
+' If logger Then LogColor($"Mandamos UUC "${Subs.fechaKMT(FLP.GetLastKnownLocation.Time)}|Acc:$0.2{FLP.GetLastKnownLocation.Accuracy}|$0.8{FLP.GetLastKnownLocation.Latitude}|$0.8{FLP.GetLastKnownLocation.Longitude}|Spd:$0.2{FLP.GetLastKnownLocation.Speed}|"$, Colors.RGB(255,112,35))
+' Dim coords As String = FLP.GetLastKnownLocation.Latitude&","&FLP.GetLastKnownLocation.Longitude&","&formatoFecha(FLP.GetLastKnownLocation.Time)
+' CallSubDelayed2(FirebaseMessaging,"mandamosLoc",coords)
+' Subs.mandamosLoc(coords)
+ End If
+End Sub
+
+Public Sub StopFLP
+ 'Log("StopFLP")
+ If flpStarted Then
+ FLP.RemoveLocationUpdates 'Eliminamos todas las solicitudes de ubicacion
+ flpStarted = False
+ End If
+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)
+ UUGCoords = Location1
+' If logger Then Log("SmallestDisplacement="&actualLR.GetSmallestDisplacement)
+' CallSub2(Starter, "GPS_LocationChanged", Location1)
+' CallSub2(gestion, "GPS_LocationChanged", Location1)
+ Starter.lat_gps = Location1.Latitude
+ Starter.lon_gps = Location1.Longitude
+ Starter.ubicacionActual = Location1
+ 'Si las coordenadas estan en CERO o NULL entonces usamos "GetLastKnownLocation"
+ If Starter.lat_gps = 0 Or Starter.lat_gps = Null And FLP.GetLastKnownLocation.IsInitialized Then
+ Starter.lat_gps = FLP.GetLastKnownLocation.Latitude
+ Starter.lon_gps = FLP.GetLastKnownLocation.Longitude
+ Starter.ubicacionActual = FLP.GetLastKnownLocation
+ LogColor("Coords en CERO - Guardamos ultima ubicacion conocida", Colors.red)
+ End If
+' Starter.ubicacionActual.Latitude = Starter.lat_gps
+' Starter.ubicacionActual.Longitude = Starter.lon_gps
+' Starter.ubicacionActual.Accuracy = Location1.Accuracy
+
+ '/////// para la ultima ubicacion FL
+ Dim sDate,sTime As String
+ DateTime.DateFormat = "MM/dd/yyyy"
+ sDate=DateTime.Date(DateTime.Now)
+ sTime=DateTime.Time(DateTime.Now)
+ If Starter.lat_gps <> 0 And Starter.lat_gps <> Null Then
+ Try
+ Starter.skmt.ExecNonQuery("DELETE FROM HIST_GPS")
+ Starter.skmt.ExecNonQuery2("INSERT INTO HIST_GPS (HGDATE, HGLAT, HGLON) VALUES(?,?,?) ", Array As Object (sDate & sTime, Starter.lat_gps, Starter.lon_gps))
+ Catch
+ If logger Then Log("Error al borrar o insertar nuevas coordendas en HIST_GPS")
+ End Try
+ End If
+
+ Dim origFormat As String = DateTime.TimeFormat 'Guardamos formato de fecha.
+ DateTime.TimeFormat = "HHmmss" ' Modificamos formato de fecha.
+ Dim minsDif As Int = DateTime.Time(DateTime.Now) - Starter.ultimaActualizacionGPS
+' If logger Then Log("UltimaAct="&Starter.ultimaActualizacionGPS&" MinsDif="&minsDif)
+ If Location1.Accuracy < 100 And minsDif > 240 Then 'Si precision de 100 y 4 min transcurridos manda a web.
+ If logger Then Log("Actualizamos Ubicacion Web")
+ CallSubDelayed(Starter, "ENVIA_ULTIMA_GPS")
+ End If
+ DateTime.TimeFormat = origFormat 'Regresamos formato de fecha original.
+ B4XPages.MainPage.cliente.GPS_LocationChanged(Location1)
+ If Not(IsPaused(MAPA_RUTAS)) Then CallSubDelayed2(MAPA_RUTAS, "GPS_LocationChanged", Location1)
+End Sub
+
+Sub CreateNotification (Body As String) As Notification 'ignore
+ Dim notification As Notification
+ notification.Initialize2(notification.IMPORTANCE_LOW)
+ notification.Icon = "icon"
+ notification.SetInfo("This", Body, Main)
+ Return notification
+End Sub
+
+Sub Service_Destroy
+ If Tracking Then
+ StopFLP
+ End If
+ Tracking = False
+ lock.ReleasePartialLock
+End Sub
+
+Sub formatoFecha(fecha As String) As String 'ignore 'Convierte una fecha al formato yyMMddHHmmss
+' Log(fecha)
+ Dim OrigFormat As String = DateTime.DateFormat 'save orig date format
+ DateTime.DateFormat="yyMMddHHmmss"
+ Dim lastUpdate As String=DateTime.Date(fecha)
+ DateTime.DateFormat=OrigFormat 'return to orig date format
+' Log(lastUpdate)
+ Return lastUpdate
+End Sub
\ No newline at end of file
diff --git a/B4A/errorManager.bas b/B4A/errorManager.bas
new file mode 100644
index 0000000..1b2e9a0
--- /dev/null
+++ b/B4A/errorManager.bas
@@ -0,0 +1,165 @@
+B4A=true
+Group=Default Group
+ModulesStructureVersion=1
+Type=Activity
+Version=10.2
+@EndOfDesignText@
+#Region Activity Attributes
+ #FullScreen: False
+ #IncludeTitle: True
+#End Region
+'******************************************************************************
+'Este modulo intercepta los errores de la aplicación mediante "Starter.Application_Error" y muestra una pantalla
+'con el log del error y lo manda al servidor con un query de DBRequestManager, se necesita que exista el query
+'en el "config.properties" llamado "guardaErrores" y que tenga el siguiente texto:
+'
+'sql.guardaErrores=INSERT INTO KELLOGGS.PUSH_INFO (ID, RUTA, FECHA, DATOS) VALUES((?),(?),(?),(?))
+'
+'Agregar estas lineas a "Starter.Process_Globals"
+' 'Para los Logs
+' Dim logs As StringBuilder
+' Private logcat As LogCat
+'
+'Agregar estas lineas a "Starter.Service_Create"
+' 'Para los Logs
+' #if RELEASE
+' logcat.LogCatStart(Array As String("-v","raw","*:F","B4A:v"), "logcat")
+' #end if
+' logs.Initialize
+'
+'Agregar este Sub a "Starter"
+'
+'Return true to allow the OS default exceptions handler to handle the uncaught exception. 'Para los Logs
+'Sub Application_Error (Error As Exception, StackTrace As String) As Boolean
+' 'wait for 500ms to allow the logs to be updated.
+' Dim jo As JavaObject
+' Dim l As Long = 500: jo.InitializeStatic("java.lang.Thread").RunMethod("sleep", Array(l)) 'Sleep 500ms
+' logcat.LogCatStop
+' logs.Append(StackTrace)
+' Subs.revisaBD
+' Subs.errorLog.ExecNonQuery2("INSERT INTO errores(fecha, error) VALUES (?,?)", Array As Object (Subs.fechaKMT(DateTime.now), logs))
+' StartActivity(errorManager)
+' Return True
+'End Sub
+'******************************************************************************
+
+Sub Process_Globals
+ 'These global variables will be declared once when the application starts.
+ 'These variables can be accessed from all modules.
+
+End Sub
+
+Sub Globals
+ 'These global variables will be redeclared each time the activity is created.
+ 'These variables can only be accessed from this module.
+' Dim errorLog As SQL
+ Dim c As Cursor
+ Private p_principal As Panel
+ Private l_titulo As Label
+ Private svScroll As ScrollView
+ Private etText As EditText
+ Private c_continuar As Button
+ Private p_botones As Panel
+ Private b_salir As Button
+End Sub
+
+Sub Activity_Create(FirstTime As Boolean)
+ 'Do not forget to load the layout file created with the visual designer. For example:
+ Activity.LoadLayout("errorManager")
+End Sub
+
+Sub Activity_Resume
+ Dim elError As String = ""
+ Dim laFecha As String = ""
+' svScroll.Initialize(500dip)
+' Activity.AddView(svScroll, 0, 300, 100%x, 80%y)
+ p_principal.Height = Activity.Height
+ p_principal.Width = Activity.Width
+ svScroll.Width = Round(p_principal.Width * 0.9)
+ svScroll.Left = Round(p_principal.Width/2)-Round(svScroll.Width/2)
+ p_botones.Left = Round(p_principal.Width/2)-Round(p_botones.Width/2)
+ p_botones.Top = Activity.Height - (p_botones.Height + 80)
+ etText.Initialize("")
+ svScroll.Panel.AddView(etText, 0, 0, 90%x, 80%y)
+ etText.InputType = etText.INPUT_TYPE_NONE
+ etText.Gravity = Gravity.TOP
+ etText.SingleLine = False
+ etText.Wrap = False
+' Dim lblText, edtText As StringBuilder
+ Dim lbl As Label
+ lbl.Initialize("")
+ Activity.AddView(lbl, 0, 300, 100%x, 100%y) 'ignore
+ etText.Text = ""
+ Subs.revisaBD
+ c = Subs.errorLog.ExecQuery("select * from errores order by fecha desc limit 1")
+ If c.RowCount > 0 Then
+ c.Position = 0
+ elError = c.GetString("error")
+ laFecha = c.GetString("fecha")
+ etText.Text = elError
+ End If
+ c.Close
+ Dim usuario As String = ""
+ c = Starter.skmt.ExecQuery("select usuario from usuarioa")
+ If c.RowCount > 0 Then
+ c.Position = 0
+ usuario = c.GetString("USUARIO")
+ End If
+
+' Log("++++++" & Starter.logsStr)
+' etText.Text = etText.Text & Starter.logsStr
+' lbl.TextSize = etText.TextSize
+' lbl.Text = etText.Text
+' Dim su As StringUtils
+' Dim edheight As Int = su.MeasureMultilineTextHeight(lbl, lbl.Text)
+' lbl.RemoveView
+' etText.Height = edheight
+' svScroll.Panel.Height = edheight
+ svScroll.Height = Round(Activity.Height * 0.9)
+' Log(edheight)
+
+ Dim cmd As DBCommand
+ cmd.Initialize
+ cmd.Name = "guardaErrores"
+ cmd.Parameters = Array As Object(laFecha, usuario&"|"&Starter.rutaV, laFecha, elError)
+ Log($"Mandamos: ${Subs.fechaKMT(DateTime.Now)}, |${usuario}|, ${Subs.fechaKMT(DateTime.Now)}"$)
+ Starter.reqManager.ExecuteCommand(cmd,"guardaErrores")
+End Sub
+
+Sub Activity_Pause (UserClosed As Boolean)
+
+End Sub
+
+Sub JobDone(Job As HttpJob)
+ If Job.Success = False Then
+ ToastMessageShow("Error: " & Job.ErrorMessage, True)
+ Else
+ LogColor("JobDone: '" & Starter.reqManager.HandleJob(Job).tag & "' - Registros: " & Starter.reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211110
+ If Job.JobName = "DBRequest" Then
+ Dim result As DBResult = Starter.reqManager.HandleJob(Job)
+ If result.Tag = "guardaErrores" Then 'query tag
+ For Each records() As Object In result.Rows
+ For Each k As String In result.Columns.Keys
+ Log("GuardaErrores: " & k & ": " & records(result.Columns.Get(k)))
+ Next
+ Next
+ End If
+ End If
+ End If
+ Job.Release
+End Sub
+
+Private Sub c_continuar_Click
+ B4XPages.ShowPage("Principal")
+End Sub
+
+Private Sub b_salir_Click
+ cierraActividades
+End Sub
+
+Sub cierraActividades
+ Log("closing activities")
+ Dim jo As JavaObject
+ jo.InitializeContext
+ jo.RunMethod("finishAffinity", Null)
+End Sub
\ No newline at end of file
diff --git a/B4A/foto.bas b/B4A/foto.bas
new file mode 100644
index 0000000..43b365c
--- /dev/null
+++ b/B4A/foto.bas
@@ -0,0 +1,173 @@
+B4A=true
+Group=Default Group
+ModulesStructureVersion=1
+Type=Activity
+Version=6.8
+@EndOfDesignText@
+#Region Activity Attributes
+ #FullScreen: False
+ #IncludeTitle: False
+#End Region
+
+Sub Process_Globals
+ 'These global variables will be declared once when the application starts.
+ 'These variables can be accessed from all modules.
+ Dim ruta As String
+ Dim g As GPS
+ Private frontCamera As Boolean = False
+ Dim quien_llamo As String
+ Dim foto_g () As Byte
+ Dim foto_g1 () As Byte
+ Dim foto_g2 () As Byte
+ Dim foto_g3 () As Byte
+ Dim foto_g4 () As Byte
+End Sub
+
+Sub Globals
+ Dim btnTakePicture As Button
+ Dim Panel1 As Panel
+' Dim skmt As SQL
+ Dim c As Cursor
+ Dim cuenta As String
+ Dim lat_gps As String
+ Dim lon_gps As String
+ Private camEx As CameraExClass
+ Private i_foto As ImageView
+ Private b_guardar As Button
+End Sub
+
+Sub Activity_Create(FirstTime As Boolean)
+ Activity.LoadLayout("foto")
+ Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_CAMERA)
+ Wait For Activity_PermissionResult (Permission As String, Result As Boolean)
+ ruta = File.DirInternal
+End Sub
+
+Sub Camera1_Ready (Success As Boolean)
+' Log("Camara lista")
+ If Success Then
+ Dim ps As CameraSize
+ ps.Width =640'480 '1280
+ ps.Height =480'360 '960
+ camEx.SetPictureSize(ps.Width, ps.Height)
+ camEx.CommitParameters
+ Try
+ camEx.StartPreview
+ Catch
+ camEx.Release
+ B4XPages.ShowPage("CheckList")
+ End Try
+ Else
+ B4XPages.ShowPage("CheckList")
+ 'ToastMessageShow("Cannot open camera.", True)
+ End If
+End Sub
+
+Sub Activity_Resume
+ i_foto.Visible = False
+ InitializeCamera
+ btnTakePicture.Enabled = True
+ b_guardar.Enabled = False
+End Sub
+
+Sub Activity_Pause (UserClosed As Boolean)
+ camEx.Release
+End Sub
+
+Sub GPS_LocationChanged (Location1 As Location)
+' lat_gps=Location1.ConvertToSeconds(Location1.Latitude)
+' lon_gps=Location1.ConvertToSeconds(Location1.Longitude)
+' 'btnTakePicture.Enabled = True
+' 's.ExecNonQuery2("INSERT INTO HIST_GPS (HGDATE,HGLAT, HGLON) VALUES(?,?,?) ", Array As Object (sDate & sTime, lat_gps, lon_gps))
+End Sub
+
+Private Sub InitializeCamera
+ camEx.Initialize(Panel1, frontCamera, Me, "Camera1")
+ frontCamera = camEx.Front
+End Sub
+
+Sub Camera1_PictureTaken (Data() As Byte)
+' Log("foto tomada")
+ btnTakePicture.Enabled = True
+ Dim filename As String = "2.jpg"
+ Dim dir As String = File.DirInternal
+ camEx.SavePictureToFile(Data, dir, filename)
+ camEx.StartPreview 'restart preview
+ i_foto.Visible = True
+ i_foto.Bitmap = LoadBitmap(File.DirInternal, "2.jpg")
+ If B4XPages.MainPage.cliente.TOMAR_FOTO = 1 Then
+ Dim InputStream1 As InputStream
+ InputStream1 = File.OpenInput(File.DirInternal, "2.jpg")
+ Dim OutputStream1 As OutputStream
+ OutputStream1.InitializeToBytesArray(500)
+ File.Copy2(InputStream1, OutputStream1)
+ foto_g = OutputStream1.ToBytesArray
+ End If
+ b_guardar.Enabled = True
+ camEx.Release
+ InitializeCamera
+ btnTakePicture.Enabled = True
+ 'CallSubDelayed(seleccion,"seleccion")
+' StartActivity(fila)
+End Sub
+
+Sub Activity_KeyPress (key As Int) As Boolean
+ ' BACK key pressed
+ If key=KeyCodes.KEYCODE_BACK Then
+ ' I want to capture the key here so I return True
+ B4XPages.ShowPage("Principal")
+ 'Return True
+ End If
+ ' Returning False signals the system to handle the key
+ Return False
+End Sub
+
+Sub b_guardar_Click
+ camEx.Release
+' Log("liberamos camara")
+ 'If quien_llamo = "1" Then
+ Try
+ If quien_llamo = "1" Then
+ File.Copy(File.DirInternal, "2.jpg",File.DirInternal, "FOTO1.jpg")
+ Activity.Finish
+ B4XPages.ShowPage("CheckList")
+ else if quien_llamo = "2" Then
+ File.Copy(File.DirInternal, "2.jpg",File.DirInternal, "FOTO2.jpg")
+ Activity.Finish
+ B4XPages.ShowPage("CheckList")
+ else if quien_llamo = "3" Then
+ File.Copy(File.DirInternal, "2.jpg",File.DirInternal, "FOTO3.jpg")
+ Activity.Finish
+ B4XPages.ShowPage("CheckList")
+ else if quien_llamo = "4" Then
+ File.Copy(File.DirInternal, "2.jpg",File.DirInternal, "FOTO4.jpg")
+ Activity.Finish
+ B4XPages.ShowPage("CheckList")
+ End If
+ If B4XPages.MainPage.cliente.TOMAR_FOTO = 1 Then
+ c=Starter.skmt.ExecQuery("select cuenta from cuentaa")
+ c.Position = 0
+ cuenta = c.GetString("CUENTA")
+ c.Close
+ Starter.skmt.ExecNonQuery2("INSERT INTO HIST_FOTOS (HF_FOTO, HF_CUENTA, HF_IDENCUESTA) VALUES(?,?,?) ", Array As Object (foto_g,cuenta,B4XPages.MainPage.cliente.id_encuesta ))
+ Subs.iniciaActividad("Cliente")
+ End If
+ Catch
+ Msgbox("ERROR EN FOTO","") 'ignore
+ If B4XPages.MainPage.cliente.TOMAR_FOTO = 1 Then
+ Subs.iniciaActividad("Cliente")
+ Else
+ B4XPages.ShowPage("CheckList")
+ End If
+ End Try
+End Sub
+
+Sub btnTakePicture_Click
+ btnTakePicture.Enabled = False
+ Dim ps As CameraSize
+ ps.Width =640'480 '1280
+ ps.Height =480'360 '960
+ camEx.SetPictureSize(ps.Width, ps.Height)
+ camEx.CommitParameters
+ camEx.TakePicture
+End Sub
\ No newline at end of file
diff --git a/gitpull.bat b/gitpull.bat
new file mode 100644
index 0000000..d0aed61
--- /dev/null
+++ b/gitpull.bat
@@ -0,0 +1 @@
+git pull