commit 935832003dc8626e4a788fa59b88491ee1f44de0 Author: cheveguerra Date: Sun Sep 24 03:13:19 2023 -0600 23/9/23 - Commit inicial. diff --git a/B4A/AutoBackups/Backup Durakelo 2023-09-21 13.06.zip b/B4A/AutoBackups/Backup Durakelo 2023-09-21 13.06.zip new file mode 100644 index 0000000..4ceabba Binary files /dev/null and b/B4A/AutoBackups/Backup Durakelo 2023-09-21 13.06.zip differ diff --git a/B4A/AutoBackups/Backup Durakelo 2023-09-21 13.49.zip b/B4A/AutoBackups/Backup Durakelo 2023-09-21 13.49.zip new file mode 100644 index 0000000..3025ad3 Binary files /dev/null and b/B4A/AutoBackups/Backup Durakelo 2023-09-21 13.49.zip differ diff --git a/B4A/AutoBackups/Backup Durakelo 2023-09-21 15.29.zip b/B4A/AutoBackups/Backup Durakelo 2023-09-21 15.29.zip new file mode 100644 index 0000000..daced5d Binary files /dev/null and b/B4A/AutoBackups/Backup Durakelo 2023-09-21 15.29.zip differ diff --git a/B4A/AutoBackups/Backup Durakelo 2023-09-21 16.40.zip b/B4A/AutoBackups/Backup Durakelo 2023-09-21 16.40.zip new file mode 100644 index 0000000..3e0d098 Binary files /dev/null and b/B4A/AutoBackups/Backup Durakelo 2023-09-21 16.40.zip differ diff --git a/B4A/B4XMainPage.bas b/B4A/B4XMainPage.bas new file mode 100644 index 0000000..5d35772 --- /dev/null +++ b/B4A/B4XMainPage.bas @@ -0,0 +1,639 @@ +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=git&Args=pull + '########################################################################################################### + '###################### PUSH ############################################################# + 'Ctrl + click ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=github&Args=..\..\ + '########################################################################################################### + '###################### PUSH TORTOISE GIT ######################################################### + 'Ctrl + click ide://run?file=%WINDIR%\System32\WindowsPowerShell\v1.0\powershell.exe&Args=TortoiseGitProc&Args=/command:commit&Args=/path:"./../../"&Args=/closeonend:2 + '########################################################################################################### +#End Region + +'Ctrl + click ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=github&Args=..\..\ + +Sub Class_Globals + Private Root As B4XView + Private xui As XUI + Public login As B4XMainPage + Dim rp As RuntimePermissions + Public principal As C_Principal 'Antes seleccion + Public clientes As C_Clientes 'Antes Colonia + Public cliente As C_Cliente 'Antes fila + Public productos As C_Productos 'Antes colonia2 + Public updateAvailable As C_updateAvailable +' Public mapas As C_Mapas +' Public nuevoCliente As C_NuevoCliente + Public ticketsDia As C_TicketsDia 'Antes buscar + Public noVenta As C_NoVenta 'Antes nopago + Public nota As C_Nota 'Antes tarjeta + Public promos As C_Promos + Public historico As C_Historico 'Antes historico + + 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_MACIMP 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 + + Dim lat_gps, lon_gps As String + Dim tipo_venta As String + Dim bTerminarClicked As Boolean = False + Private lv_server As ListView + Private l_server As Label + Public rutaBDBackup As String = "" + Private b_envioBD As Button +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.AddPageAndCreate("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.db.ExecNonQuery("DROP TABLE IF EXISTS PEDIDO3") + Starter.db.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.db.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.db.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_ENCUESTA (HE_CLIE TEXT, HE_RES TEXT, HE_FECHA TEXT, HE_TIPO TEXT)") + Starter.db.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_DESCUENTOS_SKU (CAT_DS_CLIENTE TEXT, CAT_DS_PRODID TEXT, CAT_DS_PORCENTAJE TEXT)") + Starter.db.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_ENVIOS (HE_FECHA TEXT, HE_CUANTOS TEXT, HE_TIPO TEXT)") + Starter.db.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.db.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_FOTOS (HF_FOTO BLOB, HF_CUENTA TEXT, HF_IDENCUESTA TEXT)") + Starter.db.ExecNonQuery("CREATE TABLE IF NOT EXISTS CLIENTE_IMPRESO (CI_CUENTA TEXT)") + Starter.db.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.db.ExecNonQuery2("INSERT INTO HIST_ENVIOS VALUES (?,0,?)", Array As Object(sTime, "PEDIDO")) + Starter.db.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_EXHIBIDORES2 (HIST_EX_ID_CLIENTE TEXT, HIST_EX_TIPO TEXT, HIST_EX_CANT TEXT)") + Starter.db.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_PROMO_WHATS(HIST_CLIENTE TEXT, HIST_RESPUESTA_PROMO)") + Starter.db.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_RMI(CAT_GP_ID TEXT,CAT_GP_NOMBRE TEXT,CAT_GP_PRECIO TEXT)") + + ''' PARA LO DE DOE--- + Starter.db.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.db.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)") + ''' FIN DOE + + Try 'Intentamos usar "pragma_table_info" para revisar si existe la columna "IMPRESION" en la tabla + c=Starter.db.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.db.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.db.ExecNonQuery("ALTER TABLE kmt_info ADD COLUMN IMPRESION INTEGER") + Catch + Log(LastException) + End Try + End Try + Try 'Agregamos columna fecha a usuarioa + c=Starter.db.ExecQuery("SELECT fecha FROM usuarioa") + Catch + LogColor("Agregamos columna fecha a usuarioa", Colors.red) + Starter.db.ExecNonQuery("ALTER TABLE usuarioa ADD COLUMN FECHA TEXT") + End Try +' If sDate = "20190523" Then +' Starter.db.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("SERVER")) +' Starter.db.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("SERVER", Starter.server)) +' End If +' Starter.db.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("ULTIMOMODULO")) +' Starter.db.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("ULTIMOMODULO", "MAIN")) + c=Starter.db.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.db.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("SERVER", Starter.server)) +' Else +' c=Starter.db.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("Pedimos permisos de almacenamiento externo") +' 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.") + c=Starter.db.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" + 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) +' If Logger Then LogColor("Revisa permisos Phone_State", Colors.Green) + '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 + Log("Pedimos permisos de estado del cel") + rp.CheckAndRequest(rp.PERMISSION_READ_PHONE_STATE) + Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean) + If Result Then + Dim Phn As PhoneId + IMEN.Text = "" 'Phn.GetDeviceId + IMEI ="" ' Phn.GetDeviceId + If logger Then LogColor($"////////////////// IMEI: ${IMEI} ////////////////// "$, Colors.Blue) + End If + Log("Permisos cel terminados") + + 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 + +' Log("Permisos BT: " & rp.Check("android.permission.BLUETOOTH_CONNECT")) +' Log("REVISAMOS PERMISOS DE BT") +' rp.CheckAndRequest("android.permission.BLUETOOTH_CONNECT") +' Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean) +' If Result Then Log("Tenemos permisos de bluetooth.") +' Log("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX") +' Log("Check phone state: " & rp.Check(rp.PERMISSION_READ_PHONE_STATE)) +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.db.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.db.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 + Log("INSERTAMOS CODIGO EN CAT_VARIABLES") + Starter.db.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("CODIGO","743")) + End If + c=Starter.db.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.db.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("MACIMP","0")) + End If + D=Starter.db.ExecQuery("select COUNT(*) AS CUANTOS from version") + D.Position=0 + If D.GetString("CUANTOS") > 0 Then + c=Starter.db.ExecQuery("select NOVERSION from version") + c.Position = 0 + If c.GetString("NOVERSION") = "2.1" Then + Starter.db.ExecNonQuery("delete from VERSION") + End If + c.Close + End If + D.Close + D=Starter.db.ExecQuery("select COUNT(*) AS CUANTOS from version") + D.Position=0 + If D.GetString("CUANTOS") > 0 Then + c=Starter.db.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 + DateTime.DateFormat = "yyyyMMdd" + If user.Text = "ALTERNO" Then + c=Starter.db.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.db.ExecNonQuery2("UPDATE CAT_CODIGOS SET CAT_CO_PONDERACION = 1 WHERE CAT_CO_ACCION = ? AND CAT_CO_RESULTADO = 2", Array As String ("SERVER")) + Starter.db.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.db.ExecNonQuery2("UPDATE CAT_CODIGOS SET CAT_CO_PONDERACION = 1 WHERE CAT_CO_ACCION = ? AND CAT_CO_RESULTADO = 1", Array As String ("SERVER")) + Starter.db.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.db.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.db.ExecNonQuery("delete from usuarioa") + Starter.db.ExecNonQuery2("INSERT INTO USUARIOA VALUES (?,?,?)", Array As Object(user.Text, pass.Text, DateTime.Date(DateTime.Now))) + Starter.db.ExecNonQuery("delete from cat_almacen") + Starter.db.ExecNonQuery2("INSERT INTO CAT_ALMACEN(ID_ALMACEN) VALUES (?)", Array As Object (pass.Text)) + Starter.db.ExecNonQuery("delete from VERSION") + Starter.db.ExecNonQuery2("INSERT INTO VERSION(NOVERSION) VALUES (?)", Array As Object ("2.95")) + B4XPages.ShowPage("Principal") + End If +' c=Starter.db.ExecQuery2("select count(*) as EXISTE1 from usuarioa where usuario = ?", Array As String(user.Text)) + c=Starter.db.ExecQuery2($"select count(*) as EXISTE1 from usuarioa where usuario = ? and fecha = ${DateTime.Date(DateTime.Now)}"$, Array As String(user.Text)) + c.Position=0 + existe = c.GetString("EXISTE1") +' Log($"${existe}, ${DateTime.Date(DateTime.Now)}, ${user.Text}"$ ) + '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" + Starter.reqManager.ExecuteQuery(cmd , 0, "version") + Else + Subs.iniciaActividad("Principal") +' B4XPages.ShowPage("Principal") + End If +End Sub + +Sub JobDone(Job As HttpJob) + Log("JOBDONE MAINPAGE") + 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.db.ExecNonQuery("delete from VERSION") + Dim CAT_VE_VERSION As String = records(result.Columns.Get("CAT_VE_VERSION")) + Starter.db.ExecNonQuery("delete from VERSION") + Starter.db.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.db.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("FECHA")) + Starter.db.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 + LogColor("Borramos e insertamos a usuarioa", Colors.green) + DateTime.DateFormat = "yyyyMMdd" + Starter.db.ExecNonQuery("delete from usuarioa") + Starter.db.ExecNonQuery2("INSERT INTO USUARIOA VALUES (?,?,?)", Array As Object(user.Text, pass.Text, DateTime.Date(DateTime.Now))) + Starter.db.ExecNonQuery("delete from cat_almacen") + Starter.db.ExecNonQuery2("INSERT INTO CAT_ALMACEN(ID_ALMACEN) VALUES (?)", Array As Object (ID_ALMACEN)) + almacen = ID_ALMACEN + Starter.db.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("NUMERO_PEDIDO")) + Starter.db.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("NUMERO_PEDIDO",0)) +' B4XPages.ShowPage("Principal") + Subs.iniciaActividad("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 + DateTime.DateFormat = "yyyyMMdd" + c=Starter.db.ExecQuery2($"select count(*) as EXISTE1 from usuarioa where usuario = ? and fecha = ${DateTime.Date(DateTime.Now)}"$, Array As String(user.Text)) + c.Position=0 + existe = c.GetString("EXISTE1") + If existe = 1 Then Subs.iniciaActividad("Principal") +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.db.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 B4XPage_PermissionResult (Permission As String, Result As Boolean) +' Subs.copiaDB(Result) +End Sub + +Sub B_SERVER_Click + Starter.db.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("SERVER")) + Starter.db.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_MACIMP_Click + Starter.db.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("MACIMP")) + Starter.db.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.db.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.db.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 + +'Enviamos la base de datos por correo +Private Sub b_envioBD_Click + Public Provider As FileProvider + Provider.Initialize + Dim FileName As String = "kmt.db" + Log("************* : "&Provider.SharedFolder) + Sleep(1000) + 'Copy the shared file to the shared folder + File.Copy(File.DirInternal, FileName, Provider.SharedFolder, FileName) + Dim email As Email + email.To.Add("soporte@keymonsoft.com") + email.Subject = "Envío base de datos de ruta con problemas." + email.Attachments.Add(Provider.GetFileUri(FileName)) +' email.Attachments.Add(Provider.GetFileUri(FileName)) 'second attachment + Dim in As Intent = email.GetIntent + in.Flags = 1 'FLAG_GRANT_READ_URI_PERMISSION + StartActivity(in) +End Sub 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_Cliente.bas b/B4A/C_Cliente.bas new file mode 100644 index 0000000..926187a --- /dev/null +++ b/B4A/C_Cliente.bas @@ -0,0 +1,1251 @@ +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 + 'These global variables will be declared once when the application starts. + 'These variables can be accessed from all modules. + Dim g As GPS + Dim ruta As String + Dim skmt As SQL + 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 btAdmin As BluetoothAdmin + 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 tipov As String + Dim Printer1 As EscPosPrinter + Dim MAC_IMPRESORA As String + 'These global variables will be redeclared each time the activity is created. + 'These variables can only be accessed from this module. + + Dim c As Cursor + Dim s As Cursor + Dim c2 As Cursor + Dim E1 As Cursor + 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 lat_gps, lon_gps As String + + 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 + Private B_INV As Button + Private B_IMP2 As Button + + Dim id_encuesta As String + Dim LLAMAR_FOTO As String + Dim CURSOR_FOTO As Int + Dim TOMAR_FOTO As String + Private Panel10 As Panel + 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 chk_1_valor As String + Private chk_2_valor As String + Private chk_3_valor As String + Private t_tenc As Label + Private E_RES_E As EditText + Private B_E_NEXT As Button + Private Panel9 As Panel + Private Label26 As Label + Dim impresoraConectada As Boolean = False + Dim printer As TextWriter +End Sub + +Private Sub B4XPage_Created (Root1 As B4XView) + 'Do not forget to load the layout file created with the visual designer. For example: + 'Activity.LoadLayout("Layout1") + Root = Root1 + Root.RemoveAllViews + Root.LoadLayout("info_gral") + ' valido donde escribo el archivo de la base de datos de kmt + 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) + c=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 from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)") + s=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 + 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") + 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") + la_saldooper.Text = c.GetString("CAT_CL_EMAIL") + 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") + + + ' la_producto.Text = c.GetString("CDPROD") + 'la_numero.Text = c.GetString("CDNUMEXT") + 'la_nint.Text = c.GetString("CDNUMINT") + 'la_pob.Text = c.GetString("CFSDOGLOBAL") + + 'la_saldooper.Text = c.GetString("CAT_CL_FALTA") + 'Label10.Text = "FECHA DE ALTA" + 'Label11.Text = "# ENCUESTAS" + + 'c=skmt.ExecQuery("select MGCTA, MGACTT, MGGESTT, MGDTEACTT, COMM from hist_gest where MGCTA In (Select cuenta from cuentaa)") + 'c.Position=0 + 'la_comm.Text = c.GetString("COMM") + 'la_actdte.Text = C.GetString("MGDTEACTT") + 'la_usuario.Text = c.GetString("MGGESTT") + 'la_resultado.Text = c.GetString("MGACTT") + + + 'la_padre.Text = c.GetString("PR_CF_FECHA_DISP") + 'la_no_ird.Text = c.GetString("PR_CF_SALDO_ACORT") + + ' se crea o no el archivo de la base de ddatos de kmt + 'NOTAS SI SE MODIFICA LA ESTRUCTURA SE QUITA EL IF Y SE VA DIRECTO A LA SENTENCIA FILE.COPY PARA QUE + 'TOME LA NUEVA ESTRUCTURA ES MUY IMPORTANTE TENER EL IF DE LO CONTRARIO SOLO LO ESCRIBE UNA VEZ Y LO BORRA + 'SI SE REGRESA A ESTE ACTIVIDAD. + 'ListView1.AddTwoLines(c.GetString("pr_cd_nombre"),c.GetString("pr_cd_colonia")) + ' Next + 'End If + ' SE COMENTA IMPRESORA ANTERIOR +' If FirstTime Then +' btAdmin.Initialize("BlueTeeth") +' cmp20.Initialize("Printer") +' End If + + c=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") + If MAC_IMPRESORA = "" Then MAC_IMPRESORA = "0" + Starter.MAC_IMPRESORA = MAC_IMPRESORA + Log("|" & MAC_IMPRESORA & "|") + If FirstTime Then + Printer1.Initialize(Me, "Printer1") + + End If + + TOMAR_FOTO = 0 + +End Sub + +Sub B4XPage_Appear + BT_QR.Enabled = False + b_factura.Visible = False + FACTURA =0 + If g.GPSEnabled=False Then + ToastMessageShow("Habilitar el GPS", True) + StartActivity(g.LocationSettingsIntent) + Else + g.Start(0,0) + End If + + skmt.Initialize(ruta,"kmt.db", True) + c=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_NUM_SERIEFISICO,CAT_CL_BFACTURA,CAT_CL_BCREDITO from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)") + s=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 + + 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") + 'la_saldotot.Text = c.GetString("CAT_CL_TELEFONO") + 'la_saldooper.Text = c.GetString("CAT_CL_EMAIL") + 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") + FACTURA = c.GetString("CAT_CL_BFACTURA") + CREDITO = c.GetString("CAT_CL_BCREDITO") + + If l_total.Text <> Null Then + + If la_cuenta.Text.Contains("N") = True Then + FACTURA = 0 + End If + + If FACTURA = "1" Then + b_factura.Visible = True + + End If + End If + + If CREDITO = "1" Then + Msgbox("ALTO","Este cliente no se le puede vender ya que tienen adeudo en su crédito") + B_VENTA.Visible = False + gest.Visible = False + Else + B_VENTA.Visible = True + gest.Visible = True + + End If + + If c.GetString("CAT_CL_NUM_SERIEFISICO") = "0" Then + L_QR.Visible = True + Else + L_QR.Visible = False + End If + S2=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=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 + + If Printer1.IsConnected = False Then + Printer1.Connect + Else + Printer1.DisConnect + Printer1.Connect + End If + If PASA_IMP = "1" Then + B_IMP.Enabled = True + End If + '''''''''Agregar la parte de si tiene credito o no tiene credito + If la_cuenta.Text="0" Then + B_VENTA.Visible = False + gest.Visible = False + Else + B_VENTA.Visible = True + gest.Visible = True + End If +End Sub + +Sub GPS_LocationChanged (Location1 As Location) + 'lat_gps=Location1.Latitude + 'lon_gps=Location1.Longitude +' BT_QR.Enabled = True + Dim sDate,sTime As String + + DateTime.DateFormat = "MM/dd/yyyy" + sDate=DateTime.Date(DateTime.Now) + sTime=DateTime.Time(DateTime.Now) + + skmt.ExecNonQuery("DELETE FROM HIST_GPS") + + skmt.ExecNonQuery2("INSERT INTO HIST_GPS (HGDATE, HGLAT, HGLON) VALUES(?,?,?) ", Array As Object (sDate & sTime, Main.lat_gps, Main.lon_gps)) +End Sub + +Sub ListView1_ItemLongClick (Position As Int, Value As Object) + +End Sub + +Sub gest_Click + Main.tipov = "PREVENTA" + ' StartActivity(colonia2) + cuestionario +End Sub + +Sub Tels_Click + ' skmt.ExecNonQuery("delete from PEDIDO") + StartActivity(nopago) +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 + StartActivity(colonia) + 'Return True + End If + ' Returning False signals the system to handle the key + Return False +End Sub + +Sub Tar_Click + StartActivity(tarjeta) +End Sub + +Sub DATOS_Click + StartActivity(telefonos) +End Sub + +Sub Guardar_Click + DateTime.DateFormat = "MM/dd/yyyy" + sDate=DateTime.Date(DateTime.Now) + sTime=DateTime.Time(DateTime.Now) + c=skmt.ExecQuery("Select CUENTA from cuentaa") + c.Position=0 + clie_id = c.GetString("CUENTA") + c=skmt.ExecQuery("select USUARIO from usuarioa") + c.Position=0 + usuario = c.GetString("USUARIO") + + c=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 + skmt.ExecNonQuery("delete from NOVENTA where NV_CLIENTE In (select cuenta from cuentaa)") + skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") + 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"), Main.lon_gps, Main.lat_gps)) + skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + End If + c.Close + + skmt.ExecNonQuery("delete from pedido3") + skmt.ExecNonQuery("INSERT INTO PEDIDO3 SELECT PE_PRECIO2, PE_TIPO, PE_FOLIO, 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, 1 As PE_FECHA, PE_USUARIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) GROUP BY PE_PRECIO2, PE_TIPO, PE_FOLIO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, PE_COSTOU, PE_PRONOMBRE, PE_PROID, PE_CLIENTE ") + c=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 + 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 + skmt.ExecNonQuery("delete from pedido WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) ") + skmt.ExecNonQuery("INSERT INTO PEDIDO SELECT * FROM PEDIDO3") + + + StartActivity(seleccion) +End Sub + +Sub NUEVO_Click + StartActivity(nuevocliente) +End Sub + +Sub HIST_Click + StartActivity(Historico) +End Sub + +Sub BT_QR_Click + 'StartActivity(QR_MODULE) + 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) + CODIGO = Values + 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, Main.lon_gps, Main.lat_gps)) +End Sub + +Sub sc_noScan + 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 + StartActivity(mapas) +End Sub + +Sub B_IMP_Click + c=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=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=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=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 + ProgressDialogShow("Imprimiendo, un momento ...") + Printer1.DisConnect + If Not(Printer1.IsConnected) Then + Log("Conectando a impresora ...") + Printer1.Connect + Private cont As Int = 0 + Do While Not(impresoraConectada) + Sleep(1000) + Log("++++++ " & cont) + cont = cont + 1 + If cont = 7 Then Printer1.Connect 'Tratamos de reconectar + If cont > 15 Then impresoraConectada = True + Loop + Sleep(500) + impresoraConectada = False + Else + Log("conectando 2") + Printer1.Connect + Private cont As Int = 0 + Do While Not(impresoraConectada) Or Not(Printer1.IsConnected) + Sleep(1000) + Log("****** " & cont) + cont = cont + 1 + If cont = 2 Then Printer1.Connect + If cont > 4 Then impresoraConectada = True + Loop + Sleep(500) + impresoraConectada = False + End If + + TAMANO = 0 + ESPACIO = 21 + BLANCO = " " + Dim bmp As Bitmap + bmp.InitializeResize(File.DirAssets, "durakelo1.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 + 'printer.Initialize(cmp20.OutputStream) + Printer1.WriteString("DURAKELO S.A. de C.V." & CRLF) + Printer1.WriteString("RFC: DUR-011025-T12" & CRLF) + Printer1.WriteString(sucursal & CRLF) + Printer1.WriteString(sDate & CRLF) + Printer1.WriteString(sTime & CRLF) + Printer1.WriteString("Vendedor:" & usuario & 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) + + If perfil = "V-ESPECIAL" Then 'Or perfil = "V-SUPER" + Printer1.WriteString("-----------PREVENTA-----------" & 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=skmt.ExecQuery2("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_PRECIO2 as PE_COSTOU, length(PE_PRECIO2) as L_COSTOU,PE_CANT * PE_PRECIO2 AS PE_COSTO_TOT, length(PE_CANT * PE_PRECIO2) as L_COSTO_TOT,PE_PROID, PE_CEDIS FROM PEDIDO WHERE PE_TIPO = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_PROID ", Array As String("PREVENTA")) + 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) + TAMANO = s.GetLong("L_CANT") + TAMANO + TAMANO = s.GetLong("L_COSTOU") + TAMANO + TAMANO = s.GetLong("L_COSTO_TOT") + TAMANO + + ESPACIO = ESPACIO - TAMANO + + For E=0 To ESPACIO -1 + BLANCO = " " & BLANCO + Next + Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & s.GETSTRING("PE_COSTOU") & " $" & s.GETSTRING("PE_COSTO_TOT") & CRLF ) + TAMANO = 0 + ESPACIO = 21 + BLANCO = " " + End If + Next + End If + s.Close + s=skmt.ExecQuery2("select SUM(PE_COSTO_TOT) AS TOTAL, SUM(PE_PRECIO2 * PE_CANT) AS TOTAL2 FROM PEDIDO WHERE PE_TIPO = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("PREVENTA")) + s.Position =0 + If s.GetString("TOTAL") - s.GetString("TOTAL2") <> 0 Then + Printer1.WriteString("Descuento: $" & (s.GetString("TOTAL2") - s.GetString("TOTAL")) & CRLF) + End If + Printer1.WriteString("Total Preventa: $" & s.GetString("TOTAL") & CRLF) + s.Close + + Else + Printer1.WriteString("-----------PREVENTA-----------" & 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=skmt.ExecQuery2("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU,PE_CANT * PE_COSTOU AS PE_COSTO_TOT, length(PE_CANT * PE_COSTOU) as L_COSTO_TOT,PE_PROID, PE_CEDIS FROM PEDIDO WHERE PE_TIPO = ? AND LENGTH(PE_CEDIS) < 4 AND PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_PROID", Array As String("PREVENTA")) + 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) + TAMANO = s.GetLong("L_CANT") + TAMANO + TAMANO = s.GetLong("L_COSTOU") + TAMANO + TAMANO = s.GetLong("L_COSTO_TOT") + TAMANO + + ESPACIO = ESPACIO - TAMANO + + For E=0 To ESPACIO -1 + BLANCO = " " & BLANCO + Next + Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & s.GETSTRING("PE_COSTOU") & " $" & s.GETSTRING("PE_COSTO_TOT") & CRLF ) + TAMANO = 0 + ESPACIO = 21 + BLANCO = " " + End If + Next + End If + s.Close + s=skmt.ExecQuery2("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU,PE_CANT * PE_COSTOU AS PE_COSTO_TOT, length(PE_CANT * PE_COSTOU) as L_COSTO_TOT,PE_PROID, PE_CEDIS FROM PEDIDO WHERE PE_TIPO = ? and LENGTH(PE_CEDIS) > 3 AND PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_CEDIS, PE_COSTOU", Array As String("PREVENTA")) + If S.RowCount>0 Then + Printer1.WriteString("----PROMOS----" & 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 + + Printer1.WriteString(s.GetString("PE_CANT") & " " & s.GetString("PE_PRONOMBRE") & CRLF) + TAMANO = s.GetLong("L_CANT") + TAMANO + TAMANO = s.GetLong("L_COSTOU") + TAMANO + TAMANO = s.GetLong("L_COSTO_TOT") + TAMANO + + ESPACIO = ESPACIO - TAMANO + + For E=0 To ESPACIO -1 + BLANCO = " " & BLANCO + Next + Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & s.GETSTRING("PE_COSTOU") & " $" & s.GETSTRING("PE_COSTO_TOT") & CRLF ) + TAMANO = 0 + ESPACIO = 21 + BLANCO = " " + End If + Next + Printer1.WriteString("--FIN PROMOS----" & CRLF) + End If + s.Close + + s=skmt.ExecQuery2("select SUM(PE_COSTO_TOT) AS TOTAL, SUM(PE_PRECIO2 * PE_CANT) AS TOTAL2 FROM PEDIDO WHERE PE_TIPO = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("PREVENTA")) + s.Position =0 + ' If s.GetString("TOTAL") - s.GetString("TOTAL2") <> 0 Then + ' Printer1.WriteString("Descuento: $" & (s.GetString("TOTAL2") - s.GetString("TOTAL"))) + ' End If + Printer1.WriteString("Total Preventa: $" & s.GetString("TOTAL") & CRLF) + s.Close + + End If + Printer1.WriteString(" " & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("ENTREGA EN :" & CRLF) + Printer1.WriteString(la_Calle.Text & 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) + + Sleep(1000) + Printer1.DisConnect + + ProgressDialogHide +' printer.Flush + ' printer.Close + +End Sub + +Sub B_IMP2_Click + c=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=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=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=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 + + ProgressDialogShow("Imprimiendo, un momento ...") +' Printer1.DisConnect + If Not(Printer1.IsConnected) Then + Log("conectando 1") + Printer1.Connect + Private cont As Int = 0 + Do While Not(impresoraConectada) +' Log("conectando ...") + Sleep(1000) + cont = cont + 1 + If cont = 3 Then Printer1.Connect 'Tratamos de reconectar + If cont > 15 Then impresoraConectada = True + Loop + Sleep(500) + impresoraConectada = False + Else + Log("conectando 2") + Printer1.Connect + Private cont As Int = 0 + Do While Not(impresoraConectada) Or Not(Printer1.IsConnected) +' Log("conectando ...") + Sleep(1000) + cont = cont + 1 + If cont = 2 Then Printer1.Connect + If cont > 4 Then impresoraConectada = True + Loop + Sleep(500) + impresoraConectada = False + End If + Log("Iniciamos ...") + TAMANO = 0 + ESPACIO = 21 + BLANCO = " " + Dim bmp As Bitmap + bmp.InitializeResize(File.DirAssets, "durakelo1.png", 376, 129, True) 'ignore + Dim myimage As AnImage = Printer1.ImageToBWIMage(bmp) + + myimage = Printer1.DitherImage2D(myimage, 128) + + myimage= Printer1.PackImage(myimage) + Log("Iniciamos 2 ...") + Printer1.WriteString(CRLF) ' nudge the printer to show the user something is happening + Printer1.WriteString(Printer1.REVERSE) + + Printer1.PrintImage(myimage) + Printer1.WriteString(Printer1.UNREVERSE) + +' printer.Initialize(cmp20.OutputStream) + Printer1.WriteString("DURAKELO S.A. de C.V." & CRLF) + Printer1.WriteString("RFC: DUR-011025-T12" & CRLF) + Printer1.WriteString(sucursal & CRLF) + Printer1.WriteString(sDate & CRLF) + Printer1.WriteString(sTime & CRLF) + Printer1.WriteString("Vendedor:" & usuario & 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("-----------ENTREGA------------" & CRLF) + + s=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 LENGTH(PE_CEDIS) < 4 AND PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_PRONOMBRE", Array As String("VENTA")) + 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) + TAMANO = s.GetLong("L_CANT") + TAMANO + TAMANO = s.GetLong("L_COSTOU") + TAMANO + TAMANO = s.GetLong("L_COSTO_TOT") + TAMANO + + ESPACIO = ESPACIO - TAMANO + + For E=0 To ESPACIO -1 + BLANCO = " " & BLANCO + Next + Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & s.GETSTRING("PE_COSTOU") & " $" & s.GETSTRING("PE_COSTO_TOT") & CRLF ) + TAMANO = 0 + ESPACIO = 21 + BLANCO = " " + End If + Next + End If + s.Close + + s=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 LENGTH(PE_CEDIS) > 3 AND PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_CEDIS, PE_COSTOU", Array As String("VENTA")) + If S.RowCount>0 Then + Printer1.WriteString("----PROMOS----" & 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 + + Printer1.WriteString(s.GetString("PE_CANT") & " " & s.GetString("PE_PRONOMBRE") & CRLF) + TAMANO = s.GetLong("L_CANT") + TAMANO + TAMANO = s.GetLong("L_COSTOU") + TAMANO + TAMANO = s.GetLong("L_COSTO_TOT") + TAMANO + + ESPACIO = ESPACIO - TAMANO + + For E=0 To ESPACIO -1 + BLANCO = " " & BLANCO + Next + Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & s.GETSTRING("PE_COSTOU") & " $" & s.GETSTRING("PE_COSTO_TOT") & CRLF ) + TAMANO = 0 + ESPACIO = 21 + BLANCO = " " + End If + + Next + Printer1.WriteString("--FIN PROMOS----" & CRLF) + + End If + s.Close + + Printer1.WriteString(" " & CRLF) + s=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("Total entrega: $" & s.GetString("TOTAL") & CRLF) + s.Close +' Printer1.WriteString("------------VENTA-------------") +' Printer1.WriteString("TOTAL COMPRA: $:" & total_cliente) + Printer1.WriteString(" " & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("ENTREGA EN :" & CRLF) + Printer1.WriteString(la_Calle.Text & 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) + + Sleep(1000) + Printer1.DisConnect + ProgressDialogHide + 'printer.Flush +' printer.Close +End Sub + +Sub B_INV_Click + c=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 = 21 + BLANCO = " " +' printer.Initialize(cmp20.OutputStream) + Printer1.WriteString("DURAKELO S.A. de C.V." & CRLF) + Printer1.WriteString("RESUMEN DIA A LA HORA" & CRLF) + Printer1.WriteString(sDate & " " & sTime & CRLF) + Printer1.WriteString("Vendedor:" & usuario & CRLF ) + Printer1.WriteString("-------------VENTA-------------" & CRLF) + + E1=skmt.ExecQuery2("Select count(*) As CUANTOS from pedido where PE_TIPO = ?", Array As String("VENTA")) + E1.Position = 0 + If E1.GetString("CUANTOS") > 0 Then + + c=skmt.ExecQuery2("Select sum(PE_COSTO_TOT) As MONTO_DIA from pedido where PE_TIPO = ?", Array As String("VENTA")) + c.Position = 0 + Printer1.WriteString("VENTA: " & c.GetString("MONTO_DIA") & CRLF) + c.Close + Else + Printer1.WriteString("VENTA: " & "0" & CRLF) + End If + E1.Close + + + E1=skmt.ExecQuery2("Select count(*) As CUANTOS from pedido where PE_TIPO = ?", Array As String("PREVENTA")) + E1.Position = 0 + If E1.GetString("CUANTOS") > 0 Then + + c=skmt.ExecQuery2("Select sum(PE_COSTO_TOT) As MONTO_DIA from pedido where PE_TIPO = ?", Array As String("PREVENTA")) + c.Position = 0 + Printer1.WriteString("PREVENTA: " & c.GetString("MONTO_DIA") & CRLF) + c.Close + Else + Printer1.WriteString("PREVENTA: " & "0" & CRLF) + End If + E1.Close + + + E1=skmt.ExecQuery2("Select count(*) As CUANTOS from pedido where PE_TIPO = ?", Array As String("ABORDO")) + E1.Position = 0 + If E1.GetString("CUANTOS") > 0 Then + + c=skmt.ExecQuery2("Select sum(PE_COSTO_TOT) As MONTO_DIA from pedido where PE_TIPO = ?", Array As String("ABORDO")) + c.Position = 0 + Printer1.WriteString("ABORDO: " & c.GetString("MONTO_DIA") & CRLF) + c.Close + Else + Printer1.WriteString("ABORDO: " & "0" & CRLF) + End If + E1.Close + + Printer1.WriteString("-----------INVENTARIO-----------" & 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=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 + + Printer1.WriteString(s.GetString("CAT_GP_NOMBRE") & CRLF) + + Printer1.WriteString("CANTIDAD: " & s.GetString("CAT_GP_ALMACEN") & 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 + + Printer1.WriteString(" " & CRLF) + Printer1.WriteString("-----------RMI----------------" & CRLF) + Printer1.WriteString(" " & CRLF) + 'c=skmt.ExecQuery2("select count(*) as CUANTOS from pedido where substr(pe_pronombre,1,6) = ? GROUP BY PE_PRONOMBRE", Array As String("CAMBIO")) + 'c.Position =0 + 'Cuantos = c.GETSTRING("CUANTOS") + 'c.Close + 'If Cuantos >0 Then + c=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")) + + 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 + 'End If + + 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) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString(" " & CRLF) +' printer.Flush +End Sub + +Sub B_VENTA_Click + Main.tipov = "VENTA" + 'StartActivity(colonia2) + cuestionario +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 CH_TA.Checked = True Then + TIPOEX = CH_TA.Text + ELSE If CH_TB.Checked = True Then + TIPOEX = CH_TB.Text + ELSE If CH_TC.Checked = True Then + TIPOEX = CH_TC.Text + ELSE If CH_TD.Checked = True Then + TIPOEX = CH_TD.Text + End If + + Panel1.Visible = False + B_EXIBI.Visible = True + b_factura.Visible = True + HIST.Visible = True + Tar.VISIBLE = True + B_IMP.Visible = True + Tels.Visible = True + B_VENTA.Visible = True + B_IMP2.Visible = True + gest.Visible = True + Guardar.Visible = True + B_INV.Visible = True + + c=skmt.ExecQuery("select CUENTA from cuentaa") + c.Position = 0 + cuenta = c.GetString("CUENTA") + + 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 + s=skmt.ExecQuery("select CAT_EX_ID, CAT_EX_TIPO, CAT_EX_VALOR FROM CAT_EXHIBIDORES") + + If s.RowCount>0 Then + For i=0 To s.RowCount -1 + s.Position=i + If s.GetString("CAT_EX_ID") = "1" Then + CH_TA.Text = s.GetString("CAT_EX_VALOR") + End If + If s.GetString("CAT_EX_ID") = "2" Then + CH_TB.Text = s.GetString("CAT_EX_VALOR") + End If + If s.GetString("CAT_EX_ID") = "3" Then + CH_TC.Text = s.GetString("CAT_EX_VALOR") + End If + If s.GetString("CAT_EX_ID") = "4" Then + CH_TD.Text = s.GetString("CAT_EX_VALOR") + End If + + Next + End If + + E_CUANTOS_E.Text = "" + CH_TA.Checked = False + CH_TB.Checked = False + CH_TC.Checked = False + CH_TD.Checked = False + Panel1.Visible = True + B_EXIBI.Visible = False + b_factura.Visible = False + HIST.Visible = False + Tar.VISIBLE = False + B_IMP.Visible = False + Tels.Visible = False + B_VENTA.Visible = False + B_IMP2.Visible = False + gest.Visible = False + Guardar.Visible = False + B_INV.Visible = False + +End Sub + +Sub Printer1_Connected (Success As Boolean) + Log("Impresora conectada.") + If Success Then + ToastMessageShow("Connected successfully", False) + skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("MACIMP")) + skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("MACIMP",Main.mac_impresora)) + B_IMP.Enabled = True + impresoraConectada = True + Else +' Msgbox(Printer1.ConnectedErrorMsg, "Error connecting.") +' 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 cuestionario + DateTime.DateFormat = "MM/dd/yyyy" + sDate=DateTime.Date(DateTime.Now) + sTime=DateTime.Time(DateTime.Now) + + If TOMAR_FOTO = 0 Then + s=skmt.ExecQuery("select COUNT(*) AS CUANTOS from HIST_ENCUESTA where HE_CLIE In (Select cuenta from cuentaa)") + s.Position= 0 + CUANTOS = s.GetString("CUANTOS") + Else + CUANTOS = 0 + End If + If CUANTOS = 0 Then + c=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 + ' Msgbox("paso1","a") + If c.GetString("CAT_EP_IDTIPOPREGUNTA") = 5 Then + id_encuesta = c.GetString("CAT_EP_ID") + TOMAR_FOTO = 1 + CURSOR_FOTO = i + StartActivity(foto) + ' Msgbox("paso2","a") + Exit + ELSE IF c.GetString("CAT_EP_IDTIPOPREGUNTA") = 3 Then + res = Msgbox2(c.GetString("CAT_EP_PREGUNTA"),c.GetString("CAT_CE_DESCRIPCION"), "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) + If res = DialogResponse.POSITIVE Then + 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 + 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"))) + Else IF res = DialogResponse.CANCEL Then + i = i -1 + End If + 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")) + If res = DialogResponse.POSITIVE Then + 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"))) + 'i = c.GetString("CAT_EP_RES1_PRED") -1 + Else IF res = DialogResponse.NEGATIVE Then + 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 + res = Msgbox2(c.GetString("CAT_EP_PREGUNTA"),c.GetString("CAT_CE_DESCRIPCION"), c.GetString("CAT_EP_RES1_PRED"), c.GetString("CAT_EP_RES2_PRED"),c.GetString("CAT_EP_RES3_PRED"),LoadBitmap(File.DirAssets,"alert2.png")) + If res = DialogResponse.POSITIVE Then + skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, c.GetString("CAT_EP_RES1_PRED"),sDate & sTime,c.GetString("CAT_EP_ID"))) + Else IF res = DialogResponse.NEGATIVE Then + skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, c.GetString("CAT_EP_RES3_PRED"),sDate & sTime,c.GetString("CAT_EP_ID"))) + Else IF res = DialogResponse.CANCEL Then + skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, c.GetString("CAT_EP_RES2_PRED"),sDate & sTime,c.GetString("CAT_EP_ID"))) + End If + ' Msgbox("paso4","a") + 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") + TOMAR_FOTO = 1 + CURSOR_FOTO = i + ' Msgbox("paso5","a") + Exit + ELSE If c.GetString("CAT_EP_IDTIPOPREGUNTA") = 1 Then + Panel9.Visible = True + t_tenc.Text = c.GetString("CAT_EP_PREGUNTA") + Label26.Text = c.GetString("CAT_CE_DESCRIPCION") + E_RES_E.Text = "" + TOMAR_FOTO = 1 + CURSOR_FOTO = i + Exit + Else + ' Main.tipov = "VENTA" + StartActivity(colonia2) + End If + Next + Else + ' Main.tipov = "VENTA" + StartActivity(colonia2) + End If + Else + ' Main.tipov = "VENTA" + StartActivity(colonia2) + End If +End Sub + +Sub B_E_NEXT_Click + Panel9.Visible = False + 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"))) + Main.tipov = "VENTA" + 'TOMAR_FOTO = 1 + cuestionario + 'StartActivity(colonia2) + +End Sub + +Sub b_chk_e_Click + Panel10.Visible = False + + If Chk_1.Checked = True Then + skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, chk_1_valor,sDate & sTime,c.GetString("CAT_EP_ID"))) + else if chk_2.Checked = True Then + skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, chk_2_valor,sDate & sTime,c.GetString("CAT_EP_ID"))) + else if chk_3.Checked = True Then + skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, chk_3_valor,sDate & sTime,c.GetString("CAT_EP_ID"))) + End If + Main.tipov = "VENTA" + 'TOMAR_FOTO = 1 + cuestionario +End Sub \ No newline at end of file diff --git a/B4A/C_Clientes.bas b/B4A/C_Clientes.bas new file mode 100644 index 0000000..3832df0 --- /dev/null +++ b/B4A/C_Clientes.bas @@ -0,0 +1,209 @@ +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 + 'These global variables will be redeclared each time the activity is created. + 'These variables can only be accessed from this module. + Dim skmt As SQL + 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 + Private b_qr As Button + Private qr As QRCode + Dim sc As Zxing_scanner + Dim CODIGO As String +End Sub + +Private Sub B4XPage_Created (Root1 As B4XView) + 'Do not forget to load the layout file created with the visual designer. For example: + 'Activity.LoadLayout("Layout1") + Root = Root1 + Root.LoadLayout("fila") + entro ="2" + ' valido donde escribo el archivo de la base de datos de kmt + ruta = File.DirInternal + If File.Exists(ruta, "kmt.db") = False Then + File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db") + End If + qr.initialize +End Sub + +Sub B4XPage_Appear + b_qr.Visible = False ' No usamos el lector QR en esta app - CHV + busca.Text = "" + skmt.Initialize(ruta,"kmt.db", True) + entro ="2" + colonia = 0 + ' esto es para rutas se quito por colonia c=skmt.ExecQuery("select CAT_CL_RUTA, count(*) as cuantos from kmt_info where gestion = 0 group by CAT_CL_RUTA order by CAT_CL_RUTA asc") + 'SE COMENTA EL SIGUIENTE CODIGO PARA QUE TODAS LAS TIENDAS APARESCAN. + + ' c=skmt.ExecQuery("select CAT_CL_COLONIA, count(*) as cuantos from kmt_info where gestion = 0 group by CAT_CL_COLONIA order by CAT_CL_COLONIA asc") + c=skmt.ExecQuery("select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO,CAT_CL_NUM_SERIEFISICO from kmt_info where gestion = 0 and cat_cl_codigo <> 0 ORDER BY CAST(CAT_CL_NUM_SERIEFISICO AS DECIMAL)") + 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 = 10 + label1.TextColor = Colors.Black + Dim label2 As Label + label2 = ListView1.TwoLinesLayout.SecondLabel + label2.TextSize = 10 + 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" + ' ESTE FUE EL FIN DEL CODIGO COMENTADO + +End Sub + +Sub ListView1_ItemClick (Position As Int, Value As Object) + If colonia = 0 Then + colonia = Value + End If + If entro = "2" Then + c2=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=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 + skmt.ExecNonQuery("delete from CUENTAA") + skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(Value)) + StartActivity(fila) + End If +End Sub + +Sub Activity_KeyPress (key As Int) As Boolean + ' BACK key pressed + If key=KeyCodes.KEYCODE_BACK Then + ' If entro = "3" Then + 'entro = "2" + 'B4XPage_Appear + 'Return True + 'Else If entro = "2" Then + 'entro = "1" + 'B4XPage_Appear + 'Return True + 'Else If entro = "1" Then + + ' I want to capture the key here so I return True + + StartActivity(seleccion) + 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 & "%" + skmt.Initialize(ruta,"kmt.db", True) + + c2=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 = 10 + label1.TextColor = Colors.White + Dim label2 As Label + label2 = ListView1.TwoLinesLayout.SecondLabel + label2.TextSize = 10 + label2.TextColor = Colors.White + 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 + 'StartActivity(QR_MODULE) + 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 + + c2=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=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 + skmt.ExecNonQuery("delete from CUENTAA") + skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(s.GetString("CAT_CL_CODIGO"))) + s.Close + b_qr.Visible = False + StartActivity(fila) + Else + Msgbox("CODIGO " & CODIGO & " NO ENCONTRADO","AVISO") + End If +End Sub +Sub sc_noScan + 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 \ 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..57eede6 --- /dev/null +++ b/B4A/C_Historico.bas @@ -0,0 +1,154 @@ +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 + 'These global variables will be declared once when the application starts. + 'These variables can be accessed from all modules. + Dim skmt As SQL + Dim g As GPS + Dim clie_id As String + Dim sDate,sTime As String + Dim usuario As String + + 'These global variables will be redeclared each time the activity is created. + 'These variables can only be accessed from this module. + 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 + +Private Sub B4XPage_Created (Root1 As B4XView) + Root = Root1 + ruta = File.DirInternal + Root.LoadLayout("tarjeta") + B_RMI.Visible = True + borra.Visible = False + Titulo.Text = "Acumulado" + b_desc.Visible = False + 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) +End Sub + +Sub B4XPage_Appear + If g.GPSEnabled=False Then + ToastMessageShow("Habilitar el GPS", True) + StartActivity(g.LocationSettingsIntent) + Else + g.Start(0,0) + End If + + L_CANT.Text ="" + L_TOTAL.Text="" + c=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=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.Blue + 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=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 + 'la_no_ird.Text = c.GetString("PR_CF_SALDO_ACORT") + + +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 + 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 + StartActivity(seleccion) + 'Return True + End If + ' Returning False signals the system to handle the key + 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=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.Blue + 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..0172bfa --- /dev/null +++ b/B4A/C_Mapas.bas @@ -0,0 +1,6 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=11.5 +@EndOfDesignText@ diff --git a/B4A/C_NoVenta.bas b/B4A/C_NoVenta.bas new file mode 100644 index 0000000..4980bae --- /dev/null +++ b/B4A/C_NoVenta.bas @@ -0,0 +1,94 @@ +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 + 'These global variables will be declared once when the application starts. + 'These variables can be accessed from all modules. + Dim g As GPS + Dim ruta As String + Dim skmt As SQL + Dim c As Cursor + 'These global variables will be redeclared each time the activity is created. + 'These variables can only be accessed from this module. + 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 r_4 As RadioButton +End Sub + +Private Sub B4XPage_Created (Root1 As B4XView) + Root = Root1 + Root.LoadLayout("nopago") + ' valido donde escribo el archivo de la base de datos de kmt + 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) +End Sub + +Sub B4XPage_Appear + e_comm.Text = "" + If g.GPSEnabled = False Then + ToastMessageShow("Habilitar el GPS", True) + StartActivity(g.LocationSettingsIntent) + Else + g.Start(0,0) + 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 CANCELA_Click + StartActivity(fila) +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=skmt.ExecQuery("select CUENTA from cuentaa") + c.Position = 0 + cuenta = c.GetString("CUENTA") + c=skmt.ExecQuery("select usuario from usuarioa") + c.Position = 0 + usuario = c.GetString("USUARIO") + c=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 + 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 + skmt.ExecNonQuery("delete from pedido_cliente where pc_cliente in (Select CUENTA from cuentaa)") + skmt.ExecNonQuery("delete from pedido where pe_cliente in (Select CUENTA from cuentaa)") + + 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,Main.lat_gps,Main.lon_gps)) + skmt.ExecNonQuery("UPDATE kmt_info set gestion = 3 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + StartActivity(seleccion) +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..b132b15 --- /dev/null +++ b/B4A/C_Nota.bas @@ -0,0 +1,332 @@ +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 + 'These global variables will be declared once when the application starts. + 'These variables can be accessed from all modules. + Dim skmt As SQL + Dim g As GPS + Dim clie_id As String + Dim sDate,sTime As String + Dim usuario As String + 'These global variables will be redeclared each time the activity is created. + 'These variables can only be accessed from this module. + Dim c As Cursor + Dim d 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 + Dim DESC As String + + Private Titulo As Label + Private b_desc As Button + Dim DESCUENTO As String + Dim folio As String + Dim TIPO As String +End Sub + +Private Sub B4XPage_Created (Root1 As B4XView) + 'Do not forget to load the layout file created with the visual designer. For example: + 'Activity.LoadLayout("Layout1") + Root = Root1 + g.Initialize("GPS") + ruta = File.DirInternal + Root.LoadLayout("tarjeta") + borra.Visible = True + Titulo.Text = "Pedido Actual" + ' se crea o no el archivo de la base de ddatos de kmt + 'NOTAS SI SE MODIFICA LA ESTRUCTURA SE QUITA EL IF Y SE VA DIRECTO A LA SENTENCIA FILE.COPY PARA QUE + 'TOME LA NUEVA ESTRUCTURA ES MUY IMPORTANTE TENER EL IF DE LO CONTRARIO SOLO LO ESCRIBE UNA VEZ Y LO BORRA + 'SI SE REGRESA A ESTE ACTIVIDAD. + 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) + skmt.ExecNonQuery("update pedido set pe_folio = 0 where pe_folio is null") + c=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=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 = 15 + label1.TextColor = Colors.Black + Dim label2 As Label + label2 = ListView1.TwoLinesLayout.SecondLabel + label2.TextSize = 10 + label2.TextColor = Colors.Blue + 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=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 + 'la_no_ird.Text = c.GetString("PR_CF_SALDO_ACORT") + + + 'ListView1.AddTwoLines(c.GetString("pr_cd_nombre"),c.GetString("pr_cd_colonia")) + ' Next + 'End If + +End Sub + +Sub B4XPage_Appear + If g.GPSEnabled=False Then + ToastMessageShow("Habilitar el GPS", True) + StartActivity(g.LocationSettingsIntent) + Else + g.Start(0,0) + End If + + L_CANT.Text ="" + L_TOTAL.Text="" + skmt.ExecNonQuery("update pedido set pe_folio = 0 where pe_folio is null") + + c=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=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 = 15 + label1.TextColor = Colors.Black + Dim label2 As Label + label2 = ListView1.TwoLinesLayout.SecondLabel + label2.TextSize = 10 + label2.TextColor = Colors.Blue + 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=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") + c.Close + c=skmt.ExecQuery("select SUM(IFNULL(PE_DESC,0)) AS DESCUENTO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") + c.Position=0 + DESC = c.GetString("DESCUENTO") + 'If L_TOTAL.Text > 1000 And DESC = 0 Then + + 'b_desc.Visible = True + 'b_desc.Text = "- 5% DESC" + 'DESCUENTO = "MENOS" + 'Else if L_TOTAL.Text > 1000 Then + 'b_desc.Visible = True + 'b_desc.Text = "Cancela Desc" + 'DESCUENTO = "MAS" + 'Else + b_desc.Visible = False + + 'End If + End If + 'la_no_ird.Text = c.GetString("PR_CF_SALDO_ACORT") + + +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 + 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 + StartActivity(seleccion) + 'Return True + End If + ' Returning False signals the system to handle the key + Return False +End Sub + +Sub borra_Click + If folio <> "" Then + result = Msgbox2("Seguro que desa borrar el pedido?","Cancelar pedido", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) + If result = DialogResponse.POSITIVE Then + + c=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 + 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 + 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 + + + skmt.ExecNonQuery("delete from pedido_cliente where pc_cliente in (Select CUENTA from cuentaa)") + skmt.ExecNonQuery("delete from pedido where pe_cliente in (Select CUENTA from cuentaa)") + 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") + End If +End Sub + +Sub ListView1_ItemLongClick (Position As Int, Value As Object) + result = Msgbox2("Seguro que desa borrar este articulo?","Borrar Articulo", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) + If result = DialogResponse.POSITIVE Then + +' If TIPO = "VENTA" Then +' c=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=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=skmt.ExecQuery2("SELECT COUNT(*) as CUANTOS FROM PEDIDO WHERE pe_cedis in (select pe_cedis from pedido where pe_pronombre = ?) and pe_cliente in (Select CUENTA from cuentaa) and length(pe_cedis) > 3 ", Array As String(Value)) + c.Position=0 + If c.GetString("CUANTOS") > 0 Then + + d=skmt.ExecQuery2("select PE_PROID,PE_CANT, PE_TIPO FROM PEDIDO where pe_cedis in (select pe_cedis from pedido where pe_pronombre = ?) and pe_cliente in (Select CUENTA from cuentaa) and length(pe_cedis) > 3", Array As String(Value)) + + If d.RowCount>0 Then + For i=0 To d.RowCount -1 + d.Position=i + TIPO = d.GetString("PE_TIPO") + If d.GetString("PE_TIPO") = "VENTA" Then + skmt.ExecNonQuery2("update cat_gunaprod2 set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?", Array As Object(d.GetString("PE_CANT"),d.GetString("PE_PROID"))) + Else + skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?", Array As Object(d.GetString("PE_CANT"),d.GetString("PE_PROID"))) + End If + Next + End If + d.Close + + + skmt.ExecNonQuery2("delete from pedido where pe_cedis in (select pe_cedis from pedido where pe_pronombre = ?) and pe_cliente in (Select CUENTA from cuentaa)", Array As Object(Value)) + Else + d=skmt.ExecQuery2("select PE_PROID,PE_CANT, PE_TIPO FROM PEDIDO where pe_pronombre = ? and pe_cliente in (Select CUENTA from cuentaa) ", Array As String(Value)) + d.Position = 0 + + TIPO = d.GetString("PE_TIPO") + If d.GetString("PE_TIPO") = "VENTA" Then + skmt.ExecNonQuery2("update cat_gunaprod2 set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?", Array As Object(d.GetString("PE_CANT"),d.GetString("PE_PROID"))) + Else + skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?", Array As Object(d.GetString("PE_CANT"),d.GetString("PE_PROID"))) + End If + d.Close + + + skmt.ExecNonQuery2("delete from pedido where pe_pronombre = ? and pe_cliente in (Select CUENTA from cuentaa)", Array As Object(Value)) + End If + + + + + DateTime.DateFormat = "MM/dd/yyyy" + sDate=DateTime.Date(DateTime.Now) + sTime=DateTime.Time(DateTime.Now) + c=skmt.ExecQuery("Select CUENTA from cuentaa") + c.Position=0 + clie_id = c.GetString("CUENTA") + c=skmt.ExecQuery("select USUARIO from usuarioa") + c.Position=0 + usuario = c.GetString("USUARIO") + + c=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 + skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") + 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"), Main.lon_gps, Main.lat_gps)) + skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + Else + skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") + skmt.ExecNonQuery("UPDATE kmt_info set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + End If + B4XPage_Appear + 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=skmt.ExecQuery("Select CUENTA from cuentaa") + c.Position=0 + clie_id = c.GetString("CUENTA") + c.Close + c=skmt.ExecQuery("select USUARIO from usuarioa") + c.Position=0 + usuario = c.GetString("USUARIO") + c.Close + result = Msgbox2("Seguro que desa dar descuento del 5%?","Dar descuento", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) + If result = DialogResponse.POSITIVE Then + skmt.ExecNonQuery("UPDATE pedido SET PE_COSTO_TOT = PE_COSTO_TOT * .95, PE_DESC = 5 WHERE PE_CLIENTE In (select cuenta from cuentaa)") + c=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 + skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") + 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"), Main.lon_gps, Main.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=skmt.ExecQuery("Select CUENTA from cuentaa") + c.Position=0 + clie_id = c.GetString("CUENTA") + c.Close + c=skmt.ExecQuery("select USUARIO from usuarioa") + c.Position=0 + usuario = c.GetString("USUARIO") + c.Close + result = Msgbox2("Seguro que desa CANCELAR el descuento?","Cancelar descuento", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) + If result = DialogResponse.POSITIVE Then + skmt.ExecNonQuery("UPDATE pedido SET PE_COSTO_TOT = PE_COSTO_TOT / .95, PE_DESC = 0 WHERE PE_CLIENTE In (select cuenta from cuentaa)") + c=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 + skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") + 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"),Main.lon_gps, Main.lat_gps)) + c.Close + B4XPage_Appear + 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..0172bfa --- /dev/null +++ b/B4A/C_NuevoCliente.bas @@ -0,0 +1,6 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=11.5 +@EndOfDesignText@ diff --git a/B4A/C_Principal.bas b/B4A/C_Principal.bas new file mode 100644 index 0000000..3d4be6a --- /dev/null +++ b/B4A/C_Principal.bas @@ -0,0 +1,2802 @@ +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 + 'These global variables will be declared once when the application starts. + 'These variables can be accessed from all modules. + Dim reqManager As DBRequestManager + Dim conectado As String + Dim skmt As SQL + Dim t1 As Timer + Dim Timer_GIF1 As Timer + Dim Frame1 As Int + Dim Awake As PhoneWakeState + Dim sb As StringBuilder + Dim PHONE As Phone + Timer_GIF1.Initialize("Timer1",0) +' Dim g As GPS + Dim trabajar As Button + Dim T3 As Timer + Dim c As Cursor + Dim d As Cursor + Dim d3 As Cursor + Dim b As Cursor + Dim e As Cursor + Dim f As Cursor + Dim D2 As Cursor + Dim E1 As Cursor + Dim lv As ListView + Dim cargar As Button + Dim pendiente As Button + Dim foto1() As Byte + Dim usuario As String + Dim connecta As Button + Dim conn As String + Dim Subir As Button + Dim cmd As DBCommand + Dim TOPE As Int + Dim COUNT_CLIE As Int + Dim fecha As String + Dim drop As Double + Dim efectiva As Double + Dim HORAINGRESO As String + 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 SERVER As String +' Dim lat_gps, lon_gps 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 String + 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 + Private l_monto_ks As Label + Private l_monto_kp As Label + Private l_monto_k As Label + Private Cuantos As String + Private TIEMPO As String + Private i_gif As ImageView + Dim gif1 As GifDecoder + Dim ruta As String + + Private L_VENTA As Label + Private L_PREVENTA As Label + Private L_ABORDO As Label + + Dim cuantos_ped As String + Dim conteo As String + Private PASO_info As String + + Private bpv1 As BatteryProgressView + Dim batterystatus(11) As Int + Private bu As BatteryUtilities + + + Private ImageView12 As ImageView + + Private TitleHeight As Int = 50dip + Private Title2Height As Int = 100dip + + Private DividerHeight As Int = 5dip + Private CLV1 As CustomListView + Private pnlTitle As B4XView + Private xui As XUI + Type TitleData (Title As String) + + Private B_MARCAS As Button + Private Panel5 As Panel + Private lblTitle As Label + Private B_OK_PANEL5 As Button + Private Btn_UbicarR As Button + Private SUBIR_P As Button + Private b_e_resumen As Button + Private cuantos_exib As String + Dim ime As IME + Private l_monto_kc As Label +End Sub + +Private Sub B4XPage_Created (Root1 As B4XView) + EJECUTANDO=1 + SERVER = Starter.DBReqServer + reqManager.Initialize(Me, SERVER) + Log(SERVER) + Root = Root1 + Root.LoadLayout("seleccion") + img2.Visible =False + + ' valido donde escribo el archivo de la base de datos de kmt + ruta = File.DirInternal + Log(SERVER) + ' se crea o no el archivo de la base de ddatos de kmt + 'NOTAS SI SE MODIFICA LA ESTRUCTURA SE QUITA EL IF Y SE VA DIRECTO A LA SENTENCIA FILE.COPY PARA QUE + 'TOME LA NUEVA ESTRUCTURA ES MUY IMPORTANTE TENER EL IF DE LO CONTRARIO SOLO LO ESCRIBE UNA VEZ Y LO BORRA + 'SI SE REGRESA A ESTE ACTIVIDAD. + If File.Exists(ruta, "kmt.db") = False Then + File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db") + End If + DateTime.DateFormat = "MM/dd/yyyy" + fecha=DateTime.Date(DateTime.Now) + skmt.Initialize(ruta,"kmt.db", True) + c=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 + SERVER = c.GetString("CAT_CO_CONFIGURACION") + c.Close + + b=skmt.ExecQuery("Select count(*) as CUANTOS from pedido_cliente") + b.Position=0 + Cuantos = b.GetString("CUANTOS") + d=skmt.ExecQuery("select count(*) as TOTAL_VISITAR from kmt_info where gestion = 0") + D.Position=0 + b.Close + e=skmt.ExecQuery("select count(*) as POR_VISITAR from kmt_info") + e.Position=0 + f=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=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") + Else + c=skmt.ExecQuery("select sum(pc_monto) as MONTO_DIA, count(pc_cliente) AS CLIENTES_DIA from pedido_cliente ") + b=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 + + c = skmt.ExecQuery2("select count(CAT_VA_DESCRIPCION) as HoraIngreso from cat_variables where CAT_VA_DESCRIPCION = ? ", Array As String("HoraIngreso")) + c.Position = 0 + DateTime.TimeFormat = "HHmmss" + + 'Valida si ya se cuenta con hora actualiza el valor si no lo inserta----------- + If c.GetString("HoraIngreso") > 0 Then + skmt.ExecNonQuery2("Update cat_variables set CAT_VA_VALOR = ? WHERE CAT_VA_DESCRIPCION = ?" , Array As String(DateTime.Time(DateTime.Now),"HoraIngreso")) + Else + skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_VALOR,CAT_VA_DESCRIPCION) VALUES (?,?)" , Array As String(DateTime.Time(DateTime.Now),"HoraIngreso")) + End If + DateTime.TimeFormat = "HH:mm:ss" + +End Sub + +Sub IsConnectedToInternet As Boolean + Dim r As Reflector + r.Target = r.GetContext + r.Target = r.RunMethod2("getSystemService", "connectivity", "java.lang.String") + r.Target = r.RunMethod("getActiveNetworkInfo") + If r.Target <> Null Then + Return r.RunMethod("isConnectedOrConnecting") + End If + Return False +End Sub + +Sub B4XPage_Appear + SERVER = Starter.DBReqServer + HORAINGRESO ="000000" + NUEVO.Visible = True + c=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 + skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("SERVER",SERVER)) + Else + c=skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SERVER")) + c.Position =0 + SERVER = c.GetString("CAT_VA_VALOR") + End If + + reqManager.Initialize(Me, SERVER) + Log(SERVER) + + If PASO = 2 Then + Dim result As Int + result = Msgbox2("El proceso de enviar información no a terminado, Continuar", "", "Si", "", "No", LoadBitmap(File.DirAssets, "alert2.png")) + If result = DialogResponse.POSITIVE Then + VALIDA_INFO + Else + PASO = 0 + End If + Else + PASO =0 + End If + + f=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=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=skmt.ExecQuery("select noversion from version") +' c.Position=0 +' If c.GetString("NOVERSION") <> "2.1" Then +' ToastMessageShow("EXISTE UNA NUEVA VERSION ACTUALIZA POR FAVOR." , True) +' cargar.Visible = False +' Subir.Visible = False +' connecta.Visible = False +' trabajar.Visible = False +' BUSCA.Visible = False +' inv.Visible = False +' + ' End If + ' c.Close + c=skmt.ExecQuery2("select count(*) as CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("FECHA")) + c.Position =0 + If c.GetString("CUANTOS") = 0 Then + cmd.Initialize + cmd.Name = "select_fechat" + reqManager.ExecuteQuery(cmd , 0, "fecha") + + Msgbox("AJUSTAR FECHA","AVISO") + B4XPage_Appear + Else + + + c=skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("FECHA")) + c.Position =0 + Dim sDate,sTime As String + DateTime.DateFormat = "yyyyMMddHHmm" + sDate=DateTime.Date(DateTime.Now) +' Msgbox("AaaaA " & " "& c.GetString("CAT_VA_VALOR") & " " & sDate & sTime ,"AVISO") + + If c.GetString("CAT_VA_VALOR") > sDate & sTime Then + Msgbox("AJUSTAR LA FECHA YA QUE ES MENOR AL SISTEMA" ,"AVISO") + DateTime.TimeFormat = "HH:mm:ss" + B4XPage_Appear + End If + DateTime.TimeFormat = "MM/dd/yyyyHH:mm:ss" + + End If + + + L_CUANTOST.Text = l_cuantosc.Text + l_cuantosn.Text + 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) + c=skmt.ExecQuery("select usuario from usuarioa") + c.Position = 0 + usuario = c.GetString("USUARIO") + c.Close + + c=skmt.ExecQuery("select ID_ALMACEN from CAT_ALMACEN") + C.Position =0 + ALMACEN = C.GetString("ID_ALMACEN") + C.Close + 'ALMACEN = 1 + + b=skmt.ExecQuery("Select count(*) as CUANTOS from pedido_cliente where pc_cliente <> 0") + b.Position=0 + Cuantos = b.GetString("CUANTOS") + + 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=skmt.ExecQuery("select sum(pc_monto) as MONTO_DIA, count(pc_cliente) AS CLIENTES_DIA from pedido_cliente where pc_cliente <> 0") + b=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") + + L_CUANTOST.Text = l_cuantosc.Text + l_cuantosn.Text + + End If + +' bu.Initialize +' batterystatus = bu.BatteryInformation +' +' sb.Initialize +' PHONE.Shell("ping -c1 -W1 google.com",Null, sb,Null) + ' +' c = skmt.ExecQuery2("select count(CAT_VA_DESCRIPCION) as HoraIngreso from cat_variables where CAT_VA_DESCRIPCION = ? ", Array As String("HoraIngreso")) +' c.Position = 0 +' +' 'Valida si ya se cuenta con hora para enviar cada 5 min----------- +' If c.GetString("HoraIngreso") > 0 Then +' D2 = skmt.ExecQuery2("select CAT_VA_VALOR as HoraIngreso from cat_variables where CAT_VA_DESCRIPCION = ? ", Array As String("HoraIngreso")) +' D2.Position = 0 +' HORAINGRESO = D2.GetString("HoraIngreso") +' D2.Close +' End If +' DateTime.TimeFormat = "HHmmss" + ' +' If HORAINGRESO + 500 < DateTime.Time(DateTime.Now) Then + ' +' +' If sb.Length > 2 And sb.ToString.SubString2(110,114) <> "smit" Then +' c=skmt.ExecQuery("select HGDATE, HGLAT, HGLON from HIST_GPS") +' +' If c.RowCount>0 Then +' For i=0 To c.RowCount -1 +' c.Position=i +' ' s=skmt.ExecQuery2("SELECT HIST_VI_IMAGEN FROM HIST_VISITAS WHERE HIST_VI_CREDITO =?", Array As String (c.GetString("HIST_VI_CREDITO"))) +' ' s.Position =0 +' 'LO DOCUMENTO PARA NO HACER TAN PESADO LA TRAN DE DATOS QUE SOLO MANDE UNO + '' Dim cmd As DBCommand + '' cmd.Initialize + '' cmd.Name = "insert_gps_actual_GUNA" + '' cmd.Parameters = Array As Object(c.GetString("hglat"),c.GetString("hglon"),usuario,ALMACEN,l_ruta.Text ) + '' 'cmd.Parameters = Array As Object(C.GetString("HGDATE"),C.GetString("HGLAT"),C.GetString("HGLON") ) +' +' 'reqManager.ExecuteQuery(cmd , 0, "inst_visitas") +' +' cmd.Initialize +' cmd.Name = "select_fechat" +' reqManager.ExecuteQuery(cmd , 0, "fechat") +' +' +' Dim cmd As DBCommand +' cmd.Initialize +' cmd.Name = "UPDATE_DURK_ACTUAL2_GPS" +' cmd.Parameters = Array As Object(L_MONTOD.Text, L_CUANTOST.Text, l_cuantosc.Text,l_porvisitar.TEXT,c.GetString("hglat"),c.GetString("hglon"),batterystatus(0),0, 0, 0,ALMACEN,l_ruta.Text ) +' reqManager.ExecuteCommand(cmd,"inst_visitas") +' skmt.ExecNonQuery2("Update cat_variables set CAT_VA_VALOR = ? WHERE CAT_VA_DESCRIPCION = ?" , Array As String(DateTime.Time(DateTime.Now),"HoraIngreso")) + ' +' +' +' ' Dim cmd As DBCommand +' ' cmd.Initialize +' ' cmd.Name = "update_gps_actual_TKM" +' ' cmd.Parameters = Array As Object(C.GetString("HGLAT"),C.GetString("HGLON"),usuario ) +' ' reqManager.ExecuteQuery(cmd , 0, "inst_visitas") +' 'lv.AddTwoLines(c.GetString("HIST_VI_CREDITO"),c.GetString("HIST_VI_RESULTADO")) +' Next +' End If +' c.Close +' End If +' End If + + Main.montoActual = L_MONTOD.Text + Main.clientestotal = L_CUANTOST.Text + Main.clientesventa = l_cuantosc.Text + Main.clientesvisitados = l_porvisitar.TEXT + Main.ALMACEN = ALMACEN + Main.rutapreventa = l_ruta.text + + DateTime.TimeFormat = "HH:mm:ss" + + c=skmt.ExecQuery("select NOVERSION FROM VERSION") + c.Position = 0 + + If c.GetString("NOVERSION") <> "2.6" Then + Msgbox("VERSION INCORRECTA SOLICITAR O DESCARGAR LA NUEVA","ALERTA") + B4XPage_Appear + End If + CallSub(Starter,"ENVIA_ULTIMA_GPS") +End Sub + +'Sub Activity_Pause (UserClosed As Boolean) +' cargar.Visible = False +' Subir.Visible = False +' SUBIR_P.Visible = False +' +' connecta.Visible = True +' inv.Visible = False +' If PASO = 1 Then +' PASO = 2 +' End If +'End Sub + +Sub trabajar_Click + 'CallSubDelayed(gestion,"gestion") + c=skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("MARCAS")) + c.Position =0 + MARCASQ = c.GetString("CAT_VA_VALOR") + c.Close + skmt.ExecNonQuery("delete from CAT_GUNAPROD WHERE CAT_GP_CLASIF NOT IN (" & MARCASQ &")" ) + 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))") + StartActivity(colonia) + +End Sub + + + +Sub Subir_Click + Awake.KeepAlive(True) + CARGA = "SUBIR" + P1.Visible = True + trabajar.Visible = False + B_PROXIMA.Visible =False + Btn_UbicarR.Visible=False + + NUEVO.Visible =False + BUSCA.Visible=False + connecta.Visible=False + Subir.Visible=False + SUBIR_P.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 + PORCENTAJE = 0 + + 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 + PB2.Visible = True + conteo = 0 + 'i_gif.Visible = True +' load_gif + + PASO = 1 + 'End If + If PASO =1 Then + E1=skmt.ExecQuery2("Select count(*) As CUANTOS from pedido where PE_TIPO = ?", Array As String("ABORDO")) + E1.Position = 0 + If E1.GetString("CUANTOS") > 0 Then + + c=skmt.ExecQuery2("Select sum(PE_COSTO_TOT) As MONTO_DIA from pedido where PE_TIPO = ?", Array As String("ABORDO")) + c.Position = 0 + L_ABORDO.Text = c.GetString("MONTO_DIA") + c.Close + Else + L_ABORDO.Text = 0 + End If + E1.Close + + + + c=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=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=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=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 + Else + NUMERO_PEDIDO = 0 + End If + skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE not In (select PE_CLIENTE from pedido)") + + c=skmt.ExecQuery("select usuario from usuarioa") + c.Position = 0 + usuario = c.GetString("USUARIO") + c.Close + d3=skmt.ExecQuery("SELECT SUM(PE_COSTO_TOT) as MONTO FROM PEDIDO") + d3.Position = 0 + Dim cmd As DBCommand + cmd.Initialize + cmd.Name ="UPDATE_INFO_E_DURK" + cmd.Parameters = Array As Object(d3.GetDouble("MONTO")- L_ABORDO.text, L_ABORDO.Text, d3.GetDouble("MONTO"),l_ruta.TEXT, ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "inst_noventa") + Dim cmd As DBCommand + cmd.Initialize + cmd.Name ="insert_drop2_DUR" + 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, L_MONTOD.Text,"ENVIO", ALMACEN, L_VENTA.Text, L_PREVENTA.Text, L_ABORDO.Text, l_cambios.TEXT) + reqManager.ExecuteQuery(cmd , 0, "inst_noventa") + d3.Close + ' PEDIO_CLIENTE + c=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=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_DUR" + 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.ExecuteQuery(cmd , 0,"ins_pedidos") + + Next + c.Close + End If + d.Position=0 + cuantos_pedidosc = D.GetString("CUANTOS_PEDIDOSC") + d.Close + + c=skmt.ExecQuery("SELECT CAT_CL_NUM_SERIEFISICO,CAT_CL_CODIGO ,CAT_CL_LONG,CAT_CL_LAT FROM kmt_info") + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + c.Position=i + + Dim cmd As DBCommand + cmd.Initialize + cmd.Name = "insert_QR_DUR" + cmd.Parameters = Array As Object(C.GetString("CAT_CL_NUM_SERIEFISICO"),C.GetString("CAT_CL_CODIGO"),C.GetString("CAT_CL_LONG"),C.GetString("CAT_CL_LAT"),ALMACEN,l_ruta.text ) + reqManager.ExecuteQuery(cmd , 0,"ins_QR") + + Next + c.Close + End If + + c=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_DUR" + cmd.Parameters = Array As Object(C.GetString("HE_CLIE"),C.GetString("HE_RES"),C.GetString("HE_FECHA"), c.GetString("HE_TIPO"),l_ruta.Text ) + reqManager.ExecuteQuery(cmd , 0, "inst_noventa") + + + Next + + End If + c.Close + ' PEDIO + + skmt.ExecNonQuery("update PEDIDO set PE_FOLIO = rowid ") + + ' +' c=skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("FOLIO")) +' c.Position =0 + ' armafolio = l_ruta.text * 1000000 +' armafolio = armafolio + c.GetString("CAT_VA_VALOR") +' c.Close +' c=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_TIPO FROM PEDIDO WHERE PE_FOLIO IS NULL") +' +' +' If c.RowCount>0 Then +' For i=0 To c.RowCount -1 +' c.Position=i +' skmt.ExecNonQuery2("update PEDIDO set PE_FOLIO = ? where PE_PROID = ? AND PE_CLIENTE =? AND PE_FECHA =? AND PE_FOLIO IS NULL ", Array As Object(armafolio, c.GetString("PE_PROID"), c.GetString("PE_CLIENTE"),c.GetString("PE_FECHA"))) + ' +' armafolio = armafolio + 1 +' +' Next +' c.Close +' End If + ' armafolio = armafolio - (l_ruta.Text * 1000000) + ' skmt.ExecNonQuery2("update CAT_VARIABLES set CAT_VA_VALOR = ? where CAT_VA_DESCRIPCION = ? ", Array As Object(armafolio,"FOLIO")) +' +' Dim cmd As DBCommand +' cmd.Initialize +' cmd.Name = "update_folio" +' cmd.Parameters = Array As Object(armafolio,l_ruta.Text , "1") +' reqManager.ExecuteQuery(cmd , 0, "folio") + + + If PERFIL = "V-ESPECIAL" Then + + + c=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=skmt.ExecQuery("SELECT COUNT(*) as CUANTOS_PEDIDO FROM PEDIDO") + d.Position=0 + 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_DUR" + 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.ExecuteQuery(cmd , 0, "ins_pedido") + Next + c.Close + End If + Else + c=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=skmt.ExecQuery("SELECT COUNT(*) as CUANTOS_PEDIDO FROM PEDIDO") + d.Position=0 + TIEMPO = 0 + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + c.Position=i + TIEMPO = TIEMPO + 1 + + If TIEMPO > 20 Then + 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 + conteo = conteo + 1 + cuantos_ped = D.GetString("CUANTOS_PEDIDO") + PORCENTAJE = 2 'Round(100/ (D.GetString("CUANTOS_PEDIDO") + 1)) + Dim cmd As DBCommand + cmd.Initialize + cmd.Name = "insert_pedido_DUR" + 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.ExecuteQuery(cmd , 0, "ins_pedido") + + Next + c.Close + End If + + End If + + cuantos_pedido = D.GetString("CUANTOS_PEDIDO") + d.Close + + ' NOVENTA + c=skmt.ExecQuery("SELECT NV_CLIENTE,NV_FECHA,NV_USER,NV_MOTIVO,NV_COMM,NV_LAT,NV_LON FROM NOVENTA") + D=skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS_NOVENTA FROM NOVENTA") + + 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_DUR" + 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.ExecuteQuery(cmd , 0, "inst_noventa") + + Next + c.Close + End If + d.Position=0 + cuantos_noventa = D.GetString("CUANTOS_NOVENTA") + d.Close + + ' NOVENTA HIST_EXIBIDORES(CAT_CL_CLIENTE,CAT_CL_EXHIBIDOR,CAT_CL_BEXHIBIDOR) + c=skmt.ExecQuery("SELECT CAT_CL_CLIENTE,CAT_CL_EXHIBIDOR,CAT_CL_BEXHIBIDOR from HIST_EXIBIDORES") + D=skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS_NOVENTA FROM HIST_EXIBIDORES") + + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + c.Position=i + + Dim cmd As DBCommand + cmd.Initialize + cmd.Name = "insert_HIST_EXIBIDORES_DUR" + cmd.Parameters = Array As Object(C.GetString("CAT_CL_CLIENTE"),C.GetString("CAT_CL_EXHIBIDOR"),C.GetString("CAT_CL_BEXHIBIDOR"),l_ruta.TEXT) + reqManager.ExecuteQuery(cmd , 0, "inst_noventa") + + Next + c.Close + End If + d.Position=0 + cuantos_exib = D.GetString("CUANTOS_NOVENTA") + d.Close + + ' VERIFICACION +' c=skmt.ExecQuery("SELECT HVE_CLIENTE, HVE_IDPROD, HVE_EXISTENCIA FROM HIST_VERIFICACION") + +' If c.RowCount>0 Then +' For i=0 To c.RowCount -1 +' c.Position=i +' +' Dim cmd As DBCommand +' cmd.Initialize +' cmd.Name = "insert_verificacion_DUR" +' cmd.Parameters = Array As Object(C.GetString("HVE_CLIENTE"),C.GetString("HVE_IDPROD"),C.GetString("HVE_EXISTENCIA")) +' reqManager.ExecuteQuery(cmd , 0, "inst_noventa") + ' +' Next + ' c.Close + ' End If + ' + +' c=skmt.ExecQuery("select HGDATE, HGLAT, HGLON from HIST_GPS") +' +' +' '' HACER ESTO PARA EL FORANEO +' If c.RowCount>0 Then +' For i=0 To c.RowCount -1 +' c.Position=i +' 's=skmt.ExecQuery2("SELECT HIST_VI_IMAGEN FROM HIST_VISITAS WHERE HIST_VI_CREDITO =?", Array As String (c.GetString("HIST_VI_CREDITO"))) +' 's.Position =0 +' +' Dim cmd As DBCommand +' cmd.Initialize +' cmd.Name = "insert_gps_actual_DUR" +' cmd.Parameters = Array As Object(c.GetString("hgdate"),c.GetString("hglat"),c.GetString("hglon"),usuario ) +' 'cmd.Parameters = Array As Object(C.GetString("HGDATE"),C.GetString("HGLAT"),C.GetString("HGLON") ) +' +' reqManager.ExecuteQuery(cmd , 0, "") +' +' + ' +' ' Dim cmd As DBCommand +' ' cmd.Initialize +' ' cmd.Name = "update_gps_actual_TKM" +' ' cmd.Parameters = Array As Object(C.GetString("HGLAT"),C.GetString("HGLON"),usuario ) +' ' reqManager.ExecuteQuery(cmd , 0, "inst_visitas") +' 'lv.AddTwoLines(c.GetString("HIST_VI_CREDITO"),c.GetString("HIST_VI_RESULTADO")) +' Next +' End If +' c.Close + ' DROP + + t1.Initialize("T1", 20000) ' 1000 = 1 second + t1.Enabled = True + + img2.Visible =True + ' ToastMessageShow("Se Actualizaran los datos, Este proceso podria tardar hasta un minuto, gracias "& l_ruta.text , True) + If S_CP.Text = "SUBIENDO" Then + S_CP.Text = "VALIDANDO" + End If + End If +End Sub + +Sub cargar_Click + Log(SERVER) + CARGA = "CARGAR" + img2.Visible =True + L_P_1.Visible = True + S_CC.Visible = True + + P1.Visible = True + trabajar.Visible = False + B_PROXIMA.Visible =False + Btn_UbicarR.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 + + 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 + + 'c=skmt.ExecQuery("CREATE TABLE kmt_info (pr_cd_credito NUMERIC,pr_cd_nombre TEXT,pr_cd_calle TEXT,pr_cd_numero TEXT,pr_cd_num_int TEXT,pr_cd_entrecalle1 TEXT,pr_cd_entrecalle2 TEXT,pr_cd_colonia TEXT,pr_cd_poblacion TEXT,pr_cd_edo TEXT,pr_cd_cp TEXT,pr_cd_zona TEXT,pr_cf_credito NUMERIC,pr_cf_saldotot NUMERIC,pr_cf_saldooper NUMERIC,pr_cf_saldof1 NUMERIC, pr_cf_penalizacion NUMERIC)") + TOPE = 0 + ' NUEVOS CLIENTE + + skmt.ExecNonQuery2("delete from kmt_info where substr(CAT_CL_CODIGO,1,1) <> ?", Array As Object ("N")) + skmt.ExecNonQuery("delete from cod_result") + skmt.ExecNonQuery("delete from hist_gest") + skmt.ExecNonQuery("delete from cat_gunaprod") + skmt.ExecNonQuery("delete from cat_gunaprod2") + + skmt.ExecNonQuery("delete from CAT_DETALLES_PAQ") + skmt.ExecNonQuery("delete from telefonos") + skmt.ExecNonQuery("delete from HIST_VENTAS") + skmt.ExecNonQuery("delete from HIST_PROMOS") + skmt.ExecNonQuery("delete from HIST_CLIENTE_CANT_PROMOS") + skmt.ExecNonQuery("delete from PROMOS_COMP") + skmt.ExecNonQuery("delete from CAT_VERIFICACION") + skmt.ExecNonQuery("delete from LISTA_PRECIOS") + skmt.ExecNonQuery("delete from CAT_PRECIOS") + skmt.ExecNonQuery("delete from HIST_RMI") + skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("NUMERO_PEDIDO")) + skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("NUMERO_PEDIDO",0)) + skmt.ExecNonQuery("delete from HIST_EXIBIDORES") + skmt.ExecNonQuery("delete from CAT_EXHIBIDORES") + skmt.ExecNonQuery("delete from CAT_ENCUESTA_PREGUNTA") + + c=skmt.ExecQuery("select usuario from usuarioa") + c.Position = 0 + usuario = c.GetString("USUARIO") + + Dim cmd As DBCommand + cmd.Initialize + cmd.Name ="insert_drop2_DUR" + 'cmd.Name = "UPDATE_DUR_ACTUALR2_GPS" + 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,"CARGO", ALMACEN, L_VENTA.Text, L_PREVENTA.Text, L_ABORDO.Text, l_cambios.TEXT) + reqManager.ExecuteQuery(cmd , 0, "inst_noventa") + 'sql.UPDATE_DUR_ACTUALR2_GPS=UPDATE DURAKELO.CAT_RUTAS_REPARTO SET CAT_RR_MONTO_ACT = (?),CAT_RR_MRECH_ACT =(?),CAT_RR_VISIT_ACT =(?), CAT_RR_DEV_ACT =(?), CAT_RR_LAT_ACT =(?), CAT_RR_LONG_ACT =(?), CAT_RR_BAT_ACT =(?), CAT_RR_TT = (?), CAT_RR_MONTO = (?), CAT_RR_FECHA_ACT = SYSDATE WHERE CAT_RR_IDALMACEN = (?) And CAT_RR_RUTA = (?) + + 'cmd.Initialize + 'cmd.Name = "Select_count_clie" + 'reqManager.ExecuteQuery(cmd,0,"count_cli") + + cmd.Initialize + cmd.Name = "select_codigo_exhibidor" + 'cmd.Parameters = Array As Object(ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "catalogo_exhibidor") + + cmd.Initialize + cmd.Name = "select_cat_gunaprod_DUR" + cmd.Parameters = Array As Object(ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "gunaprod") + + cmd.Initialize + cmd.Name = "select_cat_gunaprod2_DUR" + cmd.Parameters = Array As Object(ALMACEN, e_ruta.Text) + reqManager.ExecuteQuery(cmd , 0, "gunaprod2") + + cmd.Initialize + cmd.Name = "select_cat_paquetes_abordo_DUR" + cmd.Parameters = Array As Object(ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "gunaprodpa") + + cmd.Initialize + cmd.Name = "select_cat_paquetes_DUR" + cmd.Parameters = Array As Object(ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "gunaprodp") + + cmd.Initialize + cmd.Name = "select_cat_paquetess_DUR" + cmd.Parameters = Array As Object(ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "gunaprodps") + + cmd.Initialize + cmd.Name = "select_cat_detallepa_DUR" + cmd.Parameters = Array As Object(ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "detallepaq") + + cmd.Initialize + cmd.Name = "select_cat_clientes_guna_DUR" + cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "kmt_datos") + + cmd.Initialize + cmd.Name = "select_hist_datos_DUR" + 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_promos_DUR" + cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "hist_promos") + + cmd.Initialize + cmd.Name = "select_hist_cliente_promos_DUR" + cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "hist_cliente_promos") + + cmd.Initialize + cmd.Name = "select_promo_comp_DUR" + cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "hist_comp_promos") + + ''' validar para que sirve esto ya que no esta en la base de datos. + + cmd.Initialize + cmd.Name = "select_verificacion_DUR" + cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "cat_verificacion") + + 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_DUR" + 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_DUR" + cmd.Parameters = Array As Object(usuario) + reqManager.ExecuteQuery(cmd , 0, "perfil") + + cmd.Initialize + cmd.Name = "select_marcas_DUR" + cmd.Parameters = Array As Object(usuario) + reqManager.ExecuteQuery(cmd , 0, "marcas") + + cmd.Initialize + cmd.Name = "select_precios_DUR" + cmd.Parameters = Array As Object(ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "precios") + + cmd.Initialize + cmd.Name = "select_hist_rmi1_DUR" + cmd.Parameters = Array As Object(e_ruta.text, ALMACEN,e_ruta.text, ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "hist_rmi") + + cmd.Initialize + cmd.Name = "select_hist_rmi2_DUR" + cmd.Parameters = Array As Object(e_ruta.text, ALMACEN,e_ruta.text, ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "hist_rmi") + + cmd.Initialize + cmd.Name = "select_hist_rmi3_DUR" + cmd.Parameters = Array As Object(e_ruta.text, ALMACEN,e_ruta.text, ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "hist_rmi") + + cmd.Initialize + cmd.Name = "select_hist_rmi4_DUR" + cmd.Parameters = Array As Object(e_ruta.text, ALMACEN,e_ruta.text, ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "hist_rmi") + + cmd.Initialize + cmd.Name = "select_CAMBIOS_DUR" + 'cmd.Parameters = Array As Object( ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "cat_cambios") + + cmd.Initialize + cmd.Name = "select_SUCURSAL_DUR" + cmd.Parameters = Array As Object( ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "sucursal") + + cmd.Initialize + cmd.Name = "select_cat_encuesta_p_DUR" + cmd.Parameters = Array As Object( ALMACEN,e_ruta.text ) + reqManager.ExecuteQuery(cmd , 0, "carga_encuesta") + + ' c=skmt.ExecQuery("select HIST_VI_CREDITO, HIST_VI_PRODUCTO,HIST_VI_VISITADOR, HIST_VI_RESULTADO, HIST_VI_CODIGO, HIST_VI_PARENTESCO, HIST_VI_COMENTARIO, HIST_VI_DTEVISITA, HIST_VI_LONGITUD, HIST_VI_LATITUD, hist_vi_imagen, hist_vi_dprom, hist_vi_mprom from HIST_VISITAS") + ' If c.RowCount>0 Then + ' For i=0 To c.RowCount -1 + ' c.Position=i + ' foto1 = c.GetBlob("HIST_VI_IMAGEN") + ' + ' Dim cmd As DBCommand + ' cmd.Initialize + ' cmd.Name = "insert_gestion_plan" + ' cmd.Parameters = Array As Object(C.GetString("HIST_VI_CREDITO"),C.GetString("HIST_VI_PRODUCTO"),C.GetString("HIST_VI_VISITADOR"),C.GetString("HIST_VI_DTEVISITA"),C.GetString("HIST_VI_RESULTADO"),C.GetString("HIST_VI_CODIGO"),C.GetString("HIST_VI_COMENTARIO"),C.GetString("HIST_VI_PARENTESCO"),C.GetString("HIST_VI_LONGITUD"), C.GetString("HIST_VI_LATITUD"), foto1, c.GetString("HIST_VI_DPROM"),C.GetString("HIST_VI_MPROM")) + ' reqManager.ExecuteQuery(cmd , 0, "inst_visitas") + + 'lv.AddTwoLines(c.GetString("HIST_VI_CREDITO"),c.GetString("HIST_VI_RESULTADO")) + ' Next + ' End If + 'skmt.ExecNonQuery("DELETE FROM HIST_VISITAS") + + cargar.Visible = False + Subir.Visible = False + SUBIR_P.Visible = False + +' connecta.Visible = True + inv.Visible = False + + 'Dim cmd As DBCommand + 'cmd.Initialize + 'cmd.Name = "select_telefonos_riva" + 'cmd.Parameters = Array As Object(usuario) + 'reqManager.ExecuteQuery(cmd , 0, "telefonos") + + ToastMessageShow("Se Actualizaran los datos, Este proceso podria tardar hasta un minuto, gracias" , True) +End Sub +Sub JobDone(Job As HttpJob) + If Job.Success = False Then + 'If Job.ErrorMessage <> "STREAM" Then + ' ToastMessageShow("Error: " & Job.ErrorMessage, True) + 'End If + If Job.ErrorMessage = "STREAM" Then + If CARGA = "SUBIR" Then + PB2.Progress = PB2.Progress + PORCENTAJE + + If S_CP.Text = "EN PROCESO" Then + S_CP.Text = "SUBIENDO" + End If + ' If PB2.Progress > 99 Then + ' S_CP.Text = "VALIDANDO" + ' End If + + If cuantos_ped = conteo Then + S_CP.Text = "VALIDANDO" + End If + End If + End If + Else + LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211027 + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "kmt_datos" Then 'query tag + skmt.BeginTransaction + Try + S_CC.TEXT = "CARGANDO" + 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")) + + 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, gestion) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,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_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO,CAT_CL_BFACTURA,CAT_CL_BCREDITO)) + Next + skmt.TransactionSuccessful + Catch + Log(LastException) + ToastMessageShow(LastException, True) + End Try + skmt.EndTransaction + 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, gestion) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,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")) + 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 + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "hist_promos" Then 'query tag + skmt.BeginTransaction + Try + 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")) + + skmt.ExecNonQuery2("INSERT INTO HIST_PROMOS(HP_CLIENTE, HP_CODIGO_PROMOCION) VALUES (?,?)", Array As Object (HP_CLIENTE, HP_CODIGO_PROMOCION)) + Next + '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 = 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 + Catch + Log(LastException) + ToastMessageShow(LastException, True) + End Try + skmt.EndTransaction + End If + End If + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "catalogo_exhibidor" Then 'query tag + skmt.BeginTransaction + Try + For Each records() As Object In RESULT.Rows + Dim CAT_EX_ID As String = records(RESULT.Columns.Get("CAT_EX_ID")) + Dim CAT_EX_TIPO As String = records(RESULT.Columns.Get("CAT_EX_TIPO")) + Dim CAT_EX_VALOR As String = records(RESULT.Columns.Get("CAT_EX_VALOR")) + + skmt.ExecNonQuery2("INSERT INTO CAT_EXHIBIDORES(CAT_EX_ID, CAT_EX_TIPO, CAT_EX_VALOR) VALUES (?,?,?)", Array As Object (CAT_EX_ID, CAT_EX_TIPO, CAT_EX_VALOR)) + Next + ' ToastMessageShow(" Historico Clientes Promociones Actualizado." , True) + Catch + Log(LastException) + ToastMessageShow(LastException, True) + End Try + skmt.EndTransaction + 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 + 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")) + + 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 + ' 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 + 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")) + + 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 + + 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 + + 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")) + + 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 = "gunaprod" Then 'query tag + S_CP.Text = "CARGANDO" + 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)) + 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 + ' 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 + + ' CARGA DEL CATALOGO ABORDO + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "gunaprod2" Then 'query tag + 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)) + 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)) + Next + c=skmt.ExecQUERY2("SELECT COUNT(*) AS CUANTOS FROM PEDIDO WHERE PE_TIPO = ?", Array As String ("VENTA")) + c.Position = 0 + cuantos_pedidosc = c.GetString("CUANTOS") + c.Close + If cuantos_pedidosc > 0 Then + c=skmt.ExecQUERY2("SELECT PE_PROID, PE_CANT FROM PEDIDO WHERE PE_TIPO = ?", Array As String ("VENTA")) + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + c.Position=i + 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 + End If + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "gunaprodpa" Then 'query tag + 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")) + 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 + 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 + 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")) + 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_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 + 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 + 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")) + 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) 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 + 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 = "fechat" Then 'query tag + For Each records() As Object In RESULT.Rows + Dim FECHA_HOY As String = records(RESULT.Columns.Get("FECHA")) + skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("FECHA")) + skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("FECHA",FECHA_HOY)) + Next + End If + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "detallepaq" Then 'query tag + 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")) + + + + + 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 + + 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 + + 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")) + 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 + 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 = "carga_encuesta" Then 'query tag + 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")) + + + 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 = "hist_rmi" Then 'query tag + + 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")) + 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")) + + 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 = "valida_pedido" 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 + ' ToastMessageShow("rojo val ok 1 cuantosp." , True) + datos_iguales = "ok" + S_CP.Text = "INFO OK" + i_gif.Visible = False + Else + 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_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 + ' ToastMessageShow("rojo val ok 1 cuantosp." , True) + datos_iguales = "ok" + Else + 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 + ' ToastMessageShow("rojo val ok 1 cuantosp." , True) + datos_iguales = "ok" + Else + 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 + skmt.ExecNonQuery("delete from VERSION") + Dim CAT_VE_VERSION As String = records(RESULT.Columns.Get("CAT_VE_VERSION")) + + 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 + '' PEDIDO + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "pedido_env" Then 'query tag + skmt.ExecNonQuery("delete from telefonos") + + For Each records() As Object In RESULT.Rows + Dim FOLIO_PE As String = records(RESULT.Columns.Get("FOLIO")) + skmt.ExecNonQuery2("INSERT INTO telefonos (PR_CD_CREDITO) VALUES (?)", Array As Object (FOLIO_PE)) + Next + PASO_info = 1 + End If + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "ruta" Then 'query tag + +' cargar.Visible = True +' Subir.Visible = True +' SUBIR_P.Visible = True +' inv.Visible = True +' connecta.Visible = False +' If conn = "1" Then +' ToastMessageShow("Existe Conexión con el Servidor." , True) +' End If + + For Each records() As Object In RESULT.Rows + Dim VALIDO As String = records(RESULT.Columns.Get("VALIDO")) + If VALIDO = "OK" Then + cargar.Visible = True + Subir.Visible = True + SUBIR_P.Visible = True + inv.Visible = True + connecta.Visible = False + If conn = "1" Then + ToastMessageShow("Existe Conexión con el Servidor." , True) + End If + Else + cargar.Visible = False + Subir.Visible = False + SUBIR_P.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 + + Dim FECHA_HOY As String = records(RESULT.Columns.Get("FECHA")) + skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("FECHA")) + skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("FECHA",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 + For Each records() As Object In RESULT.Rows + + Dim FOLIO As String = records(RESULT.Columns.Get("FOLIO")) + skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("FOLIO")) + 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")) + skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("PERFIL")) + 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 + For Each records() As Object In RESULT.Rows + + Dim MARCAS As String = records(RESULT.Columns.Get("MARCAS")) + skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("MARCAS")) + 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")) + skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("SUCURSAL")) + skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("SUCURSAL",SUCURSAL)) + + 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")) + skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("CAMBIOS")) + 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 + 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_PRECIO9")) + Dim CAT_GP_PRECIO10 As String = records(RESULT.Columns.Get("CAT_GP_PRECIO10")) + + + 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, CAT_GP_PRECIO10) 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,CAT_GP_PRECIO10)) + + Next + skmt.ExecNonQuery("delete from LISTA_PRECIOS") + 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") + + ' ToastMessageShow("LISTA DE PRECIOS OK LISTA DE PRECIOS OK", True) + End If + End If + + Job.Release + + End If + +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 + StartActivity(Main) + 'Return True + End If + ' Returning False signals the system to handle the key + Return False +End Sub + +Sub GPS_LocationChanged (Location1 As Location) +' lat_gps=Location1.ConvertToSeconds(Location1.Latitude) +' lon_gps=Location1.ConvertToSeconds(Location1.Longitude) +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 + ime.HideKeyboard + Dim cmd As DBCommand + cmd.Initialize + cmd.Name = "UPDATE_DURK_ACTUAL2_GPS" + cmd.Parameters = Array As Object(L_MONTOD.Text, L_CUANTOST.Text, l_cuantosc.Text,l_porvisitar.TEXT,Main.lat_gps,Main.lon_gps,batterystatus(0),0, 0, 0,ALMACEN,l_ruta.Text ) + reqManager.ExecuteCommand(cmd,"inst_visitas") + + connecta1 = connecta1 + 1 + imei = p.GetDeviceId + conn = "1" + Dim cmd As DBCommand + cmd.Initialize + cmd.Name = "select_version_DUR" + reqManager.ExecuteQuery(cmd , 0, "version") + + Dim cmd As DBCommand + cmd.Initialize + cmd.Name = "select_ruta_DUR2" + cmd.Parameters = Array As Object(ALMACEN,e_ruta.text,imei) + Log($"${ALMACEN},${e_ruta.text},${imei}"$) + reqManager.ExecuteQuery(cmd , 0, "ruta") + + If e_ruta.Text = "ROOT" Then + cargar.Visible = True + Subir.Visible = True + SUBIR_P.Visible = True + e_ruta.Text = "" + End If + ToastMessageShow("Validando Conexión." , True) +' Else +' Msgbox("LA RUTA NO ES CORRECTA","") +' End If +End Sub + +Sub BUSCA_Click + StartActivity(BUSCAR) +End Sub + +Sub b_mapa_Click + StartActivity(mapas) +End Sub + +Sub e_ruta_EnterPressed + If e_ruta.Text = "FIN DIA" Then + RES = Msgbox2("Seguro que desa hacer el cierre todos los datos se borraran?","Cierre", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) + If RES = DialogResponse.POSITIVE Then + + e_ruta.Text = "" + skmt.ExecNonQuery("delete from pedido_cliente") + skmt.ExecNonQuery("delete from pedido") + skmt.ExecNonQuery("delete from noventa") + skmt.ExecNonQuery("delete from clie_act") + skmt.ExecNonQuery("delete from kmt_info") + skmt.ExecNonQuery("delete from cat_gunaprod") + skmt.ExecNonQuery("delete from cat_gunaprod2") + + skmt.ExecNonQuery("delete from CAT_DETALLES_PAQ") + skmt.ExecNonQuery("delete from HIST_VENTAS") + skmt.ExecNonQuery("delete from HIST_VERIFICACION") + skmt.ExecNonQuery("delete from HIST_ENCUESTA") + skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("NUMERO_PEDIDO")) + skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("NUMERO_PEDIDO",0)) + + + + B4XPage_Appear + End If + End If + If e_ruta.Text = "HUGO" Then + trabajar.Visible = False + B_PROXIMA.Visible =False + Btn_UbicarR.Visible=False + + NUEVO.Visible =False + BUSCA.Visible=False + connecta.Visible=False + img3.Visible =True + Resumen.Visible= False + + End If + +End Sub +Sub inv_Click + img2.Visible =True + EJECUTANDO = 1 + inve = 1 + skmt.ExecNonQuery("delete from cat_gunaprod") + skmt.ExecNonQuery("delete from CAT_DETALLES_PAQ") + + c=skmt.ExecQuery("select usuario from usuarioa") + c.Position = 0 + usuario = c.GetString("USUARIO") + + cmd.Initialize + cmd.Name = "select_cat_gunaprod_DUR" + cmd.Parameters = Array As Object(ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "gunaprod") + + cmd.Initialize + cmd.Name = "select_cat_paquetes_DUR" + cmd.Parameters = Array As Object(ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "gunaprodp") + + cmd.Initialize + cmd.Name = "select_cat_detallepa_DUR" + cmd.Parameters = Array As Object(ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "detallepaq") + + cargar.Visible = False + Subir.Visible = False + SUBIR_P.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_DUR" + 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_DUR" +' cmd.Parameters = Array As Object(ALMACEN,l_ruta.text) +' reqManager.ExecuteQuery(cmd , 0, "valida_noventa") +' +' cmd.Initialize +' cmd.Name = "select_cuantos_pedidoc_DUR" +' 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=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 + c=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 + + If PERFIL = "V-ESPECIAL" Then + skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("NUMERO_PEDIDO")) + 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 + Btn_UbicarR.Visible=True + + NUEVO.Visible =True + BUSCA.Visible=True + connecta.Visible=True + Resumen.Visible= True + img2.Visible=False + Else If CARGA = "SUBIR" And S_CP.Text = "ERROR" Then + Msgbox("Tiene que subir de nuevo la información","Atención") + P1.Visible = False + trabajar.Visible = True + NUEVO.Visible =True + BUSCA.Visible=True + connecta.Visible=True + Resumen.Visible= True + img2.Visible=False + + Else if CARGA = "SUBIR" And S_CP.Text <> "INFO OK" Then + RES = Msgbox2("Seguro que desa abortar el proceso","Cierre", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) + If RES = DialogResponse.POSITIVE Then + P1.Visible = False + trabajar.Visible = True + B_PROXIMA.Visible =True + Btn_UbicarR.Visible=True + + NUEVO.Visible =True + BUSCA.Visible=True + connecta.Visible=True + Resumen.Visible= True + img2.Visible=False + ExitApplication + End If + + End If + + If CARGA = "CARGAR" And S_CP.Text = "LISTO" And S_CC.Text = "LISTO" And S_CH.Text = "LISTO" Then + + P1.Visible = False + trabajar.Visible = True + B_PROXIMA.Visible =True + Btn_UbicarR.Visible=True + + + NUEVO.Visible =True + BUSCA.Visible=True + connecta.Visible=True + Resumen.Visible= True + img2.Visible=False + B4XPage_Appear + Else if CARGA = "CARGAR" And (S_CP.Text <> "LISTO" Or S_CC.Text <> "LISTO" Or S_CH.Text <> "LISTO") Then + RES = Msgbox2("Seguro que desa abortar el proceso","Cierre", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) + If RES = DialogResponse.POSITIVE Then + P1.Visible = False + trabajar.Visible = True + B_PROXIMA.Visible =True + Btn_UbicarR.Visible=True + + NUEVO.Visible =True + BUSCA.Visible=True + connecta.Visible=True + Resumen.Visible= True + img2.Visible=False + skmt.ExecNonQuery("delete from kmt_info") + skmt.ExecNonQuery("delete from cod_result") + skmt.ExecNonQuery("delete from hist_gest") + skmt.ExecNonQuery("delete from cat_gunaprod") + skmt.ExecNonQuery("delete from CAT_DETALLES_PAQ") + skmt.ExecNonQuery("delete from telefonos") + skmt.ExecNonQuery("delete from HIST_VENTAS") + skmt.ExecNonQuery("delete from HIST_PROMOS") + skmt.ExecNonQuery("delete from HIST_CLIENTE_CANT_PROMOS") + skmt.ExecNonQuery("delete from PROMOS_COMP") + skmt.ExecNonQuery("delete from CAT_VERIFICACION") + ExitApplication + End If + + End If + + + '------------- + '------------- TODO ESTE CODIGO ES PARA CUANDO APLICAN DESUCENTOS. + ' + ' Dim cmd As DBCommand' +' cmd.Initialize +' cmd.Name = "select_usuario_guna_super_DUR" +' cmd.Parameters = Array As Object(USUARIO1.Text, CLAVE.Text) +' reqManager.ExecuteQuery(cmd , 0, "usuario") + 'If PASO = 1 Then + 'c=skmt.ExecQuery("select usuario from usuarioa") + '' c.Position = 0 +' usuario = c.GetString("USUARIO") +' c.Close + ' PEDIO_CLIENTE +' c=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=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_DUR" +' 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.ExecuteQuery(cmd , 0,"inst_pedidos") + ' +' Next +' c.Close +' End If +' d.Position=0 +' cuantos_pedidosc = D.GetString("CUANTOS_PEDIDOSC") +' d.Close +' +' ' PEDIO +' c=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 FROM PEDIDO") +' d=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_DUR" +' 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")) +' reqManager.ExecuteQuery(cmd , 0, "ins_pedido") + ' +' Next +' c.Close +' End If +' d.Position=0 +' cuantos_pedido = D.GetString("CUANTOS_PEDIDO") +' d.Close +' +' ' NOVENTA +' c=skmt.ExecQuery("SELECT NV_CLIENTE,NV_FECHA,NV_USER,NV_MOTIVO,NV_COMM,NV_LAT,NV_LON FROM NOVENTA") +' D=skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS_NOVENTA FROM NOVENTA") +' +' 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_DUR" +' 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.ExecuteQuery(cmd , 0, "inst_noventa") + ' +' Next +' c.Close +' End If +' d.Position=0 +' cuantos_noventa = D.GetString("CUANTOS_NOVENTA") +' d.Close +' +' ' DROP + ' + ' t1.Initialize("T1", 60000) ' 1000 = 1 second + ' t1.Enabled = True + 'Dim cmd As DBCommand + 'cmd.Initialize +' cmd.Name ="insert_drop_DUR" +' 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, L_MONTOD.Text) +' reqManager.ExecuteQuery(cmd , 0, "inst_noventa") + ' img2.Visible =True +' +' +' +' ToastMessageShow("Se Actualizaran los datos, Este proceso podria tardar hasta un minuto, gracias "& l_ruta.text , True) + ' + 'USUARIO1.Text = "" + 'CLAVE.Text = "" + ' End If + ' +' Awake.KeepAlive(False) +End Sub + +Sub NUEVO_Click + StartActivity(nuevocliente) +End Sub + +Sub B_OK_RES_Click + trabajar.Visible = True + B_PROXIMA.Visible =True + Btn_UbicarR.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 + trabajar.Visible = False + B_PROXIMA.Visible =False + Btn_UbicarR.Visible=False + + NUEVO.Visible =False + BUSCA.Visible=False + connecta.Visible=False + Subir.Visible=False + SUBIR_P.Visible = False + cargar.Visible=False + Resumen.Visible= False + + b=skmt.ExecQuery("Select count(*) as CUANTOS from pedido_cliente where pc_cliente <> 0") + b.Position=0 + Cuantos = b.GetString("CUANTOS") + ToastMessageShow(Cuantos , True) + + d=skmt.ExecQuery("select count(*) as TOTAL_VISITAR from kmt_info where gestion = 0 and cat_cl_codigo <> 0") + D.Position=0 + b.Close + e=skmt.ExecQuery("select count(*) as POR_VISITAR from kmt_info where cat_cl_codigo <> 0") + e.Position=0 + f=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=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 + Else + C=skmt.ExecQuery2("select count(*) as CUANTOS FROM CAT_GUNAPROD WHERE CAT_GP_CLASIF = ? ", Array As String ("KELLOGGS")) + c.Position = 0 + Log("Cuantos=" & Cuantos) + If c.GetString("CUANTOS") > 0 Then + Log("Entramos") + ImageView12.Bitmap = LoadBitmap(File.DirAssets, "k.png") + c=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=skmt.ExecQuery("Select sum(PE_COSTO_TOT) As MONTO_DIA from pedido where PE_CLIENTE <> 0 and pe_proid in (Select CAT_GP_ID from cat_gunaprod where CAT_GP_CLASIF = 'KELLOGGS' Or CAT_GP_CLASIF = 'KELLOGGS 2' union Select CAT_GP_ID from cat_gunaprod2 where CAT_GP_CLASIF = 'KELLOGGS' Or CAT_GP_CLASIF = 'KELLOGGS 2')") + c.Position = 0 + l_monto_k.Text = c.GetString("MONTO_DIA") + c.Close + c=skmt.ExecQuery("Select sum(PE_COSTO_TOT) As MONTO_DIA from pedido where PE_CLIENTE <> 0 and pe_proid in (Select CAT_GP_ID from cat_gunaprod where (CAT_GP_CLASIF = 'KELLOGGS' Or CAT_GP_CLASIF = 'KELLOGGS 2') And CAT_GP_TIPO = 'PRINGLES' union Select CAT_GP_ID from cat_gunaprod2 where (CAT_GP_CLASIF = 'KELLOGGS' Or CAT_GP_CLASIF = 'KELLOGGS 2') And CAT_GP_TIPO = 'PRINGLES')") + c.Position = 0 + l_monto_kp.Text = c.GetString("MONTO_DIA") + Log("Pringles=" & l_monto_kp.text) + If l_monto_kp.Text = "null" Then + l_monto_kp.Text = "0" + End If + c.Close + c=skmt.ExecQuery("Select sum(PE_COSTO_TOT) As MONTO_DIA from pedido where PE_CLIENTE <> 0 and pe_proid in (Select CAT_GP_ID from cat_gunaprod where (CAT_GP_CLASIF = 'KELLOGGS' Or CAT_GP_CLASIF = 'KELLOGGS 2') And CAT_GP_TIPO = 'SNACK' union Select CAT_GP_ID from cat_gunaprod2 where (CAT_GP_CLASIF = 'KELLOGGS' Or CAT_GP_CLASIF = 'KELLOGGS 2') And CAT_GP_TIPO = 'SNACK')") + c.Position = 0 + l_monto_ks.Text = c.GetString("MONTO_DIA") + c.Close + Log("Snacks=" & l_monto_ks.text) + c=skmt.ExecQuery("Select sum(PE_COSTO_TOT) As MONTO_DIA from pedido where PE_CLIENTE <> 0 and pe_proid in (Select CAT_GP_ID from cat_gunaprod where (CAT_GP_CLASIF = 'KELLOGGS' Or CAT_GP_CLASIF = 'KELLOGGS 2') And CAT_GP_TIPO = 'CEREAL' union Select CAT_GP_ID from cat_gunaprod2 where (CAT_GP_CLASIF = 'KELLOGGS' Or CAT_GP_CLASIF = 'KELLOGGS 2') And CAT_GP_TIPO = 'CEREAL')") + c.Position = 0 + l_monto_kc.Text = c.GetString("MONTO_DIA") + c.Close + Log("Cereal=" & l_monto_kc.text) + + Else + ImageView12.Bitmap = LoadBitmap(File.DirAssets, "unilever.jpg") + c=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=skmt.ExecQuery("Select sum(PE_COSTO_TOT) As MONTO_DIA from pedido where PE_CLIENTE <> 0 and pe_proid in (Select CAT_GP_ID from cat_gunaprod where CAT_GP_CLASIF = 'UNILEVER' union Select CAT_GP_ID from cat_gunaprod2 where CAT_GP_CLASIF = 'UNILEVER')") + c.Position = 0 + l_monto_k.Text = c.GetString("MONTO_DIA") + c.Close + + l_monto_kp.Text = "0" + l_monto_ks.Text = "0" + End If + + Log($"${l_monto_k.text}, ${l_monto_kp.text}, ${l_monto_ks.text}"$) + + E1=skmt.ExecQuery2("Select count(*) As CUANTOS from pedido where PE_TIPO = ?", Array As String("VENTA")) + E1.Position = 0 + If E1.GetString("CUANTOS") > 0 Then + + c=skmt.ExecQuery2("Select sum(PE_COSTO_TOT) As MONTO_DIA from pedido where PE_TIPO = ?", Array As String("VENTA")) + c.Position = 0 + L_VENTA.Text = c.GetString("MONTO_DIA") + c.Close + Else + L_VENTA.Text = 0 + End If + E1.Close + + + E1=skmt.ExecQuery2("Select count(*) As CUANTOS from pedido where PE_TIPO = ?", Array As String("PREVENTA")) + E1.Position = 0 + If E1.GetString("CUANTOS") > 0 Then + + c=skmt.ExecQuery2("Select sum(PE_COSTO_TOT) As MONTO_DIA from pedido where PE_TIPO = ?", Array As String("PREVENTA")) + c.Position = 0 + L_PREVENTA.Text = c.GetString("MONTO_DIA") + c.Close + Else + L_PREVENTA.Text = 0 + End If + E1.Close + + + E1=skmt.ExecQuery2("Select count(*) As CUANTOS from pedido where PE_TIPO = ?", Array As String("ABORDO")) + E1.Position = 0 + If E1.GetString("CUANTOS") > 0 Then + + c=skmt.ExecQuery2("Select sum(PE_COSTO_TOT) As MONTO_DIA from pedido where PE_TIPO = ?", Array As String("ABORDO")) + c.Position = 0 + L_ABORDO.Text = c.GetString("MONTO_DIA") + c.Close + Else + L_ABORDO.Text = 0 + End If + E1.Close + +' c=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_gunaprod where (CAT_GP_CLASIF = ? Or CAT_GP_CLASIF = ?) And CAT_GP_TIPO = ?)", Array As String("KELLOGGS", "KELLOGGS 2","SNACK")) +' c.Position = 0 +' l_monto_ks.Text = c.GetString("MONTO_DIA") +' c.Close + + c=skmt.ExecQuery("select sum(pc_monto) as MONTO_DIA, count(pc_cliente) AS CLIENTES_DIA from pedido_cliente where pc_cliente <> 0") + b=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"))/ 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 + + +End Sub + +Sub B_PROXIMA_Click + skmt.ExecNonQuery("delete from CUENTAA") + skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object("0")) + Main.tipov = "ABORDO" + StartActivity(colonia2) +End Sub + + + +Sub Timer_GIF1_Tick + Timer_GIF1.Enabled = False + Frame1 = Frame1 + 1 + If Frame1 >= gif1.FrameCount Then + Frame1 = 0 + End If + Timer_GIF1.Interval = gif1.Delay(Frame1) + i_gif.Bitmap = gif1.Frame(Frame1) + Timer_GIF1.Enabled = True +End Sub + +Sub load_gif + + gif1.DisposeFrames + + + gif1.Load(ruta, "espera.gif") + Frame1 = 0 + + + Timer_GIF1.Interval = gif1.Delay(Frame1) + i_gif.Bitmap = gif1.Frame(Frame1) + + Timer_GIF1.Initialize("TG", 40) ' 1000 = 1 second + + Timer_GIF1.Enabled = True + + + + gif1.SaveFrame(0, ruta, "frame1.png", "P", 85) + gif1.SaveFrame(0, ruta, "frame1.jpg", "J", 85) + +End Sub + +Sub VALIDA_INFO + + cmd.Initialize + cmd.Name = "select_datos_enviados_pe" + cmd.Parameters = Array As Object(ALMACEN, e_ruta.Text) + reqManager.ExecuteQuery(cmd , 0, "pedido_env") + PASO_info = 0 + + For I = 0 To 2 + T3.Initialize("T3", 8000) ' 1000 = 1 second + T3.Enabled = True + Wait For t3_tick + If PASO_info = 0 Then + I = 0 + End If + Next + +End Sub + + +Sub B_MARCAS_Click + Panel5.Visible = True + + pnlTitle.Visible = False + pnlTitle.SetLayoutAnimated(0, 0, 0, CLV1.AsView.Width, TitleHeight + DividerHeight) + pnlTitle.LoadLayout("CellTitle") + c=skmt.ExecQuery("Select CAT_GP_CLASIF, SUM(TOTAL) AS TOTAL FROM TOTAL_MARCAS GROUP BY CAT_GP_CLASIF") + CLV1.Clear + + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + c.Position=i + AddTitle(c.GetString("CAT_GP_CLASIF")) + CLV1.AddTextItem("TOTAL VENTA Y PREVENTA = $" & c.GetString("TOTAL"),"1") + + Next + End If +End Sub +Sub AddTitle (Title As String) + Dim p_MARCAS As B4XView = xui.CreatePanel("") + p_MARCAS.SetLayoutAnimated(0, 0, 0, CLV1.AsView.Width, TitleHeight) + p_MARCAS.LoadLayout("CellTitle") + lblTitle.Text = Title + Dim td As TitleData + td.Title = Title + CLV1.Add(p_MARCAS, td) +End Sub + + +Sub B_OK_PANEL5_Click + Panel5.Visible = False + +End Sub + +Sub e_ruta_TextChanged (Old As String, New As String) + Dim validChars As String ="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789 " + Try + If validChars.Contains(New.SubString(New.Length-1)) = False Then + e_ruta.Text = New.SubString2(0, New.Length-1) + e_ruta.SelectionStart = e_ruta.Text.Length + End If + Catch + Log(LastException) + End Try +End Sub + +Sub Btn_UbicarR_Click + c=skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("MARCAS")) + c.Position =0 + MARCASQ = c.GetString("CAT_VA_VALOR") + c.Close + skmt.ExecNonQuery("delete from CAT_GUNAPROD WHERE CAT_GP_CLASIF NOT IN (" & MARCASQ &")" ) + 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))") + StartActivity(MAPA_RUTAS) +End Sub + +Sub SUBIR_P_Click + Awake.KeepAlive(True) + CARGA = "SUBIR" + P1.Visible = True + trabajar.Visible = False + B_PROXIMA.Visible =False + Btn_UbicarR.Visible=False + + NUEVO.Visible =False + BUSCA.Visible=False + connecta.Visible=False + Subir.Visible=False + SUBIR_P.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 + PB2.Visible = True + conteo = 0 + 'i_gif.Visible = True +' load_gif + + PASO = 1 + 'End If + If PASO =1 Then + E1=skmt.ExecQuery2("Select count(*) As CUANTOS from pedido where PE_TIPO = ?", Array As String("ABORDO")) + E1.Position = 0 + If E1.GetString("CUANTOS") > 0 Then + + c=skmt.ExecQuery2("Select sum(PE_COSTO_TOT) As MONTO_DIA from pedido where PE_TIPO = ?", Array As String("ABORDO")) + c.Position = 0 + L_ABORDO.Text = c.GetString("MONTO_DIA") + c.Close + Else + L_ABORDO.Text = 0 + End If + E1.Close + + + skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE not In (select PE_CLIENTE from pedido)") + + c=skmt.ExecQuery("select usuario from usuarioa") + c.Position = 0 + usuario = c.GetString("USUARIO") + c.Close + d3=skmt.ExecQuery("SELECT SUM(PE_COSTO_TOT) as MONTO FROM PEDIDO") + d3.Position = 0 + Dim cmd As DBCommand + cmd.Initialize + cmd.Name ="UPDATE_INFO_E_DURK" + cmd.Parameters = Array As Object(d3.GetDouble("MONTO")- L_ABORDO.text, L_ABORDO.Text, d3.GetDouble("MONTO"),l_ruta.TEXT, ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "inst_noventa") + Dim cmd As DBCommand + cmd.Initialize + cmd.Name ="insert_drop2_DUR" + 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, L_MONTOD.Text,"ENVIO", ALMACEN, L_VENTA.Text, L_PREVENTA.Text, L_ABORDO.Text, l_cambios.TEXT) + reqManager.ExecuteQuery(cmd , 0, "inst_noventa") + d3.Close + cuantos_pedidosc = 0 + + + ' PEDIO + + skmt.ExecNonQuery("update PEDIDO set PE_FOLIO = rowid ") + + ' +' c=skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("FOLIO")) +' c.Position =0 + ' armafolio = l_ruta.text * 1000000 +' armafolio = armafolio + c.GetString("CAT_VA_VALOR") +' c.Close +' c=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_TIPO FROM PEDIDO WHERE PE_FOLIO IS NULL") +' +' +' If c.RowCount>0 Then +' For i=0 To c.RowCount -1 +' c.Position=i +' skmt.ExecNonQuery2("update PEDIDO set PE_FOLIO = ? where PE_PROID = ? AND PE_CLIENTE =? AND PE_FECHA =? AND PE_FOLIO IS NULL ", Array As Object(armafolio, c.GetString("PE_PROID"), c.GetString("PE_CLIENTE"),c.GetString("PE_FECHA"))) + ' +' armafolio = armafolio + 1 +' +' Next +' c.Close +' End If + ' armafolio = armafolio - (l_ruta.Text * 1000000) + ' skmt.ExecNonQuery2("update CAT_VARIABLES set CAT_VA_VALOR = ? where CAT_VA_DESCRIPCION = ? ", Array As Object(armafolio,"FOLIO")) +' +' Dim cmd As DBCommand +' cmd.Initialize +' cmd.Name = "update_folio" +' cmd.Parameters = Array As Object(armafolio,l_ruta.Text , "1") +' reqManager.ExecuteQuery(cmd , 0, "folio") + + + + c=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 WHERE PE_CLIENTE = 0") + d=skmt.ExecQuery("SELECT COUNT(*) as CUANTOS_PEDIDO FROM PEDIDO WHERE PE_CLIENTE = 0") + d.Position=0 + TIEMPO = 0 + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + c.Position=i + TIEMPO = TIEMPO + 1 + + If TIEMPO > 20 Then + 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 + conteo = conteo + 1 + cuantos_ped = D.GetString("CUANTOS_PEDIDO") + PORCENTAJE = 2 'Round(100/ (D.GetString("CUANTOS_PEDIDO") + 1)) + Dim cmd As DBCommand + cmd.Initialize + cmd.Name = "insert_pedido_DUR" + 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.ExecuteQuery(cmd , 0, "ins_pedido") + + Next + c.Close + End If + cuantos_pedido = D.GetString("CUANTOS_PEDIDO") + d.Close + t1.Initialize("T1", 20000) ' 1000 = 1 second + t1.Enabled = True + img2.Visible =True + ' ToastMessageShow("Se Actualizaran los datos, Este proceso podria tardar hasta un minuto, gracias "& l_ruta.text , True) + If S_CP.Text = "SUBIENDO" Then + S_CP.Text = "VALIDANDO" + End If + End If +End Sub + +Sub b_e_resumen_Click + Dim cmd As DBCommand + cmd.Initialize + cmd.Name = "UPDATE_DURK_ACTUAL2_GPS" + cmd.Parameters = Array As Object(L_MONTOD.Text, L_CUANTOST.Text, l_cuantosc.Text,l_porvisitar.TEXT,Main.lat_gps,Main.lon_gps,batterystatus(0),0, 0, 0,ALMACEN,l_ruta.Text ) + reqManager.ExecuteCommand(cmd,"inst_visitas") +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..b0723c0 --- /dev/null +++ b/B4A/C_Productos.bas @@ -0,0 +1,1113 @@ +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 + 'These global variables will be declared once when the application starts. + 'These variables can be accessed from all modules. + ' Dim g As GPS + Dim ruta As String + Dim q_buscar As String + Dim skmt As SQL + 'These global variables will be redeclared each time the activity is created. + 'These variables can only be accessed from this module. + Dim c As Cursor + Dim c2 As Cursor + Dim ListView1 As ListView + Dim entro As String + 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 + Dim PROMOS_VENTAS As String + +End Sub + +Private Sub B4XPage_Created (Root1 As B4XView) + Root = Root1 + 'Do not forget to load the layout file created with the visual designer. For example: + 'Activity.LoadLayout("Layout1") + Root.RemoveAllViews + Root.LoadLayout("PRODUCTOS") + 'Dim ruta As String + ' valido donde escribo el archivo de la base de datos de kmt + ruta = File.DirInternal + Panel1.Visible= False + ' se crea o no el archivo de la base de ddatos de kmt + 'NOTAS SI SE MODIFICA LA ESTRUCTURA SE QUITA EL IF Y SE VA DIRECTO A LA SENTENCIA FILE.COPY PARA QUE + 'TOME LA NUEVA ESTRUCTURA ES MUY IMPORTANTE TENER EL IF DE LO CONTRARIO SOLO LO ESCRIBE UNA VEZ Y LO BORRA + 'SI SE REGRESA A ESTE ACTIVIDAD. + 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) +End Sub + +Sub B4XPage_Appear + If Main.tipov = "PREVENTA" Then + query = "cat_gunaprod" + QUERY2 = "COUNT_GUNAPROD" + Else IF Main.tipov = "VENTA" Then + query = "cat_gunaprod2" + QUERY2= " COUNT_GUNAPROD2" + ELSE IF Main.tipov = "ABORDO" Then + query = "cat_gunaprod" + QUERY2 = "COUNT_GUNAPROD" + Else + query = "cat_gunaprod" + QUERY2 = "COUNT_GUNAPROD" + ya_entro = 0 + End If + Log(Main.tipov) + If ya_entro <> "1" Then + 'BUSCA.Text ="" + 'SE COMENTO LA LINEA DE ARRIBA YA QUE DISPARA EL EVENTO DEL TEXTCHANGE Y PUEDE HACER LENTO EL SISTEMA + skmt.Initialize(ruta,"kmt.db", True) + entro ="1" + ya_entro ="1" + c=skmt.ExecQuery("select CAT_GP_CLASIF, COUNT(*) AS CUANTOS from " & query & " where (length(CAT_GP_CODPROMO) = 1 OR CAT_GP_CODPROMO = CAT_GP_ID) GROUP BY CAT_GP_CLASIF order by CAT_GP_CLASIF asc") + + 'ESTO ES PARA NO VER PROCTER + 'c=skmt.ExecQuery2("select CAT_GP_CLASIF, count(*) as cuantos from cat_gunaprod where CAT_GP_ALMACEN > 0 and cat_gp_clasif NOT IN (?,?,?,?,?,?,?,?,?,?) group by CAT_GP_CLASIF order by CAT_GP_CLASIF asc", Array As String("PROCTER","PROMOS","TRES MONTES","CAMPARI","CAMPARI-PRO","CLOROX DE MEXICO","MARS","CONAGRA","VERDE VALLE","MEAD JOHNSON")) + ListView1.Clear + lfila.Text = "MARCA" + Dim label1 As Label + label1 = ListView1.TwoLinesLayout.Label + label1.TextSize = 10 + label1.TextColor = Colors.Black + Dim label2 As Label + label2 = ListView1.TwoLinesLayout.SecondLabel + label2.TextSize = 10 + label2.TextColor = Colors.Black + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + c.Position=i + ListView1.AddTwoLines(c.GetString("CAT_GP_CLASIF"),c.GetString("CUANTOS")) + Next + End If + End If + + c=skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("PERFIL")) + c.Position =0 + If c.RowCount > 0 Then + PERFIL = c.GetString("CAT_VA_VALOR") + Else + PERFIL = 0 + End If + c.Close + + If PERFIL = "V-COSTO" Then + 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 +End Sub + +Sub ListView1_ItemClick (Position As Int, Value As Object) + 'Sub ListView1_ItemLongClick (Position As Int, Value As Object) + 'que_colonia = Value + 'StartActivity(fila) + + + If Value = "PROMOS" And fila.cuenta <> "N" Then + entro = "3" + marca = "PROMOS" + tipo = "PROMOS" + Else if Value = "PROMOS" And fila.cuenta = "N" Then + entro = "5" + StartActivity(fila) + End If + If entro = "1" Then + marca = Value + skmt.Initialize(ruta,"kmt.db", True) + c2=skmt.ExecQuery2("select COUNT(*) AS CUANTOS, CAT_GP_TIPO from " & query & " where CAT_GP_ALMACEN > 0 and CAT_GP_CLASIF = ? 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" + 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 + tipo = Value + skmt.Initialize(ruta,"kmt.db", True) + c2=skmt.ExecQuery2("select COUNT(*) AS CUANTOS, CAT_GP_SUBTIPO from " & query & " where CAT_GP_ALMACEN > 0 and CAT_GP_CLASIF = ? and CAT_GP_TIPO = ? 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(marca, Value)) + ListView1.Clear + lfila.text = "SUB-TIPO" + 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" + + Else If entro = "3" Then + skmt.Initialize(ruta,"kmt.db", True) + c2=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_CLASIF = ? AND CAT_GP_TIPO = ? and (length(CAT_GP_CODPROMO) = 1 OR CAT_GP_CODPROMO = CAT_GP_ID) ", Array As String(marca, Value)) + ListView1.Clear + lfila.text = "PRODUCTO" + 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" + Else If entro = "4" Then + + skmt.ExecNonQuery("delete from PROID") + skmt.ExecNonQuery2("INSERT INTO PROID VALUES (?)", Array As Object(Value)) + 'StartActivity(pedidos) + HACER_PEDIDO + End If +End Sub + +Sub Activity_KeyPress (key As Int) As Boolean + ' BACK key pressed + If key=KeyCodes.KEYCODE_BACK Then + ya_entro ="0" + + If entro = "4" Then + entro = "3" + B4XPage_Appear + Return True + Else If entro = "3" Then + ' entro = "2" + ' B4XPage_Appear + ' Return True + ' Else If entro = "2" Then + ' entro = "1" + ' B4XPage_Appear + ' Return True + 'Else If entro = "1" Then + + ' I want to capture the key here so I return True + + StartActivity(fila) + 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 & "%" + skmt.Initialize(ruta,"kmt.db", True) + ' c=skmt.ExecQuery2("select CAT_GP_NOMBRE from cat_gunaprod where CAT_GP_ALMACEN > 0 and CAT_GP_NOMBRE like ? AND cat_gp_clasif NOT IN (?,?,?,?,?,?,?,?,?,?) order by CAT_GP_NOMBRE asc", Array As String(q_buscar, "PROCTER","PROMOS","TRES MONTES","CAMPARI","CAMPARI-PRO","CLOROX DE MEXICO","MARS","CONAGRA","VERDE VALLE","MEAD JOHNSON")) + c=skmt.ExecQuery2("select CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO,CAT_GP_IMG from " & query & " where CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_NOMBRE like ? and CAT_GP_CLASIF <> ? 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")) + 'and CAT_GP_CLASIF <> ? group by CAT_GP_CLASIF order by CAT_GP_CLASIF asc", Array As String("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) + + ListView1.AddTwoLines(c.GetString("CAT_GP_NOMBRE"),"Existencia " & c.GetString("CAT_GP_ALMACEN") & " Precio $" & c.GetString("CAT_GP_PRECIO")) + Next + End If + c.Close + entro= "4" +End Sub + +Sub HACER_PEDIDO + c=skmt.ExecQuery("Select SUBSTR(CUENTA,1,1) AS CUENTA from cuentaa") + c.Position=0 + clie_id = c.GetString("CUENTA") + c.Close + Panel1.Visible= True + cambio = "0" + cantidad.Text = "" + c=skmt.ExecQuery("select ID_ALMACEN from CAT_ALMACEN") + C.Position =0 + ALMACEN = C.GetString("ID_ALMACEN") + C.Close + c=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 + i_fotol.Visible = False + + skmt.Initialize(ruta,"kmt.db", True) + c=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 PERFIL = "V-SUPER" Then + c2=skmt.ExecQuery("select PRECIO, NLISTA FROM LISTA_PRECIOS WHERE NLISTA = '10' AND CAT_GP_ID =" & "'" &L_PROID.TEXT&"' ORDER BY NLISTA ASC") + c2.Position=0 + l_precio.Text = c2.GetString("PRECIO") + c2.Close + + Else IF ALMACEN = "6" And cl_ruta = "16" Then + c2=skmt.ExecQuery("select PRECIO, NLISTA FROM LISTA_PRECIOS WHERE NLISTA = '11' AND CAT_GP_ID =" & "'" &L_PROID.TEXT&"' ORDER BY NLISTA ASC") + 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 + + If l_marca.text = "PROMOS" And l_tipo.Text ="PROMOS" Then + DESC_PROMO.Visible = True + CC=skmt.ExecQuery2("select count(*) as CUANTOS FROM PROMOS_COMP WHERE CAT_PA_ID = ?", Array As String(c.GetString("CAT_GP_ID"))) + CC.Position =0 + If CC.GetString("CUANTOS") = 0 Then + l_bodega.Text = "4" + Else + CC.Close + CC=skmt.ExecQuery2("select CAT_PA_MAXPROM, CAT_PA_MAXPROMREC, CAT_PA_MAXPROMCLIE FROM PROMOS_COMP WHERE CAT_PA_ID = ?", Array As String(c.GetString("CAT_GP_ID"))) + CC.Position =0 + + DD=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(c.GetString("CAT_GP_ID"))) + DD.Position =0 + If DD.GetString("CUANTOS") = 0 Then + HCCP_CANT = 0 + Else + DD.Close + + DD=skmt.ExecQuery2("SELECT HCCP_CANT FROM HIST_CLIENTE_CANT_PROMOS WHERE HCCP_CLIENTE IN (Select cuenta from cuentaa) AND HCCP_PROMO =?", Array As String(c.GetString("CAT_GP_ID"))) + DD.Position =0 + HCCP_CANT = DD.GetString("HCCP_CANT") + DD.Close + End If + TOTAL_PROMO = CC.GetString("CAT_PA_MAXPROMCLIE") - HCCP_CANT + If HCCP_CANT = 0 Then + + l_bodega.Text = CC.GetString("CAT_PA_MAXPROM") + Else IF TOTAL_PROMO > CC.GetString("CAT_PA_MAXPROMREC") Then + l_bodega.Text = CC.GetString("CAT_PA_MAXPROMREC") + Else + l_bodega.Text = TOTAL_PROMO + End If + End If + Else + DESC_PROMO.Visible = False + End If + + c.Close + c=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 + If clie_id = "N" Then + nopromo.Visible = False + End If + 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 + Msgbox("ALERTA","EL CLIENTE YA NO PUEDE TENER ESTA PROMOCION") + Panel1.Visible= False + End If + + If marca <> "PROMOS" Then + If PERFIL = "PREVENTA" Then + t_precio.Visible = False + LV_PRECIOS.Visible = False + ELSE IF PERFIL = "V-ESPECIAL" Then + c=skmt.ExecQuery("select PRECIO, NLISTA FROM LISTA_PRECIOS WHERE NLISTA IN ('5','6','7','8','10') AND CAT_GP_ID =" & "'" &L_PROID.TEXT&"' ORDER BY NLISTA ASC") + LV_PRECIOS.Clear + Dim label1 As Label + label1 = LV_PRECIOS.TwoLinesLayout.Label + label1.TextSize = 10 + label1.TextColor = Colors.Black + Dim label2 As Label + label2 = LV_PRECIOS.TwoLinesLayout.SecondLabel + label2.TextSize = 10 + label2.TextColor = Colors.Black + + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + c.Position=i + LV_PRECIOS.AddTwoLines(c.GetString("NLISTA"),c.GetString("PRECIO")) + Next + End If + ELSE IF PERFIL = "V-MINI" Then + t_precio.Visible = False + LV_PRECIOS.Visible = False + + c=skmt.ExecQuery("select PRECIO, NLISTA FROM LISTA_PRECIOS WHERE NLISTA = '2' AND CAT_GP_ID =" & "'" &L_PROID.TEXT&"' ORDER BY NLISTA ASC") + c.Position=0 + l_precio.Text = c.GetString("PRECIO") + c.Close + ELSE IF PERFIL = "V-COSTO" Then + + t_precio.Visible = False + LV_PRECIOS.Visible = False + + c=skmt.ExecQuery("select PRECIO, NLISTA FROM LISTA_PRECIOS WHERE NLISTA = '9' AND CAT_GP_ID =" & "'" &L_PROID.TEXT&"' ORDER BY NLISTA ASC") + c.Position=0 + l_precio.Text = c.GetString("PRECIO") + c.Close + ELSE IF PERFIL = "V-SUPER" Then + t_precio.Visible = False + LV_PRECIOS.Visible = False + + c=skmt.ExecQuery("select PRECIO, NLISTA FROM LISTA_PRECIOS WHERE NLISTA ='9' 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 + '' 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 + If query = "cat_gunaprod2" Then + l_bodega.Text = PROMOS_VENTAS + e=skmt.ExecQuery2("select count(*) as CUANTOS FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID = ? ", Array As String(L_PROID.Text) ) + e.Position = 0 + If e.GetString("CUANTOS") > 0 Then + F=skmt.ExecQuery2("select CAT_DP_IDPROD, CAT_DP_PZAS FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID = ? ", 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=skmt.ExecQuery2("select count(*) as CUANTOS from cat_gunaprod2 where CAT_GP_ID = ? ", Array As String(f.GetString("CAT_DP_IDPROD"))) + c.Position=0 + If c.GetString("CUANTOS") > 0 Then + h=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 h.GetString("CAT_GP_ALMACEN") < l_bodega.Text * f.GetString("CAT_DP_PZAS") Then + l_bodega.Text = "1" + End If + '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, f.GetString("CAT_DP_PZAS") * cantidad.text, h.GetString("CAT_GP_NOMBRE"), f.GetString("CAT_DP_IDPROD"),clie_id, sDate & sTime, usuario,cl_ruta,Main.tipov,precio2)) + h.Close + else if c.GetString("CUANTOS") = 0 Then + l_bodega.Text = "0" + End If + c.Close + Next + f.Close + End If + e.Close + End If + '' ESTO ES PARA NO PASAR DE LAS PROMOS ABORDO Y MANDARLAS AL MINIMO FIN + End If + If clie_id="0" Then + nopromo.Visible = False + End If +End Sub + +Sub guardar_Click + If cantidad.Text = "" Then + Panel1.Visible= False + ELSE If cantidad.Text > l_bodega.Text Then + Msgbox("Exede la existencia", "ADVERTENCIA") + Else If l_marca.text = "PROMOS" And l_tipo.Text ="PROMOS" And PROMO_C > 0 And cantidad.Text > 0 Then + skmt.ExecNonQuery("delete from PROIDID") + skmt.ExecNonQuery2("INSERT INTO PROIDID VALUES (?)", Array As Object(L_PROID.text)) + c=skmt.ExecQuery("Select count(*) as CUANTOSD from pedido where 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) AND CAT_DP_PRECIO > 0)") + c.Position =0 + If c.GetString("CUANTOSD") = 0 Then + Msgbox("No tiene venta el cliente para la promo", "ADVERTENCIA") + Else + c=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 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)") + C.Position =0 + TOT_ART_PROMO = C.GetString("TOT_ART_PROMO") + COSTO_TOT = C.GetString("COSTO_TOT") + C.Close + + c=skmt.ExecQuery("Select count(*) as CUANTOSD from pedido where 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) AND 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") + Else + c=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 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 AND CAT_DP_TIPO = 1)") + C.Position =0 + TOT_ART_PROMOR = C.GetString("TOT_ART_PROMO") + End If + C.Close + PROMO_C = PROMO_C * cantidad.Text + PROMO_CR = PROMO_CR * cantidad.Text + + If TOT_ART_PROMO = PROMO_C And TOT_ART_PROMOR = PROMO_CR Then + ' anterior a 29/06/2015 + 'skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_COSTOU = (?), PE_COSTO_TOT = PE_CANT * (?) WHERE 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_precio.text/(TOT_ART_PROMO/cantidad.Text),l_precio.text/(TOT_ART_PROMO/cantidad.Text))) + 'en pe_cedis meto el codigo de promocion para hacer esta validacion. + skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_CEDIS = (?) WHERE 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=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") + If D.RowCount>0 Then + For i=0 To D.RowCount -1 + D.Position=i + skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_COSTOU = (?), PE_COSTO_TOT = PE_CANT * (?) , PE_COSTO_SIN = (?) WHERE PE_PROID = (?) And PE_CEDIS In (Select PROIDID from PROIDID) AND PE_CLIENTE IN (Select CUENTA from cuentaa) ",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=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 AND CAT_DP_TIPO = 1") + If D.RowCount>0 Then + For i=0 To D.RowCount -1 + D.Position=i + skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_COSTOU = (?), PE_COSTO_TOT = PE_CANT * (?) , PE_COSTO_SIN = (?) WHERE PE_PROID = (?) And PE_CEDIS In (Select PROIDID from PROIDID) AND PE_CLIENTE IN (Select CUENTA from cuentaa) ",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=skmt.ExecQuery("Select CUENTA from cuentaa") + c.Position=0 + clie_id = c.GetString("CUENTA") + + c.Close + + If Main.tipov = "ABORDO" Then + c=skmt.ExecQuery("select CAT_CL_RUTA from kmt_info") + c.Position=0 + cl_ruta = c.GetString("CAT_CL_RUTA") + c.Close + + Else + c=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 + End If + + c=skmt.ExecQuery("select USUARIO from usuarioa") + c.Position=0 + usuario = c.GetString("USUARIO") + 'skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO) VALUES(?,?,?,?,?,?,?,?,?) ", Array As Object ("COACALCO",cantidad.Text * l_precio.Text, l_precio.text, cantidad.text, l_desc.text, L_PROID.Text,clie_id, sDate & sTime, usuario)) + 'para insertar la promo de ades el de regalo en 0 + e=skmt.ExecQuery("select count(*) as CUANTOS FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) and CAT_DP_TIPO = 0 AND CAT_DP_PRECIO = 0") + + If e.GetString("CUANTOS") > 0 Then + + F=skmt.ExecQuery("select CAT_DP_IDPROD, CAT_DP_PZAS FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) and CAT_DP_TIPO = 0 AND CAT_DP_PRECIO = 0") + 'se coloco el if por la mala promocion. + + For i=0 To F.RowCount -1 + F.Position=i + h=skmt.ExecQuery2("select CAT_GP_NOMBRE from " & query & " where CAT_GP_ID = ? ", Array As String(f.GetString("CAT_DP_IDPROD"))) + h.Position=0 + 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, f.GetString("CAT_DP_PZAS") * cantidad.text, h.GetString("CAT_GP_NOMBRE"), f.GetString("CAT_DP_IDPROD"),clie_id, sDate & sTime, usuario,cl_ruta,Main.tipov,precio2)) + 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 + 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,Main.tipov,precio2)) + 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") + End If + End If + + cantidad.Text = "" + Panel1.Visible= False + + skmt.ExecNonQuery("delete from pedido3") + skmt.ExecNonQuery("UPDATE PEDIDO SET PE_FOLIO = 0 where PE_FOLIO IS NULL") + + 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, PE_FOLIO ) 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, PE_FOLIO " & _ + " 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, PE_FOLIO ") + c=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 + 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 + skmt.ExecNonQuery("delete from pedido WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) ") + skmt.ExecNonQuery("INSERT INTO PEDIDO SELECT * FROM PEDIDO3") + + + else If l_marca.text = "PROMOS" And l_tipo.Text ="PROMOS" And PROMO_C = 0 Then + skmt.ExecNonQuery("delete from PROIDID") + + skmt.ExecNonQuery2("INSERT INTO PROIDID VALUES (?)", Array As Object(L_PROID.text)) + c=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=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=skmt.ExecQuery("select USUARIO from usuarioa") + c.Position=0 + usuario = c.GetString("USUARIO") + 'skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO) VALUES(?,?,?,?,?,?,?,?,?) ", Array As Object ("COACALCO",cantidad.Text * l_precio.Text, l_precio.text, cantidad.text, l_desc.text, L_PROID.Text,clie_id, sDate & sTime, usuario)) + 'para insertar la promo de ades el de regalo en 0 + e=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=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=skmt.ExecQuery2("select CAT_GP_NOMBRE from " & query & " where CAT_GP_ID = ? ", Array As String(f.GetString("CAT_DP_IDPROD"))) + h.Position=0 + 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,Main.tipov,precio2)) + 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 + 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,Main.tipov,precio2)) + 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=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 + skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") + 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"), Main.lon_gps, Main.lat_gps,ALMACEN,cl_ruta,c.GetString("TOTAL_CLIE_SIN"))) + If Main.tipov <> "ABORDO" Then + skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + End If + + Panel1.Visible= False + + skmt.ExecNonQuery("delete from pedido3") + skmt.ExecNonQuery("UPDATE PEDIDO SET PE_FOLIO = 0 where PE_FOLIO IS NULL") + + 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, PE_FOLIO ) 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, PE_FOLIO " & _ + " 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, PE_FOLIO ") + c=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 + 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 + skmt.ExecNonQuery("delete from pedido WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) ") + skmt.ExecNonQuery("INSERT INTO PEDIDO SELECT * FROM PEDIDO3") + + + Else + + DateTime.DateFormat = "MM/dd/yyyy" + sDate=DateTime.Date(DateTime.Now) + sTime=DateTime.Time(DateTime.Now) + c=skmt.ExecQuery("Select CUENTA from cuentaa") + c.Position=0 + clie_id = c.GetString("CUENTA") + c.Close + If Main.tipov = "ABORDO" Then + c=skmt.ExecQuery("select CAT_CL_RUTA from kmt_info") + c.Position=0 + cl_ruta = c.GetString("CAT_CL_RUTA") + c.Close + + Else + c=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 + End If + + + c=skmt.ExecQuery("select USUARIO from usuarioa") + c.Position=0 + usuario = c.GetString("USUARIO") + + 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,Main.tipov,precio2)) + skmt.ExecNonQuery2("update " & query & " set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cantidad.Text, L_PROID.Text)) + c=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 + skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") + 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"), Main.lon_gps, Main.lat_gps,ALMACEN,cl_ruta,c.GetString("TOTAL_CLIE_SIN"))) + If Main.tipov <> "ABORDO" Then + skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + + End If + Panel1.Visible= False + + skmt.ExecNonQuery("delete from pedido3") + skmt.ExecNonQuery("UPDATE PEDIDO SET PE_FOLIO = 0 where PE_FOLIO IS NULL") + + 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, PE_FOLIO ) 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, PE_FOLIO " & _ + " 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, PE_FOLIO ") + c=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 + 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 + skmt.ExecNonQuery("delete from pedido WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) ") + skmt.ExecNonQuery("INSERT INTO PEDIDO SELECT * FROM PEDIDO3") + + 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 Terminar_Click + + If cantidad.Text = "" Then + StartActivity(fila) + + ELSE If cantidad.Text > l_bodega.Text Then + Msgbox("Exede la existencia", "ADVERTENCIA") + Else If l_marca.text = "PROMOS" And l_tipo.Text ="PROMOS" And PROMO_C > 0 And cantidad.Text > 0 Then + skmt.ExecNonQuery("delete from PROIDID") + + skmt.ExecNonQuery2("INSERT INTO PROIDID VALUES (?)", Array As Object(L_PROID.text)) + c=skmt.ExecQuery("Select count(*) as CUANTOSD from pedido where 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) AND CAT_DP_PRECIO > 0)") + c.Position =0 + If c.GetString("CUANTOSD") = 0 Then + Msgbox("No tiene venta el cliente para la promo", "ADVERTENCIA") + Else + c=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 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)") + C.Position =0 + TOT_ART_PROMO = C.GetString("TOT_ART_PROMO") + COSTO_TOT = C.GetString("COSTO_TOT") + C.Close + + c=skmt.ExecQuery("Select count(*) as CUANTOSD from pedido where 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) AND 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") + Else + c=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 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 AND CAT_DP_TIPO = 1)") + C.Position =0 + TOT_ART_PROMOR = C.GetString("TOT_ART_PROMO") + End If + C.Close + + + PROMO_C = PROMO_C * cantidad.Text + PROMO_CR = PROMO_CR * cantidad.Text + + If TOT_ART_PROMO = PROMO_C And TOT_ART_PROMOR = PROMO_CR Then + ' anterior a 29/06/2015 + 'skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_COSTOU = (?), PE_COSTO_TOT = PE_CANT * (?) WHERE 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_precio.text/(TOT_ART_PROMO/cantidad.Text),l_precio.text/(TOT_ART_PROMO/cantidad.Text))) + 'en pe_cedis meto el codigo de promocion para hacer esta validacion. + skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_CEDIS = (?) WHERE 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=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") + If D.RowCount>0 Then + For i=0 To D.RowCount -1 + D.Position=i + + skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_COSTOU = (?), PE_COSTO_TOT = PE_CANT * (?) , PE_COSTO_SIN = (?) WHERE PE_PROID = (?) And PE_CEDIS In (Select PROIDID from PROIDID) AND PE_CLIENTE IN (Select CUENTA from cuentaa) ",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=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 AND CAT_DP_TIPO = 1") + If D.RowCount>0 Then + For i=0 To D.RowCount -1 + D.Position=i + + skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_COSTOU = (?), PE_COSTO_TOT = PE_CANT * (?) , PE_COSTO_SIN = (?) WHERE PE_PROID = (?) And PE_CEDIS In (Select PROIDID from PROIDID) AND PE_CLIENTE IN (Select CUENTA from cuentaa) ",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 + + + + 'skmt.ExecNonQuery("UPDATE PEDIDO SET PE_COSTO_TOT = 0.01 WHERE 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))") + + DateTime.DateFormat = "MM/dd/yyyy" + sDate=DateTime.Date(DateTime.Now) + sTime=DateTime.Time(DateTime.Now) + + c=skmt.ExecQuery("Select CUENTA from cuentaa") + c.Position=0 + clie_id = c.GetString("CUENTA") + + c.Close + + c=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=skmt.ExecQuery("select USUARIO from usuarioa") + c.Position=0 + usuario = c.GetString("USUARIO") + 'skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO) VALUES(?,?,?,?,?,?,?,?,?) ", Array As Object ("COACALCO",cantidad.Text * l_precio.Text, l_precio.text, cantidad.text, l_desc.text, L_PROID.Text,clie_id, sDate & sTime, usuario)) + 'para insertar la promo de ades el de regalo en 0 + e=skmt.ExecQuery("select count(*) as CUANTOS FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) and CAT_DP_TIPO = 0 AND CAT_DP_PRECIO = 0") + e.Position =0 + If e.GetString("CUANTOS") > 0 Then + F=skmt.ExecQuery("select CAT_DP_IDPROD, CAT_DP_PZAS FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID IN (Select PROIDID from PROIDID) and CAT_DP_TIPO = 0 AND CAT_DP_PRECIO = 0") + 'meter el otro + F.Position =0 + h=skmt.ExecQuery2("select CAT_GP_NOMBRE from " & query & " where CAT_GP_ID = ? ", Array As String(f.GetString("CAT_DP_IDPROD"))) + h.Position=0 + 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, f.GetString("CAT_DP_PZAS") * cantidad.text, h.GetString("CAT_GP_NOMBRE"), f.GetString("CAT_DP_IDPROD"),clie_id, sDate & sTime, usuario,cl_ruta,Main.tipov,precio2)) + 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 + f.Close + End If + e.Close + 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,Main.tipov,precio2)) + 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") + End If + End If + + cantidad.Text = "" + Panel1.Visible= False + + skmt.ExecNonQuery("delete from pedido3") + skmt.ExecNonQuery("UPDATE PEDIDO SET PE_FOLIO = 0 where PE_FOLIO IS NULL") + + 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, PE_FOLIO ) 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, PE_FOLIO " & _ + " 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, PE_FOLIO ") + c=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 + 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 + skmt.ExecNonQuery("delete from pedido WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) ") + skmt.ExecNonQuery("INSERT INTO PEDIDO SELECT * FROM PEDIDO3") + + StartActivity(fila) + else If l_marca.text = "PROMOS" And l_tipo.Text ="PROMOS" And PROMO_C = 0 Then + skmt.ExecNonQuery("delete from PROIDID") + + skmt.ExecNonQuery2("INSERT INTO PROIDID VALUES (?)", Array As Object(L_PROID.text)) + c=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=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=skmt.ExecQuery("select USUARIO from usuarioa") + c.Position=0 + usuario = c.GetString("USUARIO") + 'skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO) VALUES(?,?,?,?,?,?,?,?,?) ", Array As Object ("COACALCO",cantidad.Text * l_precio.Text, l_precio.text, cantidad.text, l_desc.text, L_PROID.Text,clie_id, sDate & sTime, usuario)) + 'para insertar la promo de ades el de regalo en 0 + e=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=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=skmt.ExecQuery2("select CAT_GP_NOMBRE from " & query & " where CAT_GP_ID = ? ", Array As String(f.GetString("CAT_DP_IDPROD"))) + h.Position=0 + 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,Main.tipov,precio2)) + 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 + 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,Main.tipov,precio2)) + 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=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 + skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") + 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"), Main.lon_gps, Main.lat_gps,ALMACEN,cl_ruta,c.GetString("TOTAL_CLIE_SIN"))) + skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + + + skmt.ExecNonQuery("delete from pedido3") + skmt.ExecNonQuery("UPDATE PEDIDO SET PE_FOLIO = 0 where PE_FOLIO IS NULL") + + 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, PE_FOLIO ) 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, PE_FOLIO " & _ + " 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, PE_FOLIO ") + c=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 + 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 + skmt.ExecNonQuery("delete from pedido WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) ") + skmt.ExecNonQuery("INSERT INTO PEDIDO SELECT * FROM PEDIDO3") + + StartActivity(fila) + + Else + + DateTime.DateFormat = "MM/dd/yyyy" + sDate=DateTime.Date(DateTime.Now) + sTime=DateTime.Time(DateTime.Now) + c=skmt.ExecQuery("Select CUENTA from cuentaa") + c.Position=0 + clie_id = c.GetString("CUENTA") + c.Close + c=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=skmt.ExecQuery("select USUARIO from usuarioa") + c.Position=0 + usuario = c.GetString("USUARIO") + + 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,Main.tipov,precio2)) + skmt.ExecNonQuery2("update " & query & " set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cantidad.Text, L_PROID.Text)) + c=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 + skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") + 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"), Main.lon_gps, Main.lat_gps,ALMACEN,cl_ruta,c.GetString("TOTAL_CLIE_SIN"))) + skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + Panel1.Visible= False + + skmt.ExecNonQuery("delete from pedido3") + skmt.ExecNonQuery("UPDATE PEDIDO SET PE_FOLIO = 0 where PE_FOLIO IS NULL") + + 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, PE_FOLIO ) 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, PE_FOLIO " & _ + " 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, PE_FOLIO ") + c=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 + 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 + skmt.ExecNonQuery("delete from pedido WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) ") + skmt.ExecNonQuery("INSERT INTO PEDIDO SELECT * FROM PEDIDO3") + + StartActivity(fila) + End If +End Sub +Sub i_fotol_Click + i_fotol.Visible = False + +End Sub + +Sub DESC_PROMO_Click + skmt.ExecNonQuery("delete from PROIDID") + skmt.ExecNonQuery2("INSERT INTO PROIDID VALUES (?)", Array As Object(L_PROID.text)) + + StartActivity(detalle_promo) +End Sub +Sub nopromo_Click + c=skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("CAMBIOS")) + c.Position =0 + CAMBIOS = c.GetString("CAT_VA_VALOR") + c.Close + If CAMBIOS = "1" Then + c=skmt.ExecQuery("select COUNT(*) AS CUANTOS from HIST_RMI WHERE HR_CLIENTE IN (Select CUENTA from cuentaa) and HR_PROID = '" & L_PROID.Text & "'") + c.Position =0 + EXISTE_CAMBIO = c.GetString("CUANTOS") + c.Close + If EXISTE_CAMBIO = 0 Then + EXISTE_CAMBIO = 0 + Else + c=skmt.ExecQuery("select SUM(HR_CANT) AS CUANTOS from HIST_RMI WHERE HR_CLIENTE IN (Select CUENTA from cuentaa) and HR_PROID = '" & L_PROID.Text & "'") + c.Position =0 + EXISTE_CAMBIO = c.GetString("CUANTOS") + c.Close + + End If + If EXISTE_CAMBIO = 0 Then + Msgbox("NO SE VENDIO ESTE PRODUCTO, NO SE PUEDE CAMBIAR","ALERTA") + ELSE If cantidad.Text = "" Then + Msgbox("Cantidad no puede ser 0","Cantidad") + Else If cantidad.Text > EXISTE_CAMBIO Then + Msgbox("Exede la existencia", "ADVERTENCIA") + Else + DateTime.DateFormat = "MM/dd/yyyy" + sDate=DateTime.Date(DateTime.Now) + sTime=DateTime.Time(DateTime.Now) + c=skmt.ExecQuery("Select CUENTA from cuentaa") + c.Position=0 + clie_id = c.GetString("CUENTA") + c=skmt.ExecQuery("select USUARIO from usuarioa") + c.Position=0 + usuario = c.GetString("USUARIO") + + 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,Main.tipov,precio2)) + 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 + + Else + If cantidad.Text > 15 Then + Msgbox("Exede la existencia", "ADVERTENCIA") + Else + DateTime.DateFormat = "MM/dd/yyyy" + sDate=DateTime.Date(DateTime.Now) + sTime=DateTime.Time(DateTime.Now) + c=skmt.ExecQuery("Select CUENTA from cuentaa") + c.Position=0 + clie_id = c.GetString("CUENTA") + c=skmt.ExecQuery("select USUARIO from usuarioa") + c.Position=0 + usuario = c.GetString("USUARIO") + + 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,Main.tipov,precio2)) + 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=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 \ No newline at end of file diff --git a/B4A/C_Productos2.bas b/B4A/C_Productos2.bas new file mode 100644 index 0000000..6ac5a66 --- /dev/null +++ b/B4A/C_Productos2.bas @@ -0,0 +1,1331 @@ +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 Gloals + Dim g As GPS + Dim ruta As String + Dim q_buscar As String + '// Globals + Dim c As Cursor + Dim c2 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 +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 +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) + 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_GUNAPROD2 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) + 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) + If Value = "PROMOS" And B4XPages.mainpage.Cliente.cuenta <> "N" Then + entro = "3" + marca = "PROMOS" + tipo = "PROMOS" + 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 + 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) ", 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)) + HACER_PEDIDO + 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 + If logger Then LogColor("BACK", Colors.Red) +' If Logger Then Log("entro=" & entro) +' If Logger Then Log("lvClic="&lvClic) + If TECLA_BACK = 1 Then entro ="2" +' If key=KeyCodes.KEYCODE_BACK Then + 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 + Return False + Else + If logger Then LogColor($"Entro=${entro} - BACK"$, Colors.Blue) + 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 & "%" + c=Starter.skmt.ExecQuery2("select CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO,CAT_GP_IMG 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) + ListView1.AddTwoLines(c.GetString("CAT_GP_NOMBRE"),"Existencia " & c.GetString("CAT_GP_ALMACEN") & " Precio $" & c.GetString("CAT_GP_PRECIO")) + Next + End If + c.Close + entro= "4" +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 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") + End If +End Sub + +Sub guardar_Click + 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 + Subs.guardaCambiosDeProducto(E_CAMBIO.text, l_desc.text, L_PROID.Text, precio2, query) + 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 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 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 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 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 not like 'PROMO%' 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 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 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 + 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 + Subs.guardaCambiosDeProducto(E_CAMBIO.text, l_desc.text, L_PROID.Text, precio2, query) + 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 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 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 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 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 PE_CEDIS not like 'PROMO%' 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 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 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 + 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 + Subs.guardaCambiosDeProducto(cantidad.Text, l_desc.text, L_PROID.Text, precio2, query) + 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 diff --git a/B4A/C_Promos.bas b/B4A/C_Promos.bas new file mode 100644 index 0000000..c0d40d1 --- /dev/null +++ b/B4A/C_Promos.bas @@ -0,0 +1,430 @@ +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 + Private l_promoDesc As Label + Private lv_prodsFijos As ListView + Private clv_prodsVariabes As CustomListView + Private l_prodsFijos As Label + Private l_prodsVariables As Label + Private i_prod As ImageView + Private l_prodX As Label + Private p_prods As Panel + Private b_prodMenos As Button + Private et_pCant As EditText + Private b_prodMas As Button + Private l_pCant As Label + Dim totalProds As Int = 0 + Dim prodsVarReq As Int = 0 + Dim prodsVarReq2 As Int = 0 + Dim totalCompra As Float = 0 + Dim prodsFijosTot As Float = 0 + Dim tpf As Int = 0 + Dim tpf2 As Int = 0 + Dim maxCantPromos As Int = 1 + Private l_totProds As Label + Private l_total As Label + Private b_terminar1 As Button + Private p_promociones As Panel + Dim prodsIds, prodsCants, prodsPrecios, prodsIds2, prodsCants2, prodsPrecios2 As List + Dim estaPromo, esteCliente As String + Private b_promoMas As Button + Private b_promoMenos As Button + Private et_promoCant As EditText + Private l_promosCant As Label + Private b_continuar As Button + Private p_prodsVariables As Panel + Dim laPromo = "", elCliente = "" As String + Dim prodsPedidoActual As String + Dim montoPedidoActual As String + Dim promosMap As Map +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("promociones") + promosMap.Initialize + p_promociones.Top=0 + p_promociones.Left=0 + p_promociones.Height=Root.Height + p_promociones.Width=Root.Width + b_terminar1.Left = Root.Width - (b_terminar1.Width + 10) + b_continuar.Left = Root.Width - b_terminar1.Width - (b_continuar.Width + 20) +End Sub + +Sub B4XPage_Appear +' LogColor(B4XPages.MainPage.productos.prodsMap, Colors.blue) + prodsIds.Initialize + prodsCants.Initialize + prodsPrecios.Initialize + prodsIds2.Initialize + prodsCants2.Initialize + prodsPrecios2.Initialize + Dim m As Map = Subs.traeTotalesClienteActual + prodsPedidoActual = m.Get("productos") + montoPedidoActual = m.Get("monto") + Log($"laPromo=${laPromo}, el cliente=${elCliente}"$) + If laPromo <> "" Then muestraPromo(laPromo, elCliente) +End Sub +'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. + +Sub muestraPromo(promo As String, cliente As String) + Log("muestraPromo:"&promo) + Private thisLog As Boolean = False +' If thisLog Then Log(promo) + estaPromo = promo + esteCliente = cliente + Private mp As Map = Subs.traePromo(promo, cliente) + If thisLog Then LogColor(mp, Colors.blue) + Private prodsPromo As Map = mp.Get("productos") 'Los productos de la promoción. +' Private invDispPromo As Map = Subs.traemosInventarioDisponibleParaPromo(promo) + Private invDispPromo As Map = Subs.restaFijosPromo(mp) + If thisLog Then Log($"invDispPromo=${invDispPromo}"$) + If thisLog Then Log("Max promos por inv de prods FIJOS: " & Subs.revisaMaxPromosProdsFijosPorInventario(mp)) + If thisLog Then Log("Max promos por inv de prods VARIABLES: " & Subs.revisaMaxPromosProdsVariablesPorInventario(mp)) + maxCantPromos = Subs.revisaMaxPromosProdsVariablesPorInventario(mp) + et_promoCant.Text = 1 + l_promosCant.text = "Max promos: " & maxCantPromos + Private cs As CSBuilder + cs.Initialize + If thisLog Then Log(mp) + If thisLog Then Log(prodsPromo) + 'Ponemos la promo y descripción. +' Dim desc As String = $"Promoción: ${promo}${CRLF}${mp.Get("descripcion")}"$ +' Dim desc As String = cs.append("Promocion: ").Color(Colors.RGB(100,149,237)).Append(promo).pop.append(CRLF).Append(mp.Get("descripcion")).Popall + l_promoDesc.Text = cs.Color(Colors.RGB(100,149,237)).append("Promocion: ").pop.append(CRLF).Append(promo).append(CRLF).Append(mp.Get("descripcion")).Popall + prodsFijosTot = 0 + 'Ponemos el texto en las etiquetas de la cantidad de productos. +' Dim pf As List = mp.Get("prodsFijos") + Dim pv As List = mp.Get("prodsVariables") + Dim listaPreciosPV As List = mp.Get("prodsVariablesPrecios") +' Logcolor(listaPreciosPV, Colors.red) + If thisLog Then Log(mp) + tpf = 0 + For Each pfp As Int In mp.Get("prodsFijosPiezas").As(List) + tpf = tpf + pfp + Next + tpf2 = tpf +' tpf = tpf * maxCantPromos + l_prodsFijos.Text = $"Productos fijos (${tpf})"$ + prodsVarReq = mp.Get("prodsVariablesRequeridos") + prodsVarReq2 = prodsVarReq + l_prodsVariables.Text = $"Productos variables requeridos: ${prodsVarReq}"$ + If prodsVarReq = 0 Then + p_prodsVariables.Visible = False + Else + p_prodsVariables.Visible = True + End If + 'Llenamos el listview con los productos fijos. + Dim label1 As Label + label1 = lv_prodsFijos.SingleLineLayout.Label + label1.TextSize = 13 + label1.TextColor = Colors.black + lv_prodsFijos.SingleLineLayout.ItemHeight = 30dip + lv_prodsFijos.Clear +' If pf.Size < 1 Then pf.Add("Sin productos fijos.") + lv_prodsFijos.Clear + agregaFijosALista(mp, True) + If thisLog Then Log("Total prods fijos = " & prodsFijosTot) +' If thisLog Then Log("======="&prodsMap) + l_totProds.text = $"Productos: ${tpf}"$ + l_total.Text = $"Total: $$1.2{prodsFijosTot}"$ +' Dim ins As InputStream +' Dim bmp As Bitmap +' Dim jpeg() As Byte + + 'Llenamos el listview con los productos variables. + If thisLog Then Log("Prods variables: " & pv) +' If thisLog Then Log("invDisp=" & invDispPromo) + clv_prodsVariabes.Clear + For Each p As String In pv + If invDispPromo.ContainsKey(p) Then 'Si no esta en la lista de productos con inventario no lo mostramos. + If thisLog Then Log("Prod Variable: " & invDispPromo.get(p)) + Private existenciaProdVariable As String = invDispPromo.get(p) +' c2.Position=i +' jpeg = c2.GetBlob("CAT_GP_IMG") +' ins.InitializeFromBytesArray(jpeg, 0, jpeg.Length) +' bmp.Initialize2(ins) + Private indicePV = pv.IndexOf(p) + Private estePrecio = listaPreciosPV.Get(indicePV) + Private thisProd As Map = prodsPromo.Get(p) + If thisLog Then Log(thisProd) + If existenciaProdVariable > 0 Then clv_prodsVariabes.Add(CreateListItem(Subs.traeProdNombre(p)&CRLF&"Hay " & invDispPromo.Get(p) & " $" & estePrecio, estePrecio, invDispPromo.Get(p), clv_prodsVariabes.AsView.Width, 50dip, Null, p), p) + End If + Next + b_terminar1.Visible = False + b_continuar.Visible = False + cuentaProds +End Sub + +'Agregamos los productos fijos a una lista para despues meterlos en el pedido. +Sub agregaFijosALista(mp As Map, addListItem As Boolean) + Private thisLog As Boolean = False + Private cont As Int = 0 + prodsFijosTot = 0 + Dim pf As List = mp.Get("prodsFijos") + If pf.Size < 1 Then pf.Add("Sin productos fijos.") +' Private m As Map +' prodsMap.Put(estaPromo, CreateMap("cant":1, "precio":0)) +' prodsIds.Add(estaPromo) + prodsIds.clear + prodsCants.clear + prodsPrecios.clear + prodsIds.Add(estaPromo) + prodsCants.Add(et_promoCant.text.As(Int)) + prodsPrecios.Add(0) + For Each p As String In pf +' Log($"cont=${cont}, mp=${mp}"$) + If mp.Get("prodsFijosPiezas").As(List).Size > 0 Then + Private tpi As String = mp.Get("prodsFijosPiezas").As(List).Get(cont) + Else + Private tpi As String = 0 + End If + If mp.Get("prodsFijosPrecios").As(List).Size > 0 Then + Private tpr As String = mp.Get("prodsFijosPrecios").As(List).Get(cont) + Else + Private tpr As String = 0 + End If + prodsFijosTot = prodsFijosTot + (tpi * tpr) + If thisLog Then Log("|"&tpi&"|"&p) + Private ntpi As Int = tpi * et_promoCant.text + If addListItem And tpi > 0 Then lv_prodsFijos.AddSingleLine(ntpi & " " & Subs.traeProdNombre(p) & " - $" & tpr) + cont = cont+1 +' m=CreateMap("cant":tpi, "precio":tpr) +' prodsMap.Put(p, m) + prodsIds.Add(p) + prodsCants.Add(tpi.As(Int)*et_promoCant.text.As(Int)) + prodsPrecios.Add(tpr) '*et_promoCant.text.As(Int) + Next +End Sub + +Sub CreateListItem(Text As String, precioU As String, inv As Int, Width As Int, Height As Int, img As Bitmap, prodId As String) As Panel 'ignore + Dim p As B4XView = xui.CreatePanel("") + p.SetLayoutAnimated(0, 0, 0, Width, Height) + p.LoadLayout("prodItem") + l_prodX.Text = Text + l_prodX.Tag = inv + l_prodX.TextSize = 13 + p_prods.Height = Height + l_prodX.Height = Height +' l_pCant.Text = 0 + l_pCant.Tag = precioU&"|"&inv&"|"&prodId + et_pCant.Tag = precioU&"|"&inv&"|"&prodId + et_pCant.BringToFront +' i_prod.Bitmap = img + Return p +End Sub + +Sub b_prodMenos_Click + Dim index As Int = clv_prodsVariabes.GetItemFromView(Sender) + Dim pnl0 As B4XView = clv_prodsVariabes.GetPanel(index) + Dim pnl As B4XView = pnl0.GetView(0) +' Dim laCant As B4XView = pnl.GetView(5) + Dim laCant As B4XView = pnl.GetView(2).GetView(4) +' Log($"precio|stock:${laCant.tag}"$) + laCant.Text = $"$1.0{laCant.Text-1}"$ + If laCant.Text < 0 Then laCant.Text = 0 + +' Log(Regex.Split("\|", laCant.tag)(0)) + Private precio As String = Regex.Split("\|", laCant.tag)(0) +' Private inv As String = Regex.Split("\|", laCant.tag)(1) + Private prodId As String = Regex.Split("\|", laCant.tag)(2) + Private tmpMap As Map = CreateMap("precio":precio, "cant":laCant.Text, "almacen":estaPromo) + Log(tmpMap) + promosMap.Put(prodId, tmpMap) + If laCant.Text = 0 Then promosMap.Remove(prodId) + LogColor(promosMap, Colors.Magenta) + cuentaProds +' l_total.Text = $"Total Compra: $$1.2{totalCompra}"$ +' l_totProds.text = $"Total Productos: ${totalProds}"$ +End Sub + +Sub b_prodMas_Click +' LogColor($"prodmas clic - ${Starter.cp_running}"$,Colors.Magenta) + If totalProds < prodsVarReq + tpf Then + Dim index As Int = clv_prodsVariabes.GetItemFromView(Sender) + Dim pnl0 As B4XView = clv_prodsVariabes.GetPanel(index) + Dim pnl As B4XView = pnl0.GetView(0) +' Dim laCant As B4XView = pnl.GetView(5) + Dim laCant As B4XView = pnl.GetView(2).GetView(4) +' Log($"precio|stock:${laCant.tag}"$) +' Log($"Indice: ${index}, cant:${laCant.Text+1}, precioU: ${laCant.tag}"$) + Dim esteTag As List = Regex.Split("\|", laCant.Tag) +' Log(esteTag) + If laCant.Text + 1 <= esteTag.get(1) Then + laCant.Text = $"$1.0{laCant.Text+1}"$ + cuentaProds + End If +' Log(Regex.Split("\|", laCant.tag)(0)) + Private precio As String = Regex.Split("\|", laCant.tag)(0) +' Private inv As String = Regex.Split("\|", laCant.tag)(1) + Private prodId As String = Regex.Split("\|", laCant.tag)(2) + Private tmpMap As Map = CreateMap("precio":precio, "cant":laCant.Text, "almacen":estaPromo) +' Log(tmpMap) + promosMap.Put(prodId, tmpMap) +' LogColor(promosMap, Colors.Magenta) + End If +' Log($"Total Prods: ${totalProds}, Total Compra: $$1.2{totalCompra}"$) +' l_total.Text = $"Total Compra: $$1.2{totalCompra}"$ +' l_totProds.text = $"Total Productos: ${totalProds}"$ +End Sub + +Private Sub et_pCant_TextChanged (Old As String, New As String) +' LogColor($"txt changed - ${Starter.cp_running}"$,Colors.Magenta) + cuentaProds +' Starter.cp_running = False +End Sub + +Sub cuentaProds +' Log("=====================================================") +' Log($"Inicia cuentaProds - ${Starter.cp_running}"$) +' Starter.cp_running = True + Private thisLog As Boolean = False + If thisLog Then LogColor($"ProdsFijos=${tpf}, totalProds=${totalProds}, totalCompra=${totalCompra}"$, Colors.Red) + prodsIds2.Clear + prodsCants2.Clear + prodsPrecios2.Clear + lv_prodsFijos.Clear + agregaFijosALista(Subs.traePromo(estaPromo, esteCliente), True) +' Log(prodsIds) + Private tcpf As Float = 0 'Total de compra de productos fijos. + For pf = 0 To prodsIds.Size - 1 + If thisLog Then Log($"${tcpf} + ${prodsCants.Get(pf)} * ${prodsPrecios.Get(pf)} = ${(prodsPrecios.Get(pf) * prodsCants.Get(pf))}"$) + tcpf = tcpf + (prodsPrecios.Get(pf) * prodsCants.Get(pf)) + Next +' Log("Total compra prodsFijos = " & tcpf) + totalCompra = tcpf + totalProds = tpf 'Cantidad total de productos fijos. + For i = 0 To clv_prodsVariabes.GetSize - 1 + Private p0 As B4XView = clv_prodsVariabes.GetPanel(i) + Private p As B4XView = p0.GetView(0) + Private cant1 As B4XView = p.GetView(2).GetView(4) +' If cant1.Text = "" Then cant1.Text = 0 + totalProds = totalProds + cant1.Text + Private esteTag As List = Regex.Split("\|", cant1.Tag) + If cant1.Text > esteTag.Get(1) Then cant1.Text = esteTag.Get(1) + If cant1.Text > 0 Then +' Log(esteTag.Get(2) & "|" & cant1.Text) + totalCompra = totalCompra + (esteTag.get(0) * cant1.text) + If thisLog Then Log($"Cant: ${cant1.Text}, Suma: ${totalCompra}"$) + prodsIds2.Add(esteTag.Get(2)) + prodsCants2.Add(cant1.Text) + prodsPrecios2.Add(esteTag.get(0)) + End If + l_total.Text = $"Total: $$1.2{totalCompra}"$ + l_totProds.text = $"Productos: ${totalProds}"$ + Next + If thisLog Then Log($"Total Prods: ${totalProds}, Total: $$1.2{totalCompra}"$) + l_total.Text = $"Total: $$1.2{totalCompra}"$ + l_totProds.text = $"Productos: ${totalProds}"$ + If totalProds < prodsVarReq + tpf Or totalProds > prodsVarReq + tpf Then +' Log("INCOMPLETA") + b_terminar1.Visible = False + b_continuar.Visible = False + Else +' Log("COMPLETA") + b_terminar1.Visible = True + b_continuar.Visible = True + End If + If thisLog Then LogColor($"${prodsIds}${CRLF}${prodsCants}${CRLF}${prodsPrecios}"$, Colors.blue) + If thisLog Then LogColor($"${prodsIds2}${CRLF}${prodsCants2}${CRLF}${prodsPrecios2}"$, Colors.Magenta) +' LogColor($"Total Prods: ${totalProds}, Total: $$1.2{totalCompra}"$, Colors.Blue) +' Log($"Termina cuentaProds - ${Starter.cp_running}"$) +End Sub + +Private Sub et_pCant_FocusChanged (HasFocus As Boolean) +' LogColor("Focus changed", Colors.Magenta) + cuentaProds +' Starter.cp_running = False +End Sub + +Private Sub b_promoMenos_Click + If et_promoCant.Text > 1 Then + et_promoCant.Text = et_promoCant.Text.As(Int) - 1 + End If + l_prodsFijos.Text = $"Productos fijos (${tpf2 * et_promoCant.Text.As(Int)})"$ + l_prodsVariables.Text = $"Productos variables requeridos: ${prodsVarReq2 * et_promoCant.Text.As(Int)}"$ + tpf = tpf2 * et_promoCant.Text.As(Int) + prodsVarReq = prodsVarReq2 * et_promoCant.Text.As(Int) + Log($"Max promos=${et_promoCant.Text.As(Int)}, Prods fijos=${tpf}, "$) + cuentaProds +End Sub + +Private Sub b_promoMas_Click + If et_promoCant.Text < maxCantPromos Then + et_promoCant.Text = et_promoCant.Text.As(Int) + 1 + l_prodsFijos.Text = $"Productos fijos (${tpf2 * et_promoCant.Text.As(Int)})"$ + l_prodsVariables.Text = $"Productos variables requeridos: ${prodsVarReq2 * et_promoCant.Text.As(Int)}"$ + tpf = tpf2 * et_promoCant.Text.As(Int) + prodsVarReq = prodsVarReq2 * et_promoCant.Text.As(Int) + Log($"Max promos=${et_promoCant.Text.As(Int)}, Prods fijos=${tpf}, "$) + End If + If et_promoCant.text > maxCantPromos Then et_promoCant.Text = maxCantPromos + cuentaProds +End Sub + +Private Sub b_terminar1_Click + cuentaProds +' Log("====================================================================") +' Log($"${prodsIds}${CRLF}${prodsCants}${CRLF}${prodsPrecios}"$) + For t = 0 To prodsIds.Size - 1 'Guardamos los productos fijos de la promocion en pedido. + Private pn As String = Subs.traeProdNombre(prodsIds.Get(t)) + If prodsCants.Get(t) > 0 Then Subs.guardaProductoSinGestion(estaPromo, prodsPrecios.Get(t), prodsCants.Get(t), pn, prodsIds.Get(t), Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, Starter.tipov) + Next + For t = 0 To prodsIds2.Size - 1 'Guardamos los productos variables de la promocion en pedido. + Private pn As String = Subs.traeProdNombre(prodsIds2.Get(t)) + Subs.guardaProductoSinGestion(estaPromo, prodsPrecios2.Get(t), prodsCants2.Get(t), pn, prodsIds2.Get(t), Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, Starter.tipov) + Next + lv_prodsFijos.Clear + B4XPages.MainPage.bTerminarClicked = True + B4XPages.ShowPage("productos") + B4XPages.MainPage.productos.b_terminar1_Click +End Sub + +Private Sub b_continuar_Click + cuentaProds + Log("====================================================================") +' Log($"${prodsIds}${CRLF}${prodsCants}${CRLF}${prodsPrecios}"$) + For t = 0 To prodsIds.Size - 1 'Guardamos los productos fijos de la promocion en pedido. + Private pn As String = Subs.traeProdNombre(prodsIds.Get(t)) + Subs.guardaProductoSinGestion(estaPromo, prodsPrecios.Get(t), prodsCants.Get(t), pn, prodsIds.Get(t), Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, Starter.tipov) + Next + For t = 0 To prodsIds2.Size - 1 'Guardamos los productos variables de la promocion en pedido. + Private pn As String = Subs.traeProdNombre(prodsIds2.Get(t)) + Subs.guardaProductoSinGestion(estaPromo, prodsPrecios2.Get(t), prodsCants2.Get(t), pn, prodsIds2.Get(t), Subs.traeCliente, Subs.traeFecha, Subs.traeUsuarioDeBD, Subs.traeRuta, 0, Starter.tipov) + Next + lv_prodsFijos.Clear +' Activity_KeyPress(KeyCodes.KEYCODE_BACK) +' CallSubDelayed2(productos, "Activity_KeyPress", KeyCodes.KEYCODE_BACK) + Private prodspage As C_Productos + If prodspage.IsInitialized Then + prodspage.lv_catalogos.Visible = True + prodspage.lv_promos.Visible = False + prodspage.clv_productos.AsView.Visible = False + End If + B4XPages.MainPage.bTerminarClicked = True + B4XPages.ShowPage("productos") +End Sub + +'Sub Activity_KeyPress (key As Int) As Boolean 'ignore +' ' BACK key pressed +' Log("Keypress") +' If key=KeyCodes.KEYCODE_BACK Then +' Log("BACK") +' Return False +' End If +' Return False +' ' Returning False signals the system to handle the key +'End Sub \ No newline at end of file diff --git a/B4A/C_Promos2.bas b/B4A/C_Promos2.bas new file mode 100644 index 0000000..36fa8d1 --- /dev/null +++ b/B4A/C_Promos2.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_Subs.bas b/B4A/C_Subs.bas new file mode 100644 index 0000000..188e185 --- /dev/null +++ b/B4A/C_Subs.bas @@ -0,0 +1,436 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=12.2 +@EndOfDesignText@ +Sub Class_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 + Private EventName As String 'ignore + Private CallBack As Object 'ignore + Dim phn As Phone + Dim devModel As String + Dim db, kmt, errorLog As SQL 'Requiere la libreria "SQL" 'ignore +' Dim wifi As MLwifi + Dim ssid As String 'ignore + Private subsLogs As Boolean = False +End Sub + +'You can add more parameters here. +Public Sub Initialize (vCallback As Object, vEventName As String) As Object + EventName = vEventName + CallBack = vCallback + Return Me +End Sub + +'Inicializa la BD con "kmt.db" en File.DirInternal, si el archivo no existe, lo copia desde File.DirAssets. +'Dispara el evento "dbOk" cuando termina. +Sub dbInit As SQL + If File.Exists(File.DirInternal, "kmt.db") = False Then File.Copy(File.DirAssets, "kmt.db", File.DirInternal, "kmt.db") + db.Initialize(File.DirInternal,"kmt.db", True) + dbOk(True) + Return db +End Sub + +Sub dbOk(Success As Boolean) + If SubExists(CallBack, EventName & "_dbOk") Then + CallSub2(CallBack, EventName & "_dbOk", Success) + End If +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 +' 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 +' Log("Leemos id de "&File.DirInternal&"/phnId.txt") +' Log(devModel) + End If + Return devModel +End Sub + +'Convierte una fecha al formato yyMMddHHmmss +Sub fechaKMT(fecha As String) As String 'ignore +' 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 +' Log(nuevaFecha) + Return nuevaFecha +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.DirRootExternal, "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 subsLogs Then Log("LatLon="&latlon) + kmt.ExecNonQuery2("INSERT INTO RUTA_GPS(FECHA, LAT, LON) VALUES (?,?,?)", Array As Object (latlon(2),latlon(0),latlon(1))) + Catch + LogColor(LastException, Colors.red) + End Try +End Sub + +'Limpiamos la tabla RUTA_GPS de la BD +Sub deleteGPS_DB 'ignore + kmt.ExecNonQuery("delete from RUTA_GPS") + kmt.ExecNonQuery("vacuum;") + ToastMessageShow("Borramos BD Coords GPS", False) +End Sub + +'Limpiamos la tabla errorLog de la BD +Sub deleteErrorLog_DB 'ignore + errorLog.ExecNonQuery("delete from errores") + errorLog.ExecNonQuery("vacuum;") + ToastMessageShow("BD Errores Borrada", False) +End Sub + +'Mandamos "coords" en un mensaje a "Sprvsr" +'Sub mandamosLoc(coords As String) 'ignore +'' Log("Iniciamos mandamosLoc "&coords) +'' 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, "mt":Main.montoActual) +' 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 + Log("Hoy="&h) + Return h +End Sub + +'Guardamos "texto" a la bitacora +Sub log2DB(texto As String) 'ignore + LogColor(fechaKMT(DateTime.Now)&" - log2BD: '"&texto&"'", Colors.LightGray) + kmt.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 + ' 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 + ' Log("+++ +++ "&fechaKMT(fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute) & " < " & fechaKMT(DateTime.Now)) + Return True + Else + ' 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 + LogColor("Borramos BD de log", Colors.Magenta) + kmt.ExecNonQuery("delete from bitacora") + kmt.ExecNonQuery("vacuum;") +End Sub + +'Monitoreamos los servicios para ver si estan activos (No pausados), y si no, los reniciamos +'Sub Monitor 'ignore +' Private monitorStatus As Boolean = True +' 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 +' CallSubDelayed(Tracker, "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 + +'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) + 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) + 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 + ToastMessageShow("copiaDB", False) + If result Then + Dim p As String + If File.ExternalWritable Then + p = File.DirRootExternal +' Log("Externo") + Else + p = File.DirInternal +' Log("Interno") + End If + Dim theDir As String + Try + File.MakeDir(File.DirRootExternal,"kmts") + theDir = "/kmts" + Catch + theDir = "" + End Try + Try + File.Copy(File.DirInternal,"kmt.db",File.DirRootExternal&theDir,"cedex_kmt.db") + File.Copy(File.DirInternal,"errorLog.db",File.DirRootExternal&theDir,"cedex_errorLog.db") + ToastMessageShow("BD copiada!", False) + Catch + ToastMessageShow("No se pudo hacer la copia: "&LastException, True) + End Try + Log("rootExternal="&p) + Log("File.DirInternal="&File.DirInternal) + Log("File.DirRootExternal="&File.DirRootExternal) + Else + ToastMessageShow("Sin permisos", False) + End If +End Sub + +'Hace visible y trae al frente 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 + +'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 horizontalmente dentro de un elemento superior. +Sub centraPanel(elemento As Panel, anchoElementoSuperior As Int) 'ignore + elemento.Left = Round(anchoElementoSuperior/2)-(elemento.Width/2) +End Sub + +'Centra un panel verticalmente dentro de un elemento superior. +Sub centraPanelV(elemento As Panel, altoElementoSuperior As Int) 'ignore + elemento.Top = Round(altoElementoSuperior/2)-(elemento.Height/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 + +'Regresa el usuario de la tabla USUARIOA si es que existe, si no existe, regresa "SinUsuario". +Sub buscaDBUsuario As String 'ignore + Private c As Cursor + Private usuario As String = "SinUsuario" + c=kmt.ExecQuery("select USUARIO from usuarioa") + c.Position=0 + If c.RowCount > 0 Then usuario = c.GetString("USUARIO") + Return usuario +End Sub + +'Regresa la fecha en el formato "MM/dd/yyyy" +Sub traeFecha As String 'ignore + DateTime.DateFormat = "MM/dd/yyyy" + Private sDate As String = DateTime.Date(DateTime.Now) + Private sTime As String = DateTime.Time(DateTime.Now) + Return sDate & sTime +End Sub + +'Guarda el nombre y version de la app en CAT_VARIABLES. +Sub guardaAppInfo(skmt As SQL) 'ignore + skmt.ExecNonQuery("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'EMPRESA' or CAT_VA_DESCRIPCION = 'APP_NAME' or CAT_VA_DESCRIPCION = 'APP_VERSION'") + skmt.ExecNonQuery($"insert into CAT_VARIABLES (CAT_VA_DESCRIPCION, CAT_VA_VALOR) values ('APP_NAME', '${Application.LabelName}')"$) + skmt.ExecNonQuery($"insert into CAT_VARIABLES (CAT_VA_DESCRIPCION, CAT_VA_VALOR) values ('APP_VERSION', '${Application.VersionName}')"$) +End Sub + +'Muestra en el Log los campos y valores que regresan en el JobDone. +Sub logJobDoneResultados(resultado As DBResult) 'ignore + For Each records() As Object In resultado.Rows + LogColor($"====== ${resultado.Tag} - REGISTROS = ${resultado.Rows.Size}"$, Colors.RGB(215,37,0)) + For Each k As String In resultado.Columns.Keys + LogColor(k & " = " & records(resultado.Columns.Get(k)), Colors.RGB(215,37,0)) + Next + Next +End Sub + +'Regresa la base de datos especificada ya inicializada. +Sub inicializaBD(ruta As String, BDName As String) As SQL + Dim skmt As SQL + If File.Exists(ruta, BDName) = False Then + File.Copy(File.DirAssets, BDName, ruta, BDName) + LogColor($"Copiamos ${BDName} de ${File.DirAssets} a ${ruta}"$,Colors.Green) + End If + skmt.Initialize(ruta, BDName, True) + Return skmt +End Sub + +'Agrega una columna a la tabla especificada. +'Hay que indicar el "tipo" de la columna (TEXT, INTEGER, ETC) +'Ej. agregaColumna("TABLA", "COLUMNA", "TIPO") +Sub agregaColumna(tabla As String, columna As String, tipo As String) 'ignore + Try 'Intentamos usar "pragma_table_info" para revisar si existe la columna en la tabla + Private c As Cursor = Starter.db.ExecQuery($"SELECT COUNT(*) AS fCol FROM pragma_table_info('${tabla}') WHERE name='${columna}'"$) + c.Position = 0 + If c.GetString("fCol") = 0 Then 'Si no esta la columna la agregamos + Starter.db.ExecNonQuery($"ALTER TABLE ${tabla} ADD COLUMN ${columna} ${tipo}"$) + Log($"Columna "${columna} ${tipo}", agregada a "${tabla}"."$) + End If + Catch 'Si no funciona "pragma_table_info" lo hacemos con try/catch + Try + Starter.db.ExecNonQuery($"ALTER TABLE ${tabla} ADD COLUMN ${columna} ${tipo}"$) + Log($"Columna "${columna} ${tipo}", agregada a "${tabla}".."$) + Catch + Log(LastException) + End Try + End Try +End Sub + +'Regresa el DBReqServer desde CAT_VARIABLES o "N/A" si no existe. +Sub traeDBReqServerDeBD As String 'ignore + Dim srvr As String = "N/A" + Dim rs As ResultSet = Starter.db.ExecQuery("select valor from cat_variables where nombre = 'servidor'") + If rs.RowCount > 0 Then + rs.NextRow + srvr = rs.GetString("valor") + End If + Return srvr +End Sub + +'Regresa el valor de intervalo desde CAT_VARIABLES o "30" si no existe. +Sub traeIntervaloDeBD As String 'ignore + Dim intrvl As String = "30" + Dim rs As ResultSet = Starter.db.ExecQuery("select valor from cat_variables where nombre = 'intervalo'") + If rs.RowCount > 0 Then + rs.NextRow + intrvl = rs.GetString("valor") + End If + Return intrvl +End Sub + +'Regresa el valor timeout desde CAT_VARIABLES o "9000" si no existe. +Sub traeTimeoutDeBD As String 'ignore + Dim tmout As String = "9000" + Dim rs As ResultSet = Starter.db.ExecQuery("select valor from cat_variables where nombre = 'timeout'") + If rs.RowCount > 0 Then + rs.NextRow + tmout = rs.GetString("valor") + End If + Return tmout +End Sub + +'Crea una notificación con el "body" dado y regresa el objeto. +Sub CreateNotification (Body As String) As Notification + Dim notification As Notification + notification.Initialize2(notification.IMPORTANCE_LOW) + notification.Icon = "icon" + notification.SetInfo("Tester", Body, Main) + Return notification +End Sub + +'Genera una notificacion con importancia alta +Sub notiHigh(title As String, body As String, id As String, activity As Object) 'ignore + activity = Main + Private notif As Notification + notif.Initialize2(notif.IMPORTANCE_HIGH) + notif.Icon = "icon" + notif.Vibrate = False + notif.Sound = False + notif.AutoCancel = True +' If logger Then Log("notiHigh: "&title) + notif.SetInfo(title, body, activity) +' Log("notiHigh SetInfo") + notif.Notify(id) +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) +' Log("notiLowReturn: "&title) + notification.Icon = "icon" + notification.Sound = False + notification.Vibrate = False + notification.SetInfo(title, Body, Main) + notification.Notify(id) +' Log("notiLowReturn SetInfo") + Return notification +End Sub \ No newline at end of file diff --git a/B4A/C_TicketsDia.bas b/B4A/C_TicketsDia.bas new file mode 100644 index 0000000..82c48c7 --- /dev/null +++ b/B4A/C_TicketsDia.bas @@ -0,0 +1,149 @@ +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 + 'These global variables will be declared once when the application starts. + 'These variables can be accessed from all modules. + Dim skmt As SQL + 'These global variables will be redeclared each time the activity is created. + 'These variables can only be accessed from this module. + Dim c As Cursor + Dim ruta As String + Dim ListView1 As ListView + Dim b_noventa As Button + Dim nombre_boton As String +End Sub + +Private Sub B4XPage_Created (Root1 As B4XView) + Root = Root1 + Root.LoadLayout("buscar") + ruta = File.DirInternal + + ' se crea o no el archivo de la base de ddatos de kmt + 'NOTAS SI SE MODIFICA LA ESTRUCTURA SE QUITA EL IF Y SE VA DIRECTO A LA SENTENCIA FILE.COPY PARA QUE + 'TOME LA NUEVA ESTRUCTURA ES MUY IMPORTANTE TENER EL IF DE LO CONTRARIO SOLO LO ESCRIBE UNA VEZ Y LO BORRA + 'SI SE REGRESA A ESTE ACTIVIDAD. + 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) + + c=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 = 10 + label1.TextColor = Colors.Black + Dim label2 As Label + label2 = ListView1.TwoLinesLayout.SecondLabel + label2.TextSize = 15 + label2.TextColor = Colors.Blue + ListView1.AddTwoLines(c.GetString("PC_CLIENTE"),"Cantidad #"& c.GetString("PC_NOART")& " SubTotal $"& c.GetString("PC_MONTO")) + Next + End If + 'la_no_ird.Text = c.GetString("PR_CF_SALDO_ACORT") + + + 'ListView1.AddTwoLines(c.GetString("pr_cd_nombre"),c.GetString("pr_cd_colonia")) + ' Next + 'End If + +End Sub + +Sub B4XPage_Appear + nombre_boton = "NOVENTA" + c=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.Blue + 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 Sub + +Sub Regresar_Click + 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 + StartActivity(seleccion) + '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) + skmt.ExecNonQuery("delete from CUENTAA") + skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(Value)) + StartActivity(fila) +End Sub + +Sub b_noventa_Click + If nombre_boton = "NOVENTA" Then + nombre_boton = "VENTA" + b_noventa.Text ="VENTA" + + c=skmt.ExecQuery("select NV_CLIENTE,NV_MOTIVO,NV_COMM 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.Blue + ListView1.AddTwoLines(c.GetString("NV_CLIENTE"),"Motivo #"& c.GetString("NV_MOTIVO")& " Comentario $"& c.GetString("NV_COMM")) + Next + End If + Else + nombre_boton = "NOVENTA" + b_noventa.Text ="NO VENTA" + c=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.Blue + 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..8960471 --- /dev/null +++ b/B4A/CameraExClass.bas @@ -0,0 +1,294 @@ +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/Durakelo.b4a b/B4A/Durakelo.b4a new file mode 100644 index 0000000..7a969f3 --- /dev/null +++ b/B4A/Durakelo.b4a @@ -0,0 +1,239 @@ +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=logo2_192x192.png +File25=MainPage.bal +File26=Malo.jpg +File27=mapas.bal +File28=nota.bal +File29=noventa.bal +File3=alerta_amarilla.png +File30=nuevocliente.bal +File31=palomita_verde.png +File32=pedidoItem.bal +File33=planfia_logo.png +File34=principal.bal +File35=proditem.bal +File36=productos.bal +File37=productos2.bal +File38=profina.jpg +File39=promociones.bal +File4=BLACNCO.jpg +File40=rechazo.jpg +File41=salma.jpg +File42=senial.jpg +File43=sync.png +File44=ticketsDia.bal +File45=Tiendita.jpg +File46=transporte.png +File47=vista1.png +File48=vista2.png +File49=vista3.png +File5=carrito.png +File50=vista4.png +File51=WhatsApp Image 2022-11-17 at 11.50.59 AM.jpg +File52=whatsapp.png +File53=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 +FileGroup52=Default Group +FileGroup53=Default Group +FileGroup6=Default Group +FileGroup7=Default Group +FileGroup8=Default Group +FileGroup9=Default Group +Group=Default Group +Library1=appupdating +Library10=fusedlocationprovider +Library11=googlemaps +Library12=googlemapsextras +Library13=gps +Library14=ime +Library15=json +Library16=pdfium +Library17=phone +Library18=preoptimizedclv +Library19=randomaccessfile +Library2=b4xpages +Library20=reflection +Library21=runtimepermissions +Library22=serial +Library23=sql +Library24=stringutils +Library25=togglelibrary +Library26=websocket +Library27=xcustomlistview +Library28=xui +Library29=zxing_scanner +Library3=baqrcode +Library4=bitmapcreator +Library5=byteconverter +Library6=camera +Library7=contentresolver +Library8=core +Library9=fileprovider +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~)~\n~AddManifestText(~\n~~\n~)~\n~AddManifestText(~\n~~\n~)~\n~AddPermission(android.permission.ACCESS_FINE_LOCATION)~\n~AddPermission(android.permission.BLUETOOTH_ADVERTISE)~\n~AddPermission(android.permission.BLUETOOTH_CONNECT)~\n~AddPermission(android.permission.BLUETOOTH_SCAN)~\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~ AddApplicationText(~\n~ ~\n~ ~\n~ ~\n~ )~\n~ CreateResource(xml, provider_paths,~\n~ ~\n~ ~\n~ ~\n~ ~\n~ ~\n~ )~\n~~\n~'Si al cargar un mapa de google manda este error "java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/ProtocolVersion". agregar la siguiente linea:~\n~AddApplicationText()~\n~SetApplicationAttribute(android:allowBackup, "false")~\n~AddManifestText() +Module1=B4XMainPage +Module10=C_Productos +Module11=C_Promos +Module12=C_Subs +Module13=C_TicketsDia +Module14=C_updateAvailable +Module15=CameraExClass +Module16=DBRequestManager +Module17=DownloadService +Module18=errorManager +Module19=EscPosPrinter +Module2=C_Cliente +Module20=foto +Module21=MAPA_RUTAS +Module22=SD_Spinner +Module23=Starter +Module24=Subs +Module25=Tracker +Module3=C_Clientes +Module4=C_Historico +Module5=C_Mapas +Module6=C_Nota +Module7=C_NoVenta +Module8=C_NuevoCliente +Module9=C_Principal +NumberOfFiles=53 +NumberOfLibraries=29 +NumberOfModules=25 +Version=12.5 +@EndOfDesignText@ +#Region Project Attributes + #ApplicationLabel: Kelloggs Venta + #VersionCode: 3000 + #VersionName: 3.09.19 PRUEBA V4 + #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/Durakelo.b4a.meta b/B4A/Durakelo.b4a.meta new file mode 100644 index 0000000..bd3db4b --- /dev/null +++ b/B4A/Durakelo.b4a.meta @@ -0,0 +1,81 @@ +ModuleBookmarks0= +ModuleBookmarks1= +ModuleBookmarks10= +ModuleBookmarks11= +ModuleBookmarks12= +ModuleBookmarks13= +ModuleBookmarks14= +ModuleBookmarks15= +ModuleBookmarks16= +ModuleBookmarks17= +ModuleBookmarks18= +ModuleBookmarks19= +ModuleBookmarks2= +ModuleBookmarks20= +ModuleBookmarks21= +ModuleBookmarks22= +ModuleBookmarks23= +ModuleBookmarks24= +ModuleBookmarks25= +ModuleBookmarks3= +ModuleBookmarks4= +ModuleBookmarks5= +ModuleBookmarks6= +ModuleBookmarks7= +ModuleBookmarks8= +ModuleBookmarks9= +ModuleBreakpoints0= +ModuleBreakpoints1= +ModuleBreakpoints10= +ModuleBreakpoints11= +ModuleBreakpoints12= +ModuleBreakpoints13= +ModuleBreakpoints14= +ModuleBreakpoints15= +ModuleBreakpoints16= +ModuleBreakpoints17= +ModuleBreakpoints18= +ModuleBreakpoints19= +ModuleBreakpoints2= +ModuleBreakpoints20= +ModuleBreakpoints21= +ModuleBreakpoints22= +ModuleBreakpoints23= +ModuleBreakpoints24= +ModuleBreakpoints25= +ModuleBreakpoints3= +ModuleBreakpoints4= +ModuleBreakpoints5= +ModuleBreakpoints6= +ModuleBreakpoints7= +ModuleBreakpoints8= +ModuleBreakpoints9= +ModuleClosedNodes0= +ModuleClosedNodes1= +ModuleClosedNodes10=1,4 +ModuleClosedNodes11= +ModuleClosedNodes12= +ModuleClosedNodes13=2 +ModuleClosedNodes14= +ModuleClosedNodes15= +ModuleClosedNodes16= +ModuleClosedNodes17= +ModuleClosedNodes18= +ModuleClosedNodes19= +ModuleClosedNodes2=1,2,4,28,29,30,31,32,33 +ModuleClosedNodes20= +ModuleClosedNodes21= +ModuleClosedNodes22= +ModuleClosedNodes23= +ModuleClosedNodes24= +ModuleClosedNodes25= +ModuleClosedNodes3=1,3 +ModuleClosedNodes4=1,4,5,7,8,9 +ModuleClosedNodes5= +ModuleClosedNodes6=1,2,3 +ModuleClosedNodes7=2 +ModuleClosedNodes8= +ModuleClosedNodes9=1,2 +NavigationStack=C_Nota,b_desc_Click,322,0,C_Principal,B4XPage_Appear,467,0,C_Principal,JobDone,1646,0,C_Principal,e_ruta_EnterPressed,2039,0,C_Principal,B_OK_PAS_Click,2185,0,C_Productos,Activity_KeyPress,236,0,C_Clientes,Activity_KeyPress,112,0,Main,Activity_Resume,46,0,Main,Activity_KeyPress,41,0,B4XMainPage,Class_Globals,35,0,C_Promos,b_continuar_Click,423,0 +SelectedBuild=0 +VisibleModules=1,9,2,6,10,3,11 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..42041bd Binary files /dev/null and b/B4A/Files/cliente.bal differ diff --git a/B4A/Files/cliente.bal.bak b/B4A/Files/cliente.bal.bak new file mode 100644 index 0000000..6bf71a0 Binary files /dev/null and b/B4A/Files/cliente.bal.bak differ diff --git a/B4A/Files/clientes.bal b/B4A/Files/clientes.bal new file mode 100644 index 0000000..1e03596 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..6e4ae6f 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/kelloggs_chico.png b/B4A/Files/kelloggs_chico.png new file mode 100644 index 0000000..86237b6 Binary files /dev/null and b/B4A/Files/kelloggs_chico.png differ diff --git a/B4A/Files/kelloggs_original.png b/B4A/Files/kelloggs_original.png new file mode 100644 index 0000000..dc27268 Binary files /dev/null and b/B4A/Files/kelloggs_original.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..da11282 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_192x192.png b/B4A/Files/logo_192x192.png new file mode 100644 index 0000000..5f37d45 Binary files /dev/null and b/B4A/Files/logo_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/nota.bal b/B4A/Files/nota.bal new file mode 100644 index 0000000..43a2a81 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..a5150c0 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..e235a2f Binary files /dev/null and b/B4A/Files/palomita_verde.png differ diff --git a/B4A/Files/palomita_verde_original.png b/B4A/Files/palomita_verde_original.png new file mode 100644 index 0000000..f8e11e6 Binary files /dev/null and b/B4A/Files/palomita_verde_original.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/pedidoitem.bal b/B4A/Files/pedidoitem.bal new file mode 100644 index 0000000..4edaba3 Binary files /dev/null and b/B4A/Files/pedidoitem.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..f810c55 Binary files /dev/null and b/B4A/Files/principal.bal differ diff --git a/B4A/Files/proditem.bal b/B4A/Files/proditem.bal new file mode 100644 index 0000000..dc03e73 Binary files /dev/null and b/B4A/Files/proditem.bal differ diff --git a/B4A/Files/productos.bal b/B4A/Files/productos.bal new file mode 100644 index 0000000..de5aa63 Binary files /dev/null and b/B4A/Files/productos.bal differ diff --git a/B4A/Files/productos2.bal b/B4A/Files/productos2.bal new file mode 100644 index 0000000..7e954d6 Binary files /dev/null and b/B4A/Files/productos2.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/promociones.bal b/B4A/Files/promociones.bal new file mode 100644 index 0000000..0adcb28 Binary files /dev/null and b/B4A/Files/promociones.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..20aad1d Binary files /dev/null and b/B4A/Files/tache_rojo.png differ diff --git a/B4A/Files/tache_rojo_original.png b/B4A/Files/tache_rojo_original.png new file mode 100644 index 0000000..2f5f59d Binary files /dev/null and b/B4A/Files/tache_rojo_original.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..38201c7 Binary files /dev/null and b/B4A/Files/whatsapp.png differ diff --git a/B4A/Files/whatsapp_original.png b/B4A/Files/whatsapp_original.png new file mode 100644 index 0000000..9fe9a80 Binary files /dev/null and b/B4A/Files/whatsapp_original.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/MAPA_RUTAS.bas b/B4A/MAPA_RUTAS.bas new file mode 100644 index 0000000..0663b01 --- /dev/null +++ b/B4A/MAPA_RUTAS.bas @@ -0,0 +1,323 @@ +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 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 Double + Dim LongitudRU As Double + 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=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=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 MapFragment1_Ready +' skmt.Initialize(ruta,"kmt.db", True) + gmap = MapFragment1.GetMap + gmap.IsInitialized + 'todos= 1 + 'permisos + Starter.rp.CheckAndRequest(Starter.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 + '''''''''VERIFICAR EN QUE TABLA O EN QUE CAMPO NOS LEE LA VENTAS PENDIENTES POR VISITAR + c=skmt.ExecQuery("select CAT_CL_CODIGO,CAT_CL_NOMBRE,CAT_CL_LAT,CAT_CL_LONG,CAT_CL_NUM_SERIEFISICO from kmt_info where gestion = 0 and CAT_CL_LAT is not null and CAT_CL_LONG is not null and CAT_CL_LAT <> 0 and CAT_CL_LONG <> 0 AND CAT_CL_NOMBRE <>'VENTA ABORDO' ORDER BY CAT_CL_NUM_SERIEFISICO ") + If c.RowCount > 0 Then + For i = 0 To c.RowCount -1 + c.Position = i + LatitudRu = c.GetDouble("CAT_CL_LAT") + LongitudRU = c.GetDouble("CAT_CL_LONG") + CODIGO=c.GetString("CAT_CL_CODIGO") + Tienda= c.GetString("CAT_CL_NOMBRE") + NumSerie=c.GetInt("CAT_CL_NUM_SERIEFISICO") + + MARK_AZUL = gmap.AddMarker3(LongitudRU,LatitudRu,CODIGO,LoadBitmap(File.DirAssets, "marker-azul-" & NumSerie &".png")) + MARK_AZUL.Snippet = Tienda + ' MARK_AZUL = gmap.AddMarker2(LatitudRu,LongitudRU,CODIGO, gmap.HUE_BLUE) + ' MARK_AZUL.Snippet = Tienda + Next + LIST_AZUL.Add(MARK_AZUL) + End If + c.Close + End If + + '''''''----------------------------MARKER VERDE - VENTA + If verde = 1 Or todos = 1 Then + c2.IsInitialized + '''''''''VERIFICAR EN QUE TABLA O EN QUE CAMPO NOS LEE LA VENTAS + c2=skmt.ExecQuery("select CAT_CL_CODIGO, CAT_CL_NOMBRE,CAT_CL_LONG,CAT_CL_LAT, CAT_CL_NUM_SERIEFISICO from kmt_info where gestion = 2 and CAT_CL_LAT is not null and CAT_CL_LONG is not null and CAT_CL_LAT <> 0 and CAT_CL_LONG <> 0 AND CAT_CL_NOMBRE <>'VENTA ABORDO' ORDER BY CAT_CL_NUM_SERIEFISICO") + 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 +' MARK_VERDE = gmap.AddMarker2(LatitudRu,LongitudRU,CODIGO,gmap.HUE_GREEN) +' MARK_VERDE.Snippet = Tienda + Next + Else + '''''''''VERIFICAR EN QUE TABLA O EN QUE CAMPO NOS LEE LA VENTAS--- ESTE VA IGUAL QUE EL ANTERIOR + If verde =1 Or todos = 1 Then + c2.IsInitialized + c2=skmt.ExecQuery("select CAT_CL_CODIGO, CAT_CL_NOMBRE,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_NUM_SERIEFISICO from kmt_info where gestion = 2 and CAT_CL_LAT is not null and CAT_CL_LONG is not null and CAT_CL_LAT <> 0 and CAT_CL_LONG <> 0 AND CAT_CL_NOMBRE <>'VENTA ABORDO' ORDER BY CAT_CL_NUM_SERIEFISICO") + 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 +' MARK_VERDE = gmap.AddMarker2(LatitudRu,LongitudRU,CODIGO,gmap.HUE_GREEN) +' MARK_VERDE.Snippet = Tienda + Next + c2 .Close + LIST_VERDE.Add(MARK_VERDE) + End If + End If + +' '''''''----------------------------MARKER ROJO - NO VENTA + '''''''''VERIFICAR EN QUE TABLA O EN QUE CAMPO NOS LEE LAS NO VENTAS + If rojo =1 Or todos = 1 Then + c3.IsInitialized + c3=skmt.ExecQuery("select CAT_CL_CODIGO, CAT_CL_NOMBRE,CAT_CL_LONG,CAT_CL_LAT ,CAT_CL_NUM_SERIEFISICO from kmt_info where gestion = 3 and CAT_CL_LAT is not null and CAT_CL_LONG is not null and CAT_CL_LAT <> 0 and CAT_CL_LONG <> 0 AND CAT_CL_NOMBRE <>'VENTA ABORDO' 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") + 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 +' MARK_ROJO = gmap.AddMarker2(LatitudRu,LongitudRU,Tienda, gmap.HUE_RED) +' MARK_ROJO.Snippet = Tienda + Next + + Else + '''''''''VERIFICAR EN QUE TABLA O EN QUE CAMPO NOS LEE LAS NO VENTAS- ESTE VA IGUAL QUE EL ANTERIOR + If rojo =1 Or todos = 1 Then + c3.IsInitialized + c3=skmt.ExecQuery("select CAT_CL_CODIGO, CAT_CL_NOMBRE,CAT_CL_LONG,CAT_CL_LAT, CAT_CL_NUM_SERIEFISICO from kmt_info where gestion = 3 and CAT_CL_LAT is not null and CAT_CL_LONG is not null and CAT_CL_LAT <> 0 and CAT_CL_LONG <> 0 AND CAT_CL_NOMBRE <>'VENTA ABORDO' 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") + 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 +' MARK_ROJO = gmap.AddMarker2(LatitudRu,LongitudRU,Tienda, gmap.HUE_RED) +' MARK_ROJO.Snippet = Tienda + Next + 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 + Dim aa As CameraPosition + aa.Initialize(LongitudRU,LatitudRu,15)''' 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 + +Sub OnInfoWindowClickListener1_click(Marker1 As Marker) + skmt.ExecNonQuery("delete from CUENTAA") + skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?) ", Array As Object(Marker1.Title)) + StartActivity(fila) +End Sub + +Sub GPS_LocationChanged (Parametro As Location) + MARK_CEDIS.IsInitialized +' Parametro.ConvertToSeconds(Parametro.Latitude) +' Parametro.ConvertToSeconds(Parametro.Longitude) +' +' 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_Resume +' If GPS.GPSEnabled = False Then +' ToastMessageShow("Debe Activar el GPS del Equipo.", True) +' StartActivity(GPS.LocationSettingsIntent) +' Else +' GPS.Start(0, 0) +' 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 + MapFragment1_Ready +End Sub + +Sub B_VERDE_Click + verde = 1 + azul = 0 + rojo = 0 + todos = 0 + gmap.Clear + MapFragment1_Ready +End Sub + +Sub B_ROJO_Click + rojo = 1 + verde = 0 + azul = 0 + todos = 0 + gmap.Clear + MapFragment1_Ready +End Sub + +Sub B_AZUL_Click + azul = 1 + verde = 0 + rojo = 0 + todos = 0 + gmap.Clear + MapFragment1_Ready +End Sub 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/Objects/b4xlibs/Files/b4xinputtemplate.bal b/B4A/Objects/b4xlibs/Files/b4xinputtemplate.bal new file mode 100644 index 0000000..a143b40 Binary files /dev/null and b/B4A/Objects/b4xlibs/Files/b4xinputtemplate.bal differ diff --git a/B4A/Objects/b4xlibs/Files/datepicker.bal b/B4A/Objects/b4xlibs/Files/datepicker.bal new file mode 100644 index 0000000..82ab2fc Binary files /dev/null and b/B4A/Objects/b4xlibs/Files/datepicker.bal differ diff --git a/B4A/Objects/b4xlibs/Files/datetemplate.bal b/B4A/Objects/b4xlibs/Files/datetemplate.bal new file mode 100644 index 0000000..bb5b387 Binary files /dev/null and b/B4A/Objects/b4xlibs/Files/datetemplate.bal differ diff --git a/B4A/Objects/b4xlibs/Files/listtemplate.bal b/B4A/Objects/b4xlibs/Files/listtemplate.bal new file mode 100644 index 0000000..ada8853 Binary files /dev/null and b/B4A/Objects/b4xlibs/Files/listtemplate.bal differ diff --git a/B4A/Objects/b4xlibs/Files/longtexttemplate.bal b/B4A/Objects/b4xlibs/Files/longtexttemplate.bal new file mode 100644 index 0000000..7fe9911 Binary files /dev/null and b/B4A/Objects/b4xlibs/Files/longtexttemplate.bal differ diff --git a/B4A/Objects/b4xlibs/Files/pclvseekbar.bal b/B4A/Objects/b4xlibs/Files/pclvseekbar.bal new file mode 100644 index 0000000..0dac6e1 Binary files /dev/null and b/B4A/Objects/b4xlibs/Files/pclvseekbar.bal differ diff --git a/B4A/Objects/b4xlibs/Files/searchtemplate.bal b/B4A/Objects/b4xlibs/Files/searchtemplate.bal new file mode 100644 index 0000000..931f029 Binary files /dev/null and b/B4A/Objects/b4xlibs/Files/searchtemplate.bal differ diff --git a/B4A/Objects/b4xlibs/Files/timeddialogtemplate.bal b/B4A/Objects/b4xlibs/Files/timeddialogtemplate.bal new file mode 100644 index 0000000..e05943e Binary files /dev/null and b/B4A/Objects/b4xlibs/Files/timeddialogtemplate.bal differ diff --git a/B4A/Objects/res/drawable/icon.png b/B4A/Objects/res/drawable/icon.png new file mode 100644 index 0000000..8fb72b4 Binary files /dev/null and b/B4A/Objects/res/drawable/icon.png differ 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= 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.db.IsInitialized) Then revisaBD + Starter.db.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.db.IsInitialized = False Then Starter.db.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.db.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.db.ExecNonQuery("delete from RUTA_GPS") + Starter.db.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.db.IsInitialized) Then Starter.db.Initialize(Starter.ruta, "kmt.db", True) + Starter.db.ExecNonQuery("CREATE TABLE IF NOT EXISTS RUTA_GPS(fecha INTEGER, lat TEXT, lon TEXT)") + Starter.db.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_ENCUESTA2(HE_CLIENTE TEXT)") +' Starter.db.ExecNonQuery("CREATE TABLE IF NOT EXISTS UUC(fecha INTEGER, lat TEXT, lon TEXT)") 'LastKnownLocation + Starter.db.ExecNonQuery("CREATE TABLE IF NOT EXISTS bitacora(fecha INTEGER, texto TEXT)") 'Bitacora + Try 'Si no existe la columna CAT_CL_CATEGORIA la agregamos. + Starter.db.ExecQuery("select count(CAT_CL_CATEGORIA) from kmt_info") + Catch + Try + Starter.db.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.db.ExecQuery("select count(CAT_CL_SEGMENTO) from kmt_info") + Catch + Try + Starter.db.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.db.IsInitialized Then Starter.db.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.db.ExecNonQuery("delete from bitacora") + Starter.db.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.db.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.db.ExecQuery("select fecha from bitacora") + c.Position = 0 + If c.RowCount > 650 Then + Starter.db.ExecNonQuery("DELETE FROM bitacora WHERE fecha NOT in (SELECT fecha FROM bitacora ORDER BY fecha desc LIMIT 599 )") + Starter.db.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 + +'Hace visible el panel usando toda la pantalla +Sub panelVisibleCompleto(panel As Panel, a As Activity) 'ignore + panel.BringToFront + panel.Visible = True + panel.Top = 0 + panel.Left = 0 + panel.Width = a.Width + panel.Height = a.Height +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.db.IsInitialized) Then revisaBD + c=Starter.db.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.db.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.db.ExecNonQuery2("UPDATE kmt_info set IMPRESION = 1 where CAT_CL_CODIGO = ?", Array As String(cliente)) + Starter.db.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 +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.db.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("ULTIMOMODULO")) + Starter.db.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.db.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 ia <> "" And ia <> Null Then + If Starter.logger Then LogColor($"Guardamos en BD '${ia}'"$, Colors.Yellow) + Starter.db.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("ULTIMOMODULO")) + Starter.db.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("ULTIMOMODULO", ia)) + B4XPages.ShowPage(ia) +' If Starter.logger Then LogColor("Iniciamos --> " & ia, Colors.Blue) + End If +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.db.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("ULTIMOMODULO")) + Starter.db.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) 'ignore + 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.db.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.db.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.db.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.db.ExecQuery("select ID_ALMACEN from CAT_ALMACEN") + c.Position = 0 + a = C.GetString("ID_ALMACEN") + c.Close + Return a +End Sub + +'Regresa el nombre del producto desde CAT_GUNAPROD +Sub traeProdNombre(id As String) As String + Private h As Cursor + Private n As String + h=Starter.db.ExecQuery($"select CAT_GP_NOMBRE from CAT_GUNAPROD where CAT_GP_ID = '${id.Trim}' union select CAT_GP_NOMBRE from CAT_GUNAPROD2 where CAT_GP_ID = '${id.Trim}'"$) + If h.RowCount > 0 Then + h.Position = 0 + n = h.GetString("CAT_GP_NOMBRE") +' Log(h.RowCount&"|"&id&"|"&n&"|") + End If + h.Close + If n = Null Or n="" Then n = "N/A" +' Log(h.RowCount&"|"&id&"|"&n&"|") + Return n +End Sub + +'Regresa el nombre del RMI desde CAT_RMI +Sub traeRMINombre(id As String) As String + Private h As Cursor + Private n As String + h=Starter.db.ExecQuery2("select CAT_GP_NOMBRE from CAT_RMI where CAT_GP_ID = ? ", Array As String(id.Trim)) + If h.RowCount > 0 Then + h.Position = 0 + n = h.GetString("CAT_GP_NOMBRE") +' Log(h.RowCount&"|"&id&"|"&n&"|") + End If + h.Close + If n = Null Or n="" Then n = "N/A" +' Log(h.RowCount&"|"&id&"|"&n&"|") + Return n +End Sub + +'Regresa la ruta actual de la base de datos. +Sub traeRuta As String 'ignore + Private c As Cursor + Private r As String + c=Starter.db.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 + +Sub traeCliente As String 'ignore + Private c As Cursor + Private cl As String + c=Starter.db.ExecQuery("Select CUENTA from cuentaa") + c.Position=0 + cl = c.GetString("CUENTA") + c.Close + Return cl +End Sub + +Sub traeFecha As String 'ignore + DateTime.DateFormat = "MM/dd/yyyy" + Private sDate As String =DateTime.Date(DateTime.Now) + Private sTime As String =DateTime.Time(DateTime.Now) + Return sDate & sTime +End Sub + +'Regresa el usuario de la tabla USUARIOA +Sub traeUsuarioDeBD As String 'ignore + Private c As Cursor + Private u As String = "SinUsuario" + If Not(Starter.db.IsInitialized) Then revisaBD + c=Starter.db.ExecQuery("select USUARIO from usuarioa") + c.Position=0 + If c.RowCount > 0 Then u = c.GetString("USUARIO") + c.Close + Return u +End Sub + +'Inserta un producto en la tabla "pedido" y "pedido_cliente". +'Actualiza "cat_gunaprod" y la columna "gestion" en la tabla "kmt_info". +'Sub guardaProducto(cedis As String, costoU As String, cant As String, nombre As String, prodId As String, clienteId As String, fecha As String, usuario As String, rutaV As String, precioSin As String, tipoVenta As String) +'' LogColor("guardaProducto: "&prodId&", cant="&cant, Colors.Magenta) +' Private c As Cursor +' Starter.db.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_FOLIO) VALUES(?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (cedis, (cant * costoU), costoU, cant, nombre, prodId, clienteId, fecha, usuario, rutaV, precioSin, tipoVenta)) +' Starter.db.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cant, prodId)) +' c=Starter.db.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.db.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") +' Starter.db.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(clienteId, fecha, usuario, c.GetString("CANT_CLIE"), c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps, cedis, c.GetString("TOTAL_CLIE_SIN"))) +' Starter.db.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") +'End Sub + +'Inserta un producto en la tabla "PEDIDO" +Sub guardaProducto(cedis As String, costoTot As String, costoU As String, cant As String, nombre As String, prodId As String, clienteId As String, fecha As String, usuario As String, tipoV As String, precio2 As String, query As String) 'ignore + If nombre.Length < 6 Then ToastMessageShow("(guardaProducto) El nombre del producto no es valido " & nombre, True) + LogColor("guardaProducto", Colors.Magenta) + Log($"Guardamos producto ${prodId}"$) + LogColor("TIPO VENTA="&tipoV, Colors.Magenta) + Starter.db.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, PE_RUTA) VALUES(?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (cedis, costoTot, costoU, cant, nombre, prodId, clienteId, fecha, usuario, tipoV, precio2, Starter.rutaV)) + Starter.db.ExecNonQuery2("update " & query & " set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cant, prodId)) + ToastMessageShow("guardaProd", False) +End Sub + +'Inserta un producto en la tabla "pedido" y "pedido_cliente" y actualiza "cat_gunaprod". +'NO ACTUALIZA LA BANDERA DE GESTION EN LA TABLA "kmt_info". +'Si "gestion=2" entonces el sistema considera que el pedido ya se guardó y ya no se debe modificar. +Sub guardaProductoSinGestion(cedis As String, costoU As String, cant As String, nombre As String, prodId As String, clienteId As String, fecha As String, usuario As String, rutaV As String, precioSin As String, tipoVenta As String) + If nombre.Length < 6 Then ToastMessageShow("(guardaProductoSinGestion) El nombre del producto no es valido " & nombre, True) + LogColor("guardaProductoSinGestion: "&prodId&", cant="&cant&", tipo="&tipoVenta, Colors.Magenta) + Private c As Cursor +' Private tablaProds As String = "cat_gunaprod2" +' If tipoVenta = "ABORDO" Then tablaProds = "cat_gunaprod" + Starter.db.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) VALUES(?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (cedis, (cant * costoU), costoU, cant, nombre, prodId, clienteId, fecha, usuario, rutaV, precioSin, tipoVenta)) + 'Actualizamos el inventario en cat_gunaprod solo si no es RMI + If cedis <> "DUR" Then Starter.db.ExecNonQuery2($"update ${traeTablaProds(tipoVenta)} set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? "$, Array As Object(cant, prodId)) + c=Starter.db.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.db.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") + Starter.db.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(clienteId, fecha, usuario, c.GetString("CANT_CLIE"), c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps, cedis, rutaV, c.GetString("TOTAL_CLIE_SIN"))) +End Sub + +Sub guardaProductoSin(cedis As String, costoTot As String, costoU As String, cant As String, nombre As String, prodId As String, clienteId As String, fecha As String, usuario As String, rutaV As String, precioSin As String, tipoV As String, precio2 As String, query As String) 'ignore + If nombre.Length < 6 Then ToastMessageShow("(guardaProductoSin) El nombre del producto no es valido " & nombre, True) + LogColor("guardaProductoSin", Colors.Magenta) + Starter.db.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 (cedis, costoTot, costoU, cant, nombre, prodId, clienteId, fecha, usuario, rutaV, precioSin, tipoV, precio2)) + Starter.db.ExecNonQuery2("update " & query & " set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cant, prodId)) + DateTime.DateFormat = "MM/dd/yyyy" + Private sDate As String =DateTime.Date(DateTime.Now) + Private sTime As String =DateTime.Time(DateTime.Now) + Private c As Cursor = Starter.db.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.db.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") + Starter.db.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(clienteId, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), Starter.lon_gps, Starter.lat_gps, cedis, rutaV, c.GetString("TOTAL_CLIE_SIN"))) + Starter.db.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + c.Close + ToastMessageShow("guardaProdSin", False) +End Sub + +Sub actualizaProducto(cedis As String, costoU As String, cant As String, nombre As String, prodId As String, clienteId As String, fecha As String, usuario As String, rutaV As String, precioSin As String, tipoVenta As String) + If nombre.Length < 6 Then ToastMessageShow("(actualizaProducto) El nombre del producto no es valido " & nombre, True) + LogColor($"actualizaProducto, p=${prodId}, nombre=${nombre}, cant=${cant}, cedis=${cedis}, tipo=${tipoVenta}"$, Colors.Magenta) +' Private tablaProds As String = "cat_gunaprod2" +' If tipoVenta = "ABORDO" Then tablaProds = "cat_gunaprod" + Private c As Cursor=Starter.db.ExecQuery($"select * from pedido where pe_cedis = '${cedis}' and pe_proid = '${prodId}' and pe_cliente = '${clienteId}'"$) + If c.RowCount > 0 Then + LogColor("ACTUALIZAMOS PROD", Colors.Blue) + c.Position=0 + Private antCant As Int = 0 + If IsNumber(c.GetInt("PE_CANT")) Then antCant=c.GetInt("PE_CANT") + Private difCant As Int = cant - antCant + Starter.db.ExecNonQuery($"update pedido set pe_cant = ${cant}, pe_costo_tot = ${(cant*c.GetString("PE_COSTOU"))} where pe_cedis = '${cedis}' and pe_proid = '${prodId}' and pe_cliente = '${clienteId}' "$) + Starter.db.ExecNonQuery($"update ${traeTablaProds(tipoVenta)} set cat_gp_almacen = cat_gp_almacen - (${difCant}) where cat_gp_id = '${prodId}' "$) + If cant = 0 Then + LogColor($"BORRAMOS PRODUCTO - ${prodId}"$, Colors.Red) + Starter.db.ExecNonQuery($"delete from pedido where pe_cedis = '${cedis}' and pe_proid = '${prodId}' and pe_cliente = '${clienteId}' "$) + Log($"Borramos pe_cedis='${cedis}' and pe_proid='${prodId}' and pe_cliente='${clienteId}'"$) + Private pe As Cursor = Starter.db.ExecQuery("select count(pe_cliente) as cuantosPedidos from pedido where pe_cliente In (select cuenta from cuentaa)") + pe.Position=0 + If pe.GetString("cuantosPedidos") = 0 Then Starter.db.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") + End If + Else + 'INSERTAMOS + LogColor("INSERTAMOS PROD", Colors.red) + If cant > 0 Then guardaProductoSinGestion(cedis, costoU, cant, nombre, prodId, clienteId, fecha, usuario, rutaV, precioSin, tipoVenta) + End If + c.Close +End Sub + +'Regresa un mapa con la información de la promo. +'Regresa: {id, maxXcliente, maxRecurrente, maxPromos, historico, +' productos={idProducto={idProducto, preciosimptos, precio, almacen, tipo, piezas, usuario, fecha, regalo, clasif}} 'Mapa con los productos de la promo y los datos de cada uno. +' tipos={idProducto=tipo} 'Mapa con id y tipo del producto, 0 si es fijo y 1 si es variable. +' prodsFijos={idProducto,idProducto} 'Lista con los ids de los productos fijos. +' prodsVariables={idProducto,idProducto} 'Lista con los ids de los productos variables. +' resultado="OK" 'Ok si existe la promocion. +' prodsVariablesRequeridos=5} 'Cantidad de productos variables requeridos para la promoción. +Sub traePromo(promo As String, cliente As String) As Map + Private thisLog As Boolean = False + If thisLog Then Log("traePromo:"&promo) + Private inicioContador As String = DateTime.Now + Private c As Cursor = Starter.db.ExecQuery("Select * from promos_comp where cat_pa_id = '"& promo&"'") 'Obtenemos las el maximo de promocioones a otorgar. + Private siHistorico As String = 0 + Private promoMap As Map + Private prodsFijos, prodsFijosPrecios, prodsFijosPiezas, prodsVariables, prodsVariablesPrecios As List + promoMap.Initialize + prodsFijos.Initialize + prodsFijosPrecios.Initialize + prodsFijosPiezas.Initialize + prodsVariables.Initialize + prodsVariablesPrecios.Initialize + c.Position = 0 + If c.RowCount > 0 Then promoMap = CreateMap("id":promo, "maxXcliente":c.GetString("CAT_PA_MAXPROMCLIE"), "maxRecurrente":c.GetString("CAT_PA_MAXPROMREC"), "maxPromos":c.GetString("CAT_PA_MAXPROM")) + c = Starter.db.ExecQuery("Select count(*) as hist from HIST_PROMOS where HP_CLIENTE = '"& cliente & "' and HP_CODIGO_PROMOCION = '" & promo & "'") 'Revisamos si hay historico de la promoción. + c.Position = 0 + If c.GetString("hist") > 0 Then siHistorico = 1 + promoMap.Put("historico", siHistorico) + c = Starter.db.ExecQuery("Select * from CAT_DETALLES_PAQ where CAT_DP_ID = '"& promo & "'") 'Obtenemos los detalles de la promoción. + c.Position = 0 + If c.RowCount > 0 Then + Private prods, tipos As Map + prods.Initialize + tipos.Initialize + For i=0 To c.RowCount -1 + c.Position=i + prods.Put(c.GetString("CAT_DP_IDPROD"), CreateMap("idProducto":c.GetString("CAT_DP_IDPROD"), "precioSimptos":c.GetString("CAT_DP_PRECIO_SIMPTOS"), "precio":c.GetString("CAT_DP_PRECIO"), "tipo":c.GetString("CAT_DP_TIPO"), "piezas":c.GetString("CAT_DP_PZAS"), "regalo":c.GetString("CAT_DP_REGALO"), "clasif":c.GetString("CAT_DP_CLASIF"))) + tipos.Put(c.GetString("CAT_DP_IDPROD"), c.GetString("CAT_DP_TIPO")) + If c.GetString("CAT_DP_TIPO") = "0" Then + prodsFijos.Add(c.GetString("CAT_DP_IDPROD")) + prodsFijosPrecios.Add(c.GetString("CAT_DP_PRECIO")) + prodsFijosPiezas.Add(c.GetString("CAT_DP_PZAS")) + End If + If c.GetString("CAT_DP_TIPO") = "1" Then + prodsVariables.Add(c.GetString("CAT_DP_IDPROD")) + prodsVariablesPrecios.Add(c.GetString("CAT_DP_PRECIO")) + End If + If thisLog Then Log($"id:${c.GetString("CAT_DP_IDPROD")}, tipo:${c.GetString("CAT_DP_TIPO")}"$) + Next + promoMap.Put("productos", prods) 'Mapa con los productos de la promocion (id, precio, almacen, tipo, piezas, etc.) + promoMap.Put("tipos", tipos) 'Mapa con los productos de la promoción y su tipo (fijo o variable). + promoMap.Put("prodsFijos", prodsFijos) 'Lista de los productos fijos de la promoción. + promoMap.Put("prodsVariables", prodsVariables) 'Lista de los productos variables de la promoción. + promoMap.Put("prodsFijosCant", prodsFijos.Size) + promoMap.Put("prodsFijosPrecios", prodsFijosPrecios) + promoMap.Put("prodsFijosPiezas", prodsFijosPiezas) + promoMap.Put("prodsVariablesCant", prodsVariables.Size) + promoMap.Put("prodsVariablesPrecios", prodsVariablesPrecios) + promoMap.Put("resultado", "ok") + Else + promoMap.Put("resultado", "No hay datos de la promoción.") + End If + c = Starter.db.ExecQuery("Select CAT_GP_STS, CAT_GP_NOMBRE from CAT_GUNAPROD2 where CAT_GP_ID = '"& promo & "'") 'Obtenemos las piezas requeridas de productos variables para la promoción. + c.Position = 0 + Private pvr As String = 0 + If c.RowCount > 0 Then + c.Position = 0 + pvr = c.GetString("CAT_GP_STS") + promoMap.Put("prodsVariablesRequeridos", pvr) 'Cantidad de productos variables requeridos para la promoción. + promoMap.put("descripcion", c.GetString("CAT_GP_NOMBRE")) + End If + c.Close + If thisLog Then Log($"Inv variables: ${cuantosVariablesTengoBD(promo)}"$) + If thisLog Then Log($"Inv dispo: ${traemosInventarioDisponibleParaPromo(promo)}"$) + If thisLog Then LogColor($"Promo ${promo}: ${promoMap}"$, Colors.Blue) + If thisLog Then LogColor("TIEMPO para traePromo -=" & promo & "=- : " & ((DateTime.Now-inicioContador)/1000), Colors.Red) + Return promoMap +End Sub + +'Regresa un mapa con el inventario disponible por producto para la promoción (desde la base de datos). +Sub traemosInventarioDisponibleParaPromo(promo As String) As Map 'ignore + Private c As Cursor + c = Starter.db.ExecQuery2("SELECT CAT_GP_ID, CAT_GP_ALMACEN FROM CAT_GUNAPROD2 WHERE CAT_GP_ID IN (select CAT_DP_IDPROD FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID = ?)", Array As String(promo)) +' Private prodInv As Map +' prodInv.Initialize + Private prods As Map + prods.Initialize + If c.RowCount > 0 Then + For i=0 To c.RowCount -1 + c.Position=i + prods.Put(c.GetString("CAT_GP_ID"), c.GetString("CAT_GP_ALMACEN")) +' Log($"prod:${c.GetString("CAT_GP_ID")}, inventario:${c.GetString("CAT_GP_ALMACEN")}"$) + Next +' prodInv.Put("inventarios", prods) + End If + Return prods +End Sub + +'Resta los productos fijos del inventario de la promoción (mapa) y regresa un mapa con el nuevo inventario. +'Hay que darle como parametro un mapa (traePromo(promo)) con toda la informacion de la promocion. +'Regresa en el mapa la llave "resultado" que nos da "ok" o "No hay suficiente producto para la promocion". +Sub restaFijosPromo(promoMap As Map) As Map 'ignore + Private thisLog As Boolean = False 'Si es verdadero, muestra los logs de este sub. + Private inventariosDisponiblesParaEstaPromo As Map = traemosInventarioDisponibleParaPromo(promoMap.Get("id")) 'Obtenemos un mapa con el inventario disponible para cada producto de la promocion desde la base de datos. + If thisLog Then LogColor(inventariosDisponiblesParaEstaPromo, Colors.red) + If thisLog Then LogColor("Inventario inicial antes de FIJOS: "&inventariosDisponiblesParaEstaPromo, Colors.Gray) 'Inventario inicial. + Private i As Int + Private prodsmap As Map = promoMap.Get("productos") 'Obtenemos un mapa con todos los productos de la promoción. + Private prodsFijos As List = promoMap.get("prodsFijos") 'Obtenemos un a lista con los productos fijos de la promoción. + For p = 0 To prodsFijos.Size - 1 + Private t As String = prodsFijos.Get(p) 'Obtenemos el Id de este producto desde la lista de productos fijos. + Private p2 As Map = prodsmap.Get(t) 'Obtenemos un mapa con los datos de este producto (id, precio, almacen, tipo, piezas, etc.) + If thisLog Then Log($"T: ${t}, prod ${p2.Get("idProducto")}, piezas: ${p2.Get("piezas")}"$) 'Producto y piezas requeridas + If thisLog Then Log("inventariosDisponiblesParaEstaPromo="&inventariosDisponiblesParaEstaPromo) + If inventariosDisponiblesParaEstaPromo.ContainsKey(t) Then 'Si el mapa del inventario contiene el id del producto entonces ... + i = inventariosDisponiblesParaEstaPromo.get(t) 'Obtenemos del mapa el inventario de este producto. + Private nuevoInv As Int = NumberFormat2((i - promoMap.Get("prodsFijosPiezas").As(List).get(p)), 1, 0,0,False) + If thisLog Then Log($"Nuevo inventario de ${t}: ${i}-${promoMap.Get("prodsFijosPiezas").As(List).get(p)} = ${nuevoInv}"$) 'El nuevo inventario. + inventariosDisponiblesParaEstaPromo.Put(t, $"${nuevoInv}"$) 'Restamos del inventario las piezas requeridas para la promoción y guardamos el nuevo inventario en el mapa. + inventariosDisponiblesParaEstaPromo.Put("resultado", "ok") + Else 'Si en el mapa no esta el id del producto, entonces no tenemos inventario. + inventariosDisponiblesParaEstaPromo.Put("resultado", "No hay suficiente producto para la promocion.") + If thisLog Then LogColor("Sin suficiente inventario fijo: " & t, Colors.Blue) + Exit + End If + If i - p2.Get("piezas") < 0 Then + inventariosDisponiblesParaEstaPromo.Put("resultado", "No hay suficiente producto para la promocion.") 'Si el inventario de este producto sale negativo, quiere decir que no tenemos suficiente inventario para la promoción. + Exit + End If + Next + If thisLog Then LogColor("Inventario final depues de FIJOS: "&inventariosDisponiblesParaEstaPromo, Colors.blue) 'Inventario final. + Return inventariosDisponiblesParaEstaPromo +End Sub + +'Revisa si tenemos los productos variables requeridos para la promoción (mapa). +'Hay que darle como parametro un mapa (traePromo(promo)) con toda la informacion de la promocion. +Sub alcanzanLosVariablesParaPromo(promoMap As Map, inventarioSinFijos As Map) As Boolean 'ignore + Private thisLog As Boolean = False 'Si es verdadero, muestra los logs de este sub. + If thisLog Then LogColor("Inventario inicial: "&inventarioSinFijos, Colors.Gray) 'Inventario inicial. + Private totalProdsVariables As Int = 0 +' Private prodsmap As Map = promoMap.Get("productos") 'Obtenemos un mapa con todos los productos de la promoción. + Private prodsVariables As List = promoMap.get("prodsVariables") 'Obtenemos un a lista con los productos variables de la promoción. + For p = 0 To prodsVariables.Size - 1 + Private t As String = prodsVariables.Get(p) 'Obtenemos el Id de este producto desde la lista de productos fijos. + If inventarioSinFijos.ContainsKey(t) Then 'Si existe el producto en la lista del inventario, entonces ... + Private p2 As Int = inventarioSinFijos.Get(t) 'Obtenemos el inventario disponible este producto. + If thisLog Then Log($"prod ${t}, hay: ${p2}"$) 'Producto y piezas requeridas + totalProdsVariables = totalProdsVariables + p2 + End If + Next + If thisLog Then Log("Total prods variables=" & totalProdsVariables & ", requeridos=" & promoMap.Get("prodsVariablesRequeridos")) + Private res As Boolean = False + If totalProdsVariables >= promoMap.Get("prodsVariablesRequeridos") Then res = True 'Si el total de inventario de productos variables (totalProdsVariables) es mayor o igual a los productos requeridos entonces regresamos TRUE + Return res +End Sub + +'Regresa el numero máximo de promociones permitidas, tomando en cuenta recurrentes, clientes y maxPromos. +Sub traeMaxPromos(pm As Map) As Int + Private thisLog As Boolean = False 'Si es verdadero, muestra los logs de este sub. + Private maxPromos As List + Private mp0, mp As String = "0" + maxPromos.Initialize + Private hccp As Cursor = Starter.db.ExecQuery($"select HCCP_CANT from HIST_CLIENTE_CANT_PROMOS where HCCP_CLIENTE = '${traeCliente}' and HCCP_PROMO = '${pm.Get("id")}'"$) +' Log($"select HCCP_CANT from HIST_CLIENTE_CANT_PROMOS where HCCP_CLIENTE = '${traeCliente}' and HCCP_PROMO = '${pm.Get("id")}'"$) +' If hccp.RowCount > 0 Then +' hccp.Position = 0 +' LogColor(hccp.GetString("HCCP_CANT"), Colors.Magenta) +' Else +' LogColor("SIN HCCP CANT", Colors.Magenta) +' End If + If thisLog Then LogColor("==== HISTORICO:"&pm.Get("historico"), Colors.Red) + If thisLog Then Log(pm) + If pm.Get("historico") = "1" Then maxPromos.Add(pm.Get("maxRecurrente")) 'Si hay historico, agregamos maxRecurrente + maxPromos.Add(pm.Get("maxPromos")) 'Agregamos maxPromos + maxPromos.Add(pm.Get("maxXcliente")) 'Agregamos maxXcliente + If hccp.RowCount > 0 Then 'Agregamos promos HCCP + hccp.Position = 0 + maxPromos.Add(hccp.GetString("HCCP_CANT")) + End If + maxPromos.Sort(True) + If thisLog Then Log(maxPromos) + mp0 = maxPromos.Get(0) + mp = mp0 - traePromosVendidas(pm.Get("id"), traeCliente) + If thisLog Then Log($"Max Promos (${mp0}) - promos vendidas (${(traePromosVendidas(pm.Get("id"), traeCliente)).As(Int)}) = ${mp}"$) + Return mp 'Regresamos el numero mas pequeño de las opciones. +End Sub + +'Regresa la cantidad de promos que se le han vendido al cliente. +Sub traePromosVendidas(promo As String, cliente As String) As Int + Private c As Cursor + Private pv As Int = 0 + c=Starter.db.ExecQuery($"select sum(PE_CANT) as cuantas from PEDIDO where PE_PROID = '${promo}' and PE_CLIENTE = '${cliente}'"$) + If c.RowCount > 0 Then + c.Position = 0 + If c.GetString("cuantas") <> Null Then pv = c.GetString("cuantas") + End If + Return pv +End Sub + +Sub procesaPromocion(idPromo As String, cliente As String) As Map 'ignore + Private thisLog As Boolean = False 'Si es verdadero, muestra los logs de este sub. + Private inicioContador As String = DateTime.Now + Private mp = 0 + If thisLog Then LogColor($"********* Iniciamos revision de Promo ${idPromo} *********"$, Colors.red) + 'Obtenemos el mapa con toda la info de la promoción. + Private pm As Map = traePromo(idPromo, cliente) + If thisLog Then LogColor(pm, Colors.Blue) +' If thisLog Then LogColor("|" & pm.Get("maxPromos") & "|", Colors.Blue) +' Log("|"&revisaMaxPromosProdsFijosPorInventario(pm)&"|") + If revisaMaxPromosProdsFijosPorInventario(pm) < 1 Then pm.Put("resultado", 0) +' Log($"resultado = ${pm.Get("resultado")}"$) + If pm.Get("resultado") = "ok" Then 'Si encontramos la promoción, entonces ... + 'Buscamos el máximo de promociones permitidas. + mp = traeMaxPromos(pm) +' If thisLog Then LogColor($"Promociones permitidas=${mp}"$, Colors.Blue) +' If thisLog Then Log("Promos vendidas: " & traePromosVendidas(idPromo, cliente)) + If mp < 1 Then + If thisLog Then LogColor("Ya se vendieron las promos PERMITIDAS para el cliente", Colors.red) + Return CreateMap("status":"ko", "mp":pm) + End If + 'Restamos del inventario (mapa) las piezas necesarias para los productos fijos. + Private inventarioSinFijos As Map = restaFijosPromo(pm) + If thisLog Then LogColor("inventariosfijos="&inventarioSinFijos, Colors.Magenta) + If inventarioSinFijos.Get("resultado") = "ok" Then + 'Revisamos que los productos variables requeridos sean menos que el inventario total (mapa). + Private pv As Boolean = alcanzanLosVariablesParaPromo(pm, inventarioSinFijos) + If thisLog Then Log("Alcanzan los variables? --> " & pv) + If pv Then Return CreateMap("status":"ok", "mp":pm) Else Return CreateMap("status":"ko", "mp":pm) + Else + If thisLog Then LogColor("NO HAY INVENTARIO SUFICIENTE " & idPromo, Colors.red) + Return CreateMap("status":"ko", "mp":pm) + End If + Else + Return CreateMap("status":"ko", "mp":pm) + End If + ' Si tenemos suficiente inventario para los variables mostramos la promocion, si no ... + ' break 'NO HAY INVENTARIO SUFICIENTE PARA LA PROMOCION. + + LogColor("TIEMPO DE PROCESO ESTA PROMO: " & ((DateTime.Now-inicioContador)/1000), Colors.Red) +End Sub + +'Regresa cuantas promos alcanzan con los productos FIJOS que hay en inventario. +Sub revisaMaxPromosProdsFijosPorInventario2(pm As Map) As Int 'ignore + Private thisLog As Boolean = False + If thisLog Then Log($"pm=${pm}"$) +' Private prodsFijos As List = pm.get("prodsFijos") + Private invDispParaPromo As Map = traemosInventarioDisponibleParaPromo(pm.Get("id")) + If thisLog Then Log($"invDispParaPromo=${invDispParaPromo}"$) + Private maxPromos As String = traeMaxPromos(pm) + Private maxPromosFijosXinv As Int = 1 + Private fpf2, pdp2 As Int + Private salir As Boolean = False + Private pf As List = pm.Get("prodsFijos") + Private pfp As List = pm.Get("prodsFijosPiezas") + If thisLog Then Log($"maxPromos=${maxPromos}, prodsFijos=${pf}, piezas=${pfp}"$) + If thisLog Then LogColor($"InvFijo disponible=${invDispParaPromo}"$, Colors.Blue) + Private invFijoXpromo As Map + invFijoXpromo.Initialize + For p = 0 To pf.Size -1 'Generamos mapa con los productos fijo y piezas requeridos por promo. + invFijoXpromo.Put(pf.Get(p), pfp.Get(p)) + Next + If thisLog Then LogColor("Inv req. de prods fijos x promo" & invFijoXpromo, Colors.Green) + For i = 1 To maxPromos 'Revisamos cuantas promociones alcanzan, hasta llegar al máximo de promos permitadas. + If thisLog Then LogColor("Prods para promo " & (i+1), Colors.Magenta) + For q = 0 To pf.Size - 1 + Private q2 As String = pf.Get(q) + If thisLog Then Log("q="&q2) +' fpf2 = invFijoXpromo.Get(q2) * i 'Multiplicamos las piezas requeridas por la cantidad de promos. + fpf2 = pfp.Get(q) * i 'Multiplicamos las piezas requeridas por la cantidad de promos. + pdp2 = invDispParaPromo.Get(q2) + If thisLog Then Log($"pf=${q2}, Actual=${(i)}, max promos: ${pdp2}-${fpf2}=${pdp2 - fpf2}"$) + If pdp2 - fpf2 < 0 Then 'Si el inventario es negativo, entonces ya no alcanza para este producto. + salir=True + Exit + End If + Next + If salir Then Exit + maxPromosFijosXinv = i + Next + If thisLog Then LogColor("InvFijo requerido x promo="&invFijoXpromo, Colors.blue) + LogColor("Maximo de promociones de prodsFijos POR inventario = " & maxPromosFijosXinv, Colors.Red) + Return maxPromosFijosXinv +End Sub + +'Regresa cuantas promos alcanzan con los productos FIJOS que hay en inventario. +Sub revisaMaxPromosProdsFijosPorInventario(pm As Map) As Int + Private thisLog As Boolean = False + Private invFijoXpromo As Map + Private t As List + t.Initialize + t.Add(traeMaxPromos(pm)) ' Agregamos a la lista las promos maximas permitidas (recurrente, cliente y promo). + invFijoXpromo.Initialize + If thisLog Then LogColor($"pm=${pm}"$, Colors.Blue) + Private invDispParaPromo As Map = traemosInventarioDisponibleParaPromo(pm.Get("id")) + If thisLog Then Log($"invDispParaPromo=${invDispParaPromo}"$) + Private prodsFijosPiezas As List = pm.Get("prodsFijosPiezas") + Private idProdsFijos As List = pm.Get("prodsFijos") + For p = 0 To idProdsFijos.Size -1 'Generamos una lista con las promos disponibles por producto (dividimos el inventario total entre las piezas requeridas). + Private thisInvDisp = 0 + If invDispParaPromo.Get(idProdsFijos.Get(p)) <> Null Then thisInvDisp = invDispParaPromo.Get(idProdsFijos.Get(p)) + If thisLog Then Log($"id=${idProdsFijos.Get(p)}, inv=${thisInvDisp}, pzas=${prodsFijosPiezas.Get(p)}"$) + If thisLog Then Log($"${(thisInvDisp / prodsFijosPiezas.Get(p))}"$) + Private x() As String = Regex.Split("\.", $"${(thisInvDisp / prodsFijosPiezas.Get(p))}"$) 'Separamos el resultado de la division por el punto decimal. + If thisLog Then Log(x(0)) + t.Add(x(0).As(Int)) 'Solo guardamos la parte del entero de la division. + Next + t.Sort(True) 'Ordenamos la lista para que en el lugar 0 este el resultao mas pequeño. + If thisLog Then LogColor($"prodsFijos=${idProdsFijos}"$, Colors.Blue) + If thisLog Then LogColor($"prodsFijosPiezasReq=${prodsFijosPiezas}"$, Colors.Blue) + If thisLog Then LogColor($"invFijoXpromo=${invFijoXpromo}"$, Colors.Blue) + If thisLog Then LogColor("Max promos de prodsFijos POR inventario = " & t.Get(0), Colors.red) + Return t.Get(0) 'Regresamos el resultado mas pequeño. +End Sub + +'Regresa cuantas promos alcanzan con los productos VARIABLES que hay en inventario. +'La cantidad de promos disponibles se calcula DESPUES de descontar los productos fijos, y si las +'promos por productos fijos llega al maximo, aunque se puedan mas de producos variables, solo se +'regresa el maximo por productos fijos. Ej. si las promos por variables es 10, pero el maximo por +'fijos es 5, entonces regresamos 5. +Sub revisaMaxPromosProdsVariablesPorInventario(pm As Map) As Int 'ignore + Private thisLog As Boolean = False + If thisLog Then Log("======================================================") + If thisLog Then Log("======================================================") + Private invFijoXpromo As Map + invFijoXpromo.Initialize + Private totalProdsVariablesDisponibles As Int = 0 + If thisLog Then LogColor($"pm=${pm}"$, Colors.Blue) + Private invDispParaPromo As Map = traemosInventarioDisponibleParaPromo(pm.Get("id")) + If thisLog Then Log($"invDispParaPromo=${invDispParaPromo}"$) + Private maxPromos As String = traeMaxPromos(pm) + Private maxPromosXFijos As Int = revisaMaxPromosProdsFijosPorInventario(pm) + Private idProdsVariables As List = pm.Get("prodsVariables") + Private prodsVariablesRequeridos As Int = pm.Get("prodsVariablesRequeridos") + Private prodsFijosPiezas As List = pm.Get("prodsFijosPiezas") + Private idProdsFijos As List = pm.Get("prodsFijos") + For p = 0 To idProdsFijos.Size -1 'Generamos mapa con los productos fijos y piezas requeridas por promo. + invFijoXpromo.Put(idProdsFijos.Get(p), prodsFijosPiezas.Get(p)) + Private idEsteProd As String = idProdsFijos.Get(p) + Private invEsteProd As Int = invDispParaPromo.Get(idEsteProd) + Private pzasReqEsteProd As Int = prodsFijosPiezas.Get(p) + If thisLog Then Log($"id=${idEsteProd}, inv=${invEsteProd}, pzas=${pzasReqEsteProd}"$) +' invDispParaPromo.Put( idEsteProd, (invEsteProd - (1)) ) + Next + If thisLog Then LogColor($"MaxPromos=${maxPromos}, promosXFijos=${maxPromosXFijos}"$, Colors.Blue) + If thisLog Then LogColor($"prodsFijos=${idProdsFijos}"$, Colors.Blue) + If thisLog Then LogColor($"prodsFijosPiezasReq=${prodsFijosPiezas}"$, Colors.Blue) + If thisLog Then LogColor($"prodsVariables=${idProdsVariables}${CRLF}Variables Req=${prodsVariablesRequeridos} "$, Colors.Blue) + If thisLog Then LogColor($"invFijoXpromo=${invFijoXpromo}"$, Colors.Blue) + If thisLog Then Log($"Prods variables disponibles = ${totalProdsVariablesDisponibles}"$) + Private maxPromosXVariables As Int = 0 + For x = 1 To maxPromosXFijos + If thisLog Then Log("=====================================================") + If thisLog Then Log("=====================================================") + For i = 0 To idProdsFijos.Size - 1 + If thisLog Then Log($"FIJO - ${idProdsFijos.Get(i)}, ${invDispParaPromo.Get(idProdsFijos.Get(i))} - ${prodsFijosPiezas.Get(i).As(Int)*(i+1)}"$) + invDispParaPromo.Put(idProdsFijos.Get(i), invDispParaPromo.Get(idProdsFijos.Get(i)).As(Int) - prodsFijosPiezas.Get(i).As(Int)*(i+1)) 'Restamos las piezas de los productos fijos del inventario disponible. + Next + If thisLog Then LogColor("Inv disponible despues de restar fijos = " & invDispParaPromo, Colors.Blue) + + totalProdsVariablesDisponibles = 0 + For i = 0 To idProdsVariables.Size - 1 'Obtenemos total de productos variables disponibes. + If invDispParaPromo.ContainsKey(idProdsVariables.Get(i)) Then + totalProdsVariablesDisponibles = totalProdsVariablesDisponibles + invDispParaPromo.Get(idProdsVariables.Get(i)) + End If + Next + 'Revisamos variables. + If thisLog Then Log($"Var disponibles - var requeridos : ${totalProdsVariablesDisponibles} - ${prodsVariablesRequeridos*x}"$) + totalProdsVariablesDisponibles = totalProdsVariablesDisponibles - (prodsVariablesRequeridos*x) + If thisLog Then Log("prodsVariables disponibles despues de promo = " & totalProdsVariablesDisponibles) + If totalProdsVariablesDisponibles < 0 Then Exit 'Ya no hay inventario disponible. + maxPromosXVariables = x + Next + 'Restamos fijos. +' LogColor("Max promos de prodsVariables POR inventario = " & maxPromosXVariables, Colors.red) + Return maxPromosXVariables +End Sub + +'Regresa la suma del inventario de los productos variables de la promoción dada desde la base de datos. +Sub cuantosVariablesTengoBD(promo As String) As String 'ignore +' Private x As String = "0" +' If promo <> "" Then +' Private c As Cursor +' c = Starter.db.ExecQuery2("Select SUM(CAT_GP_ALMACEN) as variables FROM CAT_GUNAPROD2 WHERE CAT_GP_ID IN (Select CAT_DP_IDPROD FROM CAT_DETALLES_PAQ WHERE CAT_DP_ID = ? and cat_dp_tipo = 1 GROUP BY CAT_DP_IDPROD)", Array As String (promo)) +' If c.RowCount > -1 Then +' c.Position = 0 +' If c.GetString("variables") <> Null Then x = c.GetString("variables") +' End If +' End If +' Return x +End Sub + +'Regresa un mapa con los datos del producto desde la base de datos. +'el mapa incluye: Id, nombre, tipo y subtipo del producto. +Sub traeProdIdDeBD As Map 'ignore + Private c As Cursor + Private m As Map + c=Starter.db.ExecQuery("select CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_TIPO,CAT_GP_SUBTIPO from CAT_GUNAPROD2 where CAT_GP_NOMBRE In (Select PDESC from PROID)") + If c.RowCount > 0 Then + c.Position = 0 + m = CreateMap("id":c.GetString("CAT_GP_ID"), "nombre":c.GetString("CAT_GP_NOMBRE"), "tipo":c.GetString("CAT_GP_TIPO"), "subtipo":c.GetString("CAT_GP_SUBTIPO")) + Else + m = CreateMap("id":"N/A", "nombre":"N/A", "tipo":"N/A", "subtipo":"N/A") + End If + c.Close + Return m +End Sub + +'Guarda en la base de datos la hora inicial y final de la vista. +Sub guardaClienteHoraInicio(cliente As String) 'ignore + Starter.db.ExecNonQuery2("insert into PEDIDO_INICIO_FINAL(PIF_CLIENTE, PIF_HORA_INICIO, PIF_HORA_FINAL) VALUES(?,?,?) ", Array As Object (cliente, DateTime.Now, 0)) +' LogColor($"insertamos ${cliente}, hora_inicio=${DateTime.Now}, hora_final=0"$,Colors.Red) +End Sub + +'Actualizamos el tiempo que el vendedor estuvo en la tienda, desde que entra a la pantalla del cliente hasta que hace clic en "Guardar". +Sub actualizaTET(cliente As String) 'ignore + Dim c As Cursor = Starter.db.Execquery2("select * from PEDIDO_INICIO_FINAL where PIF_CLIENTE = ?", Array As String(cliente)) + Dim total As Long = 0 + If c.RowCount > 0 Then + c.Position=0 + For i = 0 To c.RowCount-1 + c.Position=i +' LogColor($"cliente=${c.GetString("PIF_CLIENTE")}, inicio=${c.GetString("PIF_HORA_INICIO")}, final=${c.GetString("PIF_HORA_FINAL")}"$, Colors.Magenta) + Dim subtotal As Long = c.GetString("PIF_HORA_FINAL") - c.GetString("PIF_HORA_INICIO") + total = total + subtotal +' Log($" Subtotal=${subtotal}, total=${total}"$) + Next +' Log($"Total=${(total/1000)/60}"$) + Starter.db.ExecNonQuery2("update PEDIDO_CLIENTE set PC_TIEMPO_TIENDA = ? where PC_CLIENTE = ?", Array As String(((total/1000)/60), cliente)) + End If +End Sub + +'Regresa el total de productos y monto del pedido del cliente actual. +Sub traeTotalesClienteActual As Map + Private m As Map + m.Initialize + Private c_prodsX As Cursor=Starter.db.ExecQuery("select ifnull(sum(PE_CANT), 0) as cantProds, ifnull(sum(PE_COSTO_TOT), 0) as costoTotal FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_PRONOMBRE asc") + c_prodsX.Position=0 +' LogColor($"Productos de la orden: ${c_prodsX.GetString("cantProds")}, Total: ${c_prodsX.GetString("costoTotal")}"$, Colors.red) + m = CreateMap("productos": c_prodsX.GetString("cantProds"), "monto" : c_prodsX.GetString("costoTotal")) + Return m +End Sub + +'Borra el pedido del cliente actual. +'Borra los registros de la tabla "pedido" y "pedido_cliente" +'Actualiza las tablas "cat_gunaprod" o "cat_gunaprod2" y "kmt_info". +Sub borraPedidoClienteActual As String + Private thisC As Cursor +' Private tablaProds As String = "cat_gunaprod2" + thisC=Starter.db.ExecQuery("select PE_PROID,PE_CANT FROM PEDIDO where pe_cliente in (Select CUENTA from cuentaa) ") + If thisC.RowCount>0 Then + For i=0 To thisC.RowCount -1 + thisC.Position=i + Starter.db.ExecNonQuery2($"update ${traeTablaProds(Starter.tipov)} set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?"$, Array As Object(thisC.GetString("PE_CANT"),thisC.GetString("PE_PROID"))) +' Starter.db.ExecNonQuery2("INSERT INTO INVENT_X_ENVIAR (ALMACEN , PROID , CANTIDAD ) VALUES(?,?,?) ", Array As Object (traeAlmacen, thisC.GetString("PE_PROID"),thisC.GetString("PE_CANT")* -1)) + Next + End If + Starter.db.ExecNonQuery("delete from pedido_cliente where pc_cliente in (Select CUENTA from cuentaa)") + Starter.db.ExecNonQuery("delete from pedido where pe_cliente in (Select CUENTA from cuentaa)") + Starter.db.ExecNonQuery("UPDATE kmt_info set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + Return 1 +End Sub + +'Regresa verdadero si la columna gestion en la tabla "kmt_info" tene valor 2. +'si no, entonces regresa falso. +Sub pedidoGuardado As Boolean 'ignore + Private guardado As Boolean = False + Private g As Cursor = Starter.db.ExecQuery("select gestion from kmt_info where CAT_CL_CODIGO in (Select CUENTA from cuentaa)") + If g.RowCount > 0 Then + g.Position=0 + If g.GetString("gestion") = "2" Then guardado = True + End If + Log($"Guardado=${guardado}"$) + Return guardado +End Sub + +'Regresa verdadero si hay pedido en la tabla "PEDIDO" del cliente actual. +Sub hayPedido As Boolean + Private thisC As Cursor=Starter.db.ExecQuery($"select count(PE_CLIENTE) as hayPedido from PEDIDO where PE_CLIENTE = '${traeCliente}'"$) + thisC.Position=0 + Private hay As Boolean = False + If thisC.GetString("hayPedido") > 0 Then hay = True +' Log($"Cliente actual=${traeCliente}, hayPedido=${hay}"$) +thisC.Close + Return hay +End Sub + +'Regresa el total del pedido en la tabla "PEDIDO" del cliente actual. +Sub totalPedido As String + Private cT As Cursor = Starter.db.ExecQuery($"select sum(PE_COSTO_TOT) as total from PEDIDO where PE_CLIENTE = '${traeCliente}'"$) + Private pTotal As String = "0" + If cT.RowCount > 0 Then + cT.Position = 0 +' Log("|"&cT.GetLong("total")&"|"&pTotal) + Private tempT As String = cT.GetLong("total") + If tempT <> "null" And tempT <> Null Then +' Log("|"&cT.GetLong("total")&"|") + pTotal = tempT + End If +' Log($"Cliente actual=${traeCliente}, hayPedido=${hay}"$) + End If + cT.Close + Return pTotal +End Sub + +'Regresa verdadero si el usuario actual ya imprimio su venta +Sub revisaImpresa As Boolean + Dim imp As Boolean = False +' Dim i As Cursor = Starter.db.ExecQuery("select count(*) as CUANTOS from CLIENTE_IMPRESO where CI_CUENTA in (Select CUENTA from cuentaa)") + Dim i As Cursor = Starter.db.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)") + i.Position = 0 + If i.GetString("CUANTOS") > 0 Then imp = True Else imp = False + Return imp +End Sub + +'Guarda RMI's (Cambios) en la base de datos +Sub guardaCambiosDeProducto(cantidad, prodNombre, prodId, precio2, query) 'ignore + Log($"${cantidad}, ${prodNombre}, ${prodId}, ${precio2}"$) + Dim sDate, sTime, clie_id, usuario As String + DateTime.DateFormat = "MM/dd/yyyy" + sDate = DateTime.Date(DateTime.Now) + sTime = DateTime.Time(DateTime.Now) + Private a As Cursor = Starter.db.ExecQuery("Select CUENTA from cuentaa") + a.Position=0 + clie_id = a.GetString("CUENTA") + a = Starter.db.ExecQuery("select USUARIO from usuarioa") + a.Position=0 + usuario = a.GetString("USUARIO") + Starter.db.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", (precio2 * -1), ((precio2/cantidad) * -1), cantidad, "CAMBIO" & prodNombre, prodId, clie_id, sDate & sTime, usuario, Starter.tipov, precio2)) + Starter.db.ExecNonQuery2("update " & query & " set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cantidad, prodId)) +End Sub + +'Regresa la fecha guardada en la base de datos con el formato "YYYYMMDD" +'La fecha es de la última vez que se haya cargado día. +Sub traeFechaDeBD As String 'ignore + Private f As String + Private cf As Cursor = Starter.db.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("FECHA")) + If cf.RowCount > 0 Then + cf.Position = 0 + f = cf.GetString("CAT_VA_VALOR") + End If + cf.Close + Return f +End Sub + +'Regresa la tabla de productos (cat_gunaprod o cat_gunaprod2) dependiendo del tipo de venta. +Sub traeTablaProds(tipoventa As String) As String + Private tablaProds As String = "cat_gunaprod2" + If tipoventa = "ABORDO" Or tipoventa = "PREVENTA" Then tablaProds = "cat_gunaprod" +' LogColor($"Tipo= ${tipoventa}, tabla=${tablaProds}"$, Colors.RGB(200,136,0)) + Return tablaProds +End Sub + +Sub agrupador() + Private c As Cursor + Private YA_IMPRIMIO As String + If traeCliente <> "0" Then + c=Starter.db.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 +' Log($"Ya imprimio=${YA_IMPRIMIO}"$) + Starter.db.ExecNonQuery("delete from pedido3") + Starter.db.ExecNonQuery("UPDATE PEDIDO SET PE_FOLIO = 0 where PE_FOLIO IS NULL") + Starter.db.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 ") +' Log("update pedido3") + Starter.db.ExecNonQuery2("UPDATE PEDIDO3 SET PE_FOLIO = ? WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As Object(YA_IMPRIMIO)) + Starter.db.ExecNonQuery("delete from pedido WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") + Starter.db.ExecNonQuery("INSERT INTO PEDIDO SELECT * FROM PEDIDO3") + Starter.db.ExecNonQuery2("UPDATE PEDIDO SET PE_FECHA = ? where PE_CLIENTE IN (Select CUENTA from cuentaa) and PE_FECHA IS NULL", Array As Object(traeFecha)) +End Sub + +Sub esPromo(promoId) As Boolean + Private hay As Boolean = False + Private c_ep As Cursor = Starter.db.ExecQuery($"select count(CAT_DP_ID) as cuantos from CAT_DETALLES_PAQ where CAT_DP_ID = '${promoId}'"$) + If c_ep.RowCount > 0 Then + c_ep.Position = 0 + If c_ep.GetInt("cuantos") > 0 Then hay = True + End If + Return hay +End Sub \ No newline at end of file diff --git a/B4A/Tracker.bas b/B4A/Tracker.bas new file mode 100644 index 0000000..7e3e92b --- /dev/null +++ b/B4A/Tracker.bas @@ -0,0 +1,263 @@ +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 + +Public Sub StartFLPSmall +' Log("StartFLPSmall - flpStarted="&flpStarted) + Do While FLP.IsConnected = False + Sleep(500) + Log("sleeping") + Loop + dameUltimaUbicacionConocida 'Regresamos ultima ubicacion conocida + FLP.RequestLocationUpdates(CreateLocationRequestSmallD) 'Buscamos ubicacion 2 peticiones +' Log("Buscamos ubicacion Small displacement") +' Log("GPSSmallestDisplacement = " & 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 + +Private Sub CreateLocationRequestSmallD As LocationRequest +' Log("Iniciamos CreateLocationRequestSmallD") + 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(0) '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.db.ExecNonQuery("DELETE FROM HIST_GPS") + Starter.db.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) + B4XPages.MainPage.nuevoCliente.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..d056395 --- /dev/null +++ b/B4A/errorManager.bas @@ -0,0 +1,166 @@ +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.db.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 + Subs.iniciaActividad("Principal") +' 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..1675e81 --- /dev/null +++ b/B4A/foto.bas @@ -0,0 +1,174 @@ +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 + Subs.iniciaActividad("Principal") +' 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.db.ExecQuery("select cuenta from cuentaa") + c.Position = 0 + cuenta = c.GetString("CUENTA") + c.Close + Starter.db.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