diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..618d244 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +**/Objects +**/AutoBackups +*.meta \ No newline at end of file diff --git a/B4A/B4XMainPage.bas b/B4A/B4XMainPage.bas new file mode 100644 index 0000000..6cc642e --- /dev/null +++ b/B4A/B4XMainPage.bas @@ -0,0 +1,622 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=9.85 +@EndOfDesignText@ +#Region Shared Files +#CustomBuildAction: folders ready, %WINDIR%\System32\Robocopy.exe,"..\..\Shared Files" "..\Files" +'Ctrl + click to sync files: ide://run?file=%WINDIR%\System32\Robocopy.exe&args=..\..\Shared+Files&args=..\Files&FilesSync=True +'Ctrl + click to export as zip: ide://run?File=%B4X%\Zipper.jar&Args=Project.zip +'########################################################################################################### +'###################### PULL ############################################################# +'Ctrl + click ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=..\..\gitpull.bat +'########################################################################################################### +'###################### PUSH ############################################################# +'Ctrl + click ide://run?file=%WINDIR%\System32\cmd.exe&Args=/c&Args=github&Args=..\..\ +'########################################################################################################### +#End Region + + +Sub Class_Globals + Private Root As B4XView + Private xui As XUI + Public login As B4XMainPage + Public principal As C_Principal + Public clientes As C_Clientes + Public cliente As C_Cliente + Public productos As C_Productos + Public updateAvailable As C_updateAvailable + Public mapas As C_Mapas + Public nuevoCliente As C_NuevoCliente + Public ticketsDia As C_TicketsDia + Public noVenta As C_NoVenta + Public nota As C_Nota + Public pedidos As C_Pedidos + Public promos As C_Promos + Public historico As C_Historico + Public checklist As C_CheckList + + Dim reqManager As DBRequestManager + Dim ultimaActualizacionGPS As String = 235959 + Dim almacen, ruta As String + Dim user As EditText + Dim pass As EditText + Dim c As Cursor + Dim D As Cursor + Dim existe As String + Dim paso1 As String + Dim IMEI As String + Dim alterno As String + Private b_menu As Button +' Dim PopupMenu As RSPopupMenu + Dim cmd As DBCommand + + Private IMEN As EditText + Private Entrar As Button + Private Panel1 As Panel + Private ImageView4 As ImageView + Private E_SERVER As EditText + Private B_SERVER As Button + Private B_FECHA As Button + Private CUANTOS As String + Private foto_g () As Byte + + Private ListView1 As ListView + Private ImageView1 As ImageView + Private Label1 As Label + Private B_BorrarFinDia As Button + Private b_fdCancelar As Button + Private b_findiaOk As Button + Private p_finDia As Panel + Private et_autSup As EditText + + 'prueba downloadfile + Dim ProgressBar1 As ProgressBar + Dim Label1 As Label + Dim btnDownload As Button + Dim btnCancel As Button + Private p_download As Panel + Private Label6 As Label + Dim logger As Boolean = True + + 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.skmt.ExecNonQuery("DROP TABLE IF EXISTS PEDIDO3") + Starter.skmt.ExecNonQuery("CREATE TABLE PEDIDO3 (PE_PRECIO2 TEXT,PE_TIPO TEXT,PE_FOLIO NUMERIC,PE_DESC NUMERIC,PE_COSTO_SIN TEXT,PE_RUTA TEXT,PE_CEDIS TEXT,PE_COSTO_TOT NUMERIC,PE_COSTOU NUMERIC,PE_CANT NUMERIC,PE_PRONOMBRE TEXT,PE_PROID TEXT,PE_CLIENTE TEXT,PE_FECHA TEXT,PE_USUARIO TEXT)") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS DESC_CLIENTES (DC_CL_CLIENTE TEXT, CAT_CL_DESCUENTO_SS TEXT, CAT_CL_DESCUENTO_RTEC TEXT, CAT_CL_DESCUENTO_PING TEXT, CAT_CL_TIPOCLIENTE TEXT)") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_ENCUESTA (HE_CLIE TEXT, HE_RES TEXT, HE_FECHA TEXT, HE_TIPO TEXT)") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_DESCUENTOS_SKU (CAT_DS_CLIENTE TEXT, CAT_DS_PRODID TEXT, CAT_DS_PORCENTAJE TEXT)") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_ENVIOS (HE_FECHA TEXT, HE_CUANTOS TEXT, HE_TIPO TEXT)") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_ENCUESTA_PREGUNTA (CAT_EP_ID TEXT,CAT_EP_IDTIPOPREGUNTA TEXT,CAT_CE_DESCRIPCION TEXT,CAT_EP_PREGUNTA TEXT,CAT_EP_RES1_PRED TEXT,CAT_EP_RES2_PRED TEXT,CAT_EP_RES3_PRED TEXT,CAT_EP_ORDEN_PREGUNTA TEXT)") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_FOTOS (HF_FOTO BLOB, HF_CUENTA TEXT, HF_IDENCUESTA TEXT)") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CLIENTE_IMPRESO (CI_CUENTA TEXT)") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_PROMO_MONTO (CPM_IDPROMO TEXT, CPM_MONTO TEXT, CPM_PROID TEXT, CPM_CLIENTE TEXT, CPM_CANT TEXT, CPM_RANGO TEXT, CPM_DESC TEXT)") + Starter.skmt.ExecNonQuery2("INSERT INTO HIST_ENVIOS VALUES (?,0,?)", Array As Object(sTime, "PEDIDO")) + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_EXHIBIDORES2 (HIST_EX_ID_CLIENTE TEXT, HIST_EX_TIPO TEXT, HIST_EX_CANT TEXT)") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_PROMO_WHATS(HIST_CLIENTE TEXT, HIST_RESPUESTA_PROMO)") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_RMI(CAT_GP_ID TEXT,CAT_GP_NOMBRE TEXT,CAT_GP_PRECIO TEXT)") + + ''' PARA LO DE DOE--- + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_GUNAPROD_DOE (CAT_GP_ID TEXT,CAT_GP_NOMBRE TEXT,CAT_GP_IMP1 TEXT,CAT_GP_IMP2 TEXT,CAT_GP_PRECIO TEXT,CAT_GP_CLASIF TEXT,CAT_GP_STS TEXT,CAT_GP_TIPO TEXT,CAT_GP_SUBTIPO TEXT,CAT_GP_IMG TEXT,CAT_GP_ALMACEN TEXT,CAT_GP_TIPOPROD TEXT,CAT_GP_INICIATIVA TEXT,CAT_GP_DEV TEXT,CAT_GP_CODPROMO TEXT)") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS PEDIDO_DOE (PE_PRECIO2 TEXT,PE_TIPO TEXT,PE_FOLIO NUMERIC,PE_DESC NUMERIC,PE_COSTO_SIN TEXT,PE_RUTA TEXT,PE_CEDIS TEXT,PE_COSTO_TOT NUMERIC,PE_COSTOU NUMERIC,PE_CANT NUMERIC,PE_PRONOMBRE TEXT,PE_PROID TEXT,PE_CLIENTE TEXT,PE_FECHA TEXT,PE_USUARIO TEXT)") + ''' FIN DOE + + Try 'Intentamos usar "pragma_table_info" para revisar si existe la columna "IMPRESION" en la tabla + c=Starter.skmt.ExecQuery("SELECT COUNT(*) AS fCol FROM pragma_table_info('kmt_info') WHERE name='IMPRESION'") + c.Position = 0 + If c.GetString("fCol") = 0 Then 'Si no esta la columna FECHA la agregamos + Starter.skmt.ExecNonQuery("ALTER TABLE kmt_info ADD COLUMN IMPRESION INTEGER") + End If + Catch 'Si no funciona "pragma_table_info" lo hacemos con try/catch + Try + Starter.skmt.ExecNonQuery("ALTER TABLE kmt_info ADD COLUMN IMPRESION INTEGER") + Catch + Log(LastException) + End Try + End Try + Try 'Agregamos columna fecha a usuarioa + c=Starter.skmt.ExecQuery("SELECT fecha FROM usuarioa") + Catch + LogColor("Agregamos columna fecha a usuarioa", Colors.red) + Starter.skmt.ExecNonQuery("ALTER TABLE usuarioa ADD COLUMN FECHA TEXT") + End Try + If sDate = "20190523" Then + Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("SERVER")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("SERVER", Starter.server)) + End If +' Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("ULTIMOMODULO")) +' Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("ULTIMOMODULO", "MAIN")) + c=Starter.skmt.ExecQuery2("select count(*) as CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SERVER")) + c.Position =0 + If c.GetString("CUANTOS") = 0 Then + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("SERVER",Starter.server)) + Else + c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SERVER")) + c.Position =0 + Starter.server = c.GetString("CAT_VA_VALOR") + reqManager.Initialize(Me, Starter.server) + End If + reqManager.Initialize(Me, Starter.server) +' Activity.LoadLayout("login") + Label1.Text = Application.VersionName + 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.skmt.ExecQuery("SELECT COUNT(*) as CUANTOS FROM TMP_INSPECCION_AUTO_DIARIA") + c.Position = 0 + CUANTOS = c.GetString("CUANTOS") + c.Close + If CUANTOS = 0 Then + Dim theDir As String + If File.IsDirectory("/","kmts") Then + theDir = "/kmts" + End If + Try + File.MakeDir(File.DirInternal,"kmts") + theDir = "/kmts" + 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) + Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_READ_PHONE_STATE) + Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean) + If Result Then + Dim Phn As PhoneId + IMEN.Text = "" 'Phn.GetDeviceId + IMEI ="" ' Phn.GetDeviceId + If logger Then LogColor($"////////////////// IMEI: ${IMEI} ////////////////// "$, Colors.Blue) + End If + 'este codigo es para lo del menu +' PopupMenu.Initialize("PopupMenu", b_menu) +' PopupMenu.AddMenuItem(0, 0, "View") +' PopupMenu.AddMenuItem(1, 1, "Edit") +' PopupMenu.AddMenuItem(2, 2, "Details") +' PopupMenu.AddMenuItem(3, 3, "Remove") + ' menu fin + Subs.borraArribaDe100Errores +End Sub + +Sub B4XPage_Appear +' server = "http://keymon.com.mx:1782" +' server = "http://201.99.139.28:1782" +' server = "http://177.244.63.54:1782" + reqManager.Initialize(Me, Starter.server) + Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_ACCESS_FINE_LOCATION) + Wait For B4XPAge_PermissionResult (Permission As String, Result As Boolean) + If Result Then + StartService(Tracker) + If logger Then Log("Start Tracker") + Else + ToastMessageShow("Sin permisos para GPS", True) + End If + Starter.montoActual = 0 + Starter.clientesTotal = 0 + Starter.clientesVenta = 0 + Starter.clientesVisitados = 0 + almacen = 0 + Starter.rutaPreventa = 0 + Starter.CANTIDADPROD = 0 + c.Close + c=Starter.skmt.ExecQuery2("select count(*) as CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("CODIGO")) + c.Position =0 + CUANTOS = c.GetString("CUANTOS") + c.Close + If CUANTOS > 0 Then + c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("CODIGO")) + c.Position =0 + If c.GetString("CAT_VA_VALOR") = "743" Then + Entrar.Visible = True + End If + c.Close + Else + Log("INSERTAMOS CODIGO EN CAT_VARIABLES") + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("CODIGO","743")) + End If + c=Starter.skmt.ExecQuery2("select COUNT(*) AS CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("MACIMP")) + c.Position =0 + If c.GetString("CUANTOS") = 0 Then + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("MACIMP","0")) + End If + D=Starter.skmt.ExecQuery("select COUNT(*) AS CUANTOS from version") + D.Position=0 + If D.GetString("CUANTOS") > 0 Then + c=Starter.skmt.ExecQuery("select NOVERSION from version") + c.Position = 0 + If c.GetString("NOVERSION") = "2.1" Then + Starter.skmt.ExecNonQuery("delete from VERSION") + End If + c.Close + End If + D.Close + D=Starter.skmt.ExecQuery("select COUNT(*) AS CUANTOS from version") + D.Position=0 + If D.GetString("CUANTOS") > 0 Then + c=Starter.skmt.ExecQuery("select NOVERSION from version") + c.Position = 0 + If c.GetString("NOVERSION") <> "2.95" Then + Msgbox("INSTALAR NUEVO APK" ,"AVISO") 'ignore + B4XPage_Appear + End If + c.Close + End If +End Sub + +'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. + +Sub Entrar_Click + DateTime.DateFormat = "yyyyMMdd" + If user.Text = "ALTERNO" Then + c=Starter.skmt.ExecQuery2("select CAT_CO_CONFIGURACION, CAT_CO_RESULTADO from CAT_CODIGOS where CAT_CO_PONDERACION =1 AND CAT_CO_ACCION = ?", Array As String("SERVER")) + c.Position =0 + Starter.server = c.GetString("CAT_CO_CONFIGURACION") + alterno = c.GetString("CAT_CO_RESULTADO") + c.Close + If alterno = 1 Then + Starter.skmt.ExecNonQuery2("UPDATE CAT_CODIGOS SET CAT_CO_PONDERACION = 1 WHERE CAT_CO_ACCION = ? AND CAT_CO_RESULTADO = 2", Array As String ("SERVER")) + Starter.skmt.ExecNonQuery2("UPDATE CAT_CODIGOS SET CAT_CO_PONDERACION = 0 WHERE CAT_CO_ACCION = ? AND CAT_CO_RESULTADO = 1", Array As String ("SERVER")) + Else if alterno = 2 Then + Starter.skmt.ExecNonQuery2("UPDATE CAT_CODIGOS SET CAT_CO_PONDERACION = 1 WHERE CAT_CO_ACCION = ? AND CAT_CO_RESULTADO = 1", Array As String ("SERVER")) + Starter.skmt.ExecNonQuery2("UPDATE CAT_CODIGOS SET CAT_CO_PONDERACION = 0 WHERE CAT_CO_ACCION = ? AND CAT_CO_RESULTADO = 2", Array As String ("SERVER")) + End If + c=Starter.skmt.ExecQuery2("select CAT_CO_CONFIGURACION, CAT_CO_RESULTADO from CAT_CODIGOS where CAT_CO_PONDERACION =1 AND CAT_CO_ACCION = ?", Array As String("SERVER")) + c.Position =0 + Starter.server = c.GetString("CAT_CO_CONFIGURACION") + user.Text = Starter.server + c.Close + reqManager.Initialize(Me, Starter.server) + else if user.Text = "KMTSKLL1" Then + Starter.skmt.ExecNonQuery("delete from usuarioa") + Starter.skmt.ExecNonQuery2("INSERT INTO USUARIOA VALUES (?,?,?)", Array As Object(user.Text, pass.Text, DateTime.Date(DateTime.Now))) + Starter.skmt.ExecNonQuery("delete from cat_almacen") + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_ALMACEN(ID_ALMACEN) VALUES (?)", Array As Object (pass.Text)) + Starter.skmt.ExecNonQuery("delete from VERSION") + Starter.skmt.ExecNonQuery2("INSERT INTO VERSION(NOVERSION) VALUES (?)", Array As Object ("2.95")) + B4XPages.ShowPage("Principal") + End If +' c=Starter.skmt.ExecQuery2("select count(*) as EXISTE1 from usuarioa where usuario = ?", Array As String(user.Text)) + c=Starter.skmt.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" + reqManager.ExecuteQuery(cmd , 0, "version") + Else + Subs.iniciaActividad("Principal") +' B4XPages.ShowPage("Principal") + End If +End Sub + +Sub JobDone(Job As HttpJob) + If Job.Success = False Then + ToastMessageShow("Error: " & Job.ErrorMessage, True) + Else + If logger Then LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211110 + If Job.JobName = "DBRequest" Then + Dim result As DBResult = reqManager.HandleJob(Job) + If result.Tag = "version" Then 'query tag + For Each records() As Object In result.Rows + Starter.skmt.ExecNonQuery("delete from VERSION") + Dim CAT_VE_VERSION As String = records(result.Columns.Get("CAT_VE_VERSION")) + Starter.skmt.ExecNonQuery("delete from VERSION") + Starter.skmt.ExecNonQuery2("INSERT INTO VERSION(NOVERSION) VALUES (?)", Array As Object (CAT_VE_VERSION)) + Next + End If + End If + + If Job.JobName = "DBRequest" Then + Dim result As DBResult = reqManager.HandleJob(Job) + If result.Tag = "agencia" Then 'query tag + For Each records() As Object In result.Rows + Dim ID_ALMACEN As String = records(result.Columns.Get("ID_ALMACEN")) + Next + End If + End If + + If Job.JobName = "DBRequest" Then + Dim result As DBResult = reqManager.HandleJob(Job) + If result.Tag = "fecha" Then 'query tag + For Each records() As Object In result.Rows + Starter.FECHA_HOY = records(result.Columns.Get("FECHA")) + Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("FECHA")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("FECHA", Starter.FECHA_HOY)) + Next + End If + End If + + If Job.JobName = "DBRequest" Then + Dim result As DBResult = reqManager.HandleJob(Job) + If result.Tag = "usuario" Then 'query tag + For Each records() As Object In result.Rows + Dim name As String = records(result.Columns.Get("USUARIO")) + Dim ID_ALMACEN As String = records(result.Columns.Get("CAT_LO_AGENCIA")) + If logger Then Log(name) + ' Dim IMEI_BASE As String = records(result.Columns.Get("CAT_LO_IDTELEFONO")) + Next + paso1 = 1 + End If + End If + Job.Release + End If + + If paso1 =1 Then + If name = "OKActivo" Then + LogColor("Borramos e insertamos a usuarioa", Colors.green) + DateTime.DateFormat = "yyyyMMdd" + Starter.skmt.ExecNonQuery("delete from usuarioa") + Starter.skmt.ExecNonQuery2("INSERT INTO USUARIOA VALUES (?,?,?)", Array As Object(user.Text, pass.Text, DateTime.Date(DateTime.Now))) + Starter.skmt.ExecNonQuery("delete from cat_almacen") + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_ALMACEN(ID_ALMACEN) VALUES (?)", Array As Object (ID_ALMACEN)) + almacen = ID_ALMACEN + Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("NUMERO_PEDIDO")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("NUMERO_PEDIDO",0)) +' B4XPages.ShowPage("Principal") + 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.skmt.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.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SERVER")) + c.Position =0 + E_SERVER.text = c.GetString("CAT_VA_VALOR") + Panel1.Visible = True + Panel1.Width = Root.Width * 0.95 + Panel1.Left = (Root.Width/2) - (Panel1.Width/2) + Panel1.Top = (Root.Height/2) - (Panel1.Height/2) + Panel1.Elevation = 100 + Panel1.BringToFront +End Sub + +Private Sub ImageView4_LongClick + Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE) + Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean) + Subs.copiaDB(Result) +End Sub + +Sub B_SERVER_Click + Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("SERVER")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("SERVER",E_SERVER.text)) + Starter.server = E_SERVER.text + If logger Then Log("Inicializamos reqManager con " & Starter.server) + reqManager.Initialize(Me, Starter.server) + CallSubDelayed(Starter, "reinicializaReqManager") + Panel1.Visible = False + Entrar.Visible = True +End Sub + +Sub B_FECHA_Click + Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("MACIMP")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("MACIMP","0")) + Panel1.Visible = False +End Sub + +Sub ListView1_ItemClick (Position As Int, Value As Object) + E_SERVER.text = Value +End Sub + +Sub ImageView1_Click + +End Sub + +Sub B_BorrarFinDia_Click + p_finDia.Visible = True + p_finDia.BringToFront +End Sub + +Sub b_fdCancelar_Click + p_finDia.Visible = False + p_finDia.SendToBack +End Sub + +Sub b_findiaOk_Click + c=Starter.skmt.ExecQuery2("select count(*) as passOk from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ? and CAT_VA_VALOR = ?", Array As String ("FINDIA_PASS", et_autSup.Text)) + c.Position =0 + If c.GetString("passOk") = 1 Or et_autSup.Text = "FinDiaAutOk" Then + Starter.skmt.ExecNonQuery("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'FINDIA_FECHA'") + ToastMessageShow("Ya se puede hacer FIN DIA!!", True) + p_finDia.Visible = False + p_finDia.SendToBack + Else + Msgbox("Código de autorización equivocado", "AVISO") 'ignore + End If + c.Close +End Sub + +'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_CheckList.bas b/B4A/C_CheckList.bas new file mode 100644 index 0000000..dd876a9 --- /dev/null +++ b/B4A/C_CheckList.bas @@ -0,0 +1,871 @@ +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 c As Cursor + Dim C2 As Cursor + Private frontCamera As Boolean = False + Dim OK_CheckList As Int + '//Globals + Dim IME As IME + Private Edt_FH As EditText + Private Sp_MENU As Spinner + Dim LISTMENU As List + Private LB_CATEGORIA As Label + Private SCROLLPRINC As ScrollView + Private Pnl_CABINA As Panel + Dim sDate,sTime As String + ''''''''' PANELS CHECKS + Private camEx As CameraExClass + Private Rb_4_4 As RadioButton + Private Rb_3_4 As RadioButton + Private Rb_2_4 As RadioButton + Private Rb_1_4 As RadioButton + Private Lb_4 As Label + Private Lb_3 As Label + Private Lb_2 As Label + Private Lb_1 As Label + Private Et_KilometrajeIni As EditText + Private Cbox_Claxon As CheckBox + Private Cbox_Parabrisas As CheckBox + Private Cbox_Cinturon As CheckBox + Private Cbox_Espejos As CheckBox + Private Cbox_Licencia As CheckBox + Private Pnl_CabinaInfo As Panel + Private Pnl_MotorEncen As Panel + Private Pnl_Inspec As Panel + Private Pnl_CofreAbierto As Panel + Private Pnl_Carga As Panel + Private SP_MENUC As SD_Spinner + Private Im_1 As ImageView + Private Im2 As ImageView + Private Im3 As ImageView + Private Im4 As ImageView + Private Bt_Foto1 As Button + Private Bt_Foto2 As Button + Private Bt_Foto3 As Button + Private Bt_Foto4 As Button + Private Bt_GuardarCheck As Button + Private N_Ruta As String + Private Id_Almacen As String + Private Combustible As String + Private PLACAS As String + '' PANEL 2 + Private Ch_OBJETOSINE As CheckBox + Private CH_OBJMPERV As CheckBox + Private Ch_ORHERRA As CheckBox + Private Ch_LIMPIO As CheckBox + Private Ch_UNILIMPIA As CheckBox + Private Ch_BASURA As CheckBox + Private Ch_RESPON As CheckBox + Private Ch_AUDITORIA As CheckBox + Private Ch_HABITUAL As CheckBox + '' PANEL 3 + Private Ch_HERRAMIENTAS As CheckBox + Private Ch_CONOS As CheckBox + Private Ch_EDOCARROCE As CheckBox + Private Ch_FUN_LUCES As CheckBox + Private Ch_PLACAS_CIRCU As CheckBox + Private Ch_COND_LLANTAS As CheckBox + '' PANEL 4 + Private Ch_ACEITEMOTOR As CheckBox + Private Ch_ACEITEDIREC As CheckBox + Private Ch_NVL_REFRIGE As CheckBox + Private Ch_NVL_LIQUIDBRI As CheckBox + Private Ch_COND_BANMOTOR As CheckBox + ''''' PANEL5 + Private Ch_FUGASGRAL As CheckBox + Private Ch_FRENOS As CheckBox + Private Edt_COMENTARIO As AutoCompleteEditText + Private Pnl_Fotos As Panel + Private btnTakePicture As Button + Private b_guardar As Button + Private Pnl_foto As Panel + Dim camera1 As Camera + Private TOMO_FOTO1 As String + Private TOMO_FOTO2 As String + Private TOMO_FOTO3 As String + Private TOMO_FOTO4 As String + Private LBL_REGRESA As Label + Private Label5 As Label + Dim out As OutputStream + Private CUANTOS As String +End Sub + +'You can add more parameters here. +Public Sub Initialize As Object + Return Me +End Sub + +'This event will be called once, before the page becomes visible. +Private Sub B4XPage_Created (Root1 As B4XView) + Root = Root1 + 'load the layout to Root + Root.LoadLayout("checklist") + SCROLLPRINC.Panel.LoadLayout("checks") + SCROLLPRINC.Panel.Height = Pnl_MotorEncen.Height + IME.Initialize("IME") + IME.AddHeightChangedEvent + + OK_CheckList=0 + Pnl_CabinaInfo.Visible=True + btnTakePicture.Enabled = True + camera1.Initialize(Pnl_foto, "Camera1") + + LISTMENU.IsInitialized + LISTMENU.Initialize + LISTMENU.AddAll(Array As String ("Cabina con switch encendido", "Cabina y espacio de carga", "Inspección General Exterior", "Cofre abierto, motor apagado","Con motor encendido")) + + SP_MENUC.AddAll(LISTMENU,"CheckList",Colors.White,Colors.Blue,Gravity.CENTER) + DateTime.DateFormat="dd/MM/yyyy" + Edt_FH.Text=DateTime.Date(DateTime.Now) + ruta = File.DirInternal +End Sub + +'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. + +Sub Camera1_Ready (Success As Boolean) + Log("Camara lista") + If Success Then + camera1.StartPreview + camera1.Initialize(Pnl_foto, "Camera1") + btnTakePicture.Enabled = True + Else + ToastMessageShow("No se puede abrir la camara.", True) + End If +End Sub + +Sub B4XPage_Appear +' If Subs.traeUltimaActividadBD <> "CHECKLIST_AUTO" Then Subs.iniciaActividad(Subs.traeUltimaActividadBD) + c=Starter.skmt.ExecQuery("SELECT COUNT(*) as CUANTOS FROM TMP_INSPECCION_AUTO_DIARIA") + c.Position = 0 + CUANTOS = c.GetString("CUANTOS") + c.Close + If CUANTOS > 0 Then + If Et_KilometrajeIni.Text = "" Then + c=Starter.skmt.ExecQuery("select * from tmp_inspeccion_auto_diaria") + If c.RowCount > 0 Then + c.Position = 0 + If c.GetString("TMP_AUTO_COMBUSTIBLE") = "4/4" Then Rb_4_4.Checked = True + If c.GetString("TMP_AUTO_COMBUSTIBLE") = "3/4" Then Rb_3_4.Checked = True + If c.GetString("TMP_AUTO_COMBUSTIBLE") = "2/4" Then Rb_2_4.Checked = True + If c.GetString("TMP_AUTO_COMBUSTIBLE") = "1/4" Then Rb_1_4.Checked = True + If c.GetString("TMP_AUTO_KILOMETRAJE") <> "" Then Et_KilometrajeIni.text = c.GetString("TMP_AUTO_KILOMETRAJE") + If c.GetString("TMP_AUTO_CLAXON ") = "1" Then Cbox_Claxon.Checked = True + If c.GetString("TMP_AUTO_PARABRISAS ") = "1" Then Cbox_Parabrisas.Checked = True + If c.GetString("TMP_AUTO_CINTURON ") = "1" Then Cbox_Cinturon.Checked = True + If c.GetString("TMP_AUTO_ESPEJOS ") = "1" Then Cbox_Espejos.Checked = True + If c.GetString("TMP_AUTO_LICENCIA ") = "1" Then Cbox_Licencia.Checked = True + If c.GetString("TMP_AUTO_LIB_OBJETOSINE ") = "1" Then Ch_OBJETOSINE.Checked = True + If c.GetString("TMP_AUTO_LIB_OBJETOTMPERVI ") = 1 Then CH_OBJMPERV.Checked = True + If c.GetString("TMP_AUTO_ORDEN_HERRA ") = "1" Then Ch_ORHERRA.Checked = True + If c.GetString("TMP_AUTO_UNILIMPIA ") = "1" Then Ch_UNILIMPIA.Checked = True + If c.GetString("TMP_AUTO_LIMPIO ") = "1" Then Ch_LIMPIO.Checked = True + If c.GetString("TMP_AUTO_BASURA ") = "1" Then Ch_BASURA.Checked = True + If c.GetString("TMP_AUTO_RESPONSABILIDAD ") ="1" Then Ch_RESPON.Checked = True + If c.GetString("TMP_AUTO_AUDITORIA ") = "1" Then Ch_AUDITORIA.Checked = True + If c.GetString("TMP_AUTO_HABITUAL ") = "1" Then Ch_HABITUAL.Checked = True + If c.GetString("TMP_AUTO_HERRAMIENTAS ") = "1" Then Ch_HERRAMIENTAS.Checked = True + If c.GetString("TMP_AUTO_CONOS ") = "1" Then Ch_CONOS.Checked = True + If c.GetString("TMP_AUTO_EDO_CARROCERIA ") = "1" Then Ch_EDOCARROCE.Checked = True + If c.GetString("TMP_AUTO_FUN_LUCES ") = "1" Then Ch_FUN_LUCES.Checked = True + If c.GetString("TMP_AUTO_PLACAS_CIRCU ") = "1" Then Ch_PLACAS_CIRCU.Checked = True + If c.GetString("TMP_AUTO_COND_LLANTAS ") = "1" Then Ch_COND_LLANTAS.Checked = True + If c.GetString("TMP_AUTO_ACEITEMOTOR ") = "1" Then Ch_ACEITEMOTOR.Checked = True + If c.GetString("TMP_AUTO_ACEITEDIREC ") = "1" Then Ch_ACEITEDIREC.Checked = True + If c.GetString("TMP_AUTO_NVL_REFRIGERANTE ") = "1" Then Ch_NVL_REFRIGE.Checked = True + If c.GetString("TMP_AUTO_NVL_LIQUIDBRISAS ") = "1" Then Ch_NVL_LIQUIDBRI.Checked = True + If c.GetString("TMP_AUTO_COND_BANMOTOR ") = "1" Then Ch_COND_BANMOTOR.Checked = True + If c.GetString("TMP_AUTO_FUGASGRAL ") = "1" Then Ch_FUGASGRAL.Checked = True + If c.GetString("TMP_AUTO_FRENOS ") = "1" Then Ch_FRENOS.Checked = True + If c.GetString("TMP_AUTO_COMENTARIOS ") <> "" Then Edt_COMENTARIO.text = c.GetString("TMP_AUTO_COMENTARIOS ") + End If + End If + Pnl_CabinaInfo.Visible=False + Pnl_Carga.Visible=False + Pnl_Inspec.Visible=True + Pnl_MotorEncen.Visible=True + Pnl_CofreAbierto.Visible=False + If File.Exists(File.DirInternal,"FOTO1.jpg") = True Then + Im_1.Bitmap = LoadBitmap(File.DirInternal, "FOTO1.jpg") + Else + If File.Exists(File.DirInternal,"FOTO1.jpg") = False Then + Im_1.Bitmap = LoadBitmap(File.DirAssets,"foto1.jpg") + End If + End If + If File.Exists(File.DirInternal,"FOTO2.jpg") = True Then + Im2.Bitmap = LoadBitmap(File.DirInternal, "FOTO2.jpg") + Else + If File.Exists(File.DirInternal,"FOTO2.jpg") = False Then + Im2.Bitmap = LoadBitmap(File.DirAssets,"foto2.jpg") + End If + End If + If File.Exists(File.DirInternal,"FOTO3.jpg") = True Then + Im3.Bitmap = LoadBitmap(File.DirInternal, "FOTO3.jpg") + Else + If File.Exists(File.DirInternal,"FOTO3.jpg") = False Then + Im3.Bitmap = LoadBitmap(File.DirAssets,"foto3.jpg") + End If + End If + If File.Exists(File.DirInternal,"FOTO4.jpg") = True Then + Im4.Bitmap = LoadBitmap(File.DirInternal, "FOTO4.jpg") + Else + If File.Exists(File.DirInternal,"FOTO4.jpg") = False Then + Im4.Bitmap = LoadBitmap(File.DirAssets,"foto4.jpg") + End If + End If + End If +End Sub + +Sub Camera1_PictureTaken (Data() As Byte) + Log("foto tomada") + camera1.StartPreview + If Bt_Foto1.Tag="1" Then + Dim salida As OutputStream + salida = File.OpenOutput(File.DirInternal, "FOTO1.jpg", False) + salida.WriteBytes(Data, 0, Data.Length) + salida.Close + ToastMessageShow("FOTO GUARDADA "& "FOTO1.jpg", True) + Bt_Foto1.Tag="2" + End If + If Bt_Foto2.Tag="1" Then + Dim salida As OutputStream + salida = File.OpenOutput(File.DirInternal, "FOTO2.jpg", False) + salida.WriteBytes(Data, 0, Data.Length) + salida.Close + ToastMessageShow("FOTO GUARDADA "& "FOTO2.jpg", True) + Bt_Foto2.Tag="2" + End If + If Bt_Foto3.Tag="1" Then + Dim salida As OutputStream + salida = File.OpenOutput(File.DirInternal, "FOTO3.jpg", False) + salida.WriteBytes(Data, 0, Data.Length) + salida.Close + ToastMessageShow("FOTO GUARDADA "& "FOTO3.jpg", True) + Bt_Foto3.Tag="2" + End If + If Bt_Foto4.Tag="1" Then + Dim salida As OutputStream + salida = File.OpenOutput(File.DirInternal, "FOTO4.jpg", False) + salida.WriteBytes(Data, 0, Data.Length) + salida.Close + ToastMessageShow("FOTO GUARDADA "& "FOTO4.jpg", True) + Bt_Foto4.Tag="2" + End If +End Sub + +Sub btnTakePicture_Click + btnTakePicture.Enabled = True + camera1.TakePicture +End Sub + +Sub Nvl_Combustible_CheckedChange(Checked As Boolean) + If Rb_1_4.Checked Then + Lb_1.Visible=True + Lb_2.Visible=False + Lb_3.Visible=False + Lb_4.Visible=False + End If + If Rb_2_4.Checked Then + Lb_1.Visible=False + Lb_2.Visible=True + Lb_3.Visible=False + Lb_4.Visible=False + End If + If Rb_3_4.Checked Then + Lb_1.Visible=False + Lb_2.Visible=False + Lb_3.Visible=True + Lb_4.Visible=False + End If + If Rb_4_4.Checked Then + Lb_1.Visible=False + Lb_2.Visible=False + Lb_3.Visible=False + Lb_4.Visible=True + End If +End Sub + +Sub SP_MENUC_ItemClick (Position As Int, Value As String) + LB_CATEGORIA.Text =LISTMENU.Get(Position) + If LB_CATEGORIA.Text = "Cabina con switch encendido" Then + Pnl_CabinaInfo.Visible=True + Pnl_Carga.Visible=False + Pnl_Inspec.Visible=False + Pnl_MotorEncen.Visible=False + Pnl_CofreAbierto.Visible=False + End If + If LB_CATEGORIA.Text = "Cabina y espacio de carga" Then + Pnl_CabinaInfo.Visible=False + Pnl_Carga.Visible=True + Pnl_Inspec.Visible=False + Pnl_MotorEncen.Visible=False + Pnl_CofreAbierto.Visible=False + End If + If LB_CATEGORIA.Text = "Inspección General Exterior" Then + Pnl_CabinaInfo.Visible=False + Pnl_Carga.Visible=False + Pnl_Inspec.Visible=True + Pnl_MotorEncen.Visible=False + Pnl_CofreAbierto.Visible=False + End If + If LB_CATEGORIA.Text = "Cofre abierto, motor apagado" Then + Pnl_CabinaInfo.Visible=False + Pnl_Carga.Visible=False + Pnl_Inspec.Visible=False + Pnl_MotorEncen.Visible=False + Pnl_CofreAbierto.Visible=True + If Pnl_CofreAbierto.Visible=True Then + Pnl_Fotos.visible=False + End If + End If + If LB_CATEGORIA.Text = "Con motor encendido" Then + Pnl_CabinaInfo.Visible=False + Pnl_Carga.Visible=False + Pnl_Inspec.Visible=True + Pnl_MotorEncen.Visible=True + Pnl_CofreAbierto.Visible=False + End If +End Sub + +Sub Bt_GuardarCheck_Click + DateTime.DateFormat = "MM/dd/yyyy" + sDate=DateTime.Date(DateTime.Now) + sTime=DateTime.Time(DateTime.Now) + N_Ruta=0 + c=Starter.skmt.ExecQuery("select CAT_CL_RUTA FROM kmt_info") + If c.RowCount > 0 Then + c.Position=0 + N_Ruta= c.GetString("CAT_CL_RUTA") + End If + C2=Starter.skmt.ExecQuery("select ID_ALMACEN FROM CAT_ALMACEN") + C2.Position=0 + Id_Almacen=C2.GetString("ID_ALMACEN") + ''''''''''''''''''''''''''''''''''''NIVELES DE GASOLINA CHECK'''''''''''''''''' + If Rb_1_4.Checked Then + Combustible="1/4" + End If + If Rb_2_4.Checked Then + Combustible="2/4" + End If + If Rb_3_4.Checked Then + Combustible="3/4" + End If + If Rb_4_4.Checked Then + Combustible="4/4" + End If + ''''''''''''''''''''''''''''''''''''INDICADORES DE TABLERO'''''''''''''''''' + If Cbox_Claxon.Checked=True Then + Cbox_Claxon.Tag="1" + Else + Cbox_Claxon.Tag="0" + End If + If Cbox_Cinturon.Checked=True Then + Cbox_Cinturon.Tag="1" + Else + Cbox_Cinturon.Tag="0" + End If + If Cbox_Parabrisas.Checked=True Then + Cbox_Parabrisas.Tag="1" + Else + Cbox_Parabrisas.Tag="0" + End If + If Cbox_Espejos.Checked=True Then + Cbox_Espejos.Tag="1" + Else + Cbox_Espejos.Tag="0" + End If + If Cbox_Licencia.Checked=True Then + Cbox_Licencia.Tag="1" + Else + Cbox_Licencia.Tag="0" + End If + '''''' SEGUNDO PANEL + If Ch_OBJETOSINE.Checked=True Then + Ch_OBJETOSINE.Tag="1" + Else + Ch_OBJETOSINE.Tag="0" + End If + If CH_OBJMPERV.Checked=True Then + CH_OBJMPERV.Tag="1" + Else + CH_OBJMPERV.Tag="0" + End If + If Ch_ORHERRA.Checked=True Then + Ch_ORHERRA.Tag="1" + Else + Ch_ORHERRA.Tag="0" + End If + If Ch_UNILIMPIA.Checked=True Then + Ch_UNILIMPIA.Tag="1" + Else + Ch_UNILIMPIA.Tag="0" + End If + If Ch_LIMPIO.Checked=True Then + Ch_LIMPIO.Tag="1" + Else + Ch_LIMPIO.Tag="0" + End If + If Ch_BASURA.Checked=True Then + Ch_BASURA.Tag="1" + Else + Ch_BASURA.Tag="0" + End If + If Ch_RESPON.Checked=True Then + Ch_RESPON.Tag="1" + Else + Ch_RESPON.Tag="0" + End If + If Ch_AUDITORIA.Checked=True Then + Ch_AUDITORIA.Tag="1" + Else + Ch_AUDITORIA.Tag="0" + End If + If Ch_HABITUAL.Checked=True Then + Ch_HABITUAL.Tag="1" + Else + Ch_HABITUAL.Tag="0" + End If + ''''' PANEL 3 + If Ch_HERRAMIENTAS.Checked=True Then + Ch_HERRAMIENTAS.Tag="1" + Else + Ch_HERRAMIENTAS.Tag="0" + End If + If Ch_CONOS.Checked=True Then + Ch_CONOS.Tag="1" + Else + Ch_CONOS.Tag="0" + End If + If Ch_EDOCARROCE.Checked=True Then + Ch_EDOCARROCE.Tag="1" + Else + Ch_EDOCARROCE.Tag="0" + End If + If Ch_FUN_LUCES.Checked=True Then + Ch_FUN_LUCES.Tag="1" + Else + Ch_FUN_LUCES.Tag="0" + End If + If Ch_PLACAS_CIRCU.Checked=True Then + Ch_PLACAS_CIRCU.Tag="1" + Else + Ch_PLACAS_CIRCU.Tag="0" + End If + If Ch_COND_LLANTAS.Checked=True Then + Ch_COND_LLANTAS.Tag="1" + Else + Ch_COND_LLANTAS.Tag="0" + End If + '''' PANEL 4 + If Ch_ACEITEMOTOR.Checked=True Then + Ch_ACEITEMOTOR.Tag="1" + Else + Ch_ACEITEMOTOR.Tag="0" + End If + If Ch_ACEITEDIREC.Checked=True Then + Ch_ACEITEDIREC.Tag="1" + Else + Ch_ACEITEDIREC.Tag="0" + End If + If Ch_NVL_REFRIGE.Checked=True Then + Ch_NVL_REFRIGE.Tag="1" + Else + Ch_NVL_REFRIGE.Tag="0" + End If + If Ch_NVL_LIQUIDBRI.Checked=True Then + Ch_NVL_LIQUIDBRI.Tag="1" + Else + Ch_NVL_LIQUIDBRI.Tag="0" + End If + If Ch_COND_BANMOTOR.Checked=True Then + Ch_COND_BANMOTOR.Tag="1" + Else + Ch_COND_BANMOTOR.Tag="0" + End If + ''''' PANEL 5 + If Ch_FUGASGRAL.Checked=True Then + Ch_FUGASGRAL.Tag="1" + Else + Ch_FUGASGRAL.Tag="0" + End If + If Ch_FRENOS.Checked=True Then + Ch_FRENOS.Tag="1" + Else + Ch_FRENOS.Tag="0" + End If + c=Starter.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?",Array As String("PLACAS") ) + c.Position=0 + PLACAS = c.GetString("CUANTOS") + c.Close + If PLACAS > 0 Then + c=Starter.skmt.ExecQuery2("SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?",Array As String("PLACAS") ) + c.Position=0 + PLACAS = c.GetString("CAT_VA_VALOR") + c.Close + Else + PLACAS = "0000" + End If + '''''''''''''''''''''''''''''''''' FOTOS ''''''''''''''''''''''''''''''' + Private fotosOk As Int = 0 + If Not(File.Exists(File.DirInternal,"FOTO1.jpg")) Or _ + Not(File.Exists(File.DirInternal,"FOTO2.jpg")) Or _ + Not(File.Exists(File.DirInternal,"FOTO3.jpg")) Or _ + Not(File.Exists(File.DirInternal,"FOTO4.jpg")) Then + Msgbox("Por favor tomar las 4 fotos.", "Atención") 'ignore + Pnl_CabinaInfo.Visible=False + Pnl_Carga.Visible=False + Pnl_Inspec.Visible=True + Pnl_MotorEncen.Visible=True + Pnl_CofreAbierto.Visible=False + Else + fotosOk = 1 + End If + '''''''''''''''''''''' Kilometraje inicial ''''''''''''''''' + Private kmsOk As Int = 0 + If Et_KilometrajeIni.Text="" Then + Msgbox("Atención","Ingresa el Kilometraje Inicial") 'ignore + Pnl_CabinaInfo.Visible=True + Pnl_Carga.Visible=False + Pnl_Inspec.Visible=False + Pnl_MotorEncen.Visible=False + Pnl_CofreAbierto.Visible=False + Else + kmsOk = 1 + End If + + If kmsOk = 1 And fotosOk = 1 Then + CUANTOS = 0 + c=Starter.skmt.ExecQuery("SELECT COUNT(*) as CUANTOS FROM TMP_INSPECCION_AUTO_DIARIA") + If c.RowCount > 0 Then + c.Position = 0 + CUANTOS = c.GetString("CUANTOS") + Log("Info checklist: " & CUANTOS) + End If + c.Close + If CUANTOS = 0 Then + Starter.skmt.ExecNonQuery("delete from TMP_INSPECCION_AUTO_DIARIA") 'Mod por CHV - 211125 + Starter.skmt.ExecNonQuery2("INSERT INTO TMP_INSPECCION_AUTO_DIARIA ( " & Chr(34) & "TMP_AUTO_RUTA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_PLACA" & Chr(34) & "," & Chr(34) & "TMP_AUTO_CEDIS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_IDALMACEN" & Chr(34) & "," & Chr(34) & "TMP_AUTO_FECHA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_KILOMETRAJE" & Chr(34) & "," & Chr(34) & "TMP_AUTO_COMBUSTIBLE" & Chr(34) & "," & Chr(34) & "TMP_AUTO_TABLERO " & Chr(34) & "," & Chr(34) & "TMP_AUTO_CLAXON " & Chr(34) & "," & Chr(34) & "TMP_AUTO_PARABRISAS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_CINTURON " & Chr(34) & "," & Chr(34) & "TMP_AUTO_ESPEJOS " & Chr(34) & " ," & Chr(34) & "TMP_AUTO_LICENCIA " & Chr(34) & " ," & Chr(34) & "TMP_AUTO_LIB_OBJETOSINE " & Chr(34) & " ," & Chr(34) & "TMP_AUTO_LIB_OBJETOTMPERVI " & Chr(34) & "," & Chr(34) & "TMP_AUTO_ORDEN_HERRA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_UNILIMPIA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_LIMPIO " & Chr(34) & "," & Chr(34) & "TMP_AUTO_BASURA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_RESPONSABILIDAD " & Chr(34) & "," & Chr(34) & "TMP_AUTO_AUDITORIA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_HABITUAL " & Chr(34) & "," & Chr(34) & "TMP_AUTO_HERRAMIENTAS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_CONOS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_EDO_CARROCERIA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_FUN_LUCES " & Chr(34) & "," & Chr(34) & "TMP_AUTO_PLACAS_CIRCU " & Chr(34) & "," & Chr(34) & "TMP_AUTO_COND_LLANTAS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_ACEITEMOTOR " & Chr(34) & "," & Chr(34) & "TMP_AUTO_ACEITEDIREC " & Chr(34) & "," & Chr(34) & "TMP_AUTO_NVL_REFRIGERANTE " & Chr(34) & "," & Chr(34) & "TMP_AUTO_NVL_LIQUIDBRISAS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_COND_BANMOTOR " & Chr(34) & "," & Chr(34) & "TMP_AUTO_FUGASGRAL " & Chr(34) & "," & Chr(34) & "TMP_AUTO_FRENOS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_COMENTARIOS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_FOTO1" & Chr(34) & "," & Chr(34) & "TMP_AUTO_FOTO2" & Chr(34) & "," & Chr(34) & "TMP_AUTO_FOTO3" & Chr(34) & "," & Chr(34) & "TMP_AUTO_FOTO4" & Chr(34) & " ) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (N_Ruta,PLACAS,Null,Id_Almacen,sDate,Et_KilometrajeIni.Text,Combustible,1,Cbox_Claxon.Tag,Cbox_Parabrisas.Tag,Cbox_Cinturon.Tag,Cbox_Espejos.Tag,Cbox_Licencia.Tag,Ch_OBJETOSINE.Tag,CH_OBJMPERV.Tag,Ch_ORHERRA.Tag,Ch_UNILIMPIA.Tag,Ch_LIMPIO.Tag,Ch_BASURA.Tag,Ch_RESPON.Tag,Ch_AUDITORIA.Tag,Ch_HABITUAL.Tag,Ch_HERRAMIENTAS.Tag,Ch_CONOS.Tag,Ch_EDOCARROCE.Tag,Ch_FUN_LUCES.Tag,Ch_PLACAS_CIRCU.Tag,Ch_COND_LLANTAS.Tag,Ch_ACEITEMOTOR.Tag,Ch_ACEITEDIREC.Tag,Ch_NVL_REFRIGE.Tag,Ch_NVL_LIQUIDBRI.Tag,Ch_COND_BANMOTOR.Tag,Ch_FUGASGRAL.Tag,Ch_FRENOS.Tag,Edt_COMENTARIO.TeXT)) + Log("Guardamos Kilometraje") + Else + Starter.skmt.ExecNonQuery("delete from TMP_INSPECCION_AUTO_DIARIA") 'Mod por CHV - 211125 + Starter.skmt.ExecNonQuery2("INSERT INTO TMP_INSPECCION_AUTO_DIARIA ( " & Chr(34) & "TMP_AUTO_RUTA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_PLACA" & Chr(34) & "," & Chr(34) & "TMP_AUTO_CEDIS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_IDALMACEN" & Chr(34) & "," & Chr(34) & "TMP_AUTO_FECHA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_KILOMETRAJE" & Chr(34) & "," & Chr(34) & "TMP_AUTO_COMBUSTIBLE" & Chr(34) & "," & Chr(34) & "TMP_AUTO_TABLERO " & Chr(34) & "," & Chr(34) & "TMP_AUTO_CLAXON " & Chr(34) & "," & Chr(34) & "TMP_AUTO_PARABRISAS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_CINTURON " & Chr(34) & "," & Chr(34) & "TMP_AUTO_ESPEJOS " & Chr(34) & " ," & Chr(34) & "TMP_AUTO_LICENCIA " & Chr(34) & " ," & Chr(34) & "TMP_AUTO_LIB_OBJETOSINE " & Chr(34) & " ," & Chr(34) & "TMP_AUTO_LIB_OBJETOTMPERVI " & Chr(34) & "," & Chr(34) & "TMP_AUTO_ORDEN_HERRA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_UNILIMPIA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_LIMPIO " & Chr(34) & "," & Chr(34) & "TMP_AUTO_BASURA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_RESPONSABILIDAD " & Chr(34) & "," & Chr(34) & "TMP_AUTO_AUDITORIA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_HABITUAL " & Chr(34) & "," & Chr(34) & "TMP_AUTO_HERRAMIENTAS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_CONOS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_EDO_CARROCERIA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_FUN_LUCES " & Chr(34) & "," & Chr(34) & "TMP_AUTO_PLACAS_CIRCU " & Chr(34) & "," & Chr(34) & "TMP_AUTO_COND_LLANTAS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_ACEITEMOTOR " & Chr(34) & "," & Chr(34) & "TMP_AUTO_ACEITEDIREC " & Chr(34) & "," & Chr(34) & "TMP_AUTO_NVL_REFRIGERANTE " & Chr(34) & "," & Chr(34) & "TMP_AUTO_NVL_LIQUIDBRISAS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_COND_BANMOTOR " & Chr(34) & "," & Chr(34) & "TMP_AUTO_FUGASGRAL " & Chr(34) & "," & Chr(34) & "TMP_AUTO_FRENOS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_COMENTARIOS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_FOTO1" & Chr(34) & "," & Chr(34) & "TMP_AUTO_FOTO2" & Chr(34) & "," & Chr(34) & "TMP_AUTO_FOTO3" & Chr(34) & "," & Chr(34) & "TMP_AUTO_FOTO4" & Chr(34) & " ) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (N_Ruta,PLACAS,Null,Id_Almacen,sDate,Et_KilometrajeIni.Text,Combustible,1,Cbox_Claxon.Tag,Cbox_Parabrisas.Tag,Cbox_Cinturon.Tag,Cbox_Espejos.Tag,Cbox_Licencia.Tag,Ch_OBJETOSINE.Tag,CH_OBJMPERV.Tag,Ch_ORHERRA.Tag,Ch_UNILIMPIA.Tag,Ch_LIMPIO.Tag,Ch_BASURA.Tag,Ch_RESPON.Tag,Ch_AUDITORIA.Tag,Ch_HABITUAL.Tag,Ch_HERRAMIENTAS.Tag,Ch_CONOS.Tag,Ch_EDOCARROCE.Tag,Ch_FUN_LUCES.Tag,Ch_PLACAS_CIRCU.Tag,Ch_COND_LLANTAS.Tag,Ch_ACEITEMOTOR.Tag,Ch_ACEITEDIREC.Tag,Ch_NVL_REFRIGE.Tag,Ch_NVL_LIQUIDBRI.Tag,Ch_COND_BANMOTOR.Tag,Ch_FUGASGRAL.Tag,Ch_FRENOS.Tag,Edt_COMENTARIO.TeXT)) + Log("Guardamos Kilometraje") + End If + OK_CheckList = 1 + Msgbox("DATOS GUARDADOS CON EXITO ","") 'ignore + Subs.iniciaActividad("Principal") +' B4XPages.ShowPage("Principal") + End If +End Sub + +Sub GUARDA_TEMPORAL + DateTime.DateFormat = "MM/dd/yyyy" + sDate=DateTime.Date(DateTime.Now) + sTime=DateTime.Time(DateTime.Now) + c=Starter.skmt.ExecQuery("select CAT_CL_RUTA FROM kmt_info") + c.Position=0 + N_Ruta= c.GetString("CAT_CL_RUTA") + C2=Starter.skmt.ExecQuery("select ID_ALMACEN FROM CAT_ALMACEN") + C2.Position=0 + Id_Almacen=C2.GetString("ID_ALMACEN") + ''''''''''''''''''''''''''''''''''''NIVELES DE GASOLINA CHECK'''''''''''''''''' + If Rb_1_4.Checked Then + Combustible="1/4" + End If + If Rb_2_4.Checked Then + Combustible="2/4" + End If + If Rb_3_4.Checked Then + Combustible="3/4" + End If + If Rb_4_4.Checked Then + Combustible="4/4" + End If + ''''''''''''''''''''''''''''''''''''INDICADORES DE TABLERO'''''''''''''''''' + If Cbox_Claxon.Checked=True Then + Cbox_Claxon.Tag="1" + Else + Cbox_Claxon.Tag="0" + End If + + If Cbox_Cinturon.Checked=True Then + Cbox_Cinturon.Tag="1" + Else + Cbox_Cinturon.Tag="0" + End If + + If Cbox_Parabrisas.Checked=True Then + Cbox_Parabrisas.Tag="1" + Else + Cbox_Parabrisas.Tag="0" + End If + + If Cbox_Espejos.Checked=True Then + Cbox_Espejos.Tag="1" + Else + Cbox_Espejos.Tag="0" + End If + + If Cbox_Licencia.Checked=True Then + Cbox_Licencia.Tag="1" + Else + Cbox_Licencia.Tag="0" + End If + '''''' SEGUNDO PANEL + If Ch_OBJETOSINE.Checked=True Then + Ch_OBJETOSINE.Tag="1" + Else + Ch_OBJETOSINE.Tag="0" + End If + + If CH_OBJMPERV.Checked=True Then + CH_OBJMPERV.Tag="1" + Else + CH_OBJMPERV.Tag="0" + End If + + If Ch_ORHERRA.Checked=True Then + Ch_ORHERRA.Tag="1" + Else + Ch_ORHERRA.Tag="0" + End If + + If Ch_UNILIMPIA.Checked=True Then + Ch_UNILIMPIA.Tag="1" + Else + Ch_UNILIMPIA.Tag="0" + End If + + If Ch_LIMPIO.Checked=True Then + Ch_LIMPIO.Tag="1" + Else + Ch_LIMPIO.Tag="0" + End If + + If Ch_BASURA.Checked=True Then + Ch_BASURA.Tag="1" + Else + Ch_BASURA.Tag="0" + End If + + If Ch_RESPON.Checked=True Then + Ch_RESPON.Tag="1" + Else + Ch_RESPON.Tag="0" + End If + + If Ch_AUDITORIA.Checked=True Then + Ch_AUDITORIA.Tag="1" + Else + Ch_AUDITORIA.Tag="0" + End If + + If Ch_HABITUAL.Checked=True Then + Ch_HABITUAL.Tag="1" + Else + Ch_HABITUAL.Tag="0" + End If + ''''' PANEL 3 + If Ch_HERRAMIENTAS.Checked=True Then + Ch_HERRAMIENTAS.Tag="1" + Else + Ch_HERRAMIENTAS.Tag="0" + End If + If Ch_CONOS.Checked=True Then + Ch_CONOS.Tag="1" + Else + Ch_CONOS.Tag="0" + End If + + If Ch_EDOCARROCE.Checked=True Then + Ch_EDOCARROCE.Tag="1" + Else + Ch_EDOCARROCE.Tag="0" + End If + + If Ch_FUN_LUCES.Checked=True Then + Ch_FUN_LUCES.Tag="1" + Else + Ch_FUN_LUCES.Tag="0" + End If + + If Ch_PLACAS_CIRCU.Checked=True Then + Ch_PLACAS_CIRCU.Tag="1" + Else + Ch_PLACAS_CIRCU.Tag="0" + End If + + If Ch_COND_LLANTAS.Checked=True Then + Ch_COND_LLANTAS.Tag="1" + Else + Ch_COND_LLANTAS.Tag="0" + End If + + '''' PANEL 4 + If Ch_ACEITEMOTOR.Checked=True Then + Ch_ACEITEMOTOR.Tag="1" + Else + Ch_ACEITEMOTOR.Tag="0" + End If + + If Ch_ACEITEDIREC.Checked=True Then + Ch_ACEITEDIREC.Tag="1" + Else + Ch_ACEITEDIREC.Tag="0" + End If + + If Ch_NVL_REFRIGE.Checked=True Then + Ch_NVL_REFRIGE.Tag="1" + Else + Ch_NVL_REFRIGE.Tag="0" + End If + + If Ch_NVL_LIQUIDBRI.Checked=True Then + Ch_NVL_LIQUIDBRI.Tag="1" + Else + Ch_NVL_LIQUIDBRI.Tag="0" + End If + + If Ch_COND_BANMOTOR.Checked=True Then + Ch_COND_BANMOTOR.Tag="1" + Else + Ch_COND_BANMOTOR.Tag="0" + End If + ''''' PANEL 5 + If Ch_FUGASGRAL.Checked=True Then + Ch_FUGASGRAL.Tag="1" + Else + Ch_FUGASGRAL.Tag="0" + End If + + If Ch_FRENOS.Checked=True Then + Ch_FRENOS.Tag="1" + Else + Ch_FRENOS.Tag="0" + End If + + c=Starter.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?",Array As String("PLACAS") ) + c.Position=0 + PLACAS = c.GetString("CUANTOS") + c.Close + + If PLACAS > 0 Then + c=Starter.skmt.ExecQuery2("SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?",Array As String("PLACAS") ) + c.Position=0 + PLACAS = c.GetString("CAT_VA_VALOR") + c.Close + Else + PLACAS = "0000" + End If + Starter.skmt.ExecNonQuery("delete from TMP_INSPECCION_AUTO_DIARIA") 'Mod por CHV - 211125 + Starter.skmt.ExecNonQuery2("INSERT INTO TMP_INSPECCION_AUTO_DIARIA( " & Chr(34) & "TMP_AUTO_RUTA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_PLACA" & Chr(34) & "," & Chr(34) & "TMP_AUTO_CEDIS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_IDALMACEN" & Chr(34) & "," & Chr(34) & "TMP_AUTO_FECHA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_KILOMETRAJE" & Chr(34) & "," & Chr(34) & "TMP_AUTO_COMBUSTIBLE" & Chr(34) & "," & Chr(34) & "TMP_AUTO_TABLERO " & Chr(34) & "," & Chr(34) & "TMP_AUTO_CLAXON " & Chr(34) & "," & Chr(34) & "TMP_AUTO_PARABRISAS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_CINTURON " & Chr(34) & "," & Chr(34) & "TMP_AUTO_ESPEJOS " & Chr(34) & " ," & Chr(34) & "TMP_AUTO_LICENCIA " & Chr(34) & " ," & Chr(34) & "TMP_AUTO_LIB_OBJETOSINE " & Chr(34) & " ," & Chr(34) & "TMP_AUTO_LIB_OBJETOTMPERVI " & Chr(34) & "," & Chr(34) & "TMP_AUTO_ORDEN_HERRA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_UNILIMPIA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_LIMPIO " & Chr(34) & "," & Chr(34) & "TMP_AUTO_BASURA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_RESPONSABILIDAD " & Chr(34) & "," & Chr(34) & "TMP_AUTO_AUDITORIA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_HABITUAL " & Chr(34) & "," & Chr(34) & "TMP_AUTO_HERRAMIENTAS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_CONOS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_EDO_CARROCERIA " & Chr(34) & "," & Chr(34) & "TMP_AUTO_FUN_LUCES " & Chr(34) & "," & Chr(34) & "TMP_AUTO_PLACAS_CIRCU " & Chr(34) & "," & Chr(34) & "TMP_AUTO_COND_LLANTAS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_ACEITEMOTOR " & Chr(34) & "," & Chr(34) & "TMP_AUTO_ACEITEDIREC " & Chr(34) & "," & Chr(34) & "TMP_AUTO_NVL_REFRIGERANTE " & Chr(34) & "," & Chr(34) & "TMP_AUTO_NVL_LIQUIDBRISAS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_COND_BANMOTOR " & Chr(34) & "," & Chr(34) & "TMP_AUTO_FUGASGRAL " & Chr(34) & "," & Chr(34) & "TMP_AUTO_FRENOS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_COMENTARIOS " & Chr(34) & "," & Chr(34) & "TMP_AUTO_FOTO1" & Chr(34) & "," & Chr(34) & "TMP_AUTO_FOTO2" & Chr(34) & "," & Chr(34) & "TMP_AUTO_FOTO3" & Chr(34) & "," & Chr(34) & "TMP_AUTO_FOTO4" & Chr(34) & " ) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (N_Ruta,PLACAS,Null,Id_Almacen,sDate,Et_KilometrajeIni.Text,Combustible,1,Cbox_Claxon.Tag,Cbox_Parabrisas.Tag,Cbox_Cinturon.Tag,Cbox_Espejos.Tag,Cbox_Licencia.Tag,Ch_OBJETOSINE.Tag,CH_OBJMPERV.Tag,Ch_ORHERRA.Tag,Ch_UNILIMPIA.Tag,Ch_LIMPIO.Tag,Ch_BASURA.Tag,Ch_RESPON.Tag,Ch_AUDITORIA.Tag,Ch_HABITUAL.Tag,Ch_HERRAMIENTAS.Tag,Ch_CONOS.Tag,Ch_EDOCARROCE.Tag,Ch_FUN_LUCES.Tag,Ch_PLACAS_CIRCU.Tag,Ch_COND_LLANTAS.Tag,Ch_ACEITEMOTOR.Tag,Ch_ACEITEDIREC.Tag,Ch_NVL_REFRIGE.Tag,Ch_NVL_LIQUIDBRI.Tag,Ch_COND_BANMOTOR.Tag,Ch_FUGASGRAL.Tag,Ch_FRENOS.Tag,Edt_COMENTARIO.TeXT)) +End Sub + +Sub b_guardar_Click + If Bt_Foto1.Tag="2" Then + Im_1.Bitmap = LoadBitmap(File.DirInternal, "FOTO1.jpg") + Pnl_Fotos.Visible=False + Bt_Foto1.Visible=True + Bt_Foto2.Visible=True + Bt_Foto3.Visible=True + Bt_Foto4.Visible=True + Pnl_Fotos.Visible=False + Bt_GuardarCheck.Visible=True + End If + + If Bt_Foto2.Tag="2" Then + Im2.Bitmap = LoadBitmap(File.DirInternal, "FOTO2.jpg") + Pnl_Fotos.Visible=False + Bt_Foto1.Visible=True + Bt_Foto2.Visible=True + Bt_Foto3.Visible=True + Bt_Foto4.Visible=True + Pnl_Fotos.Visible=False + Bt_GuardarCheck.Visible=True + End If + If Bt_Foto3.Tag="2" Then + Im3.Bitmap = LoadBitmap(File.DirInternal, "FOTO3.jpg") + Pnl_Fotos.Visible=False + Bt_Foto1.Visible=True + Bt_Foto2.Visible=True + Bt_Foto3.Visible=True + Bt_Foto4.Visible=True + Pnl_Fotos.Visible=False + Bt_GuardarCheck.Visible=True + End If + + If Bt_Foto4.Tag="2" Then + Im4.Bitmap = LoadBitmap(File.DirInternal, "FOTO4.jpg") + Pnl_Fotos.Visible=False + Bt_Foto1.Visible=True + Bt_Foto2.Visible=True + Bt_Foto3.Visible=True + Bt_Foto4.Visible=True + Pnl_Fotos.Visible=False + Bt_GuardarCheck.Visible=True + End If +End Sub + +Sub Bt_Foto1_Click + foto.quien_llamo = "1" + GUARDA_TEMPORAL + TOMO_FOTO1 = 1 + StartActivity("foto") +End Sub + +Sub Bt_Foto2_Click + foto.quien_llamo = "2" + GUARDA_TEMPORAL + StartActivity("foto") +End Sub + +Sub Bt_Foto3_Click + foto.quien_llamo = "3" + GUARDA_TEMPORAL + TOMO_FOTO3 = 1 + StartActivity("foto") +End Sub + +Sub Bt_Foto4_Click + foto.quien_llamo = "4" + GUARDA_TEMPORAL + TOMO_FOTO4 = 1 + StartActivity("foto") +End Sub + +Sub LBL_REGRESA_Click + Pnl_Fotos.Visible=False + Bt_Foto1.Visible=True + Bt_Foto2.Visible=True + Bt_Foto3.Visible=True + Bt_Foto4.Visible=True + Bt_GuardarCheck.Visible=True +End Sub + +''' SUBIR PANEL. +Sub IME_HeightChanged(NewHeight As Int, OldHeight As Int) + ' para subir la entrada de datos y que este encima del teclado + 'Log("NewHeight " & NewHeight & " OldHeight " & OldHeight) +End Sub + +Sub Activity_KeyPress (key As Int) As Boolean 'ignore + ' BACK key pressed + If key=KeyCodes.KEYCODE_BACK Then + Pnl_CabinaInfo.Visible=False + Pnl_Carga.Visible=False + Pnl_Inspec.Visible=True + Pnl_MotorEncen.Visible=True + Pnl_CofreAbierto.Visible=False + Return False + 'End If + End If + ' Returning False signals the system to handle the key +End Sub diff --git a/B4A/C_Cliente.bas b/B4A/C_Cliente.bas new file mode 100644 index 0000000..1ecedf5 --- /dev/null +++ b/B4A/C_Cliente.bas @@ -0,0 +1,3821 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=11.5 +@EndOfDesignText@ +Sub Class_Globals + Private Root As B4XView 'ignore + Private xui As XUI 'ignore + '// Process Globals + Dim g As GPS + Dim reqManager As DBRequestManager + Dim ruta As String + Dim clie_id As String + Dim sDate,sTime As String + Dim usuario As String = "" + Dim total_cliente As String + Dim m_lat As String + Dim m_lon As String + Dim cmp20 As Serial + Dim printer As TextWriter + Dim PairedDevices As Map + Dim L As List + Dim TAMANO As Int + Dim ESPACIO As Int + Dim BLANCO As String + Dim cuenta As String + Dim Printer1 As EscPosPrinter + Dim MAC_IMPRESORA As String + Dim LONGITUD As String = "0" + Dim LATITUD As String = "0" + Dim NOMBRE As String + Dim ruta_tienda As String + Dim id_encuesta As String + Dim LLAMAR_FOTO As String + Dim CURSOR_FOTO As Int + Dim TOMAR_FOTO As String + Dim YA_IMPRIMIO2 As String + Dim CREDITO_DISPONIBLE As String + '//Globals + Dim c As Cursor + Dim s As Cursor + Dim c2 As Cursor + Dim S1 As Cursor + Dim S2 As Cursor + Dim S3 As Cursor + Dim C1 As Cursor + Dim C3 As Cursor + Dim C4, C5, C6, C8 As Cursor + Dim RMI As String + Dim ListView1 As ListView + Dim la_cuenta As Label + Dim La_nombre As Label + Dim la_Calle As Label + Dim la_numero As Label + Dim la_nint As Label + Dim la_edo As Label + Dim la_pob As Label + Dim la_col As Label + Dim la_cp As Label + Dim la_zona As Label + Dim gest As Button + Dim la_saldotot As Label + Dim la_saldooper As Label + Dim b_noVenta As Button + Dim Label10 As Label + Dim Label11 As Label + Dim Tar As Button + Dim la_comm As Label + Dim la_actdte As Label + Dim la_usuario As Label + Dim la_resultado As Label + Dim l_entre1 As Label + Dim l_entre2 As Label + Dim l_atiende As Label + Dim l_atiende2 As Label + Dim DATOS As Button + Dim Guardar As Button + Dim NUEVO As Button + Dim l_total As Label + Dim c2 As Cursor + Dim S2 As Cursor + Private s As Cursor + Dim res As String + Private HIST As Button + Private MONTO_COMPRA As String + Private META As String + Private META2 As String + Private VERIFICA As String + Private L_QR As Label + Private BT_QR As Button + Private qr As QRCode + Dim sc As Zxing_scanner + Dim CODIGO As String + Private b_mapa As Button + Dim CUANTOS As String + Private B_IMP As Button + Dim Toggla As Toggle + Private B_VENTA As Button + Dim PASA_IMP As String + Dim sucursal As String + Dim FACTURA As String + Dim CREDITO As String + Private b_factura As Button + Dim perfil As String + Private CH_TA As CheckBox + Private CH_TC As CheckBox + Private CH_TB As CheckBox + Private CH_TD As CheckBox + Private E_CUANTOS_E As EditText + Private B_GUARDAR As Button + Private TIPOEX As String + Private B_EXIBI As Button + Private Panel1 As Panel + Dim t3 As Timer + '--***---- BOLETA DE LIQUIDACION + Private P_BOLETA As Panel + '------ BILLETES + Private LBL_TMIL As Label + Private LBL_TQUIN As Label + Private LBL_TDOS As Label + Private LBL_TCIEN As Label + Private LBL_TCIN As Label + Private LBL_TVEIN As Label + Private LBL_MIL As Label + Private LBL_QUIN As Label + Private LBL_DOSC As Label + Private LBL_CIEN As Label + Private LBL_CINCUEN As Label + Private LBL_VEINTE As Label + Private EDT_CANVEIN As EditText + Private EDT_CANCIN As EditText + Private EDT_CANCIEN As EditText + Private EDT_CANDOS As EditText + Private EDT_CANQUIN As EditText + Private EDT_CANMIL As EditText + Private Btn_TOTALBILLETE As Button + Private Pnl_Billete As Panel + Private Pnl_Moneda As Panel + Private L_CALCULA_BILLE As Label + '------ BOTONES MAS Y MENOS + Private B_MENMIL As Button + Private B_SUMIL As Button + Private B_MENQUI As Button + Private B_SUQUI As Button + Private B_MENDOS As Button + Private B_SUDOS As Button + Private B_MENCIE As Button + Private B_SUCIEN As Button + Private B_MENCIN As Button + Private B_SUCIN As Button + Private B_MENVEI As Button + Private B_SUVEI As Button + '------ MONEDAS + Private L_DIEZ As Label + Private L_CINCO As Label + Private L_DOS As Label + Private L_UNO As Label + Private L_CENTAVO As Label + Private LBL_TDIEZ As Label + Private LBL_TCI As Label + Private LBL_TDO As Label + Private LBL_TUN As Label + Private LBL_TCEN As Label + Private EDT_CANCEN As EditText + Private EDT_CANUN As EditText + Private EDT_CANDO As EditText + Private EDT_CANCI As EditText + Private EDT_CANDIEZ As EditText + Private L_CALCULA_MONEDA As Label + Private B_TOTALMONEDA As Button + '------ BOTONES MAS Y MENOS + Private B_MENCENT As Button + Private B_MENUN As Button + Private B_MENDO As Button + Private B_MENCI As Button + Private B_MENDIEZ As Button + Private B_SUMDIEZ As Button + Private B_SUMCIN As Button + Private B_SUMDO As Button + Private B_SUMUN As Button + Private B_SUMCENT As Button + '------ SUMA TOTALES + Private Edt_FH As EditText + Private B_AGREGAMONE As Button + Private B_AGREGABILL As Button + Private TOTALES As Label + Private B_SUM_TOTAL As Button + Private TOTALBILLETES As Button + Private TOTALMONEDA As Button + Private PNL_TOTALES As Panel + Private LBL_RETURN As Label + Private IMG_IMPRESORA As Label + Private LBL_REGRESA As Label + '--***---- FIN BOLETA + Private P_INF_GENERAL As Panel + Private B_Regresar As Button + Private ABORDO As String + Private a_inicial As String + Private a_total As String + Private a_venta As String + Private a_final As String + Private a_VENTA_F As String + Private a_inicial_5 As String + Private L_INVA As ListView + Private B_IMP_INV As Button + Private B_CERRAR_I As Button + Private Panel_INV_A As Panel + Private LBL_TVEINTE As Label + Private B_SUMVEINTE As Button + Private EDT_CANVEINTE As EditText + Private B_MENVEINTE As Button + Private L_VEINTE As Label + Dim RutaBoleta As String + Dim Id_Almacen As String + Dim cursorBoleta As Cursor + Private Bt_GuardarBoleta As Button + Private CUANTOS1 As String + Private Panel9 As Panel + Private t_tenc As Label + Private E_RES_E As EditText + Private B_E_NEXT As Button + Private Label26 As Label + Private l_chk_e As Label + Private Chk_1 As CheckBox + Private chk_2 As CheckBox + Private chk_3 As CheckBox + Private b_chk_e As Button + Private Panel10 As Panel + Private chk_1_valor As String + Private chk_2_valor As String + Private chk_3_valor As String + Private p_encuesta As Panel + Private b_encuesta_1 As Button + Private b_encuesta_2 As Button + Private b_encuesta_3 As Button + Private l_titEncuesta As Label + Private l_txtEncuesta As Label + Private encuestaRes As String + Private botonPresionado As Int + Private B_IMP2 As Button + Dim impresoraConectada As Boolean = False + Private l_categoria2 As Label + Private l_exhibidor2 As Label + Private p_exhibidores As Panel + Private Button1 As Button + Private b_exhibidor As Button + Private l_exhibidores3 As Label + Private l_segmento2 As Label + Private et_encuesta As EditText + Private b_encuesta_continuar As Button + Dim muestraBoleta As Boolean = False + Private Panel4 As Panel + Private Panel6 As Panel + Private l_ubicacion As Label + Dim l_ubicacion2 As Label + Dim b_ubicacion As Button + Dim logger As Boolean = False + Private b_whats As Button + Private b_aceptarrpomo As Button + Private b_rechazapromo As Button + Private p_promowhats As Panel + Private l_promowhats As Label + Private l_doe As Label + Private p_pideGeoPass As Panel + Private et_geopass As EditText + Private b_geopass As Button + Private LP_DOE As ListView + Private BP_DOE_A As Button + Private BP_DOE_R As Button + Private p_doe As Panel + Private ime As IME + Dim laDist As Float + Private L_DOE_TOTAL As Label + Private L_DOE_TOTAL As Label + Private Panel11 As Panel + Private BP_DOE_R1 As Button + Dim RMI_VALOR As String +End Sub + +'You can add more parameters here. +Public Sub Initialize As Object + Return Me +End Sub + +'This event will be called once, before the page becomes visible. +Private Sub B4XPage_Created (Root1 As B4XView) + If Not(Starter.Logger) Then logger = False + Root = Root1 + reqManager.Initialize(Me, Starter.server) + 'load the layout to Root + Root.LoadLayout("cliente") + ruta = File.DirInternal +' Subs.panelAnchoAlto(P_INF_GENERAL, Root.Width, Root.Height) +' Subs.centraPanel(P_INF_GENERAL, Root.Width) + Panel6.Width = Root.Width + p_promowhats.Width = Root.Width + p_promowhats.visible = False + If Starter.boleta = 0 Then + c=Starter.skmt.ExecQuery("select CAT_CL_CODIGO, CAT_CL_RUTA, CAT_CL_NOMBRE, CAT_CL_ATIENDE1, CAT_CL_ATIENTE2,"& _ + "CAT_CL_TELEFONO, CAT_CL_EMAIL, CAT_CL_CALLE, CAT_CL_NOEXT, CAT_CL_NOINT, CAT_CL_CALLE1, CAT_CL_CALLE2, "& _ + "CAT_CL_COLONIA, CAT_CL_MUNI, CAT_CL_EDO, CAT_CL_CP, CAT_CL_LONG, CAT_CL_LAT, CAT_CL_MTOCOMPRA, "& _ + "CAT_CL_BFACTURA, CAT_CL_BCREDITO, CAT_CL_CATEGORIA, CAT_CL_SEGMENTO from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)") + s=Starter.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") + s.Position=0 + If c.RowCount > 0 Then + c.Position=0 + la_cuenta.Text = c.GetString("CAT_CL_CODIGO") + cuenta = c.GetString("CAT_CL_CODIGO") + La_nombre.Text = c.GetString("CAT_CL_NOMBRE") + NOMBRE = c.GetString("CAT_CL_NOMBRE") + la_Calle.Text = c.GetString("CAT_CL_CALLE") & c.GetString("CAT_CL_NOEXT") + la_col.Text = c.GetString("CAT_CL_COLONIA") + la_edo.Text = c.GetString("CAT_CL_EDO") + la_cp.Text = c.GetString("CAT_CL_CP") + l_entre1.Text = c.GetString("CAT_CL_CALLE1") + l_entre2.Text = c.GetString("CAT_CL_CALLE2") + l_atiende.Text = c.GetString("CAT_CL_ATIENDE1") + l_atiende2.Text = c.GetString("CAT_CL_ATIENTE2") + la_saldotot.Text = c.GetString("CAT_CL_TELEFONO") + 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") + LONGITUD = 0 + If c.GetString("CAT_CL_LONG") <> Null And c.GetString("CAT_CL_LONG") <> "null" And IsNumber(c.GetString("CAT_CL_LONG")) Then LONGITUD = c.GetString("CAT_CL_LONG") + LATITUD = 0 + If c.GetString("CAT_CL_LAT") <> Null And c.GetString("CAT_CL_LAT") <> "null" And IsNumber(c.GetString("CAT_CL_LAT")) Then LATITUD = c.GetString("CAT_CL_LAT") + l_categoria2.text = c.GetString("CAT_CL_CATEGORIA") + l_segmento2.text = c.GetString("CAT_CL_SEGMENTO") + If logger Then Log($"Lon: ${LONGITUD}, Lat: ${LATITUD}"$) + Else + RutaBoleta=Starter.rutaV + End If + End If + c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("MACIMP")) + c.Position =0 + If c.RowCount > 0 Then + MAC_IMPRESORA = c.GetString("CAT_VA_VALOR") + Else + MAC_IMPRESORA = 0 + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("MACIMP","0")) + End If + Starter.MAC_IMPRESORA = MAC_IMPRESORA + Printer1.Initialize(Me, "Printer1") + TOMAR_FOTO = 0 + c.Close + If s.IsInitialized Then s.Close +End Sub + +'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. + +Sub B4XPage_Appear +' Log(Subs.traeUltimaActividadBD) + Subs.panelVisibleCompleto(P_INF_GENERAL, Root) +' P_INF_GENERAL.Height = Root.Height +' P_INF_GENERAL.Width = Root.Width + et_geopass.Text = "" + If Subs.traeUltimaActividadBD <> "Cliente" Then Subs.iniciaActividad(Subs.traeUltimaActividadBD) + If Not(muestraBoleta) Then P_INF_GENERAL.Visible = True + p_pideGeoPass.Visible = False +' If Logger Then Log(muestraBoleta) + CallSubDelayed(Tracker, "StartFLP2") + b_ubicacion.Text = "SIN GPS" + b_ubicacion.TextColor = Colors.Red + If Not(Starter.GPS.GPSEnabled) Then + ToastMessageShow("Debe Activar el GPS del Equipo.", True) + StartActivity(Starter.GPS.LocationSettingsIntent) + Else + Starter.GPS.Start(0, 0) + If Starter.ubicacionActual.Latitude <> 0 Then GPS_LocationChanged(Starter.ubicacionActual) + End If + If muestraBoleta Then LLAMA_BOLETA + BT_QR.Enabled = False + b_factura.Visible = False + Panel_INV_A.Visible = False + CREDITO_DISPONIBLE =0 + If Starter.boleta = 0 Then + c=Starter.skmt.ExecQuery("SELECT CAT_EP_ID, CAT_EP_IDTIPOPREGUNTA, CAT_CE_DESCRIPCION, CAT_EP_PREGUNTA, CAT_EP_RES1_PRED, CAT_EP_RES2_PRED, CAT_EP_RES3_PRED, CAT_EP_ORDEN_PREGUNTA FROM CAT_ENCUESTA_PREGUNTA ORDER BY CAT_CE_DESCRIPCION, CAST(CAT_EP_ORDEN_PREGUNTA AS DECIMAL)") + If c.RowCount > 0 Then c.Position= 1 + If TOMAR_FOTO = 0 Then + c=Starter.skmt.ExecQuery("select 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, IMPRESION from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)") + s=Starter.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") + s.Position=0 + S1=Starter.skmt.ExecQuery("select count(*) as CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") + S1.Position=0 + c.Position=0 + la_cuenta.Text = c.GetString("CAT_CL_CODIGO") + La_nombre.Text = c.GetString("CAT_CL_NOMBRE") + la_Calle.Text = c.GetString("CAT_CL_CALLE") & " " & c.GetString("CAT_CL_NOEXT") + la_col.Text = c.GetString("CAT_CL_COLONIA") + la_edo.Text = c.GetString("CAT_CL_EDO") + la_cp.Text = c.GetString("CAT_CL_CP") + l_entre1.Text = c.GetString("CAT_CL_CALLE1") + l_entre2.Text = c.GetString("CAT_CL_CALLE2") + l_atiende.Text = c.GetString("CAT_CL_ATIENDE1") + l_atiende2.Text = c.GetString("CAT_CL_ATIENTE2") + l_total.Text = s.GetString("TOTAL_CLIE") + total_cliente = s.GetString("TOTAL_CLIE") + m_lat =c.GetString("CAT_CL_LAT") + m_lon =c.GetString("CAT_CL_LONG") + CREDITO_DISPONIBLE = c.GetString("CAT_CL_BFACTURA") + CREDITO = c.GetString("CAT_CL_BCREDITO") + ruta_tienda = c.GetString("CAT_CL_RUTA") + YA_IMPRIMIO2 = c.GetString("IMPRESION") + + If c.GetString("CAT_CL_EMAIL") = "1" Then + l_doe.Visible = True + Else + l_doe.Visible = False + End If + + LONGITUD = 0 + If c.GetString("CAT_CL_LONG") <> Null And c.GetString("CAT_CL_LONG") <> "null" And IsNumber(c.GetString("CAT_CL_LONG")) Then LONGITUD = c.GetString("CAT_CL_LONG") + LATITUD = 0 + If c.GetString("CAT_CL_LAT") <> Null And c.GetString("CAT_CL_LAT") <> "null" And IsNumber(c.GetString("CAT_CL_LAT")) Then LATITUD = c.GetString("CAT_CL_LAT") + LogColor($"${c.GetString("CAT_CL_LAT")}, ${c.GetString("CAT_CL_LONG")}"$, Colors.red) + If logger Then Log($"Lat: ${LATITUD}, Lon: ${LONGITUD}"$) + NOMBRE = c.GetString("CAT_CL_NOMBRE") +' Log(l_total.text) + If l_total.Text = Null Or l_total.Text = "null" Then + b_noVenta.Visible = True + Else + b_noVenta.Visible = False + If la_cuenta.Text = "0" Then + CREDITO_DISPONIBLE = 10000000 + CREDITO = 0 + End If + End If + If S1.GetString("CUANTOS") = 0 Then + b_noVenta.Visible = True + Else 'Si ya hay venta, ocultamos el boton de "NO VENTA" + b_noVenta.Visible = False + End If + If CREDITO = "1" Then + Msgbox("ALTO","A este cliente no se le puede vender ya que tienen adeudo en su crédito") 'ignore + B_VENTA.Visible = False + gest.Visible = False + Else + B_VENTA.Visible = True + gest.Visible = True + End If + ' Msgbox(c.GetString("CAT_CL_NUM_SERIEFISICO"),"AVISO") + If c.GetString("CAT_CL_NUM_SERIEFISICO") = "0" Then + L_QR.Visible = True + Else + L_QR.Visible = False + End If + S2=Starter.skmt.ExecQuery("select count(*) AS CUANTOS from HIST_VENTAS WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa)") + S2.Position =0 + CUANTOS = S2.GetString("CUANTOS") + S2.Close + If CUANTOS > 0 Then + c2=Starter.skmt.ExecQuery("select sum(HVD_COSTO_TOT) AS TOTAL from HIST_VENTAS WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa)") + c2.Position =0 + MONTO_COMPRA = c2.GetString("TOTAL") + c2.Close + Else + MONTO_COMPRA = "0" + End If + + la_saldotot.Text = MONTO_COMPRA + If MONTO_COMPRA <> "0" Then + META2 = 300 - MONTO_COMPRA + Else + META2 = 300 + End If + If META2 < 1 Then + META2 = "CUBIERTO" + End If + la_saldooper.Text = META2 + c=Starter.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS FROM HIST_CLIENTE_CANT_PROMOS WHERE HCCP_CLIENTE IN (Select cuenta from cuentaa)") + c.Position =0 + If c.GetString("CUANTOS") > 0 Then + C1=Starter.skmt.ExecQuery("SELECT HCCP_PROMO FROM HIST_CLIENTE_CANT_PROMOS WHERE HCCP_CLIENTE IN (Select cuenta from cuentaa) ") + C1.Position = 0 + C3=Starter.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM CAT_GUNAPROD2 WHERE CAT_GP_ID = ? ", Array As String(C1.GetString("HCCP_PROMO"))) + C3.Position = 0 + If Not(B4XPages.MainPage.cliente.muestraBoleta) And Subs.traeCliente <> "0" Then 'Si vamos a mostrar boleta entonces no mandamos aviso. + If C3.GetString("CUANTOS") > 0 Then + c2=Starter.skmt.ExecQuery2("SELECT CAT_GP_NOMBRE FROM CAT_GUNAPROD2 WHERE CAT_GP_ID = ? ", Array As String(C1.GetString("HCCP_PROMO"))) + c2.Position = 0 + MsgboxAsync("El cliente tiene derecho a una promo especial "& c2.GetString("CAT_GP_NOMBRE"),"Aviso") 'ignore + c2.Close + Else + MsgboxAsync("El cliente tiene derecho a una promo especial ","Aviso") 'ignore + End If + End If + C3.Close + C1.Close + End If + B_VENTA.Visible = True + + If CREDITO = "1" Then + Msgbox("El cliente tiene credito excedido","Aviso") 'ignore + Subs.iniciaActividad("Principal") +' B4XPages.ShowPage("Principal") + End If + Else + Cuestionario + End If + If YA_IMPRIMIO2 = 0 Then + Guardar.Visible = False + Else + Guardar.Visible = True + End If + If la_cuenta.text = "0" Then Guardar.Visible = True 'Abordo + If l_total.Text = Null Or l_total.Text = "null" Or l_total.text = "0" Then Guardar.Visible = True 'Si no hay venta entonces "Guardar" es visible. + + 'Promo Especial +' If Logger Then LogColor($"Ultima actividad BD=${Subs.traeUltimaActividadBD}"$, Colors.Magenta) + Dim mPromoEspecial As Map = revisaPromoEspecial +' If Logger Then Log(mPromoEspecial.Get("esValida")) + If Subs.traeUltimaActividadBD = "Productos" Then 'Venimos de "Productos" + If logger Then Log("Venimos de Productos") + If l_total.Text <> Null And mPromoEspecial.Get("montoPromo") <> Null And l_total.Text > ((mPromoEspecial.Get("montoPromo") * (100 - mPromoEspecial.Get("rangoPromo")))/100) And _ + l_total.Text <= mPromoEspecial.Get("montoPromo") Then 'El monto de la venta esta dentro del rango para la promo. + If logger Then Log("Promo dentro del rango") + Msgbox($"Si la venta sobrepasa los $${mPromoEspecial.Get("montoPromo")} se activa la promoción '${mPromoEspecial.Get("descrPromo")}'"$, "CASI EN RANGO DE PROMO ESPECIAL") 'ignore + Else + If logger Then Log("Promo fuera de rango") + End If + If l_total.Text <> Null And mPromoEspecial.Get("montoPromo") <> Null And l_total.text >= mPromoEspecial.Get("montoPromo") Then + If logger Then Log("Promo Autorizada") + res = Msgbox2("Pomocion '" & mPromoEspecial.Get("descrPromo") & "' disponible.\nSi se otorga la promoción ya NO será posible modificar la venta.", "PROMO DISPONIBLE", "Si", "", "No", Null) 'ignore + If res = DialogResponse.POSITIVE Then + If logger Then Log("Promocion aceptada.") + If logger Then Log($"${mPromoEspecial.Get("idProd")}, ${mPromoEspecial.Get("idPromo")}, ${mPromoEspecial.Get("cantProd")}, ${mPromoEspecial.Get("nombreProd")}, ${mPromoEspecial.Get("descrPromo")}, ${la_cuenta.Text}, ${usuario}, ${ruta_tienda}"$) + metePromoEspecial(mPromoEspecial.Get("idProd"), mPromoEspecial.Get("idPromo"), mPromoEspecial.Get("cantProd"), mPromoEspecial.Get("nombreProd"), mPromoEspecial.Get("descrPromo"), la_cuenta.Text, usuario, ruta_tienda) + Subs.ponImpreso(la_cuenta.Text) + End If + End If + If l_total.Text <> Null And mPromoEspecial.Get("montoPromo") <> Null Then Log($"Monto venta = ${l_total.Text}, rango para promo = ${(mPromoEspecial.Get("montoPromo") * (100 - mPromoEspecial.Get("rangoPromo"))/100)}"$) + End If + + c=Starter.skmt.ExecQuery("select count(*) as conNoVenta FROM NOVENTA WHERE NV_CLIENTE IN (Select CUENTA from cuentaa)") + c.Position = 0 + If c.GetString("conNoVenta") = 1 Then b_noVenta.Visible = False 'Si ya tiene NoVenta, ocultamos el boton. + c.Close + Else + RutaBoleta=Starter.rutaV + End If + If c.IsInitialized Then c.Close + If s.IsInitialized Then s.Close + If S1.IsInitialized Then S1.Close + If logger Then Log("===================== Traemos EXHIBIDORES " & la_cuenta.Text & " =================" ) + c=Starter.skmt.ExecQuery2("select * FROM HIST_EXHIBIDORES2 where hist_ex_id_cliente = ?", Array As String (la_cuenta.Text)) + If c.RowCount > 0 Then + Private exhibs As String = "" + Private separador As String = "" + For i=0 To c.RowCount -1 + c.Position=i + If i < c.RowCount And i <> 0 Then separador = " - " Else separador = "" + exhibs = exhibs & separador & c.GetString("HIST_EX_TIPO") + Next +' If Logger Then LogColor(exhibs, Colors.Blue) + c.Close + l_exhibidor2.Text = exhibs + l_exhibidores3.Text = exhibs + End If + + 'PARA LA PROMO DOE + b_whats.Visible = False + + C1=Starter.skmt.ExecQuery("select IMPRESION FROM kmt_info where CAT_CL_CODIGO In (select cuenta from cuentaa)") + C1.Position = 0 + If C1.GetString("IMPRESION") <> "1" Then + S=Starter.skmt.ExecQuery2("select COUNT(*) AS CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) AND PE_PROID = ?", Array As String("PROMODOE") ) + s.Position = 0 + If s.GetString("CUANTOS") = 0 Then + c=Starter.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM HIST_CLIENTE_CANT_PROMOS WHERE HCCP_CLIENTE IN (Select cuenta from cuentaa) AND HCCP_PROMO = ?", Array As String("PROMODOE")) + c.Position =0 + If c.GetString("CUANTOS") > 0 Then + C3=Starter.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM CAT_GUNAPROD2 WHERE CAT_GP_ID = ? ", Array As String("1008094223")) + C3.Position = 0 + If C3.GetString("CUANTOS") > 0 Then + c2=Starter.skmt.ExecQuery2("SELECT CAT_GP_ALMACEN FROM CAT_GUNAPROD2 WHERE CAT_GP_ID = ? ", Array As String("1008094223")) + c2.Position = 0 + If c2.GetString("CAT_GP_ALMACEN") > 0 Then + b_whats.Visible = True + End If + c2.Close + End If + C3.Close + End If + c.Close + End If + s.Close + End If + C1.Close + CallSubDelayed(Tracker, "Track") + CallSubDelayed(Tracker, "StartFLPSmall") + If Tracker.FLP.IsInitialized And Tracker.FLP.GetLastKnownLocation.IsInitialized Then 'Si tenemos "UltimaUbicaccionConocida" la usamos. + B4XPages.MainPage.lat_gps = Tracker.FLP.GetLastKnownLocation.Latitude + B4XPages.MainPage.lon_gps = Tracker.FLP.GetLastKnownLocation.Longitude + Log($"Tenemos UUC: ${Tracker.FLP.GetLastKnownLocation.Latitude},${Tracker.FLP.GetLastKnownLocation.Longitude}"$) + GPS_LocationChanged(Tracker.FLP.GetLastKnownLocation) + End If + muestraBoleta = False +End Sub + +Sub Printer1_Connected (Success As Boolean) +' If Logger Then Log("Printer1_Connected") + If Success Then + ToastMessageShow("Impresora conectada", False) + Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("MACIMP")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("MACIMP",Starter.mac_impresora)) + If logger Then LogColor("Impresora conectada", Colors.Green) +' B_IMP2.Enabled = True + impresoraConectada = True + Else +' Msgbox(Printer1.ConnectedErrorMsg, "Error connecting.") 'ignore +' ToastMessageShow("Error conectando la impresora", False) + If logger Then LogColor("Error conectando la impresora", Colors.Red) + End If +End Sub + +Sub GPS_LocationChanged (Location1 As Location) + 'Este codigo se corre desde Tracker/flp_LocationChanged + b_ubicacion.TextColor = Colors.Gray + Sleep(200) + b_ubicacion.TextColor = Colors.White + If logger Then Log($"${Location1.Latitude}, ${Location1.Longitude}, ${Location1.Accuracy}"$) + + If m_lat = Null Or m_lat = "" Then m_lat = 0 + If m_lon = Null Or m_lon = "" Then m_lon = 0 + + Private ubicacionTienda As Location + ubicacionTienda.Initialize + ubicacionTienda.Latitude = m_lat + ubicacionTienda.Longitude = m_lon + If logger Then Log($"Tienda:${ubicacionTienda.Latitude}, ${ubicacionTienda.Longitude}"$) + b_ubicacion.TextSize = 13 + b_ubicacion.Text = $"Precisión GPS $1.0{Location1.Accuracy} m"$ + If Location1.Accuracy > 200 Then + b_ubicacion.TextColor = Colors.Red + b_ubicacion.TextSize = 16 + b_ubicacion.Text = $"Mala señal $1.0{Location1.Accuracy} m"$ + End If + laDist= Location1.DistanceTo(ubicacionTienda) + l_ubicacion2.Text = $"Dist: $1.0{laDist} mts."$ + If laDist > 300 Then l_ubicacion2.TextColor = Colors.Red Else l_ubicacion2.TextColor = Colors.Black + + '''' GEO CERCA + '''' esto es para la geocerca validar tambien el las variables del whats y del no venta que las borra si existe venta + Dim l1, l2 As Location +' Log($"${Starter.lat_gps}, ${Starter.lon_gps}"$) + If Starter.lat_gps = "null" Or Starter.lat_gps = Null Or Starter.lat_gps = "" Then 'Zocalo + Starter.lat_gps = "19.432568527069805" + Starter.lon_gps = "-99.13335030112772" + End If + l1.Initialize2(Starter.lat_gps, Starter.lon_gps) + + +' Log($"Coordenadas de la tienda - lat:${m_lat}, lon:${m_lon}"$) + l2.Initialize2(m_lat, m_lon) + + Dim distance As Long + distance = l1.DistanceTo(l2) ' resultado en metros + gest.Visible = True +' gps_boton_doe ="1" +' LogColor($"Distancia actual: ${distance}"$, Colors.Blue) + If distance <= 5000000 Or usuario = "KMTSKLL1" Then +' If pgs_boton_noventa = "1" Then b_noVenta.Visible = True +' If gps_boton_doe ="1" Then b_whats.Visible = True + B_VENTA.Visible = True + pedido_doe_muestra + Else + b_noVenta.Visible = False + B_VENTA.Visible = False + b_whats.Visible = False + End If + ''' fin de la geocerca +End Sub + +Sub ListView1_ItemLongClick (Position As Int, Value As Object) + +End Sub + +Sub gest_Click + Starter.tipov = "PREVENTA" + Subs.iniciaActividad("Productos") +End Sub + +Sub b_noVenta_Click + Subs.iniciaActividad("noventa") +End Sub + +Private Sub B4XPage_CloseRequest As ResumableSub + ' BACK key pressed + 'Return True to close, False to cancel + If PNL_TOTALES.Visible Then + PNL_TOTALES.Visible = False + P_BOLETA.Visible = False + P_INF_GENERAL.Visible = True + Log("Panel general="&P_INF_GENERAL.Visible) + Subs.iniciaActividad("Principal") + else if p_pideGeoPass.Visible Then + p_pideGeoPass.Visible = False + else if Panel_INV_A.Visible Then + Panel_INV_A.Visible = False + P_INF_GENERAL.Visible = True + If logger Then Log("Panel general="&P_INF_GENERAL.Visible) + else if p_promowhats.Visible Then + P_INF_GENERAL.Visible = True + p_promowhats.Visible = False + Else + Msgbox("Presione Imprimir y Guardar para continuar","Aviso") 'ignore + End If + Return False +End Sub + +Sub Tar_Click + Subs.iniciaActividad("nota") +End Sub + +Sub DATOS_Click + Subs.iniciaActividad("telefonos") +End Sub + +Sub Guardar_Click + DateTime.DateFormat = "MM/dd/yyyy" + sDate=DateTime.Date(DateTime.Now) + sTime=DateTime.Time(DateTime.Now) + If Starter.lat_gps = 0 Or Starter.lat_gps = Null Then + Private coords As List = Subs.traeCoordsDeBD + Starter.lat_gps = coords.Get(0) + Starter.lon_gps = coords.Get(1) + End If + c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa") + c.Position=0 + clie_id = c.GetString("CUENTA") + c=Starter.skmt.ExecQuery("select USUARIO from usuarioa") + c.Position=0 + usuario = c.GetString("USUARIO") + If l_total.Text <> Null And l_total.Text <> "null" Then Subs.ponImpreso(clie_id) 'Solo lo marcamos com impreso si tiene venta (total > 0). + c=Starter.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, COUNT(*) AS CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") + c.Position=0 + If c.GetString("CUANTOS") > 0 Then + Starter.skmt.ExecNonQuery("delete from NOVENTA where NV_CLIENTE In (select cuenta from cuentaa)") + Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") + If logger Then LogColor($"Insertamos coordenadas en pedido: ${Starter.lon_gps}, ${Starter.lat_gps}"$, Colors.Magenta) + Starter.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT) VALUES (?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), Starter.lon_gps, Starter.lat_gps)) + Log("Actualizamos gestion") + Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + End If + s=Starter.skmt.ExecQuery("SELECT count(*) AS FOLIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") + s.Position = 0 + If s.GetString("FOLIO") > 0 Then + c=Starter.skmt.ExecQuery("SELECT SUM(PE_FOLIO) AS FOLIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") + c.Position = 0 + End If + s.Close + Starter.skmt.ExecNonQuery("delete from pedido3") + Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO3 (PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_USUARIO ) SELECT PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, SUM(PE_COSTO_TOT) AS PE_COSTO_TOT, PE_COSTOU, SUM(PE_CANT) As PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_USUARIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) GROUP BY PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, PE_COSTOU, PE_PRONOMBRE, PE_PROID, PE_CLIENTE ") + c=Starter.skmt.ExecQuery("select PE_PRECIO2,PE_TIPO,PE_DESC,PE_COSTO_SIN,PE_RUTA,PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE, PE_FECHA,PE_USUARIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + c.Position=i + Starter.skmt.ExecNonQuery2("UPDATE PEDIDO3 SET PE_FECHA= ? WHERE PE_CLIENTE = ? AND PE_PRONOMBRE = ? AND PE_PROID = ? AND PE_CEDIS = ? ", Array As Object(c.GetString("PE_FECHA"), c.GetString("PE_CLIENTE"),c.GetString("PE_PRONOMBRE"),c.GetString("PE_PROID"),c.GetString("PE_CEDIS"))) + Next + End If + c.Close + Starter.skmt.ExecNonQuery2("UPDATE PEDIDO3 SET PE_FOLIO = ? WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As Object(YA_IMPRIMIO2)) + Starter.skmt.ExecNonQuery("delete from pedido WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) ") + Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO SELECT * FROM PEDIDO3") + Starter.skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_FECHA = ? WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) and PE_FECHA IS NULL", Array As Object(sDate & sTime)) + Starter.skmt.ExecNonQuery("delete from PEDIDO where PE_CANT = 0") 'Mod por CHV para que borre los productos que esten con cantidad 0 - 211228 +' Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("ULTIMOMODULO")) +' Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("ULTIMOMODULO", "seleccion")) +' Activity.Finish + CallSubDelayed(Tracker, "StartFLP") + If logger Then Log("Cerramos Cliente, iniciamos Principal") +' B4XPages.ShowPage("Principal") + + + B4XPages.MainPage.productos.reiniciarlistaProds = True + B4XPages.MainPage.productos.prodsMap.Initialize + B4XPages.MainPage.promos.promosMap.Initialize + Subs.iniciaActividad("principal") + B4XPages.ShowPageAndRemovePreviousPages("Principal") +End Sub + +Sub NUEVO_Click + Subs.iniciaActividad("nuevocliente") +End Sub + +Sub HIST_Click + Subs.iniciaActividad("Historico") +End Sub + +Sub BT_QR_Click + Dim scan_width As Int + Dim scan_height As Int + scan_width = 400 + scan_height = 400 + sc.BeginScan("sc","CODIGO CLIENTE",scan_width,scan_height) +End Sub + +Sub sc_result(atype As String,Values As String) + 'Log("Type : " & atype) + 'Log("Value : " & Values) + CODIGO = Values + Starter.skmt.ExecNonQuery2("UPDATE kmt_info set CAT_CL_NUM_SERIEFISICO = ?, CAT_CL_LONG = ?, CAT_CL_LAT =? where CAT_CL_CODIGO In (select cuenta from cuentaa)", Array As Object(CODIGO, Starter.lon_gps, Starter.lat_gps)) +End Sub + +Sub sc_noScan + If logger Then Log("nothing returned from the scan !!!!!") +End Sub + +Sub calc_ean_checksum(number As String) As String 'this has now become redundant as I am only interested in QR Codes + Dim i As Int + Dim cO As Char + Dim soma As Int + Dim n As Int + Dim digit As Float + soma = 0 + For i=0 To number.Length - 1 + digit = number.SubString2(i,i+1) + n= digit * ((i Mod 2) * 2 + 1) + soma=soma+n + Next + Return number & ( ( 10 - ( soma Mod 10 )) Mod 10 ) +End Sub + +Sub b_mapa_Click + Subs.iniciaActividad("mapas") +End Sub + +Sub B_IMP_Click + Starter.skmt.Close : Log("Cerramos BD") : Starter.revisaBD + Subs.panelAnchoAlto(Panel_INV_A, Root.Width, Root.Height) + Panel_INV_A.Visible = True + P_INF_GENERAL.Visible = False + If logger Then Log("Panel general="&P_INF_GENERAL.Visible) + L_INVA.Clear + Dim label1 As Label + label1 = L_INVA.TwoLinesLayout.Label + label1.TextSize = 14 + label1.TextColor = Colors.Black + Dim label2 As Label + label2 = L_INVA.TwoLinesLayout.SecondLabel + label2.TextSize = 14 + label2.TextColor = Colors.Black +' Aqui es donde esta el pedo de julieta de los descuentos, quitar el precio2 pero meter un if para saber si es ruta especial o es normal o que show. + s=Starter.skmt.ExecQuery2 ("select CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_ALMACEN from cat_gunaprod2 where CAT_GP_CLASIF <> ? ORDER BY CAT_GP_NOMBRE ", Array As String("PROMOS")) + If s.RowCount>0 Then + For i=0 To S.RowCount -1 + s.Position=i + S1=Starter.skmt.ExecQuery2("select CAT_GP_ALMACEN from cat_gunaprod5 where CAT_GP_ID = ?", Array As String(s.GetString("CAT_GP_ID"))) + S1.Position=0 + S3=Starter.skmt.ExecQuery2("select count(*) as CUANTOS from HIST_ABORDO where HIST_PROID = ?", Array As String(s.GetString("CAT_GP_ID"))) + S3.Position=0 + If S3.GetString("CUANTOS") > 0 Then + S2=Starter.skmt.ExecQuery2("select HIST_CANT from HIST_ABORDO where HIST_PROID = ?", Array As String(s.GetString("CAT_GP_ID"))) + S2.Position=0 + a_inicial = S1.GetString("CAT_GP_ALMACEN") - S2.GetString("HIST_CANT") + Else + a_inicial = S1.GetString("CAT_GP_ALMACEN") + End If + a_inicial_5 = S1.GetString("CAT_GP_ALMACEN") + If S3.GetString("CUANTOS") > 0 Then + ABORDO = S2.GetString("HIST_CANT") + Else + ABORDO = 0 + End If + a_total = S1.GetString("CAT_GP_ALMACEN") + C4=Starter.skmt.ExecQuery2("select count(*) as CUANTOS from pedido where substr(pe_pronombre,1,6) <> ? AND PE_PROID = ? AND PE_TIPO = ? ", Array As String("CAMBIO", s.GetString("CAT_GP_ID"), "VENTA")) + C4.Position=0 + If C4.GetString("CUANTOS") > 0 Then + C3=Starter.skmt.ExecQuery2("select SUM(PE_CANT) AS CANTIDAD,PE_PRONOMBRE, sum(PE_COSTO_TOT) AS TOTAL from pedido where substr(pe_pronombre,1,6) <> ? AND PE_PROID = ? AND PE_TIPO = ? GROUP BY PE_PRONOMBRE", Array As String("CAMBIO", s.GetString("CAT_GP_ID"), "VENTA")) + C3.Position=0 + a_venta = C3.GetString("CANTIDAD") + a_VENTA_F = C3.GetString("TOTAL") + Else + a_venta = 0 + a_VENTA_F = 0 + End If + C4.Close + + C4=Starter.skmt.ExecQuery2("select count(*) as CUANTOS from pedido where substr(pe_pronombre,1,6) = ? AND PE_PROID = ? ", Array As String("CAMBIO", s.GetString("CAT_GP_ID"))) + C4.Position=0 + If C4.GetString("CUANTOS") > 0 Then + C1=Starter.skmt.ExecQuery2("select SUM(PE_CANT) AS CANTIDAD,PE_PRONOMBRE from pedido where substr(pe_pronombre,1,6) = ? AND PE_PROID = ? GROUP BY PE_PRONOMBRE", Array As String("CAMBIO", s.GetString("CAT_GP_ID"))) + C1.Position=0 + RMI = C1.GetString("CANTIDAD") + C1.Close + Else + RMI = 0 + End If + C4.Close + a_final = a_inicial_5 - a_venta - RMI + L_INVA.AddTwoLines(s.GetString("CAT_GP_NOMBRE"), "II-" & a_inicial & ".CD." & ABORDO & ".IIT." & a_total & ".VT." & a_venta & "..$" & a_VENTA_F & ".IF." & a_final & ".RMI." & RMI) + Next + End If + s.Close +End Sub + +Sub B_IMP2_Click + Log("inicia B_IMP2_Click") + B_IMP2.Enabled = False + If l_total.Text <> Null And l_total.Text <> "null" Then Subs.ponImpreso(la_cuenta.Text) 'Solo lo marcamos como impreso si tiene venta (total > 0). + ProgressDialogShow("Imprimiendo, un momento ...") + Printer1.DisConnect + If Not(Printer1.IsConnected) Then + If logger Then Log("conectando 1") + Printer1.Connect + Private cont As Int = 0 + Do While Not(impresoraConectada) + Sleep(1000) + cont = cont + 1 + If cont = 7 Then Printer1.Connect 'Tratamos de reconectar + If cont > 15 Then impresoraConectada = True + Loop + Sleep(500) + impresoraConectada = False + Else + If logger Then Log("conectando 2") + Printer1.Connect + Private cont As Int = 0 + Do While Not(impresoraConectada) Or Not(Printer1.IsConnected) + Sleep(1000) + cont = cont + 1 + If cont = 2 Then Printer1.Connect + If cont > 4 Then impresoraConectada = True + Loop + Sleep(500) + impresoraConectada = False + End If +' If Logger Then Log($"Impresora Conectada: ${Printer1.IsConnected}"$) + If la_cuenta.Text <> "0" And la_cuenta.Text <> "null" Then + Starter.skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_TIPO = ? WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) ", Array As Object("VENTA")) + Starter.skmt.ExecNonQuery("UPDATE kmt_info set IMPRESION = 1 where CAT_CL_CODIGO In (select cuenta from cuentaa)")'' + Guardar.Visible = True + End If + Starter.skmt.ExecNonQuery("delete from pedido3") + Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO3 (PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_USUARIO ) SELECT PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, SUM(PE_COSTO_TOT) AS PE_COSTO_TOT, PE_COSTOU, SUM(PE_CANT) As PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_USUARIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) GROUP BY PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, PE_COSTOU, PE_PRONOMBRE, PE_PROID, PE_CLIENTE ") + c=Starter.skmt.ExecQuery("select PE_PRECIO2,PE_TIPO,PE_FOLIO,PE_DESC,PE_COSTO_SIN,PE_RUTA,PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE, PE_FECHA,PE_USUARIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") + + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + c.Position=i + Starter.skmt.ExecNonQuery2("UPDATE PEDIDO3 SET PE_FECHA= ? WHERE PE_CLIENTE = ? AND PE_PRONOMBRE = ? AND PE_PROID = ? AND PE_CEDIS = ? AND PE_FOLIO = ?", Array As Object(c.GetString("PE_FECHA"), c.GetString("PE_CLIENTE"),c.GetString("PE_PRONOMBRE"),c.GetString("PE_PROID"),c.GetString("PE_CEDIS"), c.GetString("PE_FOLIO"))) + Next + End If + Starter.skmt.ExecNonQuery("delete from pedido WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) ") + Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO SELECT * FROM PEDIDO3") + + c=Starter.skmt.ExecQuery2("select count(*) AS CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("PERFIL")) + c.Position =0 + perfil = c.GetString("CUANTOS") + c.Close + If perfil > 0 Then + c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("PERFIL")) + c.Position =0 + perfil = c.GetString("CAT_VA_VALOR") + c.Close + End If + c=Starter.skmt.ExecQuery("select USUARIO from usuarioa") + c.Position=0 + usuario = c.GetString("USUARIO") + DateTime.DateFormat = "MM/dd/yyyy" + sDate=DateTime.Date(DateTime.Now) + sTime=DateTime.Time(DateTime.Now) + c.Close + c=Starter.skmt.ExecQuery2("SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION =?", Array As String ("SUCURSAL")) + c.Position = 0 + sucursal = c.GetString("CAT_VA_VALOR") + c.Close + TAMANO = 0 + ESPACIO = 14 + BLANCO = " " + 'esto para las impresoras nuevas + 'printer.Initialize(cmp20.OutputStream) + Printer1.Reset + Dim bmp As Bitmap + bmp.InitializeResize(File.DirAssets, "kelloggs.png", 376, 129, True) 'ignore + Dim myimage As AnImage = Printer1.ImageToBWIMage(bmp) + myimage = Printer1.DitherImage2D(myimage, 128) + myimage= Printer1.PackImage(myimage) + + Printer1.WriteString(CRLF) ' nudge the printer to show the user something is happening + Printer1.WriteString(Printer1.REVERSE) + Printer1.PrintImage(myimage) + Printer1.WriteString(Printer1.UNREVERSE) + '' Printer1.Justify = 1 + If la_cuenta.Text = "0" Then + Try + Printer1.WriteString("KELLOGG COMPANY MEXICO" & CRLF) + Printer1.WriteString(sDate &" " & sTime & CRLF) + Printer1.WriteString("Vendedor:" & usuario & CRLF) + Printer1.WriteString("Ruta:" & ruta_tienda & CRLF) + Printer1.WriteString("Tienda: " & La_nombre.Text & CRLF) + Printer1.WriteString("ID.Cliente: " & la_cuenta.Text & CRLF) + Printer1.WriteString("Calle: " & la_Calle.Text & CRLF) + Printer1.WriteString("Colonia: " & la_col.Text & CRLF) + Printer1.WriteString("C.P.: " & la_cp.Text & CRLF) + Printer1.WriteString("Entre calle1: " & l_entre1.Text & CRLF) + Printer1.WriteString("Entre Calle2: " & l_entre2.Text & CRLF) + Printer1.WriteString(" " & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("PEDIDO" & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + s=Starter.skmt.ExecQuery2("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU, PE_COSTO_TOT, length(PE_COSTO_TOT) as L_COSTO_TOT, PE_PROID, PE_CEDIS FROM PEDIDO WHERE PE_TIPO = ? and substr(pe_pronombre,1,6) <> ? AND PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_PRONOMBRE", Array As String("ABORDO","CAMBIO")) + If S.RowCount>0 Then + For i=0 To S.RowCount -1 + S.Position=i + If s.GetString("PE_CEDIS") = s.GetString("PE_PROID") Then + Printer1.WriteString(s.GetString("PE_PRONOMBRE") & CRLF) + Else + Printer1.WriteString(s.GetString("PE_CANT") & " " & s.GetString("PE_PRONOMBRE") & CRLF) + Private strT As String = "" + strT = s.GetString("L_CANT")&s.GetString("L_COSTOU")&s.GetString("L_COSTO_TOT") + TAMANO = strT.Length + ESPACIO = ESPACIO - TAMANO + For E=0 To ESPACIO -1 + BLANCO = " " & BLANCO + Next +' If Logger Then Log($"|${ESPACIO}|, |${TAMANO}|, |${BLANCO}|"$) + Private pecostou As String = 0 + If s.GETSTRING("PE_COSTOU") <> Null And IsNumber(s.GETSTRING("PE_COSTOU")) Then pecostou = s.GETSTRING("PE_COSTOU") + Private pecostotot As String = 0 + If s.GETSTRING("PE_COSTO_TOT") <> Null And IsNumber(s.GETSTRING("PE_COSTO_TOT")) Then pecostotot = s.GETSTRING("PE_COSTO_TOT") + Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & NumberFormat2(pecostou, 1, 2, 2, False) & " $" & NumberFormat2(pecostotot, 1, 2, 2, False) & CRLF) +' Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & s.GETSTRING("PE_COSTOU") & " $" & s.GETSTRING("PE_COSTO_TOT") & CRLF) + TAMANO = 0 + ESPACIO = 14 + BLANCO = " " + End If + Next + End If + s.Close + Printer1.WriteString(CRLF) + Printer1.WriteString("------------RMI---------------" & CRLF) + s=Starter.skmt.ExecQuery2("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU, PE_COSTO_TOT, length(PE_COSTO_TOT) as L_COSTO_TOT, PE_PROID, PE_CEDIS FROM PEDIDO WHERE PE_TIPO = ? and substr(pe_pronombre,1,6) = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_PRONOMBRE", Array As String("ABORDO","CAMBIO")) + If S.RowCount>0 Then + For i=0 To S.RowCount -1 + TAMANO = 0 + ESPACIO = 14 + BLANCO = " " + S.Position=i + If s.GetString("PE_CEDIS") = s.GetString("PE_PROID") Then + Printer1.WriteString(s.GetString("PE_PRONOMBRE") & CRLF) + Else + Printer1.WriteString(s.GetString("PE_CANT") & " " & s.GetString("PE_PRONOMBRE") & CRLF) + Private strT As String = "" + strT = s.GetString("L_CANT")&s.GetString("L_COSTOU")&s.GetString("L_COSTO_TOT") + TAMANO = strT.Length + ESPACIO = ESPACIO - TAMANO + For E=0 To ESPACIO -1 + BLANCO = " " & BLANCO + Next + Private pecostou As String = 0 + If s.GETSTRING("PE_COSTOU") <> Null And IsNumber(s.GETSTRING("PE_COSTOU")) Then pecostou = s.GETSTRING("PE_COSTOU") + Private pecostotot As String = 0 + If s.GETSTRING("PE_COSTO_TOT") <> Null And IsNumber(s.GETSTRING("PE_COSTO_TOT")) Then pecostotot = s.GETSTRING("PE_COSTO_TOT") + Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & NumberFormat2(pecostou, 1, 2, 2, False) & " $" & NumberFormat2(pecostotot, 1, 2, 2, False) & CRLF) +' Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & s.GETSTRING("PE_COSTOU") & " $" & s.GETSTRING("PE_COSTO_TOT") & CRLF) + TAMANO = 0 + ESPACIO = 14 + BLANCO = " " + End If + If logger Then Log($"|${ESPACIO}|, |${TAMANO}|, |${BLANCO}|"$) + Next + End If + s.Close + Printer1.WriteString(CRLF) + + s=Starter.skmt.ExecQuery2("select SUM(PE_COSTO_TOT) AS TOTAL FROM PEDIDO WHERE PE_TIPO = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("ABORDO")) + s.Position =0 + Private sTotal1 As Double + If s.GetString("TOTAL") <> Null And IsNumber(s.GETSTRING("TOTAL")) Then + sTotal1 = s.GetString("TOTAL") + Else + sTotal1 = 0 + End If + Printer1.WriteString( "Total entrega: $" & NumberFormat2(sTotal1, 1, 2, 2, False) & CRLF) + + Printer1.WriteString("===============================" & CRLF) + ''bold para las nuevas impresoras + Private total3 As String = 0 + If s.GETSTRING("TOTAL") <> Null And IsNumber(s.GETSTRING("TOTAL")) Then total3 = s.GETSTRING("TOTAL") + Printer1.WriteString( Printer1.BOLD & "Total pedido: $" & NumberFormat2(total3, 1, 2, 2, False) & CRLF) + + s.Close + s=Starter.skmt.ExecQuery2("select SUM(PE_CANT) AS TOTAL FROM PEDIDO WHERE PE_TIPO = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("ABORDO")) + s.Position =0 + Private total4 As String = "0" + If s.GetString("TOTAL") <> Null And IsNumber(s.GetString("TOTAL")) Then total4 = s.GetString("TOTAL") + Printer1.WriteString( Printer1.BOLD & "No. Productos: " & total4 & CRLF) + Printer1.WriteString("===============================" & CRLF) + s.Close + Printer1.WriteString(Printer1.DEFAULTS) + +' printer.WriteLine("------------VENTA-------------") + Printer1.WriteString(CRLF) + Printer1.WriteString(CRLF) + + Printer1.WriteString( "Nombre y Firma del cliente" & CRLF) + Printer1.WriteString(CRLF) + Printer1.WriteString(CRLF) + Printer1.WriteString(CRLF) + Printer1.WriteString("__________" & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("----ESTE TICKET NO ES UN -----" & CRLF) + Printer1.WriteString("--COMPROBANTE FISCAL, SOLO ES-" & CRLF) + Printer1.WriteString("--------INFORMATIVO-----------" & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString(CRLF) + Printer1.WriteString(CRLF) + Printer1.WriteString(CRLF) + 'printer.Close + Sleep(1000) + Printer1.DisConnect + Catch + ToastMessageShow("Error en la impresion 1.", True) + Printer1.Disconnect + B4XPages.ShowPage("Principal") + End Try + Else + Try + DateTime.DateFormat = "yyyymmdd" + sDate=DateTime.Date(DateTime.Now) + Printer1.WriteString("KELLOGG COMPANY MEXICO" & CRLF) + Printer1.WriteString("No. Ticket: " & sDate & la_cuenta.Text & CRLF) + + DateTime.DateFormat = "MM/dd/yyyy" + sDate=DateTime.Date(DateTime.Now) + + Printer1.WriteString(sDate &" " & sTime & CRLF) + Printer1.WriteString("Vendedor:" & usuario & CRLF) + Printer1.WriteString("Ruta:" & ruta_tienda & CRLF) + Printer1.WriteString("Tienda: " & La_nombre.Text & CRLF) + Printer1.WriteString("ID.Cliente: " & la_cuenta.Text & CRLF) + Printer1.WriteString("Calle: " & la_Calle.Text & CRLF) + Printer1.WriteString("Colonia: " & la_col.Text & CRLF) + Printer1.WriteString("C.P.: " & la_cp.Text & CRLF) + Printer1.WriteString("Entre calle1: " & l_entre1.Text & CRLF) + Printer1.WriteString("Entre Calle2: " & l_entre2.Text & CRLF) + Printer1.WriteString(" " & CRLF) + + ''''''' PEDIDOS DOE + + s=Starter.skmt.ExecQuery2("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU, PE_COSTO_TOT, length(PE_COSTO_TOT) as L_COSTO_TOT, PE_PROID, PE_CEDIS FROM PEDIDO WHERE PE_CEDIS = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_CEDIS,PE_PRONOMBRE", Array As String("DOE")) + + '' s=Starter.skmt.ExecQuery2("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU, PE_COSTO_TOT, length(PE_COSTO_TOT) as L_COSTO_TOT, PE_PROID, PE_CEDIS FROM PEDIDO WHERE PE_TIPO = ? and pe_codpromo = ? and substr(pe_pronombre,1,6) <> ? AND PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_CEDIS,PE_PRONOMBRE", Array As String("VENTA", "DOE", "CAMBIO")) + If S.RowCount>0 Then + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("PEDIDO DON TOÑO" & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + For i=0 To S.RowCount -1 + S.Position=i + + If s.GetString("PE_CEDIS") = s.GetString("PE_PROID") Then + Printer1.WriteString(s.GetString("PE_PRONOMBRE") & CRLF) + Else + Private strT As String = "" + Printer1.WriteString(s.GetString("PE_CANT") & " " & s.GetString("PE_PRONOMBRE") & CRLF) + Private strT As String = "" + strT = s.GetString("L_CANT")&s.GetString("L_COSTOU")&s.GetString("L_COSTO_TOT") + TAMANO = strT.Length + ESPACIO = ESPACIO - TAMANO + For E=0 To ESPACIO -1 + BLANCO = " " & BLANCO + Next + Private pecostou As String = 0 + If s.GETSTRING("PE_COSTOU") <> Null And IsNumber(s.GETSTRING("PE_COSTOU")) Then pecostou = s.GETSTRING("PE_COSTOU") + Private pecostotot As String = 0 + If s.GETSTRING("PE_COSTO_TOT") <> Null And IsNumber(s.GETSTRING("PE_COSTO_TOT")) Then pecostotot = s.GETSTRING("PE_COSTO_TOT") + Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & NumberFormat2(pecostou, 1, 2, 2, False) & " $" & NumberFormat2(pecostotot, 1, 2, 2, False) & CRLF) +' Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & s.GETSTRING("PE_COSTOU") & " $" & s.GETSTRING("PE_COSTO_TOT") & CRLF) +' If Logger Then Log($"|${ESPACIO}|, |${TAMANO}|, |${BLANCO}|"$) + TAMANO = 0 + ESPACIO = 14 + BLANCO = " " + End If + Next + End If + s.Close + + s=Starter.skmt.ExecQuery2("select sum(PE_CANT) as CANTIDAD, SUM(PE_COSTO_TOT) AS TOTAL FROM PEDIDO WHERE PE_CEDIS <> PE_PROID AND PE_CEDIS = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("DOE")) + s.Position = 0 + Private sTotal2 As Double + If s.GetString("TOTAL") <> Null And IsNumber(s.GETSTRING("TOTAL")) Then + sTotal2 = s.GetString("TOTAL") + Printer1.WriteString( $"Sub Total : $${NumberFormat2(sTotal2, 1, 2, 2, False)}"$ & CRLF) + + Else + sTotal2 = 0 + End If + Private cantidad1 As String = "0" + If s.GetString("CANTIDAD") <> Null And IsNumber(s.GetString("CANTIDAD")) Then + cantidad1 = s.GetString("CANTIDAD") + + Printer1.WriteString( "No. Productos: " & cantidad1 & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("FIN PEDIDO DON TOÑO" & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + End If + + ' Printer1.WriteString(CRLF) + s.Close + ''''SE MODIFCA EL QUERY POR LOS PEDIDOS DOE + S=Starter.skmt.ExecQuery2("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU, PE_COSTO_TOT, length(PE_COSTO_TOT) as L_COSTO_TOT, PE_PROID, PE_CEDIS FROM PEDIDO WHERE PE_TIPO = ? and substr(pe_pronombre,1,6) <> ? AND PE_CEDIS <> ? AND PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_CEDIS,PE_PRONOMBRE", Array As String("VENTA","CAMBIO","DOE")) + + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("VENTA" & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + ''s=Starter.skmt.ExecQuery2("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU, PE_COSTO_TOT, length(PE_COSTO_TOT) as L_COSTO_TOT, PE_PROID, PE_CEDIS FROM PEDIDO WHERE PE_TIPO = ? and pe_codpromo <> ? and substr(pe_pronombre,1,6) <> ? AND PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_CEDIS,PE_PRONOMBRE", Array As String("VENTA", "DOE", "CAMBIO")) + If S.RowCount>0 Then + For i=0 To S.RowCount -1 + S.Position=i + If s.GetString("PE_CEDIS") = s.GetString("PE_PROID") Then + Printer1.WriteString(s.GetString("PE_PRONOMBRE") & CRLF) + Else + Private strT As String = "" + Printer1.WriteString(s.GetString("PE_CANT") & " " & s.GetString("PE_PRONOMBRE") & CRLF) + Private strT As String = "" + strT = s.GetString("L_CANT")&s.GetString("L_COSTOU")&s.GetString("L_COSTO_TOT") + TAMANO = strT.Length + ESPACIO = ESPACIO - TAMANO + For E=0 To ESPACIO -1 + BLANCO = " " & BLANCO + Next + Private pecostou As String = 0 + If s.GETSTRING("PE_COSTOU") <> Null And IsNumber(s.GETSTRING("PE_COSTOU")) Then pecostou = s.GETSTRING("PE_COSTOU") + Private pecostotot As String = 0 + If s.GETSTRING("PE_COSTO_TOT") <> Null And IsNumber(s.GETSTRING("PE_COSTO_TOT")) Then pecostotot = s.GETSTRING("PE_COSTO_TOT") + Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & NumberFormat2(pecostou, 1, 2, 2, False) & " $" & NumberFormat2(pecostotot, 1, 2, 2, False) & CRLF) +' Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & s.GETSTRING("PE_COSTOU") & " $" & s.GETSTRING("PE_COSTO_TOT") & CRLF) +' If Logger Then Log($"|${ESPACIO}|, |${TAMANO}|, |${BLANCO}|"$) + TAMANO = 0 + ESPACIO = 14 + BLANCO = " " + End If + Next + End If + s.Close + s=Starter.skmt.ExecQuery2("select sum(PE_CANT) as CANTIDAD, SUM(PE_COSTO_TOT) AS TOTAL FROM PEDIDO WHERE PE_CEDIS <> PE_PROID AND PE_TIPO = ? and substr(pe_pronombre,1,6) <> ? AND PE_CEDIS <> ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("VENTA","CAMBIO","DOE")) + s.Position = 0 + Private sTotal2 As Double + If s.GetString("TOTAL") <> Null And IsNumber(s.GETSTRING("TOTAL")) Then + sTotal2 = s.GetString("TOTAL") + Else + sTotal2 = 0 + End If + Printer1.WriteString(Printer1.REVERSE & "===============================" & CRLF) + Printer1.WriteString( Printer1.UNREVERSE & Printer1.BOLD & $"Sub Total Venta: $${NumberFormat2(sTotal2, 1, 2, 2, False)}"$ & CRLF) + Private cantidad1 As String = "0" + If s.GetString("CANTIDAD") <> Null And IsNumber(s.GetString("CANTIDAD")) Then cantidad1 = s.GetString("CANTIDAD") + Printer1.WriteString( Printer1.UNREVERSE & Printer1.BOLD & "No. Productos: " & cantidad1 & CRLF) + Printer1.WriteString(CRLF) + s.Close + Printer1.WriteString("------------RMI---------------" & CRLF) + s=Starter.skmt.ExecQuery2("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU, PE_COSTO_TOT, length(PE_COSTO_TOT) as L_COSTO_TOT, PE_PROID, PE_CEDIS FROM PEDIDO WHERE PE_TIPO = ? and substr(pe_pronombre,1,6) = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("VENTA","CAMBIO")) + If S.RowCount>0 Then + For i=0 To S.RowCount -1 + S.Position=i + If s.GetString("PE_CEDIS") = s.GetString("PE_PROID") Then + Printer1.WriteString(s.GetString("PE_PRONOMBRE") & CRLF) + + Else + Printer1.WriteString(s.GetString("PE_CANT") & " " & s.GetString("PE_PRONOMBRE") & CRLF) + Private strT As String = "" + strT = s.GetString("L_CANT")&s.GetString("L_COSTOU")&s.GetString("L_COSTO_TOT") + TAMANO = strT.Length + ESPACIO = ESPACIO - TAMANO + For E=0 To ESPACIO -1 + BLANCO = " " & BLANCO + Next + Private pecostou As String = 0 + If s.GETSTRING("PE_COSTOU") <> Null And IsNumber(s.GETSTRING("PE_COSTOU")) Then pecostou = s.GETSTRING("PE_COSTOU") + Private pecostotot As String = 0 + If s.GETSTRING("PE_COSTO_TOT") <> Null And IsNumber(s.GETSTRING("PE_COSTO_TOT")) Then pecostotot = s.GETSTRING("PE_COSTO_TOT") + Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & NumberFormat2(pecostou, 1, 2, 2, False) & " $" & NumberFormat2(pecostotot, 1, 2, 2, False) & CRLF) +' Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & s.GETSTRING("PE_COSTOU") & " $" & s.GETSTRING("PE_COSTO_TOT") & CRLF) + If logger Then Log($"|${ESPACIO}|, |${TAMANO}|, |${BLANCO}|"$) + TAMANO = 0 + ESPACIO = 14 + BLANCO = " " + End If + Next + End If + s.Close + + s=Starter.skmt.ExecQuery2("select sum(PE_CANT) as CANTIDAD, SUM(PE_COSTO_TOT) AS TOTAL FROM PEDIDO WHERE PE_CEDIS <> PE_PROID AND PE_TIPO = ? and substr(pe_pronombre,1,6) = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("VENTA","CAMBIO")) + s.Position = 0 + Private sTotal3 As Double + If s.GetString("TOTAL") <> Null And IsNumber(s.GetString("TOTAL")) Then + sTotal3 = s.GetString("TOTAL") + Else + sTotal3 = 0 + End If + Printer1.WriteString(Printer1.REVERSE & "===============================" & CRLF) + Printer1.WriteString(Printer1.UNREVERSE & Printer1.BOLD & "Sub Total CAMBIOS: $" & NumberFormat2(sTotal3, 1, 2, 2, False) & CRLF) + Private cantidad2 As String = "0" + If s.GetString("CANTIDAD") <> Null And IsNumber(s.GetString("CANTIDAD")) Then cantidad2 = s.GetString("CANTIDAD") + Printer1.WriteString( Printer1.UNREVERSE & Printer1.BOLD & "No. Productos: " & cantidad2 & CRLF) + Printer1.WriteString(CRLF) + s.Close + Printer1.WriteString(CRLF) + s=Starter.skmt.ExecQuery2("select SUM(PE_COSTO_TOT) AS TOTAL FROM PEDIDO WHERE PE_TIPO = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("VENTA")) + s.Position =0 + Printer1.WriteString(Printer1.REVERSE & "===============================" & CRLF) + Private total2 As String = 0 + If s.GETSTRING("TOTAL") <> Null And IsNumber(s.GETSTRING("TOTAL")) Then total2 = s.GETSTRING("TOTAL") + Printer1.WriteString(Printer1.UNREVERSE & Printer1.BOLD & "Total venta: $" & NumberFormat2(total2, 1, 2, 2, False) & CRLF) +' Printer1.WriteString(Printer1.UNREVERSE & Printer1.BOLD & "Total venta: $" & s.GetString("TOTAL") & CRLF) +' Printer1.WriteString("===============================" & CRLF) +' +' Printer1.WriteString( "Total venta: $" & s.GetString("TOTAL") & CRLF) + s.Close + s=Starter.skmt.ExecQuery2("select SUM(PE_CANT) AS TOTAL FROM PEDIDO WHERE PE_CEDIS <> PE_PROID AND PE_TIPO = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("VENTA")) + s.Position =0 + Private total5 As String = "0" + If s.GetString("TOTAL") <> Null And IsNumber(s.GetString("TOTAL")) Then total5 = s.GetString("TOTAL") + Printer1.WriteString(Printer1.BOLD & "No. Productos vendidos: " & (total5 - cantidad2) & CRLF) + Printer1.WriteString(Printer1.BOLD & "Productos devueltos : " & cantidad2 & CRLF) + Printer1.WriteString(Printer1.REVERSE & "===============================" & CRLF) +' Printer1.WriteString( "No. Productos: " & s.GetString("TOTAL") & CRLF) +' Printer1.WriteString( "===============================" & CRLF) + s.Close + Printer1.WriteString(Printer1.UNREVERSE) + Printer1.WriteString(Printer1.NOBOLD) +' printer.WriteLine("------------VENTA-------------") +' printer.WriteLine("TOTAL COMPRA: $:" & total_cliente) +' Printer1.WriteString(Printer1.DEFAULTS & CRLF) + Printer1.WriteString(CRLF) + ' Printer1.WriteString(Printer1.SINGLE) + 'Printer1.WriteString("------------------------------") + ' Printer1.WriteString(Printer1.HIGH) + ' Printer1.Justify = 1 + Printer1.WriteString( "Nombre y Firma del cliente" & CRLF) + Printer1.WriteString(CRLF) + Printer1.WriteString(CRLF) + Printer1.WriteString(CRLF) + ' Printer1.WriteString(Printer1.DEFAULTS) + ' Printer1.WriteString(Printer1.SINGLE) + Printer1.WriteString("__________" & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("----ESTE TICKET NO ES UN -----" & CRLF) + Printer1.WriteString("--COMPROBANTE FISCAL, SOLO ES-" & CRLF) + Printer1.WriteString("--------INFORMATIVO-----------" & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString(CRLF) + Printer1.WriteString(CRLF) + Printer1.WriteString(CRLF) + Sleep(1000) + Printer1.DisConnect + Catch + ToastMessageShow("Error en la impresion 2.", True) + Printer1.Disconnect + B4XPages.ShowPage("Principal") + End Try + End If + Sleep(1000) + B_IMP2.Enabled = True + ProgressDialogHide +' If Logger Then Log("Habilitamos boton") +End Sub + +Sub B_IMP2BAK_Click + Log("inicia B_IMP2_Click") + + 'Comente las siguientes lineas porque como ahora los RMIs entran en negativo y se restan del total de la venta, ya no son validas. +' Private t As Cursor = Starter.skmt.ExecQuery("select sum(PE_PRECIO2) as totalRMI from pedido where PE_PRONOMBRE like 'CAMBIO%' and PE_CLIENTE In (Select cuenta from cuentaa)") +' t.Position = 0 +' Private rmiTotal As String = "0" +' If t.GetString("totalRMI") <> Null Then rmiTotal = t.GetString("totalRMI") +' Log("RMI TOTAL=" & rmiTotal) +' If l_total.Text <> Null And l_total.Text <> "null" And l_total.Text < rmiTotal Then +' Msgbox("El total de RMIs es mayor que la venta, por favor quitar RMIs", "No hay suficiente venta") 'ignore +' Return +' End If + + B_IMP2.Enabled = False + If l_total.Text <> Null And l_total.Text <> "null" Then Subs.ponImpreso(la_cuenta.Text) 'Solo lo marcamos como impreso si tiene venta (total > 0). + ProgressDialogShow("Imprimiendo, un momento ...") + Printer1.DisConnect + If Not(Printer1.IsConnected) Then + If logger Then Log("conectando 1") + Printer1.Connect + Private cont As Int = 0 + Do While Not(impresoraConectada) + Sleep(1000) + cont = cont + 1 + If cont = 7 Then Printer1.Connect 'Tratamos de reconectar + If cont > 15 Then impresoraConectada = True + Loop + Sleep(500) + impresoraConectada = False + Else + If logger Then Log("conectando 2") + Printer1.Connect + Private cont As Int = 0 + Do While Not(impresoraConectada) Or Not(Printer1.IsConnected) + Sleep(1000) + cont = cont + 1 + If cont = 2 Then Printer1.Connect + If cont > 4 Then impresoraConectada = True + Loop + Sleep(500) + impresoraConectada = False + End If +' If Logger Then Log($"Impresora Conectada: ${Printer1.IsConnected}"$) + If la_cuenta.Text <> "0" And la_cuenta.Text <> "null" Then + Starter.skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_TIPO = ? WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) ", Array As Object("VENTA")) + Starter.skmt.ExecNonQuery("UPDATE kmt_info set IMPRESION = 1 where CAT_CL_CODIGO In (select cuenta from cuentaa)")'' + Guardar.Visible = True + End If + Starter.skmt.ExecNonQuery("delete from pedido3") + Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO3 (PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_USUARIO ) SELECT PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, SUM(PE_COSTO_TOT) AS PE_COSTO_TOT, PE_COSTOU, SUM(PE_CANT) As PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_USUARIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) GROUP BY PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, PE_COSTOU, PE_PRONOMBRE, PE_PROID, PE_CLIENTE ") + c=Starter.skmt.ExecQuery("select PE_PRECIO2,PE_TIPO,PE_FOLIO,PE_DESC,PE_COSTO_SIN,PE_RUTA,PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE, PE_FECHA,PE_USUARIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") + + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + c.Position=i + Starter.skmt.ExecNonQuery2("UPDATE PEDIDO3 SET PE_FECHA= ? WHERE PE_CLIENTE = ? AND PE_PRONOMBRE = ? AND PE_PROID = ? AND PE_CEDIS = ? AND PE_FOLIO = ?", Array As Object(c.GetString("PE_FECHA"), c.GetString("PE_CLIENTE"),c.GetString("PE_PRONOMBRE"),c.GetString("PE_PROID"),c.GetString("PE_CEDIS"), c.GetString("PE_FOLIO"))) + Next + End If + Starter.skmt.ExecNonQuery("delete from pedido WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) ") + Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO SELECT * FROM PEDIDO3") + + c=Starter.skmt.ExecQuery2("select count(*) AS CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("PERFIL")) + c.Position =0 + perfil = c.GetString("CUANTOS") + c.Close + If perfil > 0 Then + c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("PERFIL")) + c.Position =0 + perfil = c.GetString("CAT_VA_VALOR") + c.Close + End If + c=Starter.skmt.ExecQuery("select USUARIO from usuarioa") + c.Position=0 + usuario = c.GetString("USUARIO") + DateTime.DateFormat = "MM/dd/yyyy" + sDate=DateTime.Date(DateTime.Now) + sTime=DateTime.Time(DateTime.Now) + c.Close + c=Starter.skmt.ExecQuery2("SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION =?", Array As String ("SUCURSAL")) + c.Position = 0 + sucursal = c.GetString("CAT_VA_VALOR") + c.Close + TAMANO = 0 + ESPACIO = 14 + BLANCO = " " + 'esto para las impresoras nuevas + 'printer.Initialize(cmp20.OutputStream) + Printer1.Reset + Dim bmp As Bitmap + bmp.InitializeResize(File.DirAssets, "kelloggs.png", 376, 129, True) 'ignore + Dim myimage As AnImage = Printer1.ImageToBWIMage(bmp) + myimage = Printer1.DitherImage2D(myimage, 128) + myimage= Printer1.PackImage(myimage) + + Printer1.WriteString(CRLF) ' nudge the printer to show the user something is happening + Printer1.WriteString(Printer1.REVERSE) + Printer1.PrintImage(myimage) + Printer1.WriteString(Printer1.UNREVERSE) +' Printer1.Justify = 1 + If la_cuenta.Text = "0" Then + Try + Printer1.WriteString("KELLOGG COMPANY MEXICO" & CRLF) + Printer1.WriteString(sDate &" " & sTime & CRLF) + Printer1.WriteString("Vendedor:" & usuario & CRLF) + Printer1.WriteString("Ruta:" & ruta_tienda & CRLF) + Printer1.WriteString("Tienda: " & La_nombre.Text & CRLF) + Printer1.WriteString("ID.Cliente: " & la_cuenta.Text & CRLF) + Printer1.WriteString("Calle: " & la_Calle.Text & CRLF) + Printer1.WriteString("Colonia: " & la_col.Text & CRLF) + Printer1.WriteString("C.P.: " & la_cp.Text & CRLF) + Printer1.WriteString("Entre calle1: " & l_entre1.Text & CRLF) + Printer1.WriteString("Entre Calle2: " & l_entre2.Text & CRLF) + Printer1.WriteString(" " & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("PEDIDO" & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + s=Starter.skmt.ExecQuery2("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU, PE_COSTO_TOT, length(PE_COSTO_TOT) as L_COSTO_TOT, PE_PROID, PE_CEDIS FROM PEDIDO WHERE PE_TIPO = ? and substr(pe_pronombre,1,6) <> ? AND PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_PRONOMBRE", Array As String("ABORDO","CAMBIO")) + If S.RowCount>0 Then + For i=0 To S.RowCount -1 + S.Position=i + If s.GetString("PE_CEDIS") = s.GetString("PE_PROID") Then + Printer1.WriteString(s.GetString("PE_PRONOMBRE") & CRLF) + Else + Printer1.WriteString(s.GetString("PE_CANT") & " " & s.GetString("PE_PRONOMBRE") & CRLF) + Private strT As String = "" + strT = s.GetString("L_CANT")&s.GetString("L_COSTOU")&s.GetString("L_COSTO_TOT") + TAMANO = strT.Length + ESPACIO = ESPACIO - TAMANO + For E=0 To ESPACIO -1 + BLANCO = " " & BLANCO + Next +' If Logger Then Log($"|${ESPACIO}|, |${TAMANO}|, |${BLANCO}|"$) + Private pecostou As String = 0 + If s.GETSTRING("PE_COSTOU") <> Null And IsNumber(s.GETSTRING("PE_COSTOU")) Then pecostou = s.GETSTRING("PE_COSTOU") + Private pecostotot As String = 0 + If s.GETSTRING("PE_COSTO_TOT") <> Null And IsNumber(s.GETSTRING("PE_COSTO_TOT")) Then pecostotot = s.GETSTRING("PE_COSTO_TOT") + Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & NumberFormat2(pecostou, 1, 2, 2, False) & " $" & NumberFormat2(pecostotot, 1, 2, 2, False) & CRLF) +' Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & s.GETSTRING("PE_COSTOU") & " $" & s.GETSTRING("PE_COSTO_TOT") & CRLF) + TAMANO = 0 + ESPACIO = 14 + BLANCO = " " + End If + Next + End If + s.Close + Printer1.WriteString(CRLF) + Printer1.WriteString("------------RMI---------------" & CRLF) + s=Starter.skmt.ExecQuery2("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU, PE_COSTO_TOT, length(PE_COSTO_TOT) as L_COSTO_TOT, PE_PROID, PE_CEDIS FROM PEDIDO WHERE PE_TIPO = ? and substr(pe_pronombre,1,6) = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_PRONOMBRE", Array As String("ABORDO","CAMBIO")) + If S.RowCount>0 Then + For i=0 To S.RowCount -1 + TAMANO = 0 + ESPACIO = 14 + BLANCO = " " + S.Position=i + If s.GetString("PE_CEDIS") = s.GetString("PE_PROID") Then + Printer1.WriteString(s.GetString("PE_PRONOMBRE") & CRLF) + Else + Printer1.WriteString(s.GetString("PE_CANT") & " " & s.GetString("PE_PRONOMBRE") & CRLF) + Private strT As String = "" + strT = s.GetString("L_CANT")&s.GetString("L_COSTOU")&s.GetString("L_COSTO_TOT") + TAMANO = strT.Length + ESPACIO = ESPACIO - TAMANO + For E=0 To ESPACIO -1 + BLANCO = " " & BLANCO + Next + Private pecostou As String = 0 + If s.GETSTRING("PE_COSTOU") <> Null And IsNumber(s.GETSTRING("PE_COSTOU")) Then pecostou = s.GETSTRING("PE_COSTOU") + Private pecostotot As String = 0 + If s.GETSTRING("PE_COSTO_TOT") <> Null And IsNumber(s.GETSTRING("PE_COSTO_TOT")) Then pecostotot = s.GETSTRING("PE_COSTO_TOT") + Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & NumberFormat2(pecostou, 1, 2, 2, False) & " $" & NumberFormat2(pecostotot, 1, 2, 2, False) & CRLF) +' Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & s.GETSTRING("PE_COSTOU") & " $" & s.GETSTRING("PE_COSTO_TOT") & CRLF) + TAMANO = 0 + ESPACIO = 14 + BLANCO = " " + End If + If logger Then Log($"|${ESPACIO}|, |${TAMANO}|, |${BLANCO}|"$) + Next + End If + s.Close + Printer1.WriteString(CRLF) + + s=Starter.skmt.ExecQuery2("select SUM(PE_COSTO_TOT) AS TOTAL FROM PEDIDO WHERE PE_TIPO = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("ABORDO")) + s.Position =0 + Private sTotal1 As Double + If s.GetString("TOTAL") <> Null And IsNumber(s.GETSTRING("TOTAL")) Then + sTotal1 = s.GetString("TOTAL") + Else + sTotal1 = 0 + End If + Printer1.WriteString( "Total entrega: $" & NumberFormat2(sTotal1, 1, 2, 2, False) & CRLF) + + Printer1.WriteString("===============================" & CRLF) + ''bold para las nuevas impresoras + Private total3 As String = 0 + If s.GETSTRING("TOTAL") <> Null And IsNumber(s.GETSTRING("TOTAL")) Then total3 = s.GETSTRING("TOTAL") + Printer1.WriteString( Printer1.BOLD & "Total pedido: $" & NumberFormat2(total3, 1, 2, 2, False) & CRLF) + + s.Close + s=Starter.skmt.ExecQuery2("select SUM(PE_CANT) AS TOTAL FROM PEDIDO WHERE PE_TIPO = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("ABORDO")) + s.Position =0 + Private total4 As String = "0" + If s.GetString("TOTAL") <> Null And IsNumber(s.GetString("TOTAL")) Then total4 = s.GetString("TOTAL") + Printer1.WriteString( Printer1.BOLD & "No. Productos: " & total4 & CRLF) + Printer1.WriteString("===============================" & CRLF) + s.Close + Printer1.WriteString(Printer1.DEFAULTS) + +' printer.WriteLine("------------VENTA-------------") + Printer1.WriteString(CRLF) + Printer1.WriteString(CRLF) + + Printer1.WriteString( "Nombre y Firma del cliente" & CRLF) + Printer1.WriteString(CRLF) + Printer1.WriteString(CRLF) + Printer1.WriteString(CRLF) + Printer1.WriteString("______________________________" & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("----ESTE TICKET NO ES UN -----" & CRLF) + Printer1.WriteString("--COMPROBANTE FISCAL, SOLO ES-" & CRLF) + Printer1.WriteString("--------INFORMATIVO-----------" & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString(CRLF) + Printer1.WriteString(CRLF) + Printer1.WriteString(CRLF) + 'printer.Close + Sleep(1000) + Printer1.DisConnect + Catch + ToastMessageShow("Error en la impresion 1.", True) + Printer1.Disconnect + Subs.iniciaActividad("Principal") +' B4XPages.ShowPage("Principal") + End Try + Else + Try + DateTime.DateFormat = "yyyymmdd" + sDate=DateTime.Date(DateTime.Now) + Printer1.WriteString("KELLOGG COMPANY MEXICO" & CRLF) + Printer1.WriteString("No. Ticket: " & sDate & la_cuenta.Text & CRLF) + + DateTime.DateFormat = "MM/dd/yyyy" + sDate=DateTime.Date(DateTime.Now) + + Printer1.WriteString(sDate &" " & sTime & CRLF) + Printer1.WriteString("Vendedor:" & usuario & CRLF) + Printer1.WriteString("Ruta:" & ruta_tienda & CRLF) + Printer1.WriteString("Tienda: " & La_nombre.Text & CRLF) + Printer1.WriteString("ID.Cliente: " & la_cuenta.Text & CRLF) + Printer1.WriteString("Calle: " & la_Calle.Text & CRLF) + Printer1.WriteString("Colonia: " & la_col.Text & CRLF) + Printer1.WriteString("C.P.: " & la_cp.Text & CRLF) + Printer1.WriteString("Entre calle1: " & l_entre1.Text & CRLF) + Printer1.WriteString("Entre Calle2: " & l_entre2.Text & CRLF) + Printer1.WriteString(" " & CRLF) + + ''''''' PEDIDOS DOE + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("PEDIDO DON TOÑO" & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + s=Starter.skmt.ExecQuery2("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU, PE_COSTO_TOT, length(PE_COSTO_TOT) as L_COSTO_TOT, PE_PROID, PE_CEDIS FROM PEDIDO WHERE PE_CEDIS = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_CEDIS,PE_PRONOMBRE", Array As String("DOE")) + + '' s=Starter.skmt.ExecQuery2("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU, PE_COSTO_TOT, length(PE_COSTO_TOT) as L_COSTO_TOT, PE_PROID, PE_CEDIS FROM PEDIDO WHERE PE_TIPO = ? and pe_codpromo = ? and substr(pe_pronombre,1,6) <> ? AND PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_CEDIS,PE_PRONOMBRE", Array As String("VENTA", "DOE", "CAMBIO")) + If S.RowCount>0 Then + For i=0 To S.RowCount -1 + S.Position=i + If s.GetString("PE_CEDIS") = s.GetString("PE_PROID") Then + Printer1.WriteString(s.GetString("PE_PRONOMBRE") & CRLF) + Else + Private strT As String = "" + Printer1.WriteString(s.GetString("PE_CANT") & " " & s.GetString("PE_PRONOMBRE") & CRLF) + Private strT As String = "" + strT = s.GetString("L_CANT")&s.GetString("L_COSTOU")&s.GetString("L_COSTO_TOT") + TAMANO = strT.Length + ESPACIO = ESPACIO - TAMANO + For E=0 To ESPACIO -1 + BLANCO = " " & BLANCO + Next + Private pecostou As String = 0 + If s.GETSTRING("PE_COSTOU") <> Null And IsNumber(s.GETSTRING("PE_COSTOU")) Then pecostou = s.GETSTRING("PE_COSTOU") + Private pecostotot As String = 0 + If s.GETSTRING("PE_COSTO_TOT") <> Null And IsNumber(s.GETSTRING("PE_COSTO_TOT")) Then pecostotot = s.GETSTRING("PE_COSTO_TOT") + Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & NumberFormat2(pecostou, 1, 2, 2, False) & " $" & NumberFormat2(pecostotot, 1, 2, 2, False) & CRLF) +' Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & s.GETSTRING("PE_COSTOU") & " $" & s.GETSTRING("PE_COSTO_TOT") & CRLF) +' If Logger Then Log($"|${ESPACIO}|, |${TAMANO}|, |${BLANCO}|"$) + TAMANO = 0 + ESPACIO = 14 + BLANCO = " " + End If + Next + End If + s.Close + + s=Starter.skmt.ExecQuery2("select sum(PE_CANT) as CANTIDAD, SUM(PE_COSTO_TOT) AS TOTAL FROM PEDIDO WHERE PE_CEDIS <> PE_PROID AND PE_CEDIS = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("DOE")) + s.Position = 0 + Private sTotal2 As Double + If s.GetString("TOTAL") <> Null And IsNumber(s.GETSTRING("TOTAL")) Then + sTotal2 = s.GetString("TOTAL") + Else + sTotal2 = 0 + End If + Printer1.WriteString( $"Sub Total : $${NumberFormat2(sTotal2, 1, 2, 2, False)}"$ & CRLF) + Private cantidad1 As String = "0" + If s.GetString("CANTIDAD") <> Null And IsNumber(s.GetString("CANTIDAD")) Then cantidad1 = s.GetString("CANTIDAD") + Printer1.WriteString( "No. Productos: " & cantidad1 & CRLF) + ' Printer1.WriteString(CRLF) + s.Close + ''''SE MODIFCA EL QUERY POR LOS PEDIDOS DOE + S=Starter.skmt.ExecQuery2("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU, PE_COSTO_TOT, length(PE_COSTO_TOT) as L_COSTO_TOT, PE_PROID, PE_CEDIS FROM PEDIDO WHERE PE_TIPO = ? and substr(pe_pronombre,1,6) <> ? AND PE_CEDIS <> ? AND PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_CEDIS,PE_PRONOMBRE", Array As String("VENTA","CAMBIO","DOE")) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("FIN PEDIDO DON TOÑO" & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("VENTA" & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + ''s=Starter.skmt.ExecQuery2("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU, PE_COSTO_TOT, length(PE_COSTO_TOT) as L_COSTO_TOT, PE_PROID, PE_CEDIS FROM PEDIDO WHERE PE_TIPO = ? and pe_codpromo <> ? and substr(pe_pronombre,1,6) <> ? AND PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_CEDIS,PE_PRONOMBRE", Array As String("VENTA", "DOE", "CAMBIO")) + + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("VENTA" & CRLF) + Printer1.WriteString("------------------------------" & CRLF) +' printer.WriteLine("-----------ENTREGA------------") + s=Starter.skmt.ExecQuery2("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU, PE_COSTO_TOT, length(PE_COSTO_TOT) as L_COSTO_TOT, PE_PROID, PE_CEDIS FROM PEDIDO WHERE PE_TIPO = ? and substr(pe_pronombre,1,6) <> ? AND PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_CEDIS,PE_PRONOMBRE", Array As String("VENTA","CAMBIO")) + If S.RowCount>0 Then + For i=0 To S.RowCount -1 + S.Position=i + If s.GetString("PE_CEDIS") = s.GetString("PE_PROID") Then + Printer1.WriteString(s.GetString("PE_PRONOMBRE") & CRLF) + Else + Private strT As String = "" + Printer1.WriteString(s.GetString("PE_CANT") & " " & s.GetString("PE_PRONOMBRE") & CRLF) + Private strT As String = "" + strT = s.GetString("L_CANT")&s.GetString("L_COSTOU")&s.GetString("L_COSTO_TOT") + TAMANO = strT.Length + ESPACIO = ESPACIO - TAMANO + For E=0 To ESPACIO -1 + BLANCO = " " & BLANCO + Next + Private pecostou As String = 0 + If s.GETSTRING("PE_COSTOU") <> Null And IsNumber(s.GETSTRING("PE_COSTOU")) Then pecostou = s.GETSTRING("PE_COSTOU") + Private pecostotot As String = 0 + If s.GETSTRING("PE_COSTO_TOT") <> Null And IsNumber(s.GETSTRING("PE_COSTO_TOT")) Then pecostotot = s.GETSTRING("PE_COSTO_TOT") + Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & NumberFormat2(pecostou, 1, 2, 2, False) & " $" & NumberFormat2(pecostotot, 1, 2, 2, False) & CRLF) +' Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & s.GETSTRING("PE_COSTOU") & " $" & s.GETSTRING("PE_COSTO_TOT") & CRLF) +' If Logger Then Log($"|${ESPACIO}|, |${TAMANO}|, |${BLANCO}|"$) + TAMANO = 0 + ESPACIO = 14 + BLANCO = " " + End If + Next + End If + s.Close + s=Starter.skmt.ExecQuery2("select sum(PE_CANT) as CANTIDAD, SUM(PE_COSTO_TOT) AS TOTAL FROM PEDIDO WHERE PE_CEDIS <> PE_PROID AND PE_TIPO = ? and substr(pe_pronombre,1,6) <> ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("VENTA","CAMBIO")) + s.Position = 0 + Private sTotal2 As Double + If s.GetString("TOTAL") <> Null And IsNumber(s.GETSTRING("TOTAL")) Then + sTotal2 = s.GetString("TOTAL") + Else + sTotal2 = 0 + End If + Printer1.WriteString( $"Sub Total Venta: $${NumberFormat2(sTotal2, 1, 2, 2, False)}"$ & CRLF) + Private cantidad1 As String = "0" + If s.GetString("CANTIDAD") <> Null And IsNumber(s.GetString("CANTIDAD")) Then cantidad1 = s.GetString("CANTIDAD") + Printer1.WriteString( "No. Productos: " & cantidad1 & CRLF) + Printer1.WriteString(CRLF) + s.Close + Printer1.WriteString("------------RMI---------------" & CRLF) + s=Starter.skmt.ExecQuery2("select PE_PRONOMBRE, PE_CANT, length(pe_cant) as L_CANT, PE_COSTOU, length(PE_COSTOU) as L_COSTOU, PE_COSTO_TOT, length(PE_COSTO_TOT) as L_COSTO_TOT, PE_PROID, PE_CEDIS FROM PEDIDO WHERE PE_TIPO = ? and substr(pe_pronombre,1,6) = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("VENTA","CAMBIO")) + If S.RowCount>0 Then + For i=0 To S.RowCount -1 + S.Position=i + If s.GetString("PE_CEDIS") = s.GetString("PE_PROID") Then + Printer1.WriteString(s.GetString("PE_PRONOMBRE") & CRLF) + + Else + Printer1.WriteString(s.GetString("PE_CANT") & " " & s.GetString("PE_PRONOMBRE") & CRLF) + Private strT As String = "" + strT = s.GetString("L_CANT")&s.GetString("L_COSTOU")&s.GetString("L_COSTO_TOT") + TAMANO = strT.Length + ESPACIO = ESPACIO - TAMANO + For E=0 To ESPACIO -1 + BLANCO = " " & BLANCO + Next + Private pecostou As String = 0 + If s.GETSTRING("PE_COSTOU") <> Null And IsNumber(s.GETSTRING("PE_COSTOU")) Then pecostou = s.GETSTRING("PE_COSTOU") + Private pecostotot As String = 0 + If s.GETSTRING("PE_COSTO_TOT") <> Null And IsNumber(s.GETSTRING("PE_COSTO_TOT")) Then pecostotot = s.GETSTRING("PE_COSTO_TOT") + Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & NumberFormat2(pecostou, 1, 2, 2, False) & " $" & NumberFormat2(pecostotot, 1, 2, 2, False) & CRLF) +' Printer1.WriteString(BLANCO & s.GETSTRING("PE_CANT") & " X $" & s.GETSTRING("PE_COSTOU") & " $" & s.GETSTRING("PE_COSTO_TOT") & CRLF) + If logger Then Log($"|${ESPACIO}|, |${TAMANO}|, |${BLANCO}|"$) + TAMANO = 0 + ESPACIO = 14 + BLANCO = " " + End If + Next + End If + s.Close + + s=Starter.skmt.ExecQuery2("select sum(PE_CANT) as CANTIDAD, SUM(PE_COSTO_TOT) AS TOTAL FROM PEDIDO WHERE PE_CEDIS <> PE_PROID AND PE_TIPO = ? and substr(pe_pronombre,1,6) = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("VENTA","CAMBIO")) + s.Position = 0 + Private sTotal3 As Double + If s.GetString("TOTAL") <> Null And IsNumber(s.GetString("TOTAL")) Then + sTotal3 = s.GetString("TOTAL") + Else + sTotal3 = 0 + End If + Printer1.WriteString( "Sub Total CAMBIOS: $" & NumberFormat2(sTotal3, 1, 2, 2, False) & CRLF) + Private cantidad2 As String = "0" + If s.GetString("CANTIDAD") <> Null And IsNumber(s.GetString("CANTIDAD")) Then cantidad2 = s.GetString("CANTIDAD") + Printer1.WriteString( "No. Productos: " & cantidad2 & CRLF) + Printer1.WriteString(CRLF) + s.Close + Printer1.WriteString(CRLF) + s=Starter.skmt.ExecQuery2("select SUM(PE_COSTO_TOT) AS TOTAL FROM PEDIDO WHERE PE_TIPO = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("VENTA")) + s.Position =0 + Printer1.WriteString(Printer1.REVERSE & "===============================" & CRLF) + Private total2 As String = 0 + If s.GETSTRING("TOTAL") <> Null And IsNumber(s.GETSTRING("TOTAL")) Then total2 = s.GETSTRING("TOTAL") + Printer1.WriteString(Printer1.UNREVERSE & Printer1.BOLD & "Total venta: $" & NumberFormat2(total2, 1, 2, 2, False) & CRLF) +' Printer1.WriteString(Printer1.UNREVERSE & Printer1.BOLD & "Total venta: $" & s.GetString("TOTAL") & CRLF) +' Printer1.WriteString("===============================" & CRLF) +' +' Printer1.WriteString( "Total venta: $" & s.GetString("TOTAL") & CRLF) + s.Close + s=Starter.skmt.ExecQuery2("select SUM(PE_CANT) AS TOTAL FROM PEDIDO WHERE PE_CEDIS <> PE_PROID AND PE_TIPO = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("VENTA")) + s.Position =0 + Private total5 As String = "0" + If s.GetString("TOTAL") <> Null And IsNumber(s.GetString("TOTAL")) Then total5 = s.GetString("TOTAL") + Printer1.WriteString(Printer1.BOLD & "No. Productos: " & total5 & CRLF) + Printer1.WriteString(Printer1.REVERSE & "===============================" & CRLF) +' Printer1.WriteString( "No. Productos: " & s.GetString("TOTAL") & CRLF) +' Printer1.WriteString( "===============================" & CRLF) + s.Close + Printer1.WriteString(Printer1.UNREVERSE) + Printer1.WriteString(Printer1.NOBOLD) +' printer.WriteLine("------------VENTA-------------") +' printer.WriteLine("TOTAL COMPRA: $:" & total_cliente) +' Printer1.WriteString(Printer1.DEFAULTS & CRLF) + Printer1.WriteString(CRLF) + ' Printer1.WriteString(Printer1.SINGLE) + 'Printer1.WriteString("------------------------------") + ' Printer1.WriteString(Printer1.HIGH) + ' Printer1.Justify = 1 + Printer1.WriteString( "Nombre y Firma del cliente" & CRLF) + Printer1.WriteString(CRLF) + Printer1.WriteString(CRLF) + Printer1.WriteString(CRLF) + ' Printer1.WriteString(Printer1.DEFAULTS) + ' Printer1.WriteString(Printer1.SINGLE) + Printer1.WriteString("______________________________" & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("----ESTE TICKET NO ES UN -----" & CRLF) + Printer1.WriteString("--COMPROBANTE FISCAL, SOLO ES-" & CRLF) + Printer1.WriteString("--------INFORMATIVO-----------" & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString(CRLF) + Printer1.WriteString(CRLF) + Printer1.WriteString(CRLF) + Sleep(1000) + Printer1.DisConnect + Catch + ToastMessageShow("Error en la impresion 2.", True) + Printer1.Disconnect + Subs.iniciaActividad("Principal") +' B4XPages.ShowPage("Principal") + End Try + End If + Sleep(1000) + B_IMP2.Enabled = True + ProgressDialogHide +' If Logger Then Log("Habilitamos boton") +End Sub + +Sub Printer_Connected (Success As Boolean) + If Success Then + B_IMP.Enabled = True + PASA_IMP = "1" + Else + B_IMP.Enabled = False + If Msgbox2("", "Printer Error","Reprint","Cancel","",Null) = DialogResponse.POSITIVE Then 'ignore + StartPrinter + End If + End If +End Sub + +Sub StartPrinter + Dim PairedDevices As Map + Dim L As List + Dim resimp As Int + ToastMessageShow("Printing.....",True) + PairedDevices.Initialize + Try + PairedDevices = cmp20.GetPairedDevices + Catch + Msgbox("Getting Paired Devices","Printer Error") 'ignore + printer.Close + cmp20.Disconnect + End Try + + If PairedDevices.Size = 0 Then + Msgbox("Error Connecting to Printer - Printer Not Found","") 'ignore + Return + End If + + If PairedDevices.Size = 1 Then + Try + cmp20.Connect(PairedDevices.Get(PairedDevices.GetKeyAt(0))) + Catch + Msgbox("Connecting","Printer Error") 'ignore + printer.Close + cmp20.Disconnect + End Try + Else + L.Initialize + For i = 0 To PairedDevices.Size - 1 + L.Add(PairedDevices.GetKeyAt(i)) + Next + resimp = InputList(L, "Choose device", -1) 'ignore + If resimp <> DialogResponse.CANCEL Then + cmp20.Connect(PairedDevices.Get(L.Get(resimp))) + End If + End If +End Sub + + +Sub B_VENTA_Click + If la_cuenta.Text = "0" Then + Starter.tipov = "ABORDO" + Subs.iniciaActividad("Productos") + Else + Cuestionario + End If +End Sub + +'Muestra un boton con las dimensiones, posicion y texto especificados. +Sub muestraBoton (thisButton As Button, theText As String, Left As Int, Top As Int, width As Int, height As Int) + thisButton.Text = theText + thisButton.Tag = theText + thisButton.Left = Left + thisButton.Top = Top + thisButton.Width = width + thisButton.Height = height + thisButton.Visible = True +End Sub + +'Muestra un boton con las dimensiones, posicion y texto especificados. +Sub muestraBotonCentrado (thisButton As Button, theText As String, Top As Int, width As Int, height As Int) 'ignore + Private anchoPantalla As Int + thisButton.Text = theText + thisButton.Tag = theText + anchoPantalla = GetDeviceLayoutValues.Width + thisButton.Left = (anchoPantalla/2) - (width/2) + thisButton.Top = Top + thisButton.Width = width + thisButton.Height = height + thisButton.Visible = True +End Sub + +'Esta subrutina muestra las encuestas. +Sub Cuestionario + DateTime.DateFormat = "MM/dd/yyyy" + sDate=DateTime.Date(DateTime.Now) + sTime=DateTime.Time(DateTime.Now) + CUANTOS = 0 + If TOMAR_FOTO = 0 Then + s=Starter.skmt.ExecQuery("select COUNT(*) AS CUANTOS from HIST_ENCUESTA where HE_CLIE In (Select cuenta from cuentaa)") + s.Position= 0 + CUANTOS = s.GetString("CUANTOS") + Private CUANTOS2 As Int = 0 + s=Starter.skmt.ExecQuery("select COUNT(*) AS CUANTOS2 from HIST_ENCUESTA2 where HE_CLIENTE In (Select cuenta from cuentaa)") + s.Position = 0 + CUANTOS2 = s.GetString("CUANTOS2") + If logger Then LogColor($"Hist:encuesta=${CUANTOS}, hist_encuesta2 = ${CUANTOS2}"$, Colors.Magenta) + End If + If CUANTOS = 0 And CUANTOS2 = 0 Then + Private enc As Cursor = Starter.skmt.ExecQuery("SELECT CAT_EP_ID, CAT_EP_IDTIPOPREGUNTA, CAT_CE_DESCRIPCION, CAT_EP_PREGUNTA, CAT_EP_RES1_PRED, CAT_EP_RES2_PRED, CAT_EP_RES3_PRED, CAT_EP_ORDEN_PREGUNTA FROM CAT_ENCUESTA_PREGUNTA ORDER BY CAT_CE_DESCRIPCION, CAST(CAT_EP_ORDEN_PREGUNTA AS DECIMAL)") + If enc.RowCount>0 Then + enc.position = 0 + ToastMessageShow($"CAT_EP_ID=${enc.GetString("CAT_EP_ID")}"$, False) + For i=0 To enc.RowCount -1 + If TOMAR_FOTO = 1 Then + If CURSOR_FOTO + 1 > enc.RowCount -1 Then + TOMAR_FOTO = 0 + Exit + Else + i = CURSOR_FOTO +1 + End If + 'Msgbox(i,"a") + TOMAR_FOTO = 0 + End If + enc.Position=i + Log($"CAT_EP_ID=${enc.GetString("CAT_EP_ID")}, CAT_EP_PREGUNTA=${enc.GetString("CAT_EP_PREGUNTA")}"$) + Dim tipoPregunta As String = enc.GetString("CAT_EP_IDTIPOPREGUNTA") +' If Logger Then Log("=================== "&tipoPregunta) +' If Logger Then Log($"Pregunta tipo: ${tipoPregunta}"$) + ' Msgbox("paso1","a") + If enc.GetString("CAT_EP_IDTIPOPREGUNTA") = 5 Then + id_encuesta = enc.GetString("CAT_EP_ID") + TOMAR_FOTO = 1 + CURSOR_FOTO = i + Subs.iniciaActividad("foto") + ' Msgbox("paso2","a") + Exit + ELSE IF enc.GetString("CAT_EP_IDTIPOPREGUNTA") = 3 Then ' Tipo SI/NO + botonPresionado = 0 ' Bandera para que espere a que se conteste la pregunta + l_titEncuesta.Text = enc.GetString("CAT_CE_DESCRIPCION") + l_txtEncuesta.Text = enc.GetString("CAT_EP_PREGUNTA") + Subs.centraEtiqueta(l_txtEncuesta, Root.Width) + muestraBoton(b_encuesta_1,"SI", centroPantalla-350, 580, 300, 160) + muestraBoton(b_encuesta_2, "NO", centroPantalla+50, 580, 300, 160) + muestraEncuesta + Do Until botonPresionado = 1 'Esperamos que respondan la pregunta + Sleep(0) + Loop + Starter.skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, encuestaRes,sDate & sTime,enc.GetString("CAT_EP_ID"))) + ocultaPanelEncuesta + ELSE IF enc.GetString("CAT_EP_IDTIPOPREGUNTA") = 4 Then + res = Msgbox2(c.GetString("CAT_EP_PREGUNTA"),enc.GetString("CAT_CE_DESCRIPCION"), "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore + If res = DialogResponse.POSITIVE Then + Starter.skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, "SI",sDate & sTime,enc.GetString("CAT_EP_ID"))) + Else IF res = DialogResponse.NEGATIVE Then + Starter.skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, "NO",sDate & sTime,enc.GetString("CAT_EP_ID"))) + i = enc.GetInt("CAT_EP_RES2_PRED") -2 + Else IF res = DialogResponse.CANCEL Then + i = i -1 + End If + ' Msgbox("paso3","a") + ELSE If enc.GetString("CAT_EP_IDTIPOPREGUNTA") = 2 Then ' Tipo 3 opciones. + botonPresionado = 0 ' Bandera para que espere a que se conteste la pregunta. + l_titEncuesta.Text = enc.GetString("CAT_CE_DESCRIPCION") + l_txtEncuesta.Text = enc.GetString("CAT_EP_PREGUNTA") + muestraBoton(b_encuesta_1, enc.GetString("CAT_EP_RES2_PRED"), centroPantalla-250, 580, 500, 160) + muestraBoton(b_encuesta_2, enc.GetString("CAT_EP_RES3_PRED"), centroPantalla-250, 740, 500, 160) + muestraBoton(b_encuesta_3, enc.GetString("CAT_EP_RES1_PRED"), centroPantalla-250, 900, 500, 160) + muestraEncuesta + Do Until botonPresionado = 1 'Esperamos que respondan la pregunta. + Sleep(0) + Loop + Starter.skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, encuestaRes,sDate & sTime,enc.GetString("CAT_EP_ID"))) + ocultaPanelEncuesta + ELSE If enc.GetString("CAT_EP_IDTIPOPREGUNTA") = 6 Then + Panel10.Visible = True + l_chk_e.Text = enc.GetString("CAT_EP_PREGUNTA") + Chk_1.Checked = False + chk_2.Checked = False + chk_3.Checked = False + Chk_1.Text = enc.GetString("CAT_EP_RES1_PRED") + chk_2.Text = enc.GetString("CAT_EP_RES2_PRED") + chk_3.Text = enc.GetString("CAT_EP_RES3_PRED") + chk_1_valor = enc.GetString("CAT_EP_RES1_PRED") + chk_2_valor = enc.GetString("CAT_EP_RES2_PRED") + chk_3_valor = enc.GetString("CAT_EP_RES3_PRED") + Chk_1.Tag = enc.GetString("CAT_EP_ID") + chk_2.Tag = enc.GetString("CAT_EP_ID") + chk_3.Tag = enc.GetString("CAT_EP_ID") + TOMAR_FOTO = 1 + CURSOR_FOTO = i + Exit + ELSE If enc.GetString("CAT_EP_IDTIPOPREGUNTA") = 1 Then + botonPresionado = 0 ' Bandera para que espere a que se conteste la pregunta + l_titEncuesta.Text = enc.GetString("CAT_CE_DESCRIPCION") + l_txtEncuesta.Text = enc.GetString("CAT_EP_PREGUNTA") + Subs.centraEditText(et_encuesta, Root.Width) + et_encuesta.Visible = True + b_encuesta_continuar.Enabled = False + Private bTop = et_encuesta.Top + 130 + muestraBoton(b_encuesta_continuar,"Continuar", centroPantalla-250, bTop, 500, 160) + muestraEncuesta + Do Until botonPresionado = 1 'Esperamos que respondan la pregunta + Sleep(0) + Loop + Starter.skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, encuestaRes,sDate & sTime,enc.GetString("CAT_EP_ID"))) + ocultaPanelEncuesta + Else + Starter.tipov = "VENTA" + Subs.iniciaActividad("Productos") + End If + Next + enc.Close + Else + Starter.tipov = "VENTA" + Subs.iniciaActividad("Productos") + End If + Else + Starter.tipov = "VENTA" + Subs.iniciaActividad("Productos") + End If +End Sub + +Sub b1_Click + Log("B1 clicked") +End Sub + +Sub b2_Click + If logger Then Log("B2 clicked") +End Sub + +Sub b_factura_Click + +End Sub + +Sub CH_TA_CheckedChange(Checked As Boolean) + +End Sub + +Sub CH_TC_CheckedChange(Checked As Boolean) + +End Sub + +Sub CH_TB_CheckedChange(Checked As Boolean) + +End Sub + +Sub CH_TD_CheckedChange(Checked As Boolean) + +End Sub + +Sub B_GUARDAR_Click + If logger Then Log("Guardar clic") + If CH_TA.Checked = True Then + TIPOEX = "TIPO A" + ELSE If CH_TB.Checked = True Then + TIPOEX = "TIPO B" + ELSE If CH_TC.Checked = True Then + TIPOEX = "TIPO C" + ELSE If CH_TD.Checked = True Then + TIPOEX = "TIPO D" + End If + Panel1.Visible = False + B_EXIBI.Visible = True + b_factura.Visible = True + HIST.Visible = True + c=Starter.skmt.ExecQuery("select CUENTA from cuentaa") + c.Position = 0 + cuenta = c.GetString("CUENTA") + Starter.skmt.ExecNonQuery2("INSERT INTO HIST_EXIBIDORES(CAT_CL_CLIENTE,CAT_CL_EXHIBIDOR,CAT_CL_BEXHIBIDOR) VALUES(?,?,?)", Array As Object(cuenta,TIPOEX,E_CUANTOS_E.Text)) +End Sub + +Sub B_EXIBI_Click + Panel1.Visible = True + B_EXIBI.Visible = False + b_factura.Visible = False + HIST.Visible = False +End Sub + +'''''''''''''''''''''''''''''''''''''' BOLETA DE LIQUIDACION +Sub LLAMA_BOLETA + '' FECHA DE TELEFONO + If Subs.clienteActual = "" Then Starter.skmt.ExecNonQuery("insert into cuentaa (cuenta) values (0)") + DateTime.DateFormat="dd/MM/yyyy" + Edt_FH.Text=DateTime.Date(DateTime.Now) + Subs.panelAnchoAlto(PNL_TOTALES, Root.Width, Root.Height) + PNL_TOTALES.Visible=True + Pnl_Billete.Visible=True + Pnl_Moneda.visible=True + LBL_RETURN.Visible=False + LBL_REGRESA.Visible=False + Subs.panelAnchoAlto(P_BOLETA, Root.Width, Root.Height) + P_BOLETA.Visible=True + P_INF_GENERAL.Visible=False + If logger Then Log("Panel general="&P_INF_GENERAL.Visible) + LBL_REGRESA.Visible=True + Private c As Cursor = Starter.skmt.ExecQuery("select * from TMP_CAT_BILLETE join TMP_CAT_MONEDAS") + If c.RowCount > 0 Then + c.Position = 0 + If logger Then Log("==================== CALCULADORA "&c.ColumnCount) +' Traemos billetes + EDT_CANMIL.Text = "0" + If IsNumber(c.GetString("TMP_BILLE_MIL")) Then EDT_CANMIL.Text = c.GetString("TMP_BILLE_MIL") + EDT_CANQUIN.Text = "0" + If c.GetString("TMP_BILLE_QUINIENTOS")<> Null Then EDT_CANQUIN.Text = c.GetString("TMP_BILLE_QUINIENTOS") + EDT_CANDOS.Text = "0" + If c.GetString("TMP_BILLE_DOSCIENTOS") <>Null Then EDT_CANDOS.Text = c.GetString("TMP_BILLE_DOSCIENTOS") + EDT_CANCIEN.Text = "0" + If c.GetString("TMP_BILLE_CIEN")<> Null Then EDT_CANCIEN.Text = c.GetString("TMP_BILLE_CIEN") + EDT_CANCIN.Text = "0" + If c.GetString("TMP_BILLE_CINCUENTA")<> Null Then EDT_CANCIN.Text = c.GetString("TMP_BILLE_CINCUENTA") + EDT_CANVEIN.Text = "0" + If c.GetString("TMP_BILLE_VEINTE")<> Null Then EDT_CANVEIN.Text = c.GetString("TMP_BILLE_VEINTE") +' Traemos monedas + EDT_CANVEINTE.Text = "0" + If c.GetString("TMP_MON_VEINTE")<> Null Then EDT_CANVEINTE.Text = c.GetString("TMP_MON_VEINTE") + EDT_CANDIEZ.Text = "0" + If c.GetString("TMP_MON_DIEZ")<> Null Then EDT_CANDIEZ.Text = c.GetString("TMP_MON_DIEZ") + EDT_CANCI.Text = "0" + If c.GetString("TMP_MON_CINCO")<> Null Then EDT_CANCI.Text = c.GetString("TMP_MON_CINCO") + EDT_CANDO.Text = "0" + If c.GetString("TMP_MON_DOS")<> Null Then EDT_CANDO.Text = c.GetString("TMP_MON_DOS") + EDT_CANUN.Text = "0" + If c.GetString("TMP_MON_UN")<> Null Then EDT_CANUN.Text = c.GetString("TMP_MON_UN") + EDT_CANCEN.Text = "0" + If c.GetString("TMP_MON_CENTAVOS")<> Null Then EDT_CANCEN.Text = c.GetString("TMP_MON_CENTAVOS") + L_CALCULA_BILLE_CLICK + L_CALCULA_MONEDA_Click + B_SUM_TOTAL.Text = TOTALBILLETES.Text + TOTALMONEDA.text + End If + Starter.boleta = 0 + c.Close +End Sub + +'''BILLETES +Sub L_CALCULA_BILLE_CLICK + If EDT_CANMIL.Text="" Or EDT_CANQUIN.Text="" Or EDT_CANDOS.Text="" Or EDT_CANCIEN.Text="" Or EDT_CANCIN.Text="" Or EDT_CANVEIN.Text="" Then + Pnl_Billete.RequestFocus + Msgbox("Por favor llena todas las cantidades","") 'ignore + Else + LBL_TMIL.Text= LBL_MIL.Tag * EDT_CANMIL.Text + LBL_TQUIN.Text=LBL_QUIN.Tag * EDT_CANQUIN.Text + LBL_TDOS.Text=LBL_DOSC.Tag * EDT_CANDOS.Text + LBL_TCIEN.Text=LBL_CIEN.Tag * EDT_CANCIEN.Text + LBL_TCIN.Text=LBL_CINCUEN.Tag * EDT_CANCIN.Text + LBL_TVEIN.Text=LBL_VEINTE.Tag * EDT_CANVEIN.Text + Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text) + TOTALBILLETES.Text=Btn_TOTALBILLETE.Text + End If +End Sub + +'20 +Private Sub EDT_CANVEIN_FocusChanged (HasFocus As Boolean) + If EDT_CANVEIN.Text = "" Then EDT_CANVEIN.Text = "0" + EDT_CANVEIN.Text = Round (EDT_CANVEIN.Text) + LBL_TVEIN.Text=LBL_VEINTE.Tag * EDT_CANVEIN.Text + Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text) + TOTALBILLETES.Text=Btn_TOTALBILLETE.Text +End Sub + +Sub B_SUVEI_Click + If EDT_CANVEIN.Text = "" Then + EDT_CANVEIN.Text=0 + LBL_TVEIN.Text=LBL_VEINTE.Tag * EDT_CANVEIN.Text + Else + EDT_CANVEIN.Text = Round (EDT_CANVEIN.Text + 1) + LBL_TVEIN.Text=LBL_VEINTE.Tag * EDT_CANVEIN.Text + Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text) + TOTALBILLETES.Text=Btn_TOTALBILLETE.Text + End If +End Sub + +Sub B_MENVEI_Click + If EDT_CANVEIN.Text = "" Then + EDT_CANVEIN.Text=0 + LBL_TVEIN.Text=LBL_VEINTE.Tag * EDT_CANVEIN.Text + Else IF EDT_CANVEIN.Text > 0 Then + EDT_CANVEIN.Text = Round(EDT_CANVEIN.Text -1) + LBL_TVEIN.Text=LBL_VEINTE.Tag * EDT_CANVEIN.Text + Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text) + TOTALBILLETES.Text=Btn_TOTALBILLETE.Text + End If +End Sub +'50 +Private Sub EDT_CANCIN_FocusChanged (HasFocus As Boolean) + If EDT_CANCIN.Text = "" Then EDT_CANCIN.Text = "0" + EDT_CANCIN.Text = Round (EDT_CANCIN.Text) + LBL_TCIN.Text=LBL_CINCUEN.Tag * EDT_CANCIN.Text + Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text) + TOTALBILLETES.Text=Btn_TOTALBILLETE.Text +End Sub + +Sub B_SUCIN_Click + If EDT_CANCIN.Text = "" Then + EDT_CANCIN.Text =0 + LBL_TCIN.Text=LBL_CINCUEN.Tag * EDT_CANCIN.Text + Else + EDT_CANCIN.Text = Round (EDT_CANCIN.Text + 1) + LBL_TCIN.Text=LBL_CINCUEN.Tag * EDT_CANCIN.Text + Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text) + TOTALBILLETES.Text=Btn_TOTALBILLETE.Text + End If +End Sub + +Sub B_MENCIN_Click + If EDT_CANCIN.Text = "" Then + EDT_CANCIN.Text =0 + LBL_TCIN.Text=LBL_CINCUEN.Tag * EDT_CANCIN.Text + Else IF EDT_CANCIN.Text > 0 Then + EDT_CANCIN.Text = Round(EDT_CANCIN.Text -1) + LBL_TCIN.Text=LBL_CINCUEN.Tag * EDT_CANCIN.Text + Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text) + TOTALBILLETES.Text=Btn_TOTALBILLETE.Text + End If +End Sub + +'100 +Private Sub EDT_CANCIEN_FocusChanged (HasFocus As Boolean) + If EDT_CANCIEN.Text = "" Then EDT_CANCIEN.Text = "0" + EDT_CANCIEN.Text = Round (EDT_CANCIEN.Text) + LBL_TCIEN.Text=LBL_CIEN.Tag * EDT_CANCIEN.Text + Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text) + TOTALBILLETES.Text=Btn_TOTALBILLETE.Text +End Sub + +Sub B_SUCIEN_Click + If EDT_CANCIEN.Text = "" Then + EDT_CANCIEN.Text = 0 + LBL_TCIEN.Text=LBL_CIEN.Tag * EDT_CANCIEN.Text + Else + EDT_CANCIEN.Text = Round (EDT_CANCIEN.Text + 1) + LBL_TCIEN.Text=LBL_CIEN.Tag * EDT_CANCIEN.Text + Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text) + TOTALBILLETES.Text=Btn_TOTALBILLETE.Text + End If +End Sub + +Sub B_MENCIE_Click + If EDT_CANCIEN.Text = "" Then + EDT_CANCIEN.Text = 0 + LBL_TCIEN.Text=LBL_CIEN.Tag * EDT_CANCIEN.Text + Else IF EDT_CANCIEN.Text > 0 Then + EDT_CANCIEN.Text = Round(EDT_CANCIEN.Text -1) + LBL_TCIEN.Text=LBL_CIEN.Tag * EDT_CANCIEN.Text + Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text) + TOTALBILLETES.Text=Btn_TOTALBILLETE.Text + End If +End Sub + +'200 +Private Sub EDT_CANDOS_FocusChanged (HasFocus As Boolean) + If EDT_CANDOS.Text = "" Then EDT_CANDOS.Text = "0" + EDT_CANDOS.Text = Round (EDT_CANDOS.Text) + LBL_TDOS.Text=LBL_DOSC.Tag * EDT_CANDOS.Text + Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text) + TOTALBILLETES.Text=Btn_TOTALBILLETE.Text +End Sub + +Sub B_SUDOS_Click + If EDT_CANDOS.Text = "" Then + EDT_CANDOS.Text = 0 + LBL_TDOS.Text=LBL_DOSC.Tag * EDT_CANDOS.Text + Else + EDT_CANDOS.Text = Round (EDT_CANDOS.Text + 1) + LBL_TDOS.Text=LBL_DOSC.Tag * EDT_CANDOS.Text + Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text) + TOTALBILLETES.Text=Btn_TOTALBILLETE.Text + End If +End Sub + +Sub B_MENDOS_Click + If EDT_CANDOS.Text = "" Then + EDT_CANDOS.Text = 0 + LBL_TDOS.Text=LBL_DOSC.Tag * EDT_CANDOS.Text + Else IF EDT_CANDOS.Text > 0 Then + EDT_CANDOS.Text = Round(EDT_CANDOS.Text -1) + LBL_TDOS.Text=LBL_DOSC.Tag * EDT_CANDOS.Text + Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text) + TOTALBILLETES.Text=Btn_TOTALBILLETE.Text + End If +End Sub + +'500 +Private Sub EDT_CANQUIN_FocusChanged (HasFocus As Boolean) + If EDT_CANQUIN.Text = "" Then EDT_CANQUIN.Text = "0" + EDT_CANQUIN.Text = Round (EDT_CANQUIN.Text) + LBL_TQUIN.Text=LBL_QUIN.Tag * EDT_CANQUIN.Text + Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text) + TOTALBILLETES.Text=Btn_TOTALBILLETE.Text +End Sub + +Sub B_SUQUI_Click + If EDT_CANQUIN.Text = "" Then + EDT_CANQUIN.Text =0 + LBL_TQUIN.Text=LBL_QUIN.Tag * EDT_CANQUIN.Text + Else + EDT_CANQUIN.Text = Round (EDT_CANQUIN.Text + 1) + LBL_TQUIN.Text=LBL_QUIN.Tag * EDT_CANQUIN.Text + Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text) + TOTALBILLETES.Text=Btn_TOTALBILLETE.Text + End If +End Sub + +Sub B_MENQUI_Click + If EDT_CANQUIN.Text = "" Then + EDT_CANQUIN.Text =0 + LBL_TQUIN.Text=LBL_QUIN.Tag * EDT_CANQUIN.Text + Else IF EDT_CANQUIN.Text > 0 Then + EDT_CANQUIN.Text = Round(EDT_CANQUIN.Text -1) + LBL_TQUIN.Text=LBL_QUIN.Tag * EDT_CANQUIN.Text + Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text) + TOTALBILLETES.Text=Btn_TOTALBILLETE.Text + End If +End Sub +'1000 +Private Sub EDT_CANMIL_FocusChanged (HasFocus As Boolean) + If EDT_CANMIL.Text = "" Then EDT_CANMIL.Text = "0" + EDT_CANMIL.Text = Round (EDT_CANMIL.Text ) + LBL_TMIL.Text= LBL_MIL.Tag * EDT_CANMIL.Text + Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text) + TOTALBILLETES.Text=Btn_TOTALBILLETE.Text +End Sub + +Sub B_SUMIL_Click + If EDT_CANMIL.Text = "" Then + EDT_CANMIL.Text = 0 + LBL_TMIL.Text= LBL_MIL.Tag * EDT_CANMIL.Text + Else + EDT_CANMIL.Text = Round (EDT_CANMIL.Text + 1) + LBL_TMIL.Text= LBL_MIL.Tag * EDT_CANMIL.Text + Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text) + TOTALBILLETES.Text=Btn_TOTALBILLETE.Text + End If +End Sub + +Sub B_MENMIL_Click + If EDT_CANMIL.Text = "" Then + EDT_CANMIL.Text = 1 + LBL_TMIL.Text= LBL_MIL.Tag * EDT_CANMIL.Text + Else IF EDT_CANMIL.Text > 0 Then + EDT_CANMIL.Text = Round(EDT_CANMIL.Text -1) + LBL_TMIL.Text= LBL_MIL.Tag * EDT_CANMIL.Text + Btn_TOTALBILLETE.Text= ( LBL_TMIL.Text + LBL_TQUIN.Text + LBL_TDOS.Text + LBL_TCIEN.Text + LBL_TCIN.Text + LBL_TVEIN.Text) + TOTALBILLETES.Text=Btn_TOTALBILLETE.Text + End If +End Sub + +'''' MONEDAS +Sub L_CALCULA_MONEDA_Click + If EDT_CANDIEZ.Text="" Or EDT_CANCI.Text="" Or EDT_CANDO.Text="" Or EDT_CANUN.Text="" Or EDT_CANCEN.Text="" Or EDT_CANVEINTE.Text="" Then + Msgbox("Por favor llena todas las cantidades","") 'ignore + Pnl_Billete.RequestFocus + Else + LBL_TDIEZ.Text= L_DIEZ.Tag * EDT_CANDIEZ.Text + LBL_TCI.Text= L_CINCO.Tag * EDT_CANCI.Text + LBL_TDO.Text=L_DOS.Tag * EDT_CANDO.Text + LBL_TUN.Text=L_UNO.Tag * EDT_CANUN.Text + LBL_TCEN.Text=L_CENTAVO.Tag * EDT_CANCEN.Text + LBL_TVEINTE.Text=L_VEINTE.Tag * EDT_CANVEINTE.Text + B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text) + TOTALMONEDA.Text=B_TOTALMONEDA.Text + End If +End Sub + +'0.50 +Private Sub EDT_CANCEN_FocusChanged (HasFocus As Boolean) + If EDT_CANCEN.Text = "" Then EDT_CANCEN.Text = "0" + EDT_CANCEN.Text = Round (EDT_CANCEN.Text) + LBL_TCEN.Text=L_CENTAVO.Tag * EDT_CANCEN.Text + B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text) + TOTALMONEDA.Text=B_TOTALMONEDA.Text +End Sub + +Sub B_SUMCENT_Click + If EDT_CANCEN.Text = "" Then + EDT_CANCEN.Text = 0 + LBL_TCEN.Text=L_CENTAVO.Tag * EDT_CANCEN.Text + Else + EDT_CANCEN.Text = Round (EDT_CANCEN.Text + 1) + LBL_TCEN.Text=L_CENTAVO.Tag * EDT_CANCEN.Text + B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text) + TOTALMONEDA.Text=B_TOTALMONEDA.Text + End If +End Sub + +Sub B_MENCENT_Click + If EDT_CANCEN.Text = "" Then + EDT_CANCEN.Text =0 + LBL_TCEN.Text=L_CENTAVO.Tag * EDT_CANCEN.Text + Else IF EDT_CANCEN.Text > 0 Then + EDT_CANCEN.Text = Round(EDT_CANCEN.Text -1) + LBL_TCEN.Text=L_CENTAVO.Tag * EDT_CANCEN.Text + B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text) + TOTALMONEDA.Text=B_TOTALMONEDA.Text + End If +End Sub + +'1 +Private Sub EDT_CANUN_FocusChanged (HasFocus As Boolean) + If EDT_CANUN.Text = "" Then EDT_CANUN.Text = "0" + EDT_CANUN.Text = Round (EDT_CANUN.Text) + LBL_TUN.Text=L_UNO.Tag * EDT_CANUN.Text + B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text) + TOTALMONEDA.Text=B_TOTALMONEDA.Text +End Sub + +Sub B_SUMUN_Click + If EDT_CANUN.Text = "" Then + + LBL_TUN.Text=L_UNO.Tag * EDT_CANUN.Text + Else + EDT_CANUN.Text = Round (EDT_CANUN.Text + 1) + LBL_TUN.Text=L_UNO.Tag * EDT_CANUN.Text + B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text) + TOTALMONEDA.Text=B_TOTALMONEDA.Text + End If +End Sub + +Sub B_MENUN_Click + If EDT_CANUN.Text = "" Then + EDT_CANUN.Text = 0 + LBL_TUN.Text=L_UNO.Tag * EDT_CANUN.Text + Else IF EDT_CANUN.Text > 0 Then + EDT_CANUN.Text = Round(EDT_CANUN.Text -1) + LBL_TUN.Text=L_UNO.Tag * EDT_CANUN.Text + B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text) + TOTALMONEDA.Text=B_TOTALMONEDA.Text + End If +End Sub + +'2 +Private Sub EDT_CANDO_FocusChanged (HasFocus As Boolean) + If EDT_CANDO.Text = "" Then EDT_CANDO.Text = "0" + EDT_CANDO.Text = Round (EDT_CANDO.Text) + LBL_TDO.Text=L_DOS.Tag * EDT_CANDO.Text + B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text) + TOTALMONEDA.Text=B_TOTALMONEDA.Text +End Sub + +Sub B_SUMDO_Click + If EDT_CANDO.Text = "" Then + EDT_CANDO.Text =0 + LBL_TDO.Text=L_DOS.Tag * EDT_CANDO.Text + Else + EDT_CANDO.Text = Round (EDT_CANDO.Text + 1) + LBL_TDO.Text=L_DOS.Tag * EDT_CANDO.Text + B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text) + TOTALMONEDA.Text=B_TOTALMONEDA.Text + End If +End Sub + +Sub B_MENDO_Click + If EDT_CANDO.Text = "" Then + EDT_CANDO.Text=0 + LBL_TDO.Text=L_DOS.Tag * EDT_CANDO.Text + Else IF EDT_CANDO.Text > 0 Then + EDT_CANDO.Text = Round(EDT_CANDO.Text -1) + LBL_TDO.Text=L_DOS.Tag * EDT_CANDO.Text + B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text) + TOTALMONEDA.Text=B_TOTALMONEDA.Text + End If +End Sub + +'5 +Private Sub EDT_CANCI_FocusChanged (HasFocus As Boolean) + If EDT_CANCI.Text = "" Then EDT_CANCI.Text = "0" + EDT_CANCI.Text = Round (EDT_CANCI.Text) + LBL_TCI.Text= L_CINCO.Tag * EDT_CANCI.Text + B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text ) + TOTALMONEDA.Text=B_TOTALMONEDA.Text +End Sub + +Sub B_SUMCIN_Click + If EDT_CANCI.Text = "" Then + EDT_CANCI.Text =0 + LBL_TCI.Text= L_CINCO.Tag * EDT_CANCI.Text + Else + EDT_CANCI.Text = Round (EDT_CANCI.Text + 1) + LBL_TCI.Text= L_CINCO.Tag * EDT_CANCI.Text + B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text ) + TOTALMONEDA.Text=B_TOTALMONEDA.Text + End If +End Sub + +Sub B_MENCI_Click + If EDT_CANCI.Text = "" Then + EDT_CANCI.Text =0 + LBL_TCI.Text= L_CINCO.Tag * EDT_CANCI.Text + Else IF EDT_CANCI.Text > 0 Then + EDT_CANCI.Text = Round(EDT_CANCI.Text -1) + LBL_TCI.Text= L_CINCO.Tag * EDT_CANCI.Text + B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text) + TOTALMONEDA.Text=B_TOTALMONEDA.Text + End If +End Sub +'10 +Private Sub EDT_CANDIEZ_FocusChanged (HasFocus As Boolean) + If EDT_CANDIEZ.Text = "" Then EDT_CANDIEZ.Text = "0" + EDT_CANDIEZ.Text = Round (EDT_CANDIEZ.Text) + LBL_TDIEZ.Text= L_DIEZ.Tag * EDT_CANDIEZ.Text + B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text) + TOTALMONEDA.Text=B_TOTALMONEDA.Text +End Sub + +Sub B_SUMDIEZ_Click + If EDT_CANDIEZ.Text = "" Then + EDT_CANDIEZ.Text =0 + LBL_TDIEZ.Text= L_DIEZ.Tag * EDT_CANDIEZ.Text + Else + EDT_CANDIEZ.Text = Round (EDT_CANDIEZ.Text + 1) + LBL_TDIEZ.Text= L_DIEZ.Tag * EDT_CANDIEZ.Text + B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text) + TOTALMONEDA.Text=B_TOTALMONEDA.Text + End If +End Sub + +Sub B_MENDIEZ_Click + If EDT_CANDIEZ.Text = "" Then + EDT_CANDIEZ.Text = 0 + LBL_TDIEZ.Text= L_DIEZ.Tag * EDT_CANDIEZ.Text + Else IF EDT_CANDIEZ.Text > 0 Then + EDT_CANDIEZ.Text = Round(EDT_CANDIEZ.Text -1) + LBL_TDIEZ.Text= L_DIEZ.Tag * EDT_CANDIEZ.Text + B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text) + TOTALMONEDA.Text=B_TOTALMONEDA.Text + End If +End Sub + +'20 +Private Sub EDT_CANVEINTE_FocusChanged (HasFocus As Boolean) + If EDT_CANVEINTE.Text = "" Then EDT_CANVEINTE.Text = "0" + EDT_CANVEINTE.Text = Round(EDT_CANVEINTE.Text) + LBL_TVEINTE.Text= L_VEINTE.Tag * EDT_CANVEINTE.Text + B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text ) + TOTALMONEDA.Text=B_TOTALMONEDA.Text +End Sub + +Sub B_MENVEINTE_Click + If EDT_CANVEINTE.Text = "" Then + EDT_CANVEINTE.Text = 0 + LBL_TVEINTE.Text= L_VEINTE.Tag * EDT_CANVEINTE.Text + Else IF EDT_CANVEINTE.Text > 0 Then + EDT_CANVEINTE.Text = Round(EDT_CANVEINTE.Text -1) + LBL_TVEINTE.Text= L_VEINTE.Tag * EDT_CANVEINTE.Text + B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text ) + TOTALMONEDA.Text=B_TOTALMONEDA.Text + End If +End Sub + +Sub B_SUMVEINTE_Click + If EDT_CANVEINTE.Text = "" Then + EDT_CANVEINTE.Text =0 + LBL_TVEINTE.Text= L_VEINTE.Tag * EDT_CANVEINTE.Text + Else + EDT_CANVEINTE.Text = Round (EDT_CANVEINTE.Text + 1) + LBL_TVEINTE.Text= L_VEINTE.Tag * EDT_CANVEINTE.Text + B_TOTALMONEDA.Text=( LBL_TDIEZ.Text + LBL_TCI.Text + LBL_TDO.Text + LBL_TUN.Text + LBL_TCEN.Text + LBL_TVEINTE.Text) + TOTALMONEDA.Text=B_TOTALMONEDA.Text + End If +End Sub + +''''''TOTALES +Sub TOTALES_Click + If TOTALMONEDA.Text="" Or TOTALBILLETES.Text="" Then + TOTALMONEDA.Text=0 + TOTALBILLETES.Text=0 + B_SUM_TOTAL.Text="$"& (TOTALMONEDA.Text + TOTALBILLETES.Text) + Else + B_SUM_TOTAL.Text= "$"&(TOTALMONEDA.Text + TOTALBILLETES.Text) + End If +End Sub + +Sub B_AGREGABILL_Click + Pnl_Billete.Visible=True + Pnl_Moneda.Visible=False + PNL_TOTALES.Visible=False + LBL_RETURN.Visible=True + LBL_REGRESA.Visible=True +End Sub + +Sub B_AGREGAMONE_Click + Pnl_Billete.Visible=False + Pnl_Moneda.Visible=True + PNL_TOTALES.Visible=False + LBL_RETURN.Visible=True + LBL_REGRESA.Visible=True +End Sub + +Sub LBL_RETURN_Click + Pnl_Billete.Visible=False + Pnl_Moneda.Visible=False + PNL_TOTALES.Visible=True + LBL_RETURN.Visible=False + LBL_REGRESA.Visible=False + ''' CALCULO FINAL + If TOTALMONEDA.Text="" Or TOTALBILLETES.Text="" Then + TOTALMONEDA.Text=0 + TOTALBILLETES.Text=0 + B_SUM_TOTAL.Text="$"& (TOTALMONEDA.Text + TOTALBILLETES.Text) + Else + B_SUM_TOTAL.Text="$"& (TOTALMONEDA.Text + TOTALBILLETES.Text) + End If +End Sub + +Sub LBL_REGRESA_Click + Pnl_Billete.Visible=False + Pnl_Moneda.Visible=False + LBL_RETURN.Visible=False + LBL_REGRESA.Visible=False + PNL_TOTALES.Visible=True + LBL_REGRESA.Visible=True +End Sub + +Sub B_Regresar_Click +' StartActivity("SELECCION") + Subs.iniciaActividad("principal") +' B4XPages.ShowPage("Principal") +' Activity.Finish + PNL_TOTALES.Visible=False + Pnl_Billete.Visible=False + Pnl_Moneda.visible=False + PNL_TOTALES.Visible=False + LBL_RETURN.Visible=False + LBL_REGRESA.Visible=False + P_BOLETA.Visible=False + P_INF_GENERAL.Visible=True + If logger Then Log("Panel general="&P_INF_GENERAL.Visible) + LBL_REGRESA.Visible=False + +End Sub + +Sub IMG_IMPRESORA_Click +' Printer1.DisConnect : Log("Desconectando impresora") +' impresoraConectada = False +' Private cont As Int = 0 +' ToastMessageShow("Conectando impresora", False) +' Do While Not(impresoraConectada) And cont < 9 +' Printer1.Connect +' If Logger Then Log("Conectando impresora") +' Sleep(1000) +' If Logger Then Log(impresoraConectada) +' cont = cont + 1 +' Loop +' If Logger Then Log("connected") + ProgressDialogShow("Imprimiendo, un momento ...") + Printer1.DisConnect + If Not(Printer1.IsConnected) Then + If logger Then Log("conectando 1") + Printer1.Connect + Private cont As Int = 0 + Do While Not(impresoraConectada) + Sleep(1000) + cont = cont + 1 + If cont = 7 Then Printer1.Connect 'Tratamos de reconectar + If cont > 15 Then impresoraConectada = True + Loop + Sleep(500) + impresoraConectada = False + Else + If logger Then Log("conectando 2") + Printer1.Connect + Private cont As Int = 0 + Do While Not(impresoraConectada) Or Not(Printer1.IsConnected) + Sleep(1000) + cont = cont + 1 + If cont = 2 Then Printer1.Connect + If cont > 4 Then impresoraConectada = True + Loop + Sleep(500) + impresoraConectada = False + End If + + + c=Starter.skmt.ExecQuery("select USUARIO from usuarioa") + c.Position=0 + usuario = c.GetString("USUARIO") + DateTime.DateFormat = "MM/dd/yyyy" + sDate=DateTime.Date(DateTime.Now) + sTime=DateTime.Time(DateTime.Now) + c.Close + Printer1.WriteString("KELLOGG COMPANY MEXICO" & CRLF) + Printer1.WriteString(sDate &" " & sTime & CRLF) + Printer1.WriteString("Vendedor:" & usuario & CRLF) + Printer1.WriteString(" " & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("BILLETES" & CRLF) + Printer1.WriteString("$1,000 X " & EDT_CANMIL.TEXT & " = " & LBL_TMIL.TEXT & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("$500 X " & EDT_CANQUIN.TEXT & " = " & LBL_TQUIN.TEXT &CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("$200 X " & EDT_CANDOS.TEXT & " = " & LBL_TDOS.Text & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("$100 X " & EDT_CANCIEN.TEXT & " = " & LBL_TCIEN.Text & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("$50 X " & EDT_CANCIN.TEXT & " = " & LBL_TCIN.Text & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("$20 X " & EDT_CANVEIN.TEXT & " = " & LBL_TVEIN.Text & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("TOTAL BILLETES...... " & Btn_TOTALBILLETE.TEXT & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("MONEDAS" & CRLF) + Printer1.WriteString("$20 X " & EDT_CANVEINTE.TEXT & " = " & LBL_TVEINTE.TEXT &CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("$10 X " & EDT_CANDIEZ.TEXT & " = " & LBL_TDIEZ.TEXT &CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("$5 X " & EDT_CANCI.TEXT & " = " & LBL_TCI.Text & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("$2 X " & EDT_CANDO.TEXT & " = " & LBL_TDO.Text & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("$1 X " & EDT_CANUN.TEXT & " = " & LBL_TUN.Text & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("$.50 X " & EDT_CANCEN.TEXT & " = " & LBL_TCEN.Text & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("TOTAL MONEDAS....... " & B_TOTALMONEDA.TEXT & CRLF) + Printer1.WriteString(" " & CRLF) + Printer1.WriteString("TOTAL .........." & B_SUM_TOTAL.TEXT & CRLF) + Printer1.WriteString(" " & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString(" " & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("Nombre y Firma" & CRLF) + Printer1.WriteString(CRLF) + Printer1.WriteString(CRLF) + Printer1.WriteString(CRLF) + Printer1.WriteString("______________________________" & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString(CRLF) + Printer1.WriteString(CRLF) + ProgressDialogHide +End Sub + +Sub B_IMP_INVBAK_Click + ProgressDialogShow("Imprimiendo, un momento ...") + Printer1.DisConnect + If Not(Printer1.IsConnected) Then + If logger Then Log("conectando 1") + Printer1.Connect + Private cont As Int = 0 + Do While Not(impresoraConectada) + Sleep(1000) + cont = cont + 1 + If cont = 7 Then Printer1.Connect 'Tratamos de reconectar + If cont > 15 Then impresoraConectada = True + Loop + Sleep(500) + impresoraConectada = False + Else + If logger Then Log("conectando 2") + Printer1.Connect + Private cont As Int = 0 + Do While Not(impresoraConectada) Or Not(Printer1.IsConnected) + Sleep(1000) + cont = cont + 1 + If cont = 2 Then Printer1.Connect + If cont > 4 Then impresoraConectada = True + Loop + Sleep(500) + impresoraConectada = False + End If + c=Starter.skmt.ExecQuery("select USUARIO from usuarioa") + c.Position=0 + usuario = c.GetString("USUARIO") + DateTime.DateFormat = "MM/dd/yyyy" + sDate=DateTime.Date(DateTime.Now) + sTime=DateTime.Time(DateTime.Now) + c.Close + TAMANO = 5 + ESPACIO = 14 + BLANCO = " " + Printer1.WriteString("KELLOG COMPANY MEXICO" & CRLF) + Printer1.WriteString("RESUMEN DIA" & CRLF) + Printer1.WriteString(sDate & " " & sTime & CRLF) + Printer1.WriteString("Vendedor:" & usuario & CRLF) + Printer1.WriteString("-------INVENTARIO A BORDO----------" & CRLF) + Printer1.WriteString("---II---CD---IIT---VT---RMI---IF---" & CRLF) + + ' aqui es donde esta el pedo de julieta de los descuentos quitar el precio2 pero meter un if para saber si es ruta especial o es normal o que show. + s=Starter.skmt.ExecQuery2 ("select CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_ALMACEN from cat_gunaprod2 where CAT_GP_CLASIF <> ? ORDER BY CAT_GP_NOMBRE ", Array As String("PROMOS")) + Log($"Reglones: ${s.RowCount}"$) + If s.RowCount>0 Then + For i=0 To S.RowCount -1 + Log(i) + Try + s.Position=i + Printer1.WriteString(s.GetString("CAT_GP_NOMBRE") & CRLF) + Log("p"&i) + Catch + Log(LastException) + If logger Then Log("Saliendo con Try/Catch") + Exit + End Try + S1=Starter.skmt.ExecQuery2("select CAT_GP_ALMACEN from cat_gunaprod5 where CAT_GP_ID = ?", Array As String(s.GetString("CAT_GP_ID"))) + S1.Position=0 + S3=Starter.skmt.ExecQuery2("select count(*) as CUANTOS from HIST_ABORDO where HIST_PROID = ?", Array As String(s.GetString("CAT_GP_ID"))) + S3.Position=0 + If S3.GetString("CUANTOS") > 0 Then + S2=Starter.skmt.ExecQuery2("select HIST_CANT from HIST_ABORDO where HIST_PROID = ?", Array As String(s.GetString("CAT_GP_ID"))) + S2.Position=0 + a_inicial = S1.GetString("CAT_GP_ALMACEN") - S2.GetString("HIST_CANT") + Else + a_inicial = S1.GetString("CAT_GP_ALMACEN") + End If + a_inicial_5 = S1.GetString("CAT_GP_ALMACEN") + 'Printer1.WriteString("INICIAL: " & ABORDO & CRLF) + If S3.GetString("CUANTOS") > 0 Then + 'Printer1.WriteString("CARGA DIA : " & S2.GetString("HIST_CANT") & CRLF) + ABORDO = S2.GetString("HIST_CANT") + Else + 'Printer1.WriteString("CARGA DIA : 0" & CRLF) + ABORDO = 0 + End If + 'Printer1.WriteString("CARGA TOTAL : " & S1.GetString("CAT_GP_ALMACEN") & CRLF) + a_total = S1.GetString("CAT_GP_ALMACEN") + + C4=Starter.skmt.ExecQuery2("select count(*) as CUANTOS from pedido where substr(pe_pronombre,1,6) <> ? AND PE_TIPO = ? and PE_PROID = ? ", Array As String("CAMBIO","VENTA", s.GetString("CAT_GP_ID"))) + C4.Position=0 + If C4.GetString("CUANTOS") > 0 Then + C3=Starter.skmt.ExecQuery2("select SUM(PE_CANT) AS CANTIDAD,PE_PRONOMBRE from pedido where substr(pe_pronombre,1,6) <> ? AND PE_TIPO = ? AND PE_PROID = ? GROUP BY PE_PRONOMBRE", Array As String("CAMBIO","VENTA", s.GetString("CAT_GP_ID"))) + C3.Position=0 + 'Printer1.WriteString("VENTA: " & C3.GetString("CANTIDAD") & CRLF) + a_venta = C3.GetString("CANTIDAD") + Else + 'Printer1.WriteString("VENTA: 0" & CRLF) + a_venta = 0 + End If + C4.Close + C4=Starter.skmt.ExecQuery2("select count(*) as CUANTOS from pedido where substr(pe_pronombre,1,6) = ? AND PE_PROID = ? ", Array As String("CAMBIO", s.GetString("CAT_GP_ID"))) + C4.Position=0 + If C4.GetString("CUANTOS") > 0 Then + C1=Starter.skmt.ExecQuery2("select SUM(PE_CANT) AS CANTIDAD,PE_PRONOMBRE from pedido where substr(pe_pronombre,1,6) = ? AND PE_PROID = ? GROUP BY PE_PRONOMBRE", Array As String("CAMBIO", s.GetString("CAT_GP_ID"))) + C1.Position=0 + RMI = C1.GetString("CANTIDAD") + Else + RMI = 0 + End If + + 'Printer1.WriteString("INV. ACT.: " & s.GetString("CAT_GP_ALMACEN") & CRLF) + 'a_final =s.GetString("CAT_GP_ALMACEN") + a_final = a_inicial_5 - a_venta - RMI + 'Printer1.WriteString("RMI: " & RMI & CRLF) + Private sep1 As String + Private sep2 As String + Private sep3 As String + Private sep4 As String + Private sep5 As String + Private sep6 As String + + sep1 = a_inicial.Length + If sep1 = 1 Then + a_inicial = "----" & a_inicial + else if sep1 = 2 Then + a_inicial = "---" & a_inicial + else if sep1 = 3 Then + a_inicial = "--" & a_inicial + else if sep1 = 4 Then + a_inicial = "-" & a_inicial + else if sep1 = 5 Then + a_inicial = a_inicial + End If + sep2 = ABORDO.Length + If sep2 = 1 Then + ABORDO = "----" & ABORDO + else if sep2 = 2 Then + ABORDO = "---" & ABORDO + else if sep2 = 3 Then + ABORDO = "--" & ABORDO + else if sep2 = 4 Then + ABORDO = "-" & ABORDO + else if sep2 = 5 Then + ABORDO = ABORDO + End If + + sep3 = a_total.Length + If sep3 = 1 Then + a_total = "----" & a_total + else if sep3 = 2 Then + a_total = "---" & a_total + else if sep3 = 3 Then + a_total = "--" & a_total + else if sep3 = 4 Then + a_total = "-" & a_total + else if sep3 = 5 Then + a_total = a_total + End If + + sep4 = a_venta.Length + If sep4 = 1 Then + a_venta = "----" & a_venta + else if sep4 = 2 Then + a_venta = "---" & a_venta + else if sep4 = 3 Then + a_venta = "--" & a_venta + else if sep4 = 4 Then + a_venta = "-" & a_venta + else if sep4 = 5 Then + a_venta = a_venta + End If + + sep5 = a_final.Length + If sep5 = 1 Then + a_final = "----" & a_final + else if sep5 = 2 Then + a_final = "---" & a_final + else if sep5 = 3 Then + a_final = "--" & a_final + else if sep5 = 4 Then + a_final = "-" & a_final + else if sep5 = 5 Then + a_final = a_final + End If + + sep6 = RMI.Length + If sep6 = 1 Then + RMI = "----" & RMI + else if sep6 = 2 Then + RMI = "---" & RMI + else if sep6 = 3 Then + RMI = "--" & RMI + else if sep6 = 4 Then + RMI = "-" & RMI + else if sep6 = 5 Then + RMI = RMI + End If + + Printer1.WriteString( a_inicial & ABORDO & a_total & a_venta & RMI & a_final & CRLF) + + TAMANO = TAMANO + 1 + If TAMANO > 40 Then + + t3.Initialize("T3", 4000) ' 1000 = 1 second + t3.Enabled = True + Wait For t3_tick + TAMANO = 0 + End If + Next + End If + s.Close + If S3.IsInitialized Then S3.Close + Try + c=Starter.skmt.ExecQuery("select count(*) as CUANTOS from pedido") + c.Position =0 + CUANTOS = c.GetString("CUANTOS") + c.Close + Catch + CUANTOS = 0 + End Try + Try + c=Starter.skmt.ExecQuery2("select count(*) as CUANTOS from pedido where substr(pe_pronombre,1,6) <> ? GROUP BY PE_PRONOMBRE", Array As String("CAMBIO")) + If c.RowCount > 0 Then + c.Position =0 + CUANTOS1 = c.GetString("CUANTOS") + Else + CUANTOS1 = 0 + End If + c.Close + Catch + CUANTOS1 = 0 + End Try + + If CUANTOS <> CUANTOS1 Then + Try + c=Starter.skmt.ExecQuery2("select SUM(PE_CANT) AS CANTIDAD,PE_PRONOMBRE from pedido where substr(pe_pronombre,1,6) = ? GROUP BY PE_PRONOMBRE", Array As String("CAMBIO")) + Printer1.WriteString(CRLF) + Printer1.WriteString("-----------RMI----------------" & CRLF) + Printer1.WriteString(CRLF) + If C.RowCount>0 Then + For i=0 To C.RowCount -1 + C.Position=i + Printer1.WriteString(C.GetString("CANTIDAD") & " " & C.GetString("PE_PRONOMBRE") & CRLF) + Next + End If + c.Close + Catch + Printer1.WriteString(CRLF) + End Try + End If + + ' TOTALES DE LOS ARCHIVOS + + s.Close + S=Starter.skmt.ExecQuery2("select SUM(CAT_GP_ALMACEN) AS CAT_GP_ALMACEN from cat_gunaprod2 WHERE CAT_GP_CLASIF <> ? ", Array As String("PROMOS")) + S.Position=0 + a_final =s.GetString("CAT_GP_ALMACEN") + + S1.Close + S1=Starter.skmt.ExecQuery("select SUM(CAT_GP_ALMACEN) AS CAT_GP_ALMACEN from cat_gunaprod5 ") + S1.Position=0 + a_total = S1.GetString("CAT_GP_ALMACEN") + a_inicial = S1.GetString("CAT_GP_ALMACEN") + S1.Close + ABORDO =0 + C3=Starter.skmt.ExecQuery2("select SUM(PE_CANT) AS CANTIDAD, SUM(PE_COSTO_TOT) AS PE_TOTAL from pedido where pe_proid <> pe_cedis and substr(pe_pronombre,1,6) <> ? AND PE_CLIENTE <> ?", Array As String("CAMBIO", "0")) + If C3.RowCount > 0 Then + C3.Position=0 + a_venta = C3.GetString("CANTIDAD") + Else + a_venta = 0 + End If + If a_venta = Null Then a_venta = 0 + If CUANTOS <> CUANTOS1 Then + C1=Starter.skmt.ExecQuery2("select SUM(PE_CANT) AS CANTIDAD from pedido where substr(pe_pronombre,1,6) = ? ", Array As String("CAMBIO")) + C1.Position=0 + RMI = C1.GetString("CANTIDAD") + C1.Close + Else + RMI = 0 + End If + If RMI = Null Then RMI = 0 + If logger Then Log($"a_total=${a_total}, a_venta=${a_venta}, rmi=${RMI}"$) + a_final = a_total - a_venta - RMI + Printer1.WriteString("TOTAL----------------- " & CRLF) + Printer1.WriteString("---" & a_inicial & "..." & ABORDO & "..." & a_total & "..." & a_venta & "..." & a_final & "..." & RMI & CRLF) + Printer1.WriteString("TOTAL " & C3.GetString("PE_TOTAL") & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("Nombre y Firma" & CRLF) + Printer1.WriteString(CRLF) + Printer1.WriteString(CRLF) + Printer1.WriteString(CRLF) + Printer1.WriteString("______________________________" & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString(CRLF) + Printer1.WriteString(CRLF) + If C3.IsInitialized Then C3.Close + ProgressDialogHide +End Sub + +Sub B_IMP_INV_Click + ProgressDialogShow("Imprimiendo, un momento ...") + Printer1.DisConnect + If Not(Printer1.IsConnected) Then + If logger Then Log("conectando 1") + Printer1.Connect + Private cont As Int = 0 + Do While Not(impresoraConectada) + Sleep(1000) + cont = cont + 1 + If cont = 7 Then Printer1.Connect 'Tratamos de reconectar + If cont > 15 Then impresoraConectada = True + Loop + Sleep(500) + impresoraConectada = False + Else + If logger Then Log("conectando 2") + Printer1.Connect + Private cont As Int = 0 + Do While Not(impresoraConectada) Or Not(Printer1.IsConnected) + Sleep(1000) + cont = cont + 1 + If cont = 2 Then Printer1.Connect + If cont > 4 Then impresoraConectada = True + Loop + Sleep(500) + impresoraConectada = False + End If + c=Starter.skmt.ExecQuery("select USUARIO from usuarioa") + c.Position=0 + usuario = c.GetString("USUARIO") + DateTime.DateFormat = "MM/dd/yyyy" + sDate=DateTime.Date(DateTime.Now) + sTime=DateTime.Time(DateTime.Now) + c.Close + TAMANO = 5 + ESPACIO = 14 + BLANCO = " " + Printer1.WriteString("KELLOG COMPANY MEXICO" & CRLF) + Printer1.WriteString("RESUMEN DIA" & CRLF) + Printer1.WriteString(sDate & " " & sTime & CRLF) + Printer1.WriteString("Vendedor:" & usuario & CRLF) + Printer1.WriteString("-------INVENTARIO A BORDO----------" & CRLF) + ''' se cambia este Printer1.WriteString("---II---CD---IIT---VT---RMI---IF---" & CRLF) ------- sin RMI + Printer1.WriteString("---II---CD---IIT---VT---------IF---" & CRLF) + + ' aqui es donde esta el pedo de julieta de los descuentos quitar el precio2 pero meter un if para saber si es ruta especial o es normal o que show. + s=Starter.skmt.ExecQuery2 ("select CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_ALMACEN from cat_gunaprod2 where CAT_GP_CLASIF <> ? ORDER BY CAT_GP_NOMBRE ", Array As String("PROMOS")) + Log($"Reglones: ${s.RowCount}"$) + If s.RowCount>0 Then + For i=0 To S.RowCount -1 + Log(i) + Try + s.Position=i + Printer1.WriteString(s.GetString("CAT_GP_NOMBRE") & CRLF) + Log("p"&i) + Catch + Log(LastException) + If logger Then Log("Saliendo con Try/Catch") + Exit + End Try + S1=Starter.skmt.ExecQuery2("select CAT_GP_ALMACEN from cat_gunaprod5 where CAT_GP_ID = ?", Array As String(s.GetString("CAT_GP_ID"))) + S1.Position=0 + S3=Starter.skmt.ExecQuery2("select count(*) as CUANTOS from HIST_ABORDO where HIST_PROID = ?", Array As String(s.GetString("CAT_GP_ID"))) + S3.Position=0 + If S3.GetString("CUANTOS") > 0 Then + S2=Starter.skmt.ExecQuery2("select HIST_CANT from HIST_ABORDO where HIST_PROID = ?", Array As String(s.GetString("CAT_GP_ID"))) + S2.Position=0 + a_inicial = S1.GetString("CAT_GP_ALMACEN") - S2.GetString("HIST_CANT") + Else + a_inicial = S1.GetString("CAT_GP_ALMACEN") + End If + a_inicial_5 = S1.GetString("CAT_GP_ALMACEN") + 'Printer1.WriteString("INICIAL: " & ABORDO & CRLF) + If S3.GetString("CUANTOS") > 0 Then + 'Printer1.WriteString("CARGA DIA : " & S2.GetString("HIST_CANT") & CRLF) + ABORDO = S2.GetString("HIST_CANT") + Else + 'Printer1.WriteString("CARGA DIA : 0" & CRLF) + ABORDO = 0 + End If + 'Printer1.WriteString("CARGA TOTAL : " & S1.GetString("CAT_GP_ALMACEN") & CRLF) + a_total = S1.GetString("CAT_GP_ALMACEN") + + C4=Starter.skmt.ExecQuery2("select count(*) as CUANTOS from pedido where substr(pe_pronombre,1,6) <> ? AND PE_TIPO = ? and PE_PROID = ? ", Array As String("CAMBIO","VENTA", s.GetString("CAT_GP_ID"))) + C4.Position=0 + If C4.GetString("CUANTOS") > 0 Then + C3=Starter.skmt.ExecQuery2("select SUM(PE_CANT) AS CANTIDAD,PE_PRONOMBRE from pedido where substr(pe_pronombre,1,6) <> ? AND PE_TIPO = ? AND PE_PROID = ? GROUP BY PE_PRONOMBRE", Array As String("CAMBIO","VENTA", s.GetString("CAT_GP_ID"))) + C3.Position=0 + 'Printer1.WriteString("VENTA: " & C3.GetString("CANTIDAD") & CRLF) + a_venta = C3.GetString("CANTIDAD") + Else + 'Printer1.WriteString("VENTA: 0" & CRLF) + a_venta = 0 + End If + C4.Close + ''' se conenta esto para el cambio de RMI + C4=Starter.skmt.ExecQuery2("select count(*) as CUANTOS from pedido where substr(pe_pronombre,1,6) = ? AND PE_PROID = ? ", Array As String("CAMBIO", s.GetString("CAT_GP_ID"))) + C4.Position=0 + If C4.GetString("CUANTOS") > 0 Then + C1=Starter.skmt.ExecQuery2("select SUM(PE_CANT) AS CANTIDAD,PE_PRONOMBRE from pedido where substr(pe_pronombre,1,6) = ? AND PE_PROID = ? GROUP BY PE_PRONOMBRE", Array As String("CAMBIO", s.GetString("CAT_GP_ID"))) + C1.Position=0 + RMI = C1.GetString("CANTIDAD") + Else + RMI = 0 + End If + + 'Printer1.WriteString("INV. ACT.: " & s.GetString("CAT_GP_ALMACEN") & CRLF) + 'a_final =s.GetString("CAT_GP_ALMACEN") + ''' se cammbi a este a_final = a_inicial_5 - a_venta - RMI por el sin RMI cambiuo de rmi + a_final = a_inicial_5 - a_venta + + 'Printer1.WriteString("RMI: " & RMI & CRLF) + Private sep1 As String + Private sep2 As String + Private sep3 As String + Private sep4 As String + Private sep5 As String + Private sep6 As String + + sep1 = a_inicial.Length + If sep1 = 1 Then + a_inicial = "----" & a_inicial + else if sep1 = 2 Then + a_inicial = "---" & a_inicial + else if sep1 = 3 Then + a_inicial = "--" & a_inicial + else if sep1 = 4 Then + a_inicial = "-" & a_inicial + else if sep1 = 5 Then + a_inicial = a_inicial + End If + sep2 = ABORDO.Length + If sep2 = 1 Then + ABORDO = "----" & ABORDO + else if sep2 = 2 Then + ABORDO = "---" & ABORDO + else if sep2 = 3 Then + ABORDO = "--" & ABORDO + else if sep2 = 4 Then + ABORDO = "-" & ABORDO + else if sep2 = 5 Then + ABORDO = ABORDO + End If + + sep3 = a_total.Length + If sep3 = 1 Then + a_total = "----" & a_total + else if sep3 = 2 Then + a_total = "---" & a_total + else if sep3 = 3 Then + a_total = "--" & a_total + else if sep3 = 4 Then + a_total = "-" & a_total + else if sep3 = 5 Then + a_total = a_total + End If + + sep4 = a_venta.Length + If sep4 = 1 Then + a_venta = "----" & a_venta + else if sep4 = 2 Then + a_venta = "---" & a_venta + else if sep4 = 3 Then + a_venta = "--" & a_venta + else if sep4 = 4 Then + a_venta = "-" & a_venta + else if sep4 = 5 Then + a_venta = a_venta + End If + + sep5 = a_final.Length + If sep5 = 1 Then + a_final = "----" & a_final + else if sep5 = 2 Then + a_final = "---" & a_final + else if sep5 = 3 Then + a_final = "--" & a_final + else if sep5 = 4 Then + a_final = "-" & a_final + else if sep5 = 5 Then + a_final = a_final + End If + ''''se cambia por lo de RMI + '' sep6 = RMI.Length + '' If sep6 = 1 Then + '' RMI = "----" & RMI + '' else if sep6 = 2 Then + '' RMI = "---" & RMI + '' else if sep6 = 3 Then + '' RMI = "--" & RMI + '' else if sep6 = 4 Then + '' RMI = "-" & RMI + '' else if sep6 = 5 Then + '' RMI = RMI + '' End If + '' se cambia este Printer1.WriteString( a_inicial & ABORDO & a_total & a_venta & RMI & a_final & CRLF) --- por este sin RMI + + Printer1.WriteString( a_inicial & ABORDO & a_total & a_venta & a_final & CRLF) + + TAMANO = TAMANO + 1 + If TAMANO > 40 Then + + t3.Initialize("T3", 4000) ' 1000 = 1 second + t3.Enabled = True + Wait For t3_tick + TAMANO = 0 + End If + Next + End If + s.Close + If S3.IsInitialized Then S3.Close + Try + c=Starter.skmt.ExecQuery("select count(*) as CUANTOS from pedido") + c.Position =0 + CUANTOS = c.GetString("CUANTOS") + c.Close + Catch + CUANTOS = 0 + End Try + ''' se quita por el RMI + Try + c=Starter.skmt.ExecQuery2("select count(*) as CUANTOS from pedido where substr(pe_pronombre,1,6) = ? GROUP BY PE_PRONOMBRE", Array As String("CAMBIO")) + If c.RowCount > 0 Then + c.Position =0 + CUANTOS1 = c.GetString("CUANTOS") + Else + CUANTOS1 = 0 + End If + c.Close + Catch + CUANTOS1 = 0 + End Try + If CUANTOS <> CUANTOS1 Then + Try + c=Starter.skmt.ExecQuery2("select SUM(PE_CANT) AS CANTIDAD,PE_PRONOMBRE from pedido where substr(pe_pronombre,1,6) = ? GROUP BY PE_PRONOMBRE", Array As String("CAMBIO")) + Printer1.WriteString(CRLF) + Printer1.WriteString("-----------RMI----------------" & CRLF) + Printer1.WriteString(CRLF) + If C.RowCount>0 Then + For i=0 To C.RowCount -1 + C.Position=i + Printer1.WriteString(C.GetString("CANTIDAD") & " " & C.GetString("PE_PRONOMBRE") & CRLF) + Next + End If + c.Close + Catch + Printer1.WriteString(CRLF) + End Try + End If + + ' TOTALES DE LOS ARCHIVOS + + s.Close + S=Starter.skmt.ExecQuery2("select SUM(CAT_GP_ALMACEN) AS CAT_GP_ALMACEN from cat_gunaprod2 WHERE CAT_GP_CLASIF <> ? ", Array As String("PROMOS")) + S.Position=0 + a_final =s.GetString("CAT_GP_ALMACEN") + + S1.Close + S1=Starter.skmt.ExecQuery("select SUM(CAT_GP_ALMACEN) AS CAT_GP_ALMACEN from cat_gunaprod5 ") + S1.Position=0 + a_total = S1.GetString("CAT_GP_ALMACEN") + a_inicial = S1.GetString("CAT_GP_ALMACEN") + S1.Close + ABORDO =0 + C3=Starter.skmt.ExecQuery2("select SUM(PE_CANT) AS CANTIDAD, SUM(PE_COSTO_TOT) AS PE_TOTAL from pedido where pe_proid <> pe_cedis and substr(pe_pronombre,1,6) <> ? AND PE_CLIENTE <> ?", Array As String("CAMBIO", "0")) + C8=Starter.skmt.ExecQuery2("select SUM(PE_COSTO_TOT) AS PE_TOTAL from pedido where pe_proid <> pe_cedis AND PE_CLIENTE <> ?", Array As String( "0")) + C8.Position=0 + If C3.RowCount > 0 Then + C3.Position=0 + a_venta = C3.GetString("CANTIDAD") + Else + a_venta = 0 + End If + + If a_venta = Null Then a_venta = 0 + If CUANTOS <> CUANTOS1 Then + C1=Starter.skmt.ExecQuery2("select SUM(PE_CANT) AS CANTIDAD, SUM(PE_COSTO_TOT) AS TOTAL from pedido where substr(pe_pronombre,1,6) = ? ", Array As String("CAMBIO")) + C1.Position=0 + RMI = C1.GetString("CANTIDAD") + RMI_VALOR = C1.GetString("TOTAL") + C1.Close + Else + RMI = 0 + End If + If RMI = Null Then RMI = 0 + If logger Then Log($"a_total=${a_total}, a_venta=${a_venta}, rmi=${RMI}"$) + a_final = a_total - a_venta + Printer1.WriteString(Printer1.BOLD & "Piezas en RMI : " & RMI & CRLF) + Printer1.WriteString(Printer1.BOLD & "TOTAL RMI : " & RMI_VALOR & CRLF) + + Printer1.WriteString(Printer1.BOLD & "----RESUMEN TOTAL---- " & CRLF) + '' se cambia por lo del rmi Printer1.WriteString("---" & a_inicial & "..." & ABORDO & "..." & a_total & "..." & a_venta & "..." & a_final & "..." & RMI & CRLF) + Printer1.WriteString("---" & a_inicial & "..." & ABORDO & "..." & a_total & "..." & a_venta & "..." & a_final & "..." & CRLF) + + Printer1.WriteString(Printer1.BOLD & "TOTAL VENTA " & C8.GetString("PE_TOTAL") & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString("Nombre y Firma" & CRLF) + Printer1.WriteString(CRLF) + Printer1.WriteString(CRLF) + Printer1.WriteString(CRLF) + Printer1.WriteString("__________" & CRLF) + Printer1.WriteString("------------------------------" & CRLF) + Printer1.WriteString(CRLF) + Printer1.WriteString(CRLF) + If C3.IsInitialized Then C3.Close + ProgressDialogHide +End Sub + +Sub B_CERRAR_I_Click + Panel_INV_A.Visible = False + P_INF_GENERAL.Visible = True + If logger Then Log("Panel general="&P_INF_GENERAL.Visible) +End Sub + +Sub Bt_GuardarBoleta_Click + DateTime.DateFormat = "MM/dd/yyyy" + sDate=DateTime.Date(DateTime.Now) + sTime=DateTime.Time(DateTime.Now) + cursorBoleta=Starter.skmt.ExecQuery("select ID_ALMACEN FROM CAT_ALMACEN") + cursorBoleta.Position=0 + Id_Almacen=cursorBoleta.GetString("ID_ALMACEN") + Starter.skmt.ExecNonQuery("delete from TMP_CAT_BILLETE") + Starter.skmt.ExecNonQuery("delete from TMP_CAT_MONEDAS") + Starter.skmt.ExecNonQuery2("INSERT INTO TMP_CAT_BILLETE (TMP_BILLE_RUTA, TMP_BILLE_IDALMACEN, TMP_BILLE_FECHA, TMP_BILLE_MIL, TMP_BILLE_QUINIENTOS, TMP_BILLE_DOSCIENTOS, TMP_BILLE_CIEN, TMP_BILLE_CINCUENTA, TMP_BILLE_VEINTE) values (?,?,?,?,?,?,?,?,?)", Array As Object (RutaBoleta,Id_Almacen,sDate & sTime,EDT_CANMIL.Text,EDT_CANQUIN.Text,EDT_CANDOS.Text,EDT_CANCIEN.Text,EDT_CANCIN.Text,EDT_CANVEIN.Text)) + Starter.skmt.ExecNonQuery2("INSERT INTO TMP_CAT_MONEDAS (TMP_MON_RUTA, TMP_MON_IDALMACEN, TMP_MON_FECHA, TMP_MON_VEINTE, TMP_MON_DIEZ, TMP_MON_CINCO, TMP_MON_DOS, TMP_MON_UN, TMP_MON_CENTAVOS) values (?,?,?,?,?,?,?,?,?)", Array As Object (RutaBoleta,Id_Almacen,sDate & sTime,EDT_CANVEINTE.Text,EDT_CANDIEZ.Text,EDT_CANCI.Text,EDT_CANDO.Text,EDT_CANUN.Text,EDT_CANCEN.Text)) +' If Logger Then Log($"${RutaBoleta},${Id_Almacen},${EDT_CANMIL.Text},${EDT_CANQUIN.Text},${EDT_CANDOS.Text},${EDT_CANCIEN.Text},${EDT_CANCIN.Text},${EDT_CANVEIN.Text}"$) +' If Logger Then Log($"${RutaBoleta},${Id_Almacen},${EDT_CANVEINTE.Text},${EDT_CANDIEZ.Text},${EDT_CANCI.Text},${EDT_CANDO.Text},${EDT_CANUN.Text},${EDT_CANCEN.Text}"$) + Msgbox("Datos Guardados ","Listo") 'ignore +End Sub + +Sub B_E_NEXT_Click + Panel9.Visible = False + Starter.skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, E_RES_E.Text ,sDate & sTime,c.GetString("CAT_EP_ID"))) + Starter.tipov = "VENTA" + Cuestionario +End Sub + +Sub b_chk_e_Click + Panel10.Visible = False + Private resp As String = "" + If Chk_1.Checked = True Then resp = chk_1_valor + If chk_2.Checked = True Then resp = resp & " / " & chk_2_valor + If chk_3.Checked = True Then resp = resp & " / " & chk_3_valor + If resp.StartsWith(",") Then resp = resp.SubString(2) 'Quitamos la coma si existe al principio. + Starter.skmt.ExecNonQuery2("insert into HIST_ENCUESTA(HE_CLIE, HE_RES, HE_FECHA, HE_TIPO) VALUES (?,?,?,?)", Array As Object(la_cuenta.Text, resp, sDate & sTime, Chk_1.Tag)) + Starter.tipov = "VENTA" + Cuestionario +End Sub + +'Muestra el panel de la encuesta, le da el alto y ancho de la pantalla y la pone en 0,0 +Sub muestraEncuesta +' If Logger Then Log("Muestra Encuesta") + p_encuesta.Top = 0 + p_encuesta.left = 0 + p_encuesta.Height = GetDeviceLayoutValues.Height + p_encuesta.Width = GetDeviceLayoutValues.Width + p_encuesta.SetVisibleAnimated(200, True) + p_encuesta.Elevation = 90 'ignore + p_encuesta.BringToFront + P_INF_GENERAL.Visible = False + Log("Panel general="&P_INF_GENERAL.Visible) +End Sub + +' Oculta el panel de la encuesta y los botones de la misma. +Sub ocultaPanelEncuesta +' Log("Oculta Encuesta") + b_encuesta_1.Visible = False + b_encuesta_2.Visible = False + b_encuesta_3.Visible = False + p_encuesta.Visible = False + P_INF_GENERAL.Visible = True + If logger Then Log("Panel general="&P_INF_GENERAL.Visible) +End Sub + +'Regresa el valor de "left" para el centro de la pantalla +Sub centroPantalla As Int + Private anchoPantalla As Int = GetDeviceLayoutValues.Width + Private anchoPantalla As Int = Root.Width + Return anchoPantalla/2 +End Sub + +Private Sub b_encuesta_1_Click + Dim btn As Button = Sender + Log(btn.Tag & " clicked - " & btn.Text) + encuestaRes = btn.Text + ocultaPanelEncuesta + botonPresionado = 1 +End Sub + +Private Sub b_encuesta_2_Click + Dim btn As Button = Sender + Log(btn.Tag & " clicked - " & btn.Text) + encuestaRes = btn.Text + ocultaPanelEncuesta + botonPresionado = 1 +End Sub + +Private Sub b_encuesta_3_Click + Dim btn As Button = Sender + If logger Then Log(btn.Tag & " clicked - " & btn.Text) + encuestaRes = btn.Text + ocultaPanelEncuesta + botonPresionado = 1 +End Sub + +Private Sub b_encuesta_continuar_Click + encuestaRes = et_encuesta.Text + et_encuesta.Text = "" + et_encuesta.Visible = False + b_encuesta_continuar.Visible = False + ocultaPanelEncuesta + botonPresionado = 1 +End Sub + +Private Sub et_encuesta_TextChanged (Old As String, New As String) +' Log($"|${Old}|,|${New}|"$) + If New.Length > 0 Then b_encuesta_continuar.Enabled = True + If New.Length < 1 Then b_encuesta_continuar.Enabled = False +End Sub + +'Revisa si el cliente actual es candidato a la promo especial que da regalo según el monto de la compra. +'Se revisa que el cliente tenga asignada la promoción, que no tenga venta impresa y que el producto de regalo tenga existencia. +'Si cumple las 3 condiciones regresa esValida=True, si no, esValida=False. +Sub revisaPromoEspecial As Map +' Necesitamos cliente autorizado, producto promocional con existencia y cliente no impreso. + Private hayInventario As String = "" + Private clienteConPromo As String = "" + Private clienteImpreso As String = "" + Dim promoInfo As Map + promoInfo.Initialize + Private x As Cursor + 'Revisamos si ya tiene venta impresa. + x=Starter.skmt.ExecQuery("select count(*) as CUANTOS from CLIENTE_IMPRESO where CI_CUENTA in (Select CUENTA from cuentaa)") + x.Position = 0 + clienteImpreso = x.GetString("CUANTOS") +' Log(clienteImpreso) +' If clienteImpreso = "0" Then Log("El cliente no tiene venta impresa.") + x.Close + 'Revisamos que tenga asignada la promo. + x=Starter.skmt.ExecQuery("select count(*) as clienteConPromo, CPM_PROID, CPM_CANT, CPM_RANGO, CPM_DESC, CPM_IDPROMO, CPM_MONTO from CAT_PROMO_MONTO where CPM_CLIENTE in (Select CUENTA from cuentaa)") + If x.RowCount > 0 Then + x.Position = 0 + If x.GetString("clienteConPromo") = 1 Then 'Cliente autorizado para promo. + clienteConPromo = "1" + Private y As Cursor + Private nombreProd As String = "" + y=Starter.skmt.ExecQuery("select cat_gp_nombre as nombreProd from cat_gunaprod where cat_gp_id = '" & x.GetString("CPM_PROID") & "'") + If y.RowCount > 0 Then + y.Position = 0 + nombreProd = y.GetString("nombreProd") + End If + Log("El cliente tiene asignada la promo especial.") + Private p As Cursor + p=Starter.skmt.ExecQuery("select count(*) as hayInventario from CAT_GUNAPROD where CAT_GP_ALMACEN > 0 and CAT_GP_ID = " & x.GetString("CPM_PROID")) + p.Position = 0 + hayInventario = p.GetString("hayInventario") + If hayInventario = "1" Then Log("El producto de la promo tiene existencia.") + p.Close + promoInfo = CreateMap("idProd":x.GetString("CPM_PROID"), "cantProd":x.GetString("CPM_CANT"), "rangoPromo":x.GetString("CPM_RANGO"), "descrPromo":x.GetString("CPM_DESC"), "idPromo":x.GetString("CPM_IDPROMO"), "montoPromo":x.GetString("CPM_MONTO"), "nombreProd":nombreProd) + End If + End If + x.Close + If clienteImpreso = "0" And clienteConPromo = "1" And hayInventario = "1" Then + Log("Cumple con TODAS las condiciones de la promo.") + promoInfo.Put("esValida", True) + Return promoInfo + Else +' Log("NO cumple con las condiciones de la promo.") + promoInfo.Put("esValida", False) + Return promoInfo + End If +End Sub + +'Mete la promoción especial de regalo por monto vendido. +Sub metePromoEspecial(idProd As String, idPromo As String, cantProd As Int, nombreProd As String, promoDescr As String, idCliente As String, idUsuario As String, idRuta As String) 'ignore + Dim query As String + query = "cat_gunaprod" + If Starter.tipov = "VENTA" Then query = "cat_gunaprod2" +' Falta nombre de producto en el insert + Starter.skmt.ExecNonQuery2("DELETE from PEDIDO where PE_CEDIS = ?", Array As String (idPromo)) + 'Metemos encabezado de la promo. + Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_FECHA, PE_USUARIO, PE_RUTA, PE_TIPO, PE_PRECIO2) VALUES(?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (idPromo, 0, 0, cantProd, promoDescr, idPromo, idCliente, sDate & sTime, idUsuario, idRuta, Starter.tipov, 0)) + 'Metemos el producto de regalo. + Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_FECHA, PE_USUARIO, PE_RUTA, PE_TIPO, PE_PRECIO2) VALUES(?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (idPromo, 0.01, 0.01, cantProd, nombreProd, idProd, idCliente, sDate & sTime, idUsuario, idRuta, Starter.tipov, 0.01)) + 'Actualizamos existencia en CAT_GUNAPROD. + Starter.skmt.ExecNonQuery2("update " & query & " set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cantProd, idProd)) +End Sub + +Sub revisaImpresora (mode As String) 'ignore + '' Log("Revisamos impresora " & Starter.intentosImpresora) + '' Log("RevisandoImpresora= " & Starter.revisandoImpresora) +' If Not(Starter.btAdmin.IsEnabled) Then Starter.btAdmin.Enable 'Si no esta prendido el BT lo prendemos. +' If Not(Printer1.IsInitialized) Then Printer1.Initialize(Me, "Printer1") 'Si no esta inicializada la inicializamos. +' If Not(Starter.revisandoImpresora) Then Return +' Starter.revisandoImpresora = True +' If mode = "BT" Then + '' Try + '' LogColor("reiniciamos BT", Colors.Blue) + '' Starter.btAdmin.Disable + '' Sleep(500) + '' Starter.btAdmin.Enable + '' Sleep(1000) + '' If Starter.btAdmin.IsEnabled Then revisaImpresora("") + '' Catch + '' Log(LastException) + '' End Try +' Else + '' ToastMessageShow("Conectando impresora.", False) +' If Not(Printer1.IsConnected) Then 'Si no estamos conectados, nos conectamos. +' Log("Connect") +' Printer1.Connect +' Else 'Si ya estamos conectados +' Log("Disc-Conn") +' Printer1.DisConnect +' Sleep(1000) +' Printer1.Connect +' End If +' End If +End Sub + +Private Sub l_exhibidor2_Click + p_exhibidores.Left = (Root.Width/2) - (p_exhibidores.Width/2) + p_exhibidores.Top = Root.Height/4 + p_exhibidores.Visible = True + p_exhibidores.Elevation = 90dip +End Sub + +Private Sub b_exhibidor_Click + p_exhibidores.Visible = False +End Sub + +Private Sub Panel9_Click + 'Esta vacio porque solo esta capturado los clics. +End Sub + +Private Sub PNL_TOTALES_Click + 'Esta vacio porque solo esta capturado los clics. +End Sub + +Private Sub b_ubicacion_Click + CallSubDelayed(Tracker, "StartFLP2") +End Sub + +Private Sub P_BOLETA_Click + 'Esta vacio porque solo esta capturado los clics. +End Sub + +Private Sub b_whats_Click + P_INF_GENERAL.Visible = False + p_promowhats.visible = True + + c=Starter.skmt.ExecQuery("select CAT_CL_CODIGO from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)") + If c.RowCount > 0 Then + c.Position=0 + l_promowhats.Text = c.GetString("CAT_CL_CODIGO") + End If + c.Close +End Sub + +Private Sub b_aceptarrpomo_Click +' c=Starter.skmt.ExecQuery("select CAT_CL_NOMBRE from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)") +' If c.RowCount > 0 Then +' c.Position=0 +' l_promowhats.Text = c.GetString("CAT_CL_NOMBRE") +' End If +' c.Close + sDate=DateTime.Date(DateTime.Now) + sTime=DateTime.Time(DateTime.Now) + c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa") + c.Position=0 + clie_id = c.GetString("CUENTA") + c.Close + c=Starter.skmt.ExecQuery("select USUARIO from usuarioa") + c.Position=0 + usuario = c.GetString("USUARIO") + c.Close + c=Starter.skmt.ExecQuery("select ID_ALMACEN from CAT_ALMACEN") + If c.RowCount>0 Then + C.Position=0 + Id_Almacen = C.GetString("ID_ALMACEN") + End If + c.Close + + Starter.skmt.ExecNonQuery2("INSERT INTO HIST_PROMO_WHATS VALUES (?,?)", Array As Object(l_promowhats.Text, "PROMO ACEPTADA")) + + Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_TIPO,PE_PRECIO2) VALUES(?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object ("PROMODOE",0 , 0, 1, "KIT DE BIENVENIDA DON TOÑO", "PROMODOE",la_cuenta.TEXT, sDate & sTime, usuario,Starter.rutaV,Starter.tipov,0)) + Starter. skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_TIPO,PE_PRECIO2) VALUES(?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object ("PROMODOE",0.01 , 0.01, 1, "CAJA CHOCO ZUCARITAS 260 GR", "1008094223",la_cuenta.TEXT, sDate & sTime, usuario,Starter.rutaV,Starter.tipov,0)) + Starter.skmt.ExecNonQuery2("update cat_gunaprod2 set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object("1", "1008094223")) + c=Starter.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, SUM(PE_COSTO_SIN) AS TOTAL_CLIE_SIN FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") + c.Position=0 + Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") + If logger Then LogColor($"Insertamos coordenadas en pedido: ${Starter.lon_gps}, ${Starter.lat_gps}"$, Colors.Magenta) + Starter.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT,PC_ALMACEN,PC_RUTA,PC_COSTO_SIN) VALUES (?,?,?,?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), Starter.lon_gps, Starter.lat_gps,Id_Almacen,Starter.rutaV,c.GetString("TOTAL_CLIE_SIN"))) + + Starter.skmt.ExecNonQuery("delete from pedido3") + Starter.skmt.ExecNonQuery("UPDATE PEDIDO SET PE_FOLIO = 0 where PE_FOLIO IS NULL") + Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO3 (PE_PRECIO2, PE_TIPO, PE_FECHA, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_USUARIO ) SELECT PE_PRECIO2, PE_TIPO, PE_FECHA, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, SUM(PE_COSTO_TOT) AS PE_COSTO_TOT, PE_COSTOU, SUM(PE_CANT) As PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_USUARIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) GROUP BY PE_PRECIO2, PE_TIPO, PE_DESC, PE_COSTO_SIN, PE_RUTA, PE_CEDIS, PE_COSTOU, PE_PRONOMBRE, PE_PROID, PE_CLIENTE ") 'Mod por CHV - 220302 - Agregué PE_FECHA al select/insert + +' starter.skmt.ExecNonQuery2("INSERT INTO") + p_promowhats.Visible = False + P_INF_GENERAL.Visible = True + c.Close + b_whats.Visible = False + Starter.skmt.ExecNonQuery("delete from HIST_CLIENTE_CANT_PROMOS where HCCP_CLIENTE IN (Select cuenta from cuentaa)") +End Sub + +Private Sub b_rechazapromo_Click + Starter.skmt.ExecNonQuery2("INSERT INTO HIST_PROMO_WHATS VALUES (?,?)", Array As Object(l_promowhats.Text, "PROMO RECHAZADA")) + p_promowhats.Visible = False + P_INF_GENERAL.Visible = True + b_whats.Visible = False +End Sub + +Private Sub p_pideGeoPass_Click +End Sub + +Private Sub b_geopass_Click + If et_geopass.Text = "KMTS1" Then + m_lat = Starter.lat_gps + m_lon = Starter.lon_gps + GPS_LocationChanged(Starter.ubicacionActual) + Starter.skmt.ExecNonQuery($"update kmt_info set CAT_CL_LAT = '${Starter.lat_gps}', CAT_CL_LONG = '${Starter.lon_gps}' where CAT_CL_CODIGO = '${Subs.traeCliente}'"$) + Else + Dim cmd As DBCommand + cmd.Initialize + cmd.Name = "select_geoPass" + cmd.Parameters = Array As Object(et_geopass.Text, Subs.traeAlmacen, Subs.traeRuta) + reqManager.ExecuteQuery(cmd , 0, "traeGeoPass") + Log($"${Starter.server}, ${et_geopass.Text}, ${Subs.traeAlmacen}, ${Subs.traeRuta}"$) + et_geopass.Text = "" + End If + b_noVenta.Visible = True + p_pideGeoPass.Visible = False + ime.HideKeyboard +' Log("Guardamos coords") +' LATITUD = Starter.lat_gps +' LONGITUD = Starter.lon_gps +' GPS_LocationChanged(Starter.ubicacionActual) +' Starter.skmt.ExecNonQuery($b_geopass"update kmt_info set CAT_CL_LAT = '${Starter.lat_gps}', CAT_CL_LONG = '${Starter.lon_gps}' where CAT_CL_CODIGO = '${Subs.traeCliente}'"$) +End Sub + +Private Sub l_ubicacion2_LongClick + If laDist > 49 Then + p_pideGeoPass.BringToFront + p_pideGeoPass.Visible = True + End If +End Sub + +Sub JobDone(Job As HttpJob) + If Job.Success = False Then +' ToastMessageShow("Error: " & Job.ErrorMessage, True) + LogColor("Error: " & Job.ErrorMessage, Colors.red) + Else + LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211110 + If Job.JobName = "DBRequest" Then + Dim result As DBResult = reqManager.HandleJob(Job) + If result.Tag = "traeGeoPass" Then 'query tag + Log("SIN REGISTROS " & result.Rows.Size) + If result.Rows.Size = 0 Then MsgboxAsync("Contraseña equivocada, por favor intente de nuevo.", "ATENCION") + For Each records() As Object In result.Rows +' For Each k As String In result.Columns.Keys +' Log(k & ": " & records(result.Columns.Get(k))) +' Next + Private permiso_geoPass As String = records(result.Columns.Get("'OK'")) + If permiso_geoPass = "OK" Then + m_lat = Starter.lat_gps + m_lon = Starter.lon_gps + GPS_LocationChanged(Starter.ubicacionActual) + Starter.skmt.ExecNonQuery($"update kmt_info set CAT_CL_LAT = '${Starter.lat_gps}', CAT_CL_LONG = '${Starter.lon_gps}' where CAT_CL_CODIGO = '${Subs.traeCliente}'"$) + End If + Next + End If + End If + End If + Job.Release +End Sub + +Private Sub BP_DOE_A_Click + c=Starter.skmt.ExecQuery("select ID_ALMACEN from CAT_ALMACEN") + If c.RowCount>0 Then + C.Position=0 + Id_Almacen = C.GetString("ID_ALMACEN") + End If + c.Close + DateTime.DateFormat = "MM/dd/yyyy" + sDate=DateTime.Date(DateTime.Now) + sTime=DateTime.Time(DateTime.Now) + c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa") + c.Position=0 + clie_id = c.GetString("CUENTA") + c=Starter.skmt.ExecQuery("select USUARIO from usuarioa") + c.Position=0 + usuario = c.GetString("USUARIO") + c.Close + Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO (PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_TIPO,PE_PRECIO2) SELECT PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_TIPO,PE_PRECIO2 FROM PEDIDO_DOE WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") + Starter.skmt.ExecNonQuery2("UPDATE PEDIDO SET PE_CEDIS = ?, PE_TIPO = ? WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As Object("DOE","DOE")) + + c=Starter.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, SUM(PE_COSTO_SIN) AS TOTAL_CLIE_SIN FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") + c.Position=0 + Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") + If logger Then LogColor($"Insertamos coordenadas en pedido: ${Starter.lon_gps}, ${Starter.lat_gps}"$, Colors.Magenta) + Starter.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT,PC_ALMACEN,PC_RUTA,PC_COSTO_SIN) VALUES (?,?,?,?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), Starter.lon_gps, Starter.lat_gps,Id_Almacen,Starter.rutaV,c.GetString("TOTAL_CLIE_SIN"))) + Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + c.Close + Starter.skmt.ExecNonQuery("delete from pedido_DOE where pe_cliente in (Select CUENTA from cuentaa)") + + p_doe.Visible = False +End Sub + +Private Sub BP_DOE_R_Click + Panel11.Visible = True + BP_DOE_A.Visible = False + BP_DOE_R.Visible = False +End Sub + +private Sub pedido_doe_muestra + ''' ESTO SE AGREGA PARA QUE SE VEA LOS CLIENTES DOE + C5=Starter.skmt.ExecQuery("select COUNT(*) AS CLIENTE_DOE from PEDIDO_DOE WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) ") + C5.Position = 0 + If C5.GetString("CLIENTE_DOE") >0 Then + p_doe.VISIBLE = True + C6=Starter.skmt.ExecQuery("select PE_PROID, PE_PRONOMBRE, PE_CANT, PE_COSTO_TOT from PEDIDO_DOE where PE_CLIENTE IN (Select CUENTA from cuentaa)") + LP_DOE.Clear + + If C6.RowCount>0 Then + For i=0 To C6.RowCount -1 + C6.Position=i + Dim label1 As Label + label1 = LP_DOE.TwoLinesLayout.Label + label1.TextSize = 14 + label1.TextColor = Colors.Black + Dim label2 As Label + label2 = LP_DOE.TwoLinesLayout.SecondLabel + label2.TextSize = 14 + label2.TextColor = Colors.Black + LP_DOE.AddTwoLines(C6.GetString("PE_PRONOMBRE"), " # " & C6.GetString("PE_CANT") & " TOTAL " & C6.GetString("PE_COSTO_TOT") ) + Next + End If + C6.Close + C6=Starter.skmt.ExecQuery("select SUM(PE_CANT) AS CANT, SUM(PE_COSTO_TOT) AS TOTAL from PEDIDO_DOE where PE_CLIENTE IN (Select CUENTA from cuentaa)") + C6.Position= 0 + L_DOE_TOTAL.Text = "TOTAL PEDIDO DOE :"& C6.GetString("TOTAL") & " No. PIEZAS: " & C6.GetString("CANT") + C6.Close + ''' FALTAN LOS BOTONES DE ACEPTAR Y RECHAZAR, INVENTAIRO ABORDO MODIFICAR PARA IMPRIMIR + End If + + C5.Close +End Sub + +Private Sub BP_DOE_R1_Click + BP_DOE_A.Visible = True + BP_DOE_R.Visible = True + + Panel11.Visible = False + p_doe.Visible = False + c=Starter.skmt.ExecQuery("select PE_PROID,PE_CANT, PE_TIPO FROM PEDIDO_DOE where pe_cliente in (Select CUENTA from cuentaa) ") + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + c.Position=i + Starter.skmt.ExecNonQuery2("update cat_gunaprod2 set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?", Array As Object(c.GetString("PE_CANT"),c.GetString("PE_PROID"))) + Next + End If +' Starter.skmt.ExecNonQuery("delete from pedido_cliente where pc_cliente in (Select CUENTA from cuentaa)") + Starter.skmt.ExecNonQuery("delete from pedido_DOE where pe_cliente in (Select CUENTA from cuentaa)") + p_doe.Visible = False +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..7d56304 --- /dev/null +++ b/B4A/C_Clientes.bas @@ -0,0 +1,287 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=11.5 +@EndOfDesignText@ +Sub Class_Globals + Private Root As B4XView 'ignore + Private xui As XUI 'ignore + '// Process Globals + Dim ruta As String + Dim q_buscar As String + Dim MAC_IMPRESORA As String + '// Globals + Dim c As Cursor + Dim c2 As Cursor + Dim s As Cursor + Dim ListView1 As ListView + Dim entro As String + Dim gest As Button + Dim lfila As Label + Dim busca As EditText + Dim colonia As String 'ignore + Private b_qr As Button + Private qr As QRCode + Dim sc As Zxing_scanner + Dim CODIGO As String + Private b_bdd As Button + Private SEMANA As String + Private B_IMP As Button + Dim logger As Boolean = True +End Sub + +'You can add more parameters here. +Public Sub Initialize As Object + Return Me +End Sub + +'This event will be called once, before the page becomes visible. +Private Sub B4XPage_Created (Root1 As B4XView) + Root = Root1 + 'load the layout to Root + Root.LoadLayout("Clientes") + entro ="2" + ruta = File.DirInternal + qr.initialize + c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("MACIMP")) + c.Position =0 + MAC_IMPRESORA = c.GetString("CAT_VA_VALOR") + Starter.MAC_IMPRESORA = MAC_IMPRESORA + If Not(Starter.Logger) Then logger = False +End Sub + +'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. + +Sub B4XPage_Appear + B_IMP.Visible = False +' If Logger Then Log(Me) +' If Logger Then LogColor("Ultima actividad guardada=" & Subs.traeUltimaActividadBD, Colors.Blue) +' If Subs.traeUltimaActividadBD <> "colonia" Then Subs.iniciaActividad(Subs.traeUltimaActividadBD) + c=Starter.skmt.ExecQuery2("select count(*) AS CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SEMANA")) + c.Position =0 + SEMANA = c.GetString("CUANTOS") + c.Close + If SEMANA > 0 Then + c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SEMANA")) + c.Position =0 + SEMANA = c.GetString("CAT_VA_VALOR") + c.Close + End If + b_bdd.Visible = True +' b_qr.Visible = True + busca.Text = "" + entro ="2" + colonia = 0 + c=Starter.skmt.ExecQuery2("select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO, CAT_CL_NUM_SERIEFISICO from kmt_info where CAT_CL_DIAS_VISITA = (SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?) and gestion = 0 and cat_cl_codigo not in (select pe_cliente from pedido) and cat_cl_codigo <> 0 AND CAT_CL_TIPO_RUTA IN (?,?) and CAT_CL_CODIGO not in (select NV_CLIENTE from NOVENTA) ORDER BY CAT_CL_NUM_SERIEFISICO", Array As String("DIA_VISITA",SEMANA, "SEMANAL")) + ListView1.Clear + lfila.Text = "NOMBRE" + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + c.Position=i + Dim label1 As Label + label1 = ListView1.TwoLinesLayout.Label + label1.TextSize = 14 + label1.TextColor = Colors.Black + Dim label2 As Label + label2 = ListView1.TwoLinesLayout.SecondLabel + label2.TextSize = 14 + label2.TextColor = Colors.Black + ListView1.AddTwoLines(c.GetString("CAT_CL_CODIGO"), c.GetString("CAT_CL_NUM_SERIEFISICO") & " " & c.GetString("CAT_CL_NOMBRE") ) + Next + End If + entro = "4" +End Sub + +Private Sub B4XPage_CloseRequest As ResumableSub + ' BACK key pressed + Subs.iniciaActividad("principal") +' B4XPages.ShowPage("Principal") + Return True +End Sub + +Sub ListView1_ItemClick (Position As Int, Value As Object) +' If Logger Then Log(Regex.Split("\.",Me)(Regex.Split("\.",Me).Length-1)) + Private Subrutina As Map =CreateMap("nombre":"ListView1_ItemClick", "param1":Position, "param2":Value) + Starter.sesion = CreateMap("actividad":Me, "sub":Subrutina) + If colonia = 0 Then + colonia = Value + End If + If entro = "2" Then + c2=Starter.skmt.ExecQuery2("select CAT_CL_CALLE, CAT_CL_COLONIA, count(*) as cuantos from kmt_info where gestion = 0 and CAT_CL_COLONIA = ? GROUP BY CAT_CL_CALLE, CAT_CL_COLONIA order by CAT_CL_CALLE ", Array As String(Value)) + ListView1.Clear + lfila.text = "Calle" + If c2.RowCount>0 Then + For i=0 To c2.RowCount -1 + c2.Position=i + ListView1.AddTwoLines(c2.GetString("CAT_CL_CALLE"),c2.GetString("cuantos") ) + Next + End If + entro = "3" + Else If entro = "3" Then + c2=Starter.skmt.ExecQuery2("select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO from kmt_info where gestion = 0 and CAT_CL_CALLE = ? AND CAT_CL_COLONIA = ? order by CAT_CL_NOMBRE ", Array As String(Value, colonia)) + ListView1.Clear + lfila.text = "Nombre" + If c2.RowCount>0 Then + For i=0 To c2.RowCount -1 + c2.Position=i + ListView1.AddTwoLines(c2.GetString("CAT_CL_CODIGO"), c2.GetString("CAT_CL_NOMBRE")) + Next + End If + entro = "4" + Else If entro = "4" Then + Starter.skmt.ExecNonQuery("delete from CUENTAA") + Starter.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(Value)) + Subs.iniciaActividad("Cliente") + End If +End Sub + +Sub Activity_KeyPress (key As Int) As Boolean 'ignore + ' BACK key pressed + If key=KeyCodes.KEYCODE_BACK Then + Subs.iniciaActividad("Principal") + Return False + 'End If + End If + ' Returning False signals the system to handle the key +End Sub + +Sub BUSCA_TextChanged (Old As String, New As String) + q_buscar = "%" & busca.Text & "%" + c2=Starter.skmt.ExecQuery2("select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO from kmt_info where (CAT_CL_NOMBRE like ? OR CAT_CL_CODIGO LIKE ?) and CAT_CL_DIAS_VISITA = (SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?) and gestion = 0 order by CAT_CL_NOMBRE ", Array As String(q_buscar,q_buscar,"DIA_VISITA")) + ListView1.Clear + lfila.text = "Nombre y Calle" + If c2.RowCount>0 Then + For i=0 To c2.RowCount -1 + c2.Position=i + Dim label1 As Label + label1 = ListView1.TwoLinesLayout.Label + label1.TextSize = 14 + label1.TextColor = Colors.Black + Dim label2 As Label + label2 = ListView1.TwoLinesLayout.SecondLabel + label2.TextSize = 14 + label2.TextColor = Colors.Black + ListView1.AddTwoLines(c2.GetString("CAT_CL_CODIGO"), c2.GetString("CAT_CL_NOMBRE") &" CALLE: "& c2.GetString("CAT_CL_CALLE")) + Next + End If + entro = "4" + c2.Close +End Sub + +Sub b_qr_Click + Dim scan_width As Int + Dim scan_height As Int + scan_width = 400 + scan_height = 400 + sc.BeginScan("sc","CODIGO CLIENTE",scan_width,scan_height) +End Sub + +Sub sc_result(atype As String,Values As String) + 'If Logger Then Log("Type : " & atype) + 'If Logger Then Log("Value : " & Values) + CODIGO = Values + c2=Starter.skmt.ExecQuery2("select COUNT(*) AS ENCONTRADO from kmt_info where CAT_CL_NUM_SERIEFISICO = ? order by CAT_CL_NOMBRE ", Array As String(CODIGO)) + c2.Position =0 + If c2.GetString("ENCONTRADO") > 0 Then + s=Starter.skmt.ExecQuery2("select CAT_CL_CODIGO from kmt_info where CAT_CL_NUM_SERIEFISICO = ? order by CAT_CL_NOMBRE ", Array As String(CODIGO)) + s.Position =0 + Starter.skmt.ExecNonQuery("delete from CUENTAA") + Starter.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(s.GetString("CAT_CL_CODIGO"))) + s.Close + b_qr.Visible = False + Subs.iniciaActividad("Cliente") + Else + Msgbox("CODIGO " & CODIGO & " NO ENCONTRADO","AVISO") 'ignore + End If +End Sub + +Sub sc_noScan + If logger Then Log("nothing returned from the scan !!!!!") +End Sub + +Sub calc_ean_checksum(number As String) As String 'this has now become redundant as I am only interested in QR Codes + Dim i As Int +' Dim cO As Char + Dim soma As Int + Dim n As Int + Dim digit As Float + soma = 0 + For i=0 To number.Length - 1 + digit = number.SubString2(i,i+1) + n= digit * ((i Mod 2) * 2 + 1) + soma=soma+n + Next + Return number & ( ( 10 - ( soma Mod 10 )) Mod 10 ) +End Sub + +Sub b_bdd_Click + q_buscar = "%" & busca.Text & "%" + c2=Starter.skmt.ExecQuery2("select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO from kmt_info where (CAT_CL_NOMBRE like ? OR CAT_CL_CODIGO LIKE ?) and gestion = 0 order by CAT_CL_NOMBRE ", Array As String(q_buscar,q_buscar)) + ListView1.Clear + lfila.text = "Nombre y Calle" + If c2.RowCount>0 Then + For i=0 To c2.RowCount -1 + c2.Position=i + Dim label1 As Label + label1 = ListView1.TwoLinesLayout.Label + label1.TextSize = 14 + label1.TextColor = Colors.Black + Dim label2 As Label + label2 = ListView1.TwoLinesLayout.SecondLabel + label2.TextSize = 14 + label2.TextColor = Colors.Black + ListView1.AddTwoLines(c2.GetString("CAT_CL_CODIGO"), c2.GetString("CAT_CL_NOMBRE") &" CALLE: "& c2.GetString("CAT_CL_CALLE")) + Next + End If + entro = "4" + c2.Close +End Sub + +'Imprimimos clientes. +Sub B_IMP_Click +' If Printer1.IsInitialized And Printer1.IsConnected = False Then +' Printer1.Connect +' ToastMessageShow("Conectando impresora ...", False) +' End If +' Try +' c=Starter.skmt.ExecQuery2("select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO, CAT_CL_NUM_SERIEFISICO from kmt_info where CAT_CL_DIAS_VISITA = (SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?) and gestion = 0 and cat_cl_codigo not in (select pe_cliente from pedido) and cat_cl_codigo <> 0 AND CAT_CL_TIPO_RUTA IN (?,?) ORDER BY CAT_CL_NUM_SERIEFISICO", Array As String("DIA_VISITA",SEMANA, "SEMANAL")) + '' c=skmt.ExecQuery("select CAT_CL_NOMBRE, CAT_CL_CALLE, CAT_CL_CODIGO,CAT_CL_DIAS_VISITA from kmt_info where gestion = 0 and cat_cl_codigo <> 0 ORDER BY CAT_CL_CODIGO") +' If c.RowCount>0 Then +' For i=0 To c.RowCount -1 +' c.Position=i +' Printer1.WriteString("ID. " & c.GetString("CAT_CL_CODIGO") & CRLF) +' Printer1.WriteString("Nombre " & c.GetString("CAT_CL_NUM_SERIEFISICO") & " " & c.GetString("CAT_CL_NOMBRE") & CRLF) +' Printer1.WriteString("------------------------------" & CRLF) +' Next +' End If +' Catch +' Log(LastException) +' End Try +End Sub + +Sub revisaImpresora (mode As String) 'ignore +' If Not(Starter.btAdmin.IsEnabled) Then Starter.btAdmin.Enable 'Si no esta prendido el BT lo prendemos. +' If Not(Printer1.IsInitialized) Then Printer1.Initialize(Me, "Printer1") 'Si no esta inicializada la inicializamos. +' If Not(Starter.revisandoImpresora) Then Return +' Starter.revisandoImpresora = True +' If mode = "BT" Then + '' If Logger Then LogColor("reiniciamos BT", Colors.Blue) + '' Starter.btAdmin.Disable + '' Sleep(500) + '' Starter.btAdmin.Enable + '' Sleep(1000) + '' If Starter.btAdmin.IsEnabled Then revisaImpresora("") +' Else + '' ToastMessageShow("Conectando impresora.", False) +' If Not(Printer1.IsConnected) Then 'Si no estamos conectados, nos conectamos. +' If Logger Then Log("Connect") +' Printer1.Connect +' Else 'Si ya estamos conectados +' If Logger Then Log("Disc-Conn") +' Printer1.DisConnect +' Sleep(1000) +' Printer1.Connect +' End If +' End If +End Sub \ No newline at end of file diff --git a/B4A/C_Foto.bas b/B4A/C_Foto.bas new file mode 100644 index 0000000..cb0f9fb --- /dev/null +++ b/B4A/C_Foto.bas @@ -0,0 +1,184 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=11.5 +@EndOfDesignText@ +Sub Class_Globals + Private Root As B4XView 'ignore + Private xui As XUI 'ignore + '//Process Globals + Dim ruta As String + Dim g As GPS + Private frontCamera As Boolean = False + Dim quien_llamo As String + Dim foto_g () As Byte + Dim foto_g1 () As Byte + Dim foto_g2 () As Byte + Dim foto_g3 () As Byte + Dim foto_g4 () As Byte + '//Globals + Dim btnTakePicture As Button + Dim Panel1 As Panel + Dim c As Cursor + Dim cuenta As String + Dim lat_gps As String + Dim lon_gps As String + Private camEx As CameraExClass + Private i_foto As ImageView + Private b_guardar As Button +End Sub + +'You can add more parameters here. +Public Sub Initialize As Object + Return Me +End Sub + +'This event will be called once, before the page becomes visible. +Private Sub B4XPage_Created (Root1 As B4XView) + Root = Root1 + 'load the layout to Root + Root.LoadLayout("foto") + Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_CAMERA) + Wait For Activity_PermissionResult (Permission As String, Result As Boolean) + ruta = File.DirInternal +End Sub + +'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. + + +Sub Camera1_Ready (Success As Boolean) + If Success Then + ' camEx.SetJpegQuality(90) + ' camEx.CommitParameters + Dim ps As CameraSize + ps.Width =640'480 '1280 + ps.Height =480'360 '960 + camEx.SetPictureSize(ps.Width, ps.Height) + camEx.CommitParameters + Try + camEx.StartPreview + Catch + camEx.Release + Subs.iniciaActividad("CHECKLIST_AUTO") + End Try + ' Dim ps As CameraSize + ' ps.Width =640 '1280 + ' ps.Height =480 '960 + ' camEx.SetPictureSize(ps.Width, ps.Height) + ' camEx.CommitParameters + + ' Log(camEx.GetPreviewSize) + 'Msgbox(camEx.GetPreviewSize,"aviso") 'ignore + Else + Subs.iniciaActividad("CHECKLIST_AUTO") + 'ToastMessageShow("Cannot open camera.", True) + End If +End Sub + +Sub Activity_Resume + i_foto.Visible = False +' If g.GPSEnabled=False Then +' ToastMessageShow("Habilitar el GPS", True) +' StartActivity(g.LocationSettingsIntent) +' Else +' g.Start(0,0) +' End If + InitializeCamera + btnTakePicture.Enabled = True + b_guardar.Enabled = False +End Sub + +Sub Activity_Pause (UserClosed As Boolean) + camEx.Release +End Sub + +Sub GPS_LocationChanged (Location1 As Location) +' lat_gps=Location1.ConvertToSeconds(Location1.Latitude) +' lon_gps=Location1.ConvertToSeconds(Location1.Longitude) +' 'btnTakePicture.Enabled = True +' 's.ExecNonQuery2("INSERT INTO HIST_GPS (HGDATE,HGLAT, HGLON) VALUES(?,?,?) ", Array As Object (sDate & sTime, lat_gps, lon_gps)) +End Sub + +Private Sub InitializeCamera + camEx.Initialize(Panel1, frontCamera, Me, "Camera1") + frontCamera = camEx.Front +End Sub + +Sub Camera1_PictureTaken (Data() As Byte) + btnTakePicture.Enabled = True + Dim filename As String = "2.jpg" + Dim dir As String = File.DirRootExternal + camEx.SavePictureToFile(Data, dir, filename) + camEx.StartPreview 'restart preview + i_foto.Visible = True + i_foto.Bitmap = LoadBitmap(File.DirRootExternal, "2.jpg") + If B4XPages.MainPage.cliente.TOMAR_FOTO = 1 Then + Dim InputStream1 As InputStream + InputStream1 = File.OpenInput(File.DirRootExternal, "2.jpg") + Dim OutputStream1 As OutputStream + OutputStream1.InitializeToBytesArray(500) + File.Copy2(InputStream1, OutputStream1) + foto_g = OutputStream1.ToBytesArray + End If + b_guardar.Enabled = True + camEx.Release + InitializeCamera + btnTakePicture.Enabled = True +End Sub + +Sub Activity_KeyPress (key As Int) As Boolean + ' BACK key pressed + If key=KeyCodes.KEYCODE_BACK Then + ' I want to capture the key here so I return True + B4XPages.ShowPage("Principal") + 'Return True + End If + ' Returning False signals the system to handle the key + Return False +End Sub + +Sub b_guardar_Click + camEx.Release + 'If quien_llamo = "1" Then + Try + If quien_llamo = "1" Then + File.Copy(File.DirRootExternal, "2.jpg",File.DirRootExternal, "FOTO1.jpg") + Subs.iniciaActividad("CHECKLIST_AUTO") + else if quien_llamo = "2" Then + File.Copy(File.DirRootExternal, "2.jpg",File.DirRootExternal, "FOTO2.jpg") + Subs.iniciaActividad("CHECKLIST_AUTO") + else if quien_llamo = "3" Then + File.Copy(File.DirRootExternal, "2.jpg",File.DirRootExternal, "FOTO3.jpg") + Subs.iniciaActividad("CHECKLIST_AUTO") + else if quien_llamo = "4" Then + File.Copy(File.DirRootExternal, "2.jpg",File.DirRootExternal, "FOTO4.jpg") + Subs.iniciaActividad("CHECKLIST_AUTO") + End If + If B4XPages.MainPage.cliente.TOMAR_FOTO = 1 Then + c=Starter.skmt.ExecQuery("select cuenta from cuentaa") + c.Position = 0 + cuenta = c.GetString("CUENTA") + c.Close + Starter.skmt.ExecNonQuery2("INSERT INTO HIST_FOTOS (HF_FOTO, HF_CUENTA, HF_IDENCUESTA) VALUES(?,?,?) ", Array As Object (foto_g,cuenta, B4XPages.MainPage.cliente.id_encuesta )) + Subs.iniciaActividad("fila") + End If + Catch + Msgbox("ERROR EN FOTO","") 'ignore + If B4XPages.MainPage.cliente.TOMAR_FOTO = 1 Then + Subs.iniciaActividad("fila") + Else + Subs.iniciaActividad("CHECKLIST_AUTO") + End If + End Try +End Sub + +Sub btnTakePicture_Click + btnTakePicture.Enabled = False + Dim ps As CameraSize + ps.Width =640'480 '1280 + ps.Height =480'360 '960 + camEx.SetPictureSize(ps.Width, ps.Height) + camEx.CommitParameters + camEx.TakePicture +End Sub \ No newline at end of file diff --git a/B4A/C_Historico.bas b/B4A/C_Historico.bas new file mode 100644 index 0000000..7b6c252 --- /dev/null +++ b/B4A/C_Historico.bas @@ -0,0 +1,135 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=11.5 +@EndOfDesignText@ +Sub Class_Globals + Private Root As B4XView 'ignore + Private xui As XUI 'ignore + '//Process Globals + Dim g As GPS + Dim clie_id As String + Dim sDate,sTime As String + Dim usuario As String + '//Globals + Dim c As Cursor + Dim ruta As String + Dim Regresar As Button + Dim ListView1 As ListView + Dim L_CANT As Label + Dim L_TOTAL As Label + Dim borra As Button + Dim Existe As String + Dim result As String + Dim lat_gps, lon_gps As String + Private Titulo As Label + Private b_desc As Button + Private ListView2 As ListView + Private B_RMI As Button +End Sub + +'You can add more parameters here. +Public Sub Initialize As Object + Return Me +End Sub + +'This event will be called once, before the page becomes visible. +Private Sub B4XPage_Created (Root1 As B4XView) + Root = Root1 + 'load the layout to Root + ruta = File.DirInternal + Root.LoadLayout("historico") + B_RMI.Visible = True + borra.Visible = False + Titulo.Text = "Acumulado" + b_desc.Visible = False +End Sub + +'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. + +Sub B4XPage_Appear + L_CANT.Text ="" + L_TOTAL.Text="" + c=Starter.skmt.ExecQuery("select count(*) as EXISTE from HIST_VENTAS WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa)") + C.Position=0 + Existe = C.GetString("EXISTE") + C.Close + c=Starter.skmt.ExecQuery("select HVD_CLIENTE,HVD_PRONOMBRE,HVD_CANT,HVD_COSTO_TOT, HVD_FECHA from HIST_VENTAS WHERE HVD_CLIENTE IN (Select CUENTA from cuentaa) order by HVD_FECHA asc") + ListView1.Clear + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + c.Position=i + Dim label1 As Label + label1 = ListView1.TwoLinesLayout.Label + label1.TextSize = 15 + label1.TextColor = Colors.Black + Dim label2 As Label + label2 = ListView1.TwoLinesLayout.SecondLabel + label2.TextSize = 10 + label2.TextColor = Colors.Black + ListView1.AddTwoLines(c.GetString("HVD_PRONOMBRE"),"Cantidad #"& c.GetString("HVD_CANT")& " SubTotal $"& c.GetString("HVD_COSTO_TOT")& " FECHA " &c.GetString("HVD_FECHA") ) + Next + End If + If Existe <> 0 Then + c=Starter.skmt.ExecQuery("select SUM(HVD_CANT) AS PC_NOART, SUM(HVD_COSTO_TOT) AS PC_MONTO from HIST_VENTAS where HVD_CLIENTE in (Select CUENTA from cuentaa)") + C.Position=0 + L_CANT.Text = c.GetString("PC_NOART") + L_TOTAL.Text = c.GetString("PC_MONTO") + End If +End Sub + +Sub GPS_LocationChanged (Location1 As Location) +' lat_gps=Location1.ConvertToSeconds(Location1.Latitude) +' lon_gps=Location1.ConvertToSeconds(Location1.Longitude) +End Sub + +Sub Regresar_Click + B_RMI.Visible = False + Subs.iniciaActividad("Cliente") +End Sub + +Sub B4XPage_CloseRequest As ResumableSub + Log("Vamos a Cliente") +' BACK key pressed +' Return True To close, False To cancel + Regresar_Click +' Return True + Return False +End Sub + +Sub ListView2_ItemClick (Position As Int, Value As Object) + ListView2.Visible = False + ListView1.Visible = True +End Sub + +Sub ListView1_ItemClick (Position As Int, Value As Object) + ListView2.Visible = True + ListView1.Visible = False + Dim label1 As Label + For i=0 To 20 + label1 = ListView2.SingleLineLayout.Label + label1.TextSize = 15 + label1.TextColor = Colors.Black + ListView2.AddSingleLine(i) + Next +End Sub + +Sub B_RMI_Click + c=Starter.skmt.ExecQuery("select HR_CLIENTE,HR_PRONOMBRE,HR_CANT from HIST_RMI WHERE HR_CLIENTE IN (Select CUENTA from cuentaa) order by HR_PRONOMBRE") + ListView1.Clear + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + c.Position=i + Dim label1 As Label + label1 = ListView1.TwoLinesLayout.Label + label1.TextSize = 15 + label1.TextColor = Colors.Black + Dim label2 As Label + label2 = ListView1.TwoLinesLayout.SecondLabel + label2.TextSize = 10 + label2.TextColor = Colors.Black + ListView1.AddTwoLines(c.GetString("HR_PRONOMBRE"),"Cantidad #"& c.GetString("HR_CANT") ) + Next + End If +End Sub \ No newline at end of file diff --git a/B4A/C_Mapas.bas b/B4A/C_Mapas.bas new file mode 100644 index 0000000..93d800e --- /dev/null +++ b/B4A/C_Mapas.bas @@ -0,0 +1,138 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=11.5 +@EndOfDesignText@ +Sub Class_Globals + Private Root As B4XView 'ignore + Private xui As XUI 'ignore + '//Process Globals + Dim GPS As GPS + Dim rp As RuntimePermissions + Dim ruta As String + '//Globals + Private gmap As GoogleMap + Private MapFragment1 As MapFragment + Dim Latitud As Double = 0 + Dim Longitud As Double = 0 + Dim Lat2 As Double = 0 + Dim Lon2 As Double = 0 + Dim p1, p2 As Location + Dim Distance As Float + Dim boton1 As Button + Dim c As Cursor + Dim latmarker As String + Dim longmarker As String + Private l_long As Label + Private l_lat As Label + Private NOMBRE_TIENDA As String + Dim logger As Boolean = True +End Sub + +'You can add more parameters here. +Public Sub Initialize As Object + Return Me +End Sub + +'This event will be called once, before the page becomes visible. +Private Sub B4XPage_Created (Root1 As B4XView) + Root = Root1 + 'load the layout to Root + Root.LoadLayout("mapas") + If MapFragment1.IsGooglePlayServicesAvailable = False Then + ToastMessageShow("Please install Google Play Services.", True) + End If + 'Boton velocidad' + boton1.Initialize(0) + boton1.Text = 0 &" "&"km/h" + boton1.TextColor = Colors.Red + boton1.TextSize = 15 + Root.AddView(boton1, 40%x, 5dip, 25%x, 40dip) +End Sub + +'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. + +Sub B4XPage_Appear + GPS.Initialize("GPS") + Log(1) + rp.CheckAndRequest(rp.PERMISSION_ACCESS_FINE_LOCATION) + Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean) + gmap.MyLocationEnabled = Result + Log(2) + Log(gmap.MyLocationEnabled) + If GPS.GPSEnabled = False Then + ToastMessageShow("Debe Activar el GPS del Equipo.", True) + StartActivity(GPS.LocationSettingsIntent) + Else + GPS.Start(0, 0) + End If + latmarker = B4XPages.MainPage.cliente.LATITUD + longmarker = B4XPages.MainPage.cliente.LONGITUD + NOMBRE_TIENDA = B4XPages.MainPage.cliente.NOMBRE + If logger Then Log($"lat=${latmarker}, lon=${longmarker}"$) + If logger Then Log(gmap) + Log($"${gmap.IsInitialized} And ${gmap.MyLocationEnabled}"$) + If gmap.IsInitialized And gmap.MyLocationEnabled Then + gmap.Clear + MapFragment1_Ready + End If + If Not(Starter.Logger) Then logger = False +End Sub + +Sub B4XPage_CloseRequest As ResumableSub + Log("Vamos a Cliente") +' BACK key pressed +' Return True To close, False To cancel + Subs.iniciaActividad("Cliente") +' Return True + Return False +End Sub + +Sub MapFragment1_Ready + LogColor("MapReady", Colors.red) + gmap = MapFragment1.GetMap +' rp.CheckAndRequest(rp.PERMISSION_ACCESS_FINE_LOCATION) +' Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean) +' gmap.MyLocationEnabled = Result + gmap.Clear + + Dim JavaMapsObject As JavaObject + JavaMapsObject = gmap.GetUiSettings + JavaMapsObject.RunMethod("setMapToolbarEnabled", Array As Object(True)) + + 'marcadores + If latmarker = "null" Or latmarker = Null Or latmarker = "" Then 'Zocalo + latmarker = "19.432568527069805" + longmarker = "-99.13335030112772" + End If + If logger Then Log($"lat=${latmarker}, lon=${longmarker}"$) + Dim marcador1 As Marker = gmap.AddMarker(latmarker, longmarker, "TIENDA") + marcador1.Snippet = B4XPages.MainPage.cliente.NOMBRE + 'Tienda 1 + + 'posicion inicial + Dim aa As CameraPosition + aa.Initialize(latmarker, longmarker,15)''' RECOMENDABLE CAMBIAR A 10 SI ES MAS DE 1 MARCADOR + gmap.AnimateCamera(aa) +End Sub + +Sub GPS_LocationChanged (Parametro As Location) + Dim sp As Int + sp = Ceil(Parametro.Speed * 3.6) + boton1.Text = sp &" "&"km/h" + Latitud = Parametro.Latitude + Longitud = Parametro.Longitude + p2.Initialize2(Latitud,Longitud) + p1.Initialize2(Lat2, Lon2) + Distance = p1.DistanceTo(p2) +End Sub + +Sub Activity_Pause (UserClosed As Boolean) + GPS.Stop +End Sub + +Sub reg_Click + Subs.iniciaActividad("Cliente") +End Sub + diff --git a/B4A/C_NoVenta.bas b/B4A/C_NoVenta.bas new file mode 100644 index 0000000..81e3c8c --- /dev/null +++ b/B4A/C_NoVenta.bas @@ -0,0 +1,127 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=11.5 +@EndOfDesignText@ +Sub Class_Globals + Private Root As B4XView 'ignore + Private xui As XUI 'ignore + Dim g As GPS + Dim ruta As String +' Dim skmt As SQL + Dim c As Cursor + Dim t3 As Timer + '// Globals + Dim CANCELA As Button + Dim GUARDA As Button + Dim r_1 As RadioButton + Dim r_2 As RadioButton + Dim r_3 As RadioButton + Dim e_comm As EditText + Dim motivo As String + Dim cuenta As String + Dim usuario As String + Dim sDate,sTime As String + Dim lat_gps, lon_gps As String + Dim CUANTOS As String + Dim r_4 As RadioButton + Private ImageView1 As ImageView + Private ImageView2 As ImageView +End Sub + +'You can add more parameters here. +Public Sub Initialize As Object + Return Me +End Sub + +'This event will be called once, before the page becomes visible. +Private Sub B4XPage_Created (Root1 As B4XView) + Root = Root1 + 'load the layout to Root + Root.LoadLayout("noventa") + ruta = File.DirInternal +End Sub + +'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. + +Sub B4XPage_Appear + e_comm.Text="" + lat_gps = 0 + lon_gps = 0 + res_gps +End Sub + +Private Sub B4XPage_CloseRequest As ResumableSub + ' BACK key pressed + Subs.iniciaActividad("Cliente") +' B4XPages.ShowPage("Principal") + Return True +End Sub + +Sub res_gps + GUARDA.Visible = False + t3.Initialize("T3", 5000) ' 1000 = 1 second + t3.Enabled = True + Wait For t3_tick + GUARDA.Visible = True +End Sub + +Sub GPS_LocationChanged (Location1 As Location) +' lat_gps=Location1.ConvertToSeconds(Location1.Latitude) +' lon_gps=Location1.ConvertToSeconds(Location1.Longitude) +End Sub + +Sub CANCELA_Click + Subs.iniciaActividad("Cliente") +End Sub + +Sub GUARDA_Click + If r_1.Checked Then + motivo = "CERRADO" + Else If r_2.Checked Then + motivo = "NO COMPRA" + Else If r_3.Checked Then + motivo = "CON PRODUCTO" + Else + motivo = "NO ESTA EL ENCARGADO" + End If + DateTime.DateFormat = "MM/dd/yyyy" + sDate=DateTime.Date(DateTime.Now) + sTime=DateTime.Time(DateTime.Now) + c=Starter.skmt.ExecQuery("select CUENTA from cuentaa") + c.Position = 0 + cuenta = c.GetString("CUENTA") + c=Starter.skmt.ExecQuery("select usuario from usuarioa") + c.Position = 0 + usuario = c.GetString("USUARIO") + c=Starter.skmt.ExecQuery("select PE_PROID,PE_CANT FROM PEDIDO where pe_cliente in (Select CUENTA from cuentaa) ") + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + c.Position=i + Starter.skmt.ExecNonQuery2("update cat_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 + + If lat_gps = 0 Then + c=Starter.skmt.ExecQuery("select count(*) as CUANTOS from HIST_GPS") + c.Position =0 + CUANTOS = c.GetString("CUANTOS") + c.Close + If CUANTOS > 0 Then + c=Starter.skmt.ExecQuery("SELECT HGLAT as HGLAT, HGLON as HGLON FROM HIST_GPS") + c.Position=0 + lon_gps = c.GetString("HGLON") + lat_gps = c.GetString("HGLAT") + c.Close + End If + End If + + Starter.skmt.ExecNonQuery("delete from pedido_cliente where pc_cliente in (Select CUENTA from cuentaa)") + Starter.skmt.ExecNonQuery("delete from pedido where pe_cliente in (Select CUENTA from cuentaa)") + + Starter.skmt.ExecNonQuery2("INSERT INTO NOVENTA (NV_CLIENTE,NV_FECHA,NV_USER,NV_MOTIVO,NV_COMM,NV_LAT,NV_LON) VALUES(?,?,?,?,?,?,?) ", Array As Object (cuenta,sDate & sTime, usuario, motivo,e_comm.text,Starter.lat_gps,Starter.lon_gps)) + Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 3 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + Subs.iniciaActividad("Principal") +' B4XPages.ShowPage("Principal") +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..de7b92c --- /dev/null +++ b/B4A/C_Nota.bas @@ -0,0 +1,429 @@ +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 clie_id As String + Dim sDate,sTime As String + Dim usuario As String + '//Globals + Dim c As Cursor + Dim C1 As Cursor + Dim ruta As String + Dim Regresar As Button + Dim ListView1 As ListView + Dim L_CANT As Label + Dim L_TOTAL As Label + Dim borra As Button + Dim Existe As String + Dim result As String + Dim lat_gps, lon_gps As String + Private Titulo As Label + Private b_desc As Button + Dim DESCUENTO As String + Dim folio As String + Dim TIPO As String + Private CAMBIOS As String + Dim logger As Boolean = True + Dim list_prodsPedido As List + Private clv_pedidos As CustomListView + Private p_pedido As Panel + Private l_pedido As Label +End Sub + +'You can add more parameters here. +Public Sub Initialize As Object + Return Me +End Sub + +'This event will be called once, before the page becomes visible. +Private Sub B4XPage_Created (Root1 As B4XView) + If Not(Starter.Logger) Then logger = False + Root = Root1 + 'load the layout to Root + ruta = File.DirInternal + Root.LoadLayout("nota") + borra.Visible = True + Titulo.Text = "Pedido Actual" + Starter.skmt.ExecNonQuery("update pedido set pe_folio = 0 where pe_folio is null") + c=Starter.skmt.ExecQuery("select count(*) as EXISTE from pedido_cliente WHERE pc_cliente IN (Select CUENTA from cuentaa)") + C.Position=0 + Existe = C.GetString("EXISTE") + C.Close +' c=Starter.skmt.ExecQuery("select PE_PRONOMBRE,PE_COSTO_TOT, PE_CANT, PE_FOLIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_PRONOMBRE asc") +' ListView1.Clear +' ListView1.TwoLinesLayout.ItemHeight = 90dip +' If c.RowCount>0 Then +' For i=0 To c.RowCount -1 +' c.Position=i +' Dim label1 As Label +' label1 = ListView1.TwoLinesLayout.Label +'' label1.Color = Colors.Cyan +' label1.TextSize = 15 +' label1.TextColor = Colors.Black +'' label1.Height = 50dip +' Dim label2 As Label +' label2 = ListView1.TwoLinesLayout.SecondLabel +' label2.TextSize = 12 +' label2.TextColor = Colors.Black +'' label2.Color = Colors.green +' 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 + list_prodsPedido.Initialize + Log("list_prodsPedido.Initialize") + If Existe <> 0 Then + c=Starter.skmt.ExecQuery("select pc_noart, pc_monto from pedido_cliente where pc_cliente in (Select CUENTA from cuentaa)") + C.Position=0 + L_CANT.Text = c.GetString("PC_NOART") + L_TOTAL.Text = c.GetString("PC_MONTO") + End If +End Sub + +'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. + +Sub B4XPage_Appear + c=Starter.skmt.ExecQuery("select count(*) as CUANTOS from kmt_info where (impresion = 1 or cat_cl_codigo in (select ci_cuenta from cliente_impreso)) and CAT_CL_CODIGO in (Select CUENTA from cuentaa)") + c.Position = 0 + If logger Then Log($"Impreso: ${c.GetString("CUANTOS")}"$) + If c.GetString("CUANTOS") > 0 Then + borra.Visible = False + Else + borra.Visible = True + End If + If Subs.clienteActual = "0" Then borra.Visible = True 'Si el cliente actual es "abordo" entonces SIEMPRE lo dejamos modificar la venta. + c.Close + L_CANT.Text ="" + L_TOTAL.Text="" + Starter.skmt.ExecNonQuery("update pedido set pe_folio = 0 where pe_folio is null") + c=Starter.skmt.ExecQuery("select count(*) as EXISTE from pedido_cliente WHERE pc_cliente IN (Select CUENTA from cuentaa)") + C.Position=0 + Existe = C.GetString("EXISTE") + C.Close + c=Starter.skmt.ExecQuery("select PE_PRONOMBRE, PE_COSTO_TOT, PE_CANT, PE_FOLIO, PE_CEDIS, PE_PROID FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_PRONOMBRE asc") + Private cs As CSBuilder + ListView1.Clear + clv_pedidos.Clear + ListView1.TwoLinesLayout.ItemHeight = 90dip + list_prodsPedido.Clear + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + cs.Initialize + c.Position=i + Private txtPromo As String = "" + If Not(IsNumber(c.GetString("PE_CEDIS"))) Then txtPromo = "P - " + If c.GetString("PE_CEDIS") = "DUR" Then txtPromo = "C - " + Dim label1 As Label + label1 = ListView1.TwoLinesLayout.Label + label1.TextSize = 15 + label1.Height = 30dip + label1.TextColor = Colors.Black +' label1.Height = 50dip + Dim label2 As Label + label2 = ListView1.TwoLinesLayout.SecondLabel + label2.TextSize = 12 + label2.TextColor = Colors.Black + Private textColor As Int = Colors.black + If Not(IsNumber(c.GetString("PE_CEDIS"))) Then textColor = Colors.RGB(210,105,30) 'Si es promo, cambiamos el color del texto. + If c.GetString("PE_CEDIS") = "DUR" Then textColor = Colors.Red 'Si es promo, cambiamos el color del texto. +' ListView1.AddTwoLines(c.GetString("PE_PRONOMBRE"), cs.Color(textColor).append(txtPromo).Append("Cantidad #" & c.GetString("PE_CANT") & " SubTotal $" & c.GetString("PE_COSTO_TOT") & " Folio " & c.GetString("PE_FOLIO")).PopAll) + clv_pedidos.Add(CreateListItemPedidos(c.GetString("PE_PRONOMBRE"), textColor, txtPromo, c.GetString("PE_CANT"), c.GetString("PE_COSTO_TOT"), c.GetString("PE_FOLIO")), c.GetString("PE_PRONOMBRE")) + list_prodsPedido.Add(CreateMap("prodNom":c.GetString("PE_PRONOMBRE"), "cedis":c.GetString("PE_CEDIS"), "prodId": c.GetString("PE_PROID"), "cant": c.GetString("PE_CANT"))) + folio = c.GetString("PE_FOLIO") + Next + End If + If Existe <> 0 Then + c=Starter.skmt.ExecQuery("select sum(pe_cant) AS CANTIDAD, sum(pe_costo_tot) AS MONTO from pedido where PE_CEDIS <> PE_PROID and pe_cliente in (Select CUENTA from cuentaa)") + C.Position=0 + L_CANT.Text = c.GetString("CANTIDAD") + L_TOTAL.Text = c.GetString("MONTO") + c.Close + c=Starter.skmt.ExecQuery("select SUM(IFNULL(PE_DESC,0)) AS DESCUENTO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") + c.Position=0 + b_desc.Visible = False + End If + c=Starter.skmt.ExecQuery("select count(*) As CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") + c.Position = 0 + If c.GetString("CUANTOS") = 0 Then + folio = 0 + Else + C1=Starter.skmt.ExecQuery("SELECT SUM(ifnull(PE_FOLIO,0)) AS FOLIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") + C1.Position = 0 + folio = C1.GetString("FOLIO") + If C1.GetString("FOLIO") > 0 Then + folio = 100 + End If + End If + c.Close +End Sub + +Sub CreateListItemPedidos(Texto1 As String, txtColor As Int, txtPromo As String, cantp As String, costoTotP As String, folioP As String) As Panel 'ignore + Dim p As B4XView = xui.CreatePanel("") + Dim su As StringUtils + Dim cs As CSBuilder + cs.Initialize + p.LoadLayout("pedidoItem") + l_pedido.Text = cs.append(Texto1).Append(CRLF).Color(txtColor).append(txtPromo).Append("Cantidad #" & cantp & " SubTotal $" & costoTotP & " Folio " & folioP).PopAll + Dim alto As Int = su.MeasureMultilineTextHeight(l_pedido, l_pedido.Text) + p.SetLayoutAnimated(0, 0, 0, clv_pedidos.AsView.Width, alto + 20) +' i_prod.Bitmap = img + Return p +End Sub + +Sub Activity_Pause (UserClosed As Boolean) + +End Sub + +Sub GPS_LocationChanged (Location1 As Location) +' lat_gps=Location1.ConvertToSeconds(Location1.Latitude) +' lon_gps=Location1.ConvertToSeconds(Location1.Longitude) +End Sub + +Sub Regresar_Click + Subs.iniciaActividad("Cliente") +End Sub + +Private Sub B4XPage_CloseRequest As ResumableSub + ' BACK key pressed + Subs.iniciaActividad("Cliente") +' B4XPages.ShowPage("Principal") + Return True +End Sub + +Sub borra_Click + If folio = "0" Or Subs.clienteActual = "0" Then 'Si el folio es 0 o el cliente actual es "abordo", los deja borrar. - Mod por CHV 220512 + result = Msgbox2("Seguro que desea borrar el pedido?","Cancelar pedido", "Si", "", "No", LoadBitmap(File.DirAssets,"alert2.png")) 'ignore + If result = DialogResponse.POSITIVE Then + c=Starter.skmt.ExecQuery("select PE_PROID,PE_CANT, PE_TIPO FROM PEDIDO where pe_cliente in (Select CUENTA from cuentaa) ") + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + c.Position=i + TIPO = c.GetString("PE_TIPO") + Starter.skmt.ExecNonQuery2($"update ${Subs.traeTablaProds(TIPO)} set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?"$, Array As Object(c.GetString("PE_CANT"),c.GetString("PE_PROID"))) + Next + End If + Starter.skmt.ExecNonQuery("delete from pedido_cliente where pc_cliente in (Select CUENTA from cuentaa)") + Starter.skmt.ExecNonQuery("delete from pedido where pe_cliente in (Select CUENTA from cuentaa)") + Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + + B4XPages.MainPage.productos.prodsMap.Initialize 'inicializamos mapa de productos para que noaparezcan como vendidos en la lista + B4XPages.MainPage.promos.promosMap.Initialize +' Log("Llamamos LlenaProdsLL") + If B4XPages.MainPage.productos.PCLV.IsInitialized Then B4XPages.MainPage.productos.LlenaProdsLL(Null, Null) + + B4XPage_Appear + End If + Else + Msgbox("CLIENTE YA SE TRANSMITIO, FAVOR DE LLAMAR A SOPORTE PARA ASISTENCIA","AVISO") 'ignore + End If +End Sub + +Sub ListView1_ItemLongClick (Position As Int, Value As Object) +' Private thisLog As Boolean = False +' c=Starter.skmt.ExecQuery("select count(*) as CUANTOS from CLIENTE_IMPRESO where CI_CUENTA in (Select CUENTA from cuentaa)") +' c.Position = 0 +' If thisLog Then Log("lista prods="&list_prodsPedido.Get(Position)) +' Private m As Map = list_prodsPedido.Get(Position) +' If c.GetString("CUANTOS") = 0 Or Subs.clienteActual = "0" Then 'Si la venta no está impresa o es abordo entonces continuamos ... +' c=Starter.skmt.ExecQuery2("select count(*) as CUANTOS FROM PEDIDO WHERE PE_CEDIS = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("DUR")) +' c.Position = 0 +' CAMBIOS = c.GetString("CUANTOS") +' c.Close +' c=Starter.skmt.ExecQuery2("select PE_PRONOMBRE,PE_COSTO_TOT, PE_CANT, PE_FOLIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) AND PE_PRONOMBRE = ? order by PE_PRONOMBRE asc", Array As String(Value) ) +' c.Position = 0 +' If c.GetString("PE_FOLIO") = "0" Or Subs.clienteActual = "0" Then +' result = Msgbox2("Seguro que desea borrar este articulo?","Borrar Articulo", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore +' If result = DialogResponse.POSITIVE Then +' Private prod As Cursor=Starter.skmt.ExecQuery2("select PE_PROID, PE_CANT, PE_CEDIS FROM PEDIDO where pe_pronombre = ? and pe_cliente in (Select CUENTA from cuentaa) ", Array As String(Value)) +' prod.Position=0 +' If thisLog Then Log("m2= " & m) +' c.Close +' If thisLog Then Log($"Buscamos: ${Value}, ${m.Get("cedis")}"$) +' c=Starter.skmt.ExecQuery2("select count(*) AS CUANTOS from cat_gunaprod2 where CAT_GP_ID in (select pe_cedis from pedido where pe_pronombre = ? and pe_cedis = ? 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, m.Get("cedis"))) +' c.Position=0 +' If c.GetString("CUANTOS") > 0 Then +' If thisLog Then Log($"Borramos de PROMO ${Value}"$) +' Private pPromos As Cursor = Starter.skmt.ExecQuery($"select pe_proid, pe_cant from pedido where pe_cedis = '${m.Get("cedis")}'"$) +' For tp = 0 To pPromos.RowCount - 1 +' pPromos.Position = tp +' If thisLog Then Log($"SUMAMOS ${pPromos.GetString("PE_CANT")} a ${pPromos.GetString("PE_PROID")} "$) +' Starter.skmt.ExecNonQuery($"update ${Subs.traeTablaProds(Starter.tipov)} set cat_gp_almacen = cat_gp_almacen + ${pPromos.GetString("PE_CANT")} where cat_gp_id = '${pPromos.Getstring("PE_PROID")}'"$) +' Next +' Starter.skmt.ExecNonQuery2("delete from pedido where pe_cedis in (select pe_cedis from pedido where PE_CEDIS = ? and pe_pronombre = ?) and pe_cliente in (Select CUENTA from cuentaa)", Array As Object(m.Get("cedis"), Value)) +' Else +' If thisLog Then Log($"SUMAMOS ${m.get("cant")} a ${m.get("prodId")} "$) +' Starter.skmt.ExecNonQuery2($"update ${Subs.traeTablaProds(Starter.tipov)} set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?"$, Array As Object(m.get("cant"), m.get("prodId"))) +' If thisLog Then Log($"BORRAMOS ${Value}, ${m.Get("cedis")}"$) +' Starter.skmt.ExecNonQuery2("delete from pedido where pe_pronombre = ? and pe_cedis = ? and pe_cant = ? and pe_cliente in (Select CUENTA from cuentaa)", Array As Object(Value, m.Get("cedis"), m.Get("cant"))) +' End If +' prod.Close +' DateTime.DateFormat = "MM/dd/yyyy" +' sDate=DateTime.Date(DateTime.Now) +' sTime=DateTime.Time(DateTime.Now) +' c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa") +' c.Position=0 +' clie_id = c.GetString("CUENTA") +' c=Starter.skmt.ExecQuery("select USUARIO from usuarioa") +' c.Position=0 +' usuario = c.GetString("USUARIO") +' c=Starter.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, count(*) as CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") +' c.Position=0 +' If c.GetString("CUANTOS") > 0 Then +' +' Log($"============== TOTAL = ${c.GetString("TOTAL_CLIE")}"$) +' If c.GetString("TOTAL_CLIE") < 1 Then +' Starter.skmt.ExecNonQuery("delete from pedido where PE_PRONOMBRE like 'CAMBIO%' and PE_CLIENTE In (select cuenta from cuentaa)"$) +' End If +' +' Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") +' If thisLog Then LogColor($"Insertamos coordenadas en pedido: ${Starter.lon_gps}, ${Starter.lat_gps}"$, Colors.Magenta) +' Starter.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT) VALUES (?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), Starter.lon_gps, Starter.lat_gps)) +' Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") +' Else +' Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") +' Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)") +' End If +' If thisLog Then Log("Llamamos LlenaProdsLL") +' If B4XPages.MainPage.productos.PCLV.IsInitialized Then B4XPages.MainPage.productos.LlenaProdsLL(Null, Null) +' B4XPage_Appear +' End If +' Else +' Msgbox("CLIENTE YA SE TRANSMITIO, FAVOR DE LLAMAR A SOPORTE PARA ASISTENCIA","AVISO") 'ignore +' End If +' Else +' ToastMessageShow("Esta venta ya esta impresa, no se puede editar ni borrar.", False) +' End If +End Sub + +Sub b_desc_Click + If DESCUENTO = "MENOS" Then + DateTime.DateFormat = "MM/dd/yyyy" + sDate=DateTime.Date(DateTime.Now) + sTime=DateTime.Time(DateTime.Now) + c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa") + c.Position=0 + clie_id = c.GetString("CUENTA") + c.Close + c=Starter.skmt.ExecQuery("select USUARIO from usuarioa") + c.Position=0 + usuario = c.GetString("USUARIO") + c.Close + result = Msgbox2("Seguro que desea dar descuento del 5%?","Dar descuento", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore + If result = DialogResponse.POSITIVE Then + Starter.skmt.ExecNonQuery("UPDATE pedido SET PE_COSTO_TOT = PE_COSTO_TOT * .95, PE_DESC = 5 WHERE PE_CLIENTE In (select cuenta from cuentaa)") + c=Starter.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, count(*) as CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") + c.Position=0 + Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") + If logger Then LogColor($"Insertamos coordenadas en pedido: ${Starter.lon_gps}, ${Starter.lat_gps}"$, Colors.Magenta) + Starter.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT) VALUES (?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), Starter.lon_gps, Starter.lat_gps)) + c.Close + B4XPage_Appear + End If + ELSE IF DESCUENTO = "MAS" Then + DateTime.DateFormat = "MM/dd/yyyy" + sDate=DateTime.Date(DateTime.Now) + sTime=DateTime.Time(DateTime.Now) + c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa") + c.Position=0 + clie_id = c.GetString("CUENTA") + c.Close + c=Starter.skmt.ExecQuery("select USUARIO from usuarioa") + c.Position=0 + usuario = c.GetString("USUARIO") + c.Close + result = Msgbox2("Seguro que desea CANCELAR el descuento?","Cancelar descuento", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore + If result = DialogResponse.POSITIVE Then + Starter.skmt.ExecNonQuery("UPDATE pedido SET PE_COSTO_TOT = PE_COSTO_TOT / .95, PE_DESC = 0 WHERE PE_CLIENTE In (select cuenta from cuentaa)") + c=Starter.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, count(*) as CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") + c.Position=0 + Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") + If logger Then LogColor($"Insertamos coordenadas en pedido: ${Starter.lon_gps}, ${Starter.lat_gps}"$, Colors.Magenta) + Starter.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT) VALUES (?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), Starter.lon_gps, Starter.lat_gps)) + c.Close + B4XPage_Appear + End If + End If +End Sub + +Private Sub clv_pedidos_ItemLongClick (position As Int, Value As Object) + Private thisLog As Boolean = False + c=Starter.skmt.ExecQuery("select count(*) as CUANTOS from CLIENTE_IMPRESO where CI_CUENTA in (Select CUENTA from cuentaa)") + c.Position = 0 + If thisLog Then Log("lista prods="&list_prodsPedido.Get(position)) + Private m As Map = list_prodsPedido.Get(position) + If c.GetString("CUANTOS") = 0 Or Subs.clienteActual = "0" Then 'Si la venta no está impresa o es abordo entonces continuamos ... + c=Starter.skmt.ExecQuery2("select count(*) as CUANTOS FROM PEDIDO WHERE PE_CEDIS = ? AND PE_CLIENTE IN (Select CUENTA from cuentaa)", Array As String("DUR")) + c.Position = 0 + CAMBIOS = c.GetString("CUANTOS") + c.Close + c=Starter.skmt.ExecQuery2("select PE_PRONOMBRE,PE_COSTO_TOT, PE_CANT, PE_FOLIO FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) AND PE_PRONOMBRE = ? order by PE_PRONOMBRE asc", Array As String(Value) ) + c.Position = 0 + If c.GetString("PE_FOLIO") = "0" Or Subs.clienteActual = "0" Then + result = Msgbox2("Seguro que desea borrar este articulo?","Borrar Articulo", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore + If result = DialogResponse.POSITIVE Then + Private prod As Cursor=Starter.skmt.ExecQuery2("select PE_PROID, PE_CANT, PE_CEDIS FROM PEDIDO where pe_pronombre = ? and pe_cliente in (Select CUENTA from cuentaa) ", Array As String(Value)) + prod.Position=0 + If thisLog Then Log("m2= " & m) + c.Close + If thisLog Then Log($"Buscamos: ${Value}, ${m.Get("cedis")}"$) + c=Starter.skmt.ExecQuery2("select count(*) AS CUANTOS from cat_gunaprod2 where CAT_GP_ID in (select pe_cedis from pedido where pe_pronombre = ? and pe_cedis = ? 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, m.Get("cedis"))) + c.Position=0 + If c.GetString("CUANTOS") > 0 Then + If thisLog Then Log($"Borramos de PROMO ${Value}"$) + Private pPromos As Cursor = Starter.skmt.ExecQuery($"select pe_proid, pe_cant from pedido where pe_cedis = '${m.Get("cedis")}'"$) + For tp = 0 To pPromos.RowCount - 1 + pPromos.Position = tp + If thisLog Then Log($"SUMAMOS ${pPromos.GetString("PE_CANT")} a ${pPromos.GetString("PE_PROID")} "$) + Starter.skmt.ExecNonQuery($"update ${Subs.traeTablaProds(Starter.tipov)} set cat_gp_almacen = cat_gp_almacen + ${pPromos.GetString("PE_CANT")} where cat_gp_id = '${pPromos.Getstring("PE_PROID")}'"$) + Next + Starter.skmt.ExecNonQuery2("delete from pedido where pe_cedis in (select pe_cedis from pedido where PE_CEDIS = ? and pe_pronombre = ?) and pe_cliente in (Select CUENTA from cuentaa)", Array As Object(m.Get("cedis"), Value)) + Else + If thisLog Then Log($"SUMAMOS ${m.get("cant")} a ${m.get("prodId")} "$) + Starter.skmt.ExecNonQuery2($"update ${Subs.traeTablaProds(Starter.tipov)} set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?"$, Array As Object(m.get("cant"), m.get("prodId"))) + If thisLog Then Log($"BORRAMOS ${Value}, ${m.Get("cedis")}"$) + Starter.skmt.ExecNonQuery2("delete from pedido where pe_pronombre = ? and pe_cedis = ? and pe_cant = ? and pe_cliente in (Select CUENTA from cuentaa)", Array As Object(Value, m.Get("cedis"), m.Get("cant"))) + End If + prod.Close + DateTime.DateFormat = "MM/dd/yyyy" + sDate=DateTime.Date(DateTime.Now) + sTime=DateTime.Time(DateTime.Now) + c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa") + c.Position=0 + clie_id = c.GetString("CUENTA") + c=Starter.skmt.ExecQuery("select USUARIO from usuarioa") + c.Position=0 + usuario = c.GetString("USUARIO") + c=Starter.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, count(*) as CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") + c.Position=0 + If c.GetString("CUANTOS") > 0 Then + + Log($"============== TOTAL = ${c.GetString("TOTAL_CLIE")}"$) + If c.GetString("TOTAL_CLIE") < 1 Then + Starter.skmt.ExecNonQuery("delete from pedido where PE_PRONOMBRE like 'CAMBIO%' and PE_CLIENTE In (select cuenta from cuentaa)"$) + End If + + Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") + If thisLog Then LogColor($"Insertamos coordenadas en pedido: ${Starter.lon_gps}, ${Starter.lat_gps}"$, Colors.Magenta) + Starter.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT) VALUES (?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), Starter.lon_gps, Starter.lat_gps)) + Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + Else + Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") + Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + End If + If thisLog Then Log("Llamamos LlenaProdsLL") + If B4XPages.MainPage.productos.PCLV.IsInitialized Then B4XPages.MainPage.productos.LlenaProdsLL(Null, Null) + B4XPage_Appear + End If + Else + Msgbox("CLIENTE YA SE TRANSMITIO, FAVOR DE LLAMAR A SOPORTE PARA ASISTENCIA","AVISO") 'ignore + End If + Else + ToastMessageShow("Esta venta ya esta impresa, no se puede editar ni borrar.", False) + End If +End Sub \ No newline at end of file diff --git a/B4A/C_NuevoCliente.bas b/B4A/C_NuevoCliente.bas new file mode 100644 index 0000000..6231053 --- /dev/null +++ b/B4A/C_NuevoCliente.bas @@ -0,0 +1,95 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=11.5 +@EndOfDesignText@ +Sub Class_Globals + Private Root As B4XView 'ignore + Private xui As XUI 'ignore + '//Process Globals + Dim g As GPS + Dim ruta As String + Dim c As Cursor + Dim C2 As Cursor + '//Globals + Dim cuenta As String + Dim usuario As String + Dim sDate,sTime As String + Dim lat_gps, lon_gps As String + Dim no_cliente As String + Dim no_ruta As String + Dim r_4 As RadioButton + Dim E_NOMBRE As EditText + Dim ALMACEN As String + Dim DIA_VISITA As String + Private b_guardar As Button + Private b_cancelar 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("nuevocliente") + ruta = File.DirInternal +End Sub + +'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. + +Sub B4XPage_Appear + b_guardar.Enabled = False + b_guardar.Text = "Sin Ubicación ..." + E_NOMBRE.Text = "" + CallSubDelayed(Tracker, "StartFLPSmall") +End Sub + +Sub GPS_LocationChanged (Location1 As Location) +' lat_gps=Location1.ConvertToSeconds(Location1.Latitude) +' lon_gps=Location1.ConvertToSeconds(Location1.Longitude) + b_guardar.Enabled = True + b_guardar.Text = "Guardar" +End Sub + +Sub b_cancelar_Click + Subs.iniciaActividad("Principal") +' B4XPages.ShowPage("Principal") +End Sub + +Sub b_guardar_Click + If E_NOMBRE.Text = "" Then + ToastMessageShow("Se tiene que nombrar la tienda para continuar" , True) + Else + DateTime.DateFormat = "MM/dd/yyyy" + DateTime.Timeformat = "HHmmss" + sDate=DateTime.Date(DateTime.Now) + sTime=DateTime.Time(DateTime.Now) + c=Starter.skmt.ExecQuery("select CAT_CL_RUTA, CAT_CL_DIAS_VISITA FROM kmt_info WHERE CAT_CL_DIAS_VISITA = (SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = 'DIA_VISITA')") + If c.RowCount > 0 Then + c.Position=0 + no_ruta= c.GetString("CAT_CL_RUTA") + DIA_VISITA=c.GetString("CAT_CL_DIAS_VISITA") + 'Aqui creamos manualmente la hora con el separador de los 2 puntos porque en algunas versiones de android no respeta el formato "Timeformat = 'HH:mm:ss'" + Private hora As String = sTime.SubString2(0,2) + Private mins As String = sTime.SubString2(2,4) + Private segs As String = sTime.SubString(4) + Private sTime2 As String = hora&":"&mins&":"&segs + Log("////////////// sTime: "&sTime&" ////////////////") + no_cliente= "N" & sTime2 & no_ruta + c.Close + C2=Starter.skmt.ExecQuery("SELECT ID_ALMACEN FROM CAT_ALMACEN") + C2.Position=0 + ALMACEN= C2.GetString("ID_ALMACEN") + C2.Close + Starter.skmt.ExecNonQuery2("INSERT INTO kmt_info(CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_DIAS_VISITA,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO,CAT_CL_BCREDITO, gestion,CAT_CL_BFACTURA,IMPRESION) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,0,0,0,1000000,0) ",Array As Object (no_cliente,no_ruta, E_NOMBRE.Text,DIA_VISITA,"new","null","null","null","null","null","null","null","null","NULL","NULL","null","0", Starter.lon_gps, Starter.lat_gps)) + Starter.skmt.ExecNonQuery("delete from CUENTAA") + Starter.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(no_cliente)) + Subs.iniciaActividad("cliente") + End If + End If +End Sub diff --git a/B4A/C_Pedidos.bas b/B4A/C_Pedidos.bas new file mode 100644 index 0000000..36fa8d1 --- /dev/null +++ b/B4A/C_Pedidos.bas @@ -0,0 +1,24 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=11.5 +@EndOfDesignText@ +Sub Class_Globals + Private Root As B4XView 'ignore + Private xui As XUI 'ignore +End Sub + +'You can add more parameters here. +Public Sub Initialize As Object + Return Me +End Sub + +'This event will be called once, before the page becomes visible. +Private Sub B4XPage_Created (Root1 As B4XView) + Root = Root1 + 'load the layout to Root + +End Sub + +'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. \ No newline at end of file diff --git a/B4A/C_Principal.bas b/B4A/C_Principal.bas new file mode 100644 index 0000000..110e9a5 --- /dev/null +++ b/B4A/C_Principal.bas @@ -0,0 +1,3026 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=11.5 +@EndOfDesignText@ +Sub Class_Globals + '//Process_Globas + Private Root As B4XView 'ignore + Private xui As XUI 'ignore + Dim reqManager As DBRequestManager + Dim t1 As Timer + Dim t2 As Timer + Private t3 As Timer + Dim inicioContador As String + + '//Globals + Dim trabajar As Button + Dim Cursor_check As Cursor + Dim c As Cursor + Dim d As Cursor + Dim b As Cursor + Dim e As Cursor + Dim f As Cursor + Dim DDD As Cursor + Dim cargar As Button + Dim foto1() As Byte + Dim foto2() As Byte + Dim foto3() As Byte + Dim foto4() As Byte + Dim usuario As String + Dim connecta As Button + Dim conn As String + Dim Subir As Button + Dim cmd As DBCommand + Dim COUNT_CLIE As Int + Dim fecha As String + Dim drop As Double + Dim efectiva As Double + Dim L_MONTOD As Label + Dim l_cuantosc As Label + Dim l_drop As Label + Dim l_efectiva As Label + Dim l_ctast As Label + Dim BUSCA As Button + Dim Cuantos As String + Dim l_cuantosn As Label + Dim e_ruta As EditText + Dim l_porvisitar As Label + Dim b_mapa As Button + Dim l_ruta As Label + Dim ALMACEN As String + Private img2 As ImageView + Dim Listo1 As String + Dim Listo2 As String + Dim Listo3 As String + Dim Listo4 As String + Dim Listo5 As String + Dim EJECUTANDO As String + Dim res As String + Dim inve As String + Dim cuantos_pedidosc As String + Dim cuantos_pedido As String + Dim cuantos_noventa As String + Dim datos_iguales As String + Dim p As PhoneId + Dim imei As String + Dim Today As String + Private inv As Button + Private P1 As Panel + Private CLAVE As EditText + Private B_OK_PAS As Button + Dim PASO As String + Private USUARIO1 As EditText + Dim connecta1 As Double + Dim armafolio As String + Private NUEVO As Button + Private S_CC As Label + Private S_CP As Label + Private S_CH As Label + Private PB2 As ProgressBar + Private PB1 As ProgressBar + Private L_P_1 As Label + Private L_P_2 As Label + Private L_P_3 As Label + Private CARGA As String + Private PORCENTAJE As Int + Private P_RESUMEN As Panel + Private B_OK_RES As Button + Private Resumen As Button + Private L_CUANTOST As Label + Private img3 As ImageView + Private ImageView3 As ImageView + Private ImageView5 As ImageView + Private L_TICKPROM As Label + Private MARCASQ As String + Private B_PROXIMA As Button + Private l_monto_a As Label + Private ImageView9 As ImageView + Private L_MONTO_R As Label + Dim PERFIL As String + Dim NUMERO_PEDIDO As String + Private l_cambios As Label + Dim l_monto_ks As Label + Dim l_monto_kp As Label + Dim l_monto_k As Label + Private Cuantos As String + Dim cmp20 As Serial + Dim printer As TextWriter + Dim PairedDevices As Map + Dim TAMANO As Int + Dim ESPACIO As Int + Dim BLANCO As String + Dim sDate,sTime As String + Dim PASA_IMP As String + Dim s As Cursor + Private B_IMP As Button + Private l_monto_c1 As Label + Private l_monto_c2 As Label + Private l_monto_c3 As Label + Private B_BOLETA As Button + Private B_MAPA_RUTA As Button + Private Panel5 As Panel + Private L_CUOTA1 As Label + Private L_CUOTA2 As Label + Private L_CUOTA3 As Label + Private L_CUOTA4 As Label + Private L_CUOTA5 As Label + Private L_CUOTA6 As Label + Private L_META1 As Label + Private L_META2 As Label + Private L_META3 As Label + Private L_META4 As Label + Private L_META5 As Label + Private L_META6 As Label + Private B_CUOATA_C As Button + Private b_cuotas As Button + Private Panel1 As Panel + Private Panel2 As Panel + Dim ENVIADA As String + Dim PORENVIAR As String + Private Btn_CheckList As Button + Dim Cedis_Check As String + Private TIEMPO As String + Private RUTA1 As Label + Private L_ABORDO As Label + Private bcarga1 As String + Private bcarga2 As String + Private bcarga3 As String + Private contador_env As String + Private contador_strem As String + Private ruta_valida As String + Private PNL_ACCESO As Panel + Private Panel7 As Panel + Private L_SUPLENCIA As Label + Private E_RUTA2 As EditText + Private Label4 As Label + Private SEMANA As String + Private ImageView1 As ImageView + Dim DIA_VISITA As String + +' Para el PDFViewer + Dim pdf As PdfiumCore + Private PDFView1 As PDFView + Private btnFirst As Button + Private btnPrev As Button + Private lblPages As Label + Private btnNext As Button + Private btnLast As Button + Private glPages As Int + Private p_pdfViewer As Panel + Private pdfViewerActivo As Boolean + Private p_controles_pdf As Panel + Private pdfURL As String + Private l_2 As Label + Dim cartaPorteLista As Boolean + Private l_downloadPDF As Label + Private ProgressBarPDF As ProgressBar + Private p_downloadPDF As Panel + Private p_progress1 As Panel + Private l_porcentaje As Label + Private detenerLoop As Boolean = False + Dim logger As Boolean = True +End Sub + +'You can add more parameters here. +Public Sub Initialize As Object + Return Me +End Sub + +'This event will be called once, before the page becomes visible. +Private Sub B4XPage_Created (Root1 As B4XView) + If Not(Starter.Logger) Then logger = False + Root = Root1 + 'load the layout to Root + Root.LoadLayout("principal") + EJECUTANDO=1 + Dim ruta As String + img2.Visible =False + ruta = File.DirInternal + DateTime.DateFormat = "MM/dd/yyyy" + fecha=DateTime.Date(DateTime.Now) + c=Starter.skmt.ExecQuery2("select CAT_CO_CONFIGURACION from CAT_CODIGOS where CAT_CO_PONDERACION =1 AND CAT_CO_ACCION = ?", Array As String("SERVER")) + c.Position =0 + Starter.server = c.GetString("CAT_CO_CONFIGURACION") + c.Close + b=Starter.skmt.ExecQuery("Select count(*) as CUANTOS from pedido_cliente") + b.Position=0 + Cuantos = b.GetString("CUANTOS") + d=Starter.skmt.ExecQuery("select count(*) as TOTAL_VISITAR from kmt_info where gestion = 0") + D.Position=0 + b.Close + e=Starter.skmt.ExecQuery("select count(*) as POR_VISITAR from kmt_info") + e.Position=0 + f=Starter.skmt.ExecQuery("select count(*) as CAT_CL_RUTA from kmt_info") + f.Position=0 + l_ruta.Text = f.GetString("CAT_CL_RUTA") + f.Close + If l_ruta.Text = 0 Then + l_ruta.Text =0 + Else + f=Starter.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info") + f.Position=0 + l_ruta.Text = f.GetString("CAT_CL_RUTA") + RUTA1.Text = l_ruta.TEXT + f.Close + End If + If Cuantos = 0 Then + L_MONTOD.Text =0 + l_cuantosc.Text = 0 + l_cuantosn.Text = 0 + drop = 0 + l_drop.Text = 0 + efectiva = 0 + l_efectiva.text =0 + l_ctast.Text = d.GetString("TOTAL_VISITAR") + ' l_porvisitar.Text = e.GetString("POR_VISITAR") + Else + c=Starter.skmt.ExecQuery("select sum(pc_monto) as MONTO_DIA, count(pc_cliente) AS CLIENTES_DIA from pedido_cliente ") + b=Starter.skmt.ExecQuery("select count(*) as CUANTOS from noventa") + 'where pc_fecha = ?", Array As String(fecha) + C.Position=0 + b.Position=0 + L_MONTOD.Text = c.GetString("MONTO_DIA") + l_cuantosc.Text = c.GetString("CLIENTES_DIA") + l_cuantosn.Text = b.GetString("CUANTOS") + drop = c.GetString("MONTO_DIA") / c.GetString("CLIENTES_DIA") + l_drop.Text = Round2(drop,2) + efectiva = c.GetString("CLIENTES_DIA") / e.GetString("POR_VISITAR") + l_efectiva.text = Round2(efectiva*100,2) + l_ctast.Text = d.GetString("TOTAL_VISITAR") + 'l_porvisitar.Text = e.GetString("POR_VISITAR") + End If +End Sub + +'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. + +Sub B4XPage_Appear + If Subs.traeUltimaActividadBD <> "principal" Then Subs.iniciaActividad(Subs.traeUltimaActividadBD) + Starter.btAdmin.Initialize("BlueTeeth") + If Not(Starter.btAdmin.IsEnabled) Then Starter.btAdmin.Enable + e_ruta.Enabled = True + Starter.rutaV = l_ruta.Text + c=Starter.skmt.ExecQuery2("select count(*) as CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SERVER")) + c.Position =0 + If c.GetString("CUANTOS") = 0 Then + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("SERVER", Starter.server)) + Else + c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SERVER")) + c.Position =0 + Starter.server = c.GetString("CAT_VA_VALOR") + End If + c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("FECHA")) + If c.RowCount > 0 Then + c.Position = 0 + Starter.FECHA_HOY = c.GetString("CAT_VA_VALOR") + End If + reqManager.Initialize(Me, Starter.server) + c=Starter.skmt.ExecQuery2("select count(*) AS CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SEMANA")) + c.Position =0 + SEMANA = c.GetString("CUANTOS") + c.Close + If SEMANA > 0 Then + c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SEMANA")) + c.Position =0 + SEMANA = c.GetString("CAT_VA_VALOR") + c.Close + End If + c.Close + c=Starter.skmt.ExecQuery2("select count(*) as CUANTOS from kmt_info where CAT_CL_DIAS_VISITA = (SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?) and gestion = 0 and cat_cl_codigo <> 0 AND CAT_CL_TIPO_RUTA IN (?,?) ORDER BY CAT_CL_NUM_SERIEFISICO", Array As String("DIA_VISITA",SEMANA, "SEMANAL")) + c.Position = 0 + Starter.clientesTotal = c.GetString("CUANTOS") + l_porvisitar.Text = Starter.clientesTotal + PASO = 0 + If EJECUTANDO =0 Then + Listo1 = 0 + Listo2 = 0 + Listo3 = 0 + Listo4 = 0 + Listo5 = 0 + inve = 0 + img2.Visible =False + End If + DateTime.DateFormat = "MM/dd/yyyy" + fecha=DateTime.Date(DateTime.Now) + b=Starter.skmt.ExecQuery("Select count(*) as CUANTOS from pedido_cliente where pc_cliente <> 0") + b.Position=0 + Cuantos = b.GetString("CUANTOS") +' If Starter.marcaCel <> "LGE" Then ToastMessageShow(Cuantos , True) + d=Starter.skmt.ExecQuery2("select count(*) as TOTAL_VISITAR from kmt_info where gestion = 0 and cat_cl_codigo <> 0 AND CAT_CL_DIAS_VISITA = (SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?)", Array As String("DIA_VISITA")) + D.Position=0 + b.Close + e=Starter.skmt.ExecQuery2("select count(*) as POR_VISITAR from kmt_info where cat_cl_codigo <> 0 and CAT_CL_DIAS_VISITA = (SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?) ", Array As String("DIA_VISITA")) + e.Position=0 + f=Starter.skmt.ExecQuery("select count(*) as CAT_CL_RUTA from kmt_info where cat_cl_codigo <> 0") + f.Position=0 + l_ruta.Text = f.GetString("CAT_CL_RUTA") + f.Close + If l_ruta.Text = 0 Then + l_ruta.Text =0 + Else + f=Starter.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info") + f.Position=0 + l_ruta.Text = f.GetString("CAT_CL_RUTA") + f.Close + End If + c=Starter.skmt.ExecQuery("select usuario from usuarioa") + c.Position = 0 + usuario = c.GetString("USUARIO") + Starter.usuario = usuario + c.Close + c=Starter.skmt.ExecQuery("select ID_ALMACEN from CAT_ALMACEN") + C.Position =0 + ALMACEN = C.GetString("ID_ALMACEN") + C.Close + Cursor_check = Starter.skmt.ExecQuery("select count(*) as CUANTOS from TMP_INSPECCION_AUTO_DIARIA where tmp_auto_kilometraje <> '' ") + Cursor_check.Position = 0 + Cedis_Check = Cursor_check.GetString("CUANTOS") + + If Not(File.Exists(File.DirInternal,"FOTO1.jpg")) Or _ + Not(File.Exists(File.DirInternal,"FOTO2.jpg")) Or _ + Not(File.Exists(File.DirInternal,"FOTO3.jpg")) Or _ + Not(File.Exists(File.DirInternal,"FOTO4.jpg")) Then + If Not(File.Exists(File.DirInternal,"FOTO1.jpg")) Then Log("Falta foto1") + If Not(File.Exists(File.DirInternal,"FOTO2.jpg")) Then Log("Falta foto2") + If Not(File.Exists(File.DirInternal,"FOTO3.jpg")) Then Log("Falta foto3") + If Not(File.Exists(File.DirInternal,"FOTO4.jpg")) Then Log("Falta foto4") + Cedis_Check = 0 + End If + If Cedis_Check = 0 And l_ruta.Text <> 0 Then + Btn_CheckList.Visible = True + B_MAPA_RUTA.Visible = False + Else + ' PONER EN FALSE + Btn_CheckList.Visible = False + B_MAPA_RUTA.Visible = True + If usuario = "JOSELUIS" Then Btn_CheckList.Visible = True 'Mod por CHV - 211125 + End If + contador_strem = 0 + contador_env = 0 + E_RUTA2.Visible = False + L_SUPLENCIA.Visible = False + Label4.Visible = False + Starter.montoActual = L_MONTOD.Text + Starter.clientesventa = l_cuantosc.Text + Starter.clientesvisitados = l_porvisitar.TEXT + Starter.ALMACEN = ALMACEN + Starter.rutapreventa = l_ruta.text + CallSub(Starter, "ENVIA_ULTIMA_GPS") + c.Close +' Subs.guardaUltimaActividadBD("principal") +End Sub + +Sub trabajar_Click + 'CallSubDelayed(gestion,"gestion") + 'Mod por CHV para que si no se ha hecho el checklist no permita la venta - 211125 + c=Starter.skmt.ExecQuery("select 'TMP_AUTO_FECHA ' from TMP_INSPECCION_AUTO_DIARIA where tmp_auto_kilometraje <> ''") + If c.RowCount > 0 Then +' If logger Then Log("Si hay checklist") + Else +' If logger Then Log("NO hay checklist") + Msgbox("No se ha realizado aún el 'Checklist' del vehículo, por favor completelo antes de realizar una venta.", "FALTA EL CHECKLIST") 'ignore + Return + End If + c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("MARCAS")) + c.Position =0 + If c.RowCount > 0 Then + MARCASQ = c.GetString("CAT_VA_VALOR") + c.Close + Starter.skmt.ExecNonQuery("delete from CAT_GUNAPROD WHERE CAT_GP_CLASIF NOT IN (" & MARCASQ &")" ) + Starter.skmt.ExecNonQuery("delete from CAT_GUNAPROD WHERE CAT_GP_ID IN (SELECT CAT_DP_ID FROM CAT_DETALLES_PAQ WHERE CAT_DP_IDPROD NOT IN (SELECT CAT_GP_ID FROM CAT_GUNAPROD))") + Subs.iniciaActividad("Clientes") +' B4XPages.ShowPage("Clientes") + Else + If Starter.marcaCel <> "LGE" Then ToastMessageShow("No hay marcas en la base de datos ... ya se cargo ruta??", True) + End If +End Sub + +Sub Subir_Click + CARGA = "SUBIR" +' P1.Visible = True + trabajar.Visible = False + B_PROXIMA.Visible =False + NUEVO.Visible =False + BUSCA.Visible=False + connecta.Visible=False + Subir.Visible=False + cargar.Visible=False + L_P_1.Visible = False + S_CC.Visible = False + L_P_3.Visible = False + S_CH.Visible = False + PB1.Visible = False + Resumen.Visible= False + L_P_2.Text = "Envio de Pedidos" + 'L_P_3.Text = "Envio de Pedidos" + 'S_CH.Text = "EN PROCESO" + S_CP.Text = "EN PROCESO" + PB1.Progress = 0 + PB2.Progress = 0 + contador_env = 0 + contador_strem = 0 + e_ruta.Text = ruta_valida + PASO = 1 + 'End If + If PASO = 1 Then + c=Starter.skmt.ExecQuery("select CAT_CL_CODIGO, CAT_CL_RUTA from kmt_info") + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + c.Position=i + Starter.skmt.ExecNonQuery2("update PEDIDO set PE_RUTA = ? where PE_CLIENTE = ? ", Array As Object(c.GetString("CAT_CL_RUTA"),c.GetString("CAT_CL_CODIGO"))) + Next + End If + c=Starter.skmt.ExecQuery2("SELECT HE_CUANTOS, HE_FECHA FROM HIST_ENVIOS WHERE HE_TIPO = ?", Array As String("PEDIDO")) + c.Position = 0 + ''' FALTA PONER EL IF DE CUANTAS VECES MANDO Y SI MANDO PREGUNTAR ENVIAR BOLETA O PEDIDO + If c.GetString("HE_CUANTOS") = 0 Then + SUBIR_INFO_PEDIDO + Else + Dim result As Int + result = Msgbox2("QUE VA A ENVIAR?", "ENVIO DE INFO.", "BOLETA", "VALIDAR", "VTA/PED", LoadBitmap(File.DirAssets, "alert2.png")) 'ignore + If result = DialogResponse.Positive Then + SUBIR_INFO_BOLETA + ELSE IF result = DialogResponse.NEGATIVE Then + SUBIR_INFO_PEDIDO + ELSE IF result = DialogResponse.CANCEL Then + VALIDAR_INFO + End If + End If + End If +End Sub + +Sub cargar_Click + 'Para descargar el PDF de la carta porte ///////////////////////////////////////////////////////////////////////// + DateTime.DateFormat = "yyyyMMdd" + Dim hoy As String = DateTime.Date(DateTime.Now) +' If Logger Then Log(DateTime.Date(File.LastModified(File.DirInternal,"cartaPorte.pdf")) & " - " & hoy ) + If Not(File.Exists(File.DirInternal,"cartaPorte.pdf")) Then 'Si no existe la descargamos ... + If logger Then LogColor("No hay carta porte.", Colors.Red) + descargaCartaPorte ' la descargamos. + Do While Not(cartaPorteLista) 'Mientras no se termine de descargar la carta porte, esperamos ... + Sleep(1000) + If logger Then Log("Descargando Carta Porte (Loop cargar_Click)") + Loop + Else If (DateTime.Date(File.LastModified(File.DirInternal,"cartaPorte.pdf")) < hoy And Starter.rutaTipo <> "FORANEA") Then ' si la fecha del pdf NO es de hoy y la ruta NO es foranea entonces ... + LogColor("La carta porte es vieja.", Colors.Red) + If logger Then Log(Starter.rutaTipo) + descargaCartaPorte ' la descargamos. + Do While Not(cartaPorteLista) 'Mientras no se termine de descargar la carta porte, esperamos ... + Sleep(1000) + If logger Then Log("Descargando Carta Porte (Loop cargar_Click)") + If detenerLoop Then Exit + detenerLoop = False + Loop + Else + cartaPorteLista = True + If logger Then LogColor("Ya hay carta porte con fecha de hoy", Colors.Green) + Private MB As Int + MB = Msgbox2("¿Quiere descargarla nuevamente?", "YA SE DESCARGO LA CARTA PORTE", "Si", "", "No", Null) 'ignore + If MB = DialogResponse.Positive Then + descargaCartaPorte + Do While Not(cartaPorteLista) 'Mientras no se termine de descargar la carta porte esperamos ... + Sleep(1000) + If logger Then Log("Descargando Carta Porte (Loop cargar_Click)") + If detenerLoop Then Exit + detenerLoop = False + Loop + ELSE IF MB = DialogResponse.NEGATIVE Then +' descargaCartaPorte + ELSE IF MB = DialogResponse.CANCEL Then +' VALIDAR_INFO + End If + End If + 'Termina descargar el PDF de la carta porte /////////////////////////////////////////////////////////////////////////////// + If cartaPorteLista Then + CARGA = "CARGAR" + img2.Visible =True + L_P_1.Visible = True + S_CC.Visible = True + Btn_CheckList.Visible=False +' P1.Visible = True +' P1.BringToFront + P1.Width = GetDeviceLayoutValues.Width + P1.Height = GetDeviceLayoutValues.Height + Subs.panelVisible(P1, 0, 0) + trabajar.Visible = False + B_PROXIMA.Visible =False + NUEVO.Visible =False + BUSCA.Visible=False + connecta.Visible=False + L_P_3.Visible = True + S_CH.Visible = True + PB1.Visible = True + Resumen.Visible= False + E_RUTA2.Visible = False + L_SUPLENCIA.Visible = False + Label4.Visible = False + L_P_1.Text = "Catalogo de Clientes" + L_P_2.Text = "Catalogos de Productos" + L_P_3.Text = "Catalogos Historicos" + S_CC.Text = "EN PROCESO" + S_CH.Text = "EN PROCESO" + S_CP.Text = "EN PROCESO" + PB1.Progress = 0 + PB2.Progress = 0 + EJECUTANDO = 1 + bcarga1 = 0 + bcarga2 = 0 + bcarga3 = 0 + e_ruta.Text = ruta_valida + ' NUEVOS CLIENTE + + Starter.skmt.ExecNonQuery2("delete from kmt_info where substr(CAT_CL_CODIGO,1,1) <> ?", Array As Object ("N")) + Starter.skmt.ExecNonQuery("delete from cod_result") + Starter.skmt.ExecNonQuery("delete from hist_gest") + Starter.skmt.ExecNonQuery("delete from cat_gunaprod") + Starter.skmt.ExecNonQuery("delete from cat_gunaprod2") + Starter.skmt.ExecNonQuery("DELETE FROM CAT_GUNAPROD5") + Starter.skmt.ExecNonQuery("DELETE FROM HIST_ENCUESTA2") + + Starter.skmt.ExecNonQuery("delete from CAT_DETALLES_PAQ") + Starter.skmt.ExecNonQuery("delete from telefonos") + Starter.skmt.ExecNonQuery("delete from HIST_VENTAS") + Starter.skmt.ExecNonQuery("delete from HIST_PROMOS") + Starter.skmt.ExecNonQuery("delete from HIST_CLIENTE_CANT_PROMOS") + Starter.skmt.ExecNonQuery("delete from PROMOS_COMP") + Starter.skmt.ExecNonQuery("delete from CAT_VERIFICACION") + Starter.skmt.ExecNonQuery("delete from LISTA_PRECIOS") + Starter.skmt.ExecNonQuery("delete from CAT_PRECIOS") + Starter.skmt.ExecNonQuery("delete from HIST_RMI") + Starter.skmt.ExecNonQuery("delete from HIST_CUOTAS") + Starter.skmt.ExecNonQuery("delete from HIST_EXHIBIDORES2") + Starter.skmt.ExecNonQuery("delete from CAT_DESCUENTOS_SKU") + Starter.skmt.ExecNonQuery("delete from HIST_ABORDO") + Starter.skmt.ExecNonQuery("delete from DESC_CLIENTES") + Starter.skmt.ExecNonQuery("delete from CAT_ENCUESTA_PREGUNTA") + Starter.skmt.ExecNonQuery("delete from CAT_PROMO_MONTO") + ''' PEDIDO DOE + Starter.skmt.ExecNonQuery("delete from CAT_GUNAPROD_DOE") + Starter.skmt.ExecNonQuery("delete from PEDIDO_DOE") + ''' FIN DOE + Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("NUMERO_PEDIDO")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("NUMERO_PEDIDO",0)) + + c=Starter.skmt.ExecQuery("select usuario from usuarioa") + c.Position = 0 + usuario = c.GetString("USUARIO") + + DateTime.TimeFormat = "HHmmss" + inicioContador = DateTime.Now + + cmd.Initialize + cmd.Name = "SELECT_HIST_ENCUESTA_KELL" + cmd.Parameters = Array As Object( e_ruta.text, ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "HIST_ENCUESTA2") + + cmd.Initialize + cmd.Name = "SELECT_EXHIBIDOR_RUTA_KELL" + cmd.Parameters = Array As Object( e_ruta.text ) + If logger Then Log(e_ruta.TEXT) + reqManager.ExecuteQuery(cmd , 0, "exhibidores") + + cmd.Initialize 'Para traer la contraseña del candado de "FIN DIA" + cmd.Name = "SELECT_PASS_FIN_DIA" + reqManager.ExecuteQuery(cmd , 0, "pass_fin_dia") + + cmd.Initialize + cmd.Name = "select_cat_gunaprod_KELL" + cmd.Parameters = Array As Object(ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "gunaprod") + + cmd.Initialize + cmd.Name = "select_cat_gunaprod2_KELL" + cmd.Parameters = Array As Object(ALMACEN, e_ruta.Text) + reqManager.ExecuteQuery(cmd , 0, "gunaprod2") + + cmd.Initialize + cmd.Name = "select_cat_encuesta_p_KELL" + cmd.Parameters = Array As Object(ALMACEN, e_ruta.Text) + reqManager.ExecuteQuery(cmd , 0, "encuesta_p") + + cmd.Initialize + cmd.Name = "select_cat_paquetes_KELL" + cmd.Parameters = Array As Object(ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "gunaprodp") + + cmd.Initialize + cmd.Name = "select_cat_paquetess_KELL" + cmd.Parameters = Array As Object(ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "gunaprodps") + + cmd.Initialize + cmd.Name = "select_cat_detallepa_KELL" + cmd.Parameters = Array As Object(ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "detallepaq") + + cmd.Initialize + cmd.Name = "select_cat_clientes_guna_KELL2" + cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "kmt_datos") + + cmd.Initialize + cmd.Name = "select_hist_datos_KELL" + cmd.Parameters = Array As Object(e_ruta.text, ALMACEN,e_ruta.text, ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "hist_datos") + + cmd.Initialize + cmd.Name = "select_hist_datos_KELL2" + cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "hist_datos") + + cmd.Initialize + cmd.Name = "select_hist_promos_KELL" + cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "hist_promos") + + cmd.Initialize + cmd.Name = "select_hist_cliente_promos_KELL" + cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "hist_cliente_promos") + + cmd.Initialize + cmd.Name = "select_promo_comp_KELL" + cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "hist_comp_promos") + + cmd.Initialize + cmd.Name = "select_promo_monto_KELL" + cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "promo_monto") + + If E_RUTA2.Text <> "" Then + cmd.Initialize + cmd.Name = "select_cat_clientes_guna_KELL2" + cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "kmt_datos") + + cmd.Initialize + cmd.Name = "select_hist_datos_KELL" + cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN,e_ruta.text, ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "hist_datos") + + cmd.Initialize + cmd.Name = "select_hist_promos_KELL" + cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "hist_promos") + + cmd.Initialize + cmd.Name = "select_hist_cliente_promos_KELL" + cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "hist_cliente_promos") + + cmd.Initialize + cmd.Name = "select_promo_comp_KELL" + cmd.Parameters = Array As Object(E_RUTA2.text, ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "hist_comp_promos") + + cmd.Initialize + cmd.Name = "select_DESC_CLIENTE_KELL" + cmd.Parameters = Array As Object( ALMACEN,E_RUTA2.text) + reqManager.ExecuteQuery(cmd , 0, "DESCUENTOS_CLIENTE") + + cmd.Initialize + cmd.Name = "select_DESC_CLIE_SKU_KELL" + cmd.Parameters = Array As Object( ALMACEN,E_RUTA2.text) + reqManager.ExecuteQuery(cmd , 0, "DESCUENTOS_CLIENTE_SKU") + End If + + cmd.Initialize + cmd.Name = "select_DESC_CLIENTE_KELL" + cmd.Parameters = Array As Object( ALMACEN,e_ruta.text) + reqManager.ExecuteQuery(cmd , 0, "DESCUENTOS_CLIENTE") + + cmd.Initialize + cmd.Name = "select_DESC_CLIE_SKU_KELL" + cmd.Parameters = Array As Object( ALMACEN,e_ruta.text) + reqManager.ExecuteQuery(cmd , 0, "DESCUENTOS_CLIENTE_SKU") + + cmd.Initialize + cmd.Name = "select_fecha" + cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "fecha") + + cmd.Initialize + cmd.Name = "select_folio_KELL" + cmd.Parameters = Array As Object(e_ruta.text, ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "folio") + + ' esto es para sacar el perfil y marcas del usuario + cmd.Initialize + cmd.Name = "select_perfil_KELL" + cmd.Parameters = Array As Object(usuario) + reqManager.ExecuteQuery(cmd , 0, "perfil") + + cmd.Initialize + cmd.Name = "select_marcas_KELL" + cmd.Parameters = Array As Object(usuario) + reqManager.ExecuteQuery(cmd , 0, "marcas") + + cmd.Initialize + cmd.Name = "select_CAMBIOS_KELL" + 'cmd.Parameters = Array As Object( ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "cat_cambios") + + cmd.Initialize + cmd.Name = "select_SUCURSAL_KELL" + cmd.Parameters = Array As Object( ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "sucursal") + + cmd.Initialize + cmd.Name = "select_dia_visita_KELL" + cmd.Parameters = Array As Object( ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "dia_visita") + + cmd.Initialize + cmd.Name = "select_HIST_CUOTAS" + cmd.Parameters = Array As Object( ALMACEN,e_ruta.text ) + reqManager.ExecuteQuery(cmd , 0, "CUOTAS") + + cmd.Initialize + cmd.Name = "select_hist_ventas_abordo_KELL" + cmd.Parameters = Array As Object( ALMACEN,e_ruta.text ) + reqManager.ExecuteQuery(cmd , 0, "hist_abordo") + + cmd.Initialize + cmd.Name = "select_cat_encuesta_p_KELL" + cmd.Parameters = Array As Object( ALMACEN,e_ruta.text ) + reqManager.ExecuteQuery(cmd , 0, "carga_encuesta") + + cmd.Initialize + cmd.Name = "select_placas_kell" + cmd.Parameters = Array As Object( ALMACEN,e_ruta.text ) + reqManager.ExecuteQuery(cmd , 0, "placas") + + cmd.Initialize + cmd.Name = "select_cat_variables_semana_tipo_KELL" + reqManager.ExecuteQuery(cmd , 0, "SEMANA") + + cmd.Initialize + cmd.Name ="insert_drop_KELL" + cmd.Parameters = Array As Object(usuario,e_ruta.Text,fecha, l_porvisitar.Text,l_drop.Text,l_efectiva.Text,l_cuantosc.Text,l_cuantosn.Text, L_MONTOD.Text,"CARGA", ALMACEN) + reqManager.ExecuteCommand(cmd , "inst_noventa_ins_drop_kell") + + cmd.Initialize + cmd.Name = "select_precios_KELL" + cmd.Parameters = Array As Object(ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "precios") + + cmd.Initialize + cmd.Name = "select_limite_abordo" + cmd.Parameters = Array As Object( ALMACEN,e_ruta.text ) + reqManager.ExecuteQuery(cmd , 0, "limite_abordo") + + ''' PARA LO DE DOE + cmd.Initialize + cmd.Name = "select_pedido_doe" + cmd.Parameters = Array As Object( ALMACEN,e_ruta.text ) + reqManager.ExecuteQuery(cmd , 0, "pedido_doe") + + cmd.Initialize + cmd.Name = "select_cat_gunaprod_doe" + cmd.Parameters = Array As Object( ALMACEN,e_ruta.text ) + reqManager.ExecuteQuery(cmd , 0, "cat_gunaprod_doe") + ''' FIN DOE + + cmd.Initialize + cmd.Name = "select_cat_devoluciones_KELL" + cmd.Parameters = Array As Object(ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "prods_rmi") + + cargar.Visible = False + Subir.Visible = False + trabajar.Visible=False + inv.Visible = False + If Starter.marcaCel <> "LGE" Then ToastMessageShow("Se Actualizarán los datos. Este proceso podria tardar hasta un minuto, gracias" , True) + + + End If +End Sub + +Sub JobDone(Job As HttpJob) +' LogColor("JobDone: "&Job.Tag & " Success:" & Job.Success , Colors.Magenta) ' Mod by CHV - 211116 + If inicioContador = "" Then inicioContador = 0 + If Job.Success = False Then + If logger Then LogColor("** " & Job.Tag & " Error: " & Job.ErrorMessage, Colors.Red) ' Mod by CHV - 211116 + If Job.ErrorMessage = "STREAM" Then + contador_strem = contador_strem +1 + If CARGA = "SUBIR" Then + PB1.Progress = PB1.Progress + 1 + If PB1.Progress > 100 Then + PB1.Progress = 1 + End If + If contador_env = contador_strem And S_CP.Text <> "INFO OK" Then + PB1.Progress = 100 + S_CP.Text = "VALIDANDO" + End If + End If + End If + Else + If logger Then LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211110 + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "kmt_datos" Then 'query tag + If logger Then Log("TIEMPO kmt_datos : " & ((DateTime.Now-inicioContador)/1000)) + S_CC.TEXT = "CARGANDO" + Starter.skmt.BeginTransaction + For Each records() As Object In RESULT.Rows + Dim CAT_CL_CODIGO As String = records(RESULT.Columns.Get("CAT_CL_CODIGO")) + Dim CAT_CL_RUTA As String = records(RESULT.Columns.Get("CAT_CL_RUTA")) + Dim CAT_CL_NOMBRE As String = records(RESULT.Columns.Get("CAT_CL_NOMBRE")) + Dim CAT_CL_ATIENDE1 As String = records(RESULT.Columns.Get("CAT_CL_ATIENDE1")) + Dim CAT_CL_ATIENTE2 As String = records(RESULT.Columns.Get("CAT_CL_ATIENTE2")) + Dim CAT_CL_TELEFONO As String = records(RESULT.Columns.Get("CAT_CL_TELEFONO")) + Dim CAT_CL_EMAIL As String = records(RESULT.Columns.Get("CAT_CL_EMAIL")) + Dim CAT_CL_CALLE As String = records(RESULT.Columns.Get("CAT_CL_CALLE")) + Dim CAT_CL_NOEXT As String = records(RESULT.Columns.Get("CAT_CL_NOEXT")) + Dim CAT_CL_NOINT As String = records(RESULT.Columns.Get("CAT_CL_NOINT")) + Dim CAT_CL_CALLE1 As String = records(RESULT.Columns.Get("CAT_CL_CALLE1")) + Dim CAT_CL_CALLE2 As String = records(RESULT.Columns.Get("CAT_CL_CALLE2")) + Dim CAT_CL_COLONIA As String = records(RESULT.Columns.Get("CAT_CL_COLONIA")) + Dim CAT_CL_MUNI As String = records(RESULT.Columns.Get("CAT_CL_MUNI")) + Dim CAT_CL_EDO As String = records(RESULT.Columns.Get("CAT_CL_EDO")) + Dim CAT_CL_CP As String = records(RESULT.Columns.Get("CAT_CL_CP")) + Dim CAT_CL_LONG As String = records(RESULT.Columns.Get("CAT_CL_LONG")) + Dim CAT_CL_LAT As String = records(RESULT.Columns.Get("CAT_CL_LAT")) + Dim CAT_CL_MTOCOMPRA As String = records(RESULT.Columns.Get("CAT_CL_MTOCOMPRA")) + Dim CAT_CL_NUM_SERIEFISICO As String = records(RESULT.Columns.Get("CAT_CL_NUM_SERIEFISICO")) + Dim CAT_CL_BFACTURA As String = records(RESULT.Columns.Get("CAT_CL_BFACTURA")) + Dim CAT_CL_BCREDITO As String = records(RESULT.Columns.Get("CAT_CL_BBLOQUEOCRED")) + Dim CAT_CL_DIAS_VISITA As String = records(RESULT.Columns.Get("CAT_CL_DIAS_VISITA")) + Dim CAT_CL_TIPO_RUTA As String = records(RESULT.Columns.Get("CAT_CL_TIPO_RUTA")) + Dim CAT_CL_CATEGORIA As String = records(RESULT.Columns.Get("CAT_CL_CATEGORIA")) + Dim CAT_CL_SEGMENTO As String = records(RESULT.Columns.Get("CAT_CL_SEGMENTO")) + Starter.skmt.ExecNonQuery2("INSERT INTO kmt_info(CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO,CAT_CL_BFACTURA,CAT_CL_BCREDITO,CAT_CL_DIAS_VISITA,CAT_CL_TIPO_RUTA, gestion, IMPRESION, CAT_CL_CATEGORIA, CAT_CL_SEGMENTO) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,0,?,?)", Array As Object (CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LAT,CAT_CL_LONG,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO,CAT_CL_BFACTURA,CAT_CL_BCREDITO,CAT_CL_DIAS_VISITA,CAT_CL_TIPO_RUTA,CAT_CL_CATEGORIA, CAT_CL_SEGMENTO)) + Next + Starter.skmt.ExecNonQuery2("INSERT INTO kmt_info(CAT_CL_CODIGO,CAT_CL_RUTA,CAT_CL_NOMBRE,CAT_CL_ATIENDE1,CAT_CL_ATIENTE2,CAT_CL_TELEFONO,CAT_CL_EMAIL,CAT_CL_CALLE,CAT_CL_NOEXT,CAT_CL_NOINT,CAT_CL_CALLE1,CAT_CL_CALLE2,CAT_CL_COLONIA,CAT_CL_MUNI,CAT_CL_EDO,CAT_CL_CP,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_BFACTURA,CAT_CL_BCREDITO,CAT_CL_MTOCOMPRA,CAT_CL_NUM_SERIEFISICO,CAT_CL_DIAS_VISITA, gestion, IMPRESION) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,0,0,0,?,0,0) ",Array As Object ("0",e_ruta.TEXT, "VENTA ABORDO","null","null","null","null","null","null","null","null","null","null","null","null","NULL","null","null","NULL","NULL")) + Starter.skmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!! + Starter.skmt.EndTransaction + Listo1 = 1 + S_CC.Text = "LISTO" +' ToastMessageShow("Catalogo Clientes Actualizados." , True) + If Listo1 =1 And Listo2 =1 And Listo3 = 1 And Listo4 = 1 Then + B4XPage_Appear + img2.Visible=False + EJECUTANDO=0 + End If + End If + bcarga1 = 20 + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "hist_promos" Then 'query tag + If logger Then Log("TIEMPO hist_promos : " & ((DateTime.Now-inicioContador)/1000)) + Starter.skmt.BeginTransaction + For Each records() As Object In RESULT.Rows + Dim HP_CLIENTE As String = records(RESULT.Columns.Get("HP_CLIENTE")) + Dim HP_CODIGO_PROMOCION As String = records(RESULT.Columns.Get("HP_CODIGO_PROMOCION")) + Starter.skmt.ExecNonQuery2("INSERT INTO HIST_PROMOS(HP_CLIENTE, HP_CODIGO_PROMOCION) VALUES (?,?)", Array As Object (HP_CLIENTE, HP_CODIGO_PROMOCION)) + Next + Starter.skmt.TransactionSuccessful + Starter.skmt.EndTransaction + 'ToastMessageShow("Historico Promociones Actualizado." , True) + If PB1.Progress = 0 Then + PB1.Progress = 30 + S_CH.Text = "CARGANDO" + ELSE If PB1.Progress = 30 Then + PB1.Progress = 70 + ELSE IF PB1.Progress = 70 Then + PB1.Progress = 100 + S_CH.Text = "LISTO" + End If + End If + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "hist_cliente_promos" Then 'query tag + If logger Then Log("TIEMPO hist_cliente_promos : " & ((DateTime.Now-inicioContador)/1000)) + Starter.skmt.BeginTransaction + For Each records() As Object In RESULT.Rows + Dim HCCP_CLIENTE As String = records(RESULT.Columns.Get("HCCP_CLIENTE")) + Dim HCCP_PROMO As String = records(RESULT.Columns.Get("HCCP_PROMO")) + Dim HCCP_CANT As String = records(RESULT.Columns.Get("HCCP_CANT")) + Starter.skmt.ExecNonQuery2("INSERT INTO HIST_CLIENTE_CANT_PROMOS(HCCP_CLIENTE, HCCP_PROMO, HCCP_CANT) VALUES (?,?,?)", Array As Object (HCCP_CLIENTE, HCCP_PROMO,HCCP_CANT)) + Next + Starter.skmt.TransactionSuccessful + Starter.skmt.EndTransaction + ' ToastMessageShow(" Historico Clientes Promociones Actualizado." , True) + End If + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "hist_comp_promos" Then 'query tag + If logger Then Log("TIEMPO hist_comp_promos : " & ((DateTime.Now-inicioContador)/1000)) + Starter.skmt.BeginTransaction + For Each records() As Object In RESULT.Rows + Dim CAT_PA_ID As String = records(RESULT.Columns.Get("CAT_PA_ID")) + Dim CAT_PA_MAXPROM As String = records(RESULT.Columns.Get("CAT_PA_MAXPROM")) + Dim CAT_PA_MAXPROMREC As String = records(RESULT.Columns.Get("CAT_PA_MAXPROMREC")) + Dim CAT_PA_MAXPROMCLIE As String = records(RESULT.Columns.Get("CAT_PA_MAXPROMCLIE")) + Starter.skmt.ExecNonQuery2("INSERT INTO PROMOS_COMP(CAT_PA_ID, CAT_PA_MAXPROM, CAT_PA_MAXPROMREC, CAT_PA_MAXPROMCLIE) VALUES (?,?,?,?)", Array As Object (CAT_PA_ID, CAT_PA_MAXPROM,CAT_PA_MAXPROMREC,CAT_PA_MAXPROMCLIE)) + Next + Starter.skmt.TransactionSuccessful + Starter.skmt.EndTransaction + If PB1.Progress = 0 Then + PB1.Progress = 30 + S_CH.Text = "CARGANDO" + ELSE If PB1.Progress = 30 Then + PB1.Progress = 70 + ELSE IF PB1.Progress = 70 Then + PB1.Progress = 100 + S_CH.Text = "LISTO" + End If + End If + End If + + + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "promo_monto" Then 'query tag + For Each records() As Object In RESULT.Rows + Dim CPM_CLIENTE As String = records(RESULT.Columns.Get("CPM_CLIENTE")) + Dim CPM_IDPROMO As String = records(RESULT.Columns.Get("CPM_IDPROMO")) + Dim CPM_MONTO As String = records(RESULT.Columns.Get("CPM_MONTO")) + Dim CPM_PROID As String = records(RESULT.Columns.Get("CPM_PROID")) + Dim CPM_CANT As String = records(RESULT.Columns.Get("CPM_CANT")) + Dim CPM_RANGO As String = records(RESULT.Columns.Get("CPM_RANGO")) + Dim CPM_DESC As String = records(RESULT.Columns.Get("CPM_DESC")) + + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_PROMO_MONTO(CPM_CLIENTE, CPM_IDPROMO, CPM_MONTO, CPM_PROID, CPM_CANT, CPM_RANGO, CPM_DESC) VALUES (?,?,?,?,?,?,?)", Array As Object (CPM_CLIENTE, CPM_IDPROMO, CPM_MONTO, CPM_PROID, CPM_CANT, CPM_RANGO, CPM_DESC)) + + Next + End If + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "cat_verificacion" Then 'query tag + For Each records() As Object In RESULT.Rows + Dim CAT_VE_IDPROD As String = records(RESULT.Columns.Get("CAT_VE_IDPROD")) + Dim CAT_VE_NOMBRE As String = records(RESULT.Columns.Get("CAT_VE_NOMBRE")) + Dim CAT_VE_ORDEN As String = records(RESULT.Columns.Get("CAT_VE_ORDEN")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VERIFICACION(CAT_VE_IDPROD, CAT_VE_NOMBRE,CAT_VE_ORDEN) VALUES (?,?,?)", Array As Object (CAT_VE_IDPROD, CAT_VE_NOMBRE,CAT_VE_ORDEN)) + Next + End If + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "DESCUENTOS_CLIENTE" Then 'query tag + If logger Then Log("TIEMPO DESCUENTOS_CIENTE : " & ((DateTime.Now-inicioContador)/1000)) + Starter.skmt.BeginTransaction + For Each records() As Object In RESULT.Rows + Dim DC_CL_CLIENTE As String = records(RESULT.Columns.Get("CAT_CL_CLIENTE")) + Dim CAT_CL_DESCUENTO_SS As String = records(RESULT.Columns.Get("CAT_CL_DESCUENTO_SS")) + Dim CAT_CL_DESCUENTO_RTEC As String = records(RESULT.Columns.Get("CAT_CL_DESCUENTO_RTEC")) + Dim CAT_CL_DESCUENTO_PING As String = records(RESULT.Columns.Get("CAT_CL_DESCUENTO_PING")) + Dim CAT_CL_TIPOCLIENTE As String = records(RESULT.Columns.Get("CAT_CL_TIPOCLIENTE")) + Starter.skmt.ExecNonQuery2("INSERT INTO DESC_CLIENTES(DC_CL_CLIENTE , CAT_CL_DESCUENTO_SS , CAT_CL_DESCUENTO_RTEC , CAT_CL_DESCUENTO_PING, CAT_CL_TIPOCLIENTE ) VALUES (?,?,?,?,?)", Array As Object (DC_CL_CLIENTE , CAT_CL_DESCUENTO_SS , CAT_CL_DESCUENTO_RTEC , CAT_CL_DESCUENTO_PING,CAT_CL_TIPOCLIENTE)) + Next + Starter.skmt.TransactionSuccessful + Starter.skmt.EndTransaction + End If + End If + + 'DESCUENTOS SKU + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "DESCUENTOS_CLIENTE_SKU" Then 'query tag + If logger Then Log("TIEMPO DESCUENTOS_CLIENTE_SKU : " & ((DateTime.Now-inicioContador)/1000)) + Starter.skmt.BeginTransaction + For Each records() As Object In RESULT.Rows + Dim CAT_DS_CLIENTE As String = records(RESULT.Columns.Get("CAT_DS_CLIENTE")) + Dim CAT_DS_PRODID As String = records(RESULT.Columns.Get("CAT_DS_PRODID")) + Dim CAT_DS_PORCENTAJE As String = records(RESULT.Columns.Get("CAT_DS_PORCENTAJE")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_DESCUENTOS_SKU (CAT_DS_CLIENTE, CAT_DS_PRODID, CAT_DS_PORCENTAJE ) VALUES (?,?,?)", Array As Object (CAT_DS_CLIENTE, CAT_DS_PRODID, CAT_DS_PORCENTAJE)) + Next + Starter.skmt.TransactionSuccessful + Starter.skmt.EndTransaction + End If + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "hist_abordo" Then 'query tag + If logger Then Log("TIEMPO hist_abordo : " & ((DateTime.Now-inicioContador)/1000)) + Starter.skmt.BeginTransaction + For Each records() As Object In RESULT.Rows + Dim HVD_PROID As String = records(RESULT.Columns.Get("HVD_PROID")) + Dim HVD_CANT As String = records(RESULT.Columns.Get("HVD_CANT")) + Starter.skmt.ExecNonQuery2("INSERT INTO HIST_ABORDO(HIST_PROID, HIST_CANT) VALUES (?,?)", Array As Object (HVD_PROID, HVD_CANT)) + Next + Starter.skmt.TransactionSuccessful + Starter.skmt.EndTransaction + End If + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "gunaprod" Then 'query tag + If logger Then Log("TIEMPO gunaprod : " & ((DateTime.Now-inicioContador)/1000)) + S_CP.Text = "CARGANDO" + Starter.skmt.BeginTransaction + For Each records() As Object In RESULT.Rows + Dim CAT_GP_ID As String = records(RESULT.Columns.Get("CAT_GP_ID")) + Dim CAT_GP_NOMBRE As String = records(RESULT.Columns.Get("CAT_GP_NOMBRE")) + Dim CAT_GP_IMP1 As String = records(RESULT.Columns.Get("CAT_GP_IMP1")) + Dim CAT_GP_IMP2 As String = records(RESULT.Columns.Get("CAT_GP_IMP2")) + Dim CAT_GP_PRECIO As String = records(RESULT.Columns.Get("CAT_GP_PRECIO")) + Dim CAT_GP_CLASIF As String = records(RESULT.Columns.Get("CAT_GP_CLASIF")) + Dim CAT_GP_STS As String = records(RESULT.Columns.Get("CAT_GP_STS")) + Dim CAT_GP_TIPO As String = records(RESULT.Columns.Get("CAT_GP_TIPO")) + Dim CAT_GP_SUBTIPO As String = records(RESULT.Columns.Get("CAT_GP_SUBTIPO")) + Dim CAT_GP_IMG() As Byte = records(RESULT.Columns.Get("CAT_GP_IMG")) + Dim CAT_GP_ALMACEN As Int = records(RESULT.Columns.Get("CAT_GP_ALMACEN")) + Dim CAT_GP_DEV As String = records(RESULT.Columns.Get("CAT_GP_DEV")) + Dim CAT_GP_TIPOPROD As Int = records(RESULT.Columns.Get("CAT_GP_TIPOPROD")) + Dim CAT_GP_INICIATIVA As Int = records(RESULT.Columns.Get("CAT_GP_INICIATIVA")) + 'CAT_GP_INICIATIVA = 5 + ' skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG,CAT_GP_ALMACEN,CAT_GP_DEV) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG, CAT_GP_ALMACEN,CAT_GP_DEV)) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG,CAT_GP_ALMACEN,CAT_GP_TIPOPROD,CAT_GP_INICIATIVA,CAT_GP_DEV,CAT_GP_CODPROMO) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,0)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG, CAT_GP_ALMACEN,CAT_GP_TIPOPROD, CAT_GP_INICIATIVA,CAT_GP_DEV)) + Next + Starter.skmt.TransactionSuccessful + Starter.skmt.EndTransaction + ' c=skmt.ExecQuery("select CAT_GP_CLASIF, COUNT(*) AS CUANTOS from CAT_GUNAPROD GROUP BY CAT_GP_CLASIF order by CAT_GP_CLASIF asc") + ' c.Position=0 + ' skmt.ExecNonQuery("DELETE FROM COUNT_GUNAPROD") + ' skmt.ExecNonQuery2("INSERT INTO COUNT_GUNAPROD(CAT_GP_CLASIF, CUANTOS) VALUES (?,?)", Array As Object (c.GetString("CAT_GP_CLASIF"), c.GetString("CUANTOS"))) + ' c.Close + Listo2=1 + If PB2.Progress = 0 Then + PB2.Progress = 30 + S_CP.Text = "CARGANDO" + ELSE If PB2.Progress = 30 Then + PB2.Progress = 60 + ELSE IF PB2.Progress = 60 Then + PB2.Progress = 80 + ELSE IF PB2.Progress = 80 Then + PB2.Progress = 100 + S_CP.Text = "LISTO" + End If + ' ToastMessageShow("Productos Actualizados." , True) + If Listo1 =1 And Listo2 =1 And Listo3 = 1 And Listo4 = 1 Then + B4XPage_Appear + img2.Visible=False + EJECUTANDO=0 + End If + End If + End If + + 'CARGA DEL CATALOGO ABORDO + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "gunaprod2" Then 'query tag + If logger Then Log("TIEMPO gunaprod2 : " & ((DateTime.Now-inicioContador)/1000)) + Starter.skmt.BeginTransaction + For Each records() As Object In RESULT.Rows + Dim CAT_GP_ID As String = records(RESULT.Columns.Get("CAT_GP_ID")) + Dim CAT_GP_NOMBRE As String = records(RESULT.Columns.Get("CAT_GP_NOMBRE")) + Dim CAT_GP_IMP1 As String = records(RESULT.Columns.Get("CAT_GP_IMP1")) + Dim CAT_GP_IMP2 As String = records(RESULT.Columns.Get("CAT_GP_IMP2")) + Dim CAT_GP_PRECIO As String = records(RESULT.Columns.Get("CAT_GP_PRECIO")) + Dim CAT_GP_CLASIF As String = records(RESULT.Columns.Get("CAT_GP_CLASIF")) + Dim CAT_GP_STS As String = records(RESULT.Columns.Get("CAT_GP_STS")) + Dim CAT_GP_TIPO As String = records(RESULT.Columns.Get("CAT_GP_TIPO")) + Dim CAT_GP_SUBTIPO As String = records(RESULT.Columns.Get("CAT_GP_SUBTIPO")) + Dim CAT_GP_IMG() As Byte = records(RESULT.Columns.Get("CAT_GP_IMG")) + Dim CAT_GP_ALMACEN As Int = records(RESULT.Columns.Get("CAT_GP_ALMACEN")) + Dim CAT_GP_DEV As String = records(RESULT.Columns.Get("CAT_GP_DEV")) + Dim CAT_GP_TIPOPROD As Int = records(RESULT.Columns.Get("CAT_GP_TIPOPROD")) + Dim CAT_GP_INICIATIVA As Int = records(RESULT.Columns.Get("CAT_GP_INICIATIVA")) + Dim CAT_GP_CODPROMO As String = records(RESULT.Columns.Get("CAT_GP_CODPROMO")) + 'CAT_GP_INICIATIVA = 5 + ' skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG,CAT_GP_ALMACEN,CAT_GP_DEV) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG, CAT_GP_ALMACEN,CAT_GP_DEV)) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD2(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG,CAT_GP_ALMACEN,CAT_GP_TIPOPROD,CAT_GP_INICIATIVA,CAT_GP_DEV,CAT_GP_CODPROMO) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG, CAT_GP_ALMACEN,CAT_GP_TIPOPROD, CAT_GP_INICIATIVA,CAT_GP_DEV,CAT_GP_CODPROMO)) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD5(CAT_GP_ID,CAT_GP_ALMACEN) VALUES (?,?)", Array As Object (CAT_GP_ID,CAT_GP_ALMACEN)) + Next + Starter.skmt.TransactionSuccessful + Starter.skmt.EndTransaction + c=Starter.skmt.ExecQUERY("SELECT COUNT(*) AS CUANTOS FROM PEDIDO WHERE PE_CLIENTE <> 0") + c.Position = 0 + cuantos_pedidosc = c.GetString("CUANTOS") + c.Close + If cuantos_pedidosc > 0 Then + c=Starter.skmt.ExecQUERY("SELECT PE_PROID, SUM(PE_CANT) AS PE_CANT FROM PEDIDO WHERE PE_CLIENTE <> 0 GROUP BY PE_PROID") + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + c.Position=i + Starter.skmt.ExecNonQuery2("update CAT_GUNAPROD2 set CAT_GP_ALMACEN = CAT_GP_ALMACEN - ? where CAT_GP_ID = ? ", Array As Object(c.GetString("PE_CANT"),c.GetString("PE_PROID"))) + Next + End If + End If + ' skmt.ExecNonQuery("DELETE FROM CAT_GUNAPROD5") + ' skmt.ExecNonQuery("INSERT INTO CAT_GUNAPROD5(CAT_GP_ID, CAT_GP_ALMACEN) SELECT CAT_GP_ID, CAT_GP_ALMACEN FROM CAT_GUNAPROD2") + + ' + ' c=skmt.ExecQuery("select CAT_GP_CLASIF, COUNT(*) AS CUANTOS from CAT_GUNAPROD2 GROUP BY CAT_GP_CLASIF order by CAT_GP_CLASIF asc") + ' c.Position=0 + ' skmt.ExecNonQuery("DELETE FROM COUNT_GUNAPROD2") + ' skmt.ExecNonQuery2("INSERT INTO COUNT_GUNAPROD2(CAT_GP_CLASIF, CUANTOS) VALUES (?,?)", Array As Object (c.GetString("CAT_GP_CLASIF"), c.GetString("CUANTOS"))) + ' c.Close + End If + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "gunaprodp" Then 'query tag + If logger Then Log("TIEMPO gunaprodp : " & ((DateTime.Now-inicioContador)/1000)) + Starter.skmt.BeginTransaction + For Each records() As Object In RESULT.Rows + Dim CAT_GP_ID As String = records(RESULT.Columns.Get("CAT_GP_ID")) + Dim CAT_GP_NOMBRE As String = records(RESULT.Columns.Get("CAT_GP_NOMBRE")) + Dim CAT_GP_IMP1 As String = records(RESULT.Columns.Get("CAT_GP_IMP1")) + Dim CAT_GP_IMP2 As String = records(RESULT.Columns.Get("CAT_GP_IMP2")) + Dim CAT_GP_PRECIO As String = records(RESULT.Columns.Get("CAT_GP_PRECIO")) + Dim CAT_GP_CLASIF As String = records(RESULT.Columns.Get("CAT_GP_CLASIF")) + Dim CAT_GP_STS As String = records(RESULT.Columns.Get("CAT_GP_STS")) + Dim CAT_GP_TIPO As String = records(RESULT.Columns.Get("CAT_GP_TIPO")) + Dim CAT_GP_SUBTIPO As String = records(RESULT.Columns.Get("CAT_GP_SUBTIPO")) + Dim CAT_GP_IMG() As Byte = records(RESULT.Columns.Get("CAT_GP_IMG")) + Dim CAT_GP_ALMACEN As Int = records(RESULT.Columns.Get("CAT_GP_ALMACEN")) + Dim CAT_GP_TIPOPROD As Int = records(RESULT.Columns.Get("CAT_GP_TIPOPROD")) +' Dim CAT_GP_DEV As String = records(RESULT.Columns.Get("CAT_GP_DEV")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD2(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG,CAT_GP_ALMACEN,CAT_GP_TIPOPROD,CAT_GP_DEV,CAT_GP_CODPROMO) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,0)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG, CAT_GP_ALMACEN,CAT_GP_TIPOPROD,"0")) + ' skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD2(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG,CAT_GP_ALMACEN,CAT_GP_TIPOPROD,CAT_GP_DEV,CAT_GP_CODPROMO) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,0)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG, CAT_GP_ALMACEN,CAT_GP_TIPOPROD,"0")) + Next + Starter.skmt.TransactionSuccessful + Starter.skmt.EndTransaction + If PB2.Progress = 0 Then + PB2.Progress = 30 + S_CP.Text = "CARGANDO" + ELSE If PB2.Progress = 30 Then + PB2.Progress = 60 + ELSE IF PB2.Progress = 60 Then + PB2.Progress = 80 + ELSE IF PB2.Progress = 80 Then + PB2.Progress = 100 + S_CP.Text = "LISTO" + End If + ' ToastMessageShow("Promociones Actualizados." , True) + Listo4=1 + If Listo1 =1 And Listo2 =1 And Listo3 = 1 And Listo4 = 1 Then + B4XPage_Appear + img2.Visible=False + EJECUTANDO=0 + Else If Listo4 = 1 And Listo3 = 1 And inve = 1 Then + B4XPage_Appear + img2.Visible=False + EJECUTANDO=0 + End If + End If + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "gunaprodps" Then 'query tag + Starter.skmt.BeginTransaction + For Each records() As Object In RESULT.Rows + Dim CAT_GP_ID As String = records(RESULT.Columns.Get("CAT_GP_ID")) + Dim CAT_GP_NOMBRE As String = records(RESULT.Columns.Get("CAT_GP_NOMBRE")) + Dim CAT_GP_IMP1 As String = records(RESULT.Columns.Get("CAT_GP_IMP1")) + Dim CAT_GP_IMP2 As String = records(RESULT.Columns.Get("CAT_GP_IMP2")) + Dim CAT_GP_PRECIO As String = records(RESULT.Columns.Get("CAT_GP_PRECIO")) + Dim CAT_GP_CLASIF As String = records(RESULT.Columns.Get("CAT_GP_CLASIF")) + Dim CAT_GP_STS As String = records(RESULT.Columns.Get("CAT_GP_STS")) + Dim CAT_GP_TIPO As String = records(RESULT.Columns.Get("CAT_GP_TIPO")) + Dim CAT_GP_SUBTIPO As String = records(RESULT.Columns.Get("CAT_GP_SUBTIPO")) + Dim CAT_GP_IMG() As Byte = records(RESULT.Columns.Get("CAT_GP_IMG")) + Dim CAT_GP_ALMACEN As Int = records(RESULT.Columns.Get("CAT_GP_ALMACEN")) + Dim CAT_GP_TIPOPROD As Int = records(RESULT.Columns.Get("CAT_GP_TIPOPROD")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD2(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG,CAT_GP_ALMACEN,CAT_GP_TIPOPROD) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG, CAT_GP_ALMACEN,CAT_GP_TIPOPROD)) + ' skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD2(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG,CAT_GP_ALMACEN,CAT_GP_TIPOPROD) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG, CAT_GP_ALMACEN,CAT_GP_TIPOPROD)) + Next + Starter.skmt.TransactionSuccessful + Starter.skmt.EndTransaction + If PB2.Progress = 0 Then + PB2.Progress = 30 + S_CP.Text = "CARGANDO" + ELSE If PB2.Progress = 30 Then + PB2.Progress = 60 + ELSE IF PB2.Progress = 60 Then + PB2.Progress = 80 + ELSE IF PB2.Progress = 80 Then + PB2.Progress = 100 + S_CP.Text = "LISTO" + End If + 'ToastMessageShow("Promociones especiales Actualizados." , True) + Listo4=1 + If Listo1 =1 And Listo2 =1 And Listo3 = 1 And Listo4 = 1 Then + B4XPage_Appear + img2.Visible=False + EJECUTANDO=0 + Else If Listo4 = 1 And Listo3 = 1 And inve = 1 Then + B4XPage_Appear + img2.Visible=False + EJECUTANDO=0 + End If + End If + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "detallepaq" Then 'query tag + If logger Then Log("TIEMPO detallepaq : " & ((DateTime.Now-inicioContador)/1000)) + Starter.skmt.BeginTransaction + For Each records() As Object In RESULT.Rows + Dim CAT_DP_ALMACEN As String = records(RESULT.Columns.Get("CAT_DP_ALMACEN")) + Dim CAT_DP_ID As String = records(RESULT.Columns.Get("CAT_DP_ID")) + Dim CAT_DP_IDPROD As String = records(RESULT.Columns.Get("CAT_DP_IDPROD")) + Dim CAT_DP_TIPO As String = records(RESULT.Columns.Get("CAT_DP_TIPO")) + Dim CAT_DP_PZAS As String = records(RESULT.Columns.Get("CAT_DP_PZAS")) + Dim CAT_DP_USUARIO As String = records(RESULT.Columns.Get("CAT_DP_USUARIO")) + Dim CAT_DP_FECHA As String = records(RESULT.Columns.Get("CAT_DP_FECHA")) + Dim CAT_DP_REGALO As String = records(RESULT.Columns.Get("CAT_DP_REGALO")) + Dim CAT_DP_CLASIF As String = records(RESULT.Columns.Get("CAT_DP_CLASIF")) + Dim CAT_DP_PRECIO As String = records(RESULT.Columns.Get("CAT_DP_PRECIO")) + Dim CAT_DP_PRECIO_SIMPTOS As String = records(RESULT.Columns.Get("CAT_DP_PRECIO_SIMPTOS")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_DETALLES_PAQ(CAT_DP_ALMACEN,CAT_DP_ID,CAT_DP_IDPROD,CAT_DP_TIPO,CAT_DP_PZAS,CAT_DP_USUARIO,CAT_DP_FECHA,CAT_DP_REGALO,CAT_DP_CLASIF,CAT_DP_PRECIO,CAT_DP_PRECIO_SIMPTOS) VALUES (?,?,?,?,?,?,?,?,?,?,?)", Array As Object (CAT_DP_ALMACEN,CAT_DP_ID,CAT_DP_IDPROD,CAT_DP_TIPO,CAT_DP_PZAS,CAT_DP_USUARIO,CAT_DP_FECHA,CAT_DP_REGALO,CAT_DP_CLASIF,CAT_DP_PRECIO,CAT_DP_PRECIO_SIMPTOS)) + Next + Starter.skmt.TransactionSuccessful + Starter.skmt.EndTransaction + If PB2.Progress = 0 Then + PB2.Progress = 30 + S_CP.Text = "CARGANDO" + ELSE If PB2.Progress = 30 Then + PB2.Progress = 60 + ELSE IF PB2.Progress = 60 Then + PB2.Progress = 80 + ELSE IF PB2.Progress = 80 Then + PB2.Progress = 100 + S_CP.Text = "LISTO" + End If + Listo3 =1 + If Listo1 =1 And Listo2 =1 And Listo3 = 1 And Listo4 = 1 Then + B4XPage_Appear + img2.Visible=False + EJECUTANDO=0 + Else If Listo4 = 1 And Listo3 = 1 And inve = 1 Then + B4XPage_Appear + img2.Visible=False + EJECUTANDO=0 + End If + End If + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "hist_datos" Then 'query tag + If logger Then Log("TIEMPO hist_datos : " & ((DateTime.Now-inicioContador)/1000)) + Starter.skmt.BeginTransaction + For Each records() As Object In RESULT.Rows + Dim HVD_CLIENTE As String = records(RESULT.Columns.Get("HVD_CLIENTE")) + Dim HVD_PRONOMBRE As String = records(RESULT.Columns.Get("HVD_PRONOMBRE")) + Dim HVD_CANT As String = records(RESULT.Columns.Get("HVD_CANT")) + Dim HVD_COSTO_TOT As String = records(RESULT.Columns.Get("HVD_COSTO_TOT")) + Dim HVD_FECHA As String = records(RESULT.Columns.Get("HVD_FECHA")) + Starter.skmt.ExecNonQuery2("INSERT INTO HIST_VENTAS(HVD_CLIENTE,HVD_PRONOMBRE,HVD_CANT,HVD_COSTO_TOT, HVD_FECHA) VALUES (?,?,?,?,?)", Array As Object (HVD_CLIENTE,HVD_PRONOMBRE,HVD_CANT,HVD_COSTO_TOT,HVD_FECHA)) + Next + Starter.skmt.TransactionSuccessful + Starter.skmt.EndTransaction + Listo3 =1 + If PB1.Progress = 0 Then + PB1.Progress = 30 + S_CH.Text = "CARGANDO" + ELSE If PB1.Progress = 30 Then + PB1.Progress = 70 + ELSE IF PB1.Progress = 70 Then + PB1.Progress = 100 + S_CH.Text = "LISTO" + End If +' ToastMessageShow("Venta historico Actualizado." , True) + If Listo1 =1 And Listo2 =1 And Listo3 = 1 And Listo4 = 1 Then + B4XPage_Appear + img2.Visible=False + EJECUTANDO=0 + End If + End If + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "hist_rmi" Then 'query tag + If logger Then Log("TIEMPO hist_rmi : " & ((DateTime.Now-inicioContador)/1000)) + For Each records() As Object In RESULT.Rows + Dim HVD_CLIENTE As String = records(RESULT.Columns.Get("HVD_CLIENTE")) + Dim HVD_PRONOMBRE As String = records(RESULT.Columns.Get("HVD_PRONOMBRE")) + Dim HVD_CANT As String = records(RESULT.Columns.Get("HVD_CANT")) + Dim HVD_PROID As String = records(RESULT.Columns.Get("HVD_PROID")) + Starter.skmt.ExecNonQuery2("INSERT INTO HIST_RMI(HR_CLIENTE,HR_PRONOMBRE,HR_PROID, HR_CANT) VALUES (?,?,?,?)", Array As Object (HVD_CLIENTE,HVD_PRONOMBRE,HVD_PROID, HVD_CANT)) + Next + Listo3 =1 + If PB1.Progress = 0 Then + PB1.Progress = 30 + S_CH.Text = "CARGANDO" + ELSE If PB1.Progress = 30 Then + PB1.Progress = 50 + ELSE IF PB1.Progress = 50 Then + PB1.Progress = 80 + ELSE If PB1.Progress = 80 Then + PB1.Progress = 100 + S_CH.Text = "LISTO" + End If +' ToastMessageShow("Venta historico Actualizado." , True) + If Listo1 =1 And Listo2 =1 And Listo3 = 1 And Listo4 = 1 Then + B4XPage_Appear + img2.Visible=False + EJECUTANDO=0 + End If + End If + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "variables" Then 'query tag + For Each records() As Object In RESULT.Rows + Dim Cat_Va_Descripcion As String = records(RESULT.Columns.Get("CAT_VA_DESCRIPCION")) + Dim Cat_Va_Valor As String = records(RESULT.Columns.Get("CAT_VA_VALOR")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object (Cat_Va_Descripcion, Cat_Va_Valor)) + Next + End If + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "limite_abordo" Then 'query tag + If logger Then Log("TIEMPO limite_abordo : " & ((DateTime.Now-inicioContador)/1000)) + For Each records() As Object In RESULT.Rows + Dim Cat_Va_Valor As String = records(RESULT.Columns.Get("CAT_LA_LIMITE_ABORDO")) + Dim CAT_LA_ESTATUS_AUTORIZA As String = records(RESULT.Columns.Get("CAT_LA_ESTATUS_AUTORIZA")) + Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("LIMITE")) + If CAT_LA_ESTATUS_AUTORIZA = 1 Then + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("LIMITE", "100000")) + Else + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("LIMITE", Cat_Va_Valor)) + End If + Next + End If + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "carga_encuesta" Then 'query tag + If logger Then Log("TIEMPO carga_encuesta : " & ((DateTime.Now-inicioContador)/1000)) + For Each records() As Object In RESULT.Rows + Dim CAT_EP_ID As String = records(RESULT.COLUMNS.GET("CAT_EP_ID")) + Dim CAT_EP_IDTIPOPREGUNTA As String = records(RESULT.COLUMNS.GET("CAT_EP_IDTIPOPREGUNTA")) + Dim CAT_CE_DESCRIPCION As String = records(RESULT.COLUMNS.GET("CAT_CE_DESCRIPCION")) + Dim CAT_EP_PREGUNTA As String = records(RESULT.COLUMNS.GET("CAT_EP_PREGUNTA")) + Dim CAT_EP_RES1_PRED As String = records(RESULT.COLUMNS.GET("CAT_EP_RES1_PRED")) + Dim CAT_EP_RES2_PRED As String = records(RESULT.COLUMNS.GET("CAT_EP_RES2_PRED")) + Dim CAT_EP_RES3_PRED As String = records(RESULT.COLUMNS.GET("CAT_EP_RES3_PRED")) + Dim CAT_EP_ORDEN_PREGUNTA As String = records(RESULT.COLUMNS.GET("CAT_EP_ORDEN_PREGUNTA")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_ENCUESTA_PREGUNTA (CAT_EP_ID ,CAT_EP_IDTIPOPREGUNTA ,CAT_CE_DESCRIPCION ,CAT_EP_PREGUNTA ,CAT_EP_RES1_PRED ,CAT_EP_RES2_PRED ,CAT_EP_RES3_PRED ,CAT_EP_ORDEN_PREGUNTA ) VALUES (?,?,?,?,?,?,?,?)", Array As Object (CAT_EP_ID ,CAT_EP_IDTIPOPREGUNTA ,CAT_CE_DESCRIPCION ,CAT_EP_PREGUNTA ,CAT_EP_RES1_PRED ,CAT_EP_RES2_PRED ,CAT_EP_RES3_PRED ,CAT_EP_ORDEN_PREGUNTA)) + Next + End If + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "carga_encuesta_cliente" Then 'query tag + If logger Then Log("TIEMPO carga_encuesta_cliente : " & ((DateTime.Now-inicioContador)/1000)) + For Each records() As Object In RESULT.Rows + Dim HIST_ECD_IDGRUPO As String = records(RESULT.COLUMNS.GET("HIST_ECD_IDGRUPO")) + Dim HIST_ECD_CLIENTE As String = records(RESULT.COLUMNS.GET("HIST_ECD_CLIENTE")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_ENCUESTA_CLIENTE(HIST_ECD_IDGRUPO ,HIST_ECD_CLIENTE) VALUES (?,?)", Array As Object (HIST_ECD_IDGRUPO ,HIST_ECD_CLIENTE)) + Next + End If + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "valida_pedido" Then 'query tag + If logger Then Log("TIEMPO valida_pedido : " & ((DateTime.Now-inicioContador)/1000)) + For Each records() As Object In RESULT.Rows + Dim CUANTOSP As Int = records(RESULT.Columns.Get("CUANTOSP")) + If cuantos_pedido < = CUANTOSP Then + datos_iguales = "ok" + S_CP.Text = "INFO OK" + Else + If Starter.marcaCel <> "LGE" Then ToastMessageShow("No se cargo bien la info P. Sync Nuevamente" & CUANTOSP & " " & cuantos_pedido, True) + S_CP.Text = "ENVIAR DATOS (K-2)" + End If + Next + End If + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "valida_pedido1" Then 'query tag + For Each records() As Object In RESULT.Rows + Dim CUANTOSP As Int = records(RESULT.Columns.Get("CUANTOSP")) + If cuantos_pedido = CUANTOSP Then + Msgbox("ENVIO EXITOSO","AVISO") 'ignore + cargar.Visible = True + Subir.Visible = True + trabajar.Visible = True + Else + Msgbox("NO ESTA COMPLETA LA INFO", "AVISO") 'ignore + connecta.Visible = True + Resumen.Visible = True + BUSCA.Visible = True + NUEVO.Visible = True + trabajar.Visible = True + B_PROXIMA.Visible = True + End If + Next + End If + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "valida_pedidoc" Then 'query tag + For Each records() As Object In RESULT.Rows + Dim CUANTOSC As Int = records(RESULT.Columns.Get("CUANTOSC")) + If cuantos_pedidosc = CUANTOSC Then + datos_iguales = "ok" + S_CP.Text = "INFO OK" + Else + If Starter.marcaCel <> "LGE" Then ToastMessageShow("No se cargo bien la info C. Sync Nuevamente" & CUANTOSC & " " & cuantos_pedidosc, True) + End If + Next + End If + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "valida_noventa" Then 'query tag + For Each records() As Object In RESULT.Rows + Dim CUANTOSN As Int = records(RESULT.Columns.Get("CUANTOSN")) + If cuantos_noventa = CUANTOSN Then + datos_iguales = "ok" + S_CP.Text = "INFO OK" + Else + If Starter.marcaCel <> "LGE" Then ToastMessageShow("No se cargo bien la info N. Sync Nuevamente" & CUANTOSN & " " & cuantos_noventa, True) + End If + Next + End If + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "ins_pedido" Then 'query tag + For Each records() As Object In RESULT.Rows + PB2.Progress = PB2.Progress + 5 + S_CP.Text = "SUBIENDO" + Next + PB2.Progress = 100 + S_CP.Text = "LISTO" + End If + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "version" Then 'query tag + For Each records() As Object In RESULT.Rows + Starter.skmt.ExecNonQuery("delete from VERSION") + Dim CAT_VE_VERSION As String = records(RESULT.Columns.Get("CAT_VE_VERSION")) + Starter.skmt.ExecNonQuery("delete from VERSION") + Starter.skmt.ExecNonQuery2("INSERT INTO VERSION(NOVERSION) VALUES (?)", Array As Object (CAT_VE_VERSION)) + Next + End If + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "count_cli" Then 'query tag + For Each records() As Object In RESULT.Rows + COUNT_CLIE = records(RESULT.Columns.Get("COUNT_CLIE")) + Next + End If + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "ruta" Then 'query tag + e_ruta.Enabled = True +' Log(RESULT) +' Log(RESULT.Columns.Get("VALIDO")) + If RESULT.Columns.Get("VALIDO") = "0" Then ToastMessageShow("Ruta incorrecta", True) + If RESULT.Rows.Size = 0 Then ToastMessageShow("No hay ruta para ese usuario", True) + For Each records() As Object In RESULT.Rows + Dim VALIDO As String = records(RESULT.Columns.Get("VALIDO")) + Log("|"&VALIDO&"|") +' If Logger Then Log(records(RESULT.Columns.Get("CAT_RU_CATEGORIA"))) + Starter.rutaTipo = records(RESULT.Columns.Get("CAT_RU_CATEGORIA")) 'Traemos el tipo de ruta para que cuando sean foraneas no carguen la carta porte todos los dias. + Log($"========= TIPO RUTA = ${Starter.rutaTipo}"$) + If VALIDO = "OK" Then + cargar.Visible = True + Subir.Visible = True + inv.Visible = True + connecta.Visible = False + Starter.rutapreventa = e_ruta.text + If conn = "1" Then + ToastMessageShow("Existe Conexión con el Servidor." , True) + End If + Else + cargar.Visible = False + Subir.Visible = False + inv.Visible = False + connecta.Visible = False + End If + Next + End If + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "usuario" Then 'query tag + For Each records() As Object In RESULT.Rows + Dim name2 As String = records(RESULT.Columns.Get("VALIDO")) + Next + If name2 = "OK" Then + PASO = 1 + End If + P1.Visible = False + End If + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "fecha" Then 'query tag + For Each records() As Object In RESULT.Rows + Starter.FECHA_HOY = records(RESULT.Columns.Get("FECHA")) + Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("FECHA")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("FECHA",Starter.FECHA_HOY)) + Next + End If + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "folio" Then 'query tag + If logger Then Log("TIEMPO folio : " & ((DateTime.Now-inicioContador)/1000)) + For Each records() As Object In RESULT.Rows + Dim FOLIO As String = records(RESULT.Columns.Get("FOLIO")) + Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("FOLIO")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("FOLIO",FOLIO)) + Next + End If + End If + + 'Perfil + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "perfil" Then 'query tag + For Each records() As Object In RESULT.Rows + Dim PERFIL As String = records(RESULT.Columns.Get("PERFIL")) + Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("PERFIL")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("PERFIL",PERFIL)) + Next + End If + End If + + 'Marcas + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "marcas" Then 'query tag + If logger Then Log("TIEMPO marcas : " & ((DateTime.Now-inicioContador)/1000)) + For Each records() As Object In RESULT.Rows + Dim MARCAS As String = records(RESULT.Columns.Get("MARCAS")) + Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("MARCAS")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("MARCAS",MARCAS)) + Next + End If + End If + + ' SUCURSAL + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "sucursal" Then 'query tag + For Each records() As Object In RESULT.Rows + Dim SUCURSAL As String = records(RESULT.Columns.Get("SUCURSAL")) + Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("SUCURSAL")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("SUCURSAL",SUCURSAL)) + Next + End If + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "placas" Then 'query tag + For Each records() As Object In RESULT.Rows + Dim PLACAS As String = records(RESULT.Columns.Get("PLACAS")) + Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("PLACAS")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("PLACAS",PLACAS)) + Next + End If + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "SEMANA" Then 'query tag + If logger Then Log("TIEMPO SEMANA : " & ((DateTime.Now-inicioContador)/1000)) + For Each records() As Object In RESULT.Rows + Dim Cat_Va_Valor As String = records(RESULT.Columns.Get("CAT_VA_VALOR")) + Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("SEMANA")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("SEMANA",Cat_Va_Valor)) + Next + End If + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "dia_visita" Then 'query tag + For Each records() As Object In RESULT.Rows + Dim DIA_VISITA As String = records(RESULT.Columns.Get("DIA_VISITA")) + Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("DIA_VISITA")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("DIA_VISITA",DIA_VISITA)) + 'Msgbox(DIA_VISITA, "") 'ignore + Next + End If + End If + + 'CUOTAS + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "CUOTAS" Then 'query tag + For Each records() As Object In RESULT.Rows + Dim HC_RUTA As String = records(RESULT.Columns.Get("HC_RUTA")) + Dim HC_CUOTA1 As String = records(RESULT.Columns.Get("HC_CUOTA1")) + Dim HC_CUOTA2 As String = records(RESULT.Columns.Get("HC_CUOTA2")) + Dim HC_CUOTA3 As String = records(RESULT.Columns.Get("HC_CUOTA3")) + Dim HC_CUOTA4 As String = records(RESULT.Columns.Get("HC_CUOTA4")) + Dim HC_CUOTA5 As String = records(RESULT.Columns.Get("HC_CUOTA5")) + Dim HC_CUOTA6 As String = records(RESULT.Columns.Get("HC_CUOTA6")) + Dim HC_META1 As String = records(RESULT.Columns.Get("HC_META1")) + Dim HC_META2 As String = records(RESULT.Columns.Get("HC_META2")) + Dim HC_META3 As String = records(RESULT.Columns.Get("HC_META3")) + Dim HC_META4 As String = records(RESULT.Columns.Get("HC_META4")) + Dim HC_META5 As String = records(RESULT.Columns.Get("HC_META5")) + Dim HC_META6 As String = records(RESULT.Columns.Get("HC_META6")) + Starter.skmt.ExecNonQuery2("INSERT INTO HIST_CUOTAS(HC_RUTA, HC_CUOTA1,HC_CUOTA2,HC_CUOTA3,HC_CUOTA4,HC_CUOTA5,HC_CUOTA6,HC_META1,HC_META2,HC_META3,HC_META4,HC_META5,HC_META6) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (HC_RUTA, HC_CUOTA1,HC_CUOTA2,HC_CUOTA3,HC_CUOTA4,HC_CUOTA5,HC_CUOTA6,HC_META1,HC_META2,HC_META3,HC_META4,HC_META5,HC_META6)) + Next + End If + End If + + + 'Cambios + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "cat_cambios" Then 'query tag + For Each records() As Object In RESULT.Rows + Dim CAMBIOS As String = records(RESULT.Columns.Get("CAT_VA_VALOR")) + Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("CAMBIOS")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("CAMBIOS",CAMBIOS)) + Next + End If + End If + + 'Precios + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "precios" Then 'query tag + If logger Then Log("TIEMPO precios : " & ((DateTime.Now-inicioContador)/1000)) +' Subs.cronoX("Precios", 1) + Starter.skmt.BeginTransaction + For Each records() As Object In RESULT.Rows + Dim CAT_GP_ID As String = records(RESULT.Columns.Get("CAT_GP_ID")) + Dim CAT_GP_PRECIO As String = records(RESULT.Columns.Get("CAT_GP_PRECIO")) + Dim CAT_GP_PRECIO1 As String = records(RESULT.Columns.Get("CAT_GP_PRECIO1")) + Dim CAT_GP_PRECIO2 As String = records(RESULT.Columns.Get("CAT_GP_PRECIO2")) + Dim CAT_GP_PRECIO3 As String = records(RESULT.Columns.Get("CAT_GP_PRECIO3")) + Dim CAT_GP_PRECIO4 As String = records(RESULT.Columns.Get("CAT_GP_PRECIO4")) + Dim CAT_GP_PRECIO5 As String = records(RESULT.Columns.Get("CAT_GP_PRECIO5")) + Dim CAT_GP_PRECIO6 As String = records(RESULT.Columns.Get("CAT_GP_PRECIO6")) + Dim CAT_GP_PRECIO7 As String = records(RESULT.Columns.Get("CAT_GP_PRECIO7")) + Dim CAT_GP_PRECIO8 As String = records(RESULT.Columns.Get("CAT_GP_PRECIO8")) + Dim CAT_GP_PRECIO9 As String = records(RESULT.Columns.Get("CAT_GP_PRECIO10")) + Dim CAT_GP_PRECIO10 As String = records(RESULT.Columns.Get("CAT_GP_PRECIO10")) 'ignore + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_PRECIOS(CAT_GP_ID,CAT_GP_PRECIO, CAT_GP_PRECIO1,CAT_GP_PRECIO2,CAT_GP_PRECIO3,CAT_GP_PRECIO4,CAT_GP_PRECIO5,CAT_GP_PRECIO6,CAT_GP_PRECIO7,CAT_GP_PRECIO8,CAT_GP_PRECIO9) VALUES (?,?,?,?,?,?,?,?,?,?,?)", Array As Object (CAT_GP_ID,CAT_GP_PRECIO, CAT_GP_PRECIO1,CAT_GP_PRECIO2,CAT_GP_PRECIO3,CAT_GP_PRECIO4,CAT_GP_PRECIO5,CAT_GP_PRECIO6,CAT_GP_PRECIO7,CAT_GP_PRECIO8,CAT_GP_PRECIO9)) + Next + Starter.skmt.ExecNonQuery("delete from LISTA_PRECIOS") + Starter.skmt.ExecNonQuery(" insert into LISTA_PRECIOS(PRECIO, CAT_GP_ID, NLISTA) select cat_gp_precio as precio, cat_gp_id, '1' as NLISTA from CAT_PRECIOS union Select CAT_GP_PRECIO1 As precio, CAT_GP_ID, '2' as NLISTA from CAT_PRECIOS union Select CAT_GP_PRECIO2 As precio, CAT_GP_ID, '3' as NLISTA from CAT_PRECIOS union Select CAT_GP_PRECIO3 As precio, CAT_GP_ID, '4' as NLISTA from CAT_PRECIOS union Select CAT_GP_PRECIO4 As precio, CAT_GP_ID, '5' as NLISTA from CAT_PRECIOS union Select CAT_GP_PRECIO5 As precio, CAT_GP_ID, '6' as NLISTA from CAT_PRECIOS union Select CAT_GP_PRECIO6 As precio, CAT_GP_ID, '7' as NLISTA from CAT_PRECIOS union Select CAT_GP_PRECIO7 As precio, CAT_GP_ID, '8' as NLISTA from CAT_PRECIOS union Select CAT_GP_PRECIO8 As precio, CAT_GP_ID, '9' as NLISTA from CAT_PRECIOS union Select CAT_GP_PRECIO9 As precio, CAT_GP_ID, '10' as NLISTA from CAT_PRECIOS union Select CAT_GP_PRECIO10 As precio, CAT_GP_ID, '11' as NLISTA from CAT_PRECIOS") + Starter.skmt.TransactionSuccessful + Starter.skmt.EndTransaction +' If Logger Then LogColor($"///////////////// ${Subs.cronoX("Precios", 2)} ///////////////////////////"$, Colors.red) + ' ToastMessageShow("LISTA DE PRECIOS OK LISTA DE PRECIOS OK", True) + End If + End If + + 'Candado Fin Dia + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "pass_fin_dia" Then 'query tag + For Each records() As Object In RESULT.Rows + Dim nuevaContrasena As String = records(RESULT.Columns.Get("CAR_VA_VALOR3")) + Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("FINDIA_PASS")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("FINDIA_PASS", nuevaContrasena)) + Next + End If + End If + + 'Exhibidores + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "exhibidores" Then 'query tag + If logger Then Log("TIEMPO exhibidores : " & ((DateTime.Now-inicioContador)/1000)) + Starter.skmt.BeginTransaction + For Each records() As Object In RESULT.Rows + Dim HIST_EX_ID_CLIENTE As String = records(RESULT.Columns.Get("HIST_EX_ID_CLIENTE")) + Dim HIST_EX_TIPO As String = records(RESULT.Columns.Get("HIST_EX_TIPO")) + Dim HIST_EX_CANT As String = records(RESULT.Columns.Get("HIST_EX_CANT")) 'ignore + Starter.skmt.ExecNonQuery2("INSERT INTO HIST_EXHIBIDORES2(HIST_EX_ID_CLIENTE,HIST_EX_TIPO, HIST_EX_CANT) VALUES (?,?,?)", Array As Object (HIST_EX_ID_CLIENTE,HIST_EX_TIPO, HIST_EX_CANT)) + Next + Starter.skmt.TransactionSuccessful + Starter.skmt.EndTransaction + End If + End If + + 'HIST_ENCUESTA2 + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "HIST_ENCUESTA2" Then 'query tag + If logger Then Log("TIEMPO HIST_ENCUESTA2 : " & ((DateTime.Now-inicioContador)/1000)) + Starter.skmt.BeginTransaction + For Each records() As Object In RESULT.Rows + Dim HE_CLIENTE As String = records(RESULT.Columns.Get("HE_CLIENTE")) + Starter.skmt.ExecNonQuery2("INSERT INTO HIST_ENCUESTA2(HE_CLIENTE) VALUES (?)", Array As Object (HE_CLIENTE)) + Next + Starter.skmt.TransactionSuccessful + Starter.skmt.EndTransaction + End If + End If + +''' INICIA CARGA PEDIDO DOE + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "cat_gunaprod_doe" Then 'query tag + If logger Then Log("TIEMPO gunaprod_DOE : " & ((DateTime.Now-inicioContador)/1000)) + S_CP.Text = "CARGANDO" + Starter.skmt.BeginTransaction + For Each records() As Object In RESULT.Rows + Dim CAT_GP_ID As String = records(RESULT.Columns.Get("CAT_GP_ID")) + Dim CAT_GP_NOMBRE As String = records(RESULT.Columns.Get("CAT_GP_NOMBRE")) + Dim CAT_GP_IMP1 As String = records(RESULT.Columns.Get("CAT_GP_IMP1")) + Dim CAT_GP_IMP2 As String = records(RESULT.Columns.Get("CAT_GP_IMP2")) + Dim CAT_GP_PRECIO As String = records(RESULT.Columns.Get("CAT_GP_PRECIO")) + Dim CAT_GP_CLASIF As String = records(RESULT.Columns.Get("CAT_GP_CLASIF")) + Dim CAT_GP_STS As String = records(RESULT.Columns.Get("CAT_GP_STS")) + Dim CAT_GP_TIPO As String = records(RESULT.Columns.Get("CAT_GP_TIPO")) + Dim CAT_GP_SUBTIPO As String = records(RESULT.Columns.Get("CAT_GP_SUBTIPO")) + Dim CAT_GP_IMG() As Byte = records(RESULT.Columns.Get("CAT_GP_IMG")) + Dim CAT_GP_ALMACEN As Int = records(RESULT.Columns.Get("CAT_GP_ALMACEN")) + Dim CAT_GP_DEV As String = records(RESULT.Columns.Get("CAT_GP_DEV")) + Dim CAT_GP_TIPOPROD As Int = records(RESULT.Columns.Get("CAT_GP_TIPOPROD")) + Dim CAT_GP_INICIATIVA As Int = records(RESULT.Columns.Get("CAT_GP_INICIATIVA")) + 'CAT_GP_INICIATIVA = 5 + ' skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG,CAT_GP_ALMACEN,CAT_GP_DEV) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG, CAT_GP_ALMACEN,CAT_GP_DEV)) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD_DOE(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG,CAT_GP_ALMACEN,CAT_GP_TIPOPROD,CAT_GP_INICIATIVA,CAT_GP_DEV,CAT_GP_CODPROMO) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,0)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG, CAT_GP_ALMACEN,CAT_GP_TIPOPROD, CAT_GP_INICIATIVA,CAT_GP_DEV)) + Next + Starter.skmt.TransactionSuccessful + Starter.skmt.EndTransaction + ' c=skmt.ExecQuery("select CAT_GP_CLASIF, COUNT(*) AS CUANTOS from CAT_GUNAPROD GROUP BY CAT_GP_CLASIF order by CAT_GP_CLASIF asc") + ' c.Position=0 + ' skmt.ExecNonQuery("DELETE FROM COUNT_GUNAPROD") + ' skmt.ExecNonQuery2("INSERT INTO COUNT_GUNAPROD(CAT_GP_CLASIF, CUANTOS) VALUES (?,?)", Array As Object (c.GetString("CAT_GP_CLASIF"), c.GetString("CUANTOS"))) + ' c.Close + 'Listo2=1 + + ' ToastMessageShow("Productos Actualizados." , True) + + End If + End If + + ''' FIN CARGA CATALOGO DOE + ''' INICIO CARGA PEDIDO DOE + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "pedido_doe" Then 'query tag + If logger Then Log("TIEMPO PEDIDO_DOE : " & ((DateTime.Now-inicioContador)/1000)) + S_CP.Text = "CARGANDO" + Starter.skmt.BeginTransaction + For Each records() As Object In RESULT.Rows + Dim HVD_ALMACEN As String = records(RESULT.Columns.Get("HVD_ALMACEN")) + Dim HVD_COSTO_TOT As String = records(RESULT.Columns.Get("HVD_COSTO_TOT")) + Dim HVD_COSTOU As String = records(RESULT.Columns.Get("HVD_COSTOU")) + Dim HVD_CANT As String = records(RESULT.Columns.Get("HVD_CANT")) + Dim HVD_PRONOMBRE As String = records(RESULT.Columns.Get("HVD_PRONOMBRE")) + Dim HVD_PROID As String = records(RESULT.Columns.Get("HVD_PROID")) + Dim HVD_CLIENTE As String = records(RESULT.Columns.Get("HVD_CLIENTE")) + Dim HVD_FECHA As String = records(RESULT.Columns.Get("HVD_FECHA")) + Dim HVD_USUARIO As String = records(RESULT.Columns.Get("HVD_USUARIO")) + Dim HVD_RUTA As String = records(RESULT.Columns.Get("HVD_RUTA")) + + 'CAT_GP_INICIATIVA = 5 + ' skmt.ExecNonQuery2("INSERT INTO CAT_GUNAPROD(CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG,CAT_GP_ALMACEN,CAT_GP_DEV) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (CAT_GP_ID,CAT_GP_NOMBRE,CAT_GP_IMP1,CAT_GP_IMP2,CAT_GP_PRECIO,CAT_GP_CLASIF,CAT_GP_STS,CAT_GP_TIPO,CAT_GP_SUBTIPO,CAT_GP_IMG, CAT_GP_ALMACEN,CAT_GP_DEV)) + Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO_DOE(PE_CEDIS,PE_COSTO_TOT,PE_COSTOU,PE_CANT,PE_PRONOMBRE,PE_PROID,PE_CLIENTE,PE_FECHA,PE_USUARIO,PE_RUTA,PE_TIPO,PE_PRECIO2) VALUES (?,?,?,?,?,?,?,?,?,?,?,0)", Array As Object (HVD_ALMACEN, HVD_COSTO_TOT, HVD_COSTOU,HVD_CANT, HVD_PRONOMBRE, HVD_PROID, HVD_CLIENTE, HVD_FECHA, HVD_USUARIO,HVD_RUTA, "DOE")) + Next + Starter.skmt.TransactionSuccessful + Starter.skmt.EndTransaction + ' c=skmt.ExecQuery("select CAT_GP_CLASIF, COUNT(*) AS CUANTOS from CAT_GUNAPROD GROUP BY CAT_GP_CLASIF order by CAT_GP_CLASIF asc") + ' c.Position=0 + ' skmt.ExecNonQuery("DELETE FROM COUNT_GUNAPROD") + ' skmt.ExecNonQuery2("INSERT INTO COUNT_GUNAPROD(CAT_GP_CLASIF, CUANTOS) VALUES (?,?)", Array As Object (c.GetString("CAT_GP_CLASIF"), c.GetString("CUANTOS"))) + ' c.Close + 'Listo2=1 + + ' ToastMessageShow("Productos Actualizados." , True) + + End If + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "prods_rmi" Then 'query tag + If logger Then Log("TIEMPO prods RMI : " & ((DateTime.Now-inicioContador)/1000)) + Starter.skmt.ExecNonQuery("delete from cat_rmi") + For Each records() As Object In RESULT.Rows + Dim CAT_GP_ID As String = records(RESULT.COLUMNS.GET("CAT_GP_ID")) + Dim CAT_GP_NOMBRE As String = records(RESULT.COLUMNS.GET("CAT_GP_NOMBRE")) + Dim CAT_GP_PRECIO As String = records(RESULT.COLUMNS.GET("CAT_GP_PRECIO")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_RMI (CAT_ID, CAT_DESCRIPCION, CAT_MONTO) VALUES (?,?,?)", Array As Object (CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO)) + Next + End If + End If + End If + ''' FIN CARGA PEDIDO DOE + + End If + Job.Release +End Sub + +Private Sub B4XPage_CloseRequest As ResumableSub + ' BACK key pressed + 'Return True to close, False to cancel + If pdfViewerActivo Then + pdfViewerActivo = False + PNL_ACCESO.Visible = True + Panel7.Visible = True + PNL_ACCESO.BringToFront + p_pdfViewer.Visible = False + Else if P_RESUMEN.Visible Then + B_OK_RES_Click + Else + Subs.iniciaActividad("Login") + End If + Return False +End Sub + +Sub Activity_KeyPress (key As Int) As Boolean +' ' BACK key pressed +' If key=KeyCodes.KEYCODE_BACK Then +' If pdfViewerActivo Then +' pdfViewerActivo = False +' PNL_ACCESO.Visible = True +' Panel7.Visible = True +' PNL_ACCESO.BringToFront +' p_pdfViewer.Visible = False +' Else if P_RESUMEN.Visible Then +' B_OK_RES_Click +' Else +' Subs.iniciaActividad("Main") +' End If +' ' I want to capture the key here so I return True +' Return True +' End If +' ' Returning False signals the system to handle the key +' Return False +End Sub + +Sub connecta_Click +' c=skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("RUTA")) +' c.Position =0 +' If c.GetString("CAT_VA_VALOR") = l_ruta.Text Then + If e_ruta.Text = "KMTSKLL1" Then + cargar.Visible = True + Subir.Visible = True + e_ruta.Text = "" + End If +' Aqui el codigo para que solo acepte numeros en la ruta, sin caracteres especiales ' Mod por CHV - 211130 + Dim m As Matcher = Regex.Matcher("\d+", e_ruta.Text) 'Buscamos numeros en el campo de la ruta + If m.Find Then e_ruta.Text = m.Match ' Si tiene numeros, solo nos quedamos con ellos. + If e_ruta.Text.Length > 6 Then e_ruta.Text = e_ruta.Text.SubString2(0,6) ' Si tiene mas de 6 numeros solo tomamos los primeros 6 + If logger Then Log(e_ruta.Text) + c=Starter.skmt.ExecQuery("select usuario from usuarioa") + c.Position = 0 + usuario = c.GetString("USUARIO") + c.Close + connecta1 = connecta1 + 1 + Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_READ_PHONE_STATE) + Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean) + If Result Then + imei = "" 'p.GetDeviceId + End If + conn = "1" + Dim cmd As DBCommand + cmd.Initialize + cmd.Name = "select_version_KELL" + reqManager.ExecuteQuery(cmd , 0, "version") + Dim cmd As DBCommand + cmd.Initialize + cmd.Name = "select_ruta3_KELL" + cmd.Parameters = Array As Object(ALMACEN, e_ruta.text, usuario) + Log($"******* RUTA: ${ALMACEN}, ${e_ruta.text}, ${usuario}"$) + reqManager.ExecuteQuery(cmd , 0, "ruta") + e_ruta.Enabled = False + If e_ruta.Text = "KMTSKLL1" Then e_ruta.Enabled = True + ToastMessageShow("Validando Conexión." , False) + ruta_valida = e_ruta.Text +' Else +' Msgbox("LA RUTA NO ES CORRECTA","") 'ignore +' End If +End Sub + +Sub BUSCA_Click + Subs.iniciaActividad("TicketsDia") +End Sub + +Sub b_mapa_Click + Subs.iniciaActividad("mapas") +End Sub + +Sub e_ruta_EnterPressed + Private adelanteFinDia As Boolean = True + c=Starter.skmt.ExecQuery("select CAT_VA_VALOR from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'FINDIA_FECHA'") 'Buscamos "FIN DIA" anterior + If c.RowCount > 0 Then + c.Position = 0 + If Not(c.GetString("CAT_VA_VALOR") < Starter.FECHA_HOY) Then 'Si el "FIN DIA" guardado NO es de ayer o anterior ... + adelanteFinDia = False + End If + c.Close + End If + If e_ruta.Text = "FIN DIA" And adelanteFinDia Then + res = Msgbox2("Seguro que desea hacer el cierre? ... todos los datos se borraran","Cierre", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore + If res = DialogResponse.POSITIVE Then + e_ruta.Text = "" + Starter.skmt.ExecNonQuery("delete from pedido_cliente") + Starter.skmt.ExecNonQuery("delete from pedido") + Starter.skmt.ExecNonQuery("delete from noventa") + Starter.skmt.ExecNonQuery("delete from clie_act") + Starter.skmt.ExecNonQuery("delete from kmt_info") + Starter.skmt.ExecNonQuery("delete from cat_gunaprod") + Starter.skmt.ExecNonQuery("delete from cat_rmi") + Starter.skmt.ExecNonQuery("delete from cat_gunaprod2") + Starter.skmt.ExecNonQuery("delete from CAT_DETALLES_PAQ") + Starter.skmt.ExecNonQuery("delete from HIST_VENTAS") + Starter.skmt.ExecNonQuery("delete from HIST_VERIFICACION") + Starter.skmt.ExecNonQuery("delete from TMP_INSPECCION_AUTO_DIARIA") + Starter.skmt.ExecNonQuery("delete from CAT_FOTOS") + Starter.skmt.ExecNonQuery("delete from HIST_GPS") + Starter.skmt.ExecNonQuery("DELETE FROM HIST_ENCUESTA") + Starter.skmt.ExecNonQuery("DELETE FROM HIST_ENVIOS") + Starter.skmt.ExecNonQuery("DELETE FROM CLIENTE_IMPRESO") + Starter.skmt.ExecNonQuery("delete from CAT_PROMO_MONTO") + Starter.skmt.ExecNonQuery("delete from TMP_CAT_BILLETE") + Starter.skmt.ExecNonQuery("delete from TMP_CAT_MONEDAS") + + Starter.skmt.ExecNonQuery2("INSERT INTO HIST_ENVIOS VALUES (?,0,?)", Array As Object(sTime, "PEDIDO")) + Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("NUMERO_PEDIDO")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("NUMERO_PEDIDO",0)) + Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("FINDIA_FECHA")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES (CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object("FINDIA_FECHA", Starter.FECHA_HOY)) + If File.Exists(File.DirInternal,"FOTO1.jpg") Then File.Delete(File.DirInternal,"FOTO1.jpg") + If File.Exists(File.DirInternal,"FOTO2.jpg") Then File.Delete(File.DirInternal,"FOTO2.jpg") + If File.Exists(File.DirInternal,"FOTO3.jpg") Then File.Delete(File.DirInternal,"FOTO3.jpg") + If File.Exists(File.DirInternal,"FOTO4.jpg") Then File.Delete(File.DirInternal,"FOTO4.jpg") + B4XPage_Appear + End If + Else if e_ruta.Text = "FIN DIA" Then + Msgbox("Ya se hizo FIN DIA hoy, solo se puede hacer un FIN DIA cada día, por favor comuniquese con un supervisor.", "LIMITE DIARIO SUPERADO") 'ignore + End If + If e_ruta.Text = "SUPLENCIA" Then + E_RUTA2.Visible = True + E_RUTA2.Text = "" + L_SUPLENCIA.Visible = True + Label4.Visible = True + ' ImageView9.Visible = True + End If +End Sub + +Sub inv_Click + img2.Visible =True + EJECUTANDO = 1 + inve = 1 + Starter.skmt.ExecNonQuery("delete from cat_gunaprod") + Starter.skmt.ExecNonQuery("delete from CAT_DETALLES_PAQ") + c=Starter.skmt.ExecQuery("select usuario from usuarioa") + c.Position = 0 + usuario = c.GetString("USUARIO") + + cmd.Initialize + cmd.Name = "select_cat_gunaprod_KELL" + cmd.Parameters = Array As Object(ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "gunaprod") + + cmd.Initialize + cmd.Name = "select_cat_paquetes_KELL" + cmd.Parameters = Array As Object(ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "gunaprodp") + + cmd.Initialize + cmd.Name = "select_cat_detallepa_KELL" + cmd.Parameters = Array As Object(ALMACEN) + reqManager.ExecuteQuery(cmd , 0, "detallepaq") + + cargar.Visible = False + Subir.Visible = False + connecta.Visible = True + inv.Visible = False +' ToastMessageShow("Se Actualizaran los datos. Este proceso podria tardar hasta un minuto, gracias" , True) +End Sub + +Sub t1_tick + cmd.Initialize + cmd.Name = "select_cuantos_pedido_KELL" + cmd.Parameters = Array As Object(ALMACEN,l_ruta.text) + reqManager.ExecuteQuery(cmd , 0, "valida_pedido") + + t3.Initialize("T3", 5000) ' 1000 = 1 second + t3.Enabled = True + Wait For t3_tick +' +' cmd.Initialize +' cmd.Name = "select_cuantos_noventa_KELL" +' cmd.Parameters = Array As Object(ALMACEN,l_ruta.text) +' reqManager.ExecuteQuery(cmd , 0, "valida_noventa") +' +' cmd.Initialize +' cmd.Name = "select_cuantos_pedidoc_KELL" +' cmd.Parameters = Array As Object(ALMACEN,l_ruta.text) +' reqManager.ExecuteQuery(cmd , 0, "valida_pedidoc") +' + If PB2.Progress = 0 Then + S_CP.Text = "ENVIAR DATOS (K-1)" + End If + img2.Visible=False + t1.Enabled = False +End Sub + +Sub B_OK_PAS_Click + If CARGA = "SUBIR" And S_CP.Text = "INFO OK" Then + c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("PERFIL")) + PERFIL = "0" + If c.RowCount > 0 Then + c.Position =0 + PERFIL = c.GetString("CAT_VA_VALOR") + End If + c.Close + c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("NUMERO_PEDIDO")) + NUMERO_PEDIDO = "0" + If c.RowCount > 0 Then + c.Position =0 + NUMERO_PEDIDO = c.GetString("CAT_VA_VALOR") + End If + c.Close + If PERFIL = "V-ESPECIAL" Then + Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("NUMERO_PEDIDO")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("NUMERO_PEDIDO",NUMERO_PEDIDO + 1)) + End If + P1.Visible = False + trabajar.Visible = True + B_PROXIMA.Visible =True + NUEVO.Visible =True + BUSCA.Visible=True + connecta.Visible=True + Resumen.Visible= True + img2.Visible=False + P1.SendToBack + Else If CARGA = "SUBIR" And S_CP.Text = "ERROR" Then + Msgbox("Tiene que subir de nuevo la información","Atención") 'ignore + P1.Visible = False + trabajar.Visible = True + NUEVO.Visible =True + BUSCA.Visible=True + connecta.Visible=True + Resumen.Visible= True + img2.Visible=False + P1.SendToBack + Else if CARGA = "SUBIR" And S_CP.Text <> "INFO OK" Then + res = Msgbox2("Seguro que desea abortar el proceso","Cierre", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore + If res = DialogResponse.POSITIVE Then + P1.Visible = False + trabajar.Visible = True + B_PROXIMA.Visible =True + NUEVO.Visible =True + BUSCA.Visible=True + connecta.Visible=True + Resumen.Visible= True + img2.Visible=False +' ExitApplication + P1.SendToBack + End If + End If + If CARGA = "CARGAR" And S_CP.Text = "LISTO" And S_CC.Text = "LISTO" And S_CH.Text = "LISTO" Then + c=Starter.skmt.ExecQuery("select COUNT(DISTINCT(PE_CLIENTE)) AS CLIENTES from PEDIDO_DOE ") + c.Position = 0 + If c.GetString("CLIENTES") > 0 Then Msgbox("AVISO TIENES "& c.GetString("CLIENTES") & " PEDIDOS DON TOÑO PARA ENTREGAR"," PEDIDOS DON TOÑO") + c.Close + P1.Visible = False + trabajar.Visible = True + B_PROXIMA.Visible =True + NUEVO.Visible =True + BUSCA.Visible=True + connecta.Visible=True + Resumen.Visible= True + img2.Visible=False + P1.SendToBack + Else if CARGA = "CARGAR" And (S_CP.Text <> "LISTO" Or S_CC.Text <> "LISTO" Or S_CH.Text <> "LISTO") Then + res = Msgbox2("Seguro que desea abortar el proceso","Cierre", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore + If res = DialogResponse.POSITIVE Then + P1.Visible = False + trabajar.Visible = True + B_PROXIMA.Visible =True + NUEVO.Visible =True + BUSCA.Visible=True + connecta.Visible=True + Resumen.Visible= True + img2.Visible=False + Starter.skmt.ExecNonQuery("delete from kmt_info") + If logger Then Log("Borramos KMT_INFO") + Starter.skmt.ExecNonQuery("delete from cod_result") + Starter.skmt.ExecNonQuery("delete from hist_gest") + Starter.skmt.ExecNonQuery("delete from cat_gunaprod") + Starter.skmt.ExecNonQuery("delete from CAT_DETALLES_PAQ") + Starter.skmt.ExecNonQuery("delete from telefonos") + Starter.skmt.ExecNonQuery("delete from HIST_VENTAS") + Starter.skmt.ExecNonQuery("delete from HIST_PROMOS") + Starter.skmt.ExecNonQuery("delete from HIST_CLIENTE_CANT_PROMOS") + Starter.skmt.ExecNonQuery("delete from PROMOS_COMP") + Starter.skmt.ExecNonQuery("delete from CAT_VERIFICACION") + Starter.skmt.ExecNonQuery("delete from HIST_CUOTAS") + P1.SendToBack + ExitApplication + End If + End If +' P1.SendToBack 'Mod por CHV - 211213 - Se movio el sendToBack a los diferentes if/then porque no en todos los casos hay que ocultar el panel (Por ejemplo cuando se selecciona "No Abortar") +End Sub + +Sub NUEVO_Click + If l_ruta.Text = 0 Then + Msgbox("No se ha cargado ruta","Alerta") 'ignore + Else + Subs.iniciaActividad("nuevocliente") + End If +End Sub + +Sub B_OK_RES_Click + trabajar.Visible = True + B_PROXIMA.Visible =True + NUEVO.Visible =True + BUSCA.Visible=True + connecta.Visible=True + Resumen.Visible= True + P_RESUMEN.Visible=False +End Sub + +Sub Resumen_Click + P_RESUMEN.Visible = True + P_RESUMEN.BringToFront + trabajar.Visible = False + B_PROXIMA.Visible =False + NUEVO.Visible =False + BUSCA.Visible=False + connecta.Visible=False + Subir.Visible=False + cargar.Visible=False + Resumen.Visible= False + DateTime.DateFormat = "MM/dd/yyyy" + fecha=DateTime.Date(DateTime.Now) + Starter.skmt.ExecNonQuery2("update PEDIDO set PE_TIPO = ? where PE_CLIENTE =?", Array As Object("ABORDO", "0")) + b=Starter.skmt.ExecQuery("Select count(*) as CUANTOS from pedido_cliente where pc_cliente <> 0") + b.Position=0 + Cuantos = b.GetString("CUANTOS") +' ToastMessageShow(Cuantos , True) + d=Starter.skmt.ExecQuery2("select count(*) as TOTAL_VISITAR from kmt_info where gestion = 0 and cat_cl_codigo <> 0 AND CAT_CL_DIAS_VISITA = (SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?)", Array As String("DIA_VISITA")) + D.Position=0 + b.Close + e=Starter.skmt.ExecQuery2("select count(*) as POR_VISITAR from kmt_info where cat_cl_codigo <> 0 and CAT_CL_DIAS_VISITA = (SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?) ", Array As String("DIA_VISITA")) + e.Position=0 + f=Starter.skmt.ExecQuery("select count(*) as CAT_CL_RUTA from kmt_info where cat_cl_codigo <> 0") + f.Position=0 + l_ruta.Text = f.GetString("CAT_CL_RUTA") + f.Close + If l_ruta.Text = 0 Then + l_ruta.Text =0 + Else + f=Starter.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info") + f.Position=0 + l_ruta.Text = f.GetString("CAT_CL_RUTA") + f.Close + End If + If Cuantos = 0 Then + L_MONTOD.Text =0 + l_cuantosc.Text = 0 + l_cuantosn.Text = 0 + drop = 0 + l_drop.Text = 0 + efectiva = 0 + l_efectiva.text =0 + l_ctast.Text = d.GetString("TOTAL_VISITAR") + 'l_porvisitar.Text = e.GetString("POR_VISITAR") + d.Close + e.Close + l_monto_kp.Text = "0" + l_monto_k.Text = "0" + l_monto_ks.Text = "0" + Else + c=Starter.skmt.ExecQuery2("select sum(pe_cant) as CAMBIOS from pedido where substr(pe_pronombre,1,6) = ?", Array As String("CAMBIO")) + c.Position = 0 + l_cambios.Text = c.GetString("CAMBIOS") + c.Close + c=Starter.skmt.ExecQuery2("Select sum(PE_COSTO_TOT) As MONTO_DIA from pedido where PE_CLIENTE <> 0 and pe_proid in (Select CAT_GP_ID from cat_gunaprod2 where CAT_GP_TIPO = ? )", Array As String("RTEC")) + c.Position = 0 + l_monto_k.Text = c.GetString("MONTO_DIA") + If l_monto_k.Text = "null" Then + l_monto_k.Text = "0" + End If + c.Close + c=Starter.skmt.ExecQuery2("Select sum(PE_COSTO_TOT) As MONTO_DIA from pedido where PE_CLIENTE <> 0 and pe_proid in (Select CAT_GP_ID from cat_gunaprod2 where CAT_GP_TIPO = ? )", Array As String("PING")) + c.Position = 0 + l_monto_kp.Text = c.GetString("MONTO_DIA") + If l_monto_kp.Text = "null" Then + l_monto_kp.Text = "0" + End If + c.Close + c=Starter.skmt.ExecQuery2("Select sum(PE_COSTO_TOT) As MONTO_DIA from pedido where PE_CLIENTE <> 0 and pe_proid in (Select CAT_GP_ID from cat_gunaprod2 where CAT_GP_TIPO = ? )", Array As String("SALTY SNACKS")) + c.Position = 0 + l_monto_ks.Text = c.GetString("MONTO_DIA") + If l_monto_ks.Text = "null" Then + l_monto_ks.Text = "0" + End If + c.Close + DDD=Starter.skmt.ExecQuery("Select COUNT(*) AS CUANTOS from HIST_CUOTAS ") + DDD.Position = 0 + If DDD.GetString("CUANTOS") > 0 Then + c=Starter.skmt.ExecQuery("Select HC_CUOTA1,HC_CUOTA2,HC_CUOTA3 from HIST_CUOTAS ") + c.Position = 0 + l_monto_c1.Text = Round( c.GetString("HC_CUOTA1") / 6) + l_monto_c2.Text = Round(c.GetString("HC_CUOTA2") / 6) + l_monto_c3.Text = Round(c.GetString("HC_CUOTA3") / 6) + c.Close + Else + l_monto_c1.Text = 2000 + l_monto_c2.Text = 2000 + l_monto_c3.Text = 2000 + End If + DDD.Close + c=Starter.skmt.ExecQuery("select sum(pc_monto) as MONTO_DIA, count(pc_cliente) AS CLIENTES_DIA from pedido_cliente where pc_cliente <> 0") + b=Starter.skmt.ExecQuery("select count(*) as CUANTOS from noventa") + 'where pc_fecha = ?", Array As String(fecha) + C.Position=0 + b.Position=0 + L_MONTOD.Text = c.GetString("MONTO_DIA") + l_cuantosc.Text = c.GetString("CLIENTES_DIA") + l_cuantosn.Text = b.GetString("CUANTOS") + efectiva = c.GetString("CLIENTES_DIA") / e.GetString("POR_VISITAR") + l_efectiva.text = Round2(efectiva*100,2) + l_ctast.Text = d.GetString("TOTAL_VISITAR") + 'l_porvisitar.Text = e.GetString("POR_VISITAR") + L_CUANTOST.Text = l_cuantosc.Text + l_cuantosn.Text + drop = (c.GetString("CLIENTES_DIA") + b.GetString("CUANTOS"))/ d.GetString("TOTAL_VISITAR") + l_drop.Text = Round(drop * 100) + If l_drop.Text + l_efectiva.Text < 100 Then + ImageView3.Bitmap = LoadBitmap(File.DirAssets, "tache_rojo.png") + Else If l_drop.Text + l_efectiva.Text > = 100 And l_drop.Text + l_efectiva.Text < 130 Then + ImageView3.bitmap = LoadBitmap(File.DirAssets, "alerta_amarilla.png") + Else + ImageView3.Bitmap = LoadBitmap(File.DirAssets, "palomita_verde.png") + End If + L_TICKPROM.Text = Round2((c.GetString("MONTO_DIA") / c.GetString("CLIENTES_DIA")),2) + If c.GetString("MONTO_DIA") < 2500 Then + ImageView5.Bitmap = LoadBitmap(File.DirAssets, "tache_rojo.png") + Else if c.GetString("MONTO_DIA") > = 2500 And c.GetString("MONTO_DIA") < 4000 Then + ImageView5.bitmap = LoadBitmap(File.DirAssets, "alerta_amarilla.png") + Else + ImageView5.Bitmap = LoadBitmap(File.DirAssets, "palomita_verde.png") + End If + c.Close + b.Close + End If + b=Starter.skmt.ExecQuery("Select count(*) as CUANTOS from pedido where pe_cliente = 0") + b.Position=0 + Cuantos = b.GetString("CUANTOS") + If Cuantos > 0 Then + c=Starter.skmt.ExecQuery("Select sum(PE_COSTO_TOT) AS TOTAL from pedido where pe_cliente = 0") + c.Position = 0 + L_ABORDO.Text = c.GetString("TOTAL") + c.Close + End If +End Sub + +Sub B_PROXIMA_Click + Starter.skmt.ExecNonQuery("delete from CUENTAA") + Starter.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object("0")) + Starter.tipov = "ABORDO" + B4XPages.ShowPage("Productos") +End Sub + +Sub Printer_Connected (Success As Boolean) + If Success Then + B_IMP.Enabled = True + PASA_IMP = "1" + Else + B_IMP.Enabled = False + If Msgbox2("", "Printer Error","Reprint","Cancel","",Null) = DialogResponse.POSITIVE Then 'ignore + StartPrinter + End If + End If +End Sub + +Sub StartPrinter + Dim PairedDevices As Map + Dim L As List + Dim resimp As Int + ToastMessageShow("Printing.....",True) + PairedDevices.Initialize + Try + PairedDevices = cmp20.GetPairedDevices + Catch + Msgbox("Getting Paired Devices","Printer Error") 'ignore + printer.Close + cmp20.Disconnect + End Try + If PairedDevices.Size = 0 Then + Msgbox("Error Connecting to Printer - Printer Not Found","") 'ignore + Return + End If + If PairedDevices.Size = 1 Then + Try + cmp20.ConnectInsecure(Starter.btAdmin,PairedDevices.Get(PairedDevices.GetKeyAt(0)),1) + Catch + Msgbox("Connecting","Printer Error") 'ignore + printer.Close + cmp20.Disconnect + End Try + Else + L.Initialize + For i = 0 To PairedDevices.Size - 1 + L.Add(PairedDevices.GetKeyAt(i)) + Next + resimp = InputList(L, "Choose device", -1) 'ignore + If resimp <> DialogResponse.CANCEL Then + cmp20.Connect(PairedDevices.Get(L.Get(resimp))) + End If + End If +End Sub + +' BOLETA +Sub B_BOLETA_Click + GetResult +End Sub + +Sub GetResult + Starter.boleta = 1 + B4XPages.MainPage.cliente.muestraBoleta = True + B4XPages.MainPage.cliente.LLAMA_BOLETA + Subs.iniciaActividad("cliente") +' CallSubDelayed(B4XPages.GetPage("Cliente"), "LLAMA_BOLETA") +End Sub + +Sub B_MAPA_RUTA_Click + Subs.iniciaActividad2("MAPA_RUTAS") +End Sub + +Sub b_cuotas_Click + DDD=Starter.skmt.ExecQuery("Select COUNT(*) AS CUANTOS from HIST_CUOTAS ") + DDD.Position = 0 + If DDD.GetString("CUANTOS") > 0 Then + c=Starter.skmt.ExecQuery("Select HC_CUOTA1,HC_CUOTA2,HC_CUOTA3,HC_CUOTA4,HC_CUOTA5,HC_CUOTA6,HC_META1,HC_META2,HC_META3,HC_META4,HC_META5,HC_META6 from HIST_CUOTAS ") + c.Position= 0 + L_CUOTA1.TEXT = c.GetString("HC_CUOTA1") + L_CUOTA2.TEXT = c.GetString("HC_CUOTA2") + L_CUOTA3.TEXT = c.GetString("HC_CUOTA3") + L_CUOTA4.TEXT = c.GetString("HC_CUOTA4") + L_CUOTA5.TEXT = c.GetString("HC_CUOTA5") + L_CUOTA6.TEXT = c.GetString("HC_CUOTA6") + L_META1.Text = c.GetString("HC_META1") + L_META2.Text = c.GetString("HC_META2") + L_META3.Text = c.GetString("HC_META3") + L_META4.Text = c.GetString("HC_META4") + L_META5.Text = c.GetString("HC_META5") + L_META6.Text = c.GetString("HC_META6") + If L_MONTOD.Text > 0 Then + L_META1.Text= $"$1.2{(l_monto_k.Text + L_META1.Text)}"$ 'l_monto_k.Text + L_META1.Text + L_META2.Text= $"$1.2{(l_monto_kp.Text + L_META2.Text)}"$ + L_META3.Text= $"$1.2{(l_monto_ks.Text + L_META3.Text)}"$ 'l_monto_ks.Text + L_META3.Text + L_META4.Text= $"$1.2{(l_monto_k.Text + L_META4.Text)}"$ ' l_monto_k.Text + L_META4.Text + L_META5.Text= $"$1.2{(l_monto_kp.Text + L_META5.Text)}"$ 'l_monto_kp.Text + L_META5.Text + L_META6.Text= $"$1.2{(l_monto_ks.Text + L_META6.Text)}"$ 'l_monto_ks.Text + L_META6.Text + End If + Else + L_CUOTA1.TEXT = 0 + L_CUOTA2.TEXT = 0 + L_CUOTA3.TEXT = 0 + L_CUOTA4.TEXT = 0 + L_CUOTA5.TEXT = 0 + L_CUOTA6.TEXT = 0 + L_META1.Text = 0 + L_META2.Text = 0 + L_META3.Text = 0 + L_META4.Text = 0 + L_META5.Text = 0 + L_META6.Text = 0 + End If + DDD.Close + Panel5.BringToFront + Panel5.Visible = True + Panel2.Visible = False + Panel1.Visible = False +End Sub + +Sub B_CUOATA_C_Click + Panel5.Visible = False + Panel2.Visible = True + Panel1.Visible = True +End Sub + +Sub Btn_CheckList_Click + If logger Then Log("Cambiamos a CHECKLIST_AUTO") + B4XPages.ShowPage("CheckList") +' Activity.Finish +End Sub + +Sub Btn_CheckList_LongClick +' Dim x As Int = "a" +' StartActivity(errorManager) +End Sub + +Sub SUBIR_INFO_PEDIDO + P1.Width = GetDeviceLayoutValues.Width + P1.Height = GetDeviceLayoutValues.Height + Subs.panelVisible(P1, 0, 0) + c=Starter.skmt.ExecQuery2("select count(*) AS CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("PERFIL")) + c.Position =0 + PERFIL = c.GetString("CUANTOS") + c.Close + If PERFIL > 0 Then + c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("PERFIL")) + c.Position =0 + PERFIL = c.GetString("CAT_VA_VALOR") + c.Close + End If + c=Starter.skmt.ExecQuery2("select count(*) AS CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("NUMERO_PEDIDO")) + c.Position =0 + Cuantos = c.GetString("CUANTOS") + c.Close + If Cuantos > 0 Then + c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("NUMERO_PEDIDO")) + c.Position =0 + NUMERO_PEDIDO = c.GetString("CAT_VA_VALOR") + c.Close + End If + Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE not In (select PE_CLIENTE from pedido)") + c=Starter.skmt.ExecQuery("select usuario from usuarioa") + c.Position = 0 + usuario = c.GetString("USUARIO") + c.Close + ' DROP + b=Starter.skmt.ExecQuery("Select count(*) as CUANTOS from pedido where pe_cliente = 0") + b.Position=0 + Cuantos = b.GetString("CUANTOS") + If Cuantos > 0 Then + c=Starter.skmt.ExecQuery("Select sum(PE_COSTO_TOT) AS TOTAL from pedido where pe_cliente = 0") + c.Position = 0 + L_ABORDO.Text = c.GetDouble("TOTAL") + c.Close + End If + Dim PEDIDO_TOT As String + b=Starter.skmt.ExecQuery("Select count(*) as CUANTOS from pedido where pe_cliente <> 0") + b.Position=0 + Cuantos = b.GetString("CUANTOS") + If Cuantos > 0 Then + c=Starter.skmt.ExecQuery("Select sum(PE_COSTO_TOT) AS TOTAL from pedido where pe_cliente <> 0") + c.Position = 0 + PEDIDO_TOT = c.GetDouble("TOTAL") + c.Close + End If + d=Starter.skmt.ExecQuery("SELECT SUM(PE_COSTO_TOT) as MONTO FROM PEDIDO") + d.Position = 0 + Private monto1 As String = "0" + If d.GetString("MONTO") <> Null And d.GetString("MONTO") <> "" Then monto1 = d.GetString("MONTO") + Private abordo1 As String = L_ABORDO.Text + If abordo1 = "" Then abordo1 = "0" + Log($"${monto1}, ${abordo1}"$) + monto1 = monto1 - abordo1 + Dim cmd As DBCommand + cmd.Initialize + cmd.Name ="insert_drop2_KELL" + cmd.Parameters = Array As Object(usuario, l_ruta.Text, fecha, l_porvisitar.Text, l_drop.Text, l_efectiva.Text, l_cuantosc.Text, l_cuantosn.Text, monto1, "ENVIO", ALMACEN, abordo1) + reqManager.ExecuteCommand(cmd , "inst_noventa_ins_drop_kell") + img2.Visible =True + contador_env = contador_env + 1 + S_CP.Text = "Envio Cabecera" + PB2.Progress = 100 + t3.Initialize("T3", 500) ' 1000 = 1 second + t3.Enabled = True + Wait For t3_tick + Dim cmd As DBCommand + cmd.Initialize + cmd.Name ="UPDATE_INFO_E_KELL" + cmd.Parameters = Array As Object(PEDIDO_TOT, L_ABORDO.Text, d.GetDouble("MONTO"),l_ruta.TEXT, ALMACEN) + reqManager.ExecuteCommand(cmd , "inst_noventa_Upd_Info_e_Kell") + contador_env = contador_env + 1 + +' ENCUESTA + c=Starter.skmt.ExecQuery("SELECT HE_CLIE, HE_RES, HE_FECHA, HE_TIPO FROM HIST_ENCUESTA") + S_CP.Text = "Envio Encuesta" + PB2.Progress = 1 + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + c.Position=i + Dim cmd As DBCommand + cmd.Initialize + cmd.Name = "insert_encuesta_KELL" + cmd.Parameters = Array As Object(C.GetString("HE_CLIE"),C.GetString("HE_RES"),C.GetString("HE_FECHA"), c.GetString("HE_TIPO"),l_ruta.Text ) + If logger Then Log($"${C.GetString("HE_CLIE")},${C.GetString("HE_RES")},${C.GetString("HE_FECHA")}, ${c.GetString("HE_TIPO")},${l_ruta.Text}"$) + reqManager.ExecuteCommand(cmd , "inst_noventa_ins_enc_kell_"&i) + PB2.Progress = PB2.Progress + 1 + contador_env = contador_env + 1 + Next + PB2.Progress = 100 + End If + c.Close + c=Starter.skmt.ExecQuery("Select HF_FOTO, HF_CUENTA, HF_IDENCUESTA from HIST_FOTOS") + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + c.Position=i + Dim cmd As DBCommand + cmd.Initialize + cmd.Name = "insert_encuesta_foto_KELLS" + cmd.Parameters = Array As Object(C.GetBLOB("HF_FOTO"),C.GetString("HF_CUENTA"),C.GetString("HF_IDENCUESTA"),l_ruta.Text, ALMACEN, usuario ) + reqManager.ExecuteCommand(cmd , "inst_noventa_ins_enc_foto_kell") + PB2.Progress = PB2.Progress + 1 + contador_env = contador_env + 1 + Next + End If + c.Close + t3.Initialize("T3", 500) ' 1000 = 1 second + t3.Enabled = True + Wait For t3_tick + 'clientes nuevos + c=Starter.skmt.ExecQuery2("SELECT CAT_CL_CODIGO, CAT_CL_NOMBRE FROM kmt_info where CAT_CL_ATIENDE1 = ?", Array As String("new")) + S_CP.Text = "Envio C/Nuevos" + PB2.Progress = 1 + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + c.Position=i + Dim cmd As DBCommand + cmd.Initialize + cmd.Name = "insert_clie_new_KELL" + cmd.Parameters = Array As Object(C.GetString("CAT_CL_CODIGO"),C.GetString("CAT_CL_NOMBRE"),l_ruta.Text,ALMACEN ) + reqManager.ExecuteCommand(cmd , "inst_noventa_ins_clie_new_kell") + PB2.Progress = PB2.Progress + 1 + contador_env = contador_env + 1 + Next + End If + c.Close + t3.Initialize("T3", 500) ' 1000 = 1 second + t3.Enabled = True + Wait For t3_tick + S_CP.Text = "Envio C/Pedidos" + PB2.Progress = 1 + ' PEDIO_CLIENTE + c=Starter.skmt.ExecQuery("SELECT PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT, PC_COSTO_SIN, PC_RUTA, PC_ALMACEN FROM PEDIDO_CLIENTE ") + d=Starter.skmt.ExecQuery("SELECT COUNT(*) as CUANTOS_PEDIDOSC FROM PEDIDO_CLIENTE ") + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + c.Position=i + Dim cmd As DBCommand + cmd.Initialize + cmd.Name = "insert_pedidos_KELL" + cmd.Parameters = Array As Object(C.GetString("PC_CLIENTE"),C.GetString("PC_FECHA"),C.GetString("PC_USER"),C.GetString("PC_NOART"),C.GetString("PC_MONTO"),C.GetString("PC_LON"),C.GetString("PC_LAT"),ALMACEN,l_ruta.text,C.GetString("PC_COSTO_SIN") ) + reqManager.ExecuteCommand(cmd , "ins_pedidos") + PB2.Progress = PB2.Progress + 1 + contador_env = contador_env + 1 + Next + c.Close + End If + d.Position=0 + cuantos_pedidosc = D.GetString("CUANTOS_PEDIDOSC") + PB2.Progress = 100 + d.Close + ENVIADA = 0 + PORENVIAR = 0 +' Msgbox(ENVIADA & " " & PORENVIAR, "A") 'ignore + c=Starter.skmt.ExecQuery2("SELECT COUNT(*) as CANTIDAD FROM HIST_ENVIOS WHERE HE_TIPO = ?",Array As String("ABORDO") ) + c.Position = 0 + If c.GetString("CANTIDAD") > 0 Then + Log($"pe_cedis_0"$) + Starter.skmt.ExecNonQuery2("update PEDIDO set PE_CEDIS = ? where PE_CLIENTE =? AND PE_FOLIO IS NULL ", Array As Object("RECARGA", "0")) + End If + Starter.skmt.ExecNonQuery("UPDATE PEDIDO SET PE_FOLIO = rowid where PE_FOLIO = 0 or PE_FOLIO = 1") + If PERFIL = "V-ESPECIAL" Then + Log($"pe_cedis_1"$) + c=Starter.skmt.ExecQuery("SELECT PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_FECHA, PE_USUARIO, PE_COSTO_SIN, PE_RUTA, PE_DESC, PE_FOLIO, PE_TIPO FROM PEDIDO ORDER BY PE_CLIENTE") + d=Starter.skmt.ExecQuery("SELECT COUNT(*) as CUANTOS_PEDIDO FROM PEDIDO") + If c.RowCount>0 Then + For i=0 To c.RowCount - 1 + c.Position = i + Dim cmd As DBCommand + cmd.Initialize + cmd.Name = "insert_pedido_esp_KELL" + Log($"pe_cedis_2"$) + cmd.Parameters = Array As Object(c.GetString("PE_CEDIS"),ALMACEN,C.GetString("PE_COSTO_TOT"),C.GetString("PE_COSTOU"),C.GetString("PE_CANT"),C.GetString("PE_PRONOMBRE"),C.GetString("PE_PROID"),C.GetString("PE_CLIENTE"),C.GetString("PE_FECHA"),C.GetString("PE_USUARIO"),C.GetString("PE_RUTA"), C.GetString("PE_COSTO_SIN"),C.GetString("PE_DESC"),c.GetString("PE_FOLIO"), c.GetString("PE_TIPO"),NUMERO_PEDIDO ) + reqManager.ExecuteCommand(cmd , "ins_pedido") + contador_env = contador_env + 1 + Next + c.Close + End If + Else + Log($"pe_cedis_3"$) + c=Starter.skmt.ExecQuery("SELECT PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_FECHA, PE_USUARIO, PE_COSTO_SIN, PE_RUTA, PE_DESC, PE_FOLIO, PE_TIPO FROM PEDIDO") + d=Starter.skmt.ExecQuery("SELECT COUNT(*) as CUANTOS_PEDIDO FROM PEDIDO") + TIEMPO = 0 + t3.Initialize("T3", 500) ' 1000 = 1 second + t3.Enabled = True + Wait For t3_tick + S_CP.Text = "Envio de Pedidos" + PB2.Progress = 1 + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + c.Position=i + Dim cmd As DBCommand + cmd.Initialize + cmd.Name = "insert_pedido_KELL" + If logger Then Log($"pe_cedis_4"$) + cmd.Parameters = Array As Object(c.GetString("PE_CEDIS"),ALMACEN,C.GetString("PE_COSTO_TOT"),C.GetString("PE_COSTOU"),C.GetString("PE_CANT"),C.GetString("PE_PRONOMBRE"),C.GetString("PE_PROID"),C.GetString("PE_CLIENTE"),C.GetString("PE_FECHA"),C.GetString("PE_USUARIO"),C.GetString("PE_RUTA"), C.GetString("PE_COSTO_SIN"),C.GetString("PE_DESC"),c.GetString("PE_FOLIO"), c.GetString("PE_TIPO")) + reqManager.ExecuteCommand(cmd , "ins_pedido") + contador_env = contador_env + 1 + TIEMPO = TIEMPO + 1 + PB2.Progress = PB2.Progress + 1 + If TIEMPO > 20 Then + ' Msgbox("M","A") 'ignore + If L_P_2.Text = "Envio de Pedidos" Then + L_P_2.Text = "Envio de Pedidos --" + else if L_P_2.Text = "Envio de Pedidos --" Then + L_P_2.Text = "Envio de Pedidos \" + else if L_P_2.Text = "Envio de Pedidos \" Then + L_P_2.Text = "Envio de Pedidos |" + else if L_P_2.Text = "Envio de Pedidos |" Then + L_P_2.Text = "Envio de Pedidos /" + else if L_P_2.Text = "Envio de Pedidos /" Then + L_P_2.Text = "Envio de Pedidos --" + End If + t3.Initialize("T3", 2000) ' 1000 = 1 second + t3.Enabled = True + Wait For t3_tick + TIEMPO = 0 + End If + Next + c.Close + End If + End If + d.Position=0 + cuantos_pedido = D.GetString("CUANTOS_PEDIDO") + PB2.Progress = 100 + d.Close + + ' NOVENTA + c=Starter.skmt.ExecQuery("SELECT NV_CLIENTE,NV_FECHA,NV_USER,NV_MOTIVO,NV_COMM,NV_LAT,NV_LON FROM NOVENTA") + D=Starter.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS_NOVENTA FROM NOVENTA") + t3.Initialize("T3", 500) ' 1000 = 1 second + t3.Enabled = True + Wait For t3_tick + S_CP.Text = "Envio No Venta" + PB2.Progress = 1 + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + c.Position=i + Dim cmd As DBCommand + cmd.Initialize + cmd.Name = "insert_noventa_KELL" + cmd.Parameters = Array As Object(C.GetString("NV_CLIENTE"),C.GetString("NV_FECHA"),C.GetString("NV_USER"),C.GetString("NV_MOTIVO"),C.GetString("NV_COMM"),C.GetString("NV_LAT"),C.GetString("NV_LON"), ALMACEN, l_ruta.Text) + reqManager.ExecuteCommand(cmd , "inst_noventa_ins_noventa_kell") + PB2.Progress = PB2.Progress + 1 + contador_env = contador_env + 1 + Next + c.Close + End If + d.Position=0 + cuantos_noventa = D.GetString("CUANTOS_NOVENTA") + PB2.Progress = 100 + d.Close + ' CHECK LIST VALIDAR + 'Msgbox("antesde de mandar","") 'ignore + c=Starter.skmt.ExecQuery("SELECT " & Chr(34) & "TMP_AUTO_RUTA " & Chr(34) & " as TMP_AUTO_RUTA," & Chr(34) & "TMP_AUTO_PLACA" & Chr(34) & " as TMP_AUTO_PLACA," & Chr(34) & "TMP_AUTO_CEDIS " & Chr(34) & " as TMP_AUTO_CEDIS," & Chr(34) & "TMP_AUTO_IDALMACEN" & Chr(34) & " as TMP_AUTO_IDALMACEN," & Chr(34) & "TMP_AUTO_FECHA " & Chr(34) & " as TMP_AUTO_FECHA," & Chr(34) & "TMP_AUTO_KILOMETRAJE" & Chr(34) & " as TMP_AUTO_KILOMETRAJE," & Chr(34) & "TMP_AUTO_COMBUSTIBLE" & Chr(34) & " as TMP_AUTO_COMBUSTIBLE," & Chr(34) & "TMP_AUTO_TABLERO " & Chr(34) & " as TMP_AUTO_TABLERO," & Chr(34) & "TMP_AUTO_CLAXON " & Chr(34) & " as TMP_AUTO_CLAXON," & Chr(34) & "TMP_AUTO_PARABRISAS " & Chr(34) & " as TMP_AUTO_PARABRISAS," & Chr(34) & "TMP_AUTO_CINTURON " & Chr(34) & " as TMP_AUTO_CINTURON," & Chr(34) & "TMP_AUTO_ESPEJOS " & Chr(34) & " as TMP_AUTO_ESPEJOS," & Chr(34) & "TMP_AUTO_LICENCIA " & Chr(34) & " as TMP_AUTO_LICENCIA," & Chr(34) & "TMP_AUTO_LIB_OBJETOSINE " & Chr(34) & " as TMP_AUTO_LIB_OBJETOSINE," & Chr(34) & "TMP_AUTO_LIB_OBJETOTMPERVI " & Chr(34) & " as TMP_AUTO_LIB_OBJETOTMPERVI," & Chr(34) & "TMP_AUTO_ORDEN_HERRA " & Chr(34) & " as TMP_AUTO_ORDEN_HERRA," & Chr(34) & "TMP_AUTO_UNILIMPIA " & Chr(34) & " as TMP_AUTO_UNILIMPIA," & Chr(34) & "TMP_AUTO_LIMPIO " & Chr(34) & " as TMP_AUTO_LIMPIO," & Chr(34) & "TMP_AUTO_BASURA " & Chr(34) & " as TMP_AUTO_BASURA," & Chr(34) & "TMP_AUTO_RESPONSABILIDAD " & Chr(34) & " as TMP_AUTO_RESPONSABILIDAD," & Chr(34) & "TMP_AUTO_AUDITORIA " & Chr(34) & " as TMP_AUTO_AUDITORIA," & Chr(34) & "TMP_AUTO_HABITUAL " & Chr(34) & " as TMP_AUTO_HABITUAL," & Chr(34) & "TMP_AUTO_HERRAMIENTAS " & Chr(34) & " as TMP_AUTO_HERRAMIENTAS," & Chr(34) & "TMP_AUTO_CONOS " & Chr(34) & " as TMP_AUTO_CONOS," & Chr(34) & "TMP_AUTO_EDO_CARROCERIA " & Chr(34) & " as TMP_AUTO_EDO_CARROCERIA," & Chr(34) & "TMP_AUTO_FUN_LUCES " & Chr(34) & " as TMP_AUTO_FUN_LUCES," & Chr(34) & "TMP_AUTO_PLACAS_CIRCU " & Chr(34) & " as TMP_AUTO_PLACAS_CIRCU," & Chr(34) & "TMP_AUTO_COND_LLANTAS " & Chr(34) & " as TMP_AUTO_COND_LLANTAS," & Chr(34) & "TMP_AUTO_ACEITEMOTOR " & Chr(34) & " as TMP_AUTO_ACEITEMOTOR," & Chr(34) & "TMP_AUTO_ACEITEDIREC " & Chr(34) & " as TMP_AUTO_ACEITEDIREC," & Chr(34) & "TMP_AUTO_NVL_REFRIGERANTE " & Chr(34) & " as TMP_AUTO_NVL_REFRIGERANTE," & Chr(34) & "TMP_AUTO_NVL_LIQUIDBRISAS " & Chr(34) & " as TMP_AUTO_NVL_LIQUIDBRISAS," & Chr(34) & "TMP_AUTO_COND_BANMOTOR " & Chr(34) & " as TMP_AUTO_COND_BANMOTOR," & Chr(34) & "TMP_AUTO_FUGASGRAL " & Chr(34) & " as TMP_AUTO_FUGASGRAL," & Chr(34) & "TMP_AUTO_FRENOS " & Chr(34) & " as TMP_AUTO_FRENOS," & Chr(34) & "TMP_AUTO_COMENTARIOS " & Chr(34) & " as TMP_AUTO_COMENTARIOS FROM TMP_INSPECCION_AUTO_DIARIA") + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + c.Position=i + If File.Exists(File.DirInternal,"FOTO1.jpg") And File.Exists(File.DirInternal,"FOTO2.jpg") And _ + File.Exists(File.DirInternal,"FOTO3.jpg") And File.Exists(File.DirInternal,"FOTO4.jpg") Then + foto1 = Bit.InputStreamToBytes(File.OpenInput(File.DirInternal,"FOTO1.jpg")) + foto2 = Bit.InputStreamToBytes(File.OpenInput(File.DirInternal,"FOTO2.jpg")) + foto3 = Bit.InputStreamToBytes(File.OpenInput(File.DirInternal,"FOTO3.jpg")) + foto4 = Bit.InputStreamToBytes(File.OpenInput(File.DirInternal,"FOTO4.jpg")) + Else +' Msgbox("No estan completas las fotos.", "FOTOS INCOMPLETAS") 'ignore + ToastMessageShow("FOTOS INCOMPLETAS!!", True) + End If + Dim cmd As DBCommand + cmd.Initialize + cmd.Name = "INSERT_TMP_INSPECCION_AUTO_DIARIA" + cmd.Parameters = Array As Object(C.GetString("TMP_AUTO_RUTA"),C.GetString("TMP_AUTO_PLACA"),C.GetString("TMP_AUTO_CEDIS"),C.GetString("TMP_AUTO_IDALMACEN"),C.GetString("TMP_AUTO_FECHA"),C.GetString("TMP_AUTO_KILOMETRAJE"),C.GetString("TMP_AUTO_COMBUSTIBLE"),C.GetString("TMP_AUTO_TABLERO"),C.GetString("TMP_AUTO_CLAXON"),C.GetString("TMP_AUTO_PARABRISAS"),C.GetString("TMP_AUTO_CINTURON"),C.GetString("TMP_AUTO_ESPEJOS"),C.GetString("TMP_AUTO_LICENCIA"),C.GetString("TMP_AUTO_LIB_OBJETOSINE"),C.GetString("TMP_AUTO_LIB_OBJETOTMPERVI"),C.GetString("TMP_AUTO_ORDEN_HERRA"),C.GetString("TMP_AUTO_UNILIMPIA"),C.GetString("TMP_AUTO_LIMPIO"),C.GetString("TMP_AUTO_BASURA"),C.GetString("TMP_AUTO_RESPONSABILIDAD"),C.GetString("TMP_AUTO_AUDITORIA"),C.GetString("TMP_AUTO_HABITUAL"),C.GetString("TMP_AUTO_HERRAMIENTAS"),C.GetString("TMP_AUTO_CONOS"),C.GetString("TMP_AUTO_EDO_CARROCERIA"),C.GetString("TMP_AUTO_FUN_LUCES"),C.GetString("TMP_AUTO_PLACAS_CIRCU"),C.GetString("TMP_AUTO_COND_LLANTAS"),C.GetString("TMP_AUTO_ACEITEMOTOR"),C.GetString("TMP_AUTO_ACEITEDIREC"),C.GetString("TMP_AUTO_NVL_REFRIGERANTE"),C.GetString("TMP_AUTO_NVL_LIQUIDBRISAS"),C.GetString("TMP_AUTO_COND_BANMOTOR"),C.GetString("TMP_AUTO_FUGASGRAL"),C.GetString("TMP_AUTO_FRENOS"),C.GetString("TMP_AUTO_COMENTARIOS"), foto1, foto2, foto3, foto4) + reqManager.ExecuteCommand(cmd , "inst_noventa_ins_tmp_insp_auto") + contador_env = contador_env + 1 + Next + c.Close + End If + t1.Initialize("T1", 20000) ' 1000 = 1 second + t1.Enabled = True + PORCENTAJE = Round(100/ (cuantos_noventa + cuantos_pedido + cuantos_pedidosc + 1)) + PORCENTAJE = 1 + + DateTime.TimeFormat = "HHmm" + sTime=DateTime.Time(DateTime.Now) + c=Starter.skmt.ExecQuery2("SELECT HE_CUANTOS, HE_FECHA FROM HIST_ENVIOS WHERE HE_TIPO = ?", Array As String("PEDIDO")) + c.Position = 0 + Starter.skmt.ExecNonQuery2("UPDATE HIST_ENVIOS SET HE_FECHA = ?, HE_CUANTOS = ? WHERE HE_TIPO = ?", Array As Object(sTime,c.GetString("HE_CUANTOS") + 1, "PEDIDO")) + c.Close + c=Starter.skmt.ExecQuery("SELECT COUNT(*) as CANTIDAD FROM PEDIDO WHERE PE_CLIENTE = 0 ") + c.Position = 0 + PORENVIAR = c.GetString("CANTIDAD") + If PORENVIAR > 0 Then + Starter.skmt.ExecNonQuery2("delete from HIST_ENVIOS where HE_TIPO = ?", Array As Object ("ABORDO")) + Starter.skmt.ExecNonQuery2("INSERT INTO HIST_ENVIOS VALUES (?,1,?)", Array As Object(sTime, "ABORDO")) + End If +' ToastMessageShow("Se Actualizaran los datos. Este proceso podria tardar hasta un minuto, gracias "& l_ruta.text , True) + S_CP.Text = "SUBIENDO" + DateTime.TimeFormat = "HH:mm:ss" +End Sub + +Sub SUBIR_INFO_BOLETA + P1.Width = GetDeviceLayoutValues.Width + P1.Height = GetDeviceLayoutValues.Height + Subs.panelVisible(P1, 0, 0) + Try + c=Starter.skmt.ExecQuery("SELECT TMP_BILLE_IDALMACEN,TMP_BILLE_RUTA, TMP_BILLE_FECHA,TMP_BILLE_MIL,TMP_BILLE_QUINIENTOS,TMP_BILLE_DOSCIENTOS,TMP_BILLE_CIEN,TMP_BILLE_CINCUENTA,TMP_BILLE_VEINTE FROM TMP_CAT_BILLETE") + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + c.Position=i + Dim cmd As DBCommand + cmd.Initialize + cmd.Name = "insert_boletab_KELL" + cmd.Parameters = Array As Object(C.GetString("TMP_BILLE_IDALMACEN"),l_ruta.Text,C.GetString("TMP_BILLE_FECHA"),C.GetString("TMP_BILLE_MIL"),C.GetString("TMP_BILLE_QUINIENTOS"),C.GetString("TMP_BILLE_DOSCIENTOS"),C.GetString("TMP_BILLE_CIEN"),C.GetString("TMP_BILLE_CINCUENTA"),C.GetString("TMP_BILLE_VEINTE")) + reqManager.ExecuteCommand(cmd , "ins_boletab") + Next + c.Close + End If + + c=Starter.skmt.ExecQuery("SELECT TMP_MON_RUTA,TMP_MON_IDALMACEN,TMP_MON_FECHA,TMP_MON_VEINTE,TMP_MON_DIEZ,TMP_MON_CINCO,TMP_MON_DOS,TMP_MON_UN,TMP_MON_CENTAVOS FROM TMP_CAT_MONEDAS") + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + c.Position=i + Dim cmd As DBCommand + cmd.Initialize + cmd.Name = "insert_boletam_KELL" + cmd.Parameters = Array As Object(l_ruta.Text,C.GetString("TMP_MON_IDALMACEN"),C.GetString("TMP_MON_FECHA"),C.GetString("TMP_MON_VEINTE"),C.GetString("TMP_MON_DIEZ"),C.GetString("TMP_MON_CINCO"),C.GetString("TMP_MON_DOS"),C.GetString("TMP_MON_UN"),C.GetString("TMP_MON_CENTAVOS")) + reqManager.ExecuteCommand(cmd , "ins_boletam") + Next + c.Close + End If + + S_CP.Text = "Envio Boleta" + PB2.Progress = 1 + contador_env = 2 + PB2.Progress = 100 + t3.Initialize("T3", 5000) ' 1000 = 1 second + Wait For t3_tick + t3.Enabled = True + S_CP.Text = "INFO OK" + Catch +' ToastMessageShow("ACTUALIZAR APK BOLETA",0) + Log(LastException) + End Try +End Sub + +Sub VALIDAR_INFO + d=Starter.skmt.ExecQuery("SELECT COUNT(*) as CUANTOS_PEDIDO FROM PEDIDO") + d.Position = 0 + cuantos_pedido = d.GetString("CUANTOS_PEDIDO") + d.Close + cmd.Initialize + cmd.Name = "select_cuantos_pedido_KELL" + cmd.Parameters = Array As Object(ALMACEN,l_ruta.text) + reqManager.ExecuteQuery(cmd , 0, "valida_pedido1") + t3.Initialize("T3", 8000) ' 1000 = 1 second + t3.Enabled = True + Wait For t3_tick +End Sub + +' /////////////////////////////////////////////////////////////////////////////////////////////////////////////// +' /////////////////////////////////////////////// PDF CARTA PORTE /////////////////////////////////////// +' /////////////////////////////////////////////////////////////////////////////////////////////////////////////// +Private Sub ImageView1_LongClick 'Mostramos la carta porte al hacer clic largo en el logo de Kelloggs + Log("Logo clicked") + pdf.Initialize("PDFium") + PNL_ACCESO.Visible = False + Panel7.Visible = False + p_pdfViewer.Width = GetDeviceLayoutValues.Width + p_pdfViewer.Height = GetDeviceLayoutValues.Height + PDFView1.Width = GetDeviceLayoutValues.Width-20 + p_controles_pdf.Width = GetDeviceLayoutValues.Width-20 +' If Logger Then Log($"pantalla: ${GetDeviceLayoutValues.Width}x${GetDeviceLayoutValues.Height} - panel: ${p_pdfViewer.Width}x${p_pdfViewer.Height}"$) + Subs.panelVisible(p_pdfViewer, 0, 0) + pdfViewerActivo = True +' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE) + Dim cfg As Configurator = PDFView1.fromUri(File.DirInternal,"/cartaPorte.pdf") + cfg.SetEventname("PDFium") + cfg.pageFitPolicy("BOTH").autoSpacing(True).enableSwipe(True).pageSnap(True).swipeHorizontal(False).addOnErrorListener.addOnLoadCompleteListener.addOnPageChangeListener.addOnPageErrorListener.load +End Sub + +'Descarga del servidor el PDF de la carta porte del dia de hoy y la +'guarda en el almacenamiento externo con el nombre "cartaPorte.pdf" +Sub descargaCartaPorte + Log("Inicia descargaCartaPorte") + cartaPorteLista = False + 'Generamos el nombre del PDF de la carta porte + DateTime.DateFormat = "ddMMyyyy" + Private almacenX As String = Starter.almacen + Private rutaX As String = Starter.rutapreventa + Private cartaPortePDF As String = $"CPORTE${almacenX}_${rutaX}.pdf"$ +' cartaPortePDF = "CPORTE2_100_Prueba.pdf" 'Para pruebas +' Log(cartaPortePDF) + 'Para el servidor + Private pdfServer As String = "keymon.lat" + If Starter.server.IndexOf("10.0.0.205") > -1 Then pdfServer = "10.0.0.205" +' Log(pdfServer) + pdfURL = $"https://${pdfServer}/CartaPorteKelloggs/CartaPorteMovil${DateTime.Date(DateTime.now)}/${cartaPortePDF}"$ + LogColor(pdfURL,Colors.Red) +' Log("Iniciamos wait for descargaCartaPorteyProgreso") + Wait For (descargaCartaPorteyProgreso(pdfURL)) Complete (Success As Boolean) +' Log("Terminamos wait for descargaCartaPorteyProgreso") + l_porcentaje.Text = "0%" + ProgressBarPDF.Progress = 0 +' Log("Ocultamos panel descarga") + Subs.panelOculto(p_downloadPDF) + Log(p_progress1.Visible) +End Sub + +'Muestra el panel de descarga de la carta porte con barra de progreso +Sub descargaCartaPorteyProgreso (urlx As String) As ResumableSub + Log("Iniciamos descargaCartaPorteyProgreso") + If logger Then Log("Mostramos panel descarga") + Subs.panelVisible(p_downloadPDF, 0, 0) + Subs.centraPanel(p_progress1, Root.Width) + Subs.centraEtiqueta(l_downloadPDF, p_progress1.Width) + Subs.centraEtiqueta(l_porcentaje, p_progress1.Width) + Subs.centraProgressBar(ProgressBarPDF, p_progress1.Width) + Dim job_PDF As HttpJob + job_PDF.Initialize("job_PDF",Me) +' job_PDF.GetRequest.Timeout = 120000 ' Timeout a 2 minutos + job_PDF.Download(urlx) + + 'Para la barra de progreso + ' == TaskIdToJob == necesita que se agregue "HU2_PUBLIC" a "Conditional Symbols" (Project/Build Configurations) (Ctrl+B) + Dim TaskToJob As Map = HttpUtils2Service.TaskIdToJob + Do While HttpUtils2Service.TaskIdToJob.IsInitialized = False + Log("Waiting for HttpUtils2Service to be ready.") + Sleep(20) + Loop + Dim TaskId As Int + Do While TaskId = 0 + For Each id As Int In TaskToJob.Keys + If TaskToJob.Get(id) = job_PDF Then + TaskId = id + Exit + End If + Next + Sleep(10) + Loop + Dim bx() As Boolean = Array As Boolean(False) + Log("Llamamos TrackProgress") + TrackProgress(job_PDF, bx, TaskId) + '**** Termina barra de progreso + + Log("Iniciamos Wait for JobDone Descarga") + Log("Mostramos panel descarga") + Subs.panelVisible(p_downloadPDF, 0, 0) + Wait for (job_PDF) JobDone (job_PDF As HttpJob) +' Log("Terminamos Wait for JobDone Descarga ") + If job_PDF.Success = False Then Log("Error PDF") + If job_PDF.Success = True Then + Log("Carta descargada con exito") + Log("Ocultamos downloader") + cartaPorteLista = True + ' // Delete existing file +' Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE) +' Wait For B4XPAges_PermissionResult (Permission As String, Result As Boolean) + Log("Ocultamos downloader 2") + If File.Exists(File.DirInternal,"cartaPorte.pdf") Then +' Log("Borramos carta anterior") + File.Delete(File.DirInternal,"cartaPorte.pdf") + End If + ' // Save new file + Dim outNewAPK As OutputStream = File.OpenOutput(File.DirInternal,"cartaPorte.pdf", False) + File.Copy2(job_PDF.GetInputStream, outNewAPK) +' Log("Guardamos nueva carta") + outNewAPK.Close + Log("APK dir: "&File.DirInternal) + Log("Carta porte lista") + ToastMessageShow("Carta Porte descargada exitosamente!!", False) + Subs.panelOculto(p_downloadPDF) + p_progress1.Visible = False + Else + Log("Hubo un error, intente de nuevo") + job_PDF.Release + Subs.panelOculto(p_downloadPDF) + p_progress1.Visible = False + Log("Ruta tipo " & Starter.rutaTipo) + If File.Exists(File.DirInternal,"cartaPorte.pdf") And Starter.rutaTipo <> "FORANEA" Then 'Existe, NO es de hoy y NO ES es FORANEA + Private mb1 As Int + mb1 = Msgbox2("No se pudo descargar la carta porte, por favor intente de nuevo o comuniquese con un supervisor", "Error Carta Porte", "Aceptar", "", "Reintentar", Null) 'ignore + If mb1 = DialogResponse.Positive Then +' Activity.Finish +' ExitApplication + detenerLoop = True + B4XPages.ShowPage("Login") + ELSE IF mb1 = DialogResponse.NEGATIVE Then + descargaCartaPorte + ELSE IF mb1 = DialogResponse.CANCEL Then + ' VALIDAR_INFO + End If + Else + LogColor("Hay carta porte vieja PERO la ruta es Foranea", Colors.RGB(255,131,0)) + ToastMessageShow("Hay carta porte de dias anteriores y la ruta es foranea.", True) + cartaPorteLista = True + End If + End If + bx(0) = True + job_PDF.Release +' Log("Termina descargaCartaPorteyProgreso") + Return job_PDF.Success +End Sub + +'Para visualizar el progreso de la descarga +Private Sub TrackProgress (j As HttpJob, Stop() As Boolean, TaskId As Int) + Do While Stop(0) = False + If j.Out.IsInitialized Then + Dim TotalLength As Long = j.Response.ContentLength + Dim size As Long = File.Size(HttpUtils2Service.TempFolder, TaskId) +' Log(size & ", " & TotalLength & " | " & ((size/TotalLength)*100)) + ProgressBarPDF.Progress = (size/TotalLength)*100 + l_porcentaje.Text = $"$1.0{((size/TotalLength)*100)} %"$ + End If + Sleep(100) + Loop + If (size/TotalLength) = 1 Then Subs.panelOculto(p_downloadPDF) +' Log("TrackProgress - "&size & ", " & TotalLength) +End Sub + +Sub PDFium_loadComplete(pages As Int) +' Log($"PDFium_loadComplete(${pages})"$) + glPages = pages + lblPages.Text = $"${glPages}"$ +End Sub + +Sub PDFium_onInitiallyRendered(page As Int) + Log($"PDFium_onInitiallyRendered(${page})"$) +End Sub + +Sub PDFium_onPageChanged(page As Int, TotalPages As Int) +' Log($"PDFium_onPageChanged(${page},${TotalPages})"$) + lblPages.Text = $"${page+1}/${glPages}"$ +End Sub + +Sub PDFium_PageNum(page As Int) + Log($"PDFium_PageNum(${page})"$) +End Sub + +Sub PDFium_Show() + Log($"PDFium_Show()"$) +End Sub + +Sub btnFirst_Click + PDFView1.jumpTo2(0,False) +End Sub + +Sub btnPrev_Click + PDFView1.jumpTo2(PDFView1.CurrentPage-1,False) +End Sub + +Sub btnNext_Click + PDFView1.jumpTo2(PDFView1.CurrentPage+1,False) +End Sub + +Sub btnLast_Click + PDFView1.jumpTo2(glPages-1,False) +End Sub + +Private Sub B_PROXIMA_LongClick + '' StartActivity(Starter.ultimaActividad) +' If Starter.sesion.Get("actividad") <> "" Then + '' StartActivity(Starter.sesion.Get("actividad")) +' Log(Starter.sesion) +' If Starter.sesion.Size = 1 Then +' CallSubDelayed(Starter.sesion.Get("actividad"), "activity_resume") +' else if Starter.sesion.ContainsKey("sub") Then +' Private esteSub As Map = Starter.sesion.Get("sub") + '' If Logger Then Log(esteSub) +' If esteSub.Size = 1 Then CallSubDelayed(Starter.sesion.Get("actividad"), esteSub.Get("nombre")) +' If esteSub.Size = 2 Then CallSubDelayed2(Starter.sesion.Get("actividad"), esteSub.Get("nombre"), esteSub.get("param1")) +' If esteSub.Size = 3 Then CallSubDelayed3(Starter.sesion.Get("actividad"), esteSub.Get("nombre"), esteSub.get("param1"), esteSub.get("param2")) +' End If +' End If +End Sub + +Private Sub P1_Click + 'Vacio, solo está aquib para capturar el evento de clic y que no se pase hacia el fondo. +End Sub + +Private Sub Resumen_LongClick + ToastMessageShow("Enviamos UTR", True) + CallSubDelayed(Starter, "ENVIA_ULTIMA_GPS") +End Sub \ No newline at end of file diff --git a/B4A/C_Productos.bas b/B4A/C_Productos.bas new file mode 100644 index 0000000..daf15d4 --- /dev/null +++ b/B4A/C_Productos.bas @@ -0,0 +1,1240 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=11.5 +@EndOfDesignText@ +Sub Class_Globals + Private Root As B4XView 'ignore + Private xui As XUI 'ignore + Dim ruta As String + Dim q_buscar As String + Dim forzarBusqueda As Boolean = False + Dim skmt As SQL + Dim c As Cursor + Dim c2 As Cursor + Dim C3 As Cursor + Dim s As Cursor + Dim lv_catalogos As ListView + Dim lv_promos As ListView + Dim entro As String + Dim gest As Button + Dim lfila As Label + Dim marca As String + Dim tipo As String + Dim subtipo As String + Private BUSCA As EditText + Dim ya_entro As String + Dim TIENE_PROMOS As String + Dim RES As String + Dim S1 As Cursor + Dim bmp As Bitmap + Dim ciclo As String + Private b_qr As Button + Private p_productos As Panel + Dim clv_productos As CustomListView + Private ImageView1 As ImageView + Private Panel3 As Panel + Private p_prods As Panel + Private i_prod As ImageView + Private l_prodX As Label + Private b_prodMas As Button + Private l_pCant As Label + Private et_pCant As EditText + Private b_prodMenos As Button + Dim b_terminar1 As Button + Dim b_continuar As Button +' Private l_total As Label +' Private l_totProds As Label + Dim totalProds As Int = 0 + Dim totalCompra As Float = 0 + Dim etCantHasFocus As Boolean = False + Dim prodsMap As Map + Private l_Cargando As Label + Private l_info As Label + Private b_buscar As Button + Private p_botonesVenta As Panel + Private lv_tipo As ListView + Private lv_subtipo As ListView + Private p_vistaPreviaTrans As Panel + Private lv_prodsPedido As ListView + Private b_rechazar As Button + Private b_aceptar As Button + Private p_vistaPrevia As Panel + Dim folio As String + Dim result As String + Private l_cant As Label + Private l_total2 As Label + Dim prodsPedidoActual As String + Dim montoPedidoActual As String + Private clv_prods_ll As CustomListView + Dim PCLV As PreoptimizedCLV + Dim listaProds As List +' Type AirportData (Name As String, AirportID As Int, IATA As String, ICAO As String, City As String, Latitude As Float, Longitude As Float, Altitude As String) + Dim pedidoMap As Map + Private p_botMasMen As Panel + Dim reiniciarlistaProds As Boolean= False +' Dim listaRenglones As List + Dim listaTiempos As List + Dim clienteId As String + Dim rutaUsuario As String + Dim hayPedido As Boolean + Dim listaHints As List + Dim query, query2 As String + Private p_rmi As Panel + Private b_rmi_aceptar As Button + Private l_montoDisponible As Label + Private b_rmi_menos As Button + Private l_rmi_cant As Label + Private b_rmi_mas As Button + Private l_rmi_nombre As Label + Private l_rmi_total As Label + Dim rmiMap As Map + Private l_rmi_usado As Label + Dim list_prodsPedido As List + Private b_rmi As Button + Private l_mDisponible As Label +End Sub + +'You can add more parameters here. +Public Sub Initialize As Object + Return Me +End Sub + +'This event will be called once, before the page becomes visible. +Private Sub B4XPage_Created (Root1 As B4XView) + Root = Root1 + 'load the layout to Root +' Activity.RemoveAllViews + Root.LoadLayout("productos") + ruta = File.DirInternal + If File.Exists(ruta, "kmt.db") = False Then + File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db") + End If + PCLV.Initialize(Me, "PCLV", clv_prods_ll) + ciclo = 1 + l_info.Width = Root.Width * 0.8 + l_info.Left = (Root.Width/2) - (l_info.Width/2) + c = Starter.skmt.ExecQuery("select distinct CAT_GP_TIPO from cat_gunaprod2 where CAT_GP_TIPO <> 'PROMOS' order by CAT_GP_TIPO") + If c.RowCount > 0 Then + Dim label1 As Label + label1 = lv_tipo.SingleLineLayout.Label + label1.TextSize = 17 + label1.TextColor = Colors.Black + lv_tipo.Clear + For i=0 To c.RowCount-1 + c.Position=i + lv_tipo.AddSingleLine(c.GetString("CAT_GP_TIPO")) + Next + End If + c.Close +' llenaCatalogo(False) +' listaRenglones.Initialize + listaTiempos.Initialize + listaProds.Initialize + pedidoMap.Initialize + listaHints.Initialize + Log("Llamamos LlenaProdsLL") + LlenaProdsLL(Null, Null) + list_prodsPedido.Initialize + Log("list_prodsPedido.Initialize") + prodsMap.Initialize +End Sub + +'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. + +Sub B4XPage_Appear +' clv_prods_ll.Initialize(Me, "clv_prods_ll") +' list_prodsPedido.Initialize +' Log("list_prodsPedido.Initialize") + clienteId = Subs.traeCliente + rutaUsuario = Subs.traeRuta + If p_rmi.Visible Then p_rmi.Visible = False +' l_mDisponible.Visible = False +' Starter.skmt.ExecNonQuery2("UPDATE CAT_GUNAPROD SET CAT_GP_TIPOPROD = (?) WHERE CAT_GP_TIPOPROD = (?) ",Array As Object("PRIORITARIO","1")) +' Starter.skmt.ExecNonQuery2("UPDATE CAT_GUNAPROD SET CAT_GP_TIPOPROD = (?) WHERE CAT_GP_TIPOPROD = (?) ",Array As Object("ESTRATEGICO","2")) +' Starter.skmt.ExecNonQuery2("UPDATE CAT_GUNAPROD SET CAT_GP_TIPOPROD = (?) WHERE CAT_GP_TIPOPROD = (?) ",Array As Object("COMPLEMENTARIO","3")) +' Starter.skmt.ExecNonQuery2("UPDATE CAT_GUNAPROD SET CAT_GP_TIPOPROD = (?) WHERE CAT_GP_TIPOPROD = (?) ",Array As Object("CATALOGO REGULAR","0")) +' Starter.skmt.ExecNonQuery2("UPDATE CAT_GUNAPROD SET CAT_GP_TIPOPROD = (?) WHERE CAT_GP_CLASIF = (?) ",Array As Object("PROMOS","PROMOS")) + 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 + clv_prods_ll.GetBase.SetLayoutAnimated(0, 5dip, 130dip, Root.Width + 10, Root.Height * 0.68) 'Cambiamos el tamaño y posición de la lista de productos + clv_prods_ll.Base_Resize(clv_prods_ll.GetBase.Width, clv_prods_ll.GetBase.Height) 'Cambiamos el tamaño del panel interno de la lista para que ajuste al nuevo tamaño. + If B4XPages.MainPage.bTerminarClicked Then + lv_catalogos.Visible = True + lv_promos.Visible = False + lv_tipo.Visible = False + lv_subtipo.Visible = False + clv_prods_ll.AsView.Visible = False + B4XPages.MainPage.bTerminarClicked = False + End If + If ya_entro <> "1" Then + If BUSCA.Text <> "" Then BUSCA.Text ="" + entro ="3" + lv_catalogos.Clear + Sleep(100) + lfila.Text = "CATALOGOS" + p_productos.Height = Root.Height + clv_prods_ll.AsView.Visible = False + lv_catalogos.BringToFront + lv_catalogos.Visible = True + p_botonesVenta.Visible = False + p_botonesVenta.Top = clv_prods_ll.AsView.top + clv_prods_ll.AsView.Height - 10 + lv_promos.Visible = False + End If + Dim label1 As Label + label1 = lv_catalogos.SingleLineLayout.Label + label1.TextSize = 17 + label1.TextColor = Colors.Black + lv_catalogos.Clear + lv_catalogos.AddSingleLine("CATALOGO") +' Log(Starter.tipov) + c = Starter.skmt.ExecQuery("select count(*) as hayPromos from promos_comp") + c.Position = 0 + + Log(Subs.revisaImpresa) + + If c.GetInt("hayPromos") > 0 And Subs.traeCliente <> 0 And Subs.revisaImpresa = False Then + lv_catalogos.AddSingleLine("PROMOS") + End If + Sleep(100) +' l_total.Visible = False +' l_totProds.Visible = False +' l_total.Left = 5dip +' l_totProds.Width = Root.Width * 0.19 +' l_total.Left = l_totProds.Width + 20 +' l_total.Width = Root.Width * 0.25 + +' Log(Subs.traeTotalesClienteActual) + Dim m As Map = Subs.traeTotalesClienteActual + prodsPedidoActual = m.Get("productos") + montoPedidoActual = m.Get("monto") + hayPedido = Subs.hayPedido +' LogColor("Pedido ant? - "&hayPedido, Colors.Magenta) + If reiniciarlistaProds Then +' Log("Llamamos LlenaProdsLL") + LlenaProdsLL(Null, Null) + else If hayPedido Then +' LogColor("HAY PEDIDO ANTERIOR", Colors.red) +' Log("Llamamos LlenaProdsLL") + LlenaProdsLL(Null, Null) + End If + If clv_prods_ll.Size > 0 Then + clv_prods_ll.JumpToItem(0) 'Vamos al primer artículo de la lista. + PCLV.lblHint.SetTextSizeAnimated(0,13) + PCLV.B4XSeekBar1.Color1=Colors.DarkGray + PCLV.B4XSeekBar1.Color2=Colors.DarkGray + PCLV.B4XSeekBar1.ThumbColor=Colors.red + PCLV.B4XSeekBar1.mBase.Left=Root.Width *0.91 +' PCLV.B4XSeekBar1.mBase.Top=-50 + PCLV.B4XSeekBar1.mBase.Height=clv_prods_ll.AsView.Height + PCLV.pnlOverlay.Height = clv_prods_ll.AsView.Height + PCLV.B4XSeekBar1.Update + Else + PCLV.B4XSeekBar1.mBase.Left=Root.Width *1.5 'Si no hay productos, que NO se vea la barra de busqueda. + End If + If lfila.Text = "RMI" Then + b_rmi.Visible = False + l_mDisponible.Visible = True + End If + + Log(Starter.tipov) +End Sub + +Sub PCLV_AddProds + +End Sub + +Sub lv_catalogos_ItemClick (Position As Int, Value As Object) + If Value = "CATALOGO" Then +' lfila.text = "TIPO" + lfila.text = "PRODUCTOS" + lv_catalogos.Visible = False + If Starter.tipov <> "ABORDO" Then b_rmi.Visible = True +' lv_tipo.Visible = True + LlenaProdsLL(Null, Null) + clv_prods_ll.AsView.BringToFront + clv_prods_ll.AsView.Visible = True + If hayPedido Then p_botonesVenta.Visible = True 'Si ya hay pedido, entonces mostramos los botones. + l_mDisponible.Visible = False + Else + clv_prods_ll.AsView.Visible = False + lv_promos.Visible = True + lfila.text = "PROMOCIONES" + lv_catalogos.Visible = False + lv_promos.Clear + Dim label1 As Label + label1 = lv_promos.TwoLinesLayout.Label + label1.TextSize = 15 + label1.TextColor = Colors.Black + Dim label2 As Label + label2 = lv_promos.TwoLinesLayout.SecondLabel + label2.TextSize = 15 + label2.TextColor = Colors.Black + Dim label13 As Label + label13 = lv_promos.TwoLinesAndBitmap.Label + label13.TextSize = 15 + label13.TextColor = Colors.Black + Dim label14 As Label + label14 = lv_promos.TwoLinesAndBitmap.SecondLabel + label14.TextSize = 15 + label14.TextColor = Colors.Black +' lfila.text = "PROMOS" +' c2=Starter.skmt.ExecQuery2("select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG from " & query & " where CAT_GP_ALMACEN > 0 AND CAT_GP_TIPO = ? AND CAT_GP_SUBTIPO = ? AND CAT_GP_TIPOPROD <> 1 and (length(CAT_GP_CODPROMO) = 1 OR CAT_GP_CODPROMO = CAT_GP_ID)", Array As String(Value, Value)) + c2=Starter.skmt.ExecQuery2("select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG from " & query & " where CAT_GP_ALMACEN > 0 AND CAT_GP_TIPO = ? AND CAT_GP_SUBTIPO =? AND CAT_GP_TIPOPROD <> 1 and (length(CAT_GP_CODPROMO) = 1 OR CAT_GP_CODPROMO = CAT_GP_ID) ", Array As String( Value, Value)) + Log($"Resultados : ${c2.RowCount}, ${Value}, ${marca}, ${tipo}"$) + If c2.RowCount > 0 Then + For i=0 To c2.RowCount -1 + c2.Position=i + Private tm As Map = Subs.procesaPromocion(c2.GetString("CAT_GP_ID"), clienteId) + If tm.Get("status") = "ok" Then 'Solo muestrala si hay producto. + lv_promos.AddTwoLines(c2.GetString("CAT_GP_NOMBRE"),"# " & c2.GetString("CAT_GP_ALMACEN") & " $ " & c2.GetString("CAT_GP_PRECIO") & " F:" & tm.Get("mp").As(Map).Get("prodsFijosCant") & " V:" & tm.Get("mp").As(Map).Get("prodsVariablesCant")) + End If + Next + Else + ToastMessageShow("No hay promociones disponibles.", False) + End If + c2.Close + entro = "4" + End If +End Sub + +Sub lv_catalogos2_ItemClick (Position As Int, Value As Object) + clv_prods_ll.AsView.Visible = False + BUSCA.Text = "" + Dim cliente As C_Cliente = B4XPages.GetPage("Cliente") + Log($"value=${Value}"$) + If Value = "PROMOS" And cliente.cuenta <> "N" Then + entro = "3" + marca = "PROMOS" + tipo = "PROMOS" + Else if Value = "PROMOS" And cliente.cuenta = "N" Then + entro = "5" + Subs.iniciaActividad("Cliente") +' B4XPages.ShowPage("Cliente") + End If + If Value = "PROMOS" Then + LogColor("Promos", Colors.red) + c2=Starter.skmt.ExecQuery2("select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG from cat_gunaprod2 where CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_TIPOPROD = ? AND CAT_GP_TIPO = ? AND CAT_GP_SUBTIPO = ? AND CAT_GP_ID NOT IN (SELECT PE_PROID FROM PEDIDO WHERE PE_CLIENTE IN (Select cuenta from cuentaa) )", Array As String(Value, marca, tipo)) + Else + LogColor("Catalogo", Colors.red) + c2=Starter.skmt.ExecQuery("select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG, CAT_GP_TIPOPROD, CAT_GP_INICIATIVA from cat_gunaprod where CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_TIPOPROD <> 'PROMOS' ") + End If + If Value = "CATALOGO" Then + lv_catalogos.Visible = False + lv_promos.Visible = False + lfila.text = "CATALOGO" + Log("PGS") + ProgressDialogShow("Cargando catalogo ...") + Sleep(100) + Private inicioContador As String = DateTime.Now + llenaCatalogo(False) + clv_prods_ll.AsView.Visible = True + Log("PGH") + LogColor("TIEMPO DE PROCESO DEL CATALOGO: " & ((DateTime.Now-inicioContador)/1000), Colors.Red) + ProgressDialogHide + c2.Close + Else + clv_prods_ll.AsView.Visible = False + lv_promos.Visible = True + lv_catalogos.Visible = False + lv_promos.Clear + Dim label1 As Label + label1 = lv_promos.TwoLinesLayout.Label + label1.TextSize = 15 + label1.TextColor = Colors.Black + Dim label2 As Label + label2 = lv_promos.TwoLinesLayout.SecondLabel + label2.TextSize = 15 + label2.TextColor = Colors.Black + Dim label13 As Label + label13 = lv_promos.TwoLinesAndBitmap.Label + label13.TextSize = 15 + label13.TextColor = Colors.Black + Dim label14 As Label + label14 = lv_promos.TwoLinesAndBitmap.SecondLabel + label14.TextSize = 15 + label14.TextColor = Colors.Black + lfila.text = "PROMOS" + If c2.RowCount > 0 Then + For i=0 To c2.RowCount -1 + c2.Position=i + Private tm As Map = Subs.procesaPromocion(c2.GetString("CAT_GP_ID"), clienteId) + If tm.Get("status") = "ok" Then 'Solo muestrala si hay producto. + lv_promos.AddTwoLines(c2.GetString("CAT_GP_NOMBRE"),"# " & c2.GetString("CAT_GP_ALMACEN") & " $ " & c2.GetString("CAT_GP_PRECIO") & " F:" & tm.Get("mp").As(Map).Get("prodsFijosCant") & " V:" & tm.Get("mp").As(Map).Get("prodsVariablesCant")) + End If + Next + End If + c2.Close + End If + entro = "4" +End Sub + +Sub lv_promos_ItemClick (Position As Int, Value As Object) + clv_prods_ll.AsView.Visible = False + Dim cliente As C_Cliente = B4XPages.GetPage("Cliente") +' Log($"Entro=${entro}, value=${Value}, cuenta=${cliente.cuenta}"$) + If Value = "PROMOS" And cliente.cuenta <> "N" Then + entro = "3" + marca = "PROMOS" + tipo = "PROMOS" + Else if Value = "PROMOS" And cliente.cuenta = "N" Then + entro = "5" + Subs.iniciaActividad("Cliente") +' B4XPages.ShowPage("Cliente") + End If + If entro = "3" Then + 'xxxxxxxxxxxxxxxxxxxxx + Else If entro = "4" Then +' Log("Entro = 4") + Starter.skmt.ExecNonQuery("delete from PROID") + Starter.skmt.ExecNonQuery2("INSERT INTO PROID VALUES (?)", Array As Object(Value)) + Dim promos As C_Promos = B4XPages.GetPage("Promos") + promos.laPromo = Subs.traeProdIdDeBD.Get("id") + promos.elCliente = Subs.traeUsuarioDeBD + B4XPages.ShowPage("Promos") + End If +End Sub + +'Generamos la lista de productos. +Sub llenaCatalogo(subtipo1 As String) +' Log("LlenaCatalogo") +' Private c2 As Cursor +' c2=starter.skmt.ExecQuery2("select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG, CAT_GP_TIPOPROD, CAT_GP_INICIATIVA from cat_gunaprod where CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_TIPOPROD <> 'PROMOS' and CAT_GP_SUBTIPO = ? ", Array As String(subtipo1)) +' Private bgColor, textColor As Int +' If c2.RowCount > 0 And clv_productos.Size <> c2.RowCount Then +' clv_productos.Clear : Log("limpiamos productos") +' For i=0 To c2.RowCount -1 +' c2.Position=i +' If c2.GetString("CAT_GP_TIPOPROD") = "PRIORITARIO" Then +' bgColor = Colors.RGB(255, 212, 163) 'naranja +' Else If c2.GetString("CAT_GP_TIPOPROD") = "COMPLEMENTARIO" Then +' bgColor = Colors.RGB(177, 200, 249)'azul +' else If c2.GetString("CAT_GP_TIPOPROD") = "CATALOGO REGULAR" Then +' bgColor = Colors.White +' else If c2.GetString("CAT_GP_TIPOPROD") = "ESTRATEGICO" Then +' bgColor = Colors.RGB(241, 255, 163) 'amarillo +' End If +' textColor = Colors.Black +' clv_productos.Add(CreateListItem(c2.GetString("CAT_GP_NOMBRE"), c2.GetString("CAT_GP_PRECIO"), c2.GetString("CAT_GP_ALMACEN"), clv_productos.AsView.Width, 60dip, bmp, c2.GetString("CAT_GP_ID"), bgColor, textColor), c2.GetString("CAT_GP_NOMBRE")) +' Next +' End If +' c2.Close +End Sub + +Private Sub B4XPage_CloseRequest As ResumableSub +' BACK key pressed +' Return True To close, False To cancel + If p_rmi.Visible Then p_rmi.Visible = False + If l_info.Visible Then + l_info.Visible = False + Return False + else if p_vistaPreviaTrans.Visible Then + p_vistaPreviaTrans.Visible = False + Return False + else if lv_promos.visible Then + lv_promos.Visible = False + lv_catalogos.Visible = True + p_botonesVenta.Visible = False +' l_total.Visible = False +' l_totProds.Visible = False + Return False + else if clv_prods_ll.AsView.Visible Then + lfila.text = "CATALOGO" + clv_prods_ll.AsView.Visible = False + lv_subtipo.Visible = False + p_botonesVenta.Visible = False +' l_total.Visible = False +' l_totProds.Visible = False + lv_catalogos.Visible = True + Return False + else If entro = "4" Then + entro = "3" + B4XPage_Appear + Return True + Else If entro = "3" Then + Subs.iniciaActividad("Cliente") +' B4XPages.ShowPage("Cliente") + Return False + Else + Subs.iniciaActividad("Cliente") +' B4XPages.ShowPage("Cliente") + Return False + End If +End Sub + +Sub b_QR_Click + If ciclo = 1 Then + ciclo = 2 + ya_entro = "0" + B4XPage_Appear + else if ciclo = 2 Then + ciclo = 3 + ya_entro = "0" + B4XPage_Appear + else if ciclo = 3 Then + ciclo = 4 + ya_entro = "0" + B4XPage_Appear + else if ciclo = 4 Then + ciclo = 5 + ya_entro = "0" + B4XPage_Appear + else if ciclo = 5 Then + ciclo = 1 + ya_entro = "0" + B4XPage_Appear + End If +End Sub + +'**************************************************************************** +'***************** PARA EL MAS/MENOS ************************************* +'**************************************************************************** +Sub CreateListItem(Text As String, precioU As String, inv As Int, Width As Int, Height As Int, img As Bitmap, prodId As String, bc As Int, tc As Int) As Panel +' Dim p As B4XView = xui.CreatePanel("") +' p.SetLayoutAnimated(0, 0, 0, Width, Height) +' p.LoadLayout("prodItem") +' p_prods.Color = bc +' l_prodX.TextColor = tc +' l_prodX.TextSize = 15 +' p_prods.Height = Height +' l_prodX.Height = Height +' l_prodX.Text = Text&CRLF&"# " & inv & " $ " & precioU +' l_prodX.Tag = $"ID: ${prodId}${CRLF}${Text}${CRLF}Precio: $$1.2{precioU}${CRLF}Inv: ${inv} pzs"$ +' l_pCant.Tag = precioU&"|"&inv&"|"&prodId +' et_pCant.Tag = precioU&"|"&inv&"|"&prodId +' et_pCant.BringToFront +' Return p +End Sub + +Sub b_prodMenos_Click + etCantHasFocus = False +' Log(Sender.As(Button).text & "|" & Sender.As(Button).tag) + Private buttonTag As String = Sender.As(Button).tag + LogColor("b_prodMenos_Click", Colors.Magenta) + Dim index As Int = clv_prods_ll.GetItemFromView(Sender) + Private inv As Int = clv_prods_ll.GetValue(index).As(Map).Get("almacen") + Dim pnl0 As B4XView = clv_prods_ll.GetPanel(index) + Dim pnl As B4XView = pnl0.GetView(0) + Dim laCant As B4XView = pnl.GetView(2).GetView(2) +' Log($"precio|stock:${laCant.tag}"$) +' Log("lacant.text="&laCant.text & "|" & buttonTag) + If buttonTag = "vendido" And laCant.Text > 0 Then + Log(clv_prods_ll.GetValue(index).As(Map)) + clv_prods_ll.GetValue(index).As(Map).Put("almacen",inv + 1) + Log(clv_prods_ll.GetValue(index).As(Map)) +' clv_prods_ll.GetValue(index).As(Map).Get("almacen") = clv_prods_ll.GetValue(index).As(Map).Get("almacen") + 1 + End If + If laCant.Text = "" Then laCant.Text = 0 + laCant.Text = $"$1.0{laCant.Text - 1}"$ + If laCant.Text < 0 Then laCant.Text = 0 + Private tmpMap As Map = clv_prods_ll.GetValue(index).As(Map) + Private precio As String=clv_prods_ll.GetValue(index).As(Map).Get("precio") + Private id As String=clv_prods_ll.GetValue(index).As(Map).Get("id") + Private tmpMap As Map = CreateMap("precio":precio, "cant":laCant.Text, "almacen":Subs.traeAlmacen) +' Log(tmpMap) + prodsMap.Put(id, tmpMap) + If laCant.Text = 0 Then prodsMap.Remove(id) +' LogColor("prodsMap="&prodsMap, Colors.blue) +' (Subs.traeAlmacen, p1.Get("precio"), p1.Get("cant"), pn, p, clienteId, Subs.traeFecha, Subs.traeUsuarioDeBD, rutaUsuario, 0, B4XPages.MainPage.tipo_venta) + Private almacenX As String = Subs.traeAlmacen + Private nombreX As String = Subs.traeProdNombre(id) + Private precioX As String = precio + If lfila.Text = "RMI" Then + almacenX = "DUR" + nombreX = "CAMBIO"&Subs.traeRMINombre(id) + precioX = precioX * -1 + End If + Subs.actualizaProducto(almacenX, precioX, laCant.text, nombreX, id, clienteId, Subs.traeFecha, Subs.traeUsuarioDeBD, rutaUsuario, 0, Starter.tipov) + cuentaProds + If Subs.totalPedido < 1 Then laCant.Text = "0" +' Log($"Total Prods: ${totalProds}, Total Compra: $$1.2{totalCompra}"$) +End Sub + +Sub b_prodMas_Click + etCantHasFocus = False + Private buttonTag As String = Sender.As(Button).tag + Dim index As Int = clv_prods_ll.GetItemFromView(Sender) + LogColor("b_prodMas_Click", Colors.Magenta) + Dim pnl0 As B4XView = clv_prods_ll.GetPanel(index) + Dim pnl As B4XView = pnl0.GetView(0) + Dim laCant As B4XView = pnl.GetView(2).GetView(2) + If laCant.Text = "" Then laCant.Text = 0 + Private tmpMap As Map = clv_prods_ll.GetValue(index).As(Map) + Private precio As String=clv_prods_ll.GetValue(index).As(Map).Get("precio") + Private inv As Int = clv_prods_ll.GetValue(index).As(Map).Get("almacen") + If buttonTag = "vendido" Then + If inv > 0 And (laCant.Text + 1 <= inv) And (Subs.totalPedido - precio > 1) Then +' Log(clv_prods_ll.GetValue(index).As(Map)) + clv_prods_ll.GetValue(index).As(Map).Put("almacen", (inv - 1)) + inv = inv - 1 + laCant.Text = $"$1.0{laCant.Text+1}"$ +' Log(clv_prods_ll.GetValue(index).As(Map)) + End If + else If laCant.Text + 1 <= inv And lfila.Text = "PRODUCTOS" Then +' LogColor(inv, Colors.blue) + laCant.Text = $"$1.0{laCant.Text + 1}"$ + Log(Subs.totalPedido) + else If lfila.Text = "RMI" And laCant.Text + 1 <= inv And (Subs.totalPedido - precio > 1) Then +' LogColor(inv, Colors.blue) + laCant.Text = $"$1.0{laCant.Text + 1}"$ + Log(Subs.totalPedido) + else if Subs.totalPedido < 1 Then + laCant.Text = "0" + End If + Private id As String=clv_prods_ll.GetValue(index).As(Map).Get("id") + Private almacenX As String = Subs.traeAlmacen + Private nombreX As String = Subs.traeProdNombre(id) + Private precioX As String = precio + If lfila.Text = "RMI" Then + almacenX = "DUR" + nombreX = "CAMBIO"&Subs.traeRMINombre(id) + precioX = precioX * -1 + End If + Subs.actualizaProducto(almacenX, precioX, laCant.text, nombreX, id, clienteId, Subs.traeFecha, Subs.traeUsuarioDeBD, rutaUsuario, 0, Starter.tipov) + cuentaProds + If Subs.totalPedido < 1 Then + etCantHasFocus = True + Log("A CERO") + laCant.Text = "0" + et_pCant_TextChanged(100, 0) + End If +' Log($"Total Prods: ${totalProds}, Total Compra: $$1.2{totalCompra}"$) +End Sub + +Private Sub et_pCant_TextChanged (Old As String, New As String) +' LogColor($"txt changed: ${Old}|${New}, hasfocus=${etCantHasFocus}"$,Colors.Magenta) +' If Not(Old = "0" And New = "") And etCantHasFocus Then cuentaProds + + If etCantHasFocus = True Then + Try +' LogColor($"txt changed: ${Old}|${New}, hasfocus=${etCantHasFocus}"$,Colors.Magenta) + Dim index As Int = clv_prods_ll.GetItemFromView(Sender) + Dim pnl0 As B4XView = clv_prods_ll.GetPanel(index) + Dim pnl As B4XView = pnl0.GetView(0) + Dim laCant As B4XView = pnl.GetView(2).GetView(2) + Private id As String=clv_prods_ll.GetValue(index).As(Map).Get("id") + Private precio As String=clv_prods_ll.GetValue(index).As(Map).Get("precio") + Log("++++++++++ " & precio) + Dim tempTot As String = Subs.totalPedido + Dim disp As String = 0 + If tempTot > 0 Then disp = (Subs.totalPedido / precio) - 1 + disp = NumberFormat2(disp, 1, 0, 0, False) + + Log($"${laCant.text}, ${precio}, DISPONIBLES: ${disp}"$) + Private inv As String=clv_prods_ll.GetValue(index).As(Map).Get("almacen") + Private inv As String=clv_prods_ll.GetValue(index).As(Map).Get("almacen") + If(New = "" Or New = Null) Then New = 0 + If(New > inv) Then + Sender.As(EditText).text = inv + End If + Private almacenX As String = Subs.traeAlmacen + Private nombreX As String = Subs.traeProdNombre(id) + Private precioX As String = precio + If lfila.Text = "RMI" Then + almacenX = "DUR" + nombreX = "CAMBIO"&Subs.traeRMINombre(id) + precioX = precioX * -1 + Log("RMI") + Else +' elProd = Subs.traeProdNombre(id) + Log("NO RMI") + End If + ' Log($"inventario=${inv}"$) +' Dim tmpCant As String = laCant.text + If laCant.Text = "" Then laCant.Text = "0" + If laCant.Text > disp Then + Log($"Ponemos laCant en: ${disp}"$) +' laCant.Text = "" + laCant.text = "0" +' etCantHasFocus = True + End If + If Not(Old = "0" And New = "") And laCant.Text <> Null And laCant.Text <> "" And etCantHasFocus Then + Subs.actualizaProducto(almacenX, precioX, laCant.Text, nombreX, id, clienteId, Subs.traeFecha, Subs.traeUsuarioDeBD, rutaUsuario, 0, B4XPages.MainPage.tipo_venta) + cuentaProds + End If + Catch + Log(LastException) + End Try +' etCantHasFocus = False +' laCant.text = "" +' laCant.text = tmpCant +' cuentaProds +' Log(laCant.text) +' Sender.As(EditText).text = disp + End If +End Sub + +Private Sub et_pCant_FocusChanged (HasFocus As Boolean) +' LogColor($"focus changed=${HasFocus}"$, Colors.Magenta) + etCantHasFocus = HasFocus + cuentaProds +End Sub + +Sub cuentaProds + 'LogColor($"Productos de la orden: ${c_prodsX.GetString("cantProds")}, Total: ${c_prodsX.GetString("costoTotal")}"$, Colors.red) +' Log("===========================") + Private c As Cursor = Starter.skmt.ExecQuery($"select sum(PE_COSTO_TOT) as total, sum(PE_CANT) as cant from PEDIDO where PE_CLIENTE = '${clienteId}'"$) +' LogColor("TIEMPO cuentaProds =" & ((DateTime.Now-inicioContador)/1000), Colors.Red) +' LogColor(prodsMap, Colors.Magenta) + p_botonesVenta.Visible = True + p_botonesVenta.BringToFront + c.Position=0 + If Subs.totalPedido > 1 And lfila.Text <> "RMI" And Starter.tipov <> "ABORDO" Then b_rmi.Visible = True Else b_rmi.Visible = False + Log(Subs.totalPedido) + If lfila.Text = "RMI" Then l_mDisponible.Visible = True Else l_mDisponible.Visible = False + l_mDisponible.Text = $"Disponible: $${Subs.totalPedido}"$ +' Log($"Total Prods: ${c.GetString("cant")}, Total Compra: $$1.2{c.GetString("total")}"$) + c.Close +End Sub + +Sub b_terminar1_Click +' Log("b_terminar1_Click") +' ya_entro = "0" : Log("ya_entro=1") + Private totalPedido As String = 0 + Private cantPedido As String = 0 + lv_promos.Visible = False + clv_prods_ll.AsView.Visible = False + lv_catalogos.Visible = True + Subs.agrupador + lv_prodsPedido.Clear + list_prodsPedido.Initialize + Private c_prods As Cursor=Starter.skmt.ExecQuery("select PE_PRONOMBRE,PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_FOLIO, PE_CEDIS, PE_PROID FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa) order by PE_CEDIS, PE_PRONOMBRE") + Log(c_prods.RowCount) + If c_prods.RowCount > 0 Then + c_prods.Position = 0 +' l_total2.Text = c_prods.GetString("PE_COSTO_TOT") + lv_prodsPedido.BringToFront + Private cs As CSBuilder + For i = 0 To c_prods.RowCount -1 + cs.Initialize + c_prods.Position = i + Dim label1 As Label +' lv_prodsPedido.TwoLinesLayout.ItemHeight = 50dip + label1 = lv_prodsPedido.TwoLinesLayout.Label + label1.TextSize = 14 + label1.TextColor = Colors.Black + label1.color = Colors.White + label1.Height = 30dip + Private textColor As Int = Colors.black + Log(c_prods.GetString("PE_CEDIS")) + If Not(IsNumber(c_prods.GetString("PE_CEDIS"))) Then textColor = Colors.RGB(210,105,30) 'Si es promo, cambiamos el color del texto. + If c_prods.GetString("PE_CEDIS") = "DUR" Then textColor = Colors.red 'Si es promo, cambiamos el color del texto. + Dim label2 As Label + label2 = lv_prodsPedido.TwoLinesLayout.SecondLabel + label2.TextSize = 10 + label2.TextColor = Colors.Blue + label2.Tag = i + Log(c_prods.GetString("PE_PRONOMBRE")) + lv_prodsPedido.AddTwoLines(cs.Color(textColor).append(c_prods.GetString("PE_PRONOMBRE")).pop,"Cantidad #"& c_prods.GetString("PE_CANT")& " SubTotal $"& c_prods.GetString("PE_COSTO_TOT")& " Folio "& c_prods.GetString("PE_FOLIO")) + list_prodsPedido.Add(CreateMap("prodNom":c_prods.GetString("PE_PRONOMBRE"), "cedis":c_prods.GetString("PE_CEDIS"), "prodId": c_prods.GetString("PE_PROID"), "cant": c_prods.GetString("PE_CANT"))) + folio = 0 + totalPedido = totalPedido + (c_prods.GetString("PE_COSTOU") * c_prods.GetString("PE_CANT")) + Log("|" & Subs.esPromo(c_prods.GetString("PE_PROID")) & "|") + If Not(Subs.esPromo(c_prods.GetString("PE_PROID"))) Then cantPedido = cantPedido + c_prods.GetString("PE_CANT") + If c_prods.GetString("PE_FOLIO") <> Null Then folio = c_prods.GetString("PE_FOLIO") + Next + c=Starter.skmt.ExecQuery("select pc_noart, pc_monto from pedido_cliente where pc_cliente in (Select CUENTA from cuentaa)") + C.Position=0 +' l_cant.Text = c.GetString("PC_NOART") + c.Close + End If +' Log(list_prodsPedido) + c_prods.Close + l_total2.Text = $"$1.2{totalPedido}"$ + l_cant.Text = cantPedido + If Subs.revisaImpresa Then b_rechazar.Visible = False Else b_rechazar.Visible = True + p_vistaPreviaTrans.Width = Root.Width + p_vistaPreviaTrans.Height = Root.Height + Subs.centraPanel(p_vistaPrevia, Root.Width) + p_vistaPrevia.Visible=True + p_vistaPreviaTrans.Visible=True +End Sub + +Private Sub b_continuar_Click +' Log("b_continuar_Click") + cuentaProds +' Private p1 As Map +' Log("prodsMap="&prodsMap) +' For Each p As String In prodsMap.Keys +' p1 = prodsMap.Get(p) +' Log(p & "|" & p1) +' Private pn As String = Subs.traeProdNombre(p) +' If pn <> "N/A" Then +' LogColor("INSERTAMOS PROD Continuar", Colors.red) +' Subs.guardaProductoSinGestion(Subs.traeAlmacen, p1.Get("precio"), p1.Get("cant"), pn, p, clienteId, Subs.traeFecha, Subs.traeUsuarioDeBD, rutaUsuario, 0, Starter.tipov) +' End If +' Next +' Log("promos-inv, prods-inv, cat-vis") + lv_promos.Visible = False + clv_prods_ll.AsView.Visible = False + lv_subtipo.Visible = False + lv_tipo.Visible = False + lv_catalogos.Visible = True + Log("Continuar") + Dim m As Map = Subs.traeTotalesClienteActual + prodsPedidoActual = m.Get("productos") + montoPedidoActual = m.Get("monto") +' LlenaProdsLL(Null) +' BUSCA.Text = " " +End Sub + +Private Sub l_info_Click + l_info.Visible = False +End Sub + +Private Sub lv_promos_ItemLongClick (Position As Int, Value As Object) + Log("Promo longclic = "&Value) + Private id As String = "" + Dim c As Cursor = Starter.skmt.ExecQuery($"select CAT_GP_ID from cat_gunaprod where CAT_GP_TIPO = 'PROMOS' and CAT_GP_NOMBRE = '${Value}'"$) + If c.RowCount > 0 Then + c.Position = 0 + id = c.GetString("CAT_GP_ID") + End If + l_info.Text = $"ID: ${id}${CRLF}${Value}"$ + l_info.Visible = True +End Sub + +Private Sub b_buscar_Click + forzarBusqueda = True + Busca_TextChanged("",BUSCA.Text) +End Sub + +Private Sub lv_tipo_ItemClick (Position As Int, Value As Object) +' lfila.text = "SUB TIPO" +' lv_tipo.Visible = False +' lv_subtipo.Height = Root.Height * 0.7 +' lv_subtipo.Visible = True +' Private c As Cursor = starter.skmt.ExecQuery2("select distinct CAT_GP_SUBTIPO from cat_gunaprod where CAT_GP_TIPO = ? order by CAT_GP_SUBTIPO", Array As String(Value)) +' If c.RowCount > 0 Then +' Dim label1 As Label +' label1 = lv_subtipo.SingleLineLayout.Label +' label1.TextSize = 17 +' label1.TextColor = Colors.Black +' lv_subtipo.Clear +' For i=0 To c.RowCount-1 +' c.Position=i +' lv_subtipo.AddSingleLine(c.GetString("CAT_GP_SUBTIPO")) +' Next +' End If +' c.Close +End Sub + +Private Sub lv_subtipo_ItemClick (Position As Int, Value As Object) +' lfila.text = "SUB TIPO" +' LogColor("Catalogo", Colors.red) +' lv_catalogos.Visible = False +' lv_subtipo.Visible = False +' lv_promos.Visible = False +' lfila.text = "CATALOGO" +' ProgressDialogShow("Cargando catalogo ...") +' Sleep(100) +' Private inicioContador As String = DateTime.Now +' llenaCatalogo(Value) +' clv_prods_ll.AsView.Visible = True +' LogColor("TIEMPO DE PROCESO DEL CATALOGO: " & ((DateTime.Now-inicioContador)/1000), Colors.Red) +' ProgressDialogHide +End Sub + +Private Sub p_vistaPreviaTrans_Click + +End Sub + +Private Sub b_rechazar_Click + If folio <> "" Then + result = Msgbox2($"Seguro que desea borrar el pedido completo?${CRLF}Haciendo clic largo sobre un producto se pueden borrar articulos por separado."$,"Rechazar Pedido", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore + If result = DialogResponse.POSITIVE Then + Subs.borraPedidoClienteActual + prodsMap.Initialize + B4XPages.MainPage.promos.promosMap.Initialize +' Log("Llamamos LlenaProdsLL") + LlenaProdsLL(Null, Null) +' Log("Positivo") + Subs.iniciaActividad("Cliente") +' B4XPages.ShowPage("Cliente") + Else +' Log("NO Positivo") + p_vistaPreviaTrans.Visible = False + End If + Else + Msgbox("LA VENTA YA SE TRANSMITIO, FAVOR DE LLAMAR A SOPORTE PARA ASISTENCIA","AVISO") 'ignore + End If + p_vistaPreviaTrans.Visible=False + Subs.iniciaActividad("Cliente") +' B4XPages.ShowPage("Cliente") +End Sub + +Private Sub b_aceptar_Click +' Log(listaProds) + Private p As Cursor = Starter.skmt.ExecQuery("select count(pe_costo_tot) as total FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") + p.Position = 0 +' LogColor(p.GetString("total"), Colors.red) + If p.GetString("total") < 1 Then LlenaProdsLL(Null, Null) + p_vistaPreviaTrans.Visible=False + Subs.iniciaActividad("Cliente") +' B4XPages.ShowPage("Cliente") +End Sub + +Private Sub lv_prodsPedido_ItemLongClick (Position As Int, Value As Object) + c=Starter.skmt.ExecQuery("select count(*) as CUANTOS from CLIENTE_IMPRESO where CI_CUENTA in (Select CUENTA from cuentaa)") + c.Position = 0 + Log(list_prodsPedido) + Log("lista prods="&list_prodsPedido.Get(Position)) + Private m As Map = list_prodsPedido.Get(Position) + Log("m1= "&m) + If c.GetString("CUANTOS") = 0 Or Subs.clienteActual = "0" Then 'Si la venta no está impresa o es abordo entonces continuamos ... + Private sDate,sTime, clie_id, usuario As String + result = Msgbox2("Seguro que desea borrar este articulo?","Borrar Articulo", "Si", "", "No",LoadBitmap(File.DirAssets,"alert2.png")) 'ignore + If result = DialogResponse.POSITIVE Then + Private prod As Cursor=Starter.skmt.ExecQuery2("select PE_PROID, PE_CANT, PE_CEDIS FROM PEDIDO where pe_pronombre = ? and pe_cliente in (Select CUENTA from cuentaa) ", Array As String(Value)) + prod.Position=0 + Log("m2= " & m) + c.Close + Log($"Buscamos: ${Value}, ${m.Get("cedis")}"$) + c=Starter.skmt.ExecQuery2("select count(*) AS CUANTOS from cat_gunaprod2 where CAT_GP_ID in (select pe_cedis from pedido where pe_pronombre = ? and pe_cedis = ? 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, m.Get("cedis"))) + c.Position=0 + If c.GetString("CUANTOS") > 0 Then + Log($"Borramos de PROMO ${Value}"$) + Private pPromos As Cursor = Starter.skmt.ExecQuery($"select pe_proid, pe_cant from pedido where pe_cedis = '${m.Get("cedis")}'"$) + For tp = 0 To pPromos.RowCount - 1 + pPromos.Position = tp + Log($"SUMAMOS ${pPromos.GetString("PE_CANT")} a ${pPromos.GetString("PE_PROID")} "$) + Starter.skmt.ExecNonQuery($"update ${Subs.traeTablaProds(Starter.tipov)} set cat_gp_almacen = cat_gp_almacen + ${pPromos.GetString("PE_CANT")} where cat_gp_id = '${pPromos.Getstring("PE_PROID")}'"$) + Next + Starter.skmt.ExecNonQuery2("delete from pedido where pe_cedis in (select pe_cedis from pedido where PE_CEDIS = ? and pe_pronombre = ?) and pe_cliente in (Select CUENTA from cuentaa)", Array As Object(m.Get("cedis"), Value)) + Else + Log($"SUMAMOS ${m.get("cant")} a ${m.get("prodId")} "$) + Starter.skmt.ExecNonQuery2($"update ${Subs.traeTablaProds(Starter.tipov)} set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?"$, Array As Object(m.get("cant"), m.get("prodId"))) + Log($"BORRAMOS ${Value}, ${m.Get("cedis")}"$) + Starter.skmt.ExecNonQuery2("delete from pedido where pe_pronombre = ? and pe_cedis = ? and pe_cant = ? and pe_cliente in (Select CUENTA from cuentaa)", Array As Object(Value, m.Get("cedis"), m.Get("cant"))) + End If + prod.Close + DateTime.DateFormat = "MM/dd/yyyy" + sDate=DateTime.Date(DateTime.Now) + sTime=DateTime.Time(DateTime.Now) + c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa") + c.Position=0 + clie_id = c.GetString("CUENTA") + c=Starter.skmt.ExecQuery("select USUARIO from usuarioa") + c.Position=0 + usuario = c.GetString("USUARIO") + c=Starter.skmt.ExecQuery("select sum(pe_costo_tot) as TOTAL_CLIE, SUM(PE_CANT) AS CANT_CLIE, count(*) as CUANTOS FROM PEDIDO WHERE PE_CLIENTE IN (Select CUENTA from cuentaa)") + c.Position=0 + If c.GetString("CUANTOS") > 0 Then + Log($"============== TOTAL = ${c.GetString("TOTAL_CLIE")}"$) + If c.GetString("TOTAL_CLIE") < 1 Then + Starter.skmt.ExecNonQuery("delete from pedido where PE_PRONOMBRE like 'CAMBIO%' and PE_CLIENTE In (select cuenta from cuentaa)"$) + End If + + Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") + Starter.skmt.ExecNonQuery2("insert into pedido_cliente(PC_CLIENTE, PC_FECHA, PC_USER, PC_NOART, PC_MONTO,PC_LON, PC_LAT) VALUES (?,?,?,?,?,?,?)", Array As Object(clie_id, sDate & sTime, usuario, c.GetString("CANT_CLIE"),c.GetString("TOTAL_CLIE"), B4XPages.MainPage.lon_gps, B4XPages.MainPage.lat_gps)) + Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 2 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + Else + Starter.skmt.ExecNonQuery("delete from pedido_cliente where PC_CLIENTE In (select cuenta from cuentaa)") + Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + End If + b_terminar1_Click + End If + Else + ToastMessageShow("Esta venta ya esta impresa, no se puede editar ni borrar.", False) + End If +End Sub + +Private Sub clv_prods_ll_ItemClick (Index As Int, Value As Object) + +End Sub + +Sub l_prodX_Click + Log("l_prodx clicked") + l_info.Text = Sender.as(Label).text + Log(Sender.as(Label).tag) + l_info.BringToFront + l_info.Visible = True +' Dim index As Int = clv_prods_ll.GetItemFromView(Sender) +' Private p0 As B4XView = clv_prods_ll.GetPanel(index) +' Private p As B4XView = p0.GetView(0) +' Private cant1 As B4XView = p.GetView(2).GetView(2) +' Dim index As Int = clv_prods_ll.GetItemFromView(Sender) + '' Log(clv_prods_ll.GetValue(index)) +' Log(cant1.Text) +End Sub + +Private Sub l_prodX_LongClick + '' Log("longClic = "&Sender.as(Label).Text) +' If Subs.traeCliente <> 0 Then +' Dim index As Int = clv_prods_ll.GetItemFromView(Sender) +' Private pId As String = clv_prods_ll.GetValue(index).As(Map).Get("id") +' Private pNombre As String = clv_prods_ll.GetValue(index).As(Map).Get("prod") +' Private t As Cursor = Starter.skmt.ExecQuery("select sum(PE_COSTO_TOT) as ventaTotal from pedido where PE_CLIENTE in (Select CUENTA from cuentaa)") +' t.Position = 0 +' Private ventaT As String = t.GetString("ventaTotal") +' If ventaT = Null Then ventaT = 0 +' If ventaT > 0 Then +' t = Starter.skmt.ExecQuery("select sum(PE_PRECIO2) as totalRMI from pedido where PE_PRONOMBRE like 'CAMBIO%' and PE_CLIENTE in (Select CUENTA from cuentaa)") +' t.Position = 0 +' Private totalRMI As String = t.GetString("totalRMI") +' If totalRMI = Null Then totalRMI = 0 +' l_rmi_nombre.Text = Sender.as(Label).Text +' Private pu0() As String = Regex.Split("\$", Sender.as(Label).Text) +' Private pu As String +' If pu0.Length > 1 Then pu = pu0(pu0.Length-1) Else pu = 0 + '' Log(ventaT & ", " & totalRMI & ", " & Sender.as(Label).tag & ", " & pu) +' l_rmi_usado.Text = $"RMI usado: $$1.2{(totalRMI)}"$ +' l_montoDisponible.Text = $"Disponible para RMI: $$1.2{(ventaT-totalRMI)}"$ +' Private m As Map = CreateMap("disponible":(ventaT-totalRMI), "inv":Sender.as(Label).tag, "totalRMI":totalRMI, "pu":pu, "id":pId, "nombre":pNombre) +' rmiMap = m +' ' b_rmi_mas.Tag = m +' ' b_rmi_menos.Tag = m +' ' b_rmi_aceptar.Tag = m +' Subs.centraPanel(p_rmi, Root.Width) +' l_rmi_cant.Text = 0 +' l_rmi_total.text = "" +' p_rmi.BringToFront +' p_rmi.Visible = True +' Else +' ToastMessageShow("No hay venta suficiente para RMIs", True) +' End If +' End If +End Sub + +Private Sub clv_prods_ll_VisibleRangeChanged (FirstIndex As Int, LastIndex As Int) +' Private inicioContador As String = DateTime.Now +' Log($"clv_prods_ll_VisibleRangeChanged : ${FirstIndex}, ${LastIndex} "$) + Dim ExtraSize As Int = 30 'List size + For i = Max(0, FirstIndex - ExtraSize) To Min(LastIndex + ExtraSize, clv_prods_ll.Size - 1) + Dim Pnl As B4XView = clv_prods_ll.GetPanel(i) + If i > FirstIndex - ExtraSize And i < LastIndex + ExtraSize Then +' Log(listaRenglones) + If Pnl.NumberOfViews = 0 Then 'Add each item/layout to the list/main layout + Pnl.LoadLayout("proditem") + p_prods.Width = Root.Width * 0.90 + p_botMasMen.Left = p_prods.Width - (p_botMasMen.Width + 5) + Pnl.Height = p_prods.Height + Private cs As CSBuilder + cs.Initialize + l_prodX.Width = p_prods.Width - p_botMasMen.Width + l_prodX.SetTextSizeAnimated(0, 13) + If clv_prods_ll.GetValue(i).As(Map).Get("cant") <> Null And clv_prods_ll.GetValue(i).As(Map).Get("cant") > 0 Then + p_prods.Color=0xFFE2EEFF + et_pCant.TextColor=Colors.Red +' Log("VENDIDO ") + b_prodMenos.Tag = "vendido" + b_prodMas.Tag = "vendido" + If Subs.revisaImpresa Then + Log("YA IMPRESO") + et_pCant.Enabled = False +' b_prodMas.Enabled = False + b_prodMenos.Enabled = False + End If + End If + Private precio As String=NumberFormat2(clv_prods_ll.GetValue(i).As(Map).Get("precio").As(Double),1,2,2,False) + If clv_prods_ll.GetValue(i).As(Map).Get("cant") <> Null Then et_pCant.Text = clv_prods_ll.GetValue(i).As(Map).Get("cant") + l_prodX.Text = cs.Color(Colors.red).append(clv_prods_ll.GetValue(i).As(Map).Get("prod")).pop.append(CRLF).Append("Existencias: " & clv_prods_ll.GetValue(i).As(Map).Get("almacen")).Color(0xFF017F01).Append($" $${precio}"$).Popall + l_prodX.Tag = clv_prods_ll.GetValue(i).As(Map).Get("almacen") + l_pCant.Tag = clv_prods_ll.GetValue(i).As(Map).Get("id") + End If +' Log($"${i}, ${FirstIndex}, ${LastIndex}, ${Pnl.NumberOfViews}. ${clv_prods_ll.Size}"$) + Else 'Not visible + ' If Pnl.NumberOfViews > 0 Then + ' Pnl.RemoveAllViews 'Remove none visable item/layouts from the list/main layout + ' End If + End If + PCLV.B4XSeekBar1.Value = clv_prods_ll.Size - FirstIndex +' Log($"Bar value: ${PCLV.B4XSeekBar1.Value}"$) + Next +End Sub + +Sub Busca_TextChanged (Old As String, New As String) +' Private inicioContador As String = DateTime.Now + If (New.Length = 1 Or New.Length = 2) And Not(forzarBusqueda) Then Return + forzarBusqueda = False + If lfila.text = "PROMOCIONES" Then + If Not(lv_promos.Visible) Then lv_promos.Visible = True + Private cPromo As Cursor=Starter.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG from ${query} where CAT_GP_NOMBRE like '%${New}%' and CAT_GP_ALMACEN > 0 AND CAT_GP_TIPO = 'PROMOS' AND CAT_GP_SUBTIPO = 'PROMOS' AND CAT_GP_TIPOPROD <> 1 and (length(CAT_GP_CODPROMO) = 1 OR CAT_GP_CODPROMO = CAT_GP_ID)"$) + Log($"res:${cPromo.RowCount}"$) + If cPromo.RowCount > 0 Then + lv_promos.Clear + For i=0 To cPromo.RowCount -1 + cPromo.Position=i + Private tm As Map = Subs.procesaPromocion(cPromo.GetString("CAT_GP_ID"), clienteId) + If tm.Get("status") = "ok" Then 'Solo muestrala si hay producto. + lv_promos.AddTwoLines(cPromo.GetString("CAT_GP_NOMBRE"),"# " & cPromo.GetString("CAT_GP_ALMACEN") & " $ " & cPromo.GetString("CAT_GP_PRECIO") & " F:" & tm.Get("mp").As(Map).Get("prodsFijosCant") & " V:" & tm.Get("mp").As(Map).Get("prodsVariablesCant")) + End If + Next + Else + ToastMessageShow("No hay promociones disponibles.", False) + End If + cPromo.Close + Else + If Not(clv_prods_ll.AsView.Visible) Then clv_prods_ll.AsView.Visible = True + clv_prods_ll.Clear + listaProds.Initialize + listaHints.Initialize + Sleep(0) + Dim p As ResultSet = Starter.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD from CAT_GUNAPROD2 where CAT_GP_NOMBRE like '%${New}%' and CAT_GP_PRECIO > 0 AND CAT_GP_ALMACEN > 0 and CAT_GP_CLASIF <> 'PROMOS' order by CAT_GP_NOMBRE"$) + ' c2= Starter.skmt.ExecQuery2("select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, CAT_GP_ALMACEN, CAT_GP_IMG from " & query & " where CAT_GP_ALMACEN > 0 AND CAT_GP_TIPO = ? AND CAT_GP_SUBTIPO =? AND CAT_GP_TIPOPROD <> 1 and (length(CAT_GP_CODPROMO) = 1 OR CAT_GP_CODPROMO = CAT_GP_ID) ", Array As String( Value, Value) + Log("Llamamos LlenaProdsLL") + LlenaProdsLL(p, Null) + End If +End Sub + +Sub LlenaProdsLL(p As ResultSet, extra As String) +' Log("LlenaProdsLL") + listaProds.Initialize + hayPedido = Subs.hayPedido + Log($"HAYPEDIDO: ${hayPedido}"$) + If hayPedido Then 'Si hay pedido obtenemos las cantidades de los productos para agregarlos al CLV. + Dim cantsMap As Map + cantsMap.Initialize + Dim pe As ResultSet = Starter.skmt.ExecQuery($"select PE_PROID, PE_CANT from PEDIDO where PE_CLIENTE = '${clienteId}' and PE_CEDIS = '${Subs.traeAlmacen}'"$) + 'Si EXTRA es igual a rmi, entonces regresamos los RMIs existentes. + If extra = "rmi" Then pe = Starter.skmt.ExecQuery($"select PE_PROID, PE_CANT from PEDIDO where PE_CLIENTE = '${clienteId}' and PE_CEDIS = 'DUR'"$) + + LogColor("Ponemos productos de pedido anterior: "&pe.RowCount, Colors.red) + Do While pe.NextRow + Private cant As Int = 0 + cantsMap.put(pe.GetString("PE_PROID"), pe.GetString("PE_CANT")) + Loop +' Log($"Con pedido: ${pe.RowCount}"$) +' Log("CANTSMAP: " & cantsMap) + pe.Close + End If +' Log(p.IsInitialized) + If query = "" Or query = Null Then query = "cat_gunaprod2" + If p.IsInitialized Then +' Log($"YA HAY RESULTSET ${p.RowCount}"$) + Else +' Log("NO HAY RESULTSET") + Dim p As ResultSet = Starter.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_ALMACEN, CAT_GP_PRECIO, CAT_GP_TIPOPROD from ${Subs.traeTablaProds(Starter.tipov)} where CAT_GP_PRECIO > 0 And CAT_GP_CLASIF <> 'PROMOS' order by CAT_GP_NOMBRE"$) + End If + + Do While p.NextRow + Private cant As Int = 0 + If hayPedido And cantsMap.ContainsKey(p.GetString("CAT_GP_ID")) Then cant = cantsMap.Get(p.GetString("CAT_GP_ID")) + Dim tempMap As Map = CreateMap("prod":p.GetString("CAT_GP_NOMBRE"), "precio":p.GetString("CAT_GP_PRECIO"), "almacen":p.GetString("CAT_GP_ALMACEN"), "id":p.GetString("CAT_GP_ID"), "cant":cant) + listaProds.Add(tempMap) +' Log($"${p.GetString("CAT_GP_ID")}, ${p.GetString("CAT_GP_NOMBRE")}, ${cant}"$) + Loop + p.Close + +' Log("LISTAPRODS: " & listaProds) + PCLV.Commit + clv_prods_ll.Clear + Private listaProdsConCant, listaProdsConCantIndex As List + listaProdsConCant.Initialize + listaProdsConCantIndex.Initialize + listaHints.Initialize +' Log(listaProds) + For q = 0 To listaProds.Size - 1' Sacamos los productos con cantidad previa. + If listaProds.Get(q).As(Map).Get("cant").As(Int) <> 0 Then +' Log(listaProds.Get(q).As(Map).Get("cant")) + listaProdsConCant.Add(listaProds.Get(q)) + listaProdsConCantIndex.Add(q) + End If + Next +' Log("PRODCONCANT: " & listaProdsConCant) +' Log(listaProdsConCantIndex) + Private cont As Int = 0 + For pr0=0 To listaProdsConCant.Size - 1 'Agregamos los productos con cantidad previa. + Private Pnl As B4XView = xui.CreatePanel("") + Pnl.SetLayoutAnimated(0, 0, 0, clv_prods_ll.AsView.Width, 50dip) + Private tempMap As Map = listaProdsConCant.Get(pr0) + Private inv = tempMap.Get("almacen") + tempMap.Get("cant") + tempMap.Put("almacen", inv) + Log(tempMap) + clv_prods_ll.Add(Pnl, tempMap) + listaHints.Add(listaProdsConCant.get(pr0).As(Map).Get("prod")) + cont = cont + 1 + Next +' LogColor(clv_prods_ll.Size, Colors.red) +' Log(listaProds.Size) + For pr = 0 To listaProds.Size - 1 + If listaProdsConCantIndex.IndexOf(pr) = -1 Then + Private Pnl As B4XView = xui.CreatePanel("") + If listaProds.Get(pr).As(Map).Get("almacen") < 1 Then +' Log("EN CERO" & listaProds.Get(pr).As(Map).Get("prod") & "|" & listaProds.Get(pr).As(Map).Get("almacen")) + Else + Pnl.SetLayoutAnimated(0, 0, 0, clv_prods_ll.AsView.Width, 50dip) + clv_prods_ll.Add(Pnl, listaProds.Get(pr)) + listaHints.Add(listaProds.get(pr).As(Map).Get("prod")) + cont = cont + 1 + End If + End If + Next +' LogColor(clv_prods_ll.Size, Colors.red) +' PCLV.Commit +' Log("CONT=" & cont) +' Log("CLV_PRODSLL="&clv_prods_ll.Size) + PCLV.B4XSeekBar1.MaxValue = clv_prods_ll.Size + PCLV.B4XSeekBar1.MinValue = 0 + PCLV.B4XSeekBar1.Interval = clv_prods_ll.Size/20 + PCLV.B4XSeekBar1.Value = clv_prods_ll.Size + PCLV.B4XSeekBar1.Update +' Log($"Min:0, max:${clv_prods_ll.Size}, Interval:${clv_prods_ll.Size/20}"$) + reiniciarlistaProds = False +End Sub + +'Return the hint that will be displayed when the user fast scrolls the list. It can be a string or CSBuilder. +Sub PCLV_HintRequested(Index As Int) As Object + Dim word As String = listaHints.get(Index) + Return word +End Sub + +'Return the hint that will be displayed when the user fast scrolls the list. It can be a string or CSBuilder. +Sub PCLV2_HintRequested(Index As Int) As Object + Dim word As String = listaHints.get(Index) + Return word +End Sub + +Private Sub p_rmi_Click + +End Sub + +Private Sub b_rmi_aceptar_Click + If l_rmi_cant.Text > 0 Then Subs.guardaCambiosDeProducto(l_rmi_cant.Text, rmiMap.Get("nombre"), rmiMap.Get("id"), rmiMap.Get("pu")*l_rmi_cant.Text, query) +' Log($"${l_rmi_cant.Text}, ${rmiMap.Get("nombre")}, ${rmiMap.Get("id")}, ${rmiMap.Get("pu")}, ${query}"$) + p_rmi.Visible = False +End Sub + +Private Sub b_rmi_menos_Click + Log(Sender.As(Button).tag) +' Private d As Map = Sender.As(Button).tag + Private cant As String = l_rmi_cant.Text + If (cant - 1) >= 0 Then + l_rmi_cant.Text = $"$1.0{(l_rmi_cant.Text - 1)}"$ + l_rmi_total.Text = $"Total RMI $$1.2{(cant - 1) * rmiMap.Get("pu")}"$ + End If +End Sub + +Private Sub b_rmi_mas_Click + Log(Sender.As(Button).tag) +' Private d As Map = Sender.As(Button).tag + Private cant As String = l_rmi_cant.Text + If (cant + 1) <= rmiMap.Get("inv") And ((cant + 1) * rmiMap.Get("pu")) <= rmiMap.Get("disponible") Then + l_rmi_cant.Text = $"$1.0{(l_rmi_cant.Text + 1)}"$ + l_rmi_total.Text = $"Total RMI $$1.2{(cant + 1) * rmiMap.Get("pu")}"$ + End If +End Sub + +Private Sub b_rmi_Click + Dim p As ResultSet = Starter.skmt.ExecQuery($"select CAT_GP_ID, CAT_GP_NOMBRE, CAT_GP_PRECIO, '1000' as CAT_GP_ALMACEN from CAT_RMI order by CAT_GP_NOMBRE"$) + Log($"Llamamos LlenaProdsLL con ${p.RowCount} prods."$) + lfila.Text = "RMI" + b_rmi.Visible = False + lv_catalogos.Visible = False + LlenaProdsLL(p, "rmi") + clv_prods_ll.AsView.BringToFront + clv_prods_ll.AsView.Visible = True + l_mDisponible.Visible = True +End Sub 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..b2a1213 --- /dev/null +++ b/B4A/C_Promos.bas @@ -0,0 +1,422 @@ +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) + Private prodsPromo As Map = mp.Get("productos") 'Los productos de la promoción. + Private invDispPromo As Map = Subs.traemosInventarioDisponibleParaPromo(promo) +' 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") + 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(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. +' c2.Position=i +' jpeg = c2.GetBlob("CAT_GP_IMG") +' ins.InitializeFromBytesArray(jpeg, 0, jpeg.Length) +' bmp.Initialize2(ins) + Private thisProd As Map = prodsPromo.Get(p) + If thisLog Then Log(thisProd) + clv_prodsVariabes.Add(CreateListItem(Subs.traeProdNombre(p)&CRLF&"Hay " & invDispPromo.Get(p) & " $" & thisProd.Get("precio"), thisProd.Get("precio"), 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_TicketsDia.bas b/B4A/C_TicketsDia.bas new file mode 100644 index 0000000..493188f --- /dev/null +++ b/B4A/C_TicketsDia.bas @@ -0,0 +1,137 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=11.5 +@EndOfDesignText@ +Sub Class_Globals + Private Root As B4XView 'ignore + Private xui As XUI 'ignore + Dim c As Cursor + Dim ruta As String + Dim ListView1 As ListView + Dim b_noventa As Button + Dim nombre_boton As String +End Sub + +'You can add more parameters here. +Public Sub Initialize As Object + Return Me +End Sub + +'This event will be called once, before the page becomes visible. +Private Sub B4XPage_Created (Root1 As B4XView) + Root = Root1 + 'load the layout to Root + ruta = File.DirInternal + Root.LoadLayout("ticketsDia") + c=Starter.skmt.ExecQuery("select PC_CLIENTE,PC_MONTO,PC_NOART FROM PEDIDO_CLIENTE ORDER BY PC_FECHA asc") + ListView1.Clear + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + c.Position=i + Dim label1 As Label + label1 = ListView1.TwoLinesLayout.Label + label1.TextSize = 15 + label1.TextColor = Colors.Black + Dim label2 As Label + label2 = ListView1.TwoLinesLayout.SecondLabel + label2.TextSize = 13 + label2.TextColor = Colors.Black + ListView1.AddTwoLines(c.GetString("PC_CLIENTE"),"Cantidad #"& c.GetString("PC_NOART")& " SubTotal $"& c.GetString("PC_MONTO")) + Next + End If +End Sub + +'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. + +Sub B4XPage_Appear + nombre_boton = "NOVENTA" + c=Starter.skmt.ExecQuery("select PC_CLIENTE,PC_MONTO,PC_NOART,(select CAT_CL_NOMBRE from kmt_info where cat_cl_codigo = pc_cliente ) as NOMBRE FROM PEDIDO_CLIENTE ORDER BY PC_FECHA asc") + ListView1.Clear + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + c.Position=i + Dim label1 As Label + label1 = ListView1.TwoLinesLayout.Label + label1.TextSize = 15 + label1.TextColor = Colors.Black + Dim label2 As Label + label2 = ListView1.TwoLinesLayout.SecondLabel + label2.TextSize = 13 + label2.TextColor = Colors.Black + ListView1.AddTwoLines(c.GetString("PC_CLIENTE"),c.GetString("NOMBRE") &" Cant. #"& c.GetString("PC_NOART")& " SubTotal $"& c.GetString("PC_MONTO")) + Next + End If + c.Close +End Sub + +Sub Regresar_Click + Subs.iniciaActividad("Cliente") +' B4XPages.ShowPage("Cliente") +End Sub + +Private Sub B4XPage_CloseRequest As ResumableSub + ' BACK key pressed + Subs.iniciaActividad("Principal") +' B4XPages.ShowPage("Principal") + Return True +End Sub + +Sub Activity_KeyPress (key As Int) As Boolean +' ' BACK key pressed +' If key=KeyCodes.KEYCODE_BACK Then +' Subs.iniciaActividad("Principal") +' End If +' ' Returning False signals the system to handle the key +' Return False +End Sub + +Sub ListView1_ItemLongClick (Position As Int, Value As Object) + Starter.skmt.ExecNonQuery("delete from CUENTAA") + Starter.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?)", Array As Object(Value)) + Subs.iniciaActividad("Cliente") +End Sub + +Sub b_noventa_Click + If nombre_boton = "NOVENTA" Then + nombre_boton = "VENTA" + b_noventa.Text ="VENTA" + c=Starter.skmt.ExecQuery("select NV_CLIENTE,NV_MOTIVO,NV_COMM, (select CAT_CL_NOMBRE from kmt_info where cat_cl_codigo = NV_CLIENTE ) as NOMBRE FROM NOVENTA ORDER BY NV_CLIENTE asc") + ListView1.Clear + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + c.Position=i + Dim label1 As Label + label1 = ListView1.TwoLinesLayout.Label + label1.TextSize = 15 + label1.TextColor = Colors.Black + Dim label2 As Label + label2 = ListView1.TwoLinesLayout.SecondLabel + label2.TextSize = 10 + label2.TextColor = Colors.Black + ListView1.AddTwoLines(c.GetString("NV_CLIENTE"),c.GetString("NOMBRE") &" Motivo #"& c.GetString("NV_MOTIVO")& " Comentario $"& c.GetString("NV_COMM")) + Next + End If + Else + nombre_boton = "NOVENTA" + b_noventa.Text ="NO VENTA" + c=Starter.skmt.ExecQuery("select PC_CLIENTE,PC_MONTO,PC_NOART,(select CAT_CL_NOMBRE from kmt_info where cat_cl_codigo = pc_cliente ) as NOMBRE FROM PEDIDO_CLIENTE ORDER BY PC_FECHA asc") + ListView1.Clear + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + c.Position=i + Dim label1 As Label + label1 = ListView1.TwoLinesLayout.Label + label1.TextSize = 15 + label1.TextColor = Colors.Black + Dim label2 As Label + label2 = ListView1.TwoLinesLayout.SecondLabel + label2.TextSize = 10 + label2.TextColor = Colors.Black + ListView1.AddTwoLines(c.GetString("PC_CLIENTE"),c.GetString("NOMBRE") &" Cantidad #"& c.GetString("PC_NOART")& " SubTotal $"& c.GetString("PC_MONTO")) + Next + End If + c.Close + End If +End Sub \ No newline at end of file diff --git a/B4A/C_updateAvailable.bas b/B4A/C_updateAvailable.bas new file mode 100644 index 0000000..36fa8d1 --- /dev/null +++ b/B4A/C_updateAvailable.bas @@ -0,0 +1,24 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=11.5 +@EndOfDesignText@ +Sub Class_Globals + Private Root As B4XView 'ignore + Private xui As XUI 'ignore +End Sub + +'You can add more parameters here. +Public Sub Initialize As Object + Return Me +End Sub + +'This event will be called once, before the page becomes visible. +Private Sub B4XPage_Created (Root1 As B4XView) + Root = Root1 + 'load the layout to Root + +End Sub + +'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. \ No newline at end of file diff --git a/B4A/CameraExClass.bas b/B4A/CameraExClass.bas new file mode 100644 index 0000000..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/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..9938fa0 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/KelloggsV4.b4a b/B4A/KelloggsV4.b4a new file mode 100644 index 0000000..993c25f --- /dev/null +++ b/B4A/KelloggsV4.b4a @@ -0,0 +1,242 @@ +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=googlemaps +Library11=googlemapsextras +Library12=gps +Library13=ime +Library14=json +Library15=okhttputils2 +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 +Library30=fileprovider +Library4=bitmapcreator +Library5=byteconverter +Library6=camera +Library7=contentresolver +Library8=core +Library9=fusedlocationprovider +ManifestCode='This code will be applied to the manifest file during compilation.~\n~'You do not need to modify it in most cases.~\n~'See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136~\n~AddManifestText(~\n~~\n~)~\n~SetApplicationAttribute(android:icon, "@drawable/icon")~\n~SetApplicationAttribute(android:label, "$LABEL$")~\n~CreateResourceFromFile(Macro, Themes.LightTheme)~\n~'End of default text.~\n~~\n~AddApplicationText(~\n~)~\n~'Set activity to Landscape~\n~SetActivityAttribute(foto, android:screenOrientation, "landscape")~\n~AddApplicationText(~\n~~\n~ ~\n~)~\n~AddManifestText(~\n~~\n~)~\n~'''' para el teclado~\n~ SetActivityAttribute(main, android:windowSoftInputMode, adjustResize|stateHidden)~\n~ SetApplicationAttribute(android:allowBackup, "false")~\n~ SetServiceAttribute(Tracker, android:foregroundServiceType, "location")~\n~ ~\n~ AddManifestText(~\n~~\n~)~\n~''CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~ 'End of default text.~\n~ ~\n~SetApplicationAttribute(android:usesCleartextTraffic, "true")~\n~ AddManifestText(~\n~~\n~)~\n~AddPermission(android.permission.ACCESS_BACKGROUND_LOCATION)~\n~AddManifestText(~\n~~\n~)~\n~AddManifestText(~\n~~\n~)~\n~AddManifestText(~\n~~\n~) 'in order to access the device non-resettable identifiers such as IMEI and serial number.~\n~~\n~'///////////////////////// FLP Y PUSH /////////////~\n~' CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~' CreateResourceFromFile(Macro, FirebaseAnalytics.Firebase)~\n~' CreateResourceFromFile(Macro, FirebaseAnalytics.FirebaseAnalytics)~\n~' CreateResourceFromFile(Macro, FirebaseNotifications.FirebaseNotifications)~\n~ SetServiceAttribute(Tracker, android:foregroundServiceType, "location")~\n~'//////////////////////////////////////////////////////~\n~'Le da mas memoria a la aplicacion~\n~SetApplicationAttribute(android:largeHeap, "true")~\n~ 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") +Module1=B4XMainPage +Module10=C_Pedidos +Module11=C_Principal +Module12=C_Productos +Module13=C_Promos +Module14=C_TicketsDia +Module15=C_updateAvailable +Module16=CameraExClass +Module17=DBRequestManager +Module18=DownloadService +Module19=errorManager +Module2=C_CheckList +Module20=EscPosPrinter +Module21=foto +Module22=MAPA_RUTAS +Module23=Mods +Module24=SD_Spinner +Module25=Starter +Module26=Subs +Module27=Tracker +Module3=C_Cliente +Module4=C_Clientes +Module5=C_Historico +Module6=C_Mapas +Module7=C_Nota +Module8=C_NoVenta +Module9=C_NuevoCliente +NumberOfFiles=53 +NumberOfLibraries=30 +NumberOfModules=27 +Version=12.2 +@EndOfDesignText@ +#Region Project Attributes + #ApplicationLabel: Kelloggs Venta + #VersionCode: 3000 + #VersionName: 3.08.29 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/MAPA_RUTAS.bas b/B4A/MAPA_RUTAS.bas new file mode 100644 index 0000000..8b139ff --- /dev/null +++ b/B4A/MAPA_RUTAS.bas @@ -0,0 +1,291 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Activity +Version=9.3 +@EndOfDesignText@ +#Region Activity Attributes + #FullScreen: False + #IncludeTitle: False +#End Region + +'Activity module +Sub Process_Globals + Dim GPS As GPS + Dim rp As RuntimePermissions + Dim ruta As String +' Dim skmt As SQL + Dim c As Cursor + Dim c2 As Cursor + Dim c22 As Cursor + Dim c3 As Cursor +End Sub + +Sub Globals + Private gmap As GoogleMap + Private MapFragment1 As MapFragment + Dim Latitud As Double = 0 + Dim Longitud As Double = 0 + Dim Lat2 As Double = 0 + Dim Lon2 As Double = 0 + Dim p1, p2 As Location + Dim Distance As Float + Dim boton1 As Button + Dim HUE_BLUE As Float + Dim HUE_RED As Float + Dim HUE_GREEN As Float + Private B_AZUL As Button + Private B_ROJO As Button + Private B_VERDE As Button + Private B_TODOS As Button + Dim Tienda As String + Dim LatitudRU As String + Dim LongitudRU As String + Dim LIST_AZUL As List + Dim LIST_ROJO As List + Dim LIST_VERDE As List + Dim MARK_AZUL As Marker + Dim MARK_ROJO As Marker + Dim MARK_VERDE As Marker + Dim MARK_CEDIS As Marker + Dim rojo As String + Dim azul As String + Dim verde As String + Dim todos As String + Dim NumSerie As Int + Dim OnInfoWindowClickListener1 As OnInfoWindowClickListener + Dim GoogleMapEXTRA As GoogleMapsExtras + Dim CODIGO As String + Private SEMANA As String +End Sub + +Sub Activity_Create(FirstTime As Boolean) + Activity.LoadLayout("MAPA_RUTAS") + ruta = File.DirInternal +' If File.Exists(ruta, "kmt.db") = False Then +' File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db") +' End If +' skmt.Initialize(ruta,"kmt.db", True) + 'GPS + If(FirstTime) Then + GPS.Initialize("GPS") + End If + If MapFragment1.IsGooglePlayServicesAvailable = False Then + ToastMessageShow("Please install Google Play Services.", True) + End If + + 'Boton velocidad' + boton1.Initialize(0) + boton1.Text = 0 &" "&"km/h" + boton1.TextColor = Colors.Red + boton1.TextSize = 15 + Activity.AddView(boton1, 40%x, 5dip, 25%x, 40dip) + 'Fin Boton velocidad' + 'MARK_CEDIS.IsInitialized + MARK_AZUL.IsInitialized + MARK_ROJO.IsInitialized + MARK_VERDE.IsInitialized + + LIST_AZUL.Initialize + LIST_ROJO.Initialize + LIST_VERDE.Initialize + verde = 0 + azul = 0 + rojo = 0 + todos = 1 + c=Starter.skmt.ExecQuery2("select count(*) AS CUANTOS from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SEMANA")) + c.Position =0 + SEMANA = c.GetString("CUANTOS") + c.Close + If SEMANA > 0 Then + c=Starter.skmt.ExecQuery2("select CAT_VA_VALOR from CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?", Array As String ("SEMANA")) + c.Position =0 + SEMANA = c.GetString("CAT_VA_VALOR") + c.Close + End If +End Sub + +Sub Activity_Resume + If GPS.GPSEnabled = False Then + ToastMessageShow("Debe Activar el GPS del Equipo.", True) + StartActivity(GPS.LocationSettingsIntent) + Else + GPS.Start(19.4316281, -99.1333579) + End If +' Subs.ultimaActividad(Me) +End Sub + +Sub MapFragment1_Ready + gmap = MapFragment1.GetMap + LongitudRU = 19.4316281 + LatitudRU = -99.1333579 + +' todos= 1 + 'permisos + rp.CheckAndRequest(rp.PERMISSION_ACCESS_FINE_LOCATION) + Wait For Activity_PermissionResult (Permission As String, Result As Boolean) + gmap.MyLocationEnabled = Result + + Dim JavaMapsObject As JavaObject + JavaMapsObject = gmap.GetUiSettings + JavaMapsObject.RunMethod("setMapToolbarEnabled", Array As Object(True)) + + '''''''---------------------------- MARKER AZUL - POR VISITAR + If azul = 1 Or todos = 1 Then + c.IsInitialized + c=Starter.skmt.ExecQuery2("select CAT_CL_CODIGO,CAT_CL_NOMBRE,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_NUM_SERIEFISICO from kmt_info where CAT_CL_NOMBRE <>'VENTA ABORDO' AND CAT_CL_CODIGO NOT IN (Select PE_CLIENTE from PEDIDO) AND CAT_CL_CODIGO NOT In (Select NV_CLIENTE from NOVENTA) AND CAT_CL_CODIGO NOT LIKE 'N%' and CAT_CL_DIAS_VISITA = (SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = 'DIA_VISITA') and cat_cl_codigo <> 0 AND CAT_CL_TIPO_RUTA IN (?,?) ORDER BY CAT_CL_NUM_SERIEFISICO", Array As String(SEMANA, "SEMANAL")) +' skmt.Initialize(ruta,"kmt.db", True) + Log($"Por visitar = ${c.RowCount}"$) + If c.RowCount > 0 Then + For i = 0 To c.RowCount -1 + c.Position = i + LongitudRU = c.GetDouble("CAT_CL_LONG") + LatitudRU = c.GetDouble("CAT_CL_LAT") + CODIGO=c.GetString("CAT_CL_CODIGO") + Tienda= c.GetString("CAT_CL_NOMBRE") + NumSerie=c.GetInt("CAT_CL_NUM_SERIEFISICO") + 'MARK_AZUL = gmap.AddMarker2(LongitudRU,LatitudRu,Tienda, gmap.HUE_BLUE) + MARK_AZUL = gmap.AddMarker3(LatitudRU, LongitudRU, CODIGO, LoadBitmap(File.DirAssets, "marker-azul-" & NumSerie &".png")) + MARK_AZUL.Snippet = Tienda + Next + c .Close + If MARK_AZUL.IsInitialized Then LIST_AZUL.Add(MARK_AZUL) + End If + End If + + '''''''---------------------------- MARKER VERDE - VENTA + If verde = 1 Or todos = 1 Then + c2.IsInitialized + c2=Starter.skmt.ExecQuery("select CAT_CL_CODIGO, CAT_CL_NOMBRE,CAT_CL_LONG,CAT_CL_LAT,CAT_CL_NUM_SERIEFISICO from kmt_info WHERE CAT_CL_NOMBRE <>'VENTA ABORDO' AND CAT_CL_CODIGO IN (Select PE_CLIENTE from PEDIDO) AND CAT_CL_CODIGO NOT In (Select NV_CLIENTE from NOVENTA) and CAT_CL_DIAS_VISITA = (SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = 'DIA_VISITA')") + Log($"Con ventar = ${c2.RowCount}"$) + 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(LatitudRU,LongitudRU,CODIGO, LoadBitmap(File.DirAssets, "marker-verde-"&NumSerie&".png")) + MARK_VERDE.Snippet = Tienda + Next + c2 .Close + End If + + '''''''---------------------------- MARKER ROJO - NO VENTA + + If rojo =1 Or todos = 1 Then + c3.IsInitialized + c3=Starter.skmt.ExecQuery("select CAT_CL_CODIGO, CAT_CL_NOMBRE,CAT_CL_LONG,CAT_CL_LAT ,CAT_CL_NUM_SERIEFISICO from kmt_info where CAT_CL_NOMBRE <>'VENTA ABORDO' AND CAT_CL_CODIGO In (Select NV_CLIENTE from NOVENTA ) AND CAT_CL_CODIGO NOT IN (Select PE_CLIENTE from PEDIDO) and CAT_CL_DIAS_VISITA = (SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = 'DIA_VISITA')order by CAT_CL_NUM_SERIEFISICO") + Log($"Sin venta = ${c3.RowCount}"$) + For i = 0 To c3.RowCount -1 + c3.Position = i + LongitudRU = c3.GetDouble("CAT_CL_LONG") + LatitudRU = c3.GetDouble("CAT_CL_LAT") + CODIGO=c3.GetString("CAT_CL_CODIGO") + Tienda= c3.GetString("CAT_CL_NOMBRE") + NumSerie=c3.GetInt("CAT_CL_NUM_SERIEFISICO") + MARK_ROJO = gmap.AddMarker3(LatitudRU,LongitudRU,CODIGO, LoadBitmap(File.DirAssets, "marker-rojo-" & NumSerie &".png")) + MARK_ROJO.Snippet = Tienda + Next + c3.Close + End If + '''------------------------------ + +' MARK_CEDIS = gmap.AddMarker3("19.3961802","-99.0784293","CEDIS", LoadBitmap(File.DirAssets, "marker-azul-0.png")) +' If MARK_VERDE.Visible Or MARK_ROJO.Visible Then +' MARK_CEDIS.Remove +' End If + If LatitudRU > -1 Then + LongitudRU = 19.4316281 + LatitudRU = -99.1333579 + End If + Dim aa As CameraPosition + aa.Initialize(LongitudRU,LatitudRU,10)''' RECOMENDABLE CAMBIAR A 10 PARA QUE SE VEAN MAS MARCADORES + gmap.AnimateCamera(aa) + + '''''---------------------- ESTO ES PARA LOS CLICK EN LAS VENTANAS DE INFORMACION----------- + Dim OnInfoWindowClickListener1 As OnInfoWindowClickListener + OnInfoWindowClickListener1.Initialize("OnInfoWindowClickListener1") + GoogleMapEXTRA.SetOnInfoWindowClickListener(gmap, OnInfoWindowClickListener1) +End Sub +' +''''-------------------------- PRUEBA CON MARKER _CLICK + +Sub OnInfoWindowClickListener1_click(Marker1 As Marker) + Starter.skmt.ExecNonQuery("delete from CUENTAA") + Starter.skmt.ExecNonQuery2("INSERT INTO CUENTAA VALUES (?) ", Array As Object(Marker1.Title)) + Activity.Finish + Subs.iniciaActividad("Cliente") +End Sub + +Sub GPS_LocationChanged (Parametro As Location) + gmap = MapFragment1.GetMap + MARK_CEDIS.IsInitialized + Dim sp As Int + sp = Ceil(Parametro.Speed * 3.6) + boton1.Text = sp &" "&"km/h" + Latitud = Parametro.Latitude + Longitud = Parametro.Longitude + p2.Initialize2(Latitud,Longitud) + p1.Initialize2(Lat2, Lon2) + Distance = p1.DistanceTo(p2) +' If Latitud <> 0 And Longitud <> 0 Then +' If Distance > 10 Then +' Lat2 = Latitud +' Lon2 = Longitud +' Dim cp As CameraPosition +' cp.Initialize2(Parametro.Latitude, Parametro.Longitude, gmap.CameraPosition.Zoom, Parametro.Bearing, 0) +' gmap.AnimateCamera(cp) +' End If +' End If +End Sub + +Sub Activity_Pause (UserClosed As Boolean) + GPS.Stop +End Sub + +Sub B_TODOS_Click + todos = 1 + verde = 0 + azul = 0 + rojo = 0 + If gmap.IsInitialized Then gmap.Clear + MapFragment1_Ready +End Sub + +Sub B_VERDE_Click + verde = 1 + azul = 0 + rojo = 0 + todos = 0 + If gmap.IsInitialized Then gmap.Clear + MapFragment1_Ready +End Sub + +Sub B_ROJO_Click + rojo = 1 + verde = 0 + azul = 0 + todos = 0 + If gmap.IsInitialized Then gmap.Clear + MapFragment1_Ready +End Sub + +Sub B_AZUL_Click + azul = 1 + verde = 0 + rojo = 0 + todos = 0 + If gmap.IsInitialized Then gmap.Clear + MapFragment1_Ready +End Sub + +Sub Activity_KeyPress (key As Int) As Boolean 'ignore + ' BACK key pressed + If key=KeyCodes.KEYCODE_BACK Then + Subs.iniciaActividad("Principal") + Return False + 'End If + End If + ' Returning False signals the system to handle the key +End Sub \ No newline at end of file diff --git a/B4A/Mods.bas b/B4A/Mods.bas new file mode 100644 index 0000000..c0672eb --- /dev/null +++ b/B4A/Mods.bas @@ -0,0 +1,15 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=StaticCode +Version=11.5 +@EndOfDesignText@ +Sub process_globals +End Sub + +'Ver 2.10.17 +'Se corrigieron en "mapas_rutas" y en "c_mapas" errores donde la longitud y latitud estaban invertidas y marcaba las tiendas en Africa. +'Ver 2.09.03 +'Se agregó código en "C_Cliente.GPS_LocationChanged" para que cuando haya un cambio de ubicacion, se actualize el texto del boton "b_ubicacion". +'Se agregó código en "C_Cliente.B4XPage_Appear" para que cuando se entre a "C_Cliente" el cambio minimo de distancia (SetSmallestDisplacement) de la ubicacion sea 1, +'y cuando se salga de "C_Cliente" regrese a 75 (C_Cliente.Guardar_Click). \ No newline at end of file diff --git a/B4A/SD_Spinner.bas b/B4A/SD_Spinner.bas new file mode 100644 index 0000000..7e35139 --- /dev/null +++ b/B4A/SD_Spinner.bas @@ -0,0 +1,491 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=8.3 +@EndOfDesignText@ +' Update 1.0.2 (04/01/2018) +#Event: ItemClick (Position As Int, Value as String) +#DesignerProperty: Key: TextColor, DisplayName: TextColor, FieldType: Color, DefaultValue: 0xFF000000,Description: Text color +#DesignerProperty: Key: TextSize, DisplayName: TextSize, FieldType: int, DefaultValue: 14,Description: Label Text Size +#DesignerProperty: Key: HintColor, DisplayName: HintColor, FieldType: Color, DefaultValue: 0xFF888888,Description: Hint color, noselected opstion +#DesignerProperty: Key: BackgroundColor, DisplayName: Color background, FieldType: Color, DefaultValue: 0xFFFFFFFF, Description: You can use the built-in color picker to find the color values. +#DesignerProperty: Key: BackgroundColorList, DisplayName: ListColor background, FieldType: Color, DefaultValue: 0xFF000000, Description: You can use the built-in color picker to find the color values. +#DesignerProperty: Key: GrayDisplay, DisplayName: Gray Display, FieldType: boolean, DefaultValue: False, Description: Gray Display. +#DesignerProperty: Key: RoundCorner, DisplayName:RoundCorner, FieldType: boolean, DefaultValue: False, Description: RoundCorner. + +Sub Class_Globals + Public SelectedItem As String + Public SelectedID As String + Public SelectedIndex As Int + Public GrayDisplay As Boolean + Public BColor, TColor,HintColor, BColorList As Int + Public RoundCorner As Boolean + Public ScrollViewParent As ScrollView = Null + + Private EventName As String 'ignore + Private CallBack As Object 'ignore + Private mBase As Panel + Public MyAct As Panel + Private Lab As Label + Private AppPanel As Panel + Public Top,Left As Int + Private ListPanel As ScrollView + + Private ListItem As List + Private TextSize As Int + Type Item (Text As String,TextHelp As String,ID As String, BackgroundColor As Int, TextColor As Int, Image As Bitmap, G As Int) +End Sub + +Public Sub Initialize (vCallback As Object, vEventName As String) + EventName = vEventName + CallBack = vCallback + ListItem.Initialize + Lab.Initialize("Lab") + SelectedItem="" + SelectedID="" + SelectedIndex=-1 + + AppPanel.Initialize("AppPanel") + ListPanel.Initialize(1000dip) +End Sub + +Public Sub Invalidate + mBase.Invalidate +End Sub + +Public Sub DesignerCreateView (Base As Panel, Lbl As Label, Props As Map) + mBase = Base + mBase.Tag=Me + + Left=0 + Top=0 + Try + Dim Obj As View = mBase + Log(GetType(Obj)) + Do While Not(GetType(Obj) = "android.widget.FrameLayout") + Left=Left+Obj.Left + Top=Top+Obj.Top + Obj=Obj.Parent + Loop + MyAct=Obj + Catch + Dim r As Reflector + r.Target = r.GetActivityBA + MyAct=r.GetField("vg") + End Try + + If Props.ContainsKey("BackgroundColor") Then BColor=Props.Get("BackgroundColor") + If Props.ContainsKey("BackgroundColorList") Then BColorList=Props.Get("BackgroundColorList") + If Props.ContainsKey("TextColor") Then TColor=Props.Get("TextColor") + If Props.ContainsKey("TextSize") Then TextSize=Props.Get("TextSize") + If Props.ContainsKey("HintColor") Then HintColor=Props.Get("HintColor") + If Props.ContainsKey("GrayDisplay") Then GrayDisplay=Props.Get("GrayDisplay") + If Props.ContainsKey("RoundCorner") Then RoundCorner=Props.Get("RoundCorner") + + Lab.TextColor=TColor + Lab.Color=BColor + Lab.Gravity=Gravity.CENTER + Lab.TextSize=TextSize + Lab.BringToFront + SetIndex(SelectedIndex) + mBase.AddView(Lab,0,0,mBase.Width,mBase.Height) + + Dim Ima As Panel + Ima.Initialize("") + LoadDrawableByName(Ima,"dropdown_ic_arrow_normal_holo_light") + mBase.AddView(Ima,mBase.Width-40dip,(mBase.Height/2)-20dip,40dip,40dip) + +End Sub + +Private Sub LoadDrawableByName(Control As View, ImageName As String) As Boolean + Dim R As Reflector + Try + R.Target = R.GetContext + R.Target = R.RunMethod("getResources") + R.Target = R.RunMethod("getSystem") + Dim ID_Drawable As Int + ID_Drawable = R.RunMethod4("getIdentifier", Array As Object(ImageName, "drawable", "android"), _ + Array As String("java.lang.String", "java.lang.String", "java.lang.String")) + R.Target = R.GetContext + R.Target = R.RunMethod("getResources") + Control.Background = R.RunMethod2("getDrawable", ID_Drawable, "java.lang.int") + Return True + + Catch + LogColor("ERROR.LoadDrawableByName:" & LastException.Message, Colors.Red) + Return False + + End Try +End Sub + +Public Sub GetBase As Panel + Return mBase +End Sub + +#Region Private + +private Sub Lab_Click + Dim I As IME + I.Initialize("") + I.HideKeyboard + + DesignerList +End Sub + +Private Sub AppPanel_Touch (Action As Int, X As Float, Y As Float) + 'AppPanel.Visible=False + AppPanel.RemoveView +End Sub + +Sub Corner(Colore As Int) As ColorDrawable + Dim cdb As ColorDrawable + cdb.Initialize(Colore, 20dip) + Return cdb +End Sub + +Sub RoundBorders(B0 As Bitmap, radius As Int) As Bitmap + + Dim B1,B2 As Bitmap + Dim cv As Canvas + Dim Rect1 As Rect + + B2.InitializeMutable(40dip,40dip) + cv.Initialize2(B2) + Dim Drawable1 As ColorDrawable + Drawable1.Initialize(Colors.White,radius) + Rect1.Initialize(0,0,B2.Width-1,B2.Height-1) + cv.DrawDrawable(Drawable1,Rect1) + + B1.InitializeMutable(40dip,40dip) + cv.Initialize2(B1) + cv.DrawBitmap(B0,Null,Rect1) + + For r=0 To B2.Height-1 + For c=0 To B2.Width-1 + If B2.GetPixel(c,r)=0 Then + cv.DrawPoint(c,r,0) + End If + Next + Next + cv.DrawCircle(20dip,20dip,20dip,Colors.Black,False,1dip) + 'P.SetBackgroundImage(B1) + Return B1 +End Sub + +private Sub DesignerList + Dim HeightListView As Int = 0 + Dim Space As Int + + If ListItem.size>0 Then + If AppPanel.IsInitialized Then AppPanel.RemoveView + MyAct.addview(AppPanel,0,0,100%x,100%Y) + + If RoundCorner Then ListPanel.Color=Colors.Transparent Else ListPanel.Color=BColorList + ListPanel.RemoveView + ListPanel.Panel.RemoveAllViews + ListPanel.Panel.Height=0 + + For i=0 To ListItem.Size-1 + Dim Item As Item + Item.Initialize + + Item = ListItem.Get(i) + Dim P As Panel + P.Initialize("PanelClick") + If RoundCorner Then P.Background=Corner(Item.BackgroundColor) Else P.Color=Item.BackgroundColor + + P.Tag=I + Try + Space=40dip + Dim Ima As ImageView + Ima.Initialize("") + Ima.Gravity=Gravity.FILL + If RoundCorner Then + Ima.SetBackgroundImage(RoundBorders(Item.Image,20dip)) + Else + Ima.SetBackgroundImage(Item.Image) + End If + + P.AddView(Ima,0dip,5dip,40dip,40dip) + Catch + Space=0dip + End Try + + Dim La As Label + La.Initialize("") + La.Text=Item.text + La.TextSize=15 + La.Color=Colors.Transparent + La.TextColor=Item.TextColor + La.Typeface=Typeface.DEFAULT_BOLD + La.Gravity=Item.G + + P.AddView(La,Space,0dip,mBase.Width-Space,30dip) + If Item.texthelp.Trim<>"" Then + Dim La As Label + La.Initialize("") + La.Text=Item.TextHelp + La.TextSize=12 + La.Color=Colors.Transparent + La.TextColor=Item.TextColor + La.Gravity=Item.G + P.AddView(La,Space,25dip,mBase.Width-Space,30dip) + Else + La.Height=50dip + End If + ListPanel.Panel.AddView(P,-mBase.Width,HeightListView,mBase.Width-2DIP,49dip) + P.SetLayoutAnimated(100+(HeightListView/3),1dip,HeightListView,mBase.Width-2DIP,49dip) + HeightListView=HeightListView+50dip + Next + ListPanel.Panel.Height=HeightListView + + Dim LeftSpinner,TopSpinner,HeightSpinner,Yafter As Int + + If GrayDisplay Then AppPanel.Color=Colors.aRGB(200,0,0,0) Else AppPanel.Color=Colors.Transparent + If ScrollViewParent.IsInitialized Then + If Left+mBase.Width+ScrollViewParent.Left>100%x Then LeftSpinner=100%x-mBase.Width Else LeftSpinner=Left + Else + If Left+mBase.Width>100%x Then LeftSpinner=100%x-mBase.Width Else LeftSpinner=Left + End If + + Yafter=100%y-Top-mBase.Height + If ScrollViewParent.IsInitialized Then + Yafter=Yafter+ScrollViewParent.ScrollPosition + Top=Top-ScrollViewParent.ScrollPosition + End If + If (HeightListView>Top)And (HeightListView>Yafter) Then + ' Non va bene dappertutto + If (Top>100%y-Top-mBase.Height) Then + 'sopra é più grande + TopSpinner=0dip + HeightSpinner=Top + Else + 'sotto è più grande + TopSpinner=Top+mBase.Height + HeightSpinner=100%y-Top-mBase.Height + End If + Else if (HeightListView>Top) And (HeightListView<=Yafter) Then + ' Va bene di sotto + TopSpinner=Top+mBase.Height + HeightSpinner=HeightListView + Else If (HeightListView<=Top)And (HeightListView>Yafter) Then + ' Va bene di sopra + TopSpinner=Top+mBase.Height-HeightListView + HeightSpinner=HeightListView + Else + ' Haqspazio sopra e sotto + TopSpinner=Top+mBase.Height + HeightSpinner=HeightListView + End If + + If ScrollViewParent.IsInitialized=False Then + AppPanel.AddView(ListPanel,LeftSpinner,TopSpinner,mBase.Width,HeightSpinner) + Else + AppPanel.AddView(ListPanel,LeftSpinner,TopSpinner,mBase.Width,HeightSpinner) + End If + 'AppPanel.Visible=True + End If +End Sub + +Private Sub PanelClick_Click + Dim P As Panel = Sender + Dim Position As Int = P.Tag + + SelectedIndex=Position + SelectedID=GetID(Position) + SelectedItem=GetItem(Position) + Lab.TextColor=TColor + Lab.Text=SelectedItem + Lab.BringToFront + If SubExists(CallBack,EventName & "_ItemClick") Then CallSub3(CallBack,EventName & "_ItemClick",Position,GetItem(Position)) + + 'AppPanel.Visible=False + AppPanel.RemoveView +End Sub + + #End Region + + #Region Method + +Public Sub Add(Text As String, TextHelp As String,ID As String, BackgroundColor As Int, TextColor As Int, Gravities As Int,Image As Bitmap) + Dim Item As Item + + Item.Initialize + Item.Text=Text + Item.TextHelp=TextHelp + Item.ID=ID + Item.BackgroundColor=BackgroundColor + Item.TextColor=TextColor + Item.G=Gravities + 'Log(Image) + If Image.IsInitialized Then + Item.Image=Image + Else + Dim Bmp As Bitmap + Bmp=Null + Item.Image=Bmp + End If + ListItem.Add(Item) + +End Sub + +Public Sub AddAll(L As List, TextHelp As String, BackgroundColor As Int, TextColor As Int, Gravities As Int) + Dim Bmp As Bitmap = Null + + For i=0 To L.Size-1 + Dim Item As Item + Item.Text=L.Get(i) + Item.TextHelp=TextHelp + Item.ID=i + Item.BackgroundColor=BackgroundColor + Item.TextColor=TextColor + Item.G=Gravities + Item.Image=Bmp + ListItem.Add(Item) + Next +End Sub + +public Sub Size As Int + Return ListItem.Size +End Sub + +Public Sub Clear + ListItem.Clear + DesignerList + SelectedIndex=-1 + SelectedID="" + SelectedItem="" + Lab.Textcolor=HintColor + Lab.Text="Seleccionar Categoria" + Lab.BringToFront +End Sub + +Public Sub RemoveIndex(Position As Int) + If Position>-1 And Position-1 Then ListItem.RemoveAt(Position) +End Sub + +Public Sub GetItem(Position As Int) As String + Dim Ret As String = "" + If Position>-1 And Position-1 And Position-1 And Position-1 And Position 0 Then + s.Position=0 + Private laSemana As String = s.GetString("semana") + Else + Private laSemana As String = "" + End If + Private cpv As Cursor = skmt.ExecQuery2("select count(*) as CUANTOS from kmt_info where CAT_CL_DIAS_VISITA = (SELECT CAT_VA_VALOR FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = ?) and cat_cl_codigo <> 0 AND CAT_CL_TIPO_RUTA IN (?,?) ORDER BY CAT_CL_NUM_SERIEFISICO", Array As String("DIA_VISITA", laSemana, "SEMANAL"))'Traemos los clientes a visitar hoy. + cpv.Position=0 + Private clientesVisitaHoy As String = cpv.GetString("CUANTOS") + If lat_gps = 0 Or lat_gps = Null Then 'Si latitud es CERO o NULL traemos las ultimas coordenadas de la base de datos. + Private coords As List = Subs.traeCoordsDeBD + lat_gps = coords.Get(0) + lon_gps = coords.Get(1) + End If + s.Close + cpv.Close + Private rtec, ping, salty As String +' Log(Application.VersionName) + Subs.dameClientesFueraDeFrecuencia + Private h As Cursor + For Each i As String In Array As String ("RTEC", "PING", "SALTY SNACKS") + h=skmt.ExecQuery2("Select sum(PE_COSTO_TOT) As MONTO_DIA from pedido where PE_CLIENTE <> 0 and pe_proid in (Select CAT_GP_ID from cat_gunaprod2 where CAT_GP_TIPO = ? )", Array As String(i)) + Private x As String = 0 + If h.RowCount > 0 Then + h.Position = 0 + x = $"$1.3{h.GetString("MONTO_DIA")}"$ + End If + x = $"$1.3{x}"$ + If x="NaN" Then X = "0" + If i = "RTEC" Then rtec = x + If i = "PING" Then ping = x + If i = "SALTY SNACKS" Then salty = x + Next + h.Close + Dim cmd As DBCommand + cmd.Initialize + cmd.Name = "UPDATE_KELL_ACTUAL3_GPS" + cmd.Parameters = Array As Object(montoActual, clientesVisitaHoy, clientesVenta, clientesVisitados, lat_gps, lon_gps, batt, 0, 0, 0, Application.VersionName, rtec, ping, salty, Subs.dameClientesFueraDeFrecuencia, almacen, rutaPreventa) + If Logger Then LogColor(montoActual&","&clientesVisitaHoy&","&clientesVenta&","&clientesVisitados&","&lat_gps&","&lon_gps&","&batt&","&0&","&0&","&0&","&Application.VersionName&","&rtec&","&ping&","&salty&","& Subs.dameClientesFueraDeFrecuencia&","&almacen&","&rutaPreventa, Colors.Magenta) + reqManager.ExecuteCommand(cmd,"updateKell_UTR") +' If Logger Then Log(reqManager) +' If Logger Then Log("++ ++ ++ Envia_Ultima GPS - Inst_visitas - server: "& server) + skmt.ExecNonQuery2("Update cat_variables set CAT_VA_VALOR = ? WHERE CAT_VA_DESCRIPCION = ?" , Array As String(DateTime.Time(DateTime.Now),"HoraIngreso")) + 'Reiniciamos el timer para cuando llamamos el Sub desde otra actividad + Timer1.Enabled = False + Timer1.Interval = Interval * 1000 + Timer1.Enabled = True +End Sub + +Sub JobDone(Job As HttpJob) + If Job.Success = False Then +' ToastMessageShow("Error: " & Job.ErrorMessage, True) + Else + If Logger Then LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211110 + If Job.JobName = "DBRequest" Then + Dim result As DBResult = reqManager.HandleJob(Job) + If result.Tag = "updateKell_UTR" Then 'query tag + For Each records() As Object In result.Rows + For Each k As String In result.Columns.Keys + If Logger Then Log("Ubicacion en tiempo real: " & k & ": " & records(result.Columns.Get(k))) + Next + Next + End If + End If + End If + Job.Release +End Sub + +'Para los Logs +Private Sub logcat_LogCatData (Buffer() As Byte, Length As Int) + logs.Append(BytesToString(Buffer, 0, Length, "utf8")) + If logs.Length > 4000 Then + logs.Remove(0, logs.Length - 2000) 'Obtenemos log de 2000 ~ 4000 chars + End If +End Sub + +'Revisa que la conexion a la base de datos este bien. +Sub revisaBD 'ignore + If Logger Then Log("revisaBD") + If Not(File.Exists(ruta, "kmt.db")) Then File.Copy(File.DirAssets, "kmt.db", ruta, "kmt.db") + If Not(skmt.IsInitialized) Then skmt.Initialize(ruta, "kmt.db", True) +End Sub diff --git a/B4A/Subs.bas b/B4A/Subs.bas new file mode 100644 index 0000000..fed0412 --- /dev/null +++ b/B4A/Subs.bas @@ -0,0 +1,1523 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=StaticCode +Version=11 +@EndOfDesignText@ +'Code module +'Subs in this code module will be accessible from all modules. +Sub Process_Globals + 'These global variables will be declared once when the application starts. + 'These variables can be accessed from all modules. +' Public GZip As GZipStrings 'Usa la libreria CompressStrings + Private su As StringUtils 'Usa la libreria StringUtils + Dim phn As Phone + Dim devModel As String + Dim errorLog As SQL 'Requiere la libreria "SQL" +' Dim wifi As MLwifi + Dim ssid As String 'ignore + Dim rutaMaxPoints As Int = 3000 + Dim rutaHrsAtras As Int = 48 +' Dim rutaInicioHoy As String = "" +End Sub + +'Pone el valor de phn.Model en la variable global "devModel" +Sub getPhnId As String 'ignore + 'Requiere la libreria "Phone" + devModel = phn.Model + If devModel.Length <= 3 Then 'Si phn.Model esta en blanco ... + Dim t As String = phn.GetSettings("android_id") 'Intentamos con "android_id" + devModel = t + End If + If devModel.Length >= 3 Then 'Si tenemos valor para phn.Model + File.WriteString(File.DirInternal, "phnId.txt", devModel) 'Sobreescribimos archivo phnId.txt with deviceId +' if starter.logger then Log("Tenemos phnId: "&devModel&" "&File.DirInternal&"/phn.txt sobreescrito") + Else If devModel.Length < 3 Then ' Si no tenemos valor, lo leemos de phnId.txt + Dim s As String = File.ReadString(File.DirInternal, "phnId.txt") + devModel = s +' if starter.logger then Log("Leemos id de "&File.DirInternal&"/phnId.txt") +' if starter.logger then Log(devModel) + End If + Return devModel +End Sub + +'Comprime y regresa un texto (str) en base64 +Sub compress(str As String) As String 'ignore + 'Requiere la libreria "CompressStrings" +' Dim compressed() As Byte = GZip.compress(str) +' Dim base64 As String = su.EncodeBase64(compressed) +' if starter.logger then Log($"Comprimido: ${base64.Length}"$) +' Return base64 +End Sub + +'Descomprime y regresa un texto en base64 +Sub decompress(base64 As String) As String 'ignore + Dim decompressedbytes() As Byte = su.DecodeBase64(base64) +' if starter.logger then Log($"decompressedbytesLength: ${decompressedbytes.Length}"$) + Dim bc As ByteConverter + Dim uncompressed As String = bc.StringFromBytes(decompressedbytes,"UTF8") + Log($"Descomprimido: ${uncompressed.Length}"$) +' if starter.logger then Log($"Decompressed String = ${uncompressed}"$) + Return uncompressed +End Sub + +'Convierte una fecha al formato yyMMddHHmmss +Sub fechaKMT(fecha As String) As String 'ignore +' if starter.logger then Log(fecha) + Dim OrigFormat As String = DateTime.DateFormat 'save orig date format + DateTime.DateFormat="yyMMddHHmmss" + Dim nuevaFecha As String=DateTime.Date(fecha) + DateTime.DateFormat=OrigFormat 'return to orig date format +' if starter.logger then Log(nuevaFecha) + Return nuevaFecha +End Sub + +'Genera una notificacion con importancia alta +Sub notiHigh(title As String, body As String, activity As Object) 'ignore + Private notif As Notification + notif.Initialize2(notif.IMPORTANCE_HIGH) + notif.Icon = "icon" + notif.Vibrate = False + notif.Sound = False + notif.AutoCancel = True + Log("notiHigh: "&title) + notif.SetInfo(title, body, activity) +' if starter.logger then Log("notiHigh SetInfo") + notif.Notify(777) +End Sub + +'Regresa el objeto de una notificacion con importancia baja +Sub notiLowReturn(title As String, Body As String, id As Int) As Notification 'ignore + Private notification As Notification + notification.Initialize2(notification.IMPORTANCE_LOW) + If Starter.logger Then Log("notiLowReturn: "&title) + notification.Icon = "icon" + notification.Sound = False + notification.Vibrate = False + notification.SetInfo(title, Body, Main) + notification.Notify(id) +' if starter.logger then Log("notiLowReturn SetInfo") + Return notification +End Sub + +'Escribimos las coordenadas y fecha a un archivo de texto +Sub guardaInfoEnArchivo(coords As String) 'ignore + ' Cambiamos el formato de la hora + Dim OrigFormat As String=DateTime.DateFormat 'save orig date format + DateTime.DateFormat="MMM-dd HH:mm:ss" + Dim lastUpdate As String=DateTime.Date(DateTime.Now) + DateTime.DateFormat=OrigFormat 'return to orig date format + + Dim ubic As String = coords&","&lastUpdate + Dim out As OutputStream = File.OpenOutput(File.DirInternal, "gps.txt", True) + Dim s As String = ubic & CRLF + Dim t() As Byte = s.GetBytes("UTF-8") + out.WriteBytes(t, 0, t.Length) + out.Close +End Sub + +'Escribimos las coordenadas (latitud, longitud, fecha) y fecha a una BD +Sub guardaInfoEnBD(coords As String) 'ignore + Log("Guardamos ubicacion en BD - "&coords) + Try + Dim latlon() As String = Regex.Split("\|", coords) + If latlon.Length < 2 Then latlon = Regex.Split(",", coords) 'Si son menos de 2, entonces estan separadas por comas y no por "|" +' If Main.Logger Then Log("LatLon="&latlon) + If Not(Starter.skmt.IsInitialized) Then revisaBD + Starter.skmt.ExecNonQuery2("INSERT INTO RUTA_GPS(fecha, lat, lon) VALUES (?,?,?)", Array As Object (latlon(2),latlon(0),latlon(1))) + Catch + If Starter.logger Then Log(LastException) + End Try +End Sub + +'Regresa la ruta gps solicitada comprimida y en base64 +Sub dameRutaGPS(inicioRuta As String, origenRuta As String) As String 'ignore + 'Requiere la libreria "SQL" + Dim fechaInicio As String + Try 'incioRuta es numero + inicioRuta = inicioRuta * 1 +' Log("fechaInicio numerica="&fechaInicio) + fechaInicio = fechaKMT(DateTime.Now - (DateTime.TicksPerHour * inicioRuta)) + Catch 'inicioRuta es string + fechaInicio = fechaInicioHoy +' Log("fechaInicio string="&fechaInicio) + End Try + If Starter.logger Then Log("fechaInicio: "&fechaInicio&" | rutaHrsAtras="&rutaHrsAtras) 'fechaKMT(DateTime.Now) + Dim c As Cursor + If Starter.skmt.IsInitialized = False Then Starter.skmt.Initialize(Starter.ruta, "kmt.db", True) + If Starter.logger Then Log("select FECHA, LAT, LON from "& origenRuta &" where FECHA > " & fechaInicio & " order by FECHA desc limit " & rutaMaxPoints) + c = Starter.skmt.ExecQuery("select FECHA, LAT, LON from "& origenRuta &" where FECHA > " & fechaInicio & " order by FECHA desc limit " & rutaMaxPoints) + c.Position = 0 + Dim ruta2 As String = "" + If c.RowCount>0 Then + For i=0 To c.RowCount -1 + c.Position=i + ruta2=ruta2&CRLF&c.GetString("LAT")&","&c.GetString("LON")&","&c.GetString("FECHA") + Starter.fechaRuta = c.GetString("FECHA") + Next + End If + c.Close + Return compress(ruta2) +End Sub + +'Limpiamos la tabla RUTA_GPS de la BD +Sub deleteGPS_DB 'ignore + Starter.skmt.ExecNonQuery("delete from RUTA_GPS") + Starter.skmt.ExecNonQuery("vacuum;") +End Sub + +'Limpiamos la tabla errorLog de la BD +Sub deleteErrorLog_DB 'ignore + If Not(Starter.errorLog.IsInitialized) Then revisaBD + Starter.errorLog.ExecNonQuery("delete from errores") + Starter.errorLog.ExecNonQuery("vacuum;") +' ToastMessageShow("Borrada", False) +End Sub + +'Borramos el archio "gps.txt" +Sub borramosArchivoGPS 'ignore + Dim out As OutputStream = File.OpenOutput(File.DirInternal, "gps.txt", False) + Dim s As String = "" + Dim t() As Byte = s.GetBytes("UTF-8") + out.WriteBytes(t, 0, t.Length) + out.Close +End Sub + +'Revisa que exista la BD y si es necesario crea algunas tablas dentro de ella +Sub revisaBD 'ignore +' if starter.logger then Log("subs.revisaBD") + Starter.ruta = File.DirInternal + If Not(File.Exists(Starter.ruta, "kmt.db")) Then File.Copy(File.DirAssets, "kmt.db", Starter.ruta, "kmt.db") + If Not(Starter.skmt.IsInitialized) Then Starter.skmt.Initialize(Starter.ruta, "kmt.db", True) + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS RUTA_GPS(fecha INTEGER, lat TEXT, lon TEXT)") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_ENCUESTA2(HE_CLIENTE TEXT)") +' Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS UUC(fecha INTEGER, lat TEXT, lon TEXT)") 'LastKnownLocation + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS bitacora(fecha INTEGER, texto TEXT)") 'Bitacora + Try 'Si no existe la columna CAT_CL_CATEGORIA la agregamos. + Starter.skmt.ExecQuery("select count(CAT_CL_CATEGORIA) from kmt_info") + Catch + Try + Starter.skmt.ExecNonQuery("ALTER TABLE kmt_info ADD COLUMN CAT_CL_CATEGORIA TEXT") + Catch + If Starter.logger Then LogColor("No pudimos agregar la columna CAT_CL_CATEGORIA.", Colors.Red) + If Starter.logger Then LogColor(LastException, Colors.Red) + End Try + End Try + Try 'Si no existe la columna CAT_CL_SEGMENTO la agregamos. + Starter.skmt.ExecQuery("select count(CAT_CL_SEGMENTO) from kmt_info") + Catch + Try + Starter.skmt.ExecNonQuery("ALTER TABLE kmt_info ADD COLUMN CAT_CL_SEGMENTO TEXT") + Catch + If Starter.logger Then LogColor("No pudimos agregar la columna CAT_CL_SEGMENTO.", Colors.Red) + If Starter.logger Then LogColor(LastException, Colors.Red) + End Try + End Try + 'Tabla para la bitacora de errores + If Not(Starter.errorLog.IsInitialized) Then Starter.errorLog.Initialize(Starter.ruta, "errorLog.db", True) + Starter.errorLog.ExecNonQuery("CREATE TABLE IF NOT EXISTS errores(fecha INTEGER, error TEXT)") +End Sub + +'Obtiene el ssid al que esta conectado el telefono +Sub getSSID 'ignore +' 'Requiere la libreria "MLWifi400" +' If wifi.isWifiConnected Then +' ssid = wifi.WifiSSID +' End If +End Sub + +'Convierte un texto en formato JSON a un objeto "Map" +Sub JSON2Map(theJson As String) As Map 'ignore + 'Requiere la libreria "JSON" + Try + Private json As JSONParser + json.Initialize(theJson) + Return json.NextObject + Catch + Log(LastException) + log2DB("JSON2Map: "&LastException) + Private m As Map = CreateMap("title":"Error generating JSON", "t":"Error", "Message":LastException, "text" : LastException) + Return m + End Try +End Sub + +'Convierte un mapa a formato JSON +Sub map2JSON(m As Map) As String 'ignore + 'Requiere la libreria "JSON" + 'Convierte un objecto "Map" a JSON + Dim jg As JSONGenerator + jg.Initialize(m) + Dim t As String = jg.ToString + Return t +End Sub + +'Mandamos "coords" en un mensaje a "Sprvsr" +Sub mandamosLoc(coords As String) 'ignore +'' Log("Iniciamos mandamosLoc "&coords) + '' if starter.logger then Log("locRequest="&Tracker.locRequest) +' guardaInfoEnBD(coords)'Escribimos coordenadas y fecha a una bd +' Dim t As String +' If Tracker.locRequest="Activa" Then +' If PushService.au = 1 Then +' t = "au" ' es una actualizacion +' Else +' t = "u" ' es una peticion +' End If +' Dim params As Map = CreateMap("topic":"Sprvsr", "coords":coords, "t":t, "b":PushService.battery) +' CallSub2(PushService, "mandaMensaje",params) +' Tracker.locRequest="Enviada" +' CallSubDelayed(Tracker,"CreateLocationRequest") +' End If +End Sub + +'Regresa la fecha y hora de hoy a las 00:00 en el formato "yyMMddHHMMSS" +Sub fechaInicioHoy As String 'ignore + Dim OrigFormat As String = DateTime.DateFormat 'save orig date format + DateTime.DateFormat="yyMMdd" + Private h As String = DateTime.Date(DateTime.Now)&"000000" + DateTime.DateFormat=OrigFormat 'return to orig date format + If Starter.logger Then Log("Hoy="&h) + Return h +End Sub + +'Guardamos "texto" a la bitacora +Sub log2DB(texto As String) 'ignore + If Starter.logger Then LogColor(fechaKMT(DateTime.Now)&" - log2BD: '"&texto&"'", Colors.Magenta) + If Starter.skmt.IsInitialized Then Starter.skmt.ExecNonQuery2("INSERT INTO bitacora(fecha, texto) VALUES (?,?)", Array As Object (fechaKMT(DateTime.now), texto)) +End Sub + +'Regresa verdadero si ya pasaron XX minutos de la fecha dada +Sub masDeXXMins(hora As Int, mins As Int) As Boolean 'ignore + If (hora + mins * DateTime.TicksPerMinute) < DateTime.Now Then + Return True + Else + Return False + End If +End Sub + +'Regresa verdadero si ya pasaron XX minutos de la fechaKMT dada +Sub masDeXXMinsKMT(hora As String, mins As Int) As Boolean 'ignore + Try + ' if starter.logger then LogColor($"Hora=${fechaKMT(fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute)}, Mins=${mins}, Actual=${fechaKMT(DateTime.Now)}"$,Colors.red) + If fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute < DateTime.Now Then +' if starter.logger then Log("+++ +++ "&fechaKMT(fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute) & " < " & fechaKMT(DateTime.Now)) + Return True + Else + ' if starter.logger then Log("+++ +++ "&fechaKMT(fechaKMT2Ticks(hora) + mins * DateTime.TicksPerMinute) & " > " & fechaKMT(DateTime.Now)) + Return False + End If + Catch + Log(LastException) + End Try +End Sub + +'Limpiamos la tabla "bitacora" de la BD +Sub borraLogDB 'ignore + If Starter.logger Then LogColor("Borramos BD de log", Colors.Magenta) + Starter.skmt.ExecNonQuery("delete from bitacora") + Starter.skmt.ExecNonQuery("vacuum;") +End Sub + +'Monitoreamos los servicios PushService y Tracker para ver si estan activos (No pausados), y si no, los reniciamos +Sub Monitor 'ignore +' Private monitorStatus As Boolean = True +' if starter.logger then LogColor("Corriendo Subs.Monitor", Colors.RGB(161,150,0)) +' If IsPaused(Tracker) Then +' log2DB("Reiniciando 'Tracker Pausado' desde Subs.Monitor") +' StartService(Tracker) +' monitorStatus = False +' Else +' revisaFLP +' End If +' If IsPaused(PushService) Then +' log2DB("Reiniciando 'PushService Pausado' desde Subs.Monitor") +' StartService(PushService) +' monitorStatus = False +' Else +' revisaPushService +' End If +' If monitorStatus Then LogColor(" +++ +++ Servicios Activos", Colors.Green) +End Sub + +'Compara la UUG (Ultima Ubicacion Guardada) con FLP.LastKnowLocation y si +'cumple con los requisitos de distancia y precision la guardamos en la BD. +Sub revisaUUG 'ignore + revisaFLP + If Tracker.FLP.GetLastKnownLocation.IsInitialized Then + Dim daa As Int = Tracker.UUGCoords.DistanceTo(Tracker.FLP.GetLastKnownLocation) 'Distancia de la UUG a la actual de Tracker.FLP.GetLastKnownLocation + If Starter.Logger Then LogColor($"**** UUC "${fechaKMT(Tracker.FLP.GetLastKnownLocation.Time)}|$0.2{Tracker.FLP.GetLastKnownLocation.Accuracy}|$0.8{Tracker.FLP.GetLastKnownLocation.Latitude}|$0.8{Tracker.FLP.GetLastKnownLocation.Longitude}|$0.2{Tracker.FLP.GetLastKnownLocation.Speed}|"$, Colors.RGB(255,112,35)) + If daa > 40 And Tracker.FLP.GetLastKnownLocation.Accuracy < 35 Then 'Si la distancia de la ubicacion anterior es mayor de XX y la precision es menor de XX, la guardamos ... + Starter.skmt.ExecNonQuery2("INSERT INTO RUTA_GPS(fecha, lat, lon) VALUES (?,?,?)", Array As Object (fechaKMT(Tracker.FLP.GetLastKnownLocation.Time),Tracker.FLP.GetLastKnownLocation.Latitude,Tracker.FLP.GetLastKnownLocation.Longitude)) + If Starter.Logger Then Log("++++ Distancia a anterior="&daa&"|"&"Precision="&Tracker.FLP.GetLastKnownLocation.Accuracy) + End If + Tracker.UUGCoords = Tracker.FLP.GetLastKnownLocation + End If +End Sub + +'Revisamos que el FLP (FusedLocationProvider) este inicializado y activo +Sub revisaFLP 'ignore + If Starter.logger Then LogColor($"**** **** Revisamos FLP - ${fechaKMT(DateTime.Now)}**** ****"$, Colors.RGB(78,0,227)) + Private todoBienFLP As Boolean = True + If Not(Tracker.FLP.IsInitialized) Then + log2DB("revisaFLP: No esta inicializado ... 'Reinicializando FLP'") + Tracker.FLP.Initialize("flp") + todoBienFLP = False + End If + If Tracker.FLP.IsInitialized Then + If Not(Tracker.FLP.IsConnected) Then + log2DB("revisaFLP: No esta conectado ... 'Reconectando FLP'") +' Tracker.FLP.Connect + CallSubDelayed(Tracker,"StartFLP") + todoBienFLP = False + End If + If Tracker.FLP.IsConnected And _ + Tracker.FLP.GetLastKnownLocation.IsInitialized And _ + Tracker.FLP.GetLastKnownLocation.DistanceTo(Tracker.UUGCoords) > 500 Then + log2DB("revisaFLP: 'No se esta actualizando, lo reiniciamos ...'") + StartService(Tracker) + todoBienFLP = False + End If + End If + If todoBienFLP Then LogColor(" +++ +++ Sin errores en FLP", Colors.Green) + ' revisar hora de lastKnownlocation y si es mayor de 10 minutos llamar StartFLP +End Sub + +'Revisamos que el servicio "PushService" este inicializado y activo +Sub revisaPushService 'ignore +' Private todoBienPS As Boolean = True + '' if starter.logger then LogColor("**** **** Revisamos PushService **** ****", Colors.RGB(78,0,227)) +' Try +' If Not(PushService.wsh.IsInitialized) Then 'Si no esta inicializado ... +' log2DB("revisaPushService: No esta inicializado ... 'Reinicializando PushService'") +' CallSubDelayed(PushService, "Connect") +' todoBienPS = False +' End If +' Catch +' Log(LastException) +' insertaEnErrores("Subs.revisaPushService: Reiniciando - "&LastException) +' End Try +' Try +' If Not(PushService.wsh.ws.Connected) Then 'Si no esta conectado ... +' log2DB("revisaPushService: No esta conectado ... 'Reconectando PushService'") +' CallSubDelayed(PushService, "Connect") +' todoBienPS = False +' End If +' Catch +' Log(LastException) +' insertaEnErrores("Subs.revisaPushService: Reconectando - "&LastException) +' End Try +' Try +' If masDeXXMinsKMT(Starter.pushServiceActividad, 5) Then 'Si mas de xx minutos de la ultima actividad entonces ... +' PushService.wsh.Close +' CallSubDelayed(PushService, "Connect") +' ' StartService(PushService) +' ' If Main.Logger Then Log("Ultima act: "&Starter.pushServiceActividad) +' log2DB("revisaPushService: 'Reconectamos 'PushService' por inactividad") +' Starter.pushServiceActividad = fechaKMT(DateTime.Now) +' todoBienPS = False +' End If +' Catch +' Log(LastException) +' insertaEnErrores("Subs.revisaPushService: Reconectando por inactividad - "&LastException) +' End Try +' If todoBienPS Then LogColor(" +++ +++ Sin errores en PushService", Colors.Green) +End Sub + +'Borramos renglones extra de la tabla de errores +Sub borraArribaDe100Errores 'ignore + If Not(Starter.errorLog.IsInitialized) Then revisaBD + If Starter.logger Then LogColor("Recortamos la tabla de Errores, limite de 100", Colors.Magenta) + Starter.errorLog.ExecNonQuery("DELETE FROM errores WHERE fecha NOT in (SELECT fecha FROM errores ORDER BY fecha desc LIMIT 99 )") + Starter.errorLog.ExecNonQuery("vacuum;") +' if starter.logger then Log("Borramos mas de 100 de errorLog") +End Sub + +'Borramos renglones extra de la tabla de bitacora +Sub borraArribaDe600RenglonesBitacora 'ignore + revisaBD + If Starter.logger Then LogColor("Recortamos la tabla de la Bitacora, limite de 600", Colors.Magenta) + Private c As Cursor + c = Starter.skmt.ExecQuery("select fecha from bitacora") + c.Position = 0 + If c.RowCount > 650 Then + Starter.skmt.ExecNonQuery("DELETE FROM bitacora WHERE fecha NOT in (SELECT fecha FROM bitacora ORDER BY fecha desc LIMIT 599 )") + Starter.skmt.ExecNonQuery("vacuum;") +' if starter.logger then Log("Borramos mas de 600 de bitacora") + End If + c.Close +End Sub + +'Inserta 50 renglones de prueba a la tabla "errores" +Sub insertaRenglonesPruebaEnErrorLog 'ignore + If Not(Starter.errorLog.IsInitialized) Then revisaBD + Log("insertamos 50 renglones a errorLog") + For x = 1 To 50 + Starter.errorLog.ExecNonQuery2("INSERT INTO errores(fecha, error) VALUES (?,?)", Array As Object (fechaKMT(DateTime.now), "abc")) + If Starter.logger Then Log(x) + Next +End Sub + +'Regresa la tabla "errores" en una lista de mapas convertida a JSON +Sub dameErroresJSON(SQL As SQL, maxErrores As Int, comprimido As Boolean) As String 'ignore + If Starter.logger Then Log("dameErroresJSON") + Private j As JSONGenerator + Private lim As String + Private cur As ResultSet + Private l As List + Private i As Int = 0 + l.Initialize + Dim m, m2 As Map + m2.Initialize + If maxErrores = 0 Then lim = "" Else lim = "limit "&maxErrores + cur = SQL.ExecQuery("select * from errores order by fecha desc "&lim) + Do While cur.NextRow + m.Initialize + m.Put("fecha", cur.GetString("fecha")) + m.Put("error", cur.GetString("error")) + m2.Put(i,m) + i = i + 1 + Loop + cur.Close + j.Initialize(m2) + If Starter.logger Then Log(j.ToString) + If comprimido Then + Return compress(j.ToString) + Else + Return j.ToString + End If +End Sub + +'Convierte una fecha en formato YYMMDDHHMMSS a Ticks +Sub fechaKMT2Ticks(fKMT As String) As Long 'ignore + Try + If fKMT.Length = 12 Then + Private parteFecha As String = fKMT.SubString2(0,6) + Private parteHora As String = fKMT.SubString(6) + Private OrigFormat As String = DateTime.DateFormat 'save original date format + DateTime.DateFormat="yyMMdd" + DateTime.TimeFormat="HHmmss" + Private ticks As Long = DateTime.DateTimeParse(parteFecha,parteHora) +' Log(" +++ +++ pFecha:"&parteFecha&" | pHora:"&parteHora) + DateTime.DateFormat=OrigFormat 'return to original date format + Return ticks + Else + Log("Formato de fecha incorrecto, debe de ser 'yyMMddHHmmss', no '"&fKMT&"' largo="&fKMT.Length) + Return 0 + End If + Catch + Log(LastException) + If Starter.logger Then LogColor($"Fecha dada: ${fKMT}, Parte Fecha: ${parteFecha}, Parte Hora: ${parteHora}"$, Colors.Red) + Return 0 + End Try +End Sub + +'Sub InstallAPK(dir As String, apk As String) 'ignore +' If File.Exists(dir, apk) Then +' Dim i As Intent +' i.Initialize(i.ACTION_VIEW, "file://" & File.Combine(dir, apk)) +' i.SetType("application/vnd.android.package-archive") +' StartActivity(i) +' End If +'End Sub + +'Copia la base de datos del almacenamiento interno al externo en el directorio kmts +Sub copiaDB(result As Boolean) 'ignore + If result Then + Dim p As String + Dim safeDir As String = Starter.rp.GetSafeDirDefaultExternal("erroresDir") + p = Starter.ruta + Dim theDir As String + Try + File.MakeDir(p,"kmts") + theDir = "/kmts" + Catch + theDir = "" + End Try + Try + Private nombreDB As String = $"kell_${Starter.rutaPreventa}_kmt.db"$ + File.Copy(p,"kmt.db",File.DirInternal&theDir, nombreDB) + File.Copy(p,"errorLog.db",File.DirInternal&theDir,"kell_errorLog.db") + ToastMessageShow("BD copiada a " & File.DirInternal&theDir, False) + Catch + Try + Private nombreDB As String = $"kell_${Starter.rutaPreventa}_kmt.db"$ + File.Copy(p,"kmt.db", safeDir, nombreDB) + File.Copy(p,"errorLog.db", safeDir,"kell_errorLog.db") + ToastMessageShow("BD copiada a " & safeDir, False) + Catch + ToastMessageShow("No se puedo copiar la base de datos.", False) + End Try +' ToastMessageShow("No se pudo hacer la copia: "&LastException, True) + End Try + If Starter.logger Then Log("rootExternal="&p) + If Starter.logger Then Log("safe="&safeDir) + Else + ToastMessageShow("Sin permisos", False) + End If +End Sub + +'Hace visible el panel con los parametros "Top" y "Left" dados +Sub panelVisible(panel As Panel, top As Int, left As Int) 'ignore + panel.BringToFront + panel.Visible = True + panel.Top = top + panel.Left = left +End Sub + +'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.skmt.IsInitialized) Then revisaBD + c=Starter.skmt.ExecQuery("select USUARIO from usuarioa") + c.Position=0 + If c.RowCount > 0 Then u = c.GetString("USUARIO") + c.Close + Return u +End Sub + +'Regresa el tiempo transcurrido entre la primera vez que se llama (paso 1) y la segunda (paso 2), usa el mapa global "Main.tiempos" +Sub cronoX(thisCrono As String, paso As Int) As String 'ignore + If paso = 1 Then + Starter.tiempos.Put(thisCrono, DateTime.Now) + Else + Return $"Tiempo transcurrido ${thisCrono}: ${DateTime.Now-Starter.tiempos.Get(thisCrono)} "$ + End If +End Sub + +'Cierra todas las actividades y sale de la aplicacion (Android 4.1+ - API 16+) +Sub cierraActividades + If Starter.logger Then Log("closing activities") + Dim jo As JavaObject + jo.InitializeContext + jo.RunMethod("finishAffinity", Null) +End Sub + +'Regresa el cliente actual de CUENTAA como un string, y si no encuenta nada regresa "". +Sub clienteActual As String + Private x As String = "" + Private c As Cursor = Starter.skmt.ExecQuery("Select CUENTA from cuentaa") + If c.RowCount > 0 Then + c.Position = 0 + x = c.GetString("CUENTA") + End If + c.Close + Return x +End Sub + +'Marca un cliente como impreso, lo agrega a la tabla "CLIENTE_IMPRESO" y lo actualiza en "kmt_info" (IMPRESION). +Sub ponImpreso (cliente As String) + Starter.skmt.ExecNonQuery2("UPDATE kmt_info set IMPRESION = 1 where CAT_CL_CODIGO = ?", Array As String(cliente)) + Starter.skmt.ExecNonQuery2("insert into CLIENTE_IMPRESO (CI_CUENTA) values (?)",Array As String(cliente)) + If Starter.logger Then Log($"Cliente ${cliente} agegado a CLIENTE_IMPRESO y actualizado en kmt_info."$) +End Sub + +'Guarda el nombre de la ultima actividad mostrada "ultimaActividad(Me)". +Sub ultimaActividad(ea As String) +' Private x() As String = Regex.Split("\.", ea) +' Starter.ultimaActividad = "" +' If x.Length = 4 Then +' Starter.ultimaActividad = x(3) +' File.WriteString(File.DirInternal, "ua.txt", Starter.ultimaActividad) +' End If +End Sub + +'Guarda el nombre de la ultima actividad en base de datos "ultimaActividad(Me)". +Sub guardaUltimaActividadBD(ua As String) +' if starter.logger then LogColor($"Guardamos ultima actividad '${ua}'"$, Colors.Blue) + Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("ULTIMOMODULO")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("ULTIMOMODULO", ua)) +End Sub + +'Regresa la ultima actividad guardada en base de datos. +Sub traeUltimaActividadBD As String + If Starter.logger Then LogColor("Buscamos ultima actividad en BD", Colors.Magenta) + Private c As Cursor + Private x As String + c = Starter.skmt.ExecQuery("select CAT_VA_VALOR from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'ULTIMOMODULO'") + If c.RowCount > 0 Then + c.Position = 0 + x = c.GetString("CAT_VA_VALOR") + If Starter.logger Then Log("Encontramos: " & x) + End If + c.Close + Return x +End Sub + +'Guarda el nombre de la pagina en base de datos la muestra. +Sub iniciaActividad(ia As String) + If ia <> "" And ia <> Null Then + If Starter.logger Then LogColor($"Guardamos en BD '${ia}'"$, Colors.Yellow) + Starter.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("ULTIMOMODULO")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("ULTIMOMODULO", ia)) + 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.skmt.ExecNonQuery2("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = ?", Array As Object ("ULTIMOMODULO")) + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_VARIABLES(CAT_VA_DESCRIPCION, CAT_VA_VALOR) VALUES (?,?)", Array As Object ("ULTIMOMODULO", ia)) + StartActivity(ia) +' B4XPages.ShowPage(ia) +' if starter.logger then LogColor("Iniciamos --> " & ia, Colors.Blue) +End Sub + +'Agrega la variable al mapa de sesion. +Sub agregaASesion(nombre As String, valor As String) '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.skmt.ExecQuery("SELECT HGLAT as HGLAT, HGLON as HGLON FROM HIST_GPS") + c.Position=0 + Private lon As String = c.GetString("HGLON") + Private lat As String = c.GetString("HGLAT") + c.Close + Private coords As List + coords.Initialize + coords.Add(lat) + coords.Add(lon) + Return coords +End Sub + +'Modifica el ancho y alto de un panel dado con el ancho y alto proporcionados. +Sub panelAnchoAlto(p As Panel, w As Int, h As Int) +' If Starter.logger Then Log($"panel:${p}, alncho=${w}, alto=${h}"$) + p.Top = 0 + p.Left = 0 + p.Width = w + p.Height = h +End Sub + +'Regresa el dia de HOY como string, en español y mayusculas. +Sub dameDiaSemana As String + Private ds As String = DateTime.GetDayOfWeek(DateTime.Now) + If ds = "1" Then + ds = "DOMINGO" + else if ds = "2" Then + ds = "LUNES" + else if ds = "3" Then + ds = "MARTES" + else if ds = "4" Then + ds = "MIERCOLES" + else if ds = "5" Then + ds = "JUEVES" + else if ds = "6" Then + ds = "VIERNES" + Else + ds = "SABADO" + End If + Return ds +End Sub + +'Regresa cuentos clientes fuera de frecuencia hay con venta. +Sub dameClientesFueraDeFrecuencia As String + Private dia_visita As String = dameDiaSemana + Private f As Cursor = Starter.skmt.ExecQuery("SELECT CAT_VA_VALOR as dia_visita FROM CAT_VARIABLES WHERE CAT_VA_DESCRIPCION = 'DIA_VISITA'") + If f.RowCount > 0 Then + f.Position=0 + dia_visita = f.GetString("dia_visita") + End If +' Log("-> "&dia_visita) + f = Starter.skmt.ExecQuery("Select count(distinct PE_CLIENTE) as cff FROM kmt_info INNER JOIN PEDIDO ON kmt_info.CAT_CL_CODIGO = PEDIDO.PE_CLIENTE WHERE kmt_info.CAT_CL_DIAS_VISITA <> '"&dia_visita&"'") + f.Position=0 +' Log(f.GetString("cff")) + Private cff As String = f.GetString("cff") + f.Close + Return cff +End Sub + +'Regresa el almacen actual de la base de datos. +Sub traeAlmacen As String 'ignore + Private c As Cursor + Private a As String + c=Starter.skmt.ExecQuery("select ID_ALMACEN from CAT_ALMACEN") + c.Position = 0 + a = C.GetString("ID_ALMACEN") + c.Close + Return a +End Sub + +'Regresa el nombre del producto desde CAT_GUNAPROD +Sub traeProdNombre(id As String) As String + Private h As Cursor + Private n As String + h=Starter.skmt.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.skmt.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.skmt.ExecQuery("select CAT_CL_RUTA from kmt_info where CAT_CL_CODIGO In (Select cuenta from cuentaa)") + r = "0" + If c.RowCount > 0 Then + c.Position=0 + r = c.GetString("CAT_CL_RUTA") + End If + c.Close + Return r +End Sub + +Sub traeCliente As String 'ignore + Private c As Cursor + Private cl As String + c=Starter.skmt.ExecQuery("Select CUENTA from cuentaa") + c.Position=0 + cl = c.GetString("CUENTA") + c.Close + Return cl +End Sub + +Sub 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.skmt.IsInitialized) Then revisaBD + c=Starter.skmt.ExecQuery("select USUARIO from usuarioa") + c.Position=0 + If c.RowCount > 0 Then u = c.GetString("USUARIO") + c.Close + Return u +End Sub + +'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.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_FOLIO) VALUES(?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (cedis, (cant * costoU), costoU, cant, nombre, prodId, clienteId, fecha, usuario, rutaV, precioSin, tipoVenta)) +' Starter.skmt.ExecNonQuery2("update cat_gunaprod set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cant, prodId)) +' 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)") +' 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(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.skmt.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.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, PE_RUTA) VALUES(?,?,?,?,?,?,?,?,?,?,?,?) ", Array As Object (cedis, costoTot, costoU, cant, nombre, prodId, clienteId, fecha, usuario, tipoV, precio2, Starter.rutaV)) + Starter.skmt.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.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) 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.skmt.ExecNonQuery2($"update ${traeTablaProds(tipoVenta)} set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? "$, Array As Object(cant, prodId)) + 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)") + 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(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.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 (cedis, costoTot, costoU, cant, nombre, prodId, clienteId, fecha, usuario, rutaV, precioSin, tipoV, precio2)) + Starter.skmt.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.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)") + 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(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.skmt.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.skmt.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.skmt.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.skmt.ExecNonQuery($"update ${traeTablaProds(tipoVenta)} set cat_gp_almacen = cat_gp_almacen - (${difCant}) where cat_gp_id = '${prodId}' "$) + If cant = 0 Then + LogColor($"BORRAMOS PRODUCTO - ${prodId}"$, Colors.Red) + Starter.skmt.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.skmt.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.skmt.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.skmt.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 As List + promoMap.Initialize + prodsFijos.Initialize + prodsFijosPrecios.Initialize + prodsFijosPiezas.Initialize + prodsVariables.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.skmt.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.skmt.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"), "almacen":c.GetString("CAT_DP_ALMACEN"), "tipo":c.GetString("CAT_DP_TIPO"), "piezas":c.GetString("CAT_DP_PZAS"), "usuario":c.GetString("CAT_DP_USUARIO"), "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")) + 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("resultado", "ok") + Else + promoMap.Put("resultado", "No hay datos de la promoción.") + End If + c = Starter.skmt.ExecQuery("Select CAT_GP_STS, CAT_GP_NOMBRE from CAT_GUNAPROD2 where CAT_GP_ID = '"& promo & "'") 'Obtenemos las piezas requeridas de productos variables para la promoción. + 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.skmt.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 = True '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.skmt.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 Log("==== HISTORICO:"&pm.Get("historico")) + 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.skmt.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.Magenta) + '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 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 + 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). + If thisLog Then Log($"id=${idProdsFijos.Get(p)}, inv=${invDispParaPromo.Get(idProdsFijos.Get(p))}, pzas=${prodsFijosPiezas.Get(p)}"$) + If thisLog Then Log($"${(invDispParaPromo.Get(idProdsFijos.Get(p)) / prodsFijosPiezas.Get(p))}"$) + Private x() As String = Regex.Split("\.", $"${(invDispParaPromo.Get(idProdsFijos.Get(p)) / 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) + 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.skmt.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.skmt.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.skmt.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.skmt.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.skmt.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.skmt.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.skmt.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.skmt.ExecNonQuery2($"update ${traeTablaProds(Starter.tipov)} set cat_gp_almacen = cat_gp_almacen + ? where cat_gp_id = ?"$, Array As Object(thisC.GetString("PE_CANT"),thisC.GetString("PE_PROID"))) +' Starter.skmt.ExecNonQuery2("INSERT INTO INVENT_X_ENVIAR (ALMACEN , PROID , CANTIDAD ) VALUES(?,?,?) ", Array As Object (traeAlmacen, thisC.GetString("PE_PROID"),thisC.GetString("PE_CANT")* -1)) + Next + End If + Starter.skmt.ExecNonQuery("delete from pedido_cliente where pc_cliente in (Select CUENTA from cuentaa)") + Starter.skmt.ExecNonQuery("delete from pedido where pe_cliente in (Select CUENTA from cuentaa)") + Starter.skmt.ExecNonQuery("UPDATE kmt_info set gestion = 0 where CAT_CL_CODIGO In (select cuenta from cuentaa)") + 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.skmt.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.skmt.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.skmt.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.skmt.ExecQuery("select count(*) as CUANTOS from CLIENTE_IMPRESO where CI_CUENTA in (Select CUENTA from cuentaa)") + Dim i As Cursor = Starter.skmt.ExecQuery("select count(*) as CUANTOS from kmt_info where (impresion = 1 or cat_cl_codigo in (select ci_cuenta from cliente_impreso)) and CAT_CL_CODIGO in (Select CUENTA from cuentaa)") + 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.skmt.ExecQuery("Select CUENTA from cuentaa") + a.Position=0 + clie_id = a.GetString("CUENTA") + a = Starter.skmt.ExecQuery("select USUARIO from usuarioa") + a.Position=0 + usuario = a.GetString("USUARIO") + Starter.skmt.ExecNonQuery2("INSERT INTO PEDIDO (PE_CEDIS, PE_COSTO_TOT, PE_COSTOU, PE_CANT, PE_PRONOMBRE, PE_PROID, PE_CLIENTE, PE_FECHA, PE_USUARIO, PE_TIPO, PE_PRECIO2) VALUES(?,?,?,?,?,?,?,?,?,?,?) ", Array As Object ("DUR", (precio2 * -1), ((precio2/cantidad) * -1), cantidad, "CAMBIO" & prodNombre, prodId, clie_id, sDate & sTime, usuario, Starter.tipov, precio2)) + Starter.skmt.ExecNonQuery2("update " & query & " set cat_gp_almacen = cat_gp_almacen - ? where cat_gp_id = ? ", Array As Object(cantidad, 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.skmt.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.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 +' Log($"Ya imprimio=${YA_IMPRIMIO}"$) + Starter.skmt.ExecNonQuery("delete from pedido3") + Starter.skmt.ExecNonQuery("UPDATE PEDIDO SET PE_FOLIO = 0 where PE_FOLIO IS NULL") + Starter.skmt.ExecNonQuery("INSERT INTO PEDIDO3 (PE_PRECIO2, PE_TIPO, PE_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.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") + Starter.skmt.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.skmt.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..c5fdd53 --- /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 = true + '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.skmt.ExecNonQuery("DELETE FROM HIST_GPS") + Starter.skmt.ExecNonQuery2("INSERT INTO HIST_GPS (HGDATE, HGLAT, HGLON) VALUES(?,?,?) ", Array As Object (sDate & sTime, Starter.lat_gps, Starter.lon_gps)) + Catch + If logger Then Log("Error al borrar o insertar nuevas coordendas en HIST_GPS") + End Try + End If + + Dim origFormat As String = DateTime.TimeFormat 'Guardamos formato de fecha. + DateTime.TimeFormat = "HHmmss" ' Modificamos formato de fecha. + Dim minsDif As Int = DateTime.Time(DateTime.Now) - Starter.ultimaActualizacionGPS +' If logger Then Log("UltimaAct="&Starter.ultimaActualizacionGPS&" MinsDif="&minsDif) + If Location1.Accuracy < 100 And minsDif > 240 Then 'Si precision de 100 y 4 min transcurridos manda a web. + If logger Then Log("Actualizamos Ubicacion Web") + CallSubDelayed(Starter, "ENVIA_ULTIMA_GPS") + End If + DateTime.TimeFormat = origFormat 'Regresamos formato de fecha original. + B4XPages.MainPage.cliente.GPS_LocationChanged(Location1) + 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..b446bbd --- /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.skmt.ExecQuery("select usuario from usuarioa") + If c.RowCount > 0 Then + c.Position = 0 + usuario = c.GetString("USUARIO") + End If + +' Log("++++++" & Starter.logsStr) +' etText.Text = etText.Text & Starter.logsStr +' lbl.TextSize = etText.TextSize +' lbl.Text = etText.Text +' Dim su As StringUtils +' Dim edheight As Int = su.MeasureMultilineTextHeight(lbl, lbl.Text) +' lbl.RemoveView +' etText.Height = edheight +' svScroll.Panel.Height = edheight + svScroll.Height = Round(Activity.Height * 0.9) +' Log(edheight) + + Dim cmd As DBCommand + cmd.Initialize + cmd.Name = "guardaErrores" + cmd.Parameters = Array As Object(laFecha, usuario&"|"&Starter.rutaV, laFecha, elError) + Log($"Mandamos: ${Subs.fechaKMT(DateTime.Now)}, |${usuario}|, ${Subs.fechaKMT(DateTime.Now)}"$) + Starter.reqManager.ExecuteCommand(cmd,"guardaErrores") +End Sub + +Sub Activity_Pause (UserClosed As Boolean) + +End Sub + +Sub JobDone(Job As HttpJob) + If Job.Success = False Then + ToastMessageShow("Error: " & Job.ErrorMessage, True) + Else + LogColor("JobDone: '" & Starter.reqManager.HandleJob(Job).tag & "' - Registros: " & Starter.reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211110 + If Job.JobName = "DBRequest" Then + Dim result As DBResult = Starter.reqManager.HandleJob(Job) + If result.Tag = "guardaErrores" Then 'query tag + For Each records() As Object In result.Rows + For Each k As String In result.Columns.Keys + Log("GuardaErrores: " & k & ": " & records(result.Columns.Get(k))) + Next + Next + End If + End If + End If + Job.Release +End Sub + +Private Sub c_continuar_Click + 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..fff7214 --- /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.skmt.ExecQuery("select cuenta from cuentaa") + c.Position = 0 + cuenta = c.GetString("CUENTA") + c.Close + Starter.skmt.ExecNonQuery2("INSERT INTO HIST_FOTOS (HF_FOTO, HF_CUENTA, HF_IDENCUESTA) VALUES(?,?,?) ", Array As Object (foto_g,cuenta,B4XPages.MainPage.cliente.id_encuesta )) + Subs.iniciaActividad("Cliente") + End If + Catch + Msgbox("ERROR EN FOTO","") 'ignore + If B4XPages.MainPage.cliente.TOMAR_FOTO = 1 Then + Subs.iniciaActividad("Cliente") + Else + B4XPages.ShowPage("CheckList") + End If + End Try +End Sub + +Sub btnTakePicture_Click + btnTakePicture.Enabled = False + Dim ps As CameraSize + ps.Width =640'480 '1280 + ps.Height =480'360 '960 + camEx.SetPictureSize(ps.Width, ps.Height) + camEx.CommitParameters + camEx.TakePicture +End Sub \ No newline at end of file diff --git a/B4J/Files/MainPage.bjl b/B4J/Files/MainPage.bjl new file mode 100644 index 0000000..405b3b7 Binary files /dev/null and b/B4J/Files/MainPage.bjl differ diff --git a/B4J/Kelloggs V3.b4j b/B4J/Kelloggs V3.b4j new file mode 100644 index 0000000..cdedb76 --- /dev/null +++ b/B4J/Kelloggs V3.b4j @@ -0,0 +1,53 @@ +AppType=JavaFX +Build1=Default,b4j.example +File1=MainPage.bjl +FileGroup1=New Group +Group=Default Group +Library1=jcore +Library2=jfx +Library3=b4xpages +Module1=|relative|..\B4XMainPage +NumberOfFiles=1 +NumberOfLibraries=3 +NumberOfModules=1 +Version=8.31 +@EndOfDesignText@ +#Region Project Attributes + #MainFormWidth: 600 + #MainFormHeight: 600 +#End Region + +Sub Process_Globals + Private fx As JFX + Private MainForm As Form +End Sub + +Sub AppStart (Form1 As Form, Args() As String) + MainForm = Form1 + MainForm.Show + Dim PagesManager As B4XPagesManager + PagesManager.Initialize(MainForm) +End Sub + +'Template version: B4J-1.0 +#Region Delegates +Sub MainForm_FocusChanged (HasFocus As Boolean) + B4XPages.Delegate.MainForm_FocusChanged(HasFocus) +End Sub + +Sub MainForm_Resize (Width As Double, Height As Double) + B4XPages.Delegate.MainForm_Resize(Width, Height) +End Sub + +Sub MainForm_Closed + B4XPages.Delegate.MainForm_Closed +End Sub + +Sub MainForm_CloseRequest (EventData As Event) + B4XPages.Delegate.MainForm_CloseRequest(EventData) +End Sub + +Public Sub MainForm_IconifiedChanged (Iconified As Boolean) + B4XPages.Delegate.MainForm_IconifiedChanged(Iconified) +End Sub +#End Region \ No newline at end of file diff --git a/B4i/Files/mainpage.bil b/B4i/Files/mainpage.bil new file mode 100644 index 0000000..9ac93b4 Binary files /dev/null and b/B4i/Files/mainpage.bil differ diff --git a/B4i/Kelloggs V3.b4i b/B4i/Kelloggs V3.b4i new file mode 100644 index 0000000..7b2433a --- /dev/null +++ b/B4i/Kelloggs V3.b4i @@ -0,0 +1,46 @@ +Build1=Default,b4i.example +File1=MainPage.bil +FileGroup1=Default Group +Group=Default Group +Library1=icore +Library2=b4xpages +Module1=|relative|..\B4XMainPage +NumberOfFiles=1 +NumberOfLibraries=2 +NumberOfModules=1 +Version=6.5 +@EndOfDesignText@ +'Code module +#Region Project Attributes + #ApplicationLabel: B4i Example + #Version: 1.0.0 + 'Orientation possible values: Portrait, LandscapeLeft, LandscapeRight and PortraitUpsideDown + #iPhoneOrientations: Portrait, LandscapeLeft, LandscapeRight + #iPadOrientations: Portrait, LandscapeLeft, LandscapeRight, PortraitUpsideDown + #Target: iPhone, iPad + #ATSEnabled: True + #MinVersion: 8 +#End Region + +Sub Process_Globals + Public App As Application + Public NavControl As NavigationController + +End Sub + +Private Sub Application_Start (Nav As NavigationController) + NavControl = Nav + Dim PagesManager As B4XPagesManager + PagesManager.Initialize(NavControl) +End Sub + +'Template version: B4i-1.0 +#Region Delegates +Private Sub Application_Background + B4XPages.Delegate.Activity_Pause +End Sub + +Private Sub Application_Foreground + B4XPages.Delegate.Activity_Resume +End Sub +#End Region diff --git a/gitpull.bat b/gitpull.bat new file mode 100644 index 0000000..d0aed61 --- /dev/null +++ b/gitpull.bat @@ -0,0 +1 @@ +git pull