From 35c50ccb8595d45adc8c14e71d37368314d44877 Mon Sep 17 00:00:00 2001 From: cheveguerra Date: Thu, 7 Sep 2023 13:56:40 -0600 Subject: [PATCH] Commit inicial --- .gitignore | 3 + B4A/AREstrategias.b4a | 154 ++ B4A/C_UpdateAvailable.bas | 74 + B4A/C_principal.bas | 607 ++++++++ B4A/CameraExClass2.bas | 399 +++++ B4A/DBRequestManager.bas | 272 ++++ B4A/Files/alert2.png | Bin 0 -> 632 bytes B4A/Files/candado.png | Bin 0 -> 17760 bytes B4A/Files/cuenta.bal | Bin 0 -> 3282 bytes B4A/Files/datos-varios.png | Bin 0 -> 2112 bytes B4A/Files/datos.bal | Bin 0 -> 18198 bytes B4A/Files/engranes.png | Bin 0 -> 2735 bytes B4A/Files/financiero.bal | Bin 0 -> 14894 bytes B4A/Files/fondo.png | Bin 0 -> 86882 bytes B4A/Files/fondoblanco.png | Bin 0 -> 20816 bytes B4A/Files/gestion.bal | Bin 0 -> 18916 bytes B4A/Files/gestionadas.bal | Bin 0 -> 4973 bytes B4A/Files/icon_22-[convertido].png | Bin 0 -> 3888 bytes B4A/Files/imglogo_cl_ar.png | Bin 0 -> 11473 bytes B4A/Files/kmt.db | Bin 0 -> 16384 bytes B4A/Files/lupa.png | Bin 0 -> 1872 bytes B4A/Files/mainpage.bal | Bin 0 -> 10213 bytes B4A/Files/principal.bal | Bin 0 -> 9772 bytes B4A/Files/scroll.bal | Bin 0 -> 17700 bytes B4A/Files/usuario.png | Bin 0 -> 17227 bytes B4A/ManageExternalStorage.bas | 81 ++ B4A/Starter.bas | 62 + B4A/Subs.bas | 58 + B4A/Tracker.bas | 218 +++ B4A/appUpdater.bas | 282 ++++ B4A/c_datos.bas | 2177 ++++++++++++++++++++++++++++ B4J/AREstrategias.b4j | 53 + B4J/Files/MainPage.bjl | Bin 0 -> 1959 bytes B4XMainPage.bas | 230 +++ B4i/AREstrategias.b4i | 46 + B4i/Files/mainpage.bil | Bin 0 -> 3084 bytes Icon_22-[Convertido].png | Bin 0 -> 3888 bytes ar.txt | 27 + bagon.txt | 8 + datos-varios.png | Bin 0 -> 2112 bytes engranes.png | Bin 0 -> 2735 bytes gitpull.bat | 1 + lupa.png | Bin 0 -> 1872 bytes 43 files changed, 4752 insertions(+) create mode 100644 .gitignore create mode 100644 B4A/AREstrategias.b4a create mode 100644 B4A/C_UpdateAvailable.bas create mode 100644 B4A/C_principal.bas create mode 100644 B4A/CameraExClass2.bas create mode 100644 B4A/DBRequestManager.bas create mode 100644 B4A/Files/alert2.png create mode 100644 B4A/Files/candado.png create mode 100644 B4A/Files/cuenta.bal create mode 100644 B4A/Files/datos-varios.png create mode 100644 B4A/Files/datos.bal create mode 100644 B4A/Files/engranes.png create mode 100644 B4A/Files/financiero.bal create mode 100644 B4A/Files/fondo.png create mode 100644 B4A/Files/fondoblanco.png create mode 100644 B4A/Files/gestion.bal create mode 100644 B4A/Files/gestionadas.bal create mode 100644 B4A/Files/icon_22-[convertido].png create mode 100644 B4A/Files/imglogo_cl_ar.png create mode 100644 B4A/Files/kmt.db create mode 100644 B4A/Files/lupa.png create mode 100644 B4A/Files/mainpage.bal create mode 100644 B4A/Files/principal.bal create mode 100644 B4A/Files/scroll.bal create mode 100644 B4A/Files/usuario.png create mode 100644 B4A/ManageExternalStorage.bas create mode 100644 B4A/Starter.bas create mode 100644 B4A/Subs.bas create mode 100644 B4A/Tracker.bas create mode 100644 B4A/appUpdater.bas create mode 100644 B4A/c_datos.bas create mode 100644 B4J/AREstrategias.b4j create mode 100644 B4J/Files/MainPage.bjl create mode 100644 B4XMainPage.bas create mode 100644 B4i/AREstrategias.b4i create mode 100644 B4i/Files/mainpage.bil create mode 100644 Icon_22-[Convertido].png create mode 100644 ar.txt create mode 100644 bagon.txt create mode 100644 datos-varios.png create mode 100644 engranes.png create mode 100644 gitpull.bat create mode 100644 lupa.png 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/AREstrategias.b4a b/B4A/AREstrategias.b4a new file mode 100644 index 0000000..a9c2a19 --- /dev/null +++ b/B4A/AREstrategias.b4a @@ -0,0 +1,154 @@ +Build1=Default,arestrategicas.keymon.lat +File1=candado.png +File10=gestionadas.bal +File11=Icon_22-[Convertido].png +File12=ImgLogo_Cl_AR.png +File13=lupa.png +File14=MainPage.bal +File15=principal.bal +File16=scroll.bal +File17=usuario.png +File2=cuenta.bal +File3=datos.bal +File4=datos-varios.png +File5=engranes.png +File6=financiero.bal +File7=fondo.png +File8=fondoblanco.png +File9=gestion.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 +FileGroup2=Default Group +FileGroup3=Default Group +FileGroup4=Default Group +FileGroup5=Default Group +FileGroup6=Default Group +FileGroup7=Default Group +FileGroup8=Default Group +FileGroup9=Default Group +Group=Default Group +Library1=accessibility +Library10=core +Library11=fileprovider +Library12=fusedlocationprovider +Library13=gps +Library14=ime +Library15=okhttputils2 +Library16=phone +Library17=randomaccessfile +Library18=reflection +Library19=runtimepermissions +Library2=appupdating +Library20=sql +Library21=stringutils +Library22=wobblemenu +Library23=xcustomlistview +Library24=xui +Library25=xui views +Library26=javaobject +Library3=aswheelpicker +Library4=b4xpages +Library5=bctoast +Library6=bitmapcreator +Library7=byteconverter +Library8=camera +Library9=compressstrings +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~SetApplicationAttribute(android:usesCleartextTraffic, "true")~\n~SetServiceAttribute(Tracker, android:foregroundServiceType, "location")~\n~'End of default text.~\n~~\n~AddApplicationText(~\n~~\n~ ~\n~)~\n~~\n~AddManifestText(~\n~~\n~)~\n~~\n~AddManifestText(~\n~~\n~ )~\n~~\n~AddPermission(android.permission.ACCESS_BACKGROUND_LOCATION)~\n~~\n~AddPermission("android.permission.MANAGE_EXTERNAL_STORAGE")~\n~~\n~~\n~AddManifestText(~\n~)~\n~'/////////////////////// App Updating ////////////////~\n~ AddManifestText(~\n~ )~\n~ AddApplicationText(~\n~ ~\n~ ~\n~ ~\n~ )~\n~ CreateResource(xml, provider_paths,~\n~ ~\n~ ~\n~ ~\n~ ~\n~ ~\n~ )~\n~AddManifestText()~\n~AddManifestText()~\n~AddManifestText()~\n~AddManifestText()~\n~~\n~AddPermission(android.permission.REQUEST_INSTALL_PACKAGES)~\n~AddPermission(android.permission.INTERNET)~\n~AddPermission(android.permission.INSTALL_PACKAGES)~\n~AddPermission(android.permission.READ_EXTERNAL_STORAGE)~\n~AddPermission(android.permission.WRITE_EXTERNAL_STORAGE)~\n~AddPermission(android.permission.READ_PHONE_STATE)~\n~AddPermission(android.permission.WAKE_LOCK)~\n~CreateResourceFromFile(Macro, JhsIceZxing1.CaturePortrait)~\n~AddPermission("android.permission.MANAGE_EXTERNAL_STORAGE")~\n~SetApplicationAttribute(android:largeHeap, "true")~\n~AddPermission("android.permission.MANAGE_EXTERNAL_STORAGE")~\n~ +Module1=appUpdater +Module10=Subs +Module11=Tracker +Module2=|relative|..\B4XMainPage +Module3=c_datos +Module4=C_principal +Module5=C_UpdateAvailable +Module6=CameraExClass2 +Module7=DBRequestManager +Module8=ManageExternalStorage +Module9=Starter +NumberOfFiles=17 +NumberOfLibraries=26 +NumberOfModules=11 +Version=12.5 +@EndOfDesignText@ +#Region Project Attributes + #AdditionalJar: com.android.support:support-v4 + #AdditionalJar: com.google.android.gms:play-services-location + #ApplicationLabel: AREstrategicas + #VersionCode: 1 + #VersionName: 3.06.15 + 'SupportedOrientations possible values: unspecified, landscape or portrait. + #SupportedOrientations: portrait + #CanInstallToExternalStorage: False +#End Region + +#Region Activity Attributes + #FullScreen: False + #IncludeTitle: False +#End Region + +'#BridgeLogger: True + + +Sub Process_Globals + Public ActionBarHomeClicked As Boolean +End Sub + +Sub Globals + Type CameraInfoAndId (CameraInfo As Object, Id As Int) + Type CameraSize (Width As Int, Height As Int) +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/C_UpdateAvailable.bas b/B4A/C_UpdateAvailable.bas new file mode 100644 index 0000000..122de2b --- /dev/null +++ b/B4A/C_UpdateAvailable.bas @@ -0,0 +1,74 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=12.2 +@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 + Root.Color = Colors.Transparent +End Sub + +Sub B4XPage_Appear + Try + Do While Not(CanRequestPackageInstalls) + MsgboxAsync($"Por favor permita que ${Application.PackageName} instale actualizaciones"$, "Instalar actualización") + Wait For Msgbox_Result(Result As Int) + Dim in As Intent + in.Initialize("android.settings.", "package:" & Application.PackageName) + StartActivity(in) + Loop + Catch + Log("updateAvailable() Error - " & LastException.Message) + End Try + If appUpdater.newApp.update Then + ofreceActualizacion + Else + sinActualizacion + End If +End Sub + +'//////////////////////////////////////////////////////////////////////////////////////////// +'//// Esta es una actividad usada por el servicio appUpdater para mostrar notificaciones +'//// cuando hay alguna actualizacion de apk. +'//////////////////////////////////////////////////////////////////////////////////////////// + + +public Sub CanRequestPackageInstalls As Boolean + ' // https://www.b4x.com/android/forum/threads/version-safe-apk-installation.87667/#content + Dim ctxt As JavaObject + ctxt.InitializeContext + Dim PackageManager As JavaObject = ctxt.RunMethod("getPackageManager", Null) + Return PackageManager.RunMethod("canRequestPackageInstalls", Null) +End Sub + +Sub ofreceActualizacion + If Msgbox2(appUpdater.newApp.newMsg,"Actualización disponible","Si","","No",Null) = DialogResponse.Positive Then 'ignore +' StartService(DownloadService) + CallSubDelayed(appUpdater, "download_newApk") +' ToastMessageShow("Descargando actualización", True) + End If + B4XPages.MainPage.ocultaProgreso + StartActivity(Main) +' Activity.Finish + B4XPages.ShowPage("Mainpage") +End Sub + +Sub sinActualizacion + Msgbox(appUpdater.newApp.okMsg, "Aplicación al corriente") 'ignore +' StartActivity(Main) + B4XPages.MainPage.ocultaProgreso + B4XPages.ShowPage("Mainpage") +End Sub \ No newline at end of file diff --git a/B4A/C_principal.bas b/B4A/C_principal.bas new file mode 100644 index 0000000..46fc580 --- /dev/null +++ b/B4A/C_principal.bas @@ -0,0 +1,607 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=12.2 +@EndOfDesignText@ +Sub Class_Globals + Private Root As B4XView 'ignore + Private xui As XUI 'ignore + Private l_cuentasportrabajar As Label + Private l_cuentrastrabajadas As Label + Private l_credito As Label + Private l_estatus As Label + Private l_nombre As Label + Private l_direccion As Label + Private clv_cuentas As CustomListView + Dim reqManager As DBRequestManager + Dim trabajos = 0 As Int + Dim c As Cursor + Dim d As Cursor + Dim e As Cursor + Private p_cuenta As Panel + Dim lb As Label + + Private et_findia As EditText + Private b_enviar As Button + Private et_busqueda As EditText + Private l_creditoges As Label + Private l_estatusges As Label + Private l_nombreges As Label + Private l_direccionges As Label + Private l_fechagestion As Label + Private l_resultadoges As Label + Private Label3 As Label + Private paneltop As Panel + Private Panel4 As Panel + Dim IME As IME +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("principal") + + + IME.Initialize("IME") + IME.AddHeightChangedEvent + IME_HeightChanged(100%y, 0) + + Starter.skmt.ExecNonQuery("delete from TIPO_VIVIENDA") + Starter.skmt.ExecNonQuery("delete from NIVEL_SOCIO") + Starter.skmt.ExecNonQuery("delete from CARACTERISTICAS") + Starter.skmt.ExecNonQuery("delete from NUMERO_NIV") + Starter.skmt.ExecNonQuery2("INSERT INTO TIPO_VIVIENDA(TIPO, NUMERO) VALUES(?,?)", Array As Object ("Selecciona una opción","0")) + Starter.skmt.ExecNonQuery2("INSERT INTO TIPO_VIVIENDA(TIPO, NUMERO) VALUES(?,?)", Array As Object ("DEPTO","1")) + Starter.skmt.ExecNonQuery2("INSERT INTO TIPO_VIVIENDA(TIPO, NUMERO) VALUES(?,?)", Array As Object ("CASA","2")) + Starter.skmt.ExecNonQuery2("INSERT INTO TIPO_VIVIENDA(TIPO, NUMERO) VALUES(?,?)", Array As Object ("OTRO","3")) + Starter.skmt.ExecNonQuery2("INSERT INTO NIVEL_SOCIO(NIVEL, NUMERO) VALUES(?,?)", Array As Object ("Selecciona una opción","0")) + Starter.skmt.ExecNonQuery2("INSERT INTO NIVEL_SOCIO(NIVEL, NUMERO) VALUES(?,?)", Array As Object ("ALTO","1")) + Starter.skmt.ExecNonQuery2("INSERT INTO NIVEL_SOCIO(NIVEL, NUMERO) VALUES(?,?)", Array As Object ("MEDIO","2")) + Starter.skmt.ExecNonQuery2("INSERT INTO NIVEL_SOCIO(NIVEL, NUMERO) VALUES(?,?)", Array As Object ("BAJO","3")) + Starter.skmt.ExecNonQuery2("INSERT INTO NIVEL_SOCIO(NIVEL, NUMERO) VALUES(?,?)", Array As Object ("OTRO","4")) + Starter.skmt.ExecNonQuery2("INSERT INTO CARACTERISTICAS(TIPO, NUMERO) VALUES(?,?)", Array As Object ("Selecciona una opción","0")) + Starter.skmt.ExecNonQuery2("INSERT INTO CARACTERISTICAS(TIPO, NUMERO) VALUES(?,?)", Array As Object ("PROPIA","1")) + Starter.skmt.ExecNonQuery2("INSERT INTO CARACTERISTICAS(TIPO, NUMERO) VALUES(?,?)", Array As Object ("RENTADA","2")) + Starter.skmt.ExecNonQuery2("INSERT INTO CARACTERISTICAS(TIPO, NUMERO) VALUES(?,?)", Array As Object ("OTRO","3")) + Starter.skmt.ExecNonQuery2("INSERT INTO NUMERO_NIV(NIVELES, NUMERO) VALUES(?,?)", Array As Object ("Selecciona una opción","0")) + Starter.skmt.ExecNonQuery2("INSERT INTO NUMERO_NIV(NIVELES, NUMERO) VALUES(?,?)", Array As Object ("1","1")) + Starter.skmt.ExecNonQuery2("INSERT INTO NUMERO_NIV(NIVELES, NUMERO) VALUES(?,?)", Array As Object ("2","2")) + Starter.skmt.ExecNonQuery2("INSERT INTO NUMERO_NIV(NIVELES, NUMERO) VALUES(?,?)", Array As Object ("3","3")) + Starter.skmt.ExecNonQuery2("INSERT INTO NUMERO_NIV(NIVELES, NUMERO) VALUES(?,?)", Array As Object ("4","4")) + Starter.skmt.ExecNonQuery2("INSERT INTO NUMERO_NIV(NIVELES, NUMERO) VALUES(?,?)", Array As Object ("5","5")) + Starter.skmt.ExecNonQuery2("INSERT INTO NUMERO_NIV(NIVELES, NUMERO) VALUES(?,?)", Array As Object ("6","6")) +End Sub + +Sub B4XPage_Appear + reqManager.Initialize(Me, Starter.DBReqServer) + d = Starter.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS, CARGADO FROM CARGADO") + d.Position = 0 + If d.GetString("CUANTOS") > 0 Then + If d.GetString("CARGADO") = "1" Then + c = Starter.skmt.ExecQuery("SELECT CREDITO, NOMBRE, CALLE, N_EXT, N_INT, ALCALDIA, ESTATUS FROM HIST_DATOS_GENERALES WHERE ESTATUS2 <> 2 order by 1") + + clv_cuentas.Clear + For i = 0 To c.RowCount - 1 + c.Position = i + clv_cuentas.Add(CreateListItem(c.GetString("CREDITO"), c.GetString("NOMBRE"), ("CALLE: " & c.GetString("CALLE") &" NO. EXT: "& c.GetString("N_EXT") & CRLF & "No. INT: "& c.GetString("N_INT") &" COL.: "&c.GetString("ALCALDIA")), c.GetString("ESTATUS")),i) + Next + c.Close + End If + End If + d.Close + + c = Starter.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM HIST_DATOS_GENERALES WHERE ESTATUS2 <> ?",Array As String(2)) + c.Position = 0 + Log(c.GetString("CUANTOS")) + l_cuentasportrabajar.Text = c.GetString("CUANTOS") + c.Close + + c = Starter.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS FROM HIST_DATOS_GENERALES WHERE ESTATUS2 = 2") + c.Position = 0 + Log(c.GetString("CUANTOS")) + l_cuentrastrabajadas.Text = c.GetString("CUANTOS") + c.Close + + Label3.Text = "Cuentas" + l_cuentasportrabajar.TextColor = Colors.White + l_cuentasportrabajar.Color = Colors.Red + l_cuentrastrabajadas.TextColor = Colors.Black + l_cuentrastrabajadas.Color = Colors.White +End Sub + +Sub IME_HeightChanged(NewHeight As Int, OldHeight As Int) + paneltop.Top = NewHeight - paneltop.Height + Panel4.Height = paneltop.Top - Panel4.Top +End Sub + +Private Sub b_carga_Click + trabajos = 0 + + Dim cmd As DBCommand + cmd.Initialize + + + cmd.Name = "select_datosgenerales_AR" + cmd.Parameters = Array As Object(B4XPages.MainPage.user) + reqManager.ExecuteQuery(cmd , 0, "datosgenerales") + trabajos = trabajos + 1 + + cmd.Name = "select_datosfinancieros_AR" + cmd.Parameters = Array As Object(B4XPages.MainPage.user) + reqManager.ExecuteQuery(cmd , 0, "datosfinancieros") + trabajos = trabajos + 1 + + cmd.Name = "select_fuentes_AR" + cmd.Parameters = Array As Object() + reqManager.ExecuteQuery(cmd , 0, "fuente") + trabajos = trabajos + 1 + + cmd.Name = "select_parentesco_AR" + cmd.Parameters = Array As Object() + reqManager.ExecuteQuery(cmd , 0, "parentesco") + trabajos = trabajos + 1 + + cmd.Name = "select_accion_AR" + cmd.Parameters = Array As Object() + reqManager.ExecuteQuery(cmd , 0, "accion") + trabajos = trabajos + 1 + + cmd.Name = "select_resultado_MA_AR" + cmd.Parameters = Array As Object() + reqManager.ExecuteQuery(cmd , 0, "resultado_MA") + trabajos = trabajos + 1 + + cmd.Name = "select_resultado_VC_AR" + cmd.Parameters = Array As Object() + reqManager.ExecuteQuery(cmd , 0, "resultado_VC") + trabajos = trabajos + 1 + + cmd.Name = "select_resultado_CA_AR" + cmd.Parameters = Array As Object() + reqManager.ExecuteQuery(cmd , 0, "resultado_CA") + trabajos = trabajos + 1 + + cmd.Name = "select_resultado_BR_AR" + cmd.Parameters = Array As Object() + reqManager.ExecuteQuery(cmd , 0, "resultado_BR") + trabajos = trabajos + 1 + + ProgressDialogShow("Cargando") +End Sub + +Private Sub l_cuentrastrabajadas_Click + + d = Starter.skmt.ExecQuery("SELECT RESULTADO, FECHA, CREDITO FROM HIST_VISITA WHERE ESTATUS = 2") + + clv_cuentas.Clear + For i = 0 To d.RowCount - 1 + d.Position = i + c = Starter.skmt.ExecQuery2("SELECT NOMBRE, CALLE, N_EXT, N_INT, ALCALDIA, ESTATUS FROM HIST_DATOS_GENERALES WHERE CREDITO = ? ",Array As String(d.GetString("CREDITO"))) + c.Position = 0 + clv_cuentas.Add(CreateListItem2(d.GetString("CREDITO"), c.GetString("NOMBRE"), ("CALLE: " & c.GetString("CALLE") &" NO. EXT: "& c.GetString("N_EXT") & CRLF & "No. INT: "& c.GetString("N_INT") &" COL.: "&c.GetString("ALCALDIA")), c.GetString("ESTATUS"), d.GetString("FECHA"),d.GetString("RESULTADO")),i) + Next + d.Close + l_cuentasportrabajar.TextColor = Colors.Black + l_cuentasportrabajar.Color = Colors.White + l_cuentrastrabajadas.TextColor = Colors.White + l_cuentrastrabajadas.Color = Colors.Red + Label3.Text = "Cuentas gestionadas" + +End Sub + +Private Sub l_cuentasportrabajar_Click + d = Starter.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS, CARGADO FROM CARGADO") + d.Position = 0 + If d.GetString("CUANTOS") > 0 Then + If d.GetString("CARGADO") = "1" Then + c = Starter.skmt.ExecQuery("SELECT CREDITO, NOMBRE, CALLE, N_EXT, N_INT, ALCALDIA, ESTATUS FROM HIST_DATOS_GENERALES WHERE ESTATUS2 <> 2 order by 1") + + clv_cuentas.Clear + For i = 0 To c.RowCount - 1 + c.Position = i + clv_cuentas.Add(CreateListItem(c.GetString("CREDITO"), c.GetString("NOMBRE"), ("CALLE: " & c.GetString("CALLE") &" NO. EXT: "& c.GetString("N_EXT") & CRLF & "No. INT: "& c.GetString("N_INT") &" COL.: "&c.GetString("ALCALDIA")), c.GetString("ESTATUS")),i) + Next + c.Close + End If + End If + d.Close + + Label3.Text = "Cuentas" + l_cuentasportrabajar.TextColor = Colors.White + l_cuentasportrabajar.Color = Colors.Red + l_cuentrastrabajadas.TextColor = Colors.Black + l_cuentrastrabajadas.Color = Colors.White +End Sub + +Sub CreateListItem2(cred As String, nom As String, call As String, status As String, fechages As String, resulges As String) As Panel + Dim p As B4XView = xui.CreatePanel("") +' p.SetLayoutAnimated(0, 0, 0, 1, 115) + p.LoadLayout("gestionadas") + p.Height= 183dip +' p.Width = clv_orden.GetBase.Width + l_creditoges.Text = cred + l_estatusges.Text = status + l_nombreges.Text = nom + l_direccionges.Text = call + l_fechagestion.Text = fechages + l_resultadoges.Text = resulges +' Log(p.Width) + Return p +End Sub + +Sub CreateListItem(cred As String, nom As String, call As String, status As String) As Panel + Dim p As B4XView = xui.CreatePanel("") +' p.SetLayoutAnimated(0, 0, 0, 1, 115) + p.LoadLayout("cuenta") + p.Height= 112dip +' p.Width = clv_orden.GetBase.Width + l_credito.Text = cred + l_estatus.Text = status + l_nombre.Text = nom + l_direccion.Text = call +' Log(p.Width) + Return p +End Sub + +Private Sub p_cuenta_Click + Log("si lo hice") + + Dim Index As Int = clv_cuentas.GetItemFromView(Sender) + Dim pnl As B4XView = clv_cuentas.GetPanel(Index).GetView(0) + lb = pnl.GetView(0) + Log(lb.Text) + + + + B4XPages.ShowPage("datos") +End Sub + +Sub JobDone(Job As HttpJob) + If Not(Job.Success) Then + ToastMessageShow("Error: " & Job.ErrorMessage, True) + Else + LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) + If Job.JobName = "DBRequest" Then + Dim result As DBResult = reqManager.HandleJob(Job) + + If result.Tag = "datosgenerales" Then 'query tag + Starter.skmt.ExecNonQuery("delete from HIST_DATOS_GENERALES2") + Starter.skmt.ExecNonQuery("delete from HIST_DATOS_GENERALES WHERE ESTATUS2 <> 2") + Starter.skmt.ExecNonQuery("delete from HIST_VISITA WHERE ESTATUS <> 2") + Starter.skmt.ExecNonQuery("delete from CARGADO") + Starter.skmt.ExecNonQuery2("INSERT INTO CARGADO(CARGADO) VALUES(?)", Array As Object ("0")) + trabajos = trabajos - 1 + + Starter.skmt.BeginTransaction + + For Each records() As Object In result.Rows + + Dim credito As String = records(result.Columns.Get("PR_KT_CREDITO")) + Dim nombre As String = records(result.Columns.Get("PR_CD_NOMBRE")) + Dim rfc As String = records(result.Columns.Get("PR_CD_RFC")) + Dim curp As String = records(result.Columns.Get("PR_CD_CURP")) + Dim calle As String = records(result.Columns.Get("PR_CD_CALLE")) + Dim n_ext As String = records(result.Columns.Get("PR_CD_NUM_EXT")) + Dim n_int As String = records(result.Columns.Get("PR_CD_NUM_INT")) + Dim alcaldia As String = records(result.Columns.Get("PR_CD_ALCALDIA")) + Dim municipio As String = records(result.Columns.Get("PR_CD_MUNICIPIO")) + Dim entidad As String = records(result.Columns.Get("PR_CD_ENTIDAD")) + Dim cp As String = records(result.Columns.Get("PR_CD_CP")) + Dim sexo As String = records(result.Columns.Get("PR_CD_SEXO")) + Dim fecha_nacimiento As String = records(result.Columns.Get("PR_CD_FECHA_NAC")) + Dim edad As String = records(result.Columns.Get("PR_CD_EDAD")) + Dim email As String = records(result.Columns.Get("PR_CD_EMAIL")) + + Starter.skmt.ExecNonQuery2("INSERT INTO HIST_DATOS_GENERALES2(CREDITO, NOMBRE, RFC, CURP, CALLE, N_EXT, N_INT, ALCALDIA, MUNICIPIO, ENTIDAD, CP, SEXO, FECHA_NACIMIENTO, EDAD, EMAIL, ESTATUS, ESTATUS2) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (credito, nombre, rfc, curp, calle, n_ext, n_int, alcaldia, municipio, entidad, cp, sexo, fecha_nacimiento, edad, email, "Asignado",0)) + + + c = Starter.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM HIST_DATOS_GENERALES WHERE CREDITO = ?",Array As String(credito)) + c.Position= 0 + LogColor(c.GetString("CUANTOS"),Colors.Magenta) + If c.GetString("CUANTOS") > 0 Then + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET CREDITO = ?, NOMBRE = ?, RFC = ?, CURP = ?, CALLE = ?, N_EXT = ?, N_INT = ?, ALCALDIA = ?, MUNICIPIO = ?, ENTIDAD = ?, CP = ?, SEXO = ?, FECHA_NACIMIENTO = ?, EDAD = ?, EMAIL = ? WHERE CREDITO = ?",Array As String(credito, nombre, rfc, curp, calle, n_ext, n_int, alcaldia, municipio, entidad, cp, sexo, fecha_nacimiento, edad, email,credito)) + Else If c.GetString("CUANTOS") = 0 Then + Starter.skmt.ExecNonQuery2("INSERT INTO HIST_DATOS_GENERALES(CREDITO, NOMBRE, RFC, CURP, CALLE, N_EXT, N_INT, ALCALDIA, MUNICIPIO, ENTIDAD, CP, SEXO, FECHA_NACIMIENTO, EDAD, EMAIL, ESTATUS, ESTATUS2) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",Array As String(credito, nombre, rfc, curp, calle, n_ext, n_int, alcaldia, municipio, entidad, cp, sexo, fecha_nacimiento, edad, email, "Asignado",0)) + End If + c.Close + + Next + + Starter.skmt.TransactionSuccessful 'Si no se pone TransactionSuccessful no se escribe NADA!! + Starter.skmt.EndTransaction + + c = Starter.skmt.ExecQuery("SELECT CREDITO, NOMBRE, CALLE, N_EXT, N_INT, ALCALDIA, ESTATUS FROM HIST_DATOS_GENERALES WHERE ESTATUS2 <> 2 order by 1") + + clv_cuentas.Clear + For i = 0 To c.RowCount - 1 + c.Position = i + clv_cuentas.Add(CreateListItem(c.GetString("CREDITO"), c.GetString("NOMBRE"), ("CALLE: " & c.GetString("CALLE") &" NO. EXT: "& c.GetString("N_EXT") & CRLF & "No. INT: "& c.GetString("N_INT") &" COL.: "&c.GetString("ALCALDIA")), c.GetString("ESTATUS")),i) + Next + c.Close + + c = Starter.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS FROM HIST_DATOS_GENERALES WHERE ESTATUS2 <> 2") + c.Position = 0 + Log(c.GetString("CUANTOS")) + l_cuentasportrabajar.Text = c.GetString("CUANTOS") + c.Close + + c = Starter.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS FROM HIST_DATOS_GENERALES WHERE ESTATUS2 = 2") + c.Position = 0 + Log(c.GetString("CUANTOS")) + l_cuentrastrabajadas.Text = c.GetString("CUANTOS") + c.Close + + Label3.Text = "Cuentas" + l_cuentasportrabajar.TextColor = Colors.White + l_cuentasportrabajar.Color = Colors.Red + l_cuentrastrabajadas.TextColor = Colors.Black + l_cuentrastrabajadas.Color = Colors.White + + End If + + If result.Tag = "datosfinancieros" Then 'query tag + Starter.skmt.ExecNonQuery("delete from HIST_FINANCIEROS2") + Starter.skmt.ExecNonQuery("delete from HIST_FINANCIEROS WHERE ESTATUS2 <> 2") + trabajos = trabajos - 1 + + For Each records() As Object In result.Rows + + Dim creditof As String = records(result.Columns.Get("PR_KT_CREDITO")) + Dim CARTERA As String = records(result.Columns.Get("PR_KT_PRODUCTO")) + Dim AGENCIA As String = records(result.Columns.Get("PR_KT_AGENCIA")) + Dim SALDO_TOTAL As String = records(result.Columns.Get("PR_CF_SALDO_TOTAL")) + Dim MONTO_PAGAR As String = records(result.Columns.Get("PR_CF_LIQUIDACION")) + Dim TOTAL_PAGO_DESC As String = records(result.Columns.Get("PR_CF_TOTAL_A_PAGAR_DESC")) + Dim LIQUIDACION As String = records(result.Columns.Get("PR_CF_LIQUIDACION")) + Dim DIAS_VENCIDOS As String = records(result.Columns.Get("PR_CA_DIAS_VENCIDOS")) + Dim DIAS_ATRASO_ACT As String = records(result.Columns.Get("PR_CA_DIAS_ATRASO_ACT")) + Dim FECHA_ATRASO As String = records(result.Columns.Get("PR_CA_FECHA_ATRASO")) + Dim BBVA As String = records(result.Columns.Get("PR_CA_REFERENCIA1")) + Dim OXXO As String = records(result.Columns.Get("PR_CA_REFERENCIA2")) + + Starter.skmt.ExecNonQuery2("INSERT INTO HIST_FINANCIEROS2(CREDITO, CARTERA, AGENCIA, SALDO_TOTAL, MONTO_PAGAR, TOTAL_PAGO_DESC, LIQUIDACION, DIAS_VENCIDOS, DIAS_ATRASO_ACT, FECHA_ATRASO, BBVA, OXXO, ESTATUS, ESTATUS2) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As Object (creditof, CARTERA, AGENCIA, SALDO_TOTAL, MONTO_PAGAR, TOTAL_PAGO_DESC, LIQUIDACION, DIAS_VENCIDOS, DIAS_ATRASO_ACT, FECHA_ATRASO, BBVA, OXXO,"Asignado",0)) + + c = Starter.skmt.ExecQuery2("SELECT COUNT(*) AS CUANTOS FROM HIST_FINANCIEROS WHERE CREDITO = ?",Array As String(creditof)) + c.Position = 0 + LogColor(c.GetString("CUANTOS"),Colors.Red) + If c.GetString("CUANTOS") > 0 Then + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET CREDITO = ?, CARTERA = ?, AGENCIA = ?, SALDO_TOTAL = ?, MONTO_PAGAR = ?, TOTAL_PAGO_DESC = ?, LIQUIDACION = ?, DIAS_VENCIDOS = ?, DIAS_ATRASO_ACT = ?, FECHA_ATRASO = ?, BBVA = ?, OXXO = ? WHERE CREDITO = ?",Array As String(creditof, CARTERA, AGENCIA, SALDO_TOTAL, MONTO_PAGAR, TOTAL_PAGO_DESC, LIQUIDACION, DIAS_VENCIDOS, DIAS_ATRASO_ACT, FECHA_ATRASO, BBVA, OXXO, creditof)) + Else If c.GetString("CUANTOS") = 0 Then + Starter.skmt.ExecNonQuery2("INSERT INTO HIST_FINANCIEROS(CREDITO, CARTERA, AGENCIA, SALDO_TOTAL, MONTO_PAGAR, TOTAL_PAGO_DESC, LIQUIDACION, DIAS_VENCIDOS, DIAS_ATRASO_ACT, FECHA_ATRASO, BBVA, OXXO, ESTATUS, ESTATUS2) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?)",Array As String(creditof, CARTERA, AGENCIA, SALDO_TOTAL, MONTO_PAGAR, TOTAL_PAGO_DESC, LIQUIDACION, DIAS_VENCIDOS, DIAS_ATRASO_ACT, FECHA_ATRASO, BBVA, OXXO, "Asignado",0)) + End If + c.Close + Next + + End If + + If result.Tag = "fuente" Then 'query tag + Starter.skmt.ExecNonQuery("delete from CAT_FUENTE") + trabajos = trabajos - 1 + Dim num As Int = 0 + Dim num2 As Int = 1 + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_FUENTE(FUENTE, NUMERO, NUME) VALUES (?,?,?)", Array As Object("Selecciona una opción",num, num2)) + For Each records() As Object In result.Rows + + Dim FUENTE As String = records(result.Columns.Get("CAT_FU_FUENTE")) + num = num + 1 + num2 = num2 +1 + Dim numero As Int = num + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_FUENTE(FUENTE, NUMERO, NUME) VALUES (?,?,?)", Array As Object(FUENTE,numero,num2)) + + Next + + End If + + If result.Tag = "parentesco" Then 'query tag + Starter.skmt.ExecNonQuery("delete from CAT_PARENTESCO") + trabajos = trabajos - 1 + Dim num As Int = 0 + Dim num2 As Int = 1 + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_PARENTESCO (PARENTESCO, NUMERO, NUME) VALUES (?,?,?)", Array As Object("Selecciona una opción",num, num2)) + For Each records() As Object In result.Rows + Dim PARENTESCO As String = records(result.Columns.Get("CAT_PA_PARENTESCO")) + num = num + 1 + num2 = num2 +1 + Dim numero As Int = num + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_PARENTESCO (PARENTESCO, NUMERO, NUME) VALUES (?,?,?)", Array As Object(PARENTESCO,numero,num2)) + + Next + + End If + + If result.Tag = "accion" Then 'query tag + Starter.skmt.ExecNonQuery("delete from CAT_ACCION") + trabajos = trabajos - 1 + Dim num As Int = 0 + Dim num2 As Int = 1 + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_ACCION(CO_ACCION, CO_ACDESCRIPCION, NUMERO, NUME) VALUES (?,?,?,?)", Array As Object("SO", "Selecciona una opción",num,num2)) + For Each records() As Object In result.Rows + Dim CO_ACCION As String = records(result.Columns.Get("CAT_CO_ACCION")) + Dim CO_ACDESCRIPCION As String = records(result.Columns.Get("CAT_CO_ADESCRIPCION")) + num = num + 1 + num2 = num2 +1 + Dim numero As Int = num + + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_ACCION(CO_ACCION, CO_ACDESCRIPCION, NUMERO,NUME) VALUES (?,?,?,?)", Array As Object(CO_ACCION, CO_ACDESCRIPCION,numero,num2)) + + Next + + End If + + If result.Tag = "resultado_MA" Then 'query tag + Starter.skmt.ExecNonQuery("delete from CAT_RESULTADO_MA") + trabajos = trabajos - 1 + Dim num As Int = 0 + Dim num2 As Int = 1 + Dim num2 As Int = 1 + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_RESULTADO_MA(CAT_CO_ACCION, CO_RESULTADO, CO_RDESCRIPCION, NUMERO, NUME) VALUES (?,?,?,?,?)", Array As Object("MA","SO", "Selecciona una opción",num,num2)) + For Each records() As Object In result.Rows + Dim CAT_CO_ACCION As String = records(result.Columns.Get("CAT_CO_ACCION")) + Dim CO_RESULTADO As String = records(result.Columns.Get("CAT_CO_RESULTADO")) + Dim CO_RDESCRIPCION As String = records(result.Columns.Get("CAT_CO_RDESCRIPCION")) + num = num + 1 + num2 = num2 +1 + Dim numero As Int = num + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_RESULTADO_MA(CAT_CO_ACCION, CO_RESULTADO, CO_RDESCRIPCION, NUMERO, NUME) VALUES (?,?,?,?,?)", Array As Object(CAT_CO_ACCION, CO_RESULTADO, CO_RDESCRIPCION,numero,num2)) + Next + + End If + + If result.Tag = "resultado_VC" Then 'query tag + Starter.skmt.ExecNonQuery("delete from CAT_RESULTADO_VC") + trabajos = trabajos - 1 + Dim num As Int = 0 + Dim num2 As Int = 1 + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_RESULTADO_VC(CAT_CO_ACCION, CO_RESULTADO, CO_RDESCRIPCION, NUMERO, NUME) VALUES (?,?,?,?,?)", Array As Object("VC","SO", "Selecciona una opción",num,num2)) + For Each records() As Object In result.Rows + Dim CAT_CO_ACCION As String = records(result.Columns.Get("CAT_CO_ACCION")) + Dim CO_RESULTADO As String = records(result.Columns.Get("CAT_CO_RESULTADO")) + Dim CO_RDESCRIPCION As String = records(result.Columns.Get("CAT_CO_RDESCRIPCION")) + num = num + 1 + num2 = num2 +1 + Dim numero As Int = num + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_RESULTADO_VC(CAT_CO_ACCION, CO_RESULTADO, CO_RDESCRIPCION, NUMERO, NUME) VALUES (?,?,?,?,?)", Array As Object(CAT_CO_ACCION, CO_RESULTADO, CO_RDESCRIPCION,numero,num2)) + Next + + End If + + If result.Tag = "resultado_CA" Then 'query tag + Starter.skmt.ExecNonQuery("delete from CAT_RESULTADO_CA") + trabajos = trabajos - 1 + Dim num As Int = 0 + Dim num2 As Int = 1 + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_RESULTADO_CA(CAT_CO_ACCION, CO_RESULTADO, CO_RDESCRIPCION, NUMERO, NUME) VALUES (?,?,?,?,?)", Array As Object("CA","SO", "Selecciona una opción",num,num2)) + For Each records() As Object In result.Rows + Dim CAT_CO_ACCION As String = records(result.Columns.Get("CAT_CO_ACCION")) + Dim CO_RESULTADO As String = records(result.Columns.Get("CAT_CO_RESULTADO")) + Dim CO_RDESCRIPCION As String = records(result.Columns.Get("CAT_CO_RDESCRIPCION")) + num = num + 1 + num2 = num2 +1 + Dim numero As Int = num + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_RESULTADO_CA(CAT_CO_ACCION, CO_RESULTADO, CO_RDESCRIPCION, NUMERO, NUME) VALUES (?,?,?,?,?)", Array As Object(CAT_CO_ACCION, CO_RESULTADO, CO_RDESCRIPCION,numero,num2)) + Next + + End If + + If result.Tag = "resultado_BR" Then 'query tag + Starter.skmt.ExecNonQuery("delete from CAT_RESULTADO_BR") + trabajos = trabajos - 1 + Dim num As Int = 0 + Dim num2 As Int = 1 + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_RESULTADO_BR(CAT_CO_ACCION, CO_RESULTADO, CO_RDESCRIPCION, NUMERO, NUME) VALUES (?,?,?,?,?)", Array As Object("BR","SO", "Selecciona una opción",num,num2)) + For Each records() As Object In result.Rows + Dim CAT_CO_ACCION As String = records(result.Columns.Get("CAT_CO_ACCION")) + Dim CO_RESULTADO As String = records(result.Columns.Get("CAT_CO_RESULTADO")) + Dim CO_RDESCRIPCION As String = records(result.Columns.Get("CAT_CO_RDESCRIPCION")) + num = num + 1 + num2 = num2 +1 + Dim numero As Int = num + Starter.skmt.ExecNonQuery2("INSERT INTO CAT_RESULTADO_BR(CAT_CO_ACCION, CO_RESULTADO, CO_RDESCRIPCION, NUMERO, NUME) VALUES (?,?,?,?,?)", Array As Object(CAT_CO_ACCION, CO_RESULTADO, CO_RDESCRIPCION,numero,num2)) + Next + + End If + + End If + + Log(trabajos) + If trabajos = 0 Then + Starter.skmt.ExecNonQuery2("UPDATE CARGADO SET CARGADO = ?",Array As String("1")) + ProgressDialogHide + End If + + End If +End Sub + +Private Sub b_enviar_Click + Dim cmd As DBCommand + Dim foto1() As Byte + Dim foto2() As Byte + Dim foto3() As Byte + Dim foto4() As Byte + Dim Dirp As String = File.DirRootExternal + Dim Dir As String + Dim Dir2 As String + Dir = "/Arestrategicas" + Dir2 = "/reduccion" + + c = Starter.skmt.ExecQuery("SELECT * FROM HIST_VISITA WHERE ESTATUS = 2 AND ENVIADO <> 1") + Log(c.RowCount) + + For i = 0 To c.RowCount - 1 + c.Position = i + foto1 = Bit.InputStreamToBytes(File.OpenInput(Dirp&Dir&Dir2,c.GetString("FOTOUNO"))) + foto2 = Bit.InputStreamToBytes(File.OpenInput(Dirp&Dir&Dir2,c.GetString("FOTODOS"))) + foto3 = Bit.InputStreamToBytes(File.OpenInput(Dirp&Dir&Dir2,c.GetString("FOTOTRES"))) + foto4 = Bit.InputStreamToBytes(File.OpenInput(Dirp&Dir&Dir2,c.GetString("FOTOCUATRO"))) + + cmd.Initialize + cmd.Name = "insert_gestion_AR" + cmd.Parameters = Array As Object(c.GetString("CREDITO"), c.GetString("PRODUCTO"), c.GetString("VISITADOR"), c.GetString("RESULTADO"), c.GetString("CODIGO_RES"), c.GetString("PARENTESCO"), c.GetString("COMENTARIOS"), c.GetString("FECHA"), c.GetString("LONGITUD"), c.GetString("LATUTUD"), c.GetString("FECHACAPTURA"), c.GetString("AGENCIA"), c.GetString("FECHA_PROMESA"), c.GetString("MONTO_PROMESA"), c.GetString("TIPO_DOMICILIO"), c.GetString("NIVEL_SOCIO"), c.GetString("CARACTERISTICAS"), c.GetString("NIVELES"), foto1, foto2, foto3, foto4, c.GetString("NOMBRE_ATIENDE"), c.GetString("CODIGO_ACCION"), c.GetString("ACCION"), c.GetString("DIAS_ACCION"), c.GetString("PUNTOS_REF")) + B4XPages.MainPage.reqManager.ExecuteCommand(cmd, "insert_gestion_AREstrategicas") + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ENVIADO = ? WHERE CREDITO = ?", Array As String("1",c.GetString("CREDITO"))) + Next + MsgboxAsync("Datos enviados.","") + c.Close +End Sub + + + +Private Sub et_findia_EnterPressed + Dim res As String + If et_findia.Text = "FIN DIA" 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 + Starter.skmt.ExecNonQuery("delete from HIST_DATOS_GENERALES") + Starter.skmt.ExecNonQuery("delete from HIST_FINANCIEROS") + Starter.skmt.ExecNonQuery("delete from HIST_DATOS_GENERALES2") + Starter.skmt.ExecNonQuery("delete from HIST_FINANCIEROS2") + Starter.skmt.ExecNonQuery("delete from HIST_VISITA") + Starter.skmt.ExecNonQuery("delete from CHECADO") + Starter.skmt.ExecNonQuery("delete from CARGADO") + clv_cuentas.Clear + l_cuentasportrabajar.Text = "0" + l_cuentrastrabajadas.Text = "0" + et_findia.Text = "" + End If + End If +End Sub + +Private Sub et_busqueda_TextChanged (Old As String, New As String) + Dim BUSCA As String + BUSCA = "%" & et_busqueda.Text & "%" + If et_busqueda.Text.Length = 0 Then + c = Starter.skmt.ExecQuery("SELECT CREDITO, NOMBRE, CALLE, N_EXT, N_INT, ALCALDIA, ESTATUS FROM HIST_DATOS_GENERALES WHERE ESTATUS2 <> 2 order by 1") + + clv_cuentas.Clear + For i = 0 To c.RowCount - 1 + c.Position = i + clv_cuentas.Add(CreateListItem(c.GetString("CREDITO"), c.GetString("NOMBRE"), ("CALLE: " & c.GetString("CALLE") &" NO. EXT: "& c.GetString("N_EXT") & CRLF & "No. INT: "& c.GetString("N_INT") &" COL.: "&c.GetString("ALCALDIA")), c.GetString("ESTATUS")),i) + Next + c.Close + Else If et_busqueda.Text.Length > 0 Then + c = Starter.skmt.ExecQuery2("SELECT CREDITO, NOMBRE, CALLE, N_EXT, N_INT, ALCALDIA, ESTATUS FROM HIST_DATOS_GENERALES WHERE NOMBRE LIKE ? OR CREDITO LIKE ? ",Array As String(BUSCA, BUSCA)) + + clv_cuentas.Clear + For i = 0 To c.RowCount - 1 + c.Position = i + clv_cuentas.Add(CreateListItem(c.GetString("CREDITO"), c.GetString("NOMBRE"), ("CALLE: " & c.GetString("CALLE") &" NO. EXT: "& c.GetString("N_EXT") & CRLF & "No. INT: "& c.GetString("N_INT") &" COL.: "&c.GetString("ALCALDIA")), c.GetString("ESTATUS")),i) + Next + c.Close + End If +End Sub + +Private Sub B4XPage_CloseRequest As ResumableSub + + + B4XPages.ShowPage("Mainpage") + +' Return True + Return False +End Sub \ No newline at end of file diff --git a/B4A/CameraExClass2.bas b/B4A/CameraExClass2.bas new file mode 100644 index 0000000..bc84bf4 --- /dev/null +++ b/B4A/CameraExClass2.bas @@ -0,0 +1,399 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=6 +@EndOfDesignText@ +'Class module +'version 1.30 +'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 + 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 + Log("findCamera") + 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) + Log(r.target) + Log(numberOfCameras) + 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 + Log("facing: " & r.GetField("facing") & ", " & cameraValue) + If r.GetField("facing") = cameraValue Then + 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 +'Uncomment this sub if you need to handle the Preview event +'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 GetSupportedPreviewSizes As CameraSize() + r.target = parameters + Dim list1 As List = r.RunMethod("getSupportedPreviewSizes") + 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 SetPreviewSize(Width As Int, Height As Int) + r.target = parameters + r.RunMethod3("setPreviewSize", Width, "java.lang.int", Height, "java.lang.int") +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 + +'Returns a list with the supported preview fps. Each item in the list is an array of two ints (minimum value and maximum value). +Public Sub GetSupportedPreviewFpsRange As List + r.target = parameters + Return r.RunMethod("getSupportedPreviewFpsRange") +End Sub +'Returns the current preview fps range. +'Range is a two elements array. The minimum value and maximum value will be stored in this array. +Public Sub GetPreviewFpsRange(Range() As Int) + r.target = parameters + r.RunMethod4("getPreviewFpsRange", Array As Object(Range), Array As String("[I")) +End Sub + +Public Sub SetPreviewFpsRange(MinValue As Int, MaxValue As Int) + r.target = parameters + r.RunMethod4("setPreviewFpsRange", Array As Object(MinValue, MaxValue), _ + Array As String("java.lang.int", "java.lang.int")) +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 + +Public Sub GetSupportedPictureFormats As List + r.target = parameters + Return r.RunMethod("getSupportedPictureFormats") +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 + +Public Sub IsZoomSupported As Boolean + r.target = parameters + Return r.RunMethod("isZoomSupported") +End Sub + +Public Sub GetMaxZoom As Int + r.target = parameters + Return r.RunMethod("getMaxZoom") +End Sub + +Public Sub getZoom() As Int + r.target = parameters + Return r.RunMethod("getZoom") +End Sub + +Public Sub setZoom(ZoomValue As Int) + r.target = parameters + r.RunMethod2("setZoom", ZoomValue, "java.lang.int") +End Sub + +Public Sub getExposureCompensation As Int + r.target = parameters + Return r.RunMethod("getExposureCompensation") +End Sub + +Public Sub setExposureCompensation(v As Int) + r.target = parameters + r.RunMethod2("setExposureCompensation", v, "java.lang.int") +End Sub + +Public Sub getMinExposureCompensation As Int + r.target = parameters + Return r.RunMethod("getMinExposureCompensation") +End Sub + +Public Sub getMaxExposureCompensation As Int + r.target = parameters + Return r.RunMethod("getMaxExposureCompensation") +End Sub + +Public Sub SetFaceDetectionListener + Dim jo As JavaObject = nativeCam + Dim e As Object = jo.CreateEvent("android.hardware.Camera.FaceDetectionListener", "FaceDetection", Null) + jo.RunMethod("setFaceDetectionListener", Array(e)) +End Sub + +Private Sub FaceDetection_Event (MethodName As String, Args() As Object) As Object + Dim faces() As Object = Args(0) + For Each f As Object In faces + Dim jo As JavaObject = f + Dim faceRect As Rect = jo.GetField("rect") + Log(faceRect) + Next + Return Null +End Sub + + + +Public Sub StartFaceDetection + Dim jo As JavaObject = nativeCam + jo.RunMethod("startFaceDetection", Null) +End Sub + +Public Sub StopFaceDetection + Dim jo As JavaObject = nativeCam + jo.RunMethod("stopFaceDetection", Null) +End Sub + diff --git a/B4A/DBRequestManager.bas b/B4A/DBRequestManager.bas new file mode 100644 index 0000000..31298ba --- /dev/null +++ b/B4A/DBRequestManager.bas @@ -0,0 +1,272 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=6.8 +@EndOfDesignText@ +''Class module + +'' Requiere accesRandom File y requiere compressStrings, byte converter y okhhtputuils2 +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/Files/alert2.png b/B4A/Files/alert2.png new file mode 100644 index 0000000000000000000000000000000000000000..44d3b7e651884f30ca0811371860a2c872077175 GIT binary patch literal 632 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 AE&u=k literal 0 HcmV?d00001 diff --git a/B4A/Files/cuenta.bal b/B4A/Files/cuenta.bal new file mode 100644 index 0000000000000000000000000000000000000000..a5c96d963b5b94cd84f7778f67773f2c4b662ea7 GIT binary patch literal 3282 zcmc&#OLH4V5ME)+AmR`n34~|D%Q%T5{NQOGv9OgYgQ5^c#8n(n#=9eHV7;r_9mzPS zRB@pKRHZ6a6j$y!!hr*)ToRX0z=;$51GsTB-`DG1TZwtN$^@0C_nV%cp6;)E#(Bqa z&g2~DZhZG(+=Wqgt?3!NaxZWxoy4vesSbnH_irF%o0K1ugM@8@jAeFIdkq24spg#c;BJ0&Nu|Yn}t*0WR0y{=m zzHV8T)rK8zUN)X>({)>$#kS?fwhG*K7>SPr(s1e{wuN?n0k62sO~7w zGr{6t#V>d5mRp!O_f01@7o--o)3pkf*~MjatuV0VWgUk}l{uw7tI{s}XwfCqjr3P5 zCmTEi4X9BRf6fhqm}W5|^L5n(nrz2*#g~fLPS;PBtJ2Z>V|x#lRP4oGD{jTg!yhBD zSP`C>FdM(6T+M`MD<{kERU35Q%c9ta*-WL@sMMS1D)q+POu5Rkj&pPRl29>m)3Za} zWRm#C+rzeDC|-+ej&t$EG{7&(#3}I0$EA?IBDu>@F*_=p0=LULL*?m1>%aZ6j;}Mw zV+stLG2|T_w&q?khfLSOK+;wP#0UjxtC;*{?#?N643m>E{<3loiADS$kgbzuaE;ot6Bq4@C z)>%zCy8}%YP3DPqHxn}ooe*;bV28w@`2EBjg^$89h%LkvF+EPbJnjHs?tJ-qYQ`Y4 zC?#%2Bb+fB;p|NSzDTlN$fLte@<`Q}h*D#R4Q zYY-VrTli+{ZSu`d5(m88!uK}-5;sMbN#+Sk`6ulRz7CW$;(yNf8#roL`KH4i@Xa#s zGT*$s!uM3#-~YrnyXH3WeF8`AD&KVY|MJbt(a$$;*x&W{G}dnu-(?)Nt9;Yp4)}fx b=DXA1KfqJ}d&2kTU%e-=+jv>}k>mUcA55-T literal 0 HcmV?d00001 diff --git a/B4A/Files/datos-varios.png b/B4A/Files/datos-varios.png new file mode 100644 index 0000000000000000000000000000000000000000..058934b77f0378d1578a543698e7fdd7d6fa3f44 GIT binary patch literal 2112 zcmV-G2*3Ak7RCwC#Ty1O%S&S&#B$5D$@YOFeLX7gk;7g1jjEaUYCK_XmXiNx0KahwY0Chx#xJ43` z37H@Z2(m%k*mzrkZSDH%^M9^a+OBuK-pktS`cE#`UZ1=4e*OJ_|Ci^vGN90I-@ff2 zyRBr~LN*8J)Mn;_Fm`tqe1XsqdHYFsn|lcMpd*AX&vu>qErS!JEeW;niG%U{$`#DL9Iton702KkP{<`U)cMygB9Ipu~q z1rUm+6kUi3C}Et1xQ{;+hCnc!cAV}3LU2+Pje=%3v9P?d1g2*FqS-J%PWJ$zm_D4r zjUY47%B@DQ8`-quQXKb?-H>ho;zT<0uY}qqM~I2r4RyDl zS~MC|U236G4s)gHxu9fS${P(r_iC#xPdiS^%_5L$qzsF?)X*J+1bV}g!hLm#Mey9b zaWNEO)EPNZOzhl3sS&3;dF^6yt9iNZQxNG~VoFkAuaielCMar2g_C1n2z^0A^>YTa~`H6W9`aZY5@F0~81bqrX_1%l>%=n9ui7 zaKLH>>z=nLgRqB#Z3@XXn31I&0IcDr{lT>3vI>xQ)(77m?T7C59Z*$OAv|#4Brsp> z<6aYRBJaEj;Hr-T92V^@&oiPec;g6;=y}m`Sp}&7#2@hMiBs_G@gD%*egmMPUK||q zd1U8~gmF^)L8)pmt)`1q$%Ag*oPxfi1K^AV!7?+=xlfWIFbUuwb5enrj~cXh?;*Oc zttbVUi3;#n2O;wObDRhxU_^JQH9rE8*I%aYH7}P+qd_=(ffYY4dJ^jh;JA2Q%Bltp z4_|@v=daM$D>gg@FkTCA>?dw(ZUW}pBNQ-dolipKr5%FT!lu30f~Hb)F@QmQ(Nl=j zbLC*9VDsY;G+VY9)Z6=g?6te80U}Sd0z;C&_#6j~vT5T6Rf<(9V~|C-W!1&{`%lB@ z=s0(CRx{KstKq;P;>+haG*Tfrggxmj)2Zi}kQOm?PEBa~nV&9NaDWaSIv#tyqOsw@ z2T>7bj{OXgjn7CH<4mWXV|k8=rK>`OLVZ?B4P*~SuNXj0uEYTdl8D}A~1+{uVvhpC}UMS36 z@yAe@`S70aCWS#g3&9?=bPK4;ttQHpaqbTQ1S26n`h;3GH9MDZOe=uqx!2~+Yc&BV z-Q!SvJHt}UlCediV`v{bdM(Y?C=&PDs&(!or&yJuH#QTiO3IM#3iFo(b^zrYU>S9$m9i7nv`zP}5T5B7$@0 zE=)$fEQEd!u!m)h(6R0@-TBRoG#0%lS)|d;`o8(`)yc6NF>!Vh_F(Q)UAshg0P$@O z5j#xS)0l<(1RuRN=ieL`=Fod@*nT8uEXjc=h+BI zLj)L)l45ns+}sQVLw;ZlMwq_uA={ZFM4N_Su^VBJi)@jyk|hz=P#kfV*G0(tDJWP% zu?mi|rC>7I$wpTcA1*+{8J)DYTFOT3HmA#CE`_2Z+L~N7a_w}%y(onY#aq#}qT2{@ qul52ei2&`7188>vkwp7nfB^t*`Sjvd$gBbY0000j`A@8 literal 0 HcmV?d00001 diff --git a/B4A/Files/datos.bal b/B4A/Files/datos.bal new file mode 100644 index 0000000000000000000000000000000000000000..3c74e3c9fd49a83ba64dd7df5c7291cacf3c40a9 GIT binary patch literal 18198 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 literal 0 HcmV?d00001 diff --git a/B4A/Files/engranes.png b/B4A/Files/engranes.png new file mode 100644 index 0000000000000000000000000000000000000000..868a8793df757a14fc5428d378b2f7bc1a555ba6 GIT binary patch literal 2735 zcmZuzc~nx{8rKRfZobmMY`Eo+CJ5KE%&VCtiUUUt4hIG5Uely5g)VeBZW@#B+>tT1j_1+(Eul4QyO>3{c)^Gp5?>kBLao0ny zL~Chj>3Mp%f?8VIh(?YsoUid1(?YT}$BJk&GnyW@FFGzDlB4Au6c)%a_6!Nw&jC3B zK?xD}IgXkn9jX^Z{{CYz4owGZJoBPKANqH#H#as=w6xG0Jzbrl_@1%8U9qpXEM7p} z^F8meyHBLWWc&+*Ye(lXzf~?szIl-DO;%5&)t!hh3odOhZF*Aq{kD2CI06XBaVnYZ zcthmJs!OLPQ zN=lOUOtd}F2_&ia^BoA7HDxWrWh-rjkipKzmPRJ8L?kh0&o-VLo+zGD>VE`sMvJ7k}VW7E+9i!%7${dB.=fr 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 KP5j4C%lbbp4wI?? literal 0 HcmV?d00001 diff --git a/B4A/Files/fondo.png b/B4A/Files/fondo.png new file mode 100644 index 0000000000000000000000000000000000000000..ee96402ab212716a4fba012564293efa89bac1d0 GIT binary patch literal 86882 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

