diff --git a/B4A/B4XMainPage.bas b/B4A/B4XMainPage.bas index 48b4b43..b000e7a 100644 --- a/B4A/B4XMainPage.bas +++ b/B4A/B4XMainPage.bas @@ -28,6 +28,7 @@ Sub Class_Globals Dim cmd As DBCommand Dim skmt As SQL Public principal As C_Principal + Public checklist As C_Cheklist Private i_engrane As ImageView Private b_entrar As Button Private l_version As Label @@ -45,6 +46,7 @@ Sub Class_Globals Dim server As String = "" Private et_server As EditText Private p_Main As Panel + Dim rp As RuntimePermissions End Sub Public Sub Initialize @@ -57,6 +59,8 @@ Private Sub B4XPage_Created (Root1 As B4XView) Root.LoadLayout("MainPage") principal.Initialize B4XPages.AddPage("Principal", principal) + checklist.Initialize + B4XPages.AddPage("checklist",checklist) If File.Exists(File.DirInternal, "kmt.db") = False Then File.Copy(File.DirAssets, "kmt.db", File.DirInternal, "kmt.db") End If @@ -64,6 +68,13 @@ Private Sub B4XPage_Created (Root1 As B4XView) skmt.ExecNonQuery("delete from CAT_VARIABLES where CAT_VA_DESCRIPCION = 'FECHA'") Subs.guardaAppInfo l_version.Text = Application.VersionName + skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CHECKLIST2(USUARIO TEXT, PLACA TEXT, FECHA_CAPTURA TEXT, TARJETA_CIRCULACION TEXT, POLIZA_SEGURO TEXT, LICENCIA_CONDUCIR TEXT, LIMPIA_EXTERNA TEXT, LIMPIA_INTERNA TEXT, TRIANGULO TEXT, GATO TEXT, LLANTA_REFACCION TEXT, CARROCERIA TEXT, CARROCERIA_COMENTARIOS TEXT, LUCES TEXT, LUCES_COMENTARIOS TEXT, CONDICION_PLACAS TEXT, CONDICION_PLACAS_COMENTARIOS TEXT, CONDICION_LLANTAS_DEL_DER TEXT, CONDICION_LLANTAS_DEL_IZQ TEXT, CONDICION_LLANTAS_TRASERA_DER TEXT, CONDICION_LLANTAS_TRASERA_IZQ TEXT, ACEITE TEXT, ANTICONGELANTE TEXT, FRENOS TEXT, AIRE TEXT, FUGAS TEXT, COMETARIOS_FUGAS TEXT, FOTO1 BLOB, FOTO12 BLOB, FOTO3 BLOB, FOTO4 BLOB, KILIMETRAJE TEXT, RUTA TEXT)") + skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS CHECADO_CHECK(CHECADO TEXT)") + skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS PLACAS(PLACA TEXT)") + skmt.ExecNonQuery("CREATE TABLE IF NOT EXISTS RUTAA (RUTAA TEXT)") + Subs.agregaColumna("kmt_info","limitecredito","TEXT") + Subs.agregaColumna("kmt_info","SALDODISP","TEXT") + Subs.agregaColumna("kmt_info","BCREDITO","TEXT") End Sub Sub B4XPage_Appear diff --git a/B4A/C_Cheklist.bas b/B4A/C_Cheklist.bas new file mode 100644 index 0000000..a067a1b --- /dev/null +++ b/B4A/C_Cheklist.bas @@ -0,0 +1,803 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=12.5 +@EndOfDesignText@ +Sub Class_Globals + Private Root As B4XView 'ignore + Private xui As XUI 'ignore + Private p_check As Panel + Private sv_datos As ScrollView + + Private camEx As CameraExClass + 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 + Dim device As Phone + Dim MES1 As ManageExternalStorage + Dim x As Int = 0 + Private rb_docsi1 As RadioButton + Private rb_docno1 As RadioButton + Private rb_docsi2 As RadioButton + Private rb_docno2 As RadioButton + Private rb_docsi3 As RadioButton + Private rb_docno3 As RadioButton + Private rb_docsi4 As RadioButton + Private rb_docno4 As RadioButton + Private rb_docsi5 As RadioButton + Private rb_docno5 As RadioButton + Private rb_docsi6 As RadioButton + Private rb_docno6 As RadioButton + Private rb_docsi7 As RadioButton + Private rb_docno7 As RadioButton + Private rb_docsi8 As RadioButton + Private rb_docno8 As RadioButton + Private rb_docsi9 As RadioButton + Private rb_docno9 As RadioButton + Private rb_docsi10 As RadioButton + Private rb_docno10 As RadioButton + Private rb_docsi11 As RadioButton + Private rb_docno11 As RadioButton + Private rb_docsi12 As RadioButton + Private rb_docno12 As RadioButton + Private rb_docsi13 As RadioButton + Private rb_docno13 As RadioButton + Private rb_docsi14 As RadioButton + Private rb_docno14 As RadioButton + Private rb_docsi15 As RadioButton + Private rb_docno15 As RadioButton + Private rb_docsi16 As RadioButton + Private rb_docno16 As RadioButton + Private rb_docsi17 As RadioButton + Private rb_docno17 As RadioButton + Private rb_docsi18 As RadioButton + Private rb_docno18 As RadioButton + Private rb_docsi19 As RadioButton + Private rb_docno19 As RadioButton + Private et_carroceria As EditText + Private et_luces As EditText + Private et_placas As EditText + Private et_liquidos As EditText + + Dim p1 As String + Dim p2 As String + Dim p3 As String + Dim p4 As String + Dim p5 As String + Dim p6 As String + Dim p7 As String + Dim p8 As String + Dim p9 As String + Dim p10 As String + Dim p11 As String + Dim p12 As String + Dim p13 As String + Dim p14 As String + Dim p15 As String + Dim p16 As String + Dim p17 As String + Dim p18 As String + Dim p19 As String + Private cb_izqdel As B4XComboBox + Private cb_derdel As B4XComboBox + Private cb_izqatras As B4XComboBox + Private cb_deratras As B4XComboBox + Dim itemselect1 As String + Dim itemselect2 As String + Dim itemselect3 As String + Dim itemselect4 As String + Dim foto1() As Byte + Dim foto2() As Byte + Dim foto3() As Byte + Dim foto4() As Byte + Dim c As Cursor + Dim reqManager As DBRequestManager + Private l_placa As Label + Private et_km As EditText + Private logo As ImageView +End Sub + +'You can add more parameters here. +Public Sub Initialize As Object + Return Me +End Sub + +'This event will be called once, before the page becomes visible. +Private Sub B4XPage_Created (Root1 As B4XView) + Root = Root1 + Root.LoadLayout("checklist") + + sv_datos.Height = Root.Height + sv_datos.Width = Root.Width + sv_datos.Panel.LoadLayout("check2") + sv_datos.Panel.Height = p_check.Height + p_check.Width = Root.Width + p_camara.Width = Root.Width + p_camara.Height = Root.Height + + + Dim items As List + items.Initialize + items.Add("100%") + items.Add("75%") + items.Add("50%") + items.Add("25%") + cb_deratras.SetItems(items) + cb_izqatras.SetItems(items) + cb_derdel.SetItems(items) + cb_izqdel.SetItems(items) + itemselect1 = "100%" + itemselect2 = "100%" + itemselect3 = "100%" + itemselect4 = "100%" + + reqManager.Initialize(Me, B4XPages.MainPage.server) +End Sub + +Private Sub B4XPage_Appear + c = B4XPages.MainPage.skmt.ExecQuery("SELECT PLACA FROM PLACAS") + c.Position = 0 + Log(c.GetString("PLACA")) + l_placa.Text = c.GetString("PLACA") + c.Close + B4XPages.MainPage.rp.CheckAndRequest(B4XPages.MainPage.rp.PERMISSION_CAMERA) + Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean) + If Result Then +' camEx.Initialize(p_cam, frontCamera, Me, "Camera1") +' frontCamera = camEx.Front + Log("inicializamos Camara") + Else + ToastMessageShow("No permission Camara!!!", True) + 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("Esta aplicación requiere acceso a todos los archivos, habilite la opción", "Administrar todos los archivos") + Wait For Msgbox_Result(Res As Int) + Log("Getting permission") + MES1.GetPermission + Wait For MES_StorageAvailable + End If + End If + p_camara.Visible = False + + +' 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 Escritura!!!", 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 Lectura!!!", True) +' End If + + +End Sub + +Private Sub B4XPage_CloseRequest As ResumableSub + ' BACK key pressed + If p_camara.visible Then + p_camara.visible = False + StopCamera2 + Else + B4XPages.ShowPage("principal") + End If + ' Returning False signals the system to handle the key + Return False +End Sub + +Private Sub InitializeCamera2 + B4XPages.MainPage.rp.CheckAndRequest(B4XPages.MainPage.rp.PERMISSION_CAMERA) + Wait For B4XPage_PermissionResult (Permission As String, Result As Boolean) + If Result Then + camEx.Initialize(p_cam, frontCamera, Me, "Camera1") + frontCamera = camEx.Front + Log("inicializamos Camara") + Else + ToastMessageShow("No permission Camara!!!", True) + End If +End Sub + +Sub Camera1_Ready (Success As Boolean) + Log("Camara ready") + If Success Then + camEx.SetJpegQuality(90) + camEx.SetContinuousAutoFocus + camEx.CommitParameters + camEx.StartPreview + Log(camEx.GetPreviewSize) + Else + ToastMessageShow("Cannot open camera.", True) + Log("Cannot open camera") + End If +End Sub + +Sub Camera1_PictureTaken (Data()As Byte) + If x = 1 Then + DateTime.DateFormat="ddMMyyyyHHmmss" + nombrefoto = DateTime.Now & "_FOTO1.jpg" + teclado.HideKeyboard + fototomada = nombrefoto + + Else If x = 2 Then + DateTime.DateFormat="ddMMyyyyHHmmss" + nombrefoto1 = DateTime.Now & "_FOTO2.jpg" + teclado.HideKeyboard + fototomada = nombrefoto1 + + Else If x = 3 Then + DateTime.DateFormat="ddMMyyyyHHmmss" + nombrefoto2 = DateTime.Now & "_FOTO3.jpg" + teclado.HideKeyboard + fototomada = nombrefoto2 + + Else If x = 4 Then + DateTime.DateFormat="ddMMyyyyHHmmss" + nombrefoto3 = DateTime.Now & "_FOTO4.jpg" + teclado.HideKeyboard + fototomada = nombrefoto3 + + End If + + Log("tome foto") + Dim filename As String = fototomada + Dim Dirp As String = File.DirInternal + Dim Dir As String + Dim Dir2 As String + Try + File.MakeDir(Dirp,"/md") + Dir = "/md" + 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 + + camEx.SavePictureToFile(Data, Dirp&Dir, filename) + camEx.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 + + Log(nombrefoto) + Log(nombrefoto1) + Log(nombrefoto2) + Log(nombrefoto3) + + If nombrefoto <> "0" Then + Dim img As B4XBitmap = xui.LoadBitmapResize(File.DirInternal & Dir, filename, 450, 600, True) + Dim out As OutputStream = File.OpenOutput(File.DirInternal & Dir & Dir2, filename, True) + img.WriteToStream(out, 100, "PNG") +' foto1 = File.ReadBytes(File.DirInternal & Dir & Dir2, nombrefoto) + + out.Close + ImageView1.Bitmap = LoadBitmap(File.DirInternal & Dir & Dir2,nombrefoto) + + End If + + If nombrefoto1 <> "0" Then + Dim img As B4XBitmap = xui.LoadBitmapResize(File.DirInternal & Dir, filename, 450, 600, True) + Dim out As OutputStream = File.OpenOutput(File.DirInternal & Dir & Dir2, filename, False) + img.WriteToStream(out, 100, "PNG") +' foto2 = File.ReadBytes(File.DirInternal & Dir & Dir2, nombrefoto1) + + out.Close + ImageView2.Bitmap = LoadBitmap(File.DirInternal & Dir& Dir2,nombrefoto1) + End If + + If nombrefoto2 <> "0" Then + Dim img As B4XBitmap = xui.LoadBitmapResize(File.DirInternal & Dir, filename, 450, 600, True) + Dim out As OutputStream = File.OpenOutput(File.DirInternal & Dir & Dir2, filename, False) + img.WriteToStream(out, 100, "PNG") +' foto3 = File.ReadBytes(File.DirInternal & Dir & Dir2, nombrefoto2) + + out.Close + ImageView3.Bitmap = LoadBitmap(File.DirInternal & Dir& Dir2,nombrefoto2) + End If + + If nombrefoto3 <> "0" Then + Dim img As B4XBitmap = xui.LoadBitmapResize(File.DirInternal & Dir, filename, 450, 600, True) + Dim out As OutputStream = File.OpenOutput(File.DirInternal & Dir & Dir2, filename, False) + img.WriteToStream(out, 100, "PNG") +' foto4 = File.ReadBytes(File.DirInternal & Dir & Dir2, nombrefoto3) + + out.Close + ImageView4.Bitmap = LoadBitmap(File.DirInternal & Dir & Dir2,nombrefoto3) + End If + + StopCamera2 + +End Sub + +Private Sub p_camara_Click + +End Sub + +Private Sub b_foto_Click + camEx.TakePicture + p_camara.Visible = False +' StopCamera2 +End Sub + +Private Sub StopCamera2 +' Capturing = False + If camEx.IsInitialized Then + camEx.Release + End If +End Sub + +Private Sub ImageView1_Click + + x = 1 + InitializeCamera2 + p_camara.Visible = True + +End Sub + +Private Sub ImageView2_Click + + x = 2 + InitializeCamera2 + p_camara.Visible = True + +End Sub + +Private Sub ImageView3_Click + + x = 3 + InitializeCamera2 + p_camara.Visible = True + +End Sub + +Private Sub ImageView4_Click + + x = 4 + InitializeCamera2 + p_camara.Visible = True + +End Sub + +Private Sub rb_docno1_CheckedChange(Checked As Boolean) + p1 = "No" +End Sub + +Private Sub rb_docsi1_CheckedChange(Checked As Boolean) + p1 = "Si" +End Sub + +Private Sub rb_docno2_CheckedChange(Checked As Boolean) + p2 = "No" +End Sub + +Private Sub rb_docsi2_CheckedChange(Checked As Boolean) + p2 = "Si" +End Sub + +Private Sub rb_docno3_CheckedChange(Checked As Boolean) + p3 = "No" +End Sub + +Private Sub rb_docsi3_CheckedChange(Checked As Boolean) + p3 = "Si" +End Sub + +Private Sub rb_docno4_CheckedChange(Checked As Boolean) + p4 = "No" +End Sub + +Private Sub rb_docsi4_CheckedChange(Checked As Boolean) + p4 = "Si" +End Sub + +Private Sub rb_docno5_CheckedChange(Checked As Boolean) + p5 = "No" +End Sub + +Private Sub rb_docsi5_CheckedChange(Checked As Boolean) + p5 = "Si" +End Sub + +Private Sub rb_docno6_CheckedChange(Checked As Boolean) + p6 = "No" +End Sub + +Private Sub rb_docsi6_CheckedChange(Checked As Boolean) + p6 = "Si" +End Sub + +Private Sub rb_docno7_CheckedChange(Checked As Boolean) + p7 = "No" +End Sub + +Private Sub rb_docsi7_CheckedChange(Checked As Boolean) + p7 = "Si" +End Sub + +Private Sub rb_docno8_CheckedChange(Checked As Boolean) + p8 = "No" +End Sub + +Private Sub rb_docsi8_CheckedChange(Checked As Boolean) + p8 = "Si" +End Sub + +Private Sub rb_docno9_CheckedChange(Checked As Boolean) + p9 = "Incorrecto" +End Sub + +Private Sub rb_docsi9_CheckedChange(Checked As Boolean) + p9 = "Correcto" +End Sub + +Private Sub rb_docno11_CheckedChange(Checked As Boolean) + p11 = "Incorrecto" +End Sub + +Private Sub rb_docsi11_CheckedChange(Checked As Boolean) + p11 = "Correcto" +End Sub + +Private Sub rb_docno13_CheckedChange(Checked As Boolean) + p13 = "Incorrecto" +End Sub + +Private Sub rb_docsi13_CheckedChange(Checked As Boolean) + p13 = "Correcto" +End Sub + +Private Sub rb_docno15_CheckedChange(Checked As Boolean) + p15 = "Incorrecto" +End Sub + +Private Sub rb_docsi15_CheckedChange(Checked As Boolean) + p15 = "Correcto" +End Sub + +Private Sub rb_docno16_CheckedChange(Checked As Boolean) + p16 = "Incorrecto" +End Sub + +Private Sub rb_docsi16_CheckedChange(Checked As Boolean) + p16 = "Correcto" +End Sub + +Private Sub rb_docno17_CheckedChange(Checked As Boolean) + p17 = "Incorrecto" +End Sub + +Private Sub rb_docsi17_CheckedChange(Checked As Boolean) + p17 = "Correcto" +End Sub + +Private Sub rb_docno18_CheckedChange(Checked As Boolean) + p18 = "Incorrecto" +End Sub + +Private Sub rb_docsi18_CheckedChange(Checked As Boolean) + p18 = "Correcto" +End Sub + +Private Sub rb_docno19_CheckedChange(Checked As Boolean) + p19 = "Incorrecto" +End Sub + +Private Sub rb_docsi19_CheckedChange(Checked As Boolean) + p19 = "Correcto" +End Sub + +Private Sub cb_izqdel_SelectedIndexChanged (Index As Int) + itemselect1 = cb_izqdel.SelectedItem + Log(itemselect1) +End Sub + +Private Sub cb_izqatras_SelectedIndexChanged (Index As Int) + itemselect2 = cb_izqatras.SelectedItem + Log(itemselect2) +End Sub + +Private Sub cb_derdel_SelectedIndexChanged (Index As Int) + itemselect3 = cb_derdel.SelectedItem + Log(itemselect3) +End Sub + +Private Sub cb_deratras_SelectedIndexChanged (Index As Int) + itemselect4 = cb_deratras.SelectedItem + Log(itemselect4) +End Sub + +Private Sub b_guardar_Click + + Dim Dirp As String = File.DirInternal + Dim Dir As String + Dim Dir2 As String + Try + File.MakeDir(Dirp,"/md") + Dir = "/md" + 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 + + DateTime.TimeFormat="HH:mm:ss" + DateTime.DateFormat="dd/MM/yyyy" + Dim checkdate As String = DateTime.Date(DateTime.Now) + Dim checktime As String = DateTime.Time(DateTime.Now) + If et_km.Text <> "" Then + If rb_docno1.Checked Or rb_docsi1.Checked Then + If rb_docno2.Checked Or rb_docsi2.Checked Then + If rb_docno3.Checked Or rb_docsi3.Checked Then + If rb_docno4.Checked Or rb_docsi4.Checked Then + If rb_docno5.Checked Or rb_docsi5.Checked Then + If rb_docno6.Checked Or rb_docsi6.Checked Then + If rb_docno7.Checked Or rb_docsi7.Checked Then + If rb_docno8.Checked Or rb_docsi8.Checked Then + If rb_docno9.Checked Or rb_docsi9.Checked Then + If (rb_docno9.Checked And et_carroceria.Text <> "") Or (rb_docsi9.Checked And et_carroceria.Text = "") Then + If rb_docno11.Checked Or rb_docsi11.Checked Then + If (rb_docno11.Checked And et_luces.Text <> "") Or (rb_docsi11.Checked And et_luces.Text = "") Then + If rb_docno13.Checked Or rb_docsi13.Checked Then + If (rb_docno13.Checked And et_placas.Text <> "") Or (rb_docsi13.Checked And et_placas.Text = "") Then + If rb_docno15.Checked Or rb_docsi15.Checked Then + If rb_docno16.Checked Or rb_docsi16.Checked Then + If rb_docno17.Checked Or rb_docsi17.Checked Then + If rb_docno18.Checked Or rb_docsi18.Checked Then + If rb_docno19.Checked Or rb_docsi19.Checked Then + If et_liquidos.Text <> "" And (rb_docno15.Checked Or rb_docno16.Checked Or rb_docno17.Checked Or rb_docno18.Checked Or rb_docno19.Checked) Or et_liquidos.Text = "" And (rb_docsi15.Checked And rb_docsi16.Checked And rb_docsi17.Checked And rb_docsi18.Checked And rb_docsi19.Checked) Then + If nombrefoto <> "0" And nombrefoto1 <> "0" And nombrefoto2 <> "0" And nombrefoto3 <> "0" Then + c = B4XPages.MainPage.skmt.ExecQuery("SELECT RUTAA FROM RUTAA") + c.Position = 0 + Private rutacheck As String = c.GetString("RUTAA") + c.Close + B4XPages.MainPage.skmt.ExecNonQuery("DELETE FROM CHECKLIST2") + B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO CHECKLIST2(USUARIO, PLACA, FECHA_CAPTURA, TARJETA_CIRCULACION , POLIZA_SEGURO, LICENCIA_CONDUCIR, LIMPIA_EXTERNA, LIMPIA_INTERNA, TRIANGULO, GATO, LLANTA_REFACCION, CARROCERIA, CARROCERIA_COMENTARIOS, LUCES, LUCES_COMENTARIOS, CONDICION_PLACAS, CONDICION_PLACAS_COMENTARIOS, CONDICION_LLANTAS_DEL_DER, CONDICION_LLANTAS_DEL_IZQ, CONDICION_LLANTAS_TRASERA_DER, CONDICION_LLANTAS_TRASERA_IZQ, ACEITE, ANTICONGELANTE, FRENOS, AIRE, FUGAS, COMETARIOS_FUGAS, FOTO1, FOTO12, FOTO3, FOTO4, KILIMETRAJE,RUTA) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)",Array As Object(B4XPages.MainPage.usuario,l_placa.Text,checkdate&" "&checktime,p1,p2,p3,p4,p5,p6,p7,p8,p9,et_carroceria.Text,p11,et_luces.Text,p13,et_placas.Text,itemselect1,itemselect2,itemselect3,itemselect4,p15,p16,p17,p18,p19,et_liquidos.Text,File.ReadBytes(File.DirInternal & Dir & Dir2, nombrefoto),File.ReadBytes(File.DirInternal & Dir & Dir2, nombrefoto1),File.ReadBytes(File.DirInternal & Dir & Dir2, nombrefoto2),File.ReadBytes(File.DirInternal & Dir & Dir2, nombrefoto3), et_km.Text, rutacheck)) + + + mandaPendientes + + rb_docno1.Checked = False + rb_docno2.Checked = False + rb_docno3.Checked = False + rb_docno4.Checked = False + rb_docno5.Checked = False + rb_docno6.Checked = False + rb_docno7.Checked = False + rb_docno8.Checked = False + rb_docno9.Checked = False + rb_docno11.Checked = False + rb_docno13.Checked = False + rb_docno15.Checked = False + rb_docno16.Checked = False + rb_docno17.Checked = False + rb_docno18.Checked = False + rb_docno19.Checked = False + + rb_docsi1.Checked = False + rb_docsi2.Checked = False + rb_docsi3.Checked = False + rb_docsi4.Checked = False + rb_docsi5.Checked = False + rb_docsi6.Checked = False + rb_docsi7.Checked = False + rb_docsi8.Checked = False + rb_docsi9.Checked = False + rb_docsi11.Checked = False + rb_docsi13.Checked = False + rb_docsi15.Checked = False + rb_docsi16.Checked = False + rb_docsi17.Checked = False + rb_docsi18.Checked = False + rb_docsi19.Checked = False + + cb_deratras.SelectedIndex = 0 + cb_derdel.SelectedIndex = 0 + cb_izqatras.SelectedIndex = 0 + cb_izqdel.SelectedIndex = 0 + + et_carroceria.Text = "" + et_liquidos.Text = "" + et_luces.Text = "" + et_placas.Text = "" + + ImageView1.Bitmap = LoadBitmap(File.DirAssets,"frontal1.png") + ImageView2.Bitmap = LoadBitmap(File.DirAssets,"derecha1.png") + ImageView3.Bitmap = LoadBitmap(File.DirAssets,"atras1.png") + ImageView4.Bitmap = LoadBitmap(File.DirAssets,"izquierda1.png") + + nombrefoto = "0" + nombrefoto1 = "0" + nombrefoto2 = "0" + nombrefoto3 = "0" + + B4XPages.ShowPage("Principal") + Else + MsgboxAsync("Favor de tomar todas las fotos","Atención") + End If + Else + MsgboxAsync("Especifica Fugas o detallaes en los liquidos","Atención") + End If + Else + MsgboxAsync("Seleeciona una opción en Niveles de Liquidos y aire de Fugas","Atención") + End If + Else + MsgboxAsync("Seleeciona una opción en Niveles de Liquidos y aire de Aire","Atención") + End If + Else + MsgboxAsync("Seleeciona una opción en Niveles de Liquidos y aire de Frenos","Atención") + End If + Else + MsgboxAsync("Seleeciona una opción en Niveles de Liquidos y aire de Anticongelante","Atención") + End If + Else + MsgboxAsync("Seleeciona una opción en Niveles de Liquidos y aire de Aceite","Atención") + End If + Else + MsgboxAsync("Especifica daños en las condiciones de placas","Atención") + End If + Else + MsgboxAsync("Seleeciona una opción en Conciciones de placas de Correcto","Atención") + End If + Else + MsgboxAsync("Especifica daños en las luces","Atención") + End If + Else + MsgboxAsync("Seleeciona una opción en Funcionamiento de luces de Correcto","Atención") + End If + Else + MsgboxAsync("Especifica daños en la carrocería","Atención") + End If + Else + MsgboxAsync("Seleeciona una opción en Carrocería de Buen estado","Atención") + End If + Else + MsgboxAsync("Seleeciona una opción en Seguridad y refación de Llanta de refacción","Atención") + End If + Else + MsgboxAsync("Seleeciona una opción en Seguridad y refación de gato","Atención") + End If + Else + MsgboxAsync("Seleeciona una opción en Seguridad y refación de Triagulo reflectante","Atención") + End If + Else + MsgboxAsync("Seleeciona una opción en Limpieza unidad interna","Atención") + End If + Else + MsgboxAsync("Seleeciona una opción en Limpieza unidad externa","Atención") + End If + Else + MsgboxAsync("Seleeciona una opción en Documentación viegnte de Licencia de conducir","Atención") + End If + Else + MsgboxAsync("Seleeciona una opción en Documentación viegnte de Póliza de seguro","Atención") + End If + Else + MsgboxAsync("Seleeciona una opción en Documentación viegnte de tarjeta de circulación","Atención") + End If + Else + MsgboxAsync("Captura el kilometraje inicial.","Atención") + End If + +End Sub + +Sub mandaPendientes + Log("MandaPendientes") + 'PEDIDO (Pendientes) + c=B4XPages.MainPage.skmt.ExecQuery("SELECT USUARIO, PLACA, FECHA_CAPTURA, TARJETA_CIRCULACION , POLIZA_SEGURO, LICENCIA_CONDUCIR, LIMPIA_EXTERNA, LIMPIA_INTERNA, TRIANGULO, GATO, LLANTA_REFACCION, CARROCERIA, CARROCERIA_COMENTARIOS, LUCES, LUCES_COMENTARIOS, CONDICION_PLACAS, CONDICION_PLACAS_COMENTARIOS, CONDICION_LLANTAS_DEL_DER, CONDICION_LLANTAS_DEL_IZQ, CONDICION_LLANTAS_TRASERA_DER, CONDICION_LLANTAS_TRASERA_IZQ, ACEITE, ANTICONGELANTE, FRENOS, AIRE, FUGAS, COMETARIOS_FUGAS, FOTO1, FOTO12, FOTO3, FOTO4 FROM CHECKLIST2") + Log($"Pedido PENDIENTE: ${c.RowCount}"$) + If c.RowCount > 0 Then + For i = 0 To c.RowCount -1 + c.Position=i + Dim cmd As DBCommand + + foto1 = c.GetBlob("FOTO1") + foto2 = c.GetBlob("FOTO12") + foto3 = c.GetBlob("FOTO3") + foto4 = c.GetBlob("FOTO4") + + cmd.Initialize + cmd.Name = "insert_CHECK_GUNA" + cmd.Parameters = Array As Object(C.GetString("USUARIO"),C.GetString("PLACA"),C.GetString("FECHA_CAPTURA"),C.GetString("TARJETA_CIRCULACION"),C.GetString("POLIZA_SEGURO"),C.GetString("LICENCIA_CONDUCIR"),C.GetString("LIMPIA_EXTERNA"),C.GetString("LIMPIA_INTERNA"),C.GetString("TRIANGULO"),C.GetString("GATO"), C.GetString("LLANTA_REFACCION"),C.GetString("CARROCERIA"),c.GetString("CARROCERIA_COMENTARIOS"),c.GetString("LUCES"),c.GetString("LUCES_COMENTARIOS"),c.GetString("CONDICION_PLACAS"),c.GetString("CONDICION_PLACAS_COMENTARIOS"))'c.GetString("CONDICION_PLACAS_INCORRECTO"),c.GetString("CONDICION_PLACAS_COMENTARIOS"),c.GetString("CONDICION_LLANTAS_DEL_DER"),c.GetString("CONDICION_LLANTAS_DEL_IZQ"),c.GetString("CONDICION_LLANTAS_TRASERA_DER"),c.GetString("CONDICION_LLANTAS_TRASERA_IZQ"),c.GetString("ACEITE"),c.GetString("ANTICONGELANTE"),c.GetString("FRENOS"),c.GetString("AIRE"),c.GetString("FUGAS"),c.GetString("COMETARIOS_FUGAS"),foto1,foto2,foto3,foto4,B4XPages.MainPage.principal.ALMACEN) + reqManager.ExecuteCommand(cmd , $"ins_checkliPendientes_head_${c.GetString("USUARIO")}"$) + Next + End If +End Sub + +Sub JobDone(Job As HttpJob) + Log("JOBDONE CLIENTE . " & Job.Success) + If Job.Success = False Then +' ToastMessageShow("Error: " & Job.ErrorMessage, True) +' LogColor("JobDone Error: '" & reqManager.HandleJob(Job).tag, Colors.red) 'Mod por CHV - 211027 + LogColor("Error: " & Job.tag & " : " & Job.ErrorMessage, Colors.Blue) + Else + LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) + If Job.JobName = "DBRequest" Then + Dim resultado As DBResult = reqManager.HandleJob(Job) + If resultado.Tag.As(String).IndexOf("ins_checkliPendientes_head_") > -1 Then + Private cliente As String= resultado.Tag + cliente = cliente.SubString(cliente.IndexOf("_")+24) + Log($"Cliente1:${cliente}"$) + + c=B4XPages.MainPage.skmt.ExecQuery("SELECT USUARIO, PLACA, FECHA_CAPTURA, TARJETA_CIRCULACION , POLIZA_SEGURO, LICENCIA_CONDUCIR, LIMPIA_EXTERNA, LIMPIA_INTERNA, TRIANGULO, GATO, LLANTA_REFACCION, CARROCERIA, CARROCERIA_COMENTARIOS, LUCES, LUCES_COMENTARIOS, CONDICION_PLACAS, CONDICION_PLACAS_COMENTARIOS, CONDICION_LLANTAS_DEL_DER, CONDICION_LLANTAS_DEL_IZQ, CONDICION_LLANTAS_TRASERA_DER, CONDICION_LLANTAS_TRASERA_IZQ, ACEITE, ANTICONGELANTE, FRENOS, AIRE, FUGAS, COMETARIOS_FUGAS, FOTO1, FOTO12, FOTO3, FOTO4, KILIMETRAJE, RUTA FROM CHECKLIST2") + Log($"Pedido PENDIENTE: ${c.RowCount}"$) + If c.RowCount > 0 Then + For i = 0 To c.RowCount -1 + c.Position=i + Dim cmd As DBCommand + + foto1 = c.GetBlob("FOTO1") + foto2 = c.GetBlob("FOTO12") + foto3 = c.GetBlob("FOTO3") + foto4 = c.GetBlob("FOTO4") + + cmd.Initialize + cmd.Name = "update_CHECK_GUNA" + cmd.Parameters = Array As Object(c.GetString("CONDICION_LLANTAS_DEL_DER"),c.GetString("CONDICION_LLANTAS_DEL_IZQ"),c.GetString("CONDICION_LLANTAS_TRASERA_DER"),c.GetString("CONDICION_LLANTAS_TRASERA_IZQ"),c.GetString("ACEITE"),c.GetString("ANTICONGELANTE"),c.GetString("FRENOS"),c.GetString("AIRE"),c.GetString("FUGAS"),c.GetString("COMETARIOS_FUGAS"),foto1,foto2,foto3,foto4,Subs.traeAlmacen, C.GetString("KILIMETRAJE"),C.GetString("RUTA"), C.GetString("USUARIO"),C.GetString("PLACA"),C.GetString("FECHA_CAPTURA")) + reqManager.ExecuteCommand(cmd , "update") + Next + End If + + For Each records() As Object In resultado.Rows + For Each k As String In resultado.Columns.Keys + Log(resultado.Tag & ": " & k & ": " & records(resultado.Columns.Get(k))) + Next + Next + B4XPages.MainPage.skmt.ExecNonQuery("UPDATE CHECADO_CHECK set CHECADO = 1 ") + B4XPages.MainPage.principal.checachek + End If + End If + + Job.Release + End If + +End Sub diff --git a/B4A/C_Principal.bas b/B4A/C_Principal.bas index c7df2d0..2fc52e3 100644 --- a/B4A/C_Principal.bas +++ b/B4A/C_Principal.bas @@ -39,6 +39,12 @@ Sub Class_Globals Private et_ruta As EditText Private l_ruta1 As Label Private l_almacen As Label + Dim b As Cursor + Private b_check As Button + Dim reqManager As DBRequestManager + Dim cmd As DBCommand + Dim c As Cursor + Dim RES As String End Sub 'You can add more parameters here. @@ -55,6 +61,8 @@ Private Sub B4XPage_Created (Root1 As B4XView) End Sub Sub B4XPage_Appear + reqManager.Initialize(Me, Subs.traeDBReqServer) + b_check.visible = True Subs.centraPanel(p_botones, Root.Width) b_verCartaPorte.Enabled = False If File.Exists(File.DirInternal,"cartaPorte.pdf") Then @@ -66,9 +74,19 @@ Sub B4XPage_Appear End If End If b_descargaCartaPorte.Enabled = False - et_ruta.Text = "131" +' et_ruta.Text = "131" l_almacen.Text= Subs.traeAlmacen et_ruta.RequestFocus + + c = B4XPages.MainPage.skmt.ExecQuery("SELECT * FROM CHECADO_CHECK") + + If c.RowCount = 0 Then + b_check.Visible = False + + Else + b_check.Visible = True + End If + checachek End Sub Sub B4XPage_CloseRequest As ResumableSub @@ -121,6 +139,17 @@ Private Sub b_descargaCartaPorte_Click ' VALIDAR_INFO End If End If + + cmd.Initialize + cmd.Name = "select_cat_placa_guna" + cmd.Parameters = Array As Object(Subs.traeAlmacen,et_ruta.Text) + reqManager.ExecuteQuery(cmd , 0, "placa") + +' cmd.Initialize +' cmd.Name = "select_cat_kmt_info_guna" +' cmd.Parameters = Array As Object(almacen,et_ruta.Text) +' reqManager.ExecuteQuery(cmd , 0, "kmt_datos") + End Sub 'Descarga del servidor el PDF de la carta porte del dia de hoy y la @@ -134,7 +163,7 @@ Sub descargaCartaPorte Private rutaX As String = et_ruta.text 'rutaPreventa Private almacenX As String = Subs.traeAlmacen '################################# - Private almacenX As String = "2" 'almacen +' Private almacenX As String = "2" 'almacen '################################# Private cartaPortePDF As String = $"CPORTE${almacenX}_${rutaX}.pdf"$ @@ -144,7 +173,8 @@ Sub descargaCartaPorte Private pdfServer As String = "keymon.lat" If DBReqServer.IndexOf("10.0.0.205") > -1 Then pdfServer = "10.0.0.205" ' Log(pdfServer) - pdfURL = $"https://${pdfServer}/CartaPorteKelloggs/CartaPorteMovil${DateTime.Date(DateTime.now)}/${cartaPortePDF}"$ + Log(DateTime.Date(DateTime.now)) + pdfURL = $"https://${pdfServer}/CartaPorteGuna/CartaPorteMovil${DateTime.Date(DateTime.now)}/${cartaPortePDF}"$ LogColor(pdfURL,Colors.Red) ' Log("Iniciamos wait for descargaCartaPorteyProgreso") Wait For (descargaCartaPorteyProgreso(pdfURL)) Complete (Success As Boolean) @@ -220,9 +250,13 @@ Sub descargaCartaPorteyProgreso (urlx As String) As ResumableSub ToastMessageShow("Carta Porte descargada exitosamente!!", False) b_verCartaPorte.Enabled = True - - ' AQUI VA EL CODIGO DE CARTA PORTE DSCARGADA - + ' AQUI VA EL CODIGO DE CARTA PORTE DESCARGADA!!!!! + B4XPages.MainPage.skmt.ExecNonQuery("DELETE FROM RUTAA") + B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO RUTAA(RUTAA) VALUES (?)", Array As Object (et_ruta.TEXT)) + cmd.Initialize + cmd.Name = "insert_checkcp_GUNA" + cmd.Parameters = Array As Object(Subs.traeAlmacen,et_ruta.Text,B4XPages.MainPage.usuario) + reqManager.ExecuteCommand(cmd , $"ins_checkcpPendientes_head_${usuario}"$) Subs.panelOculto(p_downloadPDF) ' p_progress1.Visible = False @@ -349,4 +383,105 @@ Private Sub et_ruta_TextChanged (Old As String, New As String) Else b_descargaCartaPorte.Enabled = False End If +End Sub + +Sub checachek + b = B4XPages.MainPage.skmt.ExecQuery("SELECT CHECADO FROM CHECADO_CHECK") + If b.RowCount > 0 Then + b.Position = 0 + If b.GetString("CHECADO") = 0 Then + b_check.Visible = True + Else If b.GetString("CHECADO") = 1 Then + b_check.Visible =False + End If + b.Close + End If +End Sub + +Private Sub b_check_Click + B4XPages.ShowPage("checklist") +End Sub + +Sub et_ruta_EnterPressed +If et_ruta.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 + et_ruta.Text = "" + + B4XPages.MainPage.skmt.ExecNonQuery("delete from CHECADO_CHECK") + B4XPages.MainPage.skmt.ExecNonQuery("delete from CHECKLIST2") + B4XPages.MainPage.skmt.ExecNonQuery("delete from PLACAS") +' Starter.skmt.ExecNonQuery("delete from kmt_info") + + B4XPages.MainPage.skmt.ExecNonQuery("DELETE FROM RUTAA") + B4XPage_Appear + End If +' Starter.waypointsOrdered.Clear + + End If +End Sub + +Sub JobDone(Job As HttpJob) +Log("JOBDONE CLIENTE . " & Job.Success) + If Job.Success = False Then +' ToastMessageShow("Error: " & Job.ErrorMessage, True) +' LogColor("JobDone Error: '" & reqManager.HandleJob(Job).tag, Colors.red) 'Mod por CHV - 211027 + Else + LogColor("JobDone: '" & reqManager.HandleJob(Job).tag & "' - Registros: " & reqManager.HandleJob(Job).Rows.Size, Colors.Green) 'Mod por CHV - 211027 + + If Job.JobName = "DBRequest" Then + Dim RESULT As DBResult = reqManager.HandleJob(Job) + If RESULT.Tag = "placa" Then 'query tag + B4XPages.MainPage.skmt.ExecNonQuery("delete from PLACAS") + For Each records() As Object In RESULT.Rows + Dim placa As String = records(RESULT.Columns.Get("CAT_VE_PLACAS")) + B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO PLACAS(PLACA) VALUES (?)", Array As Object (placa)) + B4XPage_Appear + Next + End If + End If + +' If Job.JobName = "DBRequest" Then +' Dim RESULT As DBResult = reqManager.HandleJob(Job) +' If RESULT.Tag = "kmt_datos" Then 'query tag +' For Each records() As Object In RESULT.Rows +' +' Dim CAT_CL_CODIGO As String = records(RESULT.Columns.Get("CAT_VE_PLACAS")) +' Dim CAT_CL_RUTA As String = records(RESULT.Columns.Get("CAT_VE_PLACAS")) +' Dim CAT_CL_DIAS_VISITA As String = records(RESULT.Columns.Get("CAT_VE_PLACAS")) +' Dim CAT_CL_NOMBRE As String = records(RESULT.Columns.Get("CAT_VE_PLACAS")) +' Dim CAT_CL_ATIENDE1 As String = records(RESULT.Columns.Get("CAT_VE_PLACAS")) +' Dim CAT_CL_ATIENTE2 As String = records(RESULT.Columns.Get("CAT_VE_PLACAS")) +' Dim CAT_CL_TELEFONO As String = records(RESULT.Columns.Get("CAT_VE_PLACAS")) +' Dim CAT_CL_EMAIL As String = records(RESULT.Columns.Get("CAT_VE_PLACAS")) +' Dim CAT_CL_CALLE As String = records(RESULT.Columns.Get("CAT_VE_PLACAS")) +' Dim CAT_CL_NOEXT As String = records(RESULT.Columns.Get("CAT_VE_PLACAS")) +' Dim CAT_CL_NOINT As String = records(RESULT.Columns.Get("CAT_VE_PLACAS")) +' Dim CAT_CL_CALLE1 As String = records(RESULT.Columns.Get("CAT_VE_PLACAS")) +' Dim CAT_CL_CALLE2 As String = records(RESULT.Columns.Get("CAT_VE_PLACAS")) +' Dim CAT_CL_COLONIA As String = records(RESULT.Columns.Get("CAT_VE_PLACAS")) +' Dim CAT_CL_MUNI As String = records(RESULT.Columns.Get("CAT_VE_PLACAS")) +' Dim CAT_CL_EDO As String = records(RESULT.Columns.Get("CAT_VE_PLACAS")) +' Dim CAT_CL_CP As String = records(RESULT.Columns.Get("CAT_VE_PLACAS")) +' Dim CAT_CL_LONG As String = records(RESULT.Columns.Get("CAT_VE_PLACAS")) +' Dim CAT_CL_LAT As String = records(RESULT.Columns.Get("CAT_VE_PLACAS")) +' Dim CAT_CL_MTOCOMPRA As String = records(RESULT.Columns.Get("CAT_VE_PLACAS")) +' Dim CAT_CL_BCREDITO As String = records(RESULT.Columns.Get("CAT_VE_PLACAS")) +' Dim CAT_CL_LIMITECREDITO As String = records(RESULT.Columns.Get("CAT_VE_PLACAS")) +' Dim CAT_CL_SALDODISPONIBLE As String = records(RESULT.Columns.Get("CAT_VE_PLACAS")) +' B4XPages.MainPage.skmt.ExecNonQuery2("INSERT INTO kmt_info(PLACA) VALUES (?)", Array As Object (placa)) +' Next +' End If +' End If + + c = B4XPages.MainPage.skmt.ExecQuery("SELECT COUNT(*) AS CUANTOS FROM CHECADO_CHECK") + c.Position = 0 + If c.GetString("CUANTOS") = 0 Then + B4XPages.MainPage.skmt.ExecNonQuery2("insert into CHECADO_CHECK (CHECADO) VALUES(?)", Array As String("0")) + + Else If c.GetString("CUANTOS") = 1 Then + + End If + + End If End Sub \ No newline at end of file diff --git a/B4A/CameraExClass.bas b/B4A/CameraExClass.bas new file mode 100644 index 0000000..1743551 --- /dev/null +++ b/B4A/CameraExClass.bas @@ -0,0 +1,290 @@ +B4A=true +Group=Default Group +ModulesStructureVersion=1 +Type=Class +Version=7.01 +@EndOfDesignText@ + +'Class module +'version 1.20 +'See this page for the list of constants: +'http://developer.android.com/intl/fr/reference/android/hardware/Camera.Parameters.html +'Note that you should use the constant values instead of the names. +Sub Class_Globals + Private nativeCam As Object + Private cam As Camera + Private r As Reflector + Private target As Object + Private event As String + Public Front As Boolean + Type CameraInfoAndId (CameraInfo As Object, Id As Int) + Type CameraSize (Width As Int, Height As Int) + Private parameters As Object +End Sub + +Public Sub Initialize (Panel1 As Panel, FrontCamera As Boolean, TargetModule As Object, EventName As String) + target = TargetModule + event = EventName + Front = FrontCamera + Dim id As Int + id = FindCamera(Front).id + If id = -1 Then + Front = Not(Front) 'try different camera + id = FindCamera(Front).id + If id = -1 Then + ToastMessageShow("No camera found.", True) + Return + End If + End If + cam.Initialize2(Panel1, "camera", id) +End Sub + +Private Sub FindCamera (frontCamera As Boolean) As CameraInfoAndId + Dim ci As CameraInfoAndId + Dim cameraInfo As Object + Dim cameraValue As Int + If frontCamera Then cameraValue = 1 Else cameraValue = 0 + cameraInfo = r.CreateObject("android.hardware.Camera$CameraInfo") + Dim numberOfCameras As Int = r.RunStaticMethod("android.hardware.Camera", "getNumberOfCameras", Null, Null) + For i = 0 To numberOfCameras - 1 + r.RunStaticMethod("android.hardware.Camera", "getCameraInfo", Array As Object(i, cameraInfo), _ + Array As String("java.lang.int", "android.hardware.Camera$CameraInfo")) + r.target = cameraInfo + If r.GetField("facing") = cameraValue Then + ci.cameraInfo = r.target + ci.Id = i + Return ci + End If + Next + ci.id = -1 + Return ci +End Sub + +Private Sub SetDisplayOrientation + r.target = r.GetActivity + r.target = r.RunMethod("getWindowManager") + r.target = r.RunMethod("getDefaultDisplay") + r.target = r.RunMethod("getRotation") + Dim previewResult, result, degrees As Int = r.target * 90 + Dim ci As CameraInfoAndId = FindCamera(Front) + r.target = ci.CameraInfo + Dim orientation As Int = r.GetField("orientation") + If Front Then + previewResult = (orientation + degrees) Mod 360 + result = previewResult + previewResult = (360 - previewResult) Mod 360 + Else + previewResult = (orientation - degrees + 360) Mod 360 + result = previewResult + Log(previewResult) + End If + r.target = nativeCam + r.RunMethod2("setDisplayOrientation", previewResult, "java.lang.int") + r.target = parameters + r.RunMethod2("setRotation", result, "java.lang.int") + CommitParameters +End Sub + +Private Sub Camera_Ready (Success As Boolean) + If Success Then + r.target = cam + nativeCam = r.GetField("camera") + r.target = nativeCam + parameters = r.RunMethod("getParameters") + SetDisplayOrientation + Else + Log("success = false, " & LastException) + End If + CallSub2(target, event & "_ready", Success) +End Sub + +Sub Camera_Preview (Data() As Byte) + If SubExists(target, event & "_preview") Then + CallSub2(target, event & "_preview", Data) + End If +End Sub +Public Sub TakePicture + cam.TakePicture +End Sub + +Private Sub Camera_PictureTaken (Data() As Byte) + CallSub2(target, event & "_PictureTaken", Data) +End Sub + +Public Sub StartPreview + cam.StartPreview +End Sub + +Public Sub StopPreview + cam.StopPreview +End Sub + +Public Sub Release + cam.Release +End Sub + +'Saves the data received from PictureTaken event +Public Sub SavePictureToFile(Data() As Byte, Dir As String, FileName As String) + Dim out As OutputStream = File.OpenOutput(Dir, FileName, False) + out.WriteBytes(Data, 0, Data.Length) + out.Close +End Sub + +Public Sub SetParameter(Key As String, Value As String) + r.target = parameters + r.RunMethod3("set", Key, "java.lang.String", Value, "java.lang.String") +End Sub + +Public Sub GetParameter(Key As String) As String + r.target = parameters + Return r.RunMethod2("get", Key, "java.lang.String") +End Sub + +Public Sub CommitParameters + Try + r.target = nativeCam + r.RunMethod4("setParameters", Array As Object(parameters), Array As String("android.hardware.Camera$Parameters")) + Catch + ToastMessageShow("Error setting parameters.", True) + Log(LastException) + End Try +End Sub + +Public Sub GetColorEffect As String + Return GetParameter("effect") +End Sub + +Public Sub SetColorEffect(Effect As String) + SetParameter("effect", Effect) +End Sub + +Public Sub GetSupportedPicturesSizes As CameraSize() + r.target = parameters + Dim list1 As List = r.RunMethod("getSupportedPictureSizes") + Dim cs(list1.Size) As CameraSize + For i = 0 To list1.Size - 1 + r.target = list1.Get(i) + cs(i).Width = r.GetField("width") + cs(i).Height = r.GetField("height") + Next + Return cs +End Sub + +Public Sub SetPictureSize(Width As Int, Height As Int) + r.target = parameters + r.RunMethod3("setPictureSize", Width, "java.lang.int", Height, "java.lang.int") +End Sub + +Public Sub SetJpegQuality(Quality As Int) + r.target = parameters + r.RunMethod2("setJpegQuality", Quality, "java.lang.int") +End Sub + +Public Sub SetFlashMode(Mode As String) + r.target = parameters + r.RunMethod2("setFlashMode", Mode, "java.lang.String") +End Sub + +Public Sub GetFlashMode As String + r.target = parameters + Return r.RunMethod("getFlashMode") +End Sub + +Public Sub GetSupportedFlashModes As List + r.target = parameters + Return r.RunMethod("getSupportedFlashModes") +End Sub + +Public Sub GetSupportedColorEffects As List + r.target = parameters + Return r.RunMethod("getSupportedColorEffects") +End Sub + +Public Sub GetPreviewSize As CameraSize + r.target = parameters + r.target = r.RunMethod("getPreviewSize") + Dim cs As CameraSize + cs.Width = r.GetField("width") + cs.Height = r.GetField("height") + Return cs +End Sub + +Public Sub GetPictureSize As CameraSize + r.target = parameters + r.target = r.RunMethod("getPictureSize") + Dim cs As CameraSize + cs.Width = r.GetField("width") + cs.Height = r.GetField("height") + Return cs +End Sub + +'Converts a preview image formatted in YUV format to JPEG. +'Note that you should not save every preview image as it will slow down the whole process. +Public Sub PreviewImageToJpeg(data() As Byte, quality As Int) As Byte() + Dim size, previewFormat As Object + r.target = parameters + size = r.RunMethod("getPreviewSize") + previewFormat = r.RunMethod("getPreviewFormat") + r.target = size + Dim width = r.GetField("width"), height = r.GetField("height") As Int + Dim yuvImage As Object = r.CreateObject2("android.graphics.YuvImage", _ + Array As Object(data, previewFormat, width, height, Null), _ + Array As String("[B", "java.lang.int", "java.lang.int", "java.lang.int", "[I")) + r.target = yuvImage + Dim rect1 As Rect + rect1.Initialize(0, 0, r.RunMethod("getWidth"), r.RunMethod("getHeight")) + Dim out As OutputStream + out.InitializeToBytesArray(100) + r.RunMethod4("compressToJpeg", Array As Object(rect1, quality, out), _ + Array As String("android.graphics.Rect", "java.lang.int", "java.io.OutputStream")) + Return out.ToBytesArray +End Sub + +Public Sub GetSupportedFocusModes As List + r.target = parameters + Return r.RunMethod("getSupportedFocusModes") +End Sub + +Public Sub SetContinuousAutoFocus + Dim modes As List = GetSupportedFocusModes + If modes.IndexOf("continuous-picture") > -1 Then + SetFocusMode("continuous-picture") + Else If modes.IndexOf("continuous-video") > -1 Then + SetFocusMode("continuous-video") + Else + Log("Continuous focus mode is not available") + End If +End Sub + +Public Sub SetFocusMode(Mode As String) + r.target = parameters + r.RunMethod2("setFocusMode", Mode, "java.lang.String") +End Sub + +Public Sub GetFocusDistances As Float() + Dim F(3) As Float + r.target = parameters + r.RunMethod4("getFocusDistances", Array As Object(F), Array As String("[F")) + Return F +End Sub +'This method should only be called if you need to immediately release the camera. +'For example if you need to start another application that depends on the camera. +Public Sub CloseNow + cam.Release + r.target = cam + r.RunMethod2("releaseCameras", True, "java.lang.boolean") +End Sub +'Calls AutoFocus and then takes the picture if focus was successfull. +Public Sub FocusAndTakePicture + cam.AutoFocus +End Sub +Private Sub Camera_FocusDone (Success As Boolean) + If Success Then + TakePicture + Else + Log("AutoFocus error.") + End If +End Sub + + + diff --git a/B4A/Files/alert2.png b/B4A/Files/alert2.png new file mode 100644 index 0000000..44d3b7e Binary files /dev/null and b/B4A/Files/alert2.png differ diff --git a/B4A/Files/atras.png b/B4A/Files/atras.png new file mode 100644 index 0000000..1a5af22 Binary files /dev/null and b/B4A/Files/atras.png differ diff --git a/B4A/Files/atras1.png b/B4A/Files/atras1.png new file mode 100644 index 0000000..25e195c Binary files /dev/null and b/B4A/Files/atras1.png differ diff --git a/B4A/Files/check2.bal b/B4A/Files/check2.bal new file mode 100644 index 0000000..b983ac0 Binary files /dev/null and b/B4A/Files/check2.bal differ diff --git a/B4A/Files/checklist.bal b/B4A/Files/checklist.bal new file mode 100644 index 0000000..9462b17 Binary files /dev/null and b/B4A/Files/checklist.bal differ diff --git a/B4A/Files/derecha.png b/B4A/Files/derecha.png new file mode 100644 index 0000000..58a1e82 Binary files /dev/null and b/B4A/Files/derecha.png differ diff --git a/B4A/Files/derecha1.png b/B4A/Files/derecha1.png new file mode 100644 index 0000000..ed3087b Binary files /dev/null and b/B4A/Files/derecha1.png differ diff --git a/B4A/Files/frintal.png b/B4A/Files/frintal.png new file mode 100644 index 0000000..b0c6420 Binary files /dev/null and b/B4A/Files/frintal.png differ diff --git a/B4A/Files/frontal1.gif b/B4A/Files/frontal1.gif new file mode 100644 index 0000000..06306db Binary files /dev/null and b/B4A/Files/frontal1.gif differ diff --git a/B4A/Files/frontal1.png b/B4A/Files/frontal1.png new file mode 100644 index 0000000..5ed81e3 Binary files /dev/null and b/B4A/Files/frontal1.png differ diff --git a/B4A/Files/izquierda.png b/B4A/Files/izquierda.png new file mode 100644 index 0000000..bb268dc Binary files /dev/null and b/B4A/Files/izquierda.png differ diff --git a/B4A/Files/izquierda1.png b/B4A/Files/izquierda1.png new file mode 100644 index 0000000..20b1534 Binary files /dev/null and b/B4A/Files/izquierda1.png differ diff --git a/B4A/Files/mainpage.bal b/B4A/Files/mainpage.bal index 080445a..06da2e7 100644 Binary files a/B4A/Files/mainpage.bal and b/B4A/Files/mainpage.bal differ diff --git a/B4A/Files/principal.bal b/B4A/Files/principal.bal index 0c3e840..54ee82f 100644 Binary files a/B4A/Files/principal.bal and b/B4A/Files/principal.bal differ diff --git a/B4A/Guna CartaPorte.b4a b/B4A/Guna CartaPorte.b4a index 4b2643a..27a3487 100644 --- a/B4A/Guna CartaPorte.b4a +++ b/B4A/Guna CartaPorte.b4a @@ -1,44 +1,77 @@ Build1=Default,gunaCartaPorte.keymon.lat,HU2_PUBLIC -File1=engraneactual.png -File2=kmt.db -File3=logo guna_192x192.png -File4=logo-guna-18.png -File5=MainPage.bal -File6=mainpage0.bal -File7=principal.bal +File1=alert2.png +File10=frontal1.gif +File11=frontal1.png +File12=izquierda.png +File13=izquierda1.png +File14=kmt.db +File15=logo guna_192x192.png +File16=logo-guna-18.png +File17=MainPage.bal +File18=mainpage0.bal +File19=principal.bal +File2=atras.png +File3=atras1.png +File4=check2.bal +File5=checklist.bal +File6=derecha.png +File7=derecha1.png +File8=engraneactual.png +File9=frintal.png FileGroup1=Default Group +FileGroup10=Default Group +FileGroup11=Default Group +FileGroup12=Default Group +FileGroup13=Default Group +FileGroup14=Default Group +FileGroup15=Default Group +FileGroup16=Default Group +FileGroup17=Default Group +FileGroup18=Default Group +FileGroup19=Default Group FileGroup2=Default Group 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=appupdating +Library10=randomaccessfile +Library11=sql +Library12=xcustomlistview +Library13=xui +Library14=xui views +Library15=runtimepermissions Library2=b4xpages Library3=byteconverter -Library4=compressstrings -Library5=core -Library6=fileprovider -Library7=pdfium -Library8=randomaccessfile -Library9=sql -ManifestCode='This code will be applied to the manifest file during compilation.~\n~'You do not need to modify it in most cases.~\n~'See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136~\n~AddManifestText(~\n~~\n~)~\n~SetApplicationAttribute(android:icon, "@drawable/icon")~\n~SetApplicationAttribute(android:label, "$LABEL$")~\n~CreateResourceFromFile(Macro, Themes.LightTheme)~\n~'End of default text.~\n~SetApplicationAttribute(android:usesCleartextTraffic, "true") +Library4=camera +Library5=compressstrings +Library6=core +Library7=fileprovider +Library8=ime +Library9=pdfium +ManifestCode='This code will be applied to the manifest file during compilation.~\n~'You do not need to modify it in most cases.~\n~'See this link for for more information: https://www.b4x.com/forum/showthread.php?p=78136~\n~AddManifestText(~\n~~\n~)~\n~SetApplicationAttribute(android:icon, "@drawable/icon")~\n~SetApplicationAttribute(android:label, "$LABEL$")~\n~CreateResourceFromFile(Macro, Themes.LightTheme)~\n~'End of default text.~\n~SetApplicationAttribute(android:usesCleartextTraffic, "true")~\n~AddManifestText()~\n~AddPermission(android.permission.ACCESS_BACKGROUND_LOCATION)~\n~'AddManifestText()~\n~'AddManifestText()~\n~'AddManifestText() 'in order to access the device non-resettable identifiers such as IMEI and serial number.~\n~AddManifestText()~\n~'/////////////// FLP y FBMessageing MOD Inicia /////////////////////~\n~'CreateResourceFromFile(Macro, FirebaseAnalytics.GooglePlayBase)~\n~'CreateResourceFromFile(Macro, FirebaseAnalytics.Firebase)~\n~'CreateResourceFromFile(Macro, FirebaseAnalytics.FirebaseAnalytics)~\n~'CreateResourceFromFile(Macro, FirebaseNotifications.FirebaseNotifications)~\n~'SetServiceAttribute(Tracker, android:foregroundServiceType, "location")~\n~'/////////////// FLP y FBMessageing MOD Termina /////////////////////~\n~~\n~'Si al cargar un mapa de google mande este error "java.lang.NoClassDefFoundError: Failed resolution of: Lorg/apache/http/ProtocolVersion". agregar la siguiente linea:~\n~AddApplicationText()~\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~ ~\n~SetApplicationAttribute(android:largeHeap, "true")~\n~~\n~AddManifestText(~\n~ ~\n~ )~\n~ AddPermission(android.permission.MANAGE_EXTERNAL_STORAGE)~\n~ SetApplicationAttribute(android:allowBackup, "false")~\n~ ~\n~ ~\n~ AddManifestText(~\n~ )~\n~ AddPermission(android.permission.READ_EXTERNAL_STORAGE) Module1=B4XMainPage -Module2=C_Principal -Module3=C_updateAvailable -Module4=DBRequestManager -Module5=Starter -Module6=Subs -NumberOfFiles=7 -NumberOfLibraries=9 -NumberOfModules=6 +Module2=C_Cheklist +Module3=C_Principal +Module4=C_updateAvailable +Module5=CameraExClass +Module6=DBRequestManager +Module7=ManageExternalStorage +Module8=Starter +Module9=Subs +NumberOfFiles=19 +NumberOfLibraries=15 +NumberOfModules=9 Version=12.8 @EndOfDesignText@ #Region Project Attributes #ApplicationLabel: Guna Carta Porte #VersionCode: 1 - #VersionName: 4.05.28 + #VersionName: 4.06.01 'SupportedOrientations possible values: unspecified, landscape or portrait. #SupportedOrientations: portrait #CanInstallToExternalStorage: False diff --git a/B4A/Guna CartaPorte.b4a.meta b/B4A/Guna CartaPorte.b4a.meta index 24f7b4d..0a5fad6 100644 --- a/B4A/Guna CartaPorte.b4a.meta +++ b/B4A/Guna CartaPorte.b4a.meta @@ -5,6 +5,9 @@ ModuleBookmarks3= ModuleBookmarks4= ModuleBookmarks5= ModuleBookmarks6= +ModuleBookmarks7= +ModuleBookmarks8= +ModuleBookmarks9= ModuleBreakpoints0= ModuleBreakpoints1= ModuleBreakpoints2= @@ -12,13 +15,19 @@ ModuleBreakpoints3= ModuleBreakpoints4= ModuleBreakpoints5= ModuleBreakpoints6= +ModuleBreakpoints7= +ModuleBreakpoints8= +ModuleBreakpoints9= ModuleClosedNodes0= ModuleClosedNodes1= -ModuleClosedNodes2=5,6,9,10,11,12,13,14,15,16,17,18,19,20,21,22 -ModuleClosedNodes3= +ModuleClosedNodes2= +ModuleClosedNodes3=5,9,10,11,12,13,14,15,16,17,18,19,20,21,24 ModuleClosedNodes4= -ModuleClosedNodes5=1 +ModuleClosedNodes5= ModuleClosedNodes6= -NavigationStack=Subs,traeAlmacen,274,0,C_Principal,et_ruta_TextChanged,337,6,C_Principal,b_descargaCartaPorte_Click,113,0,C_Principal,Class_Globals,35,0,Visual Designer,MainPage.bal,-100,4,Visual Designer,principal.bal,-100,6,C_Principal,B4XPage_CloseRequest,78,0,C_Principal,B4XPage_Created,49,0,C_Principal,B4XPage_Appear,66,6,C_Principal,descargaCartaPorte,127,6 +ModuleClosedNodes7= +ModuleClosedNodes8=1 +ModuleClosedNodes9= +NavigationStack=C_Cheklist,JobDone,776,2,C_Principal,checachek,370,0,B4XMainPage,JobDone,174,0,C_Principal,b_check_Click,387,0,C_Cheklist,B4XPage_Created,135,0,C_Cheklist,B4XPage_Appear,199,0,C_Principal,Class_Globals,43,6,C_Principal,et_ruta_EnterPressed,410,1,C_Principal,B4XPage_Appear,74,5,C_Principal,JobDone,432,6 SelectedBuild=0 -VisibleModules=1,2,6 +VisibleModules=1,3,9,2,5,7 diff --git a/B4A/ManageExternalStorage.bas b/B4A/ManageExternalStorage.bas new file mode 100644 index 0000000..7f0a197 --- /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:${Application.PackageName}"$) + 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/Subs.bas b/B4A/Subs.bas index 3547c5e..e35a63c 100644 --- a/B4A/Subs.bas +++ b/B4A/Subs.bas @@ -283,4 +283,25 @@ Sub traeAlmacen As String 'ignore a = C.GetString("ID_ALMACEN") c.Close Return a +End Sub + +'Agrega una columna a la tabla especificada. +'Hay que indicar el "tipo" de la columna (TEXT, INTEGER, ETC) +'Ej. agregaColumna("TABLA", "COLUMNA", "TIPO") +Sub agregaColumna(tabla As String, columna As String, tipo As String) 'ignore + Try 'Intentamos usar "pragma_table_info" para revisar si existe la columna en la tabla + Private c As Cursor = B4XPages.MainPage.skmt.ExecQuery($"SELECT COUNT(*) AS fCol FROM pragma_table_info('${tabla}') WHERE name='${columna}'"$) + c.Position = 0 + If c.GetString("fCol") = 0 Then 'Si no esta la columna la agregamos + B4XPages.MainPage.skmt.ExecNonQuery($"ALTER TABLE ${tabla} ADD COLUMN ${columna} ${tipo}"$) + Log($"Columna "${columna} ${tipo}", agregada a "${tabla}"."$) + End If + Catch 'Si no funciona "pragma_table_info" lo hacemos con try/catch + Try + B4XPages.MainPage.skmt.ExecNonQuery($"ALTER TABLE ${tabla} ADD COLUMN ${columna} ${tipo}"$) + Log($"Columna "${columna} ${tipo}", agregada a "${tabla}".."$) + Catch + Log(LastException) + End Try + End Try End Sub \ No newline at end of file