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