jP2)N)6KHhWFOj2=TbpMk&wn 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 UC3rlMe*^d^E2zQ0$h~^^f0@=l<^TWy literal 0 HcmV?d00001 diff --git a/B4A/Files/fondoblanco.png b/B4A/Files/fondoblanco.png new file mode 100644 index 0000000000000000000000000000000000000000..2e7ce3cc1da74c137c37f6086216c8d24d1fad30 GIT binary patch literal 20816 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 K;t-``vHt_bS49s1 literal 0 HcmV?d00001 diff --git a/B4A/Files/gestionadas.bal b/B4A/Files/gestionadas.bal new file mode 100644 index 0000000000000000000000000000000000000000..e699fa735a88871f9d270c129e487bcc9364a3af GIT binary patch literal 4973 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 KhLRxv#r_ZLhdVd` literal 0 HcmV?d00001 diff --git a/B4A/Files/imglogo_cl_ar.png b/B4A/Files/imglogo_cl_ar.png new file mode 100644 index 0000000000000000000000000000000000000000..f0187681b157506c1f9a2b2ed05c90c231dcaf4c GIT binary patch literal 11473 zcmV;?EH2ZDP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!~g&e!~vBn4jTXfEM`eWK~#8N?Og|e zRMolucIwV9TY!aKdM^q{3sEen(HL9ud?ry$Vl?MFw1eBum-WJ$p`}FsH=g#cT+_?+O7Fd1r;qT7ed)htcJAXO%+&ejO0$F5n2;oZn z%_56KhAauQIONEZFpEQu&$mygOG~}HoE%HC=v4SzkuY9gkNECAh&KcgudPA6ni2{E zkqEEU1<%+c;Of~Ukvfacg3mMw;|&dn?bwOf<}HYA-Gy^yprZt+D-&KP-IEisnO|37~i`Wp?BUx__a3>dHqfE-Dtf7U0Ts)(SL-lj%M4C z@Ue&C{qjlH`7AmOIu8lijL53h2>t0V2vhsTc9v5kl0>c+k}r7~kqF|#j z&m(_x3<(3%Z-8g=kyg4aIt@Av3Bz;VN8OCu5L>y*(qJvod`g#0OOm-ty2Jg&N$^aZ z$j{y28qg0p1%<|h=eS*Pb?XiUaub=e=qxz2BxKdGiV72SG(7wWP)XD4^CeC;gJg55 zA#-|`!ZT^25%-wU@C+Z0oV)rn#NsKenIHx}MwCc{1U2;}(v*7+Wu@>= zJ__E`z5@5?Q8c$DB;S6tW)`0b91;?S7k-HPJMOlYUZ@e9C7{kR!0>(fWca@EpVqzK z9@%@ppEn$I5{5rqjJhkXMwF3ovkT5@63w$~=ur57^nLiL{ajtU8jYC6=MM*!gwZWq zQS)CHBT7>YuQzej1~w;$5v+&WFYmgm;qKQraiSHVCXI)5FPRZEp=Fu_y3>-yLBT;K zp|)0q-+l-6zj+d|6`z=`SLvoW2d=(-;5+Xex$0{q4 zPB|Gl`T6G9{t&OJL1e|Jh%8%<*t+$IN*Hx(XN}Q>in`6>buJ1X{cm``oV{(=*>Ffm zD8#F(5niB;34ccD?RViBJsNq}Uk%UraprEvKEWo(cJD!C!G{RF`yRrx=ODh5+OL68 zwn&!>XxIl`9s^KdqQCl{ zIF&``L;IU!4tkJ2Ud{Ad3~4m_?tuf~`^w1(oOcd9Lx!|?(K$5t1JwTNAw=fQx0Ya< z^ZAm{)-P6==QWOIUZ z-$(V8*I5MI*S0JLKFsg#(+mEy&qChRZ^GTXck_2+vgnj(R}#i{?ZVz0ZbtB>mz&pg z3C*RgSb5VfMD7VwXfnH6ge6IX^A@1y&U+AEw1~&{Q3i?T9yAbvZ=8+5e|{A%l5ao8 zI*U$~XUDDk-T@oxmR#R(5=D{FbWu;)<2CRza5+$z4pKL@OHbLLu3~>3NROEz>xi}-2=sVG;$vIUZX~R@{$|wt=C>va z&VT|E5p#bgT1{~xF!OuIk3-j)x5GE~h{VBkXd^@2E3cvM`4`Qe#i(2Yy@!Tc**t9* z2%!7p4%BH+`KJS*wz1DVg9adX%5m@>KGG~PHHT>V zF4X?@?+AbLDZjNB4GtVR9=EY7-lL90?lDKf-JMpcm1q|dhG<52T`&!ijhjv5(!l7} z_l1dO+g5n_3bWoPQXB}phmE8byB2}tj!nN)!lp-e?MB1=g{XP*_Xy6OYsjJ}>(a=q zOQhy3dGsL!_VwH`&3$CY4%Gkab=3a(F9?0KjK?%F66ZS-Y@?nQ%%hu;|Lv*pjTr7Y zp(E?oW6w1=py8eO(y#FlK{pS)^vk<^_dCdA-@3XMC(g7S?puh&=hlG(SNr@+lozS# z+{Q{Y3OhEZxES52!2)NVZth-0x9>!(sydM-Cq2DgG%yTa3NHOIFYsiu)|Z6H99p&l zmG?h@>PLTr(27skBP1WSZAQ8JA3H1mtEa;|WH7%tfNcxWeDD3mgQ$M|NrX3Uvep!N zO-6%vxUlc)>JVD|F@g&|gu7c;c=X7sO)Ey}-`2nJHX@rgn>@~C9X!z(MYn801Fc4s zu8&X8|8(h+Xl={DlG+A6q|~rrVPe43|HUE^C3V$lflzjZG1840Iu@6x?!naVx4-htW|UP5Hg9z(J?6+>$N%zw=zva=jj zk3C@~QvMZpc6LG<2Ue6NMN5 z5IMbi8Eco8FDVQp{9if&h2J|LuEIi-KZ*MH=VSNnccX6ZJVfdD#i#)t%b+i*^U+`k zQN1{`8NW`Xu72tnR6p}PBK1MgpgWg$Fof;V^@P^0L)Gv8h_E*O+Mug&%zG$>ZH{p; ztN;ECYF_;30c~1oGYRYG%tcr`W%xN&VkD6sM)wUL#&1oKdGQV!h@v0=5P_3UWQRML zWSYht61Lln8{sY~;gKeU)^EVBn{GkFl8-a<8R0*YFQx~jdX~aB?g#`<`wH^Eeil4^ zdNV~P!kf3C^0&W7q^8!=&^&g?g#%ju!93Kw@+xBW4Lp(#$2^Bx*mqHCL`~>$@^)(r z&?XYfKMB&0iqb!eu^DNS6Nm4J(bRrj6RA@`KO)3N*1Y#`YAb58jJ!aXZ=MZ5o%2+L zx9`CA%dbS;$0VTFlb(lV>M!VzBO`$52dgVA`K0w{>RIRY~7k@tOlDtSVA20bpmNvxe9e3%x|$aY#Rv~V1%}A zx6B^LKPeHJVutSpUp<4df-PDm)VSLBKR}Stv@~IQ-Wc422BB!`Io5j!6AJ^TQQ&N~;mhaUz{&z^8GGHxy+5AWECy)XO&kua}; z-_y!9!m?Febh=?b@3V-a@UAMkqF){}rBjDoTFxBLqf|KA<-5Ty0_jM{xXe$BagwU){&?p!L~LzqOi#^4qFke+yf#xxpevDw(Jm zi|B*(`{jLb1pTdH>6MqktJlo!yDwXX zI0L7u*Ivi=+wU>j-rfc+MRongS?K@R!{%I&B-|nrI;|5j@bdI1!O&NpH+P^q3>>HM zjvd%^*;Q!x=wq{zkOq#Cw{IWxec#dj-cL}&q^#4kq{EW z+pmwKDHdvG&qf0Yn30cd^^Y8ZT={}YGVy|H=PyL{yR#WF(|=4&&+k5_?|lmi*thQi z6HxOnL_gD%%kODrQ{oJw^1d*^GV2^%4}+xk7H_XI1SX7wyR0W-3aD&tP{bM4yLwWf zc4wrc$aRok>n<*KtgGFmXAcCZ>GF=9Y{ojHEo@_CZxy2YIS;$ia6s!x$bk!2?lu0P z8Nj5dBRDgBg9oSI-AFjo z>2=d}@R9JX0&PHy8*EAv%!+9~kpMM=$| zVbf-8ec)lNz4AJ&q5o3La_mqSX^_*}lBmOI^@A{`tfkS!X0(H%zDk8j=aANz?iLJs zdqE^K?Xb6n-(?NWEysN*h$LEXYg93bm>jI6MD>#LE?v^JSt>-rAjR$vs_`yH!(RGc zjo|TGM&Kd6SB77k>WITXWC-#`9d12+=YV=T@av}EhAj_1jLP?B^ZN!yqM3`n(j4|{ zNEQ7%7%&5At2*h%wNF;f)4jW+OJ+x_muTu%t;W*td=Issu1Z@} zRy0&{#;F*7?_G{0+3~;6V);cs%GmOyrHcMnUWUO8G?Lm)WLh@uMI`+Kv4wjxj&8$aiCh8L1fn1Dw@-cM(%9j(V)YdrG-gXx@+G2HPis?0NNd6RD^6r69Mb`>Cg3>{EX-X{F&; zUU4ld-hS77Plfu+M_1^``Lp4nU!KIymtHoLQo&@Kx1ut;#;Q&mhG|*s?G<#7zVHhZ zF!I4!$UpqB#L?!_Y7$m|ycA2OUVw(po6{S@jww6$8yI%$bod;8QFG&?PhjO$O+-sV z7dC(-96J5_CK9sK=ACpJsuwLuBcX?8d*m024eN?cVh!PJ-I}bB;lAR zA4kclDI}!pu$m-XKeIU!=3+2O*#E~(Bn&gSS$X3OZ2bdC(OzJm>6)FihDcaK-*@~| ze>UmrNWxDp;Fn@Lcb2PsNa% zuZNET>i)2glJ*Vx0-<1oF&AMDa#Hj?uGRWxmNvpP$B~rujly$M?RJD}Y7y4rXiD0c z-;dn>{SqnCq3FAQ+jgdFYL`_X+hzCf_?1Po&FSSg<}*2LdDuiPOGN2(x0{fF_I_+^ z14V6Y1V77ctG_bR@|eU9FDLDwtAB=WXP%BI`z}I~v`IKl_PQH|jdgYJhT4 zF%_*QA*X^_CW%m+sG}^gKFen_qvZf?I1Q)eu|&t@OW1~-=ae=*z1f9m>Tp0}kaQ0^ zHIK@$mo1n9b!bnrUVAQm(=n%Zb%dC;T={lvYY@w8Xk8p4ovh zk2fQ2sJ;Ppo1E{pdJ7BSr5j-HWRcBjc$x;)E^H$+q-mi9w0>yLJ6uQmi&b9|`l!j8 z-tU%}z=mR_N{7s6(YPZpBf#q&tvk%b?3#_fz-7Af&DV-XsE40m0rB=1m@{>>}2E= zbTJdcD%%n#_t$8`M$M2ZPWscS{T(Ux$tg?Vl+Iiy$(7k+3(`zIj-P@d4Cq|Ng@!av z<+Mt)C6DC~yXvPX)th#kvs4afH3{8a^36Js1~56uk`SHaU|pTr)anEu!*9*O-=Cv$1{7gCnhC`7=%B zCndz=_QhX))0LStwrlSQ2~ngClh8+_b((2&xLFEX&_iJT&OQr+FTL3K)*7#7%d(5E zHzDd*Bg`)!(bumpM&ETC248gH0TEDWy*YN}(4lrWH6|(4Xu)88v*y@C@`jn$o==^( zd-)0kZMW9^y~@nF)U-ir*$QgHItCz4aI+ZY-%YD!}x;?hER{H(lGg1Ex|KT(Yo^}BPBhNnT zZxr@JMD7P|dW76(jvlg>2`zf~SRVlXMPfIj;y-M-Tj~BtGyA}IE9mjC~ z^ch(F*S|5Zi0&Lrn!d=(!=SUi#<88iuW`6@{qPkQBA*(tNWVA3h`6PJh#jpaVFNqt z-#@(qt9SuvTej$v%9yNr;3Wa1cJc>u%2A z%ymLfAQzKvnSmoN{Yg_>S!SfZ-mKrX7euUgF1-}x^B1OHBM~JD2cCX9&UoQD(93A`4b$gb%Z}T*c#$EKBiK1^M&lxB!JvU@1WZCfMu-M4 zwH=Lh&C_H2y!7bFi0~qUyy(=t4Gs0!xneo$Ql3rla=?2YISJlgJuQDTrJlVzwqy3~ zx6?mdl}LTyutp_CV`31KA1Xr{{5 zYZCj(GSTn&<55hX&UgZi`E(|ZUCWlC;?tFl+D$6I*Q814ckFS7_^I`%1Gm$c`uEK@ zV~^g=V%J&+g4A{-;6BB>>GkA=(u#HPXTx?%( z&mJt8H4Cerd8XZ5l2(&Y4KL{38-@DeYkv0TxYMNKqmP?yWI^9PC>b%5>1_Gv4{3YQ z=6Bvn1R@slOG`2GoO4jrw=ZY}((-uNU+bTH0qVgB1!)GLu`UnE;=(pYiwcyMKmG)Q6`4Dzn}Y__ z$NWv@CB#fDmzn(?4ee|Z(R>NfDpN%kkZU1$W$q?Q`Ex-tVR4xAmA6$Jc zUj4>Ytb6Wx>|M1Q!OBYGn`%dnV_P`Do*Z^~vaH53J!a;+SZ+r{HKg@Jiuhn@wq4w~}Ff1{7-Am*{nR3C#K z4cM;PbMW2;)A0J&&c@qQzk|7#T!wihXT`GRiIS3#mZ1r>)o+P)%%w*`I~r_*$YV5| ztsS}^wXqTW=x# zXg*=m#HO{ul2q*`b8On%Oj@05>$FiYSa$SejHTr%>OUaihdbA$e%|`Ri&*>n|1oQ^ ztwEc6xNyX9l#Dxq9Yr(2j!cSXN=~o=>;Ldavm4nCtuvKPISxIKIuag_W_(j#OLDOJ z>1VLvssFW1X$pFLaT3Pfd?Wfvllp0}Y;_yaY-Jrj`k%hs0Q`XfT%6T*NYUx7iYmh{ z+FGl(9dw^|ho8`YwHEPiw?V(q?FU`h4XSjQq)u;m^-!`(n=Zu>T0p;ql^Xr)1YkXz``1|IY0HNEUThu5gJQ?<>WHemiTZN_!B4j#H$LoYZVLw|6Q z)kk{Sl&wx9j16*vL9C(+wcX~+w*;-eZI_C@^tI-la~>MDY|Xe8r>)+@ue}Pxes+20 zIU-b1iN%-y4BMW5*4*8&Lo=&r%xH|6buYS3`ahy?$)4<@N7}Krg)lqq1v@;&6fQPa3r;UTSQ;Z<iy12#VPxKZP&(7D2~V=;;(D%MNS9U8ZH@e(XJ?|g)I>>yFom9rYBd!i*L9FLK= z+>Car8`i&?$?~fwsT1 znh@)~j9hoU@DkY&p|3#GM^k5npXD?7d-OozxUrn6nQx2omzKg!)n7et0T2wO<(Hf7 zrbcSmxY0b}r~B1@z3$CMb~k;#q9ewj$4Os834P7{A%jsgawG$wuE^`x7x@DRq2%N* zF~9R;qFEd|w2LMbWKx!2d>P6~#Eb{hSw#W0;E4O~Hh-P8VWg%8t8cy)+yDBM6^Pi= zunaXdZ_q&Wx$wIvJNKLLc5iw{*$H~GEVyH5V_>7_ESh^LKZ`?$cF}}_G?SN3YUMlc zAYNZ**4GqyO2ntgp52B3MT~~+T1?Qfz>q-*ZQY6>eI6NHS>0qAR(UyyR8*jP@nY1k zUk_ht52F>Gd`&@dnGJI2FJ9`;M#7sKKb<37vF9QD zq+!d;ccH$%0RfhyH$Hsw$*1VTXi&>M)eIQiB)aO>>o@9Z>k!eP(SOykZCkf7Z@tOe zz`$YMy7kCqAf$zO<=wSw7tiIH$yi0#L}i%kpbgqUH=~ADAU{9f)Vqbjo$8d>v3ocD z-W}UbJswW5?c27arnc6!vzC9?uis$aN0ZM;TlH?^dA~oGWqC-lFoLuUDp#M?Mzy7Y zileHk8uLDwXO_DP83iky@+RA{b?bIiaPsS%NUC$HPxY$r>gwvuarIF{umL-FmYZu= z8(V@*55EoYcJGd|Z%su&W{=->KQt*?H;j^4n`hpOFgw!`OjkHz0tVf50}Ay{Kwe<- z#=c$DIZ+P&mV55QvNO-Z#yjpp?b4+PbHHQl6cdoN5bE@gKVFI*+pSk0Z(_tOGOgic z()Z=dSD;$2IU{s@)#_Co#C7Jg24mxewM7eT>?xIbv!cx^&4m10YneLkA2PfO-y$1~3w#7U$sUyhQJ} z)?n(h2C|qzSyD@Aa!3nElvl4BQQ1i??&tCCBzrhy<=19WUbM;UrzX-hCEH<#d6_56 zQ`*M#ZY#a&RXe1e1ZnCZ+vfFIZ+2L_cAc42yLQnnqC)7}wHV!Kd2~)BW+7~!+q8Ml zo;@Z_kd{GZ7Zw&#`&#e)uA|2Hc)TXR&S~OoB>5}%?oFgEH0{zPX(`&(91D7NhKn<* ze#v6QNHi_3COb_c)`!-vF)uy}Xg!IYmjR~B9nc?v;ls@P2_sv!7;`R?r0BV@XMOV|JyvbX;aqS5;TBjYY_#A1`eu&0VTh4EA+xU9F}K z%Plb1Tbg*hLhY)ptufai;ubpWWOqWlMaQYo+fR4=`Vs8>)q{y6Lb4k67OV92?}xH$ zuR*aMRB|Gsz;q2X73EL<4wcV5XZ_G22f>ulSe^rPN#?TjCN7OTiOPZR|L{X7I;rVF zrzF$`@@quCq)C#$l%Fr3&|}QC9y873;EC}1E{&Ab4z)G4aC@x0(j*!%`FJW%gCwn| z!Ilpxq9~2dsVvni(&gq_c}2veHnl_bD!<61dgX_zt*T3ZbxwH&O)Py^J(?hDlkzE@ zj_I5=d1cxye^DAt^(wE*R-2VqZPHuQL{R0|IYH$qt=gjN)b%%BFZ)LIv;-YOLLp3( zv;O=4h5AK{GM8)wR;xF>_rCo$4=UWg-@E=uxMJo_BVN$N1QPD@|D*a()PH$M#c z^+PB)$@vEsjY%R>J5F7r4z@$blSC5qS2X7vf;fFVZH|yq zw3q29EJi+R!5L@3KX{N;ZVIFYKKkfm<6p`AtfaI5sa|=<@@0ZkNgy*O|EikiN@h-k zQ*cpTQ*F|2-n<1XnKv4X7&E(tuEYig5Yj5r6pCm!^H?!WT__mBlEq6930jHWelWLgzLioEjW>gh9C=R6cI^Y%!TWkt*S?536#w6Q?Gq=h&R zKkP8$W64s8tO{7zx*$Y zPKZN7LaI9W#*9JX_17bC_SqzeJVFu0@~u)uexjn>_>LV2z4kh)uDlABmt2C{#~wpu z{rY{A(F6f1M;B^pu#RWZsc>jWD3FMr0sT>M?KQ~%$xqDdhjUE8Vl^s53?WIVx;jKZ zn1|YX@59~;FGTe{_gKHp;Q%cMS^1gQI+R5x#33IWMYH*rUWzVv-38yoiO4Yvxz>_L zvrr^ViLG0Y@Y`=APGasCB5>kk7M%;7LP2P|SMI5&qRXwfAaMTqaQEqJOsFxSB2ROY zAY-%S(wZCpn6&!dY{D!KB|49lB2hdeMj-HmAE3+4)8RYg40HEG%QfcChmzPtNYKj} z@(KArd!8&h7dn@#L?X&O`=(4m!HgNmzw1tTk2%IHLO0%qQ?gWH9_4ce(;FgMl11l4 z=k(XzZsd@R{xi=+!K05LpTUQB@?>)x&uq~r8Pm`l3HRe#X3;s&IZ2oTmo^EUej2(w z^dR!?yVsa&&!|!6_jJvpo<_|zuL-m0{OI%~Ou|)M4F8wEjKEJXNB*pzBkzVA;Ga4b zo{3**e#ebWaV%zuw5MHzX3;5daCXsj1la6&O^sQearNjymS)bU$dV2@Oq`(Oa& zJ-zyRJ#6;%#w_*NW6QvMDZY&ke|dYu(0lf080rlc2tWV=5P$##AOL}SKNyFh zfA?iwez>mA;#?|`F`n{VMPfS3sAH%fWt>V*Bz>E35;%?s$Y@9iIX-B@NYP|UBc29C z^7rzEj_;$GxkhK1c*i*tnJX;vf@ZOBMH3#KQCGloNoA3{qNzxw`(z^7a+L{9 zG@*qQS$siR6B~<@=f8b9K0WpCxS_thx?QW~>SJ|N-KzO=@p)Cga*g%6*senYa;!Nw z$y}A!i*jDw1P4a?fpZIB1rH}|hsM($ZUOAXm|4U6E?Z+8cWe0m)>~0~<4rI;`SH3p z7)O!+^Xs=xQN-r3>n+_j(FE=c%MoEL<&V4$zr%mb#5+lCoW)`+ce8&1^Oep?`^ZnrO@O73Ye2B0p9=u@*vH8QY2@wb=3?RE_&CJ3*F_5e0412=3HtN%^Q?U! z5O{QSw7tE3e0;pHuyA^MIy*c2^XE@27W?7Dhm(_&!^1-&k;ulzwz|5yzrTO&+BF)D z_T|eLPfyR!pFc-LL_B@^w7I!iRaKRjm-pb{U~zGgKp=p@U?>#2wzjsryUS!UTU%RG zQ&Xd(qo=2*H#RmvAkgLI<&Pgf&d$z|NMu`E+mk0xdV70kW@eU`m&L@yR#sL71qC@d zIj5$kE-o&1c6JyHMrmp3@bK{W@88?o+dqE%SWr+9A0MBcogEk$SX*1WwYBx_+qa>i zAq)od>eVY03MC;SQBzan@9&?Uo}QbVyR@{Vsi}GM=FP&wLO2}G$H#Z;)-8U1{`2#5 zNlD52`ue%Kx$5fboSdA_&d!dG4nsr3;^JZv5fKuJw7$OX?CeaXQj3a;JUl!&I5=Lv ze%;vEsG*^enVA_75a8$Mmz9-eZf+hI7nh%(&&9>%# zacgVqk&zK@Zf*eqf#l?52m}%w9BgW8Dk>@}B_&l?SGTvf$Ii~))6;`MAnxD4Us6(% zl9EzhUOqZHN+y%#^3(y`}+F2y1G7n`V%a>zgV=x%(>({Tgwzi6jiWL9uyp8q=zFso5~mu zw3{~LXW#cqh3!;u(V}2xv~?-7nc3O$#3arEV!Y{a`$rbd&X!8JiM>?$b9wG)NQ=pA z+4$VFhKfDaAw##LkQR*s0PmmD4;Z>{kKw9T-3BrKNr&|8Tybjw3{6d& zP~Dzk2z}vuM;=amBl*BiQlNy(Id>F(GlNoUjtL1Gr$JJ2|5qObf|DNnO{%?n;G=8n zM)_mOzPvelWmKU@4A?K>Vzyn^HlaBLBpk|K&oE8QX(YHKiqK@8O}DD%f`mzsy}BUQ zTHx>6s0QpKF@3vx+D+_0!i~j7e^Mw8nywZsH%VO#A++(D=5DYM(1U3OlD})U@ z+Q_P=(%%#Vk!U2JEe_|)z2CTzW<)XM1>y2(3|I;t4UL#`g$%@@kcMPx9mswY!p1=! zOAqourE|8FX7ljcV6Ji4_=r}Ur(jc*fq?ym=YAf<-d9}fz&?DP^q$IGIBo0ErB*aN zHiNs;!&6bPUbE;l?}i6si!-TE49YZ_c+jNH=pv}ma=vA95MpABx$Y$+pMpS?tWHd$|>McDWSs>tRnI!`IM!ZpdEI+mL1Uw|}CH))bb_ z5d78S_}>ZqeHHtdGYCmnN5OEv??#!h)IYf)-kL{Y3i1A@n>-^{AxR{$olhG5Ev*qk zeTyWT6j?kiy26)kHn3Jd^V_BKcDxg#7bT^IItrcFTy38&6_UAF1*Dl09hV=IiohwRZdt9$d{4qA`BwZ zb+CH;4H84_9OvLn%CA{$R64~2>m}o54H;zTz=M5PS{3dF$5N!RUQ?kq583$8kYDuY zvpOK>5WP2cyT%n{G$gmyy6PW*5SkOp99rDJE|Y6f7WZ=y&2jrihU Dw}jzq literal 0 HcmV?d00001 diff --git a/B4A/Files/mainpage.bal b/B4A/Files/mainpage.bal new file mode 100644 index 0000000000000000000000000000000000000000..23e131b84005f1aad73c6dca68ed821bd567e2e1 GIT binary patch literal 10213 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 J{tger_!kvpcS!&M literal 0 HcmV?d00001 diff --git a/B4A/Files/scroll.bal b/B4A/Files/scroll.bal new file mode 100644 index 0000000000000000000000000000000000000000..d2bb505bf58627abd71bbf61b852eedb0ef064db GIT binary patch literal 17700 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 literal 0 HcmV?d00001 diff --git a/B4A/Files/usuario.png b/B4A/Files/usuario.png new file mode 100644 index 0000000000000000000000000000000000000000..2935f41a7b156661e9224766883c83c25d88dc25 GIT binary patch literal 17227 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 DS$Fry literal 0 HcmV?d00001 diff --git a/B4A/ManageExternalStorage.bas b/B4A/ManageExternalStorage.bas new file mode 100644 index 0000000..6dbb41f --- /dev/null +++ b/B4A/ManageExternalStorage.bas @@ -0,0 +1,81 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=10.7 +@EndOfDesignText@ +' Version 1.00 +#Event: StorageAvailable +Sub Class_Globals + Private ion As Object + Private mCallback As Object + Private mEventName As String + +End Sub + + +' This pretty trivial class is modelled on (plagiarised from!) Erel's ExternalStorage class +' It applies to devices implementing SDK30 and later +' It allows apps to access the internal 'external' storage as was possible on earlier Android versions ussing traditional file I/O +' You must manually add 'AddPermission(android.permission.MANAGE_EXTERNAL_STORAGE)' to the manifest +' You must ensure that you provide the package name of your app in Sub GetPermission +' This class uses the MANAGE_APP_ALL_FILES_ACCESS_PERMISSION intent action to direct users to a system settings page +' They must enable the option on that page to give permission + + + +'Initializes the object +Public Sub Initialize (Callback As Object, EventName As String) + mCallback = Callback + mEventName = EventName +End Sub + + +' Determine if the app already has MANAGE_EXTERNAL_STORAGE call Environment.isExternalStorageManager() +' Return True if this app already has MANAGE_EXTERNAL_STORAGE permission +Public Sub HasPermission As Boolean + Dim has As Boolean + Dim jo As JavaObject + jo.InitializeStatic("android.os.Environment") + has = jo.RunMethod("isExternalStorageManager", Null) + Return has +End Sub + +' Check whether this app has MANAGE_EXTERNAL_STORAGE permission +' If not show the user a dialog to enable MANAGE_EXTERNAL_STORAGE permission for this app +' Raises the StorageAvailable event in the calling activity when complete +Public Sub GetPermission + If HasPermission Then + RaiseEvent + Return + End If + Dim in As Intent + ' Be sure to reference your app package name in "pakageg:xxx" + in.Initialize("android.settings.MANAGE_APP_ALL_FILES_ACCESS_PERMISSION", "package:arestrategicas.keymon.lat") + StartActivityForResult(in) +End Sub + + +Private Sub RaiseEvent + Log("Calling : " & mEventName & "_StorageAvailable") + CallSubDelayed(mCallback, mEventName & "_StorageAvailable") +End Sub + + +Private Sub ion_Event (MethodName As String, Args() As Object) As Object + RaiseEvent + Return Null +End Sub + + +Private Sub StartActivityForResult(i As Intent) + Dim jo As JavaObject = GetBA + ion = jo.CreateEvent("anywheresoftware.b4a.IOnActivityResult", "ion", Null) + jo.RunMethod("startActivityForResult", Array As Object(ion, i)) +End Sub + +Private Sub GetBA As Object + Dim jo As JavaObject = Me + Return jo.RunMethod("getBA", Null) +End Sub + diff --git a/B4A/Starter.bas b/B4A/Starter.bas new file mode 100644 index 0000000..2c148fc --- /dev/null +++ b/B4A/Starter.bas @@ -0,0 +1,62 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Service +Version=9.85 +@EndOfDesignText@ +#Region Service Attributes + #StartAtBoot: False + #ExcludeFromLibrary: True +#End Region + +Sub Process_Globals + 'These global variables will be declared once when the application starts. + 'These variables can be accessed from all modules. + Public rp As RuntimePermissions + Dim reqManager As DBRequestManager + Dim DBReqServer As String = "http://keymon.lat:1788" '"http://keymon.lat:1788" "http://11.0.0.196:1782" "http://keymon.lat:1783" "http://11.0.0.48:1783" ""' CAMBIAR HACIA AFUERA O DENTRO DE LA OFNA +' Dim server As String = "http://10.0.0.205:1782" + Dim rutaBD As String = File.DirInternal + Dim skmt As SQL + Dim almacen As String + Dim GPS As GPS + Public rp As RuntimePermissions + Public FLP As FusedLocationProvider + Private flpStarted As Boolean + Dim latitud As Double = 0 + Dim longitud As Double = 0 + Dim ubicacionActual As Location + Dim logger As Boolean + Dim muestraProgreso = 0 +End Sub + +Sub Service_Create + 'This is the program entry point. + 'This is a good place to load resources that are not specific to a single activity. + GPS.Initialize("GPS") + ubicacionActual.Initialize + + +End Sub + +Sub Service_Start (StartingIntent As Intent) + Service.StopAutomaticForeground 'Starter service can start in the foreground state in some edge cases. + Subs.revisaBD + reqManager.Initialize(Me, DBReqServer) + If Not(skmt.IsInitialized) Then skmt.Initialize(rutaBD, "kmt.db", True) +End Sub + +Sub Service_TaskRemoved + 'This event will be raised when the user removes the app from the recent apps list. +End Sub + +Sub Service_Destroy + +End Sub + +Sub reinicializaReqManager + reqManager.Initialize(Me, DBReqServer) +' B4XPages.MainPage.reqManager.Initialize(Me, server) + If logger Then Log(DBReqServer) +End Sub + diff --git a/B4A/Subs.bas b/B4A/Subs.bas new file mode 100644 index 0000000..1b670f8 --- /dev/null +++ b/B4A/Subs.bas @@ -0,0 +1,58 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=StaticCode +Version=11.5 +@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. +End Sub + +'Revisa que exista la BD y si es necesario crea algunas tablas dentro de ella +Sub revisaBD 'ignore + If Not(File.Exists(Starter.rutaBD, "kmt.db")) Then File.Copy(File.DirAssets, "kmt.db", Starter.rutaBD, "kmt.db") + If Not(Starter.skmt.IsInitialized) Then Starter.skmt.Initialize(Starter.rutaBD, "kmt.db", True) + + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_DATOS_GENERALES(CREDITO TEXT, NOMBRE TEXT, RFC TEXT, CURP TEXT, CALLE TEXT, N_EXT TEXT, N_INT TEXT, ALCALDIA TEXT, MUNICIPIO TEXT, ENTIDAD TEXT, CP TEXT, SEXO TEXT, FECHA_NACIMIENTO TEXT, EDAD TEXT, EMAIL TEXT, ESTATUS TEXT, ESTATUS2 TEXT)") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_FINANCIEROS(CREDITO TEXT, CARTERA TEXT, AGENCIA TEXT, SALDO_TOTAL TEXT, MONTO_PAGAR TEXT, TOTAL_PAGO_DESC TEXT, LIQUIDACION TEXT, DIAS_VENCIDOS TEXT, DIAS_ATRASO_ACT TEXT, FECHA_ATRASO TEXT, BBVA TEXT, OXXO TEXT, ESTATUS TEXT, ESTATUS2 TEXT)") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_DATOS_GENERALES2(CREDITO TEXT, NOMBRE TEXT, RFC TEXT, CURP TEXT, CALLE TEXT, N_EXT TEXT, N_INT TEXT, ALCALDIA TEXT, MUNICIPIO TEXT, ENTIDAD TEXT, CP TEXT, SEXO TEXT, FECHA_NACIMIENTO TEXT, EDAD TEXT, EMAIL TEXT, ESTATUS TEXT, ESTATUS2 TEXT)") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_FINANCIEROS2(CREDITO TEXT, CARTERA TEXT, AGENCIA TEXT, SALDO_TOTAL TEXT, MONTO_PAGAR TEXT, TOTAL_PAGO_DESC TEXT, LIQUIDACION TEXT, DIAS_VENCIDOS TEXT, DIAS_ATRASO_ACT TEXT, FECHA_ATRASO TEXT, BBVA TEXT, OXXO TEXT, ESTATUS TEXT, ESTATUS2 TEXT)") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_FUENTE(FUENTE TEXT, NUMERO INT, NUME INT)") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_PARENTESCO (PARENTESCO TEXT, NUMERO INT, NUME INT)") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_ACCION(CO_ACCION TEXT, CO_ACDESCRIPCION TEXT, NUMERO INT, NUME INT)") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_RESULTADO_MA(CAT_CO_ACCION TEXT,CO_RESULTADO TEXT, CO_RDESCRIPCION TEXT, NUMERO INT, NUME INT)") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_RESULTADO_VC(CAT_CO_ACCION TEXT,CO_RESULTADO TEXT, CO_RDESCRIPCION TEXT, NUMERO INT, NUME INT)") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_RESULTADO_CA(CAT_CO_ACCION TEXT,CO_RESULTADO TEXT, CO_RDESCRIPCION TEXT, NUMERO INT, NUME INT)") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_RESULTADO_BR(CAT_CO_ACCION TEXT,CO_RESULTADO TEXT, CO_RDESCRIPCION TEXT, NUMERO INT, NUME INT)") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS HIST_VISITA(CREDITO TEXT, PRODUCTO TEXT, VISITADOR TEXT, RESULTADO TEXT, CODIGO_RES TEXT, FUENTE TEXT, PARENTESCO TEXT, COMENTARIOS TEXT, FECHA TEXT, LONGITUD TEXT, LATUTUD TEXT, FECHACAPTURA TEXT, AGENCIA TEXT, FECHA_PROMESA TEXT, MONTO_PROMESA TEXT, TIPO_DOMICILIO TEXT, NIVEL_SOCIO TEXT, CARACTERISTICAS TEXT, NIVELES TEXT, FOTOUNO TEXT, FOTODOS TEXT, FOTOTRES TEXT, FOTOCUATRO TEXT, NOMBRE_ATIENDE TEXT, CODIGO_ACCION TEXT, ACCION TEXT, DIAS_ACCION TEXT, PUNTOS_REF TEXT, ESTATUS INT, ENVIADO TEXT)") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS TIPO_VIVIENDA(TIPO TEXT, NUMERO INT)") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS NIVEL_SOCIO(NIVEL TEXT, NUMERO INT)") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CARACTERISTICAS(TIPO TEXT, NUMERO INT)") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS NUMERO_NIV(NIVELES TEXT, NUMERO INT)") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CHECADO(CREDITO TEXT, LUNES TEXT, MARTES TEXT, MIERCOLES TEXT, JUEVES TEXT, VIERNES TEXT, SABADO TEXT, DOMINGO TEXT)") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CARGADO(CARGADO TEXT)") + Starter.skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CAT_VARIABLES(CAT_VA_DESCRIPCION TEXT, CAT_VA_VALOR TEXT)") + +' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS HIST_DATOS_GENERALES") +' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS HIST_FINANCIEROS") +' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS HIST_DATOS_GENERALES2") +' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS HIST_FINANCIEROS2") +' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS CAT_FUENTE") +' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS CAT_PARENTESCO") +' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS CAT_ACCION") +' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS CAT_RESULTADO_MA") +' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS CAT_RESULTADO_BR") +' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS CAT_RESULTADO_CA") +' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS CAT_RESULTADO_VC") +' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS HIST_VISITA") +' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS TIPO_VIVIENDA") +' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS NIVEL_SOCIO") +' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS CARACTERISTICAS") +' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS NUMERO_NIV") +' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS CHECADO") +' Starter.skmt.ExecNonQuery("DROP TABLE IF EXISTS CAT_VARIABLES") + +End Sub diff --git a/B4A/Tracker.bas b/B4A/Tracker.bas new file mode 100644 index 0000000..224dd67 --- /dev/null +++ b/B4A/Tracker.bas @@ -0,0 +1,218 @@ +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 = True +End Sub + +Sub Service_Create + Service.AutomaticForegroundMode = Service.AUTOMATIC_FOREGROUND_NEVER 'we are handling it ourselves + UUGCoords.Initialize + logger = False + 'Para FusedLocationProvider (2 lineas) + FLP.Initialize("flp") + FLP.Connect + lock.PartialLock + StartFLP +End Sub + +Sub flp_ConnectionSuccess +' If logger Then Log("Connected to location provider") + 'FLP.GetLastKnownLocation +End Sub + +Sub flp_ConnectionFailed(ConnectionResult1 As Int) + If logger Then Log("Failed to connect to location provider") +End Sub + +Sub flp_ConnectionSuspended(ConnectionResult1 As Int) + If logger Then Log("FLP conection suspended") + StartFLP +End Sub + +Sub Service_Start (StartingIntent As Intent) + LogColor("Iniciando Tracker ...", Colors.Green) + Service.StopAutomaticForeground +' Service.StartForeground(51042, Subs.notiLowReturn("Kelloggs", "Activo", 51042)) + StartServiceAt(Me, DateTime.Now + 10 * DateTime.TicksPerMinute, True) + Track +End Sub + +Public Sub Track + 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 + Log("StartFLP - flpStarted="&flpStarted) + Do While FLP.IsConnected = False + Sleep(500) + If logger Then Log("sleeping") + Loop +' If flpStarted = False Then +' If logger Then Log("RequestLocationUpdates") +' FLP.RequestLocationUpdates(CreateLocationRequest) 'Buscamos ubicacion + If logger Then LogColor("Buscamos ubicacion (movimientoMinimo = "&actualLR.GetSmallestDisplacement&")", Colors.Magenta) +' If logger Then Log(actualLR.GetSmallestDisplacement) + flpStarted = True +' End If +End Sub + +Public Sub StartFLP2 + If logger Then Log("StartFLP2 - flpStarted="&flpStarted) + Do While FLP.IsConnected = False + Sleep(500) + If logger Then Log("sleeping") + Loop + dameUltimaUbicacionConocida 'Regresamos ultima ubicacion conocida + FLP.RequestLocationUpdates(CreateLocationRequest2) 'Buscamos ubicacion 2 peticiones + If logger Then LogColor("Buscamos ubicacion (movimientoMinimo = "&actualLR.GetSmallestDisplacement&")", Colors.Magenta) +' If logger Then Log(actualLR.GetSmallestDisplacement) +End Sub + +Private Sub CreateLocationRequest As LocationRequest + If logger Then Log("CreateLocationRequest") + Dim lr As LocationRequest + lr.Initialize + lr.SetInterval(10000) 'Intervalo deseado para actualizaciones de ubicacion + lr.SetFastestInterval(lr.GetInterval / 2) 'Intervalo minimo para actualizaciones de ubicacion + lr.SetSmallestDisplacement(75) 'Solo registra cambio de ubicacion si es mayor a XX mts + lr.SetPriority(lr.Priority.PRIORITY_HIGH_ACCURACY) + actualLR=lr + Return lr +End Sub + +Private Sub CreateLocationRequest2 As LocationRequest + If logger Then Log("Iniciamos CreateLocationRequest2") + Dim lr As LocationRequest + lr.Initialize + lr.SetInterval(2000) 'Intervalo deseado para actualizaciones de ubicacion + lr.SetFastestInterval(lr.GetInterval / 2) 'Intervalo minimo para actualizaciones de ubicacion + lr.setNumUpdates(2) 'Solicitamos solo 2 actualizaciones con estos parametros + lr.SetSmallestDisplacement(1) 'Solo registra cambio de ubicacion si es mayor a XX mts + lr.SetPriority(lr.Priority.PRIORITY_HIGH_ACCURACY) + actualLR=lr + Return lr +End Sub + +Sub dameUltimaUbicacionConocida + If FLP.GetLastKnownLocation.IsInitialized Then 'Mandamos ultima ubicacion guardada +' If logger Then LogColor($"Mandamos UUC "${Subs.fechaKMT(FLP.GetLastKnownLocation.Time)}|Acc:$0.2{FLP.GetLastKnownLocation.Accuracy}|$0.8{FLP.GetLastKnownLocation.Latitude}|$0.8{FLP.GetLastKnownLocation.Longitude}|Spd:$0.2{FLP.GetLastKnownLocation.Speed}|"$, Colors.RGB(255,112,35)) +' Dim coords As String = FLP.GetLastKnownLocation.Latitude&","&FLP.GetLastKnownLocation.Longitude&","&formatoFecha(FLP.GetLastKnownLocation.Time) +' CallSubDelayed2(FirebaseMessaging,"mandamosLoc",coords) +' Subs.mandamosLoc(coords) + End If +End Sub + +Public Sub StopFLP + 'Log("StopFLP") + If flpStarted Then + FLP.RemoveLocationUpdates 'Eliminamos todas las solicitudes de ubicacion + flpStarted = False + End If +End Sub + +Sub flp_LocationChanged (Location1 As Location) + Starter.latitud = Location1.Latitude + Starter.longitud = Location1.Longitude + 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.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 + + +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/appUpdater.bas b/B4A/appUpdater.bas new file mode 100644 index 0000000..1a63778 --- /dev/null +++ b/B4A/appUpdater.bas @@ -0,0 +1,282 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Service +Version=10.2 +@EndOfDesignText@ +#Region Service Attributes + #StartAtBoot: False +#End Region + +'//////////////////////////////////////////////////////////////////////////////////////////// +'//// Servicio para revisar si hay actualizacion de aplicación, usa la +'//// actividad "updateAvailable" para mostrar mensajes. +'//// +'//// https://www.b4x.com/android/forum/threads/update-your-app-without-using-the-gplaystore.109720/#content +'//// +'//// En la actividad del la cual se va a llamar la revision de actualizacion +'//// hay que agregar los siguientes Subs: +'//// +' Sub boton_que_llama_revision_Click +' StartService(appUpdater) +' End Sub +' +' appUpdater - Mostramos el anuncio de que se esta descargando el nuevo apk +' Sub muestraProgreso +' ProgressDialogShow("Descargando actualización") +' End Sub +' +' appUpdater - Ocultamos el anuncio de que se esta descargando el nuevo apk +' Sub ocultaProgreso +' ProgressDialogHide +' End Sub +'//// +'//// Requiere las siguientes librerias: +'//// +'//// * appUpdating +'//// * JavaObject +'//// * OkHttpUtils2 +'//// * Phone +'//// * RuntimePermissions +'//// +'//// Requiere las siguientes lineas en el manifiesto: +'//// +' AddManifestText( +' ) +' AddApplicationText( +' +' +' +' ) +' CreateResource(xml, provider_paths, +' +' +' +' +' +' ) +' AddPermission(android.permission.REQUEST_INSTALL_PACKAGES) +' AddPermission(android.permission.INTERNET) +' AddPermission(android.permission.INSTALL_PACKAGES) +' AddPermission(android.permission.READ_EXTERNAL_STORAGE) +' AddPermission(android.permission.WRITE_EXTERNAL_STORAGE) +' AddPermission(android.permission.READ_PHONE_STATE) +' AddPermission(android.permission.WAKE_LOCK) +'//// +'//////////////////////////////////////////////////////////////////////////////////////////// + +Sub Process_Globals + 'These global variables will be declared once when the application starts. + 'These variables can be accessed from all modules. + + 'Aqui va la liga al archivo .ver en el servidor que contiene la información de la aplicacion + Public lnk As String = "https://keymon.lat/movil/Arlete/ARE.ver" + + '/// En el servidor se necesita un archivo de texto (.ver) que tenga los siguientes + '/// datos separados por un tabulador + '/// contents of ver file, each field is seperated by a tab + ' Field 0 = 2.226.19.09.19.01a <-- Esta es la version de la aplicación disponible + ' Field 1 = A new version of the MyAPP is available, Download and update now ? <-- Mensaje para cuando hay actualización + ' Field 2 = MyApp is up to date <--- Mensaje para cuando no hay actualización + ' Field 3 = http://www.mydomain.com/Public/myapp.apk <--- Liga al apk de la actualización + + Public nNewApp As Notification + Public nNewAppnID As Int = 16 + 'Para Download + Dim nativeMe As JavaObject + Dim n2 As Notification + Dim n2ID As Int = 16 + 'Para fileProvider + Public SharedFolder As String + Public UseFileProvider As Boolean + Private rp As RuntimePermissions + + Type mNewVersion(update As Boolean, nonewAPP As Boolean, notifyUser As Boolean, _ + version As String, newMsg As String, okMsg As String, appLink As String) + Public newApp As mNewVersion +End Sub + +Sub Service_Create + Log("appUpdater(), Service_Create") + newApp.Initialize + Service.AutomaticForegroundMode = Service.AUTOMATIC_FOREGROUND_NEVER + n2.Initialize + nativeMe.InitializeContext +End Sub + +Sub Service_Start (StartingIntent As Intent) + Log("appUpdater(), Service_Start") +' CallSubDelayed2(Main, "muestraProgreso", "Buscando actualización") + B4XPages.MainPage.muestraProgreso("Buscando actualización") + Log("Buscando actualización") + fileProvider_init + Wait For (Download(Me, lnk)) JobDone (j As HttpJob) + If j.Success Then + Try + Dim app() As String = Regex.Split(Chr(9),j.GetString) + ' // Set the data + newApp.appLink = app(3) 'Liga a nueva app + newApp.newMsg = app(1) 'Texto de que hay actualizacion + newApp.okMsg = app(2) 'Texto de app al corriente + newApp.version = app(0) 'Version actual + + Log($"Application.VersionName=${Application.VersionName}, newApp=${newApp}"$) + + ' // App version check + If newApp.version = Application.VersionName Then + newApp.update = False + Log("No new app") + B4XPages.ShowPage("updateAvailable") + 'Se puede mandar tambien una notificacion avisando que NO hay actualizaciones + CreateNotification2("Aplicacion al corriente","No hay actualizaciones disponibles","ic_file_download_white_24dp",Main,True,True,nNewApp,nNewAppnID) + End If + If newApp.version <> Application.VersionName Then + newApp.update = True + Log("New app true") + B4XPages.ShowPage("updateAvailable") + 'Se puede mandar tambien una notificacion avisando que hay actualizacion disponible +' CreateNotification2("Nueva aplicación disponible","Haga clic para descargar.","ic_file_download_white_24dp",C_UpdateAvailable,True,True,nNewApp,nNewAppnID) + End If + Catch + Log("appUpdater(), Job Failed, error " & LastException.Message) + End Try + Else + Log("appUpdater(), Job Failed " & lnk) + End If + j.Release +' StopService(Me) +End Sub + +Sub download_Start (StartingIntent As Intent) + download_newApk +End Sub + +Sub download_newApk +' CreateNotification("Descargando actualización", "Descargando apk", "ic_file_download_white_24dp", Main, False, True) +' CallSubDelayed2(Main, "muestraProgreso", "Descargando actualización") + Log("Descargando actualización") + B4XPages.ShowPage("Mainpage") + Starter.muestraProgreso = 1 + Dim job_newAPP As HttpJob + job_newAPP.Initialize("job_newAPP",Me) + job_newAPP.Download(newApp.appLink) + Wait for (job_newAPP) JobDone (job_newAPP As HttpJob) + If job_newAPP.Success = True Then + ' // Delete existing file + If File.Exists(SharedFolder,"newapp.apk") Then + File.Delete(SharedFolder,"newapp.apk") + End If + ' // Save new file + Dim outNewAPK As OutputStream = File.OpenOutput(SharedFolder,"newapp.apk", False) + File.Copy2(job_newAPP.GetInputStream, outNewAPK) + outNewAPK.Close + If Starter.Logger Then Log("APK dir: "&SharedFolder) + End If + job_newAPP.Release + ' // Install the app + Dim in As Intent + in.Initialize(in.ACTION_VIEW,"" ) + SetFileUriAsIntentData(in, "newapp.apk") + ' // Type must be set after calling SetFileUriAsIntentData + in.SetType("application/vnd.android.package-archive") + StartActivity(in) + n2.Cancel(nNewAppnID) + B4XPages.MainPage.ocultaProgreso +' Service.StopForeground(nNewAppnID) + StopService(Me) +' CallSubDelayed(Main,"ocultaProgreso") +End Sub + +Sub download_Destroy + n2.Cancel(n2ID) + Service.StopForeground(n2ID) +End Sub + +Sub Download (Callback As Object, link As String) As HttpJob + Dim j As HttpJob + j.Initialize("", Callback) + j.Download(link) + Return j +End Sub + +Private Sub CreateNotification2(Title As String, Content As String, _ 'ignore + Icon As String, TargetActivity As Object, Sound As Boolean, _ + Vibrate As Boolean, pN As Notification,pNID As Int) As Notification + pN.Initialize2(pN.IMPORTANCE_HIGH) +' pN.Number = pNID +' pN.Light = False + pN.Vibrate = Vibrate + pN.Sound = Sound +' pN.OnGoingEvent = False + pN.Icon = Icon + pN.AutoCancel = True + pN.SetInfo(Title, Content, TargetActivity) + pN.Notify(pNID) + Return pN +End Sub + +Private Sub CreateNotification(Title As String, Content As String, Icon As String, TargetActivity As Object, Sound As Boolean, Vibrate As Boolean) As Notification 'ignore + n2.Initialize + n2.Light = False + n2.Vibrate = Vibrate + n2.Sound = Sound + n2.OnGoingEvent = True + n2.Icon = Icon + n2.SetInfo(Title, Content, TargetActivity) + n2.Notify(nNewAppnID) +End Sub + +Sub Service_Destroy + Log("appUpdater(), Service_Destroy") +End Sub + +Sub fileProvider_init + Dim p As Phone + If p.SdkVersion >= 24 Or File.ExternalWritable = False Then + UseFileProvider = True + SharedFolder = File.Combine(File.DirInternal, "shared") + If Not(File.IsDirectory(File.DirInternal,"shared")) Then + File.MakeDir("", SharedFolder) + End If + Else + UseFileProvider = False + SharedFolder = rp.GetSafeDirDefaultExternal("shared") + End If + Log($"Using FileProvider? ${UseFileProvider}"$) +End Sub + +'Returns the file uri. +Sub GetFileUri (FileName As String) As Object + Try + If Not(UseFileProvider) Then + Dim uri As JavaObject + Return uri.InitializeStatic("android.net.Uri").RunMethod("parse", Array("file://" & File.Combine(SharedFolder, FileName))) + End If + Dim f As JavaObject + f.InitializeNewInstance("java.io.File", Array(SharedFolder, FileName)) + Dim fp As JavaObject + Dim context As JavaObject + context.InitializeContext + fp.InitializeStatic("android.support.v4.content.FileProvider") + Return fp.RunMethod("getUriForFile", Array(context, Application.PackageName & ".provider", f)) + Catch + Log("FileProvider::GetFileUri - error - " & LastException.Message) + Return "" + End Try +End Sub + +'Replaces the intent Data field with the file uri. +'Resets the type field. Make sure to call Intent.SetType after calling this method +Sub SetFileUriAsIntentData (Intent As Intent, FileName As String) + Dim jo As JavaObject = Intent + jo.RunMethod("setData", Array(GetFileUri(FileName))) + Intent.Flags = Bit.Or(Intent.Flags, 1) 'FLAG_GRANT_READ_URI_PERMISSION +End Sub diff --git a/B4A/c_datos.bas b/B4A/c_datos.bas new file mode 100644 index 0000000..4c1d93f --- /dev/null +++ b/B4A/c_datos.bas @@ -0,0 +1,2177 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=12.2 +@EndOfDesignText@ +Sub Class_Globals + Private Root As B4XView + Private xui As XUI + Private WobbleMenu1 As WobbleMenu + Private ScrollView1 As ScrollView + Private ScrollView2 As ScrollView + Private ScrollView3 As ScrollView + Private p_financiero As Panel + Private p_gestion As Panel + Private p_scroll As Panel + Private Panel1 As Panel + Private Panel2 As Panel + Private p_w1 As Panel + Private p_w2 As Panel + Private p_w3 As Panel + Private l_titulo As Label + Private b_guardar As Button + Dim c As Cursor + Dim b As Cursor + Dim d As Cursor + Dim e As Cursor + Dim f As Cursor + Dim g As Cursor + Dim s As Cursor + Dim p As Cursor + Dim q As Cursor + Dim r As Cursor + Dim cuenta As String + Dim device As Phone + Dim MES1 As ManageExternalStorage + + 'Datos generales + Private l_nombreg As Label + Private l_rfc As Label + Private l_curp As Label + Private l_calle As Label + Private l_noext As Label + Private l_noint As Label + Private l_alcaldia As Label + Private l_municipio As Label + Private l_entidad As Label + Private l_cp As Label + Private l_sexo As Label + Private l_fn As Label + Private l_edad As Label + Private l_email As Label + + 'Datos financieros + Private l_cartera As Label + Private l_saldotot As Label + Private l_montoapagar As Label + Private l_totalapagar As Label + Private l_liquidacion As Label + Private l_diasvencidos As Label + Private l_diasatraso As Label + Private l_fechaatraso As Label + Private l_bbva As Label + Private l_oxxo As Label + + 'Gestion + + Private cb_fuente As B4XComboBox + Private cb_parentesco As B4XComboBox + Private cb_accion As B4XComboBox + Private cb_resultado As B4XComboBox + Private cb_socioeconomico As B4XComboBox + Private cb_vivienda As B4XComboBox + Private cb_caracteristicas As B4XComboBox + Private cb_numero As B4XComboBox + Private chb_lunes As CheckBox + Private chb_martes As CheckBox + Private chb_miercoles As CheckBox + Private chb_jueves As CheckBox + Private chb_viernes As CheckBox + Private chb_sabado As CheckBox + Private chb_domingo As CheckBox + Private i_datosparentesco As ImageView + Private i_resultado As ImageView + Private p_parentesco As Panel + Private b_guardar_parentesco As Button + Private et_parentesco As EditText + Dim parentesco As String = "" + Private p_nom_parentesco As Panel + Private p_resultado As Panel + Private p_datosresultado As Panel + Private et_monto As EditText + Private ASWheelPicker1 As ASWheelPicker + Private ASWheelPicker2 As ASWheelPicker + Private ASWheelPicker3 As ASWheelPicker + Private l_fechapago As Label + Dim day As Int = DateTime.GetDayOfMonth(DateTime.Now) + Dim month As String = DateTime.GetMonth(DateTime.Now) + Dim year2 As String = DateTime.GetYear(DateTime.Now) + Dim month2 As String + Private p_calendario As Panel + Private b_fecharesultado As Button + Dim fechapago As String + Dim montopago As String + Dim dia As String + Private b_cancelarresultado As Button + Private b_cancelar As Button + + Private camEx2 As CameraExClass2 + Dim frontCamera As Boolean = False + Private p_cam As Panel + Dim nombrefoto As String = "0" + Dim nombrefoto1 As String = "0" + Dim nombrefoto2 As String = "0" + Dim nombrefoto3 As String = "0" + Private p_camara As Panel + Private teclado As IME + Dim fototomada As String + Private ImageView1 As ImageView + Private ImageView3 As ImageView + Private ImageView2 As ImageView + Private ImageView4 As ImageView + Private b_foto As Button + Private et_comentarios As EditText + Private et_puntosref As EditText + Dim diasvisita As String = "" + Dim montoapagar As Float + 'CURSORES GUARDADO + Dim h As Cursor + Dim j As Cursor + Dim k As Cursor + Dim l As Cursor + Dim m As Cursor + Dim n As Cursor +End Sub + +Public Sub Initialize + +End Sub + +'This event will be called once, before the page becomes visible. +Private Sub B4XPage_Created (Root1 As B4XView) + Root = Root1 + Root.LoadLayout("datos") + Panel1.Width = Root.Width + p_w2.Visible = False + p_w3.Visible = False + p_camara.Width = Root.Width + p_camara.Height = Root.Height + + ScrollView1.height = Root.Height - Panel1.Height -WobbleMenu1.Height + p_w1.height = Root.Height - Panel1.Height -WobbleMenu1.Height + + ScrollView2.height = Root.Height - Panel1.Height -WobbleMenu1.Height + p_w2.height = Root.Height - Panel1.Height -WobbleMenu1.Height + + ScrollView3.height = Root.Height - Panel1.Height -WobbleMenu1.Height + p_w3.height = Root.Height - Panel1.Height -WobbleMenu1.Height + + ScrollView1.Panel.LoadLayout("scroll") + ScrollView1.Panel.Height = p_scroll.Height + + ScrollView2.Panel.LoadLayout("financiero") + ScrollView2.Panel.Height = p_financiero.Height + + ScrollView3.Panel.LoadLayout("gestion") + ScrollView3.Panel.Height = p_gestion.Height + + WobbleMenu1.SetTabTextIcon(1,"Datos generales", Chr(0xE3D0), Typeface.MATERIALICONS) + WobbleMenu1.SetTabTextIcon(2,"Datos financieros", Chr(0xE3D1), Typeface.MATERIALICONS) + WobbleMenu1.SetTabTextIcon(3,"Gestión", Chr(0xE3D2), Typeface.MATERIALICONS) + WobbleMenu1.SetCurrentTab(1) + + + 'Creacion de spinners para fecha de pago + p_calendario.Width = Root.Width + p_calendario.Height = Root.Height + Dim dias As List : dias.Initialize + For i = 1 To 31 + Dim Item As ASWheelPicker_Item + Item.Initialize + Item.Text = i + Item.Value = i + Item.ItemTextProperties = ASWheelPicker1.ItemTextProperties + Item.ItemTextProperties.TextColor = (0x8FF000000) + dias.Add(Item) + Next + + ASWheelPicker1.AddItems(dias) + + Dim mes0 As List : mes0.Initialize + mes0 = Array As String("Enero", "Febrero", "Marzo", "Abril", "Mayo", "Junio", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre") + Dim MES As List + MES.Initialize + For Each o As Object In mes0 + Dim Item As ASWheelPicker_Item + Item.Initialize + Item.Text = o + Item.Value = o + Item.ItemTextProperties = ASWheelPicker2.ItemTextProperties + Item.ItemTextProperties.TextColor = (0x8FF000000) + MES.Add(Item) + Next + ASWheelPicker2.AddItems(MES) + + Dim year As List : year.Initialize + For i = DateTime.GetYear(DateTime.Now) To DateTime.GetYear(DateTime.Now) + 4 + Dim Item As ASWheelPicker_Item + Item.Initialize + Item.Text = i + Item.Value = i + Item.ItemTextProperties = ASWheelPicker3.ItemTextProperties + Item.ItemTextProperties.TextColor = (0x8FF000000) + + year.Add(Item) + Next + ASWheelPicker3.AddItems(year) + + ASWheelPicker1.Refresh + ASWheelPicker2.Refresh + ASWheelPicker3.Refresh + + + + If DateTime.GetDayOfMonth(DateTime.Now) < 10 And DateTime.GetMonth(DateTime.Now) < 10 Then + l_fechapago.Text = "0"&DateTime.GetDayOfMonth(DateTime.Now)&"/"&"0"&DateTime.GetMonth(DateTime.Now)&"/"&DateTime.GetYear(DateTime.Now) + Else If DateTime.GetDayOfMonth(DateTime.Now) >= 10 And DateTime.GetMonth(DateTime.Now) < 10 Then + l_fechapago.Text = DateTime.GetDayOfMonth(DateTime.Now)&"/"&"0"&DateTime.GetMonth(DateTime.Now)&"/"&DateTime.GetYear(DateTime.Now) + Else + l_fechapago.Text = DateTime.GetDayOfMonth(DateTime.Now)&"/"&DateTime.GetMonth(DateTime.Now)&"/"&DateTime.GetYear(DateTime.Now) + End If + + + MES1.Initialize(Me, "MES1") + + ' get the device SDK version + Dim SdkVersion As Int = device.SdkVersion + + ' Choose which permission to request in order to access external storgage + If SdkVersion < 30 Then + Log("SDK = " & SdkVersion & " : Requesting WRITE_EXTERNAL_STORAGE permission") + Dim rp As RuntimePermissions + rp.CheckAndRequest(rp.PERMISSION_WRITE_EXTERNAL_STORAGE) ' Implicit read capability if granted + Wait For Activity_PermissionResult (Permission As String, Result As Boolean) + Log($"PERMISSION_WRITE_EXTERNAL_STORAGE = ${Result}"$) + Else + Log("SDK = " & SdkVersion & " : Requesting MANAGE_EXTERNAL_STORAGE permission") + Log("On Entry MANAGE_EXTERNAL_STORAGE = " & MES1.HasPermission) + If Not(MES1.HasPermission) Then + MsgboxAsync("This app requires access to all files, please enable the option", "Manage All Files") + Wait For Msgbox_Result(Res As Int) + Log("Getting permission") + MES1.GetPermission + Wait For MES_StorageAvailable + End If + End If + +End Sub + +Private Sub B4XPage_Appear + WobbleMenu1.SetCurrentTab(1) + p_w1.Visible = True + parentesco = "" + p_camara.Visible = False + p_parentesco.Width = Root.Width + p_parentesco.Height = Root.Height + p_resultado.Width = Root.Width + p_resultado.Height = Root.Height + cuenta = B4XPages.MainPage.principal.lb.Text + Log (cuenta) + + c = Starter.skmt.ExecQuery2("SELECT NOMBRE, RFC, CURP, CALLE, N_EXT, N_INT, ALCALDIA, MUNICIPIO, ENTIDAD, CP, SEXO, FECHA_NACIMIENTO, EDAD, EMAIL from HIST_DATOS_GENERALES WHERE CREDITO = ?" , Array As String (cuenta)) + c.Position = 0 + l_nombreg.Text = c.GetString("NOMBRE") + l_rfc.Text = c.GetString("RFC") + l_curp.Text = c.GetString("CURP") + l_calle.Text = c.GetString("CALLE") + l_noext.Text = c.GetString("N_EXT") + l_noint.Text = c.GetString("N_INT") + l_alcaldia.Text = c.GetString("ALCALDIA") + l_municipio.Text = c.GetString("MUNICIPIO") + l_entidad.Text = c.GetString("ENTIDAD") + l_cp.Text = c.GetString("CP") + l_sexo.Text = c.GetString("SEXO") + l_fn.Text = c.GetString("FECHA_NACIMIENTO") + l_edad.Text = c.GetString("EDAD") + l_email.Text = c.GetString("EMAIL") + c.Close + + b = Starter.skmt.ExecQuery2("SELECT CARTERA, SALDO_TOTAL, MONTO_PAGAR, TOTAL_PAGO_DESC, LIQUIDACION, DIAS_VENCIDOS, DIAS_ATRASO_ACT, FECHA_ATRASO, BBVA, OXXO FROM HIST_FINANCIEROS WHERE CREDITO = ?", Array As String(cuenta)) + b.Position = 0 + l_cartera.Text = b.GetString("CARTERA") + l_saldotot.Text = b.GetString("SALDO_TOTAL") + l_saldotot.Text= NumberFormat(l_saldotot.Text.Replace(",",""),0,2) + l_montoapagar.Text = b.GetString("MONTO_PAGAR") + l_montoapagar.Text= NumberFormat(l_montoapagar.Text.Replace(",",""),0,2) + montoapagar = b.GetString("MONTO_PAGAR") + l_totalapagar.Text = b.GetString("TOTAL_PAGO_DESC") + l_totalapagar.Text= NumberFormat(l_totalapagar.Text.Replace(",",""),0,2) + l_liquidacion.Text = b.GetString("LIQUIDACION") + l_liquidacion.Text= NumberFormat(l_liquidacion.Text.Replace(",",""),0,2) + l_diasvencidos.Text = b.GetString("DIAS_VENCIDOS") + l_diasatraso.Text = b.GetString("DIAS_ATRASO_ACT") + l_fechaatraso.Text = b.GetString("FECHA_ATRASO") + l_bbva.Text = b.GetString("BBVA") + l_oxxo.Text = b.GetString("OXXO") + b.Close + + l = Starter.skmt.ExecQuery2("SELECT COUNT(*) As CUENTA FROM HIST_VISITA WHERE (ESTATUS = 0 OR ESTATUS = 1) and CREDITO = ?",Array As String(cuenta)) + l.Position = 0 + Log(l.GetString("CUENTA")) + If l.GetString("CUENTA") = 0 Then + + chb_lunes.Checked = False + chb_martes.Checked = False + chb_miercoles.Checked = False + chb_jueves.Checked = False + chb_viernes.Checked = False + chb_sabado.Checked = False + chb_domingo.Checked = False + et_comentarios.Text = "" + et_puntosref.Text = "" + et_parentesco.Text = "" + et_monto.Text = "" + b_fecharesultado.Text = "Fecha de pago" + ASWheelPicker1.SelectRow(0,0,True) + ASWheelPicker2.SelectRow(0,0,True) + ASWheelPicker3.SelectRow(0,0,True) + i_datosparentesco.Visible = False + i_resultado.Visible = False + nombrefoto = "0" + nombrefoto1 = "0" + nombrefoto2 = "0" + nombrefoto3 = "0" + + d = Starter.skmt.ExecQuery("SELECT FUENTE, NUME FROM CAT_FUENTE order by 2") + Dim Items As List + Items.Initialize + If d.RowCount > 0 Then + For i = 0 To d.RowCount-1 + d.Position = i + Items.Add(d.GetString("FUENTE")) + Next + cb_fuente.SetItems(Items) + End If + d.Close + + e = Starter.skmt.ExecQuery("SELECT PARENTESCO, NUME FROM CAT_PARENTESCO order by 2") + Dim Items2 As List + Items2.Initialize + If e.RowCount > 0 Then + For i = 0 To e.RowCount-1 + e.Position = i + Items2.Add(e.GetString("PARENTESCO")) + Next + cb_parentesco.SetItems(Items2) + End If + e.Close + + f = Starter.skmt.ExecQuery("SELECT CO_ACDESCRIPCION, NUME FROM CAT_ACCION order by 2") + Dim Items3 As List + Items3.Initialize + If f.RowCount > 0 Then + For i = 0 To f.RowCount-1 + f.Position = i + Items3.Add(f.GetString("CO_ACDESCRIPCION")) + Next + cb_accion.SetItems(Items3) + End If + f.Close + + Dim Items4 As List + Items4.Initialize + cb_resultado.SetItems(Items4) + + s = Starter.skmt.ExecQuery("SELECT NIVEL, NUMERO FROM NIVEL_SOCIO order by 2") + Dim Items5 As List + Items5.Initialize + If s.RowCount > 0 Then + For i = 0 To s.RowCount-1 + s.Position = i + Items5.Add(s.GetString("NIVEL")) + Next + cb_socioeconomico.SetItems(Items5) + End If + s.Close + + p = Starter.skmt.ExecQuery("SELECT TIPO, NUMERO FROM TIPO_VIVIENDA order by 2") + Dim Items6 As List + Items6.Initialize + If p.RowCount > 0 Then + For i = 0 To p.RowCount-1 + p.Position = i + Items6.Add(p.GetString("TIPO")) + Next + cb_vivienda.SetItems(Items6) + End If + p.Close + + q = Starter.skmt.ExecQuery("SELECT TIPO, NUMERO FROM CARACTERISTICAS order by 2") + Dim Items7 As List + Items7.Initialize + If q.RowCount > 0 Then + For i = 0 To q.RowCount-1 + q.Position = i + Items7.Add(q.GetString("TIPO")) + Next + cb_caracteristicas.SetItems(Items7) + End If + q.Close + + r = Starter.skmt.ExecQuery("SELECT NIVELES, NUMERO FROM NUMERO_NIV order by 2") + Dim Items8 As List + Items8.Initialize + If r.RowCount > 0 Then + For i = 0 To r.RowCount-1 + r.Position = i + Items8.Add(r.GetString("NIVELES")) + Next + cb_numero.SetItems(Items8) + End If + r.Close + + h = Starter.skmt.ExecQuery2("SELECT CARTERA, AGENCIA FROM HIST_FINANCIEROS WHERE CREDITO = ?", Array As String(cuenta)) + h.Position = 0 + k = Starter.skmt.ExecQuery2("SELECT COUNT(*) As CUENTA FROM HIST_VISITA WHERE (ESTATUS = 0 OR ESTATUS = 1) and CREDITO = ?",Array As String(cuenta)) + k.Position = 0 + Log(k.GetString("CUENTA")) + If k.GetString("CUENTA") = 0 Then + Starter.skmt.ExecNonQuery2("INSERT INTO HIST_VISITA(CREDITO, PRODUCTO, VISITADOR, AGENCIA, RESULTADO, FUENTE, PARENTESCO, TIPO_DOMICILIO, NIVEL_SOCIO, CARACTERISTICAS, NIVELES, ACCION, FOTOUNO, FOTODOS, FOTOTRES, FOTOCUATRO, ESTATUS, ENVIADO) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As String(cuenta, h.GetString("CARTERA"), B4XPages.MainPage.user, h.GetString("AGENCIA"),"Selecciona una opción","Selecciona una opción","Selecciona una opción","Selecciona una opción","Selecciona una opción","Selecciona una opción","Selecciona una opción","Selecciona una opción","0","0","0","0",0,"0")) + Starter.skmt.ExecNonQuery2("INSERT INTO CHECADO (CREDITO, LUNES, MARTES, MIERCOLES, JUEVES, VIERNES , SABADO , DOMINGO) VALUES (?,0,0,0,0,0,0,0)",Array As String(cuenta)) + Log("inserte cuenta") + End If + k.Close + h.Close + + Else If l.GetString("CUENTA") > 0 Then + + m = Starter.skmt.ExecQuery2("SELECT * FROM HIST_VISITA WHERE CREDITO = ? AND ESTATUS = 1 OR ESTATUS = 0",Array As String(cuenta)) + m.Position = 0 + + d = Starter.skmt.ExecQuery("SELECT FUENTE, NUMERO, NUME FROM CAT_FUENTE order by 3") + Dim Items As List + Items.Initialize + If d.RowCount > 0 Then + For i = 0 To d.RowCount-1 + d.Position = i + Items.Add(d.GetString("FUENTE")) + Next + cb_fuente.SetItems(Items) + End If + d.Close + d = Starter.skmt.ExecQuery2("SELECT NUMERO FROM CAT_FUENTE WHERE FUENTE = ?", Array As String(m.GetString("FUENTE"))) + d.Position = 0 + cb_fuente.SelectedIndex = d.GetString("NUMERO") + d.Close + + If cb_fuente.SelectedItem = "Cliente" Then + + e = Starter.skmt.ExecQuery("SELECT PARENTESCO, NUMERO, NUME FROM CAT_PARENTESCO order by 3") + Dim Items2 As List + Items2.Initialize + If e.RowCount > 0 Then + For i = 0 To e.RowCount-1 + e.Position = i + Items2.Add(e.GetString("PARENTESCO")) + Next + cb_parentesco.SetItems(Items2) + End If + e.Close + e = Starter.skmt.ExecQuery2("SELECT NUMERO FROM CAT_PARENTESCO WHERE PARENTESCO = ?",Array As String("Cliente")) + e.Position = 0 + cb_parentesco.SelectedIndex = e.GetString("NUMERO") + e.Close + Else + e = Starter.skmt.ExecQuery("SELECT PARENTESCO, NUMERO, NUME FROM CAT_PARENTESCO order by 3") + Dim Items2 As List + Items2.Initialize + If e.RowCount > 0 Then + For i = 0 To e.RowCount-1 + e.Position = i + Items2.Add(e.GetString("PARENTESCO")) + Next + cb_parentesco.SetItems(Items2) + End If + e.Close + e = Starter.skmt.ExecQuery2("SELECT NUMERO FROM CAT_PARENTESCO WHERE PARENTESCO = ?", Array As String(m.GetString("PARENTESCO"))) + e.Position = 0 + cb_parentesco.SelectedIndex = e.GetString("NUMERO") + e.Close + End If + + If cb_parentesco.SelectedItem = "Cliente" Or cb_parentesco.SelectedItem = "Selecciona una opción" Then + i_datosparentesco.Visible = False + Else + i_datosparentesco.Visible = True + + et_parentesco.Text = m.GetString("NOMBRE_ATIENDE") + If et_parentesco.Text = "null" Then + et_parentesco.Text = "" + End If + + End If + + f = Starter.skmt.ExecQuery("SELECT CO_ACDESCRIPCION, NUMERO, NUME FROM CAT_ACCION order by 3") + Dim Items3 As List + Items3.Initialize + If f.RowCount > 0 Then + For i = 0 To f.RowCount-1 + f.Position = i + Items3.Add(f.GetString("CO_ACDESCRIPCION")) + Next + cb_accion.SetItems(Items3) + End If + f.Close + f = Starter.skmt.ExecQuery2("SELECT NUMERO FROM CAT_ACCION WHERE CO_ACDESCRIPCION = ?", Array As String(m.GetString("ACCION"))) + f.Position = 0 + cb_accion.SelectedIndex = f.GetString("NUMERO") + f.Close + + + If cb_accion.SelectedItem = "Selecciona una opción" Then + Dim Items4 As List + Items4.Initialize + Items4.Add("") + cb_resultado.SetItems(Items4) + Else If cb_accion.SelectedItem = "Carteo" Then + Dim Items4 As List + Items4.Initialize + g = Starter.skmt.ExecQuery("SELECT CO_RDESCRIPCION, NUMERO FROM CAT_RESULTADO_CA order by 2") + If g.RowCount > 0 Then + For i = 0 To g.RowCount-1 + g.Position = i + Items4.Add(g.GetString("CO_RDESCRIPCION")) + Next + cb_resultado.SetItems(Items4) + End If + g.Close + g = Starter.skmt.ExecQuery2("SELECT NUMERO FROM CAT_RESULTADO_CA WHERE CO_RDESCRIPCION = ?", Array As String(m.GetString("RESULTADO"))) + g.Position = 0 + Log(m.GetString("RESULTADO")) + Log(g.GetString("NUMERO")) + cb_resultado.SelectedIndex = g.GetString("NUMERO") + g.Close + Else If cb_accion.SelectedItem = "Se envia Blaster" Then + Dim Items4 As List + Items4.Initialize + g = Starter.skmt.ExecQuery("SELECT CO_RDESCRIPCION, NUMERO FROM CAT_RESULTADO_BR order by 2") + If g.RowCount > 0 Then + For i = 0 To g.RowCount-1 + g.Position = i + Items4.Add(g.GetString("CO_RDESCRIPCION")) + Next + cb_resultado.SetItems(Items4) + End If + g.Close + g = Starter.skmt.ExecQuery2("SELECT NUMERO FROM CAT_RESULTADO_BR WHERE CO_RDESCRIPCION = ?", Array As String(m.GetString("RESULTADO"))) + g.Position = 0 + cb_resultado.SelectedIndex = g.GetString("NUMERO") + g.Close + Else If cb_accion.SelectedItem = "Se envia email" Then + Dim Items4 As List + Items4.Initialize + g = Starter.skmt.ExecQuery("SELECT CO_RDESCRIPCION, NUMERO FROM CAT_RESULTADO_MA order by 2") + If g.RowCount > 0 Then + For i = 0 To g.RowCount-1 + g.Position = i + Items4.Add(g.GetString("CO_RDESCRIPCION")) + Next + cb_resultado.SetItems(Items4) + End If + g.Close + g = Starter.skmt.ExecQuery2("SELECT NUMERO FROM CAT_RESULTADO_MA WHERE CO_RDESCRIPCION = ?", Array As String(m.GetString("RESULTADO"))) + g.Position = 0 + cb_resultado.SelectedIndex = g.GetString("NUMERO") + g.Close + Else If cb_accion.SelectedItem = "Visita En Domicilio" Then + Dim Items4 As List + Items4.Initialize + g = Starter.skmt.ExecQuery("SELECT CO_RDESCRIPCION, NUMERO FROM CAT_RESULTADO_VC order by 2") + If g.RowCount > 0 Then + For i = 0 To g.RowCount-1 + g.Position = i + Items4.Add(g.GetString("CO_RDESCRIPCION")) + Next + cb_resultado.SetItems(Items4) + End If + g.Close + g = Starter.skmt.ExecQuery2("SELECT NUMERO FROM CAT_RESULTADO_VC WHERE CO_RDESCRIPCION = ?", Array As String(m.GetString("RESULTADO"))) + g.Position = 0 + cb_resultado.SelectedIndex = g.GetString("NUMERO") + g.Close + End If + f.Close + + f = Starter.skmt.ExecQuery2("SELECT LUNES, MARTES, MIERCOLES, JUEVES, VIERNES, SABADO, DOMINGO FROM CHECADO WHERE CREDITO = ?", Array As String(cuenta)) + f.Position = 0 + If f.RowCount = 0 Then + chb_lunes.Checked = False + chb_martes.Checked = False + chb_miercoles.Checked = False + chb_jueves.Checked = False + chb_viernes.Checked = False + chb_sabado.Checked = False + chb_domingo.Checked = False + Else + LogColor(f.GetString("LUNES") & ",,,,," & cuenta, Colors.Cyan) + If f.GetString("LUNES") = "1" Then + chb_lunes.Checked = True + Else + chb_lunes.Checked = False + End If + If f.GetString("MARTES") = "1" Then + chb_martes.Checked = True + Else + chb_martes.Checked = False + End If + If f.GetString("MIERCOLES") = "1" Then + chb_miercoles.Checked = True + Else + chb_miercoles.Checked = False + End If + If f.GetString("JUEVES") = "1" Then + chb_jueves.Checked = True + Else + chb_jueves.Checked = False + End If + If f.GetString("VIERNES") = "1" Then + chb_viernes.Checked = True + Else + chb_viernes.Checked = False + End If + If f.GetString("SABADO") = "1" Then + chb_sabado.Checked = True + Else + chb_sabado.Checked = False + End If + If f.GetString("DOMINGO") = "1" Then + chb_domingo.Checked = True + Else + chb_domingo.Checked = False + End If + End If + f.Close + + If cb_resultado.SelectedItem = "Promesa de pago" Then + i_resultado.Visible = True + b_fecharesultado.Text = m.GetString("FECHA_PROMESA") + + + et_monto.Text = m.GetString("MONTO_PROMESA") + If et_monto.Text = "null" Then + et_monto.Text = "" + End If + Else + i_resultado.Visible = False + End If + + et_comentarios.Text = m.GetString("COMENTARIOS") + If et_comentarios.Text = "null" Then + et_comentarios.Text = "" + End If + + et_puntosref.Text = m.GetString("PUNTOS_REF") + If et_puntosref.Text = "null" Then + et_puntosref.Text = "" + End If + + s = Starter.skmt.ExecQuery("SELECT NIVEL, NUMERO FROM NIVEL_SOCIO order by 2") + Dim Items5 As List + Items5.Initialize + If s.RowCount > 0 Then + For i = 0 To s.RowCount-1 + s.Position = i + Items5.Add(s.GetString("NIVEL")) + Next + cb_socioeconomico.SetItems(Items5) + End If + s.Close + s = Starter.skmt.ExecQuery2("SELECT NUMERO FROM NIVEL_SOCIO WHERE NIVEL = ?", Array As String(m.GetString("NIVEL_SOCIO"))) + s.Position = 0 + cb_socioeconomico.SelectedIndex = s.GetString("NUMERO") + s.Close + + p = Starter.skmt.ExecQuery("SELECT TIPO, NUMERO FROM TIPO_VIVIENDA order by 2") + Dim Items6 As List + Items6.Initialize + If p.RowCount > 0 Then + For i = 0 To p.RowCount-1 + p.Position = i + Items6.Add(p.GetString("TIPO")) + Next + cb_vivienda.SetItems(Items6) + End If + p.Close + p = Starter.skmt.ExecQuery2("SELECT NUMERO FROM TIPO_VIVIENDA WHERE TIPO = ?", Array As String(m.GetString("TIPO_DOMICILIO"))) + p.Position = 0 + cb_vivienda.SelectedIndex = p.GetString("NUMERO") + p.Close + + q = Starter.skmt.ExecQuery("SELECT TIPO, NUMERO FROM CARACTERISTICAS order by 2") + Dim Items7 As List + Items7.Initialize + If q.RowCount > 0 Then + For i = 0 To q.RowCount-1 + q.Position = i + Items7.Add(q.GetString("TIPO")) + Next + cb_caracteristicas.SetItems(Items7) + End If + q.Close + q = Starter.skmt.ExecQuery2("SELECT NUMERO FROM CARACTERISTICAS WHERE TIPO = ?", Array As String(m.GetString("CARACTERISTICAS"))) + q.Position = 0 + cb_caracteristicas.SelectedIndex = q.GetString("NUMERO") + q.Close + + r = Starter.skmt.ExecQuery("SELECT NIVELES, NUMERO FROM NUMERO_NIV order by 2") + Dim Items8 As List + Items8.Initialize + If r.RowCount > 0 Then + For i = 0 To r.RowCount-1 + r.Position = i + Items8.Add(r.GetString("NIVELES")) + Next + cb_numero.SetItems(Items8) + End If + r.Close + r = Starter.skmt.ExecQuery2("SELECT NUMERO FROM NUMERO_NIV WHERE NIVELES = ?", Array As String(m.GetString("NIVELES"))) + r.Position = 0 + cb_numero.SelectedIndex = r.GetString("NUMERO") + r.Close + + Dim Dirp As String = File.DirRootExternal + Dim Dir As String + Dim Dir2 As String + Try + File.MakeDir(Dirp,"/Arestrategicas") + Dir = "/Arestrategicas" + Log("creado en promotoria " & Dirp & Dir) + Catch + Dir = "" + Log("creado en raiz") + End Try + + Try + File.MakeDir(Dirp & Dir,"/reduccion") + Dir2 = "/reduccion" + Log("creado en promotoria " & Dirp & Dir & Dir2) + Catch + Dir = "" + Log("creado en raiz") + End Try + + If m.GetString("FOTOUNO") = "0" Then + ImageView1.Bitmap = LoadBitmap(File.DirAssets,"icon_22-[convertido].png") + Else + ImageView1.Bitmap = LoadBitmap(File.DirRootExternal & Dir & Dir2,m.GetString("FOTOUNO")) + nombrefoto = m.GetString("FOTOUNO") + End If + + If m.GetString("FOTODOS") = "0" Then + ImageView2.Bitmap = LoadBitmap(File.DirAssets,"icon_22-[convertido].png") + Else + ImageView2.Bitmap = LoadBitmap(File.DirRootExternal & Dir & Dir2,m.GetString("FOTODOS")) + nombrefoto1 = m.GetString("FOTODOS") + End If + + If m.GetString("FOTOTRES") = "0" Then + ImageView3.Bitmap = LoadBitmap(File.DirAssets,"icon_22-[convertido].png") + Else + ImageView3.Bitmap = LoadBitmap(File.DirRootExternal & Dir & Dir2,m.GetString("FOTOTRES")) + nombrefoto2 = m.GetString("FOTOTRES") + End If + + If m.GetString("FOTOCUATRO") = "0" Then + ImageView4.Bitmap = LoadBitmap(File.DirAssets,"icon_22-[convertido].png") + Else + ImageView4.Bitmap = LoadBitmap(File.DirRootExternal & Dir & Dir2,m.GetString("FOTOCUATRO")) + nombrefoto3 = m.GetString("FOTOCUATRO") + End If + + m.Close + End If + l.Close + + 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 + +End Sub + +Sub WobbleMenu1_Tab1Click + p_w1.Visible = True + p_w2.Visible = False + p_w3.Visible = False + l_titulo.Text = "Datos generales" +End Sub + +Sub WobbleMenu1_Tab2Click + p_w1.Visible = False + p_w2.Visible = True + p_w3.Visible = False + l_titulo.Text = "Datos financieros" +End Sub + +Sub WobbleMenu1_Tab3Click + Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_CAMERA) + Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean) + If Result Then +' camEx2.Initialize(p_cam, frontCamera, Me, "Camera1") +' frontCamera = camEx2.Front +' Log("inicializamos Camara") + Else + ToastMessageShow("No permission!!!", True) + End If + + Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE) + Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean) + If Result Then + Log("conpermisos para escritura") + Else + ToastMessageShow("No permission!!!", True) + End If + + Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_READ_EXTERNAL_STORAGE) + Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean) + If Result Then + Log("conpermisos para escritura") + Else + ToastMessageShow("No permission!!!", True) + End If + + p_w1.Visible = False + p_w2.Visible = False + p_w3.Visible = True + l_titulo.Text = "Gestión" +End Sub + +Private Sub cb_fuente_SelectedIndexChanged (Index As Int) + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String("1", cuenta)) + + c = Starter.skmt.ExecQuery2("SELECT ESTATUS2 FROM HIST_DATOS_GENERALES WHERE CREDITO = ?",Array As String(cuenta)) + c.Position = 0 + If c.GetString("ESTATUS2") = 2 Then + + Else + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + End If + c.Close + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET FUENTE = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String(cb_fuente.SelectedItem, cuenta)) + + If cb_fuente.SelectedItem = "Cliente" Then + g = Starter.skmt.ExecQuery2("SELECT NUMERO FROM CAT_PARENTESCO WHERE PARENTESCO = ?",Array As String("Cliente")) + g.Position = 0 + Log(g.GetString("NUMERO")) + cb_parentesco.SelectedIndex = g.GetString("NUMERO") + g.Close + End If + +End Sub + +Private Sub cb_parentesco_SelectedIndexChanged (Index As Int) + Dim parentesco2 As String = cb_parentesco.SelectedItem + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String("1", cuenta)) + c = Starter.skmt.ExecQuery2("SELECT ESTATUS2 FROM HIST_DATOS_GENERALES WHERE CREDITO = ?",Array As String(cuenta)) + c.Position = 0 + If c.GetString("ESTATUS2") = 2 Then + + Else + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + End If + c.Close + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET PARENTESCO = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String(cb_parentesco.SelectedItem, cuenta)) + If parentesco2 = "Selecciona una opción" Or parentesco2 = "Cliente" Then + i_datosparentesco.Visible = False + Else + Log("aqui1") + i_datosparentesco.Visible = True + If parentesco = "" Then + p_parentesco.Visible = True + Else + + End If + End If +End Sub + +Private Sub b_guardar_parentesco_Click + If et_parentesco.Text <> "" Then + parentesco = et_parentesco.Text + p_parentesco.Visible = False + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String("1", cuenta)) + c = Starter.skmt.ExecQuery2("SELECT ESTATUS2 FROM HIST_DATOS_GENERALES WHERE CREDITO = ?",Array As String(cuenta)) + c.Position = 0 + If c.GetString("ESTATUS2") = 2 Then + + Else + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + End If + c.Close + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET NOMBRE_ATIENDE = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String(et_parentesco.Text, cuenta)) + Else + MsgboxAsync("Captura el nombre.","Atención") + End If +End Sub + +Private Sub i_datosparentesco_Click + p_parentesco.Visible = True +End Sub + +Private Sub p_parentesco_Click + If et_parentesco.Text <> "" Then + parentesco = et_parentesco.Text + p_parentesco.Visible = False + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String("1", cuenta)) + c = Starter.skmt.ExecQuery2("SELECT ESTATUS2 FROM HIST_DATOS_GENERALES WHERE CREDITO = ?",Array As String(cuenta)) + c.Position = 0 + If c.GetString("ESTATUS2") = 2 Then + + Else + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + End If + c.Close + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET NOMBRE_ATIENDE = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String(et_parentesco.Text, cuenta)) + Else + MsgboxAsync("Captura el nombre.","Atención") + End If +End Sub + +Private Sub p_nom_parentesco_Click + +End Sub + +Private Sub cb_accion_SelectedIndexChanged (Index As Int) + + f = Starter.skmt.ExecQuery2("SELECT CO_ACCION FROM CAT_ACCION WHERE CO_ACDESCRIPCION = ?",Array As String(cb_accion.SelectedItem)) + f.Position = 0 + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String("1", cuenta)) + c = Starter.skmt.ExecQuery2("SELECT ESTATUS2 FROM HIST_DATOS_GENERALES WHERE CREDITO = ?",Array As String(cuenta)) + c.Position = 0 + If c.GetString("ESTATUS2") = 2 Then + + Else + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + End If + c.Close + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ACCION = ?, CODIGO_ACCION = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String(cb_accion.SelectedItem,f.GetString("CO_ACCION"), cuenta)) + If cb_accion.SelectedItem = "Selecciona una opción" Then + Dim Items4 As List + Items4.Initialize + Items4.Add("") + cb_resultado.SetItems(Items4) + Else If cb_accion.SelectedItem = "Carteo" Then + Dim Items4 As List + Items4.Initialize + g = Starter.skmt.ExecQuery("SELECT CO_RDESCRIPCION, NUMERO FROM CAT_RESULTADO_CA order by 2") + If g.RowCount > 0 Then + For i = 0 To g.RowCount-1 + g.Position = i + Items4.Add(g.GetString("CO_RDESCRIPCION")) + Next + cb_resultado.SetItems(Items4) + End If + g.Close + Else If cb_accion.SelectedItem = "Se envia Blaster" Then + Dim Items4 As List + Items4.Initialize + g = Starter.skmt.ExecQuery("SELECT CO_RDESCRIPCION, NUMERO FROM CAT_RESULTADO_BR order by 2") + If g.RowCount > 0 Then + For i = 0 To g.RowCount-1 + g.Position = i + Items4.Add(g.GetString("CO_RDESCRIPCION")) + Next + cb_resultado.SetItems(Items4) + End If + g.Close + Else If cb_accion.SelectedItem = "Se envia email" Then + Dim Items4 As List + Items4.Initialize + g = Starter.skmt.ExecQuery("SELECT CO_RDESCRIPCION, NUMERO FROM CAT_RESULTADO_MA order by 2") + If g.RowCount > 0 Then + For i = 0 To g.RowCount-1 + g.Position = i + Items4.Add(g.GetString("CO_RDESCRIPCION")) + Next + cb_resultado.SetItems(Items4) + End If + g.Close + Else If cb_accion.SelectedItem = "Visita En Domicilio" Then + Dim Items4 As List + Items4.Initialize + g = Starter.skmt.ExecQuery("SELECT CO_RDESCRIPCION, NUMERO FROM CAT_RESULTADO_VC order by 2") + If g.RowCount > 0 Then + For i = 0 To g.RowCount-1 + g.Position = i + Items4.Add(g.GetString("CO_RDESCRIPCION")) + Next + cb_resultado.SetItems(Items4) + End If + g.Close + End If + f.Close +End Sub + +Private Sub cb_resultado_SelectedIndexChanged (Index As Int) + If cb_accion.SelectedItem = "Carteo" Then + If cb_resultado.SelectedItem <> "Promesa de pago" Then + i_resultado.Visible = False + p_resultado.Visible = False + j = Starter.skmt.ExecQuery2("SELECT CO_RESULTADO FROM CAT_RESULTADO_CA WHERE CO_RDESCRIPCION = ?",Array As String(cb_resultado.SelectedItem)) + j.Position = 0 + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String("1", cuenta)) + c = Starter.skmt.ExecQuery2("SELECT ESTATUS2 FROM HIST_DATOS_GENERALES WHERE CREDITO = ?",Array As String(cuenta)) + c.Position = 0 + If c.GetString("ESTATUS2") = 2 Then + + Else + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + End If + c.Close + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET RESULTADO = ?, CODIGO_RES = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String(cb_resultado.SelectedItem,j.GetString("CO_RESULTADO"), cuenta)) + j.Close + Else + i_resultado.Visible = True + p_resultado.Visible = True + j = Starter.skmt.ExecQuery2("SELECT CO_RESULTADO FROM CAT_RESULTADO_CA WHERE CO_RDESCRIPCION = ?",Array As String(cb_resultado.SelectedItem)) + j.Position = 0 + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String("1", cuenta)) + c = Starter.skmt.ExecQuery2("SELECT ESTATUS2 FROM HIST_DATOS_GENERALES WHERE CREDITO = ?",Array As String(cuenta)) + c.Position = 0 + If c.GetString("ESTATUS2") = 2 Then + + Else + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + End If + c.Close + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET RESULTADO = ?, CODIGO_RES = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String(cb_resultado.SelectedItem,j.GetString("CO_RESULTADO"), cuenta)) + j.Close + End If + Else If cb_accion.SelectedItem = "Se envia Blaster" Then + i_resultado.Visible = False + p_resultado.Visible = False + j = Starter.skmt.ExecQuery2("SELECT CO_RESULTADO FROM CAT_RESULTADO_BR WHERE CO_RDESCRIPCION = ?",Array As String(cb_resultado.SelectedItem)) + j.Position = 0 + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String("1", cuenta)) + c = Starter.skmt.ExecQuery2("SELECT ESTATUS2 FROM HIST_DATOS_GENERALES WHERE CREDITO = ?",Array As String(cuenta)) + c.Position = 0 + If c.GetString("ESTATUS2") = 2 Then + + Else + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + End If + c.Close + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET RESULTADO = ?, CODIGO_RES = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String(cb_resultado.SelectedItem,j.GetString("CO_RESULTADO"), cuenta)) + j.Close + Else If cb_accion.SelectedItem = "Se envia email" Then + i_resultado.Visible = False + p_resultado.Visible = False + j = Starter.skmt.ExecQuery2("SELECT CO_RESULTADO FROM CAT_RESULTADO_MA WHERE CO_RDESCRIPCION = ?",Array As String(cb_resultado.SelectedItem)) + j.Position = 0 + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String("1", cuenta)) + c = Starter.skmt.ExecQuery2("SELECT ESTATUS2 FROM HIST_DATOS_GENERALES WHERE CREDITO = ?",Array As String(cuenta)) + c.Position = 0 + If c.GetString("ESTATUS2") = 2 Then + + Else + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + End If + c.Close + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET RESULTADO = ?, CODIGO_RES = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String(cb_resultado.SelectedItem,j.GetString("CO_RESULTADO"), cuenta)) + j.Close + Else If cb_accion.SelectedItem = "Visita En Domicilio" Then + If cb_resultado.SelectedItem <> "Promesa de pago" Then + i_resultado.Visible = False + p_resultado.Visible = False + j = Starter.skmt.ExecQuery2("SELECT CO_RESULTADO FROM CAT_RESULTADO_VC WHERE CO_RDESCRIPCION = ?",Array As String(cb_resultado.SelectedItem)) + j.Position = 0 + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String("1", cuenta)) + c = Starter.skmt.ExecQuery2("SELECT ESTATUS2 FROM HIST_DATOS_GENERALES WHERE CREDITO = ?",Array As String(cuenta)) + c.Position = 0 + If c.GetString("ESTATUS2") = 2 Then + + Else + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + End If + c.Close + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET RESULTADO = ?, CODIGO_RES = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String(cb_resultado.SelectedItem,j.GetString("CO_RESULTADO"), cuenta)) + j.Close + Else + i_resultado.Visible = True + p_resultado.Visible = True + j = Starter.skmt.ExecQuery2("SELECT CO_RESULTADO FROM CAT_RESULTADO_VC WHERE CO_RDESCRIPCION = ?",Array As String(cb_resultado.SelectedItem)) + j.Position = 0 + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String("1", cuenta)) + c = Starter.skmt.ExecQuery2("SELECT ESTATUS2 FROM HIST_DATOS_GENERALES WHERE CREDITO = ?",Array As String(cuenta)) + c.Position = 0 + If c.GetString("ESTATUS2") = 2 Then + + Else + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + End If + c.Close + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET RESULTADO = ?, CODIGO_RES = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String(cb_resultado.SelectedItem,j.GetString("CO_RESULTADO"), cuenta)) + j.Close + End If + End If + +End Sub + +Private Sub b_guardarresultado_Click + + Dim montoprometido As Float = et_monto.Text + + If montoapagar < montoprometido Then + MsgboxAsync("El monto no puede ser mayor al monto a pagar","Atención") + Else + If et_monto.Text <> "" And b_fecharesultado.Text <> "Fecha de pago" Then + montopago = et_monto.Text + fechapago = b_fecharesultado.Text + p_resultado.Visible = False + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String("1", cuenta)) + c = Starter.skmt.ExecQuery2("SELECT ESTATUS2 FROM HIST_DATOS_GENERALES WHERE CREDITO = ?",Array As String(cuenta)) + c.Position = 0 + If c.GetString("ESTATUS2") = 2 Then + + Else + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + End If + c.Close + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET FECHA_PROMESA = ?, MONTO_PROMESA = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String(b_fecharesultado.Text,et_monto.Text, cuenta)) + Else + MsgboxAsync("Captura todos los datos.","Atención") + End If + End If +End Sub + +Private Sub i_resultado_Click + p_resultado.Visible = True +End Sub + +Private Sub p_resultado_Click + If et_monto.Text <> "" And b_fecharesultado.Text <> "Fecha de pago" Then + montopago = et_monto.Text + fechapago = b_fecharesultado.Text + p_resultado.Visible = False + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String("1", cuenta)) + c = Starter.skmt.ExecQuery2("SELECT ESTATUS2 FROM HIST_DATOS_GENERALES WHERE CREDITO = ?",Array As String(cuenta)) + c.Position = 0 + If c.GetString("ESTATUS2") = 2 Then + + Else + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + End If + c.Close + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET FECHA_PROMESA = ?, MONTO_PROMESA = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String(b_fecharesultado.Text,et_monto.Text, cuenta)) + Else + MsgboxAsync("Captura todos los datos.","Atención") + End If +End Sub + +Private Sub p_datosresultado_Click + +End Sub + +Private Sub ASWheelPicker1_ItemChange(Column As Int,ListIndex As Int) + l_fechapago.Text = ASWheelPicker1.GetSelectedItem(Column).Text + day = ASWheelPicker1.GetSelectedItem(Column).Text + If month = "" Then + month2 = DateTime.GetMonth(DateTime.Now) + End If + + If month = Null Or month2 = "" Or month2 = "null" Then + month2 = DateTime.GetMonth(DateTime.Now) + If month2 < 10 Then + month2 = "0"&DateTime.GetMonth(DateTime.Now) + Else + month2 = month2 = DateTime.GetMonth(DateTime.Now) + End If + End If + + If day < 10 Then + day = "0"&day + Else + day = day + End If + + If day = 1 Or day = "2" Or day = "3" Or day = "4" Or day = "5" Or day = "6" Or day = "7" Or day = "8" Or day = "9" Then + l_fechapago.Text = "0"&day&"/"&month2&"/"&year2 + Else + l_fechapago.Text = day&"/"&month2&"/"&year2 + End If + + +End Sub + +Private Sub ASWheelPicker2_ItemChange(Column As Int,ListIndex As Int) + l_fechapago.Text = ASWheelPicker2.GetSelectedItem(Column).Text + month = ASWheelPicker2.GetSelectedItem(Column).Text + + If month = "Enero" Then + month2 = "01" + Else If month = "Febrero" Then + month2 = "02" + Else If month = "Marzo" Then + month2 = "03" + Else If month = "Abril" Then + month2 = "04" + Else If month = "Mayo" Then + month2 = "05" + Else If month = "Junio" Then + month2 = "06" + Else If month = "Julio" Then + month2 = "07" + Else If month = "Agosto" Then + month2 = "08" + Else If month = "Septiembre" Then + month2 = "09" + Else If month = "Octubre" Then + month2 = "10" + Else If month = "Noviembre" Then + month2 = "11" + Else If month = "Diciembre" Then + month2 = "12" + End If + + If day < 10 Then + day = "0"&day + Else + day = day + End If + + If day = 1 Or day = "2" Or day = "3" Or day = "4" Or day = "5" Or day = "6" Or day = "7" Or day = "8" Or day = "9" Then + l_fechapago.Text = "0"&day&"/"&month2&"/"&year2 + Else + l_fechapago.Text = day&"/"&month2&"/"&year2 + End If + +End Sub + +Private Sub ASWheelPicker3_ItemChange(Column As Int,ListIndex As Int) + l_fechapago.Text = ASWheelPicker3.GetSelectedItem(Column).Text + year2 = ASWheelPicker3.GetSelectedItem(Column).Text + + If month = "" Then + month2 = DateTime.GetMonth(DateTime.Now) + End If + + If month = Null Or month2 = "" Or month2 = "null" Then + month2 = DateTime.GetMonth(DateTime.Now) + If month2 < 10 Then + month2 = "0"&DateTime.GetMonth(DateTime.Now) + Else + month2 = month2 = DateTime.GetMonth(DateTime.Now) + End If + End If + + If day < 10 Then + day = "0"&day + Else + day = day + End If + + If day = 1 Or day = "2" Or day = "3" Or day = "4" Or day = "5" Or day = "6" Or day = "7" Or day = "8" Or day = "9" Then + l_fechapago.Text = "0"&day&"/"&month2&"/"&year2 + Else + l_fechapago.Text = day&"/"&month2&"/"&year2 + End If +End Sub + +Private Sub b_fecharesultado_Click + p_calendario.Visible = True +End Sub + +Private Sub bgfecha_Click + DateTime.DateFormat = "yyyyMMdd" + Dim fechahoy As Int = DateTime.Date(DateTime.Now) + + If month = Null Or month2 = "" Or month2 = "null" Then + month2 = DateTime.GetMonth(DateTime.Now) + If month2 < 10 Then + month2 = "0"&DateTime.GetMonth(DateTime.Now) + Else + month2 = month2 = DateTime.GetMonth(DateTime.Now) + End If + End If + + If day < 10 Then + dia = "0"&day + Else + dia = day + End If + + If year2 = Null Or year2 = "" Or year2 = "null" Then + year2 = DateTime.GetYear(DateTime.Now) + End If + + Dim fechacompara As Int = year2&month2&dia + + If fechacompara < fechahoy Then + MsgboxAsync("La fecha no puede ser menor al día de hoy","Atención") + Else + p_calendario.Visible = False + b_fecharesultado.Text = l_fechapago.Text + End If + +End Sub + +Private Sub b_cancelar_Click + p_parentesco.Visible = False +End Sub + +Private Sub b_cancelarresultado_Click + b_fecharesultado.Text = "Fecha de pago" + ASWheelPicker1.SelectRow(0,0,True) + ASWheelPicker2.SelectRow(0,0,True) + ASWheelPicker3.SelectRow(0,0,True) + p_resultado.Visible = False +End Sub + +Private Sub p_calendario_Click + +End Sub + +Private Sub b_cancelarfecha_Click + p_calendario.Visible = False + ASWheelPicker1.SelectRow(0,0,True) + ASWheelPicker2.SelectRow(0,0,True) + ASWheelPicker3.SelectRow(0,0,True) +End Sub + +Private Sub chb_domingo_CheckedChange(Checked As Boolean) + diasvisita = "" + If chb_lunes.Checked Then diasvisita = diasvisita & ", " & chb_lunes.Text + If chb_martes.Checked Then diasvisita = diasvisita & ", " & chb_martes.Text + If chb_miercoles.Checked Then diasvisita = diasvisita & ", " & chb_miercoles.Text + If chb_jueves.Checked Then diasvisita = diasvisita & ", " & chb_jueves.Text + If chb_viernes.Checked Then diasvisita = diasvisita & ", " & chb_viernes.Text + If chb_sabado.Checked Then diasvisita = diasvisita & ", " & chb_sabado.Text + If chb_domingo.Checked Then diasvisita = diasvisita & ", " & chb_domingo.Text + If diasvisita <> "" And diasvisita.SubString2(0,2) = ", " Then diasvisita = diasvisita.SubString(2) + Log(diasvisita) + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String("1", cuenta)) + c = Starter.skmt.ExecQuery2("SELECT ESTATUS2 FROM HIST_DATOS_GENERALES WHERE CREDITO = ?",Array As String(cuenta)) + c.Position = 0 + If c.GetString("ESTATUS2") = 2 Then + + Else + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + End If + c.Close + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET DIAS_ACCION = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String(diasvisita, cuenta)) + If chb_domingo.Checked = True Then + Starter.skmt.ExecNonQuery2("UPDATE CHECADO SET DOMINGO = 1 WHERE CREDITO = ?", Array As String(cuenta)) + Else If chb_domingo.Checked = False Then + Starter.skmt.ExecNonQuery2("UPDATE CHECADO SET DOMINGO = 0 WHERE CREDITO = ?", Array As String(cuenta)) + End If +End Sub + +Private Sub chb_sabado_CheckedChange(Checked As Boolean) + diasvisita = "" + If chb_lunes.Checked Then diasvisita = diasvisita & ", " & chb_lunes.Text + If chb_martes.Checked Then diasvisita = diasvisita & ", " & chb_martes.Text + If chb_miercoles.Checked Then diasvisita = diasvisita & ", " & chb_miercoles.Text + If chb_jueves.Checked Then diasvisita = diasvisita & ", " & chb_jueves.Text + If chb_viernes.Checked Then diasvisita = diasvisita & ", " & chb_viernes.Text + If chb_sabado.Checked Then diasvisita = diasvisita & ", " & chb_sabado.Text + If chb_domingo.Checked Then diasvisita = diasvisita & ", " & chb_domingo.Text + If diasvisita <> "" And diasvisita.SubString2(0,2) = ", " Then diasvisita = diasvisita.SubString(2) + Log(diasvisita) + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String("1", cuenta)) + c = Starter.skmt.ExecQuery2("SELECT ESTATUS2 FROM HIST_DATOS_GENERALES WHERE CREDITO = ?",Array As String(cuenta)) + c.Position = 0 + If c.GetString("ESTATUS2") = 2 Then + + Else + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + End If + c.Close + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET DIAS_ACCION = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String(diasvisita, cuenta)) + If chb_sabado.Checked = True Then + Starter.skmt.ExecNonQuery2("UPDATE CHECADO SET SABADO = 1 WHERE CREDITO = ?", Array As String(cuenta)) + Else If chb_sabado.Checked = False Then + Starter.skmt.ExecNonQuery2("UPDATE CHECADO SET SABADO = 0 WHERE CREDITO = ?", Array As String(cuenta)) + End If +End Sub + +Private Sub chb_viernes_CheckedChange(Checked As Boolean) + diasvisita = "" + If chb_lunes.Checked Then diasvisita = diasvisita & ", " & chb_lunes.Text + If chb_martes.Checked Then diasvisita = diasvisita & ", " & chb_martes.Text + If chb_miercoles.Checked Then diasvisita = diasvisita & ", " & chb_miercoles.Text + If chb_jueves.Checked Then diasvisita = diasvisita & ", " & chb_jueves.Text + If chb_viernes.Checked Then diasvisita = diasvisita & ", " & chb_viernes.Text + If chb_sabado.Checked Then diasvisita = diasvisita & ", " & chb_sabado.Text + If chb_domingo.Checked Then diasvisita = diasvisita & ", " & chb_domingo.Text + If diasvisita <> "" And diasvisita.SubString2(0,2) = ", " Then diasvisita = diasvisita.SubString(2) + Log(diasvisita) + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String("1", cuenta)) + c = Starter.skmt.ExecQuery2("SELECT ESTATUS2 FROM HIST_DATOS_GENERALES WHERE CREDITO = ?",Array As String(cuenta)) + c.Position = 0 + If c.GetString("ESTATUS2") = 2 Then + + Else + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + End If + c.Close + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET DIAS_ACCION = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String(diasvisita, cuenta)) + If chb_viernes.Checked = True Then + Starter.skmt.ExecNonQuery2("UPDATE CHECADO SET VIERNES = 1 WHERE CREDITO = ?", Array As String(cuenta)) + Else If chb_viernes.Checked = False Then + Starter.skmt.ExecNonQuery2("UPDATE CHECADO SET VIERNES = 0 WHERE CREDITO = ?", Array As String(cuenta)) + End If +End Sub + +Private Sub chb_jueves_CheckedChange(Checked As Boolean) + diasvisita = "" + If chb_lunes.Checked Then diasvisita = diasvisita & ", " & chb_lunes.Text + If chb_martes.Checked Then diasvisita = diasvisita & ", " & chb_martes.Text + If chb_miercoles.Checked Then diasvisita = diasvisita & ", " & chb_miercoles.Text + If chb_jueves.Checked Then diasvisita = diasvisita & ", " & chb_jueves.Text + If chb_viernes.Checked Then diasvisita = diasvisita & ", " & chb_viernes.Text + If chb_sabado.Checked Then diasvisita = diasvisita & ", " & chb_sabado.Text + If chb_domingo.Checked Then diasvisita = diasvisita & ", " & chb_domingo.Text + If diasvisita <> "" And diasvisita.SubString2(0,2) = ", " Then diasvisita = diasvisita.SubString(2) + Log(diasvisita) + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String("1", cuenta)) + c = Starter.skmt.ExecQuery2("SELECT ESTATUS2 FROM HIST_DATOS_GENERALES WHERE CREDITO = ?",Array As String(cuenta)) + c.Position = 0 + If c.GetString("ESTATUS2") = 2 Then + + Else + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + End If + c.Close + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET DIAS_ACCION = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String(diasvisita, cuenta)) + If chb_jueves.Checked = True Then + Starter.skmt.ExecNonQuery2("UPDATE CHECADO SET JUEVES = 1 WHERE CREDITO = ?", Array As String(cuenta)) + Else If chb_jueves.Checked = False Then + Starter.skmt.ExecNonQuery2("UPDATE CHECADO SET JUEVES = 0 WHERE CREDITO = ?", Array As String(cuenta)) + End If +End Sub + +Private Sub chb_miercoles_CheckedChange(Checked As Boolean) + diasvisita = "" + If chb_lunes.Checked Then diasvisita = diasvisita & ", " & chb_lunes.Text + If chb_martes.Checked Then diasvisita = diasvisita & ", " & chb_martes.Text + If chb_miercoles.Checked Then diasvisita = diasvisita & ", " & chb_miercoles.Text + If chb_jueves.Checked Then diasvisita = diasvisita & ", " & chb_jueves.Text + If chb_viernes.Checked Then diasvisita = diasvisita & ", " & chb_viernes.Text + If chb_sabado.Checked Then diasvisita = diasvisita & ", " & chb_sabado.Text + If chb_domingo.Checked Then diasvisita = diasvisita & ", " & chb_domingo.Text + If diasvisita <> "" And diasvisita.SubString2(0,2) = ", " Then diasvisita = diasvisita.SubString(2) + Log(diasvisita) + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String("1", cuenta)) + c = Starter.skmt.ExecQuery2("SELECT ESTATUS2 FROM HIST_DATOS_GENERALES WHERE CREDITO = ?",Array As String(cuenta)) + c.Position = 0 + If c.GetString("ESTATUS2") = 2 Then + + Else + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + End If + c.Close + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET DIAS_ACCION = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String(diasvisita, cuenta)) + If chb_miercoles.Checked = True Then + Starter.skmt.ExecNonQuery2("UPDATE CHECADO SET MIERCOLES = 1 WHERE CREDITO = ?", Array As String(cuenta)) + Else If chb_miercoles.Checked = False Then + Starter.skmt.ExecNonQuery2("UPDATE CHECADO SET MIERCOLES = 0 WHERE CREDITO = ?", Array As String(cuenta)) + End If +End Sub + +Private Sub chb_martes_CheckedChange(Checked As Boolean) + diasvisita = "" + If chb_lunes.Checked Then diasvisita = diasvisita & ", " & chb_lunes.Text + If chb_martes.Checked Then diasvisita = diasvisita & ", " & chb_martes.Text + If chb_miercoles.Checked Then diasvisita = diasvisita & ", " & chb_miercoles.Text + If chb_jueves.Checked Then diasvisita = diasvisita & ", " & chb_jueves.Text + If chb_viernes.Checked Then diasvisita = diasvisita & ", " & chb_viernes.Text + If chb_sabado.Checked Then diasvisita = diasvisita & ", " & chb_sabado.Text + If chb_domingo.Checked Then diasvisita = diasvisita & ", " & chb_domingo.Text + If diasvisita <> "" And diasvisita.SubString2(0,2) = ", " Then diasvisita = diasvisita.SubString(2) + Log(diasvisita) + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String("1", cuenta)) + c = Starter.skmt.ExecQuery2("SELECT ESTATUS2 FROM HIST_DATOS_GENERALES WHERE CREDITO = ?",Array As String(cuenta)) + c.Position = 0 + If c.GetString("ESTATUS2") = 2 Then + + Else + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + End If + c.Close + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET DIAS_ACCION = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String(diasvisita, cuenta)) + If chb_martes.Checked = True Then + Starter.skmt.ExecNonQuery2("UPDATE CHECADO SET MARTES = 1 WHERE CREDITO = ?", Array As String(cuenta)) + Else If chb_martes.Checked = False Then + Starter.skmt.ExecNonQuery2("UPDATE CHECADO SET MARTES = 0 WHERE CREDITO = ?", Array As String(cuenta)) + End If +End Sub + +Private Sub chb_lunes_CheckedChange(Checked As Boolean) + diasvisita = "" + If chb_lunes.Checked Then diasvisita = diasvisita & ", " & chb_lunes.Text + If chb_martes.Checked Then diasvisita = diasvisita & ", " & chb_martes.Text + If chb_miercoles.Checked Then diasvisita = diasvisita & ", " & chb_miercoles.Text + If chb_jueves.Checked Then diasvisita = diasvisita & ", " & chb_jueves.Text + If chb_viernes.Checked Then diasvisita = diasvisita & ", " & chb_viernes.Text + If chb_sabado.Checked Then diasvisita = diasvisita & ", " & chb_sabado.Text + If chb_domingo.Checked Then diasvisita = diasvisita & ", " & chb_domingo.Text + If diasvisita <> "" And diasvisita.SubString2(0,2) = ", " Then diasvisita = diasvisita.SubString(2) + Log(diasvisita) + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String("1", cuenta)) + c = Starter.skmt.ExecQuery2("SELECT ESTATUS2 FROM HIST_DATOS_GENERALES WHERE CREDITO = ?",Array As String(cuenta)) + c.Position = 0 + If c.GetString("ESTATUS2") = 2 Then + + Else + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + End If + c.Close + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET DIAS_ACCION = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String(diasvisita, cuenta)) + If chb_lunes.Checked = True Then + Starter.skmt.ExecNonQuery2("UPDATE CHECADO SET LUNES = 1 WHERE CREDITO = ?", Array As String(cuenta)) + Else If chb_lunes.Checked = False Then + Starter.skmt.ExecNonQuery2("UPDATE CHECADO SET LUNES = 0 WHERE CREDITO = ?", Array As String(cuenta)) + End If +End Sub + +Private Sub et_comentarios_TextChanged (Old As String, New As String) + Private maxSize As Int = 500 + If New.Length > maxSize Then et_comentarios.Text = Old + If et_comentarios.Text.Length = 0 Then + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET COMENTARIOS = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String("null", cuenta)) +' Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) +' Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) +' Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ESTATUS = ? WHERE CREDITO = ?", Array As String("1", cuenta)) + Else + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET COMENTARIOS = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String(et_comentarios.Text, cuenta)) +' Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) +' Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) +' Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ESTATUS = ? WHERE CREDITO = ?", Array As String("1", cuenta)) + End If +End Sub + +Private Sub et_puntosref_TextChanged (Old As String, New As String) + Private maxSize As Int = 500 + If New.Length > maxSize Then et_puntosref.Text = Old + If et_puntosref.Text.Length = 0 Then + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET PUNTOS_REF = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String("null", cuenta)) +' Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) +' Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) +' Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ESTATUS = ? WHERE CREDITO = ?", Array As String("1", cuenta)) + Else + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET PUNTOS_REF = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String(et_puntosref.Text, cuenta)) +' Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) +' Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) +' Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ESTATUS = ? WHERE CREDITO = ?", Array As String("1", cuenta)) + End If +End Sub + +Private Sub cb_numero_SelectedIndexChanged (Index As Int) + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String("1", cuenta)) + c = Starter.skmt.ExecQuery2("SELECT ESTATUS2 FROM HIST_DATOS_GENERALES WHERE CREDITO = ?",Array As String(cuenta)) + c.Position = 0 + If c.GetString("ESTATUS2") = 2 Then + + Else + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + End If + c.Close + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET NIVELES = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String(cb_numero.SelectedItem, cuenta)) +End Sub + +Private Sub cb_caracteristicas_SelectedIndexChanged (Index As Int) + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String("1", cuenta)) + c = Starter.skmt.ExecQuery2("SELECT ESTATUS2 FROM HIST_DATOS_GENERALES WHERE CREDITO = ?",Array As String(cuenta)) + c.Position = 0 + If c.GetString("ESTATUS2") = 2 Then + + Else + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + End If + c.Close + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET CARACTERISTICAS = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String(cb_caracteristicas.SelectedItem, cuenta)) +End Sub + +Private Sub cb_vivienda_SelectedIndexChanged (Index As Int) + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String("1", cuenta)) + c = Starter.skmt.ExecQuery2("SELECT ESTATUS2 FROM HIST_DATOS_GENERALES WHERE CREDITO = ?",Array As String(cuenta)) + c.Position = 0 + If c.GetString("ESTATUS2") = 2 Then + + Else + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + End If + c.Close + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET TIPO_DOMICILIO = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String(cb_vivienda.SelectedItem, cuenta)) +End Sub + +Private Sub cb_socioeconomico_SelectedIndexChanged (Index As Int) + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String("1", cuenta)) + c = Starter.skmt.ExecQuery2("SELECT ESTATUS2 FROM HIST_DATOS_GENERALES WHERE CREDITO = ?",Array As String(cuenta)) + c.Position = 0 + If c.GetString("ESTATUS2") = 2 Then + + Else + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + End If + c.Close + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET NIVEL_SOCIO = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String(cb_socioeconomico.SelectedItem, cuenta)) +End Sub + +'tomar foto + +Private Sub InitializeCamera2 + Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_CAMERA) + Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean) + If Result Then + camEx2.Initialize(p_cam, frontCamera, Me, "Camera1") + frontCamera = camEx2.Front + Log("inicializamos Camara") + Else + ToastMessageShow("No permission!!!", True) + End If + Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_WRITE_EXTERNAL_STORAGE) + Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean) + If Result Then + Log("conpermisos para escritura") + Else + ToastMessageShow("No permission!!!", True) + End If + + Starter.rp.CheckAndRequest(Starter.rp.PERMISSION_READ_EXTERNAL_STORAGE) + Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean) + If Result Then + Log("conpermisos para escritura") + Else + ToastMessageShow("No permission!!!", True) + End If +End Sub + +Sub Camera1_Ready (Success As Boolean) + Log("Camara ready") + If Success Then + camEx2.SetJpegQuality(90) + camEx2.SetContinuousAutoFocus + camEx2.CommitParameters + camEx2.StartPreview + Log(camEx2.GetPreviewSize) + Else + ToastMessageShow("Cannot open camera.", True) + Log("Cannot open camera") + End If +End Sub + +Sub Camera1_PictureTaken (Data()As Byte) + Log("tome foto") + Dim filename As String = fototomada + Dim Dirp As String = File.DirRootExternal + Dim Dir As String + Dim Dir2 As String + Try + File.MakeDir(Dirp,"/Arestrategicas") + Dir = "/Arestrategicas" + Log("creado en promotoria " & Dirp & Dir) + Catch + Dir = "" + Log("creado en raiz") + End Try + + Try + File.MakeDir(Dirp & Dir,"/reduccion") + Dir2 = "/reduccion" + Log("creado en promotoria " & Dirp & Dir & Dir2) + Catch + Dir = "" + Log("creado en raiz") + End Try + + camEx2.SavePictureToFile(Data, Dirp&Dir, filename) + camEx2.StartPreview 'restart preview + ToastMessageShow("Picture saved." & CRLF & "File size: " & File.Size(Dir, filename) & Dir &"," & filename, True) + Log("Picture saved." & CRLF & "File size: " & File.Size(Dir, filename) & Dir &"," & filename) + p_camara.Visible = False + + + If nombrefoto <> 0 Then + Dim img As B4XBitmap = xui.LoadBitmapResize(File.DirRootExternal & Dir, filename, 300, 450, True) + Dim out As OutputStream = File.OpenOutput(File.DirRootExternal & Dir & Dir2, filename, True) + img.WriteToStream(out, 100, "PNG") + out.Close + ImageView1.Bitmap = LoadBitmap(File.DirRootExternal & Dir & Dir2,nombrefoto) + End If + + If nombrefoto1 <> 0 Then + Dim img As B4XBitmap = xui.LoadBitmapResize(File.DirRootExternal & Dir, filename, 300, 450, True) + Dim out As OutputStream = File.OpenOutput(File.DirRootExternal & Dir & Dir2, filename, False) + img.WriteToStream(out, 100, "PNG") + out.Close + ImageView2.Bitmap = LoadBitmap(File.DirRootExternal & Dir& Dir2,nombrefoto1) + End If + + If nombrefoto2 <> 0 Then + Dim img As B4XBitmap = xui.LoadBitmapResize(File.DirRootExternal & Dir, filename, 300, 450, True) + Dim out As OutputStream = File.OpenOutput(File.DirRootExternal & Dir & Dir2, filename, False) + img.WriteToStream(out, 100, "PNG") + out.Close + ImageView3.Bitmap = LoadBitmap(File.DirRootExternal & Dir& Dir2,nombrefoto2) + End If + + If nombrefoto3 <> 0 Then + Dim img As B4XBitmap = xui.LoadBitmapResize(File.DirRootExternal & Dir, filename, 300, 450, True) + Dim out As OutputStream = File.OpenOutput(File.DirRootExternal & Dir & Dir2, filename, False) + img.WriteToStream(out, 100, "PNG") + out.Close + ImageView4.Bitmap = LoadBitmap(File.DirRootExternal & Dir & Dir2,nombrefoto3) + End If + + StopCamera2 + +End Sub + +Private Sub p_camara_Click + +End Sub + +Private Sub b_foto_Click + camEx2.TakePicture + p_camara.Visible = False +' StopCamera2 +End Sub + +Private Sub StopCamera2 +' Capturing = False + If camEx2.IsInitialized Then + camEx2.Release + End If +End Sub + +Private Sub ImageView1_Click +' foto = 2 + DateTime.DateFormat="ddMMyyyyHHmmss" + InitializeCamera2 + p_camara.Visible = True + nombrefoto = DateTime.Now & "_FOTO1.jpg" + teclado.HideKeyboard + fototomada = nombrefoto + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String("1", cuenta)) + c = Starter.skmt.ExecQuery2("SELECT ESTATUS2 FROM HIST_DATOS_GENERALES WHERE CREDITO = ?",Array As String(cuenta)) + c.Position = 0 + If c.GetString("ESTATUS2") = 2 Then + + Else + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + End If + c.Close + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET FOTOUNO = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String(nombrefoto, cuenta)) +End Sub + +Private Sub ImageView2_Click +' foto = 2 + DateTime.DateFormat="ddMMyyyyHHmmss" + InitializeCamera2 + p_camara.Visible = True + nombrefoto1 = DateTime.Now & "_FOTO2.jpg" + teclado.HideKeyboard + fototomada = nombrefoto1 + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String("1", cuenta)) + c = Starter.skmt.ExecQuery2("SELECT ESTATUS2 FROM HIST_DATOS_GENERALES WHERE CREDITO = ?",Array As String(cuenta)) + c.Position = 0 + If c.GetString("ESTATUS2") = 2 Then + + Else + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + End If + c.Close + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET FOTODOS = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String(nombrefoto1, cuenta)) +End Sub + +Private Sub ImageView3_Click +' foto = 2 + DateTime.DateFormat="ddMMyyyyHHmmss" + InitializeCamera2 + p_camara.Visible = True + nombrefoto2 = DateTime.Now & "_FOTO3.jpg" + teclado.HideKeyboard + fototomada = nombrefoto2 + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String("1", cuenta)) + c = Starter.skmt.ExecQuery2("SELECT ESTATUS2 FROM HIST_DATOS_GENERALES WHERE CREDITO = ?",Array As String(cuenta)) + c.Position = 0 + If c.GetString("ESTATUS2") = 2 Then + + Else + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + End If + c.Close + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET FOTOTRES = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String(nombrefoto2, cuenta)) +End Sub + +Private Sub ImageView4_Click +' foto = 2 + DateTime.DateFormat="ddMMyyyyHHmmss" + InitializeCamera2 + p_camara.Visible = True + nombrefoto3 = DateTime.Now & "_FOTO4.jpg" + teclado.HideKeyboard + fototomada = nombrefoto3 + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String("1", cuenta)) + c = Starter.skmt.ExecQuery2("SELECT ESTATUS2 FROM HIST_DATOS_GENERALES WHERE CREDITO = ?",Array As String(cuenta)) + c.Position = 0 + If c.GetString("ESTATUS2") = 2 Then + + Else + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?", Array As String("Trabajando", "1", cuenta)) + End If + c.Close + c.Close + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET FOTOCUATRO = ? WHERE CREDITO = ? AND ESTATUS = 1", Array As String(nombrefoto3, cuenta)) +End Sub + +Private Sub b_guardar_Click + diasvisita = "" + If chb_lunes.Checked Then diasvisita = diasvisita & ", " & chb_lunes.Text + If chb_martes.Checked Then diasvisita = diasvisita & ", " & chb_martes.Text + If chb_miercoles.Checked Then diasvisita = diasvisita & ", " & chb_miercoles.Text + If chb_jueves.Checked Then diasvisita = diasvisita & ", " & chb_jueves.Text + If chb_viernes.Checked Then diasvisita = diasvisita & ", " & chb_viernes.Text + If chb_sabado.Checked Then diasvisita = diasvisita & ", " & chb_sabado.Text + If chb_domingo.Checked Then diasvisita = diasvisita & ", " & chb_domingo.Text + If diasvisita <> "" And diasvisita.SubString2(0,2) = ", " Then diasvisita = diasvisita.SubString(2) + Log(diasvisita) + + If cb_fuente.SelectedItem <> "Selecciona una opción" Then + If cb_parentesco.SelectedItem <> "Selecciona una opción" Then + If cb_accion.SelectedItem <> "Selecciona una opción" Then + If cb_resultado.SelectedItem <> "Selecciona una opción" Then + If cb_socioeconomico.SelectedItem <> "Selecciona una opción" Then + If cb_vivienda.SelectedItem <> "Selecciona una opción" Then + If cb_caracteristicas.SelectedItem <> "Selecciona una opción" Then + If cb_numero.SelectedItem <> "Selecciona una opción" Then + If et_comentarios.Text.Length > 0 Then + If et_puntosref.Text.Length > 0 Then + LogColor(et_puntosref.Text.Length,Colors.Green) + If i_datosparentesco.Visible Then + If et_parentesco.Text <> "" Then + If i_resultado.Visible Then + If et_monto.Text <> "" And b_fecharesultado.Text <> "Fecha de pago" Then + If nombrefoto <> "0" And nombrefoto1 <> "0" And nombrefoto2 <> "0" And nombrefoto3 <> "0" Then + h = Starter.skmt.ExecQuery2("SELECT CARTERA, AGENCIA FROM HIST_FINANCIEROS WHERE CREDITO = ? ", Array As String(cuenta)) + h.Position = 0 + f = Starter.skmt.ExecQuery2("SELECT CO_ACCION FROM CAT_ACCION WHERE CO_ACDESCRIPCION = ?", Array As String(cb_accion.SelectedItem)) + f.Position = 0 + If cb_accion.SelectedItem = "Carteo" Then + j = Starter.skmt.ExecQuery2("SELECT CO_RESULTADO FROM CAT_RESULTADO_CA WHERE CO_RDESCRIPCION = ?",Array As String(cb_resultado.SelectedItem)) + j.Position = 0 + Else if cb_accion.SelectedItem = "Se envia Blaster" Then + j = Starter.skmt.ExecQuery2("SELECT CO_RESULTADO FROM CAT_RESULTADO_BR WHERE CO_RDESCRIPCION = ?",Array As String(cb_resultado.SelectedItem)) + j.Position = 0 + Else if cb_accion.SelectedItem = "Se envia email" Then + j = Starter.skmt.ExecQuery2("SELECT CO_RESULTADO FROM CAT_RESULTADO_MA WHERE CO_RDESCRIPCION = ?",Array As String(cb_resultado.SelectedItem)) + j.Position = 0 + Else if cb_accion.SelectedItem = "Visita En Domicilio" Then + j = Starter.skmt.ExecQuery2("SELECT CO_RESULTADO FROM CAT_RESULTADO_VC WHERE CO_RDESCRIPCION = ?",Array As String(cb_resultado.SelectedItem)) + j.Position = 0 + End If + + DateTime.DateFormat = "dd/MM/yyyy" + Dim fecha_captura As String = DateTime.Date(DateTime.Now) + Log(fecha_captura) + + n = Starter.skmt.ExecQuery2("SELECT COUNT(*) AS REGISTRADO FROM HIST_VISITA WHERE CREDITO = ?",Array As String(cuenta)) + n.Position = 0 + If n.GetString("REGISTRADO") = 0 Then + Starter.skmt.ExecNonQuery2("INSERT INTO HIST_VISITA(CREDITO, PRODUCTO, VISITADOR, RESULTADO, CODIGO_RES, PARENTESCO, COMENTARIOS, FECHA, LONGITUD, LATUTUD, FECHACAPTURA, AGENCIA, FECHA_PROMESA, MONTO_PROMESA, TIPO_DOMICILIO, NIVEL_SOCIO, CARACTERISTICAS, NIVELES, FOTOUNO, FOTODOS, FOTOTRES, FOTOCUATRO, NOMBRE_ATIENDE, CODIGO_ACCION, ACCION, DIAS_ACCION, PUNTOS_REF) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As String(cuenta, h.GetString("CARTERA"), B4XPages.MainPage.user, cb_resultado.SelectedItem, j.GetString("CO_RESULTADO"),cb_parentesco.SelectedItem, et_comentarios.Text, fecha_captura, Starter.latitud, Starter.longitud, fecha_captura, h.GetString("AGENCIA"), b_fecharesultado.Text, et_monto.Text, cb_vivienda.SelectedItem, cb_socioeconomico.SelectedItem, cb_caracteristicas.SelectedItem, cb_numero.SelectedItem, nombrefoto, nombrefoto1, nombrefoto2, nombrefoto3, et_parentesco.Text, f.GetString("CO_ACCION"), cb_accion.SelectedItem, diasvisita, et_puntosref.Text)) + Starter.skmt.ExecNonQuery2("delete from CHECADO WHERE CREDITO = ?",Array As String(cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?",Array As Object("Terminada","2",cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?",Array As Object("Terminada","2",cuenta)) + Log("Insert") + Else If n.GetString("REGISTRADO") > 0 Then + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET PRODUCTO = ?, VISITADOR = ?, RESULTADO = ?, CODIGO_RES = ?, PARENTESCO = ?, COMENTARIOS = ?, FECHA = ?, LONGITUD = ?, LATUTUD = ?, FECHACAPTURA = ?, AGENCIA = ?, FECHA_PROMESA = ?, MONTO_PROMESA = ?, TIPO_DOMICILIO = ?, NIVEL_SOCIO = ?, CARACTERISTICAS = ?, NIVELES = ?, FOTOUNO = ?, FOTODOS = ?, FOTOTRES = ?, FOTOCUATRO = ?, NOMBRE_ATIENDE = ?, CODIGO_ACCION = ?, ACCION = ?, DIAS_ACCION = ?, PUNTOS_REF = ?, ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String(h.GetString("CARTERA"), B4XPages.MainPage.user, cb_resultado.SelectedItem, j.GetString("CO_RESULTADO"),cb_parentesco.SelectedItem, et_comentarios.Text, fecha_captura, Starter.latitud, Starter.longitud, fecha_captura, h.GetString("AGENCIA"), b_fecharesultado.Text, et_monto.Text, cb_vivienda.SelectedItem, cb_socioeconomico.SelectedItem, cb_caracteristicas.SelectedItem, cb_numero.SelectedItem, nombrefoto, nombrefoto1, nombrefoto2, nombrefoto3, et_parentesco.Text, f.GetString("CO_ACCION"), cb_accion.SelectedItem, diasvisita, et_puntosref.Text,"2", cuenta)) + Starter.skmt.ExecNonQuery2("delete from CHECADO WHERE CREDITO = ?",Array As String(cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?",Array As Object("Terminada","2",cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?",Array As Object("Terminada","2",cuenta)) + Log("update") + End If + n.Close + h.Close + f.Close + j.Close + B4XPages.ShowPage("principal") + + ImageView1.Bitmap = LoadBitmap(File.DirAssets,"icon_22-[convertido].png") + ImageView2.Bitmap = LoadBitmap(File.DirAssets,"icon_22-[convertido].png") + ImageView3.Bitmap = LoadBitmap(File.DirAssets,"icon_22-[convertido].png") + ImageView4.Bitmap = LoadBitmap(File.DirAssets,"icon_22-[convertido].png") + + Else + MsgboxAsync("Por favor captura todas las fotos","Atención") + End If + + Else + MsgboxAsync("Captura todos los datos de la promesa de pago","Atención") + End If + Else + If nombrefoto <> "0" And nombrefoto1 <> "0" And nombrefoto2 <> "0" And nombrefoto3 <> "0" Then + h = Starter.skmt.ExecQuery2("SELECT CARTERA, AGENCIA FROM HIST_FINANCIEROS WHERE CREDITO = ? ", Array As String(cuenta)) + h.Position = 0 + f = Starter.skmt.ExecQuery2("SELECT CO_ACCION FROM CAT_ACCION WHERE CO_ACDESCRIPCION = ?", Array As String(cb_accion.SelectedItem)) + f.Position = 0 + If cb_accion.SelectedItem = "Carteo" Then + j = Starter.skmt.ExecQuery2("SELECT CO_RESULTADO FROM CAT_RESULTADO_CA WHERE CO_RDESCRIPCION = ?",Array As String(cb_resultado.SelectedItem)) + j.Position = 0 + Else if cb_accion.SelectedItem = "Se envia Blaster" Then + j = Starter.skmt.ExecQuery2("SELECT CO_RESULTADO FROM CAT_RESULTADO_BR WHERE CO_RDESCRIPCION = ?",Array As String(cb_resultado.SelectedItem)) + j.Position = 0 + Else if cb_accion.SelectedItem = "Se envia email" Then + j = Starter.skmt.ExecQuery2("SELECT CO_RESULTADO FROM CAT_RESULTADO_MA WHERE CO_RDESCRIPCION = ?",Array As String(cb_resultado.SelectedItem)) + j.Position = 0 + Else if cb_accion.SelectedItem = "Visita En Domicilio" Then + j = Starter.skmt.ExecQuery2("SELECT CO_RESULTADO FROM CAT_RESULTADO_VC WHERE CO_RDESCRIPCION = ?",Array As String(cb_resultado.SelectedItem)) + j.Position = 0 + End If + DateTime.DateFormat = "dd/MM/yyyy" + Dim fecha_captura As String = DateTime.Date(DateTime.Now) + Log(fecha_captura) + + n = Starter.skmt.ExecQuery2("SELECT COUNT(*) AS REGISTRADO FROM HIST_VISITA WHERE CREDITO = ?",Array As String(cuenta)) + n.Position = 0 + If n.GetString("REGISTRADO") = 0 Then + Starter.skmt.ExecNonQuery2("INSERT INTO HIST_VISITA(CREDITO, PRODUCTO, VISITADOR, RESULTADO, CODIGO_RES, PARENTESCO, COMENTARIOS, FECHA, LONGITUD, LATUTUD, FECHACAPTURA, AGENCIA, TIPO_DOMICILIO, NIVEL_SOCIO, CARACTERISTICAS, NIVELES, FOTOUNO, FOTODOS, FOTOTRES, FOTOCUATRO, NOMBRE_ATIENDE, CODIGO_ACCION, ACCION, DIAS_ACCION, PUNTOS_REF) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As String(cuenta, h.GetString("CARTERA"), B4XPages.MainPage.user, cb_resultado.SelectedItem, j.GetString("CO_RESULTADO"),cb_parentesco.SelectedItem, et_comentarios.Text, fecha_captura, Starter.latitud, Starter.longitud, fecha_captura, h.GetString("AGENCIA"), cb_vivienda.SelectedItem, cb_socioeconomico.SelectedItem, cb_caracteristicas.SelectedItem, cb_numero.SelectedItem, nombrefoto, nombrefoto1, nombrefoto2, nombrefoto3, et_parentesco.Text, f.GetString("CO_ACCION"), cb_accion.SelectedItem, diasvisita, et_puntosref.Text)) + Starter.skmt.ExecNonQuery2("delete from CHECADO WHERE CREDITO = ?",Array As String(cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?",Array As Object("Terminada","2",cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?",Array As Object("Terminada","2",cuenta)) + Else + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET PRODUCTO = ?, VISITADOR = ?, RESULTADO = ?, CODIGO_RES = ?, PARENTESCO = ?, COMENTARIOS = ?, FECHA = ?, LONGITUD = ?, LATUTUD = ?, FECHACAPTURA = ?, AGENCIA = ?, TIPO_DOMICILIO = ?, NIVEL_SOCIO = ?, CARACTERISTICAS = ?, NIVELES = ?, FOTOUNO = ?, FOTODOS = ?, FOTOTRES = ?, FOTOCUATRO = ?, NOMBRE_ATIENDE = ?, CODIGO_ACCION = ?, ACCION = ?, DIAS_ACCION = ?, PUNTOS_REF = ?, ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String(h.GetString("CARTERA"), B4XPages.MainPage.user, cb_resultado.SelectedItem, j.GetString("CO_RESULTADO"),cb_parentesco.SelectedItem, et_comentarios.Text, fecha_captura, Starter.latitud, Starter.longitud, fecha_captura, h.GetString("AGENCIA"), cb_vivienda.SelectedItem, cb_socioeconomico.SelectedItem, cb_caracteristicas.SelectedItem, cb_numero.SelectedItem, nombrefoto, nombrefoto1, nombrefoto2, nombrefoto3, et_parentesco.Text, f.GetString("CO_ACCION"), cb_accion.SelectedItem, diasvisita, et_puntosref.Text,"2",cuenta)) + Starter.skmt.ExecNonQuery2("delete from CHECADO WHERE CREDITO = ?",Array As String(cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?",Array As Object("Terminada","2",cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?",Array As Object("Terminada","2",cuenta)) + Log("update2") + End If + n.Close + h.Close + f.Close + j.Close + + B4XPages.ShowPage("principal") + + ImageView1.Bitmap = LoadBitmap(File.DirAssets,"icon_22-[convertido].png") + ImageView2.Bitmap = LoadBitmap(File.DirAssets,"icon_22-[convertido].png") + ImageView3.Bitmap = LoadBitmap(File.DirAssets,"icon_22-[convertido].png") + ImageView4.Bitmap = LoadBitmap(File.DirAssets,"icon_22-[convertido].png") + + Else + MsgboxAsync("Por favor captura todas las fotos","Atención") + End If + End If + Else + MsgboxAsync("Captura el nombre del tipo de contacto.","Atención") + End If + Else + If i_resultado.Visible Then + If et_monto.Text <> "" And b_fecharesultado.Text <> "Fecha de pago" Then + If et_comentarios.Text <> "" Then + If et_puntosref.Text <> "" Then + If nombrefoto <> "0" And nombrefoto1 <> "0" And nombrefoto2 <> "0" And nombrefoto3 <> "0" Then + h = Starter.skmt.ExecQuery2("SELECT CARTERA, AGENCIA FROM HIST_FINANCIEROS WHERE CREDITO = ? ", Array As String(cuenta)) + h.Position = 0 + f = Starter.skmt.ExecQuery2("SELECT CO_ACCION FROM CAT_ACCION WHERE CO_ACDESCRIPCION = ?", Array As String(cb_accion.SelectedItem)) + f.Position = 0 + If cb_accion.SelectedItem = "Carteo" Then + j = Starter.skmt.ExecQuery2("SELECT CO_RESULTADO FROM CAT_RESULTADO_CA WHERE CO_RDESCRIPCION = ?",Array As String(cb_resultado.SelectedItem)) + j.Position = 0 + Else if cb_accion.SelectedItem = "Se envia Blaster" Then + j = Starter.skmt.ExecQuery2("SELECT CO_RESULTADO FROM CAT_RESULTADO_BR WHERE CO_RDESCRIPCION = ?",Array As String(cb_resultado.SelectedItem)) + j.Position = 0 + Else if cb_accion.SelectedItem = "Se envia email" Then + j = Starter.skmt.ExecQuery2("SELECT CO_RESULTADO FROM CAT_RESULTADO_MA WHERE CO_RDESCRIPCION = ?",Array As String(cb_resultado.SelectedItem)) + j.Position = 0 + Else if cb_accion.SelectedItem = "Visita En Domicilio" Then + j = Starter.skmt.ExecQuery2("SELECT CO_RESULTADO FROM CAT_RESULTADO_VC WHERE CO_RDESCRIPCION = ?",Array As String(cb_resultado.SelectedItem)) + j.Position = 0 + End If + DateTime.DateFormat = "dd/MM/yyyy" + Dim fecha_captura As String = DateTime.Date(DateTime.Now) + Log(fecha_captura) + + + n = Starter.skmt.ExecQuery2("SELECT COUNT(*) AS REGISTRADO FROM HIST_VISITA WHERE CREDITO = ?",Array As String(cuenta)) + n.Position = 0 + If n.GetString("REGISTRADO") = 0 Then + Starter.skmt.ExecNonQuery2("INSERT INTO HIST_VISITA(CREDITO, PRODUCTO, VISITADOR, RESULTADO, CODIGO_RES, PARENTESCO, COMENTARIOS, FECHA, LONGITUD, LATUTUD, FECHACAPTURA, AGENCIA, FECHA_PROMESA, MONTO_PROMESA, TIPO_DOMICILIO, NIVEL_SOCIO, CARACTERISTICAS, NIVELES, FOTOUNO, FOTODOS, FOTOTRES, FOTOCUATRO, NOMBRE_ATIENDE, CODIGO_ACCION, ACCION, DIAS_ACCION, PUNTOS_REF) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As String(cuenta, h.GetString("CARTERA"), B4XPages.MainPage.user, cb_resultado.SelectedItem, j.GetString("CO_RESULTADO"),cb_parentesco.SelectedItem, et_comentarios.Text, fecha_captura, Starter.latitud, Starter.longitud, fecha_captura, h.GetString("AGENCIA"), b_fecharesultado.Text, et_monto.Text, cb_vivienda.SelectedItem, cb_socioeconomico.SelectedItem, cb_caracteristicas.SelectedItem, cb_numero.SelectedItem, nombrefoto, nombrefoto1, nombrefoto2, nombrefoto3, l_nombreg.Text, f.GetString("CO_ACCION"), cb_accion.SelectedItem, diasvisita, et_puntosref.Text)) + Starter.skmt.ExecNonQuery2("delete from CHECADO WHERE CREDITO = ?",Array As String(cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?",Array As Object("Terminada","2",cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?",Array As Object("Terminada","2",cuenta)) + Else + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET PRODUCTO = ?, VISITADOR = ?, RESULTADO = ?, CODIGO_RES = ?, PARENTESCO = ?, COMENTARIOS = ?, FECHA = ?, LONGITUD = ?, LATUTUD = ?, FECHACAPTURA = ?, AGENCIA = ?, FECHA_PROMESA = ?, MONTO_PROMESA = ?, TIPO_DOMICILIO = ?, NIVEL_SOCIO = ?, CARACTERISTICAS = ?, NIVELES = ?, FOTOUNO = ?, FOTODOS = ?, FOTOTRES = ?, FOTOCUATRO = ?, NOMBRE_ATIENDE = ?, CODIGO_ACCION = ?, ACCION = ?, DIAS_ACCION = ?, PUNTOS_REF = ?, ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String(h.GetString("CARTERA"), B4XPages.MainPage.user, cb_resultado.SelectedItem, j.GetString("CO_RESULTADO"),cb_parentesco.SelectedItem, et_comentarios.Text, fecha_captura, Starter.latitud, Starter.longitud, fecha_captura, h.GetString("AGENCIA"), b_fecharesultado.Text, et_monto.Text, cb_vivienda.SelectedItem, cb_socioeconomico.SelectedItem, cb_caracteristicas.SelectedItem, cb_numero.SelectedItem, nombrefoto, nombrefoto1, nombrefoto2, nombrefoto3, l_nombreg.Text, f.GetString("CO_ACCION"), cb_accion.SelectedItem, diasvisita, et_puntosref.Text,"2", cuenta)) + Starter.skmt.ExecNonQuery2("delete from CHECADO WHERE CREDITO = ?",Array As String(cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?",Array As Object("Terminada","2",cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?",Array As Object("Terminada","2",cuenta)) + Log("update3") + End If + n.Close + h.Close + f.Close + j.Close + + B4XPages.ShowPage("principal") + + ImageView1.Bitmap = LoadBitmap(File.DirAssets,"icon_22-[convertido].png") + ImageView2.Bitmap = LoadBitmap(File.DirAssets,"icon_22-[convertido].png") + ImageView3.Bitmap = LoadBitmap(File.DirAssets,"icon_22-[convertido].png") + ImageView4.Bitmap = LoadBitmap(File.DirAssets,"icon_22-[convertido].png") + + Else + MsgboxAsync("Por favor captura todas las fotos","Atención") + End If + Else + MsgboxAsync("Falta capturar los puntos de referencia","Atención") + End If + Else + MsgboxAsync("Falta capturar comentarios","Atención") + End If + Else + MsgboxAsync("Captura todos los datos de la promesa de pago","Atención") + End If + Else + If nombrefoto <> "0" And nombrefoto1 <> "0" And nombrefoto2 <> "0" And nombrefoto3 <> "0" Then + h = Starter.skmt.ExecQuery2("SELECT CARTERA, AGENCIA FROM HIST_FINANCIEROS WHERE CREDITO = ? ", Array As String(cuenta)) + h.Position = 0 + f = Starter.skmt.ExecQuery2("SELECT CO_ACCION FROM CAT_ACCION WHERE CO_ACDESCRIPCION = ?", Array As String(cb_accion.SelectedItem)) + f.Position = 0 + If cb_accion.SelectedItem = "Carteo" Then + j = Starter.skmt.ExecQuery2("SELECT CO_RESULTADO FROM CAT_RESULTADO_CA WHERE CO_RDESCRIPCION = ?",Array As String(cb_resultado.SelectedItem)) + j.Position = 0 + Else if cb_accion.SelectedItem = "Se envia Blaster" Then + j = Starter.skmt.ExecQuery2("SELECT CO_RESULTADO FROM CAT_RESULTADO_BR WHERE CO_RDESCRIPCION = ?",Array As String(cb_resultado.SelectedItem)) + j.Position = 0 + Else if cb_accion.SelectedItem = "Se envia email" Then + j = Starter.skmt.ExecQuery2("SELECT CO_RESULTADO FROM CAT_RESULTADO_MA WHERE CO_RDESCRIPCION = ?",Array As String(cb_resultado.SelectedItem)) + j.Position = 0 + Else if cb_accion.SelectedItem = "Visita En Domicilio" Then + j = Starter.skmt.ExecQuery2("SELECT CO_RESULTADO FROM CAT_RESULTADO_VC WHERE CO_RDESCRIPCION = ?",Array As String(cb_resultado.SelectedItem)) + j.Position = 0 + End If + DateTime.DateFormat = "dd/MM/yyyy" + Dim fecha_captura As String = DateTime.Date(DateTime.Now) + Log(fecha_captura) + + n = Starter.skmt.ExecQuery2("SELECT COUNT(*) AS REGISTRADO FROM HIST_VISITA WHERE CREDITO = ?",Array As String(cuenta)) + n.Position = 0 + If n.GetString("REGISTRADO") = 0 Then + Starter.skmt.ExecNonQuery2("INSERT INTO HIST_VISITA(CREDITO, PRODUCTO, VISITADOR, RESULTADO, CODIGO_RES, PARENTESCO, COMENTARIOS, FECHA, LONGITUD, LATUTUD, FECHACAPTURA, AGENCIA, TIPO_DOMICILIO, NIVEL_SOCIO, CARACTERISTICAS, NIVELES, FOTOUNO, FOTODOS, FOTOTRES, FOTOCUATRO, NOMBRE_ATIENDE, CODIGO_ACCION, ACCION, DIAS_ACCION, PUNTOS_REF) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)", Array As String(cuenta, h.GetString("CARTERA"), B4XPages.MainPage.user, cb_resultado.SelectedItem, j.GetString("CO_RESULTADO"),cb_parentesco.SelectedItem, et_comentarios.Text, fecha_captura, Starter.latitud, Starter.longitud, fecha_captura, h.GetString("AGENCIA"), cb_vivienda.SelectedItem, cb_socioeconomico.SelectedItem, cb_caracteristicas.SelectedItem, cb_numero.SelectedItem, nombrefoto, nombrefoto1, nombrefoto2, nombrefoto3, l_nombreg.Text, f.GetString("CO_ACCION"), cb_accion.SelectedItem, diasvisita, et_puntosref.Text)) + Starter.skmt.ExecNonQuery2("delete from CHECADO WHERE CREDITO = ?",Array As String(cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?",Array As Object("Terminada","2",cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?",Array As Object("Terminada","2",cuenta)) + Else + Starter.skmt.ExecNonQuery2("UPDATE HIST_VISITA SET PRODUCTO = ?, VISITADOR = ?, RESULTADO = ?, CODIGO_RES = ?, PARENTESCO = ?, COMENTARIOS = ?, FECHA = ?, LONGITUD = ?, LATUTUD = ?, FECHACAPTURA = ?, AGENCIA = ?, TIPO_DOMICILIO = ?, NIVEL_SOCIO = ?, CARACTERISTICAS = ?, NIVELES = ?, FOTOUNO = ?, FOTODOS = ?, FOTOTRES = ?, FOTOCUATRO = ?, NOMBRE_ATIENDE = ?, CODIGO_ACCION = ?, ACCION = ?, DIAS_ACCION = ?, PUNTOS_REF = ?, ESTATUS = ? WHERE CREDITO = ? AND ESTATUS <> 2", Array As String(h.GetString("CARTERA"), B4XPages.MainPage.user, cb_resultado.SelectedItem, j.GetString("CO_RESULTADO"),cb_parentesco.SelectedItem, et_comentarios.Text, fecha_captura, Starter.latitud, Starter.longitud, fecha_captura, h.GetString("AGENCIA"), cb_vivienda.SelectedItem, cb_socioeconomico.SelectedItem, cb_caracteristicas.SelectedItem, cb_numero.SelectedItem, nombrefoto, nombrefoto1, nombrefoto2, nombrefoto3, l_nombreg.Text, f.GetString("CO_ACCION"), cb_accion.SelectedItem, diasvisita, et_puntosref.Text,"2", cuenta)) + Starter.skmt.ExecNonQuery2("delete from CHECADO WHERE CREDITO = ?",Array As String(cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_DATOS_GENERALES SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?",Array As Object("Terminada","2",cuenta)) + Starter.skmt.ExecNonQuery2("UPDATE HIST_FINANCIEROS SET ESTATUS = ?, ESTATUS2 = ? WHERE CREDITO = ?",Array As Object("Terminada","2",cuenta)) + Log("update4") + End If + n.Close + h.Close + f.Close + j.Close + + B4XPages.ShowPage("principal") + + ImageView1.Bitmap = LoadBitmap(File.DirAssets,"icon_22-[convertido].png") + ImageView2.Bitmap = LoadBitmap(File.DirAssets,"icon_22-[convertido].png") + ImageView3.Bitmap = LoadBitmap(File.DirAssets,"icon_22-[convertido].png") + ImageView4.Bitmap = LoadBitmap(File.DirAssets,"icon_22-[convertido].png") + Else + MsgboxAsync("Por favor captura todas las fotos","Atención") + End If + End If + End If + Else + MsgboxAsync("Falta capturar los puntos de referencia","Atención") + LogColor("estoy aqui",Colors.Green) + End If + Else + MsgboxAsync("Falta capturar comentarios","Atención") + End If + Else + MsgboxAsync("Selecciona una opción de # de niveles","Atención") + End If + Else + MsgboxAsync("Selecciona una opción de Caracteristicas","Atención") + End If + Else + MsgboxAsync("Selecciona una opción de Tipo de vivienda","Atención") + End If + Else + MsgboxAsync("Selecciona una opción de Nivel socioeconomico","Atención") + End If + Else + MsgboxAsync("Selecciona una opción de Resultado","Atención") + End If + Else + MsgboxAsync("Selecciona una opción de Acción","Atención") + End If + Else + MsgboxAsync("Selecciona una opción de Parentesco","Atención") + End If + Else + MsgboxAsync("Selecciona una opción de Fuente","Atención") + End If +End Sub + +Private Sub B4XPage_CloseRequest As ResumableSub + + If p_camara.Visible Then + p_camara.Visible = False + Else + + p_w1.Visible = False + p_w2.Visible = False + p_w3.Visible = False + B4XPages.ShowPage("principal") + End If + +' Return True + Return False +End Sub + +Sub GPS_LocationChanged (Location1 As Location) + +' ubicacion.Initialize +' ubicacion.Latitude = mlat +' ubicacion.Longitude = mlon +' If logger Then Log($"${Location1.Latitude}, ${Location1.Longitude}, ${Location1.Accuracy}"$) +' laDist = Location1.DistanceTo(ubicacion) +' l_ubicacion.Text = $"Dist: $1.0{laDist} mts."$ +' Log(Location1.Latitude) +' Log(Location1.Longitude) +' l1.Initialize2(Starter.latitud,Starter.longitud) +' l2.Initialize2(mlat, mlon) +' distance = l1.DistanceTo(l2) ' resultado en metros +'' Log (distance) +'' Log(mlat & " , " & mlon) +'' Log(Starter.latitud & " , " & Starter.longitud) +' l_ubicacion.Text = $"Dist: $1.0{distance} mts."$ +' If laDist > 50 Then l_ubicacion.TextColor = Colors.Red Else l_ubicacion.TextColor = Colors.Blue + Starter.longitud = Location1.Longitude + Starter.latitud = Location1.Latitude +End Sub \ No newline at end of file diff --git a/B4J/AREstrategias.b4j b/B4J/AREstrategias.b4j new file mode 100644 index 0000000..cdedb76 --- /dev/null +++ b/B4J/AREstrategias.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/B4J/Files/MainPage.bjl b/B4J/Files/MainPage.bjl new file mode 100644 index 0000000000000000000000000000000000000000..405b3b756ed703481ce30bdf2802b885d8384a70 GIT binary patch literal 1959 zcma)6&yy2H6z;f5WIzQ)5ELZ>u0eKV5by{7ShGo1R(7`_WChC$ote&N+{tvRr?UZ1 zSXO!QU(h?{*+0Pp;+98GUZng3JX+;p{l1=^0aq-Ys`uvW?$_^q{k@(k2_b%g?S_?M zkHY51*6R556M(f8Uo~>Fj(19Ob!@DaTE6kx8}~k4s;E`(3AgrhZ%WzPb0?_g{BEY1YJM^T>ynk!}G->VDF_IZ}s!T0NPB zeyydFa4lA*wydn=aY)A^rh@l>9gDPOG#bb~06lF2WtuwD=Kk<%7}&vMSoO6*m5vO; zal-QjMowfeQq#aYskFA&YA#tedK{5|n_zXH<(SWbi|Xdnz_a}uvpwmruNgg#gV{VL z7#nFr9kanIX7#`$+)%Mykwe8ilwd)dA+fq)jcg_fpzBgUjMS6B0~rUA>Oi^ARGXU_ z{HffK)Ry|iNX9plQ44KCMCG*?S1zI#WlgpKjA5ZkteNCLE}6ZD6?(Ed7BtE=LL(cz!($5?;Uhvv50==OsvQ_djnw zrIHaY%MgrNs@Y!YwmUqZuVV|bmQ_3^&s6_JvGn$bM9O_cJ?!Q!VEzLW1}r&$c9FyF zPl>yFItrMSyV)crZM7E~t4rN%`U?6$LZJmepM)6Pn5aY#6|c=uS_SE%MG#FGnG9s0 zCl6ELid!Ka7SjEGqU^Q%@MG>a?iRC7n#bKriktAmA!(|?i6;20Q#ekzFs8CvN8NBl z`V;(Bx>#dJgt#?#4Sxk1A20h$c-e0Pn{UlAZ+VLj#&pg(z>JI)9&0j<$DbORmbZTY zV~Zc6M?v@$skf`U7ob$w2k-HEKSi(~j^C042LMWigB&vbGX(79VFIf7909i+$-wgj zFTfpzl?oO3sTbi~!DAUXPH+eAL 0 Then GPS_LocationChanged(Starter.ubicacionActual) + End If + +End Sub + + +Sub GPS_LocationChanged (Location1 As Location) +' Log(Location1.Latitude) +End Sub +'You can see the list of page related events in the B4XPagesManager object. The event name is B4XPage. + +Private Sub b_iniciar_Click + If Usuario.Text <> "" Then + + Dim cmd As DBCommand + cmd.Initialize + cmd.Name = "select_usuario_AREstrategicas" + cmd.Parameters = Array As Object(Usuario.Text, Contraseña.Text) + reqManager.ExecuteQuery(cmd , 0, "usuario") + user = Usuario.Text + Else + MsgboxAsync("Llena los datos de acceso","Atención") +' B4XPages.ShowPage ("principal") + End If + +' B4XPages.ShowPage ("principal") + Log(Starter.latitud & Starter.longitud) +End Sub + +Sub JobDone(Job As HttpJob) + If Job.Success = False Then + ToastMessageShow("Error: " & Job.ErrorMessage, True) + Else + LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211110 + If Job.JobName = "DBRequest" Then + Dim result As DBResult = reqManager.HandleJob(Job) + If result.Tag = "usuario" Then 'query tag + For Each records() As Object In result.Rows + For Each k As String In result.Columns.Keys + Log(result.Tag & ": " & k & ": " & records(result.Columns.Get(k))) + Next + If records(result.Columns.Get ("USUARIO")) = "OKActivo" Then + Starter.almacen = records(result.Columns.Get ("CAT_LO_AGENCIA")) + B4XPages.ShowPage ("principal") + Log(Starter.almacen) + Else + ToastMessageShow ("Datos incorrectos",True) + End If + Next + If result.Rows.Size = 0 Then + ToastMessageShow ("Datos incorrectos",True) + End If + End If + End If + End If +End Sub + +Private Sub B4XPage_CloseRequest As ResumableSub + If p_configuracion.Visible = True Then + p_configuracion.Visible = False + Else + B4XPages.ShowPage("Mainpage") + End If + +' Return True + Return False +End Sub + +Private Sub ImageView5_Click + p_configuracion.Visible = True + lv_server.Clear + lv_server.AddSingleLine("http://keymon.lat:1788") + If Usuario.Text = "KMTS1" Then lv_server.AddSingleLine("http://11.0.0.196:1782") +' l_server.Text = Starter.server + et_server.Text = Starter.DBReqServer + l_version.Visible = False +End Sub + +Private Sub p_configuracion_Click + +End Sub + +Private Sub lv_server_ItemClick (Position As Int, Value As Object) + Starter.DBReqServer = Value +' l_server.Text = Value + et_server.Text = Value + Starter.reqManager.Initialize(Me, Value) + Log(Value) + ToastMessageShow("Servidor modificado", False) +End Sub + +Private Sub b_guarda_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",et_server.text)) + Starter.DBReqServer = et_server.text + Log("Inicializamos reqManager con " & Starter.DBReqServer) + reqManager.Initialize(Me, Starter.DBReqServer) + CallSubDelayed(Starter, "reinicializaReqManager") + p_configuracion.Visible= False + l_version.Visible = True +End Sub + +Private Sub b_regresa_Click + p_configuracion.Visible = False + l_version.Visible = True +End Sub + + + +Private Sub b_enviarbd_Click + ' copiaDB +' Sleep(1000) + Dim FileName As String = "kmt.db" + 'copy the shared file to the shared folder + Log("xxxxxx:"&Provider.SharedFolder) + Sleep(1000) + File.Copy(File.DirInternal, FileName, Provider.SharedFolder, FileName) + Dim email As Email + email.To.Add("soporte@keymonsoft.com") + email.Subject = "Envio Base de dados AREstrategicas" + 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 + +Private Sub b_actualizar_app_Click + StartService(appUpdater) +End Sub + +' appUpdater - Mostramos el anuncio de que se esta descargando el nuevo apk +Sub muestraProgreso(mensaje As String) + ProgressDialogShow(mensaje) +End Sub +' +' appUpdater - Ocultamos el anuncio de que se esta descargando el nuevo apk +Sub ocultaProgreso + ProgressDialogHide +End Sub \ No newline at end of file diff --git a/B4i/AREstrategias.b4i b/B4i/AREstrategias.b4i new file mode 100644 index 0000000..7b2433a --- /dev/null +++ b/B4i/AREstrategias.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/B4i/Files/mainpage.bil b/B4i/Files/mainpage.bil new file mode 100644 index 0000000000000000000000000000000000000000..9ac93b44a4223d32856cea3afb71fb37c2b5b976 GIT binary patch literal 3084 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 KhLRxv#r_ZLhdVd` literal 0 HcmV?d00001 diff --git a/ar.txt b/ar.txt new file mode 100644 index 0000000..73a9585 --- /dev/null +++ b/ar.txt @@ -0,0 +1,27 @@ +########## +########## ARESTRATEGICAS +########## + +sql.select_usuario_AREstrategicas = select 'OK' || cat_lo_estatus as usuario, cat_lo_agencia from ARESTRATEGICAS.cat_logins where cat_lo_usuario = (?) and cat_lo_contrasena = (?) + +sql.select_datosgenerales_AR = SELECT PR_KT_CREDITO, PR_CD_NOMBRE, PR_CD_RFC, PR_CD_CURP, PR_CD_CALLE, PR_CD_NUM_EXT, PR_CD_NUM_INT, PR_CD_ALCALDIA, PR_CD_MUNICIPIO, PR_CD_ENTIDAD, PR_CD_CP, PR_CD_SEXO, PR_CD_FECHA_NAC, PR_CD_EDAD, PR_CD_EMAIL FROM ARESTRATEGICAS.vi_informacion WHERE PR_KT_ESTATUS <> 'Retirada' and PR_KT_UASIGNADOV is not null and PR_KT_CREDITO IN (SELECT PR_KT_CREDITO FROM ARESTRATEGICAS.pr_kmt_gral WHERE PR_KT_ESTATUS<>'Retirada' and PR_KT_UASIGNADOV = ?) + +sql.select_datosfinancieros_AR = SELECT PR_KT_CREDITO, PR_KT_PRODUCTO, PR_KT_AGENCIA, PR_CF_SALDO_TOTAL, PR_CF_LIQUIDACION, PR_CF_TOTAL_A_PAGAR_DESC, PR_CF_LIQUIDACION, PR_CA_DIAS_VENCIDOS, PR_CA_DIAS_ATRASO_ACT, PR_CA_FECHA_ATRASO, PR_CA_REFERENCIA1, PR_CA_REFERENCIA2 FROM ARESTRATEGICAS.vi_informacion WHERE PR_KT_ESTATUS <> 'Retirada' and PR_KT_UASIGNADOV is not null and PR_KT_CREDITO IN (SELECT PR_KT_CREDITO FROM ARESTRATEGICAS.pr_kmt_gral WHERE PR_KT_ESTATUS<> 'Retirada' and PR_KT_UASIGNADOV = ?) + +sql.select_fuentes_AR = SELECT * FROM ARESTRATEGICAS.CAT_FUENTE + +sql.select_parentesco_AR = SELECT * FROM ARESTRATEGICAS.CAT_PARENTESCO + +sql.select_accion_AR = select distinct CAT_CO_ACCION, CAT_CO_ADESCRIPCION from ARESTRATEGICAS.cat_codigos where CAT_CO_TIPO in (2,3) order by 2 + +sql.select_resultado_MA_AR = select distinct CAT_CO_ACCION, CAT_CO_RESULTADO, CAT_CO_RDESCRIPCION from cat_codigos where CAT_CO_ACCION ='MA' order by 1 + +sql.select_resultado_VC_AR = select distinct CAT_CO_ACCION, CAT_CO_RESULTADO, CAT_CO_RDESCRIPCION from cat_codigos where CAT_CO_ACCION = 'VC' order by 1 + +sql.select_resultado_CA_AR = select distinct CAT_CO_ACCION, CAT_CO_RESULTADO, CAT_CO_RDESCRIPCION from cat_codigos where CAT_CO_ACCION ='CA' order by 1 + +sql.select_resultado_BR_AR = select distinct CAT_CO_ACCION, CAT_CO_RESULTADO, CAT_CO_RDESCRIPCION from cat_codigos where CAT_CO_ACCION ='BR' order by 1 + +sql.insert_fotos_cliente_nuevo_MARIANA = insert into MARIANA.HIST_FOTO_CLIENTES_NUEVOS (HIST_FCM_CODIGO, HIST_FCM_ALMACEN, HIST_FCM_RUTA, HIST_FCM_FOTO) VALUES(?,?,?,?) + +sql.insert_gestion_AR = insert into ARESTRATEGICAS.TMP_HIST_VISITAS(TMP_HIST_VI_CREDITO, TMP_HIST_VI_PRODUCTO, TMP_HIST_VI_VISITADOR, TMP_HIST_VI_RESULTADO, TMP_HIST_VI_CODIGO, TMP_HIST_VI_PARENTESCO, TMP_HIST_VI_COMENTARIO, TMP_HIST_VI_DTEVISITA, TMP_HIST_VI_LONGITUD, TMP_HIST_VI_LATITUD, TMP_HIST_VI_DTECAPTURA, TMP_HIST_VI_AGENCIA, TMP_HIST_VI_DPROM, TMP_HIST_VI_MPROM, HIST_VI_TIPODOMICILIO, HIST_VI_NIVELSOCIO, HIST_VI_CARACTERISTICA, HIST_VI_NIVELES, TMP_HIST_VI_IMAGEN, TMP_HIST_VI_IMAGEN2, TMP_HIST_VI_IMAGEN3, TMP_HIST_VI_IMAGEN4, HIST_VI_NATIENDE, TMP_HIST_VI_ACCION_CODIGO, TMP_HIST_VI_ACCION, TMP_HIST_VI_DIAS_ACCION, TMP_HIST_VI_PUNTOS_REF) VALUES(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) \ No newline at end of file diff --git a/bagon.txt b/bagon.txt new file mode 100644 index 0000000..dcea578 --- /dev/null +++ b/bagon.txt @@ -0,0 +1,8 @@ +NO CREDITO +PRODIUCTO +NOMBRE +CALLE +COLONIA +MUNICIPIO +ESTADO +CP diff --git a/datos-varios.png b/datos-varios.png new file mode 100644 index 0000000000000000000000000000000000000000..058934b77f0378d1578a543698e7fdd7d6fa3f44 GIT binary patch literal 2112 zcmV-G2*3Ak7RCwC#Ty1O%S&S&#B$5D$@YOFeLX7gk;7g1jjEaUYCK_XmXiNx0KahwY0Chx#xJ43` z37H@Z2(m%k*mzrkZSDH%^M9^a+OBuK-pktS`cE#`UZ1=4e*OJ_|Ci^vGN90I-@ff2 zyRBr~LN*8J)Mn;_Fm`tqe1XsqdHYFsn|lcMpd*AX&vu>qErS!JEeW;niG%U{$`#DL9Iton702KkP{<`U)cMygB9Ipu~q z1rUm+6kUi3C}Et1xQ{;+hCnc!cAV}3LU2+Pje=%3v9P?d1g2*FqS-J%PWJ$zm_D4r zjUY47%B@DQ8`-quQXKb?-H>ho;zT<0uY}qqM~I2r4RyDl zS~MC|U236G4s)gHxu9fS${P(r_iC#xPdiS^%_5L$qzsF?)X*J+1bV}g!hLm#Mey9b zaWNEO)EPNZOzhl3sS&3;dF^6yt9iNZQxNG~VoFkAuaielCMar2g_C1n2z^0A^>YTa~`H6W9`aZY5@F0~81bqrX_1%l>%=n9ui7 zaKLH>>z=nLgRqB#Z3@XXn31I&0IcDr{lT>3vI>xQ)(77m?T7C59Z*$OAv|#4Brsp> z<6aYRBJaEj;Hr-T92V^@&oiPec;g6;=y}m`Sp}&7#2@hMiBs_G@gD%*egmMPUK||q zd1U8~gmF^)L8)pmt)`1q$%Ag*oPxfi1K^AV!7?+=xlfWIFbUuwb5enrj~cXh?;*Oc zttbVUi3;#n2O;wObDRhxU_^JQH9rE8*I%aYH7}P+qd_=(ffYY4dJ^jh;JA2Q%Bltp z4_|@v=daM$D>gg@FkTCA>?dw(ZUW}pBNQ-dolipKr5%FT!lu30f~Hb)F@QmQ(Nl=j zbLC*9VDsY;G+VY9)Z6=g?6te80U}Sd0z;C&_#6j~vT5T6Rf<(9V~|C-W!1&{`%lB@ z=s0(CRx{KstKq;P;>+haG*Tfrggxmj)2Zi}kQOm?PEBa~nV&9NaDWaSIv#tyqOsw@ z2T>7bj{OXgjn7CH<4mWXV|k8=rK>`OLVZ?B4P*~SuNXj0uEYTdl8D}A~1+{uVvhpC}UMS36 z@yAe@`S70aCWS#g3&9?=bPK4;ttQHpaqbTQ1S26n`h;3GH9MDZOe=uqx!2~+Yc&BV z-Q!SvJHt}UlCediV`v{bdM(Y?C=&PDs&(!or&yJuH#QTiO3IM#3iFo(b^zrYU>S9$m9i7nv`zP}5T5B7$@0 zE=)$fEQEd!u!m)h(6R0@-TBRoG#0%lS)|d;`o8(`)yc6NF>!Vh_F(Q)UAshg0P$@O z5j#xS)0l<(1RuRN=ieL`=Fod@*nT8uEXjc=h+BI zLj)L)l45ns+}sQVLw;ZlMwq_uA={ZFM4N_Su^VBJi)@jyk|hz=P#kfV*G0(tDJWP% zu?mi|rC>7I$wpTcA1*+{8J)DYTFOT3HmA#CE`_2Z+L~N7a_w}%y(onY#aq#}qT2{@ qul52ei2&`7188>vkwp7nfB^t*`Sjvd$gBbY0000j`A@8 literal 0 HcmV?d00001 diff --git a/engranes.png b/engranes.png new file mode 100644 index 0000000000000000000000000000000000000000..868a8793df757a14fc5428d378b2f7bc1a555ba6 GIT binary patch literal 2735 zcmZuzc~nx{8rKRfZobmMY`Eo+CJ5KE%&VCtiUUUt4hIG5Uely5g)VeBZW@#B+>tT1j_1+(Eul4QyO>3{c)^Gp5?>kBLao0ny zL~Chj>3Mp%f?8VIh(?YsoUid1(?YT}$BJk&GnyW@FFGzDlB4Au6c)%a_6!Nw&jC3B zK?xD}IgXkn9jX^Z{{CYz4owGZJoBPKANqH#H#as=w6xG0Jzbrl_@1%8U9qpXEM7p} z^F8meyHBLWWc&+*Ye(lXzf~?szIl-DO;%5&)t!hh3odOhZF*Aq{kD2CI06XBaVnYZ zcthmJs!OLPQ zN=lOUOtd}F2_&ia^BoA7HDxWrWh-rjkipKzmPRJ8L?kh0&o-VLo+zGD>VE`sMvJ7k}VW7E+9i!%7${dB.=fr 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 Dw}jzq literal 0 HcmV?d00